{"version":3,"file":"index.cjs","sources":["../esm/core/callback-reporter.js","../esm/core/errors.js","../esm/core/editor-elements.js","../esm/export/export-format.js","../esm/core/safe-object-copy.js","../esm/core/default-options.js","../esm/core/image-filter-config.js","../esm/core/public-types.js","../esm/core/editor-object-kind.js","../esm/utils/file.js","../esm/utils/timeout.js","../esm/core/state-serializer.js","../esm/mask/mask-style.js","../esm/annotation/annotation-lock.js","../esm/annotation/annotation-style.js","../esm/core/layer-order.js","../esm/utils/canvas-region.js","../esm/utils/number.js","../esm/utils/pointer.js","../esm/annotation/text-controller.js","../esm/history/history-manager.js","../esm/history/editor-state-actions.js","../esm/fabric/fabric-adapter.js","../esm/annotation/annotation-manager.js","../esm/annotation/path-segments.js","../esm/annotation/draw-controller.js","../esm/annotation/shape-controller.js","../esm/annotation/annotation-mode-actions.js","../esm/annotation/annotation-config-actions.js","../esm/crop/crop-controller.js","../esm/runtime/editor-operation-runner.js","../esm/crop/crop-actions.js","../esm/image/image-filters.js","../esm/image/image-resampler.js","../esm/mosaic/mosaic-geometry.js","../esm/mosaic/mosaic-pixelate.js","../esm/mosaic/mosaic-controller.js","../esm/mosaic/mosaic-actions.js","../esm/utils/image-element-loader.js","../esm/export/overlay-merge-service.js","../esm/export/export-service.js","../esm/export/export-actions.js","../esm/utils/dom.js","../esm/image/layout-manager.js","../esm/image/image-input-budget.js","../esm/image/image-loader.js","../esm/image/exif-orientation.js","../esm/image/image-file-loader.js","../esm/image/display-geometry.js","../esm/fabric/fabric-animation.js","../esm/image/transform-controller.js","../esm/image/transform-actions.js","../esm/runtime/editor-action-access.js","../esm/ui/visibility-state.js","../esm/image/overlay-transform-delta.js","../esm/mask/mask-factory.js","../esm/runtime/editor-contexts.js","../esm/runtime/editor-context-factory-access.js","../esm/runtime/editor-facade-wiring.js","../esm/animation/animation-queue.js","../esm/core/operation-guard.js","../esm/runtime/editor-runtime.js","../esm/selection/editor-selection-controller.js","../esm/overlay/editable-object-actions.js","../esm/overlay/overlay-coordinate-transform.js","../esm/overlay/overlay-color.js","../esm/overlay/overlay-metadata.js","../esm/overlay/overlay-state-exporter.js","../esm/overlay/overlay-custom-registry.js","../esm/overlay/overlay-state-importer.js","../esm/overlay/overlay-state-migration.js","../esm/overlay/overlay-state-validator.js","../esm/mask/mask-actions.js","../esm/mask/mask-label-manager.js","../esm/mask/mask-list.js","../esm/lifecycle/editor-dispose.js","../esm/ui/dom-bindings.js","../esm/ui/editor-control-state.js","../esm/ui/editor-control-snapshot.js","../esm/ui/editor-control-elements.js","../esm/ui/editor-dom-events.js","../esm/ui/editor-dom-actions.js","../esm/ui/editor-input-state.js","../esm/ui/editor-keyboard-events.js","../esm/tool-mode/tool-mode-policy.js","../esm/image-editor.js"],"sourcesContent":["export function reportWarning(options, error, message) {\n    const warningCallback = options.onWarning;\n    if (typeof warningCallback !== 'function')\n        return;\n    try {\n        warningCallback(error, message);\n    }\n    catch (callbackError) {\n        console.warn('[ImageEditor] onWarning callback threw', callbackError);\n    }\n}\nexport function reportError(options, error, message) {\n    const errorCallback = options.onError;\n    if (typeof errorCallback !== 'function')\n        return;\n    try {\n        errorCallback(error, message);\n    }\n    catch (callbackError) {\n        console.error('[ImageEditor] onError callback threw', callbackError);\n    }\n}\n//# sourceMappingURL=callback-reporter.js.map","function fixPrototype(self, ctor) {\n    Object.setPrototypeOf(self, ctor.prototype);\n}\nexport class FabricUnavailableError extends Error {\n    constructor(message = 'Fabric.js v7 is not available. Pass the Fabric module explicitly to the constructor or expose it as `globalThis.fabric`.') {\n        super(message);\n        Object.defineProperty(this, \"name\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: 'FabricUnavailableError'\n        });\n        fixPrototype(this, FabricUnavailableError);\n    }\n}\nexport class ImageDecodeError extends Error {\n    constructor(message = 'Failed to decode image data URL.', originalError = null) {\n        super(message);\n        Object.defineProperty(this, \"name\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: 'ImageDecodeError'\n        });\n        Object.defineProperty(this, \"originalError\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        this.originalError = originalError;\n        fixPrototype(this, ImageDecodeError);\n    }\n}\nexport class ImageLoadTimeoutError extends Error {\n    constructor(label, elapsedMs) {\n        super(`Image load timed out after ${elapsedMs}ms during ${label}`);\n        Object.defineProperty(this, \"name\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: 'ImageLoadTimeoutError'\n        });\n        Object.defineProperty(this, \"label\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        Object.defineProperty(this, \"elapsedMs\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        this.label = label;\n        this.elapsedMs = elapsedMs;\n        fixPrototype(this, ImageLoadTimeoutError);\n    }\n}\nexport class ImageLoadBudgetExhaustedError extends Error {\n    constructor(label, remainingMs, minimumMs) {\n        super(`Image load budget exhausted before ${label}: ${remainingMs}ms remaining, minimum ${minimumMs}ms required.`);\n        Object.defineProperty(this, \"name\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: 'ImageLoadBudgetExhaustedError'\n        });\n        Object.defineProperty(this, \"label\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        Object.defineProperty(this, \"remainingMs\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        Object.defineProperty(this, \"minimumMs\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        this.label = label;\n        this.remainingMs = remainingMs;\n        this.minimumMs = minimumMs;\n        fixPrototype(this, ImageLoadBudgetExhaustedError);\n    }\n}\nexport class DownsampleError extends Error {\n    constructor(message = 'Failed to obtain a 2D context for downsampling.', originalError = null) {\n        super(message);\n        Object.defineProperty(this, \"name\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: 'DownsampleError'\n        });\n        Object.defineProperty(this, \"originalError\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        this.originalError = originalError;\n        fixPrototype(this, DownsampleError);\n    }\n}\nexport class MergeMasksError extends Error {\n    constructor(message = 'Failed to merge masks into the image.', originalError = null) {\n        super(message);\n        Object.defineProperty(this, \"name\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: 'MergeMasksError'\n        });\n        Object.defineProperty(this, \"originalError\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        this.originalError = originalError;\n        fixPrototype(this, MergeMasksError);\n    }\n}\nexport class MergeAnnotationsError extends Error {\n    constructor(message = 'Failed to merge annotations into the image.', originalError = null) {\n        super(message);\n        Object.defineProperty(this, \"name\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: 'MergeAnnotationsError'\n        });\n        Object.defineProperty(this, \"originalError\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        this.originalError = originalError;\n        fixPrototype(this, MergeAnnotationsError);\n    }\n}\nexport class CropApplyError extends Error {\n    constructor(message = 'Failed to apply crop to the image.', originalError = null) {\n        super(message);\n        Object.defineProperty(this, \"name\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: 'CropApplyError'\n        });\n        Object.defineProperty(this, \"originalError\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        this.originalError = originalError;\n        fixPrototype(this, CropApplyError);\n    }\n}\nexport class StateRestoreError extends Error {\n    constructor(message = 'Failed to restore editor state.', originalError = null) {\n        super(message);\n        Object.defineProperty(this, \"name\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: 'StateRestoreError'\n        });\n        Object.defineProperty(this, \"originalError\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        this.originalError = originalError;\n        fixPrototype(this, StateRestoreError);\n    }\n}\nexport class IdleGuardError extends Error {\n    constructor(operation, reason) {\n        super(`[ImageEditor] Cannot run \"${operation}\" ${reason}.`);\n        Object.defineProperty(this, \"name\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: 'IdleGuardError'\n        });\n        Object.defineProperty(this, \"operation\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        this.operation = operation;\n        fixPrototype(this, IdleGuardError);\n    }\n}\nexport class ExportNotReadyError extends Error {\n    constructor(operation = 'exportImageFile', reason = 'no image is loaded on the canvas') {\n        super(`Cannot ${operation}: ${reason}.`);\n        Object.defineProperty(this, \"name\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: 'ExportNotReadyError'\n        });\n        Object.defineProperty(this, \"operation\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        this.operation = operation;\n        fixPrototype(this, ExportNotReadyError);\n    }\n}\nexport class ExportError extends Error {\n    constructor(message = 'Failed to export image.', originalError = null) {\n        super(message);\n        Object.defineProperty(this, \"name\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: 'ExportError'\n        });\n        Object.defineProperty(this, \"originalError\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        this.originalError = originalError;\n        fixPrototype(this, ExportError);\n    }\n}\n//# sourceMappingURL=errors.js.map","const DEFAULT_ELEMENT_TARGETS = Object.freeze({\n    canvas: 'canvas',\n    canvasContainer: null,\n    imagePlaceholder: 'imagePlaceholder',\n    scalePercentageInput: 'scalePercentageInput',\n    imageBrightnessInput: 'imageBrightnessInput',\n    imageContrastInput: 'imageContrastInput',\n    imageSaturationInput: 'imageSaturationInput',\n    imageBlurInput: 'imageBlurInput',\n    imageSharpenInput: 'imageSharpenInput',\n    imageGrayscaleInput: 'imageGrayscaleInput',\n    imageSepiaInput: 'imageSepiaInput',\n    imageVintageInput: 'imageVintageInput',\n    applyImageFiltersButton: 'applyImageFiltersButton',\n    resetImageFiltersButton: 'resetImageFiltersButton',\n    clearImageFiltersButton: 'clearImageFiltersButton',\n    rotateLeftDegreesInput: 'rotateLeftDegreesInput',\n    rotateRightDegreesInput: 'rotateRightDegreesInput',\n    rotateLeftButton: 'rotateLeftButton',\n    rotateRightButton: 'rotateRightButton',\n    flipHorizontalButton: 'flipHorizontalButton',\n    flipVerticalButton: 'flipVerticalButton',\n    createMaskButton: 'createMaskButton',\n    removeSelectedMaskButton: 'removeSelectedMaskButton',\n    removeAllMasksButton: 'removeAllMasksButton',\n    mergeMasksButton: 'mergeMasksButton',\n    annotationList: 'annotationList',\n    enterTextModeButton: 'enterTextModeButton',\n    exitTextModeButton: 'exitTextModeButton',\n    textColorInput: 'textColorInput',\n    textFontSizeInput: 'textFontSizeInput',\n    enterDrawModeButton: 'enterDrawModeButton',\n    exitDrawModeButton: 'exitDrawModeButton',\n    drawColorInput: 'drawColorInput',\n    drawBrushSizeInput: 'drawBrushSizeInput',\n    drawBrushSubModeButton: 'drawBrushSubModeButton',\n    drawEraseSubModeButton: 'drawEraseSubModeButton',\n    eraserBrushSizeInput: 'eraserBrushSizeInput',\n    shapeKindSelect: 'shapeKindSelect',\n    shapeStrokeInput: 'shapeStrokeInput',\n    shapeStrokeWidthInput: 'shapeStrokeWidthInput',\n    shapeFillInput: 'shapeFillInput',\n    createShapeAnnotationButton: 'createShapeAnnotationButton',\n    enterShapeModeButton: 'enterShapeModeButton',\n    exitShapeModeButton: 'exitShapeModeButton',\n    removeSelectedAnnotationButton: 'removeSelectedAnnotationButton',\n    removeAllAnnotationsButton: 'removeAllAnnotationsButton',\n    deleteSelectedObjectButton: 'deleteSelectedObjectButton',\n    mergeAnnotationsButton: 'mergeAnnotationsButton',\n    bringSelectedObjectForwardButton: 'bringSelectedObjectForwardButton',\n    sendSelectedObjectBackwardButton: 'sendSelectedObjectBackwardButton',\n    bringSelectedObjectToFrontButton: 'bringSelectedObjectToFrontButton',\n    sendSelectedObjectToBackButton: 'sendSelectedObjectToBackButton',\n    downloadImageButton: 'downloadImageButton',\n    maskList: 'maskList',\n    zoomInButton: 'zoomInButton',\n    zoomOutButton: 'zoomOutButton',\n    resetImageTransformButton: 'resetImageTransformButton',\n    undoButton: 'undoButton',\n    redoButton: 'redoButton',\n    imageInput: 'imageInput',\n    enterCropModeButton: 'enterCropModeButton',\n    cropAspectRatioSelect: 'cropAspectRatioSelect',\n    applyCropButton: 'applyCropButton',\n    cancelCropButton: 'cancelCropButton',\n    enterMosaicModeButton: 'enterMosaicModeButton',\n    exitMosaicModeButton: 'exitMosaicModeButton',\n    mosaicBrushSizeInput: 'mosaicBrushSizeInput',\n    mosaicBlockSizeInput: 'mosaicBlockSizeInput',\n    uploadArea: 'uploadArea',\n});\nconst ELEMENT_KEYS = Object.freeze(Object.keys(DEFAULT_ELEMENT_TARGETS));\nconst ELEMENT_KEY_SET = new Set(ELEMENT_KEYS);\nfunction isElementKey(value) {\n    return ELEMENT_KEY_SET.has(value);\n}\nfunction isHTMLElementTarget(value) {\n    return (!!value &&\n        typeof value === 'object' &&\n        value.nodeType === 1 &&\n        typeof value.addEventListener === 'function');\n}\nfunction getFallbackDocument() {\n    return typeof document !== 'undefined' ? document : null;\n}\nfunction hasTagName(element, tagName) {\n    return element.tagName.toLowerCase() === tagName;\n}\nexport function isCanvasElement(element) {\n    return hasTagName(element, 'canvas');\n}\nexport function isInputElement(element) {\n    return hasTagName(element, 'input');\n}\nexport function isSelectElement(element) {\n    return hasTagName(element, 'select');\n}\nexport function isInputOrSelectElement(element) {\n    return isInputElement(element) || isSelectElement(element);\n}\nexport function resolveDomElement(target, ownerDocument, guard) {\n    var _a;\n    if (target === null || target === undefined)\n        return null;\n    const element = isHTMLElementTarget(target)\n        ? target\n        : (_a = (ownerDocument !== null && ownerDocument !== void 0 ? ownerDocument : getFallbackDocument())) === null || _a === void 0 ? void 0 : _a.getElementById(target);\n    if (!element)\n        return null;\n    if (guard && !guard(element))\n        return null;\n    return element;\n}\nexport function resolveElementTargets(elementMap = {}) {\n    const resolved = { ...DEFAULT_ELEMENT_TARGETS };\n    for (const [key, value] of Object.entries(elementMap)) {\n        if (!isElementKey(key))\n            continue;\n        resolved[key] = value === undefined ? null : value;\n    }\n    return resolved;\n}\n//# sourceMappingURL=editor-elements.js.map","const FORMAT_ALIAS_TABLE = Object.freeze({\n    jpeg: 'jpeg',\n    jpg: 'jpeg',\n    'image/jpeg': 'jpeg',\n    png: 'png',\n    'image/png': 'png',\n    webp: 'webp',\n    'image/webp': 'webp',\n});\nconst MIME_TABLE = Object.freeze({\n    jpeg: 'image/jpeg',\n    png: 'image/png',\n    webp: 'image/webp',\n});\nexport function normalizeImageFormat(input) {\n    var _a;\n    return (_a = tryNormalizeImageFormat(input)) !== null && _a !== void 0 ? _a : 'jpeg';\n}\nexport function tryNormalizeImageFormat(input) {\n    var _a;\n    if (!input)\n        return null;\n    const key = String(input).toLowerCase();\n    if (Object.prototype.hasOwnProperty.call(FORMAT_ALIAS_TABLE, key)) {\n        return (_a = FORMAT_ALIAS_TABLE[key]) !== null && _a !== void 0 ? _a : null;\n    }\n    return null;\n}\nexport function mimeTypeFor(format) {\n    return MIME_TABLE[format];\n}\nexport function clampQuality(quality, fallback) {\n    const numeric = Number(quality);\n    if (!Number.isFinite(numeric))\n        return fallback;\n    return Math.max(0, Math.min(1, numeric));\n}\nexport function resolveExportFormat(options, downsampleQuality) {\n    var _a;\n    const providedOptions = options !== null && options !== void 0 ? options : {};\n    const fileType = providedOptions.fileType;\n    const formatAlias = providedOptions.format;\n    const requested = fileType || formatAlias;\n    const format = normalizeImageFormat(requested);\n    const mimeType = mimeTypeFor(format);\n    if (format === 'png') {\n        return { format, mimeType, quality: undefined };\n    }\n    const rawQuality = (_a = providedOptions.quality) !== null && _a !== void 0 ? _a : downsampleQuality;\n    const quality = clampQuality(rawQuality, downsampleQuality);\n    return { format, mimeType, quality };\n}\n//# sourceMappingURL=export-format.js.map","const UNSAFE_OBJECT_COPY_KEYS = new Set(['__proto__', 'constructor', 'prototype']);\nexport function canCopySafeObjectKey(key) {\n    return !UNSAFE_OBJECT_COPY_KEYS.has(key);\n}\nexport function copySafeOwnProperties(value) {\n    if (!value || typeof value !== 'object' || Array.isArray(value))\n        return {};\n    const output = Object.create(null);\n    for (const [key, nestedValue] of Object.entries(value)) {\n        if (!canCopySafeObjectKey(key))\n            continue;\n        output[key] = nestedValue;\n    }\n    return output;\n}\n//# sourceMappingURL=safe-object-copy.js.map","import { tryNormalizeImageFormat } from '../export/export-format.js';\nimport { canCopySafeObjectKey, copySafeOwnProperties } from './safe-object-copy.js';\nconst EMPTY_DEFAULT_MASK_CONFIG = Object.freeze({});\nconst DEFAULT_LAYOUT_MODE = 'expand';\nconst DEFAULT_OVERLAY_LIST_ORDER = 'front-to-back';\nexport const DEFAULT_OPTIONS = {\n    canvasWidth: 800,\n    canvasHeight: 600,\n    backgroundColor: 'transparent',\n    animationDuration: 300,\n    minScale: 0.1,\n    maxScale: 5.0,\n    scaleStep: 0.05,\n    rotationStep: 90,\n    bindMasksToImageTransform: false,\n    bindAnnotationsToImageTransform: false,\n    textAnnotationFlipBehavior: 'preserve-readable',\n    defaultLayoutMode: DEFAULT_LAYOUT_MODE,\n    layoutMode: DEFAULT_LAYOUT_MODE,\n    downsampleOnLoad: true,\n    downsampleMaxWidth: 4000,\n    downsampleMaxHeight: 3000,\n    downsampleQuality: 0.92,\n    preserveSourceFormat: true,\n    downsampleMimeType: null,\n    autoOrientImage: true,\n    autoOrientImageQuality: null,\n    maxInputBytes: 50000000,\n    maxInputPixels: 50000000,\n    imageLoadTimeoutMs: 30000,\n    maxHistorySize: 50,\n    exportMultiplier: 1,\n    maxExportPixels: 50000000,\n    maxExportDimension: 16384,\n    exportAreaByDefault: 'image',\n    mergeMasksByDefault: true,\n    mergeAnnotationsByDefault: true,\n    defaultMaskWidth: 50,\n    defaultMaskHeight: 80,\n    defaultMaskConfig: EMPTY_DEFAULT_MASK_CONFIG,\n    maskRotatable: false,\n    maskLabelOnSelect: true,\n    maskLabelOffset: 3,\n    maskName: 'mask',\n    textAnnotationName: 'text',\n    drawAnnotationName: 'draw',\n    shapeAnnotationName: 'shape',\n    maskListOrder: DEFAULT_OVERLAY_LIST_ORDER,\n    annotationListOrder: DEFAULT_OVERLAY_LIST_ORDER,\n    groupSelection: false,\n    showPlaceholder: true,\n    initialImageBase64: null,\n    defaultDownloadFileName: 'edited_image',\n    onImageLoadStart: null,\n    onImageLoaded: null,\n    onImageCleared: null,\n    onImageChanged: null,\n    onBusyChange: null,\n    onToolModeChange: null,\n    onHistoryChange: null,\n    onEditorDisposed: null,\n    onMasksChanged: null,\n    onAnnotationsChanged: null,\n    onSelectionChange: null,\n    onError: null,\n    onWarning: null,\n};\nconst DEFAULT_LABEL_TEXT_OPTIONS = {\n    fontSize: 12,\n    fill: '#fff',\n    backgroundColor: 'rgba(0,0,0,0.7)',\n    padding: 2,\n    fontFamily: 'monospace',\n    fontWeight: 'bold',\n    selectable: false,\n    evented: false,\n    originX: 'left',\n    originY: 'top',\n};\nexport const DEFAULT_LABEL = {\n    getText: (mask) => mask.maskName,\n    textOptions: { ...DEFAULT_LABEL_TEXT_OPTIONS },\n};\nexport const DEFAULT_CROP = {\n    aspectRatio: 'free',\n    minWidth: 100,\n    minHeight: 100,\n    padding: 10,\n    hideMasksDuringCrop: true,\n    preserveMasksAfterCrop: false,\n    allowRotationOfCropRect: false,\n    exportFileType: 'source',\n    exportQuality: undefined,\n};\nexport const DEFAULT_MOSAIC_CONFIG = Object.freeze({\n    brushSize: 48,\n    blockSize: 8,\n    previewStroke: '#333',\n    previewStrokeWidth: 1,\n    previewStrokeDashArray: Object.freeze([4, 4]),\n    previewFill: 'rgba(0,0,0,0)',\n    outputFileType: 'source',\n    outputQuality: undefined,\n});\nexport const DEFAULT_TEXT_ANNOTATION_CONFIG = Object.freeze({\n    text: 'Text',\n    left: undefined,\n    top: undefined,\n    width: 200,\n    fontSize: 32,\n    fontFamily: 'sans-serif',\n    fontWeight: 'normal',\n    fill: '#ff0000',\n    backgroundColor: 'rgba(255,255,255,0)',\n    textAlign: 'left',\n    angle: 0,\n    selectable: true,\n    evented: true,\n    editable: true,\n    enterEditing: true,\n    annotationHidden: false,\n    annotationLocked: false,\n    styles: Object.freeze({}),\n});\nexport const DEFAULT_DRAW_CONFIG = Object.freeze({\n    brushSize: 8,\n    color: '#ff0000',\n    opacity: 1,\n    lineCap: 'round',\n    lineJoin: 'round',\n    selectable: true,\n    evented: true,\n    annotationHidden: false,\n    annotationLocked: false,\n});\nexport const DEFAULT_ERASER_CONFIG = Object.freeze({\n    brushSize: 18,\n    target: 'drawAnnotations',\n    previewStroke: '#111',\n    previewStrokeWidth: 1,\n    previewFill: 'rgba(255,255,255,0.28)',\n});\nexport const DEFAULT_SHAPE_ANNOTATION_CONFIG = Object.freeze({\n    shape: 'rect',\n    left: undefined,\n    top: undefined,\n    width: 120,\n    height: 80,\n    x1: undefined,\n    y1: undefined,\n    x2: undefined,\n    y2: undefined,\n    stroke: '#ff0000',\n    strokeWidth: 3,\n    fill: 'rgba(255,0,0,0.08)',\n    opacity: 1,\n    angle: 0,\n    selectable: true,\n    evented: true,\n    annotationHidden: false,\n    annotationLocked: false,\n    strokeDashArray: null,\n    arrowHeadLength: 18,\n    styles: Object.freeze({}),\n});\nconst KNOWN_TOP_LEVEL_KEYS = new Set([\n    'canvasWidth',\n    'canvasHeight',\n    'backgroundColor',\n    'animationDuration',\n    'minScale',\n    'maxScale',\n    'scaleStep',\n    'rotationStep',\n    'bindMasksToImageTransform',\n    'bindAnnotationsToImageTransform',\n    'textAnnotationFlipBehavior',\n    'defaultLayoutMode',\n    'downsampleOnLoad',\n    'downsampleMaxWidth',\n    'downsampleMaxHeight',\n    'downsampleQuality',\n    'preserveSourceFormat',\n    'downsampleMimeType',\n    'autoOrientImage',\n    'autoOrientImageQuality',\n    'maxInputBytes',\n    'maxInputPixels',\n    'imageLoadTimeoutMs',\n    'maxHistorySize',\n    'exportMultiplier',\n    'maxExportPixels',\n    'maxExportDimension',\n    'exportAreaByDefault',\n    'mergeMasksByDefault',\n    'mergeAnnotationsByDefault',\n    'defaultMaskWidth',\n    'defaultMaskHeight',\n    'defaultMaskConfig',\n    'maskRotatable',\n    'maskLabelOnSelect',\n    'maskLabelOffset',\n    'maskName',\n    'textAnnotationName',\n    'drawAnnotationName',\n    'shapeAnnotationName',\n    'maskListOrder',\n    'annotationListOrder',\n    'groupSelection',\n    'showPlaceholder',\n    'initialImageBase64',\n    'defaultDownloadFileName',\n    'onImageLoadStart',\n    'onImageLoaded',\n    'onImageCleared',\n    'onImageChanged',\n    'onBusyChange',\n    'onToolModeChange',\n    'onHistoryChange',\n    'onEditorDisposed',\n    'onMasksChanged',\n    'onAnnotationsChanged',\n    'onSelectionChange',\n    'onError',\n    'onWarning',\n    'label',\n    'crop',\n    'defaultMosaicConfig',\n    'defaultTextConfig',\n    'defaultDrawConfig',\n    'defaultEraserConfig',\n    'defaultShapeConfig',\n]);\nfunction normalizeCallback(value) {\n    return typeof value === 'function' ? value : null;\n}\nexport function isLayoutMode(value) {\n    return value === 'fit' || value === 'cover' || value === 'expand';\n}\nfunction normalizeLayoutMode(value) {\n    return isLayoutMode(value) ? value : DEFAULT_LAYOUT_MODE;\n}\nfunction isConfigObject(value) {\n    return value !== null && typeof value === 'object' && !Array.isArray(value);\n}\nfunction canCopyObjectConfigKey(key) {\n    return canCopySafeObjectKey(key);\n}\nfunction copyDefaultMaskConfigValue(value) {\n    if (Array.isArray(value)) {\n        return Object.freeze(value.map((item) => copyDefaultMaskConfigValue(item)));\n    }\n    if (!isConfigObject(value))\n        return value;\n    const copy = Object.create(null);\n    for (const [key, nestedValue] of Object.entries(value)) {\n        if (!canCopyObjectConfigKey(key))\n            continue;\n        copy[key] = copyDefaultMaskConfigValue(nestedValue);\n    }\n    return Object.freeze(copy);\n}\nfunction normalizeDefaultMaskConfig(value) {\n    if (!isConfigObject(value))\n        return EMPTY_DEFAULT_MASK_CONFIG;\n    const normalized = Object.create(null);\n    for (const [key, optionValue] of Object.entries(value)) {\n        if (!canCopyObjectConfigKey(key))\n            continue;\n        if (key === 'onCreate' || key === 'fabricGenerator' || key === 'styles')\n            continue;\n        normalized[key] = copyDefaultMaskConfigValue(optionValue);\n    }\n    const styles = value.styles;\n    if (isConfigObject(styles)) {\n        const copiedStyles = Object.create(null);\n        for (const [key, styleValue] of Object.entries(styles)) {\n            if (!canCopyObjectConfigKey(key))\n                continue;\n            copiedStyles[key] = copyDefaultMaskConfigValue(styleValue);\n        }\n        Object.freeze(copiedStyles);\n        normalized.styles = copiedStyles;\n    }\n    Object.freeze(normalized);\n    return normalized;\n}\nfunction normalizePositiveInteger(value, fallback) {\n    const numeric = Number(value);\n    if (!Number.isFinite(numeric) || numeric <= 0)\n        return fallback;\n    return Math.max(1, Math.floor(numeric));\n}\nfunction normalizePositiveFiniteNumber(value, fallback) {\n    const numeric = Number(value);\n    if (!Number.isFinite(numeric) || numeric <= 0)\n        return fallback;\n    return numeric;\n}\nfunction normalizeNonNegativeFiniteNumber(value, fallback) {\n    const numeric = Number(value);\n    if (!Number.isFinite(numeric) || numeric < 0)\n        return fallback;\n    return numeric;\n}\nfunction normalizeFiniteNumber(value, fallback) {\n    const numeric = Number(value);\n    if (!Number.isFinite(numeric))\n        return fallback;\n    return numeric;\n}\nfunction normalizeMaxHistorySize(value) {\n    const numeric = Number(value);\n    if (!Number.isFinite(numeric))\n        return DEFAULT_OPTIONS.maxHistorySize;\n    return Math.max(1, Math.floor(numeric));\n}\nfunction normalizeQualityOption(value) {\n    if (value == null)\n        return DEFAULT_OPTIONS.downsampleQuality;\n    const numeric = Number(value);\n    if (!Number.isFinite(numeric))\n        return DEFAULT_OPTIONS.downsampleQuality;\n    return Math.max(0, Math.min(1, numeric));\n}\nfunction normalizeNullableQualityOption(value) {\n    if (value == null)\n        return null;\n    const numeric = Number(value);\n    if (!Number.isFinite(numeric))\n        return null;\n    return Math.max(0, Math.min(1, numeric));\n}\nfunction normalizeMaxExportPixels(value) {\n    const numeric = Number(value);\n    if (!Number.isFinite(numeric) || numeric <= 0)\n        return DEFAULT_OPTIONS.maxExportPixels;\n    return Math.max(1, Math.floor(numeric));\n}\nfunction normalizeMaxExportDimension(value) {\n    const numeric = Number(value);\n    if (!Number.isFinite(numeric) || numeric <= 0)\n        return DEFAULT_OPTIONS.maxExportDimension;\n    return Math.max(1, Math.floor(numeric));\n}\nfunction normalizeMaxInputBytes(value) {\n    const numeric = Number(value);\n    if (!Number.isFinite(numeric) || numeric <= 0)\n        return DEFAULT_OPTIONS.maxInputBytes;\n    return Math.max(1, Math.floor(numeric));\n}\nfunction normalizeMaxInputPixels(value) {\n    const numeric = Number(value);\n    if (!Number.isFinite(numeric) || numeric <= 0)\n        return DEFAULT_OPTIONS.maxInputPixels;\n    return Math.max(1, Math.floor(numeric));\n}\nfunction normalizeExportArea(value) {\n    return value === 'canvas' || value === 'image' ? value : DEFAULT_OPTIONS.exportAreaByDefault;\n}\nfunction normalizeOverlayListOrder(value, fallback) {\n    return value === 'front-to-back' || value === 'back-to-front' ? value : fallback;\n}\nfunction isImageMimeType(value) {\n    return value === 'image/jpeg' || value === 'image/png' || value === 'image/webp';\n}\nfunction normalizeImageMimeTypeOption(value, fallback) {\n    if (value === null)\n        return null;\n    return isImageMimeType(value) ? value : fallback;\n}\nfunction normalizeNullableString(value, fallback) {\n    if (value === null)\n        return null;\n    return typeof value === 'string' ? value : fallback;\n}\nconst CROP_ASPECT_RATIO_PRESETS = new Set([\n    'free',\n    '1:1',\n    '3:4',\n    '4:3',\n    '3:2',\n    '2:3',\n    '9:16',\n    '16:9',\n]);\nfunction hasValidCropRatioParts(width, height) {\n    return (typeof width === 'number' &&\n        typeof height === 'number' &&\n        Number.isFinite(width) &&\n        Number.isFinite(height) &&\n        width > 0 &&\n        height > 0);\n}\nfunction normalizeCropAspectRatioOption(value) {\n    if (value === undefined || value === null)\n        return DEFAULT_CROP.aspectRatio;\n    if (typeof value === 'number') {\n        return Number.isFinite(value) && value > 0 ? value : DEFAULT_CROP.aspectRatio;\n    }\n    if (typeof value === 'string') {\n        const trimmed = value.trim();\n        if (CROP_ASPECT_RATIO_PRESETS.has(trimmed))\n            return trimmed;\n        const parts = trimmed.split(':');\n        if (parts.length === 2) {\n            const width = Number(parts[0]);\n            const height = Number(parts[1]);\n            if (Number.isFinite(width) && Number.isFinite(height) && width > 0 && height > 0) {\n                return trimmed;\n            }\n        }\n        return DEFAULT_CROP.aspectRatio;\n    }\n    if (isConfigObject(value) && hasValidCropRatioParts(value.width, value.height)) {\n        return { width: value.width, height: value.height };\n    }\n    return DEFAULT_CROP.aspectRatio;\n}\nfunction normalizeCropExportFileTypeOption(value) {\n    if (value === undefined || value === null)\n        return DEFAULT_CROP.exportFileType;\n    if (value === 'source')\n        return 'source';\n    const normalized = typeof value === 'string' ? tryNormalizeImageFormat(value) : null;\n    return normalized !== null && normalized !== void 0 ? normalized : DEFAULT_CROP.exportFileType;\n}\nfunction normalizeOptionalQuality(value) {\n    if (value === undefined || value === null)\n        return undefined;\n    const numeric = Number(value);\n    if (!Number.isFinite(numeric))\n        return undefined;\n    return Math.max(0, Math.min(1, numeric));\n}\nfunction hasOwn(object, key) {\n    return Object.prototype.hasOwnProperty.call(object, key);\n}\nfunction isFiniteNumber(value) {\n    return typeof value === 'number' && Number.isFinite(value);\n}\nfunction normalizeMosaicPositiveNumber(value, fallback) {\n    return isFiniteNumber(value) && value > 0 ? value : fallback;\n}\nfunction normalizeMosaicBlockSize(value, fallback) {\n    return isFiniteNumber(value) && value > 0 ? Math.max(1, Math.floor(value)) : fallback;\n}\nfunction normalizeMosaicNonNegativeNumber(value, fallback) {\n    return isFiniteNumber(value) && value >= 0 ? value : fallback;\n}\nfunction normalizeMosaicDashArray(value, fallback) {\n    if (value === null)\n        return null;\n    if (Array.isArray(value) &&\n        value.every((entry) => typeof entry === 'number' && Number.isFinite(entry) && entry >= 0)) {\n        return [...value];\n    }\n    return fallback ? [...fallback] : null;\n}\nfunction normalizeMosaicOutputFileType(value, fallback) {\n    var _a;\n    if (value === 'source')\n        return 'source';\n    if (typeof value !== 'string')\n        return fallback;\n    return (_a = tryNormalizeImageFormat(value)) !== null && _a !== void 0 ? _a : fallback;\n}\nfunction normalizeMosaicOutputQuality(value, fallback) {\n    if (value === undefined || value === null)\n        return undefined;\n    if (!isFiniteNumber(value))\n        return fallback;\n    return Math.max(0, Math.min(1, value));\n}\nexport function cloneResolvedMosaicConfig(config) {\n    return {\n        ...config,\n        previewStrokeDashArray: config.previewStrokeDashArray\n            ? [...config.previewStrokeDashArray]\n            : null,\n    };\n}\nexport function normalizeMosaicConfig(input, fallback) {\n    if (!isConfigObject(input))\n        return cloneResolvedMosaicConfig(fallback);\n    return mergeMosaicConfigPatch(fallback, input);\n}\nexport function mergeMosaicConfigPatch(current, patch, fallback = current) {\n    const raw = isConfigObject(patch) ? patch : {};\n    const next = cloneResolvedMosaicConfig(current);\n    if (hasOwn(raw, 'brushSize')) {\n        next.brushSize = normalizeMosaicPositiveNumber(raw.brushSize, fallback.brushSize);\n    }\n    if (hasOwn(raw, 'blockSize')) {\n        next.blockSize = normalizeMosaicBlockSize(raw.blockSize, fallback.blockSize);\n    }\n    if (hasOwn(raw, 'previewStroke')) {\n        next.previewStroke =\n            typeof raw.previewStroke === 'string' ? raw.previewStroke : fallback.previewStroke;\n    }\n    if (hasOwn(raw, 'previewStrokeWidth')) {\n        next.previewStrokeWidth = normalizeMosaicNonNegativeNumber(raw.previewStrokeWidth, fallback.previewStrokeWidth);\n    }\n    if (hasOwn(raw, 'previewStrokeDashArray')) {\n        next.previewStrokeDashArray = normalizeMosaicDashArray(raw.previewStrokeDashArray, fallback.previewStrokeDashArray);\n    }\n    if (hasOwn(raw, 'previewFill')) {\n        next.previewFill =\n            typeof raw.previewFill === 'string' ? raw.previewFill : fallback.previewFill;\n    }\n    if (hasOwn(raw, 'outputFileType')) {\n        next.outputFileType = normalizeMosaicOutputFileType(raw.outputFileType, fallback.outputFileType);\n    }\n    if (hasOwn(raw, 'outputQuality')) {\n        next.outputQuality = normalizeMosaicOutputQuality(raw.outputQuality, fallback.outputQuality);\n    }\n    return next;\n}\nexport function getInvalidMosaicConfigFields(input) {\n    const raw = isConfigObject(input) ? input : {};\n    const invalid = [];\n    if (hasOwn(raw, 'brushSize') &&\n        !(typeof raw.brushSize === 'number' && Number.isFinite(raw.brushSize) && raw.brushSize > 0)) {\n        invalid.push('brushSize');\n    }\n    if (hasOwn(raw, 'blockSize') &&\n        !(typeof raw.blockSize === 'number' && Number.isFinite(raw.blockSize) && raw.blockSize > 0)) {\n        invalid.push('blockSize');\n    }\n    if (hasOwn(raw, 'previewStroke') && typeof raw.previewStroke !== 'string') {\n        invalid.push('previewStroke');\n    }\n    if (hasOwn(raw, 'previewStrokeWidth') &&\n        !(typeof raw.previewStrokeWidth === 'number' &&\n            Number.isFinite(raw.previewStrokeWidth) &&\n            raw.previewStrokeWidth >= 0)) {\n        invalid.push('previewStrokeWidth');\n    }\n    if (hasOwn(raw, 'previewStrokeDashArray')) {\n        const value = raw.previewStrokeDashArray;\n        const valid = value === null ||\n            (Array.isArray(value) &&\n                value.every((entry) => typeof entry === 'number' && Number.isFinite(entry) && entry >= 0));\n        if (!valid)\n            invalid.push('previewStrokeDashArray');\n    }\n    if (hasOwn(raw, 'previewFill') && typeof raw.previewFill !== 'string') {\n        invalid.push('previewFill');\n    }\n    if (hasOwn(raw, 'outputFileType')) {\n        const value = raw.outputFileType;\n        const valid = value === 'source' || (typeof value === 'string' && tryNormalizeImageFormat(value));\n        if (!valid)\n            invalid.push('outputFileType');\n    }\n    if (hasOwn(raw, 'outputQuality') &&\n        raw.outputQuality !== undefined &&\n        raw.outputQuality !== null &&\n        !(typeof raw.outputQuality === 'number' && Number.isFinite(raw.outputQuality))) {\n        invalid.push('outputQuality');\n    }\n    return invalid;\n}\nexport function areResolvedMosaicConfigsEqual(left, right) {\n    const leftDash = left.previewStrokeDashArray;\n    const rightDash = right.previewStrokeDashArray;\n    const dashEqual = leftDash === rightDash ||\n        (Array.isArray(leftDash) &&\n            Array.isArray(rightDash) &&\n            leftDash.length === rightDash.length &&\n            leftDash.every((value, index) => value === rightDash[index]));\n    return (left.brushSize === right.brushSize &&\n        left.blockSize === right.blockSize &&\n        left.previewStroke === right.previewStroke &&\n        left.previewStrokeWidth === right.previewStrokeWidth &&\n        dashEqual &&\n        left.previewFill === right.previewFill &&\n        left.outputFileType === right.outputFileType &&\n        left.outputQuality === right.outputQuality);\n}\nexport function cloneResolvedTextAnnotationConfig(config) {\n    return {\n        ...config,\n        styles: { ...config.styles },\n    };\n}\nexport function cloneResolvedDrawConfig(config) {\n    return { ...config };\n}\nexport function cloneResolvedEraserConfig(config) {\n    return { ...config };\n}\nexport function cloneResolvedShapeAnnotationConfig(config) {\n    return {\n        ...config,\n        strokeDashArray: config.strokeDashArray ? [...config.strokeDashArray] : null,\n        styles: { ...config.styles },\n    };\n}\nfunction normalizeTextAlign(value, fallback) {\n    return value === 'left' || value === 'center' || value === 'right' || value === 'justify'\n        ? value\n        : fallback;\n}\nfunction normalizePositiveNumber(value, fallback) {\n    return typeof value === 'number' && Number.isFinite(value) && value > 0 ? value : fallback;\n}\nfunction normalizeBoolean(value, fallback) {\n    return typeof value === 'boolean' ? value : fallback;\n}\nfunction normalizeString(value, fallback) {\n    return typeof value === 'string' ? value : fallback;\n}\nfunction normalizeTextLeftTop(value) {\n    return typeof value === 'number' && Number.isFinite(value) ? value : undefined;\n}\nfunction normalizeTextboxStyles(value) {\n    return copySafeOwnProperties(value);\n}\nfunction normalizeFabricObjectStyles(value) {\n    return copySafeOwnProperties(value);\n}\nexport function mergeTextAnnotationConfigPatch(current, patch, fallback = current) {\n    const raw = isConfigObject(patch) ? patch : {};\n    const next = cloneResolvedTextAnnotationConfig(current);\n    if (hasOwn(raw, 'text'))\n        next.text = normalizeString(raw.text, fallback.text);\n    if (hasOwn(raw, 'left'))\n        next.left = normalizeTextLeftTop(raw.left);\n    if (hasOwn(raw, 'top'))\n        next.top = normalizeTextLeftTop(raw.top);\n    if (hasOwn(raw, 'width'))\n        next.width = normalizePositiveNumber(raw.width, fallback.width);\n    if (hasOwn(raw, 'fontSize')) {\n        next.fontSize = normalizePositiveNumber(raw.fontSize, fallback.fontSize);\n    }\n    if (hasOwn(raw, 'fontFamily')) {\n        next.fontFamily = normalizeString(raw.fontFamily, fallback.fontFamily);\n    }\n    if (hasOwn(raw, 'fontWeight')) {\n        next.fontWeight =\n            typeof raw.fontWeight === 'string' || typeof raw.fontWeight === 'number'\n                ? raw.fontWeight\n                : fallback.fontWeight;\n    }\n    if (hasOwn(raw, 'fill'))\n        next.fill = normalizeString(raw.fill, fallback.fill);\n    if (hasOwn(raw, 'backgroundColor')) {\n        next.backgroundColor = normalizeString(raw.backgroundColor, fallback.backgroundColor);\n    }\n    if (hasOwn(raw, 'textAlign'))\n        next.textAlign = normalizeTextAlign(raw.textAlign, fallback.textAlign);\n    if (hasOwn(raw, 'angle'))\n        next.angle = normalizeFiniteNumber(raw.angle, fallback.angle);\n    if (hasOwn(raw, 'selectable'))\n        next.selectable = normalizeBoolean(raw.selectable, fallback.selectable);\n    if (hasOwn(raw, 'evented'))\n        next.evented = normalizeBoolean(raw.evented, fallback.evented);\n    if (hasOwn(raw, 'editable'))\n        next.editable = normalizeBoolean(raw.editable, fallback.editable);\n    if (hasOwn(raw, 'enterEditing')) {\n        next.enterEditing = normalizeBoolean(raw.enterEditing, fallback.enterEditing);\n    }\n    if (hasOwn(raw, 'annotationHidden')) {\n        next.annotationHidden = normalizeBoolean(raw.annotationHidden, fallback.annotationHidden);\n    }\n    if (hasOwn(raw, 'annotationLocked')) {\n        next.annotationLocked = normalizeBoolean(raw.annotationLocked, fallback.annotationLocked);\n    }\n    if (hasOwn(raw, 'styles')) {\n        next.styles = {\n            ...next.styles,\n            ...normalizeTextboxStyles(raw.styles),\n        };\n    }\n    return next;\n}\nexport function normalizeTextAnnotationConfig(input, fallback) {\n    if (!isConfigObject(input))\n        return cloneResolvedTextAnnotationConfig(fallback);\n    return mergeTextAnnotationConfigPatch(fallback, input);\n}\nfunction normalizeLineCap(value, fallback) {\n    return value === 'butt' || value === 'round' || value === 'square' ? value : fallback;\n}\nfunction normalizeLineJoin(value, fallback) {\n    return value === 'bevel' || value === 'round' || value === 'miter' ? value : fallback;\n}\nfunction normalizeOpacity(value, fallback) {\n    if (typeof value !== 'number' || !Number.isFinite(value))\n        return fallback;\n    return Math.max(0, Math.min(1, value));\n}\nexport function mergeDrawConfigPatch(current, patch, fallback = current) {\n    const raw = isConfigObject(patch) ? patch : {};\n    const next = cloneResolvedDrawConfig(current);\n    if (hasOwn(raw, 'brushSize')) {\n        next.brushSize = normalizePositiveNumber(raw.brushSize, fallback.brushSize);\n    }\n    if (hasOwn(raw, 'color'))\n        next.color = normalizeString(raw.color, fallback.color);\n    if (hasOwn(raw, 'opacity'))\n        next.opacity = normalizeOpacity(raw.opacity, fallback.opacity);\n    if (hasOwn(raw, 'lineCap'))\n        next.lineCap = normalizeLineCap(raw.lineCap, fallback.lineCap);\n    if (hasOwn(raw, 'lineJoin'))\n        next.lineJoin = normalizeLineJoin(raw.lineJoin, fallback.lineJoin);\n    if (hasOwn(raw, 'selectable'))\n        next.selectable = normalizeBoolean(raw.selectable, fallback.selectable);\n    if (hasOwn(raw, 'evented'))\n        next.evented = normalizeBoolean(raw.evented, fallback.evented);\n    if (hasOwn(raw, 'annotationHidden')) {\n        next.annotationHidden = normalizeBoolean(raw.annotationHidden, fallback.annotationHidden);\n    }\n    if (hasOwn(raw, 'annotationLocked')) {\n        next.annotationLocked = normalizeBoolean(raw.annotationLocked, fallback.annotationLocked);\n    }\n    return next;\n}\nexport function normalizeDrawConfig(input, fallback) {\n    if (!isConfigObject(input))\n        return cloneResolvedDrawConfig(fallback);\n    return mergeDrawConfigPatch(fallback, input);\n}\nexport function mergeEraserConfigPatch(current, patch, fallback = current) {\n    const raw = isConfigObject(patch) ? patch : {};\n    const next = cloneResolvedEraserConfig(current);\n    if (hasOwn(raw, 'brushSize')) {\n        next.brushSize = normalizePositiveNumber(raw.brushSize, fallback.brushSize);\n    }\n    if (hasOwn(raw, 'target')) {\n        next.target = raw.target === 'drawAnnotations' ? 'drawAnnotations' : fallback.target;\n    }\n    if (hasOwn(raw, 'previewStroke')) {\n        next.previewStroke = normalizeString(raw.previewStroke, fallback.previewStroke);\n    }\n    if (hasOwn(raw, 'previewStrokeWidth')) {\n        next.previewStrokeWidth = normalizeMosaicNonNegativeNumber(raw.previewStrokeWidth, fallback.previewStrokeWidth);\n    }\n    if (hasOwn(raw, 'previewFill')) {\n        next.previewFill = normalizeString(raw.previewFill, fallback.previewFill);\n    }\n    return next;\n}\nexport function normalizeEraserConfig(input, fallback) {\n    if (!isConfigObject(input))\n        return cloneResolvedEraserConfig(fallback);\n    return mergeEraserConfigPatch(fallback, input);\n}\nfunction normalizeShapeKind(value, fallback) {\n    return value === 'rect' || value === 'line' || value === 'arrow' ? value : fallback;\n}\nfunction normalizeNullableDashArray(value, fallback) {\n    if (value === null)\n        return null;\n    if (Array.isArray(value) &&\n        value.every((entry) => typeof entry === 'number' && Number.isFinite(entry) && entry >= 0)) {\n        return [...value];\n    }\n    return fallback ? [...fallback] : null;\n}\nexport function mergeShapeAnnotationConfigPatch(current, patch, fallback = current) {\n    const raw = isConfigObject(patch) ? patch : {};\n    const next = cloneResolvedShapeAnnotationConfig(current);\n    if (hasOwn(raw, 'shape'))\n        next.shape = normalizeShapeKind(raw.shape, fallback.shape);\n    if (hasOwn(raw, 'left'))\n        next.left = normalizeTextLeftTop(raw.left);\n    if (hasOwn(raw, 'top'))\n        next.top = normalizeTextLeftTop(raw.top);\n    if (hasOwn(raw, 'width'))\n        next.width = normalizePositiveNumber(raw.width, fallback.width);\n    if (hasOwn(raw, 'height'))\n        next.height = normalizePositiveNumber(raw.height, fallback.height);\n    if (hasOwn(raw, 'x1'))\n        next.x1 = normalizeTextLeftTop(raw.x1);\n    if (hasOwn(raw, 'y1'))\n        next.y1 = normalizeTextLeftTop(raw.y1);\n    if (hasOwn(raw, 'x2'))\n        next.x2 = normalizeTextLeftTop(raw.x2);\n    if (hasOwn(raw, 'y2'))\n        next.y2 = normalizeTextLeftTop(raw.y2);\n    if (hasOwn(raw, 'stroke'))\n        next.stroke = normalizeString(raw.stroke, fallback.stroke);\n    if (hasOwn(raw, 'strokeWidth')) {\n        next.strokeWidth = normalizePositiveNumber(raw.strokeWidth, fallback.strokeWidth);\n    }\n    if (hasOwn(raw, 'fill'))\n        next.fill = normalizeString(raw.fill, fallback.fill);\n    if (hasOwn(raw, 'opacity'))\n        next.opacity = normalizeOpacity(raw.opacity, fallback.opacity);\n    if (hasOwn(raw, 'angle'))\n        next.angle = normalizeFiniteNumber(raw.angle, fallback.angle);\n    if (hasOwn(raw, 'selectable')) {\n        next.selectable = normalizeBoolean(raw.selectable, fallback.selectable);\n    }\n    if (hasOwn(raw, 'evented'))\n        next.evented = normalizeBoolean(raw.evented, fallback.evented);\n    if (hasOwn(raw, 'annotationHidden')) {\n        next.annotationHidden = normalizeBoolean(raw.annotationHidden, fallback.annotationHidden);\n    }\n    if (hasOwn(raw, 'annotationLocked')) {\n        next.annotationLocked = normalizeBoolean(raw.annotationLocked, fallback.annotationLocked);\n    }\n    if (hasOwn(raw, 'strokeDashArray')) {\n        next.strokeDashArray = normalizeNullableDashArray(raw.strokeDashArray, fallback.strokeDashArray);\n    }\n    if (hasOwn(raw, 'arrowHeadLength')) {\n        next.arrowHeadLength = normalizePositiveNumber(raw.arrowHeadLength, fallback.arrowHeadLength);\n    }\n    if (hasOwn(raw, 'styles')) {\n        next.styles = {\n            ...next.styles,\n            ...normalizeFabricObjectStyles(raw.styles),\n        };\n    }\n    return next;\n}\nexport function normalizeShapeAnnotationConfig(input, fallback) {\n    if (!isConfigObject(input))\n        return cloneResolvedShapeAnnotationConfig(fallback);\n    return mergeShapeAnnotationConfigPatch(fallback, input);\n}\nexport function areResolvedTextAnnotationConfigsEqual(left, right) {\n    return (left.text === right.text &&\n        left.left === right.left &&\n        left.top === right.top &&\n        left.width === right.width &&\n        left.fontSize === right.fontSize &&\n        left.fontFamily === right.fontFamily &&\n        left.fontWeight === right.fontWeight &&\n        left.fill === right.fill &&\n        left.backgroundColor === right.backgroundColor &&\n        left.textAlign === right.textAlign &&\n        left.angle === right.angle &&\n        left.selectable === right.selectable &&\n        left.evented === right.evented &&\n        left.editable === right.editable &&\n        left.enterEditing === right.enterEditing &&\n        left.annotationHidden === right.annotationHidden &&\n        left.annotationLocked === right.annotationLocked &&\n        areStyleRecordsEqual(left.styles, right.styles));\n}\nfunction areStyleRecordsEqual(left, right) {\n    return areStyleValuesEqual(left, right, new WeakMap());\n}\nfunction areStyleValuesEqual(left, right, seen) {\n    if (Object.is(left, right))\n        return true;\n    if (!left || !right || typeof left !== 'object' || typeof right !== 'object')\n        return false;\n    let seenRights = seen.get(left);\n    if (seenRights === null || seenRights === void 0 ? void 0 : seenRights.has(right))\n        return true;\n    if (!seenRights) {\n        seenRights = new WeakSet();\n        seen.set(left, seenRights);\n    }\n    seenRights.add(right);\n    if (Array.isArray(left) || Array.isArray(right)) {\n        return (Array.isArray(left) &&\n            Array.isArray(right) &&\n            left.length === right.length &&\n            left.every((value, index) => areStyleValuesEqual(value, right[index], seen)));\n    }\n    const leftRecord = left;\n    const rightRecord = right;\n    const leftKeys = Object.keys(leftRecord);\n    const rightKeys = Object.keys(rightRecord);\n    if (leftKeys.length !== rightKeys.length)\n        return false;\n    return leftKeys.every((key) => {\n        if (!hasOwn(rightRecord, key))\n            return false;\n        return areStyleValuesEqual(leftRecord[key], rightRecord[key], seen);\n    });\n}\nexport function areResolvedDrawConfigsEqual(left, right) {\n    return (left.brushSize === right.brushSize &&\n        left.color === right.color &&\n        left.opacity === right.opacity &&\n        left.lineCap === right.lineCap &&\n        left.lineJoin === right.lineJoin &&\n        left.selectable === right.selectable &&\n        left.evented === right.evented &&\n        left.annotationHidden === right.annotationHidden &&\n        left.annotationLocked === right.annotationLocked);\n}\nexport function areResolvedEraserConfigsEqual(left, right) {\n    return (left.brushSize === right.brushSize &&\n        left.target === right.target &&\n        left.previewStroke === right.previewStroke &&\n        left.previewStrokeWidth === right.previewStrokeWidth &&\n        left.previewFill === right.previewFill);\n}\nexport function areResolvedShapeAnnotationConfigsEqual(left, right) {\n    const leftDash = left.strokeDashArray;\n    const rightDash = right.strokeDashArray;\n    const dashEqual = leftDash === rightDash ||\n        (Array.isArray(leftDash) &&\n            Array.isArray(rightDash) &&\n            leftDash.length === rightDash.length &&\n            leftDash.every((value, index) => value === rightDash[index]));\n    return (left.shape === right.shape &&\n        left.left === right.left &&\n        left.top === right.top &&\n        left.width === right.width &&\n        left.height === right.height &&\n        left.x1 === right.x1 &&\n        left.y1 === right.y1 &&\n        left.x2 === right.x2 &&\n        left.y2 === right.y2 &&\n        left.stroke === right.stroke &&\n        left.strokeWidth === right.strokeWidth &&\n        left.fill === right.fill &&\n        left.opacity === right.opacity &&\n        left.angle === right.angle &&\n        left.selectable === right.selectable &&\n        left.evented === right.evented &&\n        left.annotationHidden === right.annotationHidden &&\n        left.annotationLocked === right.annotationLocked &&\n        dashEqual &&\n        left.arrowHeadLength === right.arrowHeadLength &&\n        areStyleRecordsEqual(left.styles, right.styles));\n}\nexport function getInvalidTextAnnotationConfigFields(input) {\n    const raw = isConfigObject(input) ? input : {};\n    const invalid = [];\n    if (hasOwn(raw, 'text') && typeof raw.text !== 'string')\n        invalid.push('text');\n    if (hasOwn(raw, 'width') && !isFiniteNumber(raw.width))\n        invalid.push('width');\n    if (hasOwn(raw, 'fontSize') && !isFiniteNumber(raw.fontSize))\n        invalid.push('fontSize');\n    if (hasOwn(raw, 'fontFamily') && typeof raw.fontFamily !== 'string')\n        invalid.push('fontFamily');\n    if (hasOwn(raw, 'fill') && typeof raw.fill !== 'string') {\n        invalid.push('fill');\n    }\n    return invalid;\n}\nexport function getInvalidDrawConfigFields(input) {\n    const raw = isConfigObject(input) ? input : {};\n    const invalid = [];\n    if (hasOwn(raw, 'brushSize') && !isFiniteNumber(raw.brushSize))\n        invalid.push('brushSize');\n    if (hasOwn(raw, 'color') && typeof raw.color !== 'string')\n        invalid.push('color');\n    if (hasOwn(raw, 'opacity') && !isFiniteNumber(raw.opacity))\n        invalid.push('opacity');\n    return invalid;\n}\nexport function getInvalidEraserConfigFields(input) {\n    const raw = isConfigObject(input) ? input : {};\n    const invalid = [];\n    if (hasOwn(raw, 'brushSize') && !isFiniteNumber(raw.brushSize))\n        invalid.push('brushSize');\n    if (hasOwn(raw, 'target') && raw.target !== 'drawAnnotations')\n        invalid.push('target');\n    if (hasOwn(raw, 'previewStroke') && typeof raw.previewStroke !== 'string') {\n        invalid.push('previewStroke');\n    }\n    if (hasOwn(raw, 'previewStrokeWidth') && !isFiniteNumber(raw.previewStrokeWidth)) {\n        invalid.push('previewStrokeWidth');\n    }\n    if (hasOwn(raw, 'previewFill') && typeof raw.previewFill !== 'string') {\n        invalid.push('previewFill');\n    }\n    return invalid;\n}\nexport function getInvalidShapeAnnotationConfigFields(input) {\n    const raw = isConfigObject(input) ? input : {};\n    const invalid = [];\n    if (hasOwn(raw, 'shape') &&\n        raw.shape !== 'rect' &&\n        raw.shape !== 'line' &&\n        raw.shape !== 'arrow') {\n        invalid.push('shape');\n    }\n    if (hasOwn(raw, 'width') && !isFiniteNumber(raw.width))\n        invalid.push('width');\n    if (hasOwn(raw, 'height') && !isFiniteNumber(raw.height))\n        invalid.push('height');\n    if (hasOwn(raw, 'stroke') && typeof raw.stroke !== 'string')\n        invalid.push('stroke');\n    if (hasOwn(raw, 'strokeWidth') && !isFiniteNumber(raw.strokeWidth)) {\n        invalid.push('strokeWidth');\n    }\n    if (hasOwn(raw, 'fill') && typeof raw.fill !== 'string')\n        invalid.push('fill');\n    if (hasOwn(raw, 'opacity') && !isFiniteNumber(raw.opacity))\n        invalid.push('opacity');\n    if (hasOwn(raw, 'arrowHeadLength') && !isFiniteNumber(raw.arrowHeadLength)) {\n        invalid.push('arrowHeadLength');\n    }\n    if (hasOwn(raw, 'strokeDashArray')) {\n        const value = raw.strokeDashArray;\n        const valid = value === null ||\n            (Array.isArray(value) &&\n                value.every((entry) => typeof entry === 'number' && Number.isFinite(entry) && entry >= 0));\n        if (!valid)\n            invalid.push('strokeDashArray');\n    }\n    return invalid;\n}\nexport function resolveOptions(input) {\n    const raw = input !== null && input !== void 0 ? input : {};\n    const resolved = { ...DEFAULT_OPTIONS };\n    for (const key of Object.keys(raw)) {\n        if (!KNOWN_TOP_LEVEL_KEYS.has(key))\n            continue;\n        if (key === 'label' ||\n            key === 'crop' ||\n            key === 'defaultMosaicConfig' ||\n            key === 'defaultTextConfig' ||\n            key === 'defaultDrawConfig' ||\n            key === 'defaultEraserConfig' ||\n            key === 'defaultShapeConfig') {\n            continue;\n        }\n        if (key === 'onImageLoadStart' ||\n            key === 'onImageLoaded' ||\n            key === 'onImageCleared' ||\n            key === 'onImageChanged' ||\n            key === 'onBusyChange' ||\n            key === 'onToolModeChange' ||\n            key === 'onHistoryChange' ||\n            key === 'onEditorDisposed' ||\n            key === 'onMasksChanged' ||\n            key === 'onAnnotationsChanged' ||\n            key === 'onSelectionChange' ||\n            key === 'onError' ||\n            key === 'onWarning') {\n            continue;\n        }\n        const value = raw[key];\n        if (value === undefined)\n            continue;\n        if (key === 'backgroundColor') {\n            resolved.backgroundColor = normalizeString(value, DEFAULT_OPTIONS.backgroundColor);\n            continue;\n        }\n        if (key === 'bindMasksToImageTransform') {\n            resolved.bindMasksToImageTransform = normalizeBoolean(value, DEFAULT_OPTIONS.bindMasksToImageTransform);\n            continue;\n        }\n        if (key === 'bindAnnotationsToImageTransform') {\n            resolved.bindAnnotationsToImageTransform = normalizeBoolean(value, DEFAULT_OPTIONS.bindAnnotationsToImageTransform);\n            continue;\n        }\n        if (key === 'textAnnotationFlipBehavior') {\n            resolved.textAnnotationFlipBehavior =\n                value === 'mirror' ? 'mirror' : 'preserve-readable';\n            continue;\n        }\n        if (key === 'downsampleOnLoad') {\n            resolved.downsampleOnLoad = normalizeBoolean(value, DEFAULT_OPTIONS.downsampleOnLoad);\n            continue;\n        }\n        if (key === 'preserveSourceFormat') {\n            resolved.preserveSourceFormat = normalizeBoolean(value, DEFAULT_OPTIONS.preserveSourceFormat);\n            continue;\n        }\n        if (key === 'downsampleMimeType') {\n            resolved.downsampleMimeType = normalizeImageMimeTypeOption(value, DEFAULT_OPTIONS.downsampleMimeType);\n            continue;\n        }\n        if (key === 'autoOrientImage') {\n            resolved.autoOrientImage = normalizeBoolean(value, DEFAULT_OPTIONS.autoOrientImage);\n            continue;\n        }\n        if (key === 'autoOrientImageQuality') {\n            resolved.autoOrientImageQuality = normalizeNullableQualityOption(value);\n            continue;\n        }\n        if (key === 'maxInputBytes') {\n            resolved.maxInputBytes = normalizeMaxInputBytes(value);\n            continue;\n        }\n        if (key === 'maxInputPixels') {\n            resolved.maxInputPixels = normalizeMaxInputPixels(value);\n            continue;\n        }\n        if (key === 'mergeMasksByDefault') {\n            resolved.mergeMasksByDefault = normalizeBoolean(value, DEFAULT_OPTIONS.mergeMasksByDefault);\n            continue;\n        }\n        if (key === 'mergeAnnotationsByDefault') {\n            resolved.mergeAnnotationsByDefault = normalizeBoolean(value, DEFAULT_OPTIONS.mergeAnnotationsByDefault);\n            continue;\n        }\n        if (key === 'maskRotatable') {\n            resolved.maskRotatable = normalizeBoolean(value, DEFAULT_OPTIONS.maskRotatable);\n            continue;\n        }\n        if (key === 'maskLabelOnSelect') {\n            resolved.maskLabelOnSelect = normalizeBoolean(value, DEFAULT_OPTIONS.maskLabelOnSelect);\n            continue;\n        }\n        if (key === 'maskName') {\n            resolved.maskName = normalizeString(value, DEFAULT_OPTIONS.maskName);\n            continue;\n        }\n        if (key === 'textAnnotationName') {\n            resolved.textAnnotationName = normalizeString(value, DEFAULT_OPTIONS.textAnnotationName);\n            continue;\n        }\n        if (key === 'drawAnnotationName') {\n            resolved.drawAnnotationName = normalizeString(value, DEFAULT_OPTIONS.drawAnnotationName);\n            continue;\n        }\n        if (key === 'shapeAnnotationName') {\n            resolved.shapeAnnotationName = normalizeString(value, DEFAULT_OPTIONS.shapeAnnotationName);\n            continue;\n        }\n        if (key === 'groupSelection') {\n            resolved.groupSelection = normalizeBoolean(value, DEFAULT_OPTIONS.groupSelection);\n            continue;\n        }\n        if (key === 'showPlaceholder') {\n            resolved.showPlaceholder = normalizeBoolean(value, DEFAULT_OPTIONS.showPlaceholder);\n            continue;\n        }\n        if (key === 'initialImageBase64') {\n            resolved.initialImageBase64 = normalizeNullableString(value, DEFAULT_OPTIONS.initialImageBase64);\n            continue;\n        }\n        if (key === 'defaultDownloadFileName') {\n            resolved.defaultDownloadFileName = normalizeString(value, DEFAULT_OPTIONS.defaultDownloadFileName);\n            continue;\n        }\n        if (key === 'downsampleQuality') {\n            resolved.downsampleQuality = normalizeQualityOption(value);\n            continue;\n        }\n        if (key === 'maxExportPixels') {\n            resolved.maxExportPixels = normalizeMaxExportPixels(value);\n            continue;\n        }\n        if (key === 'maxExportDimension') {\n            resolved.maxExportDimension = normalizeMaxExportDimension(value);\n            continue;\n        }\n        if (key === 'exportAreaByDefault') {\n            resolved.exportAreaByDefault = normalizeExportArea(value);\n            continue;\n        }\n        if (key === 'maskListOrder') {\n            resolved.maskListOrder = normalizeOverlayListOrder(value, DEFAULT_OPTIONS.maskListOrder);\n            continue;\n        }\n        if (key === 'annotationListOrder') {\n            resolved.annotationListOrder = normalizeOverlayListOrder(value, DEFAULT_OPTIONS.annotationListOrder);\n            continue;\n        }\n        if (key === 'defaultLayoutMode') {\n            const layoutMode = normalizeLayoutMode(value);\n            resolved.defaultLayoutMode = layoutMode;\n            resolved.layoutMode = layoutMode;\n            continue;\n        }\n        if (key === 'canvasWidth') {\n            resolved.canvasWidth = normalizePositiveInteger(value, DEFAULT_OPTIONS.canvasWidth);\n            continue;\n        }\n        if (key === 'canvasHeight') {\n            resolved.canvasHeight = normalizePositiveInteger(value, DEFAULT_OPTIONS.canvasHeight);\n            continue;\n        }\n        if (key === 'animationDuration') {\n            resolved.animationDuration = normalizeNonNegativeFiniteNumber(value, DEFAULT_OPTIONS.animationDuration);\n            continue;\n        }\n        if (key === 'minScale') {\n            resolved.minScale = normalizePositiveFiniteNumber(value, DEFAULT_OPTIONS.minScale);\n            continue;\n        }\n        if (key === 'maxScale') {\n            resolved.maxScale = normalizePositiveFiniteNumber(value, DEFAULT_OPTIONS.maxScale);\n            continue;\n        }\n        if (key === 'scaleStep') {\n            resolved.scaleStep = normalizePositiveFiniteNumber(value, DEFAULT_OPTIONS.scaleStep);\n            continue;\n        }\n        if (key === 'rotationStep') {\n            resolved.rotationStep = normalizeFiniteNumber(value, DEFAULT_OPTIONS.rotationStep);\n            continue;\n        }\n        if (key === 'downsampleMaxWidth') {\n            resolved.downsampleMaxWidth = normalizePositiveInteger(value, DEFAULT_OPTIONS.downsampleMaxWidth);\n            continue;\n        }\n        if (key === 'downsampleMaxHeight') {\n            resolved.downsampleMaxHeight = normalizePositiveInteger(value, DEFAULT_OPTIONS.downsampleMaxHeight);\n            continue;\n        }\n        if (key === 'imageLoadTimeoutMs') {\n            resolved.imageLoadTimeoutMs = normalizePositiveInteger(value, DEFAULT_OPTIONS.imageLoadTimeoutMs);\n            continue;\n        }\n        if (key === 'exportMultiplier') {\n            resolved.exportMultiplier = normalizePositiveFiniteNumber(value, DEFAULT_OPTIONS.exportMultiplier);\n            continue;\n        }\n        if (key === 'defaultMaskWidth') {\n            resolved.defaultMaskWidth = normalizePositiveFiniteNumber(value, DEFAULT_OPTIONS.defaultMaskWidth);\n            continue;\n        }\n        if (key === 'defaultMaskHeight') {\n            resolved.defaultMaskHeight = normalizePositiveFiniteNumber(value, DEFAULT_OPTIONS.defaultMaskHeight);\n            continue;\n        }\n        if (key === 'defaultMaskConfig') {\n            resolved.defaultMaskConfig = normalizeDefaultMaskConfig(value);\n            continue;\n        }\n        if (key === 'maskLabelOffset') {\n            resolved.maskLabelOffset = normalizeNonNegativeFiniteNumber(value, DEFAULT_OPTIONS.maskLabelOffset);\n            continue;\n        }\n        resolved[key] = value;\n    }\n    resolved.onImageLoadStart = normalizeCallback(raw.onImageLoadStart);\n    resolved.onImageLoaded = normalizeCallback(raw.onImageLoaded);\n    resolved.onImageCleared = normalizeCallback(raw.onImageCleared);\n    resolved.onImageChanged = normalizeCallback(raw.onImageChanged);\n    resolved.onBusyChange = normalizeCallback(raw.onBusyChange);\n    resolved.onToolModeChange = normalizeCallback(raw.onToolModeChange);\n    resolved.onHistoryChange = normalizeCallback(raw.onHistoryChange);\n    resolved.onEditorDisposed = normalizeCallback(raw.onEditorDisposed);\n    resolved.onMasksChanged = normalizeCallback(raw.onMasksChanged);\n    resolved.onAnnotationsChanged = normalizeCallback(raw.onAnnotationsChanged);\n    resolved.onSelectionChange = normalizeCallback(raw.onSelectionChange);\n    resolved.onError = normalizeCallback(raw.onError);\n    resolved.onWarning = normalizeCallback(raw.onWarning);\n    resolved.maxHistorySize = normalizeMaxHistorySize(resolved.maxHistorySize);\n    if (resolved.minScale > resolved.maxScale) {\n        const minScale = resolved.minScale;\n        resolved.minScale = resolved.maxScale;\n        resolved.maxScale = minScale;\n    }\n    const userLabel = raw.label && typeof raw.label === 'object' ? raw.label : {};\n    const mergedTextOptions = {\n        ...DEFAULT_LABEL_TEXT_OPTIONS,\n        ...(userLabel.textOptions && typeof userLabel.textOptions === 'object'\n            ? userLabel.textOptions\n            : {}),\n    };\n    const label = {\n        getText: typeof userLabel.getText === 'function' ? userLabel.getText : DEFAULT_LABEL.getText,\n        textOptions: mergedTextOptions,\n    };\n    if (typeof userLabel.create === 'function') {\n        label.create = userLabel.create;\n    }\n    Object.freeze(label.textOptions);\n    Object.freeze(label);\n    const userCrop = raw.crop && typeof raw.crop === 'object' ? raw.crop : {};\n    const crop = {\n        aspectRatio: normalizeCropAspectRatioOption(userCrop.aspectRatio),\n        minWidth: normalizePositiveFiniteNumber(userCrop.minWidth, DEFAULT_CROP.minWidth),\n        minHeight: normalizePositiveFiniteNumber(userCrop.minHeight, DEFAULT_CROP.minHeight),\n        padding: normalizeNonNegativeFiniteNumber(userCrop.padding, DEFAULT_CROP.padding),\n        hideMasksDuringCrop: normalizeBoolean(userCrop.hideMasksDuringCrop, DEFAULT_CROP.hideMasksDuringCrop),\n        preserveMasksAfterCrop: normalizeBoolean(userCrop.preserveMasksAfterCrop, DEFAULT_CROP.preserveMasksAfterCrop),\n        allowRotationOfCropRect: normalizeBoolean(userCrop.allowRotationOfCropRect, DEFAULT_CROP.allowRotationOfCropRect),\n        exportFileType: normalizeCropExportFileTypeOption(userCrop.exportFileType),\n        exportQuality: normalizeOptionalQuality(userCrop.exportQuality),\n    };\n    Object.freeze(crop);\n    const defaultMosaicConfig = normalizeMosaicConfig(raw.defaultMosaicConfig, DEFAULT_MOSAIC_CONFIG);\n    if (defaultMosaicConfig.previewStrokeDashArray) {\n        Object.freeze(defaultMosaicConfig.previewStrokeDashArray);\n    }\n    Object.freeze(defaultMosaicConfig);\n    const defaultTextConfig = normalizeTextAnnotationConfig(raw.defaultTextConfig, DEFAULT_TEXT_ANNOTATION_CONFIG);\n    Object.freeze(defaultTextConfig.styles);\n    Object.freeze(defaultTextConfig);\n    const defaultDrawConfig = normalizeDrawConfig(raw.defaultDrawConfig, DEFAULT_DRAW_CONFIG);\n    Object.freeze(defaultDrawConfig);\n    const defaultEraserConfig = normalizeEraserConfig(raw.defaultEraserConfig, DEFAULT_ERASER_CONFIG);\n    Object.freeze(defaultEraserConfig);\n    const defaultShapeConfig = normalizeShapeAnnotationConfig(raw.defaultShapeConfig, DEFAULT_SHAPE_ANNOTATION_CONFIG);\n    Object.freeze(defaultShapeConfig.styles);\n    Object.freeze(defaultShapeConfig);\n    return Object.freeze({\n        ...resolved,\n        label,\n        crop,\n        defaultMosaicConfig,\n        defaultTextConfig,\n        defaultDrawConfig,\n        defaultEraserConfig,\n        defaultShapeConfig,\n    });\n}\n//# sourceMappingURL=default-options.js.map","export const DEFAULT_IMAGE_FILTER_CONFIG = Object.freeze({\n    brightness: 0,\n    contrast: 0,\n    saturation: 0,\n    blur: 0,\n    sharpen: 0,\n    grayscale: false,\n    sepia: false,\n    vintage: false,\n});\nfunction isConfigObject(value) {\n    return value !== null && typeof value === 'object' && !Array.isArray(value);\n}\nfunction hasOwn(object, key) {\n    return Object.prototype.hasOwnProperty.call(object, key);\n}\nfunction normalizeNumberField(raw, key, fallback, min, max, warnings) {\n    if (!hasOwn(raw, key))\n        return fallback;\n    const value = raw[key];\n    if (value === undefined || value === null)\n        return 0;\n    if (typeof value !== 'number' || !Number.isFinite(value)) {\n        warnings.push(key);\n        return fallback;\n    }\n    if (value < min || value > max) {\n        warnings.push(key);\n        return Math.max(min, Math.min(max, value));\n    }\n    return value;\n}\nfunction normalizeBooleanField(raw, key, fallback, warnings) {\n    if (!hasOwn(raw, key))\n        return fallback;\n    const value = raw[key];\n    if (value === undefined || value === null)\n        return false;\n    if (typeof value !== 'boolean') {\n        warnings.push(key);\n        return fallback;\n    }\n    return value;\n}\nexport function cloneResolvedImageFilterConfig(config) {\n    return { ...config };\n}\nexport function mergeImageFilterConfigPatch(current, patch) {\n    const raw = isConfigObject(patch) ? patch : {};\n    const warnings = [];\n    const config = {\n        brightness: normalizeNumberField(raw, 'brightness', current.brightness, -1, 1, warnings),\n        contrast: normalizeNumberField(raw, 'contrast', current.contrast, -1, 1, warnings),\n        saturation: normalizeNumberField(raw, 'saturation', current.saturation, -1, 1, warnings),\n        blur: normalizeNumberField(raw, 'blur', current.blur, 0, 1, warnings),\n        sharpen: normalizeNumberField(raw, 'sharpen', current.sharpen, 0, 1, warnings),\n        grayscale: normalizeBooleanField(raw, 'grayscale', current.grayscale, warnings),\n        sepia: normalizeBooleanField(raw, 'sepia', current.sepia, warnings),\n        vintage: normalizeBooleanField(raw, 'vintage', current.vintage, warnings),\n    };\n    return { config, warnings };\n}\nexport function normalizeImageFilterConfigSnapshot(value) {\n    if (!isConfigObject(value))\n        return cloneResolvedImageFilterConfig(DEFAULT_IMAGE_FILTER_CONFIG);\n    return mergeImageFilterConfigPatch(cloneResolvedImageFilterConfig(DEFAULT_IMAGE_FILTER_CONFIG), value).config;\n}\nexport function areResolvedImageFilterConfigsEqual(left, right) {\n    return (left.brightness === right.brightness &&\n        left.contrast === right.contrast &&\n        left.saturation === right.saturation &&\n        left.blur === right.blur &&\n        left.sharpen === right.sharpen &&\n        left.grayscale === right.grayscale &&\n        left.sepia === right.sepia &&\n        left.vintage === right.vintage);\n}\nexport function hasActiveImageFilters(config) {\n    return (config.brightness !== 0 ||\n        config.contrast !== 0 ||\n        config.saturation !== 0 ||\n        config.blur !== 0 ||\n        config.sharpen !== 0 ||\n        config.grayscale ||\n        config.sepia ||\n        config.vintage);\n}\n//# sourceMappingURL=image-filter-config.js.map","export function isBaseImageObject(object) {\n    return (!!object &&\n        typeof object === 'object' &&\n        object.editorObjectKind === 'baseImage');\n}\nexport function isMaskObject(object) {\n    const candidate = object;\n    return (!!candidate &&\n        candidate.editorObjectKind === 'mask' &&\n        typeof candidate.maskId === 'number' &&\n        typeof candidate.maskUid === 'string' &&\n        typeof candidate.maskName === 'string');\n}\nexport function isAnnotationObject(object) {\n    const candidate = object;\n    return (!!candidate &&\n        candidate.editorObjectKind === 'annotation' &&\n        typeof candidate.annotationId === 'number' &&\n        typeof candidate.annotationType === 'string' &&\n        typeof candidate.annotationName === 'string');\n}\nexport function isTextAnnotationObject(object) {\n    return isAnnotationObject(object) && object.annotationType === 'text';\n}\nexport function isDrawAnnotationObject(object) {\n    return isAnnotationObject(object) && object.annotationType === 'draw';\n}\nexport function isShapeAnnotationObject(object) {\n    const candidate = object;\n    return (isAnnotationObject(candidate) &&\n        candidate.annotationType === 'shape' &&\n        (candidate.shapeAnnotationKind === 'rect' ||\n            candidate.shapeAnnotationKind === 'line' ||\n            candidate.shapeAnnotationKind === 'arrow'));\n}\nexport function isSessionObject(object) {\n    const candidate = object;\n    return (!!candidate &&\n        candidate.editorObjectKind === 'session' &&\n        typeof candidate.sessionObjectType === 'string');\n}\nexport function isEditableOverlayObject(object) {\n    return isMaskObject(object) || isAnnotationObject(object);\n}\n//# sourceMappingURL=public-types.js.map","export function markBaseImageObject(image) {\n    const baseImage = image;\n    baseImage.editorObjectKind = 'baseImage';\n    return baseImage;\n}\nexport function markMaskObject(object, meta) {\n    const mask = object;\n    mask.editorObjectKind = 'mask';\n    mask.maskId = meta.maskId;\n    mask.maskUid = meta.maskUid;\n    mask.maskName = meta.maskName;\n    mask.originalAlpha = meta.originalAlpha;\n    if (meta.originalStroke !== undefined)\n        mask.originalStroke = meta.originalStroke;\n    if (typeof meta.originalStrokeWidth === 'number') {\n        mask.originalStrokeWidth = meta.originalStrokeWidth;\n    }\n    return mask;\n}\nexport function markAnnotationObject(object, meta) {\n    var _a, _b;\n    const annotation = object;\n    annotation.editorObjectKind = 'annotation';\n    annotation.annotationId = meta.annotationId;\n    annotation.annotationType = meta.annotationType;\n    annotation.annotationName = meta.annotationName;\n    annotation.annotationHidden = (_a = meta.annotationHidden) !== null && _a !== void 0 ? _a : false;\n    annotation.annotationLocked = (_b = meta.annotationLocked) !== null && _b !== void 0 ? _b : false;\n    if (typeof meta.annotationSelectable === 'boolean') {\n        annotation.annotationSelectable = meta.annotationSelectable;\n    }\n    if (typeof meta.annotationEvented === 'boolean') {\n        annotation.annotationEvented = meta.annotationEvented;\n    }\n    if (typeof meta.annotationHasControls === 'boolean') {\n        annotation.annotationHasControls = meta.annotationHasControls;\n    }\n    if (typeof meta.annotationEditable === 'boolean') {\n        annotation.annotationEditable = meta.annotationEditable;\n    }\n    if (meta.shapeAnnotationKind) {\n        annotation.shapeAnnotationKind = meta.shapeAnnotationKind;\n    }\n    return annotation;\n}\nexport function markSessionObject(object, sessionObjectType) {\n    const sessionObject = object;\n    sessionObject.editorObjectKind = 'session';\n    sessionObject.sessionObjectType = sessionObjectType;\n    return sessionObject;\n}\n//# sourceMappingURL=editor-object-kind.js.map","export const SUPPORTED_IMAGE_EXTENSIONS = {\n    png: 'image/png',\n    jpg: 'image/jpeg',\n    jpeg: 'image/jpeg',\n    webp: 'image/webp',\n};\nexport const SUPPORTED_IMAGE_MIME_TYPES = new Set(Object.values(SUPPORTED_IMAGE_EXTENSIONS));\nexport function isSupportedImageDataUrl(value) {\n    if (typeof value !== 'string')\n        return false;\n    if (!value.toLowerCase().startsWith('data:image/'))\n        return false;\n    const match = /^data:(image\\/[^;,]+)(?:[;,])/i.exec(value);\n    if (!match)\n        return false;\n    return SUPPORTED_IMAGE_MIME_TYPES.has(match[1].toLowerCase());\n}\nexport function inferImageMimeType(file) {\n    var _a, _b;\n    if (file.type && SUPPORTED_IMAGE_MIME_TYPES.has(file.type))\n        return file.type;\n    if (file.type)\n        return null;\n    const match = /\\.([a-z0-9]+)$/i.exec(file.name);\n    const ext = (_a = match === null || match === void 0 ? void 0 : match[1]) === null || _a === void 0 ? void 0 : _a.toLowerCase();\n    if (!ext)\n        return null;\n    return (_b = SUPPORTED_IMAGE_EXTENSIONS[ext]) !== null && _b !== void 0 ? _b : null;\n}\nexport function readFileAsDataUrl(file) {\n    return new Promise((resolve, reject) => {\n        const reader = new FileReader();\n        reader.onload = () => {\n            const fileReaderResult = reader.result;\n            if (typeof fileReaderResult === 'string') {\n                resolve(fileReaderResult);\n            }\n            else {\n                reject(new Error('FileReader returned a non-string result'));\n            }\n        };\n        reader.onerror = () => {\n            var _a;\n            reject((_a = reader.error) !== null && _a !== void 0 ? _a : new Error('FileReader error'));\n        };\n        reader.onabort = () => {\n            reject(new Error('FileReader read aborted'));\n        };\n        reader.readAsDataURL(file);\n    });\n}\nexport function readFileAsArrayBuffer(file) {\n    if (typeof file.arrayBuffer === 'function') {\n        return file.arrayBuffer();\n    }\n    return new Promise((resolve, reject) => {\n        const reader = new FileReader();\n        reader.onload = () => {\n            const result = reader.result;\n            if (result instanceof ArrayBuffer) {\n                resolve(result);\n            }\n            else {\n                reject(new Error('FileReader returned a non-ArrayBuffer result'));\n            }\n        };\n        reader.onerror = () => {\n            var _a;\n            reject((_a = reader.error) !== null && _a !== void 0 ? _a : new Error('FileReader error'));\n        };\n        reader.onabort = () => {\n            reject(new Error('FileReader read aborted'));\n        };\n        reader.readAsArrayBuffer(file);\n    });\n}\nexport function resetFileInput(input) {\n    if (!input)\n        return;\n    try {\n        input.value = '';\n    }\n    catch {\n    }\n}\n//# sourceMappingURL=file.js.map","import { ImageLoadTimeoutError } from '../core/errors.js';\nexport function withTimeout(promise, ms, label, onTimeout) {\n    return new Promise((resolve, reject) => {\n        const start = Date.now();\n        const timeoutId = setTimeout(() => {\n            try {\n                onTimeout === null || onTimeout === void 0 ? void 0 : onTimeout();\n            }\n            catch {\n            }\n            reject(new ImageLoadTimeoutError(label, Date.now() - start));\n        }, ms);\n        promise.then((value) => {\n            clearTimeout(timeoutId);\n            resolve(value);\n        }, (err) => {\n            clearTimeout(timeoutId);\n            reject(err);\n        });\n    });\n}\n//# sourceMappingURL=timeout.js.map","import { isAnnotationObject, isBaseImageObject, isMaskObject } from './public-types.js';\nimport { markAnnotationObject, markBaseImageObject, markMaskObject } from './editor-object-kind.js';\nimport { ImageLoadTimeoutError, StateRestoreError } from './errors.js';\nimport { cloneResolvedImageFilterConfig, DEFAULT_IMAGE_FILTER_CONFIG, hasActiveImageFilters, normalizeImageFilterConfigSnapshot, } from './image-filter-config.js';\nimport { isSupportedImageDataUrl } from '../utils/file.js';\nimport { withTimeout } from '../utils/timeout.js';\nconst DEFAULT_MAX_RESTORE_CANVAS_PIXELS = 50000000;\nconst DEFAULT_MAX_RESTORE_CANVAS_DIMENSION = 16384;\nconst DEFAULT_MAX_SNAPSHOT_BYTES = 50 * 1024 * 1024;\nconst DEFAULT_MAX_SNAPSHOT_OBJECTS = 5000;\nconst DEFAULT_MAX_PUBLIC_RESTORE_NESTING_DEPTH = 100;\nconst DEFAULT_STATE_RESTORE_TIMEOUT_MS = 30000;\nconst PUBLIC_RESTORE_IMAGE_SOURCE_KEYS = new Set(['src', 'source']);\nconst PUBLIC_RESTORE_FABRIC_OBJECT_KEYS = new Set(['clipPath', 'backgroundImage', 'overlayImage']);\nconst PUBLIC_RESTORE_FABRIC_OBJECT_ARRAY_KEYS = new Set(['objects']);\nconst ALLOWED_PUBLIC_RESTORE_OBJECT_TYPES = new Set([\n    'circle',\n    'ellipse',\n    'image',\n    'line',\n    'path',\n    'polygon',\n    'polyline',\n    'rect',\n    'text',\n    'textbox',\n]);\nexport const SNAPSHOT_CUSTOM_KEYS = Object.freeze([\n    'editorObjectKind',\n    'sessionObjectType',\n    'maskId',\n    'maskUid',\n    'maskName',\n    'isCropRect',\n    'maskLabel',\n    'originalAlpha',\n    'originalStroke',\n    'originalStrokeWidth',\n    'hasControls',\n    'selectable',\n    'strokeUniform',\n    'lockRotation',\n    'transparentCorners',\n    'borderColor',\n    'cornerColor',\n    'cornerSize',\n    'flipX',\n    'flipY',\n    'isMosaicPreview',\n    'annotationId',\n    'annotationType',\n    'shapeAnnotationKind',\n    'annotationName',\n    'annotationHidden',\n    'annotationLocked',\n    'annotationSelectable',\n    'annotationEvented',\n    'annotationHasControls',\n    'annotationEditable',\n    'overlayPersistentId',\n    'overlayMetadata',\n]);\nfunction readFiniteNumber(value) {\n    const numeric = Number(value);\n    return Number.isFinite(numeric) ? numeric : null;\n}\nfunction serializedTypeMatches(liveObject, jsonObject) {\n    const jsonType = typeof jsonObject.type === 'string' ? jsonObject.type.toLowerCase() : '';\n    const liveType = typeof liveObject.type === 'string' ? liveObject.type.toLowerCase() : '';\n    return !jsonType || liveType === jsonType;\n}\nfunction serializedPositionMatches(liveObject, jsonObject) {\n    var _a, _b;\n    const jsonLeft = readFiniteNumber(jsonObject.left);\n    const jsonTop = readFiniteNumber(jsonObject.top);\n    if (jsonLeft === null || jsonTop === null)\n        return true;\n    return (Math.abs(((_a = liveObject.left) !== null && _a !== void 0 ? _a : 0) - jsonLeft) < 0.5 &&\n        Math.abs(((_b = liveObject.top) !== null && _b !== void 0 ? _b : 0) - jsonTop) < 0.5);\n}\nfunction serializedNumberMatches(liveValue, jsonValue, fallback, tolerance) {\n    var _a;\n    const jsonNumber = readFiniteNumber(jsonValue);\n    if (jsonNumber === null)\n        return true;\n    const liveNumber = (_a = readFiniteNumber(liveValue)) !== null && _a !== void 0 ? _a : fallback;\n    return Math.abs(liveNumber - jsonNumber) < tolerance;\n}\nfunction serializedTransformMatches(liveObject, jsonObject) {\n    return (serializedNumberMatches(liveObject.angle, jsonObject.angle, 0, 0.5) &&\n        serializedNumberMatches(liveObject.scaleX, jsonObject.scaleX, 1, 0.0001) &&\n        serializedNumberMatches(liveObject.scaleY, jsonObject.scaleY, 1, 0.0001));\n}\nfunction serializedObjectMatches(liveObject, jsonObject) {\n    const live = liveObject;\n    if (typeof jsonObject.maskUid === 'string' && typeof live.maskUid === 'string') {\n        return live.maskUid === jsonObject.maskUid;\n    }\n    if (typeof jsonObject.maskId === 'number' && typeof live.maskId === 'number') {\n        return live.maskId === jsonObject.maskId;\n    }\n    if (typeof jsonObject.annotationId === 'number' && typeof live.annotationId === 'number') {\n        return live.annotationId === jsonObject.annotationId;\n    }\n    if (typeof jsonObject.sessionObjectType === 'string' &&\n        typeof live.sessionObjectType === 'string') {\n        return live.sessionObjectType === jsonObject.sessionObjectType;\n    }\n    if (typeof jsonObject.editorObjectKind === 'string' &&\n        typeof live.editorObjectKind === 'string' &&\n        live.editorObjectKind !== jsonObject.editorObjectKind) {\n        return false;\n    }\n    return (serializedTypeMatches(liveObject, jsonObject) &&\n        serializedPositionMatches(liveObject, jsonObject) &&\n        serializedTransformMatches(liveObject, jsonObject));\n}\nfunction findCanvasObjectForJson(canvasObjects, jsonObject, preferredIndex, consumedIndexes) {\n    const preferred = canvasObjects[preferredIndex];\n    if (preferred &&\n        !consumedIndexes.has(preferredIndex) &&\n        serializedObjectMatches(preferred, jsonObject)) {\n        consumedIndexes.add(preferredIndex);\n        return { object: preferred, index: preferredIndex };\n    }\n    const matchedIndex = canvasObjects.findIndex((candidate, index) => !consumedIndexes.has(index) && serializedObjectMatches(candidate, jsonObject));\n    if (matchedIndex < 0)\n        return null;\n    consumedIndexes.add(matchedIndex);\n    return { object: canvasObjects[matchedIndex], index: matchedIndex };\n}\nfunction copySnapshotCustomPropsFromCanvas(canvasObjects, jsonObjects) {\n    if (!Array.isArray(jsonObjects))\n        return;\n    const consumedIndexes = new Set();\n    for (let index = 0; index < jsonObjects.length; index += 1) {\n        const jsonObject = jsonObjects[index];\n        if (!jsonObject)\n            continue;\n        const match = findCanvasObjectForJson(canvasObjects, jsonObject, index, consumedIndexes);\n        if (!match)\n            continue;\n        const liveObject = match.object;\n        if (typeof liveObject.editorObjectKind === 'string') {\n            jsonObject.editorObjectKind = liveObject.editorObjectKind;\n        }\n        if (typeof liveObject.sessionObjectType === 'string') {\n            jsonObject.sessionObjectType = liveObject.sessionObjectType;\n        }\n        if (typeof liveObject.maskId === 'number')\n            jsonObject.maskId = liveObject.maskId;\n        if (typeof liveObject.maskUid === 'string')\n            jsonObject.maskUid = liveObject.maskUid;\n        if (typeof liveObject.maskName === 'string')\n            jsonObject.maskName = liveObject.maskName;\n        if (typeof liveObject.originalAlpha === 'number') {\n            jsonObject.originalAlpha = liveObject.originalAlpha;\n        }\n        if (liveObject.originalStroke !== undefined) {\n            jsonObject.originalStroke = liveObject.originalStroke;\n        }\n        if (typeof liveObject.originalStrokeWidth === 'number') {\n            jsonObject.originalStrokeWidth = liveObject.originalStrokeWidth;\n        }\n        if (typeof liveObject.hasControls === 'boolean') {\n            jsonObject.hasControls = liveObject.hasControls;\n        }\n        if (typeof liveObject.selectable === 'boolean') {\n            jsonObject.selectable = liveObject.selectable;\n        }\n        if (typeof liveObject.strokeUniform === 'boolean') {\n            jsonObject.strokeUniform = liveObject.strokeUniform;\n        }\n        if (typeof liveObject.lockRotation === 'boolean') {\n            jsonObject.lockRotation = liveObject.lockRotation;\n        }\n        if (typeof liveObject.transparentCorners === 'boolean') {\n            jsonObject.transparentCorners = liveObject.transparentCorners;\n        }\n        if (typeof liveObject.borderColor === 'string') {\n            jsonObject.borderColor = liveObject.borderColor;\n        }\n        if (typeof liveObject.cornerColor === 'string') {\n            jsonObject.cornerColor = liveObject.cornerColor;\n        }\n        if (typeof liveObject.cornerSize === 'number') {\n            jsonObject.cornerSize = liveObject.cornerSize;\n        }\n        if (typeof liveObject.flipX === 'boolean') {\n            jsonObject.flipX = liveObject.flipX;\n        }\n        if (typeof liveObject.flipY === 'boolean') {\n            jsonObject.flipY = liveObject.flipY;\n        }\n        if (liveObject.isCropRect === true)\n            jsonObject.isCropRect = true;\n        if (liveObject.maskLabel === true)\n            jsonObject.maskLabel = true;\n        if (liveObject.isMosaicPreview === true)\n            jsonObject.isMosaicPreview = true;\n        if (typeof liveObject.annotationId === 'number') {\n            jsonObject.annotationId = liveObject.annotationId;\n        }\n        if (typeof liveObject.annotationType === 'string') {\n            jsonObject.annotationType = liveObject.annotationType;\n        }\n        if (typeof liveObject.shapeAnnotationKind === 'string') {\n            jsonObject.shapeAnnotationKind = liveObject.shapeAnnotationKind;\n        }\n        if (typeof liveObject.annotationName === 'string') {\n            jsonObject.annotationName = liveObject.annotationName;\n        }\n        if (typeof liveObject.annotationHidden === 'boolean') {\n            jsonObject.annotationHidden = liveObject.annotationHidden;\n        }\n        if (typeof liveObject.annotationLocked === 'boolean') {\n            jsonObject.annotationLocked = liveObject.annotationLocked;\n        }\n        if (typeof liveObject.annotationSelectable === 'boolean') {\n            jsonObject.annotationSelectable = liveObject.annotationSelectable;\n        }\n        if (typeof liveObject.annotationEvented === 'boolean') {\n            jsonObject.annotationEvented = liveObject.annotationEvented;\n        }\n        if (typeof liveObject.annotationHasControls === 'boolean') {\n            jsonObject.annotationHasControls = liveObject.annotationHasControls;\n        }\n        if (typeof liveObject.annotationEditable === 'boolean') {\n            jsonObject.annotationEditable = liveObject.annotationEditable;\n        }\n        if (typeof liveObject.overlayPersistentId === 'string') {\n            jsonObject.overlayPersistentId = liveObject.overlayPersistentId;\n        }\n        if (liveObject.overlayMetadata !== undefined) {\n            jsonObject.overlayMetadata = liveObject.overlayMetadata;\n        }\n    }\n}\nfunction isActiveSelectionObject(object) {\n    if (!object)\n        return false;\n    const type = typeof object.type === 'string' ? object.type.toLowerCase() : '';\n    if (type === 'activeselection')\n        return true;\n    const isType = object.isType;\n    return (typeof isType === 'function' &&\n        (isType.call(object, 'ActiveSelection') || isType.call(object, 'activeSelection')));\n}\nexport function saveState(input) {\n    var _a, _b, _c, _d;\n    const { canvas, currentScale, currentRotation, baseImageScale } = input;\n    const activeObject = (_b = (_a = canvas).getActiveObject) === null || _b === void 0 ? void 0 : _b.call(_a);\n    const activeMaskId = activeObject && isMaskObject(activeObject)\n        ? activeObject.maskId\n        : typeof input.activeMaskId === 'number'\n            ? input.activeMaskId\n            : null;\n    const activeAnnotationId = activeObject && isAnnotationObject(activeObject)\n        ? activeObject.annotationId\n        : typeof input.activeAnnotationId === 'number'\n            ? input.activeAnnotationId\n            : null;\n    if (isActiveSelectionObject(activeObject)) {\n        canvas.discardActiveObject();\n    }\n    const jsonObj = canvas.toJSON(SNAPSHOT_CUSTOM_KEYS);\n    copySnapshotCustomPropsFromCanvas(canvas.getObjects(), jsonObj.objects);\n    if (Array.isArray(jsonObj.objects)) {\n        jsonObj.objects = jsonObj.objects.filter((o) => o.editorObjectKind !== 'session' &&\n            o.isCropRect !== true &&\n            o.maskLabel !== true &&\n            o.isMosaicPreview !== true);\n    }\n    jsonObj._editorState = {\n        currentScale,\n        currentRotation,\n        baseImageScale,\n        currentImageMimeType: (_c = input.currentImageMimeType) !== null && _c !== void 0 ? _c : null,\n        activeObjectKind: activeMaskId !== null ? 'mask' : activeAnnotationId !== null ? 'annotation' : null,\n    };\n    const imageFilterConfig = cloneResolvedImageFilterConfig((_d = input.imageFilterConfig) !== null && _d !== void 0 ? _d : DEFAULT_IMAGE_FILTER_CONFIG);\n    if (hasActiveImageFilters(imageFilterConfig)) {\n        jsonObj._editorState.imageFilterConfig = imageFilterConfig;\n    }\n    if (activeMaskId !== null)\n        jsonObj._editorState.activeMaskId = activeMaskId;\n    if (activeAnnotationId !== null) {\n        jsonObj._editorState.activeAnnotationId = activeAnnotationId;\n    }\n    return JSON.stringify(jsonObj);\n}\nexport async function loadFromState(input) {\n    var _a, _b, _c, _d, _e, _f, _g;\n    const { canvas, jsonString: snapshotInput, setCanvasSize } = input;\n    const restoreTrustLevel = (_a = input.restoreTrustLevel) !== null && _a !== void 0 ? _a : 'public';\n    const isPublicRestore = restoreTrustLevel === 'public';\n    let jsonString;\n    try {\n        jsonString =\n            typeof snapshotInput === 'string' ? snapshotInput : JSON.stringify(snapshotInput);\n    }\n    catch (error) {\n        throw new StateRestoreError('loadFromState: snapshot JSON is malformed.', error);\n    }\n    if (isPublicRestore) {\n        assertSnapshotByteSizeAllowed(jsonString, (_b = input.maxSnapshotBytes) !== null && _b !== void 0 ? _b : DEFAULT_MAX_SNAPSHOT_BYTES);\n    }\n    let json;\n    try {\n        json = JSON.parse(jsonString);\n    }\n    catch (error) {\n        throw new StateRestoreError('loadFromState: snapshot JSON is malformed.', error);\n    }\n    if (isPublicRestore) {\n        validatePublicSnapshot(json, {\n            maxSnapshotObjects: (_c = input.maxSnapshotObjects) !== null && _c !== void 0 ? _c : DEFAULT_MAX_SNAPSHOT_OBJECTS,\n        });\n    }\n    if (typeof json.width === 'number' &&\n        json.width > 0 &&\n        typeof json.height === 'number' &&\n        json.height > 0) {\n        assertRestoredCanvasSizeAllowed(json.width, json.height, (_d = input.maxCanvasPixels) !== null && _d !== void 0 ? _d : DEFAULT_MAX_RESTORE_CANVAS_PIXELS, isPublicRestore\n            ? ((_e = input.maxRestoreCanvasDimension) !== null && _e !== void 0 ? _e : DEFAULT_MAX_RESTORE_CANVAS_DIMENSION)\n            : null);\n        setCanvasSize(json.width, json.height);\n    }\n    const loadFromJsonPromise = canvas.loadFromJSON(json);\n    try {\n        await withTimeout(loadFromJsonPromise, DEFAULT_STATE_RESTORE_TIMEOUT_MS, 'canvas.loadFromJSON');\n    }\n    catch (error) {\n        if (error instanceof ImageLoadTimeoutError) {\n            throw new StateRestoreError('loadFromState: canvas.loadFromJSON timed out while restoring editor state.', error);\n        }\n        throw error;\n    }\n    const objects = canvas.getObjects();\n    restoreEditorObjectPropsFromJson(objects, (_f = json.objects) !== null && _f !== void 0 ? _f : []);\n    const editorState = json._editorState && typeof json._editorState === 'object'\n        ? {\n            currentScale: typeof json._editorState.currentScale === 'number'\n                ? json._editorState.currentScale\n                : 1,\n            currentRotation: typeof json._editorState.currentRotation === 'number'\n                ? json._editorState.currentRotation\n                : 0,\n            baseImageScale: typeof json._editorState.baseImageScale === 'number'\n                ? json._editorState.baseImageScale\n                : 1,\n        }\n        : null;\n    if (editorState && json._editorState && typeof json._editorState.activeMaskId === 'number') {\n        editorState.activeMaskId = json._editorState.activeMaskId;\n    }\n    if (editorState &&\n        json._editorState &&\n        typeof json._editorState.activeAnnotationId === 'number') {\n        editorState.activeAnnotationId = json._editorState.activeAnnotationId;\n    }\n    if (editorState && json._editorState && 'activeObjectKind' in json._editorState) {\n        const kind = json._editorState.activeObjectKind;\n        editorState.activeObjectKind =\n            kind === 'mask' || kind === 'annotation' || kind === null ? kind : null;\n    }\n    if (editorState && json._editorState && 'currentImageMimeType' in json._editorState) {\n        const mimeType = json._editorState.currentImageMimeType;\n        editorState.currentImageMimeType =\n            mimeType === 'image/jpeg' || mimeType === 'image/png' || mimeType === 'image/webp'\n                ? mimeType\n                : null;\n    }\n    if (editorState && json._editorState && 'imageFilterConfig' in json._editorState) {\n        editorState.imageFilterConfig = normalizeImageFilterConfigSnapshot(json._editorState.imageFilterConfig);\n    }\n    const maxMaskId = objects\n        .filter(isMaskObject)\n        .reduce((max, maskObject) => Math.max(max, maskObject.maskId), 0);\n    const maxAnnotationId = objects\n        .filter(isAnnotationObject)\n        .reduce((max, annotationObject) => Math.max(max, annotationObject.annotationId), 0);\n    const masks = objects.filter(isMaskObject);\n    const annotations = objects.filter(isAnnotationObject);\n    const originalImage = (_g = objects.find(isBaseImageObject)) !== null && _g !== void 0 ? _g : null;\n    return {\n        editorState,\n        maxMaskId,\n        maxAnnotationId,\n        originalImage,\n        objects,\n        masks,\n        annotations,\n        jsonString,\n    };\n}\nfunction assertRestoredCanvasSizeAllowed(width, height, maxCanvasPixels, maxCanvasDimension) {\n    const safeMaxCanvasPixels = Number.isFinite(maxCanvasPixels) && maxCanvasPixels > 0\n        ? Math.floor(maxCanvasPixels)\n        : DEFAULT_MAX_RESTORE_CANVAS_PIXELS;\n    const safeMaxCanvasDimension = maxCanvasDimension !== null && Number.isFinite(maxCanvasDimension) && maxCanvasDimension > 0\n        ? Math.floor(maxCanvasDimension)\n        : null;\n    if (safeMaxCanvasDimension !== null &&\n        (width > safeMaxCanvasDimension || height > safeMaxCanvasDimension)) {\n        throw new StateRestoreError(`loadFromState: snapshot canvas size ${width}x${height} exceeds maxRestoreCanvasDimension (${safeMaxCanvasDimension}).`);\n    }\n    const pixelCount = width * height;\n    if (!Number.isFinite(pixelCount) || pixelCount > safeMaxCanvasPixels) {\n        throw new StateRestoreError(`loadFromState: snapshot canvas size ${width}x${height} exceeds maxCanvasPixels (${safeMaxCanvasPixels}).`);\n    }\n}\nfunction getUtf8ByteLength(value) {\n    if (typeof TextEncoder === 'function') {\n        return new TextEncoder().encode(value).byteLength;\n    }\n    return value.length;\n}\nfunction toPositiveIntegerLimit(value, fallback) {\n    return Number.isFinite(value) && value > 0 ? Math.floor(value) : fallback;\n}\nfunction assertSnapshotByteSizeAllowed(jsonString, maxSnapshotBytes) {\n    const safeMaxSnapshotBytes = toPositiveIntegerLimit(maxSnapshotBytes, DEFAULT_MAX_SNAPSHOT_BYTES);\n    if (jsonString.length > safeMaxSnapshotBytes) {\n        throw new StateRestoreError(`loadFromState: snapshot JSON size exceeds maxSnapshotBytes (${safeMaxSnapshotBytes}).`);\n    }\n    const worstCaseUtf8Bytes = jsonString.length * 3;\n    if (worstCaseUtf8Bytes <= safeMaxSnapshotBytes)\n        return;\n    const byteLength = getUtf8ByteLength(jsonString);\n    if (byteLength > safeMaxSnapshotBytes) {\n        throw new StateRestoreError(`loadFromState: snapshot JSON size ${byteLength} bytes exceeds maxSnapshotBytes (${safeMaxSnapshotBytes}).`);\n    }\n}\nfunction validatePublicSnapshot(json, options) {\n    var _a;\n    if (json.objects !== undefined && !Array.isArray(json.objects)) {\n        throw new StateRestoreError('loadFromState: snapshot objects must be an array.');\n    }\n    const objects = (_a = json.objects) !== null && _a !== void 0 ? _a : [];\n    const safeMaxSnapshotObjects = toPositiveIntegerLimit(options.maxSnapshotObjects, DEFAULT_MAX_SNAPSHOT_OBJECTS);\n    if (objects.length > safeMaxSnapshotObjects) {\n        throw new StateRestoreError(`loadFromState: snapshot contains ${objects.length} objects, exceeding maxSnapshotObjects (${safeMaxSnapshotObjects}).`);\n    }\n    const context = {\n        maxSnapshotObjects: safeMaxSnapshotObjects,\n        objectCount: 0,\n        seen: new WeakSet(),\n        countedFabricObjects: new WeakSet(),\n    };\n    objects.forEach((object, index) => validatePublicSnapshotValue(object, `objects[${index}]`, {\n        validateFabricObject: true,\n        allowEditorOwnedCustomMask: true,\n        arrayEntriesAreFabricObjects: false,\n    }, context, 0));\n    for (const [key, value] of Object.entries(json)) {\n        if (key === 'objects')\n            continue;\n        validatePublicSnapshotValue(value, key, {\n            validateFabricObject: PUBLIC_RESTORE_FABRIC_OBJECT_KEYS.has(key),\n            allowEditorOwnedCustomMask: false,\n            arrayEntriesAreFabricObjects: PUBLIC_RESTORE_FABRIC_OBJECT_ARRAY_KEYS.has(key),\n        }, context, 0);\n    }\n}\nfunction validatePublicSnapshotValue(value, path, options, context, depth) {\n    if (depth > DEFAULT_MAX_PUBLIC_RESTORE_NESTING_DEPTH) {\n        throw new StateRestoreError(`loadFromState: snapshot field \"${path}\" exceeds max nested object depth (${DEFAULT_MAX_PUBLIC_RESTORE_NESTING_DEPTH}).`);\n    }\n    if (!value || typeof value !== 'object')\n        return;\n    const alreadySeen = context.seen.has(value);\n    if (!alreadySeen)\n        context.seen.add(value);\n    if (options.validateFabricObject) {\n        validatePublicSnapshotFabricObjectPayload(value, path, options.allowEditorOwnedCustomMask, context);\n    }\n    if (alreadySeen)\n        return;\n    if (Array.isArray(value)) {\n        value.forEach((entry, entryIndex) => validatePublicSnapshotValue(entry, `${path}[${entryIndex}]`, {\n            validateFabricObject: options.arrayEntriesAreFabricObjects,\n            allowEditorOwnedCustomMask: false,\n            arrayEntriesAreFabricObjects: false,\n        }, context, depth + 1));\n        return;\n    }\n    for (const [key, nestedValue] of Object.entries(value)) {\n        const nestedPath = path ? `${path}.${key}` : key;\n        if (typeof nestedValue === 'string' &&\n            nestedValue.trim() !== '' &&\n            isPublicRestoreImageSourceKey(key) &&\n            !isSupportedImageDataUrl(nestedValue)) {\n            throw new StateRestoreError(`loadFromState: snapshot field \"${nestedPath}\" must use a supported data URL source.`);\n        }\n        validatePublicSnapshotValue(nestedValue, nestedPath, {\n            validateFabricObject: shouldValidatePublicRestoreNestedFabricObject(key, nestedValue),\n            allowEditorOwnedCustomMask: false,\n            arrayEntriesAreFabricObjects: PUBLIC_RESTORE_FABRIC_OBJECT_ARRAY_KEYS.has(key),\n        }, context, depth + 1);\n    }\n}\nfunction validatePublicSnapshotFabricObjectPayload(value, path, allowEditorOwnedCustomMask, context) {\n    if (!value || typeof value !== 'object' || Array.isArray(value)) {\n        throw new StateRestoreError(`loadFromState: snapshot field \"${path}\" is invalid.`);\n    }\n    if (!context.countedFabricObjects.has(value)) {\n        context.countedFabricObjects.add(value);\n        context.objectCount += 1;\n        if (context.objectCount > context.maxSnapshotObjects) {\n            throw new StateRestoreError(`loadFromState: snapshot contains more than ${context.maxSnapshotObjects} Fabric objects.`);\n        }\n    }\n    const object = value;\n    const type = typeof object.type === 'string' ? object.type.toLowerCase() : '';\n    if (type && ALLOWED_PUBLIC_RESTORE_OBJECT_TYPES.has(type))\n        return;\n    if (allowEditorOwnedCustomMask && isPublicRestoreEditorOwnedCustomMaskPayload(object))\n        return;\n    const typePath = path ? `${path}.type` : 'type';\n    if (!type) {\n        throw new StateRestoreError(`loadFromState: snapshot field \"${typePath}\" must be a supported Fabric type.`);\n    }\n    throw new StateRestoreError(`loadFromState: snapshot field \"${typePath}\" has unsupported Fabric type \"${String(object.type)}\".`);\n}\nfunction shouldValidatePublicRestoreNestedFabricObject(key, value) {\n    if (PUBLIC_RESTORE_FABRIC_OBJECT_KEYS.has(key))\n        return true;\n    return isPublicRestoreImageSourceKey(key) && hasFabricObjectType(value);\n}\nfunction hasFabricObjectType(value) {\n    return (!!value && typeof value === 'object' && typeof value.type === 'string');\n}\nfunction isPublicRestoreEditorOwnedCustomMaskPayload(value) {\n    if (!isMaskObject(value))\n        return false;\n    const candidate = value;\n    const expectedMaskUid = typeof candidate.maskId === 'number' ? `mask-${candidate.maskId}` : null;\n    return (Number.isInteger(candidate.maskId) &&\n        typeof candidate.maskId === 'number' &&\n        candidate.maskId > 0 &&\n        typeof candidate.maskUid === 'string' &&\n        candidate.maskUid === expectedMaskUid &&\n        typeof candidate.maskName === 'string' &&\n        candidate.maskName.trim() !== '' &&\n        typeof candidate.originalAlpha === 'number' &&\n        Number.isFinite(candidate.originalAlpha));\n}\nfunction isPublicRestoreImageSourceKey(key) {\n    const normalized = key.toLowerCase();\n    return (PUBLIC_RESTORE_IMAGE_SOURCE_KEYS.has(normalized) ||\n        normalized.endsWith('src') ||\n        normalized.endsWith('source'));\n}\nfunction restoreEditorObjectPropsFromJson(canvasObjs, jsonObjs) {\n    var _a, _b, _c, _d;\n    const consumedMetadataIndexes = new Set();\n    jsonObjs.forEach((jObj, index) => {\n        if (jObj.editorObjectKind !== 'baseImage' &&\n            jObj.editorObjectKind !== 'annotation' &&\n            jObj.editorObjectKind !== 'session') {\n            return;\n        }\n        const match = findCanvasObjectForJson(canvasObjs, jObj, index, consumedMetadataIndexes);\n        const canvasObj = match === null || match === void 0 ? void 0 : match.object;\n        if (!canvasObj)\n            return;\n        if (jObj.editorObjectKind === 'baseImage') {\n            markBaseImageObject(canvasObj);\n            return;\n        }\n        if (jObj.editorObjectKind === 'annotation' &&\n            typeof jObj.annotationId === 'number' &&\n            typeof jObj.annotationType === 'string' &&\n            typeof jObj.annotationName === 'string') {\n            const annotationType = jObj.annotationType === 'draw'\n                ? 'draw'\n                : jObj.annotationType === 'shape'\n                    ? 'shape'\n                    : 'text';\n            const shapeAnnotationKind = jObj.shapeAnnotationKind === 'line' || jObj.shapeAnnotationKind === 'arrow'\n                ? jObj.shapeAnnotationKind\n                : 'rect';\n            markAnnotationObject(canvasObj, {\n                annotationId: jObj.annotationId,\n                annotationType,\n                annotationName: jObj.annotationName,\n                annotationHidden: typeof jObj.annotationHidden === 'boolean' ? jObj.annotationHidden : false,\n                annotationLocked: typeof jObj.annotationLocked === 'boolean' ? jObj.annotationLocked : false,\n                annotationSelectable: typeof jObj.annotationSelectable === 'boolean'\n                    ? jObj.annotationSelectable\n                    : undefined,\n                annotationEvented: typeof jObj.annotationEvented === 'boolean'\n                    ? jObj.annotationEvented\n                    : undefined,\n                annotationHasControls: typeof jObj.annotationHasControls === 'boolean'\n                    ? jObj.annotationHasControls\n                    : undefined,\n                annotationEditable: typeof jObj.annotationEditable === 'boolean'\n                    ? jObj.annotationEditable\n                    : undefined,\n                shapeAnnotationKind: annotationType === 'shape' ? shapeAnnotationKind : undefined,\n            });\n            if (typeof jObj.overlayPersistentId === 'string') {\n                canvasObj.overlayPersistentId =\n                    jObj.overlayPersistentId;\n            }\n            if (jObj.overlayMetadata !== undefined) {\n                canvasObj.overlayMetadata = jObj.overlayMetadata;\n            }\n            return;\n        }\n        if (jObj.editorObjectKind === 'session' && typeof jObj.sessionObjectType === 'string') {\n            canvasObj.editorObjectKind = 'session';\n            canvasObj.sessionObjectType = jObj.sessionObjectType;\n        }\n    });\n    const consumedCanvasIndexes = new Set();\n    const canvasIndexesByMaskUid = new Map();\n    canvasObjs.forEach((canvasObj, index) => {\n        const maskUid = canvasObj.maskUid;\n        if (typeof maskUid !== 'string')\n            return;\n        const indexes = canvasIndexesByMaskUid.get(maskUid);\n        if (indexes) {\n            indexes.push(index);\n        }\n        else {\n            canvasIndexesByMaskUid.set(maskUid, [index]);\n        }\n    });\n    const takeUnconsumedCanvasIndex = (indexes) => {\n        if (!indexes)\n            return -1;\n        while (indexes.length > 0) {\n            const index = indexes.shift();\n            if (!consumedCanvasIndexes.has(index))\n                return index;\n        }\n        return -1;\n    };\n    for (const jObj of jsonObjs) {\n        if (jObj.editorObjectKind !== 'mask' || typeof jObj.maskId !== 'number')\n            continue;\n        const jType = String((_a = jObj.type) !== null && _a !== void 0 ? _a : '');\n        const jLeft = Number((_b = jObj.left) !== null && _b !== void 0 ? _b : 0);\n        const jTop = Number((_c = jObj.top) !== null && _c !== void 0 ? _c : 0);\n        const jUid = typeof jObj.maskUid === 'string' ? jObj.maskUid : null;\n        let matchIndex = -1;\n        if (jUid) {\n            matchIndex = takeUnconsumedCanvasIndex(canvasIndexesByMaskUid.get(jUid));\n        }\n        if (matchIndex < 0) {\n            matchIndex = canvasObjs.findIndex((o, index) => {\n                var _a, _b;\n                if (consumedCanvasIndexes.has(index))\n                    return false;\n                if (jType && o.type !== jType)\n                    return false;\n                return (Math.abs(((_a = o.left) !== null && _a !== void 0 ? _a : 0) - jLeft) < 0.5 &&\n                    Math.abs(((_b = o.top) !== null && _b !== void 0 ? _b : 0) - jTop) < 0.5 &&\n                    serializedTransformMatches(o, jObj));\n            });\n        }\n        if (matchIndex < 0)\n            continue;\n        consumedCanvasIndexes.add(matchIndex);\n        const match = canvasObjs[matchIndex];\n        const maskObject = match;\n        const originalStroke = 'originalStroke' in jObj\n            ? jObj.originalStroke\n            : undefined;\n        markMaskObject(maskObject, {\n            maskId: jObj.maskId,\n            maskUid: typeof jObj.maskUid === 'string' ? jObj.maskUid : `mask-${jObj.maskId}`,\n            maskName: typeof jObj.maskName === 'string' ? jObj.maskName : '',\n            originalAlpha: typeof jObj.originalAlpha === 'number'\n                ? jObj.originalAlpha\n                : ((_d = maskObject.opacity) !== null && _d !== void 0 ? _d : 0.5),\n            originalStroke,\n            originalStrokeWidth: typeof jObj.originalStrokeWidth === 'number' ? jObj.originalStrokeWidth : undefined,\n        });\n        if ('originalStroke' in jObj) {\n            maskObject.originalStroke = jObj.originalStroke;\n        }\n        if (typeof jObj.originalStrokeWidth === 'number') {\n            maskObject.originalStrokeWidth = jObj.originalStrokeWidth;\n        }\n        if (typeof jObj.hasControls === 'boolean') {\n            maskObject.hasControls = jObj.hasControls;\n        }\n        if (typeof jObj.selectable === 'boolean') {\n            maskObject.selectable = jObj.selectable;\n        }\n        if (typeof jObj.strokeUniform === 'boolean') {\n            maskObject.strokeUniform = jObj.strokeUniform;\n        }\n        if (typeof jObj.lockRotation === 'boolean') {\n            maskObject.lockRotation = jObj.lockRotation;\n        }\n        if (typeof jObj.transparentCorners === 'boolean') {\n            maskObject.transparentCorners = jObj.transparentCorners;\n        }\n        if (typeof jObj.borderColor === 'string') {\n            maskObject.borderColor = jObj.borderColor;\n        }\n        if (typeof jObj.cornerColor === 'string') {\n            maskObject.cornerColor = jObj.cornerColor;\n        }\n        if (typeof jObj.cornerSize === 'number') {\n            maskObject.cornerSize = jObj.cornerSize;\n        }\n        if (typeof jObj.overlayPersistentId === 'string') {\n            maskObject.overlayPersistentId = jObj.overlayPersistentId;\n        }\n        if (jObj.overlayMetadata !== undefined) {\n            maskObject.overlayMetadata = jObj.overlayMetadata;\n        }\n    }\n    jsonObjs.forEach((jObj, index) => {\n        if (jObj.maskLabel !== true)\n            return;\n        const canvasObj = canvasObjs[index];\n        if (canvasObj) {\n            canvasObj.maskLabel = true;\n        }\n    });\n}\n//# sourceMappingURL=state-serializer.js.map","import { isMaskObject } from '../core/public-types.js';\nconst SELECTED_STROKE = '#ff0000';\nconst SELECTED_STROKE_WIDTH = 1;\nconst HOVER_STROKE = '#ff5500';\nconst HOVER_STROKE_WIDTH = 2;\nconst HOVER_OPACITY_BUMP = 0.2;\nconst DEFAULT_STROKE_FALLBACK = '#ccc';\nconst DEFAULT_STROKE_WIDTH_FALLBACK = 1;\nconst DEFAULT_ALPHA_FALLBACK = 0.5;\nexport function getMaskNormalStyle(mask) {\n    var _a;\n    const strokeWidth = Number(mask.originalStrokeWidth);\n    const opacity = Number(mask.originalAlpha);\n    return {\n        stroke: (_a = mask.originalStroke) !== null && _a !== void 0 ? _a : DEFAULT_STROKE_FALLBACK,\n        strokeWidth: Number.isFinite(strokeWidth) ? strokeWidth : DEFAULT_STROKE_WIDTH_FALLBACK,\n        opacity: Number.isFinite(opacity) ? opacity : DEFAULT_ALPHA_FALLBACK,\n    };\n}\nexport function getMaskHoverStyle(mask) {\n    const opacity = Number(mask.originalAlpha);\n    const baseAlpha = Number.isFinite(opacity) ? opacity : DEFAULT_ALPHA_FALLBACK;\n    return {\n        stroke: HOVER_STROKE,\n        strokeWidth: HOVER_STROKE_WIDTH,\n        opacity: Math.min(baseAlpha + HOVER_OPACITY_BUMP, 1),\n    };\n}\nexport function applyMaskSelectedStyle(mask) {\n    mask.set({ stroke: SELECTED_STROKE, strokeWidth: SELECTED_STROKE_WIDTH });\n}\nexport function applyMaskUnselectedStyle(mask) {\n    var _a;\n    const strokeWidth = Number(mask.originalStrokeWidth);\n    mask.set({\n        stroke: (_a = mask.originalStroke) !== null && _a !== void 0 ? _a : DEFAULT_STROKE_FALLBACK,\n        strokeWidth: Number.isFinite(strokeWidth) ? strokeWidth : DEFAULT_STROKE_WIDTH_FALLBACK,\n    });\n}\nexport function attachMaskHoverHandlers(mask) {\n    const tagged = mask;\n    const mouseover = () => {\n        var _a;\n        tagged.set(getMaskHoverStyle(tagged));\n        (_a = tagged.canvas) === null || _a === void 0 ? void 0 : _a.requestRenderAll();\n    };\n    const mouseout = () => {\n        var _a;\n        tagged.set(getMaskNormalStyle(tagged));\n        (_a = tagged.canvas) === null || _a === void 0 ? void 0 : _a.requestRenderAll();\n    };\n    tagged.on('mouseover', mouseover);\n    tagged.on('mouseout', mouseout);\n    tagged.imageEditorMaskHandlers = { mouseover, mouseout };\n}\nexport function reattachMaskHoverHandlers(mask) {\n    var _a;\n    const tagged = mask;\n    if (tagged.imageEditorMaskHandlers) {\n        try {\n            tagged.off('mouseover', tagged.imageEditorMaskHandlers.mouseover);\n            tagged.off('mouseout', tagged.imageEditorMaskHandlers.mouseout);\n        }\n        catch {\n        }\n        delete tagged.imageEditorMaskHandlers;\n    }\n    const patch = {};\n    if (!Number.isFinite(Number(tagged.originalAlpha))) {\n        const opacity = Number(tagged.opacity);\n        patch.originalAlpha = Number.isFinite(opacity) ? opacity : DEFAULT_ALPHA_FALLBACK;\n    }\n    if (tagged.originalStroke == null) {\n        patch.originalStroke = (_a = tagged.stroke) !== null && _a !== void 0 ? _a : DEFAULT_STROKE_FALLBACK;\n    }\n    if (!Number.isFinite(Number(tagged.originalStrokeWidth))) {\n        const sw = Number(tagged.strokeWidth);\n        patch.originalStrokeWidth = Number.isFinite(sw) ? sw : DEFAULT_STROKE_WIDTH_FALLBACK;\n    }\n    if (Object.keys(patch).length > 0)\n        tagged.set(patch);\n    attachMaskHoverHandlers(tagged);\n}\nexport function detachMaskHoverHandlers(mask) {\n    const tagged = mask;\n    if (!tagged.imageEditorMaskHandlers)\n        return;\n    try {\n        tagged.off('mouseover', tagged.imageEditorMaskHandlers.mouseover);\n        tagged.off('mouseout', tagged.imageEditorMaskHandlers.mouseout);\n    }\n    catch {\n    }\n    delete tagged.imageEditorMaskHandlers;\n}\nexport function captureMaskStyleBackup(mask) {\n    var _a, _b, _c, _d, _e, _f, _g;\n    return {\n        object: mask,\n        opacity: (_a = mask.opacity) !== null && _a !== void 0 ? _a : 1,\n        fill: ((_b = mask.fill) !== null && _b !== void 0 ? _b : null),\n        strokeWidth: (_c = mask.strokeWidth) !== null && _c !== void 0 ? _c : 0,\n        stroke: ((_d = mask.stroke) !== null && _d !== void 0 ? _d : null),\n        selectable: (_e = mask.selectable) !== null && _e !== void 0 ? _e : true,\n        evented: (_f = mask.evented) !== null && _f !== void 0 ? _f : true,\n        lockRotation: (_g = mask.lockRotation) !== null && _g !== void 0 ? _g : false,\n    };\n}\nexport function restoreMaskStyleBackup(backup) {\n    try {\n        backup.object.set({\n            opacity: backup.opacity,\n            fill: backup.fill,\n            strokeWidth: backup.strokeWidth,\n            stroke: backup.stroke,\n            selectable: backup.selectable,\n            evented: backup.evented,\n            lockRotation: backup.lockRotation,\n        });\n        if (typeof backup.object.setCoords === 'function') {\n            backup.object.setCoords();\n        }\n    }\n    catch {\n    }\n}\nexport function withNormalizedMaskStyles(context, callback) {\n    if (!context.canvas)\n        return callback();\n    const masks = context.canvas.getObjects().filter(isMaskObject);\n    const patches = [];\n    try {\n        for (const mask of masks) {\n            const normal = getMaskNormalStyle(mask);\n            const snapshot = {};\n            const stylePatch = {};\n            Object.keys(normal).forEach((key) => {\n                const live = mask[key];\n                if (live !== normal[key]) {\n                    snapshot[key] = live;\n                    stylePatch[key] = normal[key];\n                }\n            });\n            if (Object.keys(stylePatch).length === 0)\n                continue;\n            patches.push({ object: mask, snapshot });\n            mask.set(stylePatch);\n        }\n        return callback();\n    }\n    finally {\n        for (const patch of patches) {\n            try {\n                patch.object.set(patch.snapshot);\n            }\n            catch {\n            }\n        }\n    }\n}\nexport async function withMaskStyleBackup(context, mutator, callback) {\n    if (!context.canvas)\n        return await callback();\n    const masks = context.canvas.getObjects().filter(isMaskObject);\n    const backups = masks.map(captureMaskStyleBackup);\n    try {\n        masks.forEach((mask, index) => mutator(mask, index));\n        return await callback();\n    }\n    finally {\n        for (const backup of backups)\n            restoreMaskStyleBackup(backup);\n    }\n}\nexport function applyCropHideMaskStyle(mask) {\n    try {\n        mask.set({ opacity: 0, evented: false, selectable: false });\n    }\n    catch {\n    }\n}\n//# sourceMappingURL=mask-style.js.map","export function isAnnotationLocked(annotation) {\n    return annotation.annotationLocked === true;\n}\nexport function isAnnotationUnlocked(annotation) {\n    return !isAnnotationLocked(annotation);\n}\n//# sourceMappingURL=annotation-lock.js.map","import { isTextAnnotationObject, } from '../core/public-types.js';\nimport { isAnnotationLocked } from './annotation-lock.js';\nfunction setObjectProps(object, props) {\n    object.set(props);\n}\nfunction readBoolean(value, fallback) {\n    return typeof value === 'boolean' ? value : fallback;\n}\nfunction getBaseSelectable(annotation) {\n    return readBoolean(annotation.annotationSelectable, readBoolean(annotation.selectable, true));\n}\nfunction getBaseEvented(annotation) {\n    return readBoolean(annotation.annotationEvented, readBoolean(annotation.evented, true));\n}\nfunction getBaseHasControls(annotation) {\n    return readBoolean(annotation.annotationHasControls, readBoolean(annotation.hasControls, true));\n}\nfunction getBaseEditable(annotation) {\n    return readBoolean(annotation.annotationEditable, readBoolean(annotation.editable, true));\n}\nfunction syncTextEditability(annotation, editable) {\n    const textObject = annotation;\n    textObject.editable = editable;\n}\nfunction ensureBaseInteractivityMetadata(annotation) {\n    if (typeof annotation.annotationSelectable !== 'boolean') {\n        annotation.annotationSelectable = readBoolean(annotation.selectable, true);\n    }\n    if (typeof annotation.annotationEvented !== 'boolean') {\n        annotation.annotationEvented = readBoolean(annotation.evented, true);\n    }\n    if (typeof annotation.annotationHasControls !== 'boolean') {\n        annotation.annotationHasControls = readBoolean(annotation.hasControls, true);\n    }\n    if (isTextAnnotationObject(annotation) && typeof annotation.annotationEditable !== 'boolean') {\n        annotation.annotationEditable = getBaseEditable(annotation);\n    }\n}\nexport function syncAnnotationRuntimeState(annotation) {\n    var _a, _b;\n    const hidden = annotation.annotationHidden === true;\n    const locked = isAnnotationLocked(annotation);\n    if (locked) {\n        ensureBaseInteractivityMetadata(annotation);\n        setObjectProps(annotation, {\n            visible: !hidden,\n            selectable: false,\n            evented: false,\n            hasControls: false,\n            lockMovementX: true,\n            lockMovementY: true,\n            lockScalingX: true,\n            lockScalingY: true,\n            lockRotation: true,\n        });\n        if (isTextAnnotationObject(annotation)) {\n            syncTextEditability(annotation, false);\n        }\n        (_a = annotation.setCoords) === null || _a === void 0 ? void 0 : _a.call(annotation);\n        return;\n    }\n    setObjectProps(annotation, {\n        visible: !hidden,\n        selectable: getBaseSelectable(annotation),\n        evented: getBaseEvented(annotation),\n        hasControls: getBaseHasControls(annotation),\n        lockMovementX: false,\n        lockMovementY: false,\n        lockScalingX: false,\n        lockScalingY: false,\n        lockRotation: false,\n    });\n    if (isTextAnnotationObject(annotation)) {\n        syncTextEditability(annotation, getBaseEditable(annotation));\n    }\n    (_b = annotation.setCoords) === null || _b === void 0 ? void 0 : _b.call(annotation);\n}\nexport function syncAnnotationRuntimeStates(annotations) {\n    annotations.forEach(syncAnnotationRuntimeState);\n}\n//# sourceMappingURL=annotation-style.js.map","import { isBaseImageObject, isEditableOverlayObject, isSessionObject, } from './public-types.js';\nfunction isLegacySessionObject(object) {\n    const candidate = object;\n    return (candidate.isCropRect === true ||\n        candidate.maskLabel === true ||\n        candidate.isMosaicPreview === true);\n}\nfunction moveObjectTo(canvas, object, index) {\n    const canvasWithLayerApi = canvas;\n    if (typeof canvasWithLayerApi.moveObjectTo === 'function') {\n        canvasWithLayerApi.moveObjectTo(object, index);\n        return;\n    }\n    try {\n        canvas.remove(object);\n        canvas.insertAt(index, object);\n    }\n    catch {\n        canvas.add(object);\n    }\n}\nfunction ensureOnCanvas(canvas, object) {\n    if (!canvas.getObjects().includes(object)) {\n        canvas.add(object);\n    }\n}\nfunction withoutObject(canvas, object) {\n    return canvas.getObjects().filter((candidate) => candidate !== object);\n}\nfunction findFirstSessionIndex(objects) {\n    return objects.findIndex((object) => isSessionObject(object) || isLegacySessionObject(object));\n}\nfunction getOrderedGroups(canvas) {\n    const baseImages = [];\n    const overlays = [];\n    const sessions = [];\n    const others = [];\n    for (const object of canvas.getObjects()) {\n        if (isBaseImageObject(object)) {\n            baseImages.push(object);\n        }\n        else if (isEditableOverlayObject(object)) {\n            overlays.push(object);\n        }\n        else if (isSessionObject(object) || isLegacySessionObject(object)) {\n            sessions.push(object);\n        }\n        else {\n            others.push(object);\n        }\n    }\n    return { baseImages, overlays, sessions, others };\n}\nexport function normalizeLayerOrder(canvas) {\n    const groups = getOrderedGroups(canvas);\n    const ordered = [\n        ...groups.baseImages,\n        ...groups.others,\n        ...groups.overlays,\n        ...groups.sessions,\n    ];\n    ordered.forEach((object, index) => {\n        moveObjectTo(canvas, object, index);\n    });\n}\nexport function placeBaseImageObject(canvas, image) {\n    ensureOnCanvas(canvas, image);\n    const targetIndex = withoutObject(canvas, image).filter(isBaseImageObject).length;\n    moveObjectTo(canvas, image, targetIndex);\n}\nexport function placeMaskObject(canvas, mask) {\n    ensureOnCanvas(canvas, mask);\n    const objects = withoutObject(canvas, mask);\n    const firstSessionIndex = findFirstSessionIndex(objects);\n    moveObjectTo(canvas, mask, firstSessionIndex === -1 ? objects.length : firstSessionIndex);\n}\nexport function placeAnnotationObject(canvas, annotation) {\n    ensureOnCanvas(canvas, annotation);\n    const objects = withoutObject(canvas, annotation);\n    const firstSessionIndex = findFirstSessionIndex(objects);\n    moveObjectTo(canvas, annotation, firstSessionIndex === -1 ? objects.length : firstSessionIndex);\n}\nexport function placeSessionObject(canvas, sessionObject) {\n    ensureOnCanvas(canvas, sessionObject);\n    moveObjectTo(canvas, sessionObject, withoutObject(canvas, sessionObject).length);\n}\nexport function getEditableOverlayRange(canvas) {\n    const objects = canvas.getObjects();\n    const overlayIndexes = objects\n        .map((object, index) => ({ object, index }))\n        .filter(({ object }) => isEditableOverlayObject(object));\n    if (overlayIndexes.length === 0)\n        return { start: -1, end: -1, overlays: [] };\n    return {\n        start: overlayIndexes[0].index,\n        end: overlayIndexes[overlayIndexes.length - 1].index,\n        overlays: overlayIndexes.map(({ object }) => object),\n    };\n}\n//# sourceMappingURL=layer-order.js.map","export function hasMeaningfulCanvasRegion(rect, canvasWidth, canvasHeight) {\n    const left = Number(rect.left);\n    const top = Number(rect.top);\n    const width = Number(rect.width);\n    const height = Number(rect.height);\n    if (!Number.isFinite(left) ||\n        !Number.isFinite(top) ||\n        !Number.isFinite(width) ||\n        !Number.isFinite(height) ||\n        width <= 0 ||\n        height <= 0) {\n        return false;\n    }\n    const right = left + width;\n    const bottom = top + height;\n    if (!Number.isFinite(right) || !Number.isFinite(bottom))\n        return false;\n    const safeCanvasWidth = Number(canvasWidth);\n    const safeCanvasHeight = Number(canvasHeight);\n    if (!Number.isFinite(safeCanvasWidth) ||\n        !Number.isFinite(safeCanvasHeight) ||\n        safeCanvasWidth <= 0 ||\n        safeCanvasHeight <= 0) {\n        return true;\n    }\n    const overlapWidth = Math.min(right, safeCanvasWidth) - Math.max(left, 0);\n    const overlapHeight = Math.min(bottom, safeCanvasHeight) - Math.max(top, 0);\n    return overlapWidth > 0 && overlapHeight > 0;\n}\nexport function getClampedCanvasRegion(rect, canvasWidth, canvasHeight, options = {}) {\n    const safeLeft = Number.isFinite(rect.left) ? rect.left : 0;\n    const safeTop = Number.isFinite(rect.top) ? rect.top : 0;\n    const safeWidth = Math.max(0, Number.isFinite(rect.width) ? rect.width : 0);\n    const safeHeight = Math.max(0, Number.isFinite(rect.height) ? rect.height : 0);\n    const includePartialPixels = options.includePartialPixels !== false;\n    const roundEnd = includePartialPixels ? Math.ceil : Math.floor;\n    const hasCanvasWidth = Number.isFinite(canvasWidth);\n    const hasCanvasHeight = Number.isFinite(canvasHeight);\n    const safeCanvasWidth = hasCanvasWidth\n        ? Math.max(1, Math.round(Number(canvasWidth)))\n        : Number.POSITIVE_INFINITY;\n    const safeCanvasHeight = hasCanvasHeight\n        ? Math.max(1, Math.round(Number(canvasHeight)))\n        : Number.POSITIVE_INFINITY;\n    const left = Math.min(safeCanvasWidth - 1, Math.max(0, Math.floor(safeLeft)));\n    const top = Math.min(safeCanvasHeight - 1, Math.max(0, Math.floor(safeTop)));\n    const right = Math.min(safeCanvasWidth, Math.max(left + 1, roundEnd(safeLeft + safeWidth)));\n    const bottom = Math.min(safeCanvasHeight, Math.max(top + 1, roundEnd(safeTop + safeHeight)));\n    return {\n        left,\n        top,\n        width: Math.max(1, right - left),\n        height: Math.max(1, bottom - top),\n    };\n}\nexport function floorRegion(rect) {\n    return getClampedCanvasRegion(rect, undefined, undefined, { includePartialPixels: false });\n}\nexport function hasFractionalCanvasEdge(value) {\n    const numericValue = Number(value);\n    if (!Number.isFinite(numericValue))\n        return false;\n    return Math.abs(numericValue - Math.round(numericValue)) > 0.01;\n}\nexport function getPartialExportEdges(bounds, angle = 0) {\n    if (!bounds)\n        return null;\n    const normalizedAngle = Math.abs((Number(angle) || 0) % 90);\n    const isAxisAligned = normalizedAngle < 0.01 || Math.abs(normalizedAngle - 90) < 0.01;\n    if (!isAxisAligned)\n        return null;\n    const left = Number(bounds.left) || 0;\n    const top = Number(bounds.top) || 0;\n    return {\n        left: hasFractionalCanvasEdge(left),\n        top: hasFractionalCanvasEdge(top),\n        right: hasFractionalCanvasEdge(left + (Number(bounds.width) || 0)),\n        bottom: hasFractionalCanvasEdge(top + (Number(bounds.height) || 0)),\n    };\n}\nexport function getObjectBBox(object) {\n    object.setCoords();\n    const boundingRect = object.getBoundingRect();\n    return {\n        left: boundingRect.left,\n        top: boundingRect.top,\n        width: boundingRect.width,\n        height: boundingRect.height,\n    };\n}\nexport function clampRegionToCanvas(region, canvasWidth, canvasHeight) {\n    const safeCw = Math.max(1, Math.floor(Number.isFinite(canvasWidth) ? canvasWidth : 1));\n    const safeCh = Math.max(1, Math.floor(Number.isFinite(canvasHeight) ? canvasHeight : 1));\n    const left = Math.max(0, Math.min(region.left, safeCw - 1));\n    const top = Math.max(0, Math.min(region.top, safeCh - 1));\n    const width = Math.max(1, Math.min(region.width, safeCw - left));\n    const height = Math.max(1, Math.min(region.height, safeCh - top));\n    return { left, top, width, height };\n}\n//# sourceMappingURL=canvas-region.js.map","export function resolveNumeric(val, axis, fallback, canvas, options) {\n    if (typeof val === 'number') {\n        return val;\n    }\n    if (typeof val === 'function') {\n        return val(canvas, options);\n    }\n    if (typeof val === 'string' && val.endsWith('%')) {\n        const pct = parseFloat(val);\n        if (!Number.isFinite(pct)) {\n            return fallback;\n        }\n        const dim = axis === 'x' ? canvas.getWidth() : canvas.getHeight();\n        return Math.floor(dim * (pct / 100));\n    }\n    return fallback;\n}\nexport function coercePoint(pt) {\n    if (Array.isArray(pt)) {\n        return { x: Number(pt[0]), y: Number(pt[1]) };\n    }\n    return { x: Number(pt.x), y: Number(pt.y) };\n}\n//# sourceMappingURL=number.js.map","export function isFinitePoint(value) {\n    const point = value;\n    return (!!point &&\n        typeof point.x === 'number' &&\n        Number.isFinite(point.x) &&\n        typeof point.y === 'number' &&\n        Number.isFinite(point.y));\n}\nexport function getPointerFromFabricEvent(canvas, event) {\n    const fabricEvent = event && typeof event === 'object'\n        ? event\n        : null;\n    if (!fabricEvent)\n        return null;\n    if (isFinitePoint(fabricEvent.scenePoint))\n        return { ...fabricEvent.scenePoint };\n    if (isFinitePoint(fabricEvent.pointer))\n        return { ...fabricEvent.pointer };\n    if (isFinitePoint(fabricEvent.absolutePointer))\n        return { ...fabricEvent.absolutePointer };\n    if (fabricEvent.e && typeof canvas.getPointer === 'function') {\n        const pointer = canvas.getPointer(fabricEvent.e);\n        if (isFinitePoint(pointer))\n            return { ...pointer };\n    }\n    return null;\n}\n//# sourceMappingURL=pointer.js.map","import { markAnnotationObject } from '../core/editor-object-kind.js';\nimport { placeAnnotationObject } from '../core/layer-order.js';\nimport { isTextAnnotationObject, } from '../core/public-types.js';\nimport { mergeTextAnnotationConfigPatch } from '../core/default-options.js';\nimport { getObjectBBox } from '../utils/canvas-region.js';\nimport { resolveNumeric } from '../utils/number.js';\nimport { getPointerFromFabricEvent } from '../utils/pointer.js';\nimport { syncAnnotationRuntimeState } from './annotation-style.js';\nimport { isAnnotationUnlocked } from './annotation-lock.js';\nfunction resolveDefaultTextPosition(context) {\n    const image = context.getOriginalImage();\n    if (image) {\n        const bounds = getObjectBBox(image);\n        return { left: Math.round(bounds.left + 10), top: Math.round(bounds.top + 10) };\n    }\n    return { left: 10, top: 10 };\n}\nfunction resolveTextCreationConfig(context, config) {\n    var _a, _b;\n    const base = mergeTextAnnotationConfigPatch(context.getTextConfig(), config);\n    const fallback = resolveDefaultTextPosition(context);\n    const leftInput = (_a = config.left) !== null && _a !== void 0 ? _a : base.left;\n    const topInput = (_b = config.top) !== null && _b !== void 0 ? _b : base.top;\n    return {\n        ...base,\n        left: resolveNumeric(leftInput, 'x', fallback.left, context.canvas, context.options),\n        top: resolveNumeric(topInput, 'y', fallback.top, context.canvas, context.options),\n    };\n}\nfunction nextAnnotationMeta(context, config) {\n    const annotationId = context.getAnnotationCounter() + 1;\n    context.setAnnotationCounter(annotationId);\n    return {\n        annotationId,\n        annotationName: `${context.options.textAnnotationName}${annotationId}`,\n        annotationHidden: config.annotationHidden,\n        annotationLocked: config.annotationLocked,\n    };\n}\nexport function attachTextEditingHandlers(context, annotation) {\n    const textObject = annotation;\n    if (textObject.imageEditorTextEditingHandlers) {\n        try {\n            textObject.off('editing:entered', textObject.imageEditorTextEditingHandlers.entered);\n            textObject.off('editing:exited', textObject.imageEditorTextEditingHandlers.exited);\n        }\n        catch {\n        }\n    }\n    const entered = () => {\n        var _a;\n        textObject.imageEditorTextEditingInitialText = String((_a = textObject.text) !== null && _a !== void 0 ? _a : '');\n        textObject.imageEditorTextEditingCancel = false;\n        delete textObject.imageEditorTextEditingHandledChange;\n    };\n    const exited = () => {\n        var _a;\n        const initial = textObject.imageEditorTextEditingInitialText;\n        const finalText = String((_a = textObject.text) !== null && _a !== void 0 ? _a : '');\n        const cancel = textObject.imageEditorTextEditingCancel === true;\n        if (initial !== undefined) {\n            textObject.imageEditorTextEditingHandledChange = true;\n            queueMicrotask(() => {\n                if (textObject.imageEditorTextEditingHandledChange === true) {\n                    delete textObject.imageEditorTextEditingHandledChange;\n                }\n            });\n        }\n        if (cancel && initial !== undefined) {\n            textObject.set({ text: initial });\n        }\n        delete textObject.imageEditorTextEditingInitialText;\n        delete textObject.imageEditorTextEditingCancel;\n        if (!cancel && initial !== undefined && initial !== finalText) {\n            context.saveCanvasState();\n            const callbackContext = context.buildCallbackContext('updateAnnotation');\n            context.emitAnnotationsChanged(callbackContext);\n            context.emitImageChanged(callbackContext);\n        }\n    };\n    textObject.on('editing:entered', entered);\n    textObject.on('editing:exited', exited);\n    textObject.imageEditorTextEditingHandlers = { entered, exited };\n}\nfunction selectAllText(annotation) {\n    var _a;\n    const textObject = annotation;\n    const textLength = String((_a = textObject.text) !== null && _a !== void 0 ? _a : '').length;\n    if (textLength <= 0)\n        return;\n    if (typeof textObject.selectAll === 'function') {\n        textObject.selectAll();\n        return;\n    }\n    if (typeof textObject.setSelectionStart === 'function' &&\n        typeof textObject.setSelectionEnd === 'function') {\n        textObject.setSelectionStart(0);\n        textObject.setSelectionEnd(textLength);\n        return;\n    }\n    textObject.selectionStart = 0;\n    textObject.selectionEnd = textLength;\n}\nexport function createTextAnnotation(context, config = {}) {\n    var _a, _b;\n    if (!context.isImageLoaded())\n        return null;\n    const resolved = resolveTextCreationConfig(context, config);\n    const textbox = new context.fabric.Textbox(resolved.text, {\n        left: resolved.left,\n        top: resolved.top,\n        width: resolved.width,\n        fontSize: resolved.fontSize,\n        fontFamily: resolved.fontFamily,\n        fontWeight: resolved.fontWeight,\n        fill: resolved.fill,\n        backgroundColor: resolved.backgroundColor,\n        textAlign: resolved.textAlign,\n        angle: resolved.angle,\n        selectable: resolved.selectable,\n        evented: resolved.evented,\n        editable: resolved.editable,\n        originX: 'left',\n        originY: 'top',\n        ...resolved.styles,\n    });\n    const meta = nextAnnotationMeta(context, resolved);\n    const annotation = markAnnotationObject(textbox, {\n        annotationId: meta.annotationId,\n        annotationType: 'text',\n        annotationName: meta.annotationName,\n        annotationHidden: meta.annotationHidden,\n        annotationLocked: meta.annotationLocked,\n        annotationSelectable: resolved.selectable,\n        annotationEvented: resolved.evented,\n        annotationHasControls: textbox.hasControls !== false,\n        annotationEditable: resolved.editable,\n    });\n    syncAnnotationRuntimeState(annotation);\n    attachTextEditingHandlers(context, annotation);\n    placeAnnotationObject(context.canvas, annotation);\n    if (resolved.selectable !== false && isAnnotationUnlocked(annotation)) {\n        context.canvas.setActiveObject(annotation);\n    }\n    context.canvas.renderAll();\n    context.updateAnnotationList();\n    context.saveCanvasState();\n    const callbackContext = context.buildCallbackContext('createTextAnnotation');\n    context.emitAnnotationsChanged(callbackContext);\n    context.emitImageChanged(callbackContext);\n    if (resolved.enterEditing && isAnnotationUnlocked(annotation)) {\n        (_b = (_a = annotation).enterEditing) === null || _b === void 0 ? void 0 : _b.call(_a);\n        selectAllText(annotation);\n    }\n    return annotation;\n}\nfunction handleTextModePointer(context, event) {\n    var _a, _b;\n    const fabricEvent = event;\n    const target = fabricEvent.target;\n    if (target && isTextAnnotationObject(target) && isAnnotationUnlocked(target)) {\n        context.canvas.setActiveObject(target);\n        (_b = (_a = target).enterEditing) === null || _b === void 0 ? void 0 : _b.call(_a);\n        return;\n    }\n    const pointer = getPointerFromFabricEvent(context.canvas, event);\n    if (!pointer)\n        return;\n    createTextAnnotation(context, {\n        left: pointer.x,\n        top: pointer.y,\n    });\n}\nexport function enterTextMode(context) {\n    if (context.getTextSession())\n        return;\n    if (!context.isImageLoaded())\n        return;\n    const { canvas } = context;\n    const previousCanvasSelection = !!canvas.selection;\n    const previousDefaultCursor = canvas.defaultCursor;\n    canvas.selection = true;\n    canvas.defaultCursor = 'text';\n    const callback = (event) => handleTextModePointer(context, event);\n    canvas.on('mouse:down', callback);\n    const session = {\n        mode: 'text',\n        previousCanvasSelection,\n        previousDefaultCursor,\n        handlers: [{ eventName: 'mouse:down', callback }],\n        dispose: () => {\n            try {\n                canvas.off('mouse:down', callback);\n            }\n            catch {\n            }\n            canvas.selection = previousCanvasSelection;\n            canvas.defaultCursor = previousDefaultCursor !== null && previousDefaultCursor !== void 0 ? previousDefaultCursor : 'default';\n        },\n    };\n    context.setTextSession(session);\n    context.updateUi();\n}\nexport function exitTextMode(context) {\n    const session = context.getTextSession();\n    if (!session)\n        return;\n    finalizeActiveTextEditing(context, { commit: true });\n    session.dispose();\n    context.setTextSession(null);\n    context.canvas.requestRenderAll();\n    context.updateUi();\n}\nexport function finalizeActiveTextEditing(context, options) {\n    var _a;\n    const active = context.canvas.getActiveObject();\n    if (!active || !isTextAnnotationObject(active))\n        return;\n    const textObject = active;\n    if (textObject.isEditing !== true)\n        return;\n    textObject.imageEditorTextEditingCancel = !options.commit;\n    (_a = textObject.exitEditing) === null || _a === void 0 ? void 0 : _a.call(textObject);\n    context.canvas.requestRenderAll();\n}\nexport function attachTextEditingHandlersToAnnotations(context, annotations) {\n    annotations.filter(isTextAnnotationObject).forEach((annotation) => {\n        attachTextEditingHandlers(context, annotation);\n    });\n}\n//# sourceMappingURL=text-controller.js.map","export class Command {\n    constructor(execute, undo) {\n        Object.defineProperty(this, \"execute\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        Object.defineProperty(this, \"undo\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        this.execute = execute;\n        this.undo = undo;\n    }\n}\nexport class HistoryManager {\n    constructor(maxSize = 50) {\n        Object.defineProperty(this, \"history\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: []\n        });\n        Object.defineProperty(this, \"currentIndex\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: -1\n        });\n        Object.defineProperty(this, \"isProcessing\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: false\n        });\n        Object.defineProperty(this, \"queuedExecuteCount\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: 0\n        });\n        Object.defineProperty(this, \"executeTail\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: Promise.resolve()\n        });\n        Object.defineProperty(this, \"maxSize\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        const normalizedMaxSize = Number.isFinite(maxSize) ? Math.floor(maxSize) : 50;\n        this.maxSize = Math.max(1, normalizedMaxSize);\n    }\n    async execute(command) {\n        this.queuedExecuteCount += 1;\n        const execution = this.executeTail.then(async () => {\n            try {\n                if (this.isProcessing) {\n                    throw new Error('Cannot push to history while undo/redo is in flight.');\n                }\n                this.isProcessing = true;\n                try {\n                    await command.execute();\n                    this.pushAndTrim(command, { skipProcessingCheck: true });\n                }\n                finally {\n                    this.isProcessing = false;\n                }\n            }\n            finally {\n                this.queuedExecuteCount -= 1;\n            }\n        });\n        this.executeTail = execution.catch(() => { });\n        return execution;\n    }\n    push(command) {\n        this.pushAndTrim(command);\n    }\n    clear() {\n        this.history = [];\n        this.currentIndex = -1;\n        this.isProcessing = false;\n        this.queuedExecuteCount = 0;\n        this.executeTail = Promise.resolve();\n    }\n    canUndo() {\n        return this.currentIndex >= 0;\n    }\n    canRedo() {\n        return this.currentIndex < this.history.length - 1;\n    }\n    async undo() {\n        if (this.isProcessing || this.queuedExecuteCount > 0 || !this.canUndo())\n            return;\n        this.isProcessing = true;\n        try {\n            const cmd = this.history[this.currentIndex];\n            if (!cmd)\n                return;\n            await cmd.undo();\n            this.currentIndex--;\n        }\n        finally {\n            this.isProcessing = false;\n        }\n    }\n    async redo() {\n        if (this.isProcessing || this.queuedExecuteCount > 0 || !this.canRedo())\n            return;\n        this.isProcessing = true;\n        try {\n            const cmd = this.history[this.currentIndex + 1];\n            if (!cmd)\n                return;\n            await cmd.execute();\n            this.currentIndex++;\n        }\n        finally {\n            this.isProcessing = false;\n        }\n    }\n    assertCanPush() {\n        if (!this.isProcessing && this.queuedExecuteCount === 0)\n            return;\n        throw new Error('Cannot push to history while undo/redo is in flight.');\n    }\n    pushAndTrim(command, options) {\n        if (!(options === null || options === void 0 ? void 0 : options.skipProcessingCheck))\n            this.assertCanPush();\n        if (this.currentIndex < this.history.length - 1) {\n            this.history = this.history.slice(0, this.currentIndex + 1);\n        }\n        this.history.push(command);\n        if (this.history.length > this.maxSize) {\n            this.history.shift();\n        }\n        else {\n            this.currentIndex++;\n        }\n    }\n}\n//# sourceMappingURL=history-manager.js.map","import { reportError, reportWarning } from '../core/callback-reporter.js';\nimport { loadFromState as loadFromStateImpl, saveState as saveStateImpl, } from '../core/state-serializer.js';\nimport { isAnnotationObject, isMaskObject, } from '../core/public-types.js';\nimport { applyMaskUnselectedStyle, reattachMaskHoverHandlers } from '../mask/mask-style.js';\nimport { syncAnnotationRuntimeStates } from '../annotation/annotation-style.js';\nimport { attachTextEditingHandlersToAnnotations, } from '../annotation/text-controller.js';\nimport { Command } from './history-manager.js';\nexport const TRUSTED_STATE_RESTORE = Symbol('ImageEditorTrustedStateRestore');\nexport async function loadFromStateAction(access, jsonString, options) {\n    var _a, _b, _c, _d;\n    const canvas = access.getCanvas();\n    if (!jsonString || !canvas)\n        return;\n    if (access.isDisposed())\n        return;\n    if (!access.canRunIdleOperation('loadFromState', options))\n        return;\n    const activeRestoreOperation = access.getActiveStateRestoreOperation();\n    const context = access.buildCallbackContext(activeRestoreOperation !== null && activeRestoreOperation !== void 0 ? activeRestoreOperation : 'loadFromState', activeRestoreOperation === 'undo' || activeRestoreOperation === 'redo');\n    const previousImage = access.getOriginalImage();\n    const previousMaskSignature = access.getMaskCollectionSignature();\n    const previousAnnotationSignature = access.getAnnotationCollectionSignature();\n    try {\n        const restoredState = await loadFromStateImpl({\n            canvas,\n            jsonString,\n            setCanvasSize: (widthPx, heightPx) => access.setCanvasSize(widthPx, heightPx),\n            maxCanvasPixels: access.getOptions().maxExportPixels,\n            maxRestoreCanvasDimension: access.getOptions().maxExportDimension,\n            restoreTrustLevel: isTrustedStateRestoreOptions(options) ? 'trusted' : 'public',\n        });\n        if (access.isDisposed() || !access.getCanvas())\n            return;\n        access.hideAllMaskLabels();\n        access.setOriginalImage(restoredState.originalImage);\n        const originalImage = restoredState.originalImage;\n        if (originalImage) {\n            originalImage.set({\n                originX: 'left',\n                originY: 'top',\n                selectable: false,\n                evented: false,\n                hasControls: false,\n                hoverCursor: 'default',\n            });\n            (_a = access.getCanvas()) === null || _a === void 0 ? void 0 : _a.sendObjectToBack(originalImage);\n        }\n        access.setMaskCounter(restoredState.maxMaskId);\n        access.setAnnotationCounter(restoredState.maxAnnotationId);\n        const editorState = restoredState.editorState;\n        if (editorState) {\n            access.setCurrentScale(editorState.currentScale);\n            access.setCurrentRotation(editorState.currentRotation);\n            access.setBaseImageScale(editorState.baseImageScale);\n        }\n        if (originalImage) {\n            access.setCurrentImageMimeType(editorState && 'currentImageMimeType' in editorState\n                ? ((_b = editorState.currentImageMimeType) !== null && _b !== void 0 ? _b : null)\n                : access.inferCurrentImageMimeType());\n            access.restoreImageFilterConfig((_c = editorState === null || editorState === void 0 ? void 0 : editorState.imageFilterConfig) !== null && _c !== void 0 ? _c : null);\n        }\n        else {\n            access.setCurrentImageMimeType(null);\n            access.restoreImageFilterConfig(null);\n        }\n        access.setIsImageLoadedToCanvas(!!originalImage);\n        if (originalImage && access.shouldNormalizeCanvasSizeAfterStateRestore()) {\n            access.updateCanvasSizeToImageBounds({ stabilizeContainedViewport: false });\n            access.alignObjectBoundingBoxToCanvasTopLeft(originalImage);\n        }\n        if (originalImage)\n            access.settleFitCoverScrollbarsAfterStateRestore();\n        const restoredMasks = restoredState.masks;\n        access.setLastMask(restoredMasks.reduce((lastMask, maskObject) => !lastMask || maskObject.maskId > lastMask.maskId ? maskObject : lastMask, null));\n        restoredMasks.forEach((maskObject) => {\n            applyMaskUnselectedStyle(maskObject);\n            reattachMaskHoverHandlers(maskObject);\n        });\n        syncAnnotationRuntimeStates(restoredState.annotations);\n        attachTextEditingHandlersToAnnotations(access.buildTextControllerContext(), restoredState.annotations);\n        access.setLastSnapshot(captureSnapshotAction(access));\n        (_d = access.getCanvas()) === null || _d === void 0 ? void 0 : _d.renderAll();\n        access.updateInputs();\n        access.updateMaskList();\n        access.updateAnnotationList();\n        access.updateUi();\n        if (previousImage && previousImage !== access.getOriginalImage()) {\n            access.emitImageCleared(previousImage, context);\n        }\n        if (previousMaskSignature !== access.getMaskCollectionSignature()) {\n            access.emitMasksChanged(context);\n        }\n        if (previousAnnotationSignature !== access.getAnnotationCollectionSignature()) {\n            access.emitAnnotationsChanged(context);\n        }\n        access.emitImageChanged(context);\n        restoreActiveSelection(access, restoredState, editorState, context);\n    }\n    catch (error) {\n        reportError(access.getOptions(), error, 'Failed to restore canvas state.');\n        throw error;\n    }\n}\nfunction isTrustedStateRestoreOptions(options) {\n    return !!(options === null || options === void 0 ? void 0 : options[TRUSTED_STATE_RESTORE]);\n}\nexport function saveStateAction(access, options) {\n    var _a, _b, _c;\n    const canvas = access.getCanvas();\n    if (!canvas || access.shouldSuppressSaveState())\n        return;\n    if (!access.canRunIdleOperation('saveState', options))\n        return;\n    const activeObj = canvas.getActiveObject();\n    const activeMask = getActiveMaskForSnapshot(canvas);\n    const activeAnnotation = getActiveAnnotationForSnapshot(canvas);\n    access.hideAllMaskLabels();\n    try {\n        const after = saveStateImpl({\n            canvas,\n            activeMaskId: (_a = activeMask === null || activeMask === void 0 ? void 0 : activeMask.maskId) !== null && _a !== void 0 ? _a : null,\n            activeAnnotationId: (_b = activeAnnotation === null || activeAnnotation === void 0 ? void 0 : activeAnnotation.annotationId) !== null && _b !== void 0 ? _b : null,\n            currentScale: access.getCurrentScale(),\n            currentRotation: access.getCurrentRotation(),\n            baseImageScale: access.getBaseImageScale(),\n            currentImageMimeType: access.getCurrentImageMimeType(),\n            imageFilterConfig: access.getCurrentImageFilterConfig(),\n        });\n        const before = (_c = access.getLastSnapshot()) !== null && _c !== void 0 ? _c : after;\n        if (after === before)\n            return;\n        const cmd = new Command(async () => {\n            await loadFromStateAction(access, after, access.withAnimationQueueBypass());\n        }, async () => {\n            await loadFromStateAction(access, before, access.withAnimationQueueBypass());\n        });\n        access.getHistoryManager().push(cmd);\n        access.setLastSnapshot(after);\n    }\n    catch (error) {\n        reportWarning(access.getOptions(), error, 'Failed to capture canvas snapshot.');\n    }\n    finally {\n        restoreActiveObjectAfterSnapshot(access, activeObj, activeMask, activeAnnotation);\n        access.updateUi();\n    }\n}\nexport function captureSnapshotAction(access) {\n    var _a, _b;\n    const canvas = access.getCanvas();\n    if (!canvas) {\n        throw new Error('[ImageEditor] Cannot capture canvas snapshot before init or after dispose.');\n    }\n    const activeMask = getActiveMaskForSnapshot(canvas);\n    const activeAnnotation = getActiveAnnotationForSnapshot(canvas);\n    access.hideAllMaskLabels();\n    return saveStateImpl({\n        canvas,\n        activeMaskId: (_a = activeMask === null || activeMask === void 0 ? void 0 : activeMask.maskId) !== null && _a !== void 0 ? _a : null,\n        activeAnnotationId: (_b = activeAnnotation === null || activeAnnotation === void 0 ? void 0 : activeAnnotation.annotationId) !== null && _b !== void 0 ? _b : null,\n        currentScale: access.getCurrentScale(),\n        currentRotation: access.getCurrentRotation(),\n        baseImageScale: access.getBaseImageScale(),\n        currentImageMimeType: access.getCurrentImageMimeType(),\n        imageFilterConfig: access.getCurrentImageFilterConfig(),\n    });\n}\nfunction restoreActiveSelection(access, restoredState, editorState, context) {\n    const canvas = access.getLiveCanvas('loadFromState');\n    const activeMaskId = editorState === null || editorState === void 0 ? void 0 : editorState.activeMaskId;\n    const activeAnnotationId = editorState === null || editorState === void 0 ? void 0 : editorState.activeAnnotationId;\n    if ((editorState === null || editorState === void 0 ? void 0 : editorState.activeObjectKind) === 'mask' && typeof activeMaskId === 'number') {\n        const activeMask = restoredState.masks.find((maskObject) => maskObject.maskId === activeMaskId);\n        if (activeMask) {\n            access.withSelectionChangeContext(context, () => {\n                canvas.setActiveObject(activeMask);\n                access.handleSelectionChanged([activeMask]);\n            });\n        }\n    }\n    else if ((editorState === null || editorState === void 0 ? void 0 : editorState.activeObjectKind) === 'annotation' &&\n        typeof activeAnnotationId === 'number') {\n        const activeAnnotation = restoredState.annotations.find((annotation) => annotation.annotationId === activeAnnotationId);\n        if (activeAnnotation) {\n            access.withSelectionChangeContext(context, () => {\n                canvas.setActiveObject(activeAnnotation);\n                access.handleSelectionChanged([activeAnnotation]);\n            });\n        }\n    }\n}\nfunction getActiveMaskForSnapshot(canvas) {\n    const activeObject = canvas.getActiveObject();\n    return activeObject && isMaskObject(activeObject) ? activeObject : null;\n}\nfunction getActiveAnnotationForSnapshot(canvas) {\n    const activeObject = canvas.getActiveObject();\n    return activeObject && isAnnotationObject(activeObject) ? activeObject : null;\n}\nfunction restoreActiveObjectAfterSnapshot(access, activeObj, activeMask, activeAnnotation) {\n    const canvas = access.getCanvas();\n    if (!canvas)\n        return;\n    const maskToRestore = activeObj && isMaskObject(activeObj) ? activeObj : activeMask;\n    const annotationToRestore = activeObj && isAnnotationObject(activeObj) ? activeObj : activeAnnotation;\n    if (maskToRestore && canvas.getObjects().includes(maskToRestore)) {\n        canvas.setActiveObject(maskToRestore);\n        access.showLabelForMask(maskToRestore);\n        access.updateMaskListSelection(maskToRestore);\n        return;\n    }\n    if (annotationToRestore && canvas.getObjects().includes(annotationToRestore)) {\n        canvas.setActiveObject(annotationToRestore);\n        access.updateAnnotationListSelection(annotationToRestore);\n    }\n}\n//# sourceMappingURL=editor-state-actions.js.map","function looksLikeFabricModule(value) {\n    if (value === null || typeof value !== 'object')\n        return false;\n    const candidate = value.Canvas;\n    return typeof candidate === 'function';\n}\nfunction readGlobalFabric(globalScope) {\n    return globalScope.fabric;\n}\nexport function detectFabric(fabricOrOptions, maybeOptions, globalScope = globalThis) {\n    var _a;\n    if (looksLikeFabricModule(fabricOrOptions)) {\n        return {\n            fabric: fabricOrOptions,\n            isFabricLoaded: true,\n            options: maybeOptions !== null && maybeOptions !== void 0 ? maybeOptions : {},\n        };\n    }\n    const options = (_a = fabricOrOptions) !== null && _a !== void 0 ? _a : {};\n    const globalFabric = readGlobalFabric(globalScope);\n    if (looksLikeFabricModule(globalFabric)) {\n        return {\n            fabric: globalFabric,\n            isFabricLoaded: true,\n            options,\n        };\n    }\n    console.error('[ImageEditor] fabric.js v7 is not available. ' +\n        'Pass it as the first constructor argument (ESM) or ' +\n        'load it as a global <script> before instantiation.');\n    return {\n        fabric: null,\n        isFabricLoaded: false,\n        options,\n    };\n}\n//# sourceMappingURL=fabric-adapter.js.map","import { isAnnotationObject, isDrawAnnotationObject, isShapeAnnotationObject, isTextAnnotationObject, } from '../core/public-types.js';\nimport { syncAnnotationRuntimeState } from './annotation-style.js';\nimport { isAnnotationLocked, isAnnotationUnlocked } from './annotation-lock.js';\nfunction isActiveSelectionObject(object) {\n    if (!object)\n        return false;\n    const type = typeof object.type === 'string' ? object.type.toLowerCase() : '';\n    if (type === 'activeselection')\n        return true;\n    const isType = object.isType;\n    return (typeof isType === 'function' &&\n        (isType.call(object, 'ActiveSelection') || isType.call(object, 'activeSelection')));\n}\nexport function getActiveSelectionObjects(canvas) {\n    const active = canvas.getActiveObject();\n    if (!active)\n        return [];\n    if (!isActiveSelectionObject(active))\n        return [active];\n    const getObjects = active.getObjects;\n    return typeof getObjects === 'function' ? getObjects.call(active) : [];\n}\nexport function getAnnotations(canvas) {\n    return canvas.getObjects().filter(isAnnotationObject).slice();\n}\nfunction orderAnnotationsForList(annotations, order) {\n    const ordered = annotations.slice();\n    return order === 'back-to-front' ? ordered : ordered.reverse();\n}\nexport function getSelectedAnnotations(canvas) {\n    return getActiveSelectionObjects(canvas).filter(isAnnotationObject);\n}\nfunction snapshotAnnotation(annotation) {\n    return JSON.stringify({\n        text: annotation.text,\n        fontSize: annotation.fontSize,\n        fontFamily: annotation.fontFamily,\n        fontWeight: annotation.fontWeight,\n        fill: annotation.fill,\n        backgroundColor: annotation.backgroundColor,\n        textAlign: annotation.textAlign,\n        width: annotation.width,\n        stroke: annotation.stroke,\n        strokeWidth: annotation.strokeWidth,\n        opacity: annotation.opacity,\n        visible: annotation.visible,\n        selectable: annotation.selectable,\n        evented: annotation.evented,\n        hasControls: annotation.hasControls,\n        editable: isTextAnnotationObject(annotation)\n            ? annotation.editable\n            : undefined,\n        annotationHidden: annotation.annotationHidden,\n        annotationLocked: annotation.annotationLocked,\n        annotationSelectable: annotation.annotationSelectable,\n        annotationEvented: annotation.annotationEvented,\n        annotationHasControls: annotation.annotationHasControls,\n        annotationEditable: annotation.annotationEditable,\n    });\n}\nfunction setAnnotationProps(annotation, props) {\n    annotation.set(props);\n}\nfunction getCurrentAnnotationListCanvas(context) {\n    var _a, _b;\n    return (_b = (_a = context.getCanvas) === null || _a === void 0 ? void 0 : _a.call(context)) !== null && _b !== void 0 ? _b : context.canvas;\n}\nfunction updateTextAnnotation(annotation, config) {\n    const props = {};\n    const raw = config;\n    if (typeof raw.text === 'string')\n        props.text = raw.text;\n    if (typeof raw.fontSize === 'number' && Number.isFinite(raw.fontSize) && raw.fontSize > 0) {\n        props.fontSize = raw.fontSize;\n    }\n    if (typeof raw.fontFamily === 'string')\n        props.fontFamily = raw.fontFamily;\n    if (typeof raw.fontWeight === 'string' || typeof raw.fontWeight === 'number') {\n        props.fontWeight = raw.fontWeight;\n    }\n    if (typeof raw.fill === 'string')\n        props.fill = raw.fill;\n    if (typeof raw.backgroundColor === 'string')\n        props.backgroundColor = raw.backgroundColor;\n    if (raw.textAlign === 'left' ||\n        raw.textAlign === 'center' ||\n        raw.textAlign === 'right' ||\n        raw.textAlign === 'justify') {\n        props.textAlign = raw.textAlign;\n    }\n    if (typeof raw.width === 'number' && Number.isFinite(raw.width) && raw.width > 0) {\n        props.width = raw.width;\n    }\n    if (Object.keys(props).length > 0)\n        setAnnotationProps(annotation, props);\n}\nfunction updateDrawAnnotation(annotation, config) {\n    const props = {};\n    const raw = config;\n    if (typeof raw.stroke === 'string')\n        props.stroke = raw.stroke;\n    if (typeof raw.strokeWidth === 'number' &&\n        Number.isFinite(raw.strokeWidth) &&\n        raw.strokeWidth > 0) {\n        props.strokeWidth = raw.strokeWidth;\n    }\n    if (typeof raw.opacity === 'number' && Number.isFinite(raw.opacity)) {\n        props.opacity = Math.max(0, Math.min(1, raw.opacity));\n    }\n    if (Object.keys(props).length > 0)\n        setAnnotationProps(annotation, props);\n}\nfunction updateShapeAnnotation(annotation, config) {\n    const props = {};\n    const raw = config;\n    if (typeof raw.stroke === 'string')\n        props.stroke = raw.stroke;\n    if (typeof raw.strokeWidth === 'number' &&\n        Number.isFinite(raw.strokeWidth) &&\n        raw.strokeWidth > 0) {\n        props.strokeWidth = raw.strokeWidth;\n    }\n    if (typeof raw.fill === 'string')\n        props.fill = raw.fill;\n    if (typeof raw.opacity === 'number' && Number.isFinite(raw.opacity)) {\n        props.opacity = Math.max(0, Math.min(1, raw.opacity));\n    }\n    if (Object.keys(props).length > 0)\n        setAnnotationProps(annotation, props);\n}\nexport function updateAnnotationObject(annotation, config) {\n    const before = snapshotAnnotation(annotation);\n    const raw = config;\n    if (typeof raw.annotationHidden === 'boolean') {\n        annotation.annotationHidden = raw.annotationHidden;\n    }\n    if (typeof raw.annotationLocked === 'boolean') {\n        annotation.annotationLocked = raw.annotationLocked;\n    }\n    const lockedAfter = isAnnotationLocked(annotation);\n    if (!lockedAfter) {\n        if (typeof raw.selectable === 'boolean') {\n            annotation.annotationSelectable = raw.selectable;\n        }\n        if (typeof raw.evented === 'boolean') {\n            annotation.annotationEvented = raw.evented;\n        }\n        if (typeof raw.hasControls === 'boolean') {\n            annotation.annotationHasControls = raw.hasControls;\n        }\n        if (isTextAnnotationObject(annotation)) {\n            if (typeof raw.editable === 'boolean') {\n                annotation.annotationEditable = raw.editable;\n            }\n            updateTextAnnotation(annotation, config);\n        }\n        if (isDrawAnnotationObject(annotation))\n            updateDrawAnnotation(annotation, config);\n        if (isShapeAnnotationObject(annotation))\n            updateShapeAnnotation(annotation, config);\n    }\n    syncAnnotationRuntimeState(annotation);\n    return snapshotAnnotation(annotation) !== before;\n}\nexport function updateAnnotation(context, annotationId, config) {\n    const target = getAnnotations(context.canvas).find((annotation) => annotation.annotationId === annotationId);\n    if (!target)\n        return false;\n    const changed = updateAnnotationObject(target, config);\n    if (!changed)\n        return false;\n    context.canvas.requestRenderAll();\n    context.saveCanvasState();\n    context.updateUi();\n    return true;\n}\nexport function updateSelectedAnnotation(context, config) {\n    const selectedAnnotations = getSelectedAnnotations(context.canvas);\n    if (selectedAnnotations.length === 0)\n        return false;\n    const changed = selectedAnnotations\n        .map((annotation) => updateAnnotationObject(annotation, config))\n        .some(Boolean);\n    if (!changed)\n        return false;\n    context.canvas.requestRenderAll();\n    context.saveCanvasState();\n    context.updateUi();\n    return true;\n}\nexport function removeAnnotationObjects(context, objects, options = {}) {\n    const force = options.force === true;\n    const removable = objects.filter((annotation) => force || isAnnotationUnlocked(annotation));\n    if (removable.length === 0)\n        return 0;\n    for (const annotation of removable) {\n        context.canvas.remove(annotation);\n    }\n    context.canvas.discardActiveObject();\n    context.canvas.renderAll();\n    if (options.saveHistory !== false)\n        context.saveCanvasState();\n    context.updateUi();\n    return removable.length;\n}\nexport function removeSelectedAnnotation(context) {\n    return removeAnnotationObjects(context, getSelectedAnnotations(context.canvas));\n}\nexport function removeAllAnnotations(context, options = {}) {\n    return removeAnnotationObjects(context, getAnnotations(context.canvas), options);\n}\nexport function renderAnnotationList(context) {\n    const listEl = context.getListElement();\n    const canvas = getCurrentAnnotationListCanvas(context);\n    if (!listEl || !canvas)\n        return;\n    const ownerDocument = listEl.ownerDocument;\n    listEl.innerHTML = '';\n    orderAnnotationsForList(getAnnotations(canvas), context.listOrder).forEach((annotation) => {\n        const item = ownerDocument.createElement('li');\n        item.className = 'list-group-item annotation-item';\n        item.textContent = annotation.annotationName;\n        item.dataset.annotationId = String(annotation.annotationId);\n        item.addEventListener('click', () => {\n            const id = Number(item.dataset.annotationId);\n            if (!Number.isFinite(id))\n                return;\n            const liveCanvas = getCurrentAnnotationListCanvas(context);\n            if (!liveCanvas)\n                return;\n            const target = getAnnotations(liveCanvas).find((candidate) => candidate.annotationId === id);\n            if (!target)\n                return;\n            liveCanvas.setActiveObject(target);\n            context.onAnnotationSelected(target);\n        });\n        listEl.appendChild(item);\n    });\n}\nexport function updateAnnotationListSelection(context, selectedAnnotation) {\n    const listEl = context.getListElement();\n    if (!listEl)\n        return;\n    const selectedId = selectedAnnotation ? String(selectedAnnotation.annotationId) : null;\n    listEl.querySelectorAll('.annotation-item').forEach((item) => {\n        item.classList.toggle('active', selectedId !== null && item.dataset.annotationId === selectedId);\n    });\n}\n//# sourceMappingURL=annotation-manager.js.map","function isPathCommand(value) {\n    return (Array.isArray(value) &&\n        typeof value[0] === 'string' &&\n        value.slice(1).every((entry) => typeof entry === 'number' && Number.isFinite(entry)));\n}\nfunction identity(point) {\n    return point;\n}\nfunction toAbsolutePoint(x, y, current, isRelative) {\n    return isRelative ? { x: current.x + x, y: current.y + y } : { x, y };\n}\nfunction pathValue(values, index) {\n    var _a;\n    return (_a = values[index]) !== null && _a !== void 0 ? _a : 0;\n}\nfunction addSegment(segments, transformPoint, start, end) {\n    segments.push({\n        start: transformPoint(start),\n        end: transformPoint(end),\n    });\n}\nfunction cubicPoint(start, c1, c2, end, t) {\n    const mt = 1 - t;\n    return {\n        x: mt * mt * mt * start.x +\n            3 * mt * mt * t * c1.x +\n            3 * mt * t * t * c2.x +\n            t * t * t * end.x,\n        y: mt * mt * mt * start.y +\n            3 * mt * mt * t * c1.y +\n            3 * mt * t * t * c2.y +\n            t * t * t * end.y,\n    };\n}\nfunction quadraticPoint(start, c, end, t) {\n    const mt = 1 - t;\n    return {\n        x: mt * mt * start.x + 2 * mt * t * c.x + t * t * end.x,\n        y: mt * mt * start.y + 2 * mt * t * c.y + t * t * end.y,\n    };\n}\nfunction addSampledCurve(segments, transformPoint, start, end, samplePoint) {\n    const approximateLength = Math.hypot(end.x - start.x, end.y - start.y);\n    const steps = Math.max(8, Math.min(48, Math.ceil(approximateLength / 6)));\n    let previous = start;\n    for (let index = 1; index <= steps; index += 1) {\n        const next = samplePoint(index / steps);\n        addSegment(segments, transformPoint, previous, next);\n        previous = next;\n    }\n}\nexport function getPathSegments(pathData, transformPoint = identity) {\n    if (!Array.isArray(pathData))\n        return [];\n    const segments = [];\n    let current = { x: 0, y: 0 };\n    let subpathStart = null;\n    for (const rawCommand of pathData) {\n        if (!isPathCommand(rawCommand))\n            continue;\n        const rawName = rawCommand[0];\n        const command = rawName.toUpperCase();\n        const isRelative = rawName !== command;\n        const values = rawCommand.slice(1);\n        if (command === 'M') {\n            for (let index = 0; index + 1 < values.length; index += 2) {\n                const next = toAbsolutePoint(pathValue(values, index), pathValue(values, index + 1), current, isRelative);\n                if (index > 0)\n                    addSegment(segments, transformPoint, current, next);\n                current = next;\n                if (index === 0)\n                    subpathStart = next;\n            }\n            continue;\n        }\n        if (command === 'L') {\n            for (let index = 0; index + 1 < values.length; index += 2) {\n                const next = toAbsolutePoint(pathValue(values, index), pathValue(values, index + 1), current, isRelative);\n                addSegment(segments, transformPoint, current, next);\n                current = next;\n            }\n            continue;\n        }\n        if (command === 'H') {\n            for (const value of values) {\n                const next = { x: isRelative ? current.x + value : value, y: current.y };\n                addSegment(segments, transformPoint, current, next);\n                current = next;\n            }\n            continue;\n        }\n        if (command === 'V') {\n            for (const value of values) {\n                const next = { x: current.x, y: isRelative ? current.y + value : value };\n                addSegment(segments, transformPoint, current, next);\n                current = next;\n            }\n            continue;\n        }\n        if (command === 'C') {\n            for (let index = 0; index + 5 < values.length; index += 6) {\n                const start = current;\n                const c1 = toAbsolutePoint(pathValue(values, index), pathValue(values, index + 1), current, isRelative);\n                const c2 = toAbsolutePoint(pathValue(values, index + 2), pathValue(values, index + 3), current, isRelative);\n                const end = toAbsolutePoint(pathValue(values, index + 4), pathValue(values, index + 5), current, isRelative);\n                addSampledCurve(segments, transformPoint, start, end, (t) => cubicPoint(start, c1, c2, end, t));\n                current = end;\n            }\n            continue;\n        }\n        if (command === 'Q') {\n            for (let index = 0; index + 3 < values.length; index += 4) {\n                const start = current;\n                const control = toAbsolutePoint(pathValue(values, index), pathValue(values, index + 1), current, isRelative);\n                const end = toAbsolutePoint(pathValue(values, index + 2), pathValue(values, index + 3), current, isRelative);\n                addSampledCurve(segments, transformPoint, start, end, (t) => quadraticPoint(start, control, end, t));\n                current = end;\n            }\n            continue;\n        }\n        if (command === 'A') {\n            for (let index = 0; index + 6 < values.length; index += 7) {\n                const next = toAbsolutePoint(pathValue(values, index + 5), pathValue(values, index + 6), current, isRelative);\n                addSegment(segments, transformPoint, current, next);\n                current = next;\n            }\n            continue;\n        }\n        if (command === 'Z' && subpathStart) {\n            addSegment(segments, transformPoint, current, subpathStart);\n            current = subpathStart;\n        }\n    }\n    return segments;\n}\nexport function getPathPoints(pathData, transformPoint = identity) {\n    const points = [];\n    for (const segment of getPathSegments(pathData, transformPoint)) {\n        const previous = points[points.length - 1];\n        if (!previous || previous.x !== segment.start.x || previous.y !== segment.start.y) {\n            points.push(segment.start);\n        }\n        points.push(segment.end);\n    }\n    return points;\n}\n//# sourceMappingURL=path-segments.js.map","import { markAnnotationObject, markSessionObject } from '../core/editor-object-kind.js';\nimport { placeAnnotationObject, placeSessionObject } from '../core/layer-order.js';\nimport { isDrawAnnotationObject, } from '../core/public-types.js';\nimport { getObjectBBox } from '../utils/canvas-region.js';\nimport { getPointerFromFabricEvent } from '../utils/pointer.js';\nimport { syncAnnotationRuntimeState } from './annotation-style.js';\nimport { getPathSegments, } from './path-segments.js';\nfunction colorWithOpacity(color, opacity) {\n    const alpha = Math.max(0, Math.min(1, opacity));\n    if (alpha >= 1)\n        return color;\n    if (/^#([0-9a-f]{6})$/i.test(color)) {\n        const hex = color.slice(1);\n        const r = Number.parseInt(hex.slice(0, 2), 16);\n        const g = Number.parseInt(hex.slice(2, 4), 16);\n        const b = Number.parseInt(hex.slice(4, 6), 16);\n        return `rgba(${r},${g},${b},${alpha})`;\n    }\n    return color;\n}\nfunction configureBrush(context) {\n    const config = context.getDrawConfig();\n    const canvasWithBrush = context.canvas;\n    canvasWithBrush.freeDrawingBrush = new context.fabric.PencilBrush(context.canvas);\n    canvasWithBrush.freeDrawingBrush.width = config.brushSize;\n    canvasWithBrush.freeDrawingBrush.color = colorWithOpacity(config.color, config.opacity);\n    canvasWithBrush.freeDrawingBrush.strokeLineCap = config.lineCap;\n    canvasWithBrush.freeDrawingBrush.strokeLineJoin = config.lineJoin;\n}\nfunction setDrawingMode(context, enabled) {\n    const canvasWithDrawing = context.canvas;\n    canvasWithDrawing.isDrawingMode = enabled;\n}\nfunction createEraserPreview(context) {\n    const config = context.getEraserConfig();\n    const circle = new context.fabric.Circle({\n        left: 0,\n        top: 0,\n        radius: config.brushSize / 2,\n        originX: 'center',\n        originY: 'center',\n        fill: config.previewFill,\n        stroke: config.previewStroke,\n        strokeWidth: config.previewStrokeWidth,\n        selectable: false,\n        evented: false,\n        excludeFromExport: true,\n        objectCaching: false,\n        visible: false,\n    });\n    return markSessionObject(circle, 'eraserPreview');\n}\nfunction ensureEraserPreview(context, session) {\n    var _a;\n    const preview = (_a = session.eraserPreview) !== null && _a !== void 0 ? _a : createEraserPreview(context);\n    session.eraserPreview = preview;\n    const config = context.getEraserConfig();\n    preview.set({\n        radius: config.brushSize / 2,\n        fill: config.previewFill,\n        stroke: config.previewStroke,\n        strokeWidth: config.previewStrokeWidth,\n    });\n    if (!context.canvas.getObjects().includes(preview)) {\n        context.canvas.add(preview);\n    }\n    placeSessionObject(context.canvas, preview);\n    return preview;\n}\nfunction hideEraserPreview(context, session) {\n    if (!session.eraserPreview)\n        return;\n    session.eraserPreview.set({ visible: false });\n    context.canvas.requestRenderAll();\n}\nfunction removeEraserPreview(context, session) {\n    if (!session.eraserPreview)\n        return;\n    try {\n        context.canvas.remove(session.eraserPreview);\n    }\n    catch {\n    }\n    session.eraserPreview = null;\n}\nfunction moveEraserPreview(context, session, point) {\n    const preview = ensureEraserPreview(context, session);\n    preview.set({ left: point.x, top: point.y, visible: session.subMode === 'erase' });\n    context.canvas.requestRenderAll();\n}\nfunction pushEraserPoint(context, session, point) {\n    const previous = session.eraserPoints[session.eraserPoints.length - 1];\n    if (!previous) {\n        session.eraserPoints.push(point);\n        return;\n    }\n    const radius = Math.max(1, context.getEraserConfig().brushSize / 2);\n    const spacing = Math.max(1, radius / 2);\n    const distance = Math.hypot(point.x - previous.x, point.y - previous.y);\n    const steps = Math.max(1, Math.ceil(distance / spacing));\n    for (let index = 1; index <= steps; index += 1) {\n        const t = index / steps;\n        session.eraserPoints.push({\n            x: previous.x + (point.x - previous.x) * t,\n            y: previous.y + (point.y - previous.y) * t,\n        });\n    }\n}\nfunction pointIntersectsExpandedBounds(point, bounds, radius) {\n    return (point.x >= bounds.left - radius &&\n        point.x <= bounds.left + bounds.width + radius &&\n        point.y >= bounds.top - radius &&\n        point.y <= bounds.top + bounds.height + radius);\n}\nfunction transformPathPoint(annotation, point) {\n    var _a, _b;\n    const pathLike = annotation;\n    const offset = (_a = pathLike.pathOffset) !== null && _a !== void 0 ? _a : { x: 0, y: 0 };\n    const x = point.x - (Number(offset.x) || 0);\n    const y = point.y - (Number(offset.y) || 0);\n    const matrix = (_b = pathLike.calcTransformMatrix) === null || _b === void 0 ? void 0 : _b.call(pathLike);\n    if (!Array.isArray(matrix) || matrix.length < 6)\n        return { x: point.x, y: point.y };\n    const [a = 1, b = 0, c = 0, d = 1, e = 0, f = 0] = matrix;\n    return {\n        x: a * x + c * y + e,\n        y: b * x + d * y + f,\n    };\n}\nfunction getDrawAnnotationPathSegments(annotation) {\n    const pathData = annotation.path;\n    return getPathSegments(pathData, (point) => transformPathPoint(annotation, point));\n}\nfunction getEffectiveStrokeRadius(annotation) {\n    var _a;\n    const scalable = annotation;\n    const strokeWidth = Number(annotation.strokeWidth) || 0;\n    const scale = (_a = scalable.getObjectScaling) === null || _a === void 0 ? void 0 : _a.call(scalable);\n    if (scalable.strokeUniform) {\n        return Math.max(0, strokeWidth / 2);\n    }\n    const scaleX = Math.abs(Number(scale === null || scale === void 0 ? void 0 : scale.x) || Number(annotation.scaleX) || 1);\n    const scaleY = Math.abs(Number(scale === null || scale === void 0 ? void 0 : scale.y) || Number(annotation.scaleY) || 1);\n    return Math.max(0, (strokeWidth * Math.max(scaleX, scaleY)) / 2);\n}\nfunction pointDistanceToSegment(point, segment) {\n    const dx = segment.end.x - segment.start.x;\n    const dy = segment.end.y - segment.start.y;\n    const lengthSquared = dx * dx + dy * dy;\n    if (lengthSquared === 0) {\n        return Math.hypot(point.x - segment.start.x, point.y - segment.start.y);\n    }\n    const t = Math.max(0, Math.min(1, ((point.x - segment.start.x) * dx + (point.y - segment.start.y) * dy) / lengthSquared));\n    const nearest = {\n        x: segment.start.x + t * dx,\n        y: segment.start.y + t * dy,\n    };\n    return Math.hypot(point.x - nearest.x, point.y - nearest.y);\n}\nfunction annotationIntersectsEraserPath(annotation, points, eraserRadius) {\n    const hitRadius = eraserRadius + getEffectiveStrokeRadius(annotation);\n    const bounds = getObjectBBox(annotation);\n    if (!points.some((point) => pointIntersectsExpandedBounds(point, bounds, hitRadius))) {\n        return false;\n    }\n    const segments = getDrawAnnotationPathSegments(annotation);\n    if (segments.length === 0)\n        return false;\n    return points.some((point) => segments.some((segment) => pointDistanceToSegment(point, segment) <= hitRadius));\n}\nfunction getIntersectedDrawAnnotations(context, points) {\n    if (points.length === 0)\n        return [];\n    const radius = Math.max(1, context.getEraserConfig().brushSize / 2);\n    return context.canvas\n        .getObjects()\n        .filter(isDrawAnnotationObject)\n        .filter((annotation) => annotationIntersectsEraserPath(annotation, points, radius));\n}\nfunction commitEraserStroke(context, session) {\n    const removed = getIntersectedDrawAnnotations(context, session.eraserPoints);\n    session.eraserPoints = [];\n    session.isErasing = false;\n    if (removed.length === 0)\n        return;\n    removed.forEach((annotation) => {\n        context.canvas.remove(annotation);\n    });\n    context.canvas.discardActiveObject();\n    context.canvas.renderAll();\n    context.saveCanvasState();\n    context.updateAnnotationList();\n    context.updateUi();\n    const callbackContext = context.buildCallbackContext('commitEraserStroke');\n    context.emitAnnotationsChanged(callbackContext);\n    context.emitImageChanged(callbackContext);\n}\nfunction handleEraserPointerDown(context, event) {\n    const session = context.getDrawSession();\n    if (!session || session.subMode !== 'erase')\n        return;\n    const pointer = getPointerFromFabricEvent(context.canvas, event);\n    if (!pointer)\n        return;\n    session.isErasing = true;\n    session.eraserPoints = [];\n    pushEraserPoint(context, session, pointer);\n    moveEraserPreview(context, session, pointer);\n}\nfunction handleEraserPointerMove(context, event) {\n    const session = context.getDrawSession();\n    if (!session || session.subMode !== 'erase')\n        return;\n    const pointer = getPointerFromFabricEvent(context.canvas, event);\n    if (!pointer) {\n        hideEraserPreview(context, session);\n        return;\n    }\n    moveEraserPreview(context, session, pointer);\n    if (session.isErasing)\n        pushEraserPoint(context, session, pointer);\n}\nfunction handleEraserPointerUp(context, event) {\n    const session = context.getDrawSession();\n    if (!session || session.subMode !== 'erase')\n        return;\n    const pointer = getPointerFromFabricEvent(context.canvas, event);\n    if (pointer) {\n        pushEraserPoint(context, session, pointer);\n        moveEraserPreview(context, session, pointer);\n    }\n    commitEraserStroke(context, session);\n}\nfunction markPathAsDrawAnnotation(context, path) {\n    const config = context.getDrawConfig();\n    const annotationId = context.getAnnotationCounter() + 1;\n    context.setAnnotationCounter(annotationId);\n    path.set({\n        selectable: config.selectable,\n        evented: config.evented,\n        opacity: config.opacity,\n        stroke: config.color,\n        strokeWidth: config.brushSize,\n    });\n    const annotation = markAnnotationObject(path, {\n        annotationId,\n        annotationType: 'draw',\n        annotationName: `${context.options.drawAnnotationName}${annotationId}`,\n        annotationHidden: config.annotationHidden,\n        annotationLocked: config.annotationLocked,\n        annotationSelectable: config.selectable,\n        annotationEvented: config.evented,\n        annotationHasControls: path.hasControls !== false,\n    });\n    syncAnnotationRuntimeState(annotation);\n    return annotation;\n}\nfunction handlePathCreated(context, event) {\n    const path = event.path;\n    if (!path)\n        return;\n    const annotation = markPathAsDrawAnnotation(context, path);\n    placeAnnotationObject(context.canvas, annotation);\n    context.canvas.setActiveObject(annotation);\n    context.canvas.renderAll();\n    context.updateAnnotationList();\n    context.saveCanvasState();\n    const callbackContext = context.buildCallbackContext('createDrawAnnotation');\n    context.emitAnnotationsChanged(callbackContext);\n    context.emitImageChanged(callbackContext);\n}\nexport function enterDrawMode(context) {\n    if (context.getDrawSession())\n        return;\n    if (!context.isImageLoaded())\n        return;\n    const { canvas } = context;\n    const canvasWithDrawing = canvas;\n    const previousDrawingMode = !!canvasWithDrawing.isDrawingMode;\n    const previousBrush = canvasWithDrawing.freeDrawingBrush;\n    const previousCanvasSelection = !!canvas.selection;\n    const previousSkipTargetFind = !!canvas.skipTargetFind;\n    const previousDefaultCursor = canvas.defaultCursor;\n    canvas.selection = false;\n    canvas.defaultCursor = 'crosshair';\n    canvasWithDrawing.isDrawingMode = true;\n    configureBrush(context);\n    const pathCreatedCallback = (event) => handlePathCreated(context, event);\n    canvas.on('path:created', pathCreatedCallback);\n    const mouseDownCallback = (event) => handleEraserPointerDown(context, event);\n    const mouseMoveCallback = (event) => handleEraserPointerMove(context, event);\n    const mouseUpCallback = (event) => handleEraserPointerUp(context, event);\n    const mouseOutCallback = () => {\n        const session = context.getDrawSession();\n        if (session)\n            hideEraserPreview(context, session);\n    };\n    canvas.on('mouse:down', mouseDownCallback);\n    canvas.on('mouse:move', mouseMoveCallback);\n    canvas.on('mouse:up', mouseUpCallback);\n    canvas.on('mouse:out', mouseOutCallback);\n    const session = {\n        mode: 'draw',\n        subMode: 'brush',\n        previousDrawingMode,\n        previousBrush,\n        previousCanvasSelection,\n        previousSkipTargetFind,\n        previousDefaultCursor,\n        eraserPreview: null,\n        eraserPoints: [],\n        isErasing: false,\n        handlers: [\n            { eventName: 'path:created', callback: pathCreatedCallback },\n            { eventName: 'mouse:down', callback: mouseDownCallback },\n            { eventName: 'mouse:move', callback: mouseMoveCallback },\n            { eventName: 'mouse:up', callback: mouseUpCallback },\n            { eventName: 'mouse:out', callback: mouseOutCallback },\n        ],\n        dispose: () => {\n            for (const record of session.handlers) {\n                try {\n                    canvas.off(record.eventName, record.callback);\n                }\n                catch {\n                }\n            }\n            removeEraserPreview(context, session);\n            canvasWithDrawing.isDrawingMode = previousDrawingMode;\n            canvasWithDrawing.freeDrawingBrush = previousBrush;\n            canvas.selection = previousCanvasSelection;\n            canvas.skipTargetFind = previousSkipTargetFind;\n            canvas.defaultCursor = previousDefaultCursor !== null && previousDefaultCursor !== void 0 ? previousDefaultCursor : 'default';\n        },\n    };\n    context.setDrawSession(session);\n    context.updateUi();\n}\nexport function exitDrawMode(context) {\n    const session = context.getDrawSession();\n    if (!session)\n        return;\n    session.dispose();\n    context.setDrawSession(null);\n    context.canvas.requestRenderAll();\n    context.updateUi();\n}\nexport function updateDrawBrush(context) {\n    if (!context.getDrawSession())\n        return;\n    configureBrush(context);\n}\nexport function setDrawSubMode(context, subMode) {\n    const session = context.getDrawSession();\n    if (!session)\n        return;\n    if (session.subMode === subMode)\n        return;\n    session.subMode = subMode;\n    session.isErasing = false;\n    session.eraserPoints = [];\n    if (subMode === 'brush') {\n        context.canvas.skipTargetFind = session.previousSkipTargetFind;\n        hideEraserPreview(context, session);\n        configureBrush(context);\n        setDrawingMode(context, true);\n    }\n    else {\n        context.canvas.discardActiveObject();\n        context.canvas.skipTargetFind = true;\n        setDrawingMode(context, false);\n        ensureEraserPreview(context, session).set({ visible: false });\n    }\n    context.canvas.requestRenderAll();\n    context.updateUi();\n}\nexport function updateEraserPreview(context) {\n    const session = context.getDrawSession();\n    if (!session || session.subMode !== 'erase')\n        return;\n    const preview = ensureEraserPreview(context, session);\n    preview.set({ visible: false });\n    context.canvas.requestRenderAll();\n}\n//# sourceMappingURL=draw-controller.js.map","import { markAnnotationObject, markSessionObject } from '../core/editor-object-kind.js';\nimport { placeAnnotationObject, placeSessionObject } from '../core/layer-order.js';\nimport { mergeShapeAnnotationConfigPatch } from '../core/default-options.js';\nimport { getObjectBBox } from '../utils/canvas-region.js';\nimport { resolveNumeric } from '../utils/number.js';\nimport { getPointerFromFabricEvent } from '../utils/pointer.js';\nimport { syncAnnotationRuntimeState } from './annotation-style.js';\nimport { isAnnotationUnlocked } from './annotation-lock.js';\nconst MIN_INTERACTIVE_SHAPE_SIZE = 2;\nfunction resolveDefaultShapePosition(context) {\n    const image = context.getOriginalImage();\n    if (image) {\n        const bounds = getObjectBBox(image);\n        return { left: Math.round(bounds.left + 16), top: Math.round(bounds.top + 16) };\n    }\n    return { left: 16, top: 16 };\n}\nfunction resolveShapeCreationConfig(context, config) {\n    var _a, _b, _c, _d, _e, _f, _g, _h;\n    const base = mergeShapeAnnotationConfigPatch(context.getShapeConfig(), config);\n    const fallback = resolveDefaultShapePosition(context);\n    const leftInput = (_a = config.left) !== null && _a !== void 0 ? _a : base.left;\n    const topInput = (_b = config.top) !== null && _b !== void 0 ? _b : base.top;\n    const x1Input = (_d = (_c = config.x1) !== null && _c !== void 0 ? _c : base.x1) !== null && _d !== void 0 ? _d : leftInput;\n    const y1Input = (_f = (_e = config.y1) !== null && _e !== void 0 ? _e : base.y1) !== null && _f !== void 0 ? _f : topInput;\n    const x2Input = (_g = config.x2) !== null && _g !== void 0 ? _g : base.x2;\n    const y2Input = (_h = config.y2) !== null && _h !== void 0 ? _h : base.y2;\n    const left = resolveNumeric(leftInput, 'x', fallback.left, context.canvas, context.options);\n    const top = resolveNumeric(topInput, 'y', fallback.top, context.canvas, context.options);\n    const x1 = resolveNumeric(x1Input, 'x', left, context.canvas, context.options);\n    const y1 = resolveNumeric(y1Input, 'y', top, context.canvas, context.options);\n    return {\n        ...base,\n        left,\n        top,\n        x1,\n        y1,\n        x2: resolveNumeric(x2Input, 'x', x1 + base.width, context.canvas, context.options),\n        y2: resolveNumeric(y2Input, 'y', y1 + base.height, context.canvas, context.options),\n    };\n}\nfunction geometryFromResolved(config) {\n    var _a, _b, _c, _d, _e, _f, _g, _h;\n    const x1 = (_b = (_a = config.x1) !== null && _a !== void 0 ? _a : config.left) !== null && _b !== void 0 ? _b : 0;\n    const y1 = (_d = (_c = config.y1) !== null && _c !== void 0 ? _c : config.top) !== null && _d !== void 0 ? _d : 0;\n    const x2 = (_e = config.x2) !== null && _e !== void 0 ? _e : x1 + config.width;\n    const y2 = (_f = config.y2) !== null && _f !== void 0 ? _f : y1 + config.height;\n    return {\n        left: (_g = config.left) !== null && _g !== void 0 ? _g : Math.min(x1, x2),\n        top: (_h = config.top) !== null && _h !== void 0 ? _h : Math.min(y1, y2),\n        width: config.width,\n        height: config.height,\n        x1,\n        y1,\n        x2,\n        y2,\n    };\n}\nfunction geometryFromPoints(start, end) {\n    return {\n        left: Math.min(start.x, end.x),\n        top: Math.min(start.y, end.y),\n        width: Math.abs(end.x - start.x),\n        height: Math.abs(end.y - start.y),\n        x1: start.x,\n        y1: start.y,\n        x2: end.x,\n        y2: end.y,\n    };\n}\nfunction buildArrowPath(geometry, headLength) {\n    const { x1, y1, x2, y2 } = geometry;\n    const angle = Math.atan2(y2 - y1, x2 - x1);\n    const length = Math.max(1, headLength);\n    const wingAngle = Math.PI / 7;\n    const head1x = x2 - length * Math.cos(angle - wingAngle);\n    const head1y = y2 - length * Math.sin(angle - wingAngle);\n    const head2x = x2 - length * Math.cos(angle + wingAngle);\n    const head2y = y2 - length * Math.sin(angle + wingAngle);\n    return `M ${x1} ${y1} L ${x2} ${y2} M ${x2} ${y2} L ${head1x} ${head1y} M ${x2} ${y2} L ${head2x} ${head2y}`;\n}\nfunction createShapeFabricObject(context, shape, geometry, config) {\n    const common = {\n        stroke: config.stroke,\n        strokeWidth: config.strokeWidth,\n        strokeDashArray: config.strokeDashArray ? [...config.strokeDashArray] : undefined,\n        opacity: config.opacity,\n        angle: config.angle,\n        selectable: config.selectable,\n        evented: config.evented,\n        originX: 'left',\n        originY: 'top',\n        ...config.styles,\n    };\n    if (shape === 'rect') {\n        return new context.fabric.Rect({\n            left: geometry.left,\n            top: geometry.top,\n            width: Math.max(MIN_INTERACTIVE_SHAPE_SIZE, geometry.width),\n            height: Math.max(MIN_INTERACTIVE_SHAPE_SIZE, geometry.height),\n            fill: config.fill,\n            ...common,\n        });\n    }\n    const path = shape === 'arrow'\n        ? buildArrowPath(geometry, config.arrowHeadLength)\n        : `M ${geometry.x1} ${geometry.y1} L ${geometry.x2} ${geometry.y2}`;\n    return new context.fabric.Path(path, {\n        fill: '',\n        strokeLineCap: 'round',\n        strokeLineJoin: 'round',\n        objectCaching: false,\n        ...common,\n    });\n}\nfunction nextShapeAnnotationMeta(context, config) {\n    const annotationId = context.getAnnotationCounter() + 1;\n    context.setAnnotationCounter(annotationId);\n    return {\n        annotationId,\n        annotationName: `${context.options.shapeAnnotationName}${annotationId}`,\n        annotationHidden: config.annotationHidden,\n        annotationLocked: config.annotationLocked,\n    };\n}\nfunction markShapeAnnotation(context, object, config) {\n    const meta = nextShapeAnnotationMeta(context, config);\n    const annotation = markAnnotationObject(object, {\n        annotationId: meta.annotationId,\n        annotationType: 'shape',\n        annotationName: meta.annotationName,\n        annotationHidden: meta.annotationHidden,\n        annotationLocked: meta.annotationLocked,\n        annotationSelectable: config.selectable,\n        annotationEvented: config.evented,\n        annotationHasControls: object.hasControls !== false,\n    });\n    annotation.shapeAnnotationKind = config.shape;\n    syncAnnotationRuntimeState(annotation);\n    return annotation;\n}\nexport function createShapeAnnotation(context, config = {}) {\n    if (!context.isImageLoaded())\n        return null;\n    const resolved = resolveShapeCreationConfig(context, config);\n    const geometry = geometryFromResolved(resolved);\n    const object = createShapeFabricObject(context, resolved.shape, geometry, resolved);\n    const annotation = markShapeAnnotation(context, object, resolved);\n    placeAnnotationObject(context.canvas, annotation);\n    if (resolved.selectable !== false && isAnnotationUnlocked(annotation)) {\n        context.canvas.setActiveObject(annotation);\n    }\n    context.canvas.renderAll();\n    context.updateAnnotationList();\n    context.saveCanvasState();\n    const callbackContext = context.buildCallbackContext('createShapeAnnotation');\n    context.emitAnnotationsChanged(callbackContext);\n    context.emitImageChanged(callbackContext);\n    return annotation;\n}\nfunction isMeaningfulGeometry(shape, geometry) {\n    if (shape === 'rect') {\n        return (geometry.width >= MIN_INTERACTIVE_SHAPE_SIZE &&\n            geometry.height >= MIN_INTERACTIVE_SHAPE_SIZE);\n    }\n    return (Math.hypot(geometry.x2 - geometry.x1, geometry.y2 - geometry.y1) >=\n        MIN_INTERACTIVE_SHAPE_SIZE);\n}\nfunction createPreviewObject(context, shape, geometry) {\n    const config = { ...context.getShapeConfig(), shape };\n    const preview = createShapeFabricObject(context, shape, geometry, config);\n    preview.set({\n        selectable: false,\n        evented: false,\n        excludeFromExport: true,\n        objectCaching: false,\n    });\n    markSessionObject(preview, 'shapePreview');\n    return preview;\n}\nfunction removePreview(context, session) {\n    if (!session.previewObject)\n        return;\n    try {\n        context.canvas.remove(session.previewObject);\n    }\n    catch {\n    }\n    session.previewObject = null;\n}\nfunction updateActiveSessionShape(context, session, shape) {\n    const changed = session.shape !== shape;\n    session.shape = shape;\n    session.startPoint = null;\n    removePreview(context, session);\n    if (changed) {\n        context.canvas.requestRenderAll();\n        context.updateUi();\n    }\n}\nfunction updatePreview(context, session, pointer) {\n    if (!session.startPoint)\n        return;\n    const geometry = geometryFromPoints(session.startPoint, pointer);\n    removePreview(context, session);\n    if (!isMeaningfulGeometry(session.shape, geometry)) {\n        context.canvas.requestRenderAll();\n        return;\n    }\n    const preview = createPreviewObject(context, session.shape, geometry);\n    session.previewObject = preview;\n    placeSessionObject(context.canvas, preview);\n    context.canvas.requestRenderAll();\n}\nfunction completeInteractiveShape(context, session, pointer) {\n    if (!session.startPoint)\n        return;\n    const geometry = geometryFromPoints(session.startPoint, pointer);\n    session.startPoint = null;\n    removePreview(context, session);\n    if (!isMeaningfulGeometry(session.shape, geometry)) {\n        context.canvas.requestRenderAll();\n        return;\n    }\n    if (session.shape === 'rect') {\n        createShapeAnnotation(context, {\n            shape: 'rect',\n            left: geometry.left,\n            top: geometry.top,\n            width: geometry.width,\n            height: geometry.height,\n        });\n        return;\n    }\n    createShapeAnnotation(context, {\n        shape: session.shape,\n        x1: geometry.x1,\n        y1: geometry.y1,\n        x2: geometry.x2,\n        y2: geometry.y2,\n    });\n}\nfunction attachCanvasHandler(context, session, eventName, callback) {\n    context.canvas.on(eventName, callback);\n    session.handlers.push({ eventName, callback });\n}\nfunction detachCanvasHandlers(context, session) {\n    for (const record of session.handlers) {\n        try {\n            context.canvas.off(record.eventName, record.callback);\n        }\n        catch {\n        }\n    }\n    session.handlers = [];\n}\nexport function enterShapeMode(context, shape) {\n    const existingSession = context.getShapeSession();\n    if (existingSession) {\n        updateActiveSessionShape(context, existingSession, shape);\n        return;\n    }\n    if (!context.isImageLoaded())\n        return;\n    const { canvas } = context;\n    const previousCanvasSelection = !!canvas.selection;\n    const previousDefaultCursor = canvas.defaultCursor;\n    canvas.selection = false;\n    canvas.defaultCursor = 'crosshair';\n    const session = {\n        mode: 'shape',\n        shape,\n        previousCanvasSelection,\n        previousDefaultCursor,\n        startPoint: null,\n        previewObject: null,\n        handlers: [],\n        dispose: () => {\n            detachCanvasHandlers(context, session);\n            removePreview(context, session);\n            canvas.selection = previousCanvasSelection;\n            canvas.defaultCursor = previousDefaultCursor !== null && previousDefaultCursor !== void 0 ? previousDefaultCursor : 'default';\n        },\n    };\n    attachCanvasHandler(context, session, 'mouse:down', (event) => {\n        const pointer = getPointerFromFabricEvent(canvas, event);\n        if (!pointer)\n            return;\n        canvas.discardActiveObject();\n        session.startPoint = pointer;\n    });\n    attachCanvasHandler(context, session, 'mouse:move', (event) => {\n        const pointer = getPointerFromFabricEvent(canvas, event);\n        if (!pointer || !session.startPoint)\n            return;\n        updatePreview(context, session, pointer);\n    });\n    attachCanvasHandler(context, session, 'mouse:up', (event) => {\n        const pointer = getPointerFromFabricEvent(canvas, event);\n        if (!pointer) {\n            session.startPoint = null;\n            removePreview(context, session);\n            return;\n        }\n        completeInteractiveShape(context, session, pointer);\n    });\n    context.setShapeSession(session);\n    context.updateUi();\n}\nexport function syncShapeModeConfig(context) {\n    const session = context.getShapeSession();\n    if (!session)\n        return;\n    updateActiveSessionShape(context, session, context.getShapeConfig().shape);\n}\nexport function exitShapeMode(context) {\n    const session = context.getShapeSession();\n    if (!session)\n        return;\n    session.dispose();\n    context.setShapeSession(null);\n    context.canvas.requestRenderAll();\n    context.updateUi();\n}\n//# sourceMappingURL=shape-controller.js.map","import { enterDrawMode as enterDrawModeImpl, exitDrawMode as exitDrawModeImpl, } from './draw-controller.js';\nimport { createTextAnnotation as createTextAnnotationImpl, enterTextMode as enterTextModeImpl, exitTextMode as exitTextModeImpl, } from './text-controller.js';\nexport function enterTextModeAction(access) {\n    if (!access.getCanvas())\n        return;\n    if (!access.canRunIdleOperation('enterTextMode'))\n        return;\n    if (access.isToolModeActive())\n        return;\n    enterTextModeImpl(access.buildTextControllerContext());\n    const callbackContext = access.buildCallbackContext('enterTextMode', false);\n    access.emitBusyChangeIfChanged(callbackContext);\n    access.emitImageChanged(callbackContext);\n}\nexport function exitTextModeAction(access) {\n    if (!access.getCanvas() || !access.getTextSession())\n        return;\n    if (!access.canRunIdleOperation('exitTextMode'))\n        return;\n    exitTextModeImpl(access.buildTextControllerContext());\n    const callbackContext = access.buildCallbackContext('exitTextMode', false);\n    access.emitBusyChangeIfChanged(callbackContext);\n    access.emitImageChanged(callbackContext);\n}\nexport function createTextAnnotationAction(access, config = {}) {\n    if (!access.getCanvas())\n        return null;\n    if (!access.canRunIdleOperation('createTextAnnotation'))\n        return null;\n    return createTextAnnotationImpl(access.buildTextControllerContext(), config);\n}\nexport function enterDrawModeAction(access) {\n    if (!access.getCanvas())\n        return;\n    if (!access.canRunIdleOperation('enterDrawMode'))\n        return;\n    if (access.isToolModeActive())\n        return;\n    enterDrawModeImpl(access.buildDrawControllerContext());\n    access.updateInputs();\n    const callbackContext = access.buildCallbackContext('enterDrawMode', false);\n    access.emitBusyChangeIfChanged(callbackContext);\n    access.emitImageChanged(callbackContext);\n}\nexport function exitDrawModeAction(access) {\n    if (!access.getCanvas() || !access.getDrawSession())\n        return;\n    if (!access.canRunIdleOperation('exitDrawMode'))\n        return;\n    exitDrawModeImpl(access.buildDrawControllerContext());\n    access.updateInputs();\n    const callbackContext = access.buildCallbackContext('exitDrawMode', false);\n    access.emitBusyChangeIfChanged(callbackContext);\n    access.emitImageChanged(callbackContext);\n}\n//# sourceMappingURL=annotation-mode-actions.js.map","import { areResolvedDrawConfigsEqual, areResolvedTextAnnotationConfigsEqual, getInvalidDrawConfigFields, getInvalidTextAnnotationConfigFields, mergeDrawConfigPatch, mergeTextAnnotationConfigPatch, } from '../core/default-options.js';\nimport { isDrawAnnotationObject, isTextAnnotationObject, } from '../core/public-types.js';\nimport { updateDrawBrush } from './draw-controller.js';\nexport function applyTextConfigPatchAction(access, config, operation) {\n    if (!access.canRunIdleOperation(operation))\n        return;\n    const invalidFields = getInvalidTextAnnotationConfigFields(config);\n    if (invalidFields.length > 0) {\n        access.reportWarning(null, `${operation} ignored invalid Text config fields: ${invalidFields.join(', ')}.`);\n    }\n    const next = mergeTextAnnotationConfigPatch(access.getCurrentTextConfig(), config, access.getDefaultTextConfig());\n    if (areResolvedTextAnnotationConfigsEqual(access.getCurrentTextConfig(), next))\n        return;\n    access.setCurrentTextConfig(next);\n    access.updateInputs();\n    access.updateUi();\n    access.emitImageChanged(access.buildCallbackContext(operation, false));\n}\nexport function applyDrawConfigPatchAction(access, config, operation) {\n    if (!access.canRunIdleOperation(operation))\n        return;\n    const invalidFields = getInvalidDrawConfigFields(config);\n    if (invalidFields.length > 0) {\n        access.reportWarning(null, `${operation} ignored invalid Draw config fields: ${invalidFields.join(', ')}.`);\n    }\n    const next = mergeDrawConfigPatch(access.getCurrentDrawConfig(), config, access.getDefaultDrawConfig());\n    if (areResolvedDrawConfigsEqual(access.getCurrentDrawConfig(), next))\n        return;\n    access.setCurrentDrawConfig(next);\n    updateDrawBrush(access.buildDrawControllerContext());\n    access.updateInputs();\n    access.updateUi();\n    access.emitImageChanged(access.buildCallbackContext(operation, false));\n}\nexport function applyTextColorInputAction(access, color) {\n    var _a;\n    if (access.isTextMode()) {\n        access.setTextColor(color);\n        return;\n    }\n    const selected = (_a = access.getCanvas()) === null || _a === void 0 ? void 0 : _a.getActiveObject();\n    if (selected && isTextAnnotationObject(selected)) {\n        access.updateSelectedAnnotation({ fill: color });\n        return;\n    }\n    access.setTextColor(color);\n}\nexport function applyTextFontSizeInputAction(access, size) {\n    var _a;\n    if (access.isTextMode()) {\n        access.setTextFontSize(size);\n        return;\n    }\n    const selected = (_a = access.getCanvas()) === null || _a === void 0 ? void 0 : _a.getActiveObject();\n    if (selected && isTextAnnotationObject(selected)) {\n        access.updateSelectedAnnotation({ fontSize: size });\n        return;\n    }\n    access.setTextFontSize(size);\n}\nexport function applyDrawColorInputAction(access, color) {\n    var _a;\n    if (access.isDrawMode()) {\n        access.setDrawColor(color);\n        return;\n    }\n    const selected = (_a = access.getCanvas()) === null || _a === void 0 ? void 0 : _a.getActiveObject();\n    if (selected && isDrawAnnotationObject(selected)) {\n        access.updateSelectedAnnotation({ stroke: color });\n        return;\n    }\n    access.setDrawColor(color);\n}\nexport function applyDrawBrushSizeInputAction(access, size) {\n    var _a;\n    if (access.isDrawMode()) {\n        access.setDrawBrushSize(size);\n        return;\n    }\n    const selected = (_a = access.getCanvas()) === null || _a === void 0 ? void 0 : _a.getActiveObject();\n    if (selected && isDrawAnnotationObject(selected)) {\n        access.updateSelectedAnnotation({ strokeWidth: size });\n        return;\n    }\n    access.setDrawBrushSize(size);\n}\n//# sourceMappingURL=annotation-config-actions.js.map","import { reportWarning } from '../core/callback-reporter.js';\nimport { CropApplyError } from '../core/errors.js';\nimport { markSessionObject } from '../core/editor-object-kind.js';\nimport { isMaskObject } from '../core/public-types.js';\nimport { Command } from '../history/history-manager.js';\nimport { applyCropHideMaskStyle, captureMaskStyleBackup, reattachMaskHoverHandlers, restoreMaskStyleBackup, } from '../mask/mask-style.js';\nimport { getClampedCanvasRegion, getObjectBBox, hasMeaningfulCanvasRegion, } from '../utils/canvas-region.js';\nimport { clampQuality as clampExportQuality, mimeTypeFor, tryNormalizeImageFormat, } from '../export/export-format.js';\nconst CROP_RECT_FILL = 'rgba(0,0,0,0.12)';\nconst CROP_RECT_STROKE = '#00aaff';\nconst CROP_RECT_DASH = [6, 4];\nconst CROP_RECT_CORNER_SIZE = 8;\nconst CROP_DEFAULT_PADDING = 10;\nconst CROPPED_EXPORT_QUALITY_FALLBACK = 0.92;\nfunction finiteNumberOrFallback(value, fallback) {\n    const numeric = Number(value);\n    return Number.isFinite(numeric) ? numeric : fallback;\n}\nfunction imageMimeToFormat(mimeType) {\n    if (mimeType === 'image/jpeg')\n        return 'jpeg';\n    if (mimeType === 'image/png')\n        return 'png';\n    if (mimeType === 'image/webp')\n        return 'webp';\n    return null;\n}\nfunction resolveLossyCropQuality(cropExportQuality, downsampleQuality) {\n    const cropQuality = Number(cropExportQuality);\n    if (Number.isFinite(cropQuality)) {\n        return clampExportQuality(cropQuality, CROPPED_EXPORT_QUALITY_FALLBACK);\n    }\n    const fallbackQuality = Number(downsampleQuality);\n    if (Number.isFinite(fallbackQuality)) {\n        return clampExportQuality(fallbackQuality, CROPPED_EXPORT_QUALITY_FALLBACK);\n    }\n    return CROPPED_EXPORT_QUALITY_FALLBACK;\n}\nfunction resolveCropExportFormat(input) {\n    var _a, _b;\n    const requested = input.cropExportFileType;\n    const format = requested === undefined || requested === null || requested === 'source'\n        ? ((_a = imageMimeToFormat(input.currentImageMimeType)) !== null && _a !== void 0 ? _a : 'png')\n        : ((_b = tryNormalizeImageFormat(String(requested))) !== null && _b !== void 0 ? _b : 'png');\n    const mimeType = mimeTypeFor(format);\n    if (format === 'png')\n        return { format, mimeType };\n    return {\n        format,\n        mimeType,\n        quality: resolveLossyCropQuality(input.cropExportQuality, input.downsampleQuality),\n    };\n}\nfunction getCropRectContentBounds(cropRect) {\n    const angle = Number(cropRect.angle) || 0;\n    const normalizedAngle = Math.abs(angle % 360);\n    if (normalizedAngle > 0.01 && Math.abs(normalizedAngle - 360) > 0.01) {\n        return getObjectBBox(cropRect);\n    }\n    return {\n        left: Number(cropRect.left) || 0,\n        top: Number(cropRect.top) || 0,\n        width: Math.max(0, (Number(cropRect.width) || 0) * Math.abs(Number(cropRect.scaleX) || 1)),\n        height: Math.max(0, (Number(cropRect.height) || 0) * Math.abs(Number(cropRect.scaleY) || 1)),\n    };\n}\nfunction removeCropRect(context, session) {\n    for (const targetHandlers of session.handlers) {\n        for (const record of targetHandlers.handlers) {\n            try {\n                targetHandlers.target.off(record.eventName, record.callback);\n            }\n            catch {\n            }\n        }\n    }\n    session.handlers = [];\n    if (session.cropRect) {\n        try {\n            context.canvas.remove(session.cropRect);\n        }\n        catch {\n        }\n        session.cropRect = null;\n    }\n}\nfunction restoreCropObjectState(session) {\n    for (const record of session.prevEvented) {\n        try {\n            record.object.set({ evented: record.evented, selectable: record.selectable });\n        }\n        catch {\n        }\n    }\n    session.prevEvented = [];\n}\nfunction restoreCropMaskBackups(session) {\n    for (const backup of session.maskBackups) {\n        restoreMaskStyleBackup(backup);\n    }\n    session.maskBackups = [];\n}\nfunction teardownSession(context, session) {\n    removeCropRect(context, session);\n    restoreCropObjectState(session);\n    restoreCropMaskBackups(session);\n    try {\n        context.canvas.selection = !!session.prevSelection;\n    }\n    catch {\n    }\n}\nfunction finitePositiveRatio(numerator, denominator) {\n    const ratio = Number(numerator) / Number(denominator);\n    return Number.isFinite(ratio) && ratio > 0 ? ratio : 1;\n}\nfunction resolvePostCropMaskPlacement(context, cropRegion) {\n    const postCropImage = context.getOriginalImage();\n    if (!postCropImage) {\n        return { left: 0, top: 0, scaleX: 1, scaleY: 1 };\n    }\n    postCropImage.setCoords();\n    const imageBounds = postCropImage.getBoundingRect();\n    return {\n        left: finiteNumberOrFallback(imageBounds.left, 0),\n        top: finiteNumberOrFallback(imageBounds.top, 0),\n        scaleX: finitePositiveRatio(imageBounds.width, cropRegion.width),\n        scaleY: finitePositiveRatio(imageBounds.height, cropRegion.height),\n    };\n}\nfunction maskIntersectsRegion(mask, region) {\n    const bbox = getObjectBBox(mask);\n    return (bbox.left < region.left + region.width &&\n        bbox.left + bbox.width > region.left &&\n        bbox.top < region.top + region.height &&\n        bbox.top + bbox.height > region.top);\n}\nfunction capturePreservedMasks(canvas, cropRegion, maskBackups = []) {\n    var _a;\n    const records = [];\n    const styleBackupByMask = maskBackups.length > 0\n        ? new Map(maskBackups.map((backup) => [backup.object, backup]))\n        : null;\n    const masks = canvas.getObjects().filter(isMaskObject);\n    for (const mask of masks) {\n        try {\n            mask.setCoords();\n            const intersects = maskIntersectsRegion(mask, cropRegion);\n            if (intersects) {\n                const styleBackup = (_a = styleBackupByMask === null || styleBackupByMask === void 0 ? void 0 : styleBackupByMask.get(mask)) !== null && _a !== void 0 ? _a : captureMaskStyleBackup(mask);\n                records.push({\n                    mask,\n                    left: finiteNumberOrFallback(mask.left, 0),\n                    top: finiteNumberOrFallback(mask.top, 0),\n                    angle: finiteNumberOrFallback(mask.angle, 0),\n                    scaleX: finiteNumberOrFallback(mask.scaleX, 1),\n                    scaleY: finiteNumberOrFallback(mask.scaleY, 1),\n                    styleBackup,\n                });\n            }\n            canvas.remove(mask);\n        }\n        catch {\n        }\n    }\n    return records;\n}\nfunction reapplyPreservedMasks(context, cropRegion, records) {\n    var _a;\n    if (records.length === 0)\n        return;\n    const { canvas } = context;\n    const placement = resolvePostCropMaskPlacement(context, cropRegion);\n    let maxRestoredId = 0;\n    for (const record of records) {\n        try {\n            restoreMaskStyleBackup(record.styleBackup);\n            record.mask.set({\n                left: placement.left + (record.left - cropRegion.left) * placement.scaleX,\n                top: placement.top + (record.top - cropRegion.top) * placement.scaleY,\n                angle: record.angle,\n                scaleX: record.scaleX * placement.scaleX,\n                scaleY: record.scaleY * placement.scaleY,\n                visible: true,\n            });\n            record.mask.setCoords();\n            canvas.add(record.mask);\n            canvas.bringObjectToFront(record.mask);\n            reattachMaskHoverHandlers(record.mask);\n            const id = Number(record.mask.maskId);\n            if (Number.isFinite(id) && id > maxRestoredId)\n                maxRestoredId = id;\n        }\n        catch {\n        }\n    }\n    if (typeof context.getMaskCounter === 'function' &&\n        typeof context.setMaskCounter === 'function') {\n        const liveCounter = Number(context.getMaskCounter());\n        const safeCounter = Number.isFinite(liveCounter) ? liveCounter : 0;\n        context.setMaskCounter(Math.max(safeCounter, maxRestoredId));\n    }\n    try {\n        (_a = context.updateMaskList) === null || _a === void 0 ? void 0 : _a.call(context);\n    }\n    catch {\n    }\n}\nconst CROP_ASPECT_RATIO_PRESETS = Object.freeze({\n    free: null,\n    '1:1': 1,\n    '3:4': 3 / 4,\n    '4:3': 4 / 3,\n    '3:2': 3 / 2,\n    '2:3': 2 / 3,\n    '9:16': 9 / 16,\n    '16:9': 16 / 9,\n});\nexport function normalizeCropAspectRatio(input) {\n    var _a;\n    if (input === null || input === undefined)\n        return null;\n    if (typeof input === 'number') {\n        return Number.isFinite(input) && input > 0 ? input : null;\n    }\n    if (typeof input === 'string') {\n        const trimmed = input.trim();\n        if (Object.prototype.hasOwnProperty.call(CROP_ASPECT_RATIO_PRESETS, trimmed)) {\n            return (_a = CROP_ASPECT_RATIO_PRESETS[trimmed]) !== null && _a !== void 0 ? _a : null;\n        }\n        const parts = trimmed.split(':');\n        if (parts.length !== 2)\n            return null;\n        const width = Number(parts[0]);\n        const height = Number(parts[1]);\n        return Number.isFinite(width) && width > 0 && Number.isFinite(height) && height > 0\n            ? width / height\n            : null;\n    }\n    if (typeof input === 'object') {\n        const width = Number(input.width);\n        const height = Number(input.height);\n        return Number.isFinite(width) && width > 0 && Number.isFinite(height) && height > 0\n            ? width / height\n            : null;\n    }\n    return null;\n}\nfunction fitAspectRatioInside(maxWidth, maxHeight, aspectRatio) {\n    const safeMaxWidth = Math.max(1, maxWidth);\n    const safeMaxHeight = Math.max(1, maxHeight);\n    let width = safeMaxWidth;\n    let height = width / aspectRatio;\n    if (height > safeMaxHeight) {\n        height = safeMaxHeight;\n        width = height * aspectRatio;\n    }\n    return {\n        width: Math.max(1, width),\n        height: Math.max(1, height),\n    };\n}\nfunction minimumAspectRatioSizeThatFits(minWidth, minHeight, maxWidth, maxHeight, aspectRatio) {\n    let width = Math.max(1, minWidth);\n    let height = width / aspectRatio;\n    if (height < minHeight) {\n        height = Math.max(1, minHeight);\n        width = height * aspectRatio;\n    }\n    return width <= maxWidth && height <= maxHeight ? { width, height } : null;\n}\nfunction chooseAspectRatioResizeBasis(canvas, cropRect, scaleX, scaleY) {\n    var _a, _b, _c;\n    const corner = String((_c = (_a = cropRect.__corner) !== null && _a !== void 0 ? _a : (_b = canvas._currentTransform) === null || _b === void 0 ? void 0 : _b.corner) !== null && _c !== void 0 ? _c : '').toLowerCase();\n    if (corner === 'mt' || corner === 'mb')\n        return 'height';\n    if (corner === 'ml' || corner === 'mr')\n        return 'width';\n    return Math.abs(scaleY - 1) > Math.abs(scaleX - 1) ? 'height' : 'width';\n}\nfunction constrainAspectRatioSize(requestedWidth, requestedHeight, basis, aspectRatio, minWidth, minHeight, maxWidth, maxHeight) {\n    var _a;\n    const maxSize = fitAspectRatioInside(maxWidth, maxHeight, aspectRatio);\n    const minSize = (_a = minimumAspectRatioSizeThatFits(minWidth, minHeight, maxSize.width, maxSize.height, aspectRatio)) !== null && _a !== void 0 ? _a : maxSize;\n    let width = basis === 'height' ? requestedHeight * aspectRatio : requestedWidth;\n    let height = basis === 'height' ? requestedHeight : requestedWidth / aspectRatio;\n    if (width > maxSize.width || height > maxSize.height) {\n        ({ width, height } = maxSize);\n    }\n    if (width < minSize.width || height < minSize.height) {\n        ({ width, height } = minSize);\n    }\n    return { width, height };\n}\nfunction resolvePaddedCropArea(boundsLeft, boundsTop, maxCropWidth, maxCropHeight, padding) {\n    const insetX = padding * 2 < maxCropWidth ? padding : 0;\n    const insetY = padding * 2 < maxCropHeight ? padding : 0;\n    return {\n        left: boundsLeft + insetX,\n        top: boundsTop + insetY,\n        width: Math.max(1, maxCropWidth - insetX * 2),\n        height: Math.max(1, maxCropHeight - insetY * 2),\n    };\n}\nfunction resolveCropBounds(context) {\n    const originalImage = context.getOriginalImage();\n    if (!originalImage)\n        return null;\n    originalImage.setCoords();\n    const { options } = context;\n    const imageBounds = originalImage.getBoundingRect();\n    const padding = Number.isFinite(Number(options.crop.padding))\n        ? Number(options.crop.padding)\n        : CROP_DEFAULT_PADDING;\n    const boundsLeft = Math.max(0, Math.floor(imageBounds.left));\n    const boundsTop = Math.max(0, Math.floor(imageBounds.top));\n    const maxCropWidth = Math.max(1, Math.floor(imageBounds.width));\n    const maxCropHeight = Math.max(1, Math.floor(imageBounds.height));\n    const configuredMinWidth = Math.max(1, Number(options.crop.minWidth) || 1);\n    const configuredMinHeight = Math.max(1, Number(options.crop.minHeight) || 1);\n    return {\n        boundsLeft,\n        boundsTop,\n        maxCropWidth,\n        maxCropHeight,\n        minCropWidth: Math.min(configuredMinWidth, maxCropWidth),\n        minCropHeight: Math.min(configuredMinHeight, maxCropHeight),\n        padding,\n        imageBounds,\n    };\n}\nfunction clampCropRectIntoBounds(cropRect, bounds) {\n    const width = Math.min(bounds.maxCropWidth, Math.max(bounds.minCropWidth, (Number(cropRect.width) || 1) * (Number(cropRect.scaleX) || 1)));\n    const height = Math.min(bounds.maxCropHeight, Math.max(bounds.minCropHeight, (Number(cropRect.height) || 1) * (Number(cropRect.scaleY) || 1)));\n    const left = Math.min(bounds.boundsLeft + bounds.maxCropWidth - width, Math.max(bounds.boundsLeft, Number(cropRect.left) || bounds.boundsLeft));\n    const top = Math.min(bounds.boundsTop + bounds.maxCropHeight - height, Math.max(bounds.boundsTop, Number(cropRect.top) || bounds.boundsTop));\n    cropRect.set({ left, top, width, height, scaleX: 1, scaleY: 1 });\n}\nfunction resizeCropRectToAspectRatio(context, cropRect, aspectRatio) {\n    const bounds = resolveCropBounds(context);\n    if (!bounds)\n        return;\n    if (aspectRatio === null) {\n        clampCropRectIntoBounds(cropRect, bounds);\n        cropRect.setCoords();\n        return;\n    }\n    const available = resolvePaddedCropArea(bounds.boundsLeft, bounds.boundsTop, bounds.maxCropWidth, bounds.maxCropHeight, bounds.padding);\n    const fitted = fitAspectRatioInside(available.width, available.height, aspectRatio);\n    cropRect.set({\n        left: available.left + (available.width - fitted.width) / 2,\n        top: available.top + (available.height - fitted.height) / 2,\n        width: fitted.width,\n        height: fitted.height,\n        scaleX: 1,\n        scaleY: 1,\n    });\n    cropRect.setCoords();\n}\nfunction updateCropRectControlVisibility(cropRect, aspectRatio, allowRotationOfCropRect) {\n    const lockedRatio = aspectRatio !== null;\n    cropRect.setControlsVisibility({\n        tl: true,\n        tr: true,\n        br: true,\n        bl: true,\n        mt: !lockedRatio,\n        mb: !lockedRatio,\n        ml: !lockedRatio,\n        mr: !lockedRatio,\n        mtr: allowRotationOfCropRect,\n    });\n    cropRect.setCoords();\n}\nexport function enterCropMode(context, cropModeOptions = {}) {\n    var _a;\n    const { canvas, options } = context;\n    if (context.getCropSession())\n        return;\n    const originalImage = context.getOriginalImage();\n    if (!originalImage)\n        return;\n    if (!context.isImageLoaded())\n        return;\n    canvas.discardActiveObject();\n    const beforeJson = context.saveState();\n    const prevSelection = !!canvas.selection;\n    canvas.selection = false;\n    originalImage.setCoords();\n    const imageBounds = originalImage.getBoundingRect();\n    const padding = Number.isFinite(Number(options.crop.padding))\n        ? Number(options.crop.padding)\n        : CROP_DEFAULT_PADDING;\n    const boundsLeft = Math.max(0, Math.floor(imageBounds.left));\n    const boundsTop = Math.max(0, Math.floor(imageBounds.top));\n    const maxCropWidth = Math.max(1, Math.floor(imageBounds.width));\n    const maxCropHeight = Math.max(1, Math.floor(imageBounds.height));\n    const configuredMinWidth = Math.max(1, Number(options.crop.minWidth) || 1);\n    const configuredMinHeight = Math.max(1, Number(options.crop.minHeight) || 1);\n    const minCropWidth = Math.min(configuredMinWidth, maxCropWidth);\n    const minCropHeight = Math.min(configuredMinHeight, maxCropHeight);\n    const allowRotation = !!options.crop.allowRotationOfCropRect;\n    const aspectRatio = normalizeCropAspectRatio((_a = cropModeOptions.aspectRatio) !== null && _a !== void 0 ? _a : options.crop.aspectRatio);\n    let rectLeft;\n    let rectTop;\n    let rectWidth;\n    let rectHeight;\n    const available = resolvePaddedCropArea(boundsLeft, boundsTop, maxCropWidth, maxCropHeight, padding);\n    if (aspectRatio === null) {\n        rectWidth = Math.max(minCropWidth, available.width);\n        rectHeight = Math.max(minCropHeight, available.height);\n        rectLeft = Math.min(boundsLeft + maxCropWidth - rectWidth, Math.max(boundsLeft, available.left + (available.width - rectWidth) / 2));\n        rectTop = Math.min(boundsTop + maxCropHeight - rectHeight, Math.max(boundsTop, available.top + (available.height - rectHeight) / 2));\n    }\n    else {\n        const fitted = fitAspectRatioInside(available.width, available.height, aspectRatio);\n        rectWidth = fitted.width;\n        rectHeight = fitted.height;\n        rectLeft = available.left + (available.width - rectWidth) / 2;\n        rectTop = available.top + (available.height - rectHeight) / 2;\n    }\n    const cropRect = new context.fabric.Rect({\n        left: rectLeft,\n        top: rectTop,\n        width: rectWidth,\n        height: rectHeight,\n        originX: 'left',\n        originY: 'top',\n        fill: CROP_RECT_FILL,\n        stroke: CROP_RECT_STROKE,\n        strokeDashArray: CROP_RECT_DASH,\n        strokeWidth: 1,\n        strokeUniform: true,\n        selectable: true,\n        lockRotation: !allowRotation,\n        cornerSize: CROP_RECT_CORNER_SIZE,\n        objectCaching: false,\n        lockScalingFlip: true,\n    });\n    updateCropRectControlVisibility(cropRect, aspectRatio, allowRotation);\n    canvas.add(cropRect);\n    markSessionObject(cropRect, 'cropRect');\n    cropRect.isCropRect = true;\n    canvas.bringObjectToFront(cropRect);\n    canvas.setActiveObject(cropRect);\n    const hideMasks = !!options.crop.hideMasksDuringCrop;\n    const maskBackups = [];\n    if (hideMasks) {\n        canvas.getObjects().forEach((object) => {\n            if (object === cropRect)\n                return;\n            if (!isMaskObject(object))\n                return;\n            maskBackups.push(captureMaskStyleBackup(object));\n        });\n    }\n    const prevEvented = [];\n    canvas.getObjects().forEach((object) => {\n        var _a, _b;\n        if (object === cropRect)\n            return;\n        prevEvented.push({\n            object,\n            evented: (_a = object.evented) !== null && _a !== void 0 ? _a : true,\n            selectable: (_b = object.selectable) !== null && _b !== void 0 ? _b : true,\n        });\n        try {\n            object.set({ evented: false, selectable: false });\n        }\n        catch {\n        }\n    });\n    if (hideMasks) {\n        for (const backup of maskBackups) {\n            applyCropHideMaskStyle(backup.object);\n        }\n    }\n    const handleCropRectModified = () => {\n        try {\n            const cropWidth = Math.max(1, Number(cropRect.width) || 1);\n            const cropHeight = Math.max(1, Number(cropRect.height) || 1);\n            let nextScaleX;\n            let nextScaleY;\n            const activeSession = context.getCropSession();\n            const activeAspectRatio = activeSession ? activeSession.aspectRatio : aspectRatio;\n            if (activeAspectRatio === null) {\n                nextScaleX = Math.min(maxCropWidth / cropWidth, Math.max(minCropWidth / cropWidth, Number(cropRect.scaleX) || 1));\n                nextScaleY = Math.min(maxCropHeight / cropHeight, Math.max(minCropHeight / cropHeight, Number(cropRect.scaleY) || 1));\n            }\n            else {\n                const rawScaleX = Math.max(0.0001, Number(cropRect.scaleX) || 1);\n                const rawScaleY = Math.max(0.0001, Number(cropRect.scaleY) || 1);\n                const basis = chooseAspectRatioResizeBasis(canvas, cropRect, rawScaleX, rawScaleY);\n                const constrained = constrainAspectRatioSize(cropWidth * rawScaleX, cropHeight * rawScaleY, basis, activeAspectRatio, minCropWidth, minCropHeight, maxCropWidth, maxCropHeight);\n                nextScaleX = constrained.width / cropWidth;\n                nextScaleY = constrained.height / cropHeight;\n            }\n            const scaledWidth = cropWidth * nextScaleX;\n            const scaledHeight = cropHeight * nextScaleY;\n            const maxLeft = Math.max(boundsLeft, boundsLeft + maxCropWidth - scaledWidth);\n            const maxTop = Math.max(boundsTop, boundsTop + maxCropHeight - scaledHeight);\n            const nextLeft = Math.min(maxLeft, Math.max(boundsLeft, Number(cropRect.left) || boundsLeft));\n            const nextTop = Math.min(maxTop, Math.max(boundsTop, Number(cropRect.top) || boundsTop));\n            cropRect.set({\n                left: nextLeft,\n                top: nextTop,\n                scaleX: nextScaleX,\n                scaleY: nextScaleY,\n            });\n            cropRect.setCoords();\n            canvas.requestRenderAll();\n        }\n        catch {\n        }\n    };\n    cropRect.on('modified', handleCropRectModified);\n    cropRect.on('moving', handleCropRectModified);\n    cropRect.on('scaling', handleCropRectModified);\n    const session = {\n        beforeJson,\n        prevSelection,\n        prevEvented,\n        maskBackups,\n        cropRect,\n        aspectRatio,\n        handlers: [\n            {\n                target: cropRect,\n                handlers: [\n                    { eventName: 'modified', callback: handleCropRectModified },\n                    { eventName: 'moving', callback: handleCropRectModified },\n                    { eventName: 'scaling', callback: handleCropRectModified },\n                ],\n            },\n        ],\n    };\n    context.setCropSession(session);\n    canvas.renderAll();\n}\nexport function setCropAspectRatio(context, aspectRatioInput) {\n    const session = context.getCropSession();\n    if (!(session === null || session === void 0 ? void 0 : session.cropRect))\n        return;\n    const aspectRatio = normalizeCropAspectRatio(aspectRatioInput);\n    session.aspectRatio = aspectRatio;\n    resizeCropRectToAspectRatio(context, session.cropRect, aspectRatio);\n    updateCropRectControlVisibility(session.cropRect, aspectRatio, !!context.options.crop.allowRotationOfCropRect);\n    context.canvas.setActiveObject(session.cropRect);\n    context.canvas.requestRenderAll();\n}\nexport function cancelCrop(context) {\n    const session = context.getCropSession();\n    if (!session)\n        return;\n    context.canvas.discardActiveObject();\n    teardownSession(context, session);\n    context.setCropSession(null);\n    try {\n        context.canvas.renderAll();\n    }\n    catch {\n    }\n}\nexport async function applyCrop(context) {\n    var _a, _b;\n    const session = context.getCropSession();\n    if (!session || !session.cropRect)\n        return;\n    const { canvas } = context;\n    canvas.discardActiveObject();\n    const beforeJson = session.beforeJson;\n    const cropRect = session.cropRect;\n    const preserveMasks = !!context.options.crop.preserveMasksAfterCrop;\n    try {\n        cropRect.setCoords();\n        const cropAngle = Number(cropRect.angle) || 0;\n        if (!context.options.crop.allowRotationOfCropRect && Math.abs(cropAngle % 360) > 0.01) {\n            throw new CropApplyError('applyCrop failed: rotated crop rectangles are disabled.');\n        }\n        const rectBounds = getCropRectContentBounds(cropRect);\n        if (!hasMeaningfulCanvasRegion(rectBounds, canvas.getWidth(), canvas.getHeight())) {\n            throw new CropApplyError('applyCrop failed: crop region is empty or outside the canvas.');\n        }\n        const cropRegion = getClampedCanvasRegion(rectBounds, canvas.getWidth(), canvas.getHeight(), { includePartialPixels: false });\n        const preservedRecords = preserveMasks\n            ? capturePreservedMasks(canvas, cropRegion, session.maskBackups)\n            : [];\n        restoreCropObjectState(session);\n        removeCropRect(context, session);\n        canvas.selection = !!session.prevSelection;\n        const cropFormat = resolveCropExportFormat({\n            cropExportFileType: context.options.crop.exportFileType,\n            currentImageMimeType: (_b = (_a = context.getCurrentImageMimeType) === null || _a === void 0 ? void 0 : _a.call(context)) !== null && _b !== void 0 ? _b : null,\n            cropExportQuality: context.options.crop.exportQuality,\n            downsampleQuality: context.options.downsampleQuality,\n        });\n        const exportOptions = {\n            format: cropFormat.format,\n            multiplier: 1,\n            left: cropRegion.left,\n            top: cropRegion.top,\n            width: cropRegion.width,\n            height: cropRegion.height,\n        };\n        if (cropFormat.quality !== undefined) {\n            exportOptions.quality = cropFormat.quality;\n        }\n        const croppedBase64 = canvas.toDataURL(exportOptions);\n        await context.loadImage(croppedBase64);\n        if (preservedRecords.length > 0) {\n            reapplyPreservedMasks(context, cropRegion, preservedRecords);\n            canvas.renderAll();\n        }\n        const afterJson = context.saveState();\n        context.setCropSession(null);\n        if (beforeJson && afterJson && beforeJson !== afterJson) {\n            context.historyManager.push(new Command(() => context.loadFromState(afterJson), () => context.loadFromState(beforeJson)));\n        }\n    }\n    catch (error) {\n        teardownSession(context, session);\n        context.setCropSession(null);\n        try {\n            await context.loadFromState(beforeJson);\n        }\n        catch (rollbackError) {\n            reportWarning(context.options, rollbackError, 'applyCrop rollback failed.');\n        }\n        if (error instanceof CropApplyError)\n            throw error;\n        const message = error instanceof Error ? `applyCrop failed: ${error.message}` : 'applyCrop failed';\n        throw new CropApplyError(message, error);\n    }\n}\n//# sourceMappingURL=crop-controller.js.map","export async function runBusyOperation(access, operation, body) {\n    const context = access.buildCallbackContext(operation, false);\n    const token = access.beginBusyOperation(operation);\n    access.emitBusyChangeIfChanged(context);\n    access.updateUi();\n    try {\n        return await body(context, token);\n    }\n    finally {\n        access.endBusyOperation(token);\n        access.emitBusyChangeIfChanged(context);\n        access.updateUi();\n    }\n}\nexport async function runBusyOperationWithoutUi(access, operation, body) {\n    const context = access.buildCallbackContext(operation, false);\n    const token = access.beginBusyOperation(operation);\n    access.emitBusyChangeIfChanged(context);\n    try {\n        return await body(context, token);\n    }\n    finally {\n        access.endBusyOperation(token);\n        access.emitBusyChangeIfChanged(context);\n    }\n}\n//# sourceMappingURL=editor-operation-runner.js.map","import { runBusyOperation } from '../runtime/editor-operation-runner.js';\nimport { applyCrop as applyCropImpl, cancelCrop as cancelCropImpl, enterCropMode as enterCropModeImpl, setCropAspectRatio as setCropAspectRatioImpl, } from './crop-controller.js';\nexport function enterCropModeAction(access, options = {}) {\n    if (!access.getCanvas() || !access.getOriginalImage())\n        return;\n    if (access.getCropSession())\n        return;\n    if (!access.isImageLoaded())\n        return;\n    if (!access.canRunIdleOperation('enterCropMode'))\n        return;\n    enterCropModeImpl(access.buildCropControllerContext(), options);\n    access.updateUi();\n    const callbackContext = access.buildCallbackContext('enterCropMode', false);\n    access.emitBusyChangeIfChanged(callbackContext);\n    access.emitImageChanged(callbackContext);\n}\nexport function setCropAspectRatioAction(access, aspectRatio) {\n    if (!access.getCanvas() || !access.getCropSession())\n        return;\n    if (!access.canRunIdleOperation('setCropAspectRatio'))\n        return;\n    setCropAspectRatioImpl(access.buildCropControllerContext(), aspectRatio);\n    access.updateUi();\n    const callbackContext = access.buildCallbackContext('setCropAspectRatio', false);\n    access.emitImageChanged(callbackContext);\n}\nexport function cancelCropAction(access) {\n    const canvas = access.getCanvas();\n    if (!canvas || !access.getCropSession())\n        return;\n    if (!access.canRunIdleOperation('cancelCrop'))\n        return;\n    cancelCropImpl(access.buildCropControllerContext());\n    access.setCropSession(null);\n    access.updateUi();\n    canvas.requestRenderAll();\n    const callbackContext = access.buildCallbackContext('cancelCrop', false);\n    access.emitBusyChangeIfChanged(callbackContext);\n    access.emitImageChanged(callbackContext);\n}\nexport async function applyCropAction(access) {\n    if (!access.getCanvas() || !access.getCropSession())\n        return;\n    if (!access.canRunIdleOperation('applyCrop'))\n        return;\n    const hadMasks = access.getMasks().length > 0;\n    await runBusyOperation(access.buildBusyOperationAccess(), 'applyCrop', async (callbackContext, operationToken) => {\n        await applyCropImpl(access.buildCropControllerContext(operationToken));\n        access.updateInputs();\n        access.updateMaskList();\n        if (hadMasks || access.getMasks().length > 0) {\n            access.emitMasksChanged(callbackContext);\n        }\n        access.emitImageChanged(callbackContext);\n    });\n}\n//# sourceMappingURL=crop-actions.js.map","import { hasActiveImageFilters } from '../core/image-filter-config.js';\nfunction getFiltersRegistry(fabric) {\n    var _a;\n    return ((_a = fabric.filters) !== null && _a !== void 0 ? _a : {});\n}\nfunction createFilter(registry, name, options) {\n    const FilterConstructor = registry[name];\n    return FilterConstructor ? new FilterConstructor(options) : null;\n}\nfunction createMissingFilterError(missing) {\n    return new TypeError(`[ImageEditor] Fabric image filter constructor(s) unavailable: ${missing.join(', ')}.`);\n}\nfunction reportMissingImageFilters(missing, reportMissing) {\n    if (missing.length === 0 || !reportMissing)\n        return;\n    reportMissing(createMissingFilterError(missing), `Image filter(s) not supported by the active Fabric build: ${missing.join(', ')}.`);\n}\nexport function buildFabricImageFilters(fabric, config) {\n    const registry = getFiltersRegistry(fabric);\n    const filters = [];\n    const missing = [];\n    const push = (configKey, filterName, options) => {\n        const filter = createFilter(registry, filterName, options);\n        if (filter)\n            filters.push(filter);\n        else\n            missing.push(configKey);\n    };\n    if (config.brightness !== 0) {\n        push('brightness', 'Brightness', { brightness: config.brightness });\n    }\n    if (config.contrast !== 0) {\n        push('contrast', 'Contrast', { contrast: config.contrast });\n    }\n    if (config.saturation !== 0) {\n        push('saturation', 'Saturation', { saturation: config.saturation });\n    }\n    if (config.grayscale)\n        push('grayscale', 'Grayscale');\n    if (config.sepia)\n        push('sepia', 'Sepia');\n    if (config.vintage)\n        push('vintage', 'Vintage');\n    if (config.blur > 0)\n        push('blur', 'Blur', { blur: config.blur });\n    if (config.sharpen > 0) {\n        const s = config.sharpen;\n        push('sharpen', 'Convolute', {\n            matrix: [0, -s, 0, -s, 1 + 4 * s, -s, 0, -s, 0],\n        });\n    }\n    return { filters, missing };\n}\nexport function applyImageFilterConfigToImage(fabric, image, config, reportMissing) {\n    var _a;\n    const imageWithFilters = image;\n    const result = buildFabricImageFilters(fabric, config);\n    imageWithFilters.filters = result.filters;\n    (_a = imageWithFilters.applyFilters) === null || _a === void 0 ? void 0 : _a.call(imageWithFilters);\n    imageWithFilters.dirty = true;\n    reportMissingImageFilters(result.missing, reportMissing);\n    return result;\n}\nexport function getFilteredBaseImageDataUrl(image, config, fallback) {\n    if (!hasActiveImageFilters(config))\n        return fallback;\n    try {\n        return image.toDataURL({ format: 'png', multiplier: 1 });\n    }\n    catch {\n        return fallback;\n    }\n}\n//# sourceMappingURL=image-filters.js.map","import { DownsampleError } from '../core/errors.js';\nexport function computeDownsampleDimensions(srcWidth, srcHeight, maxWidth, maxHeight) {\n    if (!isPositiveFinite(srcWidth) ||\n        !isPositiveFinite(srcHeight) ||\n        !isPositiveFinite(maxWidth) ||\n        !isPositiveFinite(maxHeight)) {\n        return {\n            width: Math.max(1, Math.round(srcWidth) || 1),\n            height: Math.max(1, Math.round(srcHeight) || 1),\n            needsResize: false,\n        };\n    }\n    const needsResize = srcWidth > maxWidth || srcHeight > maxHeight;\n    if (!needsResize) {\n        return { width: srcWidth, height: srcHeight, needsResize: false };\n    }\n    const ratio = Math.min(maxWidth / srcWidth, maxHeight / srcHeight);\n    return {\n        width: Math.max(1, Math.round(srcWidth * ratio)),\n        height: Math.max(1, Math.round(srcHeight * ratio)),\n        needsResize: true,\n    };\n}\nfunction isPositiveFinite(value) {\n    return Number.isFinite(value) && value > 0;\n}\nexport function selectDownsampleMimeType(sourceMime, preserveSourceFormat, downsampleMimeType) {\n    if (downsampleMimeType)\n        return downsampleMimeType;\n    if (preserveSourceFormat && (sourceMime === 'image/png' || sourceMime === 'image/webp')) {\n        return sourceMime;\n    }\n    return 'image/jpeg';\n}\nexport function detectSourceMimeType(dataUrl) {\n    const match = /^data:(image\\/[a-z0-9+\\-.]+)\\s*;/i.exec(dataUrl);\n    return match ? match[1].toLowerCase() : null;\n}\nexport function resampleImage(imageElement, maxWidth, maxHeight, sourceMime, preserveSourceFormat, downsampleMimeType, quality, ownerDocument) {\n    var _a;\n    const { width, height } = computeDownsampleDimensions(imageElement.naturalWidth, imageElement.naturalHeight, maxWidth, maxHeight);\n    const mimeType = selectDownsampleMimeType(sourceMime, preserveSourceFormat, downsampleMimeType);\n    const documentForCanvas = (_a = ownerDocument !== null && ownerDocument !== void 0 ? ownerDocument : imageElement.ownerDocument) !== null && _a !== void 0 ? _a : null;\n    if (!documentForCanvas) {\n        throw new DownsampleError('Failed to obtain an owner document for downsampling.');\n    }\n    const offscreenCanvas = documentForCanvas.createElement('canvas');\n    offscreenCanvas.width = width;\n    offscreenCanvas.height = height;\n    const context = offscreenCanvas.getContext('2d');\n    if (!context) {\n        throw new DownsampleError('Failed to obtain a 2D context for downsampling.');\n    }\n    context.drawImage(imageElement, 0, 0, imageElement.naturalWidth, imageElement.naturalHeight, 0, 0, width, height);\n    const dataUrl = mimeType === 'image/png'\n        ? offscreenCanvas.toDataURL(mimeType)\n        : offscreenCanvas.toDataURL(mimeType, quality);\n    return { dataUrl, width, height, mimeType };\n}\n//# sourceMappingURL=image-resampler.js.map","const MATRIX_DETERMINANT_EPSILON = 1e-8;\nconst MATRIX_SCALE_EPSILON = 1e-8;\nfunction toMatrix2D(matrix) {\n    if (matrix.length < 6)\n        return null;\n    const a = matrix[0];\n    const b = matrix[1];\n    const c = matrix[2];\n    const d = matrix[3];\n    const e = matrix[4];\n    const f = matrix[5];\n    if (!Number.isFinite(a) ||\n        !Number.isFinite(b) ||\n        !Number.isFinite(c) ||\n        !Number.isFinite(d) ||\n        !Number.isFinite(e) ||\n        !Number.isFinite(f)) {\n        return null;\n    }\n    return { a: a, b: b, c: c, d: d, e: e, f: f };\n}\nfunction invertMatrix(matrix) {\n    const determinant = matrix.a * matrix.d - matrix.b * matrix.c;\n    if (!Number.isFinite(determinant) || Math.abs(determinant) < MATRIX_DETERMINANT_EPSILON) {\n        return null;\n    }\n    return {\n        a: matrix.d / determinant,\n        b: -matrix.b / determinant,\n        c: -matrix.c / determinant,\n        d: matrix.a / determinant,\n        e: (matrix.c * matrix.f - matrix.d * matrix.e) / determinant,\n        f: (matrix.b * matrix.e - matrix.a * matrix.f) / determinant,\n    };\n}\nfunction transformPoint(point, matrix) {\n    return {\n        x: matrix.a * point.x + matrix.c * point.y + matrix.e,\n        y: matrix.b * point.x + matrix.d * point.y + matrix.f,\n    };\n}\nfunction getSourceRadiusFromMatrix(matrix, canvasRadius) {\n    const scaleX = Math.hypot(matrix.a, matrix.b);\n    const scaleY = Math.hypot(matrix.c, matrix.d);\n    const minScale = Math.min(scaleX > MATRIX_SCALE_EPSILON ? scaleX : Number.POSITIVE_INFINITY, scaleY > MATRIX_SCALE_EPSILON ? scaleY : Number.POSITIVE_INFINITY);\n    if (!Number.isFinite(minScale) || minScale <= 0)\n        return canvasRadius;\n    return canvasRadius / minScale;\n}\nexport function getMosaicImagePoint(fabric, image, canvasPoint, brushDiameterCanvasPx) {\n    void fabric;\n    const width = Number(image.width) || 0;\n    const height = Number(image.height) || 0;\n    const brushDiameter = Number(brushDiameterCanvasPx);\n    if (width <= 0 ||\n        height <= 0 ||\n        !Number.isFinite(canvasPoint.x) ||\n        !Number.isFinite(canvasPoint.y) ||\n        !Number.isFinite(brushDiameter) ||\n        brushDiameter <= 0) {\n        return null;\n    }\n    const matrix = toMatrix2D(image.calcTransformMatrix());\n    if (!matrix)\n        return null;\n    const inverse = invertMatrix(matrix);\n    if (!inverse)\n        return null;\n    const localPoint = transformPoint(canvasPoint, inverse);\n    const sourceX = localPoint.x + width / 2;\n    const sourceY = localPoint.y + height / 2;\n    if (sourceX < 0 || sourceY < 0 || sourceX > width || sourceY > height) {\n        return null;\n    }\n    return {\n        sourceX,\n        sourceY,\n        sourceRadius: getSourceRadiusFromMatrix(matrix, brushDiameter / 2),\n    };\n}\n//# sourceMappingURL=mosaic-geometry.js.map","function normalizeBlockSize(value) {\n    return Number.isFinite(value) && value > 0 ? Math.max(1, Math.floor(value)) : 1;\n}\nfunction isInsideCircle(x, y, centerX, centerY, radiusSquared) {\n    const dx = x - centerX;\n    const dy = y - centerY;\n    return dx * dx + dy * dy <= radiusSquared;\n}\nfunction pixelOffset(width, x, y) {\n    return (y * width + x) * 4;\n}\nexport function getCircularMosaicBounds(options) {\n    const width = Number(options.width);\n    const height = Number(options.height);\n    const centerX = Number(options.centerX);\n    const centerY = Number(options.centerY);\n    const radius = Number(options.radius);\n    if (!Number.isFinite(width) ||\n        !Number.isFinite(height) ||\n        !Number.isFinite(centerX) ||\n        !Number.isFinite(centerY) ||\n        !Number.isFinite(radius) ||\n        radius <= 0 ||\n        width <= 0 ||\n        height <= 0) {\n        return null;\n    }\n    const minX = Math.max(0, Math.floor(centerX - radius));\n    const maxX = Math.min(width - 1, Math.ceil(centerX + radius));\n    const minY = Math.max(0, Math.floor(centerY - radius));\n    const maxY = Math.min(height - 1, Math.ceil(centerY + radius));\n    return minX <= maxX && minY <= maxY ? { minX, minY, maxX, maxY } : null;\n}\nexport function applyCircularMosaicToImageData(options) {\n    var _a, _b, _c, _d;\n    const { imageData } = options;\n    const { width, height, data } = imageData;\n    const centerX = Number(options.centerX);\n    const centerY = Number(options.centerY);\n    const radius = Number(options.radius);\n    const bounds = getCircularMosaicBounds({ width, height, centerX, centerY, radius });\n    if (!bounds)\n        return false;\n    const blockSize = normalizeBlockSize(options.blockSize);\n    const { minX, minY, maxX, maxY } = bounds;\n    const radiusSquared = radius * radius;\n    let processed = false;\n    for (let blockY = minY; blockY <= maxY; blockY += blockSize) {\n        for (let blockX = minX; blockX <= maxX; blockX += blockSize) {\n            const blockMaxX = Math.min(maxX, blockX + blockSize - 1);\n            const blockMaxY = Math.min(maxY, blockY + blockSize - 1);\n            let sampleOffset = -1;\n            for (let y = blockY; y <= blockMaxY && sampleOffset < 0; y += 1) {\n                for (let x = blockX; x <= blockMaxX; x += 1) {\n                    if (!isInsideCircle(x, y, centerX, centerY, radiusSquared))\n                        continue;\n                    sampleOffset = pixelOffset(width, x, y);\n                    break;\n                }\n            }\n            if (sampleOffset < 0)\n                continue;\n            const red = (_a = data[sampleOffset]) !== null && _a !== void 0 ? _a : 0;\n            const green = (_b = data[sampleOffset + 1]) !== null && _b !== void 0 ? _b : 0;\n            const blue = (_c = data[sampleOffset + 2]) !== null && _c !== void 0 ? _c : 0;\n            const alpha = (_d = data[sampleOffset + 3]) !== null && _d !== void 0 ? _d : 0;\n            for (let y = blockY; y <= blockMaxY; y += 1) {\n                for (let x = blockX; x <= blockMaxX; x += 1) {\n                    if (!isInsideCircle(x, y, centerX, centerY, radiusSquared))\n                        continue;\n                    const offset = pixelOffset(width, x, y);\n                    data[offset] = red;\n                    data[offset + 1] = green;\n                    data[offset + 2] = blue;\n                    data[offset + 3] = alpha;\n                    processed = true;\n                }\n            }\n        }\n    }\n    return processed;\n}\n//# sourceMappingURL=mosaic-pixelate.js.map","import { reportError, reportWarning } from '../core/callback-reporter.js';\nimport { markBaseImageObject, markSessionObject } from '../core/editor-object-kind.js';\nimport { mimeTypeFor, tryNormalizeImageFormat } from '../export/export-format.js';\nimport { Command } from '../history/history-manager.js';\nimport { getFilteredBaseImageDataUrl } from '../image/image-filters.js';\nimport { detectSourceMimeType } from '../image/image-resampler.js';\nimport { getPointerFromFabricEvent } from '../utils/pointer.js';\nimport { withTimeout } from '../utils/timeout.js';\nimport { getMosaicImagePoint } from './mosaic-geometry.js';\nimport { applyCircularMosaicToImageData, getCircularMosaicBounds, } from './mosaic-pixelate.js';\nconst MAX_PENDING_MOSAIC_POINTS = 4096;\nfunction getCanvasDocument(context) {\n    var _a, _b, _c, _d, _e;\n    const element = (_b = (_a = context.canvas).getElement) === null || _b === void 0 ? void 0 : _b.call(_a);\n    return ((_e = (_c = element === null || element === void 0 ? void 0 : element.ownerDocument) !== null && _c !== void 0 ? _c : (_d = context.canvas.lowerCanvasEl) === null || _d === void 0 ? void 0 : _d.ownerDocument) !== null && _e !== void 0 ? _e : document);\n}\nfunction safeRender(canvas) {\n    try {\n        canvas.requestRenderAll();\n    }\n    catch {\n        try {\n            canvas.renderAll();\n        }\n        catch {\n        }\n    }\n}\nfunction createPreviewCircle(context) {\n    const config = context.getMosaicConfig();\n    const circle = new context.fabric.Circle({\n        left: 0,\n        top: 0,\n        radius: config.brushSize / 2,\n        originX: 'center',\n        originY: 'center',\n        fill: config.previewFill,\n        stroke: config.previewStroke,\n        strokeWidth: config.previewStrokeWidth,\n        strokeDashArray: config.previewStrokeDashArray\n            ? [...config.previewStrokeDashArray]\n            : undefined,\n        selectable: false,\n        evented: false,\n        excludeFromExport: true,\n        objectCaching: false,\n        visible: false,\n    });\n    markSessionObject(circle, 'mosaicPreviewCircle');\n    circle.isMosaicPreview = true;\n    return circle;\n}\nfunction ensurePreviewCircle(context, session) {\n    var _a;\n    const { canvas } = context;\n    const circle = (_a = session.previewCircle) !== null && _a !== void 0 ? _a : createPreviewCircle(context);\n    session.previewCircle = circle;\n    if (!canvas.getObjects().includes(circle)) {\n        canvas.add(circle);\n    }\n    canvas.bringObjectToFront(circle);\n    updateMosaicPreview(context);\n    return circle;\n}\nfunction removePreviewCircle(context, session) {\n    const circle = session.previewCircle;\n    if (!circle)\n        return;\n    try {\n        context.canvas.remove(circle);\n    }\n    catch {\n    }\n    session.previewCircle = null;\n}\nfunction createPreviewImage(context, sourceImage, rasterCache) {\n    const image = new context.fabric.FabricImage(rasterCache.offscreenCanvas, {\n        selectable: false,\n        evented: false,\n        excludeFromExport: true,\n        objectCaching: false,\n        visible: true,\n    });\n    copyBaseImageProperties(image, sourceImage);\n    image.set({\n        selectable: false,\n        evented: false,\n        excludeFromExport: true,\n        objectCaching: false,\n        visible: true,\n    });\n    markSessionObject(image, 'mosaicPreviewImage');\n    image.isMosaicPreview = true;\n    return image;\n}\nfunction placePreviewImageAfterBase(context, previewImage, sourceImage) {\n    var _a, _b;\n    const sourceIndex = context.canvas.getObjects().indexOf(sourceImage);\n    if (sourceIndex < 0)\n        return;\n    try {\n        (_b = (_a = context.canvas).moveObjectTo) === null || _b === void 0 ? void 0 : _b.call(_a, previewImage, sourceIndex + 1);\n    }\n    catch {\n    }\n}\nfunction ensurePreviewImage(context, session, sourceImage) {\n    var _a;\n    const rasterCache = session.rasterCache;\n    if (!rasterCache)\n        return null;\n    const previewImage = (_a = session.previewImage) !== null && _a !== void 0 ? _a : createPreviewImage(context, sourceImage, rasterCache);\n    session.previewImage = previewImage;\n    copyBaseImageProperties(previewImage, sourceImage);\n    previewImage.set({\n        selectable: false,\n        evented: false,\n        excludeFromExport: true,\n        objectCaching: false,\n        visible: true,\n    });\n    previewImage.dirty = true;\n    if (!context.canvas.getObjects().includes(previewImage)) {\n        context.canvas.add(previewImage);\n    }\n    placePreviewImageAfterBase(context, previewImage, sourceImage);\n    const circle = session.previewCircle;\n    if (circle && context.canvas.getObjects().includes(circle)) {\n        context.canvas.bringObjectToFront(circle);\n    }\n    return previewImage;\n}\nfunction removePreviewImage(context, session) {\n    const image = session.previewImage;\n    if (!image)\n        return;\n    try {\n        context.canvas.remove(image);\n    }\n    catch {\n    }\n    session.previewImage = null;\n}\nfunction releaseMosaicRasterCache(session) {\n    const cache = session.rasterCache;\n    if (!cache)\n        return;\n    try {\n        cache.offscreenCanvas.width = 0;\n        cache.offscreenCanvas.height = 0;\n    }\n    catch {\n    }\n    session.rasterCache = null;\n}\nasync function refreshMosaicRasterCacheFromSource(context, session, source) {\n    const rasterCache = session.rasterCache;\n    if (!rasterCache)\n        return;\n    const ownerDocument = getCanvasDocument(context);\n    const decoded = await decodeImageSource(ownerDocument, source);\n    rasterCache.offscreenCanvas.width = decoded.width;\n    rasterCache.offscreenCanvas.height = decoded.height;\n    const renderingContext = rasterCache.offscreenCanvas.getContext('2d');\n    if (!renderingContext) {\n        releaseMosaicRasterCache(session);\n        return;\n    }\n    renderingContext.clearRect(0, 0, decoded.width, decoded.height);\n    renderingContext.drawImage(decoded.element, 0, 0, decoded.width, decoded.height);\n    rasterCache.renderingContext = renderingContext;\n    rasterCache.imageData = renderingContext.getImageData(0, 0, decoded.width, decoded.height);\n    rasterCache.source = source;\n    rasterCache.width = decoded.width;\n    rasterCache.height = decoded.height;\n}\nfunction hidePreview(context) {\n    var _a;\n    const circle = (_a = context.getMosaicSession()) === null || _a === void 0 ? void 0 : _a.previewCircle;\n    if (!circle)\n        return;\n    circle.set({ visible: false });\n    safeRender(context.canvas);\n}\nfunction movePreview(context, point) {\n    const session = context.getMosaicSession();\n    if (!session)\n        return;\n    const circle = ensurePreviewCircle(context, session);\n    circle.set({ left: point.x, top: point.y, visible: true });\n    safeRender(context.canvas);\n}\nfunction attachCanvasHandler(context, session, eventName, callback) {\n    context.canvas.on(eventName, callback);\n    session.handlers.push({ eventName, callback });\n}\nfunction detachCanvasHandlers(context, session) {\n    for (const record of session.handlers) {\n        try {\n            context.canvas.off(record.eventName, record.callback);\n        }\n        catch {\n        }\n    }\n    session.handlers = [];\n}\nfunction restoreObjectStates(session) {\n    for (const record of session.prevObjectStates) {\n        try {\n            record.object.set({ evented: record.evented, selectable: record.selectable });\n        }\n        catch {\n        }\n    }\n    session.prevObjectStates = [];\n}\nfunction getImageSource(image) {\n    var _a;\n    const imageWithSource = image;\n    try {\n        const src = (_a = imageWithSource.getSrc) === null || _a === void 0 ? void 0 : _a.call(imageWithSource);\n        if (typeof src === 'string' && src.length > 0)\n            return src;\n    }\n    catch {\n    }\n    return typeof imageWithSource.src === 'string' && imageWithSource.src.length > 0\n        ? imageWithSource.src\n        : null;\n}\nfunction getMosaicImageSource(context, image) {\n    return getFilteredBaseImageDataUrl(image, context.getCurrentImageFilterConfig(), getImageSource(image));\n}\nfunction imageDimension(value) {\n    const numeric = Number(value);\n    return Number.isFinite(numeric) && numeric > 0 ? Math.floor(numeric) : 0;\n}\nfunction decodeImageSource(ownerDocument, source) {\n    return new Promise((resolve, reject) => {\n        const imageElement = ownerDocument.createElement('img');\n        const cleanup = () => {\n            if (typeof imageElement.removeEventListener === 'function') {\n                imageElement.removeEventListener('load', handleLoad);\n                imageElement.removeEventListener('error', handleError);\n            }\n            else {\n                imageElement.onload = null;\n                imageElement.onerror = null;\n            }\n        };\n        const handleLoad = () => {\n            const width = imageDimension(imageElement.naturalWidth || imageElement.width);\n            const height = imageDimension(imageElement.naturalHeight || imageElement.height);\n            cleanup();\n            if (width <= 0 || height <= 0) {\n                reject(new Error('Mosaic image decode failed: source image has no dimensions.'));\n                return;\n            }\n            resolve({ element: imageElement, width, height });\n        };\n        const handleError = (event) => {\n            cleanup();\n            const message = typeof event === 'string'\n                ? `Mosaic image decode failed: ${event}`\n                : 'Mosaic image decode failed.';\n            reject(new Error(message));\n        };\n        if (!source.startsWith('data:')) {\n            imageElement.crossOrigin = 'anonymous';\n        }\n        if (typeof imageElement.addEventListener === 'function') {\n            imageElement.addEventListener('load', handleLoad, { once: true });\n            imageElement.addEventListener('error', handleError, { once: true });\n        }\n        else {\n            imageElement.onload = handleLoad;\n            imageElement.onerror = handleError;\n        }\n        imageElement.src = source;\n    });\n}\nfunction toSupportedMimeType(mimeType) {\n    return mimeType === 'image/jpeg' || mimeType === 'image/png' || mimeType === 'image/webp'\n        ? mimeType\n        : null;\n}\nfunction mimeToFormat(mimeType) {\n    if (mimeType === 'image/jpeg')\n        return 'jpeg';\n    if (mimeType === 'image/webp')\n        return 'webp';\n    return 'png';\n}\nfunction resolveMosaicOutputFormat(context, source) {\n    var _a, _b, _c, _d;\n    const config = context.getMosaicConfig();\n    const requested = config.outputFileType;\n    const format = requested === 'source'\n        ? mimeToFormat((_b = (_a = context.getCurrentImageMimeType()) !== null && _a !== void 0 ? _a : toSupportedMimeType(detectSourceMimeType(source))) !== null && _b !== void 0 ? _b : 'image/png')\n        : ((_c = tryNormalizeImageFormat(String(requested))) !== null && _c !== void 0 ? _c : 'png');\n    const mimeType = mimeTypeFor(format);\n    if (format === 'png')\n        return { mimeType };\n    return {\n        mimeType,\n        quality: (_d = config.outputQuality) !== null && _d !== void 0 ? _d : context.options.downsampleQuality,\n    };\n}\nasync function createFabricImageFromDataUrl(context, dataUrl) {\n    return await withTimeout(context.fabric.FabricImage.fromURL(dataUrl, { crossOrigin: 'anonymous' }), context.options.imageLoadTimeoutMs, 'Mosaic FabricImage.fromURL');\n}\nfunction copyBaseImageProperties(target, source) {\n    target.set({\n        left: source.left,\n        top: source.top,\n        scaleX: source.scaleX,\n        scaleY: source.scaleY,\n        angle: source.angle,\n        skewX: source.skewX,\n        skewY: source.skewY,\n        flipX: source.flipX,\n        flipY: source.flipY,\n        originX: source.originX,\n        originY: source.originY,\n        selectable: source.selectable,\n        evented: source.evented,\n        hasControls: source.hasControls,\n        hoverCursor: source.hoverCursor,\n    });\n    target.setCoords();\n}\nfunction replaceBaseImage(context, oldImage, newImage, mimeType) {\n    const { canvas } = context;\n    let oldRemoved = false;\n    let newAdded = false;\n    try {\n        copyBaseImageProperties(newImage, oldImage);\n        canvas.remove(oldImage);\n        oldRemoved = true;\n        canvas.add(newImage);\n        newAdded = true;\n        canvas.sendObjectToBack(newImage);\n        context.setOriginalImage(markBaseImageObject(newImage));\n        context.setCurrentImageMimeType(mimeType);\n        canvas.renderAll();\n    }\n    catch (error) {\n        try {\n            if (newAdded)\n                canvas.remove(newImage);\n            if (oldRemoved && !canvas.getObjects().includes(oldImage)) {\n                canvas.add(oldImage);\n                canvas.sendObjectToBack(oldImage);\n            }\n            context.setOriginalImage(oldImage);\n        }\n        catch {\n        }\n        throw error;\n    }\n}\nfunction pushMosaicHistory(context, after) {\n    var _a;\n    const before = (_a = context.getLastSnapshot()) !== null && _a !== void 0 ? _a : after;\n    if (!before || !after || before === after)\n        return;\n    context.historyManager.push(new Command(async () => {\n        await context.loadFromState(after);\n    }, async () => {\n        await context.loadFromState(before);\n    }));\n    context.setLastSnapshot(after);\n}\nasync function getOrCreateRasterCache(context, session, source) {\n    if (session.rasterCache) {\n        if (session.rasterCache.source === source)\n            return session.rasterCache;\n        releaseMosaicRasterCache(session);\n    }\n    const ownerDocument = getCanvasDocument(context);\n    const decoded = await decodeImageSource(ownerDocument, source);\n    const offscreenCanvas = ownerDocument.createElement('canvas');\n    offscreenCanvas.width = decoded.width;\n    offscreenCanvas.height = decoded.height;\n    const renderingContext = offscreenCanvas.getContext('2d');\n    if (!renderingContext) {\n        reportError(context.options, new Error('Mosaic could not obtain a 2D canvas context.'), 'Mosaic apply failed.');\n        return null;\n    }\n    renderingContext.drawImage(decoded.element, 0, 0, decoded.width, decoded.height);\n    let imageData;\n    try {\n        imageData = renderingContext.getImageData(0, 0, decoded.width, decoded.height);\n    }\n    catch (error) {\n        reportError(context.options, error, 'Mosaic apply failed because the source image pixels could not be read.');\n        return null;\n    }\n    const rasterCache = {\n        offscreenCanvas,\n        renderingContext,\n        imageData,\n        source,\n        width: decoded.width,\n        height: decoded.height,\n    };\n    session.rasterCache = rasterCache;\n    return rasterCache;\n}\nfunction applyMosaicImagePoint(context, session, sourceImage, imagePoint) {\n    const rasterCache = session.rasterCache;\n    if (!rasterCache)\n        return false;\n    const config = context.getMosaicConfig();\n    const previousPoint = session.lastImagePoint;\n    const points = previousPoint\n        ? interpolateMosaicPoints(previousPoint, imagePoint)\n        : [imagePoint];\n    let changed = false;\n    let dirtyRect = null;\n    for (const point of points) {\n        const pointChanged = applyCircularMosaicToImageData({\n            imageData: rasterCache.imageData,\n            centerX: point.sourceX,\n            centerY: point.sourceY,\n            radius: point.sourceRadius,\n            blockSize: config.blockSize,\n        });\n        if (!pointChanged)\n            continue;\n        dirtyRect = mergeMosaicDirtyRects(dirtyRect, getMosaicPointDirtyRect(rasterCache.imageData, point));\n        changed = true;\n    }\n    session.lastImagePoint = imagePoint;\n    if (changed) {\n        session.hasUncommittedChanges = true;\n        putMosaicImageData(rasterCache, dirtyRect);\n        ensurePreviewImage(context, session, sourceImage);\n        safeRender(context.canvas);\n    }\n    return changed;\n}\nfunction getMosaicPointDirtyRect(imageData, point) {\n    return getCircularMosaicBounds({\n        width: imageData.width,\n        height: imageData.height,\n        centerX: point.sourceX,\n        centerY: point.sourceY,\n        radius: point.sourceRadius,\n    });\n}\nfunction mergeMosaicDirtyRects(current, next) {\n    if (!next)\n        return current;\n    if (!current)\n        return next;\n    return {\n        minX: Math.min(current.minX, next.minX),\n        minY: Math.min(current.minY, next.minY),\n        maxX: Math.max(current.maxX, next.maxX),\n        maxY: Math.max(current.maxY, next.maxY),\n    };\n}\nfunction putMosaicImageData(rasterCache, dirtyRect) {\n    if (!dirtyRect) {\n        rasterCache.renderingContext.putImageData(rasterCache.imageData, 0, 0);\n        return;\n    }\n    rasterCache.renderingContext.putImageData(rasterCache.imageData, 0, 0, dirtyRect.minX, dirtyRect.minY, dirtyRect.maxX - dirtyRect.minX + 1, dirtyRect.maxY - dirtyRect.minY + 1);\n}\nfunction interpolateMosaicPoints(start, end) {\n    const dx = end.sourceX - start.sourceX;\n    const dy = end.sourceY - start.sourceY;\n    const distance = Math.hypot(dx, dy);\n    const minRadius = Math.min(start.sourceRadius, end.sourceRadius);\n    const spacing = Math.max(1, minRadius / 2);\n    const steps = Math.max(1, Math.ceil(distance / spacing));\n    const points = [];\n    for (let index = 1; index <= steps; index += 1) {\n        const t = index / steps;\n        points.push({\n            sourceX: start.sourceX + dx * t,\n            sourceY: start.sourceY + dy * t,\n            sourceRadius: start.sourceRadius + (end.sourceRadius - start.sourceRadius) * t,\n        });\n    }\n    return points;\n}\nasync function applyMosaicPointToCache(context, expectedSession, canvasPoint) {\n    const session = context.getMosaicSession();\n    if (!session || session !== expectedSession)\n        return;\n    const originalImage = context.getOriginalImage();\n    if (!originalImage || !context.isImageLoaded())\n        return;\n    const config = context.getMosaicConfig();\n    const imagePoint = getMosaicImagePoint(context.fabric, originalImage, canvasPoint, config.brushSize);\n    if (!imagePoint) {\n        session.lastImagePoint = null;\n        return;\n    }\n    const source = getMosaicImageSource(context, originalImage);\n    if (!source) {\n        reportWarning(context.options, new Error('Mosaic cannot read the current image source.'), 'Mosaic skipped because the image source is unavailable.');\n        return;\n    }\n    const rasterCache = await getOrCreateRasterCache(context, session, source);\n    if (!rasterCache)\n        return;\n    applyMosaicImagePoint(context, session, originalImage, imagePoint);\n}\nasync function commitMosaicChanges(context, session, callbackContext) {\n    var _a;\n    session.commitRequested = false;\n    session.lastImagePoint = null;\n    if (!session.hasUncommittedChanges || !session.rasterCache)\n        return;\n    const originalImage = context.getOriginalImage();\n    if (!originalImage || !context.isImageLoaded())\n        return;\n    const source = (_a = getMosaicImageSource(context, originalImage)) !== null && _a !== void 0 ? _a : session.rasterCache.source;\n    const rasterCache = session.rasterCache;\n    rasterCache.renderingContext.putImageData(rasterCache.imageData, 0, 0);\n    const output = resolveMosaicOutputFormat(context, source);\n    const nextDataUrl = output.quality === undefined\n        ? rasterCache.offscreenCanvas.toDataURL(output.mimeType)\n        : rasterCache.offscreenCanvas.toDataURL(output.mimeType, output.quality);\n    const nextImage = await createFabricImageFromDataUrl(context, nextDataUrl);\n    removePreviewCircle(context, session);\n    removePreviewImage(context, session);\n    try {\n        replaceBaseImage(context, originalImage, nextImage, output.mimeType);\n        context.resetImageFilterState();\n        const after = context.captureSnapshot();\n        pushMosaicHistory(context, after);\n        try {\n            await refreshMosaicRasterCacheFromSource(context, session, nextDataUrl);\n        }\n        catch (error) {\n            releaseMosaicRasterCache(session);\n            reportWarning(context.options, error, 'Mosaic cache refresh failed after commit; the next stroke will rebuild it.');\n        }\n        session.hasUncommittedChanges = false;\n    }\n    finally {\n        if (context.getMosaicSession() === session) {\n            ensurePreviewCircle(context, session);\n        }\n    }\n    context.updateInputs();\n    context.updateUi();\n    context.emitImageChanged(callbackContext);\n}\nasync function drainMosaicQueue(context, expectedSession) {\n    const session = context.getMosaicSession();\n    if (!session || session !== expectedSession || session.isApplying)\n        return;\n    session.isApplying = true;\n    const callbackContext = context.buildCallbackContext('applyMosaic', false);\n    context.emitBusyChangeIfChanged(callbackContext);\n    context.updateUi();\n    try {\n        while (context.getMosaicSession() === session && session.pendingCanvasPoints.length > 0) {\n            const point = session.pendingCanvasPoints.shift();\n            if (point) {\n                await applyMosaicPointToCache(context, session, point);\n            }\n        }\n        if (context.getMosaicSession() === session && session.commitRequested) {\n            await commitMosaicChanges(context, session, callbackContext);\n        }\n    }\n    finally {\n        if (context.getMosaicSession() === session) {\n            session.isApplying = false;\n        }\n        context.emitBusyChangeIfChanged(callbackContext);\n        context.updateUi();\n        if (context.getMosaicSession() === session &&\n            (session.pendingCanvasPoints.length > 0 || session.commitRequested)) {\n            void drainMosaicQueue(context, session).catch((error) => {\n                reportError(context.options, error, 'Mosaic apply failed.');\n            });\n        }\n    }\n}\nfunction enqueueMosaicPoint(context, canvasPoint) {\n    const session = context.getMosaicSession();\n    if (!session)\n        return;\n    session.pendingCanvasPoints.push(canvasPoint);\n    if (session.pendingCanvasPoints.length > MAX_PENDING_MOSAIC_POINTS) {\n        session.pendingCanvasPoints.splice(0, session.pendingCanvasPoints.length - MAX_PENDING_MOSAIC_POINTS);\n    }\n    void drainMosaicQueue(context, session).catch((error) => {\n        reportError(context.options, error, 'Mosaic apply failed.');\n    });\n}\nfunction requestMosaicCommit(context, session) {\n    session.commitRequested = true;\n    void drainMosaicQueue(context, session).catch((error) => {\n        reportError(context.options, error, 'Mosaic apply failed.');\n    });\n}\nfunction installMosaicHandlers(context, session) {\n    attachCanvasHandler(context, session, 'mouse:move', (event) => {\n        const pointer = getPointerFromFabricEvent(context.canvas, event);\n        if (!pointer) {\n            hidePreview(context);\n            return;\n        }\n        movePreview(context, pointer);\n        const currentSession = context.getMosaicSession();\n        if (currentSession === null || currentSession === void 0 ? void 0 : currentSession.isPointerDown) {\n            enqueueMosaicPoint(context, pointer);\n        }\n    });\n    attachCanvasHandler(context, session, 'mouse:out', () => {\n        hidePreview(context);\n    });\n    attachCanvasHandler(context, session, 'mouse:down', (event) => {\n        const pointer = getPointerFromFabricEvent(context.canvas, event);\n        if (!pointer)\n            return;\n        const currentSession = context.getMosaicSession();\n        if (!currentSession)\n            return;\n        currentSession.isPointerDown = true;\n        currentSession.lastImagePoint = null;\n        enqueueMosaicPoint(context, pointer);\n    });\n    attachCanvasHandler(context, session, 'mouse:up', (event) => {\n        const currentSession = context.getMosaicSession();\n        if (!currentSession)\n            return;\n        const pointer = getPointerFromFabricEvent(context.canvas, event);\n        if (pointer) {\n            movePreview(context, pointer);\n            enqueueMosaicPoint(context, pointer);\n        }\n        currentSession.isPointerDown = false;\n        requestMosaicCommit(context, currentSession);\n    });\n}\nexport function enterMosaicMode(context) {\n    if (context.getMosaicSession())\n        return;\n    if (!context.isImageLoaded() || !context.getOriginalImage())\n        return;\n    const { canvas } = context;\n    context.hideAllMaskLabels();\n    canvas.discardActiveObject();\n    const prevSelection = !!canvas.selection;\n    const prevDefaultCursor = canvas.defaultCursor;\n    const prevObjectStates = canvas.getObjects().map((object) => {\n        var _a, _b;\n        return ({\n            object,\n            evented: (_a = object.evented) !== null && _a !== void 0 ? _a : true,\n            selectable: (_b = object.selectable) !== null && _b !== void 0 ? _b : true,\n        });\n    });\n    for (const record of prevObjectStates) {\n        try {\n            record.object.set({ evented: false, selectable: false });\n        }\n        catch {\n        }\n    }\n    canvas.selection = false;\n    canvas.defaultCursor = 'crosshair';\n    const session = {\n        previewCircle: null,\n        previewImage: null,\n        prevSelection,\n        prevDefaultCursor,\n        prevObjectStates,\n        handlers: [],\n        rasterCache: null,\n        pendingCanvasPoints: [],\n        isPointerDown: false,\n        isApplying: false,\n        commitRequested: false,\n        hasUncommittedChanges: false,\n        lastImagePoint: null,\n    };\n    context.setMosaicSession(session);\n    ensurePreviewCircle(context, session);\n    installMosaicHandlers(context, session);\n    canvas.renderAll();\n}\nexport function exitMosaicMode(context) {\n    var _a;\n    const session = context.getMosaicSession();\n    if (!session)\n        return;\n    detachCanvasHandlers(context, session);\n    removePreviewCircle(context, session);\n    removePreviewImage(context, session);\n    releaseMosaicRasterCache(session);\n    restoreObjectStates(session);\n    context.canvas.selection = !!session.prevSelection;\n    context.canvas.defaultCursor = (_a = session.prevDefaultCursor) !== null && _a !== void 0 ? _a : 'default';\n    context.setMosaicSession(null);\n    context.canvas.renderAll();\n}\nexport function updateMosaicPreview(context) {\n    const session = context.getMosaicSession();\n    const circle = session === null || session === void 0 ? void 0 : session.previewCircle;\n    if (!session || !circle)\n        return;\n    const config = context.getMosaicConfig();\n    circle.set({\n        radius: config.brushSize / 2,\n        fill: config.previewFill,\n        stroke: config.previewStroke,\n        strokeWidth: config.previewStrokeWidth,\n        strokeDashArray: config.previewStrokeDashArray\n            ? [...config.previewStrokeDashArray]\n            : undefined,\n    });\n    context.canvas.bringObjectToFront(circle);\n    safeRender(context.canvas);\n}\nexport function isMosaicPreviewObject(object) {\n    return object.isMosaicPreview === true;\n}\n//# sourceMappingURL=mosaic-controller.js.map","import { reportWarning } from '../core/callback-reporter.js';\nimport { areResolvedMosaicConfigsEqual, cloneResolvedMosaicConfig, getInvalidMosaicConfigFields, mergeMosaicConfigPatch, } from '../core/default-options.js';\nimport { enterMosaicMode as enterMosaicModeImpl, exitMosaicMode as exitMosaicModeImpl, updateMosaicPreview, } from './mosaic-controller.js';\nexport function enterMosaicModeAction(access) {\n    if (!access.getCanvas() || !access.getOriginalImage())\n        return;\n    if (access.getMosaicSession())\n        return;\n    if (!access.isImageLoaded())\n        return;\n    if (!access.canRunIdleOperation('enterMosaicMode'))\n        return;\n    enterMosaicModeImpl(access.buildMosaicControllerContext());\n    access.updateInputs();\n    access.updateUi();\n    const callbackContext = access.buildCallbackContext('enterMosaicMode', false);\n    access.emitBusyChangeIfChanged(callbackContext);\n    access.emitImageChanged(callbackContext);\n}\nexport function exitMosaicModeAction(access) {\n    if (!access.getCanvas() || !access.getMosaicSession())\n        return;\n    if (!access.canRunIdleOperation('exitMosaicMode'))\n        return;\n    exitMosaicModeImpl(access.buildMosaicControllerContext());\n    access.updateInputs();\n    access.updateUi();\n    const callbackContext = access.buildCallbackContext('exitMosaicMode', false);\n    access.emitBusyChangeIfChanged(callbackContext);\n    access.emitImageChanged(callbackContext);\n}\nexport function resetMosaicConfigAction(access) {\n    if (access.isDisposed())\n        return;\n    const nextConfig = cloneResolvedMosaicConfig(access.getDefaultMosaicConfig());\n    if (areResolvedMosaicConfigsEqual(access.getMosaicConfig(), nextConfig))\n        return;\n    access.setMosaicConfig(nextConfig);\n    updateActivePreview(access);\n    access.updateInputs();\n    access.updateUi();\n    access.emitImageChanged(access.buildCallbackContext('resetMosaicConfig', false));\n}\nexport function applyMosaicConfigPatchAction(access, config, operation) {\n    if (access.isDisposed())\n        return;\n    if (config === null || typeof config !== 'object' || Array.isArray(config)) {\n        reportWarning(access.getOptions(), new TypeError('[ImageEditor] Invalid Mosaic config object.'), 'Ignored invalid Mosaic config.');\n        return;\n    }\n    const invalidFields = getInvalidMosaicConfigFields(config);\n    if (invalidFields.length > 0) {\n        reportWarning(access.getOptions(), new TypeError(`[ImageEditor] Ignored invalid Mosaic config field(s): ` +\n            `${invalidFields.join(', ')}.`), 'Ignored invalid Mosaic config fields.');\n    }\n    const nextConfig = mergeMosaicConfigPatch(access.getMosaicConfig(), config);\n    if (areResolvedMosaicConfigsEqual(access.getMosaicConfig(), nextConfig))\n        return;\n    access.setMosaicConfig(nextConfig);\n    updateActivePreview(access);\n    access.updateInputs();\n    access.updateUi();\n    access.emitImageChanged(access.buildCallbackContext(operation, false));\n}\nfunction updateActivePreview(access) {\n    if (access.getMosaicSession() && access.getCanvas()) {\n        updateMosaicPreview(access.buildMosaicControllerContext());\n    }\n}\n//# sourceMappingURL=mosaic-actions.js.map","export function startImageElementLoad(dataUrl, options) {\n    const imageElement = new Image();\n    if (options.crossOrigin !== undefined) {\n        imageElement.crossOrigin = options.crossOrigin;\n    }\n    const cleanup = (clearSource = false) => {\n        if (typeof imageElement.removeEventListener === 'function') {\n            imageElement.removeEventListener('load', handleLoad);\n            imageElement.removeEventListener('error', handleError);\n        }\n        else {\n            imageElement.onload = null;\n            imageElement.onerror = null;\n        }\n        if (clearSource) {\n            try {\n                imageElement.src = '';\n            }\n            catch {\n            }\n        }\n    };\n    const handleLoad = () => {\n        var _a, _b;\n        const validationError = (_b = (_a = options.validate) === null || _a === void 0 ? void 0 : _a.call(options, imageElement)) !== null && _b !== void 0 ? _b : null;\n        if (validationError) {\n            cleanup(true);\n            rejectImage(validationError);\n            return;\n        }\n        cleanup(false);\n        resolveImage(imageElement);\n    };\n    const handleError = (event) => {\n        cleanup(true);\n        rejectImage(options.createError(event));\n    };\n    let resolveImage;\n    let rejectImage;\n    const promise = new Promise((resolve, reject) => {\n        resolveImage = resolve;\n        rejectImage = reject;\n        if (typeof imageElement.addEventListener === 'function') {\n            imageElement.addEventListener('load', handleLoad, { once: true });\n            imageElement.addEventListener('error', handleError, { once: true });\n        }\n        else {\n            imageElement.onload = handleLoad;\n            imageElement.onerror = handleError;\n        }\n        imageElement.src = dataUrl;\n    });\n    return { promise, cleanup };\n}\n//# sourceMappingURL=image-element-loader.js.map","import { MergeAnnotationsError, MergeMasksError } from '../core/errors.js';\nimport { normalizeLayerOrder } from '../core/layer-order.js';\nimport { reportWarning } from '../core/callback-reporter.js';\nimport { Command } from '../history/history-manager.js';\nfunction createMergeError(operation, error) {\n    if (operation === 'mergeAnnotations') {\n        if (error instanceof MergeAnnotationsError)\n            return error;\n        const message = error instanceof Error\n            ? `mergeAnnotations failed: ${error.message}`\n            : 'mergeAnnotations failed';\n        return new MergeAnnotationsError(message, error);\n    }\n    if (error instanceof MergeMasksError)\n        return error;\n    const message = error instanceof Error ? `mergeMasks failed: ${error.message}` : 'mergeMasks failed';\n    return new MergeMasksError(message, error);\n}\nfunction detachObjects(canvas, objects) {\n    for (const object of objects) {\n        if (!canvas.getObjects().includes(object))\n            continue;\n        canvas.remove(object);\n    }\n    canvas.discardActiveObject();\n    canvas.renderAll();\n}\nexport async function flattenOverlayGroupToBaseImage(context, options) {\n    if (!context.isImageLoaded())\n        return;\n    if (options.getTargets().length === 0)\n        return;\n    const beforeSnapshot = context.captureSnapshot();\n    const preservedObjects = options.getPreservedObjects();\n    const preScrollTop = context.containerElement ? context.containerElement.scrollTop : null;\n    const preScrollLeft = context.containerElement ? context.containerElement.scrollLeft : null;\n    try {\n        const detachPreservedObjects = async () => {\n            detachObjects(context.canvas, preservedObjects);\n        };\n        if (context.withSelectionChangeSuppressed) {\n            await context.withSelectionChangeSuppressed(detachPreservedObjects);\n        }\n        else {\n            await detachPreservedObjects();\n        }\n        const exportedDataUrl = await context.exportImageBase64(options.exportOptions);\n        if (!exportedDataUrl) {\n            throw createMergeError(options.operation, `${options.operation}: exportImageBase64 returned an empty data URL.`);\n        }\n        options.removeTargetsNoHistory();\n        await context.loadImage(exportedDataUrl, { preserveScroll: true });\n        await options.restorePreservedObjects(preservedObjects);\n        normalizeLayerOrder(context.canvas);\n        context.canvas.renderAll();\n        context.updateInputs();\n        context.updateUi();\n        if (context.containerElement) {\n            try {\n                if (preScrollTop !== null)\n                    context.containerElement.scrollTop = preScrollTop;\n                if (preScrollLeft !== null)\n                    context.containerElement.scrollLeft = preScrollLeft;\n            }\n            catch (scrollError) {\n                reportWarning(context.options, scrollError, `${options.operation}: scroll restore failed.`);\n            }\n        }\n        const afterSnapshot = context.captureSnapshot();\n        if (beforeSnapshot && afterSnapshot && beforeSnapshot !== afterSnapshot) {\n            context.historyManager.push(new Command(() => context.loadFromState(afterSnapshot), () => context.loadFromState(beforeSnapshot)));\n        }\n    }\n    catch (error) {\n        try {\n            await context.loadFromState(beforeSnapshot);\n        }\n        catch (rollbackError) {\n            reportWarning(context.options, rollbackError, `${options.operation}: rollback failed.`);\n        }\n        throw createMergeError(options.operation, error);\n    }\n}\n//# sourceMappingURL=overlay-merge-service.js.map","import { isAnnotationObject, isMaskObject, isSessionObject } from '../core/public-types.js';\nimport { reportWarning } from '../core/callback-reporter.js';\nimport { ExportError, ExportNotReadyError } from '../core/errors.js';\nimport { withMaskStyleBackup } from '../mask/mask-style.js';\nimport { getClampedCanvasRegion, getObjectBBox, getPartialExportEdges, hasMeaningfulCanvasRegion, } from '../utils/canvas-region.js';\nimport { startImageElementLoad } from '../utils/image-element-loader.js';\nimport { resolveExportFormat } from './export-format.js';\nimport { flattenOverlayGroupToBaseImage, } from './overlay-merge-service.js';\nconst DOWNLOAD_OBJECT_URL_REVOKE_DELAY_MS = 30000;\nfunction resolveMultiplier(requested, fallback) {\n    const num = Number(requested);\n    if (Number.isFinite(num) && num > 0)\n        return num;\n    const fallbackValue = Number(fallback);\n    return Number.isFinite(fallbackValue) && fallbackValue > 0 ? fallbackValue : 1;\n}\nfunction resolveExportArea(requested, fallback) {\n    if (requested === 'canvas' || requested === 'image')\n        return requested;\n    return fallback === 'canvas' ? 'canvas' : 'image';\n}\nfunction resolveExportOptions(context, options) {\n    const providedOptions = options !== null && options !== void 0 ? options : {};\n    return {\n        exportArea: resolveExportArea(providedOptions.exportArea, context.options.exportAreaByDefault),\n        mergeMasks: typeof providedOptions.mergeMasks === 'boolean'\n            ? providedOptions.mergeMasks\n            : context.options.mergeMasksByDefault,\n        mergeAnnotations: typeof providedOptions.mergeAnnotations === 'boolean'\n            ? providedOptions.mergeAnnotations\n            : context.options.mergeAnnotationsByDefault,\n        multiplier: resolveMultiplier(providedOptions.multiplier, context.options.exportMultiplier),\n        format: resolveExportFormat(providedOptions, context.options.downsampleQuality),\n    };\n}\nfunction readCanvasDimension(canvas, getterName, propertyName) {\n    const canvasLike = canvas;\n    const getter = canvasLike[getterName];\n    const value = typeof getter === 'function' ? getter.call(canvasLike) : canvasLike[propertyName];\n    return Math.max(1, Math.ceil(Number.isFinite(value) ? Number(value) : 1));\n}\nfunction assertExportPixelBudget(context, multiplier, region) {\n    var _a, _b;\n    const sourceWidth = (_a = region === null || region === void 0 ? void 0 : region.width) !== null && _a !== void 0 ? _a : readCanvasDimension(context.canvas, 'getWidth', 'width');\n    const sourceHeight = (_b = region === null || region === void 0 ? void 0 : region.height) !== null && _b !== void 0 ? _b : readCanvasDimension(context.canvas, 'getHeight', 'height');\n    const outputWidth = Math.max(1, Math.ceil(sourceWidth * multiplier));\n    const outputHeight = Math.max(1, Math.ceil(sourceHeight * multiplier));\n    const pixelCount = outputWidth * outputHeight;\n    const maxPixels = context.options.maxExportPixels;\n    const maxDimension = context.options.maxExportDimension;\n    if (!Number.isFinite(pixelCount) || pixelCount > maxPixels) {\n        throw new RangeError(`[ImageEditor] Export size ${outputWidth}x${outputHeight} ` +\n            `(${pixelCount} pixels) exceeds maxExportPixels (${maxPixels}).`);\n    }\n    if (outputWidth > maxDimension || outputHeight > maxDimension) {\n        throw new RangeError(`[ImageEditor] Export size ${outputWidth}x${outputHeight} ` +\n            `exceeds maxExportDimension (${maxDimension}).`);\n    }\n}\nfunction computeExportRegion(context, exportArea) {\n    if (exportArea === 'canvas')\n        return { region: null, partialEdges: null };\n    const originalImage = context.getOriginalImage();\n    if (!originalImage)\n        return { region: null, partialEdges: null };\n    const bounds = getObjectBBox(originalImage);\n    const canvasLike = context.canvas;\n    const canvasWidth = typeof canvasLike.getWidth === 'function' ? canvasLike.getWidth() : canvasLike.width;\n    const canvasHeight = typeof canvasLike.getHeight === 'function' ? canvasLike.getHeight() : canvasLike.height;\n    if (!hasMeaningfulCanvasRegion(bounds, canvasWidth, canvasHeight)) {\n        throw new ExportError('exportImageBase64 failed: image export region is empty.');\n    }\n    return {\n        region: getClampedCanvasRegion(bounds, canvasWidth, canvasHeight, {\n            includePartialPixels: true,\n        }),\n        partialEdges: getPartialExportEdges(bounds, Number(originalImage.angle) || 0),\n    };\n}\nasync function withMaskExportState(context, mergeMasks, callback) {\n    if (!mergeMasks) {\n        return withObjectsHidden(context.canvas, isMaskObject, callback);\n    }\n    return withMaskStyleBackup({ canvas: context.canvas, options: context.options }, applyExportBakeInStyle, callback);\n}\nasync function withObjectsHidden(canvas, predicate, callback) {\n    const backups = getCanvasObjects(canvas)\n        .filter(predicate)\n        .map((object) => {\n        var _a;\n        return ({\n            object,\n            visible: (_a = object.visible) !== null && _a !== void 0 ? _a : true,\n        });\n    });\n    for (const backup of backups) {\n        try {\n            if (typeof backup.object.set === 'function') {\n                backup.object.set({ visible: false });\n            }\n            else {\n                backup.object.visible = false;\n            }\n        }\n        catch {\n        }\n    }\n    try {\n        return await callback();\n    }\n    finally {\n        for (const backup of backups) {\n            try {\n                if (typeof backup.object.set === 'function') {\n                    backup.object.set({ visible: backup.visible });\n                }\n                else {\n                    backup.object.visible = backup.visible;\n                }\n            }\n            catch {\n            }\n        }\n        requestRender(canvas);\n    }\n}\nasync function withSessionObjectsHidden(context, callback) {\n    return withObjectsHidden(context.canvas, (object) => isSessionObject(object) ||\n        object.isCropRect === true ||\n        object.maskLabel === true ||\n        object.isMosaicPreview === true, callback);\n}\nasync function withAnnotationsExportState(context, mergeAnnotations, callback) {\n    if (!mergeAnnotations) {\n        return withObjectsHidden(context.canvas, isAnnotationObject, callback);\n    }\n    return withObjectsHidden(context.canvas, (object) => isAnnotationObject(object) && object.annotationHidden === true, callback);\n}\nfunction getCanvasObjects(canvas) {\n    try {\n        return canvas.getObjects();\n    }\n    catch {\n        return [];\n    }\n}\nfunction isObjectOnCanvas(canvas, object) {\n    return getCanvasObjects(canvas).includes(object);\n}\nfunction captureMaskLabelBackups(canvas) {\n    var _a;\n    const backups = [];\n    for (const object of getCanvasObjects(canvas)) {\n        if (!isMaskObject(object))\n            continue;\n        const label = object.labelObject;\n        if (!label)\n            continue;\n        const wasOnCanvas = isObjectOnCanvas(canvas, label);\n        backups.push({\n            mask: object,\n            label,\n            wasOnCanvas,\n            visible: (_a = label.visible) !== null && _a !== void 0 ? _a : true,\n        });\n        try {\n            if (typeof label.set === 'function')\n                label.set({ visible: false });\n            if (wasOnCanvas)\n                canvas.remove(label);\n        }\n        catch {\n        }\n    }\n    return backups;\n}\nfunction restoreMaskLabelBackups(canvas, backups) {\n    for (const backup of backups) {\n        try {\n            backup.mask.labelObject = backup.label;\n            if (typeof backup.label.set === 'function') {\n                backup.label.set({ visible: backup.visible });\n            }\n            else {\n                backup.label.visible = backup.visible;\n            }\n            if (backup.wasOnCanvas && !isObjectOnCanvas(canvas, backup.label)) {\n                canvas.add(backup.label);\n                canvas.bringObjectToFront(backup.label);\n            }\n        }\n        catch {\n        }\n    }\n}\nfunction captureActiveObject(canvas) {\n    var _a;\n    try {\n        const canvasWithSelection = canvas;\n        if (typeof canvasWithSelection.getActiveObject !== 'function')\n            return null;\n        return (_a = canvasWithSelection.getActiveObject()) !== null && _a !== void 0 ? _a : null;\n    }\n    catch {\n        return null;\n    }\n}\nfunction restoreActiveObject(canvas, activeObject) {\n    if (!activeObject)\n        return;\n    if (!canvas.getObjects().includes(activeObject))\n        return;\n    try {\n        const canvasWithSelection = canvas;\n        if (typeof canvasWithSelection.setActiveObject === 'function') {\n            canvasWithSelection.setActiveObject(activeObject);\n        }\n    }\n    catch {\n    }\n}\nfunction requestRender(canvas) {\n    try {\n        if (typeof canvas.requestRenderAll === 'function') {\n            canvas.requestRenderAll();\n        }\n        else {\n            canvas.renderAll();\n        }\n    }\n    catch {\n    }\n}\nfunction applyExportBakeInStyle(mask) {\n    try {\n        mask.set({\n            opacity: 1,\n            fill: '#000',\n            strokeWidth: 0,\n            stroke: null,\n            selectable: false,\n        });\n        if (typeof mask.setCoords === 'function')\n            mask.setCoords();\n    }\n    catch {\n    }\n}\nfunction renderCanvasToDataUrl(canvas, format, quality, multiplier, region) {\n    const fabricOptions = {\n        format,\n        multiplier,\n    };\n    if (quality !== undefined)\n        fabricOptions.quality = quality;\n    if (region) {\n        fabricOptions.left = region.left;\n        fabricOptions.top = region.top;\n        fabricOptions.width = region.width;\n        fabricOptions.height = region.height;\n    }\n    return canvas.toDataURL(fabricOptions);\n}\nfunction hasPartialEdges(edges) {\n    return !!edges && (edges.left || edges.top || edges.right || edges.bottom);\n}\nfunction getImageDimensions(imageElement) {\n    return {\n        width: Math.max(1, imageElement.naturalWidth || imageElement.width || 1),\n        height: Math.max(1, imageElement.naturalHeight || imageElement.height || 1),\n    };\n}\nfunction loadImageElement(dataUrl) {\n    return startImageElementLoad(dataUrl, {\n        crossOrigin: 'anonymous',\n        createError: () => new Error('Failed to decode export data URL'),\n    }).promise;\n}\nfunction sealPartialTransparentEdges(canvasContext, width, height, edges) {\n    if (!hasPartialEdges(edges))\n        return;\n    const imageData = canvasContext.getImageData(0, 0, width, height);\n    const pixels = imageData.data;\n    const sealPixel = (x, y, fallbackX, fallbackY) => {\n        var _a, _b, _c, _d, _e, _f;\n        const index = (y * width + x) * 4;\n        const fallbackIndex = (fallbackY * width + fallbackX) * 4;\n        const alpha = (_a = pixels[index + 3]) !== null && _a !== void 0 ? _a : 0;\n        const fallbackAlpha = (_b = pixels[fallbackIndex + 3]) !== null && _b !== void 0 ? _b : 0;\n        if (alpha === 0 && fallbackAlpha > 0) {\n            pixels[index] = (_c = pixels[fallbackIndex]) !== null && _c !== void 0 ? _c : 0;\n            pixels[index + 1] = (_d = pixels[fallbackIndex + 1]) !== null && _d !== void 0 ? _d : 0;\n            pixels[index + 2] = (_e = pixels[fallbackIndex + 2]) !== null && _e !== void 0 ? _e : 0;\n            pixels[index + 3] = fallbackAlpha;\n        }\n        const nextAlpha = (_f = pixels[index + 3]) !== null && _f !== void 0 ? _f : 0;\n        if (nextAlpha > 0 && nextAlpha < 255) {\n            pixels[index + 3] = 255;\n        }\n    };\n    if ((edges === null || edges === void 0 ? void 0 : edges.left) && width > 1) {\n        for (let y = 0; y < height; y += 1)\n            sealPixel(0, y, 1, y);\n    }\n    if ((edges === null || edges === void 0 ? void 0 : edges.right) && width > 1) {\n        for (let y = 0; y < height; y += 1)\n            sealPixel(width - 1, y, width - 2, y);\n    }\n    if ((edges === null || edges === void 0 ? void 0 : edges.top) && height > 1) {\n        for (let x = 0; x < width; x += 1)\n            sealPixel(x, 0, x, 1);\n    }\n    if ((edges === null || edges === void 0 ? void 0 : edges.bottom) && height > 1) {\n        for (let x = 0; x < width; x += 1)\n            sealPixel(x, height - 1, x, height - 2);\n    }\n    if ((edges === null || edges === void 0 ? void 0 : edges.left) && (edges === null || edges === void 0 ? void 0 : edges.top) && width > 1 && height > 1) {\n        sealPixel(0, 0, 1, 1);\n    }\n    if ((edges === null || edges === void 0 ? void 0 : edges.right) && (edges === null || edges === void 0 ? void 0 : edges.top) && width > 1 && height > 1) {\n        sealPixel(width - 1, 0, width - 2, 1);\n    }\n    if ((edges === null || edges === void 0 ? void 0 : edges.left) && (edges === null || edges === void 0 ? void 0 : edges.bottom) && width > 1 && height > 1) {\n        sealPixel(0, height - 1, 1, height - 2);\n    }\n    if ((edges === null || edges === void 0 ? void 0 : edges.right) && (edges === null || edges === void 0 ? void 0 : edges.bottom) && width > 1 && height > 1) {\n        sealPixel(width - 1, height - 1, width - 2, height - 2);\n    }\n    canvasContext.putImageData(imageData, 0, 0);\n}\nfunction getJpegBackgroundColor(backgroundColor, ownerDocument) {\n    return resolveCanvasFillStyle(backgroundColor, ownerDocument);\n}\nconst colorValidationContexts = new WeakMap();\nfunction resolveCanvasFillStyle(backgroundColor, ownerDocument, fallback = '#ffffff') {\n    var _a, _b;\n    const value = String(backgroundColor !== null && backgroundColor !== void 0 ? backgroundColor : '').trim();\n    if (!value || isTransparentCssColor(value))\n        return '#ffffff';\n    const css = (_b = (_a = ownerDocument.defaultView) === null || _a === void 0 ? void 0 : _a.CSS) !== null && _b !== void 0 ? _b : globalThis.CSS;\n    const supportsColor = typeof (css === null || css === void 0 ? void 0 : css.supports) === 'function' ? css.supports('color', value) : null;\n    if (supportsColor === false)\n        return fallback;\n    const context = createColorValidationContext(ownerDocument);\n    if (!context)\n        return supportsColor === true ? value : fallback;\n    if (supportsColor === true) {\n        context.fillStyle = value;\n        return context.fillStyle;\n    }\n    context.fillStyle = '#000001';\n    const firstSentinel = context.fillStyle;\n    context.fillStyle = value;\n    const firstResolved = context.fillStyle;\n    if (firstResolved !== firstSentinel)\n        return firstResolved;\n    context.fillStyle = '#000002';\n    const secondSentinel = context.fillStyle;\n    context.fillStyle = value;\n    const secondResolved = context.fillStyle;\n    if (secondResolved !== secondSentinel)\n        return secondResolved;\n    return fallback;\n}\nfunction createColorValidationContext(ownerDocument) {\n    var _a;\n    if (colorValidationContexts.has(ownerDocument)) {\n        return (_a = colorValidationContexts.get(ownerDocument)) !== null && _a !== void 0 ? _a : null;\n    }\n    try {\n        const context = ownerDocument.createElement('canvas').getContext('2d');\n        colorValidationContexts.set(ownerDocument, context);\n        return context;\n    }\n    catch {\n        colorValidationContexts.set(ownerDocument, null);\n        return null;\n    }\n}\nfunction detectDataUrlMimeType(dataUrl) {\n    var _a, _b;\n    const match = /^data:([^;,]+)(?:[;,])/i.exec(dataUrl);\n    return (_b = (_a = match === null || match === void 0 ? void 0 : match[1]) === null || _a === void 0 ? void 0 : _a.toLowerCase()) !== null && _b !== void 0 ? _b : null;\n}\nfunction assertDataUrlMimeType(dataUrl, target, operation) {\n    const actualMimeType = detectDataUrlMimeType(dataUrl);\n    if (actualMimeType !== target.mimeType) {\n        throw new ExportError(`${operation} failed: browser encoded ${actualMimeType !== null && actualMimeType !== void 0 ? actualMimeType : 'unknown MIME'} instead of requested ${target.mimeType}.`);\n    }\n}\nfunction encodeCanvasAsDataUrl(canvas, target, operation) {\n    const encoded = target.quality === undefined\n        ? canvas.toDataURL(target.mimeType)\n        : canvas.toDataURL(target.mimeType, target.quality);\n    assertDataUrlMimeType(encoded, target, operation);\n    return encoded;\n}\nfunction getCanvasDocument(canvas) {\n    var _a, _b, _c, _d;\n    const canvasLike = canvas;\n    const ownerDocument = (_c = (_b = (_a = canvasLike.getElement) === null || _a === void 0 ? void 0 : _a.call(canvasLike)) === null || _b === void 0 ? void 0 : _b.ownerDocument) !== null && _c !== void 0 ? _c : (_d = canvasLike.lowerCanvasEl) === null || _d === void 0 ? void 0 : _d.ownerDocument;\n    if (ownerDocument)\n        return ownerDocument;\n    if (typeof document !== 'undefined')\n        return document;\n    throw new Error('Document is unavailable for export canvas creation.');\n}\nfunction isTransparentCssColor(value) {\n    const normalized = value.trim().toLowerCase();\n    if (normalized === 'transparent')\n        return true;\n    const hex = normalized.match(/^#([0-9a-f]{4}|[0-9a-f]{8})$/i);\n    if (hex) {\n        const digits = hex[1];\n        const alpha = digits.length === 4 ? digits[3] : digits.slice(6, 8);\n        return /^0+$/.test(alpha);\n    }\n    const commaAlpha = normalized.match(/^(?:rgba|hsla)\\(([^)]{0,200}),\\s*([^,/)]{0,50})\\)$/i);\n    if (commaAlpha && isZeroCssAlpha(commaAlpha[2]))\n        return true;\n    const slashAlpha = normalized.match(/^[a-z][a-z0-9-]*\\([^/]+\\/\\s*([^)]+)\\)$/i);\n    if (slashAlpha && isZeroCssAlpha(slashAlpha[1]))\n        return true;\n    return false;\n}\nfunction isZeroCssAlpha(value) {\n    const alpha = value.trim();\n    if (alpha.endsWith('%')) {\n        const numericPercent = Number.parseFloat(alpha.slice(0, -1));\n        return Number.isFinite(numericPercent) && numericPercent === 0;\n    }\n    const numericAlpha = Number.parseFloat(alpha);\n    return Number.isFinite(numericAlpha) && numericAlpha === 0;\n}\nasync function postProcessRegionDataUrl(dataUrl, edges, target, backgroundColor, ownerDocument) {\n    const shouldSealEdges = hasPartialEdges(edges);\n    const shouldCompositeJpegBackground = target.format === 'jpeg';\n    if (!shouldSealEdges && !shouldCompositeJpegBackground)\n        return dataUrl;\n    const imageElement = await loadImageElement(dataUrl);\n    const { width, height } = getImageDimensions(imageElement);\n    const offscreenCanvas = ownerDocument.createElement('canvas');\n    offscreenCanvas.width = width;\n    offscreenCanvas.height = height;\n    const canvasContext = offscreenCanvas.getContext('2d');\n    if (!canvasContext)\n        throw new Error('2D canvas context is unavailable');\n    canvasContext.drawImage(imageElement, 0, 0, width, height);\n    if (shouldSealEdges) {\n        sealPartialTransparentEdges(canvasContext, width, height, edges);\n    }\n    if (shouldCompositeJpegBackground) {\n        canvasContext.globalCompositeOperation = 'destination-over';\n        canvasContext.fillStyle = getJpegBackgroundColor(backgroundColor, ownerDocument);\n        canvasContext.fillRect(0, 0, width, height);\n        canvasContext.globalCompositeOperation = 'source-over';\n    }\n    return encodeCanvasAsDataUrl(offscreenCanvas, target, 'exportImageBase64');\n}\nfunction dataUrlToBytes(dataUrl) {\n    var _a;\n    const match = /^data:image\\/[a-z0-9.+-]+;base64,([A-Za-z0-9+/=]+)$/i.exec(dataUrl);\n    const base64 = (_a = match === null || match === void 0 ? void 0 : match[1]) !== null && _a !== void 0 ? _a : '';\n    if (!base64) {\n        throw new Error('exportImageFile received a malformed or empty image data URL.');\n    }\n    if (typeof globalThis.atob === 'function') {\n        const binary = globalThis.atob(base64);\n        const bytes = new Uint8Array(binary.length);\n        for (let index = 0; index < binary.length; index += 1) {\n            bytes[index] = binary.charCodeAt(index);\n        }\n        return bytes;\n    }\n    const bufferCtor = globalThis.Buffer;\n    if (bufferCtor && typeof bufferCtor.from === 'function') {\n        const source = bufferCtor.from(base64, 'base64');\n        const buffer = new ArrayBuffer(source.length);\n        const bytes = new Uint8Array(buffer);\n        bytes.set(source);\n        return bytes;\n    }\n    throw new Error('No base64 decoder is available for exportImageFile.');\n}\nasync function reencodeDataUrlAs(sourceDataUrl, target, backgroundColor, canvas) {\n    if (detectDataUrlMimeType(sourceDataUrl) === target.mimeType) {\n        return sourceDataUrl;\n    }\n    const imageElement = await loadImageElement(sourceDataUrl);\n    const { width, height } = getImageDimensions(imageElement);\n    const ownerDocument = getCanvasDocument(canvas);\n    const offscreenCanvas = ownerDocument.createElement('canvas');\n    offscreenCanvas.width = width;\n    offscreenCanvas.height = height;\n    const canvasContext = offscreenCanvas.getContext('2d');\n    if (!canvasContext) {\n        throw new Error('Unable to acquire 2D context for export conversion');\n    }\n    if (target.format === 'jpeg') {\n        canvasContext.fillStyle = getJpegBackgroundColor(backgroundColor, ownerDocument);\n        canvasContext.fillRect(0, 0, width, height);\n    }\n    canvasContext.drawImage(imageElement, 0, 0, width, height);\n    return encodeCanvasAsDataUrl(offscreenCanvas, target, 'exportImageFile');\n}\nfunction warnNoImageLoaded(options, operation) {\n    reportWarning(options, null, `${operation} skipped: no image is loaded on the canvas.`);\n}\nfunction extensionForFormat(format) {\n    return format === 'jpeg' ? 'jpg' : format;\n}\nconst MAX_EXPORT_FILE_BASENAME_LENGTH = 120;\nfunction replaceUnsafeFileNameCharacters(value) {\n    let output = '';\n    let lastWasReplacement = false;\n    for (const char of value) {\n        const code = char.charCodeAt(0);\n        const unsafe = code <= 31 || code === 127 || '<>:\"|?*'.includes(char);\n        if (unsafe) {\n            if (!lastWasReplacement)\n                output += '_';\n            lastWasReplacement = true;\n            continue;\n        }\n        output += char;\n        lastWasReplacement = false;\n    }\n    return output;\n}\nfunction sanitizeFileNameBase(value) {\n    const withoutPathSeparators = value.replace(/[\\\\/]+/g, '_');\n    const sanitized = replaceUnsafeFileNameCharacters(withoutPathSeparators)\n        .replace(/\\.\\.+/g, '.')\n        .replace(/^\\.+|\\.+$/g, '')\n        .replace(/\\s+/g, ' ')\n        .trim()\n        .slice(0, MAX_EXPORT_FILE_BASENAME_LENGTH)\n        .trim();\n    return sanitized || 'edited_image';\n}\nfunction resolveFileName(baseName, format) {\n    const fallback = 'edited_image';\n    const trimmed = String(baseName || fallback).trim() || fallback;\n    const ext = extensionForFormat(format.format);\n    const baseWithoutExtension = trimmed.replace(/\\.(jpe?g|png|webp)$/i, '');\n    const safeBase = sanitizeFileNameBase(baseWithoutExtension);\n    return `${safeBase}.${ext}`;\n}\nasync function renderExportDataUrl(context, resolved, validateMimeType = true) {\n    const render = async () => {\n        const activeObject = captureActiveObject(context.canvas);\n        const labelBackups = captureMaskLabelBackups(context.canvas);\n        try {\n            context.canvas.discardActiveObject();\n            const { region, partialEdges } = computeExportRegion(context, resolved.exportArea);\n            assertExportPixelBudget(context, resolved.multiplier, region);\n            const renderFormat = region && resolved.format.format === 'jpeg' ? 'png' : resolved.format.format;\n            const renderQuality = renderFormat === 'png' ? undefined : resolved.format.quality;\n            let dataUrl = await withSessionObjectsHidden(context, async () => withMaskExportState(context, resolved.mergeMasks, async () => withAnnotationsExportState(context, resolved.mergeAnnotations, async () => renderCanvasToDataUrl(context.canvas, renderFormat, renderQuality, resolved.multiplier, region))));\n            if (region && (hasPartialEdges(partialEdges) || resolved.format.format === 'jpeg')) {\n                dataUrl = await postProcessRegionDataUrl(dataUrl, partialEdges, resolved.format, context.options.backgroundColor, getCanvasDocument(context.canvas));\n            }\n            if (validateMimeType) {\n                assertDataUrlMimeType(dataUrl, resolved.format, 'exportImageBase64');\n            }\n            return dataUrl;\n        }\n        finally {\n            restoreMaskLabelBackups(context.canvas, labelBackups);\n            restoreActiveObject(context.canvas, activeObject);\n            requestRender(context.canvas);\n        }\n    };\n    return context.withSelectionChangeSuppressed\n        ? context.withSelectionChangeSuppressed(render)\n        : render();\n}\nexport async function exportImageBase64(context, options) {\n    if (!context.isImageLoaded()) {\n        warnNoImageLoaded(context.options, 'exportImageBase64');\n        throw new ExportNotReadyError('exportImageBase64');\n    }\n    const resolved = resolveExportOptions(context, options);\n    return renderExportDataUrl(context, resolved);\n}\nexport async function exportImageFile(context, options) {\n    var _a;\n    if (!context.isImageLoaded()) {\n        warnNoImageLoaded(context.options, 'exportImageFile');\n        throw new ExportNotReadyError('exportImageFile');\n    }\n    const providedOptions = options !== null && options !== void 0 ? options : {};\n    const resolved = resolveExportOptions(context, providedOptions);\n    const rawDataUrl = await renderExportDataUrl(context, resolved, false);\n    const finalDataUrl = await reencodeDataUrlAs(rawDataUrl, resolved.format, context.options.backgroundColor, context.canvas);\n    let bytes;\n    try {\n        bytes = dataUrlToBytes(finalDataUrl);\n    }\n    catch (error) {\n        throw new ExportError('exportImageFile failed to decode rendered data URL.', error);\n    }\n    const fileName = resolveFileName((_a = providedOptions.fileName) !== null && _a !== void 0 ? _a : context.options.defaultDownloadFileName, resolved.format);\n    return new File([bytes], fileName, { type: resolved.format.mimeType });\n}\nexport async function downloadImage(context, options) {\n    if (!context.isImageLoaded()) {\n        warnNoImageLoaded(context.options, 'downloadImage');\n        return;\n    }\n    if (options !== undefined && options !== null && typeof options !== 'object') {\n        throw new TypeError('[ImageEditor] downloadImage(options) expects an ImageExportOptions object.');\n    }\n    const file = await exportImageFile(context, options);\n    triggerFileDownload(context, file);\n}\nfunction triggerFileDownload(context, file) {\n    var _a;\n    const ownerDocument = getCanvasDocument(context.canvas);\n    const objectUrl = URL.createObjectURL(file);\n    const link = ownerDocument.createElement('a');\n    link.download = file.name;\n    link.href = objectUrl;\n    const body = (_a = ownerDocument.body) !== null && _a !== void 0 ? _a : ownerDocument.documentElement;\n    if (!body)\n        throw new Error('Document body is unavailable for download trigger.');\n    body.appendChild(link);\n    try {\n        link.click();\n    }\n    finally {\n        body.removeChild(link);\n        scheduleObjectUrlRevoke(objectUrl);\n    }\n}\nfunction scheduleObjectUrlRevoke(objectUrl) {\n    var _a, _b;\n    if (typeof globalThis.setTimeout !== 'function') {\n        return;\n    }\n    const timeoutId = globalThis.setTimeout(() => {\n        safeRevokeObjectUrl(objectUrl);\n    }, DOWNLOAD_OBJECT_URL_REVOKE_DELAY_MS);\n    (_b = (_a = timeoutId).unref) === null || _b === void 0 ? void 0 : _b.call(_a);\n}\nfunction safeRevokeObjectUrl(objectUrl) {\n    try {\n        if (typeof URL.revokeObjectURL === 'function') {\n            URL.revokeObjectURL(objectUrl);\n        }\n    }\n    catch {\n    }\n}\nexport async function mergeMasks(context) {\n    await flattenOverlayGroupToBaseImage(context, {\n        operation: 'mergeMasks',\n        exportOptions: {\n            exportArea: 'image',\n            mergeMasks: true,\n            mergeAnnotations: false,\n            multiplier: context.options.exportMultiplier,\n            fileType: 'png',\n        },\n        getTargets: () => context.canvas.getObjects().filter(isMaskObject),\n        getPreservedObjects: () => context.getAnnotations(),\n        removeTargetsNoHistory: () => {\n            context.removeAllMasksNoHistory();\n        },\n        restorePreservedObjects: (objects) => context.restoreAnnotations(objects),\n    });\n}\nexport async function mergeAnnotations(context) {\n    await flattenOverlayGroupToBaseImage(context, {\n        operation: 'mergeAnnotations',\n        exportOptions: {\n            exportArea: 'image',\n            mergeMasks: false,\n            mergeAnnotations: true,\n            multiplier: context.options.exportMultiplier,\n            fileType: 'png',\n        },\n        getTargets: () => context.canvas.getObjects().filter(isAnnotationObject),\n        getPreservedObjects: () => context.getMasks(),\n        removeTargetsNoHistory: () => {\n            context.removeAllAnnotationsNoHistory();\n        },\n        restorePreservedObjects: (objects) => context.restoreMasks(objects),\n    });\n}\n//# sourceMappingURL=export-service.js.map","import { ExportNotReadyError } from '../core/errors.js';\nimport { isAnnotationObject, isMaskObject, } from '../core/public-types.js';\nimport { runBusyOperation, runBusyOperationWithoutUi } from '../runtime/editor-operation-runner.js';\nimport { downloadImage as downloadImageImpl, exportImageBase64 as exportImageBase64Impl, exportImageFile as exportImageFileImpl, mergeAnnotations as mergeAnnotationsImpl, mergeMasks as mergeMasksImpl, } from './export-service.js';\nexport async function mergeMasksAction(access) {\n    const canvas = access.getCanvas();\n    if (!canvas)\n        return;\n    if (!access.canRunIdleOperation('mergeMasks'))\n        return;\n    access.finalizeActiveTextEditingIfNeeded();\n    const hasMasks = canvas.getObjects().some(isMaskObject);\n    if (!hasMasks)\n        return;\n    await runBusyOperation(access.buildBusyOperationAccess(), 'mergeMasks', async (callbackContext, operationToken) => {\n        await mergeMasksImpl(access.buildMergeMasksContext(operationToken));\n        access.updateInputs();\n        access.updateMaskList();\n        access.updateAnnotationList();\n        access.emitMasksChanged(callbackContext);\n        if (access.getAnnotations().length > 0) {\n            access.emitAnnotationsChanged(callbackContext);\n        }\n        access.emitImageChanged(callbackContext);\n    });\n}\nexport async function mergeAnnotationsAction(access) {\n    const canvas = access.getCanvas();\n    if (!canvas)\n        return;\n    if (!access.canRunIdleOperation('mergeAnnotations'))\n        return;\n    access.finalizeActiveTextEditingIfNeeded();\n    const hasAnnotations = canvas.getObjects().some(isAnnotationObject);\n    if (!hasAnnotations)\n        return;\n    await runBusyOperation(access.buildBusyOperationAccess(), 'mergeAnnotations', async (callbackContext, operationToken) => {\n        await mergeAnnotationsImpl(access.buildMergeAnnotationsContext(operationToken));\n        access.updateInputs();\n        access.updateMaskList();\n        access.updateAnnotationList();\n        access.emitAnnotationsChanged(callbackContext);\n        if (access.getMasks().length > 0)\n            access.emitMasksChanged(callbackContext);\n        access.emitImageChanged(callbackContext);\n    });\n}\nexport async function downloadImageAction(access, options) {\n    if (!access.getCanvas())\n        return;\n    if (!access.canRunIdleOperation('downloadImage'))\n        return;\n    access.finalizeActiveTextEditingIfNeeded();\n    await runBusyOperationWithoutUi(access.buildBusyOperationAccess(), 'downloadImage', async () => {\n        await downloadImageImpl(access.buildExportServiceContext(), options);\n    });\n}\nexport async function exportImageBase64Action(access, options) {\n    if (!access.getCanvas()) {\n        throw new ExportNotReadyError('exportImageBase64', 'editor is not initialized');\n    }\n    access.assertIdleForOperation('exportImageBase64', options);\n    access.finalizeActiveTextEditingIfNeeded();\n    return runBusyOperationWithoutUi(access.buildBusyOperationAccess(), 'exportImageBase64', () => exportImageBase64Impl(access.buildExportServiceContext(), options));\n}\nexport async function exportImageFileAction(access, options) {\n    if (!access.getCanvas()) {\n        throw new ExportNotReadyError('exportImageFile', 'editor is not initialized');\n    }\n    access.assertIdleForOperation('exportImageFile', options);\n    access.finalizeActiveTextEditingIfNeeded();\n    return runBusyOperationWithoutUi(access.buildBusyOperationAccess(), 'exportImageFile', () => exportImageFileImpl(access.buildExportServiceContext(), options));\n}\n//# sourceMappingURL=export-actions.js.map","export function forceReflow(element) {\n    if (!element)\n        return;\n    void element.offsetWidth;\n}\n//# sourceMappingURL=dom.js.map","import { forceReflow } from '../utils/dom.js';\nexport function selectLayoutStrategy(mode) {\n    return mode;\n}\nexport class ViewportCache {\n    constructor() {\n        Object.defineProperty(this, \"lastVisible\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: null\n        });\n    }\n    measure(container, fallback, scrollbarSize) {\n        var _a;\n        if (!container)\n            return fallback;\n        const containerWidth = Math.floor(container.clientWidth);\n        const containerHeight = Math.floor(container.clientHeight);\n        if (containerWidth > 0 && containerHeight > 0) {\n            this.lastVisible = measureContainerViewport(container, fallback, scrollbarSize);\n            return this.lastVisible;\n        }\n        return (_a = this.lastVisible) !== null && _a !== void 0 ? _a : fallback;\n    }\n    peek() {\n        return this.lastVisible;\n    }\n    clear() {\n        this.lastVisible = null;\n    }\n}\nconst OVERFLOW_EPSILON = 0.5;\nfunction normalizeOverflowValue(value) {\n    return String(value !== null && value !== void 0 ? value : '')\n        .trim()\n        .toLowerCase();\n}\nfunction getContainerOverflowValues(container) {\n    var _a, _b;\n    const style = container.style;\n    let computedOverflow = '';\n    let computedOverflowX = '';\n    let computedOverflowY = '';\n    const view = (_b = (_a = container.ownerDocument) === null || _a === void 0 ? void 0 : _a.defaultView) !== null && _b !== void 0 ? _b : (typeof window === 'undefined' ? null : window);\n    if (typeof (view === null || view === void 0 ? void 0 : view.getComputedStyle) === 'function') {\n        const computed = view.getComputedStyle(container);\n        computedOverflow = computed.overflow;\n        computedOverflowX = computed.overflowX;\n        computedOverflowY = computed.overflowY;\n    }\n    const x = [\n        normalizeOverflowValue(style === null || style === void 0 ? void 0 : style.overflow),\n        normalizeOverflowValue(style === null || style === void 0 ? void 0 : style.overflowX),\n        normalizeOverflowValue(computedOverflow),\n        normalizeOverflowValue(computedOverflowX),\n    ];\n    const y = [\n        normalizeOverflowValue(style === null || style === void 0 ? void 0 : style.overflow),\n        normalizeOverflowValue(style === null || style === void 0 ? void 0 : style.overflowY),\n        normalizeOverflowValue(computedOverflow),\n        normalizeOverflowValue(computedOverflowY),\n    ];\n    return { x, y, all: [...x, ...y] };\n}\nfunction isAutoScrollableOverflow(value) {\n    return value === 'auto' || value === 'overlay';\n}\nexport function measureScrollbarSize(ownerDocument) {\n    const doc = ownerDocument !== null && ownerDocument !== void 0 ? ownerDocument : (typeof document === 'undefined' ? null : document);\n    if (!(doc === null || doc === void 0 ? void 0 : doc.body))\n        return { width: 0, height: 0 };\n    const probe = doc.createElement('div');\n    probe.style.position = 'absolute';\n    probe.style.left = '-9999px';\n    probe.style.top = '-9999px';\n    probe.style.width = '100px';\n    probe.style.height = '100px';\n    probe.style.overflow = 'scroll';\n    probe.style.visibility = 'hidden';\n    probe.style.pointerEvents = 'none';\n    doc.body.appendChild(probe);\n    const width = Math.max(0, probe.offsetWidth - probe.clientWidth);\n    const height = Math.max(0, probe.offsetHeight - probe.clientHeight);\n    probe.remove();\n    return { width, height };\n}\nfunction normalizeScrollbarSize(scrollbarSize) {\n    return {\n        width: Math.max(0, Number(scrollbarSize === null || scrollbarSize === void 0 ? void 0 : scrollbarSize.width) || 0),\n        height: Math.max(0, Number(scrollbarSize === null || scrollbarSize === void 0 ? void 0 : scrollbarSize.height) || 0),\n    };\n}\nexport function measureContainerViewport(container, fallback, scrollbarSize) {\n    if (!container)\n        return fallback;\n    const clientWidth = Math.floor(container.clientWidth || 0);\n    const clientHeight = Math.floor(container.clientHeight || 0);\n    if (clientWidth <= 0 || clientHeight <= 0)\n        return fallback;\n    const overflow = getContainerOverflowValues(container);\n    if (overflow.all.includes('scroll')) {\n        return { width: clientWidth, height: clientHeight };\n    }\n    const scrollbar = normalizeScrollbarSize(scrollbarSize);\n    const canAutoScrollX = overflow.x.some(isAutoScrollableOverflow);\n    const canAutoScrollY = overflow.y.some(isAutoScrollableOverflow);\n    const scrollWidth = Math.ceil(container.scrollWidth || 0);\n    const scrollHeight = Math.ceil(container.scrollHeight || 0);\n    const hasHorizontalScrollbar = canAutoScrollX && scrollWidth > clientWidth + OVERFLOW_EPSILON;\n    const hasVerticalScrollbar = canAutoScrollY && scrollHeight > clientHeight + OVERFLOW_EPSILON;\n    return {\n        width: clientWidth + (hasVerticalScrollbar ? scrollbar.width : 0),\n        height: clientHeight + (hasHorizontalScrollbar ? scrollbar.height : 0),\n    };\n}\nexport function computeScrollableCanvasSize(contentWidth, contentHeight, viewport, scrollbarSize) {\n    const viewportW = Math.max(1, viewport.width || 1);\n    const viewportH = Math.max(1, viewport.height || 1);\n    const scrollbar = normalizeScrollbarSize(scrollbarSize);\n    let hasHorizontal = false;\n    let hasVertical = false;\n    for (let i = 0; i < 4; i += 1) {\n        const effectiveW = Math.max(1, viewportW - (hasVertical ? scrollbar.width : 0));\n        const effectiveH = Math.max(1, viewportH - (hasHorizontal ? scrollbar.height : 0));\n        const nextHorizontal = contentWidth > effectiveW + OVERFLOW_EPSILON;\n        const nextVertical = contentHeight > effectiveH + OVERFLOW_EPSILON;\n        if (nextHorizontal === hasHorizontal && nextVertical === hasVertical)\n            break;\n        hasHorizontal = nextHorizontal;\n        hasVertical = nextVertical;\n    }\n    const effectiveW = Math.max(1, viewportW - (hasVertical ? scrollbar.width : 0));\n    const effectiveH = Math.max(1, viewportH - (hasHorizontal ? scrollbar.height : 0));\n    return {\n        width: hasHorizontal ? Math.ceil(contentWidth) : effectiveW,\n        height: hasVertical ? Math.ceil(contentHeight) : effectiveH,\n    };\n}\nexport function computeFitLayout(imageWidth, imageHeight, optionsCanvasWidth, optionsCanvasHeight, containerSize) {\n    const canvasWidth = Math.max(1, (containerSize.width || optionsCanvasWidth) - 1);\n    const canvasHeight = Math.max(1, (containerSize.height || optionsCanvasHeight) - 1);\n    const fitScale = Math.min(canvasWidth / imageWidth, canvasHeight / imageHeight, 1);\n    return {\n        canvasWidth,\n        canvasHeight,\n        imageScale: fitScale,\n        imageLeft: 0,\n        imageTop: 0,\n        baseImageScale: fitScale,\n    };\n}\nexport function computeCoverLayout(imageWidth, imageHeight, optionsCanvasWidth, optionsCanvasHeight, containerSize, scrollbarSize) {\n    const viewportW = containerSize.width || optionsCanvasWidth;\n    const viewportH = containerSize.height || optionsCanvasHeight;\n    const scrollbar = normalizeScrollbarSize(scrollbarSize);\n    let hasHorizontal = false;\n    let hasVertical = false;\n    let coverScale = 1;\n    let scaledW = imageWidth;\n    let scaledH = imageHeight;\n    for (let i = 0; i < 4; i += 1) {\n        const effectiveW = Math.max(1, viewportW - (hasVertical ? scrollbar.width : 0));\n        const effectiveH = Math.max(1, viewportH - (hasHorizontal ? scrollbar.height : 0));\n        coverScale = Math.min(1, Math.max(effectiveW / imageWidth, effectiveH / imageHeight));\n        scaledW = imageWidth * coverScale;\n        scaledH = imageHeight * coverScale;\n        const nextHasHorizontal = scaledW > effectiveW + OVERFLOW_EPSILON;\n        const nextHasVertical = scaledH > effectiveH + OVERFLOW_EPSILON;\n        if (nextHasHorizontal === hasHorizontal && nextHasVertical === hasVertical)\n            break;\n        hasHorizontal = nextHasHorizontal;\n        hasVertical = nextHasVertical;\n    }\n    const canvasSize = computeScrollableCanvasSize(scaledW, scaledH, {\n        width: viewportW,\n        height: viewportH,\n    }, scrollbar);\n    return {\n        canvasWidth: canvasSize.width,\n        canvasHeight: canvasSize.height,\n        imageScale: coverScale,\n        imageLeft: 0,\n        imageTop: 0,\n        baseImageScale: coverScale,\n    };\n}\nexport function computeExpandLayout(imageWidth, imageHeight, containerSize) {\n    const canvasWidth = Math.max(containerSize.width, Math.floor(imageWidth));\n    const canvasHeight = Math.max(containerSize.height, Math.floor(imageHeight));\n    return {\n        canvasWidth,\n        canvasHeight,\n        imageScale: 1,\n        imageLeft: 0,\n        imageTop: 0,\n        baseImageScale: 1,\n    };\n}\nexport function applyCanvasDimensions(canvas, width, height, containerElement) {\n    const integerWidth = Math.max(1, Math.round(Number(width) || 1));\n    const integerHeight = Math.max(1, Math.round(Number(height) || 1));\n    canvas.setDimensions({ width: integerWidth, height: integerHeight });\n    forceReflow(containerElement);\n}\n//# sourceMappingURL=layout-manager.js.map","import { ImageDecodeError } from '../core/errors.js';\nconst HEADER_PROBE_BYTES = 256 * 1024;\nconst PNG_SIGNATURE = [0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a];\nconst JPEG_SOF_DIMENSIONS_MIN_SEGMENT_LENGTH = 7;\nfunction hasPositiveDimensions(width, height) {\n    return Number.isFinite(width) && Number.isFinite(height) && width > 0 && height > 0;\n}\nfunction readUint16BE(bytes, offset) {\n    if (offset < 0 || offset + 2 > bytes.length)\n        return null;\n    return (bytes[offset] << 8) | bytes[offset + 1];\n}\nfunction readUint32BE(bytes, offset) {\n    if (offset < 0 || offset + 4 > bytes.length)\n        return null;\n    return (bytes[offset] * 0x1000000 +\n        ((bytes[offset + 1] << 16) | (bytes[offset + 2] << 8) | bytes[offset + 3]));\n}\nfunction readUint16LE(bytes, offset) {\n    if (offset < 0 || offset + 2 > bytes.length)\n        return null;\n    return bytes[offset] | (bytes[offset + 1] << 8);\n}\nfunction readUint24LE(bytes, offset) {\n    if (offset < 0 || offset + 3 > bytes.length)\n        return null;\n    return bytes[offset] | (bytes[offset + 1] << 8) | (bytes[offset + 2] << 16);\n}\nfunction matchesAscii(bytes, offset, value) {\n    if (offset < 0 || offset + value.length > bytes.length)\n        return false;\n    for (let index = 0; index < value.length; index += 1) {\n        if (bytes[offset + index] !== value.charCodeAt(index))\n            return false;\n    }\n    return true;\n}\nfunction readPngDimensions(bytes) {\n    if (bytes.length < 24)\n        return null;\n    if (!PNG_SIGNATURE.every((byte, index) => bytes[index] === byte))\n        return null;\n    if (!matchesAscii(bytes, 12, 'IHDR'))\n        return null;\n    const width = readUint32BE(bytes, 16);\n    const height = readUint32BE(bytes, 20);\n    return width !== null && height !== null && hasPositiveDimensions(width, height)\n        ? { width, height }\n        : null;\n}\nfunction isJpegStartOfFrame(marker) {\n    return ((marker >= 0xc0 && marker <= 0xc3) ||\n        (marker >= 0xc5 && marker <= 0xc7) ||\n        (marker >= 0xc9 && marker <= 0xcb) ||\n        (marker >= 0xcd && marker <= 0xcf));\n}\nfunction isStandaloneJpegMarker(marker) {\n    return marker === 0x01 || (marker >= 0xd0 && marker <= 0xd7);\n}\nfunction readJpegDimensions(bytes) {\n    if (bytes.length < 4 || bytes[0] !== 0xff || bytes[1] !== 0xd8)\n        return null;\n    let offset = 2;\n    while (offset + 1 < bytes.length) {\n        while (offset < bytes.length && bytes[offset] === 0xff)\n            offset += 1;\n        if (offset >= bytes.length)\n            return null;\n        const marker = bytes[offset];\n        offset += 1;\n        if (marker === 0xda || marker === 0xd9)\n            return null;\n        if (isStandaloneJpegMarker(marker))\n            continue;\n        const segmentLength = readUint16BE(bytes, offset);\n        if (segmentLength === null || segmentLength < 2)\n            return null;\n        const segmentStart = offset + 2;\n        const segmentEnd = offset + segmentLength;\n        if (segmentEnd > bytes.length)\n            return null;\n        if (isJpegStartOfFrame(marker)) {\n            if (segmentLength < JPEG_SOF_DIMENSIONS_MIN_SEGMENT_LENGTH ||\n                segmentStart + 5 > segmentEnd) {\n                return null;\n            }\n            const height = readUint16BE(bytes, segmentStart + 1);\n            const width = readUint16BE(bytes, segmentStart + 3);\n            return width !== null && height !== null && hasPositiveDimensions(width, height)\n                ? { width, height }\n                : null;\n        }\n        offset = segmentEnd;\n    }\n    return null;\n}\nfunction readWebpDimensions(bytes) {\n    if (bytes.length < 20 || !matchesAscii(bytes, 0, 'RIFF') || !matchesAscii(bytes, 8, 'WEBP')) {\n        return null;\n    }\n    if (matchesAscii(bytes, 12, 'VP8X') && bytes.length >= 30) {\n        const rawWidth = readUint24LE(bytes, 24);\n        const rawHeight = readUint24LE(bytes, 27);\n        if (rawWidth === null || rawHeight === null)\n            return null;\n        return { width: rawWidth + 1, height: rawHeight + 1 };\n    }\n    if (matchesAscii(bytes, 12, 'VP8 ') && bytes.length >= 30) {\n        if (bytes[23] !== 0x9d || bytes[24] !== 0x01 || bytes[25] !== 0x2a)\n            return null;\n        const rawWidth = readUint16LE(bytes, 26);\n        const rawHeight = readUint16LE(bytes, 28);\n        if (rawWidth === null || rawHeight === null)\n            return null;\n        return { width: rawWidth & 0x3fff, height: rawHeight & 0x3fff };\n    }\n    if (matchesAscii(bytes, 12, 'VP8L') && bytes.length >= 25 && bytes[20] === 0x2f) {\n        const byte1 = bytes[21];\n        const byte2 = bytes[22];\n        const byte3 = bytes[23];\n        const byte4 = bytes[24];\n        return {\n            width: 1 + byte1 + ((byte2 & 0x3f) << 8),\n            height: 1 + (byte2 >> 6) + (byte3 << 2) + ((byte4 & 0x0f) << 10),\n        };\n    }\n    return null;\n}\nexport function readImageHeaderDimensions(bytes) {\n    var _a, _b;\n    return (_b = (_a = readPngDimensions(bytes)) !== null && _a !== void 0 ? _a : readJpegDimensions(bytes)) !== null && _b !== void 0 ? _b : readWebpDimensions(bytes);\n}\nexport function estimateBase64PayloadBytes(dataUrl) {\n    const commaIndex = dataUrl.indexOf(',');\n    if (commaIndex < 0)\n        return null;\n    const header = dataUrl.slice(0, commaIndex).toLowerCase();\n    if (!header.endsWith(';base64'))\n        return null;\n    const base64 = dataUrl.slice(commaIndex + 1).replace(/\\s+/g, '');\n    if (!base64)\n        return 0;\n    const padding = base64.endsWith('==') ? 2 : base64.endsWith('=') ? 1 : 0;\n    return Math.max(0, Math.floor((base64.length * 3) / 4) - padding);\n}\nfunction decodeBase64Prefix(dataUrl, maxBytes) {\n    const commaIndex = dataUrl.indexOf(',');\n    if (commaIndex < 0)\n        return null;\n    const header = dataUrl.slice(0, commaIndex).toLowerCase();\n    if (!header.endsWith(';base64'))\n        return null;\n    const encodedLength = Math.ceil(maxBytes / 3) * 4;\n    const base64 = dataUrl\n        .slice(commaIndex + 1, commaIndex + 1 + encodedLength)\n        .replace(/\\s+/g, '');\n    if (!base64)\n        return new Uint8Array(0);\n    const paddedBase64 = padBase64(base64);\n    if (paddedBase64 === null)\n        return null;\n    const bufferCtor = globalThis.Buffer;\n    if (bufferCtor && typeof bufferCtor.from === 'function') {\n        return bufferCtor.from(paddedBase64, 'base64');\n    }\n    if (typeof globalThis.atob === 'function') {\n        const binary = globalThis.atob(paddedBase64);\n        const bytes = new Uint8Array(binary.length);\n        for (let index = 0; index < binary.length; index += 1) {\n            bytes[index] = binary.charCodeAt(index);\n        }\n        return bytes;\n    }\n    return null;\n}\nfunction padBase64(base64) {\n    const remainder = base64.length % 4;\n    if (remainder === 0)\n        return base64;\n    if (remainder === 1)\n        return null;\n    return `${base64}${'='.repeat(4 - remainder)}`;\n}\nasync function readBlobAsArrayBuffer(blob) {\n    if (typeof blob.arrayBuffer === 'function') {\n        return blob.arrayBuffer();\n    }\n    return new Promise((resolve, reject) => {\n        const reader = new FileReader();\n        reader.onload = () => {\n            const result = reader.result;\n            if (result instanceof ArrayBuffer) {\n                resolve(result);\n            }\n            else {\n                reject(new Error('FileReader returned a non-ArrayBuffer result'));\n            }\n        };\n        reader.onerror = () => {\n            var _a;\n            reject((_a = reader.error) !== null && _a !== void 0 ? _a : new Error('FileReader error'));\n        };\n        reader.onabort = () => {\n            reject(new Error('FileReader read aborted'));\n        };\n        reader.readAsArrayBuffer(blob);\n    });\n}\nfunction assertInputByteBudget(bytes, maxInputBytes) {\n    if (bytes === null)\n        return;\n    if (bytes > maxInputBytes) {\n        throw new ImageDecodeError(`Image input byte length ${bytes} exceeds maxInputBytes (${maxInputBytes}).`);\n    }\n}\nfunction assertInputPixelBudget(dimensions, maxInputPixels) {\n    if (!dimensions)\n        return;\n    const pixels = dimensions.width * dimensions.height;\n    if (pixels > maxInputPixels) {\n        throw new ImageDecodeError(`Image input dimensions ${dimensions.width}x${dimensions.height} exceed maxInputPixels (${maxInputPixels}).`);\n    }\n}\nexport function assertImageDataUrlInputBudget(dataUrl, options) {\n    assertInputByteBudget(estimateBase64PayloadBytes(dataUrl), options.maxInputBytes);\n    const headerBytes = decodeBase64Prefix(dataUrl, HEADER_PROBE_BYTES);\n    assertInputPixelBudget(headerBytes ? readImageHeaderDimensions(headerBytes) : null, options.maxInputPixels);\n}\nexport async function assertImageFileInputBudget(file, options) {\n    assertInputByteBudget(file.size, options.maxInputBytes);\n    const probeBlob = typeof file.slice === 'function' ? file.slice(0, HEADER_PROBE_BYTES) : file;\n    const probeBuffer = await readBlobAsArrayBuffer(probeBlob);\n    assertInputPixelBudget(readImageHeaderDimensions(new Uint8Array(probeBuffer)), options.maxInputPixels);\n}\n//# sourceMappingURL=image-input-budget.js.map","import { reportError, reportWarning } from '../core/callback-reporter.js';\nimport { markBaseImageObject } from '../core/editor-object-kind.js';\nimport { ImageDecodeError, ImageLoadBudgetExhaustedError } from '../core/errors.js';\nimport { loadFromState, saveState } from '../core/state-serializer.js';\nimport { isSupportedImageDataUrl } from '../utils/file.js';\nimport { startImageElementLoad } from '../utils/image-element-loader.js';\nimport { withTimeout } from '../utils/timeout.js';\nimport { computeCoverLayout, computeExpandLayout, computeFitLayout, selectLayoutStrategy, applyCanvasDimensions, measureScrollbarSize, } from './layout-manager.js';\nimport { computeDownsampleDimensions, detectSourceMimeType, resampleImage, } from './image-resampler.js';\nimport { assertImageDataUrlInputBudget } from './image-input-budget.js';\nconst MIN_FABRIC_IMAGE_LOAD_BUDGET_MS = 10;\nexport async function loadImage(context, imageBase64, loadOptions = {}) {\n    if (!isSupportedImageDataUrl(imageBase64))\n        return;\n    try {\n        assertImageDataUrlInputBudget(imageBase64, context.options);\n    }\n    catch (error) {\n        const errorMessage = error instanceof Error ? `loadImage failed: ${error.message}` : 'loadImage failed';\n        reportError(context.options, error, errorMessage);\n        throw error;\n    }\n    const placeholderHidden = context.placeholderElement\n        ? !!context.placeholderElement.hidden\n        : null;\n    const containerScrollTop = context.containerElement ? context.containerElement.scrollTop : null;\n    const containerScrollLeft = context.containerElement\n        ? context.containerElement.scrollLeft\n        : null;\n    const bundle = {\n        placeholderHidden,\n        containerScrollTop,\n        containerScrollLeft,\n        isImageLoadedToCanvas: context.getIsImageLoadedToCanvas(),\n        lastSnapshot: context.getLastSnapshot(),\n        stateJson: captureRollbackState(context),\n        maskCounter: context.getMaskCounter(),\n        annotationCounter: context.getAnnotationCounter(),\n        currentScale: context.getCurrentScale(),\n        currentRotation: context.getCurrentRotation(),\n        baseImageScale: context.getBaseImageScale(),\n        currentImageMimeType: context.getCurrentImageMimeType(),\n        currentImageFilterConfig: context.getCurrentImageFilterConfig(),\n    };\n    try {\n        const loadDeadline = Date.now() + context.options.imageLoadTimeoutMs;\n        context.setPlaceholderVisible(false);\n        const decode = startImageDecode(imageBase64);\n        let imageElement;\n        try {\n            imageElement = await withTimeout(decode.promise, Math.max(1, getRemainingLoadTimeout(loadDeadline)), 'image decode');\n        }\n        catch (error) {\n            decode.cleanup(true);\n            throw error;\n        }\n        const loadSource = maybeDownsample(imageElement, imageBase64, context.options, getCanvasDocument(context.canvas));\n        const fabricLoadTimeoutMs = getRemainingLoadTimeout(loadDeadline);\n        assertMinimumLoadBudget('FabricImage.fromURL', fabricLoadTimeoutMs, MIN_FABRIC_IMAGE_LOAD_BUDGET_MS);\n        const fabricAbort = createAbortController();\n        const fabricCrossOrigin = 'anonymous';\n        const fabricLoadOptions = fabricAbort\n            ? { crossOrigin: fabricCrossOrigin, signal: fabricAbort.signal }\n            : { crossOrigin: fabricCrossOrigin };\n        const fabricImage = await withTimeout(context.fabric.FabricImage.fromURL(loadSource.dataUrl, fabricLoadOptions), Math.max(1, fabricLoadTimeoutMs), 'FabricImage.fromURL', () => {\n            fabricAbort === null || fabricAbort === void 0 ? void 0 : fabricAbort.abort();\n        });\n        context.canvas.discardActiveObject();\n        context.canvas.clear();\n        context.canvas.backgroundColor = context.options.backgroundColor;\n        const baseImage = markBaseImageObject(fabricImage);\n        baseImage.set({\n            originX: 'left',\n            originY: 'top',\n            selectable: false,\n            evented: false,\n        });\n        const layout = computeLayout(context, baseImage);\n        applyCanvasDimensions(context.canvas, layout.canvasWidth, layout.canvasHeight, context.containerElement);\n        baseImage.set({\n            left: layout.imageLeft,\n            top: layout.imageTop,\n            scaleX: layout.imageScale,\n            scaleY: layout.imageScale,\n        });\n        context.canvas.add(baseImage);\n        context.canvas.sendObjectToBack(baseImage);\n        context.setOriginalImage(baseImage);\n        context.setBaseImageScale(layout.baseImageScale);\n        context.setCurrentScale(1);\n        context.setCurrentRotation(0);\n        context.setMaskCounter(0);\n        context.setAnnotationCounter(0);\n        context.setIsImageLoadedToCanvas(true);\n        context.setCurrentImageMimeType(loadSource.mimeType);\n        context.resetImageFilterState();\n        context.canvas.renderAll();\n        context.setLastSnapshot(saveState({\n            canvas: context.canvas,\n            currentScale: 1,\n            currentRotation: 0,\n            baseImageScale: layout.baseImageScale,\n            currentImageMimeType: loadSource.mimeType,\n            imageFilterConfig: context.getCurrentImageFilterConfig(),\n        }));\n        if (loadOptions.preserveScroll === true && context.containerElement) {\n            try {\n                if (bundle.containerScrollTop !== null) {\n                    context.containerElement.scrollTop = bundle.containerScrollTop;\n                }\n                if (bundle.containerScrollLeft !== null) {\n                    context.containerElement.scrollLeft = bundle.containerScrollLeft;\n                }\n            }\n            catch (error) {\n                reportWarning(context.options, error, 'preserveScroll restore failed.');\n            }\n        }\n    }\n    catch (error) {\n        await replayRollback(context, bundle);\n        const errorMessage = error instanceof Error ? `loadImage failed: ${error.message}` : 'loadImage failed';\n        reportError(context.options, error, errorMessage);\n        throw error;\n    }\n}\nfunction startImageDecode(dataUrl) {\n    return startImageElementLoad(dataUrl, {\n        validate: (imageElement) => hasNaturalImageDimensions(imageElement)\n            ? null\n            : new ImageDecodeError('Failed to decode image data URL: image has no natural dimensions.', null),\n        createError: (event) => new ImageDecodeError('Failed to decode image data URL.', event),\n    });\n}\nfunction hasNaturalImageDimensions(imageElement) {\n    return (Number.isFinite(imageElement.naturalWidth) &&\n        Number.isFinite(imageElement.naturalHeight) &&\n        imageElement.naturalWidth > 0 &&\n        imageElement.naturalHeight > 0);\n}\nfunction isPositiveFinite(value) {\n    return Number.isFinite(value) && value > 0;\n}\nfunction toSupportedImageMimeType(mimeType) {\n    return mimeType === 'image/jpeg' || mimeType === 'image/png' || mimeType === 'image/webp'\n        ? mimeType\n        : null;\n}\nfunction maybeDownsample(imageElement, originalDataUrl, options, ownerDocument) {\n    const originalMimeType = toSupportedImageMimeType(detectSourceMimeType(originalDataUrl));\n    if (!options.downsampleOnLoad) {\n        return { dataUrl: originalDataUrl, mimeType: originalMimeType };\n    }\n    if (!isPositiveFinite(options.downsampleMaxWidth) ||\n        !isPositiveFinite(options.downsampleMaxHeight)) {\n        reportWarning(options, null, 'loadImage skipped downsampling because downsample bounds are invalid.');\n        return { dataUrl: originalDataUrl, mimeType: originalMimeType };\n    }\n    const downsampleDimensions = computeDownsampleDimensions(imageElement.naturalWidth, imageElement.naturalHeight, options.downsampleMaxWidth, options.downsampleMaxHeight);\n    if (!downsampleDimensions.needsResize) {\n        return { dataUrl: originalDataUrl, mimeType: originalMimeType };\n    }\n    const sourceMime = detectSourceMimeType(originalDataUrl);\n    const resampledImage = resampleImage(imageElement, options.downsampleMaxWidth, options.downsampleMaxHeight, sourceMime, options.preserveSourceFormat, options.downsampleMimeType, options.downsampleQuality, ownerDocument);\n    const actualMimeType = toSupportedImageMimeType(detectSourceMimeType(resampledImage.dataUrl));\n    return {\n        dataUrl: resampledImage.dataUrl,\n        mimeType: actualMimeType !== null && actualMimeType !== void 0 ? actualMimeType : resampledImage.mimeType,\n    };\n}\nfunction getCanvasDocument(canvas) {\n    var _a, _b, _c, _d;\n    const canvasLike = canvas;\n    return (_c = (_b = (_a = canvasLike.getElement) === null || _a === void 0 ? void 0 : _a.call(canvasLike)) === null || _b === void 0 ? void 0 : _b.ownerDocument) !== null && _c !== void 0 ? _c : (_d = canvasLike.lowerCanvasEl) === null || _d === void 0 ? void 0 : _d.ownerDocument;\n}\nfunction computeLayout(context, fabricImage) {\n    var _a, _b, _c, _d;\n    const imageWidth = (_a = fabricImage.width) !== null && _a !== void 0 ? _a : 0;\n    const imageHeight = (_b = fabricImage.height) !== null && _b !== void 0 ? _b : 0;\n    const scrollbarSize = measureScrollbarSize((_d = (_c = context.containerElement) === null || _c === void 0 ? void 0 : _c.ownerDocument) !== null && _d !== void 0 ? _d : null);\n    const viewport = context.viewportCache.measure(context.containerElement, {\n        width: context.options.canvasWidth,\n        height: context.options.canvasHeight,\n    }, scrollbarSize);\n    const strategy = selectLayoutStrategy(context.options.layoutMode);\n    if (strategy === 'fit') {\n        return computeFitLayout(imageWidth, imageHeight, context.options.canvasWidth, context.options.canvasHeight, viewport);\n    }\n    if (strategy === 'cover') {\n        return computeCoverLayout(imageWidth, imageHeight, context.options.canvasWidth, context.options.canvasHeight, viewport, scrollbarSize);\n    }\n    return computeExpandLayout(imageWidth, imageHeight, viewport);\n}\nfunction captureRollbackState(context) {\n    return saveState({\n        canvas: context.canvas,\n        currentScale: context.getCurrentScale(),\n        currentRotation: context.getCurrentRotation(),\n        baseImageScale: context.getBaseImageScale(),\n        currentImageMimeType: context.getCurrentImageMimeType(),\n        imageFilterConfig: context.getCurrentImageFilterConfig(),\n    });\n}\nfunction getRemainingLoadTimeout(deadline) {\n    return deadline - Date.now();\n}\nfunction assertMinimumLoadBudget(label, remainingMs, minimumMs) {\n    if (remainingMs >= minimumMs)\n        return;\n    throw new ImageLoadBudgetExhaustedError(label, remainingMs, minimumMs);\n}\nfunction createAbortController() {\n    return typeof AbortController === 'function' ? new AbortController() : null;\n}\nasync function replayRollback(context, bundle) {\n    var _a, _b;\n    try {\n        const restoredState = await loadFromState({\n            canvas: context.canvas,\n            jsonString: bundle.stateJson,\n            setCanvasSize: (width, height) => {\n                context.setCanvasSize(width, height);\n            },\n            maxCanvasPixels: context.options.maxExportPixels,\n            restoreTrustLevel: 'trusted',\n        });\n        context.applyRollbackRestoredState(restoredState);\n        context.setOriginalImage(restoredState.originalImage);\n        context.setIsImageLoadedToCanvas(bundle.isImageLoadedToCanvas && restoredState.originalImage !== null);\n        context.setLastSnapshot(bundle.lastSnapshot);\n        context.setMaskCounter(Math.max(bundle.maskCounter, restoredState.maxMaskId));\n        context.setAnnotationCounter(Math.max(bundle.annotationCounter, restoredState.maxAnnotationId));\n        context.setCurrentScale(bundle.currentScale);\n        context.setCurrentRotation(bundle.currentRotation);\n        context.setBaseImageScale(bundle.baseImageScale);\n        context.setCurrentImageMimeType(bundle.currentImageMimeType);\n        context.restoreImageFilterConfig((_b = (_a = restoredState.editorState) === null || _a === void 0 ? void 0 : _a.imageFilterConfig) !== null && _b !== void 0 ? _b : bundle.currentImageFilterConfig);\n        context.canvas.renderAll();\n    }\n    catch (rollbackError) {\n        reportWarning(context.options, rollbackError, 'loadImage rollback failed while restoring the previous canvas state; editor state was cleared.');\n        context.resetAfterRollbackFailure();\n    }\n    if (context.containerElement) {\n        try {\n            if (bundle.containerScrollTop !== null) {\n                context.containerElement.scrollTop = bundle.containerScrollTop;\n            }\n            if (bundle.containerScrollLeft !== null) {\n                context.containerElement.scrollLeft = bundle.containerScrollLeft;\n            }\n        }\n        catch (rollbackError) {\n            reportWarning(context.options, rollbackError, 'loadImage rollback scroll restore failed.');\n        }\n    }\n    if (bundle.placeholderHidden !== null) {\n        context.setPlaceholderVisible(!bundle.placeholderHidden);\n    }\n}\n//# sourceMappingURL=image-loader.js.map","import { readFileAsArrayBuffer } from '../utils/file.js';\nconst JPEG_MARKER_PREFIX = 0xff;\nconst JPEG_SOI = 0xd8;\nconst JPEG_SOS = 0xda;\nconst JPEG_EOI = 0xd9;\nconst JPEG_APP1 = 0xe1;\nconst TIFF_TAG_ORIENTATION = 0x0112;\nconst TIFF_TYPE_SHORT = 3;\nconst TIFF_TYPE_LONG = 4;\nconst EXIF_HEADER = [0x45, 0x78, 0x69, 0x66, 0x00, 0x00];\nfunction isValidOrientation(value) {\n    return Number.isInteger(value) && value >= 1 && value <= 8;\n}\nfunction readUint16(view, offset, littleEndian) {\n    if (offset < 0 || offset + 2 > view.byteLength)\n        return null;\n    return view.getUint16(offset, littleEndian);\n}\nfunction readUint32(view, offset, littleEndian) {\n    if (offset < 0 || offset + 4 > view.byteLength)\n        return null;\n    return view.getUint32(offset, littleEndian);\n}\nfunction hasExifHeader(view, offset, end) {\n    if (offset + EXIF_HEADER.length > end)\n        return false;\n    return EXIF_HEADER.every((byte, index) => view.getUint8(offset + index) === byte);\n}\nfunction isStandaloneMarker(marker) {\n    return marker === 0x01 || (marker >= 0xd0 && marker <= 0xd7);\n}\nexport function readJpegExifOrientation(buffer) {\n    const view = new DataView(buffer);\n    if (view.byteLength < 4)\n        return null;\n    if (view.getUint8(0) !== JPEG_MARKER_PREFIX || view.getUint8(1) !== JPEG_SOI) {\n        return null;\n    }\n    let offset = 2;\n    while (offset < view.byteLength) {\n        if (view.getUint8(offset) !== JPEG_MARKER_PREFIX)\n            return null;\n        while (offset < view.byteLength && view.getUint8(offset) === JPEG_MARKER_PREFIX) {\n            offset += 1;\n        }\n        if (offset >= view.byteLength)\n            return null;\n        const marker = view.getUint8(offset);\n        offset += 1;\n        if (marker === JPEG_SOS || marker === JPEG_EOI)\n            return null;\n        if (isStandaloneMarker(marker))\n            continue;\n        if (offset + 2 > view.byteLength)\n            return null;\n        const segmentLength = view.getUint16(offset, false);\n        if (segmentLength < 2)\n            return null;\n        const segmentStart = offset + 2;\n        const segmentEnd = offset + segmentLength;\n        if (segmentEnd > view.byteLength)\n            return null;\n        if (marker === JPEG_APP1 && hasExifHeader(view, segmentStart, segmentEnd)) {\n            return readExifSegmentOrientation(view, segmentStart + EXIF_HEADER.length, segmentEnd);\n        }\n        offset = segmentEnd;\n    }\n    return null;\n}\nfunction readExifSegmentOrientation(view, tiffStart, segmentEnd) {\n    if (tiffStart + 8 > segmentEnd)\n        return null;\n    const byteOrderA = view.getUint8(tiffStart);\n    const byteOrderB = view.getUint8(tiffStart + 1);\n    const littleEndian = byteOrderA === 0x49 && byteOrderB === 0x49\n        ? true\n        : byteOrderA === 0x4d && byteOrderB === 0x4d\n            ? false\n            : null;\n    if (littleEndian === null)\n        return null;\n    const tiffMagic = readUint16(view, tiffStart + 2, littleEndian);\n    if (tiffMagic !== 0x002a)\n        return null;\n    const ifdOffset = readUint32(view, tiffStart + 4, littleEndian);\n    if (ifdOffset === null)\n        return null;\n    const ifdStart = tiffStart + ifdOffset;\n    if (ifdStart < tiffStart || ifdStart + 2 > segmentEnd)\n        return null;\n    const entryCount = readUint16(view, ifdStart, littleEndian);\n    if (entryCount === null)\n        return null;\n    const entriesStart = ifdStart + 2;\n    const entriesEnd = entriesStart + entryCount * 12;\n    if (entriesEnd > segmentEnd)\n        return null;\n    for (let index = 0; index < entryCount; index += 1) {\n        const entryOffset = entriesStart + index * 12;\n        const tag = readUint16(view, entryOffset, littleEndian);\n        if (tag !== TIFF_TAG_ORIENTATION)\n            continue;\n        const type = readUint16(view, entryOffset + 2, littleEndian);\n        const count = readUint32(view, entryOffset + 4, littleEndian);\n        if (count !== 1)\n            return null;\n        const value = type === TIFF_TYPE_SHORT\n            ? readUint16(view, entryOffset + 8, littleEndian)\n            : type === TIFF_TYPE_LONG\n                ? readUint32(view, entryOffset + 8, littleEndian)\n                : null;\n        if (value === null)\n            return null;\n        return isValidOrientation(value) ? value : null;\n    }\n    return null;\n}\nexport function isJpegFile(file) {\n    var _a, _b;\n    const type = (_b = (_a = file.type) === null || _a === void 0 ? void 0 : _a.toLowerCase()) !== null && _b !== void 0 ? _b : '';\n    if (type)\n        return type === 'image/jpeg';\n    return /\\.(?:jpe?g)$/i.test(file.name);\n}\nasync function readFileOrientation(file) {\n    try {\n        return readJpegExifOrientation(await readFileAsArrayBuffer(file));\n    }\n    catch {\n        return null;\n    }\n}\nasync function createRawImageBitmap(file) {\n    if (typeof createImageBitmap !== 'function') {\n        throw new Error('createImageBitmap with imageOrientation: \"none\" is required for safe EXIF orientation normalization.');\n    }\n    try {\n        const bitmap = await createImageBitmap(file, { imageOrientation: 'none' });\n        if (!hasPositiveDimensions(bitmap.width, bitmap.height)) {\n            bitmap.close();\n            throw new Error('Decoded image bitmap has no dimensions.');\n        }\n        return {\n            source: bitmap,\n            width: bitmap.width,\n            height: bitmap.height,\n            close: () => {\n                bitmap.close();\n            },\n        };\n    }\n    catch (error) {\n        throw Object.assign(new Error(error instanceof Error\n            ? `createImageBitmap EXIF orientation decode failed: ${error.message}`\n            : 'createImageBitmap EXIF orientation decode failed.'), { cause: error });\n    }\n}\nfunction hasPositiveDimensions(width, height) {\n    return Number.isFinite(width) && Number.isFinite(height) && width > 0 && height > 0;\n}\nfunction getCanvasDocument(ownerDocument) {\n    const resolvedDocument = ownerDocument !== null && ownerDocument !== void 0 ? ownerDocument : (typeof document !== 'undefined' ? document : null);\n    if (!resolvedDocument) {\n        throw new Error('A document is required to normalize JPEG EXIF orientation.');\n    }\n    return resolvedDocument;\n}\nfunction createCanvas(ownerDocument) {\n    return getCanvasDocument(ownerDocument).createElement('canvas');\n}\nfunction isRotatedRightAngle(orientation) {\n    return orientation >= 5 && orientation <= 8;\n}\nfunction applyOrientationTransform(context, orientation, width, height) {\n    switch (orientation) {\n        case 2:\n            context.transform(-1, 0, 0, 1, width, 0);\n            break;\n        case 3:\n            context.transform(-1, 0, 0, -1, width, height);\n            break;\n        case 4:\n            context.transform(1, 0, 0, -1, 0, height);\n            break;\n        case 5:\n            context.transform(0, 1, 1, 0, 0, 0);\n            break;\n        case 6:\n            context.transform(0, 1, -1, 0, height, 0);\n            break;\n        case 7:\n            context.transform(0, -1, -1, 0, height, width);\n            break;\n        case 8:\n            context.transform(0, -1, 1, 0, 0, width);\n            break;\n        case 1:\n            break;\n    }\n}\nfunction drawOrientedImage(decoded, orientation, options, ownerDocument) {\n    var _a;\n    const canvas = createCanvas(ownerDocument);\n    const outputWidth = isRotatedRightAngle(orientation) ? decoded.height : decoded.width;\n    const outputHeight = isRotatedRightAngle(orientation) ? decoded.width : decoded.height;\n    canvas.width = outputWidth;\n    canvas.height = outputHeight;\n    const context = canvas.getContext('2d');\n    if (!context) {\n        throw new Error('Unable to create a canvas context for JPEG EXIF orientation.');\n    }\n    applyOrientationTransform(context, orientation, decoded.width, decoded.height);\n    context.drawImage(decoded.source, 0, 0, decoded.width, decoded.height);\n    return canvas.toDataURL('image/jpeg', (_a = options.autoOrientImageQuality) !== null && _a !== void 0 ? _a : options.downsampleQuality);\n}\nexport async function normalizeJpegOrientationIfNeeded(file, dataUrl, options, ownerDocument) {\n    void dataUrl;\n    if (!options.autoOrientImage || !isJpegFile(file))\n        return null;\n    const orientation = await readFileOrientation(file);\n    if (orientation === null || orientation === 1)\n        return null;\n    const decoded = await createRawImageBitmap(file);\n    try {\n        return drawOrientedImage(decoded, orientation, options, ownerDocument);\n    }\n    finally {\n        decoded.close();\n    }\n}\n//# sourceMappingURL=exif-orientation.js.map","import { reportError, reportWarning } from '../core/callback-reporter.js';\nimport { assertImageFileInputBudget } from './image-input-budget.js';\nimport { normalizeJpegOrientationIfNeeded } from './exif-orientation.js';\nimport { inferImageMimeType, readFileAsDataUrl, resetFileInput } from '../utils/file.js';\nexport async function loadImageFile(context, file) {\n    var _a;\n    const inputElement = context.getInputElement();\n    const mime = inferImageMimeType(file);\n    if (!mime) {\n        reportWarning(context.options, null, `Unsupported image file type: ${file.type || file.name || 'unknown'}.`);\n        resetFileInput(inputElement);\n        return;\n    }\n    try {\n        await assertImageFileInputBudget(file, context.options);\n    }\n    catch (error) {\n        reportWarning(context.options, error, error instanceof Error ? error.message : 'Image file exceeds configured input limits.');\n        resetFileInput(inputElement);\n        return;\n    }\n    let dataUrl;\n    try {\n        dataUrl = await readFileAsDataUrl(file);\n    }\n    catch (error) {\n        reportError(context.options, error, 'Failed to read selected image file.');\n        resetFileInput(inputElement);\n        return;\n    }\n    try {\n        try {\n            dataUrl =\n                (_a = (await normalizeJpegOrientationIfNeeded(file, dataUrl, context.options, inputElement === null || inputElement === void 0 ? void 0 : inputElement.ownerDocument))) !== null && _a !== void 0 ? _a : dataUrl;\n        }\n        catch (error) {\n            reportWarning(context.options, error, 'JPEG EXIF orientation normalization failed; loading the original file data.');\n        }\n        await context.loadImage(dataUrl);\n    }\n    finally {\n        resetFileInput(inputElement);\n    }\n}\n//# sourceMappingURL=image-file-loader.js.map","import { computeScrollableCanvasSize, measureScrollbarSize, } from './layout-manager.js';\nconst LAYOUT_EPSILON = 0.5;\nconst SCROLLBAR_SETTLE_EPSILON = 1;\nexport function measureLayoutViewport(context, scrollbarSize) {\n    return context.viewportCache.measure(context.containerElement, {\n        width: context.options.canvasWidth,\n        height: context.options.canvasHeight,\n    }, scrollbarSize);\n}\nexport function getScrollbarStableViewportCanvasSize(viewport) {\n    return {\n        width: Math.max(1, viewport.width - 1),\n        height: Math.max(1, viewport.height - 1),\n    };\n}\nexport function updateCanvasSizeToImageBounds(context, options = {}) {\n    var _a, _b;\n    const originalImage = context.getOriginalImage();\n    if (!originalImage)\n        return;\n    originalImage.setCoords();\n    const boundingRect = originalImage.getBoundingRect();\n    const scrollbarSize = measureScrollbarSize((_b = (_a = context.containerElement) === null || _a === void 0 ? void 0 : _a.ownerDocument) !== null && _b !== void 0 ? _b : null);\n    const viewport = measureLayoutViewport(context, scrollbarSize);\n    const shouldStabilizeContainedViewport = options.stabilizeContainedViewport !== false;\n    const imageFitsViewport = boundingRect.width <= viewport.width + LAYOUT_EPSILON &&\n        boundingRect.height <= viewport.height + LAYOUT_EPSILON;\n    if (context.currentLayoutMode === 'fit' || context.currentLayoutMode === 'cover') {\n        if (imageFitsViewport) {\n            const canvasSize = shouldStabilizeContainedViewport\n                ? getScrollbarStableViewportCanvasSize(viewport)\n                : viewport;\n            context.setCanvasSize(canvasSize.width, canvasSize.height);\n            return;\n        }\n        const canvasSize = computeScrollableCanvasSize(boundingRect.width, boundingRect.height, viewport, scrollbarSize);\n        context.setCanvasSize(canvasSize.width, canvasSize.height);\n        return;\n    }\n    if (imageFitsViewport) {\n        const canvasSize = shouldStabilizeContainedViewport\n            ? getScrollbarStableViewportCanvasSize(viewport)\n            : viewport;\n        context.setCanvasSize(canvasSize.width, canvasSize.height);\n        return;\n    }\n    context.setCanvasSize(Math.max(viewport.width, Math.ceil(boundingRect.width)), Math.max(viewport.height, Math.ceil(boundingRect.height)));\n}\nexport function shouldNormalizeCanvasSizeAfterStateRestore(context) {\n    var _a, _b;\n    const originalImage = context.getOriginalImage();\n    if (!context.canvas || !originalImage)\n        return false;\n    originalImage.setCoords();\n    const boundingRect = originalImage.getBoundingRect();\n    const viewport = measureLayoutViewport(context, measureScrollbarSize((_b = (_a = context.containerElement) === null || _a === void 0 ? void 0 : _a.ownerDocument) !== null && _b !== void 0 ? _b : null));\n    const canvasW = Math.ceil(context.canvas.getWidth());\n    const canvasH = Math.ceil(context.canvas.getHeight());\n    const clipsImage = boundingRect.width > canvasW + LAYOUT_EPSILON ||\n        boundingRect.height > canvasH + LAYOUT_EPSILON;\n    if (context.currentLayoutMode === 'fit' || context.currentLayoutMode === 'cover') {\n        const staleOverflowWidth = canvasW > viewport.width + LAYOUT_EPSILON &&\n            boundingRect.width <= viewport.width + LAYOUT_EPSILON;\n        const staleOverflowHeight = canvasH > viewport.height + LAYOUT_EPSILON &&\n            boundingRect.height <= viewport.height + LAYOUT_EPSILON;\n        return clipsImage || staleOverflowWidth || staleOverflowHeight;\n    }\n    if (context.currentLayoutMode === 'expand') {\n        const expectedW = Math.max(viewport.width, Math.ceil(boundingRect.width));\n        const expectedH = Math.max(viewport.height, Math.ceil(boundingRect.height));\n        return (Math.abs(canvasW - expectedW) > LAYOUT_EPSILON ||\n            Math.abs(canvasH - expectedH) > LAYOUT_EPSILON);\n    }\n    return clipsImage;\n}\nexport function settleFitCoverScrollbarsAfterStateRestore(context) {\n    if (!context.canvas ||\n        !context.containerElement ||\n        (context.currentLayoutMode !== 'fit' && context.currentLayoutMode !== 'cover')) {\n        return;\n    }\n    const canvasW = Math.ceil(context.canvas.getWidth());\n    const canvasH = Math.ceil(context.canvas.getHeight());\n    if (canvasW <= 1 || canvasH <= 1)\n        return;\n    const clientW = Math.floor(context.containerElement.clientWidth || 0);\n    const clientH = Math.floor(context.containerElement.clientHeight || 0);\n    if (clientW <= 0 || clientH <= 0)\n        return;\n    const scrollW = Math.ceil(context.containerElement.scrollWidth || 0);\n    const scrollH = Math.ceil(context.containerElement.scrollHeight || 0);\n    const hasHorizontalScrollbar = scrollW > clientW + LAYOUT_EPSILON;\n    const hasVerticalScrollbar = scrollH > clientH + LAYOUT_EPSILON;\n    if (!hasHorizontalScrollbar && !hasVerticalScrollbar)\n        return;\n    const nudgeWidth = hasVerticalScrollbar && Math.abs(canvasW - clientW) <= SCROLLBAR_SETTLE_EPSILON;\n    const nudgeHeight = hasHorizontalScrollbar && Math.abs(canvasH - clientH) <= SCROLLBAR_SETTLE_EPSILON;\n    if (!nudgeWidth && !nudgeHeight)\n        return;\n    context.setCanvasSize(nudgeWidth ? canvasW - 1 : canvasW, nudgeHeight ? canvasH - 1 : canvasH);\n    context.setCanvasSize(canvasW, canvasH);\n}\nexport function captureImageDisplayGeometry(context) {\n    const originalImage = context.getOriginalImage();\n    if (!context.canvas || !originalImage)\n        return null;\n    originalImage.setCoords();\n    const boundingRect = originalImage.getBoundingRect();\n    return {\n        canvasWidth: context.canvas.getWidth(),\n        canvasHeight: context.canvas.getHeight(),\n        imageDisplayWidth: Math.max(1, boundingRect.width),\n        imageDisplayHeight: Math.max(1, boundingRect.height),\n    };\n}\nexport function restoreMergedImageDisplayGeometry(context, geometry) {\n    const originalImage = context.getOriginalImage();\n    if (!geometry || !context.canvas || !originalImage)\n        return;\n    context.setCanvasSize(geometry.canvasWidth, geometry.canvasHeight);\n    const sourceW = Math.max(1, originalImage.width || geometry.imageDisplayWidth);\n    const sourceH = Math.max(1, originalImage.height || geometry.imageDisplayHeight);\n    const scale = Math.min(geometry.imageDisplayWidth / sourceW, geometry.imageDisplayHeight / sourceH);\n    originalImage.set({\n        left: 0,\n        top: 0,\n        angle: 0,\n        scaleX: scale,\n        scaleY: scale,\n        originX: 'left',\n        originY: 'top',\n        selectable: false,\n        evented: false,\n        hasControls: false,\n        hoverCursor: 'default',\n    });\n    originalImage.setCoords();\n    context.canvas.sendObjectToBack(originalImage);\n    context.setCurrentScale(1);\n    context.setCurrentRotation(0);\n    context.setBaseImageScale(scale);\n    context.setLastSnapshot(context.captureSnapshot());\n    context.canvas.renderAll();\n}\n//# sourceMappingURL=display-geometry.js.map","const ANIMATION_SETTLE_GRACE_MS = 1000;\nexport function animateProps(object, props, options, guard) {\n    return new Promise((resolve, reject) => {\n        const propCount = Object.keys(props).length;\n        if (propCount === 0 || guard.isDisposed()) {\n            resolve();\n            return;\n        }\n        let completed = 0;\n        let settled = false;\n        let aborters = [];\n        let timeoutId = null;\n        let unregisterAborter = null;\n        const cleanup = () => {\n            if (timeoutId !== null) {\n                clearTimeout(timeoutId);\n                timeoutId = null;\n            }\n            unregisterAborter === null || unregisterAborter === void 0 ? void 0 : unregisterAborter();\n            unregisterAborter = null;\n        };\n        const settle = () => {\n            if (settled)\n                return;\n            settled = true;\n            cleanup();\n            resolve();\n        };\n        const fail = (error) => {\n            if (settled)\n                return;\n            settled = true;\n            cleanup();\n            reject(error);\n        };\n        const abortAndSettle = () => {\n            for (const abort of aborters) {\n                try {\n                    abort();\n                }\n                catch {\n                }\n            }\n            settle();\n        };\n        const duration = Number.isFinite(options.duration) ? Math.max(0, options.duration) : 0;\n        timeoutId = setTimeout(abortAndSettle, duration + ANIMATION_SETTLE_GRACE_MS);\n        unregisterAborter = guard.registerAnimationAborter(abortAndSettle);\n        try {\n            const animationResult = object.animate(props, {\n                duration,\n                onChange: () => {\n                    var _a;\n                    if (guard.isDisposed())\n                        return;\n                    (_a = options.onChange) === null || _a === void 0 ? void 0 : _a.call(options);\n                },\n                onComplete: () => {\n                    if (++completed >= propCount)\n                        settle();\n                },\n            });\n            aborters = collectAnimationAborters(animationResult);\n        }\n        catch (error) {\n            fail(error);\n        }\n    });\n}\nfunction collectAnimationAborters(animationResult) {\n    const handles = Array.isArray(animationResult)\n        ? animationResult\n        : animationResult && typeof animationResult === 'object'\n            ? Object.values(animationResult)\n            : [animationResult];\n    return handles.flatMap((handle) => {\n        const abort = handle === null || handle === void 0 ? void 0 : handle.abort;\n        return typeof abort === 'function' ? [() => abort.call(handle)] : [];\n    });\n}\nexport function restoreOrigin(object, originX, originY) {\n    try {\n        object.set({ originX, originY });\n        object.setCoords();\n    }\n    catch {\n    }\n}\n//# sourceMappingURL=fabric-animation.js.map","import { reportWarning } from '../core/callback-reporter.js';\nimport { animateProps, restoreOrigin } from '../fabric/fabric-animation.js';\nexport class TransformController {\n    constructor(context) {\n        Object.defineProperty(this, \"context\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        this.context = context;\n    }\n    async scaleImage(factor) {\n        if (!Number.isFinite(factor))\n            return;\n        const imageObject = this.context.getOriginalImage();\n        if (!imageObject)\n            return;\n        if (this.context.guard.isAnimating())\n            return;\n        if (this.context.guard.isDisposed())\n            return;\n        imageObject.setCoords();\n        const beforeMatrix = imageObject.calcTransformMatrix();\n        const previousScale = this.context.getCurrentScale();\n        const previousScaleX = imageObject.scaleX;\n        const previousScaleY = imageObject.scaleY;\n        const clamped = Math.max(this.context.options.minScale, Math.min(this.context.options.maxScale, factor));\n        this.context.setCurrentScale(clamped);\n        const targetAbs = this.context.getBaseImageScale() * clamped;\n        try {\n            const topLeft = computeTopLeftPoint(imageObject);\n            imageObject.set({ originX: 'left', originY: 'top' });\n            imageObject.setPositionByOrigin(topLeft, 'left', 'top');\n            imageObject.setCoords();\n        }\n        catch (error) {\n            reportWarning(this.context.options, error, 'scaleImage origin pre-anchor failed.');\n        }\n        try {\n            await this.context.guard.runAnimation(() => animateProps(imageObject, { scaleX: targetAbs, scaleY: targetAbs }, {\n                duration: this.context.options.animationDuration,\n                onChange: () => this.context.canvas.requestRenderAll(),\n            }, this.context.guard));\n        }\n        catch (error) {\n            this.context.setCurrentScale(previousScale);\n            if (!this.context.guard.isDisposed()) {\n                imageObject.set({ scaleX: previousScaleX, scaleY: previousScaleY });\n                imageObject.setCoords();\n                this.completeImageTransform(beforeMatrix);\n            }\n            reportWarning(this.context.options, error, 'scaleImage animation failed.');\n            return;\n        }\n        if (this.context.guard.isDisposed())\n            return;\n        imageObject.set({ scaleX: targetAbs, scaleY: targetAbs });\n        imageObject.setCoords();\n        try {\n            this.completeImageTransform(beforeMatrix);\n        }\n        finally {\n            this.context.saveCanvasState();\n        }\n    }\n    async rotateImage(degrees) {\n        if (!Number.isFinite(degrees))\n            return;\n        const imageObject = this.context.getOriginalImage();\n        if (!imageObject)\n            return;\n        if (this.context.guard.isAnimating())\n            return;\n        if (this.context.guard.isDisposed())\n            return;\n        imageObject.setCoords();\n        const beforeMatrix = imageObject.calcTransformMatrix();\n        const previousRotation = this.context.getCurrentRotation();\n        const previousAngle = imageObject.angle;\n        this.context.setCurrentRotation(degrees);\n        try {\n            const centre = imageObject.getCenterPoint();\n            imageObject.set({ originX: 'center', originY: 'center' });\n            imageObject.setPositionByOrigin(centre, 'center', 'center');\n            imageObject.setCoords();\n        }\n        catch (error) {\n            reportWarning(this.context.options, error, 'rotateImage origin pre-anchor failed.');\n        }\n        let animationFailed = false;\n        try {\n            await this.context.guard.runAnimation(() => animateProps(imageObject, { angle: degrees }, {\n                duration: this.context.options.animationDuration,\n                onChange: () => this.context.canvas.requestRenderAll(),\n            }, this.context.guard));\n        }\n        catch (error) {\n            animationFailed = true;\n            this.context.setCurrentRotation(previousRotation);\n            if (!this.context.guard.isDisposed()) {\n                imageObject.set('angle', previousAngle !== null && previousAngle !== void 0 ? previousAngle : previousRotation);\n                imageObject.setCoords();\n                restoreOrigin(imageObject, 'left', 'top');\n                this.completeImageTransform(beforeMatrix);\n            }\n            reportWarning(this.context.options, error, 'rotateImage animation failed.');\n        }\n        finally {\n            if (this.context.guard.isDisposed()) {\n                restoreOrigin(imageObject, 'left', 'top');\n            }\n        }\n        if (animationFailed)\n            return;\n        if (this.context.guard.isDisposed())\n            return;\n        imageObject.set('angle', degrees);\n        imageObject.setCoords();\n        try {\n            const newTopLeft = computeTopLeftPoint(imageObject);\n            imageObject.set({ originX: 'left', originY: 'top' });\n            imageObject.setPositionByOrigin(newTopLeft, 'left', 'top');\n            imageObject.setCoords();\n        }\n        catch (error) {\n            reportWarning(this.context.options, error, 'rotateImage origin post-restore failed.');\n        }\n        try {\n            this.completeImageTransform(beforeMatrix);\n        }\n        finally {\n            this.context.saveCanvasState();\n        }\n    }\n    async flipHorizontal() {\n        await this.flipImage('flipX');\n    }\n    async flipVertical() {\n        await this.flipImage('flipY');\n    }\n    async flipImage(property) {\n        var _a, _b;\n        const imageObject = this.context.getOriginalImage();\n        if (!imageObject)\n            return;\n        if (this.context.guard.isAnimating())\n            return;\n        if (this.context.guard.isDisposed())\n            return;\n        imageObject.setCoords();\n        const beforeMatrix = imageObject.calcTransformMatrix();\n        const previousFlipX = imageObject.flipX;\n        const previousFlipY = imageObject.flipY;\n        const previousOriginX = (_a = imageObject.originX) !== null && _a !== void 0 ? _a : 'left';\n        const previousOriginY = (_b = imageObject.originY) !== null && _b !== void 0 ? _b : 'top';\n        const operationName = property === 'flipX' ? 'flipHorizontal' : 'flipVertical';\n        let centre = null;\n        try {\n            centre = imageObject.getCenterPoint();\n            imageObject.set({ originX: 'center', originY: 'center' });\n            imageObject.setPositionByOrigin(centre, 'center', 'center');\n            imageObject.set({ [property]: !imageObject[property] });\n            imageObject.setCoords();\n            const newTopLeft = computeTopLeftPoint(imageObject);\n            imageObject.set({ originX: 'left', originY: 'top' });\n            imageObject.setPositionByOrigin(newTopLeft, 'left', 'top');\n            imageObject.setCoords();\n        }\n        catch (error) {\n            if (!this.context.guard.isDisposed()) {\n                try {\n                    imageObject.set({\n                        flipX: previousFlipX,\n                        flipY: previousFlipY,\n                        originX: previousOriginX,\n                        originY: previousOriginY,\n                    });\n                    if (centre) {\n                        imageObject.setPositionByOrigin(centre, 'center', 'center');\n                    }\n                    imageObject.setCoords();\n                    this.completeImageTransform(beforeMatrix);\n                }\n                catch (rollbackError) {\n                    reportWarning(this.context.options, rollbackError, `${operationName} rollback failed.`);\n                }\n            }\n            reportWarning(this.context.options, error, `${operationName} failed.`);\n            return;\n        }\n        if (this.context.guard.isDisposed())\n            return;\n        this.completeImageTransform(beforeMatrix);\n        this.context.saveCanvasState();\n    }\n    async resetImageTransform() {\n        const initialImage = this.context.getOriginalImage();\n        if (!initialImage)\n            return;\n        initialImage.setCoords();\n        const beforeMatrix = initialImage.calcTransformMatrix();\n        const previousOverlaySyncSuppressed = this.context.isOverlaySyncSuppressed();\n        this.context.setSuppressSaveState(true);\n        this.context.setSuppressOverlaySync(true);\n        try {\n            await this.scaleImage(1);\n            await this.rotateImage(0);\n            const imageObject = this.context.getOriginalImage();\n            if (imageObject && !this.context.guard.isDisposed()) {\n                imageObject.set({ flipX: false, flipY: false });\n                imageObject.setCoords();\n                this.context.finalizeImageTransformSnap();\n            }\n        }\n        finally {\n            this.context.setSuppressOverlaySync(previousOverlaySyncSuppressed);\n            this.context.setSuppressSaveState(false);\n        }\n        if (this.context.guard.isDisposed())\n            return;\n        if (!this.context.isOverlaySyncSuppressed()) {\n            this.context.applyOverlayTransformDelta(beforeMatrix);\n        }\n        this.context.syncOverlayAfterTransform();\n        this.context.saveCanvasState();\n    }\n    completeImageTransform(beforeMatrix) {\n        this.context.finalizeImageTransformSnap();\n        if (this.context.isOverlaySyncSuppressed())\n            return;\n        this.context.applyOverlayTransformDelta(beforeMatrix);\n        this.context.syncOverlayAfterTransform();\n    }\n}\nfunction computeTopLeftPoint(object) {\n    object.setCoords();\n    const coords = object.getCoords();\n    const first = coords[0];\n    if (first)\n        return first;\n    const boundingRect = object.getBoundingRect();\n    return { x: boundingRect.left, y: boundingRect.top };\n}\n//# sourceMappingURL=transform-controller.js.map","export function scaleImageAction(access, factor) {\n    if (!Number.isFinite(factor))\n        return Promise.resolve();\n    return runQueuedTransformAction(access, 'scaleImage', (controller) => controller.scaleImage(factor));\n}\nexport function rotateImageAction(access, degrees) {\n    if (!Number.isFinite(degrees))\n        return Promise.resolve();\n    return runQueuedTransformAction(access, 'rotateImage', (controller) => controller.rotateImage(degrees));\n}\nexport function flipHorizontalAction(access) {\n    return runQueuedTransformAction(access, 'flipHorizontal', (controller) => controller.flipHorizontal());\n}\nexport function flipVerticalAction(access) {\n    return runQueuedTransformAction(access, 'flipVertical', (controller) => controller.flipVertical());\n}\nexport function resetImageTransformAction(access) {\n    return runQueuedTransformAction(access, 'resetImageTransform', (controller) => controller.resetImageTransform());\n}\nfunction runQueuedTransformAction(access, operation, runControllerAction) {\n    const controller = access.getTransformController();\n    if (access.isDisposed() || !controller)\n        return Promise.resolve();\n    try {\n        access.assertCanQueueAnimation(operation);\n    }\n    catch (error) {\n        return Promise.reject(error);\n    }\n    const context = access.buildCallbackContext(operation, false);\n    const job = access.enqueueAnimation(async () => {\n        if (access.isDisposed())\n            return;\n        access.updateUi();\n        try {\n            await runControllerAction(controller);\n            if (!access.isDisposed())\n                access.emitImageChanged(context);\n        }\n        finally {\n            if (!access.isDisposed()) {\n                access.updateInputs();\n            }\n        }\n    });\n    access.emitBusyChangeIfChanged(context);\n    return job.finally(() => {\n        if (!access.isDisposed()) {\n            access.refreshUiAfterQueuedAnimation();\n            access.emitBusyChangeIfChanged(context);\n        }\n    });\n}\n//# sourceMappingURL=transform-actions.js.map","import { cloneResolvedImageFilterConfig, DEFAULT_IMAGE_FILTER_CONFIG, } from '../core/image-filter-config.js';\nimport { applyImageFilterConfigToImage } from '../image/image-filters.js';\nexport class EditorActionAccessFactory {\n    constructor(runtime, callbacks, contextFactory) {\n        Object.defineProperty(this, \"runtime\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: runtime\n        });\n        Object.defineProperty(this, \"callbacks\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: callbacks\n        });\n        Object.defineProperty(this, \"contextFactory\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: contextFactory\n        });\n    }\n    buildBusyOperationAccess() {\n        const { runtime, callbacks } = this;\n        return {\n            beginBusyOperation: (operation) => runtime.operationGuard.beginBusyOperation(operation),\n            endBusyOperation: (token) => {\n                runtime.operationGuard.endBusyOperation(token);\n            },\n            buildCallbackContext: (operation, isInternalOperation) => callbacks.buildCallbackContext(operation, isInternalOperation),\n            emitBusyChangeIfChanged: (context) => {\n                callbacks.emitBusyChangeIfChanged(context);\n            },\n            updateUi: () => {\n                callbacks.updateUi();\n            },\n        };\n    }\n    buildTransformActionAccess() {\n        const { runtime, callbacks } = this;\n        return {\n            isDisposed: () => runtime.isDisposed,\n            getTransformController: () => runtime.transformController,\n            assertCanQueueAnimation: (operation) => {\n                callbacks.assertCanQueueAnimation(operation);\n            },\n            buildCallbackContext: (operation, isInternalOperation) => callbacks.buildCallbackContext(operation, isInternalOperation),\n            enqueueAnimation: (body) => runtime.animQueue.add(body),\n            updateInputs: () => {\n                callbacks.updateInputs();\n            },\n            updateUi: () => {\n                callbacks.updateUi();\n            },\n            refreshUiAfterQueuedAnimation: () => {\n                callbacks.refreshUiAfterQueuedAnimation();\n            },\n            emitImageChanged: (context) => {\n                callbacks.emitImageChanged(context);\n            },\n            emitBusyChangeIfChanged: (context) => {\n                callbacks.emitBusyChangeIfChanged(context);\n            },\n        };\n    }\n    buildEditorStateActionAccess() {\n        const { runtime, callbacks } = this;\n        return {\n            getCanvas: () => runtime.canvas,\n            getLiveCanvas: (operationName) => runtime.getLiveCanvasOrThrow(operationName),\n            getOptions: () => runtime.options,\n            isDisposed: () => runtime.isDisposed,\n            canRunIdleOperation: (operation, options) => callbacks.canRunIdleOperation(operation, options),\n            getActiveStateRestoreOperation: () => runtime.activeStateRestoreOperation,\n            buildCallbackContext: (operation, isInternalOperation) => callbacks.buildCallbackContext(operation, isInternalOperation),\n            getOriginalImage: () => runtime.originalImage,\n            setOriginalImage: (image) => {\n                runtime.originalImage = image;\n            },\n            getMaskCollectionSignature: () => callbacks.getMaskCollectionSignature(),\n            getAnnotationCollectionSignature: () => callbacks.getAnnotationCollectionSignature(),\n            setCanvasSize: (widthPx, heightPx) => {\n                callbacks.setCanvasSize(widthPx, heightPx);\n            },\n            hideAllMaskLabels: () => {\n                callbacks.hideAllMaskLabels();\n            },\n            inferCurrentImageMimeType: () => callbacks.inferCurrentImageMimeType(),\n            setCurrentImageMimeType: (mimeType) => {\n                runtime.currentImageMimeType = mimeType;\n            },\n            getCurrentImageFilterConfig: () => runtime.currentImageFilterConfig,\n            restoreImageFilterConfig: (config) => {\n                const next = cloneResolvedImageFilterConfig(config !== null && config !== void 0 ? config : DEFAULT_IMAGE_FILTER_CONFIG);\n                runtime.currentImageFilterConfig = next;\n                runtime.lastCommittedImageFilterConfig = cloneResolvedImageFilterConfig(next);\n                if (runtime.originalImage) {\n                    applyImageFilterConfigToImage(runtime.fabricModule, runtime.originalImage, next, (error, message) => {\n                        callbacks.reportWarning(error, message);\n                    });\n                }\n            },\n            setIsImageLoadedToCanvas: (value) => {\n                runtime.isImageLoadedToCanvas = value;\n            },\n            setMaskCounter: (value) => {\n                runtime.maskCounter = value;\n            },\n            setAnnotationCounter: (value) => {\n                runtime.annotationCounter = value;\n            },\n            setCurrentScale: (value) => {\n                runtime.currentScale = value;\n            },\n            setCurrentRotation: (value) => {\n                runtime.currentRotation = value;\n            },\n            setBaseImageScale: (value) => {\n                runtime.baseImageScale = value;\n            },\n            setLastMask: (mask) => {\n                runtime.lastMask = mask;\n            },\n            getLastSnapshot: () => runtime.lastSnapshot,\n            setLastSnapshot: (snapshot) => {\n                runtime.lastSnapshot = snapshot;\n            },\n            shouldNormalizeCanvasSizeAfterStateRestore: () => callbacks.shouldNormalizeCanvasSizeAfterStateRestore(),\n            updateCanvasSizeToImageBounds: (options) => {\n                callbacks.updateCanvasSizeToImageBounds(options);\n            },\n            alignObjectBoundingBoxToCanvasTopLeft: (object) => {\n                callbacks.alignObjectBoundingBoxToCanvasTopLeft(object);\n            },\n            settleFitCoverScrollbarsAfterStateRestore: () => {\n                callbacks.settleFitCoverScrollbarsAfterStateRestore();\n            },\n            buildTextControllerContext: () => this.contextFactory.buildTextControllerContext(),\n            updateInputs: () => {\n                callbacks.updateInputs();\n            },\n            updateMaskList: () => {\n                callbacks.updateMaskList();\n            },\n            updateAnnotationList: () => {\n                callbacks.updateAnnotationList();\n            },\n            updateUi: () => {\n                callbacks.updateUi();\n            },\n            emitImageCleared: (image, context) => {\n                callbacks.emitImageCleared(image, context);\n            },\n            emitMasksChanged: (context) => {\n                callbacks.emitMasksChanged(context);\n            },\n            emitAnnotationsChanged: (context) => {\n                callbacks.emitAnnotationsChanged(context);\n            },\n            emitImageChanged: (context) => {\n                callbacks.emitImageChanged(context);\n            },\n            withSelectionChangeContext: (context, callback) => callbacks.withSelectionChangeContext(context, callback),\n            handleSelectionChanged: (selected) => {\n                callbacks.handleSelectionChanged(selected);\n            },\n            shouldSuppressSaveState: () => runtime.shouldSuppressSaveState,\n            getCurrentScale: () => runtime.currentScale,\n            getCurrentRotation: () => runtime.currentRotation,\n            getBaseImageScale: () => runtime.baseImageScale,\n            getCurrentImageMimeType: () => runtime.currentImageMimeType,\n            getHistoryManager: () => runtime.historyManager,\n            withAnimationQueueBypass: () => callbacks.withAnimationQueueBypass(),\n            showLabelForMask: (mask) => {\n                callbacks.showLabelForMask(mask);\n            },\n            updateMaskListSelection: (mask) => {\n                callbacks.updateMaskListSelection(mask);\n            },\n            updateAnnotationListSelection: (annotation) => {\n                callbacks.updateAnnotationListSelection(annotation);\n            },\n        };\n    }\n    buildMaskActionAccess() {\n        const { runtime, callbacks } = this;\n        return {\n            getCanvas: () => runtime.canvas,\n            getMasks: () => callbacks.getMasks(),\n            canRunIdleOperation: (operation, options) => callbacks.canRunIdleOperation(operation, options),\n            buildCallbackContext: (operation, isInternalOperation) => callbacks.buildCallbackContext(operation, isInternalOperation),\n            buildCreateMaskContext: () => this.contextFactory.buildCreateMaskContext(),\n            buildRemoveMaskContext: () => this.contextFactory.buildRemoveMaskContext(),\n            withSelectionChangeContext: (context, callback) => callbacks.withSelectionChangeContext(context, callback),\n            updateUi: () => {\n                callbacks.updateUi();\n            },\n            emitMasksChanged: (context) => {\n                callbacks.emitMasksChanged(context);\n            },\n            emitImageChanged: (context) => {\n                callbacks.emitImageChanged(context);\n            },\n        };\n    }\n    buildSelectionControllerAccess() {\n        const { runtime, callbacks } = this;\n        return {\n            getCanvas: () => runtime.canvas,\n            removeLabelForMask: (mask) => {\n                callbacks.removeLabelForMask(mask);\n            },\n            showLabelForMask: (mask) => {\n                callbacks.showLabelForMask(mask);\n            },\n            syncMaskLabel: (mask) => {\n                callbacks.syncMaskLabel(mask);\n            },\n            updateMaskListSelection: (mask) => {\n                callbacks.updateMaskListSelection(mask);\n            },\n            updateAnnotationListSelection: (annotation) => {\n                callbacks.updateAnnotationListSelection(annotation);\n            },\n            updateUi: () => {\n                callbacks.updateUi();\n            },\n            saveState: () => {\n                callbacks.saveState();\n            },\n            getNextSelectionChangeContext: () => runtime.nextSelectionChangeContext,\n            getActiveStateRestoreOperation: () => runtime.activeStateRestoreOperation,\n            shouldSuppressSelectionChange: () => runtime.shouldSuppressSelectionChange,\n            buildSelection: (selected) => callbacks.buildSelection(selected),\n            buildCallbackContext: (operation, isHistoryRestore) => callbacks.buildCallbackContext(operation, isHistoryRestore),\n            emitSelectionChange: (selection, context) => {\n                callbacks.emitSelectionChange(selection, context);\n            },\n            emitMasksChanged: (context) => {\n                callbacks.emitMasksChanged(context);\n            },\n            emitAnnotationsChanged: (context) => {\n                callbacks.emitAnnotationsChanged(context);\n            },\n            emitImageChanged: (context) => {\n                callbacks.emitImageChanged(context);\n            },\n        };\n    }\n    buildAnnotationModeActionAccess() {\n        const { runtime, callbacks } = this;\n        return {\n            getCanvas: () => runtime.canvas,\n            getTextSession: () => runtime.textSession,\n            getDrawSession: () => runtime.drawSession,\n            isToolModeActive: () => runtime.cropSession !== null ||\n                runtime.mosaicSession !== null ||\n                runtime.textSession !== null ||\n                runtime.drawSession !== null ||\n                runtime.shapeSession !== null,\n            canRunIdleOperation: (operation, options) => callbacks.canRunIdleOperation(operation, options),\n            buildTextControllerContext: () => this.contextFactory.buildTextControllerContext(),\n            buildDrawControllerContext: () => this.contextFactory.buildDrawControllerContext(),\n            buildCallbackContext: (operation, isInternalOperation) => callbacks.buildCallbackContext(operation, isInternalOperation),\n            updateInputs: () => {\n                callbacks.updateInputs();\n            },\n            emitBusyChangeIfChanged: (context) => {\n                callbacks.emitBusyChangeIfChanged(context);\n            },\n            emitImageChanged: (context) => {\n                callbacks.emitImageChanged(context);\n            },\n        };\n    }\n    buildEditableObjectActionAccess() {\n        const { runtime, callbacks } = this;\n        return {\n            getCanvas: () => runtime.canvas,\n            getLiveCanvas: (operationName) => runtime.getLiveCanvasOrThrow(operationName),\n            buildAnnotationManagerContext: () => this.contextFactory.buildAnnotationManagerContext(),\n            getMasks: () => callbacks.getMasks(),\n            getAnnotations: () => callbacks.getAnnotations(),\n            removeLabelForMask: (mask) => {\n                callbacks.removeLabelForMask(mask);\n            },\n            withSelectionChangeContext: (context, callback) => callbacks.withSelectionChangeContext(context, callback),\n            buildCallbackContext: (operation, isInternalOperation) => callbacks.buildCallbackContext(operation, isInternalOperation),\n            saveState: () => {\n                callbacks.saveState();\n            },\n            updateMaskList: () => {\n                callbacks.updateMaskList();\n            },\n            updateMaskListSelection: (mask) => {\n                callbacks.updateMaskListSelection(mask);\n            },\n            updateAnnotationList: () => {\n                callbacks.updateAnnotationList();\n            },\n            updateAnnotationListSelection: (annotation) => {\n                callbacks.updateAnnotationListSelection(annotation);\n            },\n            updateUi: () => {\n                callbacks.updateUi();\n            },\n            emitMasksChanged: (context) => {\n                callbacks.emitMasksChanged(context);\n            },\n            emitAnnotationsChanged: (context) => {\n                callbacks.emitAnnotationsChanged(context);\n            },\n            emitImageChanged: (context) => {\n                callbacks.emitImageChanged(context);\n            },\n            reportWarning: (message) => {\n                callbacks.reportWarning(null, message);\n            },\n        };\n    }\n    buildAnnotationConfigActionAccess() {\n        const { runtime, callbacks } = this;\n        return {\n            getCanvas: () => runtime.canvas,\n            isTextMode: () => runtime.textSession !== null,\n            isDrawMode: () => runtime.drawSession !== null,\n            getCurrentTextConfig: () => runtime.currentTextConfig,\n            setCurrentTextConfig: (config) => {\n                runtime.currentTextConfig = config;\n            },\n            getDefaultTextConfig: () => runtime.defaultTextConfig,\n            getCurrentDrawConfig: () => runtime.currentDrawConfig,\n            setCurrentDrawConfig: (config) => {\n                runtime.currentDrawConfig = config;\n            },\n            getDefaultDrawConfig: () => runtime.defaultDrawConfig,\n            canRunIdleOperation: (operation, options) => callbacks.canRunIdleOperation(operation, options),\n            buildDrawControllerContext: () => this.contextFactory.buildDrawControllerContext(),\n            buildCallbackContext: (operation, isInternalOperation) => callbacks.buildCallbackContext(operation, isInternalOperation),\n            updateSelectedAnnotation: (config) => {\n                callbacks.updateSelectedAnnotation(config);\n            },\n            setTextColor: (color) => {\n                callbacks.setTextColor(color);\n            },\n            setTextFontSize: (size) => {\n                callbacks.setTextFontSize(size);\n            },\n            setDrawColor: (color) => {\n                callbacks.setDrawColor(color);\n            },\n            setDrawBrushSize: (size) => {\n                callbacks.setDrawBrushSize(size);\n            },\n            reportWarning: (error, message) => {\n                callbacks.reportWarning(error, message);\n            },\n            updateInputs: () => {\n                callbacks.updateInputs();\n            },\n            updateUi: () => {\n                callbacks.updateUi();\n            },\n            emitImageChanged: (context) => {\n                callbacks.emitImageChanged(context);\n            },\n        };\n    }\n    buildExportActionAccess() {\n        const { runtime, callbacks } = this;\n        return {\n            getCanvas: () => runtime.canvas,\n            getAnnotations: () => callbacks.getAnnotations(),\n            getMasks: () => callbacks.getMasks(),\n            canRunIdleOperation: (operation, options) => callbacks.canRunIdleOperation(operation, options),\n            assertIdleForOperation: (operation, options) => {\n                callbacks.assertIdleForOperation(operation, options);\n            },\n            finalizeActiveTextEditingIfNeeded: () => {\n                callbacks.finalizeActiveTextEditingIfNeeded();\n            },\n            buildExportServiceContext: () => this.contextFactory.buildExportServiceContext(),\n            buildMergeMasksContext: (token) => this.contextFactory.buildMergeMasksContext(token),\n            buildMergeAnnotationsContext: (token) => this.contextFactory.buildMergeAnnotationsContext(token),\n            buildBusyOperationAccess: () => this.buildBusyOperationAccess(),\n            updateInputs: () => {\n                callbacks.updateInputs();\n            },\n            updateMaskList: () => {\n                callbacks.updateMaskList();\n            },\n            updateAnnotationList: () => {\n                callbacks.updateAnnotationList();\n            },\n            emitMasksChanged: (context) => {\n                callbacks.emitMasksChanged(context);\n            },\n            emitAnnotationsChanged: (context) => {\n                callbacks.emitAnnotationsChanged(context);\n            },\n            emitImageChanged: (context) => {\n                callbacks.emitImageChanged(context);\n            },\n        };\n    }\n    buildMosaicActionAccess() {\n        const { runtime, callbacks } = this;\n        return {\n            getCanvas: () => runtime.canvas,\n            getOriginalImage: () => runtime.originalImage,\n            getMosaicSession: () => runtime.mosaicSession,\n            getMosaicConfig: () => runtime.currentMosaicConfig,\n            setMosaicConfig: (config) => {\n                runtime.currentMosaicConfig = config;\n            },\n            getDefaultMosaicConfig: () => runtime.defaultMosaicConfig,\n            getOptions: () => runtime.options,\n            isDisposed: () => runtime.isDisposed,\n            isImageLoaded: () => runtime.isImageLoaded(),\n            canRunIdleOperation: (operation, options) => callbacks.canRunIdleOperation(operation, options),\n            buildMosaicControllerContext: () => this.contextFactory.buildMosaicControllerContext(),\n            buildCallbackContext: (operation, isInternalOperation) => callbacks.buildCallbackContext(operation, isInternalOperation),\n            updateInputs: () => {\n                callbacks.updateInputs();\n            },\n            updateUi: () => {\n                callbacks.updateUi();\n            },\n            emitImageChanged: (context) => {\n                callbacks.emitImageChanged(context);\n            },\n            emitBusyChangeIfChanged: (context) => {\n                callbacks.emitBusyChangeIfChanged(context);\n            },\n        };\n    }\n    buildCropActionAccess() {\n        const { runtime, callbacks } = this;\n        return {\n            getCanvas: () => runtime.canvas,\n            getOriginalImage: () => runtime.originalImage,\n            getCropSession: () => runtime.cropSession,\n            setCropSession: (session) => {\n                runtime.cropSession = session;\n            },\n            isImageLoaded: () => runtime.isImageLoaded(),\n            canRunIdleOperation: (operation, options) => callbacks.canRunIdleOperation(operation, options),\n            buildCropControllerContext: (token) => this.contextFactory.buildCropControllerContext(token),\n            buildBusyOperationAccess: () => this.buildBusyOperationAccess(),\n            buildCallbackContext: (operation, isInternalOperation) => callbacks.buildCallbackContext(operation, isInternalOperation),\n            getMasks: () => callbacks.getMasks(),\n            updateInputs: () => {\n                callbacks.updateInputs();\n            },\n            updateMaskList: () => {\n                callbacks.updateMaskList();\n            },\n            updateUi: () => {\n                callbacks.updateUi();\n            },\n            emitMasksChanged: (context) => {\n                callbacks.emitMasksChanged(context);\n            },\n            emitImageChanged: (context) => {\n                callbacks.emitImageChanged(context);\n            },\n            emitBusyChangeIfChanged: (context) => {\n                callbacks.emitBusyChangeIfChanged(context);\n            },\n        };\n    }\n}\n//# sourceMappingURL=editor-action-access.js.map","export function setPlaceholderVisible(placeholderElement, containerElement, show) {\n    if (placeholderElement) {\n        placeholderElement.hidden = !show;\n        placeholderElement.setAttribute('aria-hidden', show ? 'false' : 'true');\n    }\n    if (containerElement) {\n        containerElement.hidden = show;\n        containerElement.setAttribute('aria-hidden', show ? 'true' : 'false');\n    }\n}\n//# sourceMappingURL=visibility-state.js.map","export function isFiniteTransformMatrix(matrix) {\n    return (Array.isArray(matrix) &&\n        matrix.length === 6 &&\n        matrix.every((value) => Number.isFinite(value)));\n}\nexport function isApproximatelyIdentityTransform(matrix, epsilon = 1e-10) {\n    const identity = [1, 0, 0, 1, 0, 0];\n    return (matrix.length === identity.length &&\n        matrix.every((value, index) => Math.abs(value - identity[index]) <= epsilon));\n}\nexport function computeImageTransformDelta(beforeMatrix, afterMatrix, fabricUtil) {\n    if (!isFiniteTransformMatrix(beforeMatrix) || !isFiniteTransformMatrix(afterMatrix)) {\n        return [];\n    }\n    return fabricUtil.multiplyTransformMatrices(afterMatrix, fabricUtil.invertTransform(beforeMatrix));\n}\nexport function deltaHasReflection(delta) {\n    if (!isFiniteTransformMatrix(delta))\n        return false;\n    const [a, b, c, d] = delta;\n    return a * d - b * c < 0;\n}\nexport function transformPointByMatrix(point, matrix, fabricUtil) {\n    const [a, b, c, d, e, f] = matrix;\n    return new fabricUtil.Point(a * point.x + c * point.y + e, b * point.x + d * point.y + f);\n}\nexport function stripReflectionFromDelta(delta, fabricUtil) {\n    if (!deltaHasReflection(delta))\n        return delta;\n    const flipXMatrix = [-1, 0, 0, 1, 0, 0];\n    const flipYMatrix = [1, 0, 0, -1, 0, 0];\n    const flipXCandidate = fabricUtil.multiplyTransformMatrices(delta, flipXMatrix);\n    const flipYCandidate = fabricUtil.multiplyTransformMatrices(delta, flipYMatrix);\n    const normalizedAngleMagnitude = (matrix) => {\n        try {\n            const angle = fabricUtil.qrDecompose(matrix).angle;\n            if (!Number.isFinite(angle))\n                return Number.POSITIVE_INFINITY;\n            return Math.abs((((angle % 360) + 540) % 360) - 180);\n        }\n        catch {\n            return Number.POSITIVE_INFINITY;\n        }\n    };\n    return normalizedAngleMagnitude(flipYCandidate) < normalizedAngleMagnitude(flipXCandidate)\n        ? flipYCandidate\n        : flipXCandidate;\n}\nexport function applyDeltaToObject(object, fullDelta, context) {\n    var _a, _b, _c;\n    if (!isFiniteTransformMatrix(fullDelta))\n        return;\n    if (isApproximatelyIdentityTransform(fullDelta))\n        return;\n    const { fabricUtil } = context;\n    object.setCoords();\n    const previousOriginX = (_a = object.originX) !== null && _a !== void 0 ? _a : 'left';\n    const previousOriginY = (_b = object.originY) !== null && _b !== void 0 ? _b : 'top';\n    const originalCenter = object.getCenterPoint();\n    const targetCenter = transformPointByMatrix(originalCenter, fullDelta, fabricUtil);\n    const orientationDelta = context.preserveReadableText\n        ? stripReflectionFromDelta(fullDelta, fabricUtil)\n        : fullDelta;\n    let restoreCenter = originalCenter;\n    try {\n        object.set({\n            originX: 'center',\n            originY: 'center',\n        });\n        object.setPositionByOrigin(originalCenter, 'center', 'center');\n        object.setCoords();\n        const currentObjectMatrix = object.calcTransformMatrix();\n        const nextMatrix = fabricUtil.multiplyTransformMatrices(orientationDelta, currentObjectMatrix);\n        if (!isFiniteTransformMatrix(nextMatrix))\n            return;\n        const decomposed = fabricUtil.qrDecompose(nextMatrix);\n        object.set({\n            flipX: false,\n            flipY: false,\n        });\n        object.set({\n            angle: decomposed.angle,\n            scaleX: decomposed.scaleX,\n            scaleY: decomposed.scaleY,\n            skewX: decomposed.skewX,\n            skewY: (_c = decomposed.skewY) !== null && _c !== void 0 ? _c : 0,\n        });\n        if (typeof decomposed.flipX === 'boolean' || typeof decomposed.flipY === 'boolean') {\n            object.set({\n                ...(typeof decomposed.flipX === 'boolean' ? { flipX: decomposed.flipX } : {}),\n                ...(typeof decomposed.flipY === 'boolean' ? { flipY: decomposed.flipY } : {}),\n            });\n        }\n        restoreCenter = targetCenter;\n    }\n    finally {\n        object.set({\n            originX: previousOriginX,\n            originY: previousOriginY,\n        });\n        object.setPositionByOrigin(restoreCenter, 'center', 'center');\n        object.setCoords();\n    }\n}\n//# sourceMappingURL=overlay-transform-delta.js.map","import { isMaskObject } from '../core/public-types.js';\nimport { markMaskObject } from '../core/editor-object-kind.js';\nimport { placeMaskObject } from '../core/layer-order.js';\nimport { reportWarning } from '../core/callback-reporter.js';\nimport { copySafeOwnProperties } from '../core/safe-object-copy.js';\nimport { attachMaskHoverHandlers, detachMaskHoverHandlers } from './mask-style.js';\nimport { coercePoint, resolveNumeric } from '../utils/number.js';\nconst POLYGON_AREA_EPSILON = 1e-6;\nconst BUILT_IN_MASK_SHAPES = new Set(['rect', 'circle', 'ellipse', 'polygon']);\nfunction createMaskUid(maskId) {\n    return `mask-${maskId}`;\n}\nfunction isFabricObjectLike(value) {\n    if (!value || typeof value !== 'object')\n        return false;\n    const candidate = value;\n    return typeof candidate.set === 'function' && typeof candidate.on === 'function';\n}\nfunction isStyleObject(value) {\n    return value !== null && typeof value === 'object' && !Array.isArray(value);\n}\nfunction mergeMaskConfig(defaultMaskConfig, config) {\n    const safeDefaultConfig = copySafeOwnProperties(defaultMaskConfig);\n    const defaultStyles = safeDefaultConfig.styles;\n    delete safeDefaultConfig.onCreate;\n    delete safeDefaultConfig.fabricGenerator;\n    delete safeDefaultConfig.styles;\n    const safeConfig = copySafeOwnProperties(config);\n    const configStyles = copySafeOwnProperties(config.styles);\n    const safeDefaultStyles = copySafeOwnProperties(isStyleObject(defaultStyles) ? defaultStyles : {});\n    return {\n        ...safeDefaultConfig,\n        ...safeConfig,\n        styles: {\n            ...safeDefaultStyles,\n            ...configStyles,\n        },\n    };\n}\nfunction warnInvalidMask(options, reason) {\n    reportWarning(options, null, `createMask skipped: ${reason}.`);\n}\nfunction isBuiltInMaskShape(value) {\n    return typeof value === 'string' && BUILT_IN_MASK_SHAPES.has(value);\n}\nfunction resolveMaskShape(options, shape) {\n    if (isBuiltInMaskShape(shape))\n        return shape;\n    reportWarning(options, null, `createMask received unsupported shape \"${String(shape)}\"; using \"rect\" instead.`);\n    return 'rect';\n}\nfunction isResolvableNumericInput(value) {\n    if (value === undefined)\n        return true;\n    if (typeof value === 'number')\n        return Number.isFinite(value);\n    if (typeof value === 'function')\n        return true;\n    if (typeof value === 'string' && value.endsWith('%')) {\n        return Number.isFinite(Number.parseFloat(value));\n    }\n    return false;\n}\nfunction isFiniteNumber(value) {\n    return typeof value === 'number' && Number.isFinite(value);\n}\nfunction validateFiniteField(options, fieldName, value) {\n    if (isFiniteNumber(value))\n        return true;\n    warnInvalidMask(options, `${fieldName} must resolve to a finite number`);\n    return false;\n}\nfunction validatePositiveField(options, fieldName, value) {\n    if (isFiniteNumber(value) && value > 0)\n        return true;\n    warnInvalidMask(options, `${fieldName} must resolve to a positive number`);\n    return false;\n}\nfunction validateNonNegativeField(options, fieldName, value) {\n    if (isFiniteNumber(value) && value >= 0)\n        return true;\n    warnInvalidMask(options, `${fieldName} must resolve to a non-negative number`);\n    return false;\n}\nfunction validateNumericInputs(options, config) {\n    const fields = [\n        ['width', config.width],\n        ['height', config.height],\n        ['rx', config.rx],\n        ['ry', config.ry],\n        ['radius', config.radius],\n        ['left', config.left],\n        ['top', config.top],\n    ];\n    for (const [fieldName, value] of fields) {\n        if (!isResolvableNumericInput(value)) {\n            warnInvalidMask(options, `${fieldName} is not a supported numeric value`);\n            return false;\n        }\n    }\n    return true;\n}\nfunction resolveMaskNumericField(options, fieldName, value, axis, fallback, canvas) {\n    try {\n        return resolveNumeric(value, axis, fallback, canvas, options);\n    }\n    catch (error) {\n        reportWarning(options, error, `createMask skipped: ${fieldName} resolver threw.`);\n        return null;\n    }\n}\nfunction resolvePolygonPoints(options, points) {\n    if (!Array.isArray(points) || points.length < 3) {\n        warnInvalidMask(options, 'polygon masks require at least three points');\n        return null;\n    }\n    const resolvedPoints = points.map(coercePoint);\n    const allFinite = resolvedPoints.every((point) => Number.isFinite(point.x) && Number.isFinite(point.y));\n    if (!allFinite) {\n        warnInvalidMask(options, 'polygon points must contain finite x/y values');\n        return null;\n    }\n    if (polygonArea(resolvedPoints) <= POLYGON_AREA_EPSILON) {\n        warnInvalidMask(options, 'polygon points must describe a non-zero area');\n        return null;\n    }\n    return resolvedPoints;\n}\nfunction resizeMaskCanvas(context, width, height) {\n    if (context.expandCanvasIfNeeded) {\n        context.expandCanvasIfNeeded(width, height);\n    }\n    else {\n        context.canvas.setDimensions({ width, height });\n    }\n}\nfunction polygonArea(points) {\n    let area = 0;\n    for (let index = 0; index < points.length; index += 1) {\n        const current = points[index];\n        const next = points[(index + 1) % points.length];\n        area += current.x * next.y - next.x * current.y;\n    }\n    return Math.abs(area) / 2;\n}\nexport function createMask(context, config = {}) {\n    var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r;\n    const { canvas, options, fabric: fabricModule } = context;\n    if (!canvas)\n        return null;\n    const mergedConfig = mergeMaskConfig(options.defaultMaskConfig, config);\n    const requestedShapeType = (_a = mergedConfig.shape) !== null && _a !== void 0 ? _a : 'rect';\n    if (!validateNumericInputs(options, mergedConfig))\n        return null;\n    const shapeType = typeof config.fabricGenerator === 'function'\n        ? requestedShapeType\n        : resolveMaskShape(options, requestedShapeType);\n    const resolvedConfig = {\n        width: options.defaultMaskWidth,\n        height: options.defaultMaskHeight,\n        color: 'rgba(0,0,0,0.5)',\n        alpha: 0.5,\n        gap: 5,\n        left: undefined,\n        top: undefined,\n        angle: 0,\n        selectable: true,\n        ...mergedConfig,\n        shape: shapeType,\n    };\n    const firstOffset = 10;\n    let left;\n    let top;\n    const previousMask = context.getLastMask();\n    if (mergedConfig.left === undefined && previousMask) {\n        const previousRight = ((_b = previousMask.left) !== null && _b !== void 0 ? _b : 0) +\n            (typeof previousMask.getScaledWidth === 'function'\n                ? previousMask.getScaledWidth()\n                : ((_c = previousMask.width) !== null && _c !== void 0 ? _c : 0) * ((_d = previousMask.scaleX) !== null && _d !== void 0 ? _d : 1));\n        left = Math.round(previousRight + ((_e = resolvedConfig.gap) !== null && _e !== void 0 ? _e : 5));\n        top = (_f = previousMask.top) !== null && _f !== void 0 ? _f : firstOffset;\n    }\n    else {\n        const resolvedLeft = resolveMaskNumericField(options, 'left', mergedConfig.left, 'x', firstOffset, canvas);\n        const resolvedTop = resolveMaskNumericField(options, 'top', mergedConfig.top, 'y', firstOffset, canvas);\n        if (resolvedLeft === null || resolvedTop === null)\n            return null;\n        left = resolvedLeft;\n        top = resolvedTop;\n    }\n    const resolvedWidth = resolveMaskNumericField(options, 'width', mergedConfig.width, 'x', options.defaultMaskWidth, canvas);\n    const resolvedHeight = resolveMaskNumericField(options, 'height', mergedConfig.height, 'y', options.defaultMaskHeight, canvas);\n    if (resolvedWidth === null || resolvedHeight === null)\n        return null;\n    resolvedConfig.width = resolvedWidth;\n    resolvedConfig.height = resolvedHeight;\n    let rx;\n    if (mergedConfig.rx !== undefined) {\n        const resolvedRx = resolveMaskNumericField(options, 'rx', mergedConfig.rx, 'x', 0, canvas);\n        if (resolvedRx === null)\n            return null;\n        rx = resolvedRx;\n    }\n    let ry;\n    if (mergedConfig.ry !== undefined) {\n        const resolvedRy = resolveMaskNumericField(options, 'ry', mergedConfig.ry, 'y', 0, canvas);\n        if (resolvedRy === null)\n            return null;\n        ry = resolvedRy;\n    }\n    let radius;\n    if (shapeType === 'circle') {\n        const resolvedRadius = resolveMaskNumericField(options, 'radius', mergedConfig.radius, 'x', Math.min(resolvedConfig.width, resolvedConfig.height) / 2, canvas);\n        if (resolvedRadius === null)\n            return null;\n        radius = resolvedRadius;\n    }\n    const polygonPoints = shapeType === 'polygon' ? resolvePolygonPoints(options, mergedConfig.points) : null;\n    if (!validateFiniteField(options, 'left', left) ||\n        !validateFiniteField(options, 'top', top) ||\n        !validatePositiveField(options, 'width', resolvedConfig.width) ||\n        !validatePositiveField(options, 'height', resolvedConfig.height) ||\n        !validateFiniteField(options, 'gap', resolvedConfig.gap) ||\n        !validateFiniteField(options, 'angle', resolvedConfig.angle) ||\n        !validateFiniteField(options, 'alpha', resolvedConfig.alpha)) {\n        return null;\n    }\n    if ((rx !== undefined && !validateNonNegativeField(options, 'rx', rx)) ||\n        (ry !== undefined && !validateNonNegativeField(options, 'ry', ry)) ||\n        (radius !== undefined && !validatePositiveField(options, 'radius', radius)) ||\n        (shapeType === 'polygon' && polygonPoints === null)) {\n        return null;\n    }\n    let preExpandCanvasSize = null;\n    if (options.layoutMode === 'expand') {\n        const requiredWidth = Math.ceil(left + resolvedConfig.width + 10);\n        const requiredHeight = Math.ceil(top + resolvedConfig.height + 10);\n        const nextWidth = Math.max(canvas.getWidth(), requiredWidth);\n        const nextHeight = Math.max(canvas.getHeight(), requiredHeight);\n        if (nextWidth !== canvas.getWidth() || nextHeight !== canvas.getHeight()) {\n            preExpandCanvasSize = { width: canvas.getWidth(), height: canvas.getHeight() };\n            resizeMaskCanvas(context, nextWidth, nextHeight);\n        }\n    }\n    const rollbackCanvasExpansion = () => {\n        if (!preExpandCanvasSize)\n            return;\n        try {\n            resizeMaskCanvas(context, preExpandCanvasSize.width, preExpandCanvasSize.height);\n        }\n        catch (error) {\n            reportWarning(options, error, 'createMask rollback canvas size failed.');\n        }\n    };\n    let mask;\n    if (typeof config.fabricGenerator === 'function') {\n        let generated;\n        try {\n            generated = config.fabricGenerator(resolvedConfig, canvas, options);\n        }\n        catch (error) {\n            rollbackCanvasExpansion();\n            reportWarning(options, error, 'createMask skipped: fabricGenerator threw.');\n            return null;\n        }\n        if (!isFabricObjectLike(generated)) {\n            rollbackCanvasExpansion();\n            reportWarning(options, generated, 'createMask skipped: fabricGenerator did not return a Fabric object.');\n            return null;\n        }\n        mask = generated;\n    }\n    else {\n        const originProps = {\n            originX: 'left',\n            originY: 'top',\n        };\n        switch (shapeType) {\n            case 'circle':\n                mask = new fabricModule.Circle({\n                    left,\n                    top,\n                    ...originProps,\n                    radius,\n                    fill: resolvedConfig.color,\n                    opacity: resolvedConfig.alpha,\n                    angle: (_g = resolvedConfig.angle) !== null && _g !== void 0 ? _g : 0,\n                    ...resolvedConfig.styles,\n                });\n                break;\n            case 'ellipse':\n                mask = new fabricModule.Ellipse({\n                    left,\n                    top,\n                    ...originProps,\n                    rx: rx !== null && rx !== void 0 ? rx : resolvedConfig.width / 2,\n                    ry: ry !== null && ry !== void 0 ? ry : resolvedConfig.height / 2,\n                    fill: resolvedConfig.color,\n                    opacity: resolvedConfig.alpha,\n                    angle: (_h = resolvedConfig.angle) !== null && _h !== void 0 ? _h : 0,\n                    ...resolvedConfig.styles,\n                });\n                break;\n            case 'polygon': {\n                const polygon = new fabricModule.Polygon(polygonPoints, {\n                    ...originProps,\n                    fill: resolvedConfig.color,\n                    opacity: resolvedConfig.alpha,\n                    angle: (_j = resolvedConfig.angle) !== null && _j !== void 0 ? _j : 0,\n                    ...resolvedConfig.styles,\n                });\n                polygon.setCoords();\n                const boundingRect = polygon.getBoundingRect();\n                const deltaX = left - boundingRect.left;\n                const deltaY = top - boundingRect.top;\n                polygon.set({\n                    left: ((_k = polygon.left) !== null && _k !== void 0 ? _k : 0) + deltaX,\n                    top: ((_l = polygon.top) !== null && _l !== void 0 ? _l : 0) + deltaY,\n                });\n                polygon.setCoords();\n                mask = polygon;\n                break;\n            }\n            case 'rect':\n            default:\n                mask = new fabricModule.Rect({\n                    left,\n                    top,\n                    ...originProps,\n                    width: resolvedConfig.width,\n                    height: resolvedConfig.height,\n                    fill: resolvedConfig.color,\n                    opacity: resolvedConfig.alpha,\n                    angle: (_m = resolvedConfig.angle) !== null && _m !== void 0 ? _m : 0,\n                    ...(rx !== undefined ? { rx } : {}),\n                    ...(ry !== undefined ? { ry } : {}),\n                    ...resolvedConfig.styles,\n                });\n        }\n    }\n    const maskObject = mask;\n    maskObject.selectable = 'selectable' in mergedConfig ? !!mergedConfig.selectable : true;\n    maskObject.evented = 'evented' in mergedConfig ? !!mergedConfig.evented : true;\n    maskObject.hasControls = 'hasControls' in mergedConfig ? !!mergedConfig.hasControls : true;\n    maskObject.transparentCorners =\n        'transparentCorners' in mergedConfig ? !!mergedConfig.transparentCorners : false;\n    maskObject.strokeUniform =\n        'strokeUniform' in mergedConfig ? !!mergedConfig.strokeUniform : true;\n    maskObject.lockRotation = !options.maskRotatable;\n    maskObject.borderColor = (_o = mergedConfig.borderColor) !== null && _o !== void 0 ? _o : 'red';\n    maskObject.cornerColor = (_p = mergedConfig.cornerColor) !== null && _p !== void 0 ? _p : 'black';\n    maskObject.cornerSize = (_q = mergedConfig.cornerSize) !== null && _q !== void 0 ? _q : 8;\n    const styles = ((_r = resolvedConfig.styles) !== null && _r !== void 0 ? _r : {});\n    if ('stroke' in styles) {\n        maskObject.stroke = styles.stroke;\n    }\n    else {\n        maskObject.stroke = '#ccc';\n    }\n    if ('strokeWidth' in styles) {\n        maskObject.strokeWidth = styles.strokeWidth;\n    }\n    else {\n        maskObject.strokeWidth = 1;\n    }\n    if ('strokeDashArray' in styles) {\n        maskObject.strokeDashArray = styles.strokeDashArray;\n    }\n    const nextId = context.getMaskCounter() + 1;\n    context.setMaskCounter(nextId);\n    markMaskObject(maskObject, {\n        maskId: nextId,\n        maskUid: createMaskUid(nextId),\n        maskName: `${options.maskName}${nextId}`,\n        originalAlpha: resolvedConfig.alpha,\n        originalStroke: maskObject.stroke,\n        originalStrokeWidth: maskObject.strokeWidth,\n    });\n    attachMaskHoverHandlers(maskObject);\n    context.setLastMask(maskObject);\n    placeMaskObject(canvas, maskObject);\n    context.updateMaskList();\n    if (resolvedConfig.selectable !== false) {\n        canvas.setActiveObject(maskObject);\n    }\n    canvas.renderAll();\n    context.saveCanvasState();\n    if (typeof config.onCreate === 'function') {\n        try {\n            config.onCreate(maskObject, canvas);\n        }\n        catch (error) {\n            reportWarning(options, error, 'createMask onCreate callback threw.');\n        }\n    }\n    return maskObject;\n}\nfunction isActiveSelectionObject(object) {\n    if (!object)\n        return false;\n    const type = typeof object.type === 'string' ? object.type.toLowerCase() : '';\n    if (type === 'activeselection')\n        return true;\n    const isType = object.isType;\n    return (typeof isType === 'function' &&\n        (isType.call(object, 'ActiveSelection') || isType.call(object, 'activeSelection')));\n}\nfunction getSelectedMaskObjects(canvas) {\n    const active = canvas.getActiveObject();\n    if (!active)\n        return [];\n    if (!isActiveSelectionObject(active))\n        return isMaskObject(active) ? [active] : [];\n    const getObjects = active.getObjects;\n    const objects = typeof getObjects === 'function' ? getObjects.call(active) : [];\n    return objects.filter(isMaskObject);\n}\nexport function removeSelectedMask(context) {\n    const selectedMasks = getSelectedMaskObjects(context.canvas);\n    if (selectedMasks.length === 0)\n        return;\n    for (const mask of selectedMasks) {\n        context.removeLabelForMask(mask);\n        detachMaskHoverHandlers(mask);\n        context.canvas.remove(mask);\n    }\n    context.canvas.discardActiveObject();\n    context.updateMaskList();\n    context.canvas.renderAll();\n    context.saveCanvasState();\n}\nexport function removeAllMasks(context, options = {}) {\n    const masks = context.canvas.getObjects().filter(isMaskObject);\n    if (masks.length === 0)\n        return;\n    for (const maskObject of masks) {\n        context.removeLabelForMask(maskObject);\n        detachMaskHoverHandlers(maskObject);\n        context.canvas.remove(maskObject);\n    }\n    context.canvas.discardActiveObject();\n    context.setLastMask(null);\n    context.updateMaskList();\n    context.canvas.renderAll();\n    if (options.saveHistory !== false) {\n        context.saveCanvasState();\n    }\n}\n//# sourceMappingURL=mask-factory.js.map","import { reportWarning } from '../core/callback-reporter.js';\nimport { attachTextEditingHandlersToAnnotations, } from '../annotation/text-controller.js';\nimport { removeAllAnnotations as removeAllAnnotationsImpl, } from '../annotation/annotation-manager.js';\nimport { syncAnnotationRuntimeStates } from '../annotation/annotation-style.js';\nimport { exportImageBase64 as exportImageBase64Impl, } from '../export/export-service.js';\nimport { applyDeltaToObject, computeImageTransformDelta, isApproximatelyIdentityTransform, isFiniteTransformMatrix, } from '../image/overlay-transform-delta.js';\nimport { removeAllMasks as removeAllMasksImpl, } from '../mask/mask-factory.js';\nimport { applyMaskUnselectedStyle, reattachMaskHoverHandlers } from '../mask/mask-style.js';\nimport { isAnnotationObject, isMaskObject, } from '../core/public-types.js';\nfunction asFabricTransformMatrix(matrix) {\n    return matrix;\n}\nfunction createFabricUtilAccess(fabricModule) {\n    return {\n        multiplyTransformMatrices: (a, b) => fabricModule.util.multiplyTransformMatrices(asFabricTransformMatrix(a), asFabricTransformMatrix(b)),\n        invertTransform: (matrix) => fabricModule.util.invertTransform(asFabricTransformMatrix(matrix)),\n        qrDecompose: (matrix) => fabricModule.util.qrDecompose(asFabricTransformMatrix(matrix)),\n        Point: fabricModule.Point,\n    };\n}\nfunction isActiveSelectionObject(object) {\n    if (!object)\n        return false;\n    const type = typeof object.type === 'string' ? object.type.toLowerCase() : '';\n    if (type === 'activeselection')\n        return true;\n    const isType = object.isType;\n    return (typeof isType === 'function' &&\n        (isType.call(object, 'ActiveSelection') ||\n            isType.call(object, 'activeSelection') ||\n            isType.call(object, 'activeselection')));\n}\nexport class EditorContextFactory {\n    constructor(access) {\n        Object.defineProperty(this, \"access\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: access\n        });\n    }\n    buildExportServiceContext() {\n        const access = this.access;\n        return {\n            fabric: access.getFabric(),\n            canvas: access.getLiveCanvas('export'),\n            options: access.getOptions(),\n            isImageLoaded: () => access.isImageLoaded(),\n            getOriginalImage: () => access.getOriginalImage(),\n            withSelectionChangeSuppressed: (callback) => access.withSelectionChangeSuppressed(callback),\n        };\n    }\n    buildLoadImageContext() {\n        const access = this.access;\n        return {\n            fabric: access.getFabric(),\n            canvas: access.getLiveCanvas('loadImage'),\n            options: access.getRuntimeOptions(),\n            containerElement: access.getContainerElement(),\n            placeholderElement: access.getPlaceholderElement(),\n            viewportCache: access.getViewportCache(),\n            getOriginalImage: () => access.getOriginalImage(),\n            setOriginalImage: (image) => {\n                access.setOriginalImage(image);\n            },\n            getIsImageLoadedToCanvas: () => access.getIsImageLoadedToCanvas(),\n            setIsImageLoadedToCanvas: (value) => {\n                access.setIsImageLoadedToCanvas(value);\n            },\n            getLastSnapshot: () => access.getLastSnapshot(),\n            setLastSnapshot: (snapshot) => {\n                access.setLastSnapshot(snapshot);\n            },\n            getMaskCounter: () => access.getMaskCounter(),\n            setMaskCounter: (value) => {\n                access.setMaskCounter(value);\n            },\n            getAnnotationCounter: () => access.getAnnotationCounter(),\n            setAnnotationCounter: (value) => {\n                access.setAnnotationCounter(value);\n            },\n            getCurrentScale: () => access.getCurrentScale(),\n            setCurrentScale: (scale) => {\n                access.setCurrentScale(scale);\n            },\n            getCurrentRotation: () => access.getCurrentRotation(),\n            setCurrentRotation: (rotation) => {\n                access.setCurrentRotation(rotation);\n            },\n            getBaseImageScale: () => access.getBaseImageScale(),\n            setBaseImageScale: (scale) => {\n                access.setBaseImageScale(scale);\n            },\n            getCurrentImageMimeType: () => access.getCurrentImageMimeType(),\n            setCurrentImageMimeType: (mimeType) => {\n                access.setCurrentImageMimeType(mimeType);\n            },\n            getCurrentImageFilterConfig: () => access.getCurrentImageFilterConfig(),\n            resetImageFilterState: () => {\n                access.resetImageFilterState();\n            },\n            restoreImageFilterConfig: (config) => {\n                access.restoreImageFilterConfig(config);\n            },\n            setCanvasSize: (width, height) => {\n                access.setCanvasSize(width, height);\n            },\n            applyRollbackRestoredState: (restoredState) => {\n                var _a, _b;\n                access.hideAllMaskLabels();\n                const canvas = access.getCanvas();\n                const originalImage = restoredState.originalImage;\n                access.setOriginalImage(originalImage);\n                if (originalImage) {\n                    originalImage.set({\n                        originX: 'left',\n                        originY: 'top',\n                        selectable: false,\n                        evented: false,\n                        hasControls: false,\n                        hoverCursor: 'default',\n                    });\n                    canvas === null || canvas === void 0 ? void 0 : canvas.sendObjectToBack(originalImage);\n                }\n                access.restoreImageFilterConfig((_b = (_a = restoredState.editorState) === null || _a === void 0 ? void 0 : _a.imageFilterConfig) !== null && _b !== void 0 ? _b : null);\n                const restoredMasks = restoredState.masks;\n                access.setLastMask(restoredMasks.reduce((lastMask, maskObject) => !lastMask || maskObject.maskId > lastMask.maskId\n                    ? maskObject\n                    : lastMask, null));\n                restoredMasks.forEach((maskObject) => {\n                    applyMaskUnselectedStyle(maskObject);\n                    reattachMaskHoverHandlers(maskObject);\n                });\n                syncAnnotationRuntimeStates(restoredState.annotations);\n                attachTextEditingHandlersToAnnotations(this.buildTextControllerContext(), restoredState.annotations);\n                access.updateMaskList();\n                access.updateAnnotationList();\n                access.updateInputs();\n                access.updateUi();\n            },\n            resetAfterRollbackFailure: () => {\n                const canvas = access.getCanvas();\n                try {\n                    canvas === null || canvas === void 0 ? void 0 : canvas.clear();\n                    if (canvas) {\n                        canvas.backgroundColor = access.getOptions().backgroundColor;\n                        canvas.renderAll();\n                    }\n                }\n                catch {\n                }\n                access.setOriginalImage(null);\n                access.setIsImageLoadedToCanvas(false);\n                access.setCurrentImageMimeType(null);\n                access.resetImageFilterState();\n                access.setLastSnapshot(null);\n                access.setLastMask(null);\n                access.setMaskCounter(0);\n                access.setAnnotationCounter(0);\n                access.setCurrentScale(1);\n                access.setCurrentRotation(0);\n                access.setBaseImageScale(1);\n                access.updateMaskList();\n                access.updateAnnotationList();\n                access.updateInputs();\n                access.updateUi();\n            },\n            setPlaceholderVisible: (show) => {\n                access.setPlaceholderVisible(show);\n            },\n        };\n    }\n    buildTransformContext() {\n        const access = this.access;\n        const fabricUtil = createFabricUtilAccess(access.getFabric());\n        let suppressOverlaySync = false;\n        const getBoundOverlayTargets = (kind) => {\n            const canvas = access.getCanvas();\n            const options = access.getOptions();\n            if (!canvas)\n                return [];\n            if (kind === 'masks') {\n                if (!options.bindMasksToImageTransform)\n                    return [];\n                return canvas.getObjects().filter(isMaskObject);\n            }\n            if (!options.bindAnnotationsToImageTransform)\n                return [];\n            return canvas.getObjects().filter(isAnnotationObject);\n        };\n        const shouldPreserveReadableForAnnotation = (object) => {\n            const options = access.getOptions();\n            return (options.bindAnnotationsToImageTransform &&\n                options.textAnnotationFlipBehavior === 'preserve-readable' &&\n                isAnnotationObject(object) &&\n                object.annotationType === 'text');\n        };\n        return {\n            canvas: access.getLiveCanvas('buildTransformContext'),\n            options: access.getOptions(),\n            guard: access.getOperationGuard(),\n            getOriginalImage: () => access.getOriginalImage(),\n            getCurrentScale: () => access.getCurrentScale(),\n            setCurrentScale: (scale) => {\n                access.setCurrentScale(scale);\n            },\n            getCurrentRotation: () => access.getCurrentRotation(),\n            setCurrentRotation: (rotation) => {\n                access.setCurrentRotation(rotation);\n            },\n            getBaseImageScale: () => access.getBaseImageScale(),\n            saveCanvasState: () => {\n                access.saveCanvasStateWithAnimationBypass();\n            },\n            setSuppressSaveState: (suppress) => {\n                access.setSuppressSaveState(suppress);\n            },\n            getFabricUtil: () => fabricUtil,\n            getBoundOverlayTargets,\n            shouldPreserveReadableForAnnotation,\n            finalizeImageTransformSnap: () => {\n                const canvas = access.getCanvas();\n                const originalImage = access.getOriginalImage();\n                if (access.isDisposed() || !canvas || !originalImage)\n                    return;\n                access.updateCanvasSizeToImageBounds();\n                access.alignObjectBoundingBoxToCanvasTopLeft(originalImage);\n            },\n            applyOverlayTransformDelta: (beforeMatrix) => {\n                if (suppressOverlaySync)\n                    return;\n                const canvas = access.getCanvas();\n                const originalImage = access.getOriginalImage();\n                if (access.isDisposed() || !canvas || !originalImage)\n                    return;\n                const targets = [\n                    ...getBoundOverlayTargets('masks'),\n                    ...getBoundOverlayTargets('annotations'),\n                ];\n                if (targets.length === 0)\n                    return;\n                originalImage.setCoords();\n                const afterMatrix = originalImage.calcTransformMatrix();\n                const delta = computeImageTransformDelta(beforeMatrix, afterMatrix, fabricUtil);\n                if (!isFiniteTransformMatrix(delta) || isApproximatelyIdentityTransform(delta)) {\n                    return;\n                }\n                if (isActiveSelectionObject(canvas.getActiveObject())) {\n                    canvas.discardActiveObject();\n                }\n                for (const object of targets) {\n                    try {\n                        applyDeltaToObject(object, delta, {\n                            fabricUtil,\n                            preserveReadableText: shouldPreserveReadableForAnnotation(object),\n                        });\n                    }\n                    catch (error) {\n                        reportWarning(access.getOptions(), error, 'Overlay transform skipped an object after its Fabric transform failed.');\n                    }\n                }\n                canvas.requestRenderAll();\n            },\n            syncOverlayAfterTransform: () => {\n                const canvas = access.getCanvas();\n                if (access.isDisposed() || !canvas)\n                    return;\n                canvas\n                    .getObjects()\n                    .filter(isMaskObject)\n                    .forEach((maskObject) => {\n                    access.syncMaskLabel(maskObject);\n                });\n                canvas.requestRenderAll();\n            },\n            setSuppressOverlaySync: (suppress) => {\n                suppressOverlaySync = suppress;\n            },\n            isOverlaySyncSuppressed: () => suppressOverlaySync,\n        };\n    }\n    buildCreateMaskContext() {\n        const access = this.access;\n        return {\n            fabric: access.getFabric(),\n            canvas: access.getLiveCanvas('createMask'),\n            options: access.getRuntimeOptions(),\n            getLastMask: () => access.getLastMask(),\n            setLastMask: (maskObject) => {\n                access.setLastMask(maskObject);\n            },\n            getMaskCounter: () => access.getMaskCounter(),\n            setMaskCounter: (value) => {\n                access.setMaskCounter(value);\n            },\n            updateMaskList: () => {\n                access.updateMaskList();\n            },\n            saveCanvasState: () => {\n                access.saveCanvasState();\n            },\n            expandCanvasIfNeeded: (widthPx, heightPx) => {\n                access.setCanvasSize(widthPx, heightPx);\n            },\n        };\n    }\n    buildRemoveMaskContext() {\n        const access = this.access;\n        return {\n            canvas: access.getLiveCanvas('removeMask'),\n            removeLabelForMask: (mask) => {\n                access.removeLabelForMask(mask);\n            },\n            updateMaskList: () => {\n                access.updateMaskList();\n            },\n            saveCanvasState: () => {\n                access.saveCanvasState();\n            },\n            setLastMask: (maskObject) => {\n                access.setLastMask(maskObject);\n            },\n        };\n    }\n    buildMaskLabelContext() {\n        const canvas = this.access.getCanvas();\n        if (!canvas)\n            return null;\n        return {\n            fabric: this.access.getFabric(),\n            canvas,\n            options: this.access.getOptions(),\n        };\n    }\n    buildMaskListContext() {\n        const access = this.access;\n        return {\n            canvas: access.getCanvas(),\n            getCanvas: () => access.getCanvas(),\n            getListElement: () => access.getMaskListElement(),\n            listOrder: access.getOptions().maskListOrder,\n            onMaskSelected: (mask) => {\n                access.handleMaskSelected(mask);\n            },\n        };\n    }\n    buildAnnotationManagerContext() {\n        const access = this.access;\n        return {\n            canvas: access.getLiveCanvas('annotationManager'),\n            saveCanvasState: () => access.saveCanvasState(),\n            updateUi: () => access.updateUi(),\n        };\n    }\n    buildAnnotationListContext() {\n        const access = this.access;\n        return {\n            canvas: access.getCanvas(),\n            getCanvas: () => access.getCanvas(),\n            getListElement: () => access.getAnnotationListElement(),\n            listOrder: access.getOptions().annotationListOrder,\n            onAnnotationSelected: (annotation) => {\n                access.handleAnnotationSelected(annotation);\n            },\n        };\n    }\n    buildTextControllerContext() {\n        const access = this.access;\n        return {\n            fabric: access.getFabric(),\n            canvas: access.getLiveCanvas('textController'),\n            options: access.getOptions(),\n            getOriginalImage: () => access.getOriginalImage(),\n            getTextConfig: () => access.getTextConfig(),\n            isImageLoaded: () => access.isImageLoaded(),\n            getAnnotationCounter: () => access.getAnnotationCounter(),\n            setAnnotationCounter: (value) => {\n                access.setAnnotationCounter(value);\n            },\n            getTextSession: () => access.getTextSession(),\n            setTextSession: (session) => {\n                access.setTextSession(session);\n            },\n            saveCanvasState: () => access.saveCanvasState(),\n            updateAnnotationList: () => access.updateAnnotationList(),\n            updateUi: () => access.updateUi(),\n            emitAnnotationsChanged: (context) => access.emitAnnotationsChanged(context),\n            emitImageChanged: (context) => access.emitImageChanged(context),\n            buildCallbackContext: (operation) => access.buildCallbackContext(operation, false),\n        };\n    }\n    buildDrawControllerContext() {\n        const access = this.access;\n        return {\n            fabric: access.getFabric(),\n            canvas: access.getLiveCanvas('drawController'),\n            options: access.getOptions(),\n            getDrawConfig: () => access.getDrawConfig(),\n            getEraserConfig: () => access.getEraserConfig(),\n            isImageLoaded: () => access.isImageLoaded(),\n            getAnnotationCounter: () => access.getAnnotationCounter(),\n            setAnnotationCounter: (value) => {\n                access.setAnnotationCounter(value);\n            },\n            getDrawSession: () => access.getDrawSession(),\n            setDrawSession: (session) => {\n                access.setDrawSession(session);\n            },\n            saveCanvasState: () => access.saveCanvasState(),\n            updateAnnotationList: () => access.updateAnnotationList(),\n            updateUi: () => access.updateUi(),\n            emitAnnotationsChanged: (context) => access.emitAnnotationsChanged(context),\n            emitImageChanged: (context) => access.emitImageChanged(context),\n            buildCallbackContext: (operation) => access.buildCallbackContext(operation, false),\n        };\n    }\n    buildShapeControllerContext() {\n        const access = this.access;\n        return {\n            fabric: access.getFabric(),\n            canvas: access.getLiveCanvas('shapeController'),\n            options: access.getOptions(),\n            getOriginalImage: () => access.getOriginalImage(),\n            getShapeConfig: () => access.getShapeConfig(),\n            isImageLoaded: () => access.isImageLoaded(),\n            getAnnotationCounter: () => access.getAnnotationCounter(),\n            setAnnotationCounter: (value) => {\n                access.setAnnotationCounter(value);\n            },\n            getShapeSession: () => access.getShapeSession(),\n            setShapeSession: (session) => {\n                access.setShapeSession(session);\n            },\n            saveCanvasState: () => access.saveCanvasState(),\n            updateAnnotationList: () => access.updateAnnotationList(),\n            updateUi: () => access.updateUi(),\n            emitAnnotationsChanged: (context) => access.emitAnnotationsChanged(context),\n            emitImageChanged: (context) => access.emitImageChanged(context),\n            buildCallbackContext: (operation) => access.buildCallbackContext(operation, false),\n        };\n    }\n    buildMosaicControllerContext() {\n        const access = this.access;\n        return {\n            fabric: access.getFabric(),\n            canvas: access.getLiveCanvas('mosaicController'),\n            options: access.getOptions(),\n            historyManager: access.getHistoryManager(),\n            getMosaicConfig: () => access.getMosaicConfig(),\n            isImageLoaded: () => access.isImageLoaded(),\n            getOriginalImage: () => access.getOriginalImage(),\n            setOriginalImage: (image) => {\n                access.setOriginalImage(image);\n            },\n            getCurrentImageMimeType: () => access.getCurrentImageMimeType(),\n            setCurrentImageMimeType: (mimeType) => {\n                access.setCurrentImageMimeType(mimeType);\n            },\n            getCurrentImageFilterConfig: () => access.getCurrentImageFilterConfig(),\n            resetImageFilterState: () => {\n                access.resetImageFilterState();\n            },\n            getLastSnapshot: () => access.getLastSnapshot(),\n            setLastSnapshot: (snapshot) => {\n                access.setLastSnapshot(snapshot);\n            },\n            captureSnapshot: () => access.captureSnapshot(),\n            loadFromState: (snapshot) => access.loadFromStateForOperation(undefined, snapshot),\n            updateUi: () => access.updateUi(),\n            updateInputs: () => access.updateInputs(),\n            hideAllMaskLabels: () => access.hideAllMaskLabels(),\n            emitImageChanged: (context) => {\n                access.emitImageChanged(context);\n            },\n            emitBusyChangeIfChanged: (context) => {\n                access.emitBusyChangeIfChanged(context);\n            },\n            buildCallbackContext: (operation, isInternal) => access.buildCallbackContext(operation, isInternal),\n            getMosaicSession: () => access.getMosaicSession(),\n            setMosaicSession: (session) => {\n                access.setMosaicSession(session);\n            },\n        };\n    }\n    buildCropControllerContext(operationToken) {\n        const access = this.access;\n        return {\n            fabric: access.getFabric(),\n            canvas: access.getLiveCanvas('cropController'),\n            options: access.getOptions(),\n            historyManager: access.getHistoryManager(),\n            isImageLoaded: () => access.isImageLoaded(),\n            getOriginalImage: () => access.getOriginalImage(),\n            getCurrentImageMimeType: () => access.getCurrentImageMimeType(),\n            getCropSession: () => access.getCropSession(),\n            setCropSession: (session) => {\n                access.setCropSession(session);\n            },\n            saveState: () => access.captureSnapshot(),\n            loadFromState: (snapshot) => access.loadFromStateForOperation(operationToken, snapshot),\n            loadImage: (base64, providedOptions) => access.loadImageForOperation(operationToken, base64, providedOptions),\n            getMaskCounter: () => access.getMaskCounter(),\n            setMaskCounter: (value) => {\n                access.setMaskCounter(value);\n            },\n            updateMaskList: () => {\n                access.updateMaskList();\n            },\n        };\n    }\n    buildMergeMasksContext(operationToken) {\n        const access = this.access;\n        return {\n            ...this.buildExportServiceContext(),\n            historyManager: access.getHistoryManager(),\n            containerElement: access.getContainerElement(),\n            loadImage: (base64, providedOptions) => access.loadMergedImage(operationToken, base64, providedOptions),\n            captureSnapshot: () => access.captureSnapshot(),\n            loadFromState: (snapshot) => access.loadFromStateForOperation(operationToken, snapshot),\n            exportImageBase64: (options) => exportImageBase64Impl(this.buildExportServiceContext(), options),\n            updateUi: () => access.updateUi(),\n            updateInputs: () => access.updateInputs(),\n            removeAllMasksNoHistory: () => {\n                removeAllMasksImpl(this.buildRemoveMaskContext(), { saveHistory: false });\n            },\n            getAnnotations: () => access.getAnnotations(),\n            restoreAnnotations: (objects) => {\n                const canvas = access.getLiveCanvas('restoreAnnotations');\n                objects.forEach((annotation) => {\n                    canvas.add(annotation);\n                });\n                syncAnnotationRuntimeStates(objects);\n                attachTextEditingHandlersToAnnotations(this.buildTextControllerContext(), objects);\n                access.setAnnotationCounter(Math.max(access.getAnnotationCounter(), ...objects.map((annotation) => annotation.annotationId), 0));\n                access.updateAnnotationList();\n            },\n        };\n    }\n    buildMergeAnnotationsContext(operationToken) {\n        const access = this.access;\n        return {\n            ...this.buildExportServiceContext(),\n            historyManager: access.getHistoryManager(),\n            containerElement: access.getContainerElement(),\n            loadImage: (base64, providedOptions) => access.loadMergedImage(operationToken, base64, providedOptions),\n            captureSnapshot: () => access.captureSnapshot(),\n            loadFromState: (snapshot) => access.loadFromStateForOperation(operationToken, snapshot),\n            exportImageBase64: (options) => exportImageBase64Impl(this.buildExportServiceContext(), options),\n            updateUi: () => access.updateUi(),\n            updateInputs: () => access.updateInputs(),\n            removeAllAnnotationsNoHistory: () => {\n                removeAllAnnotationsImpl(this.buildAnnotationManagerContext(), {\n                    saveHistory: false,\n                    force: true,\n                });\n            },\n            getMasks: () => access.getMasks(),\n            restoreMasks: (objects) => {\n                const canvas = access.getLiveCanvas('restoreMasks');\n                objects.forEach((mask) => {\n                    canvas.add(mask);\n                    reattachMaskHoverHandlers(mask);\n                });\n                access.setLastMask(objects.reduce((lastMask, mask) => !lastMask || mask.maskId > lastMask.maskId ? mask : lastMask, null));\n                access.setMaskCounter(Math.max(access.getMaskCounter(), ...objects.map((mask) => mask.maskId), 0));\n                access.updateMaskList();\n            },\n        };\n    }\n}\n//# sourceMappingURL=editor-contexts.js.map","import { cloneResolvedMosaicConfig, cloneResolvedEraserConfig, cloneResolvedShapeAnnotationConfig, } from '../core/default-options.js';\nimport { resolveDomElement } from '../core/editor-elements.js';\nimport { cloneResolvedImageFilterConfig, DEFAULT_IMAGE_FILTER_CONFIG, } from '../core/image-filter-config.js';\nimport { applyImageFilterConfigToImage } from '../image/image-filters.js';\nimport { setPlaceholderVisible as setPlaceholderVisibleImpl } from '../ui/visibility-state.js';\nimport { EditorContextFactory } from './editor-contexts.js';\nexport function createEditorContextFactory(runtime, callbacks) {\n    return new EditorContextFactory({\n        getFabric: () => runtime.fabricModule,\n        getOptions: () => runtime.options,\n        getRuntimeOptions: () => runtime.getRuntimeOptions(),\n        getHistoryManager: () => runtime.historyManager,\n        getOperationGuard: () => runtime.operationGuard,\n        getCanvas: () => runtime.canvas,\n        getLiveCanvas: (operationName) => runtime.getLiveCanvasOrThrow(operationName),\n        getContainerElement: () => runtime.containerElement,\n        getPlaceholderElement: () => runtime.placeholderElement,\n        getViewportCache: () => runtime.viewportCache,\n        isDisposed: () => runtime.isDisposed,\n        isImageLoaded: () => runtime.isImageLoaded(),\n        getOriginalImage: () => runtime.originalImage,\n        setOriginalImage: (image) => {\n            runtime.originalImage = image;\n        },\n        getIsImageLoadedToCanvas: () => runtime.isImageLoadedToCanvas,\n        setIsImageLoadedToCanvas: (value) => {\n            runtime.isImageLoadedToCanvas = value;\n        },\n        getCurrentImageMimeType: () => runtime.currentImageMimeType,\n        setCurrentImageMimeType: (mimeType) => {\n            runtime.currentImageMimeType = mimeType;\n        },\n        getCurrentImageFilterConfig: () => cloneResolvedImageFilterConfig(runtime.currentImageFilterConfig),\n        resetImageFilterState: () => {\n            const next = cloneResolvedImageFilterConfig(DEFAULT_IMAGE_FILTER_CONFIG);\n            runtime.currentImageFilterConfig = next;\n            runtime.lastCommittedImageFilterConfig = cloneResolvedImageFilterConfig(next);\n            if (runtime.originalImage) {\n                applyImageFilterConfigToImage(runtime.fabricModule, runtime.originalImage, next, (error, message) => {\n                    callbacks.reportWarning(error, message);\n                });\n            }\n        },\n        restoreImageFilterConfig: (config) => {\n            const next = cloneResolvedImageFilterConfig(config !== null && config !== void 0 ? config : DEFAULT_IMAGE_FILTER_CONFIG);\n            runtime.currentImageFilterConfig = next;\n            runtime.lastCommittedImageFilterConfig = cloneResolvedImageFilterConfig(next);\n            if (runtime.originalImage) {\n                applyImageFilterConfigToImage(runtime.fabricModule, runtime.originalImage, next, (error, message) => {\n                    callbacks.reportWarning(error, message);\n                });\n            }\n        },\n        getLastSnapshot: () => runtime.lastSnapshot,\n        setLastSnapshot: (snapshot) => {\n            runtime.lastSnapshot = snapshot;\n        },\n        getCurrentScale: () => runtime.currentScale,\n        setCurrentScale: (scale) => {\n            runtime.currentScale = scale;\n        },\n        getCurrentRotation: () => runtime.currentRotation,\n        setCurrentRotation: (rotation) => {\n            runtime.currentRotation = rotation;\n        },\n        getBaseImageScale: () => runtime.baseImageScale,\n        setBaseImageScale: (scale) => {\n            runtime.baseImageScale = scale;\n        },\n        getMaskCounter: () => runtime.maskCounter,\n        setMaskCounter: (value) => {\n            runtime.maskCounter = value;\n        },\n        getLastMask: () => runtime.lastMask,\n        setLastMask: (mask) => {\n            runtime.lastMask = mask;\n        },\n        getAnnotationCounter: () => runtime.annotationCounter,\n        setAnnotationCounter: (value) => {\n            runtime.annotationCounter = value;\n        },\n        getTextConfig: () => runtime.currentTextConfig,\n        getDrawConfig: () => runtime.currentDrawConfig,\n        getEraserConfig: () => cloneResolvedEraserConfig(runtime.currentEraserConfig),\n        getShapeConfig: () => cloneResolvedShapeAnnotationConfig(runtime.currentShapeConfig),\n        getMosaicConfig: () => cloneResolvedMosaicConfig(runtime.currentMosaicConfig),\n        getTextSession: () => runtime.textSession,\n        setTextSession: (session) => {\n            runtime.textSession = session;\n        },\n        getDrawSession: () => runtime.drawSession,\n        setDrawSession: (session) => {\n            runtime.drawSession = session;\n        },\n        getShapeSession: () => runtime.shapeSession,\n        setShapeSession: (session) => {\n            runtime.shapeSession = session;\n        },\n        getMosaicSession: () => runtime.mosaicSession,\n        setMosaicSession: (session) => {\n            runtime.mosaicSession = session;\n        },\n        getCropSession: () => runtime.cropSession,\n        setCropSession: (session) => {\n            runtime.cropSession = session;\n        },\n        saveCanvasState: () => callbacks.saveCanvasState(),\n        saveCanvasStateWithAnimationBypass: () => callbacks.saveCanvasStateWithAnimationBypass(),\n        setSuppressSaveState: (suppress) => {\n            runtime.shouldSuppressSaveState = suppress;\n        },\n        withSelectionChangeSuppressed: async (callback) => {\n            const previous = runtime.shouldSuppressSelectionChange;\n            runtime.shouldSuppressSelectionChange = true;\n            try {\n                return await callback();\n            }\n            finally {\n                runtime.shouldSuppressSelectionChange = previous;\n            }\n        },\n        captureSnapshot: () => callbacks.captureSnapshot(),\n        loadImageForOperation: (operationToken, base64, providedOptions) => callbacks.loadImageForOperation(operationToken, base64, providedOptions),\n        loadMergedImage: (operationToken, base64, providedOptions) => callbacks.loadMergedImage(operationToken, base64, providedOptions),\n        loadFromStateForOperation: (operationToken, snapshot) => callbacks.loadFromStateForOperation(operationToken, snapshot),\n        setCanvasSize: (widthPx, heightPx) => {\n            callbacks.setCanvasSize(widthPx, heightPx);\n        },\n        updateCanvasSizeToImageBounds: () => callbacks.updateCanvasSizeToImageBounds(),\n        alignObjectBoundingBoxToCanvasTopLeft: (object) => {\n            callbacks.alignObjectBoundingBoxToCanvasTopLeft(object);\n        },\n        syncMaskLabel: (mask) => {\n            callbacks.syncMaskLabel(mask);\n        },\n        removeLabelForMask: (mask) => {\n            callbacks.removeLabelForMask(mask);\n        },\n        hideAllMaskLabels: () => {\n            callbacks.hideAllMaskLabels();\n        },\n        setPlaceholderVisible: (show) => {\n            setPlaceholderVisibleImpl(runtime.placeholderElement, runtime.containerElement, runtime.options.showPlaceholder ? show : false);\n        },\n        updateMaskList: () => callbacks.updateMaskList(),\n        updateAnnotationList: () => callbacks.updateAnnotationList(),\n        updateUi: () => callbacks.updateUi(),\n        updateInputs: () => callbacks.updateInputs(),\n        getMaskListElement: () => {\n            var _a;\n            return resolveDomElement(runtime.elements.maskList, (_a = runtime.canvasElement) === null || _a === void 0 ? void 0 : _a.ownerDocument);\n        },\n        handleMaskSelected: (mask) => callbacks.handleSelectionChanged([mask]),\n        getAnnotationListElement: () => {\n            var _a;\n            return resolveDomElement(runtime.elements.annotationList, (_a = runtime.canvasElement) === null || _a === void 0 ? void 0 : _a.ownerDocument);\n        },\n        handleAnnotationSelected: (annotation) => callbacks.handleSelectionChanged([annotation]),\n        getMasks: () => callbacks.getMasks(),\n        getAnnotations: () => callbacks.getAnnotations(),\n        emitImageChanged: (context) => {\n            callbacks.emitImageChanged(context);\n        },\n        emitAnnotationsChanged: (context) => {\n            callbacks.emitAnnotationsChanged(context);\n        },\n        emitBusyChangeIfChanged: (context) => {\n            callbacks.emitBusyChangeIfChanged(context);\n        },\n        buildCallbackContext: (operation, isInternalOperation) => callbacks.buildCallbackContext(operation, isInternalOperation),\n    });\n}\n//# sourceMappingURL=editor-context-factory-access.js.map","import { EditorActionAccessFactory } from './editor-action-access.js';\nimport { createEditorContextFactory } from './editor-context-factory-access.js';\nexport function createEditorRuntimeWiring(runtime, hooks) {\n    const contextFactory = createContextFactory(runtime, hooks);\n    return {\n        contextFactory,\n        actionAccessFactory: new EditorActionAccessFactory(runtime, createActionCallbacks(hooks), contextFactory),\n    };\n}\nfunction createContextFactory(runtime, hooks) {\n    return createEditorContextFactory(runtime, {\n        saveCanvasState: () => {\n            hooks.state.saveCanvasState();\n        },\n        saveCanvasStateWithAnimationBypass: () => {\n            hooks.state.saveCanvasState(hooks.operations.withAnimationQueueBypass());\n        },\n        captureSnapshot: () => hooks.state.captureSnapshot(),\n        loadImageForOperation: (operationToken, base64, providedOptions) => hooks.state.loadImage(base64, hooks.operations.withInternalOperationOptions(operationToken, providedOptions !== null && providedOptions !== void 0 ? providedOptions : {})),\n        loadMergedImage: async (operationToken, base64, providedOptions) => {\n            const geometry = hooks.display.captureImageDisplayGeometry();\n            try {\n                await hooks.state.loadImage(base64, hooks.operations.withInternalOperationOptions(operationToken, providedOptions !== null && providedOptions !== void 0 ? providedOptions : {}));\n            }\n            finally {\n                hooks.display.restoreMergedImageDisplayGeometry(geometry);\n            }\n        },\n        loadFromStateForOperation: (operationToken, snapshot) => hooks.state.loadFromState(snapshot, hooks.operations.withInternalOperationOptions(operationToken, hooks.operations.withAnimationQueueBypass())),\n        setCanvasSize: (widthPx, heightPx) => {\n            hooks.display.setCanvasSize(widthPx, heightPx);\n        },\n        updateCanvasSizeToImageBounds: () => hooks.display.updateCanvasSizeToImageBounds(),\n        alignObjectBoundingBoxToCanvasTopLeft: (object) => {\n            hooks.display.alignObjectBoundingBoxToCanvasTopLeft(object);\n        },\n        syncMaskLabel: (mask) => {\n            hooks.labels.syncMaskLabel(mask);\n        },\n        removeLabelForMask: (mask) => {\n            hooks.labels.removeLabelForMask(mask);\n        },\n        hideAllMaskLabels: () => {\n            hooks.labels.hideAllMaskLabels();\n        },\n        updateMaskList: () => {\n            hooks.ui.updateMaskList();\n        },\n        updateAnnotationList: () => {\n            hooks.ui.updateAnnotationList();\n        },\n        updateUi: () => {\n            hooks.ui.updateUi();\n        },\n        updateInputs: () => {\n            hooks.ui.updateInputs();\n        },\n        handleSelectionChanged: (selected) => {\n            hooks.selection.handleSelectionChanged(selected);\n        },\n        getMasks: () => hooks.selection.getMasks(),\n        getAnnotations: () => hooks.selection.getAnnotations(),\n        emitImageChanged: (context) => {\n            hooks.callbacks.emitImageChanged(context);\n        },\n        emitAnnotationsChanged: (context) => {\n            hooks.callbacks.emitAnnotationsChanged(context);\n        },\n        emitBusyChangeIfChanged: (context) => {\n            hooks.callbacks.emitBusyChangeIfChanged(context);\n        },\n        reportWarning: (error, message) => {\n            hooks.callbacks.reportWarning(error, message);\n        },\n        buildCallbackContext: (operation, isInternalOperation) => hooks.callbacks.buildCallbackContext(operation, isInternalOperation !== null && isInternalOperation !== void 0 ? isInternalOperation : false),\n    });\n}\nfunction createActionCallbacks(hooks) {\n    return {\n        canRunIdleOperation: (operation, options) => hooks.operations.canRunIdleOperation(operation, options),\n        assertIdleForOperation: (operation, options) => {\n            hooks.operations.assertIdleForOperation(operation, options);\n        },\n        assertCanQueueAnimation: (operation) => {\n            hooks.operations.assertCanQueueAnimation(operation);\n        },\n        finalizeActiveTextEditingIfNeeded: () => {\n            hooks.operations.finalizeActiveTextEditingIfNeeded();\n        },\n        buildCallbackContext: (operation, isInternalOperation) => hooks.callbacks.buildCallbackContext(operation, isInternalOperation),\n        withSelectionChangeContext: (context, callback) => hooks.operations.withSelectionChangeContext(context, callback),\n        buildSelection: (selected) => hooks.selection.buildSelection(selected),\n        getMasks: () => hooks.selection.getMasks(),\n        getAnnotations: () => hooks.selection.getAnnotations(),\n        getMaskCollectionSignature: () => hooks.selection.getMaskCollectionSignature(),\n        getAnnotationCollectionSignature: () => hooks.selection.getAnnotationCollectionSignature(),\n        inferCurrentImageMimeType: () => hooks.display.inferCurrentImageMimeType(),\n        shouldNormalizeCanvasSizeAfterStateRestore: () => hooks.display.shouldNormalizeCanvasSizeAfterStateRestore(),\n        updateCanvasSizeToImageBounds: (options) => {\n            hooks.display.updateCanvasSizeToImageBounds(options);\n        },\n        alignObjectBoundingBoxToCanvasTopLeft: (object) => {\n            hooks.display.alignObjectBoundingBoxToCanvasTopLeft(object);\n        },\n        settleFitCoverScrollbarsAfterStateRestore: () => {\n            hooks.display.settleFitCoverScrollbarsAfterStateRestore();\n        },\n        setCanvasSize: (widthPx, heightPx) => {\n            hooks.display.setCanvasSize(widthPx, heightPx);\n        },\n        refreshUiAfterQueuedAnimation: () => {\n            hooks.ui.refreshUiAfterQueuedAnimation();\n        },\n        updateInputs: () => {\n            hooks.ui.updateInputs();\n        },\n        updateMaskList: () => {\n            hooks.ui.updateMaskList();\n        },\n        updateMaskListSelection: (mask) => {\n            hooks.ui.updateMaskListSelection(mask);\n        },\n        updateAnnotationList: () => {\n            hooks.ui.updateAnnotationList();\n        },\n        updateAnnotationListSelection: (annotation) => {\n            hooks.ui.updateAnnotationListSelection(annotation);\n        },\n        updateUi: () => {\n            hooks.ui.updateUi();\n        },\n        saveState: () => {\n            hooks.state.saveCanvasState();\n        },\n        removeLabelForMask: (mask) => {\n            hooks.labels.removeLabelForMask(mask);\n        },\n        showLabelForMask: (mask) => {\n            hooks.labels.showLabelForMask(mask);\n        },\n        syncMaskLabel: (mask) => {\n            hooks.labels.syncMaskLabel(mask);\n        },\n        hideAllMaskLabels: () => {\n            hooks.labels.hideAllMaskLabels();\n        },\n        handleSelectionChanged: (selected) => {\n            hooks.selection.handleSelectionChanged(selected);\n        },\n        updateSelectedAnnotation: (config) => {\n            hooks.config.updateSelectedAnnotation(config);\n        },\n        setTextColor: (color) => {\n            hooks.config.setTextColor(color);\n        },\n        setTextFontSize: (size) => {\n            hooks.config.setTextFontSize(size);\n        },\n        setDrawColor: (color) => {\n            hooks.config.setDrawColor(color);\n        },\n        setDrawBrushSize: (size) => {\n            hooks.config.setDrawBrushSize(size);\n        },\n        emitImageCleared: (image, context) => {\n            hooks.callbacks.emitImageCleared(image, context);\n        },\n        emitSelectionChange: (selection, context) => {\n            hooks.callbacks.emitSelectionChange(selection, context);\n        },\n        emitMasksChanged: (context) => {\n            hooks.callbacks.emitMasksChanged(context);\n        },\n        emitAnnotationsChanged: (context) => {\n            hooks.callbacks.emitAnnotationsChanged(context);\n        },\n        emitImageChanged: (context) => {\n            hooks.callbacks.emitImageChanged(context);\n        },\n        emitBusyChangeIfChanged: (context) => {\n            hooks.callbacks.emitBusyChangeIfChanged(context);\n        },\n        reportWarning: (error, message) => {\n            hooks.callbacks.reportWarning(error, message);\n        },\n        withAnimationQueueBypass: () => hooks.operations.withAnimationQueueBypass(),\n    };\n}\n//# sourceMappingURL=editor-facade-wiring.js.map","export class AnimationQueue {\n    constructor() {\n        Object.defineProperty(this, \"queue\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: []\n        });\n        Object.defineProperty(this, \"running\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: false\n        });\n    }\n    add(animationFn) {\n        return new Promise((resolve, reject) => {\n            this.queue.push({ run: animationFn, resolve, reject });\n            if (!this.running) {\n                void this.drainQueue();\n            }\n        });\n    }\n    clear(reason) {\n        const pending = this.queue;\n        this.queue = [];\n        if (reason !== undefined) {\n            for (const entry of pending) {\n                entry.reject(reason);\n            }\n        }\n        else {\n            for (const entry of pending) {\n                entry.resolve();\n            }\n        }\n    }\n    isRunning() {\n        return this.running;\n    }\n    isBusy() {\n        return this.running || this.queue.length > 0;\n    }\n    waitForIdle() {\n        if (!this.running && this.queue.length === 0) {\n            return Promise.resolve();\n        }\n        return this.add(() => Promise.resolve()).then(() => undefined, () => undefined);\n    }\n    async drainQueue() {\n        if (this.running)\n            return;\n        this.running = true;\n        try {\n            while (this.queue.length > 0) {\n                const entry = this.queue.shift();\n                try {\n                    await entry.run();\n                    entry.resolve();\n                }\n                catch (error) {\n                    entry.reject(error);\n                }\n            }\n        }\n        finally {\n            this.running = false;\n            if (this.queue.length > 0) {\n                void this.drainQueue();\n            }\n        }\n    }\n}\n//# sourceMappingURL=animation-queue.js.map","import { IdleGuardError } from './errors.js';\nexport class OperationGuard {\n    constructor() {\n        Object.defineProperty(this, \"isAnimationActive\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: false\n        });\n        Object.defineProperty(this, \"isDisposedFlag\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: false\n        });\n        Object.defineProperty(this, \"isLoadingActive\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: false\n        });\n        Object.defineProperty(this, \"currentOperationName\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: null\n        });\n        Object.defineProperty(this, \"currentOperationToken\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: null\n        });\n        Object.defineProperty(this, \"animationAborters\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: new Set()\n        });\n    }\n    isAnimating() {\n        return this.isAnimationActive;\n    }\n    isDisposed() {\n        return this.isDisposedFlag;\n    }\n    isLoading() {\n        return this.isLoadingActive;\n    }\n    activeOperationName() {\n        return this.currentOperationName;\n    }\n    isBusy() {\n        return (this.isAnimationActive || this.isLoadingActive || this.currentOperationToken !== null);\n    }\n    beginAnimation() {\n        this.isAnimationActive = true;\n    }\n    endAnimation() {\n        this.isAnimationActive = false;\n    }\n    markDisposed() {\n        this.isDisposedFlag = true;\n        this.isAnimationActive = false;\n        this.isLoadingActive = false;\n        this.currentOperationName = null;\n        this.currentOperationToken = null;\n        for (const abort of this.animationAborters) {\n            try {\n                abort();\n            }\n            catch {\n            }\n        }\n        this.animationAborters.clear();\n    }\n    registerAnimationAborter(abort) {\n        if (this.isDisposedFlag) {\n            try {\n                abort();\n            }\n            catch {\n            }\n            return () => undefined;\n        }\n        this.animationAborters.add(abort);\n        return () => {\n            this.animationAborters.delete(abort);\n        };\n    }\n    beginLoading() {\n        this.isLoadingActive = true;\n    }\n    endLoading() {\n        this.isLoadingActive = false;\n    }\n    beginBusyOperation(operationName) {\n        var _a;\n        if (this.currentOperationToken !== null) {\n            throw new IdleGuardError(operationName, `while ${(_a = this.currentOperationName) !== null && _a !== void 0 ? _a : 'another operation'} is running`);\n        }\n        const token = Symbol(operationName);\n        this.currentOperationName = operationName;\n        this.currentOperationToken = token;\n        return token;\n    }\n    endBusyOperation(token) {\n        if (token && token === this.currentOperationToken) {\n            this.currentOperationName = null;\n            this.currentOperationToken = null;\n        }\n    }\n    isOwnOperation(token) {\n        return !!token && token === this.currentOperationToken;\n    }\n    async runAnimation(animationTask) {\n        this.beginAnimation();\n        try {\n            return await animationTask();\n        }\n        finally {\n            this.endAnimation();\n        }\n    }\n    assertNotAnimating(operationLabel) {\n        if (this.isAnimationActive) {\n            throw new IdleGuardError(operationLabel, 'while an animation is in progress');\n        }\n    }\n    assertIdleForOperation(operationLabel, token) {\n        var _a;\n        if (this.isDisposedFlag) {\n            throw new IdleGuardError(operationLabel, 'after dispose');\n        }\n        const ownOperation = this.isOwnOperation(token);\n        if (this.isAnimationActive) {\n            throw new IdleGuardError(operationLabel, 'while an animation is in progress');\n        }\n        if (this.isLoadingActive && !ownOperation) {\n            throw new IdleGuardError(operationLabel, 'while an image is loading');\n        }\n        if (this.currentOperationToken && !ownOperation) {\n            throw new IdleGuardError(operationLabel, `while ${(_a = this.currentOperationName) !== null && _a !== void 0 ? _a : 'another operation'} is running`);\n        }\n    }\n    assertCanQueueAnimation(operationLabel, token) {\n        var _a;\n        if (this.isDisposedFlag) {\n            throw new IdleGuardError(operationLabel, 'after dispose');\n        }\n        const ownOperation = this.isOwnOperation(token);\n        if (this.isLoadingActive && !ownOperation) {\n            throw new IdleGuardError(operationLabel, 'while an image is loading');\n        }\n        if (this.currentOperationToken && !ownOperation) {\n            throw new IdleGuardError(operationLabel, `while ${(_a = this.currentOperationName) !== null && _a !== void 0 ? _a : 'another operation'} is running`);\n        }\n    }\n}\n//# sourceMappingURL=operation-guard.js.map","import { AnimationQueue } from '../animation/animation-queue.js';\nimport { cloneResolvedDrawConfig, cloneResolvedEraserConfig, cloneResolvedMosaicConfig, cloneResolvedShapeAnnotationConfig, cloneResolvedTextAnnotationConfig, } from '../core/default-options.js';\nimport { cloneResolvedImageFilterConfig, DEFAULT_IMAGE_FILTER_CONFIG, } from '../core/image-filter-config.js';\nimport { OperationGuard } from '../core/operation-guard.js';\nimport { isBaseImageObject } from '../core/public-types.js';\nimport { HistoryManager } from '../history/history-manager.js';\nimport { ViewportCache } from '../image/layout-manager.js';\nexport class EditorRuntime {\n    constructor(fabricModule, isFabricLoaded, options) {\n        Object.defineProperty(this, \"fabricModule\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        Object.defineProperty(this, \"isFabricLoaded\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        Object.defineProperty(this, \"options\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        Object.defineProperty(this, \"currentLayoutMode\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        Object.defineProperty(this, \"defaultMosaicConfig\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        Object.defineProperty(this, \"currentMosaicConfig\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        Object.defineProperty(this, \"defaultTextConfig\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        Object.defineProperty(this, \"currentTextConfig\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        Object.defineProperty(this, \"defaultDrawConfig\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        Object.defineProperty(this, \"currentDrawConfig\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        Object.defineProperty(this, \"defaultEraserConfig\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        Object.defineProperty(this, \"currentEraserConfig\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        Object.defineProperty(this, \"defaultShapeConfig\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        Object.defineProperty(this, \"currentShapeConfig\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        Object.defineProperty(this, \"canvas\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: null\n        });\n        Object.defineProperty(this, \"canvasElement\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: null\n        });\n        Object.defineProperty(this, \"containerElement\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: null\n        });\n        Object.defineProperty(this, \"placeholderElement\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: null\n        });\n        Object.defineProperty(this, \"elements\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: {}\n        });\n        Object.defineProperty(this, \"elementOriginalDisabledMap\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: new Map()\n        });\n        Object.defineProperty(this, \"elementOriginalAriaDisabledMap\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: new Map()\n        });\n        Object.defineProperty(this, \"elementOriginalPointerEventsMap\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: new Map()\n        });\n        Object.defineProperty(this, \"originalImage\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: null\n        });\n        Object.defineProperty(this, \"baseImageScale\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: 1\n        });\n        Object.defineProperty(this, \"currentScale\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: 1\n        });\n        Object.defineProperty(this, \"currentRotation\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: 0\n        });\n        Object.defineProperty(this, \"isImageLoadedToCanvas\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: false\n        });\n        Object.defineProperty(this, \"currentImageMimeType\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: null\n        });\n        Object.defineProperty(this, \"currentImageFilterConfig\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        Object.defineProperty(this, \"lastCommittedImageFilterConfig\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        Object.defineProperty(this, \"maskCounter\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: 0\n        });\n        Object.defineProperty(this, \"lastMask\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: null\n        });\n        Object.defineProperty(this, \"annotationCounter\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: 0\n        });\n        Object.defineProperty(this, \"lastSnapshot\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: null\n        });\n        Object.defineProperty(this, \"historyManager\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        Object.defineProperty(this, \"operationGuard\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: new OperationGuard()\n        });\n        Object.defineProperty(this, \"animQueue\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: new AnimationQueue()\n        });\n        Object.defineProperty(this, \"transformController\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: null\n        });\n        Object.defineProperty(this, \"viewportCache\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: new ViewportCache()\n        });\n        Object.defineProperty(this, \"cropSession\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: null\n        });\n        Object.defineProperty(this, \"mosaicSession\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: null\n        });\n        Object.defineProperty(this, \"textSession\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: null\n        });\n        Object.defineProperty(this, \"drawSession\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: null\n        });\n        Object.defineProperty(this, \"shapeSession\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: null\n        });\n        Object.defineProperty(this, \"domBindings\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: null\n        });\n        Object.defineProperty(this, \"keyboardDocument\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: null\n        });\n        Object.defineProperty(this, \"keyboardHandler\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: null\n        });\n        Object.defineProperty(this, \"isDisposed\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: false\n        });\n        Object.defineProperty(this, \"shouldSuppressSaveState\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: false\n        });\n        Object.defineProperty(this, \"shouldSuppressSelectionChange\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: false\n        });\n        Object.defineProperty(this, \"lastEmittedIsBusy\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: null\n        });\n        Object.defineProperty(this, \"lastEmittedToolMode\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: null\n        });\n        Object.defineProperty(this, \"lastEmittedHistoryState\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        Object.defineProperty(this, \"activeStateRestoreOperation\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: null\n        });\n        Object.defineProperty(this, \"nextSelectionChangeContext\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: null\n        });\n        this.fabricModule = fabricModule;\n        this.isFabricLoaded = isFabricLoaded;\n        this.options = options;\n        this.currentLayoutMode = options.layoutMode;\n        this.defaultMosaicConfig = options.defaultMosaicConfig;\n        this.currentMosaicConfig = cloneResolvedMosaicConfig(this.defaultMosaicConfig);\n        this.defaultTextConfig = options.defaultTextConfig;\n        this.currentTextConfig = cloneResolvedTextAnnotationConfig(this.defaultTextConfig);\n        this.defaultDrawConfig = options.defaultDrawConfig;\n        this.currentDrawConfig = cloneResolvedDrawConfig(this.defaultDrawConfig);\n        this.defaultEraserConfig = options.defaultEraserConfig;\n        this.currentEraserConfig = cloneResolvedEraserConfig(this.defaultEraserConfig);\n        this.defaultShapeConfig = options.defaultShapeConfig;\n        this.currentShapeConfig = cloneResolvedShapeAnnotationConfig(this.defaultShapeConfig);\n        this.currentImageFilterConfig = cloneResolvedImageFilterConfig(DEFAULT_IMAGE_FILTER_CONFIG);\n        this.lastCommittedImageFilterConfig = cloneResolvedImageFilterConfig(DEFAULT_IMAGE_FILTER_CONFIG);\n        this.historyManager = new HistoryManager(options.maxHistorySize);\n        this.lastEmittedHistoryState = {\n            canUndo: this.historyManager.canUndo(),\n            canRedo: this.historyManager.canRedo(),\n        };\n    }\n    getRuntimeOptions() {\n        if (this.currentLayoutMode === this.options.layoutMode)\n            return this.options;\n        return Object.freeze({\n            ...this.options,\n            layoutMode: this.currentLayoutMode,\n        });\n    }\n    getLiveCanvasOrThrow(operationName) {\n        if (this.isDisposed || !this.canvas) {\n            throw new Error(`[ImageEditor] Cannot run \"${operationName}\" after dispose.`);\n        }\n        return this.canvas;\n    }\n    isImageLoaded() {\n        return !!(this.originalImage &&\n            isBaseImageObject(this.originalImage) &&\n            Number(this.originalImage.width) > 0 &&\n            Number(this.originalImage.height) > 0);\n    }\n    isBusy(isToolModeActive = false) {\n        return this.operationGuard.isBusy() || this.animQueue.isBusy() || isToolModeActive;\n    }\n    resetAfterDispose() {\n        this.canvas = null;\n        this.canvasElement = null;\n        this.containerElement = null;\n        this.placeholderElement = null;\n        this.elements = {};\n        this.elementOriginalDisabledMap.clear();\n        this.elementOriginalAriaDisabledMap.clear();\n        this.elementOriginalPointerEventsMap.clear();\n        this.isImageLoadedToCanvas = false;\n        this.originalImage = null;\n        this.currentImageMimeType = null;\n        this.currentImageFilterConfig = cloneResolvedImageFilterConfig(DEFAULT_IMAGE_FILTER_CONFIG);\n        this.lastCommittedImageFilterConfig = cloneResolvedImageFilterConfig(DEFAULT_IMAGE_FILTER_CONFIG);\n        this.lastMask = null;\n        this.maskCounter = 0;\n        this.annotationCounter = 0;\n        this.currentScale = 1;\n        this.currentRotation = 0;\n        this.baseImageScale = 1;\n        this.lastSnapshot = null;\n        this.historyManager.clear();\n        this.transformController = null;\n        this.cropSession = null;\n        this.mosaicSession = null;\n        this.textSession = null;\n        this.drawSession = null;\n        this.shapeSession = null;\n        this.domBindings = null;\n        this.keyboardDocument = null;\n        this.keyboardHandler = null;\n        this.currentMosaicConfig = cloneResolvedMosaicConfig(this.defaultMosaicConfig);\n        this.currentTextConfig = cloneResolvedTextAnnotationConfig(this.defaultTextConfig);\n        this.currentDrawConfig = cloneResolvedDrawConfig(this.defaultDrawConfig);\n        this.currentEraserConfig = cloneResolvedEraserConfig(this.defaultEraserConfig);\n        this.currentShapeConfig = cloneResolvedShapeAnnotationConfig(this.defaultShapeConfig);\n        this.shouldSuppressSaveState = false;\n        this.shouldSuppressSelectionChange = false;\n        this.lastEmittedIsBusy = null;\n        this.lastEmittedToolMode = null;\n        this.lastEmittedHistoryState = { canUndo: false, canRedo: false };\n        this.activeStateRestoreOperation = null;\n        this.nextSelectionChangeContext = null;\n        this.viewportCache.clear();\n    }\n}\n//# sourceMappingURL=editor-runtime.js.map","import { isAnnotationLocked } from '../annotation/annotation-lock.js';\nimport { isAnnotationObject, isMaskObject, isTextAnnotationObject, } from '../core/public-types.js';\nimport { applyMaskSelectedStyle, applyMaskUnselectedStyle } from '../mask/mask-style.js';\nexport function handleSelectionChanged(access, selected) {\n    var _a, _b, _c;\n    const canvas = access.getCanvas();\n    if (!canvas)\n        return;\n    const selectedMask = (_a = selected.find(isMaskObject)) !== null && _a !== void 0 ? _a : null;\n    const selectedAnnotation = (_b = selected.find(isAnnotationObject)) !== null && _b !== void 0 ? _b : null;\n    const masks = canvas.getObjects().filter(isMaskObject);\n    masks.forEach((maskObject) => {\n        if (maskObject !== selectedMask) {\n            if (maskObject.labelObject) {\n                access.removeLabelForMask(maskObject);\n            }\n            applyMaskUnselectedStyle(maskObject);\n        }\n        else {\n            applyMaskSelectedStyle(maskObject);\n        }\n    });\n    if (selectedMask)\n        access.showLabelForMask(selectedMask);\n    access.updateMaskListSelection(selectedMask);\n    access.updateAnnotationListSelection(selectedAnnotation);\n    canvas.requestRenderAll();\n    access.updateUi();\n    if (access.shouldSuppressSelectionChange())\n        return;\n    const activeStateRestoreOperation = access.getActiveStateRestoreOperation();\n    const context = (_c = access.getNextSelectionChangeContext()) !== null && _c !== void 0 ? _c : access.buildCallbackContext(activeStateRestoreOperation !== null && activeStateRestoreOperation !== void 0 ? activeStateRestoreOperation : 'createMask', activeStateRestoreOperation === 'undo' || activeStateRestoreOperation === 'redo');\n    access.emitSelectionChange(access.buildSelection(selected), context);\n}\nexport function handleObjectMovingScalingRotating(access, target) {\n    if (isMaskObject(target)) {\n        access.syncMaskLabel(target);\n    }\n}\nexport function handleObjectModified(access, target) {\n    if (isMaskObject(target)) {\n        access.syncMaskLabel(target);\n        const context = access.buildCallbackContext('saveState', false);\n        access.saveState();\n        access.emitMasksChanged(context);\n        access.emitImageChanged(context);\n        return;\n    }\n    if (isAnnotationObject(target)) {\n        if (isAnnotationLocked(target))\n            return;\n        if (isTextAnnotationObject(target)) {\n            const textTarget = target;\n            if (textTarget.imageEditorTextEditingHandledChange === true) {\n                delete textTarget.imageEditorTextEditingHandledChange;\n                return;\n            }\n        }\n        const context = access.buildCallbackContext('updateAnnotation', false);\n        access.saveState();\n        access.emitAnnotationsChanged(context);\n        access.emitImageChanged(context);\n    }\n}\n//# sourceMappingURL=editor-selection-controller.js.map","import { removeAllAnnotations as removeAllAnnotationsImpl, removeAnnotationObjects, removeSelectedAnnotation as removeSelectedAnnotationImpl, updateAnnotation as updateAnnotationImpl, updateSelectedAnnotation as updateSelectedAnnotationImpl, } from '../annotation/annotation-manager.js';\nimport { isAnnotationUnlocked } from '../annotation/annotation-lock.js';\nimport { getEditableOverlayRange, normalizeLayerOrder } from '../core/layer-order.js';\nimport { isAnnotationObject, isEditableOverlayObject, isMaskObject, } from '../core/public-types.js';\nfunction getSelectedCanvasObjects(canvas) {\n    var _a, _b, _c;\n    const activeObject = canvas.getActiveObject();\n    if (!activeObject)\n        return [];\n    const type = typeof activeObject.type === 'string' ? activeObject.type.toLowerCase() : '';\n    const isActiveSelection = type === 'activeselection' ||\n        ((_c = (_b = (_a = activeObject).isType) === null || _b === void 0 ? void 0 : _b.call(_a, 'ActiveSelection')) !== null && _c !== void 0 ? _c : false);\n    if (!isActiveSelection)\n        return [activeObject];\n    const getObjects = activeObject.getObjects;\n    return typeof getObjects === 'function' ? getObjects.call(activeObject) : [];\n}\nexport function removeSelectedAnnotationAction(access, context) {\n    const before = access.getAnnotations().length;\n    access.withSelectionChangeContext(context, () => {\n        removeSelectedAnnotationImpl(access.buildAnnotationManagerContext());\n    });\n    access.updateAnnotationList();\n    access.updateUi();\n    if (access.getAnnotations().length !== before) {\n        access.emitAnnotationsChanged(context);\n        access.emitImageChanged(context);\n    }\n}\nexport function removeAllAnnotationsAction(access, options, context) {\n    const before = access.getAnnotations().length;\n    access.withSelectionChangeContext(context, () => {\n        removeAllAnnotationsImpl(access.buildAnnotationManagerContext(), options);\n    });\n    access.updateAnnotationList();\n    access.updateUi();\n    if (access.getAnnotations().length !== before) {\n        access.emitAnnotationsChanged(context);\n        access.emitImageChanged(context);\n    }\n}\nexport function updateAnnotationAction(access, annotationId, config, context) {\n    const changed = updateAnnotationImpl(access.buildAnnotationManagerContext(), annotationId, config);\n    if (changed) {\n        access.updateAnnotationList();\n        access.emitAnnotationsChanged(context);\n        access.emitImageChanged(context);\n    }\n}\nexport function updateSelectedAnnotationAction(access, config, context) {\n    const changed = updateSelectedAnnotationImpl(access.buildAnnotationManagerContext(), config);\n    if (changed) {\n        access.updateAnnotationList();\n        access.emitAnnotationsChanged(context);\n        access.emitImageChanged(context);\n    }\n}\nexport function deleteSelectedEditableObjects(access, context) {\n    const canvas = access.getCanvas();\n    if (!canvas)\n        return;\n    const selectedObjects = getSelectedCanvasObjects(canvas);\n    const selectedMasks = selectedObjects.filter(isMaskObject);\n    const selectedAnnotations = selectedObjects.filter((object) => isAnnotationObject(object) && isAnnotationUnlocked(object));\n    if (selectedMasks.length === 0 && selectedAnnotations.length === 0)\n        return;\n    const liveCanvas = access.getLiveCanvas('deleteSelectedObject');\n    access.withSelectionChangeContext(context, () => {\n        for (const mask of selectedMasks) {\n            access.removeLabelForMask(mask);\n            liveCanvas.remove(mask);\n        }\n        removeAnnotationObjects(access.buildAnnotationManagerContext(), selectedAnnotations, {\n            saveHistory: false,\n            force: true,\n        });\n        liveCanvas.discardActiveObject();\n        liveCanvas.renderAll();\n        access.saveState();\n    });\n    access.updateMaskList();\n    access.updateAnnotationList();\n    access.updateUi();\n    if (selectedMasks.length > 0)\n        access.emitMasksChanged(context);\n    if (selectedAnnotations.length > 0)\n        access.emitAnnotationsChanged(context);\n    access.emitImageChanged(context);\n}\nexport function moveSelectedEditableObject(access, operation) {\n    const canvas = access.getCanvas();\n    if (!canvas)\n        return;\n    const selected = getSelectedCanvasObjects(canvas).filter(isEditableOverlayObject);\n    if (selected.length !== 1) {\n        if (selected.length > 1) {\n            access.reportWarning(`${operation} skipped: ActiveSelection layer moves are not supported.`);\n        }\n        return;\n    }\n    const object = selected[0];\n    const range = getEditableOverlayRange(canvas);\n    const overlays = range.overlays;\n    const currentOverlayIndex = overlays.indexOf(object);\n    if (currentOverlayIndex < 0)\n        return;\n    let nextOverlayIndex = currentOverlayIndex;\n    if (operation === 'bringSelectedObjectForward') {\n        nextOverlayIndex = Math.min(overlays.length - 1, currentOverlayIndex + 1);\n    }\n    else if (operation === 'sendSelectedObjectBackward') {\n        nextOverlayIndex = Math.max(0, currentOverlayIndex - 1);\n    }\n    else if (operation === 'bringSelectedObjectToFront') {\n        nextOverlayIndex = overlays.length - 1;\n    }\n    else if (operation === 'sendSelectedObjectToBack') {\n        nextOverlayIndex = 0;\n    }\n    if (nextOverlayIndex === currentOverlayIndex)\n        return;\n    const reordered = overlays.slice();\n    reordered.splice(currentOverlayIndex, 1);\n    reordered.splice(nextOverlayIndex, 0, object);\n    reordered.forEach((overlay, index) => {\n        var _a, _b;\n        (_b = (_a = canvas).moveObjectTo) === null || _b === void 0 ? void 0 : _b.call(_a, overlay, range.start + index);\n    });\n    normalizeLayerOrder(canvas);\n    canvas.setActiveObject(object);\n    canvas.renderAll();\n    access.saveState();\n    access.updateMaskList();\n    access.updateAnnotationList();\n    if (isMaskObject(object)) {\n        access.updateMaskListSelection(object);\n    }\n    else if (isAnnotationObject(object)) {\n        access.updateAnnotationListSelection(object);\n    }\n    access.updateUi();\n    const context = access.buildCallbackContext(operation, false);\n    if (isMaskObject(object))\n        access.emitMasksChanged(context);\n    if (isAnnotationObject(object))\n        access.emitAnnotationsChanged(context);\n    access.emitImageChanged(context);\n}\n//# sourceMappingURL=editable-object-actions.js.map","export function normalizeRotationDegrees(rotation) {\n    const value = Number(rotation !== null && rotation !== void 0 ? rotation : 0);\n    if (!Number.isFinite(value))\n        return 0;\n    return ((value % 360) + 360) % 360;\n}\nexport function imageNormalizedToSourcePixel(point, imageInfo) {\n    return {\n        x: point.x * imageInfo.naturalWidth,\n        y: point.y * imageInfo.naturalHeight,\n    };\n}\nexport function sourcePixelToImageNormalized(point, imageInfo) {\n    return {\n        x: point.x / imageInfo.naturalWidth,\n        y: point.y / imageInfo.naturalHeight,\n    };\n}\nexport function applyBaseImageTransform(point, imageInfo, transform) {\n    const centerX = imageInfo.naturalWidth / 2;\n    const centerY = imageInfo.naturalHeight / 2;\n    let x = point.x - centerX;\n    let y = point.y - centerY;\n    if ((transform === null || transform === void 0 ? void 0 : transform.flipX) === true)\n        x = -x;\n    if ((transform === null || transform === void 0 ? void 0 : transform.flipY) === true)\n        y = -y;\n    const radians = (normalizeRotationDegrees(transform === null || transform === void 0 ? void 0 : transform.rotation) * Math.PI) / 180;\n    if (radians !== 0) {\n        const cos = Math.cos(radians);\n        const sin = Math.sin(radians);\n        const nextX = x * cos - y * sin;\n        const nextY = x * sin + y * cos;\n        x = nextX;\n        y = nextY;\n    }\n    return { x: centerX + x, y: centerY + y };\n}\nexport function unapplyBaseImageTransform(point, imageInfo, transform) {\n    const centerX = imageInfo.naturalWidth / 2;\n    const centerY = imageInfo.naturalHeight / 2;\n    let x = point.x - centerX;\n    let y = point.y - centerY;\n    const radians = (-normalizeRotationDegrees(transform === null || transform === void 0 ? void 0 : transform.rotation) * Math.PI) / 180;\n    if (radians !== 0) {\n        const cos = Math.cos(radians);\n        const sin = Math.sin(radians);\n        const nextX = x * cos - y * sin;\n        const nextY = x * sin + y * cos;\n        x = nextX;\n        y = nextY;\n    }\n    if ((transform === null || transform === void 0 ? void 0 : transform.flipY) === true)\n        y = -y;\n    if ((transform === null || transform === void 0 ? void 0 : transform.flipX) === true)\n        x = -x;\n    return { x: centerX + x, y: centerY + y };\n}\nexport function sourcePixelToCanvas(point, geometry) {\n    const transformed = applyBaseImageTransform(point, {\n        naturalWidth: geometry.naturalWidth,\n        naturalHeight: geometry.naturalHeight,\n    }, geometry.transform);\n    return {\n        x: geometry.canvasCenterX + (transformed.x - geometry.naturalWidth / 2) * geometry.scaleX,\n        y: geometry.canvasCenterY + (transformed.y - geometry.naturalHeight / 2) * geometry.scaleY,\n    };\n}\nexport function canvasToSourcePixel(point, geometry) {\n    const transformed = {\n        x: geometry.naturalWidth / 2 + (point.x - geometry.canvasCenterX) / geometry.scaleX,\n        y: geometry.naturalHeight / 2 + (point.y - geometry.canvasCenterY) / geometry.scaleY,\n    };\n    return unapplyBaseImageTransform(transformed, {\n        naturalWidth: geometry.naturalWidth,\n        naturalHeight: geometry.naturalHeight,\n    }, geometry.transform);\n}\nexport function getTransformedRectBounds(rect, imageInfo, transform) {\n    const corners = [\n        { x: rect.x, y: rect.y },\n        { x: rect.x + rect.width, y: rect.y },\n        { x: rect.x, y: rect.y + rect.height },\n        { x: rect.x + rect.width, y: rect.y + rect.height },\n    ].map((point) => applyBaseImageTransform(point, imageInfo, transform));\n    const xs = corners.map((point) => point.x);\n    const ys = corners.map((point) => point.y);\n    const left = Math.min(...xs);\n    const top = Math.min(...ys);\n    const right = Math.max(...xs);\n    const bottom = Math.max(...ys);\n    return {\n        x: left,\n        y: top,\n        width: right - left,\n        height: bottom - top,\n    };\n}\n//# sourceMappingURL=overlay-coordinate-transform.js.map","const HEX_SHORT = /^#([0-9a-f]{3}|[0-9a-f]{4})$/i;\nconst HEX_LONG = /^#([0-9a-f]{6}|[0-9a-f]{8})$/i;\nconst RGB_FUNCTION = /^rgba?\\((.+)\\)$/i;\nfunction toHexByte(value) {\n    return Math.max(0, Math.min(255, Math.round(value)))\n        .toString(16)\n        .padStart(2, '0')\n        .toUpperCase();\n}\nfunction normalizeHex(value) {\n    const trimmed = value.trim();\n    if (HEX_LONG.test(trimmed))\n        return `#${trimmed.slice(1).toUpperCase()}`;\n    if (!HEX_SHORT.test(trimmed))\n        return null;\n    const digits = trimmed.slice(1);\n    const expanded = digits\n        .split('')\n        .map((digit) => `${digit}${digit}`)\n        .join('')\n        .toUpperCase();\n    return `#${expanded}`;\n}\nfunction parseRgbChannel(value) {\n    const trimmed = value.trim();\n    if (trimmed.endsWith('%')) {\n        const percent = Number(trimmed.slice(0, -1));\n        if (!Number.isFinite(percent))\n            return null;\n        return Math.max(0, Math.min(100, percent)) * 2.55;\n    }\n    const numeric = Number(trimmed);\n    return Number.isFinite(numeric) ? numeric : null;\n}\nfunction parseAlpha(value) {\n    if (value === undefined)\n        return 1;\n    const trimmed = value.trim();\n    if (trimmed.endsWith('%')) {\n        const percent = Number(trimmed.slice(0, -1));\n        if (!Number.isFinite(percent))\n            return null;\n        return Math.max(0, Math.min(100, percent)) / 100;\n    }\n    const numeric = Number(trimmed);\n    return Number.isFinite(numeric) ? Math.max(0, Math.min(1, numeric)) : null;\n}\nfunction normalizeRgbFunction(value) {\n    const match = value.trim().match(RGB_FUNCTION);\n    if (!match)\n        return null;\n    const parts = match[1].split(',').map((part) => part.trim());\n    if (parts.length !== 3 && parts.length !== 4)\n        return null;\n    const r = parseRgbChannel(parts[0]);\n    const g = parseRgbChannel(parts[1]);\n    const b = parseRgbChannel(parts[2]);\n    const alpha = parseAlpha(parts[3]);\n    if (r === null || g === null || b === null || alpha === null)\n        return null;\n    const rgb = `${toHexByte(r)}${toHexByte(g)}${toHexByte(b)}`;\n    return alpha >= 1 ? `#${rgb}` : `#${rgb}${toHexByte(alpha * 255)}`;\n}\nexport function tryNormalizeOverlayColor(value) {\n    var _a;\n    if (typeof value !== 'string')\n        return null;\n    if (value.trim().toLowerCase() === 'transparent')\n        return '#00000000';\n    return (_a = normalizeHex(value)) !== null && _a !== void 0 ? _a : normalizeRgbFunction(value);\n}\nexport function normalizeOverlayColor(value, fallback) {\n    var _a;\n    return (_a = tryNormalizeOverlayColor(value)) !== null && _a !== void 0 ? _a : fallback;\n}\nexport function isCanonicalOverlayColor(value) {\n    return typeof value === 'string' && HEX_LONG.test(value);\n}\n//# sourceMappingURL=overlay-color.js.map","export const DEFAULT_METADATA_DEPTH = 4;\nexport const DEFAULT_METADATA_BYTES = 65536;\nconst METADATA_NAMESPACE = /^(core|app|plugin)\\.[A-Za-z0-9_-]+(?:\\.[A-Za-z0-9_-]+)*$/;\nfunction getUtf8ByteLength(value) {\n    if (typeof TextEncoder === 'function')\n        return new TextEncoder().encode(value).byteLength;\n    return value.length;\n}\nfunction metadataLimit(value, fallback) {\n    return Number.isFinite(value) && Number(value) > 0 ? Math.floor(Number(value)) : fallback;\n}\nfunction addError(errors, path, code, message) {\n    errors.push({ path, code, message });\n}\nfunction cloneJsonValue(input, path, depth, maxDepth, seen, errors) {\n    if (input === null ||\n        typeof input === 'string' ||\n        typeof input === 'number' ||\n        typeof input === 'boolean') {\n        if (typeof input === 'number' && !Number.isFinite(input)) {\n            addError(errors, path, 'metadata.invalidNumber', 'Metadata numbers must be finite.');\n            return undefined;\n        }\n        return input;\n    }\n    if (input === undefined || typeof input === 'function' || typeof input === 'symbol') {\n        addError(errors, path, 'metadata.invalidValue', 'Metadata must be JSON-compatible.');\n        return undefined;\n    }\n    if (typeof input === 'bigint') {\n        addError(errors, path, 'metadata.invalidBigInt', 'Metadata must not contain bigint.');\n        return undefined;\n    }\n    if (!input || typeof input !== 'object')\n        return input;\n    if (seen.has(input)) {\n        addError(errors, path, 'metadata.cyclic', 'Metadata must not contain cyclic references.');\n        return undefined;\n    }\n    if (depth > maxDepth) {\n        addError(errors, path, 'metadata.maxDepth', `Metadata exceeds max depth ${maxDepth}.`);\n        return undefined;\n    }\n    seen.add(input);\n    if (Array.isArray(input)) {\n        const output = input.map((entry, index) => cloneJsonValue(entry, `${path}[${index}]`, depth + 1, maxDepth, seen, errors));\n        seen.delete(input);\n        return output;\n    }\n    const output = {};\n    for (const [key, value] of Object.entries(input)) {\n        if (key === '__proto__' || key === 'constructor' || key === 'prototype')\n            continue;\n        output[key] = cloneJsonValue(value, `${path}.${key}`, depth + 1, maxDepth, seen, errors);\n    }\n    seen.delete(input);\n    return output;\n}\nexport function validateOverlayMetadata(input, path, options = {}) {\n    const errors = [];\n    const warnings = [];\n    if (input === undefined)\n        return { errors, warnings };\n    if (!input || typeof input !== 'object' || Array.isArray(input)) {\n        addError(errors, path, 'metadata.invalidRoot', 'Metadata must be an object.');\n        return { errors, warnings };\n    }\n    const maxDepth = metadataLimit(options.maxMetadataDepth, DEFAULT_METADATA_DEPTH);\n    const maxBytes = metadataLimit(options.maxMetadataBytes, DEFAULT_METADATA_BYTES);\n    const output = {};\n    for (const [namespace, namespaceValue] of Object.entries(input)) {\n        const namespacePath = `${path}.${namespace}`;\n        if (!METADATA_NAMESPACE.test(namespace)) {\n            addError(errors, namespacePath, 'metadata.invalidNamespace', `Metadata namespace \"${namespace}\" is not valid.`);\n            continue;\n        }\n        if (!namespaceValue ||\n            typeof namespaceValue !== 'object' ||\n            Array.isArray(namespaceValue)) {\n            addError(errors, namespacePath, 'metadata.invalidNamespaceValue', 'Metadata namespace values must be objects.');\n            continue;\n        }\n        const cloned = cloneJsonValue(namespaceValue, namespacePath, 1, maxDepth, new WeakSet(), errors);\n        if (cloned && typeof cloned === 'object' && !Array.isArray(cloned)) {\n            output[namespace] = cloned;\n        }\n    }\n    if (errors.length === 0) {\n        const bytes = getUtf8ByteLength(JSON.stringify(output));\n        if (bytes > maxBytes) {\n            addError(errors, path, 'metadata.maxBytes', `Metadata size ${bytes} bytes exceeds maxMetadataBytes ${maxBytes}.`);\n        }\n    }\n    return {\n        value: errors.length === 0 ? output : undefined,\n        errors,\n        warnings,\n    };\n}\nexport function cloneOverlayMetadata(metadata) {\n    if (!metadata)\n        return undefined;\n    return JSON.parse(JSON.stringify(metadata));\n}\n//# sourceMappingURL=overlay-metadata.js.map","import { canvasToSourcePixel, normalizeRotationDegrees, sourcePixelToImageNormalized, } from './overlay-coordinate-transform.js';\nimport { getPathPoints } from '../annotation/path-segments.js';\nimport { normalizeOverlayColor } from './overlay-color.js';\nimport { cloneOverlayMetadata } from './overlay-metadata.js';\nimport { isAnnotationObject, isDrawAnnotationObject, isEditableOverlayObject, isMaskObject, isShapeAnnotationObject, isTextAnnotationObject, } from '../core/public-types.js';\nfunction finiteNumber(value, fallback = 0) {\n    return typeof value === 'number' && Number.isFinite(value) ? value : fallback;\n}\nfunction clamp01(value) {\n    if (!Number.isFinite(value))\n        return 0;\n    return Math.max(0, Math.min(1, value));\n}\nfunction normalizedPoint(point, geometry) {\n    const source = canvasToSourcePixel(point, geometry);\n    const normalized = sourcePixelToImageNormalized(source, {\n        naturalWidth: geometry.naturalWidth,\n        naturalHeight: geometry.naturalHeight,\n    });\n    return { x: clamp01(normalized.x), y: clamp01(normalized.y) };\n}\nfunction normalizedCanvasLengthX(length, geometry) {\n    return clamp01(Math.abs(length / geometry.scaleX / geometry.naturalWidth));\n}\nfunction normalizedCanvasLengthY(length, geometry) {\n    return clamp01(Math.abs(length / geometry.scaleY / geometry.naturalHeight));\n}\nfunction getObjectCenter(object) {\n    var _a;\n    const center = (_a = object.getCenterPoint) === null || _a === void 0 ? void 0 : _a.call(object);\n    if (center)\n        return { x: center.x, y: center.y };\n    return {\n        x: finiteNumber(object.left) + finiteNumber(object.width) / 2,\n        y: finiteNumber(object.top) + finiteNumber(object.height) / 2,\n    };\n}\nexport function createCurrentImageGeometry(image, currentRotation) {\n    const center = getObjectCenter(image);\n    return {\n        naturalWidth: Math.max(1, finiteNumber(image.width, 1)),\n        naturalHeight: Math.max(1, finiteNumber(image.height, 1)),\n        canvasCenterX: center.x,\n        canvasCenterY: center.y,\n        scaleX: Math.max(0.000001, Math.abs(finiteNumber(image.scaleX, 1))),\n        scaleY: Math.max(0.000001, Math.abs(finiteNumber(image.scaleY, 1))),\n        transform: {\n            rotation: normalizeRotationDegrees(currentRotation),\n            flipX: image.flipX === true,\n            flipY: image.flipY === true,\n        },\n    };\n}\nfunction getBaseImageTransform(image, currentRotation) {\n    const rotation = normalizeRotationDegrees(currentRotation);\n    const flipX = image.flipX === true;\n    const flipY = image.flipY === true;\n    if (rotation === 0 && !flipX && !flipY)\n        return undefined;\n    return {\n        ...(rotation !== 0 ? { rotation } : {}),\n        ...(flipX ? { flipX } : {}),\n        ...(flipY ? { flipY } : {}),\n    };\n}\nfunction getImageInfo(image, mimeType) {\n    return {\n        naturalWidth: Math.max(1, finiteNumber(image.width, 1)),\n        naturalHeight: Math.max(1, finiteNumber(image.height, 1)),\n        ...(mimeType ? { mimeType } : {}),\n        orientation: 1,\n    };\n}\nfunction getPersistentId(object) {\n    const persistent = object.overlayPersistentId;\n    if (typeof persistent === 'string' && persistent.trim() !== '')\n        return persistent;\n    if (isMaskObject(object))\n        return object.maskUid || `mask-${object.maskId}`;\n    return `annotation-${object.annotationId}`;\n}\nfunction getPersistentMetadata(object, includeMetadata) {\n    if (!includeMetadata)\n        return undefined;\n    const metadata = object.overlayMetadata;\n    if (!metadata || typeof metadata !== 'object' || Array.isArray(metadata))\n        return undefined;\n    return cloneOverlayMetadata(metadata);\n}\nfunction isHidden(object) {\n    if (isAnnotationObject(object) && object.annotationHidden === true)\n        return true;\n    return object.visible === false;\n}\nfunction isLocked(object) {\n    return isAnnotationObject(object) && object.annotationLocked === true;\n}\nfunction overlayBase(object, options) {\n    const hidden = isHidden(object);\n    const metadata = getPersistentMetadata(object, options.includeMetadata);\n    return {\n        id: getPersistentId(object),\n        ...(hidden ? { hidden: true } : {}),\n        ...(metadata ? { metadata } : {}),\n    };\n}\nfunction localOverlayAngle(object, geometry) {\n    var _a;\n    const objectAngle = finiteNumber(object.angle);\n    const baseRotation = normalizeRotationDegrees((_a = geometry.transform) === null || _a === void 0 ? void 0 : _a.rotation);\n    const local = objectAngle - baseRotation;\n    return Math.abs(local) < 0.000001 ? 0 : local;\n}\nfunction applyOptionalAngle(output, object, geometry) {\n    const angle = localOverlayAngle(object, geometry);\n    const target = output;\n    if (angle !== 0)\n        target.angle = angle;\n    return target;\n}\nfunction exportMask(mask, geometry, options) {\n    var _a, _b;\n    const type = String((_a = mask.type) !== null && _a !== void 0 ? _a : '').toLowerCase();\n    const base = overlayBase(mask, options);\n    const fill = normalizeOverlayColor(mask.fill, '#000000');\n    const alpha = clamp01(finiteNumber(mask.originalAlpha, finiteNumber(mask.opacity, 0.5)));\n    const strokeSource = mask.originalStroke !== undefined ? mask.originalStroke : mask.stroke;\n    const stroke = strokeSource === null\n        ? null\n        : strokeSource === undefined\n            ? undefined\n            : normalizeOverlayColor(strokeSource, '#000000');\n    const strokeWidth = finiteNumber(mask.originalStrokeWidth, finiteNumber(mask.strokeWidth, 1));\n    const style = {\n        fill,\n        alpha,\n        ...(stroke !== undefined ? { stroke } : {}),\n        strokeWidth,\n        ...(Array.isArray(mask.strokeDashArray)\n            ? { strokeDashArray: mask.strokeDashArray.map((entry) => finiteNumber(entry)) }\n            : {}),\n        ...(typeof mask.selectable === 'boolean' ? { selectable: mask.selectable } : {}),\n        ...(typeof mask.evented === 'boolean' ? { evented: mask.evented } : {}),\n        ...(typeof mask.hasControls === 'boolean' ? { hasControls: mask.hasControls } : {}),\n    };\n    if (type === 'rect') {\n        const point = normalizedPoint({ x: finiteNumber(mask.left), y: finiteNumber(mask.top) }, geometry);\n        return {\n            kind: 'mask',\n            ...base,\n            maskShape: 'rect',\n            geometry: applyOptionalAngle({\n                type: 'rect',\n                x: point.x,\n                y: point.y,\n                width: normalizedCanvasLengthX(finiteNumber(mask.width) * finiteNumber(mask.scaleX, 1), geometry),\n                height: normalizedCanvasLengthY(finiteNumber(mask.height) * finiteNumber(mask.scaleY, 1), geometry),\n                ...(finiteNumber(mask.rx) > 0\n                    ? {\n                        rx: normalizedCanvasLengthX(finiteNumber(mask.rx), geometry),\n                    }\n                    : {}),\n                ...(finiteNumber(mask.ry) > 0\n                    ? {\n                        ry: normalizedCanvasLengthY(finiteNumber(mask.ry), geometry),\n                    }\n                    : {}),\n            }, mask, geometry),\n            style,\n        };\n    }\n    if (type === 'circle') {\n        const radius = finiteNumber(mask.radius) * finiteNumber(mask.scaleX, 1);\n        const center = normalizedPoint({\n            x: finiteNumber(mask.left) + radius,\n            y: finiteNumber(mask.top) + radius,\n        }, geometry);\n        return {\n            kind: 'mask',\n            ...base,\n            maskShape: 'circle',\n            geometry: applyOptionalAngle({\n                type: 'circle',\n                cx: center.x,\n                cy: center.y,\n                radius: normalizedCanvasLengthX(radius, geometry),\n            }, mask, geometry),\n            style,\n        };\n    }\n    if (type === 'ellipse') {\n        const rx = finiteNumber(mask.rx) * finiteNumber(mask.scaleX, 1);\n        const ry = finiteNumber(mask.ry) * finiteNumber(mask.scaleY, 1);\n        const center = normalizedPoint({\n            x: finiteNumber(mask.left) + rx,\n            y: finiteNumber(mask.top) + ry,\n        }, geometry);\n        return {\n            kind: 'mask',\n            ...base,\n            maskShape: 'ellipse',\n            geometry: applyOptionalAngle({\n                type: 'ellipse',\n                cx: center.x,\n                cy: center.y,\n                rx: normalizedCanvasLengthX(rx, geometry),\n                ry: normalizedCanvasLengthY(ry, geometry),\n            }, mask, geometry),\n            style,\n        };\n    }\n    if (type === 'polygon' && Array.isArray(mask.points)) {\n        const points = ((_b = mask.points) !== null && _b !== void 0 ? _b : []).map((point) => normalizedPoint({\n            x: finiteNumber(mask.left) + finiteNumber(point.x),\n            y: finiteNumber(mask.top) + finiteNumber(point.y),\n        }, geometry));\n        return {\n            kind: 'mask',\n            ...base,\n            maskShape: 'polygon',\n            geometry: applyOptionalAngle({ type: 'polygon', points }, mask, geometry),\n            style,\n        };\n    }\n    return null;\n}\nfunction transformPathPoint(annotation, point) {\n    var _a, _b;\n    const pathLike = annotation;\n    const offset = (_a = pathLike.pathOffset) !== null && _a !== void 0 ? _a : { x: 0, y: 0 };\n    const x = point.x - finiteNumber(offset.x);\n    const y = point.y - finiteNumber(offset.y);\n    const matrix = (_b = pathLike.calcTransformMatrix) === null || _b === void 0 ? void 0 : _b.call(pathLike);\n    if (!Array.isArray(matrix) || matrix.length < 6) {\n        return {\n            x: finiteNumber(annotation.left) + point.x,\n            y: finiteNumber(annotation.top) + point.y,\n        };\n    }\n    const [a = 1, b = 0, c = 0, d = 1, e = 0, f = 0] = matrix;\n    return {\n        x: a * x + c * y + e,\n        y: b * x + d * y + f,\n    };\n}\nfunction extractPathPoints(annotation) {\n    const pathData = annotation.path;\n    return getPathPoints(pathData, (point) => transformPathPoint(annotation, point));\n}\nfunction exportTextAnnotation(annotation, geometry, options) {\n    var _a;\n    const text = annotation;\n    const point = normalizedPoint({ x: finiteNumber(annotation.left), y: finiteNumber(annotation.top) }, geometry);\n    const angle = localOverlayAngle(annotation, geometry);\n    const width = finiteNumber(annotation.width) * finiteNumber(annotation.scaleX, 1);\n    return {\n        kind: 'annotation',\n        annotationType: 'text',\n        ...overlayBase(annotation, options),\n        geometry: {\n            x: point.x,\n            y: point.y,\n            ...(width > 0 ? { width: normalizedCanvasLengthX(width, geometry) } : {}),\n            ...(angle !== 0 ? { angle } : {}),\n        },\n        text: { value: String((_a = text.text) !== null && _a !== void 0 ? _a : '') },\n        style: {\n            ...(finiteNumber(text.fontSize) > 0 ? { fontSize: finiteNumber(text.fontSize) } : {}),\n            ...(typeof text.fontFamily === 'string' ? { fontFamily: text.fontFamily } : {}),\n            ...(typeof text.fontWeight === 'string' || typeof text.fontWeight === 'number'\n                ? { fontWeight: text.fontWeight }\n                : {}),\n            ...(text.fill !== undefined\n                ? { fill: normalizeOverlayColor(text.fill, '#000000') }\n                : {}),\n            ...(text.backgroundColor !== undefined\n                ? { backgroundColor: normalizeOverlayColor(text.backgroundColor, '#00000000') }\n                : {}),\n            ...(text.textAlign === 'left' ||\n                text.textAlign === 'center' ||\n                text.textAlign === 'right' ||\n                text.textAlign === 'justify'\n                ? { textAlign: text.textAlign }\n                : {}),\n            ...(finiteNumber(text.lineHeight) > 0\n                ? { lineHeight: finiteNumber(text.lineHeight) }\n                : {}),\n        },\n        ...(annotation.annotationLocked === true ? { locked: true } : {}),\n    };\n}\nfunction exportShapeAnnotation(annotation, geometry, options) {\n    const baseStyle = {\n        ...(annotation.stroke !== undefined\n            ? { stroke: normalizeOverlayColor(annotation.stroke, '#000000') }\n            : {}),\n        ...(finiteNumber(annotation.strokeWidth) >= 0\n            ? { strokeWidth: finiteNumber(annotation.strokeWidth) }\n            : {}),\n        ...(annotation.fill !== undefined\n            ? { fill: normalizeOverlayColor(annotation.fill, '#00000000') }\n            : {}),\n        ...(finiteNumber(annotation.opacity, 1) !== 1\n            ? { opacity: clamp01(finiteNumber(annotation.opacity, 1)) }\n            : {}),\n        ...(Array.isArray(annotation.strokeDashArray)\n            ? { strokeDashArray: annotation.strokeDashArray.map((entry) => finiteNumber(entry)) }\n            : {}),\n        ...(typeof annotation.selectable === 'boolean'\n            ? { selectable: annotation.selectable }\n            : {}),\n        ...(typeof annotation.evented === 'boolean' ? { evented: annotation.evented } : {}),\n    };\n    const shape = annotation.shapeAnnotationKind;\n    if (shape === 'rect') {\n        const point = normalizedPoint({ x: finiteNumber(annotation.left), y: finiteNumber(annotation.top) }, geometry);\n        const angle = localOverlayAngle(annotation, geometry);\n        return {\n            kind: 'annotation',\n            annotationType: 'shape',\n            ...overlayBase(annotation, options),\n            shape: 'rect',\n            geometry: {\n                type: 'rect',\n                x: point.x,\n                y: point.y,\n                width: normalizedCanvasLengthX(finiteNumber(annotation.width) * finiteNumber(annotation.scaleX, 1), geometry),\n                height: normalizedCanvasLengthY(finiteNumber(annotation.height) * finiteNumber(annotation.scaleY, 1), geometry),\n                ...(angle !== 0 ? { angle } : {}),\n            },\n            style: baseStyle,\n            ...(annotation.annotationLocked === true ? { locked: true } : {}),\n        };\n    }\n    const points = extractPathPoints(annotation);\n    if (points.length < 2)\n        return null;\n    const first = normalizedPoint(points[0], geometry);\n    const second = normalizedPoint(points[1], geometry);\n    if (shape === 'line') {\n        return {\n            kind: 'annotation',\n            annotationType: 'shape',\n            ...overlayBase(annotation, options),\n            shape: 'line',\n            geometry: { type: 'line', x1: first.x, y1: first.y, x2: second.x, y2: second.y },\n            style: baseStyle,\n            ...(annotation.annotationLocked === true ? { locked: true } : {}),\n        };\n    }\n    return {\n        kind: 'annotation',\n        annotationType: 'shape',\n        ...overlayBase(annotation, options),\n        shape: 'arrow',\n        geometry: { type: 'arrow', x1: first.x, y1: first.y, x2: second.x, y2: second.y },\n        style: baseStyle,\n        ...(annotation.annotationLocked === true ? { locked: true } : {}),\n    };\n}\nfunction exportDrawAnnotation(annotation, geometry, options) {\n    const points = extractPathPoints(annotation).map((point) => normalizedPoint(point, geometry));\n    return {\n        kind: 'annotation',\n        annotationType: 'draw',\n        ...overlayBase(annotation, options),\n        strokes: [\n            {\n                id: `${getPersistentId(annotation)}-stroke-1`,\n                points,\n                brush: {\n                    color: normalizeOverlayColor(annotation.stroke, '#000000'),\n                    width: finiteNumber(annotation.strokeWidth, 1),\n                    ...(finiteNumber(annotation.opacity, 1) !== 1\n                        ? { opacity: clamp01(finiteNumber(annotation.opacity, 1)) }\n                        : {}),\n                    lineCap: 'round',\n                    lineJoin: 'round',\n                },\n            },\n        ],\n        ...(annotation.annotationLocked === true ? { locked: true } : {}),\n    };\n}\nfunction exportAnnotation(annotation, geometry, options) {\n    if (isTextAnnotationObject(annotation)) {\n        return exportTextAnnotation(annotation, geometry, options);\n    }\n    if (isShapeAnnotationObject(annotation)) {\n        return exportShapeAnnotation(annotation, geometry, options);\n    }\n    if (isDrawAnnotationObject(annotation)) {\n        return exportDrawAnnotation(annotation, geometry, options);\n    }\n    return null;\n}\nexport function exportOverlayState(context, options = {}) {\n    const canvas = context.canvas;\n    const image = context.originalImage;\n    if (!canvas || !image) {\n        throw new Error('[ImageEditor] exportOverlayState requires a loaded image.');\n    }\n    const resolvedOptions = {\n        includeHidden: options.includeHidden !== false,\n        includeLocked: options.includeLocked !== false,\n        includeMetadata: options.includeMetadata !== false,\n    };\n    const imageInfo = getImageInfo(image, context.currentImageMimeType);\n    const geometry = createCurrentImageGeometry(image, context.currentRotation);\n    const overlays = canvas\n        .getObjects()\n        .filter(isEditableOverlayObject)\n        .filter((object) => resolvedOptions.includeHidden || !isHidden(object))\n        .filter((object) => resolvedOptions.includeLocked || !isLocked(object))\n        .map((object) => {\n        if (isMaskObject(object))\n            return exportMask(object, geometry, resolvedOptions);\n        if (isAnnotationObject(object))\n            return exportAnnotation(object, geometry, resolvedOptions);\n        return null;\n    })\n        .filter((overlay) => !!overlay);\n    const baseImageTransform = getBaseImageTransform(image, context.currentRotation);\n    return {\n        schema: 'image-editor.overlay-state',\n        version: 1,\n        image: imageInfo,\n        coordinateSpace: 'image-normalized',\n        ...(baseImageTransform ? { baseImageTransform } : {}),\n        overlays,\n    };\n}\n//# sourceMappingURL=overlay-state-exporter.js.map","const registry = new Map();\nexport function registerOverlaySerializer(customType, entry) {\n    registry.set(customType, entry);\n}\nexport function getOverlaySerializer(customType) {\n    return registry.get(customType);\n}\n//# sourceMappingURL=overlay-custom-registry.js.map","import { isAnnotationUnlocked } from '../annotation/annotation-lock.js';\nimport { syncAnnotationRuntimeState } from '../annotation/annotation-style.js';\nimport { attachTextEditingHandlers } from '../annotation/text-controller.js';\nimport { markAnnotationObject, markMaskObject } from '../core/editor-object-kind.js';\nimport { normalizeLayerOrder, placeAnnotationObject, placeMaskObject, } from '../core/layer-order.js';\nimport { isAnnotationObject, isMaskObject } from '../core/public-types.js';\nimport { detachMaskHoverHandlers, attachMaskHoverHandlers } from '../mask/mask-style.js';\nimport { imageNormalizedToSourcePixel, normalizeRotationDegrees, sourcePixelToCanvas, } from './overlay-coordinate-transform.js';\nimport { getOverlaySerializer } from './overlay-custom-registry.js';\nfunction finiteNumber(value, fallback = 0) {\n    return typeof value === 'number' && Number.isFinite(value) ? value : fallback;\n}\nfunction cloneMetadata(metadata) {\n    return metadata ? JSON.parse(JSON.stringify(metadata)) : undefined;\n}\nfunction getObjectCenter(object) {\n    var _a;\n    const center = (_a = object.getCenterPoint) === null || _a === void 0 ? void 0 : _a.call(object);\n    if (center)\n        return { x: center.x, y: center.y };\n    return {\n        x: finiteNumber(object.left) + finiteNumber(object.width) / 2,\n        y: finiteNumber(object.top) + finiteNumber(object.height) / 2,\n    };\n}\nfunction createImportGeometry(image, transform) {\n    const center = getObjectCenter(image);\n    return {\n        naturalWidth: Math.max(1, finiteNumber(image.width, 1)),\n        naturalHeight: Math.max(1, finiteNumber(image.height, 1)),\n        canvasCenterX: center.x,\n        canvasCenterY: center.y,\n        scaleX: Math.max(0.000001, Math.abs(finiteNumber(image.scaleX, 1))),\n        scaleY: Math.max(0.000001, Math.abs(finiteNumber(image.scaleY, 1))),\n        transform: {\n            rotation: normalizeRotationDegrees(transform === null || transform === void 0 ? void 0 : transform.rotation),\n            flipX: (transform === null || transform === void 0 ? void 0 : transform.flipX) === true,\n            flipY: (transform === null || transform === void 0 ? void 0 : transform.flipY) === true,\n        },\n    };\n}\nfunction sourcePointFromNormalized(point, state) {\n    return imageNormalizedToSourcePixel(point, state.image);\n}\nfunction canvasPointFromNormalized(point, state, geometry) {\n    return sourcePixelToCanvas(sourcePointFromNormalized(point, state), geometry);\n}\nfunction normalizedLengthX(value, geometry) {\n    return value * geometry.naturalWidth * geometry.scaleX;\n}\nfunction normalizedLengthY(value, geometry) {\n    return value * geometry.naturalHeight * geometry.scaleY;\n}\nfunction nextMaskId(context) {\n    const id = context.getMaskCounter() + 1;\n    context.setMaskCounter(id);\n    return id;\n}\nfunction nextAnnotationId(context) {\n    const id = context.getAnnotationCounter() + 1;\n    context.setAnnotationCounter(id);\n    return id;\n}\nfunction newPersistentId(overlay, kind, runtimeId, options, existingPersistentIds, result) {\n    if (options.idStrategy === 'preserve' && !existingPersistentIds.has(overlay.id)) {\n        existingPersistentIds.add(overlay.id);\n        return overlay.id;\n    }\n    const generated = `${kind}-${runtimeId}`;\n    existingPersistentIds.add(generated);\n    if (generated !== overlay.id) {\n        result.regeneratedIds.push({ originalId: overlay.id, newId: generated });\n    }\n    return generated;\n}\nfunction assignPersistentFields(object, overlay, persistentId) {\n    const target = object;\n    target.overlayPersistentId = persistentId;\n    const metadata = cloneMetadata(overlay.metadata);\n    if (metadata)\n        target.overlayMetadata = metadata;\n}\nfunction maskStyleProps(style) {\n    var _a, _b, _c, _d, _e, _f;\n    return {\n        fill: style.fill,\n        opacity: style.alpha,\n        stroke: (_a = style.stroke) !== null && _a !== void 0 ? _a : undefined,\n        strokeWidth: (_b = style.strokeWidth) !== null && _b !== void 0 ? _b : 1,\n        strokeDashArray: (_c = style.strokeDashArray) !== null && _c !== void 0 ? _c : undefined,\n        selectable: (_d = style.selectable) !== null && _d !== void 0 ? _d : true,\n        evented: (_e = style.evented) !== null && _e !== void 0 ? _e : true,\n        hasControls: (_f = style.hasControls) !== null && _f !== void 0 ? _f : true,\n        originX: 'left',\n        originY: 'top',\n        strokeUniform: true,\n    };\n}\nfunction createMaskObject(context, state, overlay, geometry) {\n    var _a, _b, _c, _d, _e, _f, _g, _h, _j;\n    const fabric = context.fabric;\n    let object;\n    if (overlay.geometry.type === 'rect') {\n        const point = canvasPointFromNormalized({ x: overlay.geometry.x, y: overlay.geometry.y }, state, geometry);\n        object = new fabric.Rect({\n            ...maskStyleProps(overlay.style),\n            left: point.x,\n            top: point.y,\n            width: normalizedLengthX(overlay.geometry.width, geometry),\n            height: normalizedLengthY(overlay.geometry.height, geometry),\n            rx: overlay.geometry.rx !== undefined\n                ? normalizedLengthX(overlay.geometry.rx, geometry)\n                : undefined,\n            ry: overlay.geometry.ry !== undefined\n                ? normalizedLengthY(overlay.geometry.ry, geometry)\n                : undefined,\n            angle: normalizeRotationDegrees((_a = state.baseImageTransform) === null || _a === void 0 ? void 0 : _a.rotation) +\n                finiteNumber(overlay.geometry.angle),\n        });\n    }\n    else if (overlay.geometry.type === 'circle') {\n        const radius = normalizedLengthX(overlay.geometry.radius, geometry);\n        const center = canvasPointFromNormalized({ x: overlay.geometry.cx, y: overlay.geometry.cy }, state, geometry);\n        object = new fabric.Circle({\n            ...maskStyleProps(overlay.style),\n            left: center.x - radius,\n            top: center.y - radius,\n            radius,\n            angle: normalizeRotationDegrees((_b = state.baseImageTransform) === null || _b === void 0 ? void 0 : _b.rotation) +\n                finiteNumber(overlay.geometry.angle),\n        });\n    }\n    else if (overlay.geometry.type === 'ellipse') {\n        const rx = normalizedLengthX(overlay.geometry.rx, geometry);\n        const ry = normalizedLengthY(overlay.geometry.ry, geometry);\n        const center = canvasPointFromNormalized({ x: overlay.geometry.cx, y: overlay.geometry.cy }, state, geometry);\n        object = new fabric.Ellipse({\n            ...maskStyleProps(overlay.style),\n            left: center.x - rx,\n            top: center.y - ry,\n            rx,\n            ry,\n            angle: normalizeRotationDegrees((_c = state.baseImageTransform) === null || _c === void 0 ? void 0 : _c.rotation) +\n                finiteNumber(overlay.geometry.angle),\n        });\n    }\n    else {\n        const points = overlay.geometry.points.map((point) => canvasPointFromNormalized(point, state, geometry));\n        const minX = Math.min(...points.map((point) => point.x));\n        const minY = Math.min(...points.map((point) => point.y));\n        object = new fabric.Polygon(points.map((point) => ({ x: point.x - minX, y: point.y - minY })), {\n            ...maskStyleProps(overlay.style),\n            left: minX,\n            top: minY,\n            angle: normalizeRotationDegrees((_d = state.baseImageTransform) === null || _d === void 0 ? void 0 : _d.rotation) +\n                finiteNumber(overlay.geometry.angle),\n        });\n    }\n    const maskId = nextMaskId(context);\n    const mask = markMaskObject(object, {\n        maskId,\n        maskUid: `mask-${maskId}`,\n        maskName: `${context.options.maskName}${maskId}`,\n        originalAlpha: overlay.style.alpha,\n        originalStroke: (_e = overlay.style.stroke) !== null && _e !== void 0 ? _e : null,\n        originalStrokeWidth: (_f = overlay.style.strokeWidth) !== null && _f !== void 0 ? _f : 1,\n    });\n    mask.selectable = (_g = overlay.style.selectable) !== null && _g !== void 0 ? _g : true;\n    mask.evented = (_h = overlay.style.evented) !== null && _h !== void 0 ? _h : true;\n    mask.hasControls = (_j = overlay.style.hasControls) !== null && _j !== void 0 ? _j : true;\n    mask.transparentCorners = false;\n    mask.strokeUniform = true;\n    attachMaskHoverHandlers(mask);\n    return mask;\n}\nfunction annotationBaseProps(locked) {\n    return {\n        annotationHidden: false,\n        annotationLocked: locked === true,\n    };\n}\nfunction createTextObject(context, state, overlay, geometry, warnings) {\n    var _a, _b, _c, _d, _e, _f, _g, _h;\n    const point = canvasPointFromNormalized({ x: overlay.geometry.x, y: overlay.geometry.y }, state, geometry);\n    const requestedFont = overlay.style.fontFamily;\n    const fontFamily = requestedFont || context.options.defaultTextConfig.fontFamily;\n    const metadata = (_a = cloneMetadata(overlay.metadata)) !== null && _a !== void 0 ? _a : {};\n    if (requestedFont) {\n        metadata['core.font'] = {\n            ...((_b = metadata['core.font']) !== null && _b !== void 0 ? _b : {}),\n            requestedFontFamily: requestedFont,\n        };\n        warnings.push({\n            code: 'text.fontFamily.requested',\n            path: `overlays.${overlay.id}.style.fontFamily`,\n            message: `Text overlay requested fontFamily \"${requestedFont}\". Runtime font availability is host-dependent.`,\n            details: { fontFamily: requestedFont },\n        });\n    }\n    const textbox = new context.fabric.Textbox(overlay.text.value, {\n        left: point.x,\n        top: point.y,\n        width: overlay.geometry.width !== undefined\n            ? normalizedLengthX(overlay.geometry.width, geometry)\n            : context.options.defaultTextConfig.width,\n        fontSize: (_c = overlay.style.fontSize) !== null && _c !== void 0 ? _c : context.options.defaultTextConfig.fontSize,\n        fontFamily,\n        fontWeight: (_d = overlay.style.fontWeight) !== null && _d !== void 0 ? _d : context.options.defaultTextConfig.fontWeight,\n        fill: (_e = overlay.style.fill) !== null && _e !== void 0 ? _e : context.options.defaultTextConfig.fill,\n        backgroundColor: (_f = overlay.style.backgroundColor) !== null && _f !== void 0 ? _f : context.options.defaultTextConfig.backgroundColor,\n        textAlign: (_g = overlay.style.textAlign) !== null && _g !== void 0 ? _g : context.options.defaultTextConfig.textAlign,\n        lineHeight: overlay.style.lineHeight,\n        angle: normalizeRotationDegrees((_h = state.baseImageTransform) === null || _h === void 0 ? void 0 : _h.rotation) +\n            finiteNumber(overlay.geometry.angle),\n        originX: 'left',\n        originY: 'top',\n        selectable: true,\n        evented: true,\n        editable: true,\n    });\n    const annotationId = nextAnnotationId(context);\n    const annotation = markAnnotationObject(textbox, {\n        annotationId,\n        annotationType: 'text',\n        annotationName: `${context.options.textAnnotationName}${annotationId}`,\n        annotationSelectable: true,\n        annotationEvented: true,\n        annotationHasControls: textbox.hasControls !== false,\n        annotationEditable: true,\n        ...annotationBaseProps(overlay.locked),\n    });\n    if (Object.keys(metadata).length > 0) {\n        annotation.overlayMetadata = metadata;\n    }\n    syncAnnotationRuntimeState(annotation);\n    attachTextEditingHandlers(context.buildTextControllerContext(), annotation);\n    return annotation;\n}\nfunction buildArrowPath(x1, y1, x2, y2, headLength) {\n    const angle = Math.atan2(y2 - y1, x2 - x1);\n    const length = Math.max(1, headLength);\n    const wingAngle = Math.PI / 7;\n    const head1x = x2 - length * Math.cos(angle - wingAngle);\n    const head1y = y2 - length * Math.sin(angle - wingAngle);\n    const head2x = x2 - length * Math.cos(angle + wingAngle);\n    const head2y = y2 - length * Math.sin(angle + wingAngle);\n    return `M ${x1} ${y1} L ${x2} ${y2} M ${x2} ${y2} L ${head1x} ${head1y} M ${x2} ${y2} L ${head2x} ${head2y}`;\n}\nfunction createShapeObject(context, state, overlay, geometry) {\n    var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;\n    const style = {\n        stroke: (_a = overlay.style.stroke) !== null && _a !== void 0 ? _a : context.options.defaultShapeConfig.stroke,\n        strokeWidth: (_b = overlay.style.strokeWidth) !== null && _b !== void 0 ? _b : context.options.defaultShapeConfig.strokeWidth,\n        fill: (_c = overlay.style.fill) !== null && _c !== void 0 ? _c : context.options.defaultShapeConfig.fill,\n        opacity: (_d = overlay.style.opacity) !== null && _d !== void 0 ? _d : context.options.defaultShapeConfig.opacity,\n        strokeDashArray: (_e = overlay.style.strokeDashArray) !== null && _e !== void 0 ? _e : undefined,\n        selectable: (_f = overlay.style.selectable) !== null && _f !== void 0 ? _f : true,\n        evented: (_g = overlay.style.evented) !== null && _g !== void 0 ? _g : true,\n        originX: 'left',\n        originY: 'top',\n    };\n    let object;\n    if (overlay.geometry.type === 'rect') {\n        const point = canvasPointFromNormalized({ x: overlay.geometry.x, y: overlay.geometry.y }, state, geometry);\n        object = new context.fabric.Rect({\n            ...style,\n            left: point.x,\n            top: point.y,\n            width: normalizedLengthX(overlay.geometry.width, geometry),\n            height: normalizedLengthY(overlay.geometry.height, geometry),\n            angle: normalizeRotationDegrees((_h = state.baseImageTransform) === null || _h === void 0 ? void 0 : _h.rotation) +\n                finiteNumber(overlay.geometry.angle),\n        });\n    }\n    else {\n        const start = canvasPointFromNormalized({ x: overlay.geometry.x1, y: overlay.geometry.y1 }, state, geometry);\n        const end = canvasPointFromNormalized({ x: overlay.geometry.x2, y: overlay.geometry.y2 }, state, geometry);\n        const path = overlay.geometry.type === 'arrow'\n            ? buildArrowPath(start.x, start.y, end.x, end.y, (_j = overlay.geometry.arrowHeadLength) !== null && _j !== void 0 ? _j : context.options.defaultShapeConfig.arrowHeadLength)\n            : `M ${start.x} ${start.y} L ${end.x} ${end.y}`;\n        object = new context.fabric.Path(path, {\n            ...style,\n            fill: '',\n            strokeLineCap: 'round',\n            strokeLineJoin: 'round',\n            objectCaching: false,\n            angle: normalizeRotationDegrees((_k = state.baseImageTransform) === null || _k === void 0 ? void 0 : _k.rotation) +\n                finiteNumber(overlay.geometry.angle),\n        });\n    }\n    const annotationId = nextAnnotationId(context);\n    const annotation = markAnnotationObject(object, {\n        annotationId,\n        annotationType: 'shape',\n        annotationName: `${context.options.shapeAnnotationName}${annotationId}`,\n        annotationSelectable: (_l = overlay.style.selectable) !== null && _l !== void 0 ? _l : true,\n        annotationEvented: (_m = overlay.style.evented) !== null && _m !== void 0 ? _m : true,\n        annotationHasControls: object.hasControls !== false,\n        shapeAnnotationKind: overlay.shape,\n        ...annotationBaseProps(overlay.locked),\n    });\n    syncAnnotationRuntimeState(annotation);\n    return annotation;\n}\nfunction createDrawObject(context, state, overlay, geometry) {\n    var _a, _b, _c, _d;\n    const commands = [];\n    const firstStroke = overlay.strokes[0];\n    const brush = (_a = firstStroke === null || firstStroke === void 0 ? void 0 : firstStroke.brush) !== null && _a !== void 0 ? _a : {\n        color: context.options.defaultDrawConfig.color,\n        width: context.options.defaultDrawConfig.brushSize,\n    };\n    for (const stroke of overlay.strokes) {\n        stroke.points.forEach((point, index) => {\n            const canvasPoint = canvasPointFromNormalized(point, state, geometry);\n            commands.push(`${index === 0 ? 'M' : 'L'} ${canvasPoint.x} ${canvasPoint.y}`);\n        });\n    }\n    const object = new context.fabric.Path(commands.join(' '), {\n        fill: '',\n        stroke: brush.color,\n        strokeWidth: brush.width,\n        opacity: (_b = brush.opacity) !== null && _b !== void 0 ? _b : context.options.defaultDrawConfig.opacity,\n        strokeLineCap: (_c = brush.lineCap) !== null && _c !== void 0 ? _c : context.options.defaultDrawConfig.lineCap,\n        strokeLineJoin: (_d = brush.lineJoin) !== null && _d !== void 0 ? _d : context.options.defaultDrawConfig.lineJoin,\n        selectable: true,\n        evented: true,\n        objectCaching: false,\n    });\n    const annotationId = nextAnnotationId(context);\n    const annotation = markAnnotationObject(object, {\n        annotationId,\n        annotationType: 'draw',\n        annotationName: `${context.options.drawAnnotationName}${annotationId}`,\n        annotationSelectable: true,\n        annotationEvented: true,\n        annotationHasControls: object.hasControls !== false,\n        ...annotationBaseProps(overlay.locked),\n    });\n    syncAnnotationRuntimeState(annotation);\n    return annotation;\n}\nfunction removeExistingOverlays(context) {\n    const objects = [...context.canvas.getObjects()];\n    for (const object of objects) {\n        if (isMaskObject(object)) {\n            context.removeLabelForMask(object);\n            detachMaskHoverHandlers(object);\n            context.canvas.remove(object);\n        }\n        else if (isAnnotationObject(object)) {\n            context.canvas.remove(object);\n        }\n    }\n    context.canvas.discardActiveObject();\n    context.setLastMask(null);\n}\nfunction readExistingPersistentIds(canvas) {\n    const ids = new Set();\n    canvas.getObjects().forEach((object) => {\n        const id = object.overlayPersistentId;\n        if (typeof id === 'string')\n            ids.add(id);\n    });\n    return ids;\n}\nfunction computeTopLeftPoint(object) {\n    object.setCoords();\n    const coords = object.getCoords();\n    const first = coords[0];\n    if (first)\n        return first;\n    const boundingRect = object.getBoundingRect();\n    return { x: boundingRect.left, y: boundingRect.top };\n}\nfunction applyBaseTransformToImage(context, transform) {\n    if (transform === undefined)\n        return;\n    const image = context.originalImage;\n    const rotation = normalizeRotationDegrees(transform.rotation);\n    const flipX = transform.flipX === true;\n    const flipY = transform.flipY === true;\n    const center = image.getCenterPoint();\n    image.set({ originX: 'center', originY: 'center' });\n    image.setPositionByOrigin(center, 'center', 'center');\n    image.set({ angle: rotation, flipX, flipY });\n    image.setCoords();\n    const nextTopLeft = computeTopLeftPoint(image);\n    image.set({ originX: 'left', originY: 'top' });\n    image.setPositionByOrigin(nextTopLeft, 'left', 'top');\n    image.setCoords();\n    context.setCurrentRotation(rotation);\n}\nfunction skipCustomOverlay(overlay, result) {\n    result.skippedOverlays += 1;\n    result.warnings.push({\n        code: 'custom.unknownType',\n        path: `overlays.${overlay.id}`,\n        message: `Custom overlay type \"${overlay.customType}\" has no registered importer and was skipped.`,\n        details: { customType: overlay.customType },\n    });\n}\nexport async function importOverlayStateIntoEditor(context, state, options = {}) {\n    var _a;\n    const result = {\n        importedOverlays: 0,\n        importedMasks: 0,\n        importedAnnotations: 0,\n        skippedOverlays: 0,\n        regeneratedIds: [],\n        warnings: [],\n    };\n    const mode = (_a = options.mode) !== null && _a !== void 0 ? _a : 'replace';\n    if (mode === 'replace')\n        removeExistingOverlays(context);\n    applyBaseTransformToImage(context, state.baseImageTransform);\n    const geometry = createImportGeometry(context.originalImage, state.baseImageTransform);\n    const existingPersistentIds = readExistingPersistentIds(context.canvas);\n    const importedObjects = [];\n    for (const overlay of state.overlays) {\n        if (overlay.kind === 'custom') {\n            const entry = getOverlaySerializer(overlay.customType);\n            if (!entry) {\n                skipCustomOverlay(overlay, result);\n                continue;\n            }\n            await entry.import(overlay.data, { state });\n            result.importedOverlays += 1;\n            continue;\n        }\n        if (overlay.kind === 'mask') {\n            const mask = createMaskObject(context, state, overlay, geometry);\n            const persistentId = newPersistentId(overlay, 'mask', mask.maskId, options, existingPersistentIds, result);\n            assignPersistentFields(mask, overlay, persistentId);\n            placeMaskObject(context.canvas, mask);\n            context.setLastMask(mask);\n            importedObjects.push(mask);\n            result.importedOverlays += 1;\n            result.importedMasks += 1;\n            continue;\n        }\n        let annotation;\n        if (overlay.annotationType === 'text') {\n            annotation = createTextObject(context, state, overlay, geometry, result.warnings);\n        }\n        else if (overlay.annotationType === 'shape') {\n            annotation = createShapeObject(context, state, overlay, geometry);\n        }\n        else {\n            annotation = createDrawObject(context, state, overlay, geometry);\n        }\n        const persistentId = newPersistentId(overlay, 'annotation', annotation.annotationId, options, existingPersistentIds, result);\n        assignPersistentFields(annotation, overlay, persistentId);\n        placeAnnotationObject(context.canvas, annotation);\n        if (annotation.selectable !== false && isAnnotationUnlocked(annotation)) {\n            context.canvas.setActiveObject(annotation);\n        }\n        importedObjects.push(annotation);\n        result.importedOverlays += 1;\n        result.importedAnnotations += 1;\n    }\n    normalizeLayerOrder(context.canvas);\n    if (options.preserveSelection !== true) {\n        context.canvas.discardActiveObject();\n    }\n    context.canvas.renderAll();\n    return result;\n}\n//# sourceMappingURL=overlay-state-importer.js.map","function error(path, code, message) {\n    return { path, code, message };\n}\nexport function migrateOverlayState(input) {\n    const errors = [];\n    if (!input || typeof input !== 'object' || Array.isArray(input)) {\n        errors.push(error('', 'state.invalidRoot', 'Overlay state must be an object.'));\n        return { errors, warnings: [] };\n    }\n    const candidate = input;\n    if (candidate.schema !== 'image-editor.overlay-state') {\n        errors.push(error('schema', 'state.unsupportedSchema', 'Overlay state schema must be \"image-editor.overlay-state\".'));\n        return { errors, warnings: [] };\n    }\n    if (typeof candidate.version !== 'number' || !Number.isInteger(candidate.version)) {\n        errors.push(error('version', 'state.invalidVersion', 'Overlay state version is invalid.'));\n        return { errors, warnings: [] };\n    }\n    if (candidate.version > 1) {\n        errors.push(error('version', 'state.futureVersion', `Overlay state version ${candidate.version} is newer than supported overlay-state schema version 1.`));\n        return { errors, warnings: [] };\n    }\n    if (candidate.version !== 1) {\n        errors.push(error('version', 'state.unsupportedVersion', `Overlay state version ${candidate.version} is not supported.`));\n        return { errors, warnings: [] };\n    }\n    return { state: candidate, errors, warnings: [] };\n}\n//# sourceMappingURL=overlay-state-migration.js.map","import { tryNormalizeOverlayColor } from './overlay-color.js';\nimport { getOverlaySerializer } from './overlay-custom-registry.js';\nimport { migrateOverlayState } from './overlay-state-migration.js';\nimport { validateOverlayMetadata, DEFAULT_METADATA_BYTES, DEFAULT_METADATA_DEPTH, } from './overlay-metadata.js';\nexport const DEFAULT_OVERLAY_VALIDATION_LIMITS = Object.freeze({\n    maxOverlays: 500,\n    maxPolygonPoints: 1000,\n    maxDrawStrokes: 500,\n    maxDrawPointsPerStroke: 5000,\n    maxDrawTotalPoints: 100000,\n    maxTextLength: 10000,\n    maxMetadataDepth: DEFAULT_METADATA_DEPTH,\n    maxMetadataBytes: DEFAULT_METADATA_BYTES,\n});\nfunction resolveLimits(options = {}) {\n    const positive = (value, fallback) => Number.isFinite(value) && Number(value) > 0 ? Math.floor(Number(value)) : fallback;\n    return {\n        maxOverlays: positive(options.maxOverlays, DEFAULT_OVERLAY_VALIDATION_LIMITS.maxOverlays),\n        maxPolygonPoints: positive(options.maxPolygonPoints, DEFAULT_OVERLAY_VALIDATION_LIMITS.maxPolygonPoints),\n        maxDrawStrokes: positive(options.maxDrawStrokes, DEFAULT_OVERLAY_VALIDATION_LIMITS.maxDrawStrokes),\n        maxDrawPointsPerStroke: positive(options.maxDrawPointsPerStroke, DEFAULT_OVERLAY_VALIDATION_LIMITS.maxDrawPointsPerStroke),\n        maxDrawTotalPoints: positive(options.maxDrawTotalPoints, DEFAULT_OVERLAY_VALIDATION_LIMITS.maxDrawTotalPoints),\n        maxTextLength: positive(options.maxTextLength, DEFAULT_OVERLAY_VALIDATION_LIMITS.maxTextLength),\n        maxMetadataDepth: positive(options.maxMetadataDepth, DEFAULT_OVERLAY_VALIDATION_LIMITS.maxMetadataDepth),\n        maxMetadataBytes: positive(options.maxMetadataBytes, DEFAULT_OVERLAY_VALIDATION_LIMITS.maxMetadataBytes),\n    };\n}\nfunction addError(context, path, code, message) {\n    context.errors.push({ path, code, message });\n}\nfunction addWarning(context, path, code, message, details) {\n    context.warnings.push({ path, code, message, ...(details ? { details } : {}) });\n}\nfunction hasCycle(value, seen = new WeakSet()) {\n    if (!value || typeof value !== 'object')\n        return false;\n    if (seen.has(value))\n        return true;\n    seen.add(value);\n    if (Array.isArray(value))\n        return value.some((entry) => hasCycle(entry, seen));\n    return Object.values(value).some((entry) => hasCycle(entry, seen));\n}\nfunction isRecord(value) {\n    return !!value && typeof value === 'object' && !Array.isArray(value);\n}\nfunction finite(value) {\n    return typeof value === 'number' && Number.isFinite(value);\n}\nfunction readFinite(context, object, key, path, options = {}) {\n    const value = object[key];\n    if (value === undefined) {\n        if (options.required)\n            addError(context, path, 'number.required', `${path} is required.`);\n        return undefined;\n    }\n    if (!finite(value)) {\n        addError(context, path, 'number.invalid', `${path} must be a finite number.`);\n        return undefined;\n    }\n    if (options.min !== undefined && value < options.min) {\n        addError(context, path, 'number.min', `${path} must be >= ${options.min}.`);\n    }\n    if (options.max !== undefined && value > options.max) {\n        addError(context, path, 'number.max', `${path} must be <= ${options.max}.`);\n    }\n    return value;\n}\nfunction readNormalized(context, object, key, path, required = true) {\n    return readFinite(context, object, key, path, {\n        required,\n        min: 0,\n        max: 1,\n    });\n}\nfunction readBoolean(context, object, key, path) {\n    const value = object[key];\n    if (value === undefined)\n        return undefined;\n    if (typeof value !== 'boolean') {\n        addError(context, path, 'boolean.invalid', `${path} must be a boolean.`);\n        return undefined;\n    }\n    return value;\n}\nfunction readString(context, object, key, path, required = false) {\n    const value = object[key];\n    if (value === undefined) {\n        if (required)\n            addError(context, path, 'string.required', `${path} is required.`);\n        return undefined;\n    }\n    if (typeof value !== 'string') {\n        addError(context, path, 'string.invalid', `${path} must be a string.`);\n        return undefined;\n    }\n    return value;\n}\nfunction normalizeColorField(context, value, path, required) {\n    if (value === undefined || value === null) {\n        if (required)\n            addError(context, path, 'color.required', `${path} is required.`);\n        return undefined;\n    }\n    const normalized = tryNormalizeOverlayColor(value);\n    if (!normalized) {\n        addError(context, path, 'color.invalid', `${path} must be #RRGGBB, #RRGGBBAA, rgb(), or rgba().`);\n        return undefined;\n    }\n    return normalized;\n}\nfunction normalizeDashArray(context, value, path) {\n    if (value === undefined)\n        return undefined;\n    if (value === null)\n        return null;\n    if (!Array.isArray(value)) {\n        addError(context, path, 'dash.invalid', `${path} must be an array or null.`);\n        return undefined;\n    }\n    const output = [];\n    value.forEach((entry, index) => {\n        if (!finite(entry) || entry < 0) {\n            addError(context, `${path}[${index}]`, 'dash.invalidEntry', 'Dash entries must be non-negative finite numbers.');\n            return;\n        }\n        output.push(entry);\n    });\n    return output;\n}\nfunction normalizeMetadata(context, value, path) {\n    const result = validateOverlayMetadata(value, path, {\n        maxMetadataDepth: context.limits.maxMetadataDepth,\n        maxMetadataBytes: context.limits.maxMetadataBytes,\n    });\n    context.errors.push(...result.errors);\n    context.warnings.push(...result.warnings);\n    return result.value;\n}\nfunction normalizeOverlayId(context, value, path) {\n    if (typeof value !== 'string' || value.trim() === '') {\n        addError(context, path, 'overlay.id.invalid', `${path} must be a non-empty string.`);\n        return '';\n    }\n    if (value.length > 256 || !/^[A-Za-z0-9._:-]+$/.test(value)) {\n        addError(context, path, 'overlay.id.unsupported', `${path} contains unsupported characters.`);\n    }\n    return value;\n}\nfunction normalizeBaseOverlay(context, overlay, path) {\n    const id = normalizeOverlayId(context, overlay.id, `${path}.id`);\n    const version = overlay.overlayVersion;\n    let overlayVersion;\n    if (version !== undefined) {\n        if (!Number.isInteger(version) || Number(version) <= 0) {\n            addError(context, `${path}.overlayVersion`, 'overlay.version.invalid', 'overlayVersion must be a positive integer.');\n        }\n        else {\n            overlayVersion = Number(version);\n        }\n    }\n    const hidden = readBoolean(context, overlay, 'hidden', `${path}.hidden`);\n    const metadata = normalizeMetadata(context, overlay.metadata, `${path}.metadata`);\n    return {\n        id,\n        ...(overlayVersion !== undefined ? { overlayVersion } : {}),\n        ...(hidden !== undefined ? { hidden } : {}),\n        ...(metadata !== undefined ? { metadata } : {}),\n    };\n}\nfunction validateImageInfo(context, value) {\n    if (!isRecord(value)) {\n        addError(context, 'image', 'image.invalid', 'image must be an object.');\n        return undefined;\n    }\n    const naturalWidth = readFinite(context, value, 'naturalWidth', 'image.naturalWidth', {\n        required: true,\n        min: 1,\n    });\n    const naturalHeight = readFinite(context, value, 'naturalHeight', 'image.naturalHeight', {\n        required: true,\n        min: 1,\n    });\n    const mimeType = value.mimeType;\n    const orientation = value.orientation;\n    const sourceId = readString(context, value, 'sourceId', 'image.sourceId');\n    const checksum = readString(context, value, 'checksum', 'image.checksum');\n    if (mimeType !== undefined &&\n        mimeType !== 'image/jpeg' &&\n        mimeType !== 'image/png' &&\n        mimeType !== 'image/webp') {\n        addError(context, 'image.mimeType', 'image.mimeType.invalid', 'Unsupported image MIME type.');\n    }\n    if (orientation !== undefined && ![1, 2, 3, 4, 5, 6, 7, 8].includes(orientation)) {\n        addError(context, 'image.orientation', 'image.orientation.invalid', 'EXIF orientation must be 1 through 8.');\n    }\n    if (naturalWidth === undefined || naturalHeight === undefined)\n        return undefined;\n    return {\n        naturalWidth,\n        naturalHeight,\n        ...(typeof mimeType === 'string'\n            ? { mimeType: mimeType }\n            : {}),\n        ...(typeof orientation === 'number'\n            ? { orientation: orientation }\n            : {}),\n        ...(sourceId !== undefined ? { sourceId } : {}),\n        ...(checksum !== undefined ? { checksum } : {}),\n    };\n}\nfunction validateBaseImageTransform(context, value) {\n    if (value === undefined)\n        return undefined;\n    if (!isRecord(value)) {\n        addError(context, 'baseImageTransform', 'baseTransform.invalid', 'baseImageTransform must be an object.');\n        return undefined;\n    }\n    const rotation = readFinite(context, value, 'rotation', 'baseImageTransform.rotation', {\n        required: false,\n    });\n    const flipX = readBoolean(context, value, 'flipX', 'baseImageTransform.flipX');\n    const flipY = readBoolean(context, value, 'flipY', 'baseImageTransform.flipY');\n    return {\n        ...(rotation !== undefined ? { rotation } : {}),\n        ...(flipX !== undefined ? { flipX } : {}),\n        ...(flipY !== undefined ? { flipY } : {}),\n    };\n}\nfunction validateMaskOverlay(context, overlay, path) {\n    const base = normalizeBaseOverlay(context, overlay, path);\n    const maskShape = overlay.maskShape;\n    if (maskShape !== 'rect' &&\n        maskShape !== 'circle' &&\n        maskShape !== 'ellipse' &&\n        maskShape !== 'polygon') {\n        addError(context, `${path}.maskShape`, 'mask.shape.invalid', 'Unsupported mask shape.');\n        return null;\n    }\n    if (!isRecord(overlay.geometry)) {\n        addError(context, `${path}.geometry`, 'mask.geometry.invalid', 'Mask geometry must be an object.');\n        return null;\n    }\n    if (!isRecord(overlay.style)) {\n        addError(context, `${path}.style`, 'mask.style.invalid', 'Mask style must be an object.');\n        return null;\n    }\n    const geometry = overlay.geometry;\n    let normalizedGeometry = null;\n    if (maskShape === 'rect' && geometry.type === 'rect') {\n        const x = readNormalized(context, geometry, 'x', `${path}.geometry.x`);\n        const y = readNormalized(context, geometry, 'y', `${path}.geometry.y`);\n        const width = readNormalized(context, geometry, 'width', `${path}.geometry.width`);\n        const height = readNormalized(context, geometry, 'height', `${path}.geometry.height`);\n        const rx = readNormalized(context, geometry, 'rx', `${path}.geometry.rx`, false);\n        const ry = readNormalized(context, geometry, 'ry', `${path}.geometry.ry`, false);\n        const angle = readFinite(context, geometry, 'angle', `${path}.geometry.angle`);\n        if (x !== undefined && y !== undefined && width !== undefined && height !== undefined) {\n            normalizedGeometry = {\n                type: 'rect',\n                x,\n                y,\n                width,\n                height,\n                ...(rx !== undefined ? { rx } : {}),\n                ...(ry !== undefined ? { ry } : {}),\n                ...(angle !== undefined ? { angle } : {}),\n            };\n        }\n    }\n    else if (maskShape === 'circle' && geometry.type === 'circle') {\n        const cx = readNormalized(context, geometry, 'cx', `${path}.geometry.cx`);\n        const cy = readNormalized(context, geometry, 'cy', `${path}.geometry.cy`);\n        const radius = readNormalized(context, geometry, 'radius', `${path}.geometry.radius`);\n        const angle = readFinite(context, geometry, 'angle', `${path}.geometry.angle`);\n        if (cx !== undefined && cy !== undefined && radius !== undefined) {\n            normalizedGeometry = {\n                type: 'circle',\n                cx,\n                cy,\n                radius,\n                ...(angle !== undefined ? { angle } : {}),\n            };\n        }\n    }\n    else if (maskShape === 'ellipse' && geometry.type === 'ellipse') {\n        const cx = readNormalized(context, geometry, 'cx', `${path}.geometry.cx`);\n        const cy = readNormalized(context, geometry, 'cy', `${path}.geometry.cy`);\n        const rx = readNormalized(context, geometry, 'rx', `${path}.geometry.rx`);\n        const ry = readNormalized(context, geometry, 'ry', `${path}.geometry.ry`);\n        const angle = readFinite(context, geometry, 'angle', `${path}.geometry.angle`);\n        if (cx !== undefined && cy !== undefined && rx !== undefined && ry !== undefined) {\n            normalizedGeometry = {\n                type: 'ellipse',\n                cx,\n                cy,\n                rx,\n                ry,\n                ...(angle !== undefined ? { angle } : {}),\n            };\n        }\n    }\n    else if (maskShape === 'polygon' && geometry.type === 'polygon') {\n        if (!Array.isArray(geometry.points)) {\n            addError(context, `${path}.geometry.points`, 'mask.polygon.points.invalid', 'Polygon points must be an array.');\n        }\n        else if (geometry.points.length > context.limits.maxPolygonPoints) {\n            addError(context, `${path}.geometry.points`, 'mask.polygon.points.max', `Polygon has ${geometry.points.length} points, exceeding maxPolygonPoints ${context.limits.maxPolygonPoints}.`);\n        }\n        else {\n            const points = geometry.points.map((point, index) => {\n                var _a, _b;\n                if (!isRecord(point)) {\n                    addError(context, `${path}.geometry.points[${index}]`, 'mask.polygon.point.invalid', 'Polygon point must be an object.');\n                    return { x: 0, y: 0 };\n                }\n                return {\n                    x: (_a = readNormalized(context, point, 'x', `${path}.geometry.points[${index}].x`)) !== null && _a !== void 0 ? _a : 0,\n                    y: (_b = readNormalized(context, point, 'y', `${path}.geometry.points[${index}].y`)) !== null && _b !== void 0 ? _b : 0,\n                };\n            });\n            const angle = readFinite(context, geometry, 'angle', `${path}.geometry.angle`);\n            normalizedGeometry = {\n                type: 'polygon',\n                points,\n                ...(angle !== undefined ? { angle } : {}),\n            };\n        }\n    }\n    else {\n        addError(context, `${path}.geometry.type`, 'mask.geometry.typeMismatch', 'Mask geometry type must match maskShape.');\n    }\n    const style = overlay.style;\n    const fill = normalizeColorField(context, style.fill, `${path}.style.fill`, true);\n    const alpha = readFinite(context, style, 'alpha', `${path}.style.alpha`, {\n        required: true,\n        min: 0,\n        max: 1,\n    });\n    const stroke = style.stroke === null\n        ? null\n        : normalizeColorField(context, style.stroke, `${path}.style.stroke`, false);\n    const strokeWidth = readFinite(context, style, 'strokeWidth', `${path}.style.strokeWidth`, {\n        min: 0,\n    });\n    const strokeDashArray = normalizeDashArray(context, style.strokeDashArray, `${path}.style.strokeDashArray`);\n    const selectable = readBoolean(context, style, 'selectable', `${path}.style.selectable`);\n    const evented = readBoolean(context, style, 'evented', `${path}.style.evented`);\n    const hasControls = readBoolean(context, style, 'hasControls', `${path}.style.hasControls`);\n    if (!normalizedGeometry || !fill || alpha === undefined)\n        return null;\n    return {\n        kind: 'mask',\n        ...base,\n        maskShape,\n        geometry: normalizedGeometry,\n        style: {\n            fill,\n            alpha,\n            ...(stroke !== undefined ? { stroke } : {}),\n            ...(strokeWidth !== undefined ? { strokeWidth } : {}),\n            ...(strokeDashArray !== undefined ? { strokeDashArray } : {}),\n            ...(selectable !== undefined ? { selectable } : {}),\n            ...(evented !== undefined ? { evented } : {}),\n            ...(hasControls !== undefined ? { hasControls } : {}),\n        },\n    };\n}\nfunction validateTextOverlay(context, overlay, path) {\n    var _a;\n    const base = normalizeBaseOverlay(context, overlay, path);\n    if (!isRecord(overlay.geometry) || !isRecord(overlay.text) || !isRecord(overlay.style)) {\n        addError(context, path, 'text.invalid', 'Text overlays require geometry, text, and style objects.');\n        return null;\n    }\n    const x = readNormalized(context, overlay.geometry, 'x', `${path}.geometry.x`);\n    const y = readNormalized(context, overlay.geometry, 'y', `${path}.geometry.y`);\n    const width = readNormalized(context, overlay.geometry, 'width', `${path}.geometry.width`, false);\n    const angle = readFinite(context, overlay.geometry, 'angle', `${path}.geometry.angle`);\n    const value = (_a = readString(context, overlay.text, 'value', `${path}.text.value`, true)) !== null && _a !== void 0 ? _a : '';\n    if (value.length > context.limits.maxTextLength) {\n        addError(context, `${path}.text.value`, 'text.maxLength', `Text length exceeds maxTextLength ${context.limits.maxTextLength}.`);\n    }\n    const fontSize = readFinite(context, overlay.style, 'fontSize', `${path}.style.fontSize`, {\n        min: 0,\n    });\n    const fontFamily = readString(context, overlay.style, 'fontFamily', `${path}.style.fontFamily`);\n    const fontWeight = overlay.style.fontWeight;\n    if (fontWeight !== undefined &&\n        typeof fontWeight !== 'string' &&\n        (typeof fontWeight !== 'number' || !Number.isFinite(fontWeight))) {\n        addError(context, `${path}.style.fontWeight`, 'text.fontWeight.invalid', 'fontWeight must be a string or finite number.');\n    }\n    const fill = normalizeColorField(context, overlay.style.fill, `${path}.style.fill`, false);\n    const backgroundColor = normalizeColorField(context, overlay.style.backgroundColor, `${path}.style.backgroundColor`, false);\n    const textAlign = overlay.style.textAlign;\n    if (textAlign !== undefined &&\n        textAlign !== 'left' &&\n        textAlign !== 'center' &&\n        textAlign !== 'right' &&\n        textAlign !== 'justify') {\n        addError(context, `${path}.style.textAlign`, 'text.align.invalid', 'Unsupported textAlign.');\n    }\n    const lineHeight = readFinite(context, overlay.style, 'lineHeight', `${path}.style.lineHeight`, { min: 0 });\n    const locked = readBoolean(context, overlay, 'locked', `${path}.locked`);\n    if (x === undefined || y === undefined)\n        return null;\n    return {\n        kind: 'annotation',\n        annotationType: 'text',\n        ...base,\n        geometry: {\n            x,\n            y,\n            ...(width !== undefined ? { width } : {}),\n            ...(angle !== undefined ? { angle } : {}),\n        },\n        text: { value },\n        style: {\n            ...(fontSize !== undefined ? { fontSize } : {}),\n            ...(fontFamily !== undefined ? { fontFamily } : {}),\n            ...(fontWeight !== undefined ? { fontWeight: fontWeight } : {}),\n            ...(fill !== undefined ? { fill } : {}),\n            ...(backgroundColor !== undefined ? { backgroundColor } : {}),\n            ...(typeof textAlign === 'string'\n                ? { textAlign: textAlign }\n                : {}),\n            ...(lineHeight !== undefined ? { lineHeight } : {}),\n        },\n        ...(locked !== undefined ? { locked } : {}),\n    };\n}\nfunction validateShapeOverlay(context, overlay, path) {\n    const base = normalizeBaseOverlay(context, overlay, path);\n    const shape = overlay.shape;\n    if (shape !== 'rect' && shape !== 'line' && shape !== 'arrow') {\n        addError(context, `${path}.shape`, 'shape.invalid', 'Unsupported shape annotation kind.');\n        return null;\n    }\n    if (!isRecord(overlay.geometry) || !isRecord(overlay.style)) {\n        addError(context, path, 'shape.invalidObjects', 'Shape overlays require geometry and style objects.');\n        return null;\n    }\n    let geometry = null;\n    if (shape === 'rect' && overlay.geometry.type === 'rect') {\n        const x = readNormalized(context, overlay.geometry, 'x', `${path}.geometry.x`);\n        const y = readNormalized(context, overlay.geometry, 'y', `${path}.geometry.y`);\n        const width = readNormalized(context, overlay.geometry, 'width', `${path}.geometry.width`);\n        const height = readNormalized(context, overlay.geometry, 'height', `${path}.geometry.height`);\n        const angle = readFinite(context, overlay.geometry, 'angle', `${path}.geometry.angle`);\n        if (x !== undefined && y !== undefined && width !== undefined && height !== undefined) {\n            geometry = {\n                type: 'rect',\n                x,\n                y,\n                width,\n                height,\n                ...(angle !== undefined ? { angle } : {}),\n            };\n        }\n    }\n    else if ((shape === 'line' || shape === 'arrow') && overlay.geometry.type === shape) {\n        const x1 = readNormalized(context, overlay.geometry, 'x1', `${path}.geometry.x1`);\n        const y1 = readNormalized(context, overlay.geometry, 'y1', `${path}.geometry.y1`);\n        const x2 = readNormalized(context, overlay.geometry, 'x2', `${path}.geometry.x2`);\n        const y2 = readNormalized(context, overlay.geometry, 'y2', `${path}.geometry.y2`);\n        const angle = readFinite(context, overlay.geometry, 'angle', `${path}.geometry.angle`);\n        if (x1 !== undefined && y1 !== undefined && x2 !== undefined && y2 !== undefined) {\n            if (shape === 'line') {\n                geometry = {\n                    type: 'line',\n                    x1,\n                    y1,\n                    x2,\n                    y2,\n                    ...(angle !== undefined ? { angle } : {}),\n                };\n            }\n            else {\n                const arrowHeadLength = readFinite(context, overlay.geometry, 'arrowHeadLength', `${path}.geometry.arrowHeadLength`, { min: 0 });\n                geometry = {\n                    type: 'arrow',\n                    x1,\n                    y1,\n                    x2,\n                    y2,\n                    ...(arrowHeadLength !== undefined ? { arrowHeadLength } : {}),\n                    ...(angle !== undefined ? { angle } : {}),\n                };\n            }\n        }\n    }\n    else {\n        addError(context, `${path}.geometry.type`, 'shape.geometry.typeMismatch', 'Shape geometry type must match shape.');\n    }\n    const stroke = normalizeColorField(context, overlay.style.stroke, `${path}.style.stroke`, false);\n    const strokeWidth = readFinite(context, overlay.style, 'strokeWidth', `${path}.style.strokeWidth`, { min: 0 });\n    const fill = normalizeColorField(context, overlay.style.fill, `${path}.style.fill`, false);\n    const opacity = readFinite(context, overlay.style, 'opacity', `${path}.style.opacity`, {\n        min: 0,\n        max: 1,\n    });\n    const strokeDashArray = normalizeDashArray(context, overlay.style.strokeDashArray, `${path}.style.strokeDashArray`);\n    const selectable = readBoolean(context, overlay.style, 'selectable', `${path}.style.selectable`);\n    const evented = readBoolean(context, overlay.style, 'evented', `${path}.style.evented`);\n    const locked = readBoolean(context, overlay, 'locked', `${path}.locked`);\n    if (!geometry)\n        return null;\n    return {\n        kind: 'annotation',\n        annotationType: 'shape',\n        ...base,\n        shape,\n        geometry,\n        style: {\n            ...(stroke !== undefined ? { stroke } : {}),\n            ...(strokeWidth !== undefined ? { strokeWidth } : {}),\n            ...(fill !== undefined ? { fill } : {}),\n            ...(opacity !== undefined ? { opacity } : {}),\n            ...(strokeDashArray !== undefined ? { strokeDashArray } : {}),\n            ...(selectable !== undefined ? { selectable } : {}),\n            ...(evented !== undefined ? { evented } : {}),\n        },\n        ...(locked !== undefined ? { locked } : {}),\n    };\n}\nfunction normalizeDrawBrush(context, value, path) {\n    if (!isRecord(value)) {\n        addError(context, path, 'draw.brush.invalid', 'Draw brush must be an object.');\n        return null;\n    }\n    const color = normalizeColorField(context, value.color, `${path}.color`, true);\n    const width = readFinite(context, value, 'width', `${path}.width`, { required: true, min: 0 });\n    const opacity = readFinite(context, value, 'opacity', `${path}.opacity`, { min: 0, max: 1 });\n    const lineCap = value.lineCap;\n    const lineJoin = value.lineJoin;\n    if (lineCap !== undefined &&\n        lineCap !== 'butt' &&\n        lineCap !== 'round' &&\n        lineCap !== 'square') {\n        addError(context, `${path}.lineCap`, 'draw.lineCap.invalid', 'Unsupported lineCap.');\n    }\n    if (lineJoin !== undefined &&\n        lineJoin !== 'bevel' &&\n        lineJoin !== 'round' &&\n        lineJoin !== 'miter') {\n        addError(context, `${path}.lineJoin`, 'draw.lineJoin.invalid', 'Unsupported lineJoin.');\n    }\n    if (!color || width === undefined)\n        return null;\n    return {\n        color,\n        width,\n        ...(opacity !== undefined ? { opacity } : {}),\n        ...(typeof lineCap === 'string' ? { lineCap: lineCap } : {}),\n        ...(typeof lineJoin === 'string' ? { lineJoin: lineJoin } : {}),\n    };\n}\nfunction normalizeDrawPoint(context, value, path) {\n    if (!isRecord(value)) {\n        addError(context, path, 'draw.point.invalid', 'Draw points must be objects.');\n        return null;\n    }\n    const x = readNormalized(context, value, 'x', `${path}.x`);\n    const y = readNormalized(context, value, 'y', `${path}.y`);\n    const pressure = readFinite(context, value, 'pressure', `${path}.pressure`, { min: 0, max: 1 });\n    const t = readFinite(context, value, 't', `${path}.t`, { min: 0 });\n    if (x === undefined || y === undefined)\n        return null;\n    return {\n        x,\n        y,\n        ...(pressure !== undefined ? { pressure } : {}),\n        ...(t !== undefined ? { t } : {}),\n    };\n}\nfunction validateDrawOverlay(context, overlay, path) {\n    const base = normalizeBaseOverlay(context, overlay, path);\n    if (!Array.isArray(overlay.strokes)) {\n        addError(context, `${path}.strokes`, 'draw.strokes.invalid', 'Draw strokes must be an array.');\n        return null;\n    }\n    if (overlay.strokes.length > context.limits.maxDrawStrokes) {\n        addError(context, `${path}.strokes`, 'draw.strokes.max', `Draw strokes exceed maxDrawStrokes ${context.limits.maxDrawStrokes}.`);\n        return null;\n    }\n    const strokes = [];\n    overlay.strokes.forEach((strokeValue, strokeIndex) => {\n        const strokePath = `${path}.strokes[${strokeIndex}]`;\n        if (!isRecord(strokeValue)) {\n            addError(context, strokePath, 'draw.stroke.invalid', 'Draw stroke must be an object.');\n            return;\n        }\n        const id = readString(context, strokeValue, 'id', `${strokePath}.id`);\n        if (!Array.isArray(strokeValue.points)) {\n            addError(context, `${strokePath}.points`, 'draw.points.invalid', 'Draw stroke points must be an array.');\n            return;\n        }\n        if (strokeValue.points.length > context.limits.maxDrawPointsPerStroke) {\n            addError(context, `${strokePath}.points`, 'draw.points.maxPerStroke', `Draw stroke exceeds maxDrawPointsPerStroke ${context.limits.maxDrawPointsPerStroke}.`);\n        }\n        const points = strokeValue.points\n            .map((point, pointIndex) => normalizeDrawPoint(context, point, `${strokePath}.points[${pointIndex}]`))\n            .filter((point) => !!point);\n        context.drawTotalPoints += points.length;\n        if (context.drawTotalPoints > context.limits.maxDrawTotalPoints) {\n            addError(context, `${strokePath}.points`, 'draw.points.maxTotal', `Draw points exceed maxDrawTotalPoints ${context.limits.maxDrawTotalPoints}.`);\n        }\n        let previousT = -Infinity;\n        points.forEach((point, pointIndex) => {\n            if (point.t === undefined)\n                return;\n            if (point.t < previousT) {\n                addError(context, `${strokePath}.points[${pointIndex}].t`, 'draw.t.notMonotonic', 'Draw point t values must be monotonically non-decreasing.');\n            }\n            previousT = point.t;\n        });\n        const brush = normalizeDrawBrush(context, strokeValue.brush, `${strokePath}.brush`);\n        if (brush)\n            strokes.push({ ...(id !== undefined ? { id } : {}), points, brush });\n    });\n    const locked = readBoolean(context, overlay, 'locked', `${path}.locked`);\n    return {\n        kind: 'annotation',\n        annotationType: 'draw',\n        ...base,\n        strokes,\n        ...(locked !== undefined ? { locked } : {}),\n    };\n}\nfunction validateCustomOverlay(context, overlay, path) {\n    const base = normalizeBaseOverlay(context, overlay, path);\n    const customType = readString(context, overlay, 'customType', `${path}.customType`, true);\n    if (customType &&\n        !/^(builtin|app|plugin)\\.[A-Za-z0-9_-]+(?:\\.[A-Za-z0-9_-]+)*$/.test(customType)) {\n        addError(context, `${path}.customType`, 'custom.type.invalid', 'customType must be namespaced.');\n    }\n    if (!isRecord(overlay.data)) {\n        addError(context, `${path}.data`, 'custom.data.invalid', 'Custom overlay data must be an object.');\n        return null;\n    }\n    const metadataResult = validateOverlayMetadata({ 'app.customData': overlay.data }, `${path}.data`, {\n        maxMetadataDepth: context.limits.maxMetadataDepth,\n        maxMetadataBytes: context.limits.maxMetadataBytes,\n    });\n    context.errors.push(...metadataResult.errors);\n    if (customType && !getOverlaySerializer(customType)) {\n        addWarning(context, path, 'custom.unknownType', `Custom overlay type \"${customType}\" has no registered importer and will be skipped.`, { customType });\n    }\n    return customType\n        ? {\n            kind: 'custom',\n            ...base,\n            customType,\n            data: JSON.parse(JSON.stringify(overlay.data)),\n        }\n        : null;\n}\nfunction validateOverlay(context, value, index) {\n    const path = `overlays[${index}]`;\n    if (!isRecord(value)) {\n        addError(context, path, 'overlay.invalid', 'Overlay must be an object.');\n        return null;\n    }\n    if (value.kind === 'mask')\n        return validateMaskOverlay(context, value, path);\n    if (value.kind === 'custom')\n        return validateCustomOverlay(context, value, path);\n    if (value.kind === 'annotation') {\n        if (value.annotationType === 'text')\n            return validateTextOverlay(context, value, path);\n        if (value.annotationType === 'shape')\n            return validateShapeOverlay(context, value, path);\n        if (value.annotationType === 'draw')\n            return validateDrawOverlay(context, value, path);\n        addError(context, `${path}.annotationType`, 'annotation.type.invalid', 'Unsupported annotation type.');\n        return null;\n    }\n    addError(context, `${path}.kind`, 'overlay.kind.invalid', 'Unsupported overlay kind.');\n    return null;\n}\nexport function validateOverlayState(input, options = {}) {\n    const context = {\n        limits: resolveLimits(options),\n        errors: [],\n        warnings: [],\n        drawTotalPoints: 0,\n    };\n    if (hasCycle(input)) {\n        addError(context, '', 'state.cyclic', 'Overlay state must not contain cyclic objects.');\n        return { valid: false, errors: context.errors, warnings: context.warnings };\n    }\n    const migration = migrateOverlayState(input);\n    context.errors.push(...migration.errors);\n    context.warnings.push(...migration.warnings);\n    if (!migration.state || context.errors.length > 0) {\n        return { valid: false, errors: context.errors, warnings: context.warnings };\n    }\n    const raw = migration.state;\n    const image = validateImageInfo(context, raw.image);\n    if (raw.coordinateSpace !== 'image-normalized') {\n        addError(context, 'coordinateSpace', 'state.coordinateSpace.invalid', 'coordinateSpace must be \"image-normalized\".');\n    }\n    const baseImageTransform = validateBaseImageTransform(context, raw.baseImageTransform);\n    if (!Array.isArray(raw.overlays)) {\n        addError(context, 'overlays', 'overlays.invalid', 'overlays must be an array.');\n    }\n    else if (raw.overlays.length > context.limits.maxOverlays) {\n        addError(context, 'overlays', 'overlays.max', `Overlay count ${raw.overlays.length} exceeds maxOverlays ${context.limits.maxOverlays}.`);\n    }\n    const metadata = normalizeMetadata(context, raw.metadata, 'metadata');\n    const overlays = Array.isArray(raw.overlays)\n        ? raw.overlays\n            .map((overlay, index) => validateOverlay(context, overlay, index))\n            .filter((overlay) => !!overlay)\n        : [];\n    if (!image || context.errors.length > 0) {\n        return { valid: false, errors: context.errors, warnings: context.warnings };\n    }\n    const state = {\n        schema: 'image-editor.overlay-state',\n        version: 1,\n        image,\n        coordinateSpace: 'image-normalized',\n        ...(baseImageTransform !== undefined ? { baseImageTransform } : {}),\n        overlays,\n        ...(metadata !== undefined ? { metadata } : {}),\n    };\n    return { valid: true, state, errors: [], warnings: context.warnings };\n}\n//# sourceMappingURL=overlay-state-validator.js.map","import { createMask as createMaskImpl, removeAllMasks as removeAllMasksImpl, removeSelectedMask as removeSelectedMaskImpl, } from './mask-factory.js';\nexport function createMaskAction(access, config = {}) {\n    if (!access.getCanvas())\n        return null;\n    if (!access.canRunIdleOperation('createMask'))\n        return null;\n    const callbackContext = access.buildCallbackContext('createMask', false);\n    const mask = access.withSelectionChangeContext(callbackContext, () => createMaskImpl(access.buildCreateMaskContext(), config));\n    if (mask) {\n        access.emitMasksChanged(callbackContext);\n        access.emitImageChanged(callbackContext);\n    }\n    return mask;\n}\nexport function removeSelectedMaskAction(access) {\n    if (!access.getCanvas())\n        return;\n    if (!access.canRunIdleOperation('removeSelectedMask'))\n        return;\n    const before = access.getMasks().length;\n    const callbackContext = access.buildCallbackContext('removeSelectedMask', false);\n    access.withSelectionChangeContext(callbackContext, () => removeSelectedMaskImpl(access.buildRemoveMaskContext()));\n    access.updateUi();\n    if (access.getMasks().length !== before) {\n        access.emitMasksChanged(callbackContext);\n        access.emitImageChanged(callbackContext);\n    }\n}\nexport function removeAllMasksAction(access, options = {}) {\n    if (!access.getCanvas())\n        return;\n    if (!access.canRunIdleOperation('removeAllMasks', options))\n        return;\n    const before = access.getMasks().length;\n    const callbackContext = access.buildCallbackContext('removeAllMasks', false);\n    access.withSelectionChangeContext(callbackContext, () => removeAllMasksImpl(access.buildRemoveMaskContext(), options));\n    access.updateUi();\n    if (access.getMasks().length !== before) {\n        access.emitMasksChanged(callbackContext);\n        access.emitImageChanged(callbackContext);\n    }\n}\n//# sourceMappingURL=mask-actions.js.map","import { isMaskObject } from '../core/public-types.js';\nimport { reportWarning } from '../core/callback-reporter.js';\nimport { markSessionObject } from '../core/editor-object-kind.js';\nexport function removeLabelForMask(context, mask) {\n    if (!context.canvas || !mask.labelObject)\n        return;\n    try {\n        if (context.canvas.getObjects().includes(mask.labelObject)) {\n            context.canvas.remove(mask.labelObject);\n        }\n    }\n    catch {\n    }\n    try {\n        delete mask.labelObject;\n    }\n    catch {\n    }\n}\nexport function createLabelForMask(context, mask) {\n    var _a;\n    const { canvas, options, fabric: fabricModule } = context;\n    if (!canvas || !options.maskLabelOnSelect)\n        return;\n    removeLabelForMask(context, mask);\n    let labelTextObject = null;\n    if (typeof options.label.create === 'function') {\n        try {\n            labelTextObject = options.label.create(mask, fabricModule);\n        }\n        catch (error) {\n            reportWarning(options, error, 'label.create callback threw.');\n            labelTextObject = null;\n        }\n    }\n    if (!labelTextObject) {\n        const indexForGetText = Math.max(0, mask.maskId - 1);\n        let labelText = mask.maskName;\n        if (typeof options.label.getText === 'function') {\n            try {\n                labelText = options.label.getText(mask, indexForGetText);\n            }\n            catch (error) {\n                reportWarning(options, error, 'label.getText callback threw.');\n                labelText = mask.maskName;\n            }\n        }\n        const textOptions = {\n            left: 0,\n            top: 0,\n            ...((_a = options.label.textOptions) !== null && _a !== void 0 ? _a : {}),\n            originX: 'left',\n            originY: 'top',\n        };\n        labelTextObject = new fabricModule.FabricText(labelText, textOptions);\n    }\n    markSessionObject(labelTextObject, 'maskLabel');\n    labelTextObject.maskLabel = true;\n    mask.labelObject = labelTextObject;\n    canvas.add(labelTextObject);\n    canvas.bringObjectToFront(labelTextObject);\n    syncMaskLabel(context, mask);\n}\nexport function syncMaskLabel(context, mask) {\n    var _a, _b, _c;\n    const { canvas, options } = context;\n    if (!canvas || !options.maskLabelOnSelect || !mask.labelObject)\n        return;\n    const coords = (_a = mask.getCoords) === null || _a === void 0 ? void 0 : _a.call(mask);\n    if (!(coords === null || coords === void 0 ? void 0 : coords.length))\n        return;\n    const tl = coords[0];\n    if (!tl)\n        return;\n    const center = mask.getCenterPoint();\n    const vx = center.x - tl.x;\n    const vy = center.y - tl.y;\n    const dist = Math.sqrt(vx * vx + vy * vy) || 1;\n    const offset = Math.max(0, (_b = options.maskLabelOffset) !== null && _b !== void 0 ? _b : 3);\n    mask.labelObject.set({\n        left: Math.round(tl.x + (vx / dist) * offset),\n        top: Math.round(tl.y + (vy / dist) * offset),\n        angle: (_c = mask.angle) !== null && _c !== void 0 ? _c : 0,\n        originX: 'left',\n        originY: 'top',\n        visible: true,\n    });\n    mask.labelObject.setCoords();\n    canvas.renderAll();\n}\nexport function showLabelForMask(context, mask) {\n    if (!context.options.maskLabelOnSelect)\n        return;\n    if (!mask.labelObject) {\n        createLabelForMask(context, mask);\n    }\n    if (mask.labelObject) {\n        mask.labelObject.visible = true;\n        syncMaskLabel(context, mask);\n    }\n}\nexport function hideAllMaskLabels(context) {\n    const { canvas } = context;\n    if (!canvas)\n        return;\n    const objs = canvas.getObjects();\n    objs.filter((o) => o.maskLabel).forEach((l) => {\n        try {\n            canvas.remove(l);\n        }\n        catch {\n        }\n    });\n    objs.filter(isMaskObject).forEach((o) => {\n        try {\n            delete o.labelObject;\n        }\n        catch {\n        }\n    });\n}\n//# sourceMappingURL=mask-label-manager.js.map","import { isMaskObject } from '../core/public-types.js';\nfunction getCurrentMaskListCanvas(context) {\n    var _a, _b;\n    return (_b = (_a = context.getCanvas) === null || _a === void 0 ? void 0 : _a.call(context)) !== null && _b !== void 0 ? _b : context.canvas;\n}\nfunction orderMasksForList(masks, order) {\n    const ordered = masks.slice();\n    return order === 'back-to-front' ? ordered : ordered.reverse();\n}\nexport function renderMaskList(context) {\n    const listEl = context.getListElement();\n    const canvas = getCurrentMaskListCanvas(context);\n    if (!listEl || !canvas)\n        return;\n    const ownerDocument = listEl.ownerDocument;\n    listEl.innerHTML = '';\n    orderMasksForList(canvas.getObjects().filter(isMaskObject), context.listOrder).forEach((mask) => {\n        const listItemElement = ownerDocument.createElement('li');\n        listItemElement.className = 'list-group-item mask-item';\n        listItemElement.textContent = mask.maskName;\n        listItemElement.dataset.maskId = String(mask.maskId);\n        listItemElement.addEventListener('click', () => {\n            const id = Number(listItemElement.dataset.maskId);\n            if (!Number.isFinite(id))\n                return;\n            const liveCanvas = getCurrentMaskListCanvas(context);\n            if (!liveCanvas)\n                return;\n            const target = liveCanvas\n                .getObjects()\n                .find((o) => isMaskObject(o) && o.maskId === id);\n            if (!target)\n                return;\n            liveCanvas.setActiveObject(target);\n            context.onMaskSelected(target);\n        });\n        listEl.appendChild(listItemElement);\n    });\n}\nexport function updateMaskListSelection(context, selectedMask) {\n    const listEl = context.getListElement();\n    if (!listEl)\n        return;\n    const selectedId = selectedMask ? String(selectedMask.maskId) : null;\n    listEl.querySelectorAll('.mask-item').forEach((item) => {\n        const isSelected = selectedId !== null && item.dataset.maskId === selectedId;\n        item.classList.toggle('active', isSelected);\n    });\n}\n//# sourceMappingURL=mask-list.js.map","export function safelyRemoveKeyboardListener(keyboardDocument, keyboardHandler) {\n    if (!keyboardDocument || !keyboardHandler)\n        return;\n    try {\n        keyboardDocument.removeEventListener('keydown', keyboardHandler);\n    }\n    catch {\n    }\n}\nexport function safelyDisposeCanvas(canvas) {\n    if (!canvas)\n        return Promise.resolve();\n    try {\n        return Promise.resolve(canvas.dispose())\n            .then(() => undefined)\n            .catch(() => {\n        });\n    }\n    catch {\n        return Promise.resolve();\n    }\n}\nexport function safelyExitActiveSession(hasSession, canvas, exitSession, clearSession) {\n    if (!hasSession || !canvas)\n        return;\n    try {\n        exitSession();\n    }\n    catch {\n    }\n    clearSession();\n}\n//# sourceMappingURL=editor-dispose.js.map","export class DomBindings {\n    constructor(resolveElement, isDisposed) {\n        Object.defineProperty(this, \"registry\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: []\n        });\n        Object.defineProperty(this, \"resolveElement\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        Object.defineProperty(this, \"isDisposed\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        this.resolveElement = resolveElement;\n        this.isDisposed = isDisposed;\n    }\n    bindIfExists(key, eventType, handler) {\n        const element = this.resolveElement(key);\n        if (!element)\n            return false;\n        const wrapped = (event) => {\n            if (this.isDisposed())\n                return;\n            handler(event);\n        };\n        element.addEventListener(eventType, wrapped);\n        this.registry.push({ elementKey: key, element, eventType, handler: wrapped });\n        return true;\n    }\n    removeAll() {\n        for (const entry of this.registry) {\n            try {\n                entry.element.removeEventListener(entry.eventType, entry.handler);\n            }\n            catch {\n            }\n        }\n        this.registry = [];\n    }\n    size() {\n        return this.registry.length;\n    }\n}\n//# sourceMappingURL=dom-bindings.js.map","const CROP_MODE_CONTROL_KEYS = [\n    'scalePercentageInput',\n    'imageBrightnessInput',\n    'imageContrastInput',\n    'imageSaturationInput',\n    'imageBlurInput',\n    'imageSharpenInput',\n    'imageGrayscaleInput',\n    'imageSepiaInput',\n    'imageVintageInput',\n    'applyImageFiltersButton',\n    'resetImageFiltersButton',\n    'clearImageFiltersButton',\n    'rotateLeftDegreesInput',\n    'rotateRightDegreesInput',\n    'rotateLeftButton',\n    'rotateRightButton',\n    'flipHorizontalButton',\n    'flipVerticalButton',\n    'createMaskButton',\n    'removeSelectedMaskButton',\n    'removeAllMasksButton',\n    'mergeMasksButton',\n    'mergeAnnotationsButton',\n    'enterTextModeButton',\n    'exitTextModeButton',\n    'textColorInput',\n    'textFontSizeInput',\n    'enterDrawModeButton',\n    'exitDrawModeButton',\n    'drawColorInput',\n    'drawBrushSizeInput',\n    'drawBrushSubModeButton',\n    'drawEraseSubModeButton',\n    'eraserBrushSizeInput',\n    'shapeKindSelect',\n    'shapeStrokeInput',\n    'shapeStrokeWidthInput',\n    'shapeFillInput',\n    'createShapeAnnotationButton',\n    'enterShapeModeButton',\n    'exitShapeModeButton',\n    'removeSelectedAnnotationButton',\n    'removeAllAnnotationsButton',\n    'deleteSelectedObjectButton',\n    'bringSelectedObjectForwardButton',\n    'sendSelectedObjectBackwardButton',\n    'bringSelectedObjectToFrontButton',\n    'sendSelectedObjectToBackButton',\n    'downloadImageButton',\n    'zoomInButton',\n    'zoomOutButton',\n    'resetImageTransformButton',\n    'undoButton',\n    'redoButton',\n    'imageInput',\n    'enterCropModeButton',\n    'cropAspectRatioSelect',\n    'applyCropButton',\n    'cancelCropButton',\n    'enterMosaicModeButton',\n    'exitMosaicModeButton',\n    'mosaicBrushSizeInput',\n    'mosaicBlockSizeInput',\n];\nconst CROP_MODE_ENABLED_KEYS = [\n    'cropAspectRatioSelect',\n    'applyCropButton',\n    'cancelCropButton',\n];\nconst TEXT_MODE_CONTROL_KEYS = CROP_MODE_CONTROL_KEYS;\nconst TEXT_MODE_ENABLED_KEYS = [\n    'exitTextModeButton',\n    'textColorInput',\n    'textFontSizeInput',\n];\nconst DRAW_MODE_CONTROL_KEYS = CROP_MODE_CONTROL_KEYS;\nconst DRAW_MODE_ENABLED_KEYS = [\n    'exitDrawModeButton',\n    'drawColorInput',\n    'drawBrushSizeInput',\n    'drawBrushSubModeButton',\n    'drawEraseSubModeButton',\n    'eraserBrushSizeInput',\n];\nconst SHAPE_MODE_CONTROL_KEYS = CROP_MODE_CONTROL_KEYS;\nconst SHAPE_MODE_ENABLED_KEYS = [\n    'shapeKindSelect',\n    'shapeStrokeInput',\n    'shapeStrokeWidthInput',\n    'shapeFillInput',\n    'createShapeAnnotationButton',\n    'enterShapeModeButton',\n    'exitShapeModeButton',\n];\nconst MOSAIC_MODE_CONTROL_KEYS = [\n    'scalePercentageInput',\n    'imageBrightnessInput',\n    'imageContrastInput',\n    'imageSaturationInput',\n    'imageBlurInput',\n    'imageSharpenInput',\n    'imageGrayscaleInput',\n    'imageSepiaInput',\n    'imageVintageInput',\n    'applyImageFiltersButton',\n    'resetImageFiltersButton',\n    'clearImageFiltersButton',\n    'rotateLeftDegreesInput',\n    'rotateRightDegreesInput',\n    'rotateLeftButton',\n    'rotateRightButton',\n    'flipHorizontalButton',\n    'flipVerticalButton',\n    'createMaskButton',\n    'removeSelectedMaskButton',\n    'removeAllMasksButton',\n    'mergeMasksButton',\n    'mergeAnnotationsButton',\n    'enterTextModeButton',\n    'exitTextModeButton',\n    'textColorInput',\n    'textFontSizeInput',\n    'enterDrawModeButton',\n    'exitDrawModeButton',\n    'drawColorInput',\n    'drawBrushSizeInput',\n    'drawBrushSubModeButton',\n    'drawEraseSubModeButton',\n    'eraserBrushSizeInput',\n    'shapeKindSelect',\n    'shapeStrokeInput',\n    'shapeStrokeWidthInput',\n    'shapeFillInput',\n    'createShapeAnnotationButton',\n    'enterShapeModeButton',\n    'exitShapeModeButton',\n    'removeSelectedAnnotationButton',\n    'removeAllAnnotationsButton',\n    'deleteSelectedObjectButton',\n    'bringSelectedObjectForwardButton',\n    'sendSelectedObjectBackwardButton',\n    'bringSelectedObjectToFrontButton',\n    'sendSelectedObjectToBackButton',\n    'downloadImageButton',\n    'zoomInButton',\n    'zoomOutButton',\n    'resetImageTransformButton',\n    'undoButton',\n    'redoButton',\n    'imageInput',\n    'enterCropModeButton',\n    'cropAspectRatioSelect',\n    'applyCropButton',\n    'cancelCropButton',\n    'enterMosaicModeButton',\n    'exitMosaicModeButton',\n    'mosaicBrushSizeInput',\n    'mosaicBlockSizeInput',\n];\nconst MOSAIC_MODE_ENABLED_KEYS = [\n    'exitMosaicModeButton',\n    'mosaicBrushSizeInput',\n    'mosaicBlockSizeInput',\n];\nfunction setModeControlState(controlKeys, enabledKeys, snapshot, setEnabled) {\n    controlKeys.forEach((key) => {\n        setEnabled(key, !snapshot.isBusy && enabledKeys.includes(key));\n    });\n}\nexport function applyEditorControlState(snapshot, setEnabled) {\n    if (snapshot.isDisposed) {\n        CROP_MODE_CONTROL_KEYS.forEach((key) => {\n            setEnabled(key, false);\n        });\n        return;\n    }\n    if (snapshot.isInCropMode) {\n        setModeControlState(CROP_MODE_CONTROL_KEYS, CROP_MODE_ENABLED_KEYS, snapshot, setEnabled);\n        return;\n    }\n    if (snapshot.isInTextMode) {\n        setModeControlState(TEXT_MODE_CONTROL_KEYS, TEXT_MODE_ENABLED_KEYS, snapshot, setEnabled);\n        return;\n    }\n    if (snapshot.isInDrawMode) {\n        setModeControlState(DRAW_MODE_CONTROL_KEYS, DRAW_MODE_ENABLED_KEYS, snapshot, setEnabled);\n        return;\n    }\n    if (snapshot.isInShapeMode) {\n        setModeControlState(SHAPE_MODE_CONTROL_KEYS, SHAPE_MODE_ENABLED_KEYS, snapshot, setEnabled);\n        return;\n    }\n    if (snapshot.isInMosaicMode) {\n        MOSAIC_MODE_CONTROL_KEYS.forEach((key) => {\n            setEnabled(key, !snapshot.isBusy &&\n                !snapshot.isMosaicApplying &&\n                MOSAIC_MODE_ENABLED_KEYS.includes(key));\n        });\n        setEnabled('imageInput', false);\n        return;\n    }\n    setEnabled('scalePercentageInput', snapshot.hasImage && !snapshot.isBusy);\n    setEnabled('imageBrightnessInput', snapshot.hasImage && !snapshot.isBusy);\n    setEnabled('imageContrastInput', snapshot.hasImage && !snapshot.isBusy);\n    setEnabled('imageSaturationInput', snapshot.hasImage && !snapshot.isBusy);\n    setEnabled('imageBlurInput', snapshot.hasImage && !snapshot.isBusy);\n    setEnabled('imageSharpenInput', snapshot.hasImage && !snapshot.isBusy);\n    setEnabled('imageGrayscaleInput', snapshot.hasImage && !snapshot.isBusy);\n    setEnabled('imageSepiaInput', snapshot.hasImage && !snapshot.isBusy);\n    setEnabled('imageVintageInput', snapshot.hasImage && !snapshot.isBusy);\n    setEnabled('applyImageFiltersButton', snapshot.hasImage && !snapshot.isBusy);\n    setEnabled('resetImageFiltersButton', snapshot.hasImage && !snapshot.isBusy);\n    setEnabled('clearImageFiltersButton', snapshot.hasImage && !snapshot.isBusy);\n    setEnabled('rotateLeftDegreesInput', snapshot.hasImage && !snapshot.isBusy);\n    setEnabled('rotateRightDegreesInput', snapshot.hasImage && !snapshot.isBusy);\n    setEnabled('zoomInButton', snapshot.hasImage && !snapshot.isBusy && snapshot.currentScale < snapshot.maxScale);\n    setEnabled('zoomOutButton', snapshot.hasImage && !snapshot.isBusy && snapshot.currentScale > snapshot.minScale);\n    setEnabled('rotateLeftButton', snapshot.hasImage && !snapshot.isBusy);\n    setEnabled('rotateRightButton', snapshot.hasImage && !snapshot.isBusy);\n    setEnabled('flipHorizontalButton', snapshot.hasImage && !snapshot.isBusy);\n    setEnabled('flipVerticalButton', snapshot.hasImage && !snapshot.isBusy);\n    setEnabled('createMaskButton', snapshot.hasImage && !snapshot.isBusy);\n    setEnabled('removeSelectedMaskButton', snapshot.hasSelectedMask && !snapshot.isBusy);\n    setEnabled('removeAllMasksButton', snapshot.hasMasks && !snapshot.isBusy);\n    setEnabled('mergeMasksButton', snapshot.hasImage && snapshot.hasMasks && !snapshot.isBusy);\n    setEnabled('removeSelectedAnnotationButton', snapshot.hasSelectedAnnotation && !snapshot.isBusy);\n    setEnabled('removeAllAnnotationsButton', snapshot.hasAnnotations && !snapshot.isBusy);\n    setEnabled('deleteSelectedObjectButton', snapshot.hasSelectedEditableObject && !snapshot.isBusy);\n    setEnabled('mergeAnnotationsButton', snapshot.hasImage && snapshot.hasAnnotations && !snapshot.isBusy);\n    setEnabled('bringSelectedObjectForwardButton', snapshot.hasSelectedEditableObject && !snapshot.isBusy);\n    setEnabled('sendSelectedObjectBackwardButton', snapshot.hasSelectedEditableObject && !snapshot.isBusy);\n    setEnabled('bringSelectedObjectToFrontButton', snapshot.hasSelectedEditableObject && !snapshot.isBusy);\n    setEnabled('sendSelectedObjectToBackButton', snapshot.hasSelectedEditableObject && !snapshot.isBusy);\n    setEnabled('downloadImageButton', snapshot.hasImage && !snapshot.isBusy);\n    setEnabled('resetImageTransformButton', snapshot.hasImage && !snapshot.isDefaultTransform && !snapshot.isBusy);\n    setEnabled('undoButton', snapshot.hasImage && !snapshot.isBusy && snapshot.canUndo);\n    setEnabled('redoButton', snapshot.hasImage && !snapshot.isBusy && snapshot.canRedo);\n    setEnabled('enterCropModeButton', snapshot.hasImage && !snapshot.isBusy);\n    setEnabled('cropAspectRatioSelect', snapshot.hasImage && !snapshot.isBusy);\n    setEnabled('enterMosaicModeButton', snapshot.hasImage && !snapshot.isBusy);\n    setEnabled('enterTextModeButton', snapshot.hasImage && !snapshot.isBusy);\n    setEnabled('enterDrawModeButton', snapshot.hasImage && !snapshot.isBusy);\n    setEnabled('enterShapeModeButton', snapshot.hasImage && !snapshot.isBusy);\n    setEnabled('createShapeAnnotationButton', snapshot.hasImage && !snapshot.isBusy);\n    setEnabled('exitMosaicModeButton', false);\n    setEnabled('exitTextModeButton', false);\n    setEnabled('exitDrawModeButton', false);\n    setEnabled('exitShapeModeButton', false);\n    setEnabled('mosaicBrushSizeInput', !snapshot.isDisposed);\n    setEnabled('mosaicBlockSizeInput', !snapshot.isDisposed);\n    setEnabled('textColorInput', !snapshot.isDisposed);\n    setEnabled('textFontSizeInput', !snapshot.isDisposed);\n    setEnabled('drawColorInput', !snapshot.isDisposed);\n    setEnabled('drawBrushSizeInput', !snapshot.isDisposed);\n    setEnabled('drawBrushSubModeButton', false);\n    setEnabled('drawEraseSubModeButton', false);\n    setEnabled('eraserBrushSizeInput', !snapshot.isDisposed);\n    setEnabled('shapeKindSelect', !snapshot.isDisposed);\n    setEnabled('shapeStrokeInput', !snapshot.isDisposed);\n    setEnabled('shapeStrokeWidthInput', !snapshot.isDisposed);\n    setEnabled('shapeFillInput', !snapshot.isDisposed);\n    setEnabled('imageInput', !snapshot.isBusy);\n    setEnabled('applyCropButton', false);\n    setEnabled('cancelCropButton', false);\n}\n//# sourceMappingURL=editor-control-state.js.map","import { isAnnotationObject, isEditableOverlayObject, isMaskObject } from '../core/public-types.js';\nexport function buildEditorControlSnapshot(runtime) {\n    var _a, _b, _c;\n    if (!runtime.canvas)\n        return null;\n    const hasImage = !!runtime.originalImage;\n    const masks = hasImage ? runtime.canvas.getObjects().filter(isMaskObject) : [];\n    const annotations = hasImage ? runtime.canvas.getObjects().filter(isAnnotationObject) : [];\n    const activeObject = runtime.canvas.getActiveObject();\n    return {\n        hasImage,\n        hasMasks: masks.length > 0,\n        hasAnnotations: annotations.length > 0,\n        hasSelectedMask: !!(activeObject && isMaskObject(activeObject)),\n        hasSelectedAnnotation: !!(activeObject && isAnnotationObject(activeObject)),\n        hasSelectedEditableObject: !!activeObject && isEditableOverlayObject(activeObject),\n        isDefaultTransform: runtime.currentScale === 1 &&\n            runtime.currentRotation === 0 &&\n            !((_a = runtime.originalImage) === null || _a === void 0 ? void 0 : _a.flipX) &&\n            !((_b = runtime.originalImage) === null || _b === void 0 ? void 0 : _b.flipY),\n        currentScale: runtime.currentScale,\n        minScale: runtime.options.minScale,\n        maxScale: runtime.options.maxScale,\n        canUndo: runtime.historyManager.canUndo(),\n        canRedo: runtime.historyManager.canRedo(),\n        isBusy: runtime.operationGuard.isBusy() || runtime.animQueue.isBusy(),\n        isDisposed: runtime.isDisposed,\n        isInCropMode: runtime.cropSession !== null,\n        isInMosaicMode: runtime.mosaicSession !== null,\n        isInTextMode: runtime.textSession !== null,\n        isInDrawMode: runtime.drawSession !== null,\n        isInShapeMode: runtime.shapeSession !== null,\n        isMosaicApplying: ((_c = runtime.mosaicSession) === null || _c === void 0 ? void 0 : _c.isApplying) === true,\n    };\n}\n//# sourceMappingURL=editor-control-snapshot.js.map","function recordElementOriginalState(context, key, element) {\n    if (!context.originalAriaDisabledMap.has(key)) {\n        context.originalAriaDisabledMap.set(key, element.getAttribute('aria-disabled'));\n    }\n    if (!context.originalPointerEventsMap.has(key)) {\n        context.originalPointerEventsMap.set(key, element.style.pointerEvents || '');\n    }\n    if ('disabled' in element && !context.originalDisabledMap.has(key)) {\n        context.originalDisabledMap.set(key, !!element.disabled);\n    }\n}\nexport function setEditorControlEnabled(context, key, isEnabled) {\n    var _a;\n    const controlElement = context.getElement(key);\n    if (!controlElement)\n        return;\n    recordElementOriginalState(context, key, controlElement);\n    if ('disabled' in controlElement) {\n        const formControl = controlElement;\n        const nextDisabled = !isEnabled;\n        if (formControl.disabled !== nextDisabled)\n            formControl.disabled = nextDisabled;\n        return;\n    }\n    if (!isEnabled) {\n        controlElement.setAttribute('aria-disabled', 'true');\n        controlElement.style.pointerEvents = 'none';\n    }\n    else {\n        const originalAria = context.originalAriaDisabledMap.get(key);\n        if (originalAria === null || originalAria === undefined) {\n            controlElement.removeAttribute('aria-disabled');\n        }\n        else {\n            controlElement.setAttribute('aria-disabled', originalAria);\n        }\n        controlElement.style.pointerEvents = (_a = context.originalPointerEventsMap.get(key)) !== null && _a !== void 0 ? _a : '';\n    }\n}\nexport function restoreEditorControlOriginalStates(context) {\n    var _a, _b;\n    for (const key of Object.keys(context.elements)) {\n        const element = context.getElement(key);\n        if (!element)\n            continue;\n        if ('disabled' in element && context.originalDisabledMap.has(key)) {\n            element.disabled =\n                (_a = context.originalDisabledMap.get(key)) !== null && _a !== void 0 ? _a : false;\n        }\n        if (context.originalAriaDisabledMap.has(key)) {\n            const originalAria = context.originalAriaDisabledMap.get(key);\n            if (originalAria === null || originalAria === undefined) {\n                element.removeAttribute('aria-disabled');\n            }\n            else {\n                element.setAttribute('aria-disabled', originalAria);\n            }\n        }\n        if (context.originalPointerEventsMap.has(key)) {\n            element.style.pointerEvents = (_b = context.originalPointerEventsMap.get(key)) !== null && _b !== void 0 ? _b : '';\n        }\n    }\n    context.originalDisabledMap.clear();\n    context.originalAriaDisabledMap.clear();\n    context.originalPointerEventsMap.clear();\n}\n//# sourceMappingURL=editor-control-elements.js.map","function bindElement(context, key, eventType, handler) {\n    context.bindings.bindIfExists(key, eventType, handler);\n}\nfunction parseInputNumber(context, key) {\n    return parseFloat(context.getInputValue(key));\n}\nfunction parseEventInputNumber(event) {\n    return parseFloat(event.target.value);\n}\nfunction handleAsyncAction(context, operation, action) {\n    try {\n        void Promise.resolve(action()).catch((error) => {\n            context.actions.reportAsyncActionError(operation, error);\n        });\n    }\n    catch (error) {\n        context.actions.reportAsyncActionError(operation, error);\n    }\n}\nfunction getEventInputValue(event) {\n    return event.target.value;\n}\nfunction getEventInputChecked(event) {\n    return event.target.checked;\n}\nfunction parseShapeKind(value) {\n    if (value === 'rect' || value === 'line' || value === 'arrow')\n        return value;\n    return null;\n}\nfunction bindUploadEvents(context) {\n    bindElement(context, 'uploadArea', 'click', () => {\n        context.actions.openImagePicker();\n    });\n    bindElement(context, 'imageInput', 'change', (event) => {\n        var _a;\n        const file = (_a = event.target.files) === null || _a === void 0 ? void 0 : _a[0];\n        if (file) {\n            handleAsyncAction(context, 'loadImageFile', () => context.actions.loadImageFile(file));\n        }\n    });\n}\nfunction bindImageFilterEvents(context) {\n    bindThrottledNumberInput(context, 'imageBrightnessInput', (value) => {\n        context.actions.setImageFilterConfig({ brightness: value });\n    });\n    bindThrottledNumberInput(context, 'imageContrastInput', (value) => {\n        context.actions.setImageFilterConfig({ contrast: value });\n    });\n    bindThrottledNumberInput(context, 'imageSaturationInput', (value) => {\n        context.actions.setImageFilterConfig({ saturation: value });\n    });\n    bindThrottledNumberInput(context, 'imageBlurInput', (value) => {\n        context.actions.setImageFilterConfig({ blur: value });\n    });\n    bindThrottledNumberInput(context, 'imageSharpenInput', (value) => {\n        context.actions.setImageFilterConfig({ sharpen: value });\n    });\n    bindBooleanInput(context, 'imageGrayscaleInput', (value) => {\n        context.actions.setImageFilterConfig({ grayscale: value });\n    });\n    bindBooleanInput(context, 'imageSepiaInput', (value) => {\n        context.actions.setImageFilterConfig({ sepia: value });\n    });\n    bindBooleanInput(context, 'imageVintageInput', (value) => {\n        context.actions.setImageFilterConfig({ vintage: value });\n    });\n    bindElement(context, 'applyImageFiltersButton', 'click', () => {\n        context.actions.commitImageFilters();\n    });\n    bindElement(context, 'resetImageFiltersButton', 'click', () => {\n        context.actions.resetImageFilterConfig();\n    });\n    bindElement(context, 'clearImageFiltersButton', 'click', () => {\n        context.actions.clearImageFilters();\n    });\n}\nfunction bindTransformEvents(context) {\n    bindElement(context, 'zoomInButton', 'click', () => {\n        handleAsyncAction(context, 'zoomIn', () => context.actions.zoomIn());\n    });\n    bindElement(context, 'zoomOutButton', 'click', () => {\n        handleAsyncAction(context, 'zoomOut', () => context.actions.zoomOut());\n    });\n    bindElement(context, 'resetImageTransformButton', 'click', () => {\n        handleAsyncAction(context, 'resetImageTransform', () => context.actions.resetImageTransform());\n    });\n    bindElement(context, 'flipHorizontalButton', 'click', () => {\n        handleAsyncAction(context, 'flipHorizontal', () => context.actions.flipHorizontal());\n    });\n    bindElement(context, 'flipVerticalButton', 'click', () => {\n        handleAsyncAction(context, 'flipVertical', () => context.actions.flipVertical());\n    });\n    bindElement(context, 'rotateLeftButton', 'click', () => {\n        const parsedStep = parseInputNumber(context, 'rotateLeftDegreesInput');\n        const step = Number.isNaN(parsedStep) ? context.rotationStep : parsedStep;\n        handleAsyncAction(context, 'rotateLeft', () => context.actions.rotateLeft(step));\n    });\n    bindElement(context, 'rotateRightButton', 'click', () => {\n        const parsedStep = parseInputNumber(context, 'rotateRightDegreesInput');\n        const step = Number.isNaN(parsedStep) ? context.rotationStep : parsedStep;\n        handleAsyncAction(context, 'rotateRight', () => context.actions.rotateRight(step));\n    });\n}\nfunction bindMaskEvents(context) {\n    bindElement(context, 'createMaskButton', 'click', () => {\n        context.actions.createMask();\n    });\n    bindElement(context, 'removeSelectedMaskButton', 'click', () => {\n        context.actions.removeSelectedMask();\n    });\n    bindElement(context, 'removeAllMasksButton', 'click', () => {\n        context.actions.removeAllMasks();\n    });\n    bindElement(context, 'mergeMasksButton', 'click', () => {\n        handleAsyncAction(context, 'mergeMasks', () => context.actions.mergeMasks());\n    });\n}\nfunction bindAnnotationEvents(context) {\n    bindElement(context, 'mergeAnnotationsButton', 'click', () => {\n        handleAsyncAction(context, 'mergeAnnotations', () => context.actions.mergeAnnotations());\n    });\n    bindElement(context, 'enterTextModeButton', 'click', () => {\n        context.actions.enterTextMode();\n    });\n    bindElement(context, 'exitTextModeButton', 'click', () => {\n        context.actions.exitTextMode();\n    });\n    bindElement(context, 'enterDrawModeButton', 'click', () => {\n        context.actions.enterDrawMode();\n    });\n    bindElement(context, 'exitDrawModeButton', 'click', () => {\n        context.actions.exitDrawMode();\n    });\n    bindElement(context, 'createShapeAnnotationButton', 'click', () => {\n        context.actions.createShapeAnnotation();\n    });\n    bindElement(context, 'enterShapeModeButton', 'click', () => {\n        const shape = parseShapeKind(context.getInputValue('shapeKindSelect'));\n        if (!shape)\n            return;\n        context.actions.enterShapeMode(shape);\n    });\n    bindElement(context, 'exitShapeModeButton', 'click', () => {\n        context.actions.exitShapeMode();\n    });\n    bindElement(context, 'removeSelectedAnnotationButton', 'click', () => {\n        context.actions.removeSelectedAnnotation();\n    });\n    bindElement(context, 'removeAllAnnotationsButton', 'click', () => {\n        context.actions.removeAllAnnotations();\n    });\n    bindElement(context, 'deleteSelectedObjectButton', 'click', () => {\n        context.actions.deleteSelectedObject();\n    });\n    bindElement(context, 'bringSelectedObjectForwardButton', 'click', () => {\n        context.actions.bringSelectedObjectForward();\n    });\n    bindElement(context, 'sendSelectedObjectBackwardButton', 'click', () => {\n        context.actions.sendSelectedObjectBackward();\n    });\n    bindElement(context, 'bringSelectedObjectToFrontButton', 'click', () => {\n        context.actions.bringSelectedObjectToFront();\n    });\n    bindElement(context, 'sendSelectedObjectToBackButton', 'click', () => {\n        context.actions.sendSelectedObjectToBack();\n    });\n    bindStringInput(context, 'textColorInput', (value) => {\n        context.actions.setTextColor(value);\n    });\n    bindNumberInput(context, 'textFontSizeInput', (value) => {\n        context.actions.setTextFontSize(value);\n    });\n    bindStringInput(context, 'drawColorInput', (value) => {\n        context.actions.setDrawColor(value);\n    });\n    bindNumberInput(context, 'drawBrushSizeInput', (value) => {\n        context.actions.setDrawBrushSize(value);\n    });\n    bindElement(context, 'drawBrushSubModeButton', 'click', () => {\n        context.actions.setDrawSubMode('brush');\n    });\n    bindElement(context, 'drawEraseSubModeButton', 'click', () => {\n        context.actions.setDrawSubMode('erase');\n    });\n    bindNumberInput(context, 'eraserBrushSizeInput', (value) => {\n        context.actions.setEraserBrushSize(value);\n    });\n    bindStringInput(context, 'shapeKindSelect', (value) => {\n        const shape = parseShapeKind(value);\n        if (!shape)\n            return;\n        context.actions.setShapeConfig({ shape });\n    });\n    bindStringInput(context, 'shapeStrokeInput', (value) => {\n        context.actions.setShapeConfig({ stroke: value });\n    });\n    bindNumberInput(context, 'shapeStrokeWidthInput', (value) => {\n        context.actions.setShapeConfig({ strokeWidth: value });\n    });\n    bindStringInput(context, 'shapeFillInput', (value) => {\n        context.actions.setShapeConfig({ fill: value });\n    });\n}\nfunction bindHistoryEvents(context) {\n    bindElement(context, 'downloadImageButton', 'click', () => {\n        handleAsyncAction(context, 'downloadImage', () => context.actions.downloadImage());\n    });\n    bindElement(context, 'undoButton', 'click', () => {\n        handleAsyncAction(context, 'undo', () => context.actions.undo());\n    });\n    bindElement(context, 'redoButton', 'click', () => {\n        handleAsyncAction(context, 'redo', () => context.actions.redo());\n    });\n}\nfunction bindCropEvents(context) {\n    bindElement(context, 'enterCropModeButton', 'click', () => {\n        context.actions.enterCropMode();\n    });\n    bindElement(context, 'cropAspectRatioSelect', 'change', () => {\n        context.actions.updateSelectedCropAspectRatio();\n    });\n    bindElement(context, 'applyCropButton', 'click', () => {\n        void context.actions.applyCrop().catch((error) => {\n            context.actions.reportCropApplyError(error);\n        });\n    });\n    bindElement(context, 'cancelCropButton', 'click', () => {\n        context.actions.cancelCrop();\n    });\n}\nfunction bindMosaicEvents(context) {\n    bindElement(context, 'enterMosaicModeButton', 'click', () => {\n        context.actions.enterMosaicMode();\n    });\n    bindElement(context, 'exitMosaicModeButton', 'click', () => {\n        context.actions.exitMosaicMode();\n    });\n    bindNumberInput(context, 'mosaicBrushSizeInput', (value) => {\n        context.actions.setMosaicBrushSize(value);\n    });\n    bindNumberInput(context, 'mosaicBlockSizeInput', (value) => {\n        context.actions.setMosaicBlockSize(value);\n    });\n}\nfunction bindStringInput(context, key, applyValue) {\n    let lastAppliedValue = null;\n    const handler = (event) => {\n        const value = getEventInputValue(event);\n        if (value === lastAppliedValue)\n            return;\n        lastAppliedValue = value;\n        applyValue(value);\n    };\n    bindElement(context, key, 'input', handler);\n    bindElement(context, key, 'change', handler);\n}\nfunction bindThrottledNumberInput(context, key, applyValue) {\n    let lastAppliedValue = null;\n    let pendingValue = 0;\n    let hasPendingValue = false;\n    let scheduled = false;\n    const applyIfChanged = (value) => {\n        if (lastAppliedValue !== null && Object.is(value, lastAppliedValue))\n            return;\n        lastAppliedValue = value;\n        applyValue(value);\n    };\n    const flush = () => {\n        scheduled = false;\n        if (!hasPendingValue)\n            return;\n        const value = pendingValue;\n        hasPendingValue = false;\n        applyIfChanged(value);\n    };\n    const scheduleFlush = () => {\n        if (scheduled)\n            return;\n        scheduled = true;\n        if (typeof globalThis.requestAnimationFrame === 'function') {\n            globalThis.requestAnimationFrame(() => flush());\n            return;\n        }\n        flush();\n    };\n    const inputHandler = (event) => {\n        pendingValue = parseEventInputNumber(event);\n        hasPendingValue = true;\n        scheduleFlush();\n    };\n    const changeHandler = (event) => {\n        pendingValue = parseEventInputNumber(event);\n        hasPendingValue = true;\n        flush();\n    };\n    bindElement(context, key, 'input', inputHandler);\n    bindElement(context, key, 'change', changeHandler);\n}\nfunction bindNumberInput(context, key, applyValue) {\n    let lastAppliedValue = null;\n    const handler = (event) => {\n        const value = parseEventInputNumber(event);\n        if (lastAppliedValue !== null && Object.is(value, lastAppliedValue))\n            return;\n        lastAppliedValue = value;\n        applyValue(value);\n    };\n    bindElement(context, key, 'input', handler);\n    bindElement(context, key, 'change', handler);\n}\nfunction bindBooleanInput(context, key, applyValue) {\n    let lastAppliedValue = null;\n    const handler = (event) => {\n        const value = getEventInputChecked(event);\n        if (lastAppliedValue !== null && value === lastAppliedValue)\n            return;\n        lastAppliedValue = value;\n        applyValue(value);\n    };\n    bindElement(context, key, 'input', handler);\n    bindElement(context, key, 'change', handler);\n}\nexport function bindEditorDomEvents(context) {\n    bindUploadEvents(context);\n    bindImageFilterEvents(context);\n    bindTransformEvents(context);\n    bindMaskEvents(context);\n    bindAnnotationEvents(context);\n    bindHistoryEvents(context);\n    bindCropEvents(context);\n    bindMosaicEvents(context);\n}\n//# sourceMappingURL=editor-dom-events.js.map","import { isInputElement, isInputOrSelectElement, resolveDomElement, } from '../core/editor-elements.js';\nfunction normalizeStepScale(value) {\n    const rounded = Math.round(value * 1000000) / 1000000;\n    return Number.isFinite(rounded) ? rounded : 1;\n}\nexport function createEditorDomEventActions(runtime, ownerDocument, host) {\n    return {\n        reportAsyncActionError: (operation, error) => {\n            host.reportAsyncActionError(operation, error);\n        },\n        openImagePicker: () => {\n            var _a;\n            (_a = resolveDomElement(runtime.elements.imageInput, ownerDocument, isInputElement)) === null || _a === void 0 ? void 0 : _a.click();\n        },\n        loadImageFile: (file) => host.loadImageFile(file),\n        zoomIn: () => host.scaleImage(normalizeStepScale(runtime.currentScale + runtime.options.scaleStep)),\n        zoomOut: () => host.scaleImage(normalizeStepScale(runtime.currentScale - runtime.options.scaleStep)),\n        resetImageTransform: () => host.resetImageTransform(),\n        flipHorizontal: () => host.flipHorizontal(),\n        flipVertical: () => host.flipVertical(),\n        rotateLeft: (degrees) => host.rotateImage(runtime.currentRotation - degrees),\n        rotateRight: (degrees) => host.rotateImage(runtime.currentRotation + degrees),\n        setImageFilterConfig: (config) => {\n            host.setImageFilterConfig(config);\n        },\n        resetImageFilterConfig: () => {\n            host.resetImageFilterConfig();\n        },\n        clearImageFilters: () => {\n            host.clearImageFilters();\n        },\n        commitImageFilters: () => {\n            host.commitImageFilters();\n        },\n        createMask: () => {\n            host.createMask();\n        },\n        removeSelectedMask: () => {\n            host.removeSelectedMask();\n        },\n        removeAllMasks: () => {\n            host.removeAllMasks();\n        },\n        mergeMasks: () => host.mergeMasks(),\n        mergeAnnotations: () => host.mergeAnnotations(),\n        enterTextMode: () => {\n            host.enterTextMode();\n        },\n        exitTextMode: () => {\n            host.exitTextMode();\n        },\n        enterDrawMode: () => {\n            host.enterDrawMode();\n        },\n        exitDrawMode: () => {\n            host.exitDrawMode();\n        },\n        createShapeAnnotation: () => {\n            host.createShapeAnnotation();\n        },\n        enterShapeMode: (shape) => {\n            host.enterShapeMode(shape);\n        },\n        exitShapeMode: () => {\n            host.exitShapeMode();\n        },\n        removeSelectedAnnotation: () => {\n            host.removeSelectedAnnotation();\n        },\n        removeAllAnnotations: () => {\n            host.removeAllAnnotations();\n        },\n        deleteSelectedObject: () => {\n            host.deleteSelectedObject();\n        },\n        bringSelectedObjectForward: () => {\n            host.bringSelectedObjectForward();\n        },\n        sendSelectedObjectBackward: () => {\n            host.sendSelectedObjectBackward();\n        },\n        bringSelectedObjectToFront: () => {\n            host.bringSelectedObjectToFront();\n        },\n        sendSelectedObjectToBack: () => {\n            host.sendSelectedObjectToBack();\n        },\n        downloadImage: () => host.downloadImage(),\n        undo: () => host.undo(),\n        redo: () => host.redo(),\n        enterCropMode: () => {\n            host.enterCropMode({ aspectRatio: getSelectedCropAspectRatio(runtime, ownerDocument) });\n        },\n        updateSelectedCropAspectRatio: () => {\n            if (runtime.cropSession) {\n                host.setCropAspectRatio(getSelectedCropAspectRatio(runtime, ownerDocument));\n            }\n        },\n        applyCrop: () => host.applyCrop(),\n        reportCropApplyError: (error) => {\n            host.reportCropApplyError(error);\n        },\n        cancelCrop: () => {\n            host.cancelCrop();\n        },\n        enterMosaicMode: () => {\n            host.enterMosaicMode();\n        },\n        exitMosaicMode: () => {\n            host.exitMosaicMode();\n        },\n        setMosaicBrushSize: (size) => {\n            host.setMosaicBrushSize(size);\n        },\n        setMosaicBlockSize: (size) => {\n            host.setMosaicBlockSize(size);\n        },\n        setTextColor: (color) => {\n            host.setTextColor(color);\n        },\n        setTextFontSize: (size) => {\n            host.setTextFontSize(size);\n        },\n        setDrawColor: (color) => {\n            host.setDrawColor(color);\n        },\n        setDrawBrushSize: (size) => {\n            host.setDrawBrushSize(size);\n        },\n        setDrawSubMode: (mode) => {\n            host.setDrawSubMode(mode);\n        },\n        setEraserBrushSize: (size) => {\n            host.setEraserConfig({ brushSize: size });\n        },\n        setShapeConfig: (config) => {\n            host.setShapeConfig(config);\n        },\n    };\n}\nfunction getSelectedCropAspectRatio(runtime, ownerDocument) {\n    const inputEl = resolveDomElement(runtime.elements.cropAspectRatioSelect, ownerDocument, isInputOrSelectElement);\n    const value = inputEl && 'value' in inputEl ? String(inputEl.value).trim() : '';\n    return (value || 'free');\n}\n//# sourceMappingURL=editor-dom-actions.js.map","function isValueControl(element) {\n    return !!element && 'value' in element;\n}\nfunction isCheckedInput(element) {\n    return !!element && 'checked' in element;\n}\nfunction isReadOnlyControl(element) {\n    return 'readOnly' in element && element.readOnly;\n}\nfunction isColorInput(element) {\n    return element.tagName.toLowerCase() === 'input' && element.type === 'color';\n}\nfunction syncInputValue(element, value) {\n    if (!isValueControl(element))\n        return;\n    const ownerDocument = element.ownerDocument;\n    if (ownerDocument.activeElement === element && !isReadOnlyControl(element))\n        return;\n    if (isColorInput(element) && !/^#[0-9a-f]{6}$/i.test(value))\n        return;\n    if (element.value !== value)\n        element.value = value;\n}\nfunction syncInputChecked(element, checked) {\n    if (!isCheckedInput(element))\n        return;\n    if (element.checked !== checked)\n        element.checked = checked;\n}\nfunction syncToggleButton(element, pressed) {\n    if (!element)\n        return;\n    const next = pressed ? 'true' : 'false';\n    if (element.getAttribute('aria-pressed') !== next) {\n        element.setAttribute('aria-pressed', next);\n    }\n}\nfunction syncValue(getElement, key, value) {\n    syncInputValue(getElement(key), value);\n}\nfunction syncChecked(getElement, key, checked) {\n    syncInputChecked(getElement(key), checked);\n}\nfunction syncPressed(getElement, key, pressed) {\n    syncToggleButton(getElement(key), pressed);\n}\nexport function applyEditorInputState(snapshot, getElement) {\n    syncValue(getElement, 'scalePercentageInput', String(Math.round(snapshot.currentScale * 100)));\n    syncValue(getElement, 'imageBrightnessInput', String(snapshot.imageFilterConfig.brightness));\n    syncValue(getElement, 'imageContrastInput', String(snapshot.imageFilterConfig.contrast));\n    syncValue(getElement, 'imageSaturationInput', String(snapshot.imageFilterConfig.saturation));\n    syncValue(getElement, 'imageBlurInput', String(snapshot.imageFilterConfig.blur));\n    syncValue(getElement, 'imageSharpenInput', String(snapshot.imageFilterConfig.sharpen));\n    syncChecked(getElement, 'imageGrayscaleInput', snapshot.imageFilterConfig.grayscale);\n    syncChecked(getElement, 'imageSepiaInput', snapshot.imageFilterConfig.sepia);\n    syncChecked(getElement, 'imageVintageInput', snapshot.imageFilterConfig.vintage);\n    syncValue(getElement, 'mosaicBrushSizeInput', String(snapshot.mosaicConfig.brushSize));\n    syncValue(getElement, 'mosaicBlockSizeInput', String(snapshot.mosaicConfig.blockSize));\n    syncValue(getElement, 'textColorInput', snapshot.textConfig.fill);\n    syncValue(getElement, 'textFontSizeInput', String(snapshot.textConfig.fontSize));\n    syncValue(getElement, 'drawColorInput', snapshot.drawConfig.color);\n    syncValue(getElement, 'drawBrushSizeInput', String(snapshot.drawConfig.brushSize));\n    syncPressed(getElement, 'drawBrushSubModeButton', snapshot.drawSubMode === 'brush');\n    syncPressed(getElement, 'drawEraseSubModeButton', snapshot.drawSubMode === 'erase');\n    syncValue(getElement, 'eraserBrushSizeInput', String(snapshot.eraserConfig.brushSize));\n    syncValue(getElement, 'shapeKindSelect', snapshot.shapeConfig.shape);\n    syncValue(getElement, 'shapeStrokeInput', snapshot.shapeConfig.stroke);\n    syncValue(getElement, 'shapeStrokeWidthInput', String(snapshot.shapeConfig.strokeWidth));\n    syncValue(getElement, 'shapeFillInput', snapshot.shapeConfig.fill);\n}\n//# sourceMappingURL=editor-input-state.js.map","import { isTextAnnotationObject } from '../core/public-types.js';\nexport function bindEditorKeyboardEvents(access) {\n    const ownerDocument = access.getOwnerDocument();\n    const keyboardDocument = access.getKeyboardDocument();\n    const keyboardHandler = access.getKeyboardHandler();\n    if (keyboardHandler && keyboardDocument) {\n        access.removeKeyboardListener(keyboardDocument, keyboardHandler);\n    }\n    const handler = (event) => {\n        access.handleKeyboardEvent(event);\n    };\n    access.setKeyboardBinding(ownerDocument, handler);\n    ownerDocument.addEventListener('keydown', handler);\n}\nfunction isNativeEditableElement(element) {\n    var _a;\n    if (!element)\n        return false;\n    const activeElement = element;\n    const tagName = String((_a = activeElement.tagName) !== null && _a !== void 0 ? _a : '').toLowerCase();\n    return (tagName === 'input' ||\n        tagName === 'textarea' ||\n        tagName === 'select' ||\n        activeElement.isContentEditable === true);\n}\nfunction getDeepActiveElement(root) {\n    var _a, _b;\n    let activeElement = (_a = root === null || root === void 0 ? void 0 : root.activeElement) !== null && _a !== void 0 ? _a : null;\n    while ((_b = activeElement === null || activeElement === void 0 ? void 0 : activeElement.shadowRoot) === null || _b === void 0 ? void 0 : _b.activeElement) {\n        activeElement = activeElement.shadowRoot.activeElement;\n    }\n    return activeElement;\n}\nexport function isNativeTextInputActive(keyboardDocument, event) {\n    const composedPath = typeof (event === null || event === void 0 ? void 0 : event.composedPath) === 'function' ? event.composedPath() : undefined;\n    if (composedPath === null || composedPath === void 0 ? void 0 : composedPath.some(isNativeEditableElement))\n        return true;\n    return isNativeEditableElement(getDeepActiveElement(keyboardDocument));\n}\nexport function isFabricTextEditingActive(canvas) {\n    const activeObject = canvas === null || canvas === void 0 ? void 0 : canvas.getActiveObject();\n    return !!(activeObject &&\n        isTextAnnotationObject(activeObject) &&\n        activeObject.isEditing === true);\n}\nexport function handleEditorKeyboardEvent(access, event) {\n    if (access.isDisposed())\n        return;\n    const canvas = access.getCanvas();\n    if (event.key === 'Delete' || event.key === 'Backspace') {\n        if (isNativeTextInputActive(access.getKeyboardDocument(), event) ||\n            isFabricTextEditingActive(canvas)) {\n            return;\n        }\n        event.preventDefault();\n        access.deleteSelectedObject();\n        return;\n    }\n    if (event.key !== 'Escape')\n        return;\n    if (isFabricTextEditingActive(canvas) && canvas) {\n        access.finalizeActiveTextEditing(false);\n        event.preventDefault();\n        return;\n    }\n    if (access.hasTextSession()) {\n        event.preventDefault();\n        access.exitTextMode();\n    }\n    else if (access.hasDrawSession()) {\n        event.preventDefault();\n        access.exitDrawMode();\n    }\n    else if (access.hasMosaicSession()) {\n        event.preventDefault();\n        access.exitMosaicMode();\n    }\n    else if (access.hasCropSession()) {\n        event.preventDefault();\n        access.cancelCrop();\n    }\n}\n//# sourceMappingURL=editor-keyboard-events.js.map","const CROP_SESSION_ALLOWED_OPERATIONS = new Set([\n    'setCropAspectRatio',\n    'applyCrop',\n    'cancelCrop',\n    'saveState',\n]);\nconst MOSAIC_SESSION_ALLOWED_OPERATIONS = new Set([\n    'exitMosaicMode',\n    'applyMosaic',\n    'setMosaicConfig',\n    'resetMosaicConfig',\n    'setMosaicBrushSize',\n    'setMosaicBlockSize',\n    'saveState',\n]);\nconst TOOL_MODE_ALLOWED_OPERATIONS = {\n    crop: CROP_SESSION_ALLOWED_OPERATIONS,\n    mosaic: MOSAIC_SESSION_ALLOWED_OPERATIONS,\n    text: new Set([\n        'exitTextMode',\n        'createTextAnnotation',\n        'setTextConfig',\n        'resetTextConfig',\n        'setTextColor',\n        'setTextFontSize',\n        'saveState',\n    ]),\n    draw: new Set([\n        'exitDrawMode',\n        'setDrawConfig',\n        'resetDrawConfig',\n        'createDrawAnnotation',\n        'setDrawColor',\n        'setDrawBrushSize',\n        'setDrawSubMode',\n        'setEraserConfig',\n        'resetEraserConfig',\n        'commitEraserStroke',\n        'saveState',\n    ]),\n    shape: new Set([\n        'enterShapeMode',\n        'exitShapeMode',\n        'createShapeAnnotation',\n        'setShapeConfig',\n        'resetShapeConfig',\n        'saveState',\n    ]),\n};\nconst IMAGE_EDITOR_OPERATIONS = new Set([\n    'init',\n    'loadImage',\n    'loadFromState',\n    'saveState',\n    'setCanvasSize',\n    'resizeToContainer',\n    'relayout',\n    'scaleImage',\n    'rotateImage',\n    'flipHorizontal',\n    'flipVertical',\n    'resetImageTransform',\n    'setImageFilterConfig',\n    'resetImageFilterConfig',\n    'clearImageFilters',\n    'commitImageFilters',\n    'createMask',\n    'removeSelectedMask',\n    'removeAllMasks',\n    'mergeMasks',\n    'createTextAnnotation',\n    'createShapeAnnotation',\n    'enterTextMode',\n    'exitTextMode',\n    'enterShapeMode',\n    'exitShapeMode',\n    'setShapeConfig',\n    'resetShapeConfig',\n    'setTextConfig',\n    'resetTextConfig',\n    'setTextColor',\n    'setTextFontSize',\n    'enterDrawMode',\n    'exitDrawMode',\n    'setDrawConfig',\n    'resetDrawConfig',\n    'createDrawAnnotation',\n    'setDrawColor',\n    'setDrawBrushSize',\n    'setDrawSubMode',\n    'setEraserConfig',\n    'resetEraserConfig',\n    'commitEraserStroke',\n    'updateSelectedAnnotation',\n    'updateAnnotation',\n    'removeSelectedAnnotation',\n    'removeAllAnnotations',\n    'deleteSelectedObject',\n    'mergeAnnotations',\n    'bringSelectedObjectForward',\n    'sendSelectedObjectBackward',\n    'bringSelectedObjectToFront',\n    'sendSelectedObjectToBack',\n    'enterCropMode',\n    'setCropAspectRatio',\n    'applyCrop',\n    'cancelCrop',\n    'enterMosaicMode',\n    'exitMosaicMode',\n    'applyMosaic',\n    'setMosaicConfig',\n    'resetMosaicConfig',\n    'setMosaicBrushSize',\n    'setMosaicBlockSize',\n    'undo',\n    'redo',\n    'exportOverlayState',\n    'validateOverlayState',\n    'importOverlayState',\n    'exportImageBase64',\n    'exportImageFile',\n    'downloadImage',\n    'dispose',\n]);\nexport function getActiveToolMode(snapshot) {\n    if (snapshot.hasCropSession)\n        return 'crop';\n    if (snapshot.hasMosaicSession)\n        return 'mosaic';\n    if (snapshot.hasTextSession)\n        return 'text';\n    if (snapshot.hasDrawSession)\n        return 'draw';\n    if (snapshot.hasShapeSession)\n        return 'shape';\n    return null;\n}\nexport function isToolModeActive(snapshot) {\n    return getActiveToolMode(snapshot) !== null;\n}\nexport function getAllowedOperationsForToolMode(mode) {\n    return TOOL_MODE_ALLOWED_OPERATIONS[mode];\n}\nexport function canRunOperationInToolMode(activeMode, operationName) {\n    return !activeMode || getAllowedOperationsForToolMode(activeMode).has(operationName);\n}\nexport function isImageEditorOperation(value) {\n    return value !== null && IMAGE_EDITOR_OPERATIONS.has(value);\n}\n//# sourceMappingURL=tool-mode-policy.js.map","import { reportError, reportWarning } from './core/callback-reporter.js';\nimport { IdleGuardError } from './core/errors.js';\nimport { isCanvasElement, isInputElement, isInputOrSelectElement, resolveDomElement, resolveElementTargets, } from './core/editor-elements.js';\nimport { cloneResolvedMosaicConfig, cloneResolvedDrawConfig, cloneResolvedEraserConfig, cloneResolvedShapeAnnotationConfig, areResolvedEraserConfigsEqual, cloneResolvedTextAnnotationConfig, areResolvedShapeAnnotationConfigsEqual, getInvalidEraserConfigFields, getInvalidShapeAnnotationConfigFields, isLayoutMode, mergeEraserConfigPatch, mergeShapeAnnotationConfigPatch, resolveOptions, } from './core/default-options.js';\nimport { areResolvedImageFilterConfigsEqual, cloneResolvedImageFilterConfig, DEFAULT_IMAGE_FILTER_CONFIG, mergeImageFilterConfigPatch, } from './core/image-filter-config.js';\nimport { captureSnapshotAction, loadFromStateAction, saveStateAction, TRUSTED_STATE_RESTORE, } from './history/editor-state-actions.js';\nimport { detectFabric } from './fabric/fabric-adapter.js';\nimport { isAnnotationObject, isBaseImageObject, isMaskObject } from './core/public-types.js';\nimport { getActiveSelectionObjects, getAnnotations as getAnnotationsImpl, renderAnnotationList, updateAnnotationListSelection, } from './annotation/annotation-manager.js';\nimport { exitTextMode as exitTextModeImpl, finalizeActiveTextEditing, } from './annotation/text-controller.js';\nimport { exitDrawMode as exitDrawModeImpl, setDrawSubMode as setDrawSubModeImpl, updateEraserPreview, } from './annotation/draw-controller.js';\nimport { createShapeAnnotation as createShapeAnnotationImpl, enterShapeMode as enterShapeModeImpl, exitShapeMode as exitShapeModeImpl, syncShapeModeConfig, } from './annotation/shape-controller.js';\nimport { createTextAnnotationAction, enterDrawModeAction, enterTextModeAction, exitDrawModeAction, exitTextModeAction, } from './annotation/annotation-mode-actions.js';\nimport { applyDrawBrushSizeInputAction, applyDrawColorInputAction, applyDrawConfigPatchAction, applyTextColorInputAction, applyTextConfigPatchAction, applyTextFontSizeInputAction, } from './annotation/annotation-config-actions.js';\nimport { cancelCrop as cancelCropImpl, } from './crop/crop-controller.js';\nimport { applyCropAction, cancelCropAction, enterCropModeAction, setCropAspectRatioAction, } from './crop/crop-actions.js';\nimport { exitMosaicMode as exitMosaicModeImpl, } from './mosaic/mosaic-controller.js';\nimport { applyMosaicConfigPatchAction, enterMosaicModeAction, exitMosaicModeAction, resetMosaicConfigAction, } from './mosaic/mosaic-actions.js';\nimport { downloadImageAction, exportImageBase64Action, exportImageFileAction, mergeAnnotationsAction, mergeMasksAction, } from './export/export-actions.js';\nimport { loadImage as loadImageImpl } from './image/image-loader.js';\nimport { loadImageFile as loadImageFileImpl } from './image/image-file-loader.js';\nimport { assertImageDataUrlInputBudget } from './image/image-input-budget.js';\nimport { applyImageFilterConfigToImage } from './image/image-filters.js';\nimport { captureImageDisplayGeometry as captureImageDisplayGeometryImpl, measureLayoutViewport as measureLayoutViewportImpl, restoreMergedImageDisplayGeometry as restoreMergedImageDisplayGeometryImpl, settleFitCoverScrollbarsAfterStateRestore as settleFitCoverScrollbarsAfterStateRestoreImpl, shouldNormalizeCanvasSizeAfterStateRestore as shouldNormalizeCanvasSizeAfterStateRestoreImpl, updateCanvasSizeToImageBounds as updateCanvasSizeToImageBoundsImpl, } from './image/display-geometry.js';\nimport { applyCanvasDimensions } from './image/layout-manager.js';\nimport { TransformController } from './image/transform-controller.js';\nimport { flipHorizontalAction, flipVerticalAction, resetImageTransformAction, rotateImageAction, scaleImageAction, } from './image/transform-actions.js';\nimport { createEditorRuntimeWiring, } from './runtime/editor-facade-wiring.js';\nimport { EditorRuntime } from './runtime/editor-runtime.js';\nimport { handleObjectModified as handleObjectModifiedImpl, handleObjectMovingScalingRotating as handleObjectMovingScalingRotatingImpl, handleSelectionChanged as handleSelectionChangedImpl, } from './selection/editor-selection-controller.js';\nimport { deleteSelectedEditableObjects, moveSelectedEditableObject as moveSelectedEditableObjectImpl, removeAllAnnotationsAction, removeSelectedAnnotationAction, updateAnnotationAction, updateSelectedAnnotationAction, } from './overlay/editable-object-actions.js';\nimport { exportOverlayState as exportOverlayStateImpl, } from './overlay/overlay-state-exporter.js';\nimport { importOverlayStateIntoEditor, } from './overlay/overlay-state-importer.js';\nimport { validateOverlayState as validateOverlayStateImpl } from './overlay/overlay-state-validator.js';\nimport { createMaskAction, removeAllMasksAction as removeAllMasksActionImpl, removeSelectedMaskAction, } from './mask/mask-actions.js';\nimport { hideAllMaskLabels, removeLabelForMask, showLabelForMask, syncMaskLabel, } from './mask/mask-label-manager.js';\nimport { renderMaskList, updateMaskListSelection } from './mask/mask-list.js';\nimport { safelyDisposeCanvas, safelyExitActiveSession, safelyRemoveKeyboardListener, } from './lifecycle/editor-dispose.js';\nimport { DomBindings } from './ui/dom-bindings.js';\nimport { applyEditorControlState } from './ui/editor-control-state.js';\nimport { buildEditorControlSnapshot } from './ui/editor-control-snapshot.js';\nimport { restoreEditorControlOriginalStates, setEditorControlEnabled, } from './ui/editor-control-elements.js';\nimport { bindEditorDomEvents } from './ui/editor-dom-events.js';\nimport { createEditorDomEventActions } from './ui/editor-dom-actions.js';\nimport { applyEditorInputState } from './ui/editor-input-state.js';\nimport { bindEditorKeyboardEvents, handleEditorKeyboardEvent, isFabricTextEditingActive, } from './ui/editor-keyboard-events.js';\nimport { setPlaceholderVisible as setPlaceholderVisibleImpl } from './ui/visibility-state.js';\nimport { canRunOperationInToolMode, getActiveToolMode as getActiveToolModeFromSnapshot, isImageEditorOperation, isToolModeActive as isToolModeActiveFromSnapshot, } from './tool-mode/tool-mode-policy.js';\nimport { isSupportedImageDataUrl } from './utils/file.js';\nimport { detectSourceMimeType } from './image/image-resampler.js';\nconst INTERNAL_OPERATION_TOKEN = Symbol('ImageEditorInternalOperation');\nconst INTERNAL_ALLOW_DURING_ANIMATION_QUEUE = Symbol('ImageEditorAllowDuringAnimationQueue');\nfunction getRuntimeDocument(canvasElement) {\n    var _a;\n    return (_a = canvasElement === null || canvasElement === void 0 ? void 0 : canvasElement.ownerDocument) !== null && _a !== void 0 ? _a : (typeof document !== 'undefined' ? document : null);\n}\nfunction describeElementTarget(target) {\n    if (typeof target === 'string')\n        return `\"${target}\"`;\n    if (target === null)\n        return 'null';\n    if (target === undefined)\n        return 'undefined';\n    return 'provided element';\n}\nfunction captureContainerScroll(container) {\n    return container ? { left: container.scrollLeft, top: container.scrollTop } : null;\n}\nfunction restoreContainerScroll(container, scroll, options) {\n    if (!container || !scroll)\n        return;\n    try {\n        container.scrollLeft = scroll.left;\n        container.scrollTop = scroll.top;\n    }\n    catch (error) {\n        reportWarning(options, error, 'Scroll restore failed.');\n    }\n}\nfunction isPositiveFiniteDimension(value) {\n    return Number.isFinite(value) && value > 0;\n}\nexport class ImageEditor {\n    constructor(fabricModuleOrOptions = {}, options = {}) {\n        var _a;\n        Object.defineProperty(this, \"runtime\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        Object.defineProperty(this, \"contextFactory\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        Object.defineProperty(this, \"actionAccessFactory\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        const detected = detectFabric(fabricModuleOrOptions, options);\n        const resolvedOptions = resolveOptions(detected.options);\n        this.runtime = new EditorRuntime((_a = detected.fabric) !== null && _a !== void 0 ? _a : {}, detected.isFabricLoaded, resolvedOptions);\n        const rawDefaultLayoutMode = detected.options\n            .defaultLayoutMode;\n        if (rawDefaultLayoutMode !== undefined && !isLayoutMode(rawDefaultLayoutMode)) {\n            reportWarning(this.runtime.options, new TypeError(`[ImageEditor] Unsupported defaultLayoutMode ` +\n                `${JSON.stringify(rawDefaultLayoutMode)}. ` +\n                'Expected \"fit\", \"cover\", or \"expand\".'), 'Invalid defaultLayoutMode fell back to \"expand\".');\n        }\n        const rawDefaultMaskConfig = detected.options\n            .defaultMaskConfig;\n        if (rawDefaultMaskConfig &&\n            typeof rawDefaultMaskConfig === 'object' &&\n            !Array.isArray(rawDefaultMaskConfig) &&\n            ('onCreate' in rawDefaultMaskConfig || 'fabricGenerator' in rawDefaultMaskConfig)) {\n            reportWarning(this.runtime.options, new TypeError('[ImageEditor] defaultMaskConfig does not support onCreate or fabricGenerator. Pass those fields to createMask() instead.'), 'Ignored unsupported defaultMaskConfig lifecycle/factory fields.');\n        }\n        const wiring = this.createRuntimeWiring();\n        this.contextFactory = wiring.contextFactory;\n        this.actionAccessFactory = wiring.actionAccessFactory;\n    }\n    createRuntimeWiring() {\n        return createEditorRuntimeWiring(this.runtime, {\n            operations: {\n                canRunIdleOperation: (operation, options) => this.canRunIdleOperation(operation, options),\n                assertIdleForOperation: (operation, options) => {\n                    this.assertIdleForOperation(operation, options);\n                },\n                assertCanQueueAnimation: (operation) => {\n                    this.assertCanQueueAnimation(operation);\n                },\n                finalizeActiveTextEditingIfNeeded: () => {\n                    this.finalizeActiveTextEditingIfNeeded();\n                },\n                withSelectionChangeContext: (context, callback) => this.withSelectionChangeContext(context, callback),\n                withInternalOperationOptions: (token, options = {}) => this.withInternalOperationOptions(token, options),\n                withAnimationQueueBypass: (options = {}) => this.withAnimationQueueBypass(options),\n            },\n            state: {\n                saveCanvasState: (options) => {\n                    this.saveStateInternal(options);\n                },\n                captureSnapshot: () => this.captureSnapshotInternal(),\n                loadImage: (base64, options) => this.loadImageInternal(base64, options),\n                loadFromState: (snapshot, options) => this.loadFromStateInternal(snapshot, options),\n            },\n            display: {\n                inferCurrentImageMimeType: () => this.inferCurrentImageMimeType(),\n                shouldNormalizeCanvasSizeAfterStateRestore: () => this.shouldNormalizeCanvasSizeAfterStateRestore(),\n                updateCanvasSizeToImageBounds: (options) => this.updateCanvasSizeToImageBounds(options),\n                alignObjectBoundingBoxToCanvasTopLeft: (object) => {\n                    this.alignObjectBoundingBoxToCanvasTopLeft(object);\n                },\n                settleFitCoverScrollbarsAfterStateRestore: () => {\n                    this.settleFitCoverScrollbarsAfterStateRestore();\n                },\n                setCanvasSize: (widthPx, heightPx) => {\n                    this.setCanvasSizePx(widthPx, heightPx);\n                },\n                captureImageDisplayGeometry: () => this.captureImageDisplayGeometry(),\n                restoreMergedImageDisplayGeometry: (geometry) => {\n                    this.restoreMergedImageDisplayGeometry(geometry);\n                },\n            },\n            selection: {\n                buildSelection: (selected) => this.buildSelection(selected),\n                handleSelectionChanged: (selected) => {\n                    this.handleSelectionChanged(selected);\n                },\n                getMasks: () => this.getMasks(),\n                getAnnotations: () => this.getAnnotations(),\n                getMaskCollectionSignature: () => this.getMaskCollectionSignature(),\n                getAnnotationCollectionSignature: () => this.getAnnotationCollectionSignature(),\n            },\n            ui: {\n                refreshUiAfterQueuedAnimation: () => {\n                    this.refreshUiAfterQueuedAnimation();\n                },\n                updateInputs: () => {\n                    this.updateInputs();\n                },\n                updateMaskList: () => {\n                    this.updateMaskList();\n                },\n                updateMaskListSelection: (mask) => {\n                    this.updateMaskListSelection(mask);\n                },\n                updateAnnotationList: () => {\n                    this.updateAnnotationList();\n                },\n                updateAnnotationListSelection: (annotation) => {\n                    this.updateAnnotationListSelection(annotation);\n                },\n                updateUi: () => {\n                    this.updateUi();\n                },\n            },\n            labels: {\n                removeLabelForMask: (mask) => {\n                    this.removeLabelForMask(mask);\n                },\n                showLabelForMask: (mask) => {\n                    this.showLabelForMask(mask);\n                },\n                syncMaskLabel: (mask) => {\n                    this.syncMaskLabel(mask);\n                },\n                hideAllMaskLabels: () => {\n                    this.hideAllMaskLabels();\n                },\n            },\n            config: {\n                updateSelectedAnnotation: (config) => {\n                    this.updateSelectedAnnotation(config);\n                },\n                setTextColor: (color) => {\n                    this.setTextColor(color);\n                },\n                setTextFontSize: (size) => {\n                    this.setTextFontSize(size);\n                },\n                setDrawColor: (color) => {\n                    this.setDrawColor(color);\n                },\n                setDrawBrushSize: (size) => {\n                    this.setDrawBrushSize(size);\n                },\n            },\n            callbacks: {\n                buildCallbackContext: (operation, isInternalOperation) => this.buildCallbackContext(operation, isInternalOperation),\n                emitImageCleared: (image, context) => {\n                    this.emitOptionCallback('onImageCleared', [image, context]);\n                },\n                emitSelectionChange: (selection, context) => {\n                    this.emitOptionCallback('onSelectionChange', [selection, context]);\n                },\n                emitMasksChanged: (context) => {\n                    this.emitMasksChanged(context);\n                },\n                emitAnnotationsChanged: (context) => {\n                    this.emitAnnotationsChanged(context);\n                },\n                emitImageChanged: (context) => {\n                    this.emitImageChanged(context);\n                },\n                emitBusyChangeIfChanged: (context) => {\n                    this.emitBusyChangeIfChanged(context);\n                },\n                reportWarning: (error, message) => {\n                    reportWarning(this.runtime.options, error, message);\n                },\n            },\n        });\n    }\n    init(elementMap = {}) {\n        if (!this.runtime.isFabricLoaded) {\n            const globalFabric = globalThis.fabric;\n            if (!globalFabric ||\n                typeof globalFabric.Canvas !== 'function') {\n                reportWarning(this.runtime.options, null, '[ImageEditor] init() skipped: fabric.js is not loaded. Pass a Fabric module or load Fabric before init().');\n                return;\n            }\n            this.runtime.fabricModule = globalFabric;\n            this.runtime.isFabricLoaded = true;\n        }\n        if (this.runtime.isDisposed)\n            return;\n        if (this.runtime.canvas || this.runtime.domBindings || this.runtime.keyboardHandler) {\n            reportWarning(this.runtime.options, null, '[ImageEditor] init() skipped: editor is already initialized. Call dispose() before reinitializing.');\n            return;\n        }\n        this.runtime.elements = resolveElementTargets(elementMap);\n        this.initCanvas();\n        this.runtime.domBindings = new DomBindings((key) => this.resolveElement(key), () => this.runtime.isDisposed);\n        this.runtime.transformController = new TransformController(this.buildTransformContext());\n        this.bindDomEvents();\n        this.updateInputs();\n        this.updateMaskList();\n        this.updateAnnotationList();\n        this.updateUi();\n        if (this.runtime.options.initialImageBase64) {\n            void this.loadImage(this.runtime.options.initialImageBase64).catch(() => {\n            });\n        }\n        else {\n            this.updatePlaceholderStatus();\n        }\n    }\n    initCanvas() {\n        var _a;\n        const canvasTarget = this.runtime.elements.canvas;\n        const canvasCandidate = resolveDomElement(canvasTarget, getRuntimeDocument(null), isCanvasElement);\n        if (!canvasCandidate) {\n            throw new Error(`[ImageEditor] Canvas element not found: ${describeElementTarget(canvasTarget)}`);\n        }\n        const canvasElement = canvasCandidate;\n        this.runtime.canvasElement = canvasElement;\n        const ownerDocument = canvasElement.ownerDocument;\n        this.runtime.containerElement =\n            (_a = resolveDomElement(this.runtime.elements.canvasContainer, ownerDocument)) !== null && _a !== void 0 ? _a : canvasElement.parentElement;\n        this.runtime.placeholderElement = resolveDomElement(this.runtime.elements.imagePlaceholder, ownerDocument);\n        let initialWidth = this.runtime.options.canvasWidth;\n        let initialHeight = this.runtime.options.canvasHeight;\n        if (this.runtime.containerElement) {\n            const containerWidth = Math.floor(this.runtime.containerElement.clientWidth);\n            const containerHeight = Math.floor(this.runtime.containerElement.clientHeight);\n            if (containerWidth > 0 && containerHeight > 0) {\n                initialWidth = containerWidth;\n                initialHeight = containerHeight;\n            }\n        }\n        this.runtime.canvas = new this.runtime.fabricModule.Canvas(canvasElement, {\n            width: initialWidth,\n            height: initialHeight,\n            backgroundColor: this.runtime.options.backgroundColor,\n            selection: this.runtime.options.groupSelection,\n            preserveObjectStacking: true,\n        });\n        this.runtime.canvas.on('selection:created', (e) => {\n            this.handleSelectionChanged(e.selected);\n        });\n        this.runtime.canvas.on('selection:updated', (e) => {\n            this.handleSelectionChanged(e.selected);\n        });\n        this.runtime.canvas.on('selection:cleared', () => this.handleSelectionChanged([]));\n        const onObjectEvent = (e) => {\n            if (e.target)\n                this.handleObjectMovingScalingRotating(e.target);\n        };\n        const onObjectModified = (e) => {\n            if (e.target)\n                this.handleObjectModified(e.target);\n        };\n        this.runtime.canvas.on('object:moving', onObjectEvent);\n        this.runtime.canvas.on('object:scaling', onObjectEvent);\n        this.runtime.canvas.on('object:rotating', onObjectEvent);\n        this.runtime.canvas.on('object:modified', onObjectModified);\n    }\n    resolveElement(key, ownerDocument = getRuntimeDocument(this.runtime.canvasElement), guard) {\n        return resolveDomElement(this.runtime.elements[key], ownerDocument, guard);\n    }\n    bindDomEvents() {\n        if (!this.runtime.domBindings)\n            return;\n        const ownerDocument = getRuntimeDocument(this.runtime.canvasElement);\n        if (!ownerDocument)\n            return;\n        bindEditorDomEvents({\n            bindings: this.runtime.domBindings,\n            rotationStep: this.runtime.options.rotationStep,\n            getInputValue: (key) => {\n                var _a;\n                const element = this.resolveElement(key, ownerDocument, isInputOrSelectElement);\n                return (_a = element === null || element === void 0 ? void 0 : element.value) !== null && _a !== void 0 ? _a : '';\n            },\n            actions: createEditorDomEventActions(this.runtime, ownerDocument, {\n                reportAsyncActionError: (operation, error) => {\n                    reportError(this.runtime.options, error, `${operation} failed.`);\n                },\n                loadImageFile: (file) => this.loadImageFile(file),\n                scaleImage: (scale) => this.scaleImage(scale),\n                rotateImage: (rotation) => this.rotateImage(rotation),\n                resetImageTransform: () => this.resetImageTransform(),\n                flipHorizontal: () => this.flipHorizontal(),\n                flipVertical: () => this.flipVertical(),\n                setImageFilterConfig: (config) => {\n                    this.setImageFilterConfig(config);\n                },\n                resetImageFilterConfig: () => {\n                    this.resetImageFilterConfig();\n                },\n                clearImageFilters: () => {\n                    this.clearImageFilters();\n                },\n                commitImageFilters: () => {\n                    this.commitImageFilters();\n                },\n                createMask: () => {\n                    this.createMask();\n                },\n                removeSelectedMask: () => {\n                    this.removeSelectedMask();\n                },\n                removeAllMasks: () => {\n                    this.removeAllMasks();\n                },\n                mergeMasks: () => this.mergeMasks(),\n                mergeAnnotations: () => this.mergeAnnotations(),\n                enterTextMode: () => {\n                    this.enterTextMode();\n                },\n                exitTextMode: () => {\n                    this.exitTextMode();\n                },\n                enterDrawMode: () => {\n                    this.enterDrawMode();\n                },\n                exitDrawMode: () => {\n                    this.exitDrawMode();\n                },\n                createShapeAnnotation: (config) => {\n                    this.createShapeAnnotation(config);\n                },\n                enterShapeMode: (shape) => {\n                    this.enterShapeMode(shape);\n                },\n                exitShapeMode: () => {\n                    this.exitShapeMode();\n                },\n                removeSelectedAnnotation: () => {\n                    this.removeSelectedAnnotation();\n                },\n                removeAllAnnotations: () => {\n                    this.removeAllAnnotations();\n                },\n                deleteSelectedObject: () => {\n                    this.deleteSelectedObject();\n                },\n                bringSelectedObjectForward: () => {\n                    this.bringSelectedObjectForward();\n                },\n                sendSelectedObjectBackward: () => {\n                    this.sendSelectedObjectBackward();\n                },\n                bringSelectedObjectToFront: () => {\n                    this.bringSelectedObjectToFront();\n                },\n                sendSelectedObjectToBack: () => {\n                    this.sendSelectedObjectToBack();\n                },\n                downloadImage: () => this.downloadImage(),\n                undo: () => this.undo(),\n                redo: () => this.redo(),\n                enterCropMode: (options) => {\n                    this.enterCropMode(options);\n                },\n                setCropAspectRatio: (aspectRatio) => {\n                    this.setCropAspectRatio(aspectRatio);\n                },\n                applyCrop: () => this.applyCrop(),\n                reportCropApplyError: (error) => {\n                    reportError(this.runtime.options, error, 'Crop apply failed.');\n                },\n                cancelCrop: () => {\n                    this.cancelCrop();\n                },\n                enterMosaicMode: () => {\n                    this.enterMosaicMode();\n                },\n                exitMosaicMode: () => {\n                    this.exitMosaicMode();\n                },\n                setMosaicBrushSize: (size) => {\n                    this.setMosaicBrushSize(size);\n                },\n                setMosaicBlockSize: (size) => {\n                    this.setMosaicBlockSize(size);\n                },\n                setTextColor: (color) => {\n                    this.applyTextColorInput(color);\n                },\n                setTextFontSize: (size) => {\n                    this.applyTextFontSizeInput(size);\n                },\n                setDrawColor: (color) => {\n                    this.applyDrawColorInput(color);\n                },\n                setDrawBrushSize: (size) => {\n                    this.applyDrawBrushSizeInput(size);\n                },\n                setDrawSubMode: (mode) => {\n                    this.setDrawSubMode(mode);\n                },\n                setEraserConfig: (config) => {\n                    this.setEraserConfig(config);\n                },\n                setShapeConfig: (config) => {\n                    this.setShapeConfig(config);\n                },\n            }),\n        });\n        this.bindKeyboardEvents(ownerDocument);\n    }\n    bindKeyboardEvents(ownerDocument) {\n        bindEditorKeyboardEvents({\n            getOwnerDocument: () => ownerDocument,\n            getKeyboardDocument: () => this.runtime.keyboardDocument,\n            getKeyboardHandler: () => this.runtime.keyboardHandler,\n            setKeyboardBinding: (keyboardDocument, keyboardHandler) => {\n                this.runtime.keyboardDocument = keyboardDocument;\n                this.runtime.keyboardHandler = keyboardHandler;\n            },\n            removeKeyboardListener: (keyboardDocument, keyboardHandler) => {\n                safelyRemoveKeyboardListener(keyboardDocument, keyboardHandler);\n            },\n            handleKeyboardEvent: (event) => {\n                this.handleKeyboardEvent(event);\n            },\n        });\n    }\n    handleKeyboardEvent(event) {\n        handleEditorKeyboardEvent({\n            isDisposed: () => this.runtime.isDisposed,\n            getCanvas: () => this.runtime.canvas,\n            getKeyboardDocument: () => this.runtime.keyboardDocument,\n            hasTextSession: () => this.runtime.textSession !== null,\n            hasDrawSession: () => this.runtime.drawSession !== null,\n            hasMosaicSession: () => this.runtime.mosaicSession !== null,\n            hasCropSession: () => this.runtime.cropSession !== null,\n            deleteSelectedObject: () => {\n                this.deleteSelectedObject();\n            },\n            finalizeActiveTextEditing: (commit) => {\n                finalizeActiveTextEditing(this.buildTextControllerContext(), { commit });\n            },\n            exitTextMode: () => {\n                this.exitTextMode();\n            },\n            exitDrawMode: () => {\n                this.exitDrawMode();\n            },\n            exitMosaicMode: () => {\n                this.exitMosaicMode();\n            },\n            cancelCrop: () => {\n                this.cancelCrop();\n            },\n        }, event);\n    }\n    finalizeActiveTextEditingIfNeeded() {\n        if (!this.runtime.canvas || !isFabricTextEditingActive(this.runtime.canvas))\n            return;\n        finalizeActiveTextEditing(this.buildTextControllerContext(), { commit: true });\n    }\n    async loadImageFile(file) {\n        await loadImageFileImpl({\n            options: this.runtime.options,\n            getInputElement: () => this.resolveElement('imageInput', undefined, isInputElement),\n            loadImage: (dataUrl) => this.loadImage(dataUrl),\n        }, file);\n    }\n    async loadImage(base64, options = {}) {\n        return this.loadImageInternal(base64, options);\n    }\n    async loadImageInternal(base64, options = {}) {\n        if (!this.runtime.isFabricLoaded || !this.runtime.canvas) {\n            reportWarning(this.runtime.options, null, 'loadImage skipped: editor is not initialized.');\n            return;\n        }\n        if (this.runtime.isDisposed) {\n            reportWarning(this.runtime.options, null, 'loadImage skipped: editor is disposed.');\n            return;\n        }\n        if (!isSupportedImageDataUrl(base64)) {\n            reportWarning(this.runtime.options, new TypeError('[ImageEditor] Unsupported image Data URL.'), 'loadImage skipped: input is not a supported PNG, JPEG, or WebP Data URL.');\n            return;\n        }\n        try {\n            this.assertIdleForOperation('loadImage', options);\n        }\n        catch (error) {\n            if (this.isExpectedIdleGuardError(error, 'loadImage')) {\n                reportWarning(this.runtime.options, error, error.message);\n                return;\n            }\n            throw error;\n        }\n        this.finalizeActiveTextEditingIfNeeded();\n        const callbackContext = this.getOperationContext('loadImage', options);\n        const previousImage = this.runtime.originalImage;\n        const hadMasks = this.getMasks().length > 0;\n        const hadAnnotations = this.getAnnotations().length > 0;\n        this.emitOptionCallback('onImageLoadStart', [callbackContext]);\n        this.runtime.operationGuard.beginLoading();\n        this.emitBusyChangeIfChanged(callbackContext);\n        this.updateUi();\n        const loadImageContext = this.contextFactory.buildLoadImageContext();\n        try {\n            try {\n                assertImageDataUrlInputBudget(base64, this.runtime.options);\n            }\n            catch (error) {\n                const errorMessage = error instanceof Error\n                    ? `loadImage failed: ${error.message}`\n                    : 'loadImage failed';\n                reportError(this.runtime.options, error, errorMessage);\n                throw error;\n            }\n            this.hideAllMaskLabels();\n            await loadImageImpl(loadImageContext, base64, options);\n        }\n        finally {\n            this.runtime.operationGuard.endLoading();\n            this.emitBusyChangeIfChanged(callbackContext);\n            if (!this.runtime.isDisposed && this.runtime.canvas)\n                this.updateUi();\n        }\n        this.runtime.lastMask = null;\n        this.updateInputs();\n        this.updateMaskList();\n        this.updateAnnotationList();\n        this.updateUi();\n        if (previousImage && previousImage !== this.runtime.originalImage) {\n            this.emitOptionCallback('onImageCleared', [previousImage, callbackContext]);\n        }\n        const imageInfo = this.getImageInfo();\n        if (imageInfo) {\n            this.emitOptionCallback('onImageLoaded', [imageInfo, callbackContext]);\n        }\n        if (hadMasks) {\n            this.emitMasksChanged(callbackContext);\n        }\n        if (hadAnnotations) {\n            this.emitAnnotationsChanged(callbackContext);\n        }\n        this.emitImageChanged(callbackContext);\n    }\n    getInternalOperationToken(options) {\n        var _a;\n        return ((_a = options === null || options === void 0 ? void 0 : options[INTERNAL_OPERATION_TOKEN]) !== null && _a !== void 0 ? _a : null);\n    }\n    canRunDuringAnimationQueue(options) {\n        return !!(options === null || options === void 0 ? void 0 : options[INTERNAL_ALLOW_DURING_ANIMATION_QUEUE]);\n    }\n    withInternalOperationOptions(token, options = {}) {\n        return {\n            ...options,\n            ...(token ? { [INTERNAL_OPERATION_TOKEN]: token } : {}),\n            [TRUSTED_STATE_RESTORE]: true,\n        };\n    }\n    withAnimationQueueBypass(options = {}) {\n        return {\n            ...options,\n            [INTERNAL_ALLOW_DURING_ANIMATION_QUEUE]: true,\n            [TRUSTED_STATE_RESTORE]: true,\n        };\n    }\n    assertIdleForOperation(operationName, options) {\n        const token = this.getInternalOperationToken(options);\n        this.runtime.operationGuard.assertIdleForOperation(operationName, token);\n        const activeToolMode = this.getActiveToolMode();\n        if (activeToolMode &&\n            !this.runtime.operationGuard.isOwnOperation(token) &&\n            !canRunOperationInToolMode(activeToolMode, operationName)) {\n            throw new IdleGuardError(operationName, `while ${activeToolMode} mode is active`);\n        }\n        if (this.runtime.animQueue.isBusy() && !this.canRunDuringAnimationQueue(options)) {\n            throw new IdleGuardError(operationName, 'while an animation is queued');\n        }\n    }\n    canRunIdleOperation(operationName, options) {\n        try {\n            this.assertIdleForOperation(operationName, options);\n            return true;\n        }\n        catch (error) {\n            if (!this.isExpectedIdleGuardError(error, operationName)) {\n                throw error;\n            }\n            return false;\n        }\n    }\n    isExpectedIdleGuardError(error, operationName) {\n        return error instanceof IdleGuardError && error.operation === operationName;\n    }\n    assertCanQueueAnimation(operationName, options) {\n        const token = this.getInternalOperationToken(options);\n        this.runtime.operationGuard.assertCanQueueAnimation(operationName, token);\n        const activeToolMode = this.getActiveToolMode();\n        if (activeToolMode &&\n            !this.runtime.operationGuard.isOwnOperation(token) &&\n            !canRunOperationInToolMode(activeToolMode, operationName)) {\n            throw new Error(`[ImageEditor] Cannot run \"${operationName}\" while ${activeToolMode} mode is active.`);\n        }\n    }\n    isImageLoaded() {\n        const image = this.runtime.originalImage;\n        return !!(image &&\n            isBaseImageObject(image) &&\n            Number(image.width) > 0 &&\n            Number(image.height) > 0);\n    }\n    isBusy() {\n        return (this.runtime.operationGuard.isBusy() ||\n            this.runtime.animQueue.isBusy() ||\n            this.isToolModeActive());\n    }\n    isProcessing() {\n        return this.runtime.operationGuard.isBusy() || this.runtime.animQueue.isBusy();\n    }\n    setImageFilterConfig(config) {\n        if (!this.runtime.canvas || !this.runtime.originalImage)\n            return;\n        if (!this.canRunIdleOperation('setImageFilterConfig'))\n            return;\n        const result = mergeImageFilterConfigPatch(this.runtime.currentImageFilterConfig, config);\n        if (result.warnings.length > 0) {\n            reportWarning(this.runtime.options, new TypeError(`[ImageEditor] Invalid or out-of-range image filter field(s): ${result.warnings.join(', ')}.`), 'Image filter config was normalized.');\n        }\n        if (areResolvedImageFilterConfigsEqual(this.runtime.currentImageFilterConfig, result.config)) {\n            return;\n        }\n        this.runtime.currentImageFilterConfig = cloneResolvedImageFilterConfig(result.config);\n        this.applyCurrentImageFilters();\n        this.updateInputs();\n        this.runtime.canvas.requestRenderAll();\n        this.emitImageChanged(this.buildCallbackContext('setImageFilterConfig', false));\n    }\n    getImageFilterConfig() {\n        return cloneResolvedImageFilterConfig(this.runtime.currentImageFilterConfig);\n    }\n    resetImageFilterConfig() {\n        if (!this.runtime.canvas || !this.runtime.originalImage)\n            return;\n        if (!this.canRunIdleOperation('resetImageFilterConfig'))\n            return;\n        const next = cloneResolvedImageFilterConfig(this.runtime.lastCommittedImageFilterConfig);\n        if (areResolvedImageFilterConfigsEqual(this.runtime.currentImageFilterConfig, next))\n            return;\n        this.runtime.currentImageFilterConfig = next;\n        this.applyCurrentImageFilters();\n        this.updateInputs();\n        this.runtime.canvas.requestRenderAll();\n        this.emitImageChanged(this.buildCallbackContext('resetImageFilterConfig', false));\n    }\n    clearImageFilters() {\n        if (!this.runtime.canvas || !this.runtime.originalImage)\n            return;\n        if (!this.canRunIdleOperation('clearImageFilters'))\n            return;\n        this.runtime.currentImageFilterConfig = cloneResolvedImageFilterConfig(DEFAULT_IMAGE_FILTER_CONFIG);\n        this.applyCurrentImageFilters();\n        this.updateInputs();\n        this.commitImageFiltersInternal('clearImageFilters');\n    }\n    commitImageFilters() {\n        this.commitImageFiltersInternal('commitImageFilters');\n    }\n    commitImageFiltersInternal(operation) {\n        if (!this.runtime.canvas || !this.runtime.originalImage)\n            return;\n        if (!this.canRunIdleOperation(operation))\n            return;\n        if (areResolvedImageFilterConfigsEqual(this.runtime.currentImageFilterConfig, this.runtime.lastCommittedImageFilterConfig)) {\n            return;\n        }\n        this.saveStateInternal();\n        this.runtime.lastCommittedImageFilterConfig = cloneResolvedImageFilterConfig(this.runtime.currentImageFilterConfig);\n        const context = this.buildCallbackContext(operation, false);\n        this.emitHistoryChangeIfChanged(context);\n        this.emitImageChanged(context);\n    }\n    applyCurrentImageFilters() {\n        const image = this.runtime.originalImage;\n        if (!image)\n            return;\n        applyImageFilterConfigToImage(this.runtime.fabricModule, image, this.runtime.currentImageFilterConfig, (error, message) => {\n            reportWarning(this.runtime.options, error, message);\n        });\n    }\n    setLayoutMode(mode) {\n        if (!isLayoutMode(mode)) {\n            reportWarning(this.runtime.options, new TypeError(`[ImageEditor] Unsupported layout mode ${JSON.stringify(mode)}. ` +\n                'Expected \"fit\", \"cover\", or \"expand\".'), 'Ignored invalid layout mode.');\n            return;\n        }\n        this.runtime.currentLayoutMode = mode;\n    }\n    setCanvasSize(widthPx, heightPx) {\n        this.applyPublicCanvasSize(widthPx, heightPx, 'setCanvasSize');\n    }\n    resizeToContainer(options = {}) {\n        if (!this.canRunPublicLayoutOperation('resizeToContainer'))\n            return;\n        const size = this.resolveContainerResizeSize(options);\n        if (!size) {\n            reportWarning(this.runtime.options, new TypeError('[ImageEditor] Container dimensions are not available.'), 'resizeToContainer ignored because no valid container or fallback size was available.');\n            return;\n        }\n        this.applyPublicCanvasSize(size.width, size.height, 'resizeToContainer', {\n            skipGuard: true,\n            preserveScroll: true,\n        });\n    }\n    relayout(options = {}) {\n        var _a;\n        if (!this.canRunPublicLayoutOperation('relayout'))\n            return;\n        if (options.mode !== undefined) {\n            if (!isLayoutMode(options.mode)) {\n                reportWarning(this.runtime.options, new TypeError(`[ImageEditor] Unsupported relayout mode ${JSON.stringify(options.mode)}. ` +\n                    'Expected \"fit\", \"cover\", or \"expand\".'), 'Ignored invalid relayout mode.');\n                return;\n            }\n            this.runtime.currentLayoutMode = options.mode;\n        }\n        const scroll = options.preserveScroll\n            ? captureContainerScroll(this.runtime.containerElement)\n            : null;\n        const viewport = this.runtime.containerElement ? this.measureLayoutViewport() : null;\n        if (viewport)\n            this.setCanvasSizePx(viewport.width, viewport.height);\n        if (this.runtime.originalImage) {\n            this.updateCanvasSizeToImageBounds();\n        }\n        restoreContainerScroll(this.runtime.containerElement, scroll, this.runtime.options);\n        (_a = this.runtime.canvas) === null || _a === void 0 ? void 0 : _a.renderAll();\n        this.refreshAfterCanvasLayoutChange('relayout');\n    }\n    buildCallbackContext(operation, isInternalOperation = false) {\n        return { operation, isInternalOperation };\n    }\n    getOperationContext(fallback, options) {\n        const internal = this.getInternalOperationToken(options);\n        const activeOperation = this.runtime.operationGuard.activeOperationName();\n        if (internal && activeOperation) {\n            return this.buildCallbackContext(isImageEditorOperation(activeOperation) ? activeOperation : fallback, true);\n        }\n        return this.buildCallbackContext(fallback, false);\n    }\n    emitOptionCallback(callbackName, args) {\n        const callback = this.runtime.options[callbackName];\n        if (typeof callback !== 'function')\n            return;\n        try {\n            callback(...args);\n        }\n        catch (error) {\n            console.error(`[ImageEditor] ${callbackName} callback threw`, error);\n        }\n    }\n    getImageInfo() {\n        if (!this.runtime.canvas || !this.runtime.originalImage || !this.isImageLoaded()) {\n            return null;\n        }\n        const canvasWidth = this.runtime.canvas.getWidth();\n        const canvasHeight = this.runtime.canvas.getHeight();\n        let displayWidth;\n        let displayHeight;\n        try {\n            this.runtime.originalImage.setCoords();\n            const bounds = this.runtime.originalImage.getBoundingRect();\n            displayWidth = Math.max(0, Number(bounds.width) || 0);\n            displayHeight = Math.max(0, Number(bounds.height) || 0);\n        }\n        catch (error) {\n            reportWarning(this.runtime.options, error, 'getImageInfo used fallback dimensions because Fabric getBoundingRect failed.');\n            displayWidth = Math.max(0, (Number(this.runtime.originalImage.width) || 0) *\n                Math.abs(Number(this.runtime.originalImage.scaleX) || 1));\n            displayHeight = Math.max(0, (Number(this.runtime.originalImage.height) || 0) *\n                Math.abs(Number(this.runtime.originalImage.scaleY) || 1));\n        }\n        return {\n            width: Math.max(0, Number(this.runtime.originalImage.width) || 0),\n            height: Math.max(0, Number(this.runtime.originalImage.height) || 0),\n            displayWidth,\n            displayHeight,\n            scale: this.runtime.currentScale,\n            rotation: this.runtime.currentRotation,\n            canvasWidth,\n            canvasHeight,\n        };\n    }\n    getMasks() {\n        if (!this.runtime.canvas)\n            return [];\n        return this.runtime.canvas.getObjects().filter(isMaskObject).slice();\n    }\n    getAnnotations() {\n        if (!this.runtime.canvas)\n            return [];\n        return getAnnotationsImpl(this.runtime.canvas);\n    }\n    exportOverlayState(options = {}) {\n        this.assertIdleForOperation('exportOverlayState');\n        return exportOverlayStateImpl(this.buildOverlayStateExportContext(), options);\n    }\n    validateOverlayState(input, options = {}) {\n        return validateOverlayStateImpl(input, options);\n    }\n    async importOverlayState(input, options = {}) {\n        var _a, _b;\n        const validation = validateOverlayStateImpl(input, options);\n        if (!validation.valid || !validation.state) {\n            const message = (_b = (_a = validation.errors[0]) === null || _a === void 0 ? void 0 : _a.message) !== null && _b !== void 0 ? _b : 'Overlay state validation failed before import.';\n            const error = new Error(`[ImageEditor] importOverlayState failed: ${message}`);\n            error.validation = validation;\n            throw error;\n        }\n        if (!this.runtime.canvas || !this.runtime.originalImage) {\n            throw new Error('[ImageEditor] importOverlayState requires a loaded image.');\n        }\n        this.assertIdleForOperation('importOverlayState');\n        const token = this.runtime.operationGuard.beginBusyOperation('importOverlayState');\n        const callbackContext = this.buildCallbackContext('importOverlayState', false);\n        const beforeSnapshot = this.captureSnapshotInternal();\n        const previousActiveObject = this.runtime.canvas.getActiveObject();\n        const previousSuppressSaveState = this.runtime.shouldSuppressSaveState;\n        const previousMaskSignature = this.getMaskCollectionSignature();\n        const previousAnnotationSignature = this.getAnnotationCollectionSignature();\n        let result;\n        this.finalizeActiveTextEditingIfNeeded();\n        this.runtime.shouldSuppressSaveState = true;\n        this.emitBusyChangeIfChanged(callbackContext);\n        this.updateUi();\n        try {\n            result = await importOverlayStateIntoEditor(this.buildOverlayStateImportContext(), validation.state, options);\n            this.runtime.shouldSuppressSaveState = previousSuppressSaveState;\n            if (options.preserveSelection === true &&\n                previousActiveObject &&\n                this.runtime.canvas.getObjects().includes(previousActiveObject)) {\n                this.runtime.canvas.setActiveObject(previousActiveObject);\n            }\n            if (options.saveHistory !== false) {\n                this.saveStateInternal(this.withInternalOperationOptions(token));\n            }\n            else {\n                this.runtime.lastSnapshot = this.captureSnapshotInternal();\n            }\n            this.updateInputs();\n            this.updateMaskList();\n            this.updateAnnotationList();\n            this.updateUi();\n            if (previousMaskSignature !== this.getMaskCollectionSignature()) {\n                this.emitMasksChanged(callbackContext);\n            }\n            if (previousAnnotationSignature !== this.getAnnotationCollectionSignature()) {\n                this.emitAnnotationsChanged(callbackContext);\n            }\n            this.emitImageChanged(callbackContext);\n            return {\n                ...result,\n                warnings: [...validation.warnings, ...result.warnings],\n            };\n        }\n        catch (error) {\n            this.runtime.shouldSuppressSaveState = previousSuppressSaveState;\n            try {\n                await this.loadFromStateInternal(beforeSnapshot, this.withInternalOperationOptions(token));\n            }\n            catch (rollbackError) {\n                reportWarning(this.runtime.options, rollbackError, 'importOverlayState rollback failed.');\n            }\n            throw error;\n        }\n        finally {\n            this.runtime.shouldSuppressSaveState = previousSuppressSaveState;\n            this.runtime.operationGuard.endBusyOperation(token);\n            this.emitBusyChangeIfChanged(callbackContext);\n            if (!this.runtime.isDisposed && this.runtime.canvas)\n                this.updateUi();\n        }\n    }\n    buildOverlayStateExportContext() {\n        return {\n            canvas: this.runtime.canvas,\n            originalImage: this.runtime.originalImage,\n            currentRotation: this.runtime.currentRotation,\n            currentImageMimeType: this.runtime.currentImageMimeType,\n        };\n    }\n    buildOverlayStateImportContext() {\n        return {\n            fabric: this.runtime.fabricModule,\n            canvas: this.runtime.getLiveCanvasOrThrow('importOverlayState'),\n            options: this.runtime.getRuntimeOptions(),\n            originalImage: this.runtime.originalImage,\n            getMaskCounter: () => this.runtime.maskCounter,\n            setMaskCounter: (value) => {\n                this.runtime.maskCounter = value;\n            },\n            getAnnotationCounter: () => this.runtime.annotationCounter,\n            setAnnotationCounter: (value) => {\n                this.runtime.annotationCounter = value;\n            },\n            setLastMask: (mask) => {\n                this.runtime.lastMask = mask;\n            },\n            setCurrentRotation: (rotation) => {\n                this.runtime.currentRotation = rotation;\n            },\n            removeLabelForMask: (mask) => {\n                this.removeLabelForMask(mask);\n            },\n            buildTextControllerContext: () => this.buildTextControllerContext(),\n        };\n    }\n    getMaskCollectionSignature() {\n        return this.getMasks()\n            .map((mask) => `${mask.maskId}:${mask.maskName}`)\n            .join('|');\n    }\n    getAnnotationCollectionSignature() {\n        return this.getAnnotations()\n            .map((annotation) => `${annotation.annotationId}:${annotation.annotationName}`)\n            .join('|');\n    }\n    buildToolModeSnapshot() {\n        return {\n            hasCropSession: this.runtime.cropSession !== null,\n            hasMosaicSession: this.runtime.mosaicSession !== null,\n            hasTextSession: this.runtime.textSession !== null,\n            hasDrawSession: this.runtime.drawSession !== null,\n            hasShapeSession: this.runtime.shapeSession !== null,\n        };\n    }\n    getActiveToolMode() {\n        return getActiveToolModeFromSnapshot(this.buildToolModeSnapshot());\n    }\n    isToolModeActive() {\n        return isToolModeActiveFromSnapshot(this.buildToolModeSnapshot());\n    }\n    getEditorState() {\n        var _a, _b;\n        const canvasWidth = this.runtime.canvas ? this.runtime.canvas.getWidth() : 0;\n        const canvasHeight = this.runtime.canvas ? this.runtime.canvas.getHeight() : 0;\n        const image = this.getImageInfo();\n        return {\n            hasImage: image !== null,\n            image,\n            maskCount: this.getMasks().length,\n            annotationCount: this.getAnnotations().length,\n            currentScale: this.runtime.currentScale,\n            currentRotation: this.runtime.currentRotation,\n            isFlippedHorizontally: !!((_a = this.runtime.originalImage) === null || _a === void 0 ? void 0 : _a.flipX),\n            isFlippedVertically: !!((_b = this.runtime.originalImage) === null || _b === void 0 ? void 0 : _b.flipY),\n            isBusy: this.isBusy(),\n            activeToolMode: this.getActiveToolMode(),\n            isCropMode: this.runtime.cropSession !== null,\n            isMosaicMode: this.runtime.mosaicSession !== null,\n            isTextMode: this.runtime.textSession !== null,\n            isDrawMode: this.runtime.drawSession !== null,\n            isShapeMode: this.runtime.shapeSession !== null,\n            canUndo: this.runtime.historyManager.canUndo(),\n            canRedo: this.runtime.historyManager.canRedo(),\n            canvasWidth,\n            canvasHeight,\n        };\n    }\n    emitImageChanged(context) {\n        this.emitOptionCallback('onImageChanged', [this.getEditorState(), context]);\n        this.emitToolModeChangeIfChanged(context);\n        this.emitHistoryChangeIfChanged(context);\n    }\n    emitMasksChanged(context) {\n        this.emitOptionCallback('onMasksChanged', [this.getMasks(), context]);\n    }\n    emitAnnotationsChanged(context) {\n        this.emitOptionCallback('onAnnotationsChanged', [this.getAnnotations(), context]);\n    }\n    emitBusyChangeIfChanged(context) {\n        const isBusy = this.isBusy();\n        if (this.runtime.lastEmittedIsBusy === isBusy)\n            return;\n        this.runtime.lastEmittedIsBusy = isBusy;\n        this.emitOptionCallback('onBusyChange', [isBusy, context]);\n    }\n    emitToolModeChangeIfChanged(context) {\n        const activeToolMode = this.getActiveToolMode();\n        const previousToolMode = this.runtime.lastEmittedToolMode;\n        if (previousToolMode === activeToolMode)\n            return;\n        this.runtime.lastEmittedToolMode = activeToolMode;\n        this.emitOptionCallback('onToolModeChange', [activeToolMode, previousToolMode, context]);\n    }\n    emitHistoryChangeIfChanged(context) {\n        const history = {\n            canUndo: this.runtime.historyManager.canUndo(),\n            canRedo: this.runtime.historyManager.canRedo(),\n        };\n        const previous = this.runtime.lastEmittedHistoryState;\n        if (previous.canUndo === history.canUndo && previous.canRedo === history.canRedo)\n            return;\n        this.runtime.lastEmittedHistoryState = history;\n        this.emitOptionCallback('onHistoryChange', [history, context]);\n    }\n    buildSelection(selected) {\n        var _a, _b;\n        const selectedMasks = selected.filter(isMaskObject);\n        const selectedAnnotations = selected.filter(isAnnotationObject);\n        const selectedObjectKind = selectedMasks.length === 1 && selectedAnnotations.length === 0\n            ? 'mask'\n            : selectedAnnotations.length === 1 && selectedMasks.length === 0\n                ? 'annotation'\n                : null;\n        return {\n            selectedMask: (_a = selectedMasks[0]) !== null && _a !== void 0 ? _a : null,\n            selectedMasks,\n            selectedAnnotation: (_b = selectedAnnotations[0]) !== null && _b !== void 0 ? _b : null,\n            selectedAnnotations,\n            selectedObjectKind,\n        };\n    }\n    getSelection() {\n        if (!this.runtime.canvas)\n            return this.buildSelection([]);\n        return this.buildSelection(getActiveSelectionObjects(this.runtime.canvas));\n    }\n    withSelectionChangeContext(context, callback) {\n        const previous = this.runtime.nextSelectionChangeContext;\n        this.runtime.nextSelectionChangeContext = context;\n        try {\n            return callback();\n        }\n        finally {\n            this.runtime.nextSelectionChangeContext = previous;\n        }\n    }\n    isSupportedImageMimeType(mimeType) {\n        return mimeType === 'image/jpeg' || mimeType === 'image/png' || mimeType === 'image/webp';\n    }\n    inferCurrentImageMimeType() {\n        const image = this.runtime.originalImage;\n        if (!image)\n            return null;\n        let source = null;\n        try {\n            if (typeof image.getSrc === 'function')\n                source = image.getSrc();\n            else if (typeof image.src === 'string')\n                source = image.src;\n        }\n        catch {\n            source = null;\n        }\n        const mimeType = source ? detectSourceMimeType(source) : null;\n        return this.isSupportedImageMimeType(mimeType) ? mimeType : null;\n    }\n    canRunPublicLayoutOperation(operation) {\n        if (this.runtime.isDisposed || !this.runtime.canvas)\n            return false;\n        return this.canRunIdleOperation(operation);\n    }\n    normalizeCanvasDimension(value, operation) {\n        const numericValue = Number(value);\n        if (isPositiveFiniteDimension(numericValue))\n            return Math.round(numericValue);\n        reportWarning(this.runtime.options, new TypeError(`[ImageEditor] ${operation} expected positive finite canvas dimensions.`), `${operation} ignored invalid canvas dimensions.`);\n        return null;\n    }\n    validatePublicCanvasSizeBudget(width, height, operation) {\n        const { maxExportDimension, maxExportPixels } = this.runtime.options;\n        if (width > maxExportDimension || height > maxExportDimension) {\n            const message = `${operation} ignored because canvas size ${width}x${height} exceeds maxExportDimension (${maxExportDimension}).`;\n            reportWarning(this.runtime.options, new RangeError(`[ImageEditor] ${message}`), message);\n            return false;\n        }\n        const pixelCount = width * height;\n        if (pixelCount > maxExportPixels) {\n            const message = `${operation} ignored because canvas size ${width}x${height} exceeds maxExportPixels (${maxExportPixels}).`;\n            reportWarning(this.runtime.options, new RangeError(`[ImageEditor] ${message}`), message);\n            return false;\n        }\n        return true;\n    }\n    applyPublicCanvasSize(widthPx, heightPx, operation, options = {}) {\n        var _a;\n        if (!options.skipGuard && !this.canRunPublicLayoutOperation(operation))\n            return false;\n        const width = this.normalizeCanvasDimension(widthPx, operation);\n        const height = this.normalizeCanvasDimension(heightPx, operation);\n        if (width === null || height === null)\n            return false;\n        if (!this.validatePublicCanvasSizeBudget(width, height, operation))\n            return false;\n        const scroll = options.preserveScroll\n            ? captureContainerScroll(this.runtime.containerElement)\n            : null;\n        this.setCanvasSizePx(width, height);\n        restoreContainerScroll(this.runtime.containerElement, scroll, this.runtime.options);\n        (_a = this.runtime.canvas) === null || _a === void 0 ? void 0 : _a.renderAll();\n        this.refreshAfterCanvasLayoutChange(operation);\n        return true;\n    }\n    resolveContainerResizeSize(options) {\n        var _a, _b;\n        const container = this.runtime.containerElement;\n        const containerWidth = Math.floor((_a = container === null || container === void 0 ? void 0 : container.clientWidth) !== null && _a !== void 0 ? _a : 0);\n        const containerHeight = Math.floor((_b = container === null || container === void 0 ? void 0 : container.clientHeight) !== null && _b !== void 0 ? _b : 0);\n        if (containerWidth > 0 && containerHeight > 0) {\n            return { width: containerWidth, height: containerHeight };\n        }\n        const fallbackWidth = Number(options.fallbackWidth);\n        const fallbackHeight = Number(options.fallbackHeight);\n        if (isPositiveFiniteDimension(fallbackWidth) && isPositiveFiniteDimension(fallbackHeight)) {\n            return { width: Math.round(fallbackWidth), height: Math.round(fallbackHeight) };\n        }\n        return null;\n    }\n    refreshAfterCanvasLayoutChange(operation) {\n        const context = this.buildCallbackContext(operation, false);\n        this.updateInputs();\n        this.updateUi();\n        this.updatePlaceholderStatus();\n        this.emitImageChanged(context);\n        this.emitBusyChangeIfChanged(context);\n    }\n    setCanvasSizePx(widthPx, heightPx) {\n        if (!this.runtime.canvas)\n            return;\n        applyCanvasDimensions(this.runtime.canvas, widthPx, heightPx, this.runtime.containerElement);\n    }\n    alignObjectBoundingBoxToCanvasTopLeft(object) {\n        var _a, _b, _c;\n        object.setCoords();\n        const boundingRect = object.getBoundingRect();\n        object.set({\n            left: ((_a = object.left) !== null && _a !== void 0 ? _a : 0) - boundingRect.left,\n            top: ((_b = object.top) !== null && _b !== void 0 ? _b : 0) - boundingRect.top,\n        });\n        object.setCoords();\n        (_c = this.runtime.canvas) === null || _c === void 0 ? void 0 : _c.renderAll();\n    }\n    buildDisplayGeometryContext() {\n        return {\n            canvas: this.runtime.canvas,\n            containerElement: this.runtime.containerElement,\n            options: this.runtime.options,\n            currentLayoutMode: this.runtime.currentLayoutMode,\n            viewportCache: this.runtime.viewportCache,\n            getOriginalImage: () => this.runtime.originalImage,\n            setCanvasSize: (widthPx, heightPx) => {\n                this.setCanvasSizePx(widthPx, heightPx);\n            },\n            setCurrentScale: (scale) => {\n                this.runtime.currentScale = scale;\n            },\n            setCurrentRotation: (rotation) => {\n                this.runtime.currentRotation = rotation;\n            },\n            setBaseImageScale: (scale) => {\n                this.runtime.baseImageScale = scale;\n            },\n            captureSnapshot: () => this.captureSnapshotInternal(),\n            setLastSnapshot: (snapshot) => {\n                this.runtime.lastSnapshot = snapshot;\n            },\n        };\n    }\n    measureLayoutViewport(scrollbarSize) {\n        return measureLayoutViewportImpl(this.buildDisplayGeometryContext(), scrollbarSize);\n    }\n    updateCanvasSizeToImageBounds(options = {}) {\n        updateCanvasSizeToImageBoundsImpl(this.buildDisplayGeometryContext(), options);\n    }\n    shouldNormalizeCanvasSizeAfterStateRestore() {\n        return shouldNormalizeCanvasSizeAfterStateRestoreImpl(this.buildDisplayGeometryContext());\n    }\n    settleFitCoverScrollbarsAfterStateRestore() {\n        settleFitCoverScrollbarsAfterStateRestoreImpl(this.buildDisplayGeometryContext());\n    }\n    captureImageDisplayGeometry() {\n        return captureImageDisplayGeometryImpl(this.buildDisplayGeometryContext());\n    }\n    restoreMergedImageDisplayGeometry(geometry) {\n        restoreMergedImageDisplayGeometryImpl(this.buildDisplayGeometryContext(), geometry);\n    }\n    buildTransformContext() {\n        return this.contextFactory.buildTransformContext();\n    }\n    scaleImage(factor) {\n        return scaleImageAction(this.actionAccessFactory.buildTransformActionAccess(), factor);\n    }\n    rotateImage(degrees) {\n        return rotateImageAction(this.actionAccessFactory.buildTransformActionAccess(), degrees);\n    }\n    flipHorizontal() {\n        return flipHorizontalAction(this.actionAccessFactory.buildTransformActionAccess());\n    }\n    flipVertical() {\n        return flipVerticalAction(this.actionAccessFactory.buildTransformActionAccess());\n    }\n    resetImageTransform() {\n        return resetImageTransformAction(this.actionAccessFactory.buildTransformActionAccess());\n    }\n    refreshUiAfterQueuedAnimation() {\n        if (this.runtime.isDisposed || !this.runtime.canvas)\n            return;\n        this.updateInputs();\n        this.updateUi();\n    }\n    async loadFromState(jsonString) {\n        return this.loadFromStateInternal(jsonString);\n    }\n    async loadFromStateInternal(jsonString, options) {\n        await loadFromStateAction(this.actionAccessFactory.buildEditorStateActionAccess(), jsonString, options);\n    }\n    saveState() {\n        this.saveStateInternal();\n        this.emitHistoryChangeIfChanged(this.buildCallbackContext('saveState', false));\n    }\n    saveStateInternal(options) {\n        saveStateAction(this.actionAccessFactory.buildEditorStateActionAccess(), options);\n    }\n    undo() {\n        if (this.runtime.isDisposed)\n            return Promise.resolve();\n        if (!this.canRunIdleOperation('undo'))\n            return Promise.resolve();\n        this.finalizeActiveTextEditingIfNeeded();\n        const context = this.buildCallbackContext('undo', true);\n        const job = this.runtime.animQueue.add(async () => {\n            if (this.runtime.isDisposed)\n                return;\n            this.runtime.activeStateRestoreOperation = 'undo';\n            try {\n                await this.runtime.historyManager.undo();\n                this.emitHistoryChangeIfChanged(context);\n            }\n            finally {\n                this.runtime.activeStateRestoreOperation = null;\n            }\n        });\n        this.emitBusyChangeIfChanged(context);\n        return job.finally(() => {\n            this.refreshUiAfterQueuedAnimation();\n            this.emitBusyChangeIfChanged(context);\n        });\n    }\n    redo() {\n        if (this.runtime.isDisposed)\n            return Promise.resolve();\n        if (!this.canRunIdleOperation('redo'))\n            return Promise.resolve();\n        this.finalizeActiveTextEditingIfNeeded();\n        const context = this.buildCallbackContext('redo', true);\n        const job = this.runtime.animQueue.add(async () => {\n            if (this.runtime.isDisposed)\n                return;\n            this.runtime.activeStateRestoreOperation = 'redo';\n            try {\n                await this.runtime.historyManager.redo();\n                this.emitHistoryChangeIfChanged(context);\n            }\n            finally {\n                this.runtime.activeStateRestoreOperation = null;\n            }\n        });\n        this.emitBusyChangeIfChanged(context);\n        return job.finally(() => {\n            this.refreshUiAfterQueuedAnimation();\n            this.emitBusyChangeIfChanged(context);\n        });\n    }\n    createMask(config = {}) {\n        return createMaskAction(this.actionAccessFactory.buildMaskActionAccess(), config);\n    }\n    removeSelectedMask() {\n        removeSelectedMaskAction(this.actionAccessFactory.buildMaskActionAccess());\n    }\n    removeAllMasks(options = {}) {\n        removeAllMasksActionImpl(this.actionAccessFactory.buildMaskActionAccess(), options);\n    }\n    buildMaskLabelContext() {\n        return this.contextFactory.buildMaskLabelContext();\n    }\n    removeLabelForMask(mask) {\n        const context = this.buildMaskLabelContext();\n        if (!context)\n            return;\n        removeLabelForMask(context, mask);\n    }\n    hideAllMaskLabels() {\n        const context = this.buildMaskLabelContext();\n        if (!context)\n            return;\n        hideAllMaskLabels(context);\n    }\n    syncMaskLabel(mask) {\n        const context = this.buildMaskLabelContext();\n        if (!context)\n            return;\n        syncMaskLabel(context, mask);\n    }\n    showLabelForMask(mask) {\n        const context = this.buildMaskLabelContext();\n        if (!context)\n            return;\n        showLabelForMask(context, mask);\n    }\n    handleObjectMovingScalingRotating(target) {\n        handleObjectMovingScalingRotatingImpl(this.actionAccessFactory.buildSelectionControllerAccess(), target);\n    }\n    handleObjectModified(target) {\n        handleObjectModifiedImpl(this.actionAccessFactory.buildSelectionControllerAccess(), target);\n    }\n    handleSelectionChanged(selected) {\n        handleSelectionChangedImpl(this.actionAccessFactory.buildSelectionControllerAccess(), selected);\n    }\n    buildMaskListContext() {\n        return this.contextFactory.buildMaskListContext();\n    }\n    updateMaskList() {\n        renderMaskList(this.buildMaskListContext());\n    }\n    updateMaskListSelection(selectedMask) {\n        updateMaskListSelection(this.buildMaskListContext(), selectedMask);\n    }\n    enterTextMode() {\n        enterTextModeAction(this.actionAccessFactory.buildAnnotationModeActionAccess());\n    }\n    exitTextMode() {\n        exitTextModeAction(this.actionAccessFactory.buildAnnotationModeActionAccess());\n    }\n    isTextMode() {\n        return this.runtime.textSession !== null;\n    }\n    createTextAnnotation(config = {}) {\n        return createTextAnnotationAction(this.actionAccessFactory.buildAnnotationModeActionAccess(), config);\n    }\n    enterDrawMode() {\n        enterDrawModeAction(this.actionAccessFactory.buildAnnotationModeActionAccess());\n    }\n    exitDrawMode() {\n        exitDrawModeAction(this.actionAccessFactory.buildAnnotationModeActionAccess());\n    }\n    isDrawMode() {\n        return this.runtime.drawSession !== null;\n    }\n    getTextConfig() {\n        return cloneResolvedTextAnnotationConfig(this.runtime.currentTextConfig);\n    }\n    setTextConfig(config) {\n        this.applyTextConfigPatch(config, 'setTextConfig');\n    }\n    resetTextConfig() {\n        this.applyTextConfigPatch(this.runtime.defaultTextConfig, 'resetTextConfig');\n    }\n    setTextColor(color) {\n        this.applyTextConfigPatch({ fill: color }, 'setTextColor');\n    }\n    setTextFontSize(size) {\n        this.applyTextConfigPatch({ fontSize: size }, 'setTextFontSize');\n    }\n    getDrawConfig() {\n        return cloneResolvedDrawConfig(this.runtime.currentDrawConfig);\n    }\n    setDrawConfig(config) {\n        this.applyDrawConfigPatch(config, 'setDrawConfig');\n    }\n    resetDrawConfig() {\n        this.applyDrawConfigPatch(this.runtime.defaultDrawConfig, 'resetDrawConfig');\n    }\n    setDrawColor(color) {\n        this.applyDrawConfigPatch({ color }, 'setDrawColor');\n    }\n    setDrawBrushSize(size) {\n        this.applyDrawConfigPatch({ brushSize: size }, 'setDrawBrushSize');\n    }\n    setDrawSubMode(mode) {\n        if (!this.runtime.canvas || !this.runtime.drawSession)\n            return;\n        if (!this.canRunIdleOperation('setDrawSubMode'))\n            return;\n        if (mode !== 'brush' && mode !== 'erase') {\n            reportWarning(this.runtime.options, new TypeError('[ImageEditor] setDrawSubMode expected \"brush\" or \"erase\".'), 'Ignored invalid Draw sub-mode.');\n            return;\n        }\n        setDrawSubModeImpl(this.buildDrawControllerContext(), mode);\n        this.updateInputs();\n        this.emitImageChanged(this.buildCallbackContext('setDrawSubMode', false));\n    }\n    getDrawSubMode() {\n        var _a, _b;\n        return (_b = (_a = this.runtime.drawSession) === null || _a === void 0 ? void 0 : _a.subMode) !== null && _b !== void 0 ? _b : null;\n    }\n    getEraserConfig() {\n        return cloneResolvedEraserConfig(this.runtime.currentEraserConfig);\n    }\n    setEraserConfig(config) {\n        this.applyEraserConfigPatch(config, 'setEraserConfig');\n    }\n    resetEraserConfig() {\n        this.applyEraserConfigPatch(this.runtime.defaultEraserConfig, 'resetEraserConfig');\n    }\n    createShapeAnnotation(config = {}) {\n        if (!this.runtime.canvas)\n            return null;\n        if (!this.canRunIdleOperation('createShapeAnnotation'))\n            return null;\n        return createShapeAnnotationImpl(this.buildShapeControllerContext(), config);\n    }\n    enterShapeMode(shape = this.runtime.currentShapeConfig.shape) {\n        if (!this.runtime.canvas)\n            return;\n        if (!this.canRunIdleOperation('enterShapeMode'))\n            return;\n        enterShapeModeImpl(this.buildShapeControllerContext(), shape);\n        const callbackContext = this.buildCallbackContext('enterShapeMode', false);\n        this.emitBusyChangeIfChanged(callbackContext);\n        this.emitImageChanged(callbackContext);\n    }\n    exitShapeMode() {\n        if (!this.runtime.canvas || !this.runtime.shapeSession)\n            return;\n        if (!this.canRunIdleOperation('exitShapeMode'))\n            return;\n        exitShapeModeImpl(this.buildShapeControllerContext());\n        const callbackContext = this.buildCallbackContext('exitShapeMode', false);\n        this.emitBusyChangeIfChanged(callbackContext);\n        this.emitImageChanged(callbackContext);\n    }\n    isShapeMode() {\n        return this.runtime.shapeSession !== null;\n    }\n    getShapeConfig() {\n        return cloneResolvedShapeAnnotationConfig(this.runtime.currentShapeConfig);\n    }\n    setShapeConfig(config) {\n        this.applyShapeConfigPatch(config, 'setShapeConfig');\n    }\n    resetShapeConfig() {\n        this.applyShapeConfigPatch(this.runtime.defaultShapeConfig, 'resetShapeConfig');\n    }\n    removeSelectedAnnotation() {\n        if (!this.runtime.canvas)\n            return;\n        if (!this.canRunIdleOperation('removeSelectedAnnotation'))\n            return;\n        const callbackContext = this.buildCallbackContext('removeSelectedAnnotation', false);\n        removeSelectedAnnotationAction(this.actionAccessFactory.buildEditableObjectActionAccess(), callbackContext);\n    }\n    removeAllAnnotations(options = {}) {\n        if (!this.runtime.canvas)\n            return;\n        if (!this.canRunIdleOperation('removeAllAnnotations', options))\n            return;\n        const callbackContext = this.buildCallbackContext('removeAllAnnotations', false);\n        removeAllAnnotationsAction(this.actionAccessFactory.buildEditableObjectActionAccess(), options, callbackContext);\n    }\n    updateAnnotation(annotationId, config) {\n        if (!this.runtime.canvas)\n            return;\n        if (!this.canRunIdleOperation('updateAnnotation'))\n            return;\n        const callbackContext = this.buildCallbackContext('updateAnnotation', false);\n        updateAnnotationAction(this.actionAccessFactory.buildEditableObjectActionAccess(), annotationId, config, callbackContext);\n    }\n    updateSelectedAnnotation(config) {\n        if (!this.runtime.canvas)\n            return;\n        if (!this.canRunIdleOperation('updateSelectedAnnotation'))\n            return;\n        const callbackContext = this.buildCallbackContext('updateSelectedAnnotation', false);\n        updateSelectedAnnotationAction(this.actionAccessFactory.buildEditableObjectActionAccess(), config, callbackContext);\n    }\n    deleteSelectedObject() {\n        if (!this.runtime.canvas)\n            return;\n        if (!this.canRunIdleOperation('deleteSelectedObject'))\n            return;\n        this.finalizeActiveTextEditingIfNeeded();\n        const callbackContext = this.buildCallbackContext('deleteSelectedObject', false);\n        deleteSelectedEditableObjects(this.actionAccessFactory.buildEditableObjectActionAccess(), callbackContext);\n    }\n    bringSelectedObjectForward() {\n        this.moveSelectedEditableObject('bringSelectedObjectForward');\n    }\n    sendSelectedObjectBackward() {\n        this.moveSelectedEditableObject('sendSelectedObjectBackward');\n    }\n    bringSelectedObjectToFront() {\n        this.moveSelectedEditableObject('bringSelectedObjectToFront');\n    }\n    sendSelectedObjectToBack() {\n        this.moveSelectedEditableObject('sendSelectedObjectToBack');\n    }\n    buildAnnotationListContext() {\n        return this.contextFactory.buildAnnotationListContext();\n    }\n    updateAnnotationList() {\n        renderAnnotationList(this.buildAnnotationListContext());\n    }\n    updateAnnotationListSelection(selectedAnnotation) {\n        updateAnnotationListSelection(this.buildAnnotationListContext(), selectedAnnotation);\n    }\n    buildTextControllerContext() {\n        return this.contextFactory.buildTextControllerContext();\n    }\n    buildDrawControllerContext() {\n        return this.contextFactory.buildDrawControllerContext();\n    }\n    buildShapeControllerContext() {\n        return this.contextFactory.buildShapeControllerContext();\n    }\n    applyTextConfigPatch(config, operation) {\n        applyTextConfigPatchAction(this.actionAccessFactory.buildAnnotationConfigActionAccess(), config, operation);\n    }\n    applyDrawConfigPatch(config, operation) {\n        applyDrawConfigPatchAction(this.actionAccessFactory.buildAnnotationConfigActionAccess(), config, operation);\n    }\n    applyEraserConfigPatch(config, operation) {\n        if (!this.runtime.canvas)\n            return;\n        if (!this.canRunIdleOperation(operation))\n            return;\n        const invalidFields = getInvalidEraserConfigFields(config);\n        if (invalidFields.length > 0) {\n            reportWarning(this.runtime.options, null, `${operation} ignored invalid Eraser config fields: ${invalidFields.join(', ')}.`);\n        }\n        const next = mergeEraserConfigPatch(this.runtime.currentEraserConfig, config, this.runtime.defaultEraserConfig);\n        if (areResolvedEraserConfigsEqual(this.runtime.currentEraserConfig, next))\n            return;\n        this.runtime.currentEraserConfig = next;\n        updateEraserPreview(this.buildDrawControllerContext());\n        this.updateInputs();\n        this.updateUi();\n        this.emitImageChanged(this.buildCallbackContext(operation, false));\n    }\n    applyShapeConfigPatch(config, operation) {\n        if (!this.runtime.canvas)\n            return;\n        if (!this.canRunIdleOperation(operation))\n            return;\n        const invalidFields = getInvalidShapeAnnotationConfigFields(config);\n        if (invalidFields.length > 0) {\n            reportWarning(this.runtime.options, null, `${operation} ignored invalid Shape config fields: ${invalidFields.join(', ')}.`);\n        }\n        const next = mergeShapeAnnotationConfigPatch(this.runtime.currentShapeConfig, config, this.runtime.defaultShapeConfig);\n        if (areResolvedShapeAnnotationConfigsEqual(this.runtime.currentShapeConfig, next))\n            return;\n        this.runtime.currentShapeConfig = next;\n        syncShapeModeConfig(this.buildShapeControllerContext());\n        this.updateInputs();\n        this.updateUi();\n        this.emitImageChanged(this.buildCallbackContext(operation, false));\n    }\n    applyTextColorInput(color) {\n        applyTextColorInputAction(this.actionAccessFactory.buildAnnotationConfigActionAccess(), color);\n    }\n    applyTextFontSizeInput(size) {\n        applyTextFontSizeInputAction(this.actionAccessFactory.buildAnnotationConfigActionAccess(), size);\n    }\n    applyDrawColorInput(color) {\n        applyDrawColorInputAction(this.actionAccessFactory.buildAnnotationConfigActionAccess(), color);\n    }\n    applyDrawBrushSizeInput(size) {\n        applyDrawBrushSizeInputAction(this.actionAccessFactory.buildAnnotationConfigActionAccess(), size);\n    }\n    moveSelectedEditableObject(operation) {\n        if (!this.runtime.canvas)\n            return;\n        if (!this.canRunIdleOperation(operation))\n            return;\n        moveSelectedEditableObjectImpl(this.actionAccessFactory.buildEditableObjectActionAccess(), operation);\n    }\n    async mergeMasks() {\n        await mergeMasksAction(this.actionAccessFactory.buildExportActionAccess());\n    }\n    async downloadImage(options) {\n        await downloadImageAction(this.actionAccessFactory.buildExportActionAccess(), options);\n    }\n    async exportImageBase64(options) {\n        return exportImageBase64Action(this.actionAccessFactory.buildExportActionAccess(), options);\n    }\n    async exportImageFile(options) {\n        return exportImageFileAction(this.actionAccessFactory.buildExportActionAccess(), options);\n    }\n    captureSnapshotInternal() {\n        return captureSnapshotAction(this.actionAccessFactory.buildEditorStateActionAccess());\n    }\n    enterMosaicMode() {\n        enterMosaicModeAction(this.actionAccessFactory.buildMosaicActionAccess());\n    }\n    exitMosaicMode() {\n        exitMosaicModeAction(this.actionAccessFactory.buildMosaicActionAccess());\n    }\n    isMosaicMode() {\n        return this.runtime.mosaicSession !== null;\n    }\n    getMosaicConfig() {\n        return cloneResolvedMosaicConfig(this.runtime.currentMosaicConfig);\n    }\n    setMosaicConfig(config) {\n        this.applyMosaicConfigPatch(config, 'setMosaicConfig');\n    }\n    resetMosaicConfig() {\n        resetMosaicConfigAction(this.actionAccessFactory.buildMosaicActionAccess());\n    }\n    setMosaicBrushSize(size) {\n        this.applyMosaicConfigPatch({ brushSize: size }, 'setMosaicBrushSize');\n    }\n    setMosaicBlockSize(size) {\n        this.applyMosaicConfigPatch({ blockSize: size }, 'setMosaicBlockSize');\n    }\n    applyMosaicConfigPatch(config, operation) {\n        applyMosaicConfigPatchAction(this.actionAccessFactory.buildMosaicActionAccess(), config, operation);\n    }\n    buildMosaicControllerContext() {\n        return this.contextFactory.buildMosaicControllerContext();\n    }\n    enterCropMode(options = {}) {\n        enterCropModeAction(this.actionAccessFactory.buildCropActionAccess(), options);\n    }\n    setCropAspectRatio(aspectRatio) {\n        setCropAspectRatioAction(this.actionAccessFactory.buildCropActionAccess(), aspectRatio);\n    }\n    cancelCrop() {\n        cancelCropAction(this.actionAccessFactory.buildCropActionAccess());\n    }\n    async applyCrop() {\n        await applyCropAction(this.actionAccessFactory.buildCropActionAccess());\n    }\n    buildCropControllerContext(operationToken) {\n        return this.contextFactory.buildCropControllerContext(operationToken);\n    }\n    updateInputs() {\n        applyEditorInputState({\n            currentScale: this.runtime.currentScale,\n            imageFilterConfig: this.getImageFilterConfig(),\n            mosaicConfig: this.getMosaicConfig(),\n            textConfig: this.getTextConfig(),\n            drawConfig: this.getDrawConfig(),\n            drawSubMode: this.getDrawSubMode(),\n            eraserConfig: this.getEraserConfig(),\n            shapeConfig: this.getShapeConfig(),\n        }, (key) => this.resolveElement(key));\n    }\n    async mergeAnnotations() {\n        await mergeAnnotationsAction(this.actionAccessFactory.buildExportActionAccess());\n    }\n    updateUi() {\n        const snapshot = buildEditorControlSnapshot(this.runtime);\n        if (!snapshot)\n            return;\n        applyEditorControlState(snapshot, (key, enabled) => {\n            this.setControlEnabled(key, enabled);\n        });\n    }\n    buildControlElementContext() {\n        return {\n            elements: this.runtime.elements,\n            originalDisabledMap: this.runtime.elementOriginalDisabledMap,\n            originalAriaDisabledMap: this.runtime.elementOriginalAriaDisabledMap,\n            originalPointerEventsMap: this.runtime.elementOriginalPointerEventsMap,\n            getElement: (key) => this.resolveElement(key),\n        };\n    }\n    setControlEnabled(key, isEnabled) {\n        setEditorControlEnabled(this.buildControlElementContext(), key, isEnabled);\n    }\n    restoreElementOriginalStates() {\n        restoreEditorControlOriginalStates(this.buildControlElementContext());\n    }\n    updatePlaceholderStatus() {\n        setPlaceholderVisibleImpl(this.runtime.placeholderElement, this.runtime.containerElement, this.runtime.options.showPlaceholder ? !this.runtime.originalImage : false);\n    }\n    dispose() {\n        void this.disposeInternal(false);\n    }\n    async disposeAsync() {\n        await this.disposeInternal(true);\n    }\n    disposeInternal(waitForCanvasDispose) {\n        var _a;\n        if (this.runtime.isDisposed) {\n            return waitForCanvasDispose ? Promise.resolve() : undefined;\n        }\n        const context = this.buildCallbackContext('dispose', false);\n        const previousImage = this.runtime.originalImage;\n        this.runtime.isDisposed = true;\n        this.runtime.operationGuard.markDisposed();\n        this.runtime.animQueue.clear();\n        (_a = this.runtime.domBindings) === null || _a === void 0 ? void 0 : _a.removeAll();\n        safelyRemoveKeyboardListener(this.runtime.keyboardDocument, this.runtime.keyboardHandler);\n        this.runtime.keyboardHandler = null;\n        this.runtime.keyboardDocument = null;\n        this.restoreElementOriginalStates();\n        safelyExitActiveSession(this.runtime.cropSession !== null, this.runtime.canvas, () => cancelCropImpl(this.buildCropControllerContext()), () => {\n            this.runtime.cropSession = null;\n        });\n        safelyExitActiveSession(this.runtime.mosaicSession !== null, this.runtime.canvas, () => exitMosaicModeImpl(this.buildMosaicControllerContext()), () => {\n            this.runtime.mosaicSession = null;\n        });\n        safelyExitActiveSession(this.runtime.textSession !== null, this.runtime.canvas, () => exitTextModeImpl(this.buildTextControllerContext()), () => {\n            this.runtime.textSession = null;\n        });\n        safelyExitActiveSession(this.runtime.drawSession !== null, this.runtime.canvas, () => exitDrawModeImpl(this.buildDrawControllerContext()), () => {\n            this.runtime.drawSession = null;\n        });\n        safelyExitActiveSession(this.runtime.shapeSession !== null, this.runtime.canvas, () => exitShapeModeImpl(this.buildShapeControllerContext()), () => {\n            this.runtime.shapeSession = null;\n        });\n        const canvasDispose = this.runtime.canvas\n            ? safelyDisposeCanvas(this.runtime.canvas)\n            : Promise.resolve();\n        this.runtime.resetAfterDispose();\n        if (previousImage) {\n            this.emitOptionCallback('onImageCleared', [previousImage, context]);\n        }\n        this.emitImageChanged(context);\n        this.emitBusyChangeIfChanged(context);\n        this.emitOptionCallback('onEditorDisposed', [context]);\n        if (waitForCanvasDispose)\n            return canvasDispose;\n        return undefined;\n    }\n}\n//# sourceMappingURL=image-editor.js.map"],"names":["isConfigObject","CROP_ASPECT_RATIO_PRESETS","hasOwn","isFiniteNumber","isActiveSelectionObject","getUtf8ByteLength","readBoolean","loadFromStateImpl","saveStateImpl","transformPathPoint","buildArrowPath","attachCanvasHandler","detachCanvasHandlers","enterTextModeImpl","exitTextModeImpl","createTextAnnotationImpl","enterDrawModeImpl","exitDrawModeImpl","clampExportQuality","enterCropModeImpl","setCropAspectRatioImpl","cancelCropImpl","applyCropImpl","isPositiveFinite","getCanvasDocument","enterMosaicModeImpl","exitMosaicModeImpl","mergeMasksImpl","mergeAnnotationsImpl","downloadImageImpl","exportImageBase64Impl","exportImageFileImpl","hasPositiveDimensions","computeTopLeftPoint","removeAllMasksImpl","removeAllAnnotationsImpl","setPlaceholderVisibleImpl","removeSelectedAnnotationImpl","updateAnnotationImpl","updateSelectedAnnotationImpl","addError","finiteNumber","getObjectCenter","createMaskImpl","removeSelectedMaskImpl","loadImageFileImpl","loadImageImpl","getAnnotationsImpl","exportOverlayStateImpl","validateOverlayStateImpl","getActiveToolModeFromSnapshot","isToolModeActiveFromSnapshot","measureLayoutViewportImpl","updateCanvasSizeToImageBoundsImpl","shouldNormalizeCanvasSizeAfterStateRestoreImpl","settleFitCoverScrollbarsAfterStateRestoreImpl","captureImageDisplayGeometryImpl","restoreMergedImageDisplayGeometryImpl","removeAllMasksActionImpl","handleObjectMovingScalingRotatingImpl","handleObjectModifiedImpl","handleSelectionChangedImpl","setDrawSubModeImpl","createShapeAnnotationImpl","enterShapeModeImpl","exitShapeModeImpl","moveSelectedEditableObjectImpl"],"mappings":";;;;AAAO,SAAS,aAAa,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;AACvD,IAAI,MAAM,eAAe,GAAG,OAAO,CAAC,SAAS;AAC7C,IAAI,IAAI,OAAO,eAAe,KAAK,UAAU;AAC7C,QAAQ;AACR,IAAI,IAAI;AACR,QAAQ,eAAe,CAAC,KAAK,EAAE,OAAO,CAAC;AACvC,IAAI;AACJ,IAAI,OAAO,aAAa,EAAE;AAC1B,QAAQ,OAAO,CAAC,IAAI,CAAC,wCAAwC,EAAE,aAAa,CAAC;AAC7E,IAAI;AACJ;AACO,SAAS,WAAW,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;AACrD,IAAI,MAAM,aAAa,GAAG,OAAO,CAAC,OAAO;AACzC,IAAI,IAAI,OAAO,aAAa,KAAK,UAAU;AAC3C,QAAQ;AACR,IAAI,IAAI;AACR,QAAQ,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC;AACrC,IAAI;AACJ,IAAI,OAAO,aAAa,EAAE;AAC1B,QAAQ,OAAO,CAAC,KAAK,CAAC,sCAAsC,EAAE,aAAa,CAAC;AAC5E,IAAI;AACJ;;ACrBA,SAAS,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE;AAClC,IAAI,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;AAC/C;AAaO,MAAM,gBAAgB,SAAS,KAAK,CAAC;AAC5C,IAAI,WAAW,CAAC,OAAO,GAAG,kCAAkC,EAAE,aAAa,GAAG,IAAI,EAAE;AACpF,QAAQ,KAAK,CAAC,OAAO,CAAC;AACtB,QAAQ,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE;AAC5C,YAAY,UAAU,EAAE,IAAI;AAC5B,YAAY,YAAY,EAAE,IAAI;AAC9B,YAAY,QAAQ,EAAE,IAAI;AAC1B,YAAY,KAAK,EAAE;AACnB,SAAS,CAAC;AACV,QAAQ,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,eAAe,EAAE;AACrD,YAAY,UAAU,EAAE,IAAI;AAC5B,YAAY,YAAY,EAAE,IAAI;AAC9B,YAAY,QAAQ,EAAE,IAAI;AAC1B,YAAY,KAAK,EAAE;AACnB,SAAS,CAAC;AACV,QAAQ,IAAI,CAAC,aAAa,GAAG,aAAa;AAC1C,QAAQ,YAAY,CAAC,IAAI,EAAE,gBAAgB,CAAC;AAC5C,IAAI;AACJ;AACO,MAAM,qBAAqB,SAAS,KAAK,CAAC;AACjD,IAAI,WAAW,CAAC,KAAK,EAAE,SAAS,EAAE;AAClC,QAAQ,KAAK,CAAC,CAAC,2BAA2B,EAAE,SAAS,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC;AAC1E,QAAQ,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE;AAC5C,YAAY,UAAU,EAAE,IAAI;AAC5B,YAAY,YAAY,EAAE,IAAI;AAC9B,YAAY,QAAQ,EAAE,IAAI;AAC1B,YAAY,KAAK,EAAE;AACnB,SAAS,CAAC;AACV,QAAQ,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,OAAO,EAAE;AAC7C,YAAY,UAAU,EAAE,IAAI;AAC5B,YAAY,YAAY,EAAE,IAAI;AAC9B,YAAY,QAAQ,EAAE,IAAI;AAC1B,YAAY,KAAK,EAAE;AACnB,SAAS,CAAC;AACV,QAAQ,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,WAAW,EAAE;AACjD,YAAY,UAAU,EAAE,IAAI;AAC5B,YAAY,YAAY,EAAE,IAAI;AAC9B,YAAY,QAAQ,EAAE,IAAI;AAC1B,YAAY,KAAK,EAAE;AACnB,SAAS,CAAC;AACV,QAAQ,IAAI,CAAC,KAAK,GAAG,KAAK;AAC1B,QAAQ,IAAI,CAAC,SAAS,GAAG,SAAS;AAClC,QAAQ,YAAY,CAAC,IAAI,EAAE,qBAAqB,CAAC;AACjD,IAAI;AACJ;AACO,MAAM,6BAA6B,SAAS,KAAK,CAAC;AACzD,IAAI,WAAW,CAAC,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE;AAC/C,QAAQ,KAAK,CAAC,CAAC,mCAAmC,EAAE,KAAK,CAAC,EAAE,EAAE,WAAW,CAAC,sBAAsB,EAAE,SAAS,CAAC,YAAY,CAAC,CAAC;AAC1H,QAAQ,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE;AAC5C,YAAY,UAAU,EAAE,IAAI;AAC5B,YAAY,YAAY,EAAE,IAAI;AAC9B,YAAY,QAAQ,EAAE,IAAI;AAC1B,YAAY,KAAK,EAAE;AACnB,SAAS,CAAC;AACV,QAAQ,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,OAAO,EAAE;AAC7C,YAAY,UAAU,EAAE,IAAI;AAC5B,YAAY,YAAY,EAAE,IAAI;AAC9B,YAAY,QAAQ,EAAE,IAAI;AAC1B,YAAY,KAAK,EAAE;AACnB,SAAS,CAAC;AACV,QAAQ,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,aAAa,EAAE;AACnD,YAAY,UAAU,EAAE,IAAI;AAC5B,YAAY,YAAY,EAAE,IAAI;AAC9B,YAAY,QAAQ,EAAE,IAAI;AAC1B,YAAY,KAAK,EAAE;AACnB,SAAS,CAAC;AACV,QAAQ,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,WAAW,EAAE;AACjD,YAAY,UAAU,EAAE,IAAI;AAC5B,YAAY,YAAY,EAAE,IAAI;AAC9B,YAAY,QAAQ,EAAE,IAAI;AAC1B,YAAY,KAAK,EAAE;AACnB,SAAS,CAAC;AACV,QAAQ,IAAI,CAAC,KAAK,GAAG,KAAK;AAC1B,QAAQ,IAAI,CAAC,WAAW,GAAG,WAAW;AACtC,QAAQ,IAAI,CAAC,SAAS,GAAG,SAAS;AAClC,QAAQ,YAAY,CAAC,IAAI,EAAE,6BAA6B,CAAC;AACzD,IAAI;AACJ;AACO,MAAM,eAAe,SAAS,KAAK,CAAC;AAC3C,IAAI,WAAW,CAAC,OAAO,GAAG,iDAAiD,EAAE,aAAa,GAAG,IAAI,EAAE;AACnG,QAAQ,KAAK,CAAC,OAAO,CAAC;AACtB,QAAQ,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE;AAC5C,YAAY,UAAU,EAAE,IAAI;AAC5B,YAAY,YAAY,EAAE,IAAI;AAC9B,YAAY,QAAQ,EAAE,IAAI;AAC1B,YAAY,KAAK,EAAE;AACnB,SAAS,CAAC;AACV,QAAQ,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,eAAe,EAAE;AACrD,YAAY,UAAU,EAAE,IAAI;AAC5B,YAAY,YAAY,EAAE,IAAI;AAC9B,YAAY,QAAQ,EAAE,IAAI;AAC1B,YAAY,KAAK,EAAE;AACnB,SAAS,CAAC;AACV,QAAQ,IAAI,CAAC,aAAa,GAAG,aAAa;AAC1C,QAAQ,YAAY,CAAC,IAAI,EAAE,eAAe,CAAC;AAC3C,IAAI;AACJ;AACO,MAAM,eAAe,SAAS,KAAK,CAAC;AAC3C,IAAI,WAAW,CAAC,OAAO,GAAG,uCAAuC,EAAE,aAAa,GAAG,IAAI,EAAE;AACzF,QAAQ,KAAK,CAAC,OAAO,CAAC;AACtB,QAAQ,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE;AAC5C,YAAY,UAAU,EAAE,IAAI;AAC5B,YAAY,YAAY,EAAE,IAAI;AAC9B,YAAY,QAAQ,EAAE,IAAI;AAC1B,YAAY,KAAK,EAAE;AACnB,SAAS,CAAC;AACV,QAAQ,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,eAAe,EAAE;AACrD,YAAY,UAAU,EAAE,IAAI;AAC5B,YAAY,YAAY,EAAE,IAAI;AAC9B,YAAY,QAAQ,EAAE,IAAI;AAC1B,YAAY,KAAK,EAAE;AACnB,SAAS,CAAC;AACV,QAAQ,IAAI,CAAC,aAAa,GAAG,aAAa;AAC1C,QAAQ,YAAY,CAAC,IAAI,EAAE,eAAe,CAAC;AAC3C,IAAI;AACJ;AACO,MAAM,qBAAqB,SAAS,KAAK,CAAC;AACjD,IAAI,WAAW,CAAC,OAAO,GAAG,6CAA6C,EAAE,aAAa,GAAG,IAAI,EAAE;AAC/F,QAAQ,KAAK,CAAC,OAAO,CAAC;AACtB,QAAQ,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE;AAC5C,YAAY,UAAU,EAAE,IAAI;AAC5B,YAAY,YAAY,EAAE,IAAI;AAC9B,YAAY,QAAQ,EAAE,IAAI;AAC1B,YAAY,KAAK,EAAE;AACnB,SAAS,CAAC;AACV,QAAQ,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,eAAe,EAAE;AACrD,YAAY,UAAU,EAAE,IAAI;AAC5B,YAAY,YAAY,EAAE,IAAI;AAC9B,YAAY,QAAQ,EAAE,IAAI;AAC1B,YAAY,KAAK,EAAE;AACnB,SAAS,CAAC;AACV,QAAQ,IAAI,CAAC,aAAa,GAAG,aAAa;AAC1C,QAAQ,YAAY,CAAC,IAAI,EAAE,qBAAqB,CAAC;AACjD,IAAI;AACJ;AACO,MAAM,cAAc,SAAS,KAAK,CAAC;AAC1C,IAAI,WAAW,CAAC,OAAO,GAAG,oCAAoC,EAAE,aAAa,GAAG,IAAI,EAAE;AACtF,QAAQ,KAAK,CAAC,OAAO,CAAC;AACtB,QAAQ,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE;AAC5C,YAAY,UAAU,EAAE,IAAI;AAC5B,YAAY,YAAY,EAAE,IAAI;AAC9B,YAAY,QAAQ,EAAE,IAAI;AAC1B,YAAY,KAAK,EAAE;AACnB,SAAS,CAAC;AACV,QAAQ,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,eAAe,EAAE;AACrD,YAAY,UAAU,EAAE,IAAI;AAC5B,YAAY,YAAY,EAAE,IAAI;AAC9B,YAAY,QAAQ,EAAE,IAAI;AAC1B,YAAY,KAAK,EAAE;AACnB,SAAS,CAAC;AACV,QAAQ,IAAI,CAAC,aAAa,GAAG,aAAa;AAC1C,QAAQ,YAAY,CAAC,IAAI,EAAE,cAAc,CAAC;AAC1C,IAAI;AACJ;AACO,MAAM,iBAAiB,SAAS,KAAK,CAAC;AAC7C,IAAI,WAAW,CAAC,OAAO,GAAG,iCAAiC,EAAE,aAAa,GAAG,IAAI,EAAE;AACnF,QAAQ,KAAK,CAAC,OAAO,CAAC;AACtB,QAAQ,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE;AAC5C,YAAY,UAAU,EAAE,IAAI;AAC5B,YAAY,YAAY,EAAE,IAAI;AAC9B,YAAY,QAAQ,EAAE,IAAI;AAC1B,YAAY,KAAK,EAAE;AACnB,SAAS,CAAC;AACV,QAAQ,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,eAAe,EAAE;AACrD,YAAY,UAAU,EAAE,IAAI;AAC5B,YAAY,YAAY,EAAE,IAAI;AAC9B,YAAY,QAAQ,EAAE,IAAI;AAC1B,YAAY,KAAK,EAAE;AACnB,SAAS,CAAC;AACV,QAAQ,IAAI,CAAC,aAAa,GAAG,aAAa;AAC1C,QAAQ,YAAY,CAAC,IAAI,EAAE,iBAAiB,CAAC;AAC7C,IAAI;AACJ;AACO,MAAM,cAAc,SAAS,KAAK,CAAC;AAC1C,IAAI,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE;AACnC,QAAQ,KAAK,CAAC,CAAC,0BAA0B,EAAE,SAAS,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;AACnE,QAAQ,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE;AAC5C,YAAY,UAAU,EAAE,IAAI;AAC5B,YAAY,YAAY,EAAE,IAAI;AAC9B,YAAY,QAAQ,EAAE,IAAI;AAC1B,YAAY,KAAK,EAAE;AACnB,SAAS,CAAC;AACV,QAAQ,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,WAAW,EAAE;AACjD,YAAY,UAAU,EAAE,IAAI;AAC5B,YAAY,YAAY,EAAE,IAAI;AAC9B,YAAY,QAAQ,EAAE,IAAI;AAC1B,YAAY,KAAK,EAAE;AACnB,SAAS,CAAC;AACV,QAAQ,IAAI,CAAC,SAAS,GAAG,SAAS;AAClC,QAAQ,YAAY,CAAC,IAAI,EAAE,cAAc,CAAC;AAC1C,IAAI;AACJ;AACO,MAAM,mBAAmB,SAAS,KAAK,CAAC;AAC/C,IAAI,WAAW,CAAC,SAAS,GAAG,iBAAiB,EAAE,MAAM,GAAG,kCAAkC,EAAE;AAC5F,QAAQ,KAAK,CAAC,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;AAChD,QAAQ,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE;AAC5C,YAAY,UAAU,EAAE,IAAI;AAC5B,YAAY,YAAY,EAAE,IAAI;AAC9B,YAAY,QAAQ,EAAE,IAAI;AAC1B,YAAY,KAAK,EAAE;AACnB,SAAS,CAAC;AACV,QAAQ,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,WAAW,EAAE;AACjD,YAAY,UAAU,EAAE,IAAI;AAC5B,YAAY,YAAY,EAAE,IAAI;AAC9B,YAAY,QAAQ,EAAE,IAAI;AAC1B,YAAY,KAAK,EAAE;AACnB,SAAS,CAAC;AACV,QAAQ,IAAI,CAAC,SAAS,GAAG,SAAS;AAClC,QAAQ,YAAY,CAAC,IAAI,EAAE,mBAAmB,CAAC;AAC/C,IAAI;AACJ;AACO,MAAM,WAAW,SAAS,KAAK,CAAC;AACvC,IAAI,WAAW,CAAC,OAAO,GAAG,yBAAyB,EAAE,aAAa,GAAG,IAAI,EAAE;AAC3E,QAAQ,KAAK,CAAC,OAAO,CAAC;AACtB,QAAQ,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE;AAC5C,YAAY,UAAU,EAAE,IAAI;AAC5B,YAAY,YAAY,EAAE,IAAI;AAC9B,YAAY,QAAQ,EAAE,IAAI;AAC1B,YAAY,KAAK,EAAE;AACnB,SAAS,CAAC;AACV,QAAQ,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,eAAe,EAAE;AACrD,YAAY,UAAU,EAAE,IAAI;AAC5B,YAAY,YAAY,EAAE,IAAI;AAC9B,YAAY,QAAQ,EAAE,IAAI;AAC1B,YAAY,KAAK,EAAE;AACnB,SAAS,CAAC;AACV,QAAQ,IAAI,CAAC,aAAa,GAAG,aAAa;AAC1C,QAAQ,YAAY,CAAC,IAAI,EAAE,WAAW,CAAC;AACvC,IAAI;AACJ;;ACpPA,MAAM,uBAAuB,GAAG,MAAM,CAAC,MAAM,CAAC;AAC9C,IAAI,MAAM,EAAE,QAAQ;AACpB,IAAI,eAAe,EAAE,IAAI;AACzB,IAAI,gBAAgB,EAAE,kBAAkB;AACxC,IAAI,oBAAoB,EAAE,sBAAsB;AAChD,IAAI,oBAAoB,EAAE,sBAAsB;AAChD,IAAI,kBAAkB,EAAE,oBAAoB;AAC5C,IAAI,oBAAoB,EAAE,sBAAsB;AAChD,IAAI,cAAc,EAAE,gBAAgB;AACpC,IAAI,iBAAiB,EAAE,mBAAmB;AAC1C,IAAI,mBAAmB,EAAE,qBAAqB;AAC9C,IAAI,eAAe,EAAE,iBAAiB;AACtC,IAAI,iBAAiB,EAAE,mBAAmB;AAC1C,IAAI,uBAAuB,EAAE,yBAAyB;AACtD,IAAI,uBAAuB,EAAE,yBAAyB;AACtD,IAAI,uBAAuB,EAAE,yBAAyB;AACtD,IAAI,sBAAsB,EAAE,wBAAwB;AACpD,IAAI,uBAAuB,EAAE,yBAAyB;AACtD,IAAI,gBAAgB,EAAE,kBAAkB;AACxC,IAAI,iBAAiB,EAAE,mBAAmB;AAC1C,IAAI,oBAAoB,EAAE,sBAAsB;AAChD,IAAI,kBAAkB,EAAE,oBAAoB;AAC5C,IAAI,gBAAgB,EAAE,kBAAkB;AACxC,IAAI,wBAAwB,EAAE,0BAA0B;AACxD,IAAI,oBAAoB,EAAE,sBAAsB;AAChD,IAAI,gBAAgB,EAAE,kBAAkB;AACxC,IAAI,cAAc,EAAE,gBAAgB;AACpC,IAAI,mBAAmB,EAAE,qBAAqB;AAC9C,IAAI,kBAAkB,EAAE,oBAAoB;AAC5C,IAAI,cAAc,EAAE,gBAAgB;AACpC,IAAI,iBAAiB,EAAE,mBAAmB;AAC1C,IAAI,mBAAmB,EAAE,qBAAqB;AAC9C,IAAI,kBAAkB,EAAE,oBAAoB;AAC5C,IAAI,cAAc,EAAE,gBAAgB;AACpC,IAAI,kBAAkB,EAAE,oBAAoB;AAC5C,IAAI,sBAAsB,EAAE,wBAAwB;AACpD,IAAI,sBAAsB,EAAE,wBAAwB;AACpD,IAAI,oBAAoB,EAAE,sBAAsB;AAChD,IAAI,eAAe,EAAE,iBAAiB;AACtC,IAAI,gBAAgB,EAAE,kBAAkB;AACxC,IAAI,qBAAqB,EAAE,uBAAuB;AAClD,IAAI,cAAc,EAAE,gBAAgB;AACpC,IAAI,2BAA2B,EAAE,6BAA6B;AAC9D,IAAI,oBAAoB,EAAE,sBAAsB;AAChD,IAAI,mBAAmB,EAAE,qBAAqB;AAC9C,IAAI,8BAA8B,EAAE,gCAAgC;AACpE,IAAI,0BAA0B,EAAE,4BAA4B;AAC5D,IAAI,0BAA0B,EAAE,4BAA4B;AAC5D,IAAI,sBAAsB,EAAE,wBAAwB;AACpD,IAAI,gCAAgC,EAAE,kCAAkC;AACxE,IAAI,gCAAgC,EAAE,kCAAkC;AACxE,IAAI,gCAAgC,EAAE,kCAAkC;AACxE,IAAI,8BAA8B,EAAE,gCAAgC;AACpE,IAAI,mBAAmB,EAAE,qBAAqB;AAC9C,IAAI,QAAQ,EAAE,UAAU;AACxB,IAAI,YAAY,EAAE,cAAc;AAChC,IAAI,aAAa,EAAE,eAAe;AAClC,IAAI,yBAAyB,EAAE,2BAA2B;AAC1D,IAAI,UAAU,EAAE,YAAY;AAC5B,IAAI,UAAU,EAAE,YAAY;AAC5B,IAAI,UAAU,EAAE,YAAY;AAC5B,IAAI,mBAAmB,EAAE,qBAAqB;AAC9C,IAAI,qBAAqB,EAAE,uBAAuB;AAClD,IAAI,eAAe,EAAE,iBAAiB;AACtC,IAAI,gBAAgB,EAAE,kBAAkB;AACxC,IAAI,qBAAqB,EAAE,uBAAuB;AAClD,IAAI,oBAAoB,EAAE,sBAAsB;AAChD,IAAI,oBAAoB,EAAE,sBAAsB;AAChD,IAAI,oBAAoB,EAAE,sBAAsB;AAChD,IAAI,UAAU,EAAE,YAAY;AAC5B,CAAC,CAAC;AACF,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;AACxE,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,YAAY,CAAC;AAC7C,SAAS,YAAY,CAAC,KAAK,EAAE;AAC7B,IAAI,OAAO,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC;AACrC;AACA,SAAS,mBAAmB,CAAC,KAAK,EAAE;AACpC,IAAI,QAAQ,CAAC,CAAC,KAAK;AACnB,QAAQ,OAAO,KAAK,KAAK,QAAQ;AACjC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC;AAC5B,QAAQ,OAAO,KAAK,CAAC,gBAAgB,KAAK,UAAU;AACpD;AACA,SAAS,mBAAmB,GAAG;AAC/B,IAAI,OAAO,OAAO,QAAQ,KAAK,WAAW,GAAG,QAAQ,GAAG,IAAI;AAC5D;AACA,SAAS,UAAU,CAAC,OAAO,EAAE,OAAO,EAAE;AACtC,IAAI,OAAO,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,OAAO;AACpD;AACO,SAAS,eAAe,CAAC,OAAO,EAAE;AACzC,IAAI,OAAO,UAAU,CAAC,OAAO,EAAE,QAAQ,CAAC;AACxC;AACO,SAAS,cAAc,CAAC,OAAO,EAAE;AACxC,IAAI,OAAO,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC;AACvC;AACO,SAAS,eAAe,CAAC,OAAO,EAAE;AACzC,IAAI,OAAO,UAAU,CAAC,OAAO,EAAE,QAAQ,CAAC;AACxC;AACO,SAAS,sBAAsB,CAAC,OAAO,EAAE;AAChD,IAAI,OAAO,cAAc,CAAC,OAAO,CAAC,IAAI,eAAe,CAAC,OAAO,CAAC;AAC9D;AACO,SAAS,iBAAiB,CAAC,MAAM,EAAE,aAAa,EAAE,KAAK,EAAE;AAChE,IAAI,IAAI,EAAE;AACV,IAAI,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,SAAS;AAC/C,QAAQ,OAAO,IAAI;AACnB,IAAI,MAAM,OAAO,GAAG,mBAAmB,CAAC,MAAM;AAC9C,UAAU;AACV,UAAU,CAAC,EAAE,IAAI,aAAa,KAAK,IAAI,IAAI,aAAa,KAAK,MAAM,GAAG,aAAa,GAAG,mBAAmB,EAAE,CAAC,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,MAAM,GAAG,EAAE,CAAC,cAAc,CAAC,MAAM,CAAC;AAC5K,IAAI,IAAI,CAAC,OAAO;AAChB,QAAQ,OAAO,IAAI;AACnB,IAAI,IAAI,KAAK,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;AAChC,QAAQ,OAAO,IAAI;AACnB,IAAI,OAAO,OAAO;AAClB;AACO,SAAS,qBAAqB,CAAC,UAAU,GAAG,EAAE,EAAE;AACvD,IAAI,MAAM,QAAQ,GAAG,EAAE,GAAG,uBAAuB,EAAE;AACnD,IAAI,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;AAC3D,QAAQ,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC;AAC9B,YAAY;AACZ,QAAQ,QAAQ,CAAC,GAAG,CAAC,GAAG,KAAK,KAAK,SAAS,GAAG,IAAI,GAAG,KAAK;AAC1D,IAAI;AACJ,IAAI,OAAO,QAAQ;AACnB;;ACzHA,MAAM,kBAAkB,GAAG,MAAM,CAAC,MAAM,CAAC;AACzC,IAAI,IAAI,EAAE,MAAM;AAChB,IAAI,GAAG,EAAE,MAAM;AACf,IAAI,YAAY,EAAE,MAAM;AACxB,IAAI,GAAG,EAAE,KAAK;AACd,IAAI,WAAW,EAAE,KAAK;AACtB,IAAI,IAAI,EAAE,MAAM;AAChB,IAAI,YAAY,EAAE,MAAM;AACxB,CAAC,CAAC;AACF,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC;AACjC,IAAI,IAAI,EAAE,YAAY;AACtB,IAAI,GAAG,EAAE,WAAW;AACpB,IAAI,IAAI,EAAE,YAAY;AACtB,CAAC,CAAC;AACK,SAAS,oBAAoB,CAAC,KAAK,EAAE;AAC5C,IAAI,IAAI,EAAE;AACV,IAAI,OAAO,CAAC,EAAE,GAAG,uBAAuB,CAAC,KAAK,CAAC,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,MAAM;AACxF;AACO,SAAS,uBAAuB,CAAC,KAAK,EAAE;AAC/C,IAAI,IAAI,EAAE;AACV,IAAI,IAAI,CAAC,KAAK;AACd,QAAQ,OAAO,IAAI;AACnB,IAAI,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE;AAC3C,IAAI,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,kBAAkB,EAAE,GAAG,CAAC,EAAE;AACvE,QAAQ,OAAO,CAAC,EAAE,GAAG,kBAAkB,CAAC,GAAG,CAAC,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,IAAI;AACnF,IAAI;AACJ,IAAI,OAAO,IAAI;AACf;AACO,SAAS,WAAW,CAAC,MAAM,EAAE;AACpC,IAAI,OAAO,UAAU,CAAC,MAAM,CAAC;AAC7B;AACO,SAAS,YAAY,CAAC,OAAO,EAAE,QAAQ,EAAE;AAChD,IAAI,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;AACnC,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC;AACjC,QAAQ,OAAO,QAAQ;AACvB,IAAI,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;AAC5C;AACO,SAAS,mBAAmB,CAAC,OAAO,EAAE,iBAAiB,EAAE;AAChE,IAAI,IAAI,EAAE;AACV,IAAI,MAAM,eAAe,GAAG,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,MAAM,GAAG,OAAO,GAAG,EAAE;AACjF,IAAI,MAAM,QAAQ,GAAG,eAAe,CAAC,QAAQ;AAC7C,IAAI,MAAM,WAAW,GAAG,eAAe,CAAC,MAAM;AAC9C,IAAI,MAAM,SAAS,GAAG,QAAQ,IAAI,WAAW;AAC7C,IAAI,MAAM,MAAM,GAAG,oBAAoB,CAAC,SAAS,CAAC;AAClD,IAAI,MAAM,QAAQ,GAAG,WAAW,CAAC,MAAM,CAAC;AACxC,IAAI,IAAI,MAAM,KAAK,KAAK,EAAE;AAC1B,QAAQ,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE;AACvD,IAAI;AACJ,IAAI,MAAM,UAAU,GAAG,CAAC,EAAE,GAAG,eAAe,CAAC,OAAO,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,iBAAiB;AACxG,IAAI,MAAM,OAAO,GAAG,YAAY,CAAC,UAAU,EAAE,iBAAiB,CAAC;AAC/D,IAAI,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE;AACxC;;ACnDA,MAAM,uBAAuB,GAAG,IAAI,GAAG,CAAC,CAAC,WAAW,EAAE,aAAa,EAAE,WAAW,CAAC,CAAC;AAC3E,SAAS,oBAAoB,CAAC,GAAG,EAAE;AAC1C,IAAI,OAAO,CAAC,uBAAuB,CAAC,GAAG,CAAC,GAAG,CAAC;AAC5C;AACO,SAAS,qBAAqB,CAAC,KAAK,EAAE;AAC7C,IAAI,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;AACnE,QAAQ,OAAO,EAAE;AACjB,IAAI,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;AACtC,IAAI,KAAK,MAAM,CAAC,GAAG,EAAE,WAAW,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AAC5D,QAAQ,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC;AACtC,YAAY;AACZ,QAAQ,MAAM,CAAC,GAAG,CAAC,GAAG,WAAW;AACjC,IAAI;AACJ,IAAI,OAAO,MAAM;AACjB;;ACZA,MAAM,yBAAyB,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;AACnD,MAAM,mBAAmB,GAAG,QAAQ;AACpC,MAAM,0BAA0B,GAAG,eAAe;AAC3C,MAAM,eAAe,GAAG;AAC/B,IAAI,WAAW,EAAE,GAAG;AACpB,IAAI,YAAY,EAAE,GAAG;AACrB,IAAI,eAAe,EAAE,aAAa;AAClC,IAAI,iBAAiB,EAAE,GAAG;AAC1B,IAAI,QAAQ,EAAE,GAAG;AACjB,IAAI,QAAQ,EAAE,GAAG;AACjB,IAAI,SAAS,EAAE,IAAI;AACnB,IAAI,YAAY,EAAE,EAAE;AACpB,IAAI,yBAAyB,EAAE,KAAK;AACpC,IAAI,+BAA+B,EAAE,KAAK;AAC1C,IAAI,0BAA0B,EAAE,mBAAmB;AACnD,IAAI,iBAAiB,EAAE,mBAAmB;AAC1C,IAAI,UAAU,EAAE,mBAAmB;AACnC,IAAI,gBAAgB,EAAE,IAAI;AAC1B,IAAI,kBAAkB,EAAE,IAAI;AAC5B,IAAI,mBAAmB,EAAE,IAAI;AAC7B,IAAI,iBAAiB,EAAE,IAAI;AAC3B,IAAI,oBAAoB,EAAE,IAAI;AAC9B,IAAI,kBAAkB,EAAE,IAAI;AAC5B,IAAI,eAAe,EAAE,IAAI;AACzB,IAAI,sBAAsB,EAAE,IAAI;AAChC,IAAI,aAAa,EAAE,QAAQ;AAC3B,IAAI,cAAc,EAAE,QAAQ;AAC5B,IAAI,kBAAkB,EAAE,KAAK;AAC7B,IAAI,cAAc,EAAE,EAAE;AACtB,IAAI,gBAAgB,EAAE,CAAC;AACvB,IAAI,eAAe,EAAE,QAAQ;AAC7B,IAAI,kBAAkB,EAAE,KAAK;AAC7B,IAAI,mBAAmB,EAAE,OAAO;AAChC,IAAI,mBAAmB,EAAE,IAAI;AAC7B,IAAI,yBAAyB,EAAE,IAAI;AACnC,IAAI,gBAAgB,EAAE,EAAE;AACxB,IAAI,iBAAiB,EAAE,EAAE;AACzB,IAAI,iBAAiB,EAAE,yBAAyB;AAChD,IAAI,aAAa,EAAE,KAAK;AACxB,IAAI,iBAAiB,EAAE,IAAI;AAC3B,IAAI,eAAe,EAAE,CAAC;AACtB,IAAI,QAAQ,EAAE,MAAM;AACpB,IAAI,kBAAkB,EAAE,MAAM;AAC9B,IAAI,kBAAkB,EAAE,MAAM;AAC9B,IAAI,mBAAmB,EAAE,OAAO;AAChC,IAAI,aAAa,EAAE,0BAA0B;AAC7C,IAAI,mBAAmB,EAAE,0BAA0B;AACnD,IAAI,cAAc,EAAE,KAAK;AACzB,IAAI,eAAe,EAAE,IAAI;AACzB,IAAI,kBAAkB,EAAE,IAAI;AAC5B,IAAI,uBAAuB,EAAE,cAAc;AAC3C,IAAI,gBAAgB,EAAE,IAAI;AAC1B,IAAI,aAAa,EAAE,IAAI;AACvB,IAAI,cAAc,EAAE,IAAI;AACxB,IAAI,cAAc,EAAE,IAAI;AACxB,IAAI,YAAY,EAAE,IAAI;AACtB,IAAI,gBAAgB,EAAE,IAAI;AAC1B,IAAI,eAAe,EAAE,IAAI;AACzB,IAAI,gBAAgB,EAAE,IAAI;AAC1B,IAAI,cAAc,EAAE,IAAI;AACxB,IAAI,oBAAoB,EAAE,IAAI;AAC9B,IAAI,iBAAiB,EAAE,IAAI;AAC3B,IAAI,OAAO,EAAE,IAAI;AACjB,IAAI,SAAS,EAAE,IAAI;AACnB,CAAC;AACD,MAAM,0BAA0B,GAAG;AACnC,IAAI,QAAQ,EAAE,EAAE;AAChB,IAAI,IAAI,EAAE,MAAM;AAChB,IAAI,eAAe,EAAE,iBAAiB;AACtC,IAAI,OAAO,EAAE,CAAC;AACd,IAAI,UAAU,EAAE,WAAW;AAC3B,IAAI,UAAU,EAAE,MAAM;AACtB,IAAI,UAAU,EAAE,KAAK;AACrB,IAAI,OAAO,EAAE,KAAK;AAClB,IAAI,OAAO,EAAE,MAAM;AACnB,IAAI,OAAO,EAAE,KAAK;AAClB,CAAC;AACM,MAAM,aAAa,GAAG;AAC7B,IAAI,OAAO,EAAE,CAAC,IAAI,KAAK,IAAI,CAAC,QAE5B,CAAC;AACM,MAAM,YAAY,GAAG;AAC5B,IAAI,WAAW,EAAE,MAAM;AACvB,IAAI,QAAQ,EAAE,GAAG;AACjB,IAAI,SAAS,EAAE,GAAG;AAClB,IAAI,OAAO,EAAE,EAAE;AACf,IAAI,mBAAmB,EAAE,IAAI;AAC7B,IAAI,sBAAsB,EAAE,KAAK;AACjC,IAAI,uBAAuB,EAAE,KAAK;AAClC,IAAI,cAAc,EAAE,QAEpB,CAAC;AACM,MAAM,qBAAqB,GAAG,MAAM,CAAC,MAAM,CAAC;AACnD,IAAI,SAAS,EAAE,EAAE;AACjB,IAAI,SAAS,EAAE,CAAC;AAChB,IAAI,aAAa,EAAE,MAAM;AACzB,IAAI,kBAAkB,EAAE,CAAC;AACzB,IAAI,sBAAsB,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACjD,IAAI,WAAW,EAAE,eAAe;AAChC,IAAI,cAAc,EAAE,QAAQ;AAC5B,IAAI,aAAa,EAAE,SAAS;AAC5B,CAAC,CAAC;AACK,MAAM,8BAA8B,GAAG,MAAM,CAAC,MAAM,CAAC;AAC5D,IAAI,IAAI,EAAE,MAAM;AAChB,IAAI,IAAI,EAAE,SAAS;AACnB,IAAI,GAAG,EAAE,SAAS;AAClB,IAAI,KAAK,EAAE,GAAG;AACd,IAAI,QAAQ,EAAE,EAAE;AAChB,IAAI,UAAU,EAAE,YAAY;AAC5B,IAAI,UAAU,EAAE,QAAQ;AACxB,IAAI,IAAI,EAAE,SAAS;AACnB,IAAI,eAAe,EAAE,qBAAqB;AAC1C,IAAI,SAAS,EAAE,MAAM;AACrB,IAAI,KAAK,EAAE,CAAC;AACZ,IAAI,UAAU,EAAE,IAAI;AACpB,IAAI,OAAO,EAAE,IAAI;AACjB,IAAI,QAAQ,EAAE,IAAI;AAClB,IAAI,YAAY,EAAE,IAAI;AACtB,IAAI,gBAAgB,EAAE,KAAK;AAC3B,IAAI,gBAAgB,EAAE,KAAK;AAC3B,IAAI,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;AAC7B,CAAC,CAAC;AACK,MAAM,mBAAmB,GAAG,MAAM,CAAC,MAAM,CAAC;AACjD,IAAI,SAAS,EAAE,CAAC;AAChB,IAAI,KAAK,EAAE,SAAS;AACpB,IAAI,OAAO,EAAE,CAAC;AACd,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,QAAQ,EAAE,OAAO;AACrB,IAAI,UAAU,EAAE,IAAI;AACpB,IAAI,OAAO,EAAE,IAAI;AACjB,IAAI,gBAAgB,EAAE,KAAK;AAC3B,IAAI,gBAAgB,EAAE,KAAK;AAC3B,CAAC,CAAC;AACK,MAAM,qBAAqB,GAAG,MAAM,CAAC,MAAM,CAAC;AACnD,IAAI,SAAS,EAAE,EAAE;AACjB,IAAI,MAAM,EAAE,iBAAiB;AAC7B,IAAI,aAAa,EAAE,MAAM;AACzB,IAAI,kBAAkB,EAAE,CAAC;AACzB,IAAI,WAAW,EAAE,wBAAwB;AACzC,CAAC,CAAC;AACK,MAAM,+BAA+B,GAAG,MAAM,CAAC,MAAM,CAAC;AAC7D,IAAI,KAAK,EAAE,MAAM;AACjB,IAAI,IAAI,EAAE,SAAS;AACnB,IAAI,GAAG,EAAE,SAAS;AAClB,IAAI,KAAK,EAAE,GAAG;AACd,IAAI,MAAM,EAAE,EAAE;AACd,IAAI,EAAE,EAAE,SAAS;AACjB,IAAI,EAAE,EAAE,SAAS;AACjB,IAAI,EAAE,EAAE,SAAS;AACjB,IAAI,EAAE,EAAE,SAAS;AACjB,IAAI,MAAM,EAAE,SAAS;AACrB,IAAI,WAAW,EAAE,CAAC;AAClB,IAAI,IAAI,EAAE,oBAAoB;AAC9B,IAAI,OAAO,EAAE,CAAC;AACd,IAAI,KAAK,EAAE,CAAC;AACZ,IAAI,UAAU,EAAE,IAAI;AACpB,IAAI,OAAO,EAAE,IAAI;AACjB,IAAI,gBAAgB,EAAE,KAAK;AAC3B,IAAI,gBAAgB,EAAE,KAAK;AAC3B,IAAI,eAAe,EAAE,IAAI;AACzB,IAAI,eAAe,EAAE,EAAE;AACvB,IAAI,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;AAC7B,CAAC,CAAC;AACF,MAAM,oBAAoB,GAAG,IAAI,GAAG,CAAC;AACrC,IAAI,aAAa;AACjB,IAAI,cAAc;AAClB,IAAI,iBAAiB;AACrB,IAAI,mBAAmB;AACvB,IAAI,UAAU;AACd,IAAI,UAAU;AACd,IAAI,WAAW;AACf,IAAI,cAAc;AAClB,IAAI,2BAA2B;AAC/B,IAAI,iCAAiC;AACrC,IAAI,4BAA4B;AAChC,IAAI,mBAAmB;AACvB,IAAI,kBAAkB;AACtB,IAAI,oBAAoB;AACxB,IAAI,qBAAqB;AACzB,IAAI,mBAAmB;AACvB,IAAI,sBAAsB;AAC1B,IAAI,oBAAoB;AACxB,IAAI,iBAAiB;AACrB,IAAI,wBAAwB;AAC5B,IAAI,eAAe;AACnB,IAAI,gBAAgB;AACpB,IAAI,oBAAoB;AACxB,IAAI,gBAAgB;AACpB,IAAI,kBAAkB;AACtB,IAAI,iBAAiB;AACrB,IAAI,oBAAoB;AACxB,IAAI,qBAAqB;AACzB,IAAI,qBAAqB;AACzB,IAAI,2BAA2B;AAC/B,IAAI,kBAAkB;AACtB,IAAI,mBAAmB;AACvB,IAAI,mBAAmB;AACvB,IAAI,eAAe;AACnB,IAAI,mBAAmB;AACvB,IAAI,iBAAiB;AACrB,IAAI,UAAU;AACd,IAAI,oBAAoB;AACxB,IAAI,oBAAoB;AACxB,IAAI,qBAAqB;AACzB,IAAI,eAAe;AACnB,IAAI,qBAAqB;AACzB,IAAI,gBAAgB;AACpB,IAAI,iBAAiB;AACrB,IAAI,oBAAoB;AACxB,IAAI,yBAAyB;AAC7B,IAAI,kBAAkB;AACtB,IAAI,eAAe;AACnB,IAAI,gBAAgB;AACpB,IAAI,gBAAgB;AACpB,IAAI,cAAc;AAClB,IAAI,kBAAkB;AACtB,IAAI,iBAAiB;AACrB,IAAI,kBAAkB;AACtB,IAAI,gBAAgB;AACpB,IAAI,sBAAsB;AAC1B,IAAI,mBAAmB;AACvB,IAAI,SAAS;AACb,IAAI,WAAW;AACf,IAAI,OAAO;AACX,IAAI,MAAM;AACV,IAAI,qBAAqB;AACzB,IAAI,mBAAmB;AACvB,IAAI,mBAAmB;AACvB,IAAI,qBAAqB;AACzB,IAAI,oBAAoB;AACxB,CAAC,CAAC;AACF,SAAS,iBAAiB,CAAC,KAAK,EAAE;AAClC,IAAI,OAAO,OAAO,KAAK,KAAK,UAAU,GAAG,KAAK,GAAG,IAAI;AACrD;AACO,SAAS,YAAY,CAAC,KAAK,EAAE;AACpC,IAAI,OAAO,KAAK,KAAK,KAAK,IAAI,KAAK,KAAK,OAAO,IAAI,KAAK,KAAK,QAAQ;AACrE;AACA,SAAS,mBAAmB,CAAC,KAAK,EAAE;AACpC,IAAI,OAAO,YAAY,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,mBAAmB;AAC5D;AACA,SAASA,gBAAc,CAAC,KAAK,EAAE;AAC/B,IAAI,OAAO,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;AAC/E;AACA,SAAS,sBAAsB,CAAC,GAAG,EAAE;AACrC,IAAI,OAAO,oBAAoB,CAAC,GAAG,CAAC;AACpC;AACA,SAAS,0BAA0B,CAAC,KAAK,EAAE;AAC3C,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AAC9B,QAAQ,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,0BAA0B,CAAC,IAAI,CAAC,CAAC,CAAC;AACnF,IAAI;AACJ,IAAI,IAAI,CAACA,gBAAc,CAAC,KAAK,CAAC;AAC9B,QAAQ,OAAO,KAAK;AACpB,IAAI,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;AACpC,IAAI,KAAK,MAAM,CAAC,GAAG,EAAE,WAAW,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AAC5D,QAAQ,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC;AACxC,YAAY;AACZ,QAAQ,IAAI,CAAC,GAAG,CAAC,GAAG,0BAA0B,CAAC,WAAW,CAAC;AAC3D,IAAI;AACJ,IAAI,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;AAC9B;AACA,SAAS,0BAA0B,CAAC,KAAK,EAAE;AAC3C,IAAI,IAAI,CAACA,gBAAc,CAAC,KAAK,CAAC;AAC9B,QAAQ,OAAO,yBAAyB;AACxC,IAAI,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;AAC1C,IAAI,KAAK,MAAM,CAAC,GAAG,EAAE,WAAW,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AAC5D,QAAQ,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC;AACxC,YAAY;AACZ,QAAQ,IAAI,GAAG,KAAK,UAAU,IAAI,GAAG,KAAK,iBAAiB,IAAI,GAAG,KAAK,QAAQ;AAC/E,YAAY;AACZ,QAAQ,UAAU,CAAC,GAAG,CAAC,GAAG,0BAA0B,CAAC,WAAW,CAAC;AACjE,IAAI;AACJ,IAAI,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM;AAC/B,IAAI,IAAIA,gBAAc,CAAC,MAAM,CAAC,EAAE;AAChC,QAAQ,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;AAChD,QAAQ,KAAK,MAAM,CAAC,GAAG,EAAE,UAAU,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;AAChE,YAAY,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC;AAC5C,gBAAgB;AAChB,YAAY,YAAY,CAAC,GAAG,CAAC,GAAG,0BAA0B,CAAC,UAAU,CAAC;AACtE,QAAQ;AACR,QAAQ,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC;AACnC,QAAQ,UAAU,CAAC,MAAM,GAAG,YAAY;AACxC,IAAI;AACJ,IAAI,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC;AAC7B,IAAI,OAAO,UAAU;AACrB;AACA,SAAS,wBAAwB,CAAC,KAAK,EAAE,QAAQ,EAAE;AACnD,IAAI,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC;AACjC,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,OAAO,IAAI,CAAC;AACjD,QAAQ,OAAO,QAAQ;AACvB,IAAI,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AAC3C;AACA,SAAS,6BAA6B,CAAC,KAAK,EAAE,QAAQ,EAAE;AACxD,IAAI,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC;AACjC,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,OAAO,IAAI,CAAC;AACjD,QAAQ,OAAO,QAAQ;AACvB,IAAI,OAAO,OAAO;AAClB;AACA,SAAS,gCAAgC,CAAC,KAAK,EAAE,QAAQ,EAAE;AAC3D,IAAI,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC;AACjC,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,OAAO,GAAG,CAAC;AAChD,QAAQ,OAAO,QAAQ;AACvB,IAAI,OAAO,OAAO;AAClB;AACA,SAAS,qBAAqB,CAAC,KAAK,EAAE,QAAQ,EAAE;AAChD,IAAI,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC;AACjC,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC;AACjC,QAAQ,OAAO,QAAQ;AACvB,IAAI,OAAO,OAAO;AAClB;AACA,SAAS,uBAAuB,CAAC,KAAK,EAAE;AACxC,IAAI,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC;AACjC,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC;AACjC,QAAQ,OAAO,eAAe,CAAC,cAAc;AAC7C,IAAI,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AAC3C;AACA,SAAS,sBAAsB,CAAC,KAAK,EAAE;AACvC,IAAI,IAAI,KAAK,IAAI,IAAI;AACrB,QAAQ,OAAO,eAAe,CAAC,iBAAiB;AAChD,IAAI,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC;AACjC,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC;AACjC,QAAQ,OAAO,eAAe,CAAC,iBAAiB;AAChD,IAAI,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;AAC5C;AACA,SAAS,8BAA8B,CAAC,KAAK,EAAE;AAC/C,IAAI,IAAI,KAAK,IAAI,IAAI;AACrB,QAAQ,OAAO,IAAI;AACnB,IAAI,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC;AACjC,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC;AACjC,QAAQ,OAAO,IAAI;AACnB,IAAI,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;AAC5C;AACA,SAAS,wBAAwB,CAAC,KAAK,EAAE;AACzC,IAAI,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC;AACjC,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,OAAO,IAAI,CAAC;AACjD,QAAQ,OAAO,eAAe,CAAC,eAAe;AAC9C,IAAI,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AAC3C;AACA,SAAS,2BAA2B,CAAC,KAAK,EAAE;AAC5C,IAAI,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC;AACjC,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,OAAO,IAAI,CAAC;AACjD,QAAQ,OAAO,eAAe,CAAC,kBAAkB;AACjD,IAAI,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AAC3C;AACA,SAAS,sBAAsB,CAAC,KAAK,EAAE;AACvC,IAAI,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC;AACjC,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,OAAO,IAAI,CAAC;AACjD,QAAQ,OAAO,eAAe,CAAC,aAAa;AAC5C,IAAI,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AAC3C;AACA,SAAS,uBAAuB,CAAC,KAAK,EAAE;AACxC,IAAI,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC;AACjC,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,OAAO,IAAI,CAAC;AACjD,QAAQ,OAAO,eAAe,CAAC,cAAc;AAC7C,IAAI,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AAC3C;AACA,SAAS,mBAAmB,CAAC,KAAK,EAAE;AACpC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,OAAO,GAAG,KAAK,GAAG,eAAe,CAAC,mBAAmB;AAChG;AACA,SAAS,yBAAyB,CAAC,KAAK,EAAE,QAAQ,EAAE;AACpD,IAAI,OAAO,KAAK,KAAK,eAAe,IAAI,KAAK,KAAK,eAAe,GAAG,KAAK,GAAG,QAAQ;AACpF;AACA,SAAS,eAAe,CAAC,KAAK,EAAE;AAChC,IAAI,OAAO,KAAK,KAAK,YAAY,IAAI,KAAK,KAAK,WAAW,IAAI,KAAK,KAAK,YAAY;AACpF;AACA,SAAS,4BAA4B,CAAC,KAAK,EAAE,QAAQ,EAAE;AACvD,IAAI,IAAI,KAAK,KAAK,IAAI;AACtB,QAAQ,OAAO,IAAI;AACnB,IAAI,OAAO,eAAe,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,QAAQ;AACpD;AACA,SAAS,uBAAuB,CAAC,KAAK,EAAE,QAAQ,EAAE;AAClD,IAAI,IAAI,KAAK,KAAK,IAAI;AACtB,QAAQ,OAAO,IAAI;AACnB,IAAI,OAAO,OAAO,KAAK,KAAK,QAAQ,GAAG,KAAK,GAAG,QAAQ;AACvD;AACA,MAAMC,2BAAyB,GAAG,IAAI,GAAG,CAAC;AAC1C,IAAI,MAAM;AACV,IAAI,KAAK;AACT,IAAI,KAAK;AACT,IAAI,KAAK;AACT,IAAI,KAAK;AACT,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI,MAAM;AACV,CAAC,CAAC;AACF,SAAS,sBAAsB,CAAC,KAAK,EAAE,MAAM,EAAE;AAC/C,IAAI,QAAQ,OAAO,KAAK,KAAK,QAAQ;AACrC,QAAQ,OAAO,MAAM,KAAK,QAAQ;AAClC,QAAQ,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;AAC9B,QAAQ,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;AAC/B,QAAQ,KAAK,GAAG,CAAC;AACjB,QAAQ,MAAM,GAAG,CAAC;AAClB;AACA,SAAS,8BAA8B,CAAC,KAAK,EAAE;AAC/C,IAAI,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI;AAC7C,QAAQ,OAAO,YAAY,CAAC,WAAW;AACvC,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AACnC,QAAQ,OAAO,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,GAAG,KAAK,GAAG,YAAY,CAAC,WAAW;AACrF,IAAI;AACJ,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AACnC,QAAQ,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE;AACpC,QAAQ,IAAIA,2BAAyB,CAAC,GAAG,CAAC,OAAO,CAAC;AAClD,YAAY,OAAO,OAAO;AAC1B,QAAQ,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC;AACxC,QAAQ,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;AAChC,YAAY,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC1C,YAAY,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC3C,YAAY,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,MAAM,GAAG,CAAC,EAAE;AAC9F,gBAAgB,OAAO,OAAO;AAC9B,YAAY;AACZ,QAAQ;AACR,QAAQ,OAAO,YAAY,CAAC,WAAW;AACvC,IAAI;AACJ,IAAI,IAAID,gBAAc,CAAC,KAAK,CAAC,IAAI,sBAAsB,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE;AACpF,QAAQ,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE;AAC3D,IAAI;AACJ,IAAI,OAAO,YAAY,CAAC,WAAW;AACnC;AACA,SAAS,iCAAiC,CAAC,KAAK,EAAE;AAClD,IAAI,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI;AAC7C,QAAQ,OAAO,YAAY,CAAC,cAAc;AAC1C,IAAI,IAAI,KAAK,KAAK,QAAQ;AAC1B,QAAQ,OAAO,QAAQ;AACvB,IAAI,MAAM,UAAU,GAAG,OAAO,KAAK,KAAK,QAAQ,GAAG,uBAAuB,CAAC,KAAK,CAAC,GAAG,IAAI;AACxF,IAAI,OAAO,UAAU,KAAK,IAAI,IAAI,UAAU,KAAK,MAAM,GAAG,UAAU,GAAG,YAAY,CAAC,cAAc;AAClG;AACA,SAAS,wBAAwB,CAAC,KAAK,EAAE;AACzC,IAAI,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI;AAC7C,QAAQ,OAAO,SAAS;AACxB,IAAI,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC;AACjC,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC;AACjC,QAAQ,OAAO,SAAS;AACxB,IAAI,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;AAC5C;AACA,SAASE,QAAM,CAAC,MAAM,EAAE,GAAG,EAAE;AAC7B,IAAI,OAAO,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC;AAC5D;AACA,SAASC,gBAAc,CAAC,KAAK,EAAE;AAC/B,IAAI,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;AAC9D;AACA,SAAS,6BAA6B,CAAC,KAAK,EAAE,QAAQ,EAAE;AACxD,IAAI,OAAOA,gBAAc,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,GAAG,KAAK,GAAG,QAAQ;AAChE;AACA,SAAS,wBAAwB,CAAC,KAAK,EAAE,QAAQ,EAAE;AACnD,IAAI,OAAOA,gBAAc,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,QAAQ;AACzF;AACA,SAAS,gCAAgC,CAAC,KAAK,EAAE,QAAQ,EAAE;AAC3D,IAAI,OAAOA,gBAAc,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,GAAG,KAAK,GAAG,QAAQ;AACjE;AACA,SAAS,wBAAwB,CAAC,KAAK,EAAE,QAAQ,EAAE;AACnD,IAAI,IAAI,KAAK,KAAK,IAAI;AACtB,QAAQ,OAAO,IAAI;AACnB,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;AAC5B,QAAQ,KAAK,CAAC,KAAK,CAAC,CAAC,KAAK,KAAK,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,EAAE;AACnG,QAAQ,OAAO,CAAC,GAAG,KAAK,CAAC;AACzB,IAAI;AACJ,IAAI,OAAO,QAAQ,GAAG,CAAC,GAAG,QAAQ,CAAC,GAAG,IAAI;AAC1C;AACA,SAAS,6BAA6B,CAAC,KAAK,EAAE,QAAQ,EAAE;AACxD,IAAI,IAAI,EAAE;AACV,IAAI,IAAI,KAAK,KAAK,QAAQ;AAC1B,QAAQ,OAAO,QAAQ;AACvB,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ;AACjC,QAAQ,OAAO,QAAQ;AACvB,IAAI,OAAO,CAAC,EAAE,GAAG,uBAAuB,CAAC,KAAK,CAAC,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,QAAQ;AAC1F;AACA,SAAS,4BAA4B,CAAC,KAAK,EAAE,QAAQ,EAAE;AACvD,IAAI,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI;AAC7C,QAAQ,OAAO,SAAS;AACxB,IAAI,IAAI,CAACA,gBAAc,CAAC,KAAK,CAAC;AAC9B,QAAQ,OAAO,QAAQ;AACvB,IAAI,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;AAC1C;AACO,SAAS,yBAAyB,CAAC,MAAM,EAAE;AAClD,IAAI,OAAO;AACX,QAAQ,GAAG,MAAM;AACjB,QAAQ,sBAAsB,EAAE,MAAM,CAAC;AACvC,cAAc,CAAC,GAAG,MAAM,CAAC,sBAAsB;AAC/C,cAAc,IAAI;AAClB,KAAK;AACL;AACO,SAAS,qBAAqB,CAAC,KAAK,EAAE,QAAQ,EAAE;AACvD,IAAI,IAAI,CAACH,gBAAc,CAAC,KAAK,CAAC;AAC9B,QAAQ,OAAO,yBAAyB,CAAC,QAAQ,CAAC;AAClD,IAAI,OAAO,sBAAsB,CAAC,QAAQ,EAAE,KAAK,CAAC;AAClD;AACO,SAAS,sBAAsB,CAAC,OAAO,EAAE,KAAK,EAAE,QAAQ,GAAG,OAAO,EAAE;AAC3E,IAAI,MAAM,GAAG,GAAGA,gBAAc,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,EAAE;AAClD,IAAI,MAAM,IAAI,GAAG,yBAAyB,CAAC,OAAO,CAAC;AACnD,IAAI,IAAIE,QAAM,CAAC,GAAG,EAAE,WAAW,CAAC,EAAE;AAClC,QAAQ,IAAI,CAAC,SAAS,GAAG,6BAA6B,CAAC,GAAG,CAAC,SAAS,EAAE,QAAQ,CAAC,SAAS,CAAC;AACzF,IAAI;AACJ,IAAI,IAAIA,QAAM,CAAC,GAAG,EAAE,WAAW,CAAC,EAAE;AAClC,QAAQ,IAAI,CAAC,SAAS,GAAG,wBAAwB,CAAC,GAAG,CAAC,SAAS,EAAE,QAAQ,CAAC,SAAS,CAAC;AACpF,IAAI;AACJ,IAAI,IAAIA,QAAM,CAAC,GAAG,EAAE,eAAe,CAAC,EAAE;AACtC,QAAQ,IAAI,CAAC,aAAa;AAC1B,YAAY,OAAO,GAAG,CAAC,aAAa,KAAK,QAAQ,GAAG,GAAG,CAAC,aAAa,GAAG,QAAQ,CAAC,aAAa;AAC9F,IAAI;AACJ,IAAI,IAAIA,QAAM,CAAC,GAAG,EAAE,oBAAoB,CAAC,EAAE;AAC3C,QAAQ,IAAI,CAAC,kBAAkB,GAAG,gCAAgC,CAAC,GAAG,CAAC,kBAAkB,EAAE,QAAQ,CAAC,kBAAkB,CAAC;AACvH,IAAI;AACJ,IAAI,IAAIA,QAAM,CAAC,GAAG,EAAE,wBAAwB,CAAC,EAAE;AAC/C,QAAQ,IAAI,CAAC,sBAAsB,GAAG,wBAAwB,CAAC,GAAG,CAAC,sBAAsB,EAAE,QAAQ,CAAC,sBAAsB,CAAC;AAC3H,IAAI;AACJ,IAAI,IAAIA,QAAM,CAAC,GAAG,EAAE,aAAa,CAAC,EAAE;AACpC,QAAQ,IAAI,CAAC,WAAW;AACxB,YAAY,OAAO,GAAG,CAAC,WAAW,KAAK,QAAQ,GAAG,GAAG,CAAC,WAAW,GAAG,QAAQ,CAAC,WAAW;AACxF,IAAI;AACJ,IAAI,IAAIA,QAAM,CAAC,GAAG,EAAE,gBAAgB,CAAC,EAAE;AACvC,QAAQ,IAAI,CAAC,cAAc,GAAG,6BAA6B,CAAC,GAAG,CAAC,cAAc,EAAE,QAAQ,CAAC,cAAc,CAAC;AACxG,IAAI;AACJ,IAAI,IAAIA,QAAM,CAAC,GAAG,EAAE,eAAe,CAAC,EAAE;AACtC,QAAQ,IAAI,CAAC,aAAa,GAAG,4BAA4B,CAAC,GAAG,CAAC,aAAa,EAAE,QAAQ,CAAC,aAAa,CAAC;AACpG,IAAI;AACJ,IAAI,OAAO,IAAI;AACf;AACO,SAAS,4BAA4B,CAAC,KAAK,EAAE;AACpD,IAAI,MAAM,GAAG,GAAGF,gBAAc,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,EAAE;AAClD,IAAI,MAAM,OAAO,GAAG,EAAE;AACtB,IAAI,IAAIE,QAAM,CAAC,GAAG,EAAE,WAAW,CAAC;AAChC,QAAQ,EAAE,OAAO,GAAG,CAAC,SAAS,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,SAAS,GAAG,CAAC,CAAC,EAAE;AACrG,QAAQ,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC;AACjC,IAAI;AACJ,IAAI,IAAIA,QAAM,CAAC,GAAG,EAAE,WAAW,CAAC;AAChC,QAAQ,EAAE,OAAO,GAAG,CAAC,SAAS,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,SAAS,GAAG,CAAC,CAAC,EAAE;AACrG,QAAQ,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC;AACjC,IAAI;AACJ,IAAI,IAAIA,QAAM,CAAC,GAAG,EAAE,eAAe,CAAC,IAAI,OAAO,GAAG,CAAC,aAAa,KAAK,QAAQ,EAAE;AAC/E,QAAQ,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC;AACrC,IAAI;AACJ,IAAI,IAAIA,QAAM,CAAC,GAAG,EAAE,oBAAoB,CAAC;AACzC,QAAQ,EAAE,OAAO,GAAG,CAAC,kBAAkB,KAAK,QAAQ;AACpD,YAAY,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,kBAAkB,CAAC;AACnD,YAAY,GAAG,CAAC,kBAAkB,IAAI,CAAC,CAAC,EAAE;AAC1C,QAAQ,OAAO,CAAC,IAAI,CAAC,oBAAoB,CAAC;AAC1C,IAAI;AACJ,IAAI,IAAIA,QAAM,CAAC,GAAG,EAAE,wBAAwB,CAAC,EAAE;AAC/C,QAAQ,MAAM,KAAK,GAAG,GAAG,CAAC,sBAAsB;AAChD,QAAQ,MAAM,KAAK,GAAG,KAAK,KAAK,IAAI;AACpC,aAAa,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;AACjC,gBAAgB,KAAK,CAAC,KAAK,CAAC,CAAC,KAAK,KAAK,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC;AAC1G,QAAQ,IAAI,CAAC,KAAK;AAClB,YAAY,OAAO,CAAC,IAAI,CAAC,wBAAwB,CAAC;AAClD,IAAI;AACJ,IAAI,IAAIA,QAAM,CAAC,GAAG,EAAE,aAAa,CAAC,IAAI,OAAO,GAAG,CAAC,WAAW,KAAK,QAAQ,EAAE;AAC3E,QAAQ,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC;AACnC,IAAI;AACJ,IAAI,IAAIA,QAAM,CAAC,GAAG,EAAE,gBAAgB,CAAC,EAAE;AACvC,QAAQ,MAAM,KAAK,GAAG,GAAG,CAAC,cAAc;AACxC,QAAQ,MAAM,KAAK,GAAG,KAAK,KAAK,QAAQ,KAAK,OAAO,KAAK,KAAK,QAAQ,IAAI,uBAAuB,CAAC,KAAK,CAAC,CAAC;AACzG,QAAQ,IAAI,CAAC,KAAK;AAClB,YAAY,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC;AAC1C,IAAI;AACJ,IAAI,IAAIA,QAAM,CAAC,GAAG,EAAE,eAAe,CAAC;AACpC,QAAQ,GAAG,CAAC,aAAa,KAAK,SAAS;AACvC,QAAQ,GAAG,CAAC,aAAa,KAAK,IAAI;AAClC,QAAQ,EAAE,OAAO,GAAG,CAAC,aAAa,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,EAAE;AACxF,QAAQ,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC;AACrC,IAAI;AACJ,IAAI,OAAO,OAAO;AAClB;AACO,SAAS,6BAA6B,CAAC,IAAI,EAAE,KAAK,EAAE;AAC3D,IAAI,MAAM,QAAQ,GAAG,IAAI,CAAC,sBAAsB;AAChD,IAAI,MAAM,SAAS,GAAG,KAAK,CAAC,sBAAsB;AAClD,IAAI,MAAM,SAAS,GAAG,QAAQ,KAAK,SAAS;AAC5C,SAAS,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC;AAChC,YAAY,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC;AACpC,YAAY,QAAQ,CAAC,MAAM,KAAK,SAAS,CAAC,MAAM;AAChD,YAAY,QAAQ,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,KAAK,KAAK,KAAK,KAAK,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;AACzE,IAAI,QAAQ,IAAI,CAAC,SAAS,KAAK,KAAK,CAAC,SAAS;AAC9C,QAAQ,IAAI,CAAC,SAAS,KAAK,KAAK,CAAC,SAAS;AAC1C,QAAQ,IAAI,CAAC,aAAa,KAAK,KAAK,CAAC,aAAa;AAClD,QAAQ,IAAI,CAAC,kBAAkB,KAAK,KAAK,CAAC,kBAAkB;AAC5D,QAAQ,SAAS;AACjB,QAAQ,IAAI,CAAC,WAAW,KAAK,KAAK,CAAC,WAAW;AAC9C,QAAQ,IAAI,CAAC,cAAc,KAAK,KAAK,CAAC,cAAc;AACpD,QAAQ,IAAI,CAAC,aAAa,KAAK,KAAK,CAAC,aAAa;AAClD;AACO,SAAS,iCAAiC,CAAC,MAAM,EAAE;AAC1D,IAAI,OAAO;AACX,QAAQ,GAAG,MAAM;AACjB,QAAQ,MAAM,EAAE,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE;AACpC,KAAK;AACL;AACO,SAAS,uBAAuB,CAAC,MAAM,EAAE;AAChD,IAAI,OAAO,EAAE,GAAG,MAAM,EAAE;AACxB;AACO,SAAS,yBAAyB,CAAC,MAAM,EAAE;AAClD,IAAI,OAAO,EAAE,GAAG,MAAM,EAAE;AACxB;AACO,SAAS,kCAAkC,CAAC,MAAM,EAAE;AAC3D,IAAI,OAAO;AACX,QAAQ,GAAG,MAAM;AACjB,QAAQ,eAAe,EAAE,MAAM,CAAC,eAAe,GAAG,CAAC,GAAG,MAAM,CAAC,eAAe,CAAC,GAAG,IAAI;AACpF,QAAQ,MAAM,EAAE,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE;AACpC,KAAK;AACL;AACA,SAAS,kBAAkB,CAAC,KAAK,EAAE,QAAQ,EAAE;AAC7C,IAAI,OAAO,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,OAAO,IAAI,KAAK,KAAK;AACpF,UAAU;AACV,UAAU,QAAQ;AAClB;AACA,SAAS,uBAAuB,CAAC,KAAK,EAAE,QAAQ,EAAE;AAClD,IAAI,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,GAAG,KAAK,GAAG,QAAQ;AAC9F;AACA,SAAS,gBAAgB,CAAC,KAAK,EAAE,QAAQ,EAAE;AAC3C,IAAI,OAAO,OAAO,KAAK,KAAK,SAAS,GAAG,KAAK,GAAG,QAAQ;AACxD;AACA,SAAS,eAAe,CAAC,KAAK,EAAE,QAAQ,EAAE;AAC1C,IAAI,OAAO,OAAO,KAAK,KAAK,QAAQ,GAAG,KAAK,GAAG,QAAQ;AACvD;AACA,SAAS,oBAAoB,CAAC,KAAK,EAAE;AACrC,IAAI,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,SAAS;AAClF;AACA,SAAS,sBAAsB,CAAC,KAAK,EAAE;AACvC,IAAI,OAAO,qBAAqB,CAAC,KAAK,CAAC;AACvC;AACA,SAAS,2BAA2B,CAAC,KAAK,EAAE;AAC5C,IAAI,OAAO,qBAAqB,CAAC,KAAK,CAAC;AACvC;AACO,SAAS,8BAA8B,CAAC,OAAO,EAAE,KAAK,EAAE,QAAQ,GAAG,OAAO,EAAE;AACnF,IAAI,MAAM,GAAG,GAAGF,gBAAc,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,EAAE;AAClD,IAAI,MAAM,IAAI,GAAG,iCAAiC,CAAC,OAAO,CAAC;AAC3D,IAAI,IAAIE,QAAM,CAAC,GAAG,EAAE,MAAM,CAAC;AAC3B,QAAQ,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC;AAC5D,IAAI,IAAIA,QAAM,CAAC,GAAG,EAAE,MAAM,CAAC;AAC3B,QAAQ,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC,GAAG,CAAC,IAAI,CAAC;AAClD,IAAI,IAAIA,QAAM,CAAC,GAAG,EAAE,KAAK,CAAC;AAC1B,QAAQ,IAAI,CAAC,GAAG,GAAG,oBAAoB,CAAC,GAAG,CAAC,GAAG,CAAC;AAChD,IAAI,IAAIA,QAAM,CAAC,GAAG,EAAE,OAAO,CAAC;AAC5B,QAAQ,IAAI,CAAC,KAAK,GAAG,uBAAuB,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC;AACvE,IAAI,IAAIA,QAAM,CAAC,GAAG,EAAE,UAAU,CAAC,EAAE;AACjC,QAAQ,IAAI,CAAC,QAAQ,GAAG,uBAAuB,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC;AAChF,IAAI;AACJ,IAAI,IAAIA,QAAM,CAAC,GAAG,EAAE,YAAY,CAAC,EAAE;AACnC,QAAQ,IAAI,CAAC,UAAU,GAAG,eAAe,CAAC,GAAG,CAAC,UAAU,EAAE,QAAQ,CAAC,UAAU,CAAC;AAC9E,IAAI;AACJ,IAAI,IAAIA,QAAM,CAAC,GAAG,EAAE,YAAY,CAAC,EAAE;AACnC,QAAQ,IAAI,CAAC,UAAU;AACvB,YAAY,OAAO,GAAG,CAAC,UAAU,KAAK,QAAQ,IAAI,OAAO,GAAG,CAAC,UAAU,KAAK;AAC5E,kBAAkB,GAAG,CAAC;AACtB,kBAAkB,QAAQ,CAAC,UAAU;AACrC,IAAI;AACJ,IAAI,IAAIA,QAAM,CAAC,GAAG,EAAE,MAAM,CAAC;AAC3B,QAAQ,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC;AAC5D,IAAI,IAAIA,QAAM,CAAC,GAAG,EAAE,iBAAiB,CAAC,EAAE;AACxC,QAAQ,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC,GAAG,CAAC,eAAe,EAAE,QAAQ,CAAC,eAAe,CAAC;AAC7F,IAAI;AACJ,IAAI,IAAIA,QAAM,CAAC,GAAG,EAAE,WAAW,CAAC;AAChC,QAAQ,IAAI,CAAC,SAAS,GAAG,kBAAkB,CAAC,GAAG,CAAC,SAAS,EAAE,QAAQ,CAAC,SAAS,CAAC;AAC9E,IAAI,IAAIA,QAAM,CAAC,GAAG,EAAE,OAAO,CAAC;AAC5B,QAAQ,IAAI,CAAC,KAAK,GAAG,qBAAqB,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC;AACrE,IAAI,IAAIA,QAAM,CAAC,GAAG,EAAE,YAAY,CAAC;AACjC,QAAQ,IAAI,CAAC,UAAU,GAAG,gBAAgB,CAAC,GAAG,CAAC,UAAU,EAAE,QAAQ,CAAC,UAAU,CAAC;AAC/E,IAAI,IAAIA,QAAM,CAAC,GAAG,EAAE,SAAS,CAAC;AAC9B,QAAQ,IAAI,CAAC,OAAO,GAAG,gBAAgB,CAAC,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC;AACtE,IAAI,IAAIA,QAAM,CAAC,GAAG,EAAE,UAAU,CAAC;AAC/B,QAAQ,IAAI,CAAC,QAAQ,GAAG,gBAAgB,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC;AACzE,IAAI,IAAIA,QAAM,CAAC,GAAG,EAAE,cAAc,CAAC,EAAE;AACrC,QAAQ,IAAI,CAAC,YAAY,GAAG,gBAAgB,CAAC,GAAG,CAAC,YAAY,EAAE,QAAQ,CAAC,YAAY,CAAC;AACrF,IAAI;AACJ,IAAI,IAAIA,QAAM,CAAC,GAAG,EAAE,kBAAkB,CAAC,EAAE;AACzC,QAAQ,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC,GAAG,CAAC,gBAAgB,EAAE,QAAQ,CAAC,gBAAgB,CAAC;AACjG,IAAI;AACJ,IAAI,IAAIA,QAAM,CAAC,GAAG,EAAE,kBAAkB,CAAC,EAAE;AACzC,QAAQ,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC,GAAG,CAAC,gBAAgB,EAAE,QAAQ,CAAC,gBAAgB,CAAC;AACjG,IAAI;AACJ,IAAI,IAAIA,QAAM,CAAC,GAAG,EAAE,QAAQ,CAAC,EAAE;AAC/B,QAAQ,IAAI,CAAC,MAAM,GAAG;AACtB,YAAY,GAAG,IAAI,CAAC,MAAM;AAC1B,YAAY,GAAG,sBAAsB,CAAC,GAAG,CAAC,MAAM,CAAC;AACjD,SAAS;AACT,IAAI;AACJ,IAAI,OAAO,IAAI;AACf;AACO,SAAS,6BAA6B,CAAC,KAAK,EAAE,QAAQ,EAAE;AAC/D,IAAI,IAAI,CAACF,gBAAc,CAAC,KAAK,CAAC;AAC9B,QAAQ,OAAO,iCAAiC,CAAC,QAAQ,CAAC;AAC1D,IAAI,OAAO,8BAA8B,CAAC,QAAQ,EAAE,KAAK,CAAC;AAC1D;AACA,SAAS,gBAAgB,CAAC,KAAK,EAAE,QAAQ,EAAE;AAC3C,IAAI,OAAO,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,OAAO,IAAI,KAAK,KAAK,QAAQ,GAAG,KAAK,GAAG,QAAQ;AACzF;AACA,SAAS,iBAAiB,CAAC,KAAK,EAAE,QAAQ,EAAE;AAC5C,IAAI,OAAO,KAAK,KAAK,OAAO,IAAI,KAAK,KAAK,OAAO,IAAI,KAAK,KAAK,OAAO,GAAG,KAAK,GAAG,QAAQ;AACzF;AACA,SAAS,gBAAgB,CAAC,KAAK,EAAE,QAAQ,EAAE;AAC3C,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;AAC5D,QAAQ,OAAO,QAAQ;AACvB,IAAI,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;AAC1C;AACO,SAAS,oBAAoB,CAAC,OAAO,EAAE,KAAK,EAAE,QAAQ,GAAG,OAAO,EAAE;AACzE,IAAI,MAAM,GAAG,GAAGA,gBAAc,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,EAAE;AAClD,IAAI,MAAM,IAAI,GAAG,uBAAuB,CAAC,OAAO,CAAC;AACjD,IAAI,IAAIE,QAAM,CAAC,GAAG,EAAE,WAAW,CAAC,EAAE;AAClC,QAAQ,IAAI,CAAC,SAAS,GAAG,uBAAuB,CAAC,GAAG,CAAC,SAAS,EAAE,QAAQ,CAAC,SAAS,CAAC;AACnF,IAAI;AACJ,IAAI,IAAIA,QAAM,CAAC,GAAG,EAAE,OAAO,CAAC;AAC5B,QAAQ,IAAI,CAAC,KAAK,GAAG,eAAe,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC;AAC/D,IAAI,IAAIA,QAAM,CAAC,GAAG,EAAE,SAAS,CAAC;AAC9B,QAAQ,IAAI,CAAC,OAAO,GAAG,gBAAgB,CAAC,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC;AACtE,IAAI,IAAIA,QAAM,CAAC,GAAG,EAAE,SAAS,CAAC;AAC9B,QAAQ,IAAI,CAAC,OAAO,GAAG,gBAAgB,CAAC,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC;AACtE,IAAI,IAAIA,QAAM,CAAC,GAAG,EAAE,UAAU,CAAC;AAC/B,QAAQ,IAAI,CAAC,QAAQ,GAAG,iBAAiB,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC;AAC1E,IAAI,IAAIA,QAAM,CAAC,GAAG,EAAE,YAAY,CAAC;AACjC,QAAQ,IAAI,CAAC,UAAU,GAAG,gBAAgB,CAAC,GAAG,CAAC,UAAU,EAAE,QAAQ,CAAC,UAAU,CAAC;AAC/E,IAAI,IAAIA,QAAM,CAAC,GAAG,EAAE,SAAS,CAAC;AAC9B,QAAQ,IAAI,CAAC,OAAO,GAAG,gBAAgB,CAAC,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC;AACtE,IAAI,IAAIA,QAAM,CAAC,GAAG,EAAE,kBAAkB,CAAC,EAAE;AACzC,QAAQ,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC,GAAG,CAAC,gBAAgB,EAAE,QAAQ,CAAC,gBAAgB,CAAC;AACjG,IAAI;AACJ,IAAI,IAAIA,QAAM,CAAC,GAAG,EAAE,kBAAkB,CAAC,EAAE;AACzC,QAAQ,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC,GAAG,CAAC,gBAAgB,EAAE,QAAQ,CAAC,gBAAgB,CAAC;AACjG,IAAI;AACJ,IAAI,OAAO,IAAI;AACf;AACO,SAAS,mBAAmB,CAAC,KAAK,EAAE,QAAQ,EAAE;AACrD,IAAI,IAAI,CAACF,gBAAc,CAAC,KAAK,CAAC;AAC9B,QAAQ,OAAO,uBAAuB,CAAC,QAAQ,CAAC;AAChD,IAAI,OAAO,oBAAoB,CAAC,QAAQ,EAAE,KAAK,CAAC;AAChD;AACO,SAAS,sBAAsB,CAAC,OAAO,EAAE,KAAK,EAAE,QAAQ,GAAG,OAAO,EAAE;AAC3E,IAAI,MAAM,GAAG,GAAGA,gBAAc,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,EAAE;AAClD,IAAI,MAAM,IAAI,GAAG,yBAAyB,CAAC,OAAO,CAAC;AACnD,IAAI,IAAIE,QAAM,CAAC,GAAG,EAAE,WAAW,CAAC,EAAE;AAClC,QAAQ,IAAI,CAAC,SAAS,GAAG,uBAAuB,CAAC,GAAG,CAAC,SAAS,EAAE,QAAQ,CAAC,SAAS,CAAC;AACnF,IAAI;AACJ,IAAI,IAAIA,QAAM,CAAC,GAAG,EAAE,QAAQ,CAAC,EAAE;AAC/B,QAAQ,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,KAAK,iBAAiB,GAAG,iBAAiB,GAAG,QAAQ,CAAC,MAAM;AAC5F,IAAI;AACJ,IAAI,IAAIA,QAAM,CAAC,GAAG,EAAE,eAAe,CAAC,EAAE;AACtC,QAAQ,IAAI,CAAC,aAAa,GAAG,eAAe,CAAC,GAAG,CAAC,aAAa,EAAE,QAAQ,CAAC,aAAa,CAAC;AACvF,IAAI;AACJ,IAAI,IAAIA,QAAM,CAAC,GAAG,EAAE,oBAAoB,CAAC,EAAE;AAC3C,QAAQ,IAAI,CAAC,kBAAkB,GAAG,gCAAgC,CAAC,GAAG,CAAC,kBAAkB,EAAE,QAAQ,CAAC,kBAAkB,CAAC;AACvH,IAAI;AACJ,IAAI,IAAIA,QAAM,CAAC,GAAG,EAAE,aAAa,CAAC,EAAE;AACpC,QAAQ,IAAI,CAAC,WAAW,GAAG,eAAe,CAAC,GAAG,CAAC,WAAW,EAAE,QAAQ,CAAC,WAAW,CAAC;AACjF,IAAI;AACJ,IAAI,OAAO,IAAI;AACf;AACO,SAAS,qBAAqB,CAAC,KAAK,EAAE,QAAQ,EAAE;AACvD,IAAI,IAAI,CAACF,gBAAc,CAAC,KAAK,CAAC;AAC9B,QAAQ,OAAO,yBAAyB,CAAC,QAAQ,CAAC;AAClD,IAAI,OAAO,sBAAsB,CAAC,QAAQ,EAAE,KAAK,CAAC;AAClD;AACA,SAAS,kBAAkB,CAAC,KAAK,EAAE,QAAQ,EAAE;AAC7C,IAAI,OAAO,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,OAAO,GAAG,KAAK,GAAG,QAAQ;AACvF;AACA,SAAS,0BAA0B,CAAC,KAAK,EAAE,QAAQ,EAAE;AACrD,IAAI,IAAI,KAAK,KAAK,IAAI;AACtB,QAAQ,OAAO,IAAI;AACnB,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;AAC5B,QAAQ,KAAK,CAAC,KAAK,CAAC,CAAC,KAAK,KAAK,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,EAAE;AACnG,QAAQ,OAAO,CAAC,GAAG,KAAK,CAAC;AACzB,IAAI;AACJ,IAAI,OAAO,QAAQ,GAAG,CAAC,GAAG,QAAQ,CAAC,GAAG,IAAI;AAC1C;AACO,SAAS,+BAA+B,CAAC,OAAO,EAAE,KAAK,EAAE,QAAQ,GAAG,OAAO,EAAE;AACpF,IAAI,MAAM,GAAG,GAAGA,gBAAc,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,EAAE;AAClD,IAAI,MAAM,IAAI,GAAG,kCAAkC,CAAC,OAAO,CAAC;AAC5D,IAAI,IAAIE,QAAM,CAAC,GAAG,EAAE,OAAO,CAAC;AAC5B,QAAQ,IAAI,CAAC,KAAK,GAAG,kBAAkB,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC;AAClE,IAAI,IAAIA,QAAM,CAAC,GAAG,EAAE,MAAM,CAAC;AAC3B,QAAQ,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC,GAAG,CAAC,IAAI,CAAC;AAClD,IAAI,IAAIA,QAAM,CAAC,GAAG,EAAE,KAAK,CAAC;AAC1B,QAAQ,IAAI,CAAC,GAAG,GAAG,oBAAoB,CAAC,GAAG,CAAC,GAAG,CAAC;AAChD,IAAI,IAAIA,QAAM,CAAC,GAAG,EAAE,OAAO,CAAC;AAC5B,QAAQ,IAAI,CAAC,KAAK,GAAG,uBAAuB,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC;AACvE,IAAI,IAAIA,QAAM,CAAC,GAAG,EAAE,QAAQ,CAAC;AAC7B,QAAQ,IAAI,CAAC,MAAM,GAAG,uBAAuB,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC;AAC1E,IAAI,IAAIA,QAAM,CAAC,GAAG,EAAE,IAAI,CAAC;AACzB,QAAQ,IAAI,CAAC,EAAE,GAAG,oBAAoB,CAAC,GAAG,CAAC,EAAE,CAAC;AAC9C,IAAI,IAAIA,QAAM,CAAC,GAAG,EAAE,IAAI,CAAC;AACzB,QAAQ,IAAI,CAAC,EAAE,GAAG,oBAAoB,CAAC,GAAG,CAAC,EAAE,CAAC;AAC9C,IAAI,IAAIA,QAAM,CAAC,GAAG,EAAE,IAAI,CAAC;AACzB,QAAQ,IAAI,CAAC,EAAE,GAAG,oBAAoB,CAAC,GAAG,CAAC,EAAE,CAAC;AAC9C,IAAI,IAAIA,QAAM,CAAC,GAAG,EAAE,IAAI,CAAC;AACzB,QAAQ,IAAI,CAAC,EAAE,GAAG,oBAAoB,CAAC,GAAG,CAAC,EAAE,CAAC;AAC9C,IAAI,IAAIA,QAAM,CAAC,GAAG,EAAE,QAAQ,CAAC;AAC7B,QAAQ,IAAI,CAAC,MAAM,GAAG,eAAe,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC;AAClE,IAAI,IAAIA,QAAM,CAAC,GAAG,EAAE,aAAa,CAAC,EAAE;AACpC,QAAQ,IAAI,CAAC,WAAW,GAAG,uBAAuB,CAAC,GAAG,CAAC,WAAW,EAAE,QAAQ,CAAC,WAAW,CAAC;AACzF,IAAI;AACJ,IAAI,IAAIA,QAAM,CAAC,GAAG,EAAE,MAAM,CAAC;AAC3B,QAAQ,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC;AAC5D,IAAI,IAAIA,QAAM,CAAC,GAAG,EAAE,SAAS,CAAC;AAC9B,QAAQ,IAAI,CAAC,OAAO,GAAG,gBAAgB,CAAC,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC;AACtE,IAAI,IAAIA,QAAM,CAAC,GAAG,EAAE,OAAO,CAAC;AAC5B,QAAQ,IAAI,CAAC,KAAK,GAAG,qBAAqB,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC;AACrE,IAAI,IAAIA,QAAM,CAAC,GAAG,EAAE,YAAY,CAAC,EAAE;AACnC,QAAQ,IAAI,CAAC,UAAU,GAAG,gBAAgB,CAAC,GAAG,CAAC,UAAU,EAAE,QAAQ,CAAC,UAAU,CAAC;AAC/E,IAAI;AACJ,IAAI,IAAIA,QAAM,CAAC,GAAG,EAAE,SAAS,CAAC;AAC9B,QAAQ,IAAI,CAAC,OAAO,GAAG,gBAAgB,CAAC,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC;AACtE,IAAI,IAAIA,QAAM,CAAC,GAAG,EAAE,kBAAkB,CAAC,EAAE;AACzC,QAAQ,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC,GAAG,CAAC,gBAAgB,EAAE,QAAQ,CAAC,gBAAgB,CAAC;AACjG,IAAI;AACJ,IAAI,IAAIA,QAAM,CAAC,GAAG,EAAE,kBAAkB,CAAC,EAAE;AACzC,QAAQ,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC,GAAG,CAAC,gBAAgB,EAAE,QAAQ,CAAC,gBAAgB,CAAC;AACjG,IAAI;AACJ,IAAI,IAAIA,QAAM,CAAC,GAAG,EAAE,iBAAiB,CAAC,EAAE;AACxC,QAAQ,IAAI,CAAC,eAAe,GAAG,0BAA0B,CAAC,GAAG,CAAC,eAAe,EAAE,QAAQ,CAAC,eAAe,CAAC;AACxG,IAAI;AACJ,IAAI,IAAIA,QAAM,CAAC,GAAG,EAAE,iBAAiB,CAAC,EAAE;AACxC,QAAQ,IAAI,CAAC,eAAe,GAAG,uBAAuB,CAAC,GAAG,CAAC,eAAe,EAAE,QAAQ,CAAC,eAAe,CAAC;AACrG,IAAI;AACJ,IAAI,IAAIA,QAAM,CAAC,GAAG,EAAE,QAAQ,CAAC,EAAE;AAC/B,QAAQ,IAAI,CAAC,MAAM,GAAG;AACtB,YAAY,GAAG,IAAI,CAAC,MAAM;AAC1B,YAAY,GAAG,2BAA2B,CAAC,GAAG,CAAC,MAAM,CAAC;AACtD,SAAS;AACT,IAAI;AACJ,IAAI,OAAO,IAAI;AACf;AACO,SAAS,8BAA8B,CAAC,KAAK,EAAE,QAAQ,EAAE;AAChE,IAAI,IAAI,CAACF,gBAAc,CAAC,KAAK,CAAC;AAC9B,QAAQ,OAAO,kCAAkC,CAAC,QAAQ,CAAC;AAC3D,IAAI,OAAO,+BAA+B,CAAC,QAAQ,EAAE,KAAK,CAAC;AAC3D;AACO,SAAS,qCAAqC,CAAC,IAAI,EAAE,KAAK,EAAE;AACnE,IAAI,QAAQ,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI;AACpC,QAAQ,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI;AAChC,QAAQ,IAAI,CAAC,GAAG,KAAK,KAAK,CAAC,GAAG;AAC9B,QAAQ,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK;AAClC,QAAQ,IAAI,CAAC,QAAQ,KAAK,KAAK,CAAC,QAAQ;AACxC,QAAQ,IAAI,CAAC,UAAU,KAAK,KAAK,CAAC,UAAU;AAC5C,QAAQ,IAAI,CAAC,UAAU,KAAK,KAAK,CAAC,UAAU;AAC5C,QAAQ,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI;AAChC,QAAQ,IAAI,CAAC,eAAe,KAAK,KAAK,CAAC,eAAe;AACtD,QAAQ,IAAI,CAAC,SAAS,KAAK,KAAK,CAAC,SAAS;AAC1C,QAAQ,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK;AAClC,QAAQ,IAAI,CAAC,UAAU,KAAK,KAAK,CAAC,UAAU;AAC5C,QAAQ,IAAI,CAAC,OAAO,KAAK,KAAK,CAAC,OAAO;AACtC,QAAQ,IAAI,CAAC,QAAQ,KAAK,KAAK,CAAC,QAAQ;AACxC,QAAQ,IAAI,CAAC,YAAY,KAAK,KAAK,CAAC,YAAY;AAChD,QAAQ,IAAI,CAAC,gBAAgB,KAAK,KAAK,CAAC,gBAAgB;AACxD,QAAQ,IAAI,CAAC,gBAAgB,KAAK,KAAK,CAAC,gBAAgB;AACxD,QAAQ,oBAAoB,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC;AACvD;AACA,SAAS,oBAAoB,CAAC,IAAI,EAAE,KAAK,EAAE;AAC3C,IAAI,OAAO,mBAAmB,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,OAAO,EAAE,CAAC;AAC1D;AACA,SAAS,mBAAmB,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE;AAChD,IAAI,IAAI,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC;AAC9B,QAAQ,OAAO,IAAI;AACnB,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ;AAChF,QAAQ,OAAO,KAAK;AACpB,IAAI,IAAI,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;AACnC,IAAI,IAAI,UAAU,KAAK,IAAI,IAAI,UAAU,KAAK,MAAM,GAAG,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC;AACrF,QAAQ,OAAO,IAAI;AACnB,IAAI,IAAI,CAAC,UAAU,EAAE;AACrB,QAAQ,UAAU,GAAG,IAAI,OAAO,EAAE;AAClC,QAAQ,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,UAAU,CAAC;AAClC,IAAI;AACJ,IAAI,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC;AACzB,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AACrD,QAAQ,QAAQ,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;AACnC,YAAY,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;AAChC,YAAY,IAAI,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM;AACxC,YAAY,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,KAAK,KAAK,mBAAmB,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,CAAC;AACxF,IAAI;AACJ,IAAI,MAAM,UAAU,GAAG,IAAI;AAC3B,IAAI,MAAM,WAAW,GAAG,KAAK;AAC7B,IAAI,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC;AAC5C,IAAI,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC;AAC9C,IAAI,IAAI,QAAQ,CAAC,MAAM,KAAK,SAAS,CAAC,MAAM;AAC5C,QAAQ,OAAO,KAAK;AACpB,IAAI,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK;AACnC,QAAQ,IAAI,CAACE,QAAM,CAAC,WAAW,EAAE,GAAG,CAAC;AACrC,YAAY,OAAO,KAAK;AACxB,QAAQ,OAAO,mBAAmB,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,WAAW,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC;AAC3E,IAAI,CAAC,CAAC;AACN;AACO,SAAS,2BAA2B,CAAC,IAAI,EAAE,KAAK,EAAE;AACzD,IAAI,QAAQ,IAAI,CAAC,SAAS,KAAK,KAAK,CAAC,SAAS;AAC9C,QAAQ,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK;AAClC,QAAQ,IAAI,CAAC,OAAO,KAAK,KAAK,CAAC,OAAO;AACtC,QAAQ,IAAI,CAAC,OAAO,KAAK,KAAK,CAAC,OAAO;AACtC,QAAQ,IAAI,CAAC,QAAQ,KAAK,KAAK,CAAC,QAAQ;AACxC,QAAQ,IAAI,CAAC,UAAU,KAAK,KAAK,CAAC,UAAU;AAC5C,QAAQ,IAAI,CAAC,OAAO,KAAK,KAAK,CAAC,OAAO;AACtC,QAAQ,IAAI,CAAC,gBAAgB,KAAK,KAAK,CAAC,gBAAgB;AACxD,QAAQ,IAAI,CAAC,gBAAgB,KAAK,KAAK,CAAC,gBAAgB;AACxD;AACO,SAAS,6BAA6B,CAAC,IAAI,EAAE,KAAK,EAAE;AAC3D,IAAI,QAAQ,IAAI,CAAC,SAAS,KAAK,KAAK,CAAC,SAAS;AAC9C,QAAQ,IAAI,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM;AACpC,QAAQ,IAAI,CAAC,aAAa,KAAK,KAAK,CAAC,aAAa;AAClD,QAAQ,IAAI,CAAC,kBAAkB,KAAK,KAAK,CAAC,kBAAkB;AAC5D,QAAQ,IAAI,CAAC,WAAW,KAAK,KAAK,CAAC,WAAW;AAC9C;AACO,SAAS,sCAAsC,CAAC,IAAI,EAAE,KAAK,EAAE;AACpE,IAAI,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe;AACzC,IAAI,MAAM,SAAS,GAAG,KAAK,CAAC,eAAe;AAC3C,IAAI,MAAM,SAAS,GAAG,QAAQ,KAAK,SAAS;AAC5C,SAAS,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC;AAChC,YAAY,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC;AACpC,YAAY,QAAQ,CAAC,MAAM,KAAK,SAAS,CAAC,MAAM;AAChD,YAAY,QAAQ,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,KAAK,KAAK,KAAK,KAAK,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;AACzE,IAAI,QAAQ,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK;AACtC,QAAQ,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI;AAChC,QAAQ,IAAI,CAAC,GAAG,KAAK,KAAK,CAAC,GAAG;AAC9B,QAAQ,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK;AAClC,QAAQ,IAAI,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM;AACpC,QAAQ,IAAI,CAAC,EAAE,KAAK,KAAK,CAAC,EAAE;AAC5B,QAAQ,IAAI,CAAC,EAAE,KAAK,KAAK,CAAC,EAAE;AAC5B,QAAQ,IAAI,CAAC,EAAE,KAAK,KAAK,CAAC,EAAE;AAC5B,QAAQ,IAAI,CAAC,EAAE,KAAK,KAAK,CAAC,EAAE;AAC5B,QAAQ,IAAI,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM;AACpC,QAAQ,IAAI,CAAC,WAAW,KAAK,KAAK,CAAC,WAAW;AAC9C,QAAQ,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI;AAChC,QAAQ,IAAI,CAAC,OAAO,KAAK,KAAK,CAAC,OAAO;AACtC,QAAQ,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK;AAClC,QAAQ,IAAI,CAAC,UAAU,KAAK,KAAK,CAAC,UAAU;AAC5C,QAAQ,IAAI,CAAC,OAAO,KAAK,KAAK,CAAC,OAAO;AACtC,QAAQ,IAAI,CAAC,gBAAgB,KAAK,KAAK,CAAC,gBAAgB;AACxD,QAAQ,IAAI,CAAC,gBAAgB,KAAK,KAAK,CAAC,gBAAgB;AACxD,QAAQ,SAAS;AACjB,QAAQ,IAAI,CAAC,eAAe,KAAK,KAAK,CAAC,eAAe;AACtD,QAAQ,oBAAoB,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC;AACvD;AACO,SAAS,oCAAoC,CAAC,KAAK,EAAE;AAC5D,IAAI,MAAM,GAAG,GAAGF,gBAAc,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,EAAE;AAClD,IAAI,MAAM,OAAO,GAAG,EAAE;AACtB,IAAI,IAAIE,QAAM,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ;AAC3D,QAAQ,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC;AAC5B,IAAI,IAAIA,QAAM,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,CAACC,gBAAc,CAAC,GAAG,CAAC,KAAK,CAAC;AAC1D,QAAQ,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC;AAC7B,IAAI,IAAID,QAAM,CAAC,GAAG,EAAE,UAAU,CAAC,IAAI,CAACC,gBAAc,CAAC,GAAG,CAAC,QAAQ,CAAC;AAChE,QAAQ,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC;AAChC,IAAI,IAAID,QAAM,CAAC,GAAG,EAAE,YAAY,CAAC,IAAI,OAAO,GAAG,CAAC,UAAU,KAAK,QAAQ;AACvE,QAAQ,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC;AAClC,IAAI,IAAIA,QAAM,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ,EAAE;AAC7D,QAAQ,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC;AAC5B,IAAI;AACJ,IAAI,OAAO,OAAO;AAClB;AACO,SAAS,0BAA0B,CAAC,KAAK,EAAE;AAClD,IAAI,MAAM,GAAG,GAAGF,gBAAc,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,EAAE;AAClD,IAAI,MAAM,OAAO,GAAG,EAAE;AACtB,IAAI,IAAIE,QAAM,CAAC,GAAG,EAAE,WAAW,CAAC,IAAI,CAACC,gBAAc,CAAC,GAAG,CAAC,SAAS,CAAC;AAClE,QAAQ,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC;AACjC,IAAI,IAAID,QAAM,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,OAAO,GAAG,CAAC,KAAK,KAAK,QAAQ;AAC7D,QAAQ,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC;AAC7B,IAAI,IAAIA,QAAM,CAAC,GAAG,EAAE,SAAS,CAAC,IAAI,CAACC,gBAAc,CAAC,GAAG,CAAC,OAAO,CAAC;AAC9D,QAAQ,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC;AAC/B,IAAI,OAAO,OAAO;AAClB;AACO,SAAS,4BAA4B,CAAC,KAAK,EAAE;AACpD,IAAI,MAAM,GAAG,GAAGH,gBAAc,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,EAAE;AAClD,IAAI,MAAM,OAAO,GAAG,EAAE;AACtB,IAAI,IAAIE,QAAM,CAAC,GAAG,EAAE,WAAW,CAAC,IAAI,CAACC,gBAAc,CAAC,GAAG,CAAC,SAAS,CAAC;AAClE,QAAQ,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC;AACjC,IAAI,IAAID,QAAM,CAAC,GAAG,EAAE,QAAQ,CAAC,IAAI,GAAG,CAAC,MAAM,KAAK,iBAAiB;AACjE,QAAQ,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC;AAC9B,IAAI,IAAIA,QAAM,CAAC,GAAG,EAAE,eAAe,CAAC,IAAI,OAAO,GAAG,CAAC,aAAa,KAAK,QAAQ,EAAE;AAC/E,QAAQ,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC;AACrC,IAAI;AACJ,IAAI,IAAIA,QAAM,CAAC,GAAG,EAAE,oBAAoB,CAAC,IAAI,CAACC,gBAAc,CAAC,GAAG,CAAC,kBAAkB,CAAC,EAAE;AACtF,QAAQ,OAAO,CAAC,IAAI,CAAC,oBAAoB,CAAC;AAC1C,IAAI;AACJ,IAAI,IAAID,QAAM,CAAC,GAAG,EAAE,aAAa,CAAC,IAAI,OAAO,GAAG,CAAC,WAAW,KAAK,QAAQ,EAAE;AAC3E,QAAQ,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC;AACnC,IAAI;AACJ,IAAI,OAAO,OAAO;AAClB;AACO,SAAS,qCAAqC,CAAC,KAAK,EAAE;AAC7D,IAAI,MAAM,GAAG,GAAGF,gBAAc,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,EAAE;AAClD,IAAI,MAAM,OAAO,GAAG,EAAE;AACtB,IAAI,IAAIE,QAAM,CAAC,GAAG,EAAE,OAAO,CAAC;AAC5B,QAAQ,GAAG,CAAC,KAAK,KAAK,MAAM;AAC5B,QAAQ,GAAG,CAAC,KAAK,KAAK,MAAM;AAC5B,QAAQ,GAAG,CAAC,KAAK,KAAK,OAAO,EAAE;AAC/B,QAAQ,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC;AAC7B,IAAI;AACJ,IAAI,IAAIA,QAAM,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,CAACC,gBAAc,CAAC,GAAG,CAAC,KAAK,CAAC;AAC1D,QAAQ,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC;AAC7B,IAAI,IAAID,QAAM,CAAC,GAAG,EAAE,QAAQ,CAAC,IAAI,CAACC,gBAAc,CAAC,GAAG,CAAC,MAAM,CAAC;AAC5D,QAAQ,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC;AAC9B,IAAI,IAAID,QAAM,CAAC,GAAG,EAAE,QAAQ,CAAC,IAAI,OAAO,GAAG,CAAC,MAAM,KAAK,QAAQ;AAC/D,QAAQ,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC;AAC9B,IAAI,IAAIA,QAAM,CAAC,GAAG,EAAE,aAAa,CAAC,IAAI,CAACC,gBAAc,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE;AACxE,QAAQ,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC;AACnC,IAAI;AACJ,IAAI,IAAID,QAAM,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ;AAC3D,QAAQ,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC;AAC5B,IAAI,IAAIA,QAAM,CAAC,GAAG,EAAE,SAAS,CAAC,IAAI,CAACC,gBAAc,CAAC,GAAG,CAAC,OAAO,CAAC;AAC9D,QAAQ,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC;AAC/B,IAAI,IAAID,QAAM,CAAC,GAAG,EAAE,iBAAiB,CAAC,IAAI,CAACC,gBAAc,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE;AAChF,QAAQ,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC;AACvC,IAAI;AACJ,IAAI,IAAID,QAAM,CAAC,GAAG,EAAE,iBAAiB,CAAC,EAAE;AACxC,QAAQ,MAAM,KAAK,GAAG,GAAG,CAAC,eAAe;AACzC,QAAQ,MAAM,KAAK,GAAG,KAAK,KAAK,IAAI;AACpC,aAAa,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;AACjC,gBAAgB,KAAK,CAAC,KAAK,CAAC,CAAC,KAAK,KAAK,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC;AAC1G,QAAQ,IAAI,CAAC,KAAK;AAClB,YAAY,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC;AAC3C,IAAI;AACJ,IAAI,OAAO,OAAO;AAClB;AACO,SAAS,cAAc,CAAC,KAAK,EAAE;AACtC,IAAI,MAAM,GAAG,GAAG,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,MAAM,GAAG,KAAK,GAAG,EAAE;AAC/D,IAAI,MAAM,QAAQ,GAAG,EAAE,GAAG,eAAe,EAAE;AAC3C,IAAI,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;AACxC,QAAQ,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,GAAG,CAAC;AAC1C,YAAY;AACZ,QAAQ,IAAI,GAAG,KAAK,OAAO;AAC3B,YAAY,GAAG,KAAK,MAAM;AAC1B,YAAY,GAAG,KAAK,qBAAqB;AACzC,YAAY,GAAG,KAAK,mBAAmB;AACvC,YAAY,GAAG,KAAK,mBAAmB;AACvC,YAAY,GAAG,KAAK,qBAAqB;AACzC,YAAY,GAAG,KAAK,oBAAoB,EAAE;AAC1C,YAAY;AACZ,QAAQ;AACR,QAAQ,IAAI,GAAG,KAAK,kBAAkB;AACtC,YAAY,GAAG,KAAK,eAAe;AACnC,YAAY,GAAG,KAAK,gBAAgB;AACpC,YAAY,GAAG,KAAK,gBAAgB;AACpC,YAAY,GAAG,KAAK,cAAc;AAClC,YAAY,GAAG,KAAK,kBAAkB;AACtC,YAAY,GAAG,KAAK,iBAAiB;AACrC,YAAY,GAAG,KAAK,kBAAkB;AACtC,YAAY,GAAG,KAAK,gBAAgB;AACpC,YAAY,GAAG,KAAK,sBAAsB;AAC1C,YAAY,GAAG,KAAK,mBAAmB;AACvC,YAAY,GAAG,KAAK,SAAS;AAC7B,YAAY,GAAG,KAAK,WAAW,EAAE;AACjC,YAAY;AACZ,QAAQ;AACR,QAAQ,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC;AAC9B,QAAQ,IAAI,KAAK,KAAK,SAAS;AAC/B,YAAY;AACZ,QAAQ,IAAI,GAAG,KAAK,iBAAiB,EAAE;AACvC,YAAY,QAAQ,CAAC,eAAe,GAAG,eAAe,CAAC,KAAK,EAAE,eAAe,CAAC,eAAe,CAAC;AAC9F,YAAY;AACZ,QAAQ;AACR,QAAQ,IAAI,GAAG,KAAK,2BAA2B,EAAE;AACjD,YAAY,QAAQ,CAAC,yBAAyB,GAAG,gBAAgB,CAAC,KAAK,EAAE,eAAe,CAAC,yBAAyB,CAAC;AACnH,YAAY;AACZ,QAAQ;AACR,QAAQ,IAAI,GAAG,KAAK,iCAAiC,EAAE;AACvD,YAAY,QAAQ,CAAC,+BAA+B,GAAG,gBAAgB,CAAC,KAAK,EAAE,eAAe,CAAC,+BAA+B,CAAC;AAC/H,YAAY;AACZ,QAAQ;AACR,QAAQ,IAAI,GAAG,KAAK,4BAA4B,EAAE;AAClD,YAAY,QAAQ,CAAC,0BAA0B;AAC/C,gBAAgB,KAAK,KAAK,QAAQ,GAAG,QAAQ,GAAG,mBAAmB;AACnE,YAAY;AACZ,QAAQ;AACR,QAAQ,IAAI,GAAG,KAAK,kBAAkB,EAAE;AACxC,YAAY,QAAQ,CAAC,gBAAgB,GAAG,gBAAgB,CAAC,KAAK,EAAE,eAAe,CAAC,gBAAgB,CAAC;AACjG,YAAY;AACZ,QAAQ;AACR,QAAQ,IAAI,GAAG,KAAK,sBAAsB,EAAE;AAC5C,YAAY,QAAQ,CAAC,oBAAoB,GAAG,gBAAgB,CAAC,KAAK,EAAE,eAAe,CAAC,oBAAoB,CAAC;AACzG,YAAY;AACZ,QAAQ;AACR,QAAQ,IAAI,GAAG,KAAK,oBAAoB,EAAE;AAC1C,YAAY,QAAQ,CAAC,kBAAkB,GAAG,4BAA4B,CAAC,KAAK,EAAE,eAAe,CAAC,kBAAkB,CAAC;AACjH,YAAY;AACZ,QAAQ;AACR,QAAQ,IAAI,GAAG,KAAK,iBAAiB,EAAE;AACvC,YAAY,QAAQ,CAAC,eAAe,GAAG,gBAAgB,CAAC,KAAK,EAAE,eAAe,CAAC,eAAe,CAAC;AAC/F,YAAY;AACZ,QAAQ;AACR,QAAQ,IAAI,GAAG,KAAK,wBAAwB,EAAE;AAC9C,YAAY,QAAQ,CAAC,sBAAsB,GAAG,8BAA8B,CAAC,KAAK,CAAC;AACnF,YAAY;AACZ,QAAQ;AACR,QAAQ,IAAI,GAAG,KAAK,eAAe,EAAE;AACrC,YAAY,QAAQ,CAAC,aAAa,GAAG,sBAAsB,CAAC,KAAK,CAAC;AAClE,YAAY;AACZ,QAAQ;AACR,QAAQ,IAAI,GAAG,KAAK,gBAAgB,EAAE;AACtC,YAAY,QAAQ,CAAC,cAAc,GAAG,uBAAuB,CAAC,KAAK,CAAC;AACpE,YAAY;AACZ,QAAQ;AACR,QAAQ,IAAI,GAAG,KAAK,qBAAqB,EAAE;AAC3C,YAAY,QAAQ,CAAC,mBAAmB,GAAG,gBAAgB,CAAC,KAAK,EAAE,eAAe,CAAC,mBAAmB,CAAC;AACvG,YAAY;AACZ,QAAQ;AACR,QAAQ,IAAI,GAAG,KAAK,2BAA2B,EAAE;AACjD,YAAY,QAAQ,CAAC,yBAAyB,GAAG,gBAAgB,CAAC,KAAK,EAAE,eAAe,CAAC,yBAAyB,CAAC;AACnH,YAAY;AACZ,QAAQ;AACR,QAAQ,IAAI,GAAG,KAAK,eAAe,EAAE;AACrC,YAAY,QAAQ,CAAC,aAAa,GAAG,gBAAgB,CAAC,KAAK,EAAE,eAAe,CAAC,aAAa,CAAC;AAC3F,YAAY;AACZ,QAAQ;AACR,QAAQ,IAAI,GAAG,KAAK,mBAAmB,EAAE;AACzC,YAAY,QAAQ,CAAC,iBAAiB,GAAG,gBAAgB,CAAC,KAAK,EAAE,eAAe,CAAC,iBAAiB,CAAC;AACnG,YAAY;AACZ,QAAQ;AACR,QAAQ,IAAI,GAAG,KAAK,UAAU,EAAE;AAChC,YAAY,QAAQ,CAAC,QAAQ,GAAG,eAAe,CAAC,KAAK,EAAE,eAAe,CAAC,QAAQ,CAAC;AAChF,YAAY;AACZ,QAAQ;AACR,QAAQ,IAAI,GAAG,KAAK,oBAAoB,EAAE;AAC1C,YAAY,QAAQ,CAAC,kBAAkB,GAAG,eAAe,CAAC,KAAK,EAAE,eAAe,CAAC,kBAAkB,CAAC;AACpG,YAAY;AACZ,QAAQ;AACR,QAAQ,IAAI,GAAG,KAAK,oBAAoB,EAAE;AAC1C,YAAY,QAAQ,CAAC,kBAAkB,GAAG,eAAe,CAAC,KAAK,EAAE,eAAe,CAAC,kBAAkB,CAAC;AACpG,YAAY;AACZ,QAAQ;AACR,QAAQ,IAAI,GAAG,KAAK,qBAAqB,EAAE;AAC3C,YAAY,QAAQ,CAAC,mBAAmB,GAAG,eAAe,CAAC,KAAK,EAAE,eAAe,CAAC,mBAAmB,CAAC;AACtG,YAAY;AACZ,QAAQ;AACR,QAAQ,IAAI,GAAG,KAAK,gBAAgB,EAAE;AACtC,YAAY,QAAQ,CAAC,cAAc,GAAG,gBAAgB,CAAC,KAAK,EAAE,eAAe,CAAC,cAAc,CAAC;AAC7F,YAAY;AACZ,QAAQ;AACR,QAAQ,IAAI,GAAG,KAAK,iBAAiB,EAAE;AACvC,YAAY,QAAQ,CAAC,eAAe,GAAG,gBAAgB,CAAC,KAAK,EAAE,eAAe,CAAC,eAAe,CAAC;AAC/F,YAAY;AACZ,QAAQ;AACR,QAAQ,IAAI,GAAG,KAAK,oBAAoB,EAAE;AAC1C,YAAY,QAAQ,CAAC,kBAAkB,GAAG,uBAAuB,CAAC,KAAK,EAAE,eAAe,CAAC,kBAAkB,CAAC;AAC5G,YAAY;AACZ,QAAQ;AACR,QAAQ,IAAI,GAAG,KAAK,yBAAyB,EAAE;AAC/C,YAAY,QAAQ,CAAC,uBAAuB,GAAG,eAAe,CAAC,KAAK,EAAE,eAAe,CAAC,uBAAuB,CAAC;AAC9G,YAAY;AACZ,QAAQ;AACR,QAAQ,IAAI,GAAG,KAAK,mBAAmB,EAAE;AACzC,YAAY,QAAQ,CAAC,iBAAiB,GAAG,sBAAsB,CAAC,KAAK,CAAC;AACtE,YAAY;AACZ,QAAQ;AACR,QAAQ,IAAI,GAAG,KAAK,iBAAiB,EAAE;AACvC,YAAY,QAAQ,CAAC,eAAe,GAAG,wBAAwB,CAAC,KAAK,CAAC;AACtE,YAAY;AACZ,QAAQ;AACR,QAAQ,IAAI,GAAG,KAAK,oBAAoB,EAAE;AAC1C,YAAY,QAAQ,CAAC,kBAAkB,GAAG,2BAA2B,CAAC,KAAK,CAAC;AAC5E,YAAY;AACZ,QAAQ;AACR,QAAQ,IAAI,GAAG,KAAK,qBAAqB,EAAE;AAC3C,YAAY,QAAQ,CAAC,mBAAmB,GAAG,mBAAmB,CAAC,KAAK,CAAC;AACrE,YAAY;AACZ,QAAQ;AACR,QAAQ,IAAI,GAAG,KAAK,eAAe,EAAE;AACrC,YAAY,QAAQ,CAAC,aAAa,GAAG,yBAAyB,CAAC,KAAK,EAAE,eAAe,CAAC,aAAa,CAAC;AACpG,YAAY;AACZ,QAAQ;AACR,QAAQ,IAAI,GAAG,KAAK,qBAAqB,EAAE;AAC3C,YAAY,QAAQ,CAAC,mBAAmB,GAAG,yBAAyB,CAAC,KAAK,EAAE,eAAe,CAAC,mBAAmB,CAAC;AAChH,YAAY;AACZ,QAAQ;AACR,QAAQ,IAAI,GAAG,KAAK,mBAAmB,EAAE;AACzC,YAAY,MAAM,UAAU,GAAG,mBAAmB,CAAC,KAAK,CAAC;AACzD,YAAY,QAAQ,CAAC,iBAAiB,GAAG,UAAU;AACnD,YAAY,QAAQ,CAAC,UAAU,GAAG,UAAU;AAC5C,YAAY;AACZ,QAAQ;AACR,QAAQ,IAAI,GAAG,KAAK,aAAa,EAAE;AACnC,YAAY,QAAQ,CAAC,WAAW,GAAG,wBAAwB,CAAC,KAAK,EAAE,eAAe,CAAC,WAAW,CAAC;AAC/F,YAAY;AACZ,QAAQ;AACR,QAAQ,IAAI,GAAG,KAAK,cAAc,EAAE;AACpC,YAAY,QAAQ,CAAC,YAAY,GAAG,wBAAwB,CAAC,KAAK,EAAE,eAAe,CAAC,YAAY,CAAC;AACjG,YAAY;AACZ,QAAQ;AACR,QAAQ,IAAI,GAAG,KAAK,mBAAmB,EAAE;AACzC,YAAY,QAAQ,CAAC,iBAAiB,GAAG,gCAAgC,CAAC,KAAK,EAAE,eAAe,CAAC,iBAAiB,CAAC;AACnH,YAAY;AACZ,QAAQ;AACR,QAAQ,IAAI,GAAG,KAAK,UAAU,EAAE;AAChC,YAAY,QAAQ,CAAC,QAAQ,GAAG,6BAA6B,CAAC,KAAK,EAAE,eAAe,CAAC,QAAQ,CAAC;AAC9F,YAAY;AACZ,QAAQ;AACR,QAAQ,IAAI,GAAG,KAAK,UAAU,EAAE;AAChC,YAAY,QAAQ,CAAC,QAAQ,GAAG,6BAA6B,CAAC,KAAK,EAAE,eAAe,CAAC,QAAQ,CAAC;AAC9F,YAAY;AACZ,QAAQ;AACR,QAAQ,IAAI,GAAG,KAAK,WAAW,EAAE;AACjC,YAAY,QAAQ,CAAC,SAAS,GAAG,6BAA6B,CAAC,KAAK,EAAE,eAAe,CAAC,SAAS,CAAC;AAChG,YAAY;AACZ,QAAQ;AACR,QAAQ,IAAI,GAAG,KAAK,cAAc,EAAE;AACpC,YAAY,QAAQ,CAAC,YAAY,GAAG,qBAAqB,CAAC,KAAK,EAAE,eAAe,CAAC,YAAY,CAAC;AAC9F,YAAY;AACZ,QAAQ;AACR,QAAQ,IAAI,GAAG,KAAK,oBAAoB,EAAE;AAC1C,YAAY,QAAQ,CAAC,kBAAkB,GAAG,wBAAwB,CAAC,KAAK,EAAE,eAAe,CAAC,kBAAkB,CAAC;AAC7G,YAAY;AACZ,QAAQ;AACR,QAAQ,IAAI,GAAG,KAAK,qBAAqB,EAAE;AAC3C,YAAY,QAAQ,CAAC,mBAAmB,GAAG,wBAAwB,CAAC,KAAK,EAAE,eAAe,CAAC,mBAAmB,CAAC;AAC/G,YAAY;AACZ,QAAQ;AACR,QAAQ,IAAI,GAAG,KAAK,oBAAoB,EAAE;AAC1C,YAAY,QAAQ,CAAC,kBAAkB,GAAG,wBAAwB,CAAC,KAAK,EAAE,eAAe,CAAC,kBAAkB,CAAC;AAC7G,YAAY;AACZ,QAAQ;AACR,QAAQ,IAAI,GAAG,KAAK,kBAAkB,EAAE;AACxC,YAAY,QAAQ,CAAC,gBAAgB,GAAG,6BAA6B,CAAC,KAAK,EAAE,eAAe,CAAC,gBAAgB,CAAC;AAC9G,YAAY;AACZ,QAAQ;AACR,QAAQ,IAAI,GAAG,KAAK,kBAAkB,EAAE;AACxC,YAAY,QAAQ,CAAC,gBAAgB,GAAG,6BAA6B,CAAC,KAAK,EAAE,eAAe,CAAC,gBAAgB,CAAC;AAC9G,YAAY;AACZ,QAAQ;AACR,QAAQ,IAAI,GAAG,KAAK,mBAAmB,EAAE;AACzC,YAAY,QAAQ,CAAC,iBAAiB,GAAG,6BAA6B,CAAC,KAAK,EAAE,eAAe,CAAC,iBAAiB,CAAC;AAChH,YAAY;AACZ,QAAQ;AACR,QAAQ,IAAI,GAAG,KAAK,mBAAmB,EAAE;AACzC,YAAY,QAAQ,CAAC,iBAAiB,GAAG,0BAA0B,CAAC,KAAK,CAAC;AAC1E,YAAY;AACZ,QAAQ;AACR,QAAQ,IAAI,GAAG,KAAK,iBAAiB,EAAE;AACvC,YAAY,QAAQ,CAAC,eAAe,GAAG,gCAAgC,CAAC,KAAK,EAAE,eAAe,CAAC,eAAe,CAAC;AAC/G,YAAY;AACZ,QAAQ;AACR,QAAQ,QAAQ,CAAC,GAAG,CAAC,GAAG,KAAK;AAC7B,IAAI;AACJ,IAAI,QAAQ,CAAC,gBAAgB,GAAG,iBAAiB,CAAC,GAAG,CAAC,gBAAgB,CAAC;AACvE,IAAI,QAAQ,CAAC,aAAa,GAAG,iBAAiB,CAAC,GAAG,CAAC,aAAa,CAAC;AACjE,IAAI,QAAQ,CAAC,cAAc,GAAG,iBAAiB,CAAC,GAAG,CAAC,cAAc,CAAC;AACnE,IAAI,QAAQ,CAAC,cAAc,GAAG,iBAAiB,CAAC,GAAG,CAAC,cAAc,CAAC;AACnE,IAAI,QAAQ,CAAC,YAAY,GAAG,iBAAiB,CAAC,GAAG,CAAC,YAAY,CAAC;AAC/D,IAAI,QAAQ,CAAC,gBAAgB,GAAG,iBAAiB,CAAC,GAAG,CAAC,gBAAgB,CAAC;AACvE,IAAI,QAAQ,CAAC,eAAe,GAAG,iBAAiB,CAAC,GAAG,CAAC,eAAe,CAAC;AACrE,IAAI,QAAQ,CAAC,gBAAgB,GAAG,iBAAiB,CAAC,GAAG,CAAC,gBAAgB,CAAC;AACvE,IAAI,QAAQ,CAAC,cAAc,GAAG,iBAAiB,CAAC,GAAG,CAAC,cAAc,CAAC;AACnE,IAAI,QAAQ,CAAC,oBAAoB,GAAG,iBAAiB,CAAC,GAAG,CAAC,oBAAoB,CAAC;AAC/E,IAAI,QAAQ,CAAC,iBAAiB,GAAG,iBAAiB,CAAC,GAAG,CAAC,iBAAiB,CAAC;AACzE,IAAI,QAAQ,CAAC,OAAO,GAAG,iBAAiB,CAAC,GAAG,CAAC,OAAO,CAAC;AACrD,IAAI,QAAQ,CAAC,SAAS,GAAG,iBAAiB,CAAC,GAAG,CAAC,SAAS,CAAC;AACzD,IAAI,QAAQ,CAAC,cAAc,GAAG,uBAAuB,CAAC,QAAQ,CAAC,cAAc,CAAC;AAC9E,IAAI,IAAI,QAAQ,CAAC,QAAQ,GAAG,QAAQ,CAAC,QAAQ,EAAE;AAC/C,QAAQ,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ;AAC1C,QAAQ,QAAQ,CAAC,QAAQ,GAAG,QAAQ,CAAC,QAAQ;AAC7C,QAAQ,QAAQ,CAAC,QAAQ,GAAG,QAAQ;AACpC,IAAI;AACJ,IAAI,MAAM,SAAS,GAAG,GAAG,CAAC,KAAK,IAAI,OAAO,GAAG,CAAC,KAAK,KAAK,QAAQ,GAAG,GAAG,CAAC,KAAK,GAAG,EAAE;AACjF,IAAI,MAAM,iBAAiB,GAAG;AAC9B,QAAQ,GAAG,0BAA0B;AACrC,QAAQ,IAAI,SAAS,CAAC,WAAW,IAAI,OAAO,SAAS,CAAC,WAAW,KAAK;AACtE,cAAc,SAAS,CAAC;AACxB,cAAc,EAAE,CAAC;AACjB,KAAK;AACL,IAAI,MAAM,KAAK,GAAG;AAClB,QAAQ,OAAO,EAAE,OAAO,SAAS,CAAC,OAAO,KAAK,UAAU,GAAG,SAAS,CAAC,OAAO,GAAG,aAAa,CAAC,OAAO;AACpG,QAAQ,WAAW,EAAE,iBAAiB;AACtC,KAAK;AACL,IAAI,IAAI,OAAO,SAAS,CAAC,MAAM,KAAK,UAAU,EAAE;AAChD,QAAQ,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM;AACvC,IAAI;AACJ,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC;AACpC,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC;AACxB,IAAI,MAAM,QAAQ,GAAG,GAAG,CAAC,IAAI,IAAI,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ,GAAG,GAAG,CAAC,IAAI,GAAG,EAAE;AAC7E,IAAI,MAAM,IAAI,GAAG;AACjB,QAAQ,WAAW,EAAE,8BAA8B,CAAC,QAAQ,CAAC,WAAW,CAAC;AACzE,QAAQ,QAAQ,EAAE,6BAA6B,CAAC,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAC,QAAQ,CAAC;AACzF,QAAQ,SAAS,EAAE,6BAA6B,CAAC,QAAQ,CAAC,SAAS,EAAE,YAAY,CAAC,SAAS,CAAC;AAC5F,QAAQ,OAAO,EAAE,gCAAgC,CAAC,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAC,OAAO,CAAC;AACzF,QAAQ,mBAAmB,EAAE,gBAAgB,CAAC,QAAQ,CAAC,mBAAmB,EAAE,YAAY,CAAC,mBAAmB,CAAC;AAC7G,QAAQ,sBAAsB,EAAE,gBAAgB,CAAC,QAAQ,CAAC,sBAAsB,EAAE,YAAY,CAAC,sBAAsB,CAAC;AACtH,QAAQ,uBAAuB,EAAE,gBAAgB,CAAC,QAAQ,CAAC,uBAAuB,EAAE,YAAY,CAAC,uBAAuB,CAAC;AACzH,QAAQ,cAAc,EAAE,iCAAiC,CAAC,QAAQ,CAAC,cAAc,CAAC;AAClF,QAAQ,aAAa,EAAE,wBAAwB,CAAC,QAAQ,CAAC,aAAa,CAAC;AACvE,KAAK;AACL,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;AACvB,IAAI,MAAM,mBAAmB,GAAG,qBAAqB,CAAC,GAAG,CAAC,mBAAmB,EAAE,qBAAqB,CAAC;AACrG,IAAI,IAAI,mBAAmB,CAAC,sBAAsB,EAAE;AACpD,QAAQ,MAAM,CAAC,MAAM,CAAC,mBAAmB,CAAC,sBAAsB,CAAC;AACjE,IAAI;AACJ,IAAI,MAAM,CAAC,MAAM,CAAC,mBAAmB,CAAC;AACtC,IAAI,MAAM,iBAAiB,GAAG,6BAA6B,CAAC,GAAG,CAAC,iBAAiB,EAAE,8BAA8B,CAAC;AAClH,IAAI,MAAM,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAAM,CAAC;AAC3C,IAAI,MAAM,CAAC,MAAM,CAAC,iBAAiB,CAAC;AACpC,IAAI,MAAM,iBAAiB,GAAG,mBAAmB,CAAC,GAAG,CAAC,iBAAiB,EAAE,mBAAmB,CAAC;AAC7F,IAAI,MAAM,CAAC,MAAM,CAAC,iBAAiB,CAAC;AACpC,IAAI,MAAM,mBAAmB,GAAG,qBAAqB,CAAC,GAAG,CAAC,mBAAmB,EAAE,qBAAqB,CAAC;AACrG,IAAI,MAAM,CAAC,MAAM,CAAC,mBAAmB,CAAC;AACtC,IAAI,MAAM,kBAAkB,GAAG,8BAA8B,CAAC,GAAG,CAAC,kBAAkB,EAAE,+BAA+B,CAAC;AACtH,IAAI,MAAM,CAAC,MAAM,CAAC,kBAAkB,CAAC,MAAM,CAAC;AAC5C,IAAI,MAAM,CAAC,MAAM,CAAC,kBAAkB,CAAC;AACrC,IAAI,OAAO,MAAM,CAAC,MAAM,CAAC;AACzB,QAAQ,GAAG,QAAQ;AACnB,QAAQ,KAAK;AACb,QAAQ,IAAI;AACZ,QAAQ,mBAAmB;AAC3B,QAAQ,iBAAiB;AACzB,QAAQ,iBAAiB;AACzB,QAAQ,mBAAmB;AAC3B,QAAQ,kBAAkB;AAC1B,KAAK,CAAC;AACN;;AChxCO,MAAM,2BAA2B,GAAG,MAAM,CAAC,MAAM,CAAC;AACzD,IAAI,UAAU,EAAE,CAAC;AACjB,IAAI,QAAQ,EAAE,CAAC;AACf,IAAI,UAAU,EAAE,CAAC;AACjB,IAAI,IAAI,EAAE,CAAC;AACX,IAAI,OAAO,EAAE,CAAC;AACd,IAAI,SAAS,EAAE,KAAK;AACpB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,OAAO,EAAE,KAAK;AAClB,CAAC,CAAC;AACF,SAAS,cAAc,CAAC,KAAK,EAAE;AAC/B,IAAI,OAAO,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;AAC/E;AACA,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,EAAE;AAC7B,IAAI,OAAO,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC;AAC5D;AACA,SAAS,oBAAoB,CAAC,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE;AACtE,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC;AACzB,QAAQ,OAAO,QAAQ;AACvB,IAAI,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC;AAC1B,IAAI,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI;AAC7C,QAAQ,OAAO,CAAC;AAChB,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;AAC9D,QAAQ,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC;AAC1B,QAAQ,OAAO,QAAQ;AACvB,IAAI;AACJ,IAAI,IAAI,KAAK,GAAG,GAAG,IAAI,KAAK,GAAG,GAAG,EAAE;AACpC,QAAQ,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC;AAC1B,QAAQ,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AAClD,IAAI;AACJ,IAAI,OAAO,KAAK;AAChB;AACA,SAAS,qBAAqB,CAAC,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE;AAC7D,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC;AACzB,QAAQ,OAAO,QAAQ;AACvB,IAAI,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC;AAC1B,IAAI,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI;AAC7C,QAAQ,OAAO,KAAK;AACpB,IAAI,IAAI,OAAO,KAAK,KAAK,SAAS,EAAE;AACpC,QAAQ,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC;AAC1B,QAAQ,OAAO,QAAQ;AACvB,IAAI;AACJ,IAAI,OAAO,KAAK;AAChB;AACO,SAAS,8BAA8B,CAAC,MAAM,EAAE;AACvD,IAAI,OAAO,EAAE,GAAG,MAAM,EAAE;AACxB;AACO,SAAS,2BAA2B,CAAC,OAAO,EAAE,KAAK,EAAE;AAC5D,IAAI,MAAM,GAAG,GAAG,cAAc,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,EAAE;AAClD,IAAI,MAAM,QAAQ,GAAG,EAAE;AACvB,IAAI,MAAM,MAAM,GAAG;AACnB,QAAQ,UAAU,EAAE,oBAAoB,CAAC,GAAG,EAAE,YAAY,EAAE,OAAO,CAAC,UAAU,EAAE,EAAE,EAAE,CAAC,EAAE,QAAQ,CAAC;AAChG,QAAQ,QAAQ,EAAE,oBAAoB,CAAC,GAAG,EAAE,UAAU,EAAE,OAAO,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,EAAE,QAAQ,CAAC;AAC1F,QAAQ,UAAU,EAAE,oBAAoB,CAAC,GAAG,EAAE,YAAY,EAAE,OAAO,CAAC,UAAU,EAAE,EAAE,EAAE,CAAC,EAAE,QAAQ,CAAC;AAChG,QAAQ,IAAI,EAAE,oBAAoB,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC;AAC7E,QAAQ,OAAO,EAAE,oBAAoB,CAAC,GAAG,EAAE,SAAS,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC;AACtF,QAAQ,SAAS,EAAE,qBAAqB,CAAC,GAAG,EAAE,WAAW,EAAE,OAAO,CAAC,SAAS,EAAE,QAAQ,CAAC;AACvF,QAAQ,KAAK,EAAE,qBAAqB,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC;AAC3E,QAAQ,OAAO,EAAE,qBAAqB,CAAC,GAAG,EAAE,SAAS,EAAE,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC;AACjF,KAAK;AACL,IAAI,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE;AAC/B;AACO,SAAS,kCAAkC,CAAC,KAAK,EAAE;AAC1D,IAAI,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC;AAC9B,QAAQ,OAAO,8BAA8B,CAAC,2BAA2B,CAAC;AAC1E,IAAI,OAAO,2BAA2B,CAAC,8BAA8B,CAAC,2BAA2B,CAAC,EAAE,KAAK,CAAC,CAAC,MAAM;AACjH;AACO,SAAS,kCAAkC,CAAC,IAAI,EAAE,KAAK,EAAE;AAChE,IAAI,QAAQ,IAAI,CAAC,UAAU,KAAK,KAAK,CAAC,UAAU;AAChD,QAAQ,IAAI,CAAC,QAAQ,KAAK,KAAK,CAAC,QAAQ;AACxC,QAAQ,IAAI,CAAC,UAAU,KAAK,KAAK,CAAC,UAAU;AAC5C,QAAQ,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI;AAChC,QAAQ,IAAI,CAAC,OAAO,KAAK,KAAK,CAAC,OAAO;AACtC,QAAQ,IAAI,CAAC,SAAS,KAAK,KAAK,CAAC,SAAS;AAC1C,QAAQ,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK;AAClC,QAAQ,IAAI,CAAC,OAAO,KAAK,KAAK,CAAC,OAAO;AACtC;AACO,SAAS,qBAAqB,CAAC,MAAM,EAAE;AAC9C,IAAI,QAAQ,MAAM,CAAC,UAAU,KAAK,CAAC;AACnC,QAAQ,MAAM,CAAC,QAAQ,KAAK,CAAC;AAC7B,QAAQ,MAAM,CAAC,UAAU,KAAK,CAAC;AAC/B,QAAQ,MAAM,CAAC,IAAI,KAAK,CAAC;AACzB,QAAQ,MAAM,CAAC,OAAO,KAAK,CAAC;AAC5B,QAAQ,MAAM,CAAC,SAAS;AACxB,QAAQ,MAAM,CAAC,KAAK;AACpB,QAAQ,MAAM,CAAC,OAAO;AACtB;;ACtFO,SAAS,iBAAiB,CAAC,MAAM,EAAE;AAC1C,IAAI,QAAQ,CAAC,CAAC,MAAM;AACpB,QAAQ,OAAO,MAAM,KAAK,QAAQ;AAClC,QAAQ,MAAM,CAAC,gBAAgB,KAAK,WAAW;AAC/C;AACO,SAAS,YAAY,CAAC,MAAM,EAAE;AACrC,IAAI,MAAM,SAAS,GAAG,MAAM;AAC5B,IAAI,QAAQ,CAAC,CAAC,SAAS;AACvB,QAAQ,SAAS,CAAC,gBAAgB,KAAK,MAAM;AAC7C,QAAQ,OAAO,SAAS,CAAC,MAAM,KAAK,QAAQ;AAC5C,QAAQ,OAAO,SAAS,CAAC,OAAO,KAAK,QAAQ;AAC7C,QAAQ,OAAO,SAAS,CAAC,QAAQ,KAAK,QAAQ;AAC9C;AACO,SAAS,kBAAkB,CAAC,MAAM,EAAE;AAC3C,IAAI,MAAM,SAAS,GAAG,MAAM;AAC5B,IAAI,QAAQ,CAAC,CAAC,SAAS;AACvB,QAAQ,SAAS,CAAC,gBAAgB,KAAK,YAAY;AACnD,QAAQ,OAAO,SAAS,CAAC,YAAY,KAAK,QAAQ;AAClD,QAAQ,OAAO,SAAS,CAAC,cAAc,KAAK,QAAQ;AACpD,QAAQ,OAAO,SAAS,CAAC,cAAc,KAAK,QAAQ;AACpD;AACO,SAAS,sBAAsB,CAAC,MAAM,EAAE;AAC/C,IAAI,OAAO,kBAAkB,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,cAAc,KAAK,MAAM;AACzE;AACO,SAAS,sBAAsB,CAAC,MAAM,EAAE;AAC/C,IAAI,OAAO,kBAAkB,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,cAAc,KAAK,MAAM;AACzE;AACO,SAAS,uBAAuB,CAAC,MAAM,EAAE;AAChD,IAAI,MAAM,SAAS,GAAG,MAAM;AAC5B,IAAI,QAAQ,kBAAkB,CAAC,SAAS,CAAC;AACzC,QAAQ,SAAS,CAAC,cAAc,KAAK,OAAO;AAC5C,SAAS,SAAS,CAAC,mBAAmB,KAAK,MAAM;AACjD,YAAY,SAAS,CAAC,mBAAmB,KAAK,MAAM;AACpD,YAAY,SAAS,CAAC,mBAAmB,KAAK,OAAO,CAAC;AACtD;AACO,SAAS,eAAe,CAAC,MAAM,EAAE;AACxC,IAAI,MAAM,SAAS,GAAG,MAAM;AAC5B,IAAI,QAAQ,CAAC,CAAC,SAAS;AACvB,QAAQ,SAAS,CAAC,gBAAgB,KAAK,SAAS;AAChD,QAAQ,OAAO,SAAS,CAAC,iBAAiB,KAAK,QAAQ;AACvD;AACO,SAAS,uBAAuB,CAAC,MAAM,EAAE;AAChD,IAAI,OAAO,YAAY,CAAC,MAAM,CAAC,IAAI,kBAAkB,CAAC,MAAM,CAAC;AAC7D;;AC3CO,SAAS,mBAAmB,CAAC,KAAK,EAAE;AAC3C,IAAI,MAAM,SAAS,GAAG,KAAK;AAC3B,IAAI,SAAS,CAAC,gBAAgB,GAAG,WAAW;AAC5C,IAAI,OAAO,SAAS;AACpB;AACO,SAAS,cAAc,CAAC,MAAM,EAAE,IAAI,EAAE;AAC7C,IAAI,MAAM,IAAI,GAAG,MAAM;AACvB,IAAI,IAAI,CAAC,gBAAgB,GAAG,MAAM;AAClC,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM;AAC7B,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO;AAC/B,IAAI,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ;AACjC,IAAI,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa;AAC3C,IAAI,IAAI,IAAI,CAAC,cAAc,KAAK,SAAS;AACzC,QAAQ,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc;AACjD,IAAI,IAAI,OAAO,IAAI,CAAC,mBAAmB,KAAK,QAAQ,EAAE;AACtD,QAAQ,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,mBAAmB;AAC3D,IAAI;AACJ,IAAI,OAAO,IAAI;AACf;AACO,SAAS,oBAAoB,CAAC,MAAM,EAAE,IAAI,EAAE;AACnD,IAAI,IAAI,EAAE,EAAE,EAAE;AACd,IAAI,MAAM,UAAU,GAAG,MAAM;AAC7B,IAAI,UAAU,CAAC,gBAAgB,GAAG,YAAY;AAC9C,IAAI,UAAU,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY;AAC/C,IAAI,UAAU,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc;AACnD,IAAI,UAAU,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc;AACnD,IAAI,UAAU,CAAC,gBAAgB,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,gBAAgB,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,KAAK;AACrG,IAAI,UAAU,CAAC,gBAAgB,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,gBAAgB,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,KAAK;AACrG,IAAI,IAAI,OAAO,IAAI,CAAC,oBAAoB,KAAK,SAAS,EAAE;AACxD,QAAQ,UAAU,CAAC,oBAAoB,GAAG,IAAI,CAAC,oBAAoB;AACnE,IAAI;AACJ,IAAI,IAAI,OAAO,IAAI,CAAC,iBAAiB,KAAK,SAAS,EAAE;AACrD,QAAQ,UAAU,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB;AAC7D,IAAI;AACJ,IAAI,IAAI,OAAO,IAAI,CAAC,qBAAqB,KAAK,SAAS,EAAE;AACzD,QAAQ,UAAU,CAAC,qBAAqB,GAAG,IAAI,CAAC,qBAAqB;AACrE,IAAI;AACJ,IAAI,IAAI,OAAO,IAAI,CAAC,kBAAkB,KAAK,SAAS,EAAE;AACtD,QAAQ,UAAU,CAAC,kBAAkB,GAAG,IAAI,CAAC,kBAAkB;AAC/D,IAAI;AACJ,IAAI,IAAI,IAAI,CAAC,mBAAmB,EAAE;AAClC,QAAQ,UAAU,CAAC,mBAAmB,GAAG,IAAI,CAAC,mBAAmB;AACjE,IAAI;AACJ,IAAI,OAAO,UAAU;AACrB;AACO,SAAS,iBAAiB,CAAC,MAAM,EAAE,iBAAiB,EAAE;AAC7D,IAAI,MAAM,aAAa,GAAG,MAAM;AAChC,IAAI,aAAa,CAAC,gBAAgB,GAAG,SAAS;AAC9C,IAAI,aAAa,CAAC,iBAAiB,GAAG,iBAAiB;AACvD,IAAI,OAAO,aAAa;AACxB;;AClDO,MAAM,0BAA0B,GAAG;AAC1C,IAAI,GAAG,EAAE,WAAW;AACpB,IAAI,GAAG,EAAE,YAAY;AACrB,IAAI,IAAI,EAAE,YAAY;AACtB,IAAI,IAAI,EAAE,YAAY;AACtB,CAAC;AACM,MAAM,0BAA0B,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,0BAA0B,CAAC,CAAC;AACrF,SAAS,uBAAuB,CAAC,KAAK,EAAE;AAC/C,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ;AACjC,QAAQ,OAAO,KAAK;AACpB,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC;AACtD,QAAQ,OAAO,KAAK;AACpB,IAAI,MAAM,KAAK,GAAG,gCAAgC,CAAC,IAAI,CAAC,KAAK,CAAC;AAC9D,IAAI,IAAI,CAAC,KAAK;AACd,QAAQ,OAAO,KAAK;AACpB,IAAI,OAAO,0BAA0B,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;AACjE;AACO,SAAS,kBAAkB,CAAC,IAAI,EAAE;AACzC,IAAI,IAAI,EAAE,EAAE,EAAE;AACd,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,0BAA0B,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;AAC9D,QAAQ,OAAO,IAAI,CAAC,IAAI;AACxB,IAAI,IAAI,IAAI,CAAC,IAAI;AACjB,QAAQ,OAAO,IAAI;AACnB,IAAI,MAAM,KAAK,GAAG,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;AACnD,IAAI,MAAM,GAAG,GAAG,CAAC,EAAE,GAAG,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,MAAM,GAAG,EAAE,CAAC,WAAW,EAAE;AACnI,IAAI,IAAI,CAAC,GAAG;AACZ,QAAQ,OAAO,IAAI;AACnB,IAAI,OAAO,CAAC,EAAE,GAAG,0BAA0B,CAAC,GAAG,CAAC,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,IAAI;AACvF;AACO,SAAS,iBAAiB,CAAC,IAAI,EAAE;AACxC,IAAI,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;AAC5C,QAAQ,MAAM,MAAM,GAAG,IAAI,UAAU,EAAE;AACvC,QAAQ,MAAM,CAAC,MAAM,GAAG,MAAM;AAC9B,YAAY,MAAM,gBAAgB,GAAG,MAAM,CAAC,MAAM;AAClD,YAAY,IAAI,OAAO,gBAAgB,KAAK,QAAQ,EAAE;AACtD,gBAAgB,OAAO,CAAC,gBAAgB,CAAC;AACzC,YAAY;AACZ,iBAAiB;AACjB,gBAAgB,MAAM,CAAC,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;AAC5E,YAAY;AACZ,QAAQ,CAAC;AACT,QAAQ,MAAM,CAAC,OAAO,GAAG,MAAM;AAC/B,YAAY,IAAI,EAAE;AAClB,YAAY,MAAM,CAAC,CAAC,EAAE,GAAG,MAAM,CAAC,KAAK,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;AACtG,QAAQ,CAAC;AACT,QAAQ,MAAM,CAAC,OAAO,GAAG,MAAM;AAC/B,YAAY,MAAM,CAAC,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;AACxD,QAAQ,CAAC;AACT,QAAQ,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC;AAClC,IAAI,CAAC,CAAC;AACN;AACO,SAAS,qBAAqB,CAAC,IAAI,EAAE;AAC5C,IAAI,IAAI,OAAO,IAAI,CAAC,WAAW,KAAK,UAAU,EAAE;AAChD,QAAQ,OAAO,IAAI,CAAC,WAAW,EAAE;AACjC,IAAI;AACJ,IAAI,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;AAC5C,QAAQ,MAAM,MAAM,GAAG,IAAI,UAAU,EAAE;AACvC,QAAQ,MAAM,CAAC,MAAM,GAAG,MAAM;AAC9B,YAAY,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM;AACxC,YAAY,IAAI,MAAM,YAAY,WAAW,EAAE;AAC/C,gBAAgB,OAAO,CAAC,MAAM,CAAC;AAC/B,YAAY;AACZ,iBAAiB;AACjB,gBAAgB,MAAM,CAAC,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;AACjF,YAAY;AACZ,QAAQ,CAAC;AACT,QAAQ,MAAM,CAAC,OAAO,GAAG,MAAM;AAC/B,YAAY,IAAI,EAAE;AAClB,YAAY,MAAM,CAAC,CAAC,EAAE,GAAG,MAAM,CAAC,KAAK,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;AACtG,QAAQ,CAAC;AACT,QAAQ,MAAM,CAAC,OAAO,GAAG,MAAM;AAC/B,YAAY,MAAM,CAAC,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;AACxD,QAAQ,CAAC;AACT,QAAQ,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC;AACtC,IAAI,CAAC,CAAC;AACN;AACO,SAAS,cAAc,CAAC,KAAK,EAAE;AACtC,IAAI,IAAI,CAAC,KAAK;AACd,QAAQ;AACR,IAAI,IAAI;AACR,QAAQ,KAAK,CAAC,KAAK,GAAG,EAAE;AACxB,IAAI;AACJ,IAAI,MAAM;AACV,IAAI;AACJ;;ACnFO,SAAS,WAAW,CAAC,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE;AAC3D,IAAI,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;AAC5C,QAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE;AAChC,QAAQ,MAAM,SAAS,GAAG,UAAU,CAAC,MAAM;AAC3C,YAAY,IAAI;AAChB,gBAAgB,SAAS,KAAK,IAAI,IAAI,SAAS,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,SAAS,EAAE;AACjF,YAAY;AACZ,YAAY,MAAM;AAClB,YAAY;AACZ,YAAY,MAAM,CAAC,IAAI,qBAAqB,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,CAAC;AACxE,QAAQ,CAAC,EAAE,EAAE,CAAC;AACd,QAAQ,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK;AAChC,YAAY,YAAY,CAAC,SAAS,CAAC;AACnC,YAAY,OAAO,CAAC,KAAK,CAAC;AAC1B,QAAQ,CAAC,EAAE,CAAC,GAAG,KAAK;AACpB,YAAY,YAAY,CAAC,SAAS,CAAC;AACnC,YAAY,MAAM,CAAC,GAAG,CAAC;AACvB,QAAQ,CAAC,CAAC;AACV,IAAI,CAAC,CAAC;AACN;;ACdA,MAAM,iCAAiC,GAAG,QAAQ;AAClD,MAAM,oCAAoC,GAAG,KAAK;AAClD,MAAM,0BAA0B,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI;AACnD,MAAM,4BAA4B,GAAG,IAAI;AACzC,MAAM,wCAAwC,GAAG,GAAG;AACpD,MAAM,gCAAgC,GAAG,KAAK;AAC9C,MAAM,gCAAgC,GAAG,IAAI,GAAG,CAAC,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;AACnE,MAAM,iCAAiC,GAAG,IAAI,GAAG,CAAC,CAAC,UAAU,EAAE,iBAAiB,EAAE,cAAc,CAAC,CAAC;AAClG,MAAM,uCAAuC,GAAG,IAAI,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC;AACpE,MAAM,mCAAmC,GAAG,IAAI,GAAG,CAAC;AACpD,IAAI,QAAQ;AACZ,IAAI,SAAS;AACb,IAAI,OAAO;AACX,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,SAAS;AACb,IAAI,UAAU;AACd,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,SAAS;AACb,CAAC,CAAC;AACK,MAAM,oBAAoB,GAAG,MAAM,CAAC,MAAM,CAAC;AAClD,IAAI,kBAAkB;AACtB,IAAI,mBAAmB;AACvB,IAAI,QAAQ;AACZ,IAAI,SAAS;AACb,IAAI,UAAU;AACd,IAAI,YAAY;AAChB,IAAI,WAAW;AACf,IAAI,eAAe;AACnB,IAAI,gBAAgB;AACpB,IAAI,qBAAqB;AACzB,IAAI,aAAa;AACjB,IAAI,YAAY;AAChB,IAAI,eAAe;AACnB,IAAI,cAAc;AAClB,IAAI,oBAAoB;AACxB,IAAI,aAAa;AACjB,IAAI,aAAa;AACjB,IAAI,YAAY;AAChB,IAAI,OAAO;AACX,IAAI,OAAO;AACX,IAAI,iBAAiB;AACrB,IAAI,cAAc;AAClB,IAAI,gBAAgB;AACpB,IAAI,qBAAqB;AACzB,IAAI,gBAAgB;AACpB,IAAI,kBAAkB;AACtB,IAAI,kBAAkB;AACtB,IAAI,sBAAsB;AAC1B,IAAI,mBAAmB;AACvB,IAAI,uBAAuB;AAC3B,IAAI,oBAAoB;AACxB,IAAI,qBAAqB;AACzB,IAAI,iBAAiB;AACrB,CAAC,CAAC;AACF,SAAS,gBAAgB,CAAC,KAAK,EAAE;AACjC,IAAI,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC;AACjC,IAAI,OAAO,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,OAAO,GAAG,IAAI;AACpD;AACA,SAAS,qBAAqB,CAAC,UAAU,EAAE,UAAU,EAAE;AACvD,IAAI,MAAM,QAAQ,GAAG,OAAO,UAAU,CAAC,IAAI,KAAK,QAAQ,GAAG,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,EAAE;AAC7F,IAAI,MAAM,QAAQ,GAAG,OAAO,UAAU,CAAC,IAAI,KAAK,QAAQ,GAAG,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,EAAE;AAC7F,IAAI,OAAO,CAAC,QAAQ,IAAI,QAAQ,KAAK,QAAQ;AAC7C;AACA,SAAS,yBAAyB,CAAC,UAAU,EAAE,UAAU,EAAE;AAC3D,IAAI,IAAI,EAAE,EAAE,EAAE;AACd,IAAI,MAAM,QAAQ,GAAG,gBAAgB,CAAC,UAAU,CAAC,IAAI,CAAC;AACtD,IAAI,MAAM,OAAO,GAAG,gBAAgB,CAAC,UAAU,CAAC,GAAG,CAAC;AACpD,IAAI,IAAI,QAAQ,KAAK,IAAI,IAAI,OAAO,KAAK,IAAI;AAC7C,QAAQ,OAAO,IAAI;AACnB,IAAI,QAAQ,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,UAAU,CAAC,IAAI,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,CAAC,IAAI,QAAQ,CAAC,GAAG,GAAG;AAClG,QAAQ,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,UAAU,CAAC,GAAG,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,CAAC,IAAI,OAAO,CAAC,GAAG,GAAG;AAC5F;AACA,SAAS,uBAAuB,CAAC,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE;AAC5E,IAAI,IAAI,EAAE;AACV,IAAI,MAAM,UAAU,GAAG,gBAAgB,CAAC,SAAS,CAAC;AAClD,IAAI,IAAI,UAAU,KAAK,IAAI;AAC3B,QAAQ,OAAO,IAAI;AACnB,IAAI,MAAM,UAAU,GAAG,CAAC,EAAE,GAAG,gBAAgB,CAAC,SAAS,CAAC,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,QAAQ;AACnG,IAAI,OAAO,IAAI,CAAC,GAAG,CAAC,UAAU,GAAG,UAAU,CAAC,GAAG,SAAS;AACxD;AACA,SAAS,0BAA0B,CAAC,UAAU,EAAE,UAAU,EAAE;AAC5D,IAAI,QAAQ,uBAAuB,CAAC,UAAU,CAAC,KAAK,EAAE,UAAU,CAAC,KAAK,EAAE,CAAC,EAAE,GAAG,CAAC;AAC/E,QAAQ,uBAAuB,CAAC,UAAU,CAAC,MAAM,EAAE,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,MAAM,CAAC;AAChF,QAAQ,uBAAuB,CAAC,UAAU,CAAC,MAAM,EAAE,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,MAAM,CAAC;AAChF;AACA,SAAS,uBAAuB,CAAC,UAAU,EAAE,UAAU,EAAE;AACzD,IAAI,MAAM,IAAI,GAAG,UAAU;AAC3B,IAAI,IAAI,OAAO,UAAU,CAAC,OAAO,KAAK,QAAQ,IAAI,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ,EAAE;AACpF,QAAQ,OAAO,IAAI,CAAC,OAAO,KAAK,UAAU,CAAC,OAAO;AAClD,IAAI;AACJ,IAAI,IAAI,OAAO,UAAU,CAAC,MAAM,KAAK,QAAQ,IAAI,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ,EAAE;AAClF,QAAQ,OAAO,IAAI,CAAC,MAAM,KAAK,UAAU,CAAC,MAAM;AAChD,IAAI;AACJ,IAAI,IAAI,OAAO,UAAU,CAAC,YAAY,KAAK,QAAQ,IAAI,OAAO,IAAI,CAAC,YAAY,KAAK,QAAQ,EAAE;AAC9F,QAAQ,OAAO,IAAI,CAAC,YAAY,KAAK,UAAU,CAAC,YAAY;AAC5D,IAAI;AACJ,IAAI,IAAI,OAAO,UAAU,CAAC,iBAAiB,KAAK,QAAQ;AACxD,QAAQ,OAAO,IAAI,CAAC,iBAAiB,KAAK,QAAQ,EAAE;AACpD,QAAQ,OAAO,IAAI,CAAC,iBAAiB,KAAK,UAAU,CAAC,iBAAiB;AACtE,IAAI;AACJ,IAAI,IAAI,OAAO,UAAU,CAAC,gBAAgB,KAAK,QAAQ;AACvD,QAAQ,OAAO,IAAI,CAAC,gBAAgB,KAAK,QAAQ;AACjD,QAAQ,IAAI,CAAC,gBAAgB,KAAK,UAAU,CAAC,gBAAgB,EAAE;AAC/D,QAAQ,OAAO,KAAK;AACpB,IAAI;AACJ,IAAI,QAAQ,qBAAqB,CAAC,UAAU,EAAE,UAAU,CAAC;AACzD,QAAQ,yBAAyB,CAAC,UAAU,EAAE,UAAU,CAAC;AACzD,QAAQ,0BAA0B,CAAC,UAAU,EAAE,UAAU,CAAC;AAC1D;AACA,SAAS,uBAAuB,CAAC,aAAa,EAAE,UAAU,EAAE,cAAc,EAAE,eAAe,EAAE;AAC7F,IAAI,MAAM,SAAS,GAAG,aAAa,CAAC,cAAc,CAAC;AACnD,IAAI,IAAI,SAAS;AACjB,QAAQ,CAAC,eAAe,CAAC,GAAG,CAAC,cAAc,CAAC;AAC5C,QAAQ,uBAAuB,CAAC,SAAS,EAAE,UAAU,CAAC,EAAE;AACxD,QAAQ,eAAe,CAAC,GAAG,CAAC,cAAc,CAAC;AAC3C,QAAQ,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,cAAc,EAAE;AAC3D,IAAI;AACJ,IAAI,MAAM,YAAY,GAAG,aAAa,CAAC,SAAS,CAAC,CAAC,SAAS,EAAE,KAAK,KAAK,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,uBAAuB,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;AACrJ,IAAI,IAAI,YAAY,GAAG,CAAC;AACxB,QAAQ,OAAO,IAAI;AACnB,IAAI,eAAe,CAAC,GAAG,CAAC,YAAY,CAAC;AACrC,IAAI,OAAO,EAAE,MAAM,EAAE,aAAa,CAAC,YAAY,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE;AACvE;AACA,SAAS,iCAAiC,CAAC,aAAa,EAAE,WAAW,EAAE;AACvE,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC;AACnC,QAAQ;AACR,IAAI,MAAM,eAAe,GAAG,IAAI,GAAG,EAAE;AACrC,IAAI,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,WAAW,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE;AAChE,QAAQ,MAAM,UAAU,GAAG,WAAW,CAAC,KAAK,CAAC;AAC7C,QAAQ,IAAI,CAAC,UAAU;AACvB,YAAY;AACZ,QAAQ,MAAM,KAAK,GAAG,uBAAuB,CAAC,aAAa,EAAE,UAAU,EAAE,KAAK,EAAE,eAAe,CAAC;AAChG,QAAQ,IAAI,CAAC,KAAK;AAClB,YAAY;AACZ,QAAQ,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM;AACvC,QAAQ,IAAI,OAAO,UAAU,CAAC,gBAAgB,KAAK,QAAQ,EAAE;AAC7D,YAAY,UAAU,CAAC,gBAAgB,GAAG,UAAU,CAAC,gBAAgB;AACrE,QAAQ;AACR,QAAQ,IAAI,OAAO,UAAU,CAAC,iBAAiB,KAAK,QAAQ,EAAE;AAC9D,YAAY,UAAU,CAAC,iBAAiB,GAAG,UAAU,CAAC,iBAAiB;AACvE,QAAQ;AACR,QAAQ,IAAI,OAAO,UAAU,CAAC,MAAM,KAAK,QAAQ;AACjD,YAAY,UAAU,CAAC,MAAM,GAAG,UAAU,CAAC,MAAM;AACjD,QAAQ,IAAI,OAAO,UAAU,CAAC,OAAO,KAAK,QAAQ;AAClD,YAAY,UAAU,CAAC,OAAO,GAAG,UAAU,CAAC,OAAO;AACnD,QAAQ,IAAI,OAAO,UAAU,CAAC,QAAQ,KAAK,QAAQ;AACnD,YAAY,UAAU,CAAC,QAAQ,GAAG,UAAU,CAAC,QAAQ;AACrD,QAAQ,IAAI,OAAO,UAAU,CAAC,aAAa,KAAK,QAAQ,EAAE;AAC1D,YAAY,UAAU,CAAC,aAAa,GAAG,UAAU,CAAC,aAAa;AAC/D,QAAQ;AACR,QAAQ,IAAI,UAAU,CAAC,cAAc,KAAK,SAAS,EAAE;AACrD,YAAY,UAAU,CAAC,cAAc,GAAG,UAAU,CAAC,cAAc;AACjE,QAAQ;AACR,QAAQ,IAAI,OAAO,UAAU,CAAC,mBAAmB,KAAK,QAAQ,EAAE;AAChE,YAAY,UAAU,CAAC,mBAAmB,GAAG,UAAU,CAAC,mBAAmB;AAC3E,QAAQ;AACR,QAAQ,IAAI,OAAO,UAAU,CAAC,WAAW,KAAK,SAAS,EAAE;AACzD,YAAY,UAAU,CAAC,WAAW,GAAG,UAAU,CAAC,WAAW;AAC3D,QAAQ;AACR,QAAQ,IAAI,OAAO,UAAU,CAAC,UAAU,KAAK,SAAS,EAAE;AACxD,YAAY,UAAU,CAAC,UAAU,GAAG,UAAU,CAAC,UAAU;AACzD,QAAQ;AACR,QAAQ,IAAI,OAAO,UAAU,CAAC,aAAa,KAAK,SAAS,EAAE;AAC3D,YAAY,UAAU,CAAC,aAAa,GAAG,UAAU,CAAC,aAAa;AAC/D,QAAQ;AACR,QAAQ,IAAI,OAAO,UAAU,CAAC,YAAY,KAAK,SAAS,EAAE;AAC1D,YAAY,UAAU,CAAC,YAAY,GAAG,UAAU,CAAC,YAAY;AAC7D,QAAQ;AACR,QAAQ,IAAI,OAAO,UAAU,CAAC,kBAAkB,KAAK,SAAS,EAAE;AAChE,YAAY,UAAU,CAAC,kBAAkB,GAAG,UAAU,CAAC,kBAAkB;AACzE,QAAQ;AACR,QAAQ,IAAI,OAAO,UAAU,CAAC,WAAW,KAAK,QAAQ,EAAE;AACxD,YAAY,UAAU,CAAC,WAAW,GAAG,UAAU,CAAC,WAAW;AAC3D,QAAQ;AACR,QAAQ,IAAI,OAAO,UAAU,CAAC,WAAW,KAAK,QAAQ,EAAE;AACxD,YAAY,UAAU,CAAC,WAAW,GAAG,UAAU,CAAC,WAAW;AAC3D,QAAQ;AACR,QAAQ,IAAI,OAAO,UAAU,CAAC,UAAU,KAAK,QAAQ,EAAE;AACvD,YAAY,UAAU,CAAC,UAAU,GAAG,UAAU,CAAC,UAAU;AACzD,QAAQ;AACR,QAAQ,IAAI,OAAO,UAAU,CAAC,KAAK,KAAK,SAAS,EAAE;AACnD,YAAY,UAAU,CAAC,KAAK,GAAG,UAAU,CAAC,KAAK;AAC/C,QAAQ;AACR,QAAQ,IAAI,OAAO,UAAU,CAAC,KAAK,KAAK,SAAS,EAAE;AACnD,YAAY,UAAU,CAAC,KAAK,GAAG,UAAU,CAAC,KAAK;AAC/C,QAAQ;AACR,QAAQ,IAAI,UAAU,CAAC,UAAU,KAAK,IAAI;AAC1C,YAAY,UAAU,CAAC,UAAU,GAAG,IAAI;AACxC,QAAQ,IAAI,UAAU,CAAC,SAAS,KAAK,IAAI;AACzC,YAAY,UAAU,CAAC,SAAS,GAAG,IAAI;AACvC,QAAQ,IAAI,UAAU,CAAC,eAAe,KAAK,IAAI;AAC/C,YAAY,UAAU,CAAC,eAAe,GAAG,IAAI;AAC7C,QAAQ,IAAI,OAAO,UAAU,CAAC,YAAY,KAAK,QAAQ,EAAE;AACzD,YAAY,UAAU,CAAC,YAAY,GAAG,UAAU,CAAC,YAAY;AAC7D,QAAQ;AACR,QAAQ,IAAI,OAAO,UAAU,CAAC,cAAc,KAAK,QAAQ,EAAE;AAC3D,YAAY,UAAU,CAAC,cAAc,GAAG,UAAU,CAAC,cAAc;AACjE,QAAQ;AACR,QAAQ,IAAI,OAAO,UAAU,CAAC,mBAAmB,KAAK,QAAQ,EAAE;AAChE,YAAY,UAAU,CAAC,mBAAmB,GAAG,UAAU,CAAC,mBAAmB;AAC3E,QAAQ;AACR,QAAQ,IAAI,OAAO,UAAU,CAAC,cAAc,KAAK,QAAQ,EAAE;AAC3D,YAAY,UAAU,CAAC,cAAc,GAAG,UAAU,CAAC,cAAc;AACjE,QAAQ;AACR,QAAQ,IAAI,OAAO,UAAU,CAAC,gBAAgB,KAAK,SAAS,EAAE;AAC9D,YAAY,UAAU,CAAC,gBAAgB,GAAG,UAAU,CAAC,gBAAgB;AACrE,QAAQ;AACR,QAAQ,IAAI,OAAO,UAAU,CAAC,gBAAgB,KAAK,SAAS,EAAE;AAC9D,YAAY,UAAU,CAAC,gBAAgB,GAAG,UAAU,CAAC,gBAAgB;AACrE,QAAQ;AACR,QAAQ,IAAI,OAAO,UAAU,CAAC,oBAAoB,KAAK,SAAS,EAAE;AAClE,YAAY,UAAU,CAAC,oBAAoB,GAAG,UAAU,CAAC,oBAAoB;AAC7E,QAAQ;AACR,QAAQ,IAAI,OAAO,UAAU,CAAC,iBAAiB,KAAK,SAAS,EAAE;AAC/D,YAAY,UAAU,CAAC,iBAAiB,GAAG,UAAU,CAAC,iBAAiB;AACvE,QAAQ;AACR,QAAQ,IAAI,OAAO,UAAU,CAAC,qBAAqB,KAAK,SAAS,EAAE;AACnE,YAAY,UAAU,CAAC,qBAAqB,GAAG,UAAU,CAAC,qBAAqB;AAC/E,QAAQ;AACR,QAAQ,IAAI,OAAO,UAAU,CAAC,kBAAkB,KAAK,SAAS,EAAE;AAChE,YAAY,UAAU,CAAC,kBAAkB,GAAG,UAAU,CAAC,kBAAkB;AACzE,QAAQ;AACR,QAAQ,IAAI,OAAO,UAAU,CAAC,mBAAmB,KAAK,QAAQ,EAAE;AAChE,YAAY,UAAU,CAAC,mBAAmB,GAAG,UAAU,CAAC,mBAAmB;AAC3E,QAAQ;AACR,QAAQ,IAAI,UAAU,CAAC,eAAe,KAAK,SAAS,EAAE;AACtD,YAAY,UAAU,CAAC,eAAe,GAAG,UAAU,CAAC,eAAe;AACnE,QAAQ;AACR,IAAI;AACJ;AACA,SAASE,yBAAuB,CAAC,MAAM,EAAE;AACzC,IAAI,IAAI,CAAC,MAAM;AACf,QAAQ,OAAO,KAAK;AACpB,IAAI,MAAM,IAAI,GAAG,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,EAAE;AACjF,IAAI,IAAI,IAAI,KAAK,iBAAiB;AAClC,QAAQ,OAAO,IAAI;AACnB,IAAI,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM;AAChC,IAAI,QAAQ,OAAO,MAAM,KAAK,UAAU;AACxC,SAAS,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,iBAAiB,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;AAC1F;AACO,SAAS,SAAS,CAAC,KAAK,EAAE;AACjC,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AACtB,IAAI,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,eAAe,EAAE,cAAc,EAAE,GAAG,KAAK;AAC3E,IAAI,MAAM,YAAY,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,MAAM,EAAE,eAAe,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,MAAM,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;AAC9G,IAAI,MAAM,YAAY,GAAG,YAAY,IAAI,YAAY,CAAC,YAAY;AAClE,UAAU,YAAY,CAAC;AACvB,UAAU,OAAO,KAAK,CAAC,YAAY,KAAK;AACxC,cAAc,KAAK,CAAC;AACpB,cAAc,IAAI;AAClB,IAAI,MAAM,kBAAkB,GAAG,YAAY,IAAI,kBAAkB,CAAC,YAAY;AAC9E,UAAU,YAAY,CAAC;AACvB,UAAU,OAAO,KAAK,CAAC,kBAAkB,KAAK;AAC9C,cAAc,KAAK,CAAC;AACpB,cAAc,IAAI;AAClB,IAAI,IAAIA,yBAAuB,CAAC,YAAY,CAAC,EAAE;AAC/C,QAAQ,MAAM,CAAC,mBAAmB,EAAE;AACpC,IAAI;AACJ,IAAI,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,oBAAoB,CAAC;AACvD,IAAI,iCAAiC,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE,OAAO,CAAC,OAAO,CAAC;AAC3E,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;AACxC,QAAQ,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,KAAK,SAAS;AACxF,YAAY,CAAC,CAAC,UAAU,KAAK,IAAI;AACjC,YAAY,CAAC,CAAC,SAAS,KAAK,IAAI;AAChC,YAAY,CAAC,CAAC,eAAe,KAAK,IAAI,CAAC;AACvC,IAAI;AACJ,IAAI,OAAO,CAAC,YAAY,GAAG;AAC3B,QAAQ,YAAY;AACpB,QAAQ,eAAe;AACvB,QAAQ,cAAc;AACtB,QAAQ,oBAAoB,EAAE,CAAC,EAAE,GAAG,KAAK,CAAC,oBAAoB,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,IAAI;AACrG,QAAQ,gBAAgB,EAAE,YAAY,KAAK,IAAI,GAAG,MAAM,GAAG,kBAAkB,KAAK,IAAI,GAAG,YAAY,GAAG,IAAI;AAC5G,KAAK;AACL,IAAI,MAAM,iBAAiB,GAAG,8BAA8B,CAAC,CAAC,EAAE,GAAG,KAAK,CAAC,iBAAiB,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,2BAA2B,CAAC;AACzJ,IAAI,IAAI,qBAAqB,CAAC,iBAAiB,CAAC,EAAE;AAClD,QAAQ,OAAO,CAAC,YAAY,CAAC,iBAAiB,GAAG,iBAAiB;AAClE,IAAI;AACJ,IAAI,IAAI,YAAY,KAAK,IAAI;AAC7B,QAAQ,OAAO,CAAC,YAAY,CAAC,YAAY,GAAG,YAAY;AACxD,IAAI,IAAI,kBAAkB,KAAK,IAAI,EAAE;AACrC,QAAQ,OAAO,CAAC,YAAY,CAAC,kBAAkB,GAAG,kBAAkB;AACpE,IAAI;AACJ,IAAI,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;AAClC;AACO,eAAe,aAAa,CAAC,KAAK,EAAE;AAC3C,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AAClC,IAAI,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,aAAa,EAAE,aAAa,EAAE,GAAG,KAAK;AACtE,IAAI,MAAM,iBAAiB,GAAG,CAAC,EAAE,GAAG,KAAK,CAAC,iBAAiB,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,QAAQ;AACtG,IAAI,MAAM,eAAe,GAAG,iBAAiB,KAAK,QAAQ;AAC1D,IAAI,IAAI,UAAU;AAClB,IAAI,IAAI;AACR,QAAQ,UAAU;AAClB,YAAY,OAAO,aAAa,KAAK,QAAQ,GAAG,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC;AAC7F,IAAI;AACJ,IAAI,OAAO,KAAK,EAAE;AAClB,QAAQ,MAAM,IAAI,iBAAiB,CAAC,4CAA4C,EAAE,KAAK,CAAC;AACxF,IAAI;AACJ,IAAI,IAAI,eAAe,EAAE;AACzB,QAAQ,6BAA6B,CAAC,UAAU,EAAE,CAAC,EAAE,GAAG,KAAK,CAAC,gBAAgB,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,0BAA0B,CAAC;AAC5I,IAAI;AACJ,IAAI,IAAI,IAAI;AACZ,IAAI,IAAI;AACR,QAAQ,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC;AACrC,IAAI;AACJ,IAAI,OAAO,KAAK,EAAE;AAClB,QAAQ,MAAM,IAAI,iBAAiB,CAAC,4CAA4C,EAAE,KAAK,CAAC;AACxF,IAAI;AACJ,IAAI,IAAI,eAAe,EAAE;AACzB,QAAQ,sBAAsB,CAAC,IAAI,EAAE;AACrC,YAAY,kBAAkB,EAAE,CAAC,EAAE,GAAG,KAAK,CAAC,kBAAkB,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,4BAA4B;AAC7H,SAAS,CAAC;AACV,IAAI;AACJ,IAAI,IAAI,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ;AACtC,QAAQ,IAAI,CAAC,KAAK,GAAG,CAAC;AACtB,QAAQ,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ;AACvC,QAAQ,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;AACzB,QAAQ,+BAA+B,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,GAAG,KAAK,CAAC,eAAe,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,iCAAiC,EAAE;AAClK,eAAe,CAAC,EAAE,GAAG,KAAK,CAAC,yBAAyB,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,oCAAoC;AAC3H,cAAc,IAAI,CAAC;AACnB,QAAQ,aAAa,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC;AAC9C,IAAI;AACJ,IAAI,MAAM,mBAAmB,GAAG,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC;AACzD,IAAI,IAAI;AACR,QAAQ,MAAM,WAAW,CAAC,mBAAmB,EAAE,gCAAgC,EAAE,qBAAqB,CAAC;AACvG,IAAI;AACJ,IAAI,OAAO,KAAK,EAAE;AAClB,QAAQ,IAAI,KAAK,YAAY,qBAAqB,EAAE;AACpD,YAAY,MAAM,IAAI,iBAAiB,CAAC,4EAA4E,EAAE,KAAK,CAAC;AAC5H,QAAQ;AACR,QAAQ,MAAM,KAAK;AACnB,IAAI;AACJ,IAAI,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,EAAE;AACvC,IAAI,gCAAgC,CAAC,OAAO,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC,OAAO,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,EAAE,CAAC;AACtG,IAAI,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,IAAI,OAAO,IAAI,CAAC,YAAY,KAAK;AAC1E,UAAU;AACV,YAAY,YAAY,EAAE,OAAO,IAAI,CAAC,YAAY,CAAC,YAAY,KAAK;AACpE,kBAAkB,IAAI,CAAC,YAAY,CAAC;AACpC,kBAAkB,CAAC;AACnB,YAAY,eAAe,EAAE,OAAO,IAAI,CAAC,YAAY,CAAC,eAAe,KAAK;AAC1E,kBAAkB,IAAI,CAAC,YAAY,CAAC;AACpC,kBAAkB,CAAC;AACnB,YAAY,cAAc,EAAE,OAAO,IAAI,CAAC,YAAY,CAAC,cAAc,KAAK;AACxE,kBAAkB,IAAI,CAAC,YAAY,CAAC;AACpC,kBAAkB,CAAC;AACnB;AACA,UAAU,IAAI;AACd,IAAI,IAAI,WAAW,IAAI,IAAI,CAAC,YAAY,IAAI,OAAO,IAAI,CAAC,YAAY,CAAC,YAAY,KAAK,QAAQ,EAAE;AAChG,QAAQ,WAAW,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,YAAY;AACjE,IAAI;AACJ,IAAI,IAAI,WAAW;AACnB,QAAQ,IAAI,CAAC,YAAY;AACzB,QAAQ,OAAO,IAAI,CAAC,YAAY,CAAC,kBAAkB,KAAK,QAAQ,EAAE;AAClE,QAAQ,WAAW,CAAC,kBAAkB,GAAG,IAAI,CAAC,YAAY,CAAC,kBAAkB;AAC7E,IAAI;AACJ,IAAI,IAAI,WAAW,IAAI,IAAI,CAAC,YAAY,IAAI,kBAAkB,IAAI,IAAI,CAAC,YAAY,EAAE;AACrF,QAAQ,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,gBAAgB;AACvD,QAAQ,WAAW,CAAC,gBAAgB;AACpC,YAAY,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,YAAY,IAAI,IAAI,KAAK,IAAI,GAAG,IAAI,GAAG,IAAI;AACnF,IAAI;AACJ,IAAI,IAAI,WAAW,IAAI,IAAI,CAAC,YAAY,IAAI,sBAAsB,IAAI,IAAI,CAAC,YAAY,EAAE;AACzF,QAAQ,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,oBAAoB;AAC/D,QAAQ,WAAW,CAAC,oBAAoB;AACxC,YAAY,QAAQ,KAAK,YAAY,IAAI,QAAQ,KAAK,WAAW,IAAI,QAAQ,KAAK;AAClF,kBAAkB;AAClB,kBAAkB,IAAI;AACtB,IAAI;AACJ,IAAI,IAAI,WAAW,IAAI,IAAI,CAAC,YAAY,IAAI,mBAAmB,IAAI,IAAI,CAAC,YAAY,EAAE;AACtF,QAAQ,WAAW,CAAC,iBAAiB,GAAG,kCAAkC,CAAC,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC;AAC/G,IAAI;AACJ,IAAI,MAAM,SAAS,GAAG;AACtB,SAAS,MAAM,CAAC,YAAY;AAC5B,SAAS,MAAM,CAAC,CAAC,GAAG,EAAE,UAAU,KAAK,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AACzE,IAAI,MAAM,eAAe,GAAG;AAC5B,SAAS,MAAM,CAAC,kBAAkB;AAClC,SAAS,MAAM,CAAC,CAAC,GAAG,EAAE,gBAAgB,KAAK,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,gBAAgB,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;AAC3F,IAAI,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC;AAC9C,IAAI,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,kBAAkB,CAAC;AAC1D,IAAI,MAAM,aAAa,GAAG,CAAC,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,IAAI;AACtG,IAAI,OAAO;AACX,QAAQ,WAAW;AACnB,QAAQ,SAAS;AACjB,QAAQ,eAAe;AACvB,QAAQ,aAAa;AACrB,QAAQ,OAAO;AACf,QAAQ,KAAK;AACb,QAAQ,WAAW;AACnB,QAAQ,UAAU;AAClB,KAAK;AACL;AACA,SAAS,+BAA+B,CAAC,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,kBAAkB,EAAE;AAC7F,IAAI,MAAM,mBAAmB,GAAG,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,eAAe,GAAG;AACtF,UAAU,IAAI,CAAC,KAAK,CAAC,eAAe;AACpC,UAAU,iCAAiC;AAC3C,IAAI,MAAM,sBAAsB,GAAG,kBAAkB,KAAK,IAAI,IAAI,MAAM,CAAC,QAAQ,CAAC,kBAAkB,CAAC,IAAI,kBAAkB,GAAG;AAC9H,UAAU,IAAI,CAAC,KAAK,CAAC,kBAAkB;AACvC,UAAU,IAAI;AACd,IAAI,IAAI,sBAAsB,KAAK,IAAI;AACvC,SAAS,KAAK,GAAG,sBAAsB,IAAI,MAAM,GAAG,sBAAsB,CAAC,EAAE;AAC7E,QAAQ,MAAM,IAAI,iBAAiB,CAAC,CAAC,oCAAoC,EAAE,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,oCAAoC,EAAE,sBAAsB,CAAC,EAAE,CAAC,CAAC;AAC5J,IAAI;AACJ,IAAI,MAAM,UAAU,GAAG,KAAK,GAAG,MAAM;AACrC,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,UAAU,GAAG,mBAAmB,EAAE;AAC1E,QAAQ,MAAM,IAAI,iBAAiB,CAAC,CAAC,oCAAoC,EAAE,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,0BAA0B,EAAE,mBAAmB,CAAC,EAAE,CAAC,CAAC;AAC/I,IAAI;AACJ;AACA,SAASC,mBAAiB,CAAC,KAAK,EAAE;AAClC,IAAI,IAAI,OAAO,WAAW,KAAK,UAAU,EAAE;AAC3C,QAAQ,OAAO,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,UAAU;AACzD,IAAI;AACJ,IAAI,OAAO,KAAK,CAAC,MAAM;AACvB;AACA,SAAS,sBAAsB,CAAC,KAAK,EAAE,QAAQ,EAAE;AACjD,IAAI,OAAO,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,QAAQ;AAC7E;AACA,SAAS,6BAA6B,CAAC,UAAU,EAAE,gBAAgB,EAAE;AACrE,IAAI,MAAM,oBAAoB,GAAG,sBAAsB,CAAC,gBAAgB,EAAE,0BAA0B,CAAC;AACrG,IAAI,IAAI,UAAU,CAAC,MAAM,GAAG,oBAAoB,EAAE;AAClD,QAAQ,MAAM,IAAI,iBAAiB,CAAC,CAAC,4DAA4D,EAAE,oBAAoB,CAAC,EAAE,CAAC,CAAC;AAC5H,IAAI;AACJ,IAAI,MAAM,kBAAkB,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC;AACpD,IAAI,IAAI,kBAAkB,IAAI,oBAAoB;AAClD,QAAQ;AACR,IAAI,MAAM,UAAU,GAAGA,mBAAiB,CAAC,UAAU,CAAC;AACpD,IAAI,IAAI,UAAU,GAAG,oBAAoB,EAAE;AAC3C,QAAQ,MAAM,IAAI,iBAAiB,CAAC,CAAC,kCAAkC,EAAE,UAAU,CAAC,iCAAiC,EAAE,oBAAoB,CAAC,EAAE,CAAC,CAAC;AAChJ,IAAI;AACJ;AACA,SAAS,sBAAsB,CAAC,IAAI,EAAE,OAAO,EAAE;AAC/C,IAAI,IAAI,EAAE;AACV,IAAI,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;AACpE,QAAQ,MAAM,IAAI,iBAAiB,CAAC,mDAAmD,CAAC;AACxF,IAAI;AACJ,IAAI,MAAM,OAAO,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,OAAO,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,EAAE;AAC3E,IAAI,MAAM,sBAAsB,GAAG,sBAAsB,CAAC,OAAO,CAAC,kBAAkB,EAAE,4BAA4B,CAAC;AACnH,IAAI,IAAI,OAAO,CAAC,MAAM,GAAG,sBAAsB,EAAE;AACjD,QAAQ,MAAM,IAAI,iBAAiB,CAAC,CAAC,iCAAiC,EAAE,OAAO,CAAC,MAAM,CAAC,wCAAwC,EAAE,sBAAsB,CAAC,EAAE,CAAC,CAAC;AAC5J,IAAI;AACJ,IAAI,MAAM,OAAO,GAAG;AACpB,QAAQ,kBAAkB,EAAE,sBAAsB;AAClD,QAAQ,WAAW,EAAE,CAAC;AACtB,QAAQ,IAAI,EAAE,IAAI,OAAO,EAAE;AAC3B,QAAQ,oBAAoB,EAAE,IAAI,OAAO,EAAE;AAC3C,KAAK;AACL,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,KAAK,KAAK,2BAA2B,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE;AAChG,QAAQ,oBAAoB,EAAE,IAAI;AAClC,QAAQ,0BAA0B,EAAE,IAAI;AACxC,QAAQ,4BAA4B,EAAE,KAAK;AAC3C,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;AACnB,IAAI,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;AACrD,QAAQ,IAAI,GAAG,KAAK,SAAS;AAC7B,YAAY;AACZ,QAAQ,2BAA2B,CAAC,KAAK,EAAE,GAAG,EAAE;AAChD,YAAY,oBAAoB,EAAE,iCAAiC,CAAC,GAAG,CAAC,GAAG,CAAC;AAC5E,YAAY,0BAA0B,EAAE,KAAK;AAC7C,YAAY,4BAA4B,EAAE,uCAAuC,CAAC,GAAG,CAAC,GAAG,CAAC;AAC1F,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC;AACtB,IAAI;AACJ;AACA,SAAS,2BAA2B,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE;AAC3E,IAAI,IAAI,KAAK,GAAG,wCAAwC,EAAE;AAC1D,QAAQ,MAAM,IAAI,iBAAiB,CAAC,CAAC,+BAA+B,EAAE,IAAI,CAAC,mCAAmC,EAAE,wCAAwC,CAAC,EAAE,CAAC,CAAC;AAC7J,IAAI;AACJ,IAAI,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;AAC3C,QAAQ;AACR,IAAI,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;AAC/C,IAAI,IAAI,CAAC,WAAW;AACpB,QAAQ,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;AAC/B,IAAI,IAAI,OAAO,CAAC,oBAAoB,EAAE;AACtC,QAAQ,yCAAyC,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC,0BAA0B,EAAE,OAAO,CAAC;AAC3G,IAAI;AACJ,IAAI,IAAI,WAAW;AACnB,QAAQ;AACR,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AAC9B,QAAQ,KAAK,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,UAAU,KAAK,2BAA2B,CAAC,KAAK,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE;AAC1G,YAAY,oBAAoB,EAAE,OAAO,CAAC,4BAA4B;AACtE,YAAY,0BAA0B,EAAE,KAAK;AAC7C,YAAY,4BAA4B,EAAE,KAAK;AAC/C,SAAS,EAAE,OAAO,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;AAC/B,QAAQ;AACR,IAAI;AACJ,IAAI,KAAK,MAAM,CAAC,GAAG,EAAE,WAAW,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AAC5D,QAAQ,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,GAAG;AACxD,QAAQ,IAAI,OAAO,WAAW,KAAK,QAAQ;AAC3C,YAAY,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE;AACrC,YAAY,6BAA6B,CAAC,GAAG,CAAC;AAC9C,YAAY,CAAC,uBAAuB,CAAC,WAAW,CAAC,EAAE;AACnD,YAAY,MAAM,IAAI,iBAAiB,CAAC,CAAC,+BAA+B,EAAE,UAAU,CAAC,uCAAuC,CAAC,CAAC;AAC9H,QAAQ;AACR,QAAQ,2BAA2B,CAAC,WAAW,EAAE,UAAU,EAAE;AAC7D,YAAY,oBAAoB,EAAE,6CAA6C,CAAC,GAAG,EAAE,WAAW,CAAC;AACjG,YAAY,0BAA0B,EAAE,KAAK;AAC7C,YAAY,4BAA4B,EAAE,uCAAuC,CAAC,GAAG,CAAC,GAAG,CAAC;AAC1F,SAAS,EAAE,OAAO,EAAE,KAAK,GAAG,CAAC,CAAC;AAC9B,IAAI;AACJ;AACA,SAAS,yCAAyC,CAAC,KAAK,EAAE,IAAI,EAAE,0BAA0B,EAAE,OAAO,EAAE;AACrG,IAAI,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AACrE,QAAQ,MAAM,IAAI,iBAAiB,CAAC,CAAC,+BAA+B,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;AAC1F,IAAI;AACJ,IAAI,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;AAClD,QAAQ,OAAO,CAAC,oBAAoB,CAAC,GAAG,CAAC,KAAK,CAAC;AAC/C,QAAQ,OAAO,CAAC,WAAW,IAAI,CAAC;AAChC,QAAQ,IAAI,OAAO,CAAC,WAAW,GAAG,OAAO,CAAC,kBAAkB,EAAE;AAC9D,YAAY,MAAM,IAAI,iBAAiB,CAAC,CAAC,2CAA2C,EAAE,OAAO,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,CAAC;AACnI,QAAQ;AACR,IAAI;AACJ,IAAI,MAAM,MAAM,GAAG,KAAK;AACxB,IAAI,MAAM,IAAI,GAAG,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,EAAE;AACjF,IAAI,IAAI,IAAI,IAAI,mCAAmC,CAAC,GAAG,CAAC,IAAI,CAAC;AAC7D,QAAQ;AACR,IAAI,IAAI,0BAA0B,IAAI,2CAA2C,CAAC,MAAM,CAAC;AACzF,QAAQ;AACR,IAAI,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,MAAM;AACnD,IAAI,IAAI,CAAC,IAAI,EAAE;AACf,QAAQ,MAAM,IAAI,iBAAiB,CAAC,CAAC,+BAA+B,EAAE,QAAQ,CAAC,kCAAkC,CAAC,CAAC;AACnH,IAAI;AACJ,IAAI,MAAM,IAAI,iBAAiB,CAAC,CAAC,+BAA+B,EAAE,QAAQ,CAAC,+BAA+B,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;AACpI;AACA,SAAS,6CAA6C,CAAC,GAAG,EAAE,KAAK,EAAE;AACnE,IAAI,IAAI,iCAAiC,CAAC,GAAG,CAAC,GAAG,CAAC;AAClD,QAAQ,OAAO,IAAI;AACnB,IAAI,OAAO,6BAA6B,CAAC,GAAG,CAAC,IAAI,mBAAmB,CAAC,KAAK,CAAC;AAC3E;AACA,SAAS,mBAAmB,CAAC,KAAK,EAAE;AACpC,IAAI,QAAQ,CAAC,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ;AAClF;AACA,SAAS,2CAA2C,CAAC,KAAK,EAAE;AAC5D,IAAI,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;AAC5B,QAAQ,OAAO,KAAK;AACpB,IAAI,MAAM,SAAS,GAAG,KAAK;AAC3B,IAAI,MAAM,eAAe,GAAG,OAAO,SAAS,CAAC,MAAM,KAAK,QAAQ,GAAG,CAAC,KAAK,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC,GAAG,IAAI;AACpG,IAAI,QAAQ,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC;AAC9C,QAAQ,OAAO,SAAS,CAAC,MAAM,KAAK,QAAQ;AAC5C,QAAQ,SAAS,CAAC,MAAM,GAAG,CAAC;AAC5B,QAAQ,OAAO,SAAS,CAAC,OAAO,KAAK,QAAQ;AAC7C,QAAQ,SAAS,CAAC,OAAO,KAAK,eAAe;AAC7C,QAAQ,OAAO,SAAS,CAAC,QAAQ,KAAK,QAAQ;AAC9C,QAAQ,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE;AACxC,QAAQ,OAAO,SAAS,CAAC,aAAa,KAAK,QAAQ;AACnD,QAAQ,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,aAAa,CAAC;AAChD;AACA,SAAS,6BAA6B,CAAC,GAAG,EAAE;AAC5C,IAAI,MAAM,UAAU,GAAG,GAAG,CAAC,WAAW,EAAE;AACxC,IAAI,QAAQ,gCAAgC,CAAC,GAAG,CAAC,UAAU,CAAC;AAC5D,QAAQ,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC;AAClC,QAAQ,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC;AACrC;AACA,SAAS,gCAAgC,CAAC,UAAU,EAAE,QAAQ,EAAE;AAChE,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AACtB,IAAI,MAAM,uBAAuB,GAAG,IAAI,GAAG,EAAE;AAC7C,IAAI,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,KAAK;AACtC,QAAQ,IAAI,IAAI,CAAC,gBAAgB,KAAK,WAAW;AACjD,YAAY,IAAI,CAAC,gBAAgB,KAAK,YAAY;AAClD,YAAY,IAAI,CAAC,gBAAgB,KAAK,SAAS,EAAE;AACjD,YAAY;AACZ,QAAQ;AACR,QAAQ,MAAM,KAAK,GAAG,uBAAuB,CAAC,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE,uBAAuB,CAAC;AAC/F,QAAQ,MAAM,SAAS,GAAG,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC,MAAM;AACpF,QAAQ,IAAI,CAAC,SAAS;AACtB,YAAY;AACZ,QAAQ,IAAI,IAAI,CAAC,gBAAgB,KAAK,WAAW,EAAE;AACnD,YAAY,mBAAmB,CAAC,SAAS,CAAC;AAC1C,YAAY;AACZ,QAAQ;AACR,QAAQ,IAAI,IAAI,CAAC,gBAAgB,KAAK,YAAY;AAClD,YAAY,OAAO,IAAI,CAAC,YAAY,KAAK,QAAQ;AACjD,YAAY,OAAO,IAAI,CAAC,cAAc,KAAK,QAAQ;AACnD,YAAY,OAAO,IAAI,CAAC,cAAc,KAAK,QAAQ,EAAE;AACrD,YAAY,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,KAAK;AAC3D,kBAAkB;AAClB,kBAAkB,IAAI,CAAC,cAAc,KAAK;AAC1C,sBAAsB;AACtB,sBAAsB,MAAM;AAC5B,YAAY,MAAM,mBAAmB,GAAG,IAAI,CAAC,mBAAmB,KAAK,MAAM,IAAI,IAAI,CAAC,mBAAmB,KAAK;AAC5G,kBAAkB,IAAI,CAAC;AACvB,kBAAkB,MAAM;AACxB,YAAY,oBAAoB,CAAC,SAAS,EAAE;AAC5C,gBAAgB,YAAY,EAAE,IAAI,CAAC,YAAY;AAC/C,gBAAgB,cAAc;AAC9B,gBAAgB,cAAc,EAAE,IAAI,CAAC,cAAc;AACnD,gBAAgB,gBAAgB,EAAE,OAAO,IAAI,CAAC,gBAAgB,KAAK,SAAS,GAAG,IAAI,CAAC,gBAAgB,GAAG,KAAK;AAC5G,gBAAgB,gBAAgB,EAAE,OAAO,IAAI,CAAC,gBAAgB,KAAK,SAAS,GAAG,IAAI,CAAC,gBAAgB,GAAG,KAAK;AAC5G,gBAAgB,oBAAoB,EAAE,OAAO,IAAI,CAAC,oBAAoB,KAAK;AAC3E,sBAAsB,IAAI,CAAC;AAC3B,sBAAsB,SAAS;AAC/B,gBAAgB,iBAAiB,EAAE,OAAO,IAAI,CAAC,iBAAiB,KAAK;AACrE,sBAAsB,IAAI,CAAC;AAC3B,sBAAsB,SAAS;AAC/B,gBAAgB,qBAAqB,EAAE,OAAO,IAAI,CAAC,qBAAqB,KAAK;AAC7E,sBAAsB,IAAI,CAAC;AAC3B,sBAAsB,SAAS;AAC/B,gBAAgB,kBAAkB,EAAE,OAAO,IAAI,CAAC,kBAAkB,KAAK;AACvE,sBAAsB,IAAI,CAAC;AAC3B,sBAAsB,SAAS;AAC/B,gBAAgB,mBAAmB,EAAE,cAAc,KAAK,OAAO,GAAG,mBAAmB,GAAG,SAAS;AACjG,aAAa,CAAC;AACd,YAAY,IAAI,OAAO,IAAI,CAAC,mBAAmB,KAAK,QAAQ,EAAE;AAC9D,gBAAgB,SAAS,CAAC,mBAAmB;AAC7C,oBAAoB,IAAI,CAAC,mBAAmB;AAC5C,YAAY;AACZ,YAAY,IAAI,IAAI,CAAC,eAAe,KAAK,SAAS,EAAE;AACpD,gBAAgB,SAAS,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe;AAChE,YAAY;AACZ,YAAY;AACZ,QAAQ;AACR,QAAQ,IAAI,IAAI,CAAC,gBAAgB,KAAK,SAAS,IAAI,OAAO,IAAI,CAAC,iBAAiB,KAAK,QAAQ,EAAE;AAC/F,YAAY,SAAS,CAAC,gBAAgB,GAAG,SAAS;AAClD,YAAY,SAAS,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB;AAChE,QAAQ;AACR,IAAI,CAAC,CAAC;AACN,IAAI,MAAM,qBAAqB,GAAG,IAAI,GAAG,EAAE;AAC3C,IAAI,MAAM,sBAAsB,GAAG,IAAI,GAAG,EAAE;AAC5C,IAAI,UAAU,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,KAAK,KAAK;AAC7C,QAAQ,MAAM,OAAO,GAAG,SAAS,CAAC,OAAO;AACzC,QAAQ,IAAI,OAAO,OAAO,KAAK,QAAQ;AACvC,YAAY;AACZ,QAAQ,MAAM,OAAO,GAAG,sBAAsB,CAAC,GAAG,CAAC,OAAO,CAAC;AAC3D,QAAQ,IAAI,OAAO,EAAE;AACrB,YAAY,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;AAC/B,QAAQ;AACR,aAAa;AACb,YAAY,sBAAsB,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC;AACxD,QAAQ;AACR,IAAI,CAAC,CAAC;AACN,IAAI,MAAM,yBAAyB,GAAG,CAAC,OAAO,KAAK;AACnD,QAAQ,IAAI,CAAC,OAAO;AACpB,YAAY,OAAO,EAAE;AACrB,QAAQ,OAAO,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;AACnC,YAAY,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,EAAE;AACzC,YAAY,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,KAAK,CAAC;AACjD,gBAAgB,OAAO,KAAK;AAC5B,QAAQ;AACR,QAAQ,OAAO,EAAE;AACjB,IAAI,CAAC;AACL,IAAI,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE;AACjC,QAAQ,IAAI,IAAI,CAAC,gBAAgB,KAAK,MAAM,IAAI,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ;AAC/E,YAAY;AACZ,QAAQ,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,EAAE,CAAC;AAClF,QAAQ,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,CAAC,CAAC;AACjF,QAAQ,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,CAAC,CAAC;AAC/E,QAAQ,MAAM,IAAI,GAAG,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI;AAC3E,QAAQ,IAAI,UAAU,GAAG,EAAE;AAC3B,QAAQ,IAAI,IAAI,EAAE;AAClB,YAAY,UAAU,GAAG,yBAAyB,CAAC,sBAAsB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACpF,QAAQ;AACR,QAAQ,IAAI,UAAU,GAAG,CAAC,EAAE;AAC5B,YAAY,UAAU,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK;AAC5D,gBAAgB,IAAI,EAAE,EAAE,EAAE;AAC1B,gBAAgB,IAAI,qBAAqB,CAAC,GAAG,CAAC,KAAK,CAAC;AACpD,oBAAoB,OAAO,KAAK;AAChC,gBAAgB,IAAI,KAAK,IAAI,CAAC,CAAC,IAAI,KAAK,KAAK;AAC7C,oBAAoB,OAAO,KAAK;AAChC,gBAAgB,QAAQ,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,CAAC,IAAI,KAAK,CAAC,GAAG,GAAG;AAClG,oBAAoB,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,GAAG;AAC5F,oBAAoB,0BAA0B,CAAC,CAAC,EAAE,IAAI,CAAC;AACvD,YAAY,CAAC,CAAC;AACd,QAAQ;AACR,QAAQ,IAAI,UAAU,GAAG,CAAC;AAC1B,YAAY;AACZ,QAAQ,qBAAqB,CAAC,GAAG,CAAC,UAAU,CAAC;AAC7C,QAAQ,MAAM,KAAK,GAAG,UAAU,CAAC,UAAU,CAAC;AAC5C,QAAQ,MAAM,UAAU,GAAG,KAAK;AAChC,QAAQ,MAAM,cAAc,GAAG,gBAAgB,IAAI;AACnD,cAAc,IAAI,CAAC;AACnB,cAAc,SAAS;AACvB,QAAQ,cAAc,CAAC,UAAU,EAAE;AACnC,YAAY,MAAM,EAAE,IAAI,CAAC,MAAM;AAC/B,YAAY,OAAO,EAAE,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ,GAAG,IAAI,CAAC,OAAO,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;AAC5F,YAAY,QAAQ,EAAE,OAAO,IAAI,CAAC,QAAQ,KAAK,QAAQ,GAAG,IAAI,CAAC,QAAQ,GAAG,EAAE;AAC5E,YAAY,aAAa,EAAE,OAAO,IAAI,CAAC,aAAa,KAAK;AACzD,kBAAkB,IAAI,CAAC;AACvB,mBAAmB,CAAC,EAAE,GAAG,UAAU,CAAC,OAAO,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,GAAG,CAAC;AAClF,YAAY,cAAc;AAC1B,YAAY,mBAAmB,EAAE,OAAO,IAAI,CAAC,mBAAmB,KAAK,QAAQ,GAAG,IAAI,CAAC,mBAAmB,GAAG,SAAS;AACpH,SAAS,CAAC;AACV,QAAQ,IAAI,gBAAgB,IAAI,IAAI,EAAE;AACtC,YAAY,UAAU,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc;AAC3D,QAAQ;AACR,QAAQ,IAAI,OAAO,IAAI,CAAC,mBAAmB,KAAK,QAAQ,EAAE;AAC1D,YAAY,UAAU,CAAC,mBAAmB,GAAG,IAAI,CAAC,mBAAmB;AACrE,QAAQ;AACR,QAAQ,IAAI,OAAO,IAAI,CAAC,WAAW,KAAK,SAAS,EAAE;AACnD,YAAY,UAAU,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW;AACrD,QAAQ;AACR,QAAQ,IAAI,OAAO,IAAI,CAAC,UAAU,KAAK,SAAS,EAAE;AAClD,YAAY,UAAU,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU;AACnD,QAAQ;AACR,QAAQ,IAAI,OAAO,IAAI,CAAC,aAAa,KAAK,SAAS,EAAE;AACrD,YAAY,UAAU,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa;AACzD,QAAQ;AACR,QAAQ,IAAI,OAAO,IAAI,CAAC,YAAY,KAAK,SAAS,EAAE;AACpD,YAAY,UAAU,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY;AACvD,QAAQ;AACR,QAAQ,IAAI,OAAO,IAAI,CAAC,kBAAkB,KAAK,SAAS,EAAE;AAC1D,YAAY,UAAU,CAAC,kBAAkB,GAAG,IAAI,CAAC,kBAAkB;AACnE,QAAQ;AACR,QAAQ,IAAI,OAAO,IAAI,CAAC,WAAW,KAAK,QAAQ,EAAE;AAClD,YAAY,UAAU,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW;AACrD,QAAQ;AACR,QAAQ,IAAI,OAAO,IAAI,CAAC,WAAW,KAAK,QAAQ,EAAE;AAClD,YAAY,UAAU,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW;AACrD,QAAQ;AACR,QAAQ,IAAI,OAAO,IAAI,CAAC,UAAU,KAAK,QAAQ,EAAE;AACjD,YAAY,UAAU,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU;AACnD,QAAQ;AACR,QAAQ,IAAI,OAAO,IAAI,CAAC,mBAAmB,KAAK,QAAQ,EAAE;AAC1D,YAAY,UAAU,CAAC,mBAAmB,GAAG,IAAI,CAAC,mBAAmB;AACrE,QAAQ;AACR,QAAQ,IAAI,IAAI,CAAC,eAAe,KAAK,SAAS,EAAE;AAChD,YAAY,UAAU,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe;AAC7D,QAAQ;AACR,IAAI;AACJ,IAAI,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,KAAK;AACtC,QAAQ,IAAI,IAAI,CAAC,SAAS,KAAK,IAAI;AACnC,YAAY;AACZ,QAAQ,MAAM,SAAS,GAAG,UAAU,CAAC,KAAK,CAAC;AAC3C,QAAQ,IAAI,SAAS,EAAE;AACvB,YAAY,SAAS,CAAC,SAAS,GAAG,IAAI;AACtC,QAAQ;AACR,IAAI,CAAC,CAAC;AACN;;ACttBA,MAAM,eAAe,GAAG,SAAS;AACjC,MAAM,qBAAqB,GAAG,CAAC;AAC/B,MAAM,YAAY,GAAG,SAAS;AAC9B,MAAM,kBAAkB,GAAG,CAAC;AAC5B,MAAM,kBAAkB,GAAG,GAAG;AAC9B,MAAM,uBAAuB,GAAG,MAAM;AACtC,MAAM,6BAA6B,GAAG,CAAC;AACvC,MAAM,sBAAsB,GAAG,GAAG;AAC3B,SAAS,kBAAkB,CAAC,IAAI,EAAE;AACzC,IAAI,IAAI,EAAE;AACV,IAAI,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC;AACxD,IAAI,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC;AAC9C,IAAI,OAAO;AACX,QAAQ,MAAM,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC,cAAc,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,uBAAuB;AACnG,QAAQ,WAAW,EAAE,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,GAAG,WAAW,GAAG,6BAA6B;AAC/F,QAAQ,OAAO,EAAE,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,OAAO,GAAG,sBAAsB;AAC5E,KAAK;AACL;AACO,SAAS,iBAAiB,CAAC,IAAI,EAAE;AACxC,IAAI,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC;AAC9C,IAAI,MAAM,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,OAAO,GAAG,sBAAsB;AACjF,IAAI,OAAO;AACX,QAAQ,MAAM,EAAE,YAAY;AAC5B,QAAQ,WAAW,EAAE,kBAAkB;AACvC,QAAQ,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,SAAS,GAAG,kBAAkB,EAAE,CAAC,CAAC;AAC5D,KAAK;AACL;AACO,SAAS,sBAAsB,CAAC,IAAI,EAAE;AAC7C,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,eAAe,EAAE,WAAW,EAAE,qBAAqB,EAAE,CAAC;AAC7E;AACO,SAAS,wBAAwB,CAAC,IAAI,EAAE;AAC/C,IAAI,IAAI,EAAE;AACV,IAAI,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC;AACxD,IAAI,IAAI,CAAC,GAAG,CAAC;AACb,QAAQ,MAAM,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC,cAAc,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,uBAAuB;AACnG,QAAQ,WAAW,EAAE,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,GAAG,WAAW,GAAG,6BAA6B;AAC/F,KAAK,CAAC;AACN;AACO,SAAS,uBAAuB,CAAC,IAAI,EAAE;AAC9C,IAAI,MAAM,MAAM,GAAG,IAAI;AACvB,IAAI,MAAM,SAAS,GAAG,MAAM;AAC5B,QAAQ,IAAI,EAAE;AACd,QAAQ,MAAM,CAAC,GAAG,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;AAC7C,QAAQ,CAAC,EAAE,GAAG,MAAM,CAAC,MAAM,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,MAAM,GAAG,EAAE,CAAC,gBAAgB,EAAE;AACvF,IAAI,CAAC;AACL,IAAI,MAAM,QAAQ,GAAG,MAAM;AAC3B,QAAQ,IAAI,EAAE;AACd,QAAQ,MAAM,CAAC,GAAG,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;AAC9C,QAAQ,CAAC,EAAE,GAAG,MAAM,CAAC,MAAM,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,MAAM,GAAG,EAAE,CAAC,gBAAgB,EAAE;AACvF,IAAI,CAAC;AACL,IAAI,MAAM,CAAC,EAAE,CAAC,WAAW,EAAE,SAAS,CAAC;AACrC,IAAI,MAAM,CAAC,EAAE,CAAC,UAAU,EAAE,QAAQ,CAAC;AACnC,IAAI,MAAM,CAAC,uBAAuB,GAAG,EAAE,SAAS,EAAE,QAAQ,EAAE;AAC5D;AACO,SAAS,yBAAyB,CAAC,IAAI,EAAE;AAChD,IAAI,IAAI,EAAE;AACV,IAAI,MAAM,MAAM,GAAG,IAAI;AACvB,IAAI,IAAI,MAAM,CAAC,uBAAuB,EAAE;AACxC,QAAQ,IAAI;AACZ,YAAY,MAAM,CAAC,GAAG,CAAC,WAAW,EAAE,MAAM,CAAC,uBAAuB,CAAC,SAAS,CAAC;AAC7E,YAAY,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,MAAM,CAAC,uBAAuB,CAAC,QAAQ,CAAC;AAC3E,QAAQ;AACR,QAAQ,MAAM;AACd,QAAQ;AACR,QAAQ,OAAO,MAAM,CAAC,uBAAuB;AAC7C,IAAI;AACJ,IAAI,MAAM,KAAK,GAAG,EAAE;AACpB,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,EAAE;AACxD,QAAQ,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC;AAC9C,QAAQ,KAAK,CAAC,aAAa,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,OAAO,GAAG,sBAAsB;AACzF,IAAI;AACJ,IAAI,IAAI,MAAM,CAAC,cAAc,IAAI,IAAI,EAAE;AACvC,QAAQ,KAAK,CAAC,cAAc,GAAG,CAAC,EAAE,GAAG,MAAM,CAAC,MAAM,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,uBAAuB;AAC5G,IAAI;AACJ,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC,EAAE;AAC9D,QAAQ,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC;AAC7C,QAAQ,KAAK,CAAC,mBAAmB,GAAG,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,6BAA6B;AAC5F,IAAI;AACJ,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC;AACrC,QAAQ,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;AACzB,IAAI,uBAAuB,CAAC,MAAM,CAAC;AACnC;AACO,SAAS,uBAAuB,CAAC,IAAI,EAAE;AAC9C,IAAI,MAAM,MAAM,GAAG,IAAI;AACvB,IAAI,IAAI,CAAC,MAAM,CAAC,uBAAuB;AACvC,QAAQ;AACR,IAAI,IAAI;AACR,QAAQ,MAAM,CAAC,GAAG,CAAC,WAAW,EAAE,MAAM,CAAC,uBAAuB,CAAC,SAAS,CAAC;AACzE,QAAQ,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,MAAM,CAAC,uBAAuB,CAAC,QAAQ,CAAC;AACvE,IAAI;AACJ,IAAI,MAAM;AACV,IAAI;AACJ,IAAI,OAAO,MAAM,CAAC,uBAAuB;AACzC;AACO,SAAS,sBAAsB,CAAC,IAAI,EAAE;AAC7C,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AAClC,IAAI,OAAO;AACX,QAAQ,MAAM,EAAE,IAAI;AACpB,QAAQ,OAAO,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC,OAAO,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,CAAC;AACvE,QAAQ,IAAI,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,IAAI,CAAC;AACtE,QAAQ,WAAW,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC,WAAW,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,CAAC;AAC/E,QAAQ,MAAM,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,MAAM,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,IAAI,CAAC;AAC1E,QAAQ,UAAU,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC,UAAU,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,IAAI;AAChF,QAAQ,OAAO,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC,OAAO,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,IAAI;AAC1E,QAAQ,YAAY,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC,YAAY,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,KAAK;AACrF,KAAK;AACL;AACO,SAAS,sBAAsB,CAAC,MAAM,EAAE;AAC/C,IAAI,IAAI;AACR,QAAQ,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC;AAC1B,YAAY,OAAO,EAAE,MAAM,CAAC,OAAO;AACnC,YAAY,IAAI,EAAE,MAAM,CAAC,IAAI;AAC7B,YAAY,WAAW,EAAE,MAAM,CAAC,WAAW;AAC3C,YAAY,MAAM,EAAE,MAAM,CAAC,MAAM;AACjC,YAAY,UAAU,EAAE,MAAM,CAAC,UAAU;AACzC,YAAY,OAAO,EAAE,MAAM,CAAC,OAAO;AACnC,YAAY,YAAY,EAAE,MAAM,CAAC,YAAY;AAC7C,SAAS,CAAC;AACV,QAAQ,IAAI,OAAO,MAAM,CAAC,MAAM,CAAC,SAAS,KAAK,UAAU,EAAE;AAC3D,YAAY,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE;AACrC,QAAQ;AACR,IAAI;AACJ,IAAI,MAAM;AACV,IAAI;AACJ;AAmCO,eAAe,mBAAmB,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE;AACtE,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM;AACvB,QAAQ,OAAO,MAAM,QAAQ,EAAE;AAC/B,IAAI,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC;AAClE,IAAI,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,sBAAsB,CAAC;AACrD,IAAI,IAAI;AACR,QAAQ,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,KAAK,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AAC5D,QAAQ,OAAO,MAAM,QAAQ,EAAE;AAC/B,IAAI;AACJ,YAAY;AACZ,QAAQ,KAAK,MAAM,MAAM,IAAI,OAAO;AACpC,YAAY,sBAAsB,CAAC,MAAM,CAAC;AAC1C,IAAI;AACJ;AACO,SAAS,sBAAsB,CAAC,IAAI,EAAE;AAC7C,IAAI,IAAI;AACR,QAAQ,IAAI,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;AACnE,IAAI;AACJ,IAAI,MAAM;AACV,IAAI;AACJ;;ACpLO,SAAS,kBAAkB,CAAC,UAAU,EAAE;AAC/C,IAAI,OAAO,UAAU,CAAC,gBAAgB,KAAK,IAAI;AAC/C;AACO,SAAS,oBAAoB,CAAC,UAAU,EAAE;AACjD,IAAI,OAAO,CAAC,kBAAkB,CAAC,UAAU,CAAC;AAC1C;;ACHA,SAAS,cAAc,CAAC,MAAM,EAAE,KAAK,EAAE;AACvC,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;AACrB;AACA,SAASC,aAAW,CAAC,KAAK,EAAE,QAAQ,EAAE;AACtC,IAAI,OAAO,OAAO,KAAK,KAAK,SAAS,GAAG,KAAK,GAAG,QAAQ;AACxD;AACA,SAAS,iBAAiB,CAAC,UAAU,EAAE;AACvC,IAAI,OAAOA,aAAW,CAAC,UAAU,CAAC,oBAAoB,EAAEA,aAAW,CAAC,UAAU,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;AACjG;AACA,SAAS,cAAc,CAAC,UAAU,EAAE;AACpC,IAAI,OAAOA,aAAW,CAAC,UAAU,CAAC,iBAAiB,EAAEA,aAAW,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AAC3F;AACA,SAAS,kBAAkB,CAAC,UAAU,EAAE;AACxC,IAAI,OAAOA,aAAW,CAAC,UAAU,CAAC,qBAAqB,EAAEA,aAAW,CAAC,UAAU,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;AACnG;AACA,SAAS,eAAe,CAAC,UAAU,EAAE;AACrC,IAAI,OAAOA,aAAW,CAAC,UAAU,CAAC,kBAAkB,EAAEA,aAAW,CAAC,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;AAC7F;AACA,SAAS,mBAAmB,CAAC,UAAU,EAAE,QAAQ,EAAE;AACnD,IAAI,MAAM,UAAU,GAAG,UAAU;AACjC,IAAI,UAAU,CAAC,QAAQ,GAAG,QAAQ;AAClC;AACA,SAAS,+BAA+B,CAAC,UAAU,EAAE;AACrD,IAAI,IAAI,OAAO,UAAU,CAAC,oBAAoB,KAAK,SAAS,EAAE;AAC9D,QAAQ,UAAU,CAAC,oBAAoB,GAAGA,aAAW,CAAC,UAAU,CAAC,UAAU,EAAE,IAAI,CAAC;AAClF,IAAI;AACJ,IAAI,IAAI,OAAO,UAAU,CAAC,iBAAiB,KAAK,SAAS,EAAE;AAC3D,QAAQ,UAAU,CAAC,iBAAiB,GAAGA,aAAW,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC;AAC5E,IAAI;AACJ,IAAI,IAAI,OAAO,UAAU,CAAC,qBAAqB,KAAK,SAAS,EAAE;AAC/D,QAAQ,UAAU,CAAC,qBAAqB,GAAGA,aAAW,CAAC,UAAU,CAAC,WAAW,EAAE,IAAI,CAAC;AACpF,IAAI;AACJ,IAAI,IAAI,sBAAsB,CAAC,UAAU,CAAC,IAAI,OAAO,UAAU,CAAC,kBAAkB,KAAK,SAAS,EAAE;AAClG,QAAQ,UAAU,CAAC,kBAAkB,GAAG,eAAe,CAAC,UAAU,CAAC;AACnE,IAAI;AACJ;AACO,SAAS,0BAA0B,CAAC,UAAU,EAAE;AACvD,IAAI,IAAI,EAAE,EAAE,EAAE;AACd,IAAI,MAAM,MAAM,GAAG,UAAU,CAAC,gBAAgB,KAAK,IAAI;AACvD,IAAI,MAAM,MAAM,GAAG,kBAAkB,CAAC,UAAU,CAAC;AACjD,IAAI,IAAI,MAAM,EAAE;AAChB,QAAQ,+BAA+B,CAAC,UAAU,CAAC;AACnD,QAAQ,cAAc,CAAC,UAAU,EAAE;AACnC,YAAY,OAAO,EAAE,CAAC,MAAM;AAC5B,YAAY,UAAU,EAAE,KAAK;AAC7B,YAAY,OAAO,EAAE,KAAK;AAC1B,YAAY,WAAW,EAAE,KAAK;AAC9B,YAAY,aAAa,EAAE,IAAI;AAC/B,YAAY,aAAa,EAAE,IAAI;AAC/B,YAAY,YAAY,EAAE,IAAI;AAC9B,YAAY,YAAY,EAAE,IAAI;AAC9B,YAAY,YAAY,EAAE,IAAI;AAC9B,SAAS,CAAC;AACV,QAAQ,IAAI,sBAAsB,CAAC,UAAU,CAAC,EAAE;AAChD,YAAY,mBAAmB,CAAC,UAAU,EAAE,KAAK,CAAC;AAClD,QAAQ;AACR,QAAQ,CAAC,EAAE,GAAG,UAAU,CAAC,SAAS,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,MAAM,GAAG,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC;AAC5F,QAAQ;AACR,IAAI;AACJ,IAAI,cAAc,CAAC,UAAU,EAAE;AAC/B,QAAQ,OAAO,EAAE,CAAC,MAAM;AACxB,QAAQ,UAAU,EAAE,iBAAiB,CAAC,UAAU,CAAC;AACjD,QAAQ,OAAO,EAAE,cAAc,CAAC,UAAU,CAAC;AAC3C,QAAQ,WAAW,EAAE,kBAAkB,CAAC,UAAU,CAAC;AACnD,QAAQ,aAAa,EAAE,KAAK;AAC5B,QAAQ,aAAa,EAAE,KAAK;AAC5B,QAAQ,YAAY,EAAE,KAAK;AAC3B,QAAQ,YAAY,EAAE,KAAK;AAC3B,QAAQ,YAAY,EAAE,KAAK;AAC3B,KAAK,CAAC;AACN,IAAI,IAAI,sBAAsB,CAAC,UAAU,CAAC,EAAE;AAC5C,QAAQ,mBAAmB,CAAC,UAAU,EAAE,eAAe,CAAC,UAAU,CAAC,CAAC;AACpE,IAAI;AACJ,IAAI,CAAC,EAAE,GAAG,UAAU,CAAC,SAAS,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,MAAM,GAAG,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC;AACxF;AACO,SAAS,2BAA2B,CAAC,WAAW,EAAE;AACzD,IAAI,WAAW,CAAC,OAAO,CAAC,0BAA0B,CAAC;AACnD;;AC9EA,SAAS,qBAAqB,CAAC,MAAM,EAAE;AACvC,IAAI,MAAM,SAAS,GAAG,MAAM;AAC5B,IAAI,QAAQ,SAAS,CAAC,UAAU,KAAK,IAAI;AACzC,QAAQ,SAAS,CAAC,SAAS,KAAK,IAAI;AACpC,QAAQ,SAAS,CAAC,eAAe,KAAK,IAAI;AAC1C;AACA,SAAS,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE;AAC7C,IAAI,MAAM,kBAAkB,GAAG,MAAM;AACrC,IAAI,IAAI,OAAO,kBAAkB,CAAC,YAAY,KAAK,UAAU,EAAE;AAC/D,QAAQ,kBAAkB,CAAC,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC;AACtD,QAAQ;AACR,IAAI;AACJ,IAAI,IAAI;AACR,QAAQ,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;AAC7B,QAAQ,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;AACtC,IAAI;AACJ,IAAI,MAAM;AACV,QAAQ,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC;AAC1B,IAAI;AACJ;AACA,SAAS,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE;AACxC,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;AAC/C,QAAQ,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC;AAC1B,IAAI;AACJ;AACA,SAAS,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE;AACvC,IAAI,OAAO,MAAM,CAAC,UAAU,EAAE,CAAC,MAAM,CAAC,CAAC,SAAS,KAAK,SAAS,KAAK,MAAM,CAAC;AAC1E;AACA,SAAS,qBAAqB,CAAC,OAAO,EAAE;AACxC,IAAI,OAAO,OAAO,CAAC,SAAS,CAAC,CAAC,MAAM,KAAK,eAAe,CAAC,MAAM,CAAC,IAAI,qBAAqB,CAAC,MAAM,CAAC,CAAC;AAClG;AACA,SAAS,gBAAgB,CAAC,MAAM,EAAE;AAClC,IAAI,MAAM,UAAU,GAAG,EAAE;AACzB,IAAI,MAAM,QAAQ,GAAG,EAAE;AACvB,IAAI,MAAM,QAAQ,GAAG,EAAE;AACvB,IAAI,MAAM,MAAM,GAAG,EAAE;AACrB,IAAI,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,UAAU,EAAE,EAAE;AAC9C,QAAQ,IAAI,iBAAiB,CAAC,MAAM,CAAC,EAAE;AACvC,YAAY,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC;AACnC,QAAQ;AACR,aAAa,IAAI,uBAAuB,CAAC,MAAM,CAAC,EAAE;AAClD,YAAY,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC;AACjC,QAAQ;AACR,aAAa,IAAI,eAAe,CAAC,MAAM,CAAC,IAAI,qBAAqB,CAAC,MAAM,CAAC,EAAE;AAC3E,YAAY,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC;AACjC,QAAQ;AACR,aAAa;AACb,YAAY,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;AAC/B,QAAQ;AACR,IAAI;AACJ,IAAI,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE;AACrD;AACO,SAAS,mBAAmB,CAAC,MAAM,EAAE;AAC5C,IAAI,MAAM,MAAM,GAAG,gBAAgB,CAAC,MAAM,CAAC;AAC3C,IAAI,MAAM,OAAO,GAAG;AACpB,QAAQ,GAAG,MAAM,CAAC,UAAU;AAC5B,QAAQ,GAAG,MAAM,CAAC,MAAM;AACxB,QAAQ,GAAG,MAAM,CAAC,QAAQ;AAC1B,QAAQ,GAAG,MAAM,CAAC,QAAQ;AAC1B,KAAK;AACL,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,KAAK,KAAK;AACvC,QAAQ,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC;AAC3C,IAAI,CAAC,CAAC;AACN;AAMO,SAAS,eAAe,CAAC,MAAM,EAAE,IAAI,EAAE;AAC9C,IAAI,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC;AAChC,IAAI,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,EAAE,IAAI,CAAC;AAC/C,IAAI,MAAM,iBAAiB,GAAG,qBAAqB,CAAC,OAAO,CAAC;AAC5D,IAAI,YAAY,CAAC,MAAM,EAAE,IAAI,EAAE,iBAAiB,KAAK,EAAE,GAAG,OAAO,CAAC,MAAM,GAAG,iBAAiB,CAAC;AAC7F;AACO,SAAS,qBAAqB,CAAC,MAAM,EAAE,UAAU,EAAE;AAC1D,IAAI,cAAc,CAAC,MAAM,EAAE,UAAU,CAAC;AACtC,IAAI,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,EAAE,UAAU,CAAC;AACrD,IAAI,MAAM,iBAAiB,GAAG,qBAAqB,CAAC,OAAO,CAAC;AAC5D,IAAI,YAAY,CAAC,MAAM,EAAE,UAAU,EAAE,iBAAiB,KAAK,EAAE,GAAG,OAAO,CAAC,MAAM,GAAG,iBAAiB,CAAC;AACnG;AACO,SAAS,kBAAkB,CAAC,MAAM,EAAE,aAAa,EAAE;AAC1D,IAAI,cAAc,CAAC,MAAM,EAAE,aAAa,CAAC;AACzC,IAAI,YAAY,CAAC,MAAM,EAAE,aAAa,EAAE,aAAa,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,MAAM,CAAC;AACpF;AACO,SAAS,uBAAuB,CAAC,MAAM,EAAE;AAChD,IAAI,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,EAAE;AACvC,IAAI,MAAM,cAAc,GAAG;AAC3B,SAAS,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;AACnD,SAAS,MAAM,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,uBAAuB,CAAC,MAAM,CAAC,CAAC;AAChE,IAAI,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC;AACnC,QAAQ,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE;AACnD,IAAI,OAAO;AACX,QAAQ,KAAK,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,KAAK;AACtC,QAAQ,GAAG,EAAE,cAAc,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,KAAK;AAC5D,QAAQ,QAAQ,EAAE,cAAc,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,MAAM,CAAC;AAC5D,KAAK;AACL;;AClGO,SAAS,yBAAyB,CAAC,IAAI,EAAE,WAAW,EAAE,YAAY,EAAE;AAC3E,IAAI,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;AAClC,IAAI,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;AAChC,IAAI,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;AACpC,IAAI,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;AACtC,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;AAC9B,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC;AAC7B,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;AAC/B,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;AAChC,QAAQ,KAAK,IAAI,CAAC;AAClB,QAAQ,MAAM,IAAI,CAAC,EAAE;AACrB,QAAQ,OAAO,KAAK;AACpB,IAAI;AACJ,IAAI,MAAM,KAAK,GAAG,IAAI,GAAG,KAAK;AAC9B,IAAI,MAAM,MAAM,GAAG,GAAG,GAAG,MAAM;AAC/B,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;AAC3D,QAAQ,OAAO,KAAK;AACpB,IAAI,MAAM,eAAe,GAAG,MAAM,CAAC,WAAW,CAAC;AAC/C,IAAI,MAAM,gBAAgB,GAAG,MAAM,CAAC,YAAY,CAAC;AACjD,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC;AACzC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAAC;AAC1C,QAAQ,eAAe,IAAI,CAAC;AAC5B,QAAQ,gBAAgB,IAAI,CAAC,EAAE;AAC/B,QAAQ,OAAO,IAAI;AACnB,IAAI;AACJ,IAAI,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,eAAe,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;AAC7E,IAAI,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;AAC/E,IAAI,OAAO,YAAY,GAAG,CAAC,IAAI,aAAa,GAAG,CAAC;AAChD;AACO,SAAS,sBAAsB,CAAC,IAAI,EAAE,WAAW,EAAE,YAAY,EAAE,OAAO,GAAG,EAAE,EAAE;AACtF,IAAI,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,GAAG,CAAC;AAC/D,IAAI,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AAC5D,IAAI,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;AAC/E,IAAI,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;AAClF,IAAI,MAAM,oBAAoB,GAAG,OAAO,CAAC,oBAAoB,KAAK,KAAK;AACvE,IAAI,MAAM,QAAQ,GAAG,oBAAoB,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK;AAClE,IAAI,MAAM,cAAc,GAAG,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC;AACvD,IAAI,MAAM,eAAe,GAAG,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC;AACzD,IAAI,MAAM,eAAe,GAAG;AAC5B,UAAU,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;AACrD,UAAU,MAAM,CAAC,iBAAiB;AAClC,IAAI,MAAM,gBAAgB,GAAG;AAC7B,UAAU,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;AACtD,UAAU,MAAM,CAAC,iBAAiB;AAClC,IAAI,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,eAAe,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;AACjF,IAAI,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,gBAAgB,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;AAChF,IAAI,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,eAAe,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,EAAE,QAAQ,CAAC,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC;AAC/F,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,gBAAgB,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,EAAE,QAAQ,CAAC,OAAO,GAAG,UAAU,CAAC,CAAC,CAAC;AAChG,IAAI,OAAO;AACX,QAAQ,IAAI;AACZ,QAAQ,GAAG;AACX,QAAQ,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC;AACxC,QAAQ,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC;AACzC,KAAK;AACL;AAIO,SAAS,uBAAuB,CAAC,KAAK,EAAE;AAC/C,IAAI,MAAM,YAAY,GAAG,MAAM,CAAC,KAAK,CAAC;AACtC,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC;AACtC,QAAQ,OAAO,KAAK;AACpB,IAAI,OAAO,IAAI,CAAC,GAAG,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,GAAG,IAAI;AACnE;AACO,SAAS,qBAAqB,CAAC,MAAM,EAAE,KAAK,GAAG,CAAC,EAAE;AACzD,IAAI,IAAI,CAAC,MAAM;AACf,QAAQ,OAAO,IAAI;AACnB,IAAI,MAAM,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;AAC/D,IAAI,MAAM,aAAa,GAAG,eAAe,GAAG,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,eAAe,GAAG,EAAE,CAAC,GAAG,IAAI;AACzF,IAAI,IAAI,CAAC,aAAa;AACtB,QAAQ,OAAO,IAAI;AACnB,IAAI,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;AACzC,IAAI,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;AACvC,IAAI,OAAO;AACX,QAAQ,IAAI,EAAE,uBAAuB,CAAC,IAAI,CAAC;AAC3C,QAAQ,GAAG,EAAE,uBAAuB,CAAC,GAAG,CAAC;AACzC,QAAQ,KAAK,EAAE,uBAAuB,CAAC,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;AAC1E,QAAQ,MAAM,EAAE,uBAAuB,CAAC,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;AAC3E,KAAK;AACL;AACO,SAAS,aAAa,CAAC,MAAM,EAAE;AACtC,IAAI,MAAM,CAAC,SAAS,EAAE;AACtB,IAAI,MAAM,YAAY,GAAG,MAAM,CAAC,eAAe,EAAE;AACjD,IAAI,OAAO;AACX,QAAQ,IAAI,EAAE,YAAY,CAAC,IAAI;AAC/B,QAAQ,GAAG,EAAE,YAAY,CAAC,GAAG;AAC7B,QAAQ,KAAK,EAAE,YAAY,CAAC,KAAK;AACjC,QAAQ,MAAM,EAAE,YAAY,CAAC,MAAM;AACnC,KAAK;AACL;;ACzFO,SAAS,cAAc,CAAC,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE;AACrE,IAAI,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;AACjC,QAAQ,OAAO,GAAG;AAClB,IAAI;AACJ,IAAI,IAAI,OAAO,GAAG,KAAK,UAAU,EAAE;AACnC,QAAQ,OAAO,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC;AACnC,IAAI;AACJ,IAAI,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;AACtD,QAAQ,MAAM,GAAG,GAAG,UAAU,CAAC,GAAG,CAAC;AACnC,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;AACnC,YAAY,OAAO,QAAQ;AAC3B,QAAQ;AACR,QAAQ,MAAM,GAAG,GAAG,IAAI,KAAK,GAAG,GAAG,MAAM,CAAC,QAAQ,EAAE,GAAG,MAAM,CAAC,SAAS,EAAE;AACzE,QAAQ,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,GAAG,GAAG,GAAG,CAAC,CAAC;AAC5C,IAAI;AACJ,IAAI,OAAO,QAAQ;AACnB;AACO,SAAS,WAAW,CAAC,EAAE,EAAE;AAChC,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE;AAC3B,QAAQ,OAAO,EAAE,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE;AACrD,IAAI;AACJ,IAAI,OAAO,EAAE,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;AAC/C;;ACtBO,SAAS,aAAa,CAAC,KAAK,EAAE;AACrC,IAAI,MAAM,KAAK,GAAG,KAAK;AACvB,IAAI,QAAQ,CAAC,CAAC,KAAK;AACnB,QAAQ,OAAO,KAAK,CAAC,CAAC,KAAK,QAAQ;AACnC,QAAQ,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;AAChC,QAAQ,OAAO,KAAK,CAAC,CAAC,KAAK,QAAQ;AACnC,QAAQ,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;AAChC;AACO,SAAS,yBAAyB,CAAC,MAAM,EAAE,KAAK,EAAE;AACzD,IAAI,MAAM,WAAW,GAAG,KAAK,IAAI,OAAO,KAAK,KAAK;AAClD,UAAU;AACV,UAAU,IAAI;AACd,IAAI,IAAI,CAAC,WAAW;AACpB,QAAQ,OAAO,IAAI;AACnB,IAAI,IAAI,aAAa,CAAC,WAAW,CAAC,UAAU,CAAC;AAC7C,QAAQ,OAAO,EAAE,GAAG,WAAW,CAAC,UAAU,EAAE;AAC5C,IAAI,IAAI,aAAa,CAAC,WAAW,CAAC,OAAO,CAAC;AAC1C,QAAQ,OAAO,EAAE,GAAG,WAAW,CAAC,OAAO,EAAE;AACzC,IAAI,IAAI,aAAa,CAAC,WAAW,CAAC,eAAe,CAAC;AAClD,QAAQ,OAAO,EAAE,GAAG,WAAW,CAAC,eAAe,EAAE;AACjD,IAAI,IAAI,WAAW,CAAC,CAAC,IAAI,OAAO,MAAM,CAAC,UAAU,KAAK,UAAU,EAAE;AAClE,QAAQ,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC;AACxD,QAAQ,IAAI,aAAa,CAAC,OAAO,CAAC;AAClC,YAAY,OAAO,EAAE,GAAG,OAAO,EAAE;AACjC,IAAI;AACJ,IAAI,OAAO,IAAI;AACf;;ACjBA,SAAS,0BAA0B,CAAC,OAAO,EAAE;AAC7C,IAAI,MAAM,KAAK,GAAG,OAAO,CAAC,gBAAgB,EAAE;AAC5C,IAAI,IAAI,KAAK,EAAE;AACf,QAAQ,MAAM,MAAM,GAAG,aAAa,CAAC,KAAK,CAAC;AAC3C,QAAQ,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE;AACvF,IAAI;AACJ,IAAI,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE;AAChC;AACA,SAAS,yBAAyB,CAAC,OAAO,EAAE,MAAM,EAAE;AACpD,IAAI,IAAI,EAAE,EAAE,EAAE;AACd,IAAI,MAAM,IAAI,GAAG,8BAA8B,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,MAAM,CAAC;AAChF,IAAI,MAAM,QAAQ,GAAG,0BAA0B,CAAC,OAAO,CAAC;AACxD,IAAI,MAAM,SAAS,GAAG,CAAC,EAAE,GAAG,MAAM,CAAC,IAAI,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,IAAI,CAAC,IAAI;AACnF,IAAI,MAAM,QAAQ,GAAG,CAAC,EAAE,GAAG,MAAM,CAAC,GAAG,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG;AAChF,IAAI,OAAO;AACX,QAAQ,GAAG,IAAI;AACf,QAAQ,IAAI,EAAE,cAAc,CAAC,SAAS,EAAE,GAAG,EAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC;AAC5F,QAAQ,GAAG,EAAE,cAAc,CAAC,QAAQ,EAAE,GAAG,EAAE,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC;AACzF,KAAK;AACL;AACA,SAAS,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE;AAC7C,IAAI,MAAM,YAAY,GAAG,OAAO,CAAC,oBAAoB,EAAE,GAAG,CAAC;AAC3D,IAAI,OAAO,CAAC,oBAAoB,CAAC,YAAY,CAAC;AAC9C,IAAI,OAAO;AACX,QAAQ,YAAY;AACpB,QAAQ,cAAc,EAAE,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,kBAAkB,CAAC,EAAE,YAAY,CAAC,CAAC;AAC9E,QAAQ,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;AACjD,QAAQ,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;AACjD,KAAK;AACL;AACO,SAAS,yBAAyB,CAAC,OAAO,EAAE,UAAU,EAAE;AAC/D,IAAI,MAAM,UAAU,GAAG,UAAU;AACjC,IAAI,IAAI,UAAU,CAAC,8BAA8B,EAAE;AACnD,QAAQ,IAAI;AACZ,YAAY,UAAU,CAAC,GAAG,CAAC,iBAAiB,EAAE,UAAU,CAAC,8BAA8B,CAAC,OAAO,CAAC;AAChG,YAAY,UAAU,CAAC,GAAG,CAAC,gBAAgB,EAAE,UAAU,CAAC,8BAA8B,CAAC,MAAM,CAAC;AAC9F,QAAQ;AACR,QAAQ,MAAM;AACd,QAAQ;AACR,IAAI;AACJ,IAAI,MAAM,OAAO,GAAG,MAAM;AAC1B,QAAQ,IAAI,EAAE;AACd,QAAQ,UAAU,CAAC,iCAAiC,GAAG,MAAM,CAAC,CAAC,EAAE,GAAG,UAAU,CAAC,IAAI,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,EAAE,CAAC;AACzH,QAAQ,UAAU,CAAC,4BAA4B,GAAG,KAAK;AACvD,QAAQ,OAAO,UAAU,CAAC,mCAAmC;AAC7D,IAAI,CAAC;AACL,IAAI,MAAM,MAAM,GAAG,MAAM;AACzB,QAAQ,IAAI,EAAE;AACd,QAAQ,MAAM,OAAO,GAAG,UAAU,CAAC,iCAAiC;AACpE,QAAQ,MAAM,SAAS,GAAG,MAAM,CAAC,CAAC,EAAE,GAAG,UAAU,CAAC,IAAI,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,EAAE,CAAC;AAC5F,QAAQ,MAAM,MAAM,GAAG,UAAU,CAAC,4BAA4B,KAAK,IAAI;AACvE,QAAQ,IAAI,OAAO,KAAK,SAAS,EAAE;AACnC,YAAY,UAAU,CAAC,mCAAmC,GAAG,IAAI;AACjE,YAAY,cAAc,CAAC,MAAM;AACjC,gBAAgB,IAAI,UAAU,CAAC,mCAAmC,KAAK,IAAI,EAAE;AAC7E,oBAAoB,OAAO,UAAU,CAAC,mCAAmC;AACzE,gBAAgB;AAChB,YAAY,CAAC,CAAC;AACd,QAAQ;AACR,QAAQ,IAAI,MAAM,IAAI,OAAO,KAAK,SAAS,EAAE;AAC7C,YAAY,UAAU,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;AAC7C,QAAQ;AACR,QAAQ,OAAO,UAAU,CAAC,iCAAiC;AAC3D,QAAQ,OAAO,UAAU,CAAC,4BAA4B;AACtD,QAAQ,IAAI,CAAC,MAAM,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,SAAS,EAAE;AACvE,YAAY,OAAO,CAAC,eAAe,EAAE;AACrC,YAAY,MAAM,eAAe,GAAG,OAAO,CAAC,oBAAoB,CAAC,kBAAkB,CAAC;AACpF,YAAY,OAAO,CAAC,sBAAsB,CAAC,eAAe,CAAC;AAC3D,YAAY,OAAO,CAAC,gBAAgB,CAAC,eAAe,CAAC;AACrD,QAAQ;AACR,IAAI,CAAC;AACL,IAAI,UAAU,CAAC,EAAE,CAAC,iBAAiB,EAAE,OAAO,CAAC;AAC7C,IAAI,UAAU,CAAC,EAAE,CAAC,gBAAgB,EAAE,MAAM,CAAC;AAC3C,IAAI,UAAU,CAAC,8BAA8B,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE;AACnE;AACA,SAAS,aAAa,CAAC,UAAU,EAAE;AACnC,IAAI,IAAI,EAAE;AACV,IAAI,MAAM,UAAU,GAAG,UAAU;AACjC,IAAI,MAAM,UAAU,GAAG,MAAM,CAAC,CAAC,EAAE,GAAG,UAAU,CAAC,IAAI,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,MAAM;AAChG,IAAI,IAAI,UAAU,IAAI,CAAC;AACvB,QAAQ;AACR,IAAI,IAAI,OAAO,UAAU,CAAC,SAAS,KAAK,UAAU,EAAE;AACpD,QAAQ,UAAU,CAAC,SAAS,EAAE;AAC9B,QAAQ;AACR,IAAI;AACJ,IAAI,IAAI,OAAO,UAAU,CAAC,iBAAiB,KAAK,UAAU;AAC1D,QAAQ,OAAO,UAAU,CAAC,eAAe,KAAK,UAAU,EAAE;AAC1D,QAAQ,UAAU,CAAC,iBAAiB,CAAC,CAAC,CAAC;AACvC,QAAQ,UAAU,CAAC,eAAe,CAAC,UAAU,CAAC;AAC9C,QAAQ;AACR,IAAI;AACJ,IAAI,UAAU,CAAC,cAAc,GAAG,CAAC;AACjC,IAAI,UAAU,CAAC,YAAY,GAAG,UAAU;AACxC;AACO,SAAS,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,EAAE,EAAE;AAC3D,IAAI,IAAI,EAAE,EAAE,EAAE;AACd,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE;AAChC,QAAQ,OAAO,IAAI;AACnB,IAAI,MAAM,QAAQ,GAAG,yBAAyB,CAAC,OAAO,EAAE,MAAM,CAAC;AAC/D,IAAI,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE;AAC9D,QAAQ,IAAI,EAAE,QAAQ,CAAC,IAAI;AAC3B,QAAQ,GAAG,EAAE,QAAQ,CAAC,GAAG;AACzB,QAAQ,KAAK,EAAE,QAAQ,CAAC,KAAK;AAC7B,QAAQ,QAAQ,EAAE,QAAQ,CAAC,QAAQ;AACnC,QAAQ,UAAU,EAAE,QAAQ,CAAC,UAAU;AACvC,QAAQ,UAAU,EAAE,QAAQ,CAAC,UAAU;AACvC,QAAQ,IAAI,EAAE,QAAQ,CAAC,IAAI;AAC3B,QAAQ,eAAe,EAAE,QAAQ,CAAC,eAAe;AACjD,QAAQ,SAAS,EAAE,QAAQ,CAAC,SAAS;AACrC,QAAQ,KAAK,EAAE,QAAQ,CAAC,KAAK;AAC7B,QAAQ,UAAU,EAAE,QAAQ,CAAC,UAAU;AACvC,QAAQ,OAAO,EAAE,QAAQ,CAAC,OAAO;AACjC,QAAQ,QAAQ,EAAE,QAAQ,CAAC,QAAQ;AACnC,QAAQ,OAAO,EAAE,MAAM;AACvB,QAAQ,OAAO,EAAE,KAAK;AACtB,QAAQ,GAAG,QAAQ,CAAC,MAAM;AAC1B,KAAK,CAAC;AACN,IAAI,MAAM,IAAI,GAAG,kBAAkB,CAAC,OAAO,EAAE,QAAQ,CAAC;AACtD,IAAI,MAAM,UAAU,GAAG,oBAAoB,CAAC,OAAO,EAAE;AACrD,QAAQ,YAAY,EAAE,IAAI,CAAC,YAAY;AACvC,QAAQ,cAAc,EAAE,MAAM;AAC9B,QAAQ,cAAc,EAAE,IAAI,CAAC,cAAc;AAC3C,QAAQ,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;AAC/C,QAAQ,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;AAC/C,QAAQ,oBAAoB,EAAE,QAAQ,CAAC,UAAU;AACjD,QAAQ,iBAAiB,EAAE,QAAQ,CAAC,OAAO;AAC3C,QAAQ,qBAAqB,EAAE,OAAO,CAAC,WAAW,KAAK,KAAK;AAC5D,QAAQ,kBAAkB,EAAE,QAAQ,CAAC,QAAQ;AAC7C,KAAK,CAAC;AACN,IAAI,0BAA0B,CAAC,UAAU,CAAC;AAC1C,IAAI,yBAAyB,CAAC,OAAO,EAAE,UAAU,CAAC;AAClD,IAAI,qBAAqB,CAAC,OAAO,CAAC,MAAM,EAAE,UAAU,CAAC;AACrD,IAAI,IAAI,QAAQ,CAAC,UAAU,KAAK,KAAK,IAAI,oBAAoB,CAAC,UAAU,CAAC,EAAE;AAC3E,QAAQ,OAAO,CAAC,MAAM,CAAC,eAAe,CAAC,UAAU,CAAC;AAClD,IAAI;AACJ,IAAI,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE;AAC9B,IAAI,OAAO,CAAC,oBAAoB,EAAE;AAClC,IAAI,OAAO,CAAC,eAAe,EAAE;AAC7B,IAAI,MAAM,eAAe,GAAG,OAAO,CAAC,oBAAoB,CAAC,sBAAsB,CAAC;AAChF,IAAI,OAAO,CAAC,sBAAsB,CAAC,eAAe,CAAC;AACnD,IAAI,OAAO,CAAC,gBAAgB,CAAC,eAAe,CAAC;AAC7C,IAAI,IAAI,QAAQ,CAAC,YAAY,IAAI,oBAAoB,CAAC,UAAU,CAAC,EAAE;AACnE,QAAQ,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,UAAU,EAAE,YAAY,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,MAAM,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;AAC9F,QAAQ,aAAa,CAAC,UAAU,CAAC;AACjC,IAAI;AACJ,IAAI,OAAO,UAAU;AACrB;AACA,SAAS,qBAAqB,CAAC,OAAO,EAAE,KAAK,EAAE;AAC/C,IAAI,IAAI,EAAE,EAAE,EAAE;AACd,IAAI,MAAM,WAAW,GAAG,KAAK;AAC7B,IAAI,MAAM,MAAM,GAAG,WAAW,CAAC,MAAM;AACrC,IAAI,IAAI,MAAM,IAAI,sBAAsB,CAAC,MAAM,CAAC,IAAI,oBAAoB,CAAC,MAAM,CAAC,EAAE;AAClF,QAAQ,OAAO,CAAC,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC;AAC9C,QAAQ,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,MAAM,EAAE,YAAY,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,MAAM,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;AAC1F,QAAQ;AACR,IAAI;AACJ,IAAI,MAAM,OAAO,GAAG,yBAAyB,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC;AACpE,IAAI,IAAI,CAAC,OAAO;AAChB,QAAQ;AACR,IAAI,oBAAoB,CAAC,OAAO,EAAE;AAClC,QAAQ,IAAI,EAAE,OAAO,CAAC,CAAC;AACvB,QAAQ,GAAG,EAAE,OAAO,CAAC,CAAC;AACtB,KAAK,CAAC;AACN;AACO,SAAS,aAAa,CAAC,OAAO,EAAE;AACvC,IAAI,IAAI,OAAO,CAAC,cAAc,EAAE;AAChC,QAAQ;AACR,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE;AAChC,QAAQ;AACR,IAAI,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO;AAC9B,IAAI,MAAM,uBAAuB,GAAG,CAAC,CAAC,MAAM,CAAC,SAAS;AACtD,IAAI,MAAM,qBAAqB,GAAG,MAAM,CAAC,aAAa;AACtD,IAAI,MAAM,CAAC,SAAS,GAAG,IAAI;AAC3B,IAAI,MAAM,CAAC,aAAa,GAAG,MAAM;AACjC,IAAI,MAAM,QAAQ,GAAG,CAAC,KAAK,KAAK,qBAAqB,CAAC,OAAO,EAAE,KAAK,CAAC;AACrE,IAAI,MAAM,CAAC,EAAE,CAAC,YAAY,EAAE,QAAQ,CAAC;AACrC,IAAI,MAAM,OAAO,GAAG;AACpB,QAAQ,IAAI,EAAE,MAAM;AACpB,QAAQ,uBAAuB;AAC/B,QAAQ,qBAAqB;AAC7B,QAAQ,QAAQ,EAAE,CAAC,EAAE,SAAS,EAAE,YAAY,EAAE,QAAQ,EAAE,CAAC;AACzD,QAAQ,OAAO,EAAE,MAAM;AACvB,YAAY,IAAI;AAChB,gBAAgB,MAAM,CAAC,GAAG,CAAC,YAAY,EAAE,QAAQ,CAAC;AAClD,YAAY;AACZ,YAAY,MAAM;AAClB,YAAY;AACZ,YAAY,MAAM,CAAC,SAAS,GAAG,uBAAuB;AACtD,YAAY,MAAM,CAAC,aAAa,GAAG,qBAAqB,KAAK,IAAI,IAAI,qBAAqB,KAAK,MAAM,GAAG,qBAAqB,GAAG,SAAS;AACzI,QAAQ,CAAC;AACT,KAAK;AACL,IAAI,OAAO,CAAC,cAAc,CAAC,OAAO,CAAC;AACnC,IAAI,OAAO,CAAC,QAAQ,EAAE;AACtB;AACO,SAAS,YAAY,CAAC,OAAO,EAAE;AACtC,IAAI,MAAM,OAAO,GAAG,OAAO,CAAC,cAAc,EAAE;AAC5C,IAAI,IAAI,CAAC,OAAO;AAChB,QAAQ;AACR,IAAI,yBAAyB,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;AACxD,IAAI,OAAO,CAAC,OAAO,EAAE;AACrB,IAAI,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC;AAChC,IAAI,OAAO,CAAC,MAAM,CAAC,gBAAgB,EAAE;AACrC,IAAI,OAAO,CAAC,QAAQ,EAAE;AACtB;AACO,SAAS,yBAAyB,CAAC,OAAO,EAAE,OAAO,EAAE;AAC5D,IAAI,IAAI,EAAE;AACV,IAAI,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,eAAe,EAAE;AACnD,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC;AAClD,QAAQ;AACR,IAAI,MAAM,UAAU,GAAG,MAAM;AAC7B,IAAI,IAAI,UAAU,CAAC,SAAS,KAAK,IAAI;AACrC,QAAQ;AACR,IAAI,UAAU,CAAC,4BAA4B,GAAG,CAAC,OAAO,CAAC,MAAM;AAC7D,IAAI,CAAC,EAAE,GAAG,UAAU,CAAC,WAAW,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,MAAM,GAAG,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC;AAC1F,IAAI,OAAO,CAAC,MAAM,CAAC,gBAAgB,EAAE;AACrC;AACO,SAAS,sCAAsC,CAAC,OAAO,EAAE,WAAW,EAAE;AAC7E,IAAI,WAAW,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAC,OAAO,CAAC,CAAC,UAAU,KAAK;AACvE,QAAQ,yBAAyB,CAAC,OAAO,EAAE,UAAU,CAAC;AACtD,IAAI,CAAC,CAAC;AACN;;ACrOO,MAAM,OAAO,CAAC;AACrB,IAAI,WAAW,CAAC,OAAO,EAAE,IAAI,EAAE;AAC/B,QAAQ,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,SAAS,EAAE;AAC/C,YAAY,UAAU,EAAE,IAAI;AAC5B,YAAY,YAAY,EAAE,IAAI;AAC9B,YAAY,QAAQ,EAAE,IAAI;AAC1B,YAAY,KAAK,EAAE;AACnB,SAAS,CAAC;AACV,QAAQ,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE;AAC5C,YAAY,UAAU,EAAE,IAAI;AAC5B,YAAY,YAAY,EAAE,IAAI;AAC9B,YAAY,QAAQ,EAAE,IAAI;AAC1B,YAAY,KAAK,EAAE;AACnB,SAAS,CAAC;AACV,QAAQ,IAAI,CAAC,OAAO,GAAG,OAAO;AAC9B,QAAQ,IAAI,CAAC,IAAI,GAAG,IAAI;AACxB,IAAI;AACJ;AACO,MAAM,cAAc,CAAC;AAC5B,IAAI,WAAW,CAAC,OAAO,GAAG,EAAE,EAAE;AAC9B,QAAQ,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,SAAS,EAAE;AAC/C,YAAY,UAAU,EAAE,IAAI;AAC5B,YAAY,YAAY,EAAE,IAAI;AAC9B,YAAY,QAAQ,EAAE,IAAI;AAC1B,YAAY,KAAK,EAAE;AACnB,SAAS,CAAC;AACV,QAAQ,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,cAAc,EAAE;AACpD,YAAY,UAAU,EAAE,IAAI;AAC5B,YAAY,YAAY,EAAE,IAAI;AAC9B,YAAY,QAAQ,EAAE,IAAI;AAC1B,YAAY,KAAK,EAAE;AACnB,SAAS,CAAC;AACV,QAAQ,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,cAAc,EAAE;AACpD,YAAY,UAAU,EAAE,IAAI;AAC5B,YAAY,YAAY,EAAE,IAAI;AAC9B,YAAY,QAAQ,EAAE,IAAI;AAC1B,YAAY,KAAK,EAAE;AACnB,SAAS,CAAC;AACV,QAAQ,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,oBAAoB,EAAE;AAC1D,YAAY,UAAU,EAAE,IAAI;AAC5B,YAAY,YAAY,EAAE,IAAI;AAC9B,YAAY,QAAQ,EAAE,IAAI;AAC1B,YAAY,KAAK,EAAE;AACnB,SAAS,CAAC;AACV,QAAQ,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,aAAa,EAAE;AACnD,YAAY,UAAU,EAAE,IAAI;AAC5B,YAAY,YAAY,EAAE,IAAI;AAC9B,YAAY,QAAQ,EAAE,IAAI;AAC1B,YAAY,KAAK,EAAE,OAAO,CAAC,OAAO;AAClC,SAAS,CAAC;AACV,QAAQ,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,SAAS,EAAE;AAC/C,YAAY,UAAU,EAAE,IAAI;AAC5B,YAAY,YAAY,EAAE,IAAI;AAC9B,YAAY,QAAQ,EAAE,IAAI;AAC1B,YAAY,KAAK,EAAE;AACnB,SAAS,CAAC;AACV,QAAQ,MAAM,iBAAiB,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE;AACrF,QAAQ,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,iBAAiB,CAAC;AACrD,IAAI;AACJ,IAAI,MAAM,OAAO,CAAC,OAAO,EAAE;AAC3B,QAAQ,IAAI,CAAC,kBAAkB,IAAI,CAAC;AACpC,QAAQ,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY;AAC5D,YAAY,IAAI;AAChB,gBAAgB,IAAI,IAAI,CAAC,YAAY,EAAE;AACvC,oBAAoB,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC;AAC3F,gBAAgB;AAChB,gBAAgB,IAAI,CAAC,YAAY,GAAG,IAAI;AACxC,gBAAgB,IAAI;AACpB,oBAAoB,MAAM,OAAO,CAAC,OAAO,EAAE;AAC3C,oBAAoB,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAE,mBAAmB,EAAE,IAAI,EAAE,CAAC;AAC5E,gBAAgB;AAChB,wBAAwB;AACxB,oBAAoB,IAAI,CAAC,YAAY,GAAG,KAAK;AAC7C,gBAAgB;AAChB,YAAY;AACZ,oBAAoB;AACpB,gBAAgB,IAAI,CAAC,kBAAkB,IAAI,CAAC;AAC5C,YAAY;AACZ,QAAQ,CAAC,CAAC;AACV,QAAQ,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;AACrD,QAAQ,OAAO,SAAS;AACxB,IAAI;AACJ,IAAI,IAAI,CAAC,OAAO,EAAE;AAClB,QAAQ,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC;AACjC,IAAI;AACJ,IAAI,KAAK,GAAG;AACZ,QAAQ,IAAI,CAAC,OAAO,GAAG,EAAE;AACzB,QAAQ,IAAI,CAAC,YAAY,GAAG,EAAE;AAC9B,QAAQ,IAAI,CAAC,YAAY,GAAG,KAAK;AACjC,QAAQ,IAAI,CAAC,kBAAkB,GAAG,CAAC;AACnC,QAAQ,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,OAAO,EAAE;AAC5C,IAAI;AACJ,IAAI,OAAO,GAAG;AACd,QAAQ,OAAO,IAAI,CAAC,YAAY,IAAI,CAAC;AACrC,IAAI;AACJ,IAAI,OAAO,GAAG;AACd,QAAQ,OAAO,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC;AAC1D,IAAI;AACJ,IAAI,MAAM,IAAI,GAAG;AACjB,QAAQ,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,kBAAkB,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AAC/E,YAAY;AACZ,QAAQ,IAAI,CAAC,YAAY,GAAG,IAAI;AAChC,QAAQ,IAAI;AACZ,YAAY,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC;AACvD,YAAY,IAAI,CAAC,GAAG;AACpB,gBAAgB;AAChB,YAAY,MAAM,GAAG,CAAC,IAAI,EAAE;AAC5B,YAAY,IAAI,CAAC,YAAY,EAAE;AAC/B,QAAQ;AACR,gBAAgB;AAChB,YAAY,IAAI,CAAC,YAAY,GAAG,KAAK;AACrC,QAAQ;AACR,IAAI;AACJ,IAAI,MAAM,IAAI,GAAG;AACjB,QAAQ,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,kBAAkB,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AAC/E,YAAY;AACZ,QAAQ,IAAI,CAAC,YAAY,GAAG,IAAI;AAChC,QAAQ,IAAI;AACZ,YAAY,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;AAC3D,YAAY,IAAI,CAAC,GAAG;AACpB,gBAAgB;AAChB,YAAY,MAAM,GAAG,CAAC,OAAO,EAAE;AAC/B,YAAY,IAAI,CAAC,YAAY,EAAE;AAC/B,QAAQ;AACR,gBAAgB;AAChB,YAAY,IAAI,CAAC,YAAY,GAAG,KAAK;AACrC,QAAQ;AACR,IAAI;AACJ,IAAI,aAAa,GAAG;AACpB,QAAQ,IAAI,CAAC,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,kBAAkB,KAAK,CAAC;AAC/D,YAAY;AACZ,QAAQ,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC;AAC/E,IAAI;AACJ,IAAI,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE;AAClC,QAAQ,IAAI,EAAE,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC;AAC5F,YAAY,IAAI,CAAC,aAAa,EAAE;AAChC,QAAQ,IAAI,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;AACzD,YAAY,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;AACvE,QAAQ;AACR,QAAQ,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC;AAClC,QAAQ,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE;AAChD,YAAY,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE;AAChC,QAAQ;AACR,aAAa;AACb,YAAY,IAAI,CAAC,YAAY,EAAE;AAC/B,QAAQ;AACR,IAAI;AACJ;;AC5IO,MAAM,qBAAqB,GAAG,MAAM,CAAC,gCAAgC,CAAC;AACtE,eAAe,mBAAmB,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE;AACvE,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AACtB,IAAI,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,EAAE;AACrC,IAAI,IAAI,CAAC,UAAU,IAAI,CAAC,MAAM;AAC9B,QAAQ;AACR,IAAI,IAAI,MAAM,CAAC,UAAU,EAAE;AAC3B,QAAQ;AACR,IAAI,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,eAAe,EAAE,OAAO,CAAC;AAC7D,QAAQ;AACR,IAAI,MAAM,sBAAsB,GAAG,MAAM,CAAC,8BAA8B,EAAE;AAC1E,IAAI,MAAM,OAAO,GAAG,MAAM,CAAC,oBAAoB,CAAC,sBAAsB,KAAK,IAAI,IAAI,sBAAsB,KAAK,MAAM,GAAG,sBAAsB,GAAG,eAAe,EAAE,sBAAsB,KAAK,MAAM,IAAI,sBAAsB,KAAK,MAAM,CAAC;AACxO,IAAI,MAAM,aAAa,GAAG,MAAM,CAAC,gBAAgB,EAAE;AACnD,IAAI,MAAM,qBAAqB,GAAG,MAAM,CAAC,0BAA0B,EAAE;AACrE,IAAI,MAAM,2BAA2B,GAAG,MAAM,CAAC,gCAAgC,EAAE;AACjF,IAAI,IAAI;AACR,QAAQ,MAAM,aAAa,GAAG,MAAMC,aAAiB,CAAC;AACtD,YAAY,MAAM;AAClB,YAAY,UAAU;AACtB,YAAY,aAAa,EAAE,CAAC,OAAO,EAAE,QAAQ,KAAK,MAAM,CAAC,aAAa,CAAC,OAAO,EAAE,QAAQ,CAAC;AACzF,YAAY,eAAe,EAAE,MAAM,CAAC,UAAU,EAAE,CAAC,eAAe;AAChE,YAAY,yBAAyB,EAAE,MAAM,CAAC,UAAU,EAAE,CAAC,kBAAkB;AAC7E,YAAY,iBAAiB,EAAE,4BAA4B,CAAC,OAAO,CAAC,GAAG,SAAS,GAAG,QAAQ;AAC3F,SAAS,CAAC;AACV,QAAQ,IAAI,MAAM,CAAC,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE;AACtD,YAAY;AACZ,QAAQ,MAAM,CAAC,iBAAiB,EAAE;AAClC,QAAQ,MAAM,CAAC,gBAAgB,CAAC,aAAa,CAAC,aAAa,CAAC;AAC5D,QAAQ,MAAM,aAAa,GAAG,aAAa,CAAC,aAAa;AACzD,QAAQ,IAAI,aAAa,EAAE;AAC3B,YAAY,aAAa,CAAC,GAAG,CAAC;AAC9B,gBAAgB,OAAO,EAAE,MAAM;AAC/B,gBAAgB,OAAO,EAAE,KAAK;AAC9B,gBAAgB,UAAU,EAAE,KAAK;AACjC,gBAAgB,OAAO,EAAE,KAAK;AAC9B,gBAAgB,WAAW,EAAE,KAAK;AAClC,gBAAgB,WAAW,EAAE,SAAS;AACtC,aAAa,CAAC;AACd,YAAY,CAAC,EAAE,GAAG,MAAM,CAAC,SAAS,EAAE,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,gBAAgB,CAAC,aAAa,CAAC;AAC7G,QAAQ;AACR,QAAQ,MAAM,CAAC,cAAc,CAAC,aAAa,CAAC,SAAS,CAAC;AACtD,QAAQ,MAAM,CAAC,oBAAoB,CAAC,aAAa,CAAC,eAAe,CAAC;AAClE,QAAQ,MAAM,WAAW,GAAG,aAAa,CAAC,WAAW;AACrD,QAAQ,IAAI,WAAW,EAAE;AACzB,YAAY,MAAM,CAAC,eAAe,CAAC,WAAW,CAAC,YAAY,CAAC;AAC5D,YAAY,MAAM,CAAC,kBAAkB,CAAC,WAAW,CAAC,eAAe,CAAC;AAClE,YAAY,MAAM,CAAC,iBAAiB,CAAC,WAAW,CAAC,cAAc,CAAC;AAChE,QAAQ;AACR,QAAQ,IAAI,aAAa,EAAE;AAC3B,YAAY,MAAM,CAAC,uBAAuB,CAAC,WAAW,IAAI,sBAAsB,IAAI;AACpF,mBAAmB,CAAC,EAAE,GAAG,WAAW,CAAC,oBAAoB,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,EAAE,GAAG,IAAI;AAChG,kBAAkB,MAAM,CAAC,yBAAyB,EAAE,CAAC;AACrD,YAAY,MAAM,CAAC,wBAAwB,CAAC,CAAC,EAAE,GAAG,WAAW,KAAK,IAAI,IAAI,WAAW,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,WAAW,CAAC,iBAAiB,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;AACjL,QAAQ;AACR,aAAa;AACb,YAAY,MAAM,CAAC,uBAAuB,CAAC,IAAI,CAAC;AAChD,YAAY,MAAM,CAAC,wBAAwB,CAAC,IAAI,CAAC;AACjD,QAAQ;AACR,QAAQ,MAAM,CAAC,wBAAwB,CAAC,CAAC,CAAC,aAAa,CAAC;AACxD,QAAQ,IAAI,aAAa,IAAI,MAAM,CAAC,0CAA0C,EAAE,EAAE;AAClF,YAAY,MAAM,CAAC,6BAA6B,CAAC,EAAE,0BAA0B,EAAE,KAAK,EAAE,CAAC;AACvF,YAAY,MAAM,CAAC,qCAAqC,CAAC,aAAa,CAAC;AACvE,QAAQ;AACR,QAAQ,IAAI,aAAa;AACzB,YAAY,MAAM,CAAC,yCAAyC,EAAE;AAC9D,QAAQ,MAAM,aAAa,GAAG,aAAa,CAAC,KAAK;AACjD,QAAQ,MAAM,CAAC,WAAW,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,UAAU,KAAK,CAAC,QAAQ,IAAI,UAAU,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,GAAG,UAAU,GAAG,QAAQ,EAAE,IAAI,CAAC,CAAC;AAC1J,QAAQ,aAAa,CAAC,OAAO,CAAC,CAAC,UAAU,KAAK;AAC9C,YAAY,wBAAwB,CAAC,UAAU,CAAC;AAChD,YAAY,yBAAyB,CAAC,UAAU,CAAC;AACjD,QAAQ,CAAC,CAAC;AACV,QAAQ,2BAA2B,CAAC,aAAa,CAAC,WAAW,CAAC;AAC9D,QAAQ,sCAAsC,CAAC,MAAM,CAAC,0BAA0B,EAAE,EAAE,aAAa,CAAC,WAAW,CAAC;AAC9G,QAAQ,MAAM,CAAC,eAAe,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC;AAC7D,QAAQ,CAAC,EAAE,GAAG,MAAM,CAAC,SAAS,EAAE,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,EAAE;AACrF,QAAQ,MAAM,CAAC,YAAY,EAAE;AAC7B,QAAQ,MAAM,CAAC,cAAc,EAAE;AAC/B,QAAQ,MAAM,CAAC,oBAAoB,EAAE;AACrC,QAAQ,MAAM,CAAC,QAAQ,EAAE;AACzB,QAAQ,IAAI,aAAa,IAAI,aAAa,KAAK,MAAM,CAAC,gBAAgB,EAAE,EAAE;AAC1E,YAAY,MAAM,CAAC,gBAAgB,CAAC,aAAa,EAAE,OAAO,CAAC;AAC3D,QAAQ;AACR,QAAQ,IAAI,qBAAqB,KAAK,MAAM,CAAC,0BAA0B,EAAE,EAAE;AAC3E,YAAY,MAAM,CAAC,gBAAgB,CAAC,OAAO,CAAC;AAC5C,QAAQ;AACR,QAAQ,IAAI,2BAA2B,KAAK,MAAM,CAAC,gCAAgC,EAAE,EAAE;AACvF,YAAY,MAAM,CAAC,sBAAsB,CAAC,OAAO,CAAC;AAClD,QAAQ;AACR,QAAQ,MAAM,CAAC,gBAAgB,CAAC,OAAO,CAAC;AACxC,QAAQ,sBAAsB,CAAC,MAAM,EAAE,aAAa,EAAE,WAAW,EAAE,OAAO,CAAC;AAC3E,IAAI;AACJ,IAAI,OAAO,KAAK,EAAE;AAClB,QAAQ,WAAW,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE,KAAK,EAAE,iCAAiC,CAAC;AAClF,QAAQ,MAAM,KAAK;AACnB,IAAI;AACJ;AACA,SAAS,4BAA4B,CAAC,OAAO,EAAE;AAC/C,IAAI,OAAO,CAAC,EAAE,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAAC;AAC/F;AACO,SAAS,eAAe,CAAC,MAAM,EAAE,OAAO,EAAE;AACjD,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE;AAClB,IAAI,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,EAAE;AACrC,IAAI,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,uBAAuB,EAAE;AACnD,QAAQ;AACR,IAAI,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,WAAW,EAAE,OAAO,CAAC;AACzD,QAAQ;AACR,IAAI,MAAM,SAAS,GAAG,MAAM,CAAC,eAAe,EAAE;AAC9C,IAAI,MAAM,UAAU,GAAG,wBAAwB,CAAC,MAAM,CAAC;AACvD,IAAI,MAAM,gBAAgB,GAAG,8BAA8B,CAAC,MAAM,CAAC;AACnE,IAAI,MAAM,CAAC,iBAAiB,EAAE;AAC9B,IAAI,IAAI;AACR,QAAQ,MAAM,KAAK,GAAGC,SAAa,CAAC;AACpC,YAAY,MAAM;AAClB,YAAY,YAAY,EAAE,CAAC,EAAE,GAAG,UAAU,KAAK,IAAI,IAAI,UAAU,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,UAAU,CAAC,MAAM,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,EAAE,GAAG,IAAI;AAChJ,YAAY,kBAAkB,EAAE,CAAC,EAAE,GAAG,gBAAgB,KAAK,IAAI,IAAI,gBAAgB,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,gBAAgB,CAAC,YAAY,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,EAAE,GAAG,IAAI;AAC9K,YAAY,YAAY,EAAE,MAAM,CAAC,eAAe,EAAE;AAClD,YAAY,eAAe,EAAE,MAAM,CAAC,kBAAkB,EAAE;AACxD,YAAY,cAAc,EAAE,MAAM,CAAC,iBAAiB,EAAE;AACtD,YAAY,oBAAoB,EAAE,MAAM,CAAC,uBAAuB,EAAE;AAClE,YAAY,iBAAiB,EAAE,MAAM,CAAC,2BAA2B,EAAE;AACnE,SAAS,CAAC;AACV,QAAQ,MAAM,MAAM,GAAG,CAAC,EAAE,GAAG,MAAM,CAAC,eAAe,EAAE,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,EAAE,GAAG,KAAK;AAC7F,QAAQ,IAAI,KAAK,KAAK,MAAM;AAC5B,YAAY;AACZ,QAAQ,MAAM,GAAG,GAAG,IAAI,OAAO,CAAC,YAAY;AAC5C,YAAY,MAAM,mBAAmB,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,wBAAwB,EAAE,CAAC;AACvF,QAAQ,CAAC,EAAE,YAAY;AACvB,YAAY,MAAM,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,wBAAwB,EAAE,CAAC;AACxF,QAAQ,CAAC,CAAC;AACV,QAAQ,MAAM,CAAC,iBAAiB,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC;AAC5C,QAAQ,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC;AACrC,IAAI;AACJ,IAAI,OAAO,KAAK,EAAE;AAClB,QAAQ,aAAa,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE,KAAK,EAAE,oCAAoC,CAAC;AACvF,IAAI;AACJ,YAAY;AACZ,QAAQ,gCAAgC,CAAC,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,gBAAgB,CAAC;AACzF,QAAQ,MAAM,CAAC,QAAQ,EAAE;AACzB,IAAI;AACJ;AACO,SAAS,qBAAqB,CAAC,MAAM,EAAE;AAC9C,IAAI,IAAI,EAAE,EAAE,EAAE;AACd,IAAI,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,EAAE;AACrC,IAAI,IAAI,CAAC,MAAM,EAAE;AACjB,QAAQ,MAAM,IAAI,KAAK,CAAC,4EAA4E,CAAC;AACrG,IAAI;AACJ,IAAI,MAAM,UAAU,GAAG,wBAAwB,CAAC,MAAM,CAAC;AACvD,IAAI,MAAM,gBAAgB,GAAG,8BAA8B,CAAC,MAAM,CAAC;AACnE,IAAI,MAAM,CAAC,iBAAiB,EAAE;AAC9B,IAAI,OAAOA,SAAa,CAAC;AACzB,QAAQ,MAAM;AACd,QAAQ,YAAY,EAAE,CAAC,EAAE,GAAG,UAAU,KAAK,IAAI,IAAI,UAAU,KAAK,MAAM,GAAG,MAAM,GAAG,UAAU,CAAC,MAAM,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,IAAI;AAC5I,QAAQ,kBAAkB,EAAE,CAAC,EAAE,GAAG,gBAAgB,KAAK,IAAI,IAAI,gBAAgB,KAAK,MAAM,GAAG,MAAM,GAAG,gBAAgB,CAAC,YAAY,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,IAAI;AAC1K,QAAQ,YAAY,EAAE,MAAM,CAAC,eAAe,EAAE;AAC9C,QAAQ,eAAe,EAAE,MAAM,CAAC,kBAAkB,EAAE;AACpD,QAAQ,cAAc,EAAE,MAAM,CAAC,iBAAiB,EAAE;AAClD,QAAQ,oBAAoB,EAAE,MAAM,CAAC,uBAAuB,EAAE;AAC9D,QAAQ,iBAAiB,EAAE,MAAM,CAAC,2BAA2B,EAAE;AAC/D,KAAK,CAAC;AACN;AACA,SAAS,sBAAsB,CAAC,MAAM,EAAE,aAAa,EAAE,WAAW,EAAE,OAAO,EAAE;AAC7E,IAAI,MAAM,MAAM,GAAG,MAAM,CAAC,aAAa,CAAC,eAAe,CAAC;AACxD,IAAI,MAAM,YAAY,GAAG,WAAW,KAAK,IAAI,IAAI,WAAW,KAAK,MAAM,GAAG,MAAM,GAAG,WAAW,CAAC,YAAY;AAC3G,IAAI,MAAM,kBAAkB,GAAG,WAAW,KAAK,IAAI,IAAI,WAAW,KAAK,MAAM,GAAG,MAAM,GAAG,WAAW,CAAC,kBAAkB;AACvH,IAAI,IAAI,CAAC,WAAW,KAAK,IAAI,IAAI,WAAW,KAAK,MAAM,GAAG,MAAM,GAAG,WAAW,CAAC,gBAAgB,MAAM,MAAM,IAAI,OAAO,YAAY,KAAK,QAAQ,EAAE;AACjJ,QAAQ,MAAM,UAAU,GAAG,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,UAAU,KAAK,UAAU,CAAC,MAAM,KAAK,YAAY,CAAC;AACvG,QAAQ,IAAI,UAAU,EAAE;AACxB,YAAY,MAAM,CAAC,0BAA0B,CAAC,OAAO,EAAE,MAAM;AAC7D,gBAAgB,MAAM,CAAC,eAAe,CAAC,UAAU,CAAC;AAClD,gBAAgB,MAAM,CAAC,sBAAsB,CAAC,CAAC,UAAU,CAAC,CAAC;AAC3D,YAAY,CAAC,CAAC;AACd,QAAQ;AACR,IAAI;AACJ,SAAS,IAAI,CAAC,WAAW,KAAK,IAAI,IAAI,WAAW,KAAK,MAAM,GAAG,MAAM,GAAG,WAAW,CAAC,gBAAgB,MAAM,YAAY;AACtH,QAAQ,OAAO,kBAAkB,KAAK,QAAQ,EAAE;AAChD,QAAQ,MAAM,gBAAgB,GAAG,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,UAAU,KAAK,UAAU,CAAC,YAAY,KAAK,kBAAkB,CAAC;AAC/H,QAAQ,IAAI,gBAAgB,EAAE;AAC9B,YAAY,MAAM,CAAC,0BAA0B,CAAC,OAAO,EAAE,MAAM;AAC7D,gBAAgB,MAAM,CAAC,eAAe,CAAC,gBAAgB,CAAC;AACxD,gBAAgB,MAAM,CAAC,sBAAsB,CAAC,CAAC,gBAAgB,CAAC,CAAC;AACjE,YAAY,CAAC,CAAC;AACd,QAAQ;AACR,IAAI;AACJ;AACA,SAAS,wBAAwB,CAAC,MAAM,EAAE;AAC1C,IAAI,MAAM,YAAY,GAAG,MAAM,CAAC,eAAe,EAAE;AACjD,IAAI,OAAO,YAAY,IAAI,YAAY,CAAC,YAAY,CAAC,GAAG,YAAY,GAAG,IAAI;AAC3E;AACA,SAAS,8BAA8B,CAAC,MAAM,EAAE;AAChD,IAAI,MAAM,YAAY,GAAG,MAAM,CAAC,eAAe,EAAE;AACjD,IAAI,OAAO,YAAY,IAAI,kBAAkB,CAAC,YAAY,CAAC,GAAG,YAAY,GAAG,IAAI;AACjF;AACA,SAAS,gCAAgC,CAAC,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,gBAAgB,EAAE;AAC3F,IAAI,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,EAAE;AACrC,IAAI,IAAI,CAAC,MAAM;AACf,QAAQ;AACR,IAAI,MAAM,aAAa,GAAG,SAAS,IAAI,YAAY,CAAC,SAAS,CAAC,GAAG,SAAS,GAAG,UAAU;AACvF,IAAI,MAAM,mBAAmB,GAAG,SAAS,IAAI,kBAAkB,CAAC,SAAS,CAAC,GAAG,SAAS,GAAG,gBAAgB;AACzG,IAAI,IAAI,aAAa,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE;AACtE,QAAQ,MAAM,CAAC,eAAe,CAAC,aAAa,CAAC;AAC7C,QAAQ,MAAM,CAAC,gBAAgB,CAAC,aAAa,CAAC;AAC9C,QAAQ,MAAM,CAAC,uBAAuB,CAAC,aAAa,CAAC;AACrD,QAAQ;AACR,IAAI;AACJ,IAAI,IAAI,mBAAmB,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC,EAAE;AAClF,QAAQ,MAAM,CAAC,eAAe,CAAC,mBAAmB,CAAC;AACnD,QAAQ,MAAM,CAAC,6BAA6B,CAAC,mBAAmB,CAAC;AACjE,IAAI;AACJ;;ACvNA,SAAS,qBAAqB,CAAC,KAAK,EAAE;AACtC,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ;AACnD,QAAQ,OAAO,KAAK;AACpB,IAAI,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM;AAClC,IAAI,OAAO,OAAO,SAAS,KAAK,UAAU;AAC1C;AACA,SAAS,gBAAgB,CAAC,WAAW,EAAE;AACvC,IAAI,OAAO,WAAW,CAAC,MAAM;AAC7B;AACO,SAAS,YAAY,CAAC,eAAe,EAAE,YAAY,EAAE,WAAW,GAAG,UAAU,EAAE;AACtF,IAAI,IAAI,EAAE;AACV,IAAI,IAAI,qBAAqB,CAAC,eAAe,CAAC,EAAE;AAChD,QAAQ,OAAO;AACf,YAAY,MAAM,EAAE,eAAe;AACnC,YAAY,cAAc,EAAE,IAAI;AAChC,YAAY,OAAO,EAAE,YAAY,KAAK,IAAI,IAAI,YAAY,KAAK,MAAM,GAAG,YAAY,GAAG,EAAE;AACzF,SAAS;AACT,IAAI;AACJ,IAAI,MAAM,OAAO,GAAG,CAAC,EAAE,GAAG,eAAe,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,EAAE;AAC9E,IAAI,MAAM,YAAY,GAAG,gBAAgB,CAAC,WAAW,CAAC;AACtD,IAAI,IAAI,qBAAqB,CAAC,YAAY,CAAC,EAAE;AAC7C,QAAQ,OAAO;AACf,YAAY,MAAM,EAAE,YAAY;AAChC,YAAY,cAAc,EAAE,IAAI;AAChC,YAAY,OAAO;AACnB,SAAS;AACT,IAAI;AACJ,IAAI,OAAO,CAAC,KAAK,CAAC,+CAA+C;AACjE,QAAQ,qDAAqD;AAC7D,QAAQ,oDAAoD,CAAC;AAC7D,IAAI,OAAO;AACX,QAAQ,MAAM,EAAE,IAAI;AACpB,QAAQ,cAAc,EAAE,KAAK;AAC7B,QAAQ,OAAO;AACf,KAAK;AACL;;AChCA,SAASJ,yBAAuB,CAAC,MAAM,EAAE;AACzC,IAAI,IAAI,CAAC,MAAM;AACf,QAAQ,OAAO,KAAK;AACpB,IAAI,MAAM,IAAI,GAAG,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,EAAE;AACjF,IAAI,IAAI,IAAI,KAAK,iBAAiB;AAClC,QAAQ,OAAO,IAAI;AACnB,IAAI,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM;AAChC,IAAI,QAAQ,OAAO,MAAM,KAAK,UAAU;AACxC,SAAS,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,iBAAiB,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;AAC1F;AACO,SAAS,yBAAyB,CAAC,MAAM,EAAE;AAClD,IAAI,MAAM,MAAM,GAAG,MAAM,CAAC,eAAe,EAAE;AAC3C,IAAI,IAAI,CAAC,MAAM;AACf,QAAQ,OAAO,EAAE;AACjB,IAAI,IAAI,CAACA,yBAAuB,CAAC,MAAM,CAAC;AACxC,QAAQ,OAAO,CAAC,MAAM,CAAC;AACvB,IAAI,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU;AACxC,IAAI,OAAO,OAAO,UAAU,KAAK,UAAU,GAAG,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE;AAC1E;AACO,SAAS,cAAc,CAAC,MAAM,EAAE;AACvC,IAAI,OAAO,MAAM,CAAC,UAAU,EAAE,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC,KAAK,EAAE;AACjE;AACA,SAAS,uBAAuB,CAAC,WAAW,EAAE,KAAK,EAAE;AACrD,IAAI,MAAM,OAAO,GAAG,WAAW,CAAC,KAAK,EAAE;AACvC,IAAI,OAAO,KAAK,KAAK,eAAe,GAAG,OAAO,GAAG,OAAO,CAAC,OAAO,EAAE;AAClE;AACO,SAAS,sBAAsB,CAAC,MAAM,EAAE;AAC/C,IAAI,OAAO,yBAAyB,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,kBAAkB,CAAC;AACvE;AACA,SAAS,kBAAkB,CAAC,UAAU,EAAE;AACxC,IAAI,OAAO,IAAI,CAAC,SAAS,CAAC;AAC1B,QAAQ,IAAI,EAAE,UAAU,CAAC,IAAI;AAC7B,QAAQ,QAAQ,EAAE,UAAU,CAAC,QAAQ;AACrC,QAAQ,UAAU,EAAE,UAAU,CAAC,UAAU;AACzC,QAAQ,UAAU,EAAE,UAAU,CAAC,UAAU;AACzC,QAAQ,IAAI,EAAE,UAAU,CAAC,IAAI;AAC7B,QAAQ,eAAe,EAAE,UAAU,CAAC,eAAe;AACnD,QAAQ,SAAS,EAAE,UAAU,CAAC,SAAS;AACvC,QAAQ,KAAK,EAAE,UAAU,CAAC,KAAK;AAC/B,QAAQ,MAAM,EAAE,UAAU,CAAC,MAAM;AACjC,QAAQ,WAAW,EAAE,UAAU,CAAC,WAAW;AAC3C,QAAQ,OAAO,EAAE,UAAU,CAAC,OAAO;AACnC,QAAQ,OAAO,EAAE,UAAU,CAAC,OAAO;AACnC,QAAQ,UAAU,EAAE,UAAU,CAAC,UAAU;AACzC,QAAQ,OAAO,EAAE,UAAU,CAAC,OAAO;AACnC,QAAQ,WAAW,EAAE,UAAU,CAAC,WAAW;AAC3C,QAAQ,QAAQ,EAAE,sBAAsB,CAAC,UAAU;AACnD,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS;AACvB,QAAQ,gBAAgB,EAAE,UAAU,CAAC,gBAAgB;AACrD,QAAQ,gBAAgB,EAAE,UAAU,CAAC,gBAAgB;AACrD,QAAQ,oBAAoB,EAAE,UAAU,CAAC,oBAAoB;AAC7D,QAAQ,iBAAiB,EAAE,UAAU,CAAC,iBAAiB;AACvD,QAAQ,qBAAqB,EAAE,UAAU,CAAC,qBAAqB;AAC/D,QAAQ,kBAAkB,EAAE,UAAU,CAAC,kBAAkB;AACzD,KAAK,CAAC;AACN;AACA,SAAS,kBAAkB,CAAC,UAAU,EAAE,KAAK,EAAE;AAC/C,IAAI,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC;AACzB;AACA,SAAS,8BAA8B,CAAC,OAAO,EAAE;AACjD,IAAI,IAAI,EAAE,EAAE,EAAE;AACd,IAAI,OAAO,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,OAAO,CAAC,SAAS,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,MAAM,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,OAAO,CAAC,MAAM;AAChJ;AACA,SAAS,oBAAoB,CAAC,UAAU,EAAE,MAAM,EAAE;AAClD,IAAI,MAAM,KAAK,GAAG,EAAE;AACpB,IAAI,MAAM,GAAG,GAAG,MAAM;AACtB,IAAI,IAAI,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ;AACpC,QAAQ,KAAK,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI;AAC7B,IAAI,IAAI,OAAO,GAAG,CAAC,QAAQ,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,QAAQ,GAAG,CAAC,EAAE;AAC/F,QAAQ,KAAK,CAAC,QAAQ,GAAG,GAAG,CAAC,QAAQ;AACrC,IAAI;AACJ,IAAI,IAAI,OAAO,GAAG,CAAC,UAAU,KAAK,QAAQ;AAC1C,QAAQ,KAAK,CAAC,UAAU,GAAG,GAAG,CAAC,UAAU;AACzC,IAAI,IAAI,OAAO,GAAG,CAAC,UAAU,KAAK,QAAQ,IAAI,OAAO,GAAG,CAAC,UAAU,KAAK,QAAQ,EAAE;AAClF,QAAQ,KAAK,CAAC,UAAU,GAAG,GAAG,CAAC,UAAU;AACzC,IAAI;AACJ,IAAI,IAAI,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ;AACpC,QAAQ,KAAK,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI;AAC7B,IAAI,IAAI,OAAO,GAAG,CAAC,eAAe,KAAK,QAAQ;AAC/C,QAAQ,KAAK,CAAC,eAAe,GAAG,GAAG,CAAC,eAAe;AACnD,IAAI,IAAI,GAAG,CAAC,SAAS,KAAK,MAAM;AAChC,QAAQ,GAAG,CAAC,SAAS,KAAK,QAAQ;AAClC,QAAQ,GAAG,CAAC,SAAS,KAAK,OAAO;AACjC,QAAQ,GAAG,CAAC,SAAS,KAAK,SAAS,EAAE;AACrC,QAAQ,KAAK,CAAC,SAAS,GAAG,GAAG,CAAC,SAAS;AACvC,IAAI;AACJ,IAAI,IAAI,OAAO,GAAG,CAAC,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,KAAK,GAAG,CAAC,EAAE;AACtF,QAAQ,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK;AAC/B,IAAI;AACJ,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC;AACrC,QAAQ,kBAAkB,CAAC,UAAU,EAAE,KAAK,CAAC;AAC7C;AACA,SAAS,oBAAoB,CAAC,UAAU,EAAE,MAAM,EAAE;AAClD,IAAI,MAAM,KAAK,GAAG,EAAE;AACpB,IAAI,MAAM,GAAG,GAAG,MAAM;AACtB,IAAI,IAAI,OAAO,GAAG,CAAC,MAAM,KAAK,QAAQ;AACtC,QAAQ,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM;AACjC,IAAI,IAAI,OAAO,GAAG,CAAC,WAAW,KAAK,QAAQ;AAC3C,QAAQ,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC;AACxC,QAAQ,GAAG,CAAC,WAAW,GAAG,CAAC,EAAE;AAC7B,QAAQ,KAAK,CAAC,WAAW,GAAG,GAAG,CAAC,WAAW;AAC3C,IAAI;AACJ,IAAI,IAAI,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;AACzE,QAAQ,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;AAC7D,IAAI;AACJ,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC;AACrC,QAAQ,kBAAkB,CAAC,UAAU,EAAE,KAAK,CAAC;AAC7C;AACA,SAAS,qBAAqB,CAAC,UAAU,EAAE,MAAM,EAAE;AACnD,IAAI,MAAM,KAAK,GAAG,EAAE;AACpB,IAAI,MAAM,GAAG,GAAG,MAAM;AACtB,IAAI,IAAI,OAAO,GAAG,CAAC,MAAM,KAAK,QAAQ;AACtC,QAAQ,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM;AACjC,IAAI,IAAI,OAAO,GAAG,CAAC,WAAW,KAAK,QAAQ;AAC3C,QAAQ,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC;AACxC,QAAQ,GAAG,CAAC,WAAW,GAAG,CAAC,EAAE;AAC7B,QAAQ,KAAK,CAAC,WAAW,GAAG,GAAG,CAAC,WAAW;AAC3C,IAAI;AACJ,IAAI,IAAI,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ;AACpC,QAAQ,KAAK,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI;AAC7B,IAAI,IAAI,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;AACzE,QAAQ,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;AAC7D,IAAI;AACJ,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC;AACrC,QAAQ,kBAAkB,CAAC,UAAU,EAAE,KAAK,CAAC;AAC7C;AACO,SAAS,sBAAsB,CAAC,UAAU,EAAE,MAAM,EAAE;AAC3D,IAAI,MAAM,MAAM,GAAG,kBAAkB,CAAC,UAAU,CAAC;AACjD,IAAI,MAAM,GAAG,GAAG,MAAM;AACtB,IAAI,IAAI,OAAO,GAAG,CAAC,gBAAgB,KAAK,SAAS,EAAE;AACnD,QAAQ,UAAU,CAAC,gBAAgB,GAAG,GAAG,CAAC,gBAAgB;AAC1D,IAAI;AACJ,IAAI,IAAI,OAAO,GAAG,CAAC,gBAAgB,KAAK,SAAS,EAAE;AACnD,QAAQ,UAAU,CAAC,gBAAgB,GAAG,GAAG,CAAC,gBAAgB;AAC1D,IAAI;AACJ,IAAI,MAAM,WAAW,GAAG,kBAAkB,CAAC,UAAU,CAAC;AACtD,IAAI,IAAI,CAAC,WAAW,EAAE;AACtB,QAAQ,IAAI,OAAO,GAAG,CAAC,UAAU,KAAK,SAAS,EAAE;AACjD,YAAY,UAAU,CAAC,oBAAoB,GAAG,GAAG,CAAC,UAAU;AAC5D,QAAQ;AACR,QAAQ,IAAI,OAAO,GAAG,CAAC,OAAO,KAAK,SAAS,EAAE;AAC9C,YAAY,UAAU,CAAC,iBAAiB,GAAG,GAAG,CAAC,OAAO;AACtD,QAAQ;AACR,QAAQ,IAAI,OAAO,GAAG,CAAC,WAAW,KAAK,SAAS,EAAE;AAClD,YAAY,UAAU,CAAC,qBAAqB,GAAG,GAAG,CAAC,WAAW;AAC9D,QAAQ;AACR,QAAQ,IAAI,sBAAsB,CAAC,UAAU,CAAC,EAAE;AAChD,YAAY,IAAI,OAAO,GAAG,CAAC,QAAQ,KAAK,SAAS,EAAE;AACnD,gBAAgB,UAAU,CAAC,kBAAkB,GAAG,GAAG,CAAC,QAAQ;AAC5D,YAAY;AACZ,YAAY,oBAAoB,CAAC,UAAU,EAAE,MAAM,CAAC;AACpD,QAAQ;AACR,QAAQ,IAAI,sBAAsB,CAAC,UAAU,CAAC;AAC9C,YAAY,oBAAoB,CAAC,UAAU,EAAE,MAAM,CAAC;AACpD,QAAQ,IAAI,uBAAuB,CAAC,UAAU,CAAC;AAC/C,YAAY,qBAAqB,CAAC,UAAU,EAAE,MAAM,CAAC;AACrD,IAAI;AACJ,IAAI,0BAA0B,CAAC,UAAU,CAAC;AAC1C,IAAI,OAAO,kBAAkB,CAAC,UAAU,CAAC,KAAK,MAAM;AACpD;AACO,SAAS,gBAAgB,CAAC,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE;AAChE,IAAI,MAAM,MAAM,GAAG,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,KAAK,UAAU,CAAC,YAAY,KAAK,YAAY,CAAC;AAChH,IAAI,IAAI,CAAC,MAAM;AACf,QAAQ,OAAO,KAAK;AACpB,IAAI,MAAM,OAAO,GAAG,sBAAsB,CAAC,MAAM,EAAE,MAAM,CAAC;AAC1D,IAAI,IAAI,CAAC,OAAO;AAChB,QAAQ,OAAO,KAAK;AACpB,IAAI,OAAO,CAAC,MAAM,CAAC,gBAAgB,EAAE;AACrC,IAAI,OAAO,CAAC,eAAe,EAAE;AAC7B,IAAI,OAAO,CAAC,QAAQ,EAAE;AACtB,IAAI,OAAO,IAAI;AACf;AACO,SAAS,wBAAwB,CAAC,OAAO,EAAE,MAAM,EAAE;AAC1D,IAAI,MAAM,mBAAmB,GAAG,sBAAsB,CAAC,OAAO,CAAC,MAAM,CAAC;AACtE,IAAI,IAAI,mBAAmB,CAAC,MAAM,KAAK,CAAC;AACxC,QAAQ,OAAO,KAAK;AACpB,IAAI,MAAM,OAAO,GAAG;AACpB,SAAS,GAAG,CAAC,CAAC,UAAU,KAAK,sBAAsB,CAAC,UAAU,EAAE,MAAM,CAAC;AACvE,SAAS,IAAI,CAAC,OAAO,CAAC;AACtB,IAAI,IAAI,CAAC,OAAO;AAChB,QAAQ,OAAO,KAAK;AACpB,IAAI,OAAO,CAAC,MAAM,CAAC,gBAAgB,EAAE;AACrC,IAAI,OAAO,CAAC,eAAe,EAAE;AAC7B,IAAI,OAAO,CAAC,QAAQ,EAAE;AACtB,IAAI,OAAO,IAAI;AACf;AACO,SAAS,uBAAuB,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,GAAG,EAAE,EAAE;AACxE,IAAI,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,KAAK,IAAI;AACxC,IAAI,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,UAAU,KAAK,KAAK,IAAI,oBAAoB,CAAC,UAAU,CAAC,CAAC;AAC/F,IAAI,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;AAC9B,QAAQ,OAAO,CAAC;AAChB,IAAI,KAAK,MAAM,UAAU,IAAI,SAAS,EAAE;AACxC,QAAQ,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC;AACzC,IAAI;AACJ,IAAI,OAAO,CAAC,MAAM,CAAC,mBAAmB,EAAE;AACxC,IAAI,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE;AAC9B,IAAI,IAAI,OAAO,CAAC,WAAW,KAAK,KAAK;AACrC,QAAQ,OAAO,CAAC,eAAe,EAAE;AACjC,IAAI,OAAO,CAAC,QAAQ,EAAE;AACtB,IAAI,OAAO,SAAS,CAAC,MAAM;AAC3B;AACO,SAAS,wBAAwB,CAAC,OAAO,EAAE;AAClD,IAAI,OAAO,uBAAuB,CAAC,OAAO,EAAE,sBAAsB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AACnF;AACO,SAAS,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,EAAE,EAAE;AAC5D,IAAI,OAAO,uBAAuB,CAAC,OAAO,EAAE,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;AACpF;AACO,SAAS,oBAAoB,CAAC,OAAO,EAAE;AAC9C,IAAI,MAAM,MAAM,GAAG,OAAO,CAAC,cAAc,EAAE;AAC3C,IAAI,MAAM,MAAM,GAAG,8BAA8B,CAAC,OAAO,CAAC;AAC1D,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM;AAC1B,QAAQ;AACR,IAAI,MAAM,aAAa,GAAG,MAAM,CAAC,aAAa;AAC9C,IAAI,MAAM,CAAC,SAAS,GAAG,EAAE;AACzB,IAAI,uBAAuB,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,UAAU,KAAK;AAC/F,QAAQ,MAAM,IAAI,GAAG,aAAa,CAAC,aAAa,CAAC,IAAI,CAAC;AACtD,QAAQ,IAAI,CAAC,SAAS,GAAG,iCAAiC;AAC1D,QAAQ,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC,cAAc;AACpD,QAAQ,IAAI,CAAC,OAAO,CAAC,YAAY,GAAG,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC;AACnE,QAAQ,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM;AAC7C,YAAY,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC;AACxD,YAAY,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;AACpC,gBAAgB;AAChB,YAAY,MAAM,UAAU,GAAG,8BAA8B,CAAC,OAAO,CAAC;AACtE,YAAY,IAAI,CAAC,UAAU;AAC3B,gBAAgB;AAChB,YAAY,MAAM,MAAM,GAAG,cAAc,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,YAAY,KAAK,EAAE,CAAC;AACxG,YAAY,IAAI,CAAC,MAAM;AACvB,gBAAgB;AAChB,YAAY,UAAU,CAAC,eAAe,CAAC,MAAM,CAAC;AAC9C,YAAY,OAAO,CAAC,oBAAoB,CAAC,MAAM,CAAC;AAChD,QAAQ,CAAC,CAAC;AACV,QAAQ,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC;AAChC,IAAI,CAAC,CAAC;AACN;AACO,SAAS,6BAA6B,CAAC,OAAO,EAAE,kBAAkB,EAAE;AAC3E,IAAI,MAAM,MAAM,GAAG,OAAO,CAAC,cAAc,EAAE;AAC3C,IAAI,IAAI,CAAC,MAAM;AACf,QAAQ;AACR,IAAI,MAAM,UAAU,GAAG,kBAAkB,GAAG,MAAM,CAAC,kBAAkB,CAAC,YAAY,CAAC,GAAG,IAAI;AAC1F,IAAI,MAAM,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK;AAClE,QAAQ,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,EAAE,UAAU,KAAK,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,YAAY,KAAK,UAAU,CAAC;AACxG,IAAI,CAAC,CAAC;AACN;;ACvPA,SAAS,aAAa,CAAC,KAAK,EAAE;AAC9B,IAAI,QAAQ,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;AAChC,QAAQ,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,QAAQ;AACpC,QAAQ,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,KAAK,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC5F;AACA,SAAS,QAAQ,CAAC,KAAK,EAAE;AACzB,IAAI,OAAO,KAAK;AAChB;AACA,SAAS,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE;AACpD,IAAI,OAAO,UAAU,GAAG,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE;AACzE;AACA,SAAS,SAAS,CAAC,MAAM,EAAE,KAAK,EAAE;AAClC,IAAI,IAAI,EAAE;AACV,IAAI,OAAO,CAAC,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,CAAC;AAClE;AACA,SAAS,UAAU,CAAC,QAAQ,EAAE,cAAc,EAAE,KAAK,EAAE,GAAG,EAAE;AAC1D,IAAI,QAAQ,CAAC,IAAI,CAAC;AAClB,QAAQ,KAAK,EAAE,cAAc,CAAC,KAAK,CAAC;AACpC,QAAQ,GAAG,EAAE,cAAc,CAAC,GAAG,CAAC;AAChC,KAAK,CAAC;AACN;AACA,SAAS,UAAU,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE;AAC3C,IAAI,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC;AACpB,IAAI,OAAO;AACX,QAAQ,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,KAAK,CAAC,CAAC;AACjC,YAAY,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;AAClC,YAAY,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;AACjC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC;AAC7B,QAAQ,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,KAAK,CAAC,CAAC;AACjC,YAAY,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;AAClC,YAAY,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;AACjC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC;AAC7B,KAAK;AACL;AACA,SAAS,cAAc,CAAC,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE;AAC1C,IAAI,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC;AACpB,IAAI,OAAO;AACX,QAAQ,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC;AAC/D,QAAQ,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC;AAC/D,KAAK;AACL;AACA,SAAS,eAAe,CAAC,QAAQ,EAAE,cAAc,EAAE,KAAK,EAAE,GAAG,EAAE,WAAW,EAAE;AAC5E,IAAI,MAAM,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;AAC1E,IAAI,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7E,IAAI,IAAI,QAAQ,GAAG,KAAK;AACxB,IAAI,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,IAAI,KAAK,EAAE,KAAK,IAAI,CAAC,EAAE;AACpD,QAAQ,MAAM,IAAI,GAAG,WAAW,CAAC,KAAK,GAAG,KAAK,CAAC;AAC/C,QAAQ,UAAU,CAAC,QAAQ,EAAE,cAAc,EAAE,QAAQ,EAAE,IAAI,CAAC;AAC5D,QAAQ,QAAQ,GAAG,IAAI;AACvB,IAAI;AACJ;AACO,SAAS,eAAe,CAAC,QAAQ,EAAE,cAAc,GAAG,QAAQ,EAAE;AACrE,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC;AAChC,QAAQ,OAAO,EAAE;AACjB,IAAI,MAAM,QAAQ,GAAG,EAAE;AACvB,IAAI,IAAI,OAAO,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AAChC,IAAI,IAAI,YAAY,GAAG,IAAI;AAC3B,IAAI,KAAK,MAAM,UAAU,IAAI,QAAQ,EAAE;AACvC,QAAQ,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC;AACtC,YAAY;AACZ,QAAQ,MAAM,OAAO,GAAG,UAAU,CAAC,CAAC,CAAC;AACrC,QAAQ,MAAM,OAAO,GAAG,OAAO,CAAC,WAAW,EAAE;AAC7C,QAAQ,MAAM,UAAU,GAAG,OAAO,KAAK,OAAO;AAC9C,QAAQ,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1C,QAAQ,IAAI,OAAO,KAAK,GAAG,EAAE;AAC7B,YAAY,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE;AACvE,gBAAgB,MAAM,IAAI,GAAG,eAAe,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,SAAS,CAAC,MAAM,EAAE,KAAK,GAAG,CAAC,CAAC,EAAE,OAAO,EAAE,UAAU,CAAC;AACzH,gBAAgB,IAAI,KAAK,GAAG,CAAC;AAC7B,oBAAoB,UAAU,CAAC,QAAQ,EAAE,cAAc,EAAE,OAAO,EAAE,IAAI,CAAC;AACvE,gBAAgB,OAAO,GAAG,IAAI;AAC9B,gBAAgB,IAAI,KAAK,KAAK,CAAC;AAC/B,oBAAoB,YAAY,GAAG,IAAI;AACvC,YAAY;AACZ,YAAY;AACZ,QAAQ;AACR,QAAQ,IAAI,OAAO,KAAK,GAAG,EAAE;AAC7B,YAAY,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE;AACvE,gBAAgB,MAAM,IAAI,GAAG,eAAe,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,SAAS,CAAC,MAAM,EAAE,KAAK,GAAG,CAAC,CAAC,EAAE,OAAO,EAAE,UAAU,CAAC;AACzH,gBAAgB,UAAU,CAAC,QAAQ,EAAE,cAAc,EAAE,OAAO,EAAE,IAAI,CAAC;AACnE,gBAAgB,OAAO,GAAG,IAAI;AAC9B,YAAY;AACZ,YAAY;AACZ,QAAQ;AACR,QAAQ,IAAI,OAAO,KAAK,GAAG,EAAE;AAC7B,YAAY,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;AACxC,gBAAgB,MAAM,IAAI,GAAG,EAAE,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,CAAC,GAAG,KAAK,GAAG,KAAK,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC,EAAE;AACxF,gBAAgB,UAAU,CAAC,QAAQ,EAAE,cAAc,EAAE,OAAO,EAAE,IAAI,CAAC;AACnE,gBAAgB,OAAO,GAAG,IAAI;AAC9B,YAAY;AACZ,YAAY;AACZ,QAAQ;AACR,QAAQ,IAAI,OAAO,KAAK,GAAG,EAAE;AAC7B,YAAY,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;AACxC,gBAAgB,MAAM,IAAI,GAAG,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,CAAC,GAAG,KAAK,GAAG,KAAK,EAAE;AACxF,gBAAgB,UAAU,CAAC,QAAQ,EAAE,cAAc,EAAE,OAAO,EAAE,IAAI,CAAC;AACnE,gBAAgB,OAAO,GAAG,IAAI;AAC9B,YAAY;AACZ,YAAY;AACZ,QAAQ;AACR,QAAQ,IAAI,OAAO,KAAK,GAAG,EAAE;AAC7B,YAAY,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE;AACvE,gBAAgB,MAAM,KAAK,GAAG,OAAO;AACrC,gBAAgB,MAAM,EAAE,GAAG,eAAe,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,SAAS,CAAC,MAAM,EAAE,KAAK,GAAG,CAAC,CAAC,EAAE,OAAO,EAAE,UAAU,CAAC;AACvH,gBAAgB,MAAM,EAAE,GAAG,eAAe,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,GAAG,CAAC,CAAC,EAAE,SAAS,CAAC,MAAM,EAAE,KAAK,GAAG,CAAC,CAAC,EAAE,OAAO,EAAE,UAAU,CAAC;AAC3H,gBAAgB,MAAM,GAAG,GAAG,eAAe,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,GAAG,CAAC,CAAC,EAAE,SAAS,CAAC,MAAM,EAAE,KAAK,GAAG,CAAC,CAAC,EAAE,OAAO,EAAE,UAAU,CAAC;AAC5H,gBAAgB,eAAe,CAAC,QAAQ,EAAE,cAAc,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC,KAAK,UAAU,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;AAC/G,gBAAgB,OAAO,GAAG,GAAG;AAC7B,YAAY;AACZ,YAAY;AACZ,QAAQ;AACR,QAAQ,IAAI,OAAO,KAAK,GAAG,EAAE;AAC7B,YAAY,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE;AACvE,gBAAgB,MAAM,KAAK,GAAG,OAAO;AACrC,gBAAgB,MAAM,OAAO,GAAG,eAAe,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,SAAS,CAAC,MAAM,EAAE,KAAK,GAAG,CAAC,CAAC,EAAE,OAAO,EAAE,UAAU,CAAC;AAC5H,gBAAgB,MAAM,GAAG,GAAG,eAAe,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,GAAG,CAAC,CAAC,EAAE,SAAS,CAAC,MAAM,EAAE,KAAK,GAAG,CAAC,CAAC,EAAE,OAAO,EAAE,UAAU,CAAC;AAC5H,gBAAgB,eAAe,CAAC,QAAQ,EAAE,cAAc,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC,KAAK,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;AACpH,gBAAgB,OAAO,GAAG,GAAG;AAC7B,YAAY;AACZ,YAAY;AACZ,QAAQ;AACR,QAAQ,IAAI,OAAO,KAAK,GAAG,EAAE;AAC7B,YAAY,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE;AACvE,gBAAgB,MAAM,IAAI,GAAG,eAAe,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,GAAG,CAAC,CAAC,EAAE,SAAS,CAAC,MAAM,EAAE,KAAK,GAAG,CAAC,CAAC,EAAE,OAAO,EAAE,UAAU,CAAC;AAC7H,gBAAgB,UAAU,CAAC,QAAQ,EAAE,cAAc,EAAE,OAAO,EAAE,IAAI,CAAC;AACnE,gBAAgB,OAAO,GAAG,IAAI;AAC9B,YAAY;AACZ,YAAY;AACZ,QAAQ;AACR,QAAQ,IAAI,OAAO,KAAK,GAAG,IAAI,YAAY,EAAE;AAC7C,YAAY,UAAU,CAAC,QAAQ,EAAE,cAAc,EAAE,OAAO,EAAE,YAAY,CAAC;AACvE,YAAY,OAAO,GAAG,YAAY;AAClC,QAAQ;AACR,IAAI;AACJ,IAAI,OAAO,QAAQ;AACnB;AACO,SAAS,aAAa,CAAC,QAAQ,EAAE,cAAc,GAAG,QAAQ,EAAE;AACnE,IAAI,MAAM,MAAM,GAAG,EAAE;AACrB,IAAI,KAAK,MAAM,OAAO,IAAI,eAAe,CAAC,QAAQ,EAAE,cAAc,CAAC,EAAE;AACrE,QAAQ,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;AAClD,QAAQ,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,CAAC,KAAK,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,KAAK,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE;AAC3F,YAAY,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;AACtC,QAAQ;AACR,QAAQ,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC;AAChC,IAAI;AACJ,IAAI,OAAO,MAAM;AACjB;;AC1IA,SAAS,gBAAgB,CAAC,KAAK,EAAE,OAAO,EAAE;AAC1C,IAAI,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;AACnD,IAAI,IAAI,KAAK,IAAI,CAAC;AAClB,QAAQ,OAAO,KAAK;AACpB,IAAI,IAAI,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;AACzC,QAAQ,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;AAClC,QAAQ,MAAM,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;AACtD,QAAQ,MAAM,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;AACtD,QAAQ,MAAM,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;AACtD,QAAQ,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;AAC9C,IAAI;AACJ,IAAI,OAAO,KAAK;AAChB;AACA,SAAS,cAAc,CAAC,OAAO,EAAE;AACjC,IAAI,MAAM,MAAM,GAAG,OAAO,CAAC,aAAa,EAAE;AAC1C,IAAI,MAAM,eAAe,GAAG,OAAO,CAAC,MAAM;AAC1C,IAAI,eAAe,CAAC,gBAAgB,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC;AACrF,IAAI,eAAe,CAAC,gBAAgB,CAAC,KAAK,GAAG,MAAM,CAAC,SAAS;AAC7D,IAAI,eAAe,CAAC,gBAAgB,CAAC,KAAK,GAAG,gBAAgB,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC;AAC3F,IAAI,eAAe,CAAC,gBAAgB,CAAC,aAAa,GAAG,MAAM,CAAC,OAAO;AACnE,IAAI,eAAe,CAAC,gBAAgB,CAAC,cAAc,GAAG,MAAM,CAAC,QAAQ;AACrE;AACA,SAAS,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE;AAC1C,IAAI,MAAM,iBAAiB,GAAG,OAAO,CAAC,MAAM;AAC5C,IAAI,iBAAiB,CAAC,aAAa,GAAG,OAAO;AAC7C;AACA,SAAS,mBAAmB,CAAC,OAAO,EAAE;AACtC,IAAI,MAAM,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE;AAC5C,IAAI,MAAM,MAAM,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC;AAC7C,QAAQ,IAAI,EAAE,CAAC;AACf,QAAQ,GAAG,EAAE,CAAC;AACd,QAAQ,MAAM,EAAE,MAAM,CAAC,SAAS,GAAG,CAAC;AACpC,QAAQ,OAAO,EAAE,QAAQ;AACzB,QAAQ,OAAO,EAAE,QAAQ;AACzB,QAAQ,IAAI,EAAE,MAAM,CAAC,WAAW;AAChC,QAAQ,MAAM,EAAE,MAAM,CAAC,aAAa;AACpC,QAAQ,WAAW,EAAE,MAAM,CAAC,kBAAkB;AAC9C,QAAQ,UAAU,EAAE,KAAK;AACzB,QAAQ,OAAO,EAAE,KAAK;AACtB,QAAQ,iBAAiB,EAAE,IAAI;AAC/B,QAAQ,aAAa,EAAE,KAAK;AAC5B,QAAQ,OAAO,EAAE,KAAK;AACtB,KAAK,CAAC;AACN,IAAI,OAAO,iBAAiB,CAAC,MAAM,EAAE,eAAe,CAAC;AACrD;AACA,SAAS,mBAAmB,CAAC,OAAO,EAAE,OAAO,EAAE;AAC/C,IAAI,IAAI,EAAE;AACV,IAAI,MAAM,OAAO,GAAG,CAAC,EAAE,GAAG,OAAO,CAAC,aAAa,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,mBAAmB,CAAC,OAAO,CAAC;AAC9G,IAAI,OAAO,CAAC,aAAa,GAAG,OAAO;AACnC,IAAI,MAAM,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE;AAC5C,IAAI,OAAO,CAAC,GAAG,CAAC;AAChB,QAAQ,MAAM,EAAE,MAAM,CAAC,SAAS,GAAG,CAAC;AACpC,QAAQ,IAAI,EAAE,MAAM,CAAC,WAAW;AAChC,QAAQ,MAAM,EAAE,MAAM,CAAC,aAAa;AACpC,QAAQ,WAAW,EAAE,MAAM,CAAC,kBAAkB;AAC9C,KAAK,CAAC;AACN,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;AACxD,QAAQ,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC;AACnC,IAAI;AACJ,IAAI,kBAAkB,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC;AAC/C,IAAI,OAAO,OAAO;AAClB;AACA,SAAS,iBAAiB,CAAC,OAAO,EAAE,OAAO,EAAE;AAC7C,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa;AAC9B,QAAQ;AACR,IAAI,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;AACjD,IAAI,OAAO,CAAC,MAAM,CAAC,gBAAgB,EAAE;AACrC;AACA,SAAS,mBAAmB,CAAC,OAAO,EAAE,OAAO,EAAE;AAC/C,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa;AAC9B,QAAQ;AACR,IAAI,IAAI;AACR,QAAQ,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC;AACpD,IAAI;AACJ,IAAI,MAAM;AACV,IAAI;AACJ,IAAI,OAAO,CAAC,aAAa,GAAG,IAAI;AAChC;AACA,SAAS,iBAAiB,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE;AACpD,IAAI,MAAM,OAAO,GAAG,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC;AACzD,IAAI,OAAO,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,KAAK,OAAO,EAAE,CAAC;AACtF,IAAI,OAAO,CAAC,MAAM,CAAC,gBAAgB,EAAE;AACrC;AACA,SAAS,eAAe,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE;AAClD,IAAI,MAAM,QAAQ,GAAG,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC;AAC1E,IAAI,IAAI,CAAC,QAAQ,EAAE;AACnB,QAAQ,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC;AACxC,QAAQ;AACR,IAAI;AACJ,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,eAAe,EAAE,CAAC,SAAS,GAAG,CAAC,CAAC;AACvE,IAAI,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC;AAC3C,IAAI,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC;AAC3E,IAAI,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,CAAC;AAC5D,IAAI,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,IAAI,KAAK,EAAE,KAAK,IAAI,CAAC,EAAE;AACpD,QAAQ,MAAM,CAAC,GAAG,KAAK,GAAG,KAAK;AAC/B,QAAQ,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC;AAClC,YAAY,CAAC,EAAE,QAAQ,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,IAAI,CAAC;AACtD,YAAY,CAAC,EAAE,QAAQ,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,IAAI,CAAC;AACtD,SAAS,CAAC;AACV,IAAI;AACJ;AACA,SAAS,6BAA6B,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE;AAC9D,IAAI,QAAQ,KAAK,CAAC,CAAC,IAAI,MAAM,CAAC,IAAI,GAAG,MAAM;AAC3C,QAAQ,KAAK,CAAC,CAAC,IAAI,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,KAAK,GAAG,MAAM;AACtD,QAAQ,KAAK,CAAC,CAAC,IAAI,MAAM,CAAC,GAAG,GAAG,MAAM;AACtC,QAAQ,KAAK,CAAC,CAAC,IAAI,MAAM,CAAC,GAAG,GAAG,MAAM,CAAC,MAAM,GAAG,MAAM;AACtD;AACA,SAASK,oBAAkB,CAAC,UAAU,EAAE,KAAK,EAAE;AAC/C,IAAI,IAAI,EAAE,EAAE,EAAE;AACd,IAAI,MAAM,QAAQ,GAAG,UAAU;AAC/B,IAAI,MAAM,MAAM,GAAG,CAAC,EAAE,GAAG,QAAQ,CAAC,UAAU,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AAC7F,IAAI,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAC/C,IAAI,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAC/C,IAAI,MAAM,MAAM,GAAG,CAAC,EAAE,GAAG,QAAQ,CAAC,mBAAmB,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,MAAM,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC;AAC7G,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;AACnD,QAAQ,OAAO,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE;AACzC,IAAI,MAAM,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM;AAC7D,IAAI,OAAO;AACX,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC;AAC5B,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC;AAC5B,KAAK;AACL;AACA,SAAS,6BAA6B,CAAC,UAAU,EAAE;AACnD,IAAI,MAAM,QAAQ,GAAG,UAAU,CAAC,IAAI;AACpC,IAAI,OAAO,eAAe,CAAC,QAAQ,EAAE,CAAC,KAAK,KAAKA,oBAAkB,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;AACtF;AACA,SAAS,wBAAwB,CAAC,UAAU,EAAE;AAC9C,IAAI,IAAI,EAAE;AACV,IAAI,MAAM,QAAQ,GAAG,UAAU;AAC/B,IAAI,MAAM,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC;AAC3D,IAAI,MAAM,KAAK,GAAG,CAAC,EAAE,GAAG,QAAQ,CAAC,gBAAgB,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,MAAM,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC;AACzG,IAAI,IAAI,QAAQ,CAAC,aAAa,EAAE;AAChC,QAAQ,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,WAAW,GAAG,CAAC,CAAC;AAC3C,IAAI;AACJ,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAC5H,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAC5H,IAAI,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;AACpE;AACA,SAAS,sBAAsB,CAAC,KAAK,EAAE,OAAO,EAAE;AAChD,IAAI,MAAM,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9C,IAAI,MAAM,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9C,IAAI,MAAM,aAAa,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE;AAC3C,IAAI,IAAI,aAAa,KAAK,CAAC,EAAE;AAC7B,QAAQ,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;AAC/E,IAAI;AACJ,IAAI,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,IAAI,aAAa,CAAC,CAAC;AAC7H,IAAI,MAAM,OAAO,GAAG;AACpB,QAAQ,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE;AACnC,QAAQ,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE;AACnC,KAAK;AACL,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;AAC/D;AACA,SAAS,8BAA8B,CAAC,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE;AAC1E,IAAI,MAAM,SAAS,GAAG,YAAY,GAAG,wBAAwB,CAAC,UAAU,CAAC;AACzE,IAAI,MAAM,MAAM,GAAG,aAAa,CAAC,UAAU,CAAC;AAC5C,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,6BAA6B,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC,EAAE;AAC1F,QAAQ,OAAO,KAAK;AACpB,IAAI;AACJ,IAAI,MAAM,QAAQ,GAAG,6BAA6B,CAAC,UAAU,CAAC;AAC9D,IAAI,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;AAC7B,QAAQ,OAAO,KAAK;AACpB,IAAI,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,KAAK,sBAAsB,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,SAAS,CAAC,CAAC;AAClH;AACA,SAAS,6BAA6B,CAAC,OAAO,EAAE,MAAM,EAAE;AACxD,IAAI,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;AAC3B,QAAQ,OAAO,EAAE;AACjB,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,eAAe,EAAE,CAAC,SAAS,GAAG,CAAC,CAAC;AACvE,IAAI,OAAO,OAAO,CAAC;AACnB,SAAS,UAAU;AACnB,SAAS,MAAM,CAAC,sBAAsB;AACtC,SAAS,MAAM,CAAC,CAAC,UAAU,KAAK,8BAA8B,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AAC3F;AACA,SAAS,kBAAkB,CAAC,OAAO,EAAE,OAAO,EAAE;AAC9C,IAAI,MAAM,OAAO,GAAG,6BAA6B,CAAC,OAAO,EAAE,OAAO,CAAC,YAAY,CAAC;AAChF,IAAI,OAAO,CAAC,YAAY,GAAG,EAAE;AAC7B,IAAI,OAAO,CAAC,SAAS,GAAG,KAAK;AAC7B,IAAI,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;AAC5B,QAAQ;AACR,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC,UAAU,KAAK;AACpC,QAAQ,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC;AACzC,IAAI,CAAC,CAAC;AACN,IAAI,OAAO,CAAC,MAAM,CAAC,mBAAmB,EAAE;AACxC,IAAI,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE;AAC9B,IAAI,OAAO,CAAC,eAAe,EAAE;AAC7B,IAAI,OAAO,CAAC,oBAAoB,EAAE;AAClC,IAAI,OAAO,CAAC,QAAQ,EAAE;AACtB,IAAI,MAAM,eAAe,GAAG,OAAO,CAAC,oBAAoB,CAAC,oBAAoB,CAAC;AAC9E,IAAI,OAAO,CAAC,sBAAsB,CAAC,eAAe,CAAC;AACnD,IAAI,OAAO,CAAC,gBAAgB,CAAC,eAAe,CAAC;AAC7C;AACA,SAAS,uBAAuB,CAAC,OAAO,EAAE,KAAK,EAAE;AACjD,IAAI,MAAM,OAAO,GAAG,OAAO,CAAC,cAAc,EAAE;AAC5C,IAAI,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO,KAAK,OAAO;AAC/C,QAAQ;AACR,IAAI,MAAM,OAAO,GAAG,yBAAyB,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC;AACpE,IAAI,IAAI,CAAC,OAAO;AAChB,QAAQ;AACR,IAAI,OAAO,CAAC,SAAS,GAAG,IAAI;AAC5B,IAAI,OAAO,CAAC,YAAY,GAAG,EAAE;AAC7B,IAAI,eAAe,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC;AAC9C,IAAI,iBAAiB,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC;AAChD;AACA,SAAS,uBAAuB,CAAC,OAAO,EAAE,KAAK,EAAE;AACjD,IAAI,MAAM,OAAO,GAAG,OAAO,CAAC,cAAc,EAAE;AAC5C,IAAI,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO,KAAK,OAAO;AAC/C,QAAQ;AACR,IAAI,MAAM,OAAO,GAAG,yBAAyB,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC;AACpE,IAAI,IAAI,CAAC,OAAO,EAAE;AAClB,QAAQ,iBAAiB,CAAC,OAAO,EAAE,OAAO,CAAC;AAC3C,QAAQ;AACR,IAAI;AACJ,IAAI,iBAAiB,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC;AAChD,IAAI,IAAI,OAAO,CAAC,SAAS;AACzB,QAAQ,eAAe,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC;AAClD;AACA,SAAS,qBAAqB,CAAC,OAAO,EAAE,KAAK,EAAE;AAC/C,IAAI,MAAM,OAAO,GAAG,OAAO,CAAC,cAAc,EAAE;AAC5C,IAAI,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO,KAAK,OAAO;AAC/C,QAAQ;AACR,IAAI,MAAM,OAAO,GAAG,yBAAyB,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC;AACpE,IAAI,IAAI,OAAO,EAAE;AACjB,QAAQ,eAAe,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC;AAClD,QAAQ,iBAAiB,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC;AACpD,IAAI;AACJ,IAAI,kBAAkB,CAAC,OAAO,EAAE,OAAO,CAAC;AACxC;AACA,SAAS,wBAAwB,CAAC,OAAO,EAAE,IAAI,EAAE;AACjD,IAAI,MAAM,MAAM,GAAG,OAAO,CAAC,aAAa,EAAE;AAC1C,IAAI,MAAM,YAAY,GAAG,OAAO,CAAC,oBAAoB,EAAE,GAAG,CAAC;AAC3D,IAAI,OAAO,CAAC,oBAAoB,CAAC,YAAY,CAAC;AAC9C,IAAI,IAAI,CAAC,GAAG,CAAC;AACb,QAAQ,UAAU,EAAE,MAAM,CAAC,UAAU;AACrC,QAAQ,OAAO,EAAE,MAAM,CAAC,OAAO;AAC/B,QAAQ,OAAO,EAAE,MAAM,CAAC,OAAO;AAC/B,QAAQ,MAAM,EAAE,MAAM,CAAC,KAAK;AAC5B,QAAQ,WAAW,EAAE,MAAM,CAAC,SAAS;AACrC,KAAK,CAAC;AACN,IAAI,MAAM,UAAU,GAAG,oBAAoB,CAAC,IAAI,EAAE;AAClD,QAAQ,YAAY;AACpB,QAAQ,cAAc,EAAE,MAAM;AAC9B,QAAQ,cAAc,EAAE,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,kBAAkB,CAAC,EAAE,YAAY,CAAC,CAAC;AAC9E,QAAQ,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;AACjD,QAAQ,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;AACjD,QAAQ,oBAAoB,EAAE,MAAM,CAAC,UAAU;AAC/C,QAAQ,iBAAiB,EAAE,MAAM,CAAC,OAAO;AACzC,QAAQ,qBAAqB,EAAE,IAAI,CAAC,WAAW,KAAK,KAAK;AACzD,KAAK,CAAC;AACN,IAAI,0BAA0B,CAAC,UAAU,CAAC;AAC1C,IAAI,OAAO,UAAU;AACrB;AACA,SAAS,iBAAiB,CAAC,OAAO,EAAE,KAAK,EAAE;AAC3C,IAAI,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI;AAC3B,IAAI,IAAI,CAAC,IAAI;AACb,QAAQ;AACR,IAAI,MAAM,UAAU,GAAG,wBAAwB,CAAC,OAAO,EAAE,IAAI,CAAC;AAC9D,IAAI,qBAAqB,CAAC,OAAO,CAAC,MAAM,EAAE,UAAU,CAAC;AACrD,IAAI,OAAO,CAAC,MAAM,CAAC,eAAe,CAAC,UAAU,CAAC;AAC9C,IAAI,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE;AAC9B,IAAI,OAAO,CAAC,oBAAoB,EAAE;AAClC,IAAI,OAAO,CAAC,eAAe,EAAE;AAC7B,IAAI,MAAM,eAAe,GAAG,OAAO,CAAC,oBAAoB,CAAC,sBAAsB,CAAC;AAChF,IAAI,OAAO,CAAC,sBAAsB,CAAC,eAAe,CAAC;AACnD,IAAI,OAAO,CAAC,gBAAgB,CAAC,eAAe,CAAC;AAC7C;AACO,SAAS,aAAa,CAAC,OAAO,EAAE;AACvC,IAAI,IAAI,OAAO,CAAC,cAAc,EAAE;AAChC,QAAQ;AACR,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE;AAChC,QAAQ;AACR,IAAI,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO;AAC9B,IAAI,MAAM,iBAAiB,GAAG,MAAM;AACpC,IAAI,MAAM,mBAAmB,GAAG,CAAC,CAAC,iBAAiB,CAAC,aAAa;AACjE,IAAI,MAAM,aAAa,GAAG,iBAAiB,CAAC,gBAAgB;AAC5D,IAAI,MAAM,uBAAuB,GAAG,CAAC,CAAC,MAAM,CAAC,SAAS;AACtD,IAAI,MAAM,sBAAsB,GAAG,CAAC,CAAC,MAAM,CAAC,cAAc;AAC1D,IAAI,MAAM,qBAAqB,GAAG,MAAM,CAAC,aAAa;AACtD,IAAI,MAAM,CAAC,SAAS,GAAG,KAAK;AAC5B,IAAI,MAAM,CAAC,aAAa,GAAG,WAAW;AACtC,IAAI,iBAAiB,CAAC,aAAa,GAAG,IAAI;AAC1C,IAAI,cAAc,CAAC,OAAO,CAAC;AAC3B,IAAI,MAAM,mBAAmB,GAAG,CAAC,KAAK,KAAK,iBAAiB,CAAC,OAAO,EAAE,KAAK,CAAC;AAC5E,IAAI,MAAM,CAAC,EAAE,CAAC,cAAc,EAAE,mBAAmB,CAAC;AAClD,IAAI,MAAM,iBAAiB,GAAG,CAAC,KAAK,KAAK,uBAAuB,CAAC,OAAO,EAAE,KAAK,CAAC;AAChF,IAAI,MAAM,iBAAiB,GAAG,CAAC,KAAK,KAAK,uBAAuB,CAAC,OAAO,EAAE,KAAK,CAAC;AAChF,IAAI,MAAM,eAAe,GAAG,CAAC,KAAK,KAAK,qBAAqB,CAAC,OAAO,EAAE,KAAK,CAAC;AAC5E,IAAI,MAAM,gBAAgB,GAAG,MAAM;AACnC,QAAQ,MAAM,OAAO,GAAG,OAAO,CAAC,cAAc,EAAE;AAChD,QAAQ,IAAI,OAAO;AACnB,YAAY,iBAAiB,CAAC,OAAO,EAAE,OAAO,CAAC;AAC/C,IAAI,CAAC;AACL,IAAI,MAAM,CAAC,EAAE,CAAC,YAAY,EAAE,iBAAiB,CAAC;AAC9C,IAAI,MAAM,CAAC,EAAE,CAAC,YAAY,EAAE,iBAAiB,CAAC;AAC9C,IAAI,MAAM,CAAC,EAAE,CAAC,UAAU,EAAE,eAAe,CAAC;AAC1C,IAAI,MAAM,CAAC,EAAE,CAAC,WAAW,EAAE,gBAAgB,CAAC;AAC5C,IAAI,MAAM,OAAO,GAAG;AACpB,QAAQ,IAAI,EAAE,MAAM;AACpB,QAAQ,OAAO,EAAE,OAAO;AACxB,QAAQ,mBAAmB;AAC3B,QAAQ,aAAa;AACrB,QAAQ,uBAAuB;AAC/B,QAAQ,sBAAsB;AAC9B,QAAQ,qBAAqB;AAC7B,QAAQ,aAAa,EAAE,IAAI;AAC3B,QAAQ,YAAY,EAAE,EAAE;AACxB,QAAQ,SAAS,EAAE,KAAK;AACxB,QAAQ,QAAQ,EAAE;AAClB,YAAY,EAAE,SAAS,EAAE,cAAc,EAAE,QAAQ,EAAE,mBAAmB,EAAE;AACxE,YAAY,EAAE,SAAS,EAAE,YAAY,EAAE,QAAQ,EAAE,iBAAiB,EAAE;AACpE,YAAY,EAAE,SAAS,EAAE,YAAY,EAAE,QAAQ,EAAE,iBAAiB,EAAE;AACpE,YAAY,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,eAAe,EAAE;AAChE,YAAY,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,EAAE,gBAAgB,EAAE;AAClE,SAAS;AACT,QAAQ,OAAO,EAAE,MAAM;AACvB,YAAY,KAAK,MAAM,MAAM,IAAI,OAAO,CAAC,QAAQ,EAAE;AACnD,gBAAgB,IAAI;AACpB,oBAAoB,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,QAAQ,CAAC;AACjE,gBAAgB;AAChB,gBAAgB,MAAM;AACtB,gBAAgB;AAChB,YAAY;AACZ,YAAY,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC;AACjD,YAAY,iBAAiB,CAAC,aAAa,GAAG,mBAAmB;AACjE,YAAY,iBAAiB,CAAC,gBAAgB,GAAG,aAAa;AAC9D,YAAY,MAAM,CAAC,SAAS,GAAG,uBAAuB;AACtD,YAAY,MAAM,CAAC,cAAc,GAAG,sBAAsB;AAC1D,YAAY,MAAM,CAAC,aAAa,GAAG,qBAAqB,KAAK,IAAI,IAAI,qBAAqB,KAAK,MAAM,GAAG,qBAAqB,GAAG,SAAS;AACzI,QAAQ,CAAC;AACT,KAAK;AACL,IAAI,OAAO,CAAC,cAAc,CAAC,OAAO,CAAC;AACnC,IAAI,OAAO,CAAC,QAAQ,EAAE;AACtB;AACO,SAAS,YAAY,CAAC,OAAO,EAAE;AACtC,IAAI,MAAM,OAAO,GAAG,OAAO,CAAC,cAAc,EAAE;AAC5C,IAAI,IAAI,CAAC,OAAO;AAChB,QAAQ;AACR,IAAI,OAAO,CAAC,OAAO,EAAE;AACrB,IAAI,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC;AAChC,IAAI,OAAO,CAAC,MAAM,CAAC,gBAAgB,EAAE;AACrC,IAAI,OAAO,CAAC,QAAQ,EAAE;AACtB;AACO,SAAS,eAAe,CAAC,OAAO,EAAE;AACzC,IAAI,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE;AACjC,QAAQ;AACR,IAAI,cAAc,CAAC,OAAO,CAAC;AAC3B;AACO,SAAS,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE;AACjD,IAAI,MAAM,OAAO,GAAG,OAAO,CAAC,cAAc,EAAE;AAC5C,IAAI,IAAI,CAAC,OAAO;AAChB,QAAQ;AACR,IAAI,IAAI,OAAO,CAAC,OAAO,KAAK,OAAO;AACnC,QAAQ;AACR,IAAI,OAAO,CAAC,OAAO,GAAG,OAAO;AAC7B,IAAI,OAAO,CAAC,SAAS,GAAG,KAAK;AAC7B,IAAI,OAAO,CAAC,YAAY,GAAG,EAAE;AAC7B,IAAI,IAAI,OAAO,KAAK,OAAO,EAAE;AAC7B,QAAQ,OAAO,CAAC,MAAM,CAAC,cAAc,GAAG,OAAO,CAAC,sBAAsB;AACtE,QAAQ,iBAAiB,CAAC,OAAO,EAAE,OAAO,CAAC;AAC3C,QAAQ,cAAc,CAAC,OAAO,CAAC;AAC/B,QAAQ,cAAc,CAAC,OAAO,EAAE,IAAI,CAAC;AACrC,IAAI;AACJ,SAAS;AACT,QAAQ,OAAO,CAAC,MAAM,CAAC,mBAAmB,EAAE;AAC5C,QAAQ,OAAO,CAAC,MAAM,CAAC,cAAc,GAAG,IAAI;AAC5C,QAAQ,cAAc,CAAC,OAAO,EAAE,KAAK,CAAC;AACtC,QAAQ,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;AACrE,IAAI;AACJ,IAAI,OAAO,CAAC,MAAM,CAAC,gBAAgB,EAAE;AACrC,IAAI,OAAO,CAAC,QAAQ,EAAE;AACtB;AACO,SAAS,mBAAmB,CAAC,OAAO,EAAE;AAC7C,IAAI,MAAM,OAAO,GAAG,OAAO,CAAC,cAAc,EAAE;AAC5C,IAAI,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO,KAAK,OAAO;AAC/C,QAAQ;AACR,IAAI,MAAM,OAAO,GAAG,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC;AACzD,IAAI,OAAO,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;AACnC,IAAI,OAAO,CAAC,MAAM,CAAC,gBAAgB,EAAE;AACrC;;ACvXA,MAAM,0BAA0B,GAAG,CAAC;AACpC,SAAS,2BAA2B,CAAC,OAAO,EAAE;AAC9C,IAAI,MAAM,KAAK,GAAG,OAAO,CAAC,gBAAgB,EAAE;AAC5C,IAAI,IAAI,KAAK,EAAE;AACf,QAAQ,MAAM,MAAM,GAAG,aAAa,CAAC,KAAK,CAAC;AAC3C,QAAQ,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE;AACvF,IAAI;AACJ,IAAI,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE;AAChC;AACA,SAAS,0BAA0B,CAAC,OAAO,EAAE,MAAM,EAAE;AACrD,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AACtC,IAAI,MAAM,IAAI,GAAG,+BAA+B,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,MAAM,CAAC;AAClF,IAAI,MAAM,QAAQ,GAAG,2BAA2B,CAAC,OAAO,CAAC;AACzD,IAAI,MAAM,SAAS,GAAG,CAAC,EAAE,GAAG,MAAM,CAAC,IAAI,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,IAAI,CAAC,IAAI;AACnF,IAAI,MAAM,QAAQ,GAAG,CAAC,EAAE,GAAG,MAAM,CAAC,GAAG,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG;AAChF,IAAI,MAAM,OAAO,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,MAAM,CAAC,EAAE,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,SAAS;AAC/H,IAAI,MAAM,OAAO,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,MAAM,CAAC,EAAE,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,QAAQ;AAC9H,IAAI,MAAM,OAAO,GAAG,CAAC,EAAE,GAAG,MAAM,CAAC,EAAE,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE;AAC7E,IAAI,MAAM,OAAO,GAAG,CAAC,EAAE,GAAG,MAAM,CAAC,EAAE,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE;AAC7E,IAAI,MAAM,IAAI,GAAG,cAAc,CAAC,SAAS,EAAE,GAAG,EAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC;AAC/F,IAAI,MAAM,GAAG,GAAG,cAAc,CAAC,QAAQ,EAAE,GAAG,EAAE,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC;AAC5F,IAAI,MAAM,EAAE,GAAG,cAAc,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC;AAClF,IAAI,MAAM,EAAE,GAAG,cAAc,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC;AACjF,IAAI,OAAO;AACX,QAAQ,GAAG,IAAI;AACf,QAAQ,IAAI;AACZ,QAAQ,GAAG;AACX,QAAQ,EAAE;AACV,QAAQ,EAAE;AACV,QAAQ,EAAE,EAAE,cAAc,CAAC,OAAO,EAAE,GAAG,EAAE,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC;AAC1F,QAAQ,EAAE,EAAE,cAAc,CAAC,OAAO,EAAE,GAAG,EAAE,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC;AAC3F,KAAK;AACL;AACA,SAAS,oBAAoB,CAAC,MAAM,EAAE;AACtC,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AACtC,IAAI,MAAM,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,MAAM,CAAC,EAAE,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,MAAM,CAAC,IAAI,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,CAAC;AACtH,IAAI,MAAM,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,MAAM,CAAC,EAAE,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,MAAM,CAAC,GAAG,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,CAAC;AACrH,IAAI,MAAM,EAAE,GAAG,CAAC,EAAE,GAAG,MAAM,CAAC,EAAE,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,EAAE,GAAG,MAAM,CAAC,KAAK;AAClF,IAAI,MAAM,EAAE,GAAG,CAAC,EAAE,GAAG,MAAM,CAAC,EAAE,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,EAAE,GAAG,MAAM,CAAC,MAAM;AACnF,IAAI,OAAO;AACX,QAAQ,IAAI,EAAE,CAAC,EAAE,GAAG,MAAM,CAAC,IAAI,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC;AAClF,QAAQ,GAAG,EAAE,CAAC,EAAE,GAAG,MAAM,CAAC,GAAG,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC;AAChF,QAAQ,KAAK,EAAE,MAAM,CAAC,KAAK;AAC3B,QAAQ,MAAM,EAAE,MAAM,CAAC,MAAM;AAC7B,QAAQ,EAAE;AACV,QAAQ,EAAE;AACV,QAAQ,EAAE;AACV,QAAQ,EAAE;AACV,KAAK;AACL;AACA,SAAS,kBAAkB,CAAC,KAAK,EAAE,GAAG,EAAE;AACxC,IAAI,OAAO;AACX,QAAQ,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;AACtC,QAAQ,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;AACrC,QAAQ,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;AACxC,QAAQ,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;AACzC,QAAQ,EAAE,EAAE,KAAK,CAAC,CAAC;AACnB,QAAQ,EAAE,EAAE,KAAK,CAAC,CAAC;AACnB,QAAQ,EAAE,EAAE,GAAG,CAAC,CAAC;AACjB,QAAQ,EAAE,EAAE,GAAG,CAAC,CAAC;AACjB,KAAK;AACL;AACA,SAASC,gBAAc,CAAC,QAAQ,EAAE,UAAU,EAAE;AAC9C,IAAI,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,QAAQ;AACvC,IAAI,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC;AAC9C,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC;AAC1C,IAAI,MAAM,SAAS,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC;AACjC,IAAI,MAAM,MAAM,GAAG,EAAE,GAAG,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,SAAS,CAAC;AAC5D,IAAI,MAAM,MAAM,GAAG,EAAE,GAAG,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,SAAS,CAAC;AAC5D,IAAI,MAAM,MAAM,GAAG,EAAE,GAAG,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,SAAS,CAAC;AAC5D,IAAI,MAAM,MAAM,GAAG,EAAE,GAAG,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,SAAS,CAAC;AAC5D,IAAI,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;AAChH;AACA,SAAS,uBAAuB,CAAC,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE;AACnE,IAAI,MAAM,MAAM,GAAG;AACnB,QAAQ,MAAM,EAAE,MAAM,CAAC,MAAM;AAC7B,QAAQ,WAAW,EAAE,MAAM,CAAC,WAAW;AACvC,QAAQ,eAAe,EAAE,MAAM,CAAC,eAAe,GAAG,CAAC,GAAG,MAAM,CAAC,eAAe,CAAC,GAAG,SAAS;AACzF,QAAQ,OAAO,EAAE,MAAM,CAAC,OAAO;AAC/B,QAAQ,KAAK,EAAE,MAAM,CAAC,KAAK;AAC3B,QAAQ,UAAU,EAAE,MAAM,CAAC,UAAU;AACrC,QAAQ,OAAO,EAAE,MAAM,CAAC,OAAO;AAC/B,QAAQ,OAAO,EAAE,MAAM;AACvB,QAAQ,OAAO,EAAE,KAAK;AACtB,QAAQ,GAAG,MAAM,CAAC,MAAM;AACxB,KAAK;AACL,IAAI,IAAI,KAAK,KAAK,MAAM,EAAE;AAC1B,QAAQ,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC;AACvC,YAAY,IAAI,EAAE,QAAQ,CAAC,IAAI;AAC/B,YAAY,GAAG,EAAE,QAAQ,CAAC,GAAG;AAC7B,YAAY,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,0BAA0B,EAAE,QAAQ,CAAC,KAAK,CAAC;AACvE,YAAY,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,0BAA0B,EAAE,QAAQ,CAAC,MAAM,CAAC;AACzE,YAAY,IAAI,EAAE,MAAM,CAAC,IAAI;AAC7B,YAAY,GAAG,MAAM;AACrB,SAAS,CAAC;AACV,IAAI;AACJ,IAAI,MAAM,IAAI,GAAG,KAAK,KAAK;AAC3B,UAAUA,gBAAc,CAAC,QAAQ,EAAE,MAAM,CAAC,eAAe;AACzD,UAAU,CAAC,EAAE,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC;AAC3E,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE;AACzC,QAAQ,IAAI,EAAE,EAAE;AAChB,QAAQ,aAAa,EAAE,OAAO;AAC9B,QAAQ,cAAc,EAAE,OAAO;AAC/B,QAAQ,aAAa,EAAE,KAAK;AAC5B,QAAQ,GAAG,MAAM;AACjB,KAAK,CAAC;AACN;AACA,SAAS,uBAAuB,CAAC,OAAO,EAAE,MAAM,EAAE;AAClD,IAAI,MAAM,YAAY,GAAG,OAAO,CAAC,oBAAoB,EAAE,GAAG,CAAC;AAC3D,IAAI,OAAO,CAAC,oBAAoB,CAAC,YAAY,CAAC;AAC9C,IAAI,OAAO;AACX,QAAQ,YAAY;AACpB,QAAQ,cAAc,EAAE,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,mBAAmB,CAAC,EAAE,YAAY,CAAC,CAAC;AAC/E,QAAQ,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;AACjD,QAAQ,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;AACjD,KAAK;AACL;AACA,SAAS,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE;AACtD,IAAI,MAAM,IAAI,GAAG,uBAAuB,CAAC,OAAO,EAAE,MAAM,CAAC;AACzD,IAAI,MAAM,UAAU,GAAG,oBAAoB,CAAC,MAAM,EAAE;AACpD,QAAQ,YAAY,EAAE,IAAI,CAAC,YAAY;AACvC,QAAQ,cAAc,EAAE,OAAO;AAC/B,QAAQ,cAAc,EAAE,IAAI,CAAC,cAAc;AAC3C,QAAQ,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;AAC/C,QAAQ,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;AAC/C,QAAQ,oBAAoB,EAAE,MAAM,CAAC,UAAU;AAC/C,QAAQ,iBAAiB,EAAE,MAAM,CAAC,OAAO;AACzC,QAAQ,qBAAqB,EAAE,MAAM,CAAC,WAAW,KAAK,KAAK;AAC3D,KAAK,CAAC;AACN,IAAI,UAAU,CAAC,mBAAmB,GAAG,MAAM,CAAC,KAAK;AACjD,IAAI,0BAA0B,CAAC,UAAU,CAAC;AAC1C,IAAI,OAAO,UAAU;AACrB;AACO,SAAS,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,EAAE,EAAE;AAC5D,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE;AAChC,QAAQ,OAAO,IAAI;AACnB,IAAI,MAAM,QAAQ,GAAG,0BAA0B,CAAC,OAAO,EAAE,MAAM,CAAC;AAChE,IAAI,MAAM,QAAQ,GAAG,oBAAoB,CAAC,QAAQ,CAAC;AACnD,IAAI,MAAM,MAAM,GAAG,uBAAuB,CAAC,OAAO,EAAE,QAAQ,CAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ,CAAC;AACvF,IAAI,MAAM,UAAU,GAAG,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC;AACrE,IAAI,qBAAqB,CAAC,OAAO,CAAC,MAAM,EAAE,UAAU,CAAC;AACrD,IAAI,IAAI,QAAQ,CAAC,UAAU,KAAK,KAAK,IAAI,oBAAoB,CAAC,UAAU,CAAC,EAAE;AAC3E,QAAQ,OAAO,CAAC,MAAM,CAAC,eAAe,CAAC,UAAU,CAAC;AAClD,IAAI;AACJ,IAAI,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE;AAC9B,IAAI,OAAO,CAAC,oBAAoB,EAAE;AAClC,IAAI,OAAO,CAAC,eAAe,EAAE;AAC7B,IAAI,MAAM,eAAe,GAAG,OAAO,CAAC,oBAAoB,CAAC,uBAAuB,CAAC;AACjF,IAAI,OAAO,CAAC,sBAAsB,CAAC,eAAe,CAAC;AACnD,IAAI,OAAO,CAAC,gBAAgB,CAAC,eAAe,CAAC;AAC7C,IAAI,OAAO,UAAU;AACrB;AACA,SAAS,oBAAoB,CAAC,KAAK,EAAE,QAAQ,EAAE;AAC/C,IAAI,IAAI,KAAK,KAAK,MAAM,EAAE;AAC1B,QAAQ,QAAQ,QAAQ,CAAC,KAAK,IAAI,0BAA0B;AAC5D,YAAY,QAAQ,CAAC,MAAM,IAAI,0BAA0B;AACzD,IAAI;AACJ,IAAI,QAAQ,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,GAAG,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC,EAAE,GAAG,QAAQ,CAAC,EAAE,CAAC;AAC5E,QAAQ,0BAA0B;AAClC;AACA,SAAS,mBAAmB,CAAC,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE;AACvD,IAAI,MAAM,MAAM,GAAG,EAAE,GAAG,OAAO,CAAC,cAAc,EAAU,CAAC;AACzD,IAAI,MAAM,OAAO,GAAG,uBAAuB,CAAC,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAC;AAC7E,IAAI,OAAO,CAAC,GAAG,CAAC;AAChB,QAAQ,UAAU,EAAE,KAAK;AACzB,QAAQ,OAAO,EAAE,KAAK;AACtB,QAAQ,iBAAiB,EAAE,IAAI;AAC/B,QAAQ,aAAa,EAAE,KAAK;AAC5B,KAAK,CAAC;AACN,IAAI,iBAAiB,CAAC,OAAO,EAAE,cAAc,CAAC;AAC9C,IAAI,OAAO,OAAO;AAClB;AACA,SAAS,aAAa,CAAC,OAAO,EAAE,OAAO,EAAE;AACzC,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa;AAC9B,QAAQ;AACR,IAAI,IAAI;AACR,QAAQ,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC;AACpD,IAAI;AACJ,IAAI,MAAM;AACV,IAAI;AACJ,IAAI,OAAO,CAAC,aAAa,GAAG,IAAI;AAChC;AACA,SAAS,wBAAwB,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE;AAC3D,IAAI,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,KAAK,KAAK;AAC3C,IAAI,OAAO,CAAC,KAAK,GAAG,KAAK;AACzB,IAAI,OAAO,CAAC,UAAU,GAAG,IAAI;AAC7B,IAAI,aAAa,CAAC,OAAO,EAAE,OAAO,CAAC;AACnC,IAAI,IAAI,OAAO,EAAE;AACjB,QAAQ,OAAO,CAAC,MAAM,CAAC,gBAAgB,EAAE;AACzC,QAAQ,OAAO,CAAC,QAAQ,EAAE;AAC1B,IAAI;AACJ;AACA,SAAS,aAAa,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE;AAClD,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU;AAC3B,QAAQ;AACR,IAAI,MAAM,QAAQ,GAAG,kBAAkB,CAAC,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC;AACpE,IAAI,aAAa,CAAC,OAAO,EAAE,OAAO,CAAC;AACnC,IAAI,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC,EAAE;AACxD,QAAQ,OAAO,CAAC,MAAM,CAAC,gBAAgB,EAAE;AACzC,QAAQ;AACR,IAAI;AACJ,IAAI,MAAM,OAAO,GAAG,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC;AACzE,IAAI,OAAO,CAAC,aAAa,GAAG,OAAO;AACnC,IAAI,kBAAkB,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC;AAC/C,IAAI,OAAO,CAAC,MAAM,CAAC,gBAAgB,EAAE;AACrC;AACA,SAAS,wBAAwB,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE;AAC7D,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU;AAC3B,QAAQ;AACR,IAAI,MAAM,QAAQ,GAAG,kBAAkB,CAAC,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC;AACpE,IAAI,OAAO,CAAC,UAAU,GAAG,IAAI;AAC7B,IAAI,aAAa,CAAC,OAAO,EAAE,OAAO,CAAC;AACnC,IAAI,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC,EAAE;AACxD,QAAQ,OAAO,CAAC,MAAM,CAAC,gBAAgB,EAAE;AACzC,QAAQ;AACR,IAAI;AACJ,IAAI,IAAI,OAAO,CAAC,KAAK,KAAK,MAAM,EAAE;AAClC,QAAQ,qBAAqB,CAAC,OAAO,EAAE;AACvC,YAAY,KAAK,EAAE,MAAM;AACzB,YAAY,IAAI,EAAE,QAAQ,CAAC,IAAI;AAC/B,YAAY,GAAG,EAAE,QAAQ,CAAC,GAAG;AAC7B,YAAY,KAAK,EAAE,QAAQ,CAAC,KAAK;AACjC,YAAY,MAAM,EAAE,QAAQ,CAAC,MAAM;AACnC,SAAS,CAAC;AACV,QAAQ;AACR,IAAI;AACJ,IAAI,qBAAqB,CAAC,OAAO,EAAE;AACnC,QAAQ,KAAK,EAAE,OAAO,CAAC,KAAK;AAC5B,QAAQ,EAAE,EAAE,QAAQ,CAAC,EAAE;AACvB,QAAQ,EAAE,EAAE,QAAQ,CAAC,EAAE;AACvB,QAAQ,EAAE,EAAE,QAAQ,CAAC,EAAE;AACvB,QAAQ,EAAE,EAAE,QAAQ,CAAC,EAAE;AACvB,KAAK,CAAC;AACN;AACA,SAASC,qBAAmB,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE;AACpE,IAAI,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC;AAC1C,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC;AAClD;AACA,SAASC,sBAAoB,CAAC,OAAO,EAAE,OAAO,EAAE;AAChD,IAAI,KAAK,MAAM,MAAM,IAAI,OAAO,CAAC,QAAQ,EAAE;AAC3C,QAAQ,IAAI;AACZ,YAAY,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,QAAQ,CAAC;AACjE,QAAQ;AACR,QAAQ,MAAM;AACd,QAAQ;AACR,IAAI;AACJ,IAAI,OAAO,CAAC,QAAQ,GAAG,EAAE;AACzB;AACO,SAAS,cAAc,CAAC,OAAO,EAAE,KAAK,EAAE;AAC/C,IAAI,MAAM,eAAe,GAAG,OAAO,CAAC,eAAe,EAAE;AACrD,IAAI,IAAI,eAAe,EAAE;AACzB,QAAQ,wBAAwB,CAAC,OAAO,EAAE,eAAe,EAAE,KAAK,CAAC;AACjE,QAAQ;AACR,IAAI;AACJ,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE;AAChC,QAAQ;AACR,IAAI,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO;AAC9B,IAAI,MAAM,uBAAuB,GAAG,CAAC,CAAC,MAAM,CAAC,SAAS;AACtD,IAAI,MAAM,qBAAqB,GAAG,MAAM,CAAC,aAAa;AACtD,IAAI,MAAM,CAAC,SAAS,GAAG,KAAK;AAC5B,IAAI,MAAM,CAAC,aAAa,GAAG,WAAW;AACtC,IAAI,MAAM,OAAO,GAAG;AACpB,QAAQ,IAAI,EAAE,OAAO;AACrB,QAAQ,KAAK;AACb,QAAQ,uBAAuB;AAC/B,QAAQ,qBAAqB;AAC7B,QAAQ,UAAU,EAAE,IAAI;AACxB,QAAQ,aAAa,EAAE,IAAI;AAC3B,QAAQ,QAAQ,EAAE,EAAE;AACpB,QAAQ,OAAO,EAAE,MAAM;AACvB,YAAYA,sBAAoB,CAAC,OAAO,EAAE,OAAO,CAAC;AAClD,YAAY,aAAa,CAAC,OAAO,EAAE,OAAO,CAAC;AAC3C,YAAY,MAAM,CAAC,SAAS,GAAG,uBAAuB;AACtD,YAAY,MAAM,CAAC,aAAa,GAAG,qBAAqB,KAAK,IAAI,IAAI,qBAAqB,KAAK,MAAM,GAAG,qBAAqB,GAAG,SAAS;AACzI,QAAQ,CAAC;AACT,KAAK;AACL,IAAID,qBAAmB,CAAC,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC,KAAK,KAAK;AACnE,QAAQ,MAAM,OAAO,GAAG,yBAAyB,CAAC,MAAM,EAAE,KAAK,CAAC;AAChE,QAAQ,IAAI,CAAC,OAAO;AACpB,YAAY;AACZ,QAAQ,MAAM,CAAC,mBAAmB,EAAE;AACpC,QAAQ,OAAO,CAAC,UAAU,GAAG,OAAO;AACpC,IAAI,CAAC,CAAC;AACN,IAAIA,qBAAmB,CAAC,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC,KAAK,KAAK;AACnE,QAAQ,MAAM,OAAO,GAAG,yBAAyB,CAAC,MAAM,EAAE,KAAK,CAAC;AAChE,QAAQ,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU;AAC3C,YAAY;AACZ,QAAQ,aAAa,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC;AAChD,IAAI,CAAC,CAAC;AACN,IAAIA,qBAAmB,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,KAAK,KAAK;AACjE,QAAQ,MAAM,OAAO,GAAG,yBAAyB,CAAC,MAAM,EAAE,KAAK,CAAC;AAChE,QAAQ,IAAI,CAAC,OAAO,EAAE;AACtB,YAAY,OAAO,CAAC,UAAU,GAAG,IAAI;AACrC,YAAY,aAAa,CAAC,OAAO,EAAE,OAAO,CAAC;AAC3C,YAAY;AACZ,QAAQ;AACR,QAAQ,wBAAwB,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC;AAC3D,IAAI,CAAC,CAAC;AACN,IAAI,OAAO,CAAC,eAAe,CAAC,OAAO,CAAC;AACpC,IAAI,OAAO,CAAC,QAAQ,EAAE;AACtB;AACO,SAAS,mBAAmB,CAAC,OAAO,EAAE;AAC7C,IAAI,MAAM,OAAO,GAAG,OAAO,CAAC,eAAe,EAAE;AAC7C,IAAI,IAAI,CAAC,OAAO;AAChB,QAAQ;AACR,IAAI,wBAAwB,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,cAAc,EAAE,CAAC,KAAK,CAAC;AAC9E;AACO,SAAS,aAAa,CAAC,OAAO,EAAE;AACvC,IAAI,MAAM,OAAO,GAAG,OAAO,CAAC,eAAe,EAAE;AAC7C,IAAI,IAAI,CAAC,OAAO;AAChB,QAAQ;AACR,IAAI,OAAO,CAAC,OAAO,EAAE;AACrB,IAAI,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC;AACjC,IAAI,OAAO,CAAC,MAAM,CAAC,gBAAgB,EAAE;AACrC,IAAI,OAAO,CAAC,QAAQ,EAAE;AACtB;;ACjUO,SAAS,mBAAmB,CAAC,MAAM,EAAE;AAC5C,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE;AAC3B,QAAQ;AACR,IAAI,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,eAAe,CAAC;AACpD,QAAQ;AACR,IAAI,IAAI,MAAM,CAAC,gBAAgB,EAAE;AACjC,QAAQ;AACR,IAAIE,aAAiB,CAAC,MAAM,CAAC,0BAA0B,EAAE,CAAC;AAC1D,IAAI,MAAM,eAAe,GAAG,MAAM,CAAC,oBAAoB,CAAC,eAAe,EAAE,KAAK,CAAC;AAC/E,IAAI,MAAM,CAAC,uBAAuB,CAAC,eAAe,CAAC;AACnD,IAAI,MAAM,CAAC,gBAAgB,CAAC,eAAe,CAAC;AAC5C;AACO,SAAS,kBAAkB,CAAC,MAAM,EAAE;AAC3C,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE;AACvD,QAAQ;AACR,IAAI,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,cAAc,CAAC;AACnD,QAAQ;AACR,IAAIC,YAAgB,CAAC,MAAM,CAAC,0BAA0B,EAAE,CAAC;AACzD,IAAI,MAAM,eAAe,GAAG,MAAM,CAAC,oBAAoB,CAAC,cAAc,EAAE,KAAK,CAAC;AAC9E,IAAI,MAAM,CAAC,uBAAuB,CAAC,eAAe,CAAC;AACnD,IAAI,MAAM,CAAC,gBAAgB,CAAC,eAAe,CAAC;AAC5C;AACO,SAAS,0BAA0B,CAAC,MAAM,EAAE,MAAM,GAAG,EAAE,EAAE;AAChE,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE;AAC3B,QAAQ,OAAO,IAAI;AACnB,IAAI,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,sBAAsB,CAAC;AAC3D,QAAQ,OAAO,IAAI;AACnB,IAAI,OAAOC,oBAAwB,CAAC,MAAM,CAAC,0BAA0B,EAAE,EAAE,MAAM,CAAC;AAChF;AACO,SAAS,mBAAmB,CAAC,MAAM,EAAE;AAC5C,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE;AAC3B,QAAQ;AACR,IAAI,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,eAAe,CAAC;AACpD,QAAQ;AACR,IAAI,IAAI,MAAM,CAAC,gBAAgB,EAAE;AACjC,QAAQ;AACR,IAAIC,aAAiB,CAAC,MAAM,CAAC,0BAA0B,EAAE,CAAC;AAC1D,IAAI,MAAM,CAAC,YAAY,EAAE;AACzB,IAAI,MAAM,eAAe,GAAG,MAAM,CAAC,oBAAoB,CAAC,eAAe,EAAE,KAAK,CAAC;AAC/E,IAAI,MAAM,CAAC,uBAAuB,CAAC,eAAe,CAAC;AACnD,IAAI,MAAM,CAAC,gBAAgB,CAAC,eAAe,CAAC;AAC5C;AACO,SAAS,kBAAkB,CAAC,MAAM,EAAE;AAC3C,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE;AACvD,QAAQ;AACR,IAAI,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,cAAc,CAAC;AACnD,QAAQ;AACR,IAAIC,YAAgB,CAAC,MAAM,CAAC,0BAA0B,EAAE,CAAC;AACzD,IAAI,MAAM,CAAC,YAAY,EAAE;AACzB,IAAI,MAAM,eAAe,GAAG,MAAM,CAAC,oBAAoB,CAAC,cAAc,EAAE,KAAK,CAAC;AAC9E,IAAI,MAAM,CAAC,uBAAuB,CAAC,eAAe,CAAC;AACnD,IAAI,MAAM,CAAC,gBAAgB,CAAC,eAAe,CAAC;AAC5C;;ACnDO,SAAS,0BAA0B,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE;AACtE,IAAI,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,SAAS,CAAC;AAC9C,QAAQ;AACR,IAAI,MAAM,aAAa,GAAG,oCAAoC,CAAC,MAAM,CAAC;AACtE,IAAI,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;AAClC,QAAQ,MAAM,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC,EAAE,SAAS,CAAC,qCAAqC,EAAE,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AACnH,IAAI;AACJ,IAAI,MAAM,IAAI,GAAG,8BAA8B,CAAC,MAAM,CAAC,oBAAoB,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,oBAAoB,EAAE,CAAC;AACrH,IAAI,IAAI,qCAAqC,CAAC,MAAM,CAAC,oBAAoB,EAAE,EAAE,IAAI,CAAC;AAClF,QAAQ;AACR,IAAI,MAAM,CAAC,oBAAoB,CAAC,IAAI,CAAC;AACrC,IAAI,MAAM,CAAC,YAAY,EAAE;AACzB,IAAI,MAAM,CAAC,QAAQ,EAAE;AACrB,IAAI,MAAM,CAAC,gBAAgB,CAAC,MAAM,CAAC,oBAAoB,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;AAC1E;AACO,SAAS,0BAA0B,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE;AACtE,IAAI,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,SAAS,CAAC;AAC9C,QAAQ;AACR,IAAI,MAAM,aAAa,GAAG,0BAA0B,CAAC,MAAM,CAAC;AAC5D,IAAI,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;AAClC,QAAQ,MAAM,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC,EAAE,SAAS,CAAC,qCAAqC,EAAE,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AACnH,IAAI;AACJ,IAAI,MAAM,IAAI,GAAG,oBAAoB,CAAC,MAAM,CAAC,oBAAoB,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,oBAAoB,EAAE,CAAC;AAC3G,IAAI,IAAI,2BAA2B,CAAC,MAAM,CAAC,oBAAoB,EAAE,EAAE,IAAI,CAAC;AACxE,QAAQ;AACR,IAAI,MAAM,CAAC,oBAAoB,CAAC,IAAI,CAAC;AACrC,IAAI,eAAe,CAAC,MAAM,CAAC,0BAA0B,EAAE,CAAC;AACxD,IAAI,MAAM,CAAC,YAAY,EAAE;AACzB,IAAI,MAAM,CAAC,QAAQ,EAAE;AACrB,IAAI,MAAM,CAAC,gBAAgB,CAAC,MAAM,CAAC,oBAAoB,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;AAC1E;AACO,SAAS,yBAAyB,CAAC,MAAM,EAAE,KAAK,EAAE;AACzD,IAAI,IAAI,EAAE;AACV,IAAI,IAAI,MAAM,CAAC,UAAU,EAAE,EAAE;AAC7B,QAAQ,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC;AAClC,QAAQ;AACR,IAAI;AACJ,IAAI,MAAM,QAAQ,GAAG,CAAC,EAAE,GAAG,MAAM,CAAC,SAAS,EAAE,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,MAAM,GAAG,EAAE,CAAC,eAAe,EAAE;AACxG,IAAI,IAAI,QAAQ,IAAI,sBAAsB,CAAC,QAAQ,CAAC,EAAE;AACtD,QAAQ,MAAM,CAAC,wBAAwB,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;AACxD,QAAQ;AACR,IAAI;AACJ,IAAI,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC;AAC9B;AACO,SAAS,4BAA4B,CAAC,MAAM,EAAE,IAAI,EAAE;AAC3D,IAAI,IAAI,EAAE;AACV,IAAI,IAAI,MAAM,CAAC,UAAU,EAAE,EAAE;AAC7B,QAAQ,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC;AACpC,QAAQ;AACR,IAAI;AACJ,IAAI,MAAM,QAAQ,GAAG,CAAC,EAAE,GAAG,MAAM,CAAC,SAAS,EAAE,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,MAAM,GAAG,EAAE,CAAC,eAAe,EAAE;AACxG,IAAI,IAAI,QAAQ,IAAI,sBAAsB,CAAC,QAAQ,CAAC,EAAE;AACtD,QAAQ,MAAM,CAAC,wBAAwB,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAC3D,QAAQ;AACR,IAAI;AACJ,IAAI,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC;AAChC;AACO,SAAS,yBAAyB,CAAC,MAAM,EAAE,KAAK,EAAE;AACzD,IAAI,IAAI,EAAE;AACV,IAAI,IAAI,MAAM,CAAC,UAAU,EAAE,EAAE;AAC7B,QAAQ,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC;AAClC,QAAQ;AACR,IAAI;AACJ,IAAI,MAAM,QAAQ,GAAG,CAAC,EAAE,GAAG,MAAM,CAAC,SAAS,EAAE,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,MAAM,GAAG,EAAE,CAAC,eAAe,EAAE;AACxG,IAAI,IAAI,QAAQ,IAAI,sBAAsB,CAAC,QAAQ,CAAC,EAAE;AACtD,QAAQ,MAAM,CAAC,wBAAwB,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;AAC1D,QAAQ;AACR,IAAI;AACJ,IAAI,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC;AAC9B;AACO,SAAS,6BAA6B,CAAC,MAAM,EAAE,IAAI,EAAE;AAC5D,IAAI,IAAI,EAAE;AACV,IAAI,IAAI,MAAM,CAAC,UAAU,EAAE,EAAE;AAC7B,QAAQ,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC;AACrC,QAAQ;AACR,IAAI;AACJ,IAAI,MAAM,QAAQ,GAAG,CAAC,EAAE,GAAG,MAAM,CAAC,SAAS,EAAE,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,MAAM,GAAG,EAAE,CAAC,eAAe,EAAE;AACxG,IAAI,IAAI,QAAQ,IAAI,sBAAsB,CAAC,QAAQ,CAAC,EAAE;AACtD,QAAQ,MAAM,CAAC,wBAAwB,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;AAC9D,QAAQ;AACR,IAAI;AACJ,IAAI,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC;AACjC;;AC7EA,MAAM,cAAc,GAAG,kBAAkB;AACzC,MAAM,gBAAgB,GAAG,SAAS;AAClC,MAAM,cAAc,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;AAC7B,MAAM,qBAAqB,GAAG,CAAC;AAC/B,MAAM,oBAAoB,GAAG,EAAE;AAC/B,MAAM,+BAA+B,GAAG,IAAI;AAC5C,SAAS,sBAAsB,CAAC,KAAK,EAAE,QAAQ,EAAE;AACjD,IAAI,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC;AACjC,IAAI,OAAO,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,OAAO,GAAG,QAAQ;AACxD;AACA,SAAS,iBAAiB,CAAC,QAAQ,EAAE;AACrC,IAAI,IAAI,QAAQ,KAAK,YAAY;AACjC,QAAQ,OAAO,MAAM;AACrB,IAAI,IAAI,QAAQ,KAAK,WAAW;AAChC,QAAQ,OAAO,KAAK;AACpB,IAAI,IAAI,QAAQ,KAAK,YAAY;AACjC,QAAQ,OAAO,MAAM;AACrB,IAAI,OAAO,IAAI;AACf;AACA,SAAS,uBAAuB,CAAC,iBAAiB,EAAE,iBAAiB,EAAE;AACvE,IAAI,MAAM,WAAW,GAAG,MAAM,CAAC,iBAAiB,CAAC;AACjD,IAAI,IAAI,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE;AACtC,QAAQ,OAAOC,YAAkB,CAAC,WAAW,EAAE,+BAA+B,CAAC;AAC/E,IAAI;AACJ,IAAI,MAAM,eAAe,GAAG,MAAM,CAAC,iBAAiB,CAAC;AACrD,IAAI,IAAI,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE;AAC1C,QAAQ,OAAOA,YAAkB,CAAC,eAAe,EAAE,+BAA+B,CAAC;AACnF,IAAI;AACJ,IAAI,OAAO,+BAA+B;AAC1C;AACA,SAAS,uBAAuB,CAAC,KAAK,EAAE;AACxC,IAAI,IAAI,EAAE,EAAE,EAAE;AACd,IAAI,MAAM,SAAS,GAAG,KAAK,CAAC,kBAAkB;AAC9C,IAAI,MAAM,MAAM,GAAG,SAAS,KAAK,SAAS,IAAI,SAAS,KAAK,IAAI,IAAI,SAAS,KAAK;AAClF,WAAW,CAAC,EAAE,GAAG,iBAAiB,CAAC,KAAK,CAAC,oBAAoB,CAAC,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,KAAK;AACtG,WAAW,CAAC,EAAE,GAAG,uBAAuB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,KAAK,CAAC;AACpG,IAAI,MAAM,QAAQ,GAAG,WAAW,CAAC,MAAM,CAAC;AACxC,IAAI,IAAI,MAAM,KAAK,KAAK;AACxB,QAAQ,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE;AACnC,IAAI,OAAO;AACX,QAAQ,MAAM;AACd,QAAQ,QAAQ;AAChB,QAAQ,OAAO,EAAE,uBAAuB,CAAC,KAAK,CAAC,iBAAiB,EAAE,KAAK,CAAC,iBAAiB,CAAC;AAC1F,KAAK;AACL;AACA,SAAS,wBAAwB,CAAC,QAAQ,EAAE;AAC5C,IAAI,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC;AAC7C,IAAI,MAAM,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC;AACjD,IAAI,IAAI,eAAe,GAAG,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,eAAe,GAAG,GAAG,CAAC,GAAG,IAAI,EAAE;AAC1E,QAAQ,OAAO,aAAa,CAAC,QAAQ,CAAC;AACtC,IAAI;AACJ,IAAI,OAAO;AACX,QAAQ,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;AACxC,QAAQ,GAAG,EAAE,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;AACtC,QAAQ,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;AAClG,QAAQ,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;AACpG,KAAK;AACL;AACA,SAAS,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE;AAC1C,IAAI,KAAK,MAAM,cAAc,IAAI,OAAO,CAAC,QAAQ,EAAE;AACnD,QAAQ,KAAK,MAAM,MAAM,IAAI,cAAc,CAAC,QAAQ,EAAE;AACtD,YAAY,IAAI;AAChB,gBAAgB,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,QAAQ,CAAC;AAC5E,YAAY;AACZ,YAAY,MAAM;AAClB,YAAY;AACZ,QAAQ;AACR,IAAI;AACJ,IAAI,OAAO,CAAC,QAAQ,GAAG,EAAE;AACzB,IAAI,IAAI,OAAO,CAAC,QAAQ,EAAE;AAC1B,QAAQ,IAAI;AACZ,YAAY,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC;AACnD,QAAQ;AACR,QAAQ,MAAM;AACd,QAAQ;AACR,QAAQ,OAAO,CAAC,QAAQ,GAAG,IAAI;AAC/B,IAAI;AACJ;AACA,SAAS,sBAAsB,CAAC,OAAO,EAAE;AACzC,IAAI,KAAK,MAAM,MAAM,IAAI,OAAO,CAAC,WAAW,EAAE;AAC9C,QAAQ,IAAI;AACZ,YAAY,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,CAAC;AACzF,QAAQ;AACR,QAAQ,MAAM;AACd,QAAQ;AACR,IAAI;AACJ,IAAI,OAAO,CAAC,WAAW,GAAG,EAAE;AAC5B;AACA,SAAS,sBAAsB,CAAC,OAAO,EAAE;AACzC,IAAI,KAAK,MAAM,MAAM,IAAI,OAAO,CAAC,WAAW,EAAE;AAC9C,QAAQ,sBAAsB,CAAC,MAAM,CAAC;AACtC,IAAI;AACJ,IAAI,OAAO,CAAC,WAAW,GAAG,EAAE;AAC5B;AACA,SAAS,eAAe,CAAC,OAAO,EAAE,OAAO,EAAE;AAC3C,IAAI,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC;AACpC,IAAI,sBAAsB,CAAC,OAAO,CAAC;AACnC,IAAI,sBAAsB,CAAC,OAAO,CAAC;AACnC,IAAI,IAAI;AACR,QAAQ,OAAO,CAAC,MAAM,CAAC,SAAS,GAAG,CAAC,CAAC,OAAO,CAAC,aAAa;AAC1D,IAAI;AACJ,IAAI,MAAM;AACV,IAAI;AACJ;AACA,SAAS,mBAAmB,CAAC,SAAS,EAAE,WAAW,EAAE;AACrD,IAAI,MAAM,KAAK,GAAG,MAAM,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC,WAAW,CAAC;AACzD,IAAI,OAAO,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,GAAG,KAAK,GAAG,CAAC;AAC1D;AACA,SAAS,4BAA4B,CAAC,OAAO,EAAE,UAAU,EAAE;AAC3D,IAAI,MAAM,aAAa,GAAG,OAAO,CAAC,gBAAgB,EAAE;AACpD,IAAI,IAAI,CAAC,aAAa,EAAE;AACxB,QAAQ,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;AACxD,IAAI;AACJ,IAAI,aAAa,CAAC,SAAS,EAAE;AAC7B,IAAI,MAAM,WAAW,GAAG,aAAa,CAAC,eAAe,EAAE;AACvD,IAAI,OAAO;AACX,QAAQ,IAAI,EAAE,sBAAsB,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC;AACzD,QAAQ,GAAG,EAAE,sBAAsB,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,CAAC;AACvD,QAAQ,MAAM,EAAE,mBAAmB,CAAC,WAAW,CAAC,KAAK,EAAE,UAAU,CAAC,KAAK,CAAC;AACxE,QAAQ,MAAM,EAAE,mBAAmB,CAAC,WAAW,CAAC,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC;AAC1E,KAAK;AACL;AACA,SAAS,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE;AAC5C,IAAI,MAAM,IAAI,GAAG,aAAa,CAAC,IAAI,CAAC;AACpC,IAAI,QAAQ,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,KAAK;AAClD,QAAQ,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,IAAI;AAC5C,QAAQ,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,GAAG,MAAM,CAAC,MAAM;AAC7C,QAAQ,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,GAAG;AAC3C;AACA,SAAS,qBAAqB,CAAC,MAAM,EAAE,UAAU,EAAE,WAAW,GAAG,EAAE,EAAE;AACrE,IAAI,IAAI,EAAE;AACV,IAAI,MAAM,OAAO,GAAG,EAAE;AACtB,IAAI,MAAM,iBAAiB,GAAG,WAAW,CAAC,MAAM,GAAG;AACnD,UAAU,IAAI,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AACtE,UAAU,IAAI;AACd,IAAI,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC;AAC1D,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;AAC9B,QAAQ,IAAI;AACZ,YAAY,IAAI,CAAC,SAAS,EAAE;AAC5B,YAAY,MAAM,UAAU,GAAG,oBAAoB,CAAC,IAAI,EAAE,UAAU,CAAC;AACrE,YAAY,IAAI,UAAU,EAAE;AAC5B,gBAAgB,MAAM,WAAW,GAAG,CAAC,EAAE,GAAG,iBAAiB,KAAK,IAAI,IAAI,iBAAiB,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,EAAE,GAAG,sBAAsB,CAAC,IAAI,CAAC;AAC1M,gBAAgB,OAAO,CAAC,IAAI,CAAC;AAC7B,oBAAoB,IAAI;AACxB,oBAAoB,IAAI,EAAE,sBAAsB,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;AAC9D,oBAAoB,GAAG,EAAE,sBAAsB,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;AAC5D,oBAAoB,KAAK,EAAE,sBAAsB,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;AAChE,oBAAoB,MAAM,EAAE,sBAAsB,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;AAClE,oBAAoB,MAAM,EAAE,sBAAsB,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;AAClE,oBAAoB,WAAW;AAC/B,iBAAiB,CAAC;AAClB,YAAY;AACZ,YAAY,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;AAC/B,QAAQ;AACR,QAAQ,MAAM;AACd,QAAQ;AACR,IAAI;AACJ,IAAI,OAAO,OAAO;AAClB;AACA,SAAS,qBAAqB,CAAC,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE;AAC7D,IAAI,IAAI,EAAE;AACV,IAAI,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;AAC5B,QAAQ;AACR,IAAI,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO;AAC9B,IAAI,MAAM,SAAS,GAAG,4BAA4B,CAAC,OAAO,EAAE,UAAU,CAAC;AACvE,IAAI,IAAI,aAAa,GAAG,CAAC;AACzB,IAAI,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;AAClC,QAAQ,IAAI;AACZ,YAAY,sBAAsB,CAAC,MAAM,CAAC,WAAW,CAAC;AACtD,YAAY,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;AAC5B,gBAAgB,IAAI,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,GAAG,UAAU,CAAC,IAAI,IAAI,SAAS,CAAC,MAAM;AACzF,gBAAgB,GAAG,EAAE,SAAS,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,GAAG,UAAU,CAAC,GAAG,IAAI,SAAS,CAAC,MAAM;AACrF,gBAAgB,KAAK,EAAE,MAAM,CAAC,KAAK;AACnC,gBAAgB,MAAM,EAAE,MAAM,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM;AACxD,gBAAgB,MAAM,EAAE,MAAM,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM;AACxD,gBAAgB,OAAO,EAAE,IAAI;AAC7B,aAAa,CAAC;AACd,YAAY,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE;AACnC,YAAY,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC;AACnC,YAAY,MAAM,CAAC,kBAAkB,CAAC,MAAM,CAAC,IAAI,CAAC;AAClD,YAAY,yBAAyB,CAAC,MAAM,CAAC,IAAI,CAAC;AAClD,YAAY,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;AACjD,YAAY,IAAI,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,aAAa;AACzD,gBAAgB,aAAa,GAAG,EAAE;AAClC,QAAQ;AACR,QAAQ,MAAM;AACd,QAAQ;AACR,IAAI;AACJ,IAAI,IAAI,OAAO,OAAO,CAAC,cAAc,KAAK,UAAU;AACpD,QAAQ,OAAO,OAAO,CAAC,cAAc,KAAK,UAAU,EAAE;AACtD,QAAQ,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC;AAC5D,QAAQ,MAAM,WAAW,GAAG,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,GAAG,WAAW,GAAG,CAAC;AAC1E,QAAQ,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;AACpE,IAAI;AACJ,IAAI,IAAI;AACR,QAAQ,CAAC,EAAE,GAAG,OAAO,CAAC,cAAc,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC;AAC3F,IAAI;AACJ,IAAI,MAAM;AACV,IAAI;AACJ;AACA,MAAM,yBAAyB,GAAG,MAAM,CAAC,MAAM,CAAC;AAChD,IAAI,IAAI,EAAE,IAAI;AACd,IAAI,KAAK,EAAE,CAAC;AACZ,IAAI,KAAK,EAAE,CAAC,GAAG,CAAC;AAChB,IAAI,KAAK,EAAE,CAAC,GAAG,CAAC;AAChB,IAAI,KAAK,EAAE,CAAC,GAAG,CAAC;AAChB,IAAI,KAAK,EAAE,CAAC,GAAG,CAAC;AAChB,IAAI,MAAM,EAAE,CAAC,GAAG,EAAE;AAClB,IAAI,MAAM,EAAE,EAAE,GAAG,CAAC;AAClB,CAAC,CAAC;AACK,SAAS,wBAAwB,CAAC,KAAK,EAAE;AAChD,IAAI,IAAI,EAAE;AACV,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS;AAC7C,QAAQ,OAAO,IAAI;AACnB,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AACnC,QAAQ,OAAO,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,GAAG,KAAK,GAAG,IAAI;AACjE,IAAI;AACJ,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AACnC,QAAQ,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE;AACpC,QAAQ,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,yBAAyB,EAAE,OAAO,CAAC,EAAE;AACtF,YAAY,OAAO,CAAC,EAAE,GAAG,yBAAyB,CAAC,OAAO,CAAC,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,IAAI;AAClG,QAAQ;AACR,QAAQ,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC;AACxC,QAAQ,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;AAC9B,YAAY,OAAO,IAAI;AACvB,QAAQ,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACtC,QAAQ,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACvC,QAAQ,OAAO,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,GAAG;AAC1F,cAAc,KAAK,GAAG;AACtB,cAAc,IAAI;AAClB,IAAI;AACJ,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AACnC,QAAQ,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC;AACzC,QAAQ,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC;AAC3C,QAAQ,OAAO,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,GAAG;AAC1F,cAAc,KAAK,GAAG;AACtB,cAAc,IAAI;AAClB,IAAI;AACJ,IAAI,OAAO,IAAI;AACf;AACA,SAAS,oBAAoB,CAAC,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE;AAChE,IAAI,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC;AAC9C,IAAI,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,CAAC;AAChD,IAAI,IAAI,KAAK,GAAG,YAAY;AAC5B,IAAI,IAAI,MAAM,GAAG,KAAK,GAAG,WAAW;AACpC,IAAI,IAAI,MAAM,GAAG,aAAa,EAAE;AAChC,QAAQ,MAAM,GAAG,aAAa;AAC9B,QAAQ,KAAK,GAAG,MAAM,GAAG,WAAW;AACpC,IAAI;AACJ,IAAI,OAAO;AACX,QAAQ,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC;AACjC,QAAQ,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC;AACnC,KAAK;AACL;AACA,SAAS,8BAA8B,CAAC,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE;AAC/F,IAAI,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC;AACrC,IAAI,IAAI,MAAM,GAAG,KAAK,GAAG,WAAW;AACpC,IAAI,IAAI,MAAM,GAAG,SAAS,EAAE;AAC5B,QAAQ,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,CAAC;AACvC,QAAQ,KAAK,GAAG,MAAM,GAAG,WAAW;AACpC,IAAI;AACJ,IAAI,OAAO,KAAK,IAAI,QAAQ,IAAI,MAAM,IAAI,SAAS,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI;AAC9E;AACA,SAAS,4BAA4B,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE;AACxE,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE;AAClB,IAAI,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,QAAQ,CAAC,QAAQ,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,CAAC,EAAE,GAAG,MAAM,CAAC,iBAAiB,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,MAAM,GAAG,EAAE,CAAC,MAAM,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,WAAW,EAAE;AAC5N,IAAI,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,IAAI;AAC1C,QAAQ,OAAO,QAAQ;AACvB,IAAI,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,IAAI;AAC1C,QAAQ,OAAO,OAAO;AACtB,IAAI,OAAO,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,QAAQ,GAAG,OAAO;AAC3E;AACA,SAAS,wBAAwB,CAAC,cAAc,EAAE,eAAe,EAAE,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE;AACjI,IAAI,IAAI,EAAE;AACV,IAAI,MAAM,OAAO,GAAG,oBAAoB,CAAC,QAAQ,EAAE,SAAS,EAAE,WAAW,CAAC;AAC1E,IAAI,MAAM,OAAO,GAAG,CAAC,EAAE,GAAG,8BAA8B,CAAC,QAAQ,EAAE,SAAS,EAAE,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,OAAO;AACnK,IAAI,IAAI,KAAK,GAAG,KAAK,KAAK,QAAQ,GAAG,eAAe,GAAG,WAAW,GAAG,cAAc;AACnF,IAAI,IAAI,MAAM,GAAG,KAAK,KAAK,QAAQ,GAAG,eAAe,GAAG,cAAc,GAAG,WAAW;AACpF,IAAI,IAAI,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE;AAC1D,QAAQ,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO;AACpC,IAAI;AACJ,IAAI,IAAI,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE;AAC1D,QAAQ,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO;AACpC,IAAI;AACJ,IAAI,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE;AAC5B;AACA,SAAS,qBAAqB,CAAC,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,OAAO,EAAE;AAC5F,IAAI,MAAM,MAAM,GAAG,OAAO,GAAG,CAAC,GAAG,YAAY,GAAG,OAAO,GAAG,CAAC;AAC3D,IAAI,MAAM,MAAM,GAAG,OAAO,GAAG,CAAC,GAAG,aAAa,GAAG,OAAO,GAAG,CAAC;AAC5D,IAAI,OAAO;AACX,QAAQ,IAAI,EAAE,UAAU,GAAG,MAAM;AACjC,QAAQ,GAAG,EAAE,SAAS,GAAG,MAAM;AAC/B,QAAQ,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,YAAY,GAAG,MAAM,GAAG,CAAC,CAAC;AACrD,QAAQ,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,aAAa,GAAG,MAAM,GAAG,CAAC,CAAC;AACvD,KAAK;AACL;AACA,SAAS,iBAAiB,CAAC,OAAO,EAAE;AACpC,IAAI,MAAM,aAAa,GAAG,OAAO,CAAC,gBAAgB,EAAE;AACpD,IAAI,IAAI,CAAC,aAAa;AACtB,QAAQ,OAAO,IAAI;AACnB,IAAI,aAAa,CAAC,SAAS,EAAE;AAC7B,IAAI,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO;AAC/B,IAAI,MAAM,WAAW,GAAG,aAAa,CAAC,eAAe,EAAE;AACvD,IAAI,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC;AAChE,UAAU,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO;AACrC,UAAU,oBAAoB;AAC9B,IAAI,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AAChE,IAAI,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;AAC9D,IAAI,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;AACnE,IAAI,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;AACrE,IAAI,MAAM,kBAAkB,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AAC9E,IAAI,MAAM,mBAAmB,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AAChF,IAAI,OAAO;AACX,QAAQ,UAAU;AAClB,QAAQ,SAAS;AACjB,QAAQ,YAAY;AACpB,QAAQ,aAAa;AACrB,QAAQ,YAAY,EAAE,IAAI,CAAC,GAAG,CAAC,kBAAkB,EAAE,YAAY,CAAC;AAChE,QAAQ,aAAa,EAAE,IAAI,CAAC,GAAG,CAAC,mBAAmB,EAAE,aAAa,CAAC;AACnE,QAAQ,OAAO;AACf,QAAQ,WAAW;AACnB,KAAK;AACL;AACA,SAAS,uBAAuB,CAAC,QAAQ,EAAE,MAAM,EAAE;AACnD,IAAI,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,YAAY,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC9I,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,aAAa,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClJ,IAAI,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,GAAG,MAAM,CAAC,YAAY,GAAG,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,UAAU,CAAC,CAAC;AACnJ,IAAI,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,GAAG,MAAM,CAAC,aAAa,GAAG,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,SAAS,CAAC,CAAC;AAChJ,IAAI,QAAQ,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;AACpE;AACA,SAAS,2BAA2B,CAAC,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE;AACrE,IAAI,MAAM,MAAM,GAAG,iBAAiB,CAAC,OAAO,CAAC;AAC7C,IAAI,IAAI,CAAC,MAAM;AACf,QAAQ;AACR,IAAI,IAAI,WAAW,KAAK,IAAI,EAAE;AAC9B,QAAQ,uBAAuB,CAAC,QAAQ,EAAE,MAAM,CAAC;AACjD,QAAQ,QAAQ,CAAC,SAAS,EAAE;AAC5B,QAAQ;AACR,IAAI;AACJ,IAAI,MAAM,SAAS,GAAG,qBAAqB,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC,OAAO,CAAC;AAC3I,IAAI,MAAM,MAAM,GAAG,oBAAoB,CAAC,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,MAAM,EAAE,WAAW,CAAC;AACvF,IAAI,QAAQ,CAAC,GAAG,CAAC;AACjB,QAAQ,IAAI,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,SAAS,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,CAAC;AACnE,QAAQ,GAAG,EAAE,SAAS,CAAC,GAAG,GAAG,CAAC,SAAS,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,CAAC;AACnE,QAAQ,KAAK,EAAE,MAAM,CAAC,KAAK;AAC3B,QAAQ,MAAM,EAAE,MAAM,CAAC,MAAM;AAC7B,QAAQ,MAAM,EAAE,CAAC;AACjB,QAAQ,MAAM,EAAE,CAAC;AACjB,KAAK,CAAC;AACN,IAAI,QAAQ,CAAC,SAAS,EAAE;AACxB;AACA,SAAS,+BAA+B,CAAC,QAAQ,EAAE,WAAW,EAAE,uBAAuB,EAAE;AACzF,IAAI,MAAM,WAAW,GAAG,WAAW,KAAK,IAAI;AAC5C,IAAI,QAAQ,CAAC,qBAAqB,CAAC;AACnC,QAAQ,EAAE,EAAE,IAAI;AAChB,QAAQ,EAAE,EAAE,IAAI;AAChB,QAAQ,EAAE,EAAE,IAAI;AAChB,QAAQ,EAAE,EAAE,IAAI;AAChB,QAAQ,EAAE,EAAE,CAAC,WAAW;AACxB,QAAQ,EAAE,EAAE,CAAC,WAAW;AACxB,QAAQ,EAAE,EAAE,CAAC,WAAW;AACxB,QAAQ,EAAE,EAAE,CAAC,WAAW;AACxB,QAAQ,GAAG,EAAE,uBAAuB;AACpC,KAAK,CAAC;AACN,IAAI,QAAQ,CAAC,SAAS,EAAE;AACxB;AACO,SAAS,aAAa,CAAC,OAAO,EAAE,eAAe,GAAG,EAAE,EAAE;AAC7D,IAAI,IAAI,EAAE;AACV,IAAI,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO;AACvC,IAAI,IAAI,OAAO,CAAC,cAAc,EAAE;AAChC,QAAQ;AACR,IAAI,MAAM,aAAa,GAAG,OAAO,CAAC,gBAAgB,EAAE;AACpD,IAAI,IAAI,CAAC,aAAa;AACtB,QAAQ;AACR,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE;AAChC,QAAQ;AACR,IAAI,MAAM,CAAC,mBAAmB,EAAE;AAChC,IAAI,MAAM,UAAU,GAAG,OAAO,CAAC,SAAS,EAAE;AAC1C,IAAI,MAAM,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC,SAAS;AAC5C,IAAI,MAAM,CAAC,SAAS,GAAG,KAAK;AAC5B,IAAI,aAAa,CAAC,SAAS,EAAE;AAC7B,IAAI,MAAM,WAAW,GAAG,aAAa,CAAC,eAAe,EAAE;AACvD,IAAI,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC;AAChE,UAAU,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO;AACrC,UAAU,oBAAoB;AAC9B,IAAI,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AAChE,IAAI,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;AAC9D,IAAI,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;AACnE,IAAI,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;AACrE,IAAI,MAAM,kBAAkB,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AAC9E,IAAI,MAAM,mBAAmB,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AAChF,IAAI,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,kBAAkB,EAAE,YAAY,CAAC;AACnE,IAAI,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,mBAAmB,EAAE,aAAa,CAAC;AACtE,IAAI,MAAM,aAAa,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,uBAAuB;AAChE,IAAI,MAAM,WAAW,GAAG,wBAAwB,CAAC,CAAC,EAAE,GAAG,eAAe,CAAC,WAAW,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC;AAC9I,IAAI,IAAI,QAAQ;AAChB,IAAI,IAAI,OAAO;AACf,IAAI,IAAI,SAAS;AACjB,IAAI,IAAI,UAAU;AAClB,IAAI,MAAM,SAAS,GAAG,qBAAqB,CAAC,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,OAAO,CAAC;AACxG,IAAI,IAAI,WAAW,KAAK,IAAI,EAAE;AAC9B,QAAQ,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,SAAS,CAAC,KAAK,CAAC;AAC3D,QAAQ,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,SAAS,CAAC,MAAM,CAAC;AAC9D,QAAQ,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,GAAG,YAAY,GAAG,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,IAAI,CAAC,CAAC,CAAC;AAC5I,QAAQ,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,GAAG,aAAa,GAAG,UAAU,EAAE,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,SAAS,CAAC,GAAG,GAAG,CAAC,SAAS,CAAC,MAAM,GAAG,UAAU,IAAI,CAAC,CAAC,CAAC;AAC5I,IAAI;AACJ,SAAS;AACT,QAAQ,MAAM,MAAM,GAAG,oBAAoB,CAAC,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,MAAM,EAAE,WAAW,CAAC;AAC3F,QAAQ,SAAS,GAAG,MAAM,CAAC,KAAK;AAChC,QAAQ,UAAU,GAAG,MAAM,CAAC,MAAM;AAClC,QAAQ,QAAQ,GAAG,SAAS,CAAC,IAAI,GAAG,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,IAAI,CAAC;AACrE,QAAQ,OAAO,GAAG,SAAS,CAAC,GAAG,GAAG,CAAC,SAAS,CAAC,MAAM,GAAG,UAAU,IAAI,CAAC;AACrE,IAAI;AACJ,IAAI,MAAM,QAAQ,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC;AAC7C,QAAQ,IAAI,EAAE,QAAQ;AACtB,QAAQ,GAAG,EAAE,OAAO;AACpB,QAAQ,KAAK,EAAE,SAAS;AACxB,QAAQ,MAAM,EAAE,UAAU;AAC1B,QAAQ,OAAO,EAAE,MAAM;AACvB,QAAQ,OAAO,EAAE,KAAK;AACtB,QAAQ,IAAI,EAAE,cAAc;AAC5B,QAAQ,MAAM,EAAE,gBAAgB;AAChC,QAAQ,eAAe,EAAE,cAAc;AACvC,QAAQ,WAAW,EAAE,CAAC;AACtB,QAAQ,aAAa,EAAE,IAAI;AAC3B,QAAQ,UAAU,EAAE,IAAI;AACxB,QAAQ,YAAY,EAAE,CAAC,aAAa;AACpC,QAAQ,UAAU,EAAE,qBAAqB;AACzC,QAAQ,aAAa,EAAE,KAAK;AAC5B,QAAQ,eAAe,EAAE,IAAI;AAC7B,KAAK,CAAC;AACN,IAAI,+BAA+B,CAAC,QAAQ,EAAE,WAAW,EAAE,aAAa,CAAC;AACzE,IAAI,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;AACxB,IAAI,iBAAiB,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC3C,IAAI,QAAQ,CAAC,UAAU,GAAG,IAAI;AAC9B,IAAI,MAAM,CAAC,kBAAkB,CAAC,QAAQ,CAAC;AACvC,IAAI,MAAM,CAAC,eAAe,CAAC,QAAQ,CAAC;AACpC,IAAI,MAAM,SAAS,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,mBAAmB;AACxD,IAAI,MAAM,WAAW,GAAG,EAAE;AAC1B,IAAI,IAAI,SAAS,EAAE;AACnB,QAAQ,MAAM,CAAC,UAAU,EAAE,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK;AAChD,YAAY,IAAI,MAAM,KAAK,QAAQ;AACnC,gBAAgB;AAChB,YAAY,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC;AACrC,gBAAgB;AAChB,YAAY,WAAW,CAAC,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,CAAC;AAC5D,QAAQ,CAAC,CAAC;AACV,IAAI;AACJ,IAAI,MAAM,WAAW,GAAG,EAAE;AAC1B,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK;AAC5C,QAAQ,IAAI,EAAE,EAAE,EAAE;AAClB,QAAQ,IAAI,MAAM,KAAK,QAAQ;AAC/B,YAAY;AACZ,QAAQ,WAAW,CAAC,IAAI,CAAC;AACzB,YAAY,MAAM;AAClB,YAAY,OAAO,EAAE,CAAC,EAAE,GAAG,MAAM,CAAC,OAAO,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,IAAI;AAChF,YAAY,UAAU,EAAE,CAAC,EAAE,GAAG,MAAM,CAAC,UAAU,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,IAAI;AACtF,SAAS,CAAC;AACV,QAAQ,IAAI;AACZ,YAAY,MAAM,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;AAC7D,QAAQ;AACR,QAAQ,MAAM;AACd,QAAQ;AACR,IAAI,CAAC,CAAC;AACN,IAAI,IAAI,SAAS,EAAE;AACnB,QAAQ,KAAK,MAAM,MAAM,IAAI,WAAW,EAAE;AAC1C,YAAY,sBAAsB,CAAC,MAAM,CAAC,MAAM,CAAC;AACjD,QAAQ;AACR,IAAI;AACJ,IAAI,MAAM,sBAAsB,GAAG,MAAM;AACzC,QAAQ,IAAI;AACZ,YAAY,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AACtE,YAAY,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACxE,YAAY,IAAI,UAAU;AAC1B,YAAY,IAAI,UAAU;AAC1B,YAAY,MAAM,aAAa,GAAG,OAAO,CAAC,cAAc,EAAE;AAC1D,YAAY,MAAM,iBAAiB,GAAG,aAAa,GAAG,aAAa,CAAC,WAAW,GAAG,WAAW;AAC7F,YAAY,IAAI,iBAAiB,KAAK,IAAI,EAAE;AAC5C,gBAAgB,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,GAAG,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,YAAY,GAAG,SAAS,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;AACjI,gBAAgB,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,GAAG,UAAU,EAAE,IAAI,CAAC,GAAG,CAAC,aAAa,GAAG,UAAU,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;AACrI,YAAY;AACZ,iBAAiB;AACjB,gBAAgB,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAChF,gBAAgB,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAChF,gBAAgB,MAAM,KAAK,GAAG,4BAA4B,CAAC,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,CAAC;AAClG,gBAAgB,MAAM,WAAW,GAAG,wBAAwB,CAAC,SAAS,GAAG,SAAS,EAAE,UAAU,GAAG,SAAS,EAAE,KAAK,EAAE,iBAAiB,EAAE,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,aAAa,CAAC;AAC/L,gBAAgB,UAAU,GAAG,WAAW,CAAC,KAAK,GAAG,SAAS;AAC1D,gBAAgB,UAAU,GAAG,WAAW,CAAC,MAAM,GAAG,UAAU;AAC5D,YAAY;AACZ,YAAY,MAAM,WAAW,GAAG,SAAS,GAAG,UAAU;AACtD,YAAY,MAAM,YAAY,GAAG,UAAU,GAAG,UAAU;AACxD,YAAY,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,UAAU,GAAG,YAAY,GAAG,WAAW,CAAC;AACzF,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,SAAS,GAAG,aAAa,GAAG,YAAY,CAAC;AACxF,YAAY,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,CAAC;AACzG,YAAY,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,SAAS,CAAC,CAAC;AACpG,YAAY,QAAQ,CAAC,GAAG,CAAC;AACzB,gBAAgB,IAAI,EAAE,QAAQ;AAC9B,gBAAgB,GAAG,EAAE,OAAO;AAC5B,gBAAgB,MAAM,EAAE,UAAU;AAClC,gBAAgB,MAAM,EAAE,UAAU;AAClC,aAAa,CAAC;AACd,YAAY,QAAQ,CAAC,SAAS,EAAE;AAChC,YAAY,MAAM,CAAC,gBAAgB,EAAE;AACrC,QAAQ;AACR,QAAQ,MAAM;AACd,QAAQ;AACR,IAAI,CAAC;AACL,IAAI,QAAQ,CAAC,EAAE,CAAC,UAAU,EAAE,sBAAsB,CAAC;AACnD,IAAI,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,sBAAsB,CAAC;AACjD,IAAI,QAAQ,CAAC,EAAE,CAAC,SAAS,EAAE,sBAAsB,CAAC;AAClD,IAAI,MAAM,OAAO,GAAG;AACpB,QAAQ,UAAU;AAClB,QAAQ,aAAa;AACrB,QAAQ,WAAW;AACnB,QAAQ,WAAW;AACnB,QAAQ,QAAQ;AAChB,QAAQ,WAAW;AACnB,QAAQ,QAAQ,EAAE;AAClB,YAAY;AACZ,gBAAgB,MAAM,EAAE,QAAQ;AAChC,gBAAgB,QAAQ,EAAE;AAC1B,oBAAoB,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,sBAAsB,EAAE;AAC/E,oBAAoB,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,sBAAsB,EAAE;AAC7E,oBAAoB,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,sBAAsB,EAAE;AAC9E,iBAAiB;AACjB,aAAa;AACb,SAAS;AACT,KAAK;AACL,IAAI,OAAO,CAAC,cAAc,CAAC,OAAO,CAAC;AACnC,IAAI,MAAM,CAAC,SAAS,EAAE;AACtB;AACO,SAAS,kBAAkB,CAAC,OAAO,EAAE,gBAAgB,EAAE;AAC9D,IAAI,MAAM,OAAO,GAAG,OAAO,CAAC,cAAc,EAAE;AAC5C,IAAI,IAAI,EAAE,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;AAC7E,QAAQ;AACR,IAAI,MAAM,WAAW,GAAG,wBAAwB,CAAC,gBAAgB,CAAC;AAClE,IAAI,OAAO,CAAC,WAAW,GAAG,WAAW;AACrC,IAAI,2BAA2B,CAAC,OAAO,EAAE,OAAO,CAAC,QAAQ,EAAE,WAAW,CAAC;AACvE,IAAI,+BAA+B,CAAC,OAAO,CAAC,QAAQ,EAAE,WAAW,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,uBAAuB,CAAC;AAClH,IAAI,OAAO,CAAC,MAAM,CAAC,eAAe,CAAC,OAAO,CAAC,QAAQ,CAAC;AACpD,IAAI,OAAO,CAAC,MAAM,CAAC,gBAAgB,EAAE;AACrC;AACO,SAAS,UAAU,CAAC,OAAO,EAAE;AACpC,IAAI,MAAM,OAAO,GAAG,OAAO,CAAC,cAAc,EAAE;AAC5C,IAAI,IAAI,CAAC,OAAO;AAChB,QAAQ;AACR,IAAI,OAAO,CAAC,MAAM,CAAC,mBAAmB,EAAE;AACxC,IAAI,eAAe,CAAC,OAAO,EAAE,OAAO,CAAC;AACrC,IAAI,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC;AAChC,IAAI,IAAI;AACR,QAAQ,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE;AAClC,IAAI;AACJ,IAAI,MAAM;AACV,IAAI;AACJ;AACO,eAAe,SAAS,CAAC,OAAO,EAAE;AACzC,IAAI,IAAI,EAAE,EAAE,EAAE;AACd,IAAI,MAAM,OAAO,GAAG,OAAO,CAAC,cAAc,EAAE;AAC5C,IAAI,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ;AACrC,QAAQ;AACR,IAAI,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO;AAC9B,IAAI,MAAM,CAAC,mBAAmB,EAAE;AAChC,IAAI,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU;AACzC,IAAI,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ;AACrC,IAAI,MAAM,aAAa,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,sBAAsB;AACvE,IAAI,IAAI;AACR,QAAQ,QAAQ,CAAC,SAAS,EAAE;AAC5B,QAAQ,MAAM,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC;AACrD,QAAQ,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,uBAAuB,IAAI,IAAI,CAAC,GAAG,CAAC,SAAS,GAAG,GAAG,CAAC,GAAG,IAAI,EAAE;AAC/F,YAAY,MAAM,IAAI,cAAc,CAAC,yDAAyD,CAAC;AAC/F,QAAQ;AACR,QAAQ,MAAM,UAAU,GAAG,wBAAwB,CAAC,QAAQ,CAAC;AAC7D,QAAQ,IAAI,CAAC,yBAAyB,CAAC,UAAU,EAAE,MAAM,CAAC,QAAQ,EAAE,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC,EAAE;AAC3F,YAAY,MAAM,IAAI,cAAc,CAAC,+DAA+D,CAAC;AACrG,QAAQ;AACR,QAAQ,MAAM,UAAU,GAAG,sBAAsB,CAAC,UAAU,EAAE,MAAM,CAAC,QAAQ,EAAE,EAAE,MAAM,CAAC,SAAS,EAAE,EAAE,EAAE,oBAAoB,EAAE,KAAK,EAAE,CAAC;AACrI,QAAQ,MAAM,gBAAgB,GAAG;AACjC,cAAc,qBAAqB,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,CAAC,WAAW;AAC3E,cAAc,EAAE;AAChB,QAAQ,sBAAsB,CAAC,OAAO,CAAC;AACvC,QAAQ,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC;AACxC,QAAQ,MAAM,CAAC,SAAS,GAAG,CAAC,CAAC,OAAO,CAAC,aAAa;AAClD,QAAQ,MAAM,UAAU,GAAG,uBAAuB,CAAC;AACnD,YAAY,kBAAkB,EAAE,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc;AACnE,YAAY,oBAAoB,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,OAAO,CAAC,uBAAuB,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,EAAE,GAAG,IAAI;AAC3K,YAAY,iBAAiB,EAAE,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa;AACjE,YAAY,iBAAiB,EAAE,OAAO,CAAC,OAAO,CAAC,iBAAiB;AAChE,SAAS,CAAC;AACV,QAAQ,MAAM,aAAa,GAAG;AAC9B,YAAY,MAAM,EAAE,UAAU,CAAC,MAAM;AACrC,YAAY,UAAU,EAAE,CAAC;AACzB,YAAY,IAAI,EAAE,UAAU,CAAC,IAAI;AACjC,YAAY,GAAG,EAAE,UAAU,CAAC,GAAG;AAC/B,YAAY,KAAK,EAAE,UAAU,CAAC,KAAK;AACnC,YAAY,MAAM,EAAE,UAAU,CAAC,MAAM;AACrC,SAAS;AACT,QAAQ,IAAI,UAAU,CAAC,OAAO,KAAK,SAAS,EAAE;AAC9C,YAAY,aAAa,CAAC,OAAO,GAAG,UAAU,CAAC,OAAO;AACtD,QAAQ;AACR,QAAQ,MAAM,aAAa,GAAG,MAAM,CAAC,SAAS,CAAC,aAAa,CAAC;AAC7D,QAAQ,MAAM,OAAO,CAAC,SAAS,CAAC,aAAa,CAAC;AAC9C,QAAQ,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE;AACzC,YAAY,qBAAqB,CAAC,OAAO,EAAE,UAAU,EAAE,gBAAgB,CAAC;AACxE,YAAY,MAAM,CAAC,SAAS,EAAE;AAC9B,QAAQ;AACR,QAAQ,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,EAAE;AAC7C,QAAQ,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC;AACpC,QAAQ,IAAI,UAAU,IAAI,SAAS,IAAI,UAAU,KAAK,SAAS,EAAE;AACjE,YAAY,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,MAAM,OAAO,CAAC,aAAa,CAAC,SAAS,CAAC,EAAE,MAAM,OAAO,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC,CAAC;AACrI,QAAQ;AACR,IAAI;AACJ,IAAI,OAAO,KAAK,EAAE;AAClB,QAAQ,eAAe,CAAC,OAAO,EAAE,OAAO,CAAC;AACzC,QAAQ,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC;AACpC,QAAQ,IAAI;AACZ,YAAY,MAAM,OAAO,CAAC,aAAa,CAAC,UAAU,CAAC;AACnD,QAAQ;AACR,QAAQ,OAAO,aAAa,EAAE;AAC9B,YAAY,aAAa,CAAC,OAAO,CAAC,OAAO,EAAE,aAAa,EAAE,4BAA4B,CAAC;AACvF,QAAQ;AACR,QAAQ,IAAI,KAAK,YAAY,cAAc;AAC3C,YAAY,MAAM,KAAK;AACvB,QAAQ,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,GAAG,CAAC,kBAAkB,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,GAAG,kBAAkB;AAC1G,QAAQ,MAAM,IAAI,cAAc,CAAC,OAAO,EAAE,KAAK,CAAC;AAChD,IAAI;AACJ;;ACznBO,eAAe,gBAAgB,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE;AAChE,IAAI,MAAM,OAAO,GAAG,MAAM,CAAC,oBAAoB,CAAC,SAAS,EAAE,KAAK,CAAC;AACjE,IAAI,MAAM,KAAK,GAAG,MAAM,CAAC,kBAAkB,CAAC,SAAS,CAAC;AACtD,IAAI,MAAM,CAAC,uBAAuB,CAAC,OAAO,CAAC;AAC3C,IAAI,MAAM,CAAC,QAAQ,EAAE;AACrB,IAAI,IAAI;AACR,QAAQ,OAAO,MAAM,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC;AACzC,IAAI;AACJ,YAAY;AACZ,QAAQ,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC;AACtC,QAAQ,MAAM,CAAC,uBAAuB,CAAC,OAAO,CAAC;AAC/C,QAAQ,MAAM,CAAC,QAAQ,EAAE;AACzB,IAAI;AACJ;AACO,eAAe,yBAAyB,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE;AACzE,IAAI,MAAM,OAAO,GAAG,MAAM,CAAC,oBAAoB,CAAC,SAAS,EAAE,KAAK,CAAC;AACjE,IAAI,MAAM,KAAK,GAAG,MAAM,CAAC,kBAAkB,CAAC,SAAS,CAAC;AACtD,IAAI,MAAM,CAAC,uBAAuB,CAAC,OAAO,CAAC;AAC3C,IAAI,IAAI;AACR,QAAQ,OAAO,MAAM,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC;AACzC,IAAI;AACJ,YAAY;AACZ,QAAQ,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC;AACtC,QAAQ,MAAM,CAAC,uBAAuB,CAAC,OAAO,CAAC;AAC/C,IAAI;AACJ;;ACvBO,SAAS,mBAAmB,CAAC,MAAM,EAAE,OAAO,GAAG,EAAE,EAAE;AAC1D,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE;AACzD,QAAQ;AACR,IAAI,IAAI,MAAM,CAAC,cAAc,EAAE;AAC/B,QAAQ;AACR,IAAI,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE;AAC/B,QAAQ;AACR,IAAI,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,eAAe,CAAC;AACpD,QAAQ;AACR,IAAIC,aAAiB,CAAC,MAAM,CAAC,0BAA0B,EAAE,EAAE,OAAO,CAAC;AACnE,IAAI,MAAM,CAAC,QAAQ,EAAE;AACrB,IAAI,MAAM,eAAe,GAAG,MAAM,CAAC,oBAAoB,CAAC,eAAe,EAAE,KAAK,CAAC;AAC/E,IAAI,MAAM,CAAC,uBAAuB,CAAC,eAAe,CAAC;AACnD,IAAI,MAAM,CAAC,gBAAgB,CAAC,eAAe,CAAC;AAC5C;AACO,SAAS,wBAAwB,CAAC,MAAM,EAAE,WAAW,EAAE;AAC9D,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE;AACvD,QAAQ;AACR,IAAI,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,oBAAoB,CAAC;AACzD,QAAQ;AACR,IAAIC,kBAAsB,CAAC,MAAM,CAAC,0BAA0B,EAAE,EAAE,WAAW,CAAC;AAC5E,IAAI,MAAM,CAAC,QAAQ,EAAE;AACrB,IAAI,MAAM,eAAe,GAAG,MAAM,CAAC,oBAAoB,CAAC,oBAAoB,EAAE,KAAK,CAAC;AACpF,IAAI,MAAM,CAAC,gBAAgB,CAAC,eAAe,CAAC;AAC5C;AACO,SAAS,gBAAgB,CAAC,MAAM,EAAE;AACzC,IAAI,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,EAAE;AACrC,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE;AAC3C,QAAQ;AACR,IAAI,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,YAAY,CAAC;AACjD,QAAQ;AACR,IAAIC,UAAc,CAAC,MAAM,CAAC,0BAA0B,EAAE,CAAC;AACvD,IAAI,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC;AAC/B,IAAI,MAAM,CAAC,QAAQ,EAAE;AACrB,IAAI,MAAM,CAAC,gBAAgB,EAAE;AAC7B,IAAI,MAAM,eAAe,GAAG,MAAM,CAAC,oBAAoB,CAAC,YAAY,EAAE,KAAK,CAAC;AAC5E,IAAI,MAAM,CAAC,uBAAuB,CAAC,eAAe,CAAC;AACnD,IAAI,MAAM,CAAC,gBAAgB,CAAC,eAAe,CAAC;AAC5C;AACO,eAAe,eAAe,CAAC,MAAM,EAAE;AAC9C,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE;AACvD,QAAQ;AACR,IAAI,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,WAAW,CAAC;AAChD,QAAQ;AACR,IAAI,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,GAAG,CAAC;AACjD,IAAI,MAAM,gBAAgB,CAAC,MAAM,CAAC,wBAAwB,EAAE,EAAE,WAAW,EAAE,OAAO,eAAe,EAAE,cAAc,KAAK;AACtH,QAAQ,MAAMC,SAAa,CAAC,MAAM,CAAC,0BAA0B,CAAC,cAAc,CAAC,CAAC;AAC9E,QAAQ,MAAM,CAAC,YAAY,EAAE;AAC7B,QAAQ,MAAM,CAAC,cAAc,EAAE;AAC/B,QAAQ,IAAI,QAAQ,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE;AACtD,YAAY,MAAM,CAAC,gBAAgB,CAAC,eAAe,CAAC;AACpD,QAAQ;AACR,QAAQ,MAAM,CAAC,gBAAgB,CAAC,eAAe,CAAC;AAChD,IAAI,CAAC,CAAC;AACN;;ACvDA,SAAS,kBAAkB,CAAC,MAAM,EAAE;AACpC,IAAI,IAAI,EAAE;AACV,IAAI,QAAQ,CAAC,EAAE,GAAG,MAAM,CAAC,OAAO,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,EAAE;AACrE;AACA,SAAS,YAAY,CAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE;AAC/C,IAAI,MAAM,iBAAiB,GAAG,QAAQ,CAAC,IAAI,CAAC;AAC5C,IAAI,OAAO,iBAAiB,GAAG,IAAI,iBAAiB,CAAC,OAAO,CAAC,GAAG,IAAI;AACpE;AACA,SAAS,wBAAwB,CAAC,OAAO,EAAE;AAC3C,IAAI,OAAO,IAAI,SAAS,CAAC,CAAC,8DAA8D,EAAE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AAChH;AACA,SAAS,yBAAyB,CAAC,OAAO,EAAE,aAAa,EAAE;AAC3D,IAAI,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,aAAa;AAC9C,QAAQ;AACR,IAAI,aAAa,CAAC,wBAAwB,CAAC,OAAO,CAAC,EAAE,CAAC,0DAA0D,EAAE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AACxI;AACO,SAAS,uBAAuB,CAAC,MAAM,EAAE,MAAM,EAAE;AACxD,IAAI,MAAM,QAAQ,GAAG,kBAAkB,CAAC,MAAM,CAAC;AAC/C,IAAI,MAAM,OAAO,GAAG,EAAE;AACtB,IAAI,MAAM,OAAO,GAAG,EAAE;AACtB,IAAI,MAAM,IAAI,GAAG,CAAC,SAAS,EAAE,UAAU,EAAE,OAAO,KAAK;AACrD,QAAQ,MAAM,MAAM,GAAG,YAAY,CAAC,QAAQ,EAAE,UAAU,EAAE,OAAO,CAAC;AAClE,QAAQ,IAAI,MAAM;AAClB,YAAY,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC;AAChC;AACA,YAAY,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC;AACnC,IAAI,CAAC;AACL,IAAI,IAAI,MAAM,CAAC,UAAU,KAAK,CAAC,EAAE;AACjC,QAAQ,IAAI,CAAC,YAAY,EAAE,YAAY,EAAE,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,CAAC;AAC3E,IAAI;AACJ,IAAI,IAAI,MAAM,CAAC,QAAQ,KAAK,CAAC,EAAE;AAC/B,QAAQ,IAAI,CAAC,UAAU,EAAE,UAAU,EAAE,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC;AACnE,IAAI;AACJ,IAAI,IAAI,MAAM,CAAC,UAAU,KAAK,CAAC,EAAE;AACjC,QAAQ,IAAI,CAAC,YAAY,EAAE,YAAY,EAAE,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,CAAC;AAC3E,IAAI;AACJ,IAAI,IAAI,MAAM,CAAC,SAAS;AACxB,QAAQ,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC;AACtC,IAAI,IAAI,MAAM,CAAC,KAAK;AACpB,QAAQ,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC;AAC9B,IAAI,IAAI,MAAM,CAAC,OAAO;AACtB,QAAQ,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC;AAClC,IAAI,IAAI,MAAM,CAAC,IAAI,GAAG,CAAC;AACvB,QAAQ,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC;AACnD,IAAI,IAAI,MAAM,CAAC,OAAO,GAAG,CAAC,EAAE;AAC5B,QAAQ,MAAM,CAAC,GAAG,MAAM,CAAC,OAAO;AAChC,QAAQ,IAAI,CAAC,SAAS,EAAE,WAAW,EAAE;AACrC,YAAY,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;AAC3D,SAAS,CAAC;AACV,IAAI;AACJ,IAAI,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE;AAC/B;AACO,SAAS,6BAA6B,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE;AACpF,IAAI,IAAI,EAAE;AACV,IAAI,MAAM,gBAAgB,GAAG,KAAK;AAClC,IAAI,MAAM,MAAM,GAAG,uBAAuB,CAAC,MAAM,EAAE,MAAM,CAAC;AAC1D,IAAI,gBAAgB,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO;AAC7C,IAAI,CAAC,EAAE,GAAG,gBAAgB,CAAC,YAAY,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,MAAM,GAAG,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC;AACvG,IAAI,gBAAgB,CAAC,KAAK,GAAG,IAAI;AACjC,IAAI,yBAAyB,CAAC,MAAM,CAAC,OAAO,EAAE,aAAa,CAAC;AAC5D,IAAI,OAAO,MAAM;AACjB;AACO,SAAS,2BAA2B,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE;AACrE,IAAI,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC;AACtC,QAAQ,OAAO,QAAQ;AACvB,IAAI,IAAI;AACR,QAAQ,OAAO,KAAK,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC;AAChE,IAAI;AACJ,IAAI,MAAM;AACV,QAAQ,OAAO,QAAQ;AACvB,IAAI;AACJ;;ACvEO,SAAS,2BAA2B,CAAC,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE;AACtF,IAAI,IAAI,CAACC,kBAAgB,CAAC,QAAQ,CAAC;AACnC,QAAQ,CAACA,kBAAgB,CAAC,SAAS,CAAC;AACpC,QAAQ,CAACA,kBAAgB,CAAC,QAAQ,CAAC;AACnC,QAAQ,CAACA,kBAAgB,CAAC,SAAS,CAAC,EAAE;AACtC,QAAQ,OAAO;AACf,YAAY,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AACzD,YAAY,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AAC3D,YAAY,WAAW,EAAE,KAAK;AAC9B,SAAS;AACT,IAAI;AACJ,IAAI,MAAM,WAAW,GAAG,QAAQ,GAAG,QAAQ,IAAI,SAAS,GAAG,SAAS;AACpE,IAAI,IAAI,CAAC,WAAW,EAAE;AACtB,QAAQ,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,KAAK,EAAE;AACzE,IAAI;AACJ,IAAI,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,GAAG,QAAQ,EAAE,SAAS,GAAG,SAAS,CAAC;AACtE,IAAI,OAAO;AACX,QAAQ,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,CAAC;AACxD,QAAQ,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC,CAAC;AAC1D,QAAQ,WAAW,EAAE,IAAI;AACzB,KAAK;AACL;AACA,SAASA,kBAAgB,CAAC,KAAK,EAAE;AACjC,IAAI,OAAO,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC;AAC9C;AACO,SAAS,wBAAwB,CAAC,UAAU,EAAE,oBAAoB,EAAE,kBAAkB,EAAE;AAC/F,IAAI,IAAI,kBAAkB;AAC1B,QAAQ,OAAO,kBAAkB;AACjC,IAAI,IAAI,oBAAoB,KAAK,UAAU,KAAK,WAAW,IAAI,UAAU,KAAK,YAAY,CAAC,EAAE;AAC7F,QAAQ,OAAO,UAAU;AACzB,IAAI;AACJ,IAAI,OAAO,YAAY;AACvB;AACO,SAAS,oBAAoB,CAAC,OAAO,EAAE;AAC9C,IAAI,MAAM,KAAK,GAAG,mCAAmC,CAAC,IAAI,CAAC,OAAO,CAAC;AACnE,IAAI,OAAO,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI;AAChD;AACO,SAAS,aAAa,CAAC,YAAY,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,OAAO,EAAE,aAAa,EAAE;AAC/I,IAAI,IAAI,EAAE;AACV,IAAI,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,2BAA2B,CAAC,YAAY,CAAC,YAAY,EAAE,YAAY,CAAC,aAAa,EAAE,QAAQ,EAAE,SAAS,CAAC;AACrI,IAAI,MAAM,QAAQ,GAAG,wBAAwB,CAAC,UAAU,EAAE,oBAAoB,EAAE,kBAAkB,CAAC;AACnG,IAAI,MAAM,iBAAiB,GAAG,CAAC,EAAE,GAAG,aAAa,KAAK,IAAI,IAAI,aAAa,KAAK,MAAM,GAAG,aAAa,GAAG,YAAY,CAAC,aAAa,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,IAAI;AAC1K,IAAI,IAAI,CAAC,iBAAiB,EAAE;AAC5B,QAAQ,MAAM,IAAI,eAAe,CAAC,sDAAsD,CAAC;AACzF,IAAI;AACJ,IAAI,MAAM,eAAe,GAAG,iBAAiB,CAAC,aAAa,CAAC,QAAQ,CAAC;AACrE,IAAI,eAAe,CAAC,KAAK,GAAG,KAAK;AACjC,IAAI,eAAe,CAAC,MAAM,GAAG,MAAM;AACnC,IAAI,MAAM,OAAO,GAAG,eAAe,CAAC,UAAU,CAAC,IAAI,CAAC;AACpD,IAAI,IAAI,CAAC,OAAO,EAAE;AAClB,QAAQ,MAAM,IAAI,eAAe,CAAC,iDAAiD,CAAC;AACpF,IAAI;AACJ,IAAI,OAAO,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC,EAAE,CAAC,EAAE,YAAY,CAAC,YAAY,EAAE,YAAY,CAAC,aAAa,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC;AACrH,IAAI,MAAM,OAAO,GAAG,QAAQ,KAAK;AACjC,UAAU,eAAe,CAAC,SAAS,CAAC,QAAQ;AAC5C,UAAU,eAAe,CAAC,SAAS,CAAC,QAAQ,EAAE,OAAO,CAAC;AACtD,IAAI,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE;AAC/C;;AC1DA,MAAM,0BAA0B,GAAG,IAAI;AACvC,MAAM,oBAAoB,GAAG,IAAI;AACjC,SAAS,UAAU,CAAC,MAAM,EAAE;AAC5B,IAAI,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;AACzB,QAAQ,OAAO,IAAI;AACnB,IAAI,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;AACvB,IAAI,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;AACvB,IAAI,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;AACvB,IAAI,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;AACvB,IAAI,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;AACvB,IAAI,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;AACvB,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC3B,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC3B,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC3B,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC3B,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC3B,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE;AAC7B,QAAQ,OAAO,IAAI;AACnB,IAAI;AACJ,IAAI,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AACjD;AACA,SAAS,YAAY,CAAC,MAAM,EAAE;AAC9B,IAAI,MAAM,WAAW,GAAG,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC;AACjE,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,GAAG,0BAA0B,EAAE;AAC7F,QAAQ,OAAO,IAAI;AACnB,IAAI;AACJ,IAAI,OAAO;AACX,QAAQ,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,WAAW;AACjC,QAAQ,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,GAAG,WAAW;AAClC,QAAQ,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,GAAG,WAAW;AAClC,QAAQ,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,WAAW;AACjC,QAAQ,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,IAAI,WAAW;AACpE,QAAQ,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,IAAI,WAAW;AACpE,KAAK;AACL;AACA,SAAS,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE;AACvC,IAAI,OAAO;AACX,QAAQ,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC;AAC7D,QAAQ,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC;AAC7D,KAAK;AACL;AACA,SAAS,yBAAyB,CAAC,MAAM,EAAE,YAAY,EAAE;AACzD,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;AACjD,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;AACjD,IAAI,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,oBAAoB,GAAG,MAAM,GAAG,MAAM,CAAC,iBAAiB,EAAE,MAAM,GAAG,oBAAoB,GAAG,MAAM,GAAG,MAAM,CAAC,iBAAiB,CAAC;AACnK,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,QAAQ,IAAI,CAAC;AACnD,QAAQ,OAAO,YAAY;AAC3B,IAAI,OAAO,YAAY,GAAG,QAAQ;AAClC;AACO,SAAS,mBAAmB,CAAC,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,qBAAqB,EAAE;AAEvF,IAAI,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC;AAC1C,IAAI,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC;AAC5C,IAAI,MAAM,aAAa,GAAG,MAAM,CAAC,qBAAqB,CAAC;AACvD,IAAI,IAAI,KAAK,IAAI,CAAC;AAClB,QAAQ,MAAM,IAAI,CAAC;AACnB,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC;AACvC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC;AACvC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC;AACvC,QAAQ,aAAa,IAAI,CAAC,EAAE;AAC5B,QAAQ,OAAO,IAAI;AACnB,IAAI;AACJ,IAAI,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,mBAAmB,EAAE,CAAC;AAC1D,IAAI,IAAI,CAAC,MAAM;AACf,QAAQ,OAAO,IAAI;AACnB,IAAI,MAAM,OAAO,GAAG,YAAY,CAAC,MAAM,CAAC;AACxC,IAAI,IAAI,CAAC,OAAO;AAChB,QAAQ,OAAO,IAAI;AACnB,IAAI,MAAM,UAAU,GAAG,cAAc,CAAC,WAAW,EAAE,OAAO,CAAC;AAC3D,IAAI,MAAM,OAAO,GAAG,UAAU,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC;AAC5C,IAAI,MAAM,OAAO,GAAG,UAAU,CAAC,CAAC,GAAG,MAAM,GAAG,CAAC;AAC7C,IAAI,IAAI,OAAO,GAAG,CAAC,IAAI,OAAO,GAAG,CAAC,IAAI,OAAO,GAAG,KAAK,IAAI,OAAO,GAAG,MAAM,EAAE;AAC3E,QAAQ,OAAO,IAAI;AACnB,IAAI;AACJ,IAAI,OAAO;AACX,QAAQ,OAAO;AACf,QAAQ,OAAO;AACf,QAAQ,YAAY,EAAE,yBAAyB,CAAC,MAAM,EAAE,aAAa,GAAG,CAAC,CAAC;AAC1E,KAAK;AACL;;AC/EA,SAAS,kBAAkB,CAAC,KAAK,EAAE;AACnC,IAAI,OAAO,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC;AACnF;AACA,SAAS,cAAc,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE;AAC/D,IAAI,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO;AAC1B,IAAI,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO;AAC1B,IAAI,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,aAAa;AAC7C;AACA,SAAS,WAAW,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE;AAClC,IAAI,OAAO,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,IAAI,CAAC;AAC9B;AACO,SAAS,uBAAuB,CAAC,OAAO,EAAE;AACjD,IAAI,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;AACvC,IAAI,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;AACzC,IAAI,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC;AAC3C,IAAI,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC;AAC3C,IAAI,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;AACzC,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;AAC/B,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;AAChC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC;AACjC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC;AACjC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;AAChC,QAAQ,MAAM,IAAI,CAAC;AACnB,QAAQ,KAAK,IAAI,CAAC;AAClB,QAAQ,MAAM,IAAI,CAAC,EAAE;AACrB,QAAQ,OAAO,IAAI;AACnB,IAAI;AACJ,IAAI,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC,CAAC;AAC1D,IAAI,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,CAAC;AACjE,IAAI,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC,CAAC;AAC1D,IAAI,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,CAAC;AAClE,IAAI,OAAO,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI;AAC3E;AACO,SAAS,8BAA8B,CAAC,OAAO,EAAE;AACxD,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AACtB,IAAI,MAAM,EAAE,SAAS,EAAE,GAAG,OAAO;AACjC,IAAI,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,SAAS;AAC7C,IAAI,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC;AAC3C,IAAI,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC;AAC3C,IAAI,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;AACzC,IAAI,MAAM,MAAM,GAAG,uBAAuB,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;AACvF,IAAI,IAAI,CAAC,MAAM;AACf,QAAQ,OAAO,KAAK;AACpB,IAAI,MAAM,SAAS,GAAG,kBAAkB,CAAC,OAAO,CAAC,SAAS,CAAC;AAC3D,IAAI,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM;AAC7C,IAAI,MAAM,aAAa,GAAG,MAAM,GAAG,MAAM;AACzC,IAAI,IAAI,SAAS,GAAG,KAAK;AACzB,IAAI,KAAK,IAAI,MAAM,GAAG,IAAI,EAAE,MAAM,IAAI,IAAI,EAAE,MAAM,IAAI,SAAS,EAAE;AACjE,QAAQ,KAAK,IAAI,MAAM,GAAG,IAAI,EAAE,MAAM,IAAI,IAAI,EAAE,MAAM,IAAI,SAAS,EAAE;AACrE,YAAY,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,CAAC,CAAC;AACpE,YAAY,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,CAAC,CAAC;AACpE,YAAY,IAAI,YAAY,GAAG,EAAE;AACjC,YAAY,KAAK,IAAI,CAAC,GAAG,MAAM,EAAE,CAAC,IAAI,SAAS,IAAI,YAAY,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE;AAC7E,gBAAgB,KAAK,IAAI,CAAC,GAAG,MAAM,EAAE,CAAC,IAAI,SAAS,EAAE,CAAC,IAAI,CAAC,EAAE;AAC7D,oBAAoB,IAAI,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,aAAa,CAAC;AAC9E,wBAAwB;AACxB,oBAAoB,YAAY,GAAG,WAAW,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;AAC3D,oBAAoB;AACpB,gBAAgB;AAChB,YAAY;AACZ,YAAY,IAAI,YAAY,GAAG,CAAC;AAChC,gBAAgB;AAChB,YAAY,MAAM,GAAG,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,CAAC;AACpF,YAAY,MAAM,KAAK,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,CAAC;AAC1F,YAAY,MAAM,IAAI,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,CAAC;AACzF,YAAY,MAAM,KAAK,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,CAAC;AAC1F,YAAY,KAAK,IAAI,CAAC,GAAG,MAAM,EAAE,CAAC,IAAI,SAAS,EAAE,CAAC,IAAI,CAAC,EAAE;AACzD,gBAAgB,KAAK,IAAI,CAAC,GAAG,MAAM,EAAE,CAAC,IAAI,SAAS,EAAE,CAAC,IAAI,CAAC,EAAE;AAC7D,oBAAoB,IAAI,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,aAAa,CAAC;AAC9E,wBAAwB;AACxB,oBAAoB,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;AAC3D,oBAAoB,IAAI,CAAC,MAAM,CAAC,GAAG,GAAG;AACtC,oBAAoB,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,KAAK;AAC5C,oBAAoB,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,IAAI;AAC3C,oBAAoB,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,KAAK;AAC5C,oBAAoB,SAAS,GAAG,IAAI;AACpC,gBAAgB;AAChB,YAAY;AACZ,QAAQ;AACR,IAAI;AACJ,IAAI,OAAO,SAAS;AACpB;;ACvEA,MAAM,yBAAyB,GAAG,IAAI;AACtC,SAASC,mBAAiB,CAAC,OAAO,EAAE;AACpC,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AAC1B,IAAI,MAAM,OAAO,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,UAAU,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,MAAM,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;AAC5G,IAAI,QAAQ,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,aAAa,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,CAAC,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,aAAa,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,MAAM,GAAG,EAAE,CAAC,aAAa,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,QAAQ;AACtQ;AACA,SAAS,UAAU,CAAC,MAAM,EAAE;AAC5B,IAAI,IAAI;AACR,QAAQ,MAAM,CAAC,gBAAgB,EAAE;AACjC,IAAI;AACJ,IAAI,MAAM;AACV,QAAQ,IAAI;AACZ,YAAY,MAAM,CAAC,SAAS,EAAE;AAC9B,QAAQ;AACR,QAAQ,MAAM;AACd,QAAQ;AACR,IAAI;AACJ;AACA,SAAS,mBAAmB,CAAC,OAAO,EAAE;AACtC,IAAI,MAAM,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE;AAC5C,IAAI,MAAM,MAAM,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC;AAC7C,QAAQ,IAAI,EAAE,CAAC;AACf,QAAQ,GAAG,EAAE,CAAC;AACd,QAAQ,MAAM,EAAE,MAAM,CAAC,SAAS,GAAG,CAAC;AACpC,QAAQ,OAAO,EAAE,QAAQ;AACzB,QAAQ,OAAO,EAAE,QAAQ;AACzB,QAAQ,IAAI,EAAE,MAAM,CAAC,WAAW;AAChC,QAAQ,MAAM,EAAE,MAAM,CAAC,aAAa;AACpC,QAAQ,WAAW,EAAE,MAAM,CAAC,kBAAkB;AAC9C,QAAQ,eAAe,EAAE,MAAM,CAAC;AAChC,cAAc,CAAC,GAAG,MAAM,CAAC,sBAAsB;AAC/C,cAAc,SAAS;AACvB,QAAQ,UAAU,EAAE,KAAK;AACzB,QAAQ,OAAO,EAAE,KAAK;AACtB,QAAQ,iBAAiB,EAAE,IAAI;AAC/B,QAAQ,aAAa,EAAE,KAAK;AAC5B,QAAQ,OAAO,EAAE,KAAK;AACtB,KAAK,CAAC;AACN,IAAI,iBAAiB,CAAC,MAAM,EAAE,qBAAqB,CAAC;AACpD,IAAI,MAAM,CAAC,eAAe,GAAG,IAAI;AACjC,IAAI,OAAO,MAAM;AACjB;AACA,SAAS,mBAAmB,CAAC,OAAO,EAAE,OAAO,EAAE;AAC/C,IAAI,IAAI,EAAE;AACV,IAAI,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO;AAC9B,IAAI,MAAM,MAAM,GAAG,CAAC,EAAE,GAAG,OAAO,CAAC,aAAa,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,mBAAmB,CAAC,OAAO,CAAC;AAC7G,IAAI,OAAO,CAAC,aAAa,GAAG,MAAM;AAClC,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;AAC/C,QAAQ,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC;AAC1B,IAAI;AACJ,IAAI,MAAM,CAAC,kBAAkB,CAAC,MAAM,CAAC;AACrC,IAAI,mBAAmB,CAAC,OAAO,CAAC;AAChC,IAAI,OAAO,MAAM;AACjB;AACA,SAAS,mBAAmB,CAAC,OAAO,EAAE,OAAO,EAAE;AAC/C,IAAI,MAAM,MAAM,GAAG,OAAO,CAAC,aAAa;AACxC,IAAI,IAAI,CAAC,MAAM;AACf,QAAQ;AACR,IAAI,IAAI;AACR,QAAQ,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;AACrC,IAAI;AACJ,IAAI,MAAM;AACV,IAAI;AACJ,IAAI,OAAO,CAAC,aAAa,GAAG,IAAI;AAChC;AACA,SAAS,kBAAkB,CAAC,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE;AAC/D,IAAI,MAAM,KAAK,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,eAAe,EAAE;AAC9E,QAAQ,UAAU,EAAE,KAAK;AACzB,QAAQ,OAAO,EAAE,KAAK;AACtB,QAAQ,iBAAiB,EAAE,IAAI;AAC/B,QAAQ,aAAa,EAAE,KAAK;AAC5B,QAAQ,OAAO,EAAE,IAAI;AACrB,KAAK,CAAC;AACN,IAAI,uBAAuB,CAAC,KAAK,EAAE,WAAW,CAAC;AAC/C,IAAI,KAAK,CAAC,GAAG,CAAC;AACd,QAAQ,UAAU,EAAE,KAAK;AACzB,QAAQ,OAAO,EAAE,KAAK;AACtB,QAAQ,iBAAiB,EAAE,IAAI;AAC/B,QAAQ,aAAa,EAAE,KAAK;AAC5B,QAAQ,OAAO,EAAE,IAAI;AACrB,KAAK,CAAC;AACN,IAAI,iBAAiB,CAAC,KAAK,EAAE,oBAAoB,CAAC;AAClD,IAAI,KAAK,CAAC,eAAe,GAAG,IAAI;AAChC,IAAI,OAAO,KAAK;AAChB;AACA,SAAS,0BAA0B,CAAC,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE;AACxE,IAAI,IAAI,EAAE,EAAE,EAAE;AACd,IAAI,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC;AACxE,IAAI,IAAI,WAAW,GAAG,CAAC;AACvB,QAAQ;AACR,IAAI,IAAI;AACR,QAAQ,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,YAAY,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,YAAY,EAAE,WAAW,GAAG,CAAC,CAAC;AACjI,IAAI;AACJ,IAAI,MAAM;AACV,IAAI;AACJ;AACA,SAAS,kBAAkB,CAAC,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE;AAC3D,IAAI,IAAI,EAAE;AACV,IAAI,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW;AAC3C,IAAI,IAAI,CAAC,WAAW;AACpB,QAAQ,OAAO,IAAI;AACnB,IAAI,MAAM,YAAY,GAAG,CAAC,EAAE,GAAG,OAAO,CAAC,YAAY,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,kBAAkB,CAAC,OAAO,EAAE,WAAW,EAAE,WAAW,CAAC;AAC3I,IAAI,OAAO,CAAC,YAAY,GAAG,YAAY;AACvC,IAAI,uBAAuB,CAAC,YAAY,EAAE,WAAW,CAAC;AACtD,IAAI,YAAY,CAAC,GAAG,CAAC;AACrB,QAAQ,UAAU,EAAE,KAAK;AACzB,QAAQ,OAAO,EAAE,KAAK;AACtB,QAAQ,iBAAiB,EAAE,IAAI;AAC/B,QAAQ,aAAa,EAAE,KAAK;AAC5B,QAAQ,OAAO,EAAE,IAAI;AACrB,KAAK,CAAC;AACN,IAAI,YAAY,CAAC,KAAK,GAAG,IAAI;AAC7B,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE;AAC7D,QAAQ,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC;AACxC,IAAI;AACJ,IAAI,0BAA0B,CAAC,OAAO,EAAE,YAAY,EAAE,WAAW,CAAC;AAClE,IAAI,MAAM,MAAM,GAAG,OAAO,CAAC,aAAa;AACxC,IAAI,IAAI,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;AAChE,QAAQ,OAAO,CAAC,MAAM,CAAC,kBAAkB,CAAC,MAAM,CAAC;AACjD,IAAI;AACJ,IAAI,OAAO,YAAY;AACvB;AACA,SAAS,kBAAkB,CAAC,OAAO,EAAE,OAAO,EAAE;AAC9C,IAAI,MAAM,KAAK,GAAG,OAAO,CAAC,YAAY;AACtC,IAAI,IAAI,CAAC,KAAK;AACd,QAAQ;AACR,IAAI,IAAI;AACR,QAAQ,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC;AACpC,IAAI;AACJ,IAAI,MAAM;AACV,IAAI;AACJ,IAAI,OAAO,CAAC,YAAY,GAAG,IAAI;AAC/B;AACA,SAAS,wBAAwB,CAAC,OAAO,EAAE;AAC3C,IAAI,MAAM,KAAK,GAAG,OAAO,CAAC,WAAW;AACrC,IAAI,IAAI,CAAC,KAAK;AACd,QAAQ;AACR,IAAI,IAAI;AACR,QAAQ,KAAK,CAAC,eAAe,CAAC,KAAK,GAAG,CAAC;AACvC,QAAQ,KAAK,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC;AACxC,IAAI;AACJ,IAAI,MAAM;AACV,IAAI;AACJ,IAAI,OAAO,CAAC,WAAW,GAAG,IAAI;AAC9B;AACA,eAAe,kCAAkC,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE;AAC5E,IAAI,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW;AAC3C,IAAI,IAAI,CAAC,WAAW;AACpB,QAAQ;AACR,IAAI,MAAM,aAAa,GAAGA,mBAAiB,CAAC,OAAO,CAAC;AACpD,IAAI,MAAM,OAAO,GAAG,MAAM,iBAAiB,CAAC,aAAa,EAAE,MAAM,CAAC;AAClE,IAAI,WAAW,CAAC,eAAe,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK;AACrD,IAAI,WAAW,CAAC,eAAe,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM;AACvD,IAAI,MAAM,gBAAgB,GAAG,WAAW,CAAC,eAAe,CAAC,UAAU,CAAC,IAAI,CAAC;AACzE,IAAI,IAAI,CAAC,gBAAgB,EAAE;AAC3B,QAAQ,wBAAwB,CAAC,OAAO,CAAC;AACzC,QAAQ;AACR,IAAI;AACJ,IAAI,gBAAgB,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC;AACnE,IAAI,gBAAgB,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC;AACpF,IAAI,WAAW,CAAC,gBAAgB,GAAG,gBAAgB;AACnD,IAAI,WAAW,CAAC,SAAS,GAAG,gBAAgB,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC;AAC9F,IAAI,WAAW,CAAC,MAAM,GAAG,MAAM;AAC/B,IAAI,WAAW,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK;AACrC,IAAI,WAAW,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM;AACvC;AACA,SAAS,WAAW,CAAC,OAAO,EAAE;AAC9B,IAAI,IAAI,EAAE;AACV,IAAI,MAAM,MAAM,GAAG,CAAC,EAAE,GAAG,OAAO,CAAC,gBAAgB,EAAE,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,MAAM,GAAG,EAAE,CAAC,aAAa;AAC1G,IAAI,IAAI,CAAC,MAAM;AACf,QAAQ;AACR,IAAI,MAAM,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;AAClC,IAAI,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC;AAC9B;AACA,SAAS,WAAW,CAAC,OAAO,EAAE,KAAK,EAAE;AACrC,IAAI,MAAM,OAAO,GAAG,OAAO,CAAC,gBAAgB,EAAE;AAC9C,IAAI,IAAI,CAAC,OAAO;AAChB,QAAQ;AACR,IAAI,MAAM,MAAM,GAAG,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC;AACxD,IAAI,MAAM,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAC9D,IAAI,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC;AAC9B;AACA,SAAS,mBAAmB,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE;AACpE,IAAI,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC;AAC1C,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC;AAClD;AACA,SAAS,oBAAoB,CAAC,OAAO,EAAE,OAAO,EAAE;AAChD,IAAI,KAAK,MAAM,MAAM,IAAI,OAAO,CAAC,QAAQ,EAAE;AAC3C,QAAQ,IAAI;AACZ,YAAY,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,QAAQ,CAAC;AACjE,QAAQ;AACR,QAAQ,MAAM;AACd,QAAQ;AACR,IAAI;AACJ,IAAI,OAAO,CAAC,QAAQ,GAAG,EAAE;AACzB;AACA,SAAS,mBAAmB,CAAC,OAAO,EAAE;AACtC,IAAI,KAAK,MAAM,MAAM,IAAI,OAAO,CAAC,gBAAgB,EAAE;AACnD,QAAQ,IAAI;AACZ,YAAY,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,CAAC;AACzF,QAAQ;AACR,QAAQ,MAAM;AACd,QAAQ;AACR,IAAI;AACJ,IAAI,OAAO,CAAC,gBAAgB,GAAG,EAAE;AACjC;AACA,SAAS,cAAc,CAAC,KAAK,EAAE;AAC/B,IAAI,IAAI,EAAE;AACV,IAAI,MAAM,eAAe,GAAG,KAAK;AACjC,IAAI,IAAI;AACR,QAAQ,MAAM,GAAG,GAAG,CAAC,EAAE,GAAG,eAAe,CAAC,MAAM,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC;AAC/G,QAAQ,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC;AACrD,YAAY,OAAO,GAAG;AACtB,IAAI;AACJ,IAAI,MAAM;AACV,IAAI;AACJ,IAAI,OAAO,OAAO,eAAe,CAAC,GAAG,KAAK,QAAQ,IAAI,eAAe,CAAC,GAAG,CAAC,MAAM,GAAG;AACnF,UAAU,eAAe,CAAC;AAC1B,UAAU,IAAI;AACd;AACA,SAAS,oBAAoB,CAAC,OAAO,EAAE,KAAK,EAAE;AAC9C,IAAI,OAAO,2BAA2B,CAAC,KAAK,EAAE,OAAO,CAAC,2BAA2B,EAAE,EAAE,cAAc,CAAC,KAAK,CAAC,CAAC;AAC3G;AACA,SAAS,cAAc,CAAC,KAAK,EAAE;AAC/B,IAAI,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC;AACjC,IAAI,OAAO,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,OAAO,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;AAC5E;AACA,SAAS,iBAAiB,CAAC,aAAa,EAAE,MAAM,EAAE;AAClD,IAAI,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;AAC5C,QAAQ,MAAM,YAAY,GAAG,aAAa,CAAC,aAAa,CAAC,KAAK,CAAC;AAC/D,QAAQ,MAAM,OAAO,GAAG,MAAM;AAC9B,YAAY,IAAI,OAAO,YAAY,CAAC,mBAAmB,KAAK,UAAU,EAAE;AACxE,gBAAgB,YAAY,CAAC,mBAAmB,CAAC,MAAM,EAAE,UAAU,CAAC;AACpE,gBAAgB,YAAY,CAAC,mBAAmB,CAAC,OAAO,EAAE,WAAW,CAAC;AACtE,YAAY;AACZ,iBAAiB;AACjB,gBAAgB,YAAY,CAAC,MAAM,GAAG,IAAI;AAC1C,gBAAgB,YAAY,CAAC,OAAO,GAAG,IAAI;AAC3C,YAAY;AACZ,QAAQ,CAAC;AACT,QAAQ,MAAM,UAAU,GAAG,MAAM;AACjC,YAAY,MAAM,KAAK,GAAG,cAAc,CAAC,YAAY,CAAC,YAAY,IAAI,YAAY,CAAC,KAAK,CAAC;AACzF,YAAY,MAAM,MAAM,GAAG,cAAc,CAAC,YAAY,CAAC,aAAa,IAAI,YAAY,CAAC,MAAM,CAAC;AAC5F,YAAY,OAAO,EAAE;AACrB,YAAY,IAAI,KAAK,IAAI,CAAC,IAAI,MAAM,IAAI,CAAC,EAAE;AAC3C,gBAAgB,MAAM,CAAC,IAAI,KAAK,CAAC,6DAA6D,CAAC,CAAC;AAChG,gBAAgB;AAChB,YAAY;AACZ,YAAY,OAAO,CAAC,EAAE,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;AAC7D,QAAQ,CAAC;AACT,QAAQ,MAAM,WAAW,GAAG,CAAC,KAAK,KAAK;AACvC,YAAY,OAAO,EAAE;AACrB,YAAY,MAAM,OAAO,GAAG,OAAO,KAAK,KAAK;AAC7C,kBAAkB,CAAC,4BAA4B,EAAE,KAAK,CAAC;AACvD,kBAAkB,6BAA6B;AAC/C,YAAY,MAAM,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;AACtC,QAAQ,CAAC;AACT,QAAQ,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE;AACzC,YAAY,YAAY,CAAC,WAAW,GAAG,WAAW;AAClD,QAAQ;AACR,QAAQ,IAAI,OAAO,YAAY,CAAC,gBAAgB,KAAK,UAAU,EAAE;AACjE,YAAY,YAAY,CAAC,gBAAgB,CAAC,MAAM,EAAE,UAAU,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AAC7E,YAAY,YAAY,CAAC,gBAAgB,CAAC,OAAO,EAAE,WAAW,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AAC/E,QAAQ;AACR,aAAa;AACb,YAAY,YAAY,CAAC,MAAM,GAAG,UAAU;AAC5C,YAAY,YAAY,CAAC,OAAO,GAAG,WAAW;AAC9C,QAAQ;AACR,QAAQ,YAAY,CAAC,GAAG,GAAG,MAAM;AACjC,IAAI,CAAC,CAAC;AACN;AACA,SAAS,mBAAmB,CAAC,QAAQ,EAAE;AACvC,IAAI,OAAO,QAAQ,KAAK,YAAY,IAAI,QAAQ,KAAK,WAAW,IAAI,QAAQ,KAAK;AACjF,UAAU;AACV,UAAU,IAAI;AACd;AACA,SAAS,YAAY,CAAC,QAAQ,EAAE;AAChC,IAAI,IAAI,QAAQ,KAAK,YAAY;AACjC,QAAQ,OAAO,MAAM;AACrB,IAAI,IAAI,QAAQ,KAAK,YAAY;AACjC,QAAQ,OAAO,MAAM;AACrB,IAAI,OAAO,KAAK;AAChB;AACA,SAAS,yBAAyB,CAAC,OAAO,EAAE,MAAM,EAAE;AACpD,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AACtB,IAAI,MAAM,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE;AAC5C,IAAI,MAAM,SAAS,GAAG,MAAM,CAAC,cAAc;AAC3C,IAAI,MAAM,MAAM,GAAG,SAAS,KAAK;AACjC,UAAU,YAAY,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,OAAO,CAAC,uBAAuB,EAAE,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,mBAAmB,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,WAAW;AACtM,WAAW,CAAC,EAAE,GAAG,uBAAuB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,KAAK,CAAC;AACpG,IAAI,MAAM,QAAQ,GAAG,WAAW,CAAC,MAAM,CAAC;AACxC,IAAI,IAAI,MAAM,KAAK,KAAK;AACxB,QAAQ,OAAO,EAAE,QAAQ,EAAE;AAC3B,IAAI,OAAO;AACX,QAAQ,QAAQ;AAChB,QAAQ,OAAO,EAAE,CAAC,EAAE,GAAG,MAAM,CAAC,aAAa,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,iBAAiB;AAC/G,KAAK;AACL;AACA,eAAe,4BAA4B,CAAC,OAAO,EAAE,OAAO,EAAE;AAC9D,IAAI,OAAO,MAAM,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,WAAW,EAAE,WAAW,EAAE,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,kBAAkB,EAAE,4BAA4B,CAAC;AACzK;AACA,SAAS,uBAAuB,CAAC,MAAM,EAAE,MAAM,EAAE;AACjD,IAAI,MAAM,CAAC,GAAG,CAAC;AACf,QAAQ,IAAI,EAAE,MAAM,CAAC,IAAI;AACzB,QAAQ,GAAG,EAAE,MAAM,CAAC,GAAG;AACvB,QAAQ,MAAM,EAAE,MAAM,CAAC,MAAM;AAC7B,QAAQ,MAAM,EAAE,MAAM,CAAC,MAAM;AAC7B,QAAQ,KAAK,EAAE,MAAM,CAAC,KAAK;AAC3B,QAAQ,KAAK,EAAE,MAAM,CAAC,KAAK;AAC3B,QAAQ,KAAK,EAAE,MAAM,CAAC,KAAK;AAC3B,QAAQ,KAAK,EAAE,MAAM,CAAC,KAAK;AAC3B,QAAQ,KAAK,EAAE,MAAM,CAAC,KAAK;AAC3B,QAAQ,OAAO,EAAE,MAAM,CAAC,OAAO;AAC/B,QAAQ,OAAO,EAAE,MAAM,CAAC,OAAO;AAC/B,QAAQ,UAAU,EAAE,MAAM,CAAC,UAAU;AACrC,QAAQ,OAAO,EAAE,MAAM,CAAC,OAAO;AAC/B,QAAQ,WAAW,EAAE,MAAM,CAAC,WAAW;AACvC,QAAQ,WAAW,EAAE,MAAM,CAAC,WAAW;AACvC,KAAK,CAAC;AACN,IAAI,MAAM,CAAC,SAAS,EAAE;AACtB;AACA,SAAS,gBAAgB,CAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE;AACjE,IAAI,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO;AAC9B,IAAI,IAAI,UAAU,GAAG,KAAK;AAC1B,IAAI,IAAI,QAAQ,GAAG,KAAK;AACxB,IAAI,IAAI;AACR,QAAQ,uBAAuB,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACnD,QAAQ,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC;AAC/B,QAAQ,UAAU,GAAG,IAAI;AACzB,QAAQ,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;AAC5B,QAAQ,QAAQ,GAAG,IAAI;AACvB,QAAQ,MAAM,CAAC,gBAAgB,CAAC,QAAQ,CAAC;AACzC,QAAQ,OAAO,CAAC,gBAAgB,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC;AAC/D,QAAQ,OAAO,CAAC,uBAAuB,CAAC,QAAQ,CAAC;AACjD,QAAQ,MAAM,CAAC,SAAS,EAAE;AAC1B,IAAI;AACJ,IAAI,OAAO,KAAK,EAAE;AAClB,QAAQ,IAAI;AACZ,YAAY,IAAI,QAAQ;AACxB,gBAAgB,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC;AACvC,YAAY,IAAI,UAAU,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;AACvE,gBAAgB,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;AACpC,gBAAgB,MAAM,CAAC,gBAAgB,CAAC,QAAQ,CAAC;AACjD,YAAY;AACZ,YAAY,OAAO,CAAC,gBAAgB,CAAC,QAAQ,CAAC;AAC9C,QAAQ;AACR,QAAQ,MAAM;AACd,QAAQ;AACR,QAAQ,MAAM,KAAK;AACnB,IAAI;AACJ;AACA,SAAS,iBAAiB,CAAC,OAAO,EAAE,KAAK,EAAE;AAC3C,IAAI,IAAI,EAAE;AACV,IAAI,MAAM,MAAM,GAAG,CAAC,EAAE,GAAG,OAAO,CAAC,eAAe,EAAE,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,KAAK;AAC1F,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,KAAK,IAAI,MAAM,KAAK,KAAK;AAC7C,QAAQ;AACR,IAAI,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,YAAY;AACxD,QAAQ,MAAM,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC;AAC1C,IAAI,CAAC,EAAE,YAAY;AACnB,QAAQ,MAAM,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC;AAC3C,IAAI,CAAC,CAAC,CAAC;AACP,IAAI,OAAO,CAAC,eAAe,CAAC,KAAK,CAAC;AAClC;AACA,eAAe,sBAAsB,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE;AAChE,IAAI,IAAI,OAAO,CAAC,WAAW,EAAE;AAC7B,QAAQ,IAAI,OAAO,CAAC,WAAW,CAAC,MAAM,KAAK,MAAM;AACjD,YAAY,OAAO,OAAO,CAAC,WAAW;AACtC,QAAQ,wBAAwB,CAAC,OAAO,CAAC;AACzC,IAAI;AACJ,IAAI,MAAM,aAAa,GAAGA,mBAAiB,CAAC,OAAO,CAAC;AACpD,IAAI,MAAM,OAAO,GAAG,MAAM,iBAAiB,CAAC,aAAa,EAAE,MAAM,CAAC;AAClE,IAAI,MAAM,eAAe,GAAG,aAAa,CAAC,aAAa,CAAC,QAAQ,CAAC;AACjE,IAAI,eAAe,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK;AACzC,IAAI,eAAe,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM;AAC3C,IAAI,MAAM,gBAAgB,GAAG,eAAe,CAAC,UAAU,CAAC,IAAI,CAAC;AAC7D,IAAI,IAAI,CAAC,gBAAgB,EAAE;AAC3B,QAAQ,WAAW,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,KAAK,CAAC,8CAA8C,CAAC,EAAE,sBAAsB,CAAC;AACvH,QAAQ,OAAO,IAAI;AACnB,IAAI;AACJ,IAAI,gBAAgB,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC;AACpF,IAAI,IAAI,SAAS;AACjB,IAAI,IAAI;AACR,QAAQ,SAAS,GAAG,gBAAgB,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC;AACtF,IAAI;AACJ,IAAI,OAAO,KAAK,EAAE;AAClB,QAAQ,WAAW,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,EAAE,wEAAwE,CAAC;AACrH,QAAQ,OAAO,IAAI;AACnB,IAAI;AACJ,IAAI,MAAM,WAAW,GAAG;AACxB,QAAQ,eAAe;AACvB,QAAQ,gBAAgB;AACxB,QAAQ,SAAS;AACjB,QAAQ,MAAM;AACd,QAAQ,KAAK,EAAE,OAAO,CAAC,KAAK;AAC5B,QAAQ,MAAM,EAAE,OAAO,CAAC,MAAM;AAC9B,KAAK;AACL,IAAI,OAAO,CAAC,WAAW,GAAG,WAAW;AACrC,IAAI,OAAO,WAAW;AACtB;AACA,SAAS,qBAAqB,CAAC,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE;AAC1E,IAAI,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW;AAC3C,IAAI,IAAI,CAAC,WAAW;AACpB,QAAQ,OAAO,KAAK;AACpB,IAAI,MAAM,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE;AAC5C,IAAI,MAAM,aAAa,GAAG,OAAO,CAAC,cAAc;AAChD,IAAI,MAAM,MAAM,GAAG;AACnB,UAAU,uBAAuB,CAAC,aAAa,EAAE,UAAU;AAC3D,UAAU,CAAC,UAAU,CAAC;AACtB,IAAI,IAAI,OAAO,GAAG,KAAK;AACvB,IAAI,IAAI,SAAS,GAAG,IAAI;AACxB,IAAI,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;AAChC,QAAQ,MAAM,YAAY,GAAG,8BAA8B,CAAC;AAC5D,YAAY,SAAS,EAAE,WAAW,CAAC,SAAS;AAC5C,YAAY,OAAO,EAAE,KAAK,CAAC,OAAO;AAClC,YAAY,OAAO,EAAE,KAAK,CAAC,OAAO;AAClC,YAAY,MAAM,EAAE,KAAK,CAAC,YAAY;AACtC,YAAY,SAAS,EAAE,MAAM,CAAC,SAAS;AACvC,SAAS,CAAC;AACV,QAAQ,IAAI,CAAC,YAAY;AACzB,YAAY;AACZ,QAAQ,SAAS,GAAG,qBAAqB,CAAC,SAAS,EAAE,uBAAuB,CAAC,WAAW,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;AAC3G,QAAQ,OAAO,GAAG,IAAI;AACtB,IAAI;AACJ,IAAI,OAAO,CAAC,cAAc,GAAG,UAAU;AACvC,IAAI,IAAI,OAAO,EAAE;AACjB,QAAQ,OAAO,CAAC,qBAAqB,GAAG,IAAI;AAC5C,QAAQ,kBAAkB,CAAC,WAAW,EAAE,SAAS,CAAC;AAClD,QAAQ,kBAAkB,CAAC,OAAO,EAAE,OAAO,EAAE,WAAW,CAAC;AACzD,QAAQ,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC;AAClC,IAAI;AACJ,IAAI,OAAO,OAAO;AAClB;AACA,SAAS,uBAAuB,CAAC,SAAS,EAAE,KAAK,EAAE;AACnD,IAAI,OAAO,uBAAuB,CAAC;AACnC,QAAQ,KAAK,EAAE,SAAS,CAAC,KAAK;AAC9B,QAAQ,MAAM,EAAE,SAAS,CAAC,MAAM;AAChC,QAAQ,OAAO,EAAE,KAAK,CAAC,OAAO;AAC9B,QAAQ,OAAO,EAAE,KAAK,CAAC,OAAO;AAC9B,QAAQ,MAAM,EAAE,KAAK,CAAC,YAAY;AAClC,KAAK,CAAC;AACN;AACA,SAAS,qBAAqB,CAAC,OAAO,EAAE,IAAI,EAAE;AAC9C,IAAI,IAAI,CAAC,IAAI;AACb,QAAQ,OAAO,OAAO;AACtB,IAAI,IAAI,CAAC,OAAO;AAChB,QAAQ,OAAO,IAAI;AACnB,IAAI,OAAO;AACX,QAAQ,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC;AAC/C,QAAQ,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC;AAC/C,QAAQ,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC;AAC/C,QAAQ,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC;AAC/C,KAAK;AACL;AACA,SAAS,kBAAkB,CAAC,WAAW,EAAE,SAAS,EAAE;AACpD,IAAI,IAAI,CAAC,SAAS,EAAE;AACpB,QAAQ,WAAW,CAAC,gBAAgB,CAAC,YAAY,CAAC,WAAW,CAAC,SAAS,EAAE,CAAC,EAAE,CAAC,CAAC;AAC9E,QAAQ;AACR,IAAI;AACJ,IAAI,WAAW,CAAC,gBAAgB,CAAC,YAAY,CAAC,WAAW,CAAC,SAAS,EAAE,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,GAAG,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,SAAS,CAAC,IAAI,GAAG,SAAS,CAAC,IAAI,GAAG,CAAC,CAAC;AACpL;AACA,SAAS,uBAAuB,CAAC,KAAK,EAAE,GAAG,EAAE;AAC7C,IAAI,MAAM,EAAE,GAAG,GAAG,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO;AAC1C,IAAI,MAAM,EAAE,GAAG,GAAG,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO;AAC1C,IAAI,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC;AACvC,IAAI,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,YAAY,EAAE,GAAG,CAAC,YAAY,CAAC;AACpE,IAAI,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,GAAG,CAAC,CAAC;AAC9C,IAAI,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,CAAC;AAC5D,IAAI,MAAM,MAAM,GAAG,EAAE;AACrB,IAAI,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,IAAI,KAAK,EAAE,KAAK,IAAI,CAAC,EAAE;AACpD,QAAQ,MAAM,CAAC,GAAG,KAAK,GAAG,KAAK;AAC/B,QAAQ,MAAM,CAAC,IAAI,CAAC;AACpB,YAAY,OAAO,EAAE,KAAK,CAAC,OAAO,GAAG,EAAE,GAAG,CAAC;AAC3C,YAAY,OAAO,EAAE,KAAK,CAAC,OAAO,GAAG,EAAE,GAAG,CAAC;AAC3C,YAAY,YAAY,EAAE,KAAK,CAAC,YAAY,GAAG,CAAC,GAAG,CAAC,YAAY,GAAG,KAAK,CAAC,YAAY,IAAI,CAAC;AAC1F,SAAS,CAAC;AACV,IAAI;AACJ,IAAI,OAAO,MAAM;AACjB;AACA,eAAe,uBAAuB,CAAC,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE;AAC9E,IAAI,MAAM,OAAO,GAAG,OAAO,CAAC,gBAAgB,EAAE;AAC9C,IAAI,IAAI,CAAC,OAAO,IAAI,OAAO,KAAK,eAAe;AAC/C,QAAQ;AACR,IAAI,MAAM,aAAa,GAAG,OAAO,CAAC,gBAAgB,EAAE;AACpD,IAAI,IAAI,CAAC,aAAa,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE;AAClD,QAAQ;AACR,IAAI,MAAM,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE;AAC5C,IAAI,MAAM,UAAU,GAAG,mBAAmB,CAAC,OAAO,CAAC,MAAM,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,CAAC,SAAS,CAAC;AACxG,IAAI,IAAI,CAAC,UAAU,EAAE;AACrB,QAAQ,OAAO,CAAC,cAAc,GAAG,IAAI;AACrC,QAAQ;AACR,IAAI;AACJ,IAAI,MAAM,MAAM,GAAG,oBAAoB,CAAC,OAAO,EAAE,aAAa,CAAC;AAC/D,IAAI,IAAI,CAAC,MAAM,EAAE;AACjB,QAAQ,aAAa,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,KAAK,CAAC,8CAA8C,CAAC,EAAE,yDAAyD,CAAC;AAC5J,QAAQ;AACR,IAAI;AACJ,IAAI,MAAM,WAAW,GAAG,MAAM,sBAAsB,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC;AAC9E,IAAI,IAAI,CAAC,WAAW;AACpB,QAAQ;AACR,IAAI,qBAAqB,CAAC,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,UAAU,CAAC;AACtE;AACA,eAAe,mBAAmB,CAAC,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE;AACtE,IAAI,IAAI,EAAE;AACV,IAAI,OAAO,CAAC,eAAe,GAAG,KAAK;AACnC,IAAI,OAAO,CAAC,cAAc,GAAG,IAAI;AACjC,IAAI,IAAI,CAAC,OAAO,CAAC,qBAAqB,IAAI,CAAC,OAAO,CAAC,WAAW;AAC9D,QAAQ;AACR,IAAI,MAAM,aAAa,GAAG,OAAO,CAAC,gBAAgB,EAAE;AACpD,IAAI,IAAI,CAAC,aAAa,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE;AAClD,QAAQ;AACR,IAAI,MAAM,MAAM,GAAG,CAAC,EAAE,GAAG,oBAAoB,CAAC,OAAO,EAAE,aAAa,CAAC,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,OAAO,CAAC,WAAW,CAAC,MAAM;AAClI,IAAI,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW;AAC3C,IAAI,WAAW,CAAC,gBAAgB,CAAC,YAAY,CAAC,WAAW,CAAC,SAAS,EAAE,CAAC,EAAE,CAAC,CAAC;AAC1E,IAAI,MAAM,MAAM,GAAG,yBAAyB,CAAC,OAAO,EAAE,MAAM,CAAC;AAC7D,IAAI,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,KAAK;AAC3C,UAAU,WAAW,CAAC,eAAe,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ;AAC/D,UAAU,WAAW,CAAC,eAAe,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC;AAChF,IAAI,MAAM,SAAS,GAAG,MAAM,4BAA4B,CAAC,OAAO,EAAE,WAAW,CAAC;AAC9E,IAAI,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC;AACzC,IAAI,kBAAkB,CAAC,OAAO,EAAE,OAAO,CAAC;AACxC,IAAI,IAAI;AACR,QAAQ,gBAAgB,CAAC,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,CAAC,QAAQ,CAAC;AAC5E,QAAQ,OAAO,CAAC,qBAAqB,EAAE;AACvC,QAAQ,MAAM,KAAK,GAAG,OAAO,CAAC,eAAe,EAAE;AAC/C,QAAQ,iBAAiB,CAAC,OAAO,EAAE,KAAK,CAAC;AACzC,QAAQ,IAAI;AACZ,YAAY,MAAM,kCAAkC,CAAC,OAAO,EAAE,OAAO,EAAE,WAAW,CAAC;AACnF,QAAQ;AACR,QAAQ,OAAO,KAAK,EAAE;AACtB,YAAY,wBAAwB,CAAC,OAAO,CAAC;AAC7C,YAAY,aAAa,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,EAAE,4EAA4E,CAAC;AAC/H,QAAQ;AACR,QAAQ,OAAO,CAAC,qBAAqB,GAAG,KAAK;AAC7C,IAAI;AACJ,YAAY;AACZ,QAAQ,IAAI,OAAO,CAAC,gBAAgB,EAAE,KAAK,OAAO,EAAE;AACpD,YAAY,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC;AACjD,QAAQ;AACR,IAAI;AACJ,IAAI,OAAO,CAAC,YAAY,EAAE;AAC1B,IAAI,OAAO,CAAC,QAAQ,EAAE;AACtB,IAAI,OAAO,CAAC,gBAAgB,CAAC,eAAe,CAAC;AAC7C;AACA,eAAe,gBAAgB,CAAC,OAAO,EAAE,eAAe,EAAE;AAC1D,IAAI,MAAM,OAAO,GAAG,OAAO,CAAC,gBAAgB,EAAE;AAC9C,IAAI,IAAI,CAAC,OAAO,IAAI,OAAO,KAAK,eAAe,IAAI,OAAO,CAAC,UAAU;AACrE,QAAQ;AACR,IAAI,OAAO,CAAC,UAAU,GAAG,IAAI;AAC7B,IAAI,MAAM,eAAe,GAAG,OAAO,CAAC,oBAAoB,CAAC,aAAa,EAAE,KAAK,CAAC;AAC9E,IAAI,OAAO,CAAC,uBAAuB,CAAC,eAAe,CAAC;AACpD,IAAI,OAAO,CAAC,QAAQ,EAAE;AACtB,IAAI,IAAI;AACR,QAAQ,OAAO,OAAO,CAAC,gBAAgB,EAAE,KAAK,OAAO,IAAI,OAAO,CAAC,mBAAmB,CAAC,MAAM,GAAG,CAAC,EAAE;AACjG,YAAY,MAAM,KAAK,GAAG,OAAO,CAAC,mBAAmB,CAAC,KAAK,EAAE;AAC7D,YAAY,IAAI,KAAK,EAAE;AACvB,gBAAgB,MAAM,uBAAuB,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC;AACtE,YAAY;AACZ,QAAQ;AACR,QAAQ,IAAI,OAAO,CAAC,gBAAgB,EAAE,KAAK,OAAO,IAAI,OAAO,CAAC,eAAe,EAAE;AAC/E,YAAY,MAAM,mBAAmB,CAAC,OAAO,EAAE,OAAO,EAAE,eAAe,CAAC;AACxE,QAAQ;AACR,IAAI;AACJ,YAAY;AACZ,QAAQ,IAAI,OAAO,CAAC,gBAAgB,EAAE,KAAK,OAAO,EAAE;AACpD,YAAY,OAAO,CAAC,UAAU,GAAG,KAAK;AACtC,QAAQ;AACR,QAAQ,OAAO,CAAC,uBAAuB,CAAC,eAAe,CAAC;AACxD,QAAQ,OAAO,CAAC,QAAQ,EAAE;AAC1B,QAAQ,IAAI,OAAO,CAAC,gBAAgB,EAAE,KAAK,OAAO;AAClD,aAAa,OAAO,CAAC,mBAAmB,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,CAAC,eAAe,CAAC,EAAE;AACjF,YAAY,KAAK,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,KAAK;AACrE,gBAAgB,WAAW,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,EAAE,sBAAsB,CAAC;AAC3E,YAAY,CAAC,CAAC;AACd,QAAQ;AACR,IAAI;AACJ;AACA,SAAS,kBAAkB,CAAC,OAAO,EAAE,WAAW,EAAE;AAClD,IAAI,MAAM,OAAO,GAAG,OAAO,CAAC,gBAAgB,EAAE;AAC9C,IAAI,IAAI,CAAC,OAAO;AAChB,QAAQ;AACR,IAAI,OAAO,CAAC,mBAAmB,CAAC,IAAI,CAAC,WAAW,CAAC;AACjD,IAAI,IAAI,OAAO,CAAC,mBAAmB,CAAC,MAAM,GAAG,yBAAyB,EAAE;AACxE,QAAQ,OAAO,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC,EAAE,OAAO,CAAC,mBAAmB,CAAC,MAAM,GAAG,yBAAyB,CAAC;AAC7G,IAAI;AACJ,IAAI,KAAK,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,KAAK;AAC7D,QAAQ,WAAW,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,EAAE,sBAAsB,CAAC;AACnE,IAAI,CAAC,CAAC;AACN;AACA,SAAS,mBAAmB,CAAC,OAAO,EAAE,OAAO,EAAE;AAC/C,IAAI,OAAO,CAAC,eAAe,GAAG,IAAI;AAClC,IAAI,KAAK,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,KAAK;AAC7D,QAAQ,WAAW,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,EAAE,sBAAsB,CAAC;AACnE,IAAI,CAAC,CAAC;AACN;AACA,SAAS,qBAAqB,CAAC,OAAO,EAAE,OAAO,EAAE;AACjD,IAAI,mBAAmB,CAAC,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC,KAAK,KAAK;AACnE,QAAQ,MAAM,OAAO,GAAG,yBAAyB,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC;AACxE,QAAQ,IAAI,CAAC,OAAO,EAAE;AACtB,YAAY,WAAW,CAAC,OAAO,CAAC;AAChC,YAAY;AACZ,QAAQ;AACR,QAAQ,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC;AACrC,QAAQ,MAAM,cAAc,GAAG,OAAO,CAAC,gBAAgB,EAAE;AACzD,QAAQ,IAAI,cAAc,KAAK,IAAI,IAAI,cAAc,KAAK,MAAM,GAAG,MAAM,GAAG,cAAc,CAAC,aAAa,EAAE;AAC1G,YAAY,kBAAkB,CAAC,OAAO,EAAE,OAAO,CAAC;AAChD,QAAQ;AACR,IAAI,CAAC,CAAC;AACN,IAAI,mBAAmB,CAAC,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM;AAC7D,QAAQ,WAAW,CAAC,OAAO,CAAC;AAC5B,IAAI,CAAC,CAAC;AACN,IAAI,mBAAmB,CAAC,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC,KAAK,KAAK;AACnE,QAAQ,MAAM,OAAO,GAAG,yBAAyB,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC;AACxE,QAAQ,IAAI,CAAC,OAAO;AACpB,YAAY;AACZ,QAAQ,MAAM,cAAc,GAAG,OAAO,CAAC,gBAAgB,EAAE;AACzD,QAAQ,IAAI,CAAC,cAAc;AAC3B,YAAY;AACZ,QAAQ,cAAc,CAAC,aAAa,GAAG,IAAI;AAC3C,QAAQ,cAAc,CAAC,cAAc,GAAG,IAAI;AAC5C,QAAQ,kBAAkB,CAAC,OAAO,EAAE,OAAO,CAAC;AAC5C,IAAI,CAAC,CAAC;AACN,IAAI,mBAAmB,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,KAAK,KAAK;AACjE,QAAQ,MAAM,cAAc,GAAG,OAAO,CAAC,gBAAgB,EAAE;AACzD,QAAQ,IAAI,CAAC,cAAc;AAC3B,YAAY;AACZ,QAAQ,MAAM,OAAO,GAAG,yBAAyB,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC;AACxE,QAAQ,IAAI,OAAO,EAAE;AACrB,YAAY,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC;AACzC,YAAY,kBAAkB,CAAC,OAAO,EAAE,OAAO,CAAC;AAChD,QAAQ;AACR,QAAQ,cAAc,CAAC,aAAa,GAAG,KAAK;AAC5C,QAAQ,mBAAmB,CAAC,OAAO,EAAE,cAAc,CAAC;AACpD,IAAI,CAAC,CAAC;AACN;AACO,SAAS,eAAe,CAAC,OAAO,EAAE;AACzC,IAAI,IAAI,OAAO,CAAC,gBAAgB,EAAE;AAClC,QAAQ;AACR,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE;AAC/D,QAAQ;AACR,IAAI,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO;AAC9B,IAAI,OAAO,CAAC,iBAAiB,EAAE;AAC/B,IAAI,MAAM,CAAC,mBAAmB,EAAE;AAChC,IAAI,MAAM,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC,SAAS;AAC5C,IAAI,MAAM,iBAAiB,GAAG,MAAM,CAAC,aAAa;AAClD,IAAI,MAAM,gBAAgB,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK;AACjE,QAAQ,IAAI,EAAE,EAAE,EAAE;AAClB,QAAQ,QAAQ;AAChB,YAAY,MAAM;AAClB,YAAY,OAAO,EAAE,CAAC,EAAE,GAAG,MAAM,CAAC,OAAO,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,IAAI;AAChF,YAAY,UAAU,EAAE,CAAC,EAAE,GAAG,MAAM,CAAC,UAAU,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,IAAI;AACtF,SAAS;AACT,IAAI,CAAC,CAAC;AACN,IAAI,KAAK,MAAM,MAAM,IAAI,gBAAgB,EAAE;AAC3C,QAAQ,IAAI;AACZ,YAAY,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;AACpE,QAAQ;AACR,QAAQ,MAAM;AACd,QAAQ;AACR,IAAI;AACJ,IAAI,MAAM,CAAC,SAAS,GAAG,KAAK;AAC5B,IAAI,MAAM,CAAC,aAAa,GAAG,WAAW;AACtC,IAAI,MAAM,OAAO,GAAG;AACpB,QAAQ,aAAa,EAAE,IAAI;AAC3B,QAAQ,YAAY,EAAE,IAAI;AAC1B,QAAQ,aAAa;AACrB,QAAQ,iBAAiB;AACzB,QAAQ,gBAAgB;AACxB,QAAQ,QAAQ,EAAE,EAAE;AACpB,QAAQ,WAAW,EAAE,IAAI;AACzB,QAAQ,mBAAmB,EAAE,EAAE;AAC/B,QAAQ,aAAa,EAAE,KAAK;AAC5B,QAAQ,UAAU,EAAE,KAAK;AACzB,QAAQ,eAAe,EAAE,KAAK;AAC9B,QAAQ,qBAAqB,EAAE,KAAK;AACpC,QAAQ,cAAc,EAAE,IAAI;AAC5B,KAAK;AACL,IAAI,OAAO,CAAC,gBAAgB,CAAC,OAAO,CAAC;AACrC,IAAI,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC;AACzC,IAAI,qBAAqB,CAAC,OAAO,EAAE,OAAO,CAAC;AAC3C,IAAI,MAAM,CAAC,SAAS,EAAE;AACtB;AACO,SAAS,cAAc,CAAC,OAAO,EAAE;AACxC,IAAI,IAAI,EAAE;AACV,IAAI,MAAM,OAAO,GAAG,OAAO,CAAC,gBAAgB,EAAE;AAC9C,IAAI,IAAI,CAAC,OAAO;AAChB,QAAQ;AACR,IAAI,oBAAoB,CAAC,OAAO,EAAE,OAAO,CAAC;AAC1C,IAAI,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC;AACzC,IAAI,kBAAkB,CAAC,OAAO,EAAE,OAAO,CAAC;AACxC,IAAI,wBAAwB,CAAC,OAAO,CAAC;AACrC,IAAI,mBAAmB,CAAC,OAAO,CAAC;AAChC,IAAI,OAAO,CAAC,MAAM,CAAC,SAAS,GAAG,CAAC,CAAC,OAAO,CAAC,aAAa;AACtD,IAAI,OAAO,CAAC,MAAM,CAAC,aAAa,GAAG,CAAC,EAAE,GAAG,OAAO,CAAC,iBAAiB,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,SAAS;AAC9G,IAAI,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC;AAClC,IAAI,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE;AAC9B;AACO,SAAS,mBAAmB,CAAC,OAAO,EAAE;AAC7C,IAAI,MAAM,OAAO,GAAG,OAAO,CAAC,gBAAgB,EAAE;AAC9C,IAAI,MAAM,MAAM,GAAG,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,aAAa;AAC1F,IAAI,IAAI,CAAC,OAAO,IAAI,CAAC,MAAM;AAC3B,QAAQ;AACR,IAAI,MAAM,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE;AAC5C,IAAI,MAAM,CAAC,GAAG,CAAC;AACf,QAAQ,MAAM,EAAE,MAAM,CAAC,SAAS,GAAG,CAAC;AACpC,QAAQ,IAAI,EAAE,MAAM,CAAC,WAAW;AAChC,QAAQ,MAAM,EAAE,MAAM,CAAC,aAAa;AACpC,QAAQ,WAAW,EAAE,MAAM,CAAC,kBAAkB;AAC9C,QAAQ,eAAe,EAAE,MAAM,CAAC;AAChC,cAAc,CAAC,GAAG,MAAM,CAAC,sBAAsB;AAC/C,cAAc,SAAS;AACvB,KAAK,CAAC;AACN,IAAI,OAAO,CAAC,MAAM,CAAC,kBAAkB,CAAC,MAAM,CAAC;AAC7C,IAAI,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC;AAC9B;;AChtBO,SAAS,qBAAqB,CAAC,MAAM,EAAE;AAC9C,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE;AACzD,QAAQ;AACR,IAAI,IAAI,MAAM,CAAC,gBAAgB,EAAE;AACjC,QAAQ;AACR,IAAI,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE;AAC/B,QAAQ;AACR,IAAI,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,iBAAiB,CAAC;AACtD,QAAQ;AACR,IAAIC,eAAmB,CAAC,MAAM,CAAC,4BAA4B,EAAE,CAAC;AAC9D,IAAI,MAAM,CAAC,YAAY,EAAE;AACzB,IAAI,MAAM,CAAC,QAAQ,EAAE;AACrB,IAAI,MAAM,eAAe,GAAG,MAAM,CAAC,oBAAoB,CAAC,iBAAiB,EAAE,KAAK,CAAC;AACjF,IAAI,MAAM,CAAC,uBAAuB,CAAC,eAAe,CAAC;AACnD,IAAI,MAAM,CAAC,gBAAgB,CAAC,eAAe,CAAC;AAC5C;AACO,SAAS,oBAAoB,CAAC,MAAM,EAAE;AAC7C,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE;AACzD,QAAQ;AACR,IAAI,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,gBAAgB,CAAC;AACrD,QAAQ;AACR,IAAIC,cAAkB,CAAC,MAAM,CAAC,4BAA4B,EAAE,CAAC;AAC7D,IAAI,MAAM,CAAC,YAAY,EAAE;AACzB,IAAI,MAAM,CAAC,QAAQ,EAAE;AACrB,IAAI,MAAM,eAAe,GAAG,MAAM,CAAC,oBAAoB,CAAC,gBAAgB,EAAE,KAAK,CAAC;AAChF,IAAI,MAAM,CAAC,uBAAuB,CAAC,eAAe,CAAC;AACnD,IAAI,MAAM,CAAC,gBAAgB,CAAC,eAAe,CAAC;AAC5C;AACO,SAAS,uBAAuB,CAAC,MAAM,EAAE;AAChD,IAAI,IAAI,MAAM,CAAC,UAAU,EAAE;AAC3B,QAAQ;AACR,IAAI,MAAM,UAAU,GAAG,yBAAyB,CAAC,MAAM,CAAC,sBAAsB,EAAE,CAAC;AACjF,IAAI,IAAI,6BAA6B,CAAC,MAAM,CAAC,eAAe,EAAE,EAAE,UAAU,CAAC;AAC3E,QAAQ;AACR,IAAI,MAAM,CAAC,eAAe,CAAC,UAAU,CAAC;AACtC,IAAI,mBAAmB,CAAC,MAAM,CAAC;AAC/B,IAAI,MAAM,CAAC,YAAY,EAAE;AACzB,IAAI,MAAM,CAAC,QAAQ,EAAE;AACrB,IAAI,MAAM,CAAC,gBAAgB,CAAC,MAAM,CAAC,oBAAoB,CAAC,mBAAmB,EAAE,KAAK,CAAC,CAAC;AACpF;AACO,SAAS,4BAA4B,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE;AACxE,IAAI,IAAI,MAAM,CAAC,UAAU,EAAE;AAC3B,QAAQ;AACR,IAAI,IAAI,MAAM,KAAK,IAAI,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;AAChF,QAAQ,aAAa,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE,IAAI,SAAS,CAAC,6CAA6C,CAAC,EAAE,gCAAgC,CAAC;AAC1I,QAAQ;AACR,IAAI;AACJ,IAAI,MAAM,aAAa,GAAG,4BAA4B,CAAC,MAAM,CAAC;AAC9D,IAAI,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;AAClC,QAAQ,aAAa,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE,IAAI,SAAS,CAAC,CAAC,sDAAsD,CAAC;AACjH,YAAY,CAAC,EAAE,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,uCAAuC,CAAC;AACrF,IAAI;AACJ,IAAI,MAAM,UAAU,GAAG,sBAAsB,CAAC,MAAM,CAAC,eAAe,EAAE,EAAE,MAAM,CAAC;AAC/E,IAAI,IAAI,6BAA6B,CAAC,MAAM,CAAC,eAAe,EAAE,EAAE,UAAU,CAAC;AAC3E,QAAQ;AACR,IAAI,MAAM,CAAC,eAAe,CAAC,UAAU,CAAC;AACtC,IAAI,mBAAmB,CAAC,MAAM,CAAC;AAC/B,IAAI,MAAM,CAAC,YAAY,EAAE;AACzB,IAAI,MAAM,CAAC,QAAQ,EAAE;AACrB,IAAI,MAAM,CAAC,gBAAgB,CAAC,MAAM,CAAC,oBAAoB,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;AAC1E;AACA,SAAS,mBAAmB,CAAC,MAAM,EAAE;AACrC,IAAI,IAAI,MAAM,CAAC,gBAAgB,EAAE,IAAI,MAAM,CAAC,SAAS,EAAE,EAAE;AACzD,QAAQ,mBAAmB,CAAC,MAAM,CAAC,4BAA4B,EAAE,CAAC;AAClE,IAAI;AACJ;;ACpEO,SAAS,qBAAqB,CAAC,OAAO,EAAE,OAAO,EAAE;AACxD,IAAI,MAAM,YAAY,GAAG,IAAI,KAAK,EAAE;AACpC,IAAI,IAAI,OAAO,CAAC,WAAW,KAAK,SAAS,EAAE;AAC3C,QAAQ,YAAY,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW;AACtD,IAAI;AACJ,IAAI,MAAM,OAAO,GAAG,CAAC,WAAW,GAAG,KAAK,KAAK;AAC7C,QAAQ,IAAI,OAAO,YAAY,CAAC,mBAAmB,KAAK,UAAU,EAAE;AACpE,YAAY,YAAY,CAAC,mBAAmB,CAAC,MAAM,EAAE,UAAU,CAAC;AAChE,YAAY,YAAY,CAAC,mBAAmB,CAAC,OAAO,EAAE,WAAW,CAAC;AAClE,QAAQ;AACR,aAAa;AACb,YAAY,YAAY,CAAC,MAAM,GAAG,IAAI;AACtC,YAAY,YAAY,CAAC,OAAO,GAAG,IAAI;AACvC,QAAQ;AACR,QAAQ,IAAI,WAAW,EAAE;AACzB,YAAY,IAAI;AAChB,gBAAgB,YAAY,CAAC,GAAG,GAAG,EAAE;AACrC,YAAY;AACZ,YAAY,MAAM;AAClB,YAAY;AACZ,QAAQ;AACR,IAAI,CAAC;AACL,IAAI,MAAM,UAAU,GAAG,MAAM;AAC7B,QAAQ,IAAI,EAAE,EAAE,EAAE;AAClB,QAAQ,MAAM,eAAe,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,OAAO,CAAC,QAAQ,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,MAAM,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,IAAI;AACxK,QAAQ,IAAI,eAAe,EAAE;AAC7B,YAAY,OAAO,CAAC,IAAI,CAAC;AACzB,YAAY,WAAW,CAAC,eAAe,CAAC;AACxC,YAAY;AACZ,QAAQ;AACR,QAAQ,OAAO,CAAC,KAAK,CAAC;AACtB,QAAQ,YAAY,CAAC,YAAY,CAAC;AAClC,IAAI,CAAC;AACL,IAAI,MAAM,WAAW,GAAG,CAAC,KAAK,KAAK;AACnC,QAAQ,OAAO,CAAC,IAAI,CAAC;AACrB,QAAQ,WAAW,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;AAC/C,IAAI,CAAC;AACL,IAAI,IAAI,YAAY;AACpB,IAAI,IAAI,WAAW;AACnB,IAAI,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;AACrD,QAAQ,YAAY,GAAG,OAAO;AAC9B,QAAQ,WAAW,GAAG,MAAM;AAC5B,QAAQ,IAAI,OAAO,YAAY,CAAC,gBAAgB,KAAK,UAAU,EAAE;AACjE,YAAY,YAAY,CAAC,gBAAgB,CAAC,MAAM,EAAE,UAAU,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AAC7E,YAAY,YAAY,CAAC,gBAAgB,CAAC,OAAO,EAAE,WAAW,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AAC/E,QAAQ;AACR,aAAa;AACb,YAAY,YAAY,CAAC,MAAM,GAAG,UAAU;AAC5C,YAAY,YAAY,CAAC,OAAO,GAAG,WAAW;AAC9C,QAAQ;AACR,QAAQ,YAAY,CAAC,GAAG,GAAG,OAAO;AAClC,IAAI,CAAC,CAAC;AACN,IAAI,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE;AAC/B;;ACjDA,SAAS,gBAAgB,CAAC,SAAS,EAAE,KAAK,EAAE;AAC5C,IAAI,IAAI,SAAS,KAAK,kBAAkB,EAAE;AAC1C,QAAQ,IAAI,KAAK,YAAY,qBAAqB;AAClD,YAAY,OAAO,KAAK;AACxB,QAAQ,MAAM,OAAO,GAAG,KAAK,YAAY;AACzC,cAAc,CAAC,yBAAyB,EAAE,KAAK,CAAC,OAAO,CAAC;AACxD,cAAc,yBAAyB;AACvC,QAAQ,OAAO,IAAI,qBAAqB,CAAC,OAAO,EAAE,KAAK,CAAC;AACxD,IAAI;AACJ,IAAI,IAAI,KAAK,YAAY,eAAe;AACxC,QAAQ,OAAO,KAAK;AACpB,IAAI,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,GAAG,CAAC,mBAAmB,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,GAAG,mBAAmB;AACxG,IAAI,OAAO,IAAI,eAAe,CAAC,OAAO,EAAE,KAAK,CAAC;AAC9C;AACA,SAAS,aAAa,CAAC,MAAM,EAAE,OAAO,EAAE;AACxC,IAAI,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;AAClC,QAAQ,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC;AACjD,YAAY;AACZ,QAAQ,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;AAC7B,IAAI;AACJ,IAAI,MAAM,CAAC,mBAAmB,EAAE;AAChC,IAAI,MAAM,CAAC,SAAS,EAAE;AACtB;AACO,eAAe,8BAA8B,CAAC,OAAO,EAAE,OAAO,EAAE;AACvE,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE;AAChC,QAAQ;AACR,IAAI,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC,MAAM,KAAK,CAAC;AACzC,QAAQ;AACR,IAAI,MAAM,cAAc,GAAG,OAAO,CAAC,eAAe,EAAE;AACpD,IAAI,MAAM,gBAAgB,GAAG,OAAO,CAAC,mBAAmB,EAAE;AAC1D,IAAI,MAAM,YAAY,GAAG,OAAO,CAAC,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC,SAAS,GAAG,IAAI;AAC7F,IAAI,MAAM,aAAa,GAAG,OAAO,CAAC,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC,UAAU,GAAG,IAAI;AAC/F,IAAI,IAAI;AACR,QAAQ,MAAM,sBAAsB,GAAG,YAAY;AACnD,YAAY,aAAa,CAAC,OAAO,CAAC,MAAM,EAAE,gBAAgB,CAAC;AAC3D,QAAQ,CAAC;AACT,QAAQ,IAAI,OAAO,CAAC,6BAA6B,EAAE;AACnD,YAAY,MAAM,OAAO,CAAC,6BAA6B,CAAC,sBAAsB,CAAC;AAC/E,QAAQ;AACR,aAAa;AACb,YAAY,MAAM,sBAAsB,EAAE;AAC1C,QAAQ;AACR,QAAQ,MAAM,eAAe,GAAG,MAAM,OAAO,CAAC,iBAAiB,CAAC,OAAO,CAAC,aAAa,CAAC;AACtF,QAAQ,IAAI,CAAC,eAAe,EAAE;AAC9B,YAAY,MAAM,gBAAgB,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,+CAA+C,CAAC,CAAC;AAC5H,QAAQ;AACR,QAAQ,OAAO,CAAC,sBAAsB,EAAE;AACxC,QAAQ,MAAM,OAAO,CAAC,SAAS,CAAC,eAAe,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC;AAC1E,QAAQ,MAAM,OAAO,CAAC,uBAAuB,CAAC,gBAAgB,CAAC;AAC/D,QAAQ,mBAAmB,CAAC,OAAO,CAAC,MAAM,CAAC;AAC3C,QAAQ,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE;AAClC,QAAQ,OAAO,CAAC,YAAY,EAAE;AAC9B,QAAQ,OAAO,CAAC,QAAQ,EAAE;AAC1B,QAAQ,IAAI,OAAO,CAAC,gBAAgB,EAAE;AACtC,YAAY,IAAI;AAChB,gBAAgB,IAAI,YAAY,KAAK,IAAI;AACzC,oBAAoB,OAAO,CAAC,gBAAgB,CAAC,SAAS,GAAG,YAAY;AACrE,gBAAgB,IAAI,aAAa,KAAK,IAAI;AAC1C,oBAAoB,OAAO,CAAC,gBAAgB,CAAC,UAAU,GAAG,aAAa;AACvE,YAAY;AACZ,YAAY,OAAO,WAAW,EAAE;AAChC,gBAAgB,aAAa,CAAC,OAAO,CAAC,OAAO,EAAE,WAAW,EAAE,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,wBAAwB,CAAC,CAAC;AAC3G,YAAY;AACZ,QAAQ;AACR,QAAQ,MAAM,aAAa,GAAG,OAAO,CAAC,eAAe,EAAE;AACvD,QAAQ,IAAI,cAAc,IAAI,aAAa,IAAI,cAAc,KAAK,aAAa,EAAE;AACjF,YAAY,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,MAAM,OAAO,CAAC,aAAa,CAAC,aAAa,CAAC,EAAE,MAAM,OAAO,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC,CAAC;AAC7I,QAAQ;AACR,IAAI;AACJ,IAAI,OAAO,KAAK,EAAE;AAClB,QAAQ,IAAI;AACZ,YAAY,MAAM,OAAO,CAAC,aAAa,CAAC,cAAc,CAAC;AACvD,QAAQ;AACR,QAAQ,OAAO,aAAa,EAAE;AAC9B,YAAY,aAAa,CAAC,OAAO,CAAC,OAAO,EAAE,aAAa,EAAE,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC;AACnG,QAAQ;AACR,QAAQ,MAAM,gBAAgB,CAAC,OAAO,CAAC,SAAS,EAAE,KAAK,CAAC;AACxD,IAAI;AACJ;;AC1EA,MAAM,mCAAmC,GAAG,KAAK;AACjD,SAAS,iBAAiB,CAAC,SAAS,EAAE,QAAQ,EAAE;AAChD,IAAI,MAAM,GAAG,GAAG,MAAM,CAAC,SAAS,CAAC;AACjC,IAAI,IAAI,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC;AACvC,QAAQ,OAAO,GAAG;AAClB,IAAI,MAAM,aAAa,GAAG,MAAM,CAAC,QAAQ,CAAC;AAC1C,IAAI,OAAO,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,aAAa,GAAG,CAAC,GAAG,aAAa,GAAG,CAAC;AAClF;AACA,SAAS,iBAAiB,CAAC,SAAS,EAAE,QAAQ,EAAE;AAChD,IAAI,IAAI,SAAS,KAAK,QAAQ,IAAI,SAAS,KAAK,OAAO;AACvD,QAAQ,OAAO,SAAS;AACxB,IAAI,OAAO,QAAQ,KAAK,QAAQ,GAAG,QAAQ,GAAG,OAAO;AACrD;AACA,SAAS,oBAAoB,CAAC,OAAO,EAAE,OAAO,EAAE;AAChD,IAAI,MAAM,eAAe,GAAG,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,MAAM,GAAG,OAAO,GAAG,EAAE;AACjF,IAAI,OAAO;AACX,QAAQ,UAAU,EAAE,iBAAiB,CAAC,eAAe,CAAC,UAAU,EAAE,OAAO,CAAC,OAAO,CAAC,mBAAmB,CAAC;AACtG,QAAQ,UAAU,EAAE,OAAO,eAAe,CAAC,UAAU,KAAK;AAC1D,cAAc,eAAe,CAAC;AAC9B,cAAc,OAAO,CAAC,OAAO,CAAC,mBAAmB;AACjD,QAAQ,gBAAgB,EAAE,OAAO,eAAe,CAAC,gBAAgB,KAAK;AACtE,cAAc,eAAe,CAAC;AAC9B,cAAc,OAAO,CAAC,OAAO,CAAC,yBAAyB;AACvD,QAAQ,UAAU,EAAE,iBAAiB,CAAC,eAAe,CAAC,UAAU,EAAE,OAAO,CAAC,OAAO,CAAC,gBAAgB,CAAC;AACnG,QAAQ,MAAM,EAAE,mBAAmB,CAAC,eAAe,EAAE,OAAO,CAAC,OAAO,CAAC,iBAAiB,CAAC;AACvF,KAAK;AACL;AACA,SAAS,mBAAmB,CAAC,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE;AAC/D,IAAI,MAAM,UAAU,GAAG,MAAM;AAC7B,IAAI,MAAM,MAAM,GAAG,UAAU,CAAC,UAAU,CAAC;AACzC,IAAI,MAAM,KAAK,GAAG,OAAO,MAAM,KAAK,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,UAAU,CAAC,YAAY,CAAC;AACnG,IAAI,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;AAC7E;AACA,SAAS,uBAAuB,CAAC,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE;AAC9D,IAAI,IAAI,EAAE,EAAE,EAAE;AACd,IAAI,MAAM,WAAW,GAAG,CAAC,EAAE,GAAG,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC,KAAK,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,mBAAmB,CAAC,OAAO,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,CAAC;AACrL,IAAI,MAAM,YAAY,GAAG,CAAC,EAAE,GAAG,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC,MAAM,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,mBAAmB,CAAC,OAAO,CAAC,MAAM,EAAE,WAAW,EAAE,QAAQ,CAAC;AACzL,IAAI,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC,CAAC;AACxE,IAAI,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,YAAY,GAAG,UAAU,CAAC,CAAC;AAC1E,IAAI,MAAM,UAAU,GAAG,WAAW,GAAG,YAAY;AACjD,IAAI,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,eAAe;AACrD,IAAI,MAAM,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,kBAAkB;AAC3D,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,UAAU,GAAG,SAAS,EAAE;AAChE,QAAQ,MAAM,IAAI,UAAU,CAAC,CAAC,0BAA0B,EAAE,WAAW,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC;AACxF,YAAY,CAAC,CAAC,EAAE,UAAU,CAAC,kCAAkC,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC;AAC7E,IAAI;AACJ,IAAI,IAAI,WAAW,GAAG,YAAY,IAAI,YAAY,GAAG,YAAY,EAAE;AACnE,QAAQ,MAAM,IAAI,UAAU,CAAC,CAAC,0BAA0B,EAAE,WAAW,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC;AACxF,YAAY,CAAC,4BAA4B,EAAE,YAAY,CAAC,EAAE,CAAC,CAAC;AAC5D,IAAI;AACJ;AACA,SAAS,mBAAmB,CAAC,OAAO,EAAE,UAAU,EAAE;AAClD,IAAI,IAAI,UAAU,KAAK,QAAQ;AAC/B,QAAQ,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE;AACnD,IAAI,MAAM,aAAa,GAAG,OAAO,CAAC,gBAAgB,EAAE;AACpD,IAAI,IAAI,CAAC,aAAa;AACtB,QAAQ,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE;AACnD,IAAI,MAAM,MAAM,GAAG,aAAa,CAAC,aAAa,CAAC;AAC/C,IAAI,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM;AACrC,IAAI,MAAM,WAAW,GAAG,OAAO,UAAU,CAAC,QAAQ,KAAK,UAAU,GAAG,UAAU,CAAC,QAAQ,EAAE,GAAG,UAAU,CAAC,KAAK;AAC5G,IAAI,MAAM,YAAY,GAAG,OAAO,UAAU,CAAC,SAAS,KAAK,UAAU,GAAG,UAAU,CAAC,SAAS,EAAE,GAAG,UAAU,CAAC,MAAM;AAChH,IAAI,IAAI,CAAC,yBAAyB,CAAC,MAAM,EAAE,WAAW,EAAE,YAAY,CAAC,EAAE;AACvE,QAAQ,MAAM,IAAI,WAAW,CAAC,yDAAyD,CAAC;AACxF,IAAI;AACJ,IAAI,OAAO;AACX,QAAQ,MAAM,EAAE,sBAAsB,CAAC,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE;AAC1E,YAAY,oBAAoB,EAAE,IAAI;AACtC,SAAS,CAAC;AACV,QAAQ,YAAY,EAAE,qBAAqB,CAAC,MAAM,EAAE,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AACrF,KAAK;AACL;AACA,eAAe,mBAAmB,CAAC,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE;AAClE,IAAI,IAAI,CAAC,UAAU,EAAE;AACrB,QAAQ,OAAO,iBAAiB,CAAC,OAAO,CAAC,MAAM,EAAE,YAAY,EAAE,QAAQ,CAAC;AACxE,IAAI;AACJ,IAAI,OAAO,mBAAmB,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,EAAE,sBAAsB,EAAE,QAAQ,CAAC;AACtH;AACA,eAAe,iBAAiB,CAAC,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE;AAC9D,IAAI,MAAM,OAAO,GAAG,gBAAgB,CAAC,MAAM;AAC3C,SAAS,MAAM,CAAC,SAAS;AACzB,SAAS,GAAG,CAAC,CAAC,MAAM,KAAK;AACzB,QAAQ,IAAI,EAAE;AACd,QAAQ,QAAQ;AAChB,YAAY,MAAM;AAClB,YAAY,OAAO,EAAE,CAAC,EAAE,GAAG,MAAM,CAAC,OAAO,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,IAAI;AAChF,SAAS;AACT,IAAI,CAAC,CAAC;AACN,IAAI,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;AAClC,QAAQ,IAAI;AACZ,YAAY,IAAI,OAAO,MAAM,CAAC,MAAM,CAAC,GAAG,KAAK,UAAU,EAAE;AACzD,gBAAgB,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;AACrD,YAAY;AACZ,iBAAiB;AACjB,gBAAgB,MAAM,CAAC,MAAM,CAAC,OAAO,GAAG,KAAK;AAC7C,YAAY;AACZ,QAAQ;AACR,QAAQ,MAAM;AACd,QAAQ;AACR,IAAI;AACJ,IAAI,IAAI;AACR,QAAQ,OAAO,MAAM,QAAQ,EAAE;AAC/B,IAAI;AACJ,YAAY;AACZ,QAAQ,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;AACtC,YAAY,IAAI;AAChB,gBAAgB,IAAI,OAAO,MAAM,CAAC,MAAM,CAAC,GAAG,KAAK,UAAU,EAAE;AAC7D,oBAAoB,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC;AAClE,gBAAgB;AAChB,qBAAqB;AACrB,oBAAoB,MAAM,CAAC,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO;AAC1D,gBAAgB;AAChB,YAAY;AACZ,YAAY,MAAM;AAClB,YAAY;AACZ,QAAQ;AACR,QAAQ,aAAa,CAAC,MAAM,CAAC;AAC7B,IAAI;AACJ;AACA,eAAe,wBAAwB,CAAC,OAAO,EAAE,QAAQ,EAAE;AAC3D,IAAI,OAAO,iBAAiB,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,MAAM,KAAK,eAAe,CAAC,MAAM,CAAC;AAChF,QAAQ,MAAM,CAAC,UAAU,KAAK,IAAI;AAClC,QAAQ,MAAM,CAAC,SAAS,KAAK,IAAI;AACjC,QAAQ,MAAM,CAAC,eAAe,KAAK,IAAI,EAAE,QAAQ,CAAC;AAClD;AACA,eAAe,0BAA0B,CAAC,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE;AAC/E,IAAI,IAAI,CAAC,gBAAgB,EAAE;AAC3B,QAAQ,OAAO,iBAAiB,CAAC,OAAO,CAAC,MAAM,EAAE,kBAAkB,EAAE,QAAQ,CAAC;AAC9E,IAAI;AACJ,IAAI,OAAO,iBAAiB,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,MAAM,KAAK,kBAAkB,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,gBAAgB,KAAK,IAAI,EAAE,QAAQ,CAAC;AAClI;AACA,SAAS,gBAAgB,CAAC,MAAM,EAAE;AAClC,IAAI,IAAI;AACR,QAAQ,OAAO,MAAM,CAAC,UAAU,EAAE;AAClC,IAAI;AACJ,IAAI,MAAM;AACV,QAAQ,OAAO,EAAE;AACjB,IAAI;AACJ;AACA,SAAS,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE;AAC1C,IAAI,OAAO,gBAAgB,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;AACpD;AACA,SAAS,uBAAuB,CAAC,MAAM,EAAE;AACzC,IAAI,IAAI,EAAE;AACV,IAAI,MAAM,OAAO,GAAG,EAAE;AACtB,IAAI,KAAK,MAAM,MAAM,IAAI,gBAAgB,CAAC,MAAM,CAAC,EAAE;AACnD,QAAQ,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC;AACjC,YAAY;AACZ,QAAQ,MAAM,KAAK,GAAG,MAAM,CAAC,WAAW;AACxC,QAAQ,IAAI,CAAC,KAAK;AAClB,YAAY;AACZ,QAAQ,MAAM,WAAW,GAAG,gBAAgB,CAAC,MAAM,EAAE,KAAK,CAAC;AAC3D,QAAQ,OAAO,CAAC,IAAI,CAAC;AACrB,YAAY,IAAI,EAAE,MAAM;AACxB,YAAY,KAAK;AACjB,YAAY,WAAW;AACvB,YAAY,OAAO,EAAE,CAAC,EAAE,GAAG,KAAK,CAAC,OAAO,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,IAAI;AAC/E,SAAS,CAAC;AACV,QAAQ,IAAI;AACZ,YAAY,IAAI,OAAO,KAAK,CAAC,GAAG,KAAK,UAAU;AAC/C,gBAAgB,KAAK,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;AAC7C,YAAY,IAAI,WAAW;AAC3B,gBAAgB,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC;AACpC,QAAQ;AACR,QAAQ,MAAM;AACd,QAAQ;AACR,IAAI;AACJ,IAAI,OAAO,OAAO;AAClB;AACA,SAAS,uBAAuB,CAAC,MAAM,EAAE,OAAO,EAAE;AAClD,IAAI,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;AAClC,QAAQ,IAAI;AACZ,YAAY,MAAM,CAAC,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,KAAK;AAClD,YAAY,IAAI,OAAO,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,UAAU,EAAE;AACxD,gBAAgB,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC;AAC7D,YAAY;AACZ,iBAAiB;AACjB,gBAAgB,MAAM,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO;AACrD,YAAY;AACZ,YAAY,IAAI,MAAM,CAAC,WAAW,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE;AAC/E,gBAAgB,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC;AACxC,gBAAgB,MAAM,CAAC,kBAAkB,CAAC,MAAM,CAAC,KAAK,CAAC;AACvD,YAAY;AACZ,QAAQ;AACR,QAAQ,MAAM;AACd,QAAQ;AACR,IAAI;AACJ;AACA,SAAS,mBAAmB,CAAC,MAAM,EAAE;AACrC,IAAI,IAAI,EAAE;AACV,IAAI,IAAI;AACR,QAAQ,MAAM,mBAAmB,GAAG,MAAM;AAC1C,QAAQ,IAAI,OAAO,mBAAmB,CAAC,eAAe,KAAK,UAAU;AACrE,YAAY,OAAO,IAAI;AACvB,QAAQ,OAAO,CAAC,EAAE,GAAG,mBAAmB,CAAC,eAAe,EAAE,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,EAAE,GAAG,IAAI;AACjG,IAAI;AACJ,IAAI,MAAM;AACV,QAAQ,OAAO,IAAI;AACnB,IAAI;AACJ;AACA,SAAS,mBAAmB,CAAC,MAAM,EAAE,YAAY,EAAE;AACnD,IAAI,IAAI,CAAC,YAAY;AACrB,QAAQ;AACR,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC;AACnD,QAAQ;AACR,IAAI,IAAI;AACR,QAAQ,MAAM,mBAAmB,GAAG,MAAM;AAC1C,QAAQ,IAAI,OAAO,mBAAmB,CAAC,eAAe,KAAK,UAAU,EAAE;AACvE,YAAY,mBAAmB,CAAC,eAAe,CAAC,YAAY,CAAC;AAC7D,QAAQ;AACR,IAAI;AACJ,IAAI,MAAM;AACV,IAAI;AACJ;AACA,SAAS,aAAa,CAAC,MAAM,EAAE;AAC/B,IAAI,IAAI;AACR,QAAQ,IAAI,OAAO,MAAM,CAAC,gBAAgB,KAAK,UAAU,EAAE;AAC3D,YAAY,MAAM,CAAC,gBAAgB,EAAE;AACrC,QAAQ;AACR,aAAa;AACb,YAAY,MAAM,CAAC,SAAS,EAAE;AAC9B,QAAQ;AACR,IAAI;AACJ,IAAI,MAAM;AACV,IAAI;AACJ;AACA,SAAS,sBAAsB,CAAC,IAAI,EAAE;AACtC,IAAI,IAAI;AACR,QAAQ,IAAI,CAAC,GAAG,CAAC;AACjB,YAAY,OAAO,EAAE,CAAC;AACtB,YAAY,IAAI,EAAE,MAAM;AACxB,YAAY,WAAW,EAAE,CAAC;AAC1B,YAAY,MAAM,EAAE,IAAI;AACxB,YAAY,UAAU,EAAE,KAAK;AAC7B,SAAS,CAAC;AACV,QAAQ,IAAI,OAAO,IAAI,CAAC,SAAS,KAAK,UAAU;AAChD,YAAY,IAAI,CAAC,SAAS,EAAE;AAC5B,IAAI;AACJ,IAAI,MAAM;AACV,IAAI;AACJ;AACA,SAAS,qBAAqB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE;AAC5E,IAAI,MAAM,aAAa,GAAG;AAC1B,QAAQ,MAAM;AACd,QAAQ,UAAU;AAClB,KAAK;AACL,IAAI,IAAI,OAAO,KAAK,SAAS;AAC7B,QAAQ,aAAa,CAAC,OAAO,GAAG,OAAO;AACvC,IAAI,IAAI,MAAM,EAAE;AAChB,QAAQ,aAAa,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI;AACxC,QAAQ,aAAa,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG;AACtC,QAAQ,aAAa,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK;AAC1C,QAAQ,aAAa,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM;AAC5C,IAAI;AACJ,IAAI,OAAO,MAAM,CAAC,SAAS,CAAC,aAAa,CAAC;AAC1C;AACA,SAAS,eAAe,CAAC,KAAK,EAAE;AAChC,IAAI,OAAO,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,GAAG,IAAI,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,CAAC;AAC9E;AACA,SAAS,kBAAkB,CAAC,YAAY,EAAE;AAC1C,IAAI,OAAO;AACX,QAAQ,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,YAAY,CAAC,YAAY,IAAI,YAAY,CAAC,KAAK,IAAI,CAAC,CAAC;AAChF,QAAQ,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,YAAY,CAAC,aAAa,IAAI,YAAY,CAAC,MAAM,IAAI,CAAC,CAAC;AACnF,KAAK;AACL;AACA,SAAS,gBAAgB,CAAC,OAAO,EAAE;AACnC,IAAI,OAAO,qBAAqB,CAAC,OAAO,EAAE;AAC1C,QAAQ,WAAW,EAAE,WAAW;AAChC,QAAQ,WAAW,EAAE,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC;AACxE,KAAK,CAAC,CAAC,OAAO;AACd;AACA,SAAS,2BAA2B,CAAC,aAAa,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE;AAC1E,IAAI,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC;AAC/B,QAAQ;AACR,IAAI,MAAM,SAAS,GAAG,aAAa,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC;AACrE,IAAI,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI;AACjC,IAAI,MAAM,SAAS,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,SAAS,EAAE,SAAS,KAAK;AACtD,QAAQ,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AAClC,QAAQ,MAAM,KAAK,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,IAAI,CAAC;AACzC,QAAQ,MAAM,aAAa,GAAG,CAAC,SAAS,GAAG,KAAK,GAAG,SAAS,IAAI,CAAC;AACjE,QAAQ,MAAM,KAAK,GAAG,CAAC,EAAE,GAAG,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,CAAC;AACjF,QAAQ,MAAM,aAAa,GAAG,CAAC,EAAE,GAAG,MAAM,CAAC,aAAa,GAAG,CAAC,CAAC,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,CAAC;AACjG,QAAQ,IAAI,KAAK,KAAK,CAAC,IAAI,aAAa,GAAG,CAAC,EAAE;AAC9C,YAAY,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,GAAG,MAAM,CAAC,aAAa,CAAC,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,CAAC;AAC3F,YAAY,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,MAAM,CAAC,aAAa,GAAG,CAAC,CAAC,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,CAAC;AACnG,YAAY,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,MAAM,CAAC,aAAa,GAAG,CAAC,CAAC,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,CAAC;AACnG,YAAY,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,aAAa;AAC7C,QAAQ;AACR,QAAQ,MAAM,SAAS,GAAG,CAAC,EAAE,GAAG,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,CAAC;AACrF,QAAQ,IAAI,SAAS,GAAG,CAAC,IAAI,SAAS,GAAG,GAAG,EAAE;AAC9C,YAAY,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,GAAG;AACnC,QAAQ;AACR,IAAI,CAAC;AACL,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC,IAAI,KAAK,KAAK,GAAG,CAAC,EAAE;AACjF,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC;AAC1C,YAAY,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AACjC,IAAI;AACJ,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC,KAAK,KAAK,KAAK,GAAG,CAAC,EAAE;AAClF,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC;AAC1C,YAAY,SAAS,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC;AACjD,IAAI;AACJ,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC,GAAG,KAAK,MAAM,GAAG,CAAC,EAAE;AACjF,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC;AACzC,YAAY,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AACjC,IAAI;AACJ,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC,MAAM,KAAK,MAAM,GAAG,CAAC,EAAE;AACpF,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC;AACzC,YAAY,SAAS,CAAC,CAAC,EAAE,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC;AACnD,IAAI;AACJ,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC,IAAI,MAAM,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,MAAM,GAAG,CAAC,EAAE;AAC5J,QAAQ,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AAC7B,IAAI;AACJ,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC,KAAK,MAAM,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,MAAM,GAAG,CAAC,EAAE;AAC7J,QAAQ,SAAS,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC;AAC7C,IAAI;AACJ,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC,IAAI,MAAM,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,MAAM,GAAG,CAAC,EAAE;AAC/J,QAAQ,SAAS,CAAC,CAAC,EAAE,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC;AAC/C,IAAI;AACJ,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC,KAAK,MAAM,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,MAAM,GAAG,CAAC,EAAE;AAChK,QAAQ,SAAS,CAAC,KAAK,GAAG,CAAC,EAAE,MAAM,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC;AAC/D,IAAI;AACJ,IAAI,aAAa,CAAC,YAAY,CAAC,SAAS,EAAE,CAAC,EAAE,CAAC,CAAC;AAC/C;AACA,SAAS,sBAAsB,CAAC,eAAe,EAAE,aAAa,EAAE;AAChE,IAAI,OAAO,sBAAsB,CAAC,eAAe,EAAE,aAAa,CAAC;AACjE;AACA,MAAM,uBAAuB,GAAG,IAAI,OAAO,EAAE;AAC7C,SAAS,sBAAsB,CAAC,eAAe,EAAE,aAAa,EAAE,QAAQ,GAAG,SAAS,EAAE;AACtF,IAAI,IAAI,EAAE,EAAE,EAAE;AACd,IAAI,MAAM,KAAK,GAAG,MAAM,CAAC,eAAe,KAAK,IAAI,IAAI,eAAe,KAAK,MAAM,GAAG,eAAe,GAAG,EAAE,CAAC,CAAC,IAAI,EAAE;AAC9G,IAAI,IAAI,CAAC,KAAK,IAAI,qBAAqB,CAAC,KAAK,CAAC;AAC9C,QAAQ,OAAO,SAAS;AACxB,IAAI,MAAM,GAAG,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,aAAa,CAAC,WAAW,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,MAAM,GAAG,EAAE,CAAC,GAAG,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,UAAU,CAAC,GAAG;AACnJ,IAAI,MAAM,aAAa,GAAG,QAAQ,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,MAAM,GAAG,MAAM,GAAG,GAAG,CAAC,QAAQ,CAAC,KAAK,UAAU,GAAG,GAAG,CAAC,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC,GAAG,IAAI;AAC9I,IAAI,IAAI,aAAa,KAAK,KAAK;AAC/B,QAAQ,OAAO,QAAQ;AACvB,IAAI,MAAM,OAAO,GAAG,4BAA4B,CAAC,aAAa,CAAC;AAC/D,IAAI,IAAI,CAAC,OAAO;AAChB,QAAQ,OAAO,aAAa,KAAK,IAAI,GAAG,KAAK,GAAG,QAAQ;AACxD,IAAI,IAAI,aAAa,KAAK,IAAI,EAAE;AAChC,QAAQ,OAAO,CAAC,SAAS,GAAG,KAAK;AACjC,QAAQ,OAAO,OAAO,CAAC,SAAS;AAChC,IAAI;AACJ,IAAI,OAAO,CAAC,SAAS,GAAG,SAAS;AACjC,IAAI,MAAM,aAAa,GAAG,OAAO,CAAC,SAAS;AAC3C,IAAI,OAAO,CAAC,SAAS,GAAG,KAAK;AAC7B,IAAI,MAAM,aAAa,GAAG,OAAO,CAAC,SAAS;AAC3C,IAAI,IAAI,aAAa,KAAK,aAAa;AACvC,QAAQ,OAAO,aAAa;AAC5B,IAAI,OAAO,CAAC,SAAS,GAAG,SAAS;AACjC,IAAI,MAAM,cAAc,GAAG,OAAO,CAAC,SAAS;AAC5C,IAAI,OAAO,CAAC,SAAS,GAAG,KAAK;AAC7B,IAAI,MAAM,cAAc,GAAG,OAAO,CAAC,SAAS;AAC5C,IAAI,IAAI,cAAc,KAAK,cAAc;AACzC,QAAQ,OAAO,cAAc;AAC7B,IAAI,OAAO,QAAQ;AACnB;AACA,SAAS,4BAA4B,CAAC,aAAa,EAAE;AACrD,IAAI,IAAI,EAAE;AACV,IAAI,IAAI,uBAAuB,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE;AACpD,QAAQ,OAAO,CAAC,EAAE,GAAG,uBAAuB,CAAC,GAAG,CAAC,aAAa,CAAC,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,IAAI;AACtG,IAAI;AACJ,IAAI,IAAI;AACR,QAAQ,MAAM,OAAO,GAAG,aAAa,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC;AAC9E,QAAQ,uBAAuB,CAAC,GAAG,CAAC,aAAa,EAAE,OAAO,CAAC;AAC3D,QAAQ,OAAO,OAAO;AACtB,IAAI;AACJ,IAAI,MAAM;AACV,QAAQ,uBAAuB,CAAC,GAAG,CAAC,aAAa,EAAE,IAAI,CAAC;AACxD,QAAQ,OAAO,IAAI;AACnB,IAAI;AACJ;AACA,SAAS,qBAAqB,CAAC,OAAO,EAAE;AACxC,IAAI,IAAI,EAAE,EAAE,EAAE;AACd,IAAI,MAAM,KAAK,GAAG,yBAAyB,CAAC,IAAI,CAAC,OAAO,CAAC;AACzD,IAAI,OAAO,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,MAAM,GAAG,EAAE,CAAC,WAAW,EAAE,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,IAAI;AAC3K;AACA,SAAS,qBAAqB,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE;AAC3D,IAAI,MAAM,cAAc,GAAG,qBAAqB,CAAC,OAAO,CAAC;AACzD,IAAI,IAAI,cAAc,KAAK,MAAM,CAAC,QAAQ,EAAE;AAC5C,QAAQ,MAAM,IAAI,WAAW,CAAC,CAAC,EAAE,SAAS,CAAC,yBAAyB,EAAE,cAAc,KAAK,IAAI,IAAI,cAAc,KAAK,MAAM,GAAG,cAAc,GAAG,cAAc,CAAC,sBAAsB,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AACxM,IAAI;AACJ;AACA,SAAS,qBAAqB,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE;AAC1D,IAAI,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,KAAK;AACvC,UAAU,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ;AAC1C,UAAU,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC;AAC3D,IAAI,qBAAqB,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC;AACrD,IAAI,OAAO,OAAO;AAClB;AACA,SAASF,mBAAiB,CAAC,MAAM,EAAE;AACnC,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AACtB,IAAI,MAAM,UAAU,GAAG,MAAM;AAC7B,IAAI,MAAM,aAAa,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,UAAU,CAAC,UAAU,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,MAAM,GAAG,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,MAAM,GAAG,EAAE,CAAC,aAAa,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,CAAC,EAAE,GAAG,UAAU,CAAC,aAAa,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,MAAM,GAAG,EAAE,CAAC,aAAa;AAC1S,IAAI,IAAI,aAAa;AACrB,QAAQ,OAAO,aAAa;AAC5B,IAAI,IAAI,OAAO,QAAQ,KAAK,WAAW;AACvC,QAAQ,OAAO,QAAQ;AACvB,IAAI,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC;AAC1E;AACA,SAAS,qBAAqB,CAAC,KAAK,EAAE;AACtC,IAAI,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE;AACjD,IAAI,IAAI,UAAU,KAAK,aAAa;AACpC,QAAQ,OAAO,IAAI;AACnB,IAAI,MAAM,GAAG,GAAG,UAAU,CAAC,KAAK,CAAC,+BAA+B,CAAC;AACjE,IAAI,IAAI,GAAG,EAAE;AACb,QAAQ,MAAM,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC;AAC7B,QAAQ,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,KAAK,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;AAC1E,QAAQ,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;AACjC,IAAI;AACJ,IAAI,MAAM,UAAU,GAAG,UAAU,CAAC,KAAK,CAAC,qDAAqD,CAAC;AAC9F,IAAI,IAAI,UAAU,IAAI,cAAc,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AACnD,QAAQ,OAAO,IAAI;AACnB,IAAI,MAAM,UAAU,GAAG,UAAU,CAAC,KAAK,CAAC,yCAAyC,CAAC;AAClF,IAAI,IAAI,UAAU,IAAI,cAAc,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AACnD,QAAQ,OAAO,IAAI;AACnB,IAAI,OAAO,KAAK;AAChB;AACA,SAAS,cAAc,CAAC,KAAK,EAAE;AAC/B,IAAI,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,EAAE;AAC9B,IAAI,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;AAC7B,QAAQ,MAAM,cAAc,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACpE,QAAQ,OAAO,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,cAAc,KAAK,CAAC;AACtE,IAAI;AACJ,IAAI,MAAM,YAAY,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC;AACjD,IAAI,OAAO,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,YAAY,KAAK,CAAC;AAC9D;AACA,eAAe,wBAAwB,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,aAAa,EAAE;AAChG,IAAI,MAAM,eAAe,GAAG,eAAe,CAAC,KAAK,CAAC;AAClD,IAAI,MAAM,6BAA6B,GAAG,MAAM,CAAC,MAAM,KAAK,MAAM;AAClE,IAAI,IAAI,CAAC,eAAe,IAAI,CAAC,6BAA6B;AAC1D,QAAQ,OAAO,OAAO;AACtB,IAAI,MAAM,YAAY,GAAG,MAAM,gBAAgB,CAAC,OAAO,CAAC;AACxD,IAAI,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,kBAAkB,CAAC,YAAY,CAAC;AAC9D,IAAI,MAAM,eAAe,GAAG,aAAa,CAAC,aAAa,CAAC,QAAQ,CAAC;AACjE,IAAI,eAAe,CAAC,KAAK,GAAG,KAAK;AACjC,IAAI,eAAe,CAAC,MAAM,GAAG,MAAM;AACnC,IAAI,MAAM,aAAa,GAAG,eAAe,CAAC,UAAU,CAAC,IAAI,CAAC;AAC1D,IAAI,IAAI,CAAC,aAAa;AACtB,QAAQ,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC;AAC3D,IAAI,aAAa,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC;AAC9D,IAAI,IAAI,eAAe,EAAE;AACzB,QAAQ,2BAA2B,CAAC,aAAa,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC;AACxE,IAAI;AACJ,IAAI,IAAI,6BAA6B,EAAE;AACvC,QAAQ,aAAa,CAAC,wBAAwB,GAAG,kBAAkB;AACnE,QAAQ,aAAa,CAAC,SAAS,GAAG,sBAAsB,CAAC,eAAe,EAAE,aAAa,CAAC;AACxF,QAAQ,aAAa,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC;AACnD,QAAQ,aAAa,CAAC,wBAAwB,GAAG,aAAa;AAC9D,IAAI;AACJ,IAAI,OAAO,qBAAqB,CAAC,eAAe,EAAE,MAAM,EAAE,mBAAmB,CAAC;AAC9E;AACA,SAAS,cAAc,CAAC,OAAO,EAAE;AACjC,IAAI,IAAI,EAAE;AACV,IAAI,MAAM,KAAK,GAAG,sDAAsD,CAAC,IAAI,CAAC,OAAO,CAAC;AACtF,IAAI,MAAM,MAAM,GAAG,CAAC,EAAE,GAAG,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,EAAE;AACpH,IAAI,IAAI,CAAC,MAAM,EAAE;AACjB,QAAQ,MAAM,IAAI,KAAK,CAAC,+DAA+D,CAAC;AACxF,IAAI;AACJ,IAAI,IAAI,OAAO,UAAU,CAAC,IAAI,KAAK,UAAU,EAAE;AAC/C,QAAQ,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC;AAC9C,QAAQ,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC;AACnD,QAAQ,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE;AAC/D,YAAY,KAAK,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC;AACnD,QAAQ;AACR,QAAQ,OAAO,KAAK;AACpB,IAAI;AACJ,IAAI,MAAM,UAAU,GAAG,UAAU,CAAC,MAAM;AACxC,IAAI,IAAI,UAAU,IAAI,OAAO,UAAU,CAAC,IAAI,KAAK,UAAU,EAAE;AAC7D,QAAQ,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC;AACxD,QAAQ,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC;AACrD,QAAQ,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC;AAC5C,QAAQ,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC;AACzB,QAAQ,OAAO,KAAK;AACpB,IAAI;AACJ,IAAI,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC;AAC1E;AACA,eAAe,iBAAiB,CAAC,aAAa,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE;AACjF,IAAI,IAAI,qBAAqB,CAAC,aAAa,CAAC,KAAK,MAAM,CAAC,QAAQ,EAAE;AAClE,QAAQ,OAAO,aAAa;AAC5B,IAAI;AACJ,IAAI,MAAM,YAAY,GAAG,MAAM,gBAAgB,CAAC,aAAa,CAAC;AAC9D,IAAI,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,kBAAkB,CAAC,YAAY,CAAC;AAC9D,IAAI,MAAM,aAAa,GAAGA,mBAAiB,CAAC,MAAM,CAAC;AACnD,IAAI,MAAM,eAAe,GAAG,aAAa,CAAC,aAAa,CAAC,QAAQ,CAAC;AACjE,IAAI,eAAe,CAAC,KAAK,GAAG,KAAK;AACjC,IAAI,eAAe,CAAC,MAAM,GAAG,MAAM;AACnC,IAAI,MAAM,aAAa,GAAG,eAAe,CAAC,UAAU,CAAC,IAAI,CAAC;AAC1D,IAAI,IAAI,CAAC,aAAa,EAAE;AACxB,QAAQ,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC;AAC7E,IAAI;AACJ,IAAI,IAAI,MAAM,CAAC,MAAM,KAAK,MAAM,EAAE;AAClC,QAAQ,aAAa,CAAC,SAAS,GAAG,sBAAsB,CAAC,eAAe,EAAE,aAAa,CAAC;AACxF,QAAQ,aAAa,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC;AACnD,IAAI;AACJ,IAAI,aAAa,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC;AAC9D,IAAI,OAAO,qBAAqB,CAAC,eAAe,EAAE,MAAM,EAAE,iBAAiB,CAAC;AAC5E;AACA,SAAS,iBAAiB,CAAC,OAAO,EAAE,SAAS,EAAE;AAC/C,IAAI,aAAa,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,SAAS,CAAC,2CAA2C,CAAC,CAAC;AAC3F;AACA,SAAS,kBAAkB,CAAC,MAAM,EAAE;AACpC,IAAI,OAAO,MAAM,KAAK,MAAM,GAAG,KAAK,GAAG,MAAM;AAC7C;AACA,MAAM,+BAA+B,GAAG,GAAG;AAC3C,SAAS,+BAA+B,CAAC,KAAK,EAAE;AAChD,IAAI,IAAI,MAAM,GAAG,EAAE;AACnB,IAAI,IAAI,kBAAkB,GAAG,KAAK;AAClC,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;AAC9B,QAAQ,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;AACvC,QAAQ,MAAM,MAAM,GAAG,IAAI,IAAI,EAAE,IAAI,IAAI,KAAK,GAAG,IAAI,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC;AAC7E,QAAQ,IAAI,MAAM,EAAE;AACpB,YAAY,IAAI,CAAC,kBAAkB;AACnC,gBAAgB,MAAM,IAAI,GAAG;AAC7B,YAAY,kBAAkB,GAAG,IAAI;AACrC,YAAY;AACZ,QAAQ;AACR,QAAQ,MAAM,IAAI,IAAI;AACtB,QAAQ,kBAAkB,GAAG,KAAK;AAClC,IAAI;AACJ,IAAI,OAAO,MAAM;AACjB;AACA,SAAS,oBAAoB,CAAC,KAAK,EAAE;AACrC,IAAI,MAAM,qBAAqB,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC;AAC/D,IAAI,MAAM,SAAS,GAAG,+BAA+B,CAAC,qBAAqB;AAC3E,SAAS,OAAO,CAAC,QAAQ,EAAE,GAAG;AAC9B,SAAS,OAAO,CAAC,YAAY,EAAE,EAAE;AACjC,SAAS,OAAO,CAAC,MAAM,EAAE,GAAG;AAC5B,SAAS,IAAI;AACb,SAAS,KAAK,CAAC,CAAC,EAAE,+BAA+B;AACjD,SAAS,IAAI,EAAE;AACf,IAAI,OAAO,SAAS,IAAI,cAAc;AACtC;AACA,SAAS,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE;AAC3C,IAAI,MAAM,QAAQ,GAAG,cAAc;AACnC,IAAI,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,IAAI,QAAQ,CAAC,CAAC,IAAI,EAAE,IAAI,QAAQ;AACnE,IAAI,MAAM,GAAG,GAAG,kBAAkB,CAAC,MAAM,CAAC,MAAM,CAAC;AACjD,IAAI,MAAM,oBAAoB,GAAG,OAAO,CAAC,OAAO,CAAC,sBAAsB,EAAE,EAAE,CAAC;AAC5E,IAAI,MAAM,QAAQ,GAAG,oBAAoB,CAAC,oBAAoB,CAAC;AAC/D,IAAI,OAAO,CAAC,EAAE,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AAC/B;AACA,eAAe,mBAAmB,CAAC,OAAO,EAAE,QAAQ,EAAE,gBAAgB,GAAG,IAAI,EAAE;AAC/E,IAAI,MAAM,MAAM,GAAG,YAAY;AAC/B,QAAQ,MAAM,YAAY,GAAG,mBAAmB,CAAC,OAAO,CAAC,MAAM,CAAC;AAChE,QAAQ,MAAM,YAAY,GAAG,uBAAuB,CAAC,OAAO,CAAC,MAAM,CAAC;AACpE,QAAQ,IAAI;AACZ,YAAY,OAAO,CAAC,MAAM,CAAC,mBAAmB,EAAE;AAChD,YAAY,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,GAAG,mBAAmB,CAAC,OAAO,EAAE,QAAQ,CAAC,UAAU,CAAC;AAC9F,YAAY,uBAAuB,CAAC,OAAO,EAAE,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;AACzE,YAAY,MAAM,YAAY,GAAG,MAAM,IAAI,QAAQ,CAAC,MAAM,CAAC,MAAM,KAAK,MAAM,GAAG,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM;AAC7G,YAAY,MAAM,aAAa,GAAG,YAAY,KAAK,KAAK,GAAG,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAC,OAAO;AAC9F,YAAY,IAAI,OAAO,GAAG,MAAM,wBAAwB,CAAC,OAAO,EAAE,YAAY,mBAAmB,CAAC,OAAO,EAAE,QAAQ,CAAC,UAAU,EAAE,YAAY,0BAA0B,CAAC,OAAO,EAAE,QAAQ,CAAC,gBAAgB,EAAE,YAAY,qBAAqB,CAAC,OAAO,CAAC,MAAM,EAAE,YAAY,EAAE,aAAa,EAAE,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;AACzT,YAAY,IAAI,MAAM,KAAK,eAAe,CAAC,YAAY,CAAC,IAAI,QAAQ,CAAC,MAAM,CAAC,MAAM,KAAK,MAAM,CAAC,EAAE;AAChG,gBAAgB,OAAO,GAAG,MAAM,wBAAwB,CAAC,OAAO,EAAE,YAAY,EAAE,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,eAAe,EAAEA,mBAAiB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AACpK,YAAY;AACZ,YAAY,IAAI,gBAAgB,EAAE;AAClC,gBAAgB,qBAAqB,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,EAAE,mBAAmB,CAAC;AACpF,YAAY;AACZ,YAAY,OAAO,OAAO;AAC1B,QAAQ;AACR,gBAAgB;AAChB,YAAY,uBAAuB,CAAC,OAAO,CAAC,MAAM,EAAE,YAAY,CAAC;AACjE,YAAY,mBAAmB,CAAC,OAAO,CAAC,MAAM,EAAE,YAAY,CAAC;AAC7D,YAAY,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC;AACzC,QAAQ;AACR,IAAI,CAAC;AACL,IAAI,OAAO,OAAO,CAAC;AACnB,UAAU,OAAO,CAAC,6BAA6B,CAAC,MAAM;AACtD,UAAU,MAAM,EAAE;AAClB;AACO,eAAe,iBAAiB,CAAC,OAAO,EAAE,OAAO,EAAE;AAC1D,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE;AAClC,QAAQ,iBAAiB,CAAC,OAAO,CAAC,OAAO,EAAE,mBAAmB,CAAC;AAC/D,QAAQ,MAAM,IAAI,mBAAmB,CAAC,mBAAmB,CAAC;AAC1D,IAAI;AACJ,IAAI,MAAM,QAAQ,GAAG,oBAAoB,CAAC,OAAO,EAAE,OAAO,CAAC;AAC3D,IAAI,OAAO,mBAAmB,CAAC,OAAO,EAAE,QAAQ,CAAC;AACjD;AACO,eAAe,eAAe,CAAC,OAAO,EAAE,OAAO,EAAE;AACxD,IAAI,IAAI,EAAE;AACV,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE;AAClC,QAAQ,iBAAiB,CAAC,OAAO,CAAC,OAAO,EAAE,iBAAiB,CAAC;AAC7D,QAAQ,MAAM,IAAI,mBAAmB,CAAC,iBAAiB,CAAC;AACxD,IAAI;AACJ,IAAI,MAAM,eAAe,GAAG,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,MAAM,GAAG,OAAO,GAAG,EAAE;AACjF,IAAI,MAAM,QAAQ,GAAG,oBAAoB,CAAC,OAAO,EAAE,eAAe,CAAC;AACnE,IAAI,MAAM,UAAU,GAAG,MAAM,mBAAmB,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC;AAC1E,IAAI,MAAM,YAAY,GAAG,MAAM,iBAAiB,CAAC,UAAU,EAAE,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,eAAe,EAAE,OAAO,CAAC,MAAM,CAAC;AAC9H,IAAI,IAAI,KAAK;AACb,IAAI,IAAI;AACR,QAAQ,KAAK,GAAG,cAAc,CAAC,YAAY,CAAC;AAC5C,IAAI;AACJ,IAAI,OAAO,KAAK,EAAE;AAClB,QAAQ,MAAM,IAAI,WAAW,CAAC,qDAAqD,EAAE,KAAK,CAAC;AAC3F,IAAI;AACJ,IAAI,MAAM,QAAQ,GAAG,eAAe,CAAC,CAAC,EAAE,GAAG,eAAe,CAAC,QAAQ,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,uBAAuB,EAAE,QAAQ,CAAC,MAAM,CAAC;AAC/J,IAAI,OAAO,IAAI,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;AAC1E;AACO,eAAe,aAAa,CAAC,OAAO,EAAE,OAAO,EAAE;AACtD,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE;AAClC,QAAQ,iBAAiB,CAAC,OAAO,CAAC,OAAO,EAAE,eAAe,CAAC;AAC3D,QAAQ;AACR,IAAI;AACJ,IAAI,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;AAClF,QAAQ,MAAM,IAAI,SAAS,CAAC,4EAA4E,CAAC;AACzG,IAAI;AACJ,IAAI,MAAM,IAAI,GAAG,MAAM,eAAe,CAAC,OAAO,EAAE,OAAO,CAAC;AACxD,IAAI,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC;AACtC;AACA,SAAS,mBAAmB,CAAC,OAAO,EAAE,IAAI,EAAE;AAC5C,IAAI,IAAI,EAAE;AACV,IAAI,MAAM,aAAa,GAAGA,mBAAiB,CAAC,OAAO,CAAC,MAAM,CAAC;AAC3D,IAAI,MAAM,SAAS,GAAG,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC;AAC/C,IAAI,MAAM,IAAI,GAAG,aAAa,CAAC,aAAa,CAAC,GAAG,CAAC;AACjD,IAAI,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,IAAI;AAC7B,IAAI,IAAI,CAAC,IAAI,GAAG,SAAS;AACzB,IAAI,MAAM,IAAI,GAAG,CAAC,EAAE,GAAG,aAAa,CAAC,IAAI,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,aAAa,CAAC,eAAe;AACzG,IAAI,IAAI,CAAC,IAAI;AACb,QAAQ,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC;AAC7E,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;AAC1B,IAAI,IAAI;AACR,QAAQ,IAAI,CAAC,KAAK,EAAE;AACpB,IAAI;AACJ,YAAY;AACZ,QAAQ,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;AAC9B,QAAQ,uBAAuB,CAAC,SAAS,CAAC;AAC1C,IAAI;AACJ;AACA,SAAS,uBAAuB,CAAC,SAAS,EAAE;AAC5C,IAAI,IAAI,EAAE,EAAE,EAAE;AACd,IAAI,IAAI,OAAO,UAAU,CAAC,UAAU,KAAK,UAAU,EAAE;AACrD,QAAQ;AACR,IAAI;AACJ,IAAI,MAAM,SAAS,GAAG,UAAU,CAAC,UAAU,CAAC,MAAM;AAClD,QAAQ,mBAAmB,CAAC,SAAS,CAAC;AACtC,IAAI,CAAC,EAAE,mCAAmC,CAAC;AAC3C,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,SAAS,EAAE,KAAK,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,MAAM,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;AAClF;AACA,SAAS,mBAAmB,CAAC,SAAS,EAAE;AACxC,IAAI,IAAI;AACR,QAAQ,IAAI,OAAO,GAAG,CAAC,eAAe,KAAK,UAAU,EAAE;AACvD,YAAY,GAAG,CAAC,eAAe,CAAC,SAAS,CAAC;AAC1C,QAAQ;AACR,IAAI;AACJ,IAAI,MAAM;AACV,IAAI;AACJ;AACO,eAAe,UAAU,CAAC,OAAO,EAAE;AAC1C,IAAI,MAAM,8BAA8B,CAAC,OAAO,EAAE;AAClD,QAAQ,SAAS,EAAE,YAAY;AAC/B,QAAQ,aAAa,EAAE;AACvB,YAAY,UAAU,EAAE,OAAO;AAC/B,YAAY,UAAU,EAAE,IAAI;AAC5B,YAAY,gBAAgB,EAAE,KAAK;AACnC,YAAY,UAAU,EAAE,OAAO,CAAC,OAAO,CAAC,gBAAgB;AACxD,YAAY,QAAQ,EAAE,KAAK;AAC3B,SAAS;AACT,QAAQ,UAAU,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC;AAC1E,QAAQ,mBAAmB,EAAE,MAAM,OAAO,CAAC,cAAc,EAAE;AAC3D,QAAQ,sBAAsB,EAAE,MAAM;AACtC,YAAY,OAAO,CAAC,uBAAuB,EAAE;AAC7C,QAAQ,CAAC;AACT,QAAQ,uBAAuB,EAAE,CAAC,OAAO,KAAK,OAAO,CAAC,kBAAkB,CAAC,OAAO,CAAC;AACjF,KAAK,CAAC;AACN;AACO,eAAe,gBAAgB,CAAC,OAAO,EAAE;AAChD,IAAI,MAAM,8BAA8B,CAAC,OAAO,EAAE;AAClD,QAAQ,SAAS,EAAE,kBAAkB;AACrC,QAAQ,aAAa,EAAE;AACvB,YAAY,UAAU,EAAE,OAAO;AAC/B,YAAY,UAAU,EAAE,KAAK;AAC7B,YAAY,gBAAgB,EAAE,IAAI;AAClC,YAAY,UAAU,EAAE,OAAO,CAAC,OAAO,CAAC,gBAAgB;AACxD,YAAY,QAAQ,EAAE,KAAK;AAC3B,SAAS;AACT,QAAQ,UAAU,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,MAAM,CAAC,kBAAkB,CAAC;AAChF,QAAQ,mBAAmB,EAAE,MAAM,OAAO,CAAC,QAAQ,EAAE;AACrD,QAAQ,sBAAsB,EAAE,MAAM;AACtC,YAAY,OAAO,CAAC,6BAA6B,EAAE;AACnD,QAAQ,CAAC;AACT,QAAQ,uBAAuB,EAAE,CAAC,OAAO,KAAK,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC;AAC3E,KAAK,CAAC;AACN;;AC7qBO,eAAe,gBAAgB,CAAC,MAAM,EAAE;AAC/C,IAAI,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,EAAE;AACrC,IAAI,IAAI,CAAC,MAAM;AACf,QAAQ;AACR,IAAI,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,YAAY,CAAC;AACjD,QAAQ;AACR,IAAI,MAAM,CAAC,iCAAiC,EAAE;AAC9C,IAAI,MAAM,QAAQ,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC;AAC3D,IAAI,IAAI,CAAC,QAAQ;AACjB,QAAQ;AACR,IAAI,MAAM,gBAAgB,CAAC,MAAM,CAAC,wBAAwB,EAAE,EAAE,YAAY,EAAE,OAAO,eAAe,EAAE,cAAc,KAAK;AACvH,QAAQ,MAAMG,UAAc,CAAC,MAAM,CAAC,sBAAsB,CAAC,cAAc,CAAC,CAAC;AAC3E,QAAQ,MAAM,CAAC,YAAY,EAAE;AAC7B,QAAQ,MAAM,CAAC,cAAc,EAAE;AAC/B,QAAQ,MAAM,CAAC,oBAAoB,EAAE;AACrC,QAAQ,MAAM,CAAC,gBAAgB,CAAC,eAAe,CAAC;AAChD,QAAQ,IAAI,MAAM,CAAC,cAAc,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE;AAChD,YAAY,MAAM,CAAC,sBAAsB,CAAC,eAAe,CAAC;AAC1D,QAAQ;AACR,QAAQ,MAAM,CAAC,gBAAgB,CAAC,eAAe,CAAC;AAChD,IAAI,CAAC,CAAC;AACN;AACO,eAAe,sBAAsB,CAAC,MAAM,EAAE;AACrD,IAAI,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,EAAE;AACrC,IAAI,IAAI,CAAC,MAAM;AACf,QAAQ;AACR,IAAI,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,kBAAkB,CAAC;AACvD,QAAQ;AACR,IAAI,MAAM,CAAC,iCAAiC,EAAE;AAC9C,IAAI,MAAM,cAAc,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC;AACvE,IAAI,IAAI,CAAC,cAAc;AACvB,QAAQ;AACR,IAAI,MAAM,gBAAgB,CAAC,MAAM,CAAC,wBAAwB,EAAE,EAAE,kBAAkB,EAAE,OAAO,eAAe,EAAE,cAAc,KAAK;AAC7H,QAAQ,MAAMC,gBAAoB,CAAC,MAAM,CAAC,4BAA4B,CAAC,cAAc,CAAC,CAAC;AACvF,QAAQ,MAAM,CAAC,YAAY,EAAE;AAC7B,QAAQ,MAAM,CAAC,cAAc,EAAE;AAC/B,QAAQ,MAAM,CAAC,oBAAoB,EAAE;AACrC,QAAQ,MAAM,CAAC,sBAAsB,CAAC,eAAe,CAAC;AACtD,QAAQ,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,GAAG,CAAC;AACxC,YAAY,MAAM,CAAC,gBAAgB,CAAC,eAAe,CAAC;AACpD,QAAQ,MAAM,CAAC,gBAAgB,CAAC,eAAe,CAAC;AAChD,IAAI,CAAC,CAAC;AACN;AACO,eAAe,mBAAmB,CAAC,MAAM,EAAE,OAAO,EAAE;AAC3D,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE;AAC3B,QAAQ;AACR,IAAI,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,eAAe,CAAC;AACpD,QAAQ;AACR,IAAI,MAAM,CAAC,iCAAiC,EAAE;AAC9C,IAAI,MAAM,yBAAyB,CAAC,MAAM,CAAC,wBAAwB,EAAE,EAAE,eAAe,EAAE,YAAY;AACpG,QAAQ,MAAMC,aAAiB,CAAC,MAAM,CAAC,yBAAyB,EAAE,EAAE,OAAO,CAAC;AAC5E,IAAI,CAAC,CAAC;AACN;AACO,eAAe,uBAAuB,CAAC,MAAM,EAAE,OAAO,EAAE;AAC/D,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,EAAE;AAC7B,QAAQ,MAAM,IAAI,mBAAmB,CAAC,mBAAmB,EAAE,2BAA2B,CAAC;AACvF,IAAI;AACJ,IAAI,MAAM,CAAC,sBAAsB,CAAC,mBAAmB,EAAE,OAAO,CAAC;AAC/D,IAAI,MAAM,CAAC,iCAAiC,EAAE;AAC9C,IAAI,OAAO,yBAAyB,CAAC,MAAM,CAAC,wBAAwB,EAAE,EAAE,mBAAmB,EAAE,MAAMC,iBAAqB,CAAC,MAAM,CAAC,yBAAyB,EAAE,EAAE,OAAO,CAAC,CAAC;AACtK;AACO,eAAe,qBAAqB,CAAC,MAAM,EAAE,OAAO,EAAE;AAC7D,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,EAAE;AAC7B,QAAQ,MAAM,IAAI,mBAAmB,CAAC,iBAAiB,EAAE,2BAA2B,CAAC;AACrF,IAAI;AACJ,IAAI,MAAM,CAAC,sBAAsB,CAAC,iBAAiB,EAAE,OAAO,CAAC;AAC7D,IAAI,MAAM,CAAC,iCAAiC,EAAE;AAC9C,IAAI,OAAO,yBAAyB,CAAC,MAAM,CAAC,wBAAwB,EAAE,EAAE,iBAAiB,EAAE,MAAMC,eAAmB,CAAC,MAAM,CAAC,yBAAyB,EAAE,EAAE,OAAO,CAAC,CAAC;AAClK;;ACxEO,SAAS,WAAW,CAAC,OAAO,EAAE;AACrC,IAAI,IAAI,CAAC,OAAO;AAChB,QAAQ;AACR,IAAI,KAAK,OAAO,CAAC,WAAW;AAC5B;;ACHO,SAAS,oBAAoB,CAAC,IAAI,EAAE;AAC3C,IAAI,OAAO,IAAI;AACf;AACO,MAAM,aAAa,CAAC;AAC3B,IAAI,WAAW,GAAG;AAClB,QAAQ,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,aAAa,EAAE;AACnD,YAAY,UAAU,EAAE,IAAI;AAC5B,YAAY,YAAY,EAAE,IAAI;AAC9B,YAAY,QAAQ,EAAE,IAAI;AAC1B,YAAY,KAAK,EAAE;AACnB,SAAS,CAAC;AACV,IAAI;AACJ,IAAI,OAAO,CAAC,SAAS,EAAE,QAAQ,EAAE,aAAa,EAAE;AAChD,QAAQ,IAAI,EAAE;AACd,QAAQ,IAAI,CAAC,SAAS;AACtB,YAAY,OAAO,QAAQ;AAC3B,QAAQ,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC;AAChE,QAAQ,MAAM,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,YAAY,CAAC;AAClE,QAAQ,IAAI,cAAc,GAAG,CAAC,IAAI,eAAe,GAAG,CAAC,EAAE;AACvD,YAAY,IAAI,CAAC,WAAW,GAAG,wBAAwB,CAAC,SAAS,EAAE,QAAQ,EAAE,aAAa,CAAC;AAC3F,YAAY,OAAO,IAAI,CAAC,WAAW;AACnC,QAAQ;AACR,QAAQ,OAAO,CAAC,EAAE,GAAG,IAAI,CAAC,WAAW,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,QAAQ;AAChF,IAAI;AACJ,IAAI,IAAI,GAAG;AACX,QAAQ,OAAO,IAAI,CAAC,WAAW;AAC/B,IAAI;AACJ,IAAI,KAAK,GAAG;AACZ,QAAQ,IAAI,CAAC,WAAW,GAAG,IAAI;AAC/B,IAAI;AACJ;AACA,MAAM,gBAAgB,GAAG,GAAG;AAC5B,SAAS,sBAAsB,CAAC,KAAK,EAAE;AACvC,IAAI,OAAO,MAAM,CAAC,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,MAAM,GAAG,KAAK,GAAG,EAAE;AACjE,SAAS,IAAI;AACb,SAAS,WAAW,EAAE;AACtB;AACA,SAAS,0BAA0B,CAAC,SAAS,EAAE;AAC/C,IAAI,IAAI,EAAE,EAAE,EAAE;AACd,IAAI,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK;AACjC,IAAI,IAAI,gBAAgB,GAAG,EAAE;AAC7B,IAAI,IAAI,iBAAiB,GAAG,EAAE;AAC9B,IAAI,IAAI,iBAAiB,GAAG,EAAE;AAC9B,IAAI,MAAM,IAAI,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,SAAS,CAAC,aAAa,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,MAAM,GAAG,EAAE,CAAC,WAAW,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,IAAI,OAAO,MAAM,KAAK,WAAW,GAAG,IAAI,GAAG,MAAM,CAAC;AAC3L,IAAI,IAAI,QAAQ,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,UAAU,EAAE;AACnG,QAAQ,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC;AACzD,QAAQ,gBAAgB,GAAG,QAAQ,CAAC,QAAQ;AAC5C,QAAQ,iBAAiB,GAAG,QAAQ,CAAC,SAAS;AAC9C,QAAQ,iBAAiB,GAAG,QAAQ,CAAC,SAAS;AAC9C,IAAI;AACJ,IAAI,MAAM,CAAC,GAAG;AACd,QAAQ,sBAAsB,CAAC,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC;AAC5F,QAAQ,sBAAsB,CAAC,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC;AAC7F,QAAQ,sBAAsB,CAAC,gBAAgB,CAAC;AAChD,QAAQ,sBAAsB,CAAC,iBAAiB,CAAC;AACjD,KAAK;AACL,IAAI,MAAM,CAAC,GAAG;AACd,QAAQ,sBAAsB,CAAC,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC;AAC5F,QAAQ,sBAAsB,CAAC,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC;AAC7F,QAAQ,sBAAsB,CAAC,gBAAgB,CAAC;AAChD,QAAQ,sBAAsB,CAAC,iBAAiB,CAAC;AACjD,KAAK;AACL,IAAI,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE;AACtC;AACA,SAAS,wBAAwB,CAAC,KAAK,EAAE;AACzC,IAAI,OAAO,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,SAAS;AAClD;AACO,SAAS,oBAAoB,CAAC,aAAa,EAAE;AACpD,IAAI,MAAM,GAAG,GAAG,aAAa,KAAK,IAAI,IAAI,aAAa,KAAK,MAAM,GAAG,aAAa,IAAI,OAAO,QAAQ,KAAK,WAAW,GAAG,IAAI,GAAG,QAAQ,CAAC;AACxI,IAAI,IAAI,EAAE,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,MAAM,GAAG,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC;AAC7D,QAAQ,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;AACtC,IAAI,MAAM,KAAK,GAAG,GAAG,CAAC,aAAa,CAAC,KAAK,CAAC;AAC1C,IAAI,KAAK,CAAC,KAAK,CAAC,QAAQ,GAAG,UAAU;AACrC,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,GAAG,SAAS;AAChC,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,GAAG,SAAS;AAC/B,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG,OAAO;AAC/B,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,OAAO;AAChC,IAAI,KAAK,CAAC,KAAK,CAAC,QAAQ,GAAG,QAAQ;AACnC,IAAI,KAAK,CAAC,KAAK,CAAC,UAAU,GAAG,QAAQ;AACrC,IAAI,KAAK,CAAC,KAAK,CAAC,aAAa,GAAG,MAAM;AACtC,IAAI,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;AAC/B,IAAI,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC;AACpE,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,YAAY,GAAG,KAAK,CAAC,YAAY,CAAC;AACvE,IAAI,KAAK,CAAC,MAAM,EAAE;AAClB,IAAI,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE;AAC5B;AACA,SAAS,sBAAsB,CAAC,aAAa,EAAE;AAC/C,IAAI,OAAO;AACX,QAAQ,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,aAAa,KAAK,IAAI,IAAI,aAAa,KAAK,MAAM,GAAG,MAAM,GAAG,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAC1H,QAAQ,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,aAAa,KAAK,IAAI,IAAI,aAAa,KAAK,MAAM,GAAG,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAC5H,KAAK;AACL;AACO,SAAS,wBAAwB,CAAC,SAAS,EAAE,QAAQ,EAAE,aAAa,EAAE;AAC7E,IAAI,IAAI,CAAC,SAAS;AAClB,QAAQ,OAAO,QAAQ;AACvB,IAAI,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,WAAW,IAAI,CAAC,CAAC;AAC9D,IAAI,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,YAAY,IAAI,CAAC,CAAC;AAChE,IAAI,IAAI,WAAW,IAAI,CAAC,IAAI,YAAY,IAAI,CAAC;AAC7C,QAAQ,OAAO,QAAQ;AACvB,IAAI,MAAM,QAAQ,GAAG,0BAA0B,CAAC,SAAS,CAAC;AAC1D,IAAI,IAAI,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;AACzC,QAAQ,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE;AAC3D,IAAI;AACJ,IAAI,MAAM,SAAS,GAAG,sBAAsB,CAAC,aAAa,CAAC;AAC3D,IAAI,MAAM,cAAc,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,wBAAwB,CAAC;AACpE,IAAI,MAAM,cAAc,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,wBAAwB,CAAC;AACpE,IAAI,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,IAAI,CAAC,CAAC;AAC7D,IAAI,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,IAAI,CAAC,CAAC;AAC/D,IAAI,MAAM,sBAAsB,GAAG,cAAc,IAAI,WAAW,GAAG,WAAW,GAAG,gBAAgB;AACjG,IAAI,MAAM,oBAAoB,GAAG,cAAc,IAAI,YAAY,GAAG,YAAY,GAAG,gBAAgB;AACjG,IAAI,OAAO;AACX,QAAQ,KAAK,EAAE,WAAW,IAAI,oBAAoB,GAAG,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC;AACzE,QAAQ,MAAM,EAAE,YAAY,IAAI,sBAAsB,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC;AAC9E,KAAK;AACL;AACO,SAAS,2BAA2B,CAAC,YAAY,EAAE,aAAa,EAAE,QAAQ,EAAE,aAAa,EAAE;AAClG,IAAI,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,KAAK,IAAI,CAAC,CAAC;AACtD,IAAI,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,MAAM,IAAI,CAAC,CAAC;AACvD,IAAI,MAAM,SAAS,GAAG,sBAAsB,CAAC,aAAa,CAAC;AAC3D,IAAI,IAAI,aAAa,GAAG,KAAK;AAC7B,IAAI,IAAI,WAAW,GAAG,KAAK;AAC3B,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE;AACnC,QAAQ,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,IAAI,WAAW,GAAG,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;AACvF,QAAQ,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,IAAI,aAAa,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAC1F,QAAQ,MAAM,cAAc,GAAG,YAAY,GAAG,UAAU,GAAG,gBAAgB;AAC3E,QAAQ,MAAM,YAAY,GAAG,aAAa,GAAG,UAAU,GAAG,gBAAgB;AAC1E,QAAQ,IAAI,cAAc,KAAK,aAAa,IAAI,YAAY,KAAK,WAAW;AAC5E,YAAY;AACZ,QAAQ,aAAa,GAAG,cAAc;AACtC,QAAQ,WAAW,GAAG,YAAY;AAClC,IAAI;AACJ,IAAI,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,IAAI,WAAW,GAAG,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;AACnF,IAAI,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,IAAI,aAAa,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACtF,IAAI,OAAO;AACX,QAAQ,KAAK,EAAE,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,UAAU;AACnE,QAAQ,MAAM,EAAE,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,UAAU;AACnE,KAAK;AACL;AACO,SAAS,gBAAgB,CAAC,UAAU,EAAE,WAAW,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,aAAa,EAAE;AAClH,IAAI,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,KAAK,IAAI,kBAAkB,IAAI,CAAC,CAAC;AACpF,IAAI,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,MAAM,IAAI,mBAAmB,IAAI,CAAC,CAAC;AACvF,IAAI,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,GAAG,UAAU,EAAE,YAAY,GAAG,WAAW,EAAE,CAAC,CAAC;AACtF,IAAI,OAAO;AACX,QAAQ,WAAW;AACnB,QAAQ,YAAY;AACpB,QAAQ,UAAU,EAAE,QAAQ;AAC5B,QAAQ,SAAS,EAAE,CAAC;AACpB,QAAQ,QAAQ,EAAE,CAAC;AACnB,QAAQ,cAAc,EAAE,QAAQ;AAChC,KAAK;AACL;AACO,SAAS,kBAAkB,CAAC,UAAU,EAAE,WAAW,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,aAAa,EAAE,aAAa,EAAE;AACnI,IAAI,MAAM,SAAS,GAAG,aAAa,CAAC,KAAK,IAAI,kBAAkB;AAC/D,IAAI,MAAM,SAAS,GAAG,aAAa,CAAC,MAAM,IAAI,mBAAmB;AACjE,IAAI,MAAM,SAAS,GAAG,sBAAsB,CAAC,aAAa,CAAC;AAC3D,IAAI,IAAI,aAAa,GAAG,KAAK;AAC7B,IAAI,IAAI,WAAW,GAAG,KAAK;AAC3B,IAAI,IAAI,UAAU,GAAG,CAAC;AACtB,IAAI,IAAI,OAAO,GAAG,UAAU;AAC5B,IAAI,IAAI,OAAO,GAAG,WAAW;AAC7B,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE;AACnC,QAAQ,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,IAAI,WAAW,GAAG,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;AACvF,QAAQ,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,IAAI,aAAa,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAC1F,QAAQ,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,UAAU,GAAG,UAAU,EAAE,UAAU,GAAG,WAAW,CAAC,CAAC;AAC7F,QAAQ,OAAO,GAAG,UAAU,GAAG,UAAU;AACzC,QAAQ,OAAO,GAAG,WAAW,GAAG,UAAU;AAC1C,QAAQ,MAAM,iBAAiB,GAAG,OAAO,GAAG,UAAU,GAAG,gBAAgB;AACzE,QAAQ,MAAM,eAAe,GAAG,OAAO,GAAG,UAAU,GAAG,gBAAgB;AACvE,QAAQ,IAAI,iBAAiB,KAAK,aAAa,IAAI,eAAe,KAAK,WAAW;AAClF,YAAY;AACZ,QAAQ,aAAa,GAAG,iBAAiB;AACzC,QAAQ,WAAW,GAAG,eAAe;AACrC,IAAI;AACJ,IAAI,MAAM,UAAU,GAAG,2BAA2B,CAAC,OAAO,EAAE,OAAO,EAAE;AACrE,QAAQ,KAAK,EAAE,SAAS;AACxB,QAAQ,MAAM,EAAE,SAAS;AACzB,KAAK,EAAE,SAAS,CAAC;AACjB,IAAI,OAAO;AACX,QAAQ,WAAW,EAAE,UAAU,CAAC,KAAK;AACrC,QAAQ,YAAY,EAAE,UAAU,CAAC,MAAM;AACvC,QAAQ,UAAU,EAAE,UAAU;AAC9B,QAAQ,SAAS,EAAE,CAAC;AACpB,QAAQ,QAAQ,EAAE,CAAC;AACnB,QAAQ,cAAc,EAAE,UAAU;AAClC,KAAK;AACL;AACO,SAAS,mBAAmB,CAAC,UAAU,EAAE,WAAW,EAAE,aAAa,EAAE;AAC5E,IAAI,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;AAC7E,IAAI,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;AAChF,IAAI,OAAO;AACX,QAAQ,WAAW;AACnB,QAAQ,YAAY;AACpB,QAAQ,UAAU,EAAE,CAAC;AACrB,QAAQ,SAAS,EAAE,CAAC;AACpB,QAAQ,QAAQ,EAAE,CAAC;AACnB,QAAQ,cAAc,EAAE,CAAC;AACzB,KAAK;AACL;AACO,SAAS,qBAAqB,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,gBAAgB,EAAE;AAC/E,IAAI,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;AACpE,IAAI,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;AACtE,IAAI,MAAM,CAAC,aAAa,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC;AACxE,IAAI,WAAW,CAAC,gBAAgB,CAAC;AACjC;;AC3MA,MAAM,kBAAkB,GAAG,GAAG,GAAG,IAAI;AACrC,MAAM,aAAa,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;AACtE,MAAM,sCAAsC,GAAG,CAAC;AAChD,SAASC,uBAAqB,CAAC,KAAK,EAAE,MAAM,EAAE;AAC9C,IAAI,OAAO,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,MAAM,GAAG,CAAC;AACvF;AACA,SAAS,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE;AACrC,IAAI,IAAI,MAAM,GAAG,CAAC,IAAI,MAAM,GAAG,CAAC,GAAG,KAAK,CAAC,MAAM;AAC/C,QAAQ,OAAO,IAAI;AACnB,IAAI,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;AACnD;AACA,SAAS,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE;AACrC,IAAI,IAAI,MAAM,GAAG,CAAC,IAAI,MAAM,GAAG,CAAC,GAAG,KAAK,CAAC,MAAM;AAC/C,QAAQ,OAAO,IAAI;AACnB,IAAI,QAAQ,KAAK,CAAC,MAAM,CAAC,GAAG,SAAS;AACrC,SAAS,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAClF;AACA,SAAS,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE;AACrC,IAAI,IAAI,MAAM,GAAG,CAAC,IAAI,MAAM,GAAG,CAAC,GAAG,KAAK,CAAC,MAAM;AAC/C,QAAQ,OAAO,IAAI;AACnB,IAAI,OAAO,KAAK,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;AACnD;AACA,SAAS,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE;AACrC,IAAI,IAAI,MAAM,GAAG,CAAC,IAAI,MAAM,GAAG,CAAC,GAAG,KAAK,CAAC,MAAM;AAC/C,QAAQ,OAAO,IAAI;AACnB,IAAI,OAAO,KAAK,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;AAC/E;AACA,SAAS,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE;AAC5C,IAAI,IAAI,MAAM,GAAG,CAAC,IAAI,MAAM,GAAG,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM;AAC1D,QAAQ,OAAO,KAAK;AACpB,IAAI,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE;AAC1D,QAAQ,IAAI,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,KAAK,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC;AAC7D,YAAY,OAAO,KAAK;AACxB,IAAI;AACJ,IAAI,OAAO,IAAI;AACf;AACA,SAAS,iBAAiB,CAAC,KAAK,EAAE;AAClC,IAAI,IAAI,KAAK,CAAC,MAAM,GAAG,EAAE;AACzB,QAAQ,OAAO,IAAI;AACnB,IAAI,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,KAAK,KAAK,KAAK,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC;AACpE,QAAQ,OAAO,IAAI;AACnB,IAAI,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,EAAE,EAAE,MAAM,CAAC;AACxC,QAAQ,OAAO,IAAI;AACnB,IAAI,MAAM,KAAK,GAAG,YAAY,CAAC,KAAK,EAAE,EAAE,CAAC;AACzC,IAAI,MAAM,MAAM,GAAG,YAAY,CAAC,KAAK,EAAE,EAAE,CAAC;AAC1C,IAAI,OAAO,KAAK,KAAK,IAAI,IAAI,MAAM,KAAK,IAAI,IAAIA,uBAAqB,CAAC,KAAK,EAAE,MAAM;AACnF,UAAU,EAAE,KAAK,EAAE,MAAM;AACzB,UAAU,IAAI;AACd;AACA,SAAS,kBAAkB,CAAC,MAAM,EAAE;AACpC,IAAI,QAAQ,CAAC,MAAM,IAAI,IAAI,IAAI,MAAM,IAAI,IAAI;AAC7C,SAAS,MAAM,IAAI,IAAI,IAAI,MAAM,IAAI,IAAI,CAAC;AAC1C,SAAS,MAAM,IAAI,IAAI,IAAI,MAAM,IAAI,IAAI,CAAC;AAC1C,SAAS,MAAM,IAAI,IAAI,IAAI,MAAM,IAAI,IAAI,CAAC;AAC1C;AACA,SAAS,sBAAsB,CAAC,MAAM,EAAE;AACxC,IAAI,OAAO,MAAM,KAAK,IAAI,KAAK,MAAM,IAAI,IAAI,IAAI,MAAM,IAAI,IAAI,CAAC;AAChE;AACA,SAAS,kBAAkB,CAAC,KAAK,EAAE;AACnC,IAAI,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI;AAClE,QAAQ,OAAO,IAAI;AACnB,IAAI,IAAI,MAAM,GAAG,CAAC;AAClB,IAAI,OAAO,MAAM,GAAG,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE;AACtC,QAAQ,OAAO,MAAM,GAAG,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,IAAI;AAC9D,YAAY,MAAM,IAAI,CAAC;AACvB,QAAQ,IAAI,MAAM,IAAI,KAAK,CAAC,MAAM;AAClC,YAAY,OAAO,IAAI;AACvB,QAAQ,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;AACpC,QAAQ,MAAM,IAAI,CAAC;AACnB,QAAQ,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,IAAI;AAC9C,YAAY,OAAO,IAAI;AACvB,QAAQ,IAAI,sBAAsB,CAAC,MAAM,CAAC;AAC1C,YAAY;AACZ,QAAQ,MAAM,aAAa,GAAG,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC;AACzD,QAAQ,IAAI,aAAa,KAAK,IAAI,IAAI,aAAa,GAAG,CAAC;AACvD,YAAY,OAAO,IAAI;AACvB,QAAQ,MAAM,YAAY,GAAG,MAAM,GAAG,CAAC;AACvC,QAAQ,MAAM,UAAU,GAAG,MAAM,GAAG,aAAa;AACjD,QAAQ,IAAI,UAAU,GAAG,KAAK,CAAC,MAAM;AACrC,YAAY,OAAO,IAAI;AACvB,QAAQ,IAAI,kBAAkB,CAAC,MAAM,CAAC,EAAE;AACxC,YAAY,IAAI,aAAa,GAAG,sCAAsC;AACtE,gBAAgB,YAAY,GAAG,CAAC,GAAG,UAAU,EAAE;AAC/C,gBAAgB,OAAO,IAAI;AAC3B,YAAY;AACZ,YAAY,MAAM,MAAM,GAAG,YAAY,CAAC,KAAK,EAAE,YAAY,GAAG,CAAC,CAAC;AAChE,YAAY,MAAM,KAAK,GAAG,YAAY,CAAC,KAAK,EAAE,YAAY,GAAG,CAAC,CAAC;AAC/D,YAAY,OAAO,KAAK,KAAK,IAAI,IAAI,MAAM,KAAK,IAAI,IAAIA,uBAAqB,CAAC,KAAK,EAAE,MAAM;AAC3F,kBAAkB,EAAE,KAAK,EAAE,MAAM;AACjC,kBAAkB,IAAI;AACtB,QAAQ;AACR,QAAQ,MAAM,GAAG,UAAU;AAC3B,IAAI;AACJ,IAAI,OAAO,IAAI;AACf;AACA,SAAS,kBAAkB,CAAC,KAAK,EAAE;AACnC,IAAI,IAAI,KAAK,CAAC,MAAM,GAAG,EAAE,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC,EAAE,MAAM,CAAC,EAAE;AACjG,QAAQ,OAAO,IAAI;AACnB,IAAI;AACJ,IAAI,IAAI,YAAY,CAAC,KAAK,EAAE,EAAE,EAAE,MAAM,CAAC,IAAI,KAAK,CAAC,MAAM,IAAI,EAAE,EAAE;AAC/D,QAAQ,MAAM,QAAQ,GAAG,YAAY,CAAC,KAAK,EAAE,EAAE,CAAC;AAChD,QAAQ,MAAM,SAAS,GAAG,YAAY,CAAC,KAAK,EAAE,EAAE,CAAC;AACjD,QAAQ,IAAI,QAAQ,KAAK,IAAI,IAAI,SAAS,KAAK,IAAI;AACnD,YAAY,OAAO,IAAI;AACvB,QAAQ,OAAO,EAAE,KAAK,EAAE,QAAQ,GAAG,CAAC,EAAE,MAAM,EAAE,SAAS,GAAG,CAAC,EAAE;AAC7D,IAAI;AACJ,IAAI,IAAI,YAAY,CAAC,KAAK,EAAE,EAAE,EAAE,MAAM,CAAC,IAAI,KAAK,CAAC,MAAM,IAAI,EAAE,EAAE;AAC/D,QAAQ,IAAI,KAAK,CAAC,EAAE,CAAC,KAAK,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC,KAAK,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC,KAAK,IAAI;AAC1E,YAAY,OAAO,IAAI;AACvB,QAAQ,MAAM,QAAQ,GAAG,YAAY,CAAC,KAAK,EAAE,EAAE,CAAC;AAChD,QAAQ,MAAM,SAAS,GAAG,YAAY,CAAC,KAAK,EAAE,EAAE,CAAC;AACjD,QAAQ,IAAI,QAAQ,KAAK,IAAI,IAAI,SAAS,KAAK,IAAI;AACnD,YAAY,OAAO,IAAI;AACvB,QAAQ,OAAO,EAAE,KAAK,EAAE,QAAQ,GAAG,MAAM,EAAE,MAAM,EAAE,SAAS,GAAG,MAAM,EAAE;AACvE,IAAI;AACJ,IAAI,IAAI,YAAY,CAAC,KAAK,EAAE,EAAE,EAAE,MAAM,CAAC,IAAI,KAAK,CAAC,MAAM,IAAI,EAAE,IAAI,KAAK,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE;AACrF,QAAQ,MAAM,KAAK,GAAG,KAAK,CAAC,EAAE,CAAC;AAC/B,QAAQ,MAAM,KAAK,GAAG,KAAK,CAAC,EAAE,CAAC;AAC/B,QAAQ,MAAM,KAAK,GAAG,KAAK,CAAC,EAAE,CAAC;AAC/B,QAAQ,MAAM,KAAK,GAAG,KAAK,CAAC,EAAE,CAAC;AAC/B,QAAQ,OAAO;AACf,YAAY,KAAK,EAAE,CAAC,GAAG,KAAK,IAAI,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,CAAC;AACpD,YAAY,MAAM,EAAE,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,KAAK,EAAE,CAAC;AAC5E,SAAS;AACT,IAAI;AACJ,IAAI,OAAO,IAAI;AACf;AACO,SAAS,yBAAyB,CAAC,KAAK,EAAE;AACjD,IAAI,IAAI,EAAE,EAAE,EAAE;AACd,IAAI,OAAO,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,iBAAiB,CAAC,KAAK,CAAC,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,kBAAkB,CAAC,KAAK,CAAC,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,kBAAkB,CAAC,KAAK,CAAC;AACvK;AACO,SAAS,0BAA0B,CAAC,OAAO,EAAE;AACpD,IAAI,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC;AAC3C,IAAI,IAAI,UAAU,GAAG,CAAC;AACtB,QAAQ,OAAO,IAAI;AACnB,IAAI,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,WAAW,EAAE;AAC7D,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC;AACnC,QAAQ,OAAO,IAAI;AACnB,IAAI,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;AACpE,IAAI,IAAI,CAAC,MAAM;AACf,QAAQ,OAAO,CAAC;AAChB,IAAI,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC;AAC5E,IAAI,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,OAAO,CAAC;AACrE;AACA,SAAS,kBAAkB,CAAC,OAAO,EAAE,QAAQ,EAAE;AAC/C,IAAI,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC;AAC3C,IAAI,IAAI,UAAU,GAAG,CAAC;AACtB,QAAQ,OAAO,IAAI;AACnB,IAAI,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,WAAW,EAAE;AAC7D,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC;AACnC,QAAQ,OAAO,IAAI;AACnB,IAAI,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,GAAG,CAAC;AACrD,IAAI,MAAM,MAAM,GAAG;AACnB,SAAS,KAAK,CAAC,UAAU,GAAG,CAAC,EAAE,UAAU,GAAG,CAAC,GAAG,aAAa;AAC7D,SAAS,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;AAC5B,IAAI,IAAI,CAAC,MAAM;AACf,QAAQ,OAAO,IAAI,UAAU,CAAC,CAAC,CAAC;AAChC,IAAI,MAAM,YAAY,GAAG,SAAS,CAAC,MAAM,CAAC;AAC1C,IAAI,IAAI,YAAY,KAAK,IAAI;AAC7B,QAAQ,OAAO,IAAI;AACnB,IAAI,MAAM,UAAU,GAAG,UAAU,CAAC,MAAM;AACxC,IAAI,IAAI,UAAU,IAAI,OAAO,UAAU,CAAC,IAAI,KAAK,UAAU,EAAE;AAC7D,QAAQ,OAAO,UAAU,CAAC,IAAI,CAAC,YAAY,EAAE,QAAQ,CAAC;AACtD,IAAI;AACJ,IAAI,IAAI,OAAO,UAAU,CAAC,IAAI,KAAK,UAAU,EAAE;AAC/C,QAAQ,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC;AACpD,QAAQ,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC;AACnD,QAAQ,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE;AAC/D,YAAY,KAAK,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC;AACnD,QAAQ;AACR,QAAQ,OAAO,KAAK;AACpB,IAAI;AACJ,IAAI,OAAO,IAAI;AACf;AACA,SAAS,SAAS,CAAC,MAAM,EAAE;AAC3B,IAAI,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC;AACvC,IAAI,IAAI,SAAS,KAAK,CAAC;AACvB,QAAQ,OAAO,MAAM;AACrB,IAAI,IAAI,SAAS,KAAK,CAAC;AACvB,QAAQ,OAAO,IAAI;AACnB,IAAI,OAAO,CAAC,EAAE,MAAM,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC;AAClD;AACA,eAAe,qBAAqB,CAAC,IAAI,EAAE;AAC3C,IAAI,IAAI,OAAO,IAAI,CAAC,WAAW,KAAK,UAAU,EAAE;AAChD,QAAQ,OAAO,IAAI,CAAC,WAAW,EAAE;AACjC,IAAI;AACJ,IAAI,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;AAC5C,QAAQ,MAAM,MAAM,GAAG,IAAI,UAAU,EAAE;AACvC,QAAQ,MAAM,CAAC,MAAM,GAAG,MAAM;AAC9B,YAAY,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM;AACxC,YAAY,IAAI,MAAM,YAAY,WAAW,EAAE;AAC/C,gBAAgB,OAAO,CAAC,MAAM,CAAC;AAC/B,YAAY;AACZ,iBAAiB;AACjB,gBAAgB,MAAM,CAAC,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;AACjF,YAAY;AACZ,QAAQ,CAAC;AACT,QAAQ,MAAM,CAAC,OAAO,GAAG,MAAM;AAC/B,YAAY,IAAI,EAAE;AAClB,YAAY,MAAM,CAAC,CAAC,EAAE,GAAG,MAAM,CAAC,KAAK,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;AACtG,QAAQ,CAAC;AACT,QAAQ,MAAM,CAAC,OAAO,GAAG,MAAM;AAC/B,YAAY,MAAM,CAAC,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;AACxD,QAAQ,CAAC;AACT,QAAQ,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC;AACtC,IAAI,CAAC,CAAC;AACN;AACA,SAAS,qBAAqB,CAAC,KAAK,EAAE,aAAa,EAAE;AACrD,IAAI,IAAI,KAAK,KAAK,IAAI;AACtB,QAAQ;AACR,IAAI,IAAI,KAAK,GAAG,aAAa,EAAE;AAC/B,QAAQ,MAAM,IAAI,gBAAgB,CAAC,CAAC,wBAAwB,EAAE,KAAK,CAAC,wBAAwB,EAAE,aAAa,CAAC,EAAE,CAAC,CAAC;AAChH,IAAI;AACJ;AACA,SAAS,sBAAsB,CAAC,UAAU,EAAE,cAAc,EAAE;AAC5D,IAAI,IAAI,CAAC,UAAU;AACnB,QAAQ;AACR,IAAI,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,GAAG,UAAU,CAAC,MAAM;AACvD,IAAI,IAAI,MAAM,GAAG,cAAc,EAAE;AACjC,QAAQ,MAAM,IAAI,gBAAgB,CAAC,CAAC,uBAAuB,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,MAAM,CAAC,wBAAwB,EAAE,cAAc,CAAC,EAAE,CAAC,CAAC;AAChJ,IAAI;AACJ;AACO,SAAS,6BAA6B,CAAC,OAAO,EAAE,OAAO,EAAE;AAChE,IAAI,qBAAqB,CAAC,0BAA0B,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC;AACrF,IAAI,MAAM,WAAW,GAAG,kBAAkB,CAAC,OAAO,EAAE,kBAAkB,CAAC;AACvE,IAAI,sBAAsB,CAAC,WAAW,GAAG,yBAAyB,CAAC,WAAW,CAAC,GAAG,IAAI,EAAE,OAAO,CAAC,cAAc,CAAC;AAC/G;AACO,eAAe,0BAA0B,CAAC,IAAI,EAAE,OAAO,EAAE;AAChE,IAAI,qBAAqB,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,aAAa,CAAC;AAC3D,IAAI,MAAM,SAAS,GAAG,OAAO,IAAI,CAAC,KAAK,KAAK,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,kBAAkB,CAAC,GAAG,IAAI;AACjG,IAAI,MAAM,WAAW,GAAG,MAAM,qBAAqB,CAAC,SAAS,CAAC;AAC9D,IAAI,sBAAsB,CAAC,yBAAyB,CAAC,IAAI,UAAU,CAAC,WAAW,CAAC,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC;AAC1G;;AC/NA,MAAM,+BAA+B,GAAG,EAAE;AACnC,eAAe,SAAS,CAAC,OAAO,EAAE,WAAW,EAAE,WAAW,GAAG,EAAE,EAAE;AACxE,IAAI,IAAI,CAAC,uBAAuB,CAAC,WAAW,CAAC;AAC7C,QAAQ;AACR,IAAI,IAAI;AACR,QAAQ,6BAA6B,CAAC,WAAW,EAAE,OAAO,CAAC,OAAO,CAAC;AACnE,IAAI;AACJ,IAAI,OAAO,KAAK,EAAE;AAClB,QAAQ,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,GAAG,CAAC,kBAAkB,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,GAAG,kBAAkB;AAC/G,QAAQ,WAAW,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,EAAE,YAAY,CAAC;AACzD,QAAQ,MAAM,KAAK;AACnB,IAAI;AACJ,IAAI,MAAM,iBAAiB,GAAG,OAAO,CAAC;AACtC,UAAU,CAAC,CAAC,OAAO,CAAC,kBAAkB,CAAC;AACvC,UAAU,IAAI;AACd,IAAI,MAAM,kBAAkB,GAAG,OAAO,CAAC,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC,SAAS,GAAG,IAAI;AACnG,IAAI,MAAM,mBAAmB,GAAG,OAAO,CAAC;AACxC,UAAU,OAAO,CAAC,gBAAgB,CAAC;AACnC,UAAU,IAAI;AACd,IAAI,MAAM,MAAM,GAAG;AACnB,QAAQ,iBAAiB;AACzB,QAAQ,kBAAkB;AAC1B,QAAQ,mBAAmB;AAC3B,QAAQ,qBAAqB,EAAE,OAAO,CAAC,wBAAwB,EAAE;AACjE,QAAQ,YAAY,EAAE,OAAO,CAAC,eAAe,EAAE;AAC/C,QAAQ,SAAS,EAAE,oBAAoB,CAAC,OAAO,CAAC;AAChD,QAAQ,WAAW,EAAE,OAAO,CAAC,cAAc,EAAE;AAC7C,QAAQ,iBAAiB,EAAE,OAAO,CAAC,oBAAoB,EAAE;AACzD,QAAQ,YAAY,EAAE,OAAO,CAAC,eAAe,EAAE;AAC/C,QAAQ,eAAe,EAAE,OAAO,CAAC,kBAAkB,EAAE;AACrD,QAAQ,cAAc,EAAE,OAAO,CAAC,iBAAiB,EAAE;AACnD,QAAQ,oBAAoB,EAAE,OAAO,CAAC,uBAAuB,EAAE;AAC/D,QAAQ,wBAAwB,EAAE,OAAO,CAAC,2BAA2B,EAAE;AACvE,KAAK;AACL,IAAI,IAAI;AACR,QAAQ,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,kBAAkB;AAC5E,QAAQ,OAAO,CAAC,qBAAqB,CAAC,KAAK,CAAC;AAC5C,QAAQ,MAAM,MAAM,GAAG,gBAAgB,CAAC,WAAW,CAAC;AACpD,QAAQ,IAAI,YAAY;AACxB,QAAQ,IAAI;AACZ,YAAY,YAAY,GAAG,MAAM,WAAW,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,uBAAuB,CAAC,YAAY,CAAC,CAAC,EAAE,cAAc,CAAC;AAChI,QAAQ;AACR,QAAQ,OAAO,KAAK,EAAE;AACtB,YAAY,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;AAChC,YAAY,MAAM,KAAK;AACvB,QAAQ;AACR,QAAQ,MAAM,UAAU,GAAG,eAAe,CAAC,YAAY,EAAE,WAAW,EAAE,OAAO,CAAC,OAAO,EAAER,mBAAiB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AACzH,QAAQ,MAAM,mBAAmB,GAAG,uBAAuB,CAAC,YAAY,CAAC;AACzE,QAAQ,uBAAuB,CAAC,qBAAqB,EAAE,mBAAmB,EAAE,+BAA+B,CAAC;AAC5G,QAAQ,MAAM,WAAW,GAAG,qBAAqB,EAAE;AACnD,QAAQ,MAAM,iBAAiB,GAAG,WAAW;AAC7C,QAAQ,MAAM,iBAAiB,GAAG;AAClC,cAAc,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,EAAE,WAAW,CAAC,MAAM;AAC1E,cAAc,EAAE,WAAW,EAAE,iBAAiB,EAAE;AAChD,QAAQ,MAAM,WAAW,GAAG,MAAM,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,EAAE,iBAAiB,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,mBAAmB,CAAC,EAAE,qBAAqB,EAAE,MAAM;AACxL,YAAY,WAAW,KAAK,IAAI,IAAI,WAAW,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,WAAW,CAAC,KAAK,EAAE;AACzF,QAAQ,CAAC,CAAC;AACV,QAAQ,OAAO,CAAC,MAAM,CAAC,mBAAmB,EAAE;AAC5C,QAAQ,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE;AAC9B,QAAQ,OAAO,CAAC,MAAM,CAAC,eAAe,GAAG,OAAO,CAAC,OAAO,CAAC,eAAe;AACxE,QAAQ,MAAM,SAAS,GAAG,mBAAmB,CAAC,WAAW,CAAC;AAC1D,QAAQ,SAAS,CAAC,GAAG,CAAC;AACtB,YAAY,OAAO,EAAE,MAAM;AAC3B,YAAY,OAAO,EAAE,KAAK;AAC1B,YAAY,UAAU,EAAE,KAAK;AAC7B,YAAY,OAAO,EAAE,KAAK;AAC1B,SAAS,CAAC;AACV,QAAQ,MAAM,MAAM,GAAG,aAAa,CAAC,OAAO,EAAE,SAAS,CAAC;AACxD,QAAQ,qBAAqB,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,YAAY,EAAE,OAAO,CAAC,gBAAgB,CAAC;AAChH,QAAQ,SAAS,CAAC,GAAG,CAAC;AACtB,YAAY,IAAI,EAAE,MAAM,CAAC,SAAS;AAClC,YAAY,GAAG,EAAE,MAAM,CAAC,QAAQ;AAChC,YAAY,MAAM,EAAE,MAAM,CAAC,UAAU;AACrC,YAAY,MAAM,EAAE,MAAM,CAAC,UAAU;AACrC,SAAS,CAAC;AACV,QAAQ,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC;AACrC,QAAQ,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAAC,SAAS,CAAC;AAClD,QAAQ,OAAO,CAAC,gBAAgB,CAAC,SAAS,CAAC;AAC3C,QAAQ,OAAO,CAAC,iBAAiB,CAAC,MAAM,CAAC,cAAc,CAAC;AACxD,QAAQ,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC;AAClC,QAAQ,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC;AACrC,QAAQ,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC;AACjC,QAAQ,OAAO,CAAC,oBAAoB,CAAC,CAAC,CAAC;AACvC,QAAQ,OAAO,CAAC,wBAAwB,CAAC,IAAI,CAAC;AAC9C,QAAQ,OAAO,CAAC,uBAAuB,CAAC,UAAU,CAAC,QAAQ,CAAC;AAC5D,QAAQ,OAAO,CAAC,qBAAqB,EAAE;AACvC,QAAQ,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE;AAClC,QAAQ,OAAO,CAAC,eAAe,CAAC,SAAS,CAAC;AAC1C,YAAY,MAAM,EAAE,OAAO,CAAC,MAAM;AAClC,YAAY,YAAY,EAAE,CAAC;AAC3B,YAAY,eAAe,EAAE,CAAC;AAC9B,YAAY,cAAc,EAAE,MAAM,CAAC,cAAc;AACjD,YAAY,oBAAoB,EAAE,UAAU,CAAC,QAAQ;AACrD,YAAY,iBAAiB,EAAE,OAAO,CAAC,2BAA2B,EAAE;AACpE,SAAS,CAAC,CAAC;AACX,QAAQ,IAAI,WAAW,CAAC,cAAc,KAAK,IAAI,IAAI,OAAO,CAAC,gBAAgB,EAAE;AAC7E,YAAY,IAAI;AAChB,gBAAgB,IAAI,MAAM,CAAC,kBAAkB,KAAK,IAAI,EAAE;AACxD,oBAAoB,OAAO,CAAC,gBAAgB,CAAC,SAAS,GAAG,MAAM,CAAC,kBAAkB;AAClF,gBAAgB;AAChB,gBAAgB,IAAI,MAAM,CAAC,mBAAmB,KAAK,IAAI,EAAE;AACzD,oBAAoB,OAAO,CAAC,gBAAgB,CAAC,UAAU,GAAG,MAAM,CAAC,mBAAmB;AACpF,gBAAgB;AAChB,YAAY;AACZ,YAAY,OAAO,KAAK,EAAE;AAC1B,gBAAgB,aAAa,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,EAAE,gCAAgC,CAAC;AACvF,YAAY;AACZ,QAAQ;AACR,IAAI;AACJ,IAAI,OAAO,KAAK,EAAE;AAClB,QAAQ,MAAM,cAAc,CAAC,OAAO,EAAE,MAAM,CAAC;AAC7C,QAAQ,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,GAAG,CAAC,kBAAkB,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,GAAG,kBAAkB;AAC/G,QAAQ,WAAW,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,EAAE,YAAY,CAAC;AACzD,QAAQ,MAAM,KAAK;AACnB,IAAI;AACJ;AACA,SAAS,gBAAgB,CAAC,OAAO,EAAE;AACnC,IAAI,OAAO,qBAAqB,CAAC,OAAO,EAAE;AAC1C,QAAQ,QAAQ,EAAE,CAAC,YAAY,KAAK,yBAAyB,CAAC,YAAY;AAC1E,cAAc;AACd,cAAc,IAAI,gBAAgB,CAAC,mEAAmE,EAAE,IAAI,CAAC;AAC7G,QAAQ,WAAW,EAAE,CAAC,KAAK,KAAK,IAAI,gBAAgB,CAAC,kCAAkC,EAAE,KAAK,CAAC;AAC/F,KAAK,CAAC;AACN;AACA,SAAS,yBAAyB,CAAC,YAAY,EAAE;AACjD,IAAI,QAAQ,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,YAAY,CAAC;AACtD,QAAQ,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,aAAa,CAAC;AACnD,QAAQ,YAAY,CAAC,YAAY,GAAG,CAAC;AACrC,QAAQ,YAAY,CAAC,aAAa,GAAG,CAAC;AACtC;AACA,SAAS,gBAAgB,CAAC,KAAK,EAAE;AACjC,IAAI,OAAO,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC;AAC9C;AACA,SAAS,wBAAwB,CAAC,QAAQ,EAAE;AAC5C,IAAI,OAAO,QAAQ,KAAK,YAAY,IAAI,QAAQ,KAAK,WAAW,IAAI,QAAQ,KAAK;AACjF,UAAU;AACV,UAAU,IAAI;AACd;AACA,SAAS,eAAe,CAAC,YAAY,EAAE,eAAe,EAAE,OAAO,EAAE,aAAa,EAAE;AAChF,IAAI,MAAM,gBAAgB,GAAG,wBAAwB,CAAC,oBAAoB,CAAC,eAAe,CAAC,CAAC;AAC5F,IAAI,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE;AACnC,QAAQ,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,gBAAgB,EAAE;AACvE,IAAI;AACJ,IAAI,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,kBAAkB,CAAC;AACrD,QAAQ,CAAC,gBAAgB,CAAC,OAAO,CAAC,mBAAmB,CAAC,EAAE;AACxD,QAAQ,aAAa,CAAC,OAAO,EAAE,IAAI,EAAE,uEAAuE,CAAC;AAC7G,QAAQ,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,gBAAgB,EAAE;AACvE,IAAI;AACJ,IAAI,MAAM,oBAAoB,GAAG,2BAA2B,CAAC,YAAY,CAAC,YAAY,EAAE,YAAY,CAAC,aAAa,EAAE,OAAO,CAAC,kBAAkB,EAAE,OAAO,CAAC,mBAAmB,CAAC;AAC5K,IAAI,IAAI,CAAC,oBAAoB,CAAC,WAAW,EAAE;AAC3C,QAAQ,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,gBAAgB,EAAE;AACvE,IAAI;AACJ,IAAI,MAAM,UAAU,GAAG,oBAAoB,CAAC,eAAe,CAAC;AAC5D,IAAI,MAAM,cAAc,GAAG,aAAa,CAAC,YAAY,EAAE,OAAO,CAAC,kBAAkB,EAAE,OAAO,CAAC,mBAAmB,EAAE,UAAU,EAAE,OAAO,CAAC,oBAAoB,EAAE,OAAO,CAAC,kBAAkB,EAAE,OAAO,CAAC,iBAAiB,EAAE,aAAa,CAAC;AAC/N,IAAI,MAAM,cAAc,GAAG,wBAAwB,CAAC,oBAAoB,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;AACjG,IAAI,OAAO;AACX,QAAQ,OAAO,EAAE,cAAc,CAAC,OAAO;AACvC,QAAQ,QAAQ,EAAE,cAAc,KAAK,IAAI,IAAI,cAAc,KAAK,MAAM,GAAG,cAAc,GAAG,cAAc,CAAC,QAAQ;AACjH,KAAK;AACL;AACA,SAASA,mBAAiB,CAAC,MAAM,EAAE;AACnC,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AACtB,IAAI,MAAM,UAAU,GAAG,MAAM;AAC7B,IAAI,OAAO,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,UAAU,CAAC,UAAU,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,MAAM,GAAG,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,MAAM,GAAG,EAAE,CAAC,aAAa,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,CAAC,EAAE,GAAG,UAAU,CAAC,aAAa,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,MAAM,GAAG,EAAE,CAAC,aAAa;AAC3R;AACA,SAAS,aAAa,CAAC,OAAO,EAAE,WAAW,EAAE;AAC7C,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AACtB,IAAI,MAAM,UAAU,GAAG,CAAC,EAAE,GAAG,WAAW,CAAC,KAAK,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,CAAC;AAClF,IAAI,MAAM,WAAW,GAAG,CAAC,EAAE,GAAG,WAAW,CAAC,MAAM,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,CAAC;AACpF,IAAI,MAAM,aAAa,GAAG,oBAAoB,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,OAAO,CAAC,gBAAgB,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,MAAM,GAAG,EAAE,CAAC,aAAa,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,IAAI,CAAC;AAClL,IAAI,MAAM,QAAQ,GAAG,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,gBAAgB,EAAE;AAC7E,QAAQ,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC,WAAW;AAC1C,QAAQ,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,YAAY;AAC5C,KAAK,EAAE,aAAa,CAAC;AACrB,IAAI,MAAM,QAAQ,GAAG,oBAAoB,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC;AACrE,IAAI,IAAI,QAAQ,KAAK,KAAK,EAAE;AAC5B,QAAQ,OAAO,gBAAgB,CAAC,UAAU,EAAE,WAAW,EAAE,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC,OAAO,CAAC,YAAY,EAAE,QAAQ,CAAC;AAC7H,IAAI;AACJ,IAAI,IAAI,QAAQ,KAAK,OAAO,EAAE;AAC9B,QAAQ,OAAO,kBAAkB,CAAC,UAAU,EAAE,WAAW,EAAE,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC,OAAO,CAAC,YAAY,EAAE,QAAQ,EAAE,aAAa,CAAC;AAC9I,IAAI;AACJ,IAAI,OAAO,mBAAmB,CAAC,UAAU,EAAE,WAAW,EAAE,QAAQ,CAAC;AACjE;AACA,SAAS,oBAAoB,CAAC,OAAO,EAAE;AACvC,IAAI,OAAO,SAAS,CAAC;AACrB,QAAQ,MAAM,EAAE,OAAO,CAAC,MAAM;AAC9B,QAAQ,YAAY,EAAE,OAAO,CAAC,eAAe,EAAE;AAC/C,QAAQ,eAAe,EAAE,OAAO,CAAC,kBAAkB,EAAE;AACrD,QAAQ,cAAc,EAAE,OAAO,CAAC,iBAAiB,EAAE;AACnD,QAAQ,oBAAoB,EAAE,OAAO,CAAC,uBAAuB,EAAE;AAC/D,QAAQ,iBAAiB,EAAE,OAAO,CAAC,2BAA2B,EAAE;AAChE,KAAK,CAAC;AACN;AACA,SAAS,uBAAuB,CAAC,QAAQ,EAAE;AAC3C,IAAI,OAAO,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE;AAChC;AACA,SAAS,uBAAuB,CAAC,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE;AAChE,IAAI,IAAI,WAAW,IAAI,SAAS;AAChC,QAAQ;AACR,IAAI,MAAM,IAAI,6BAA6B,CAAC,KAAK,EAAE,WAAW,EAAE,SAAS,CAAC;AAC1E;AACA,SAAS,qBAAqB,GAAG;AACjC,IAAI,OAAO,OAAO,eAAe,KAAK,UAAU,GAAG,IAAI,eAAe,EAAE,GAAG,IAAI;AAC/E;AACA,eAAe,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE;AAC/C,IAAI,IAAI,EAAE,EAAE,EAAE;AACd,IAAI,IAAI;AACR,QAAQ,MAAM,aAAa,GAAG,MAAM,aAAa,CAAC;AAClD,YAAY,MAAM,EAAE,OAAO,CAAC,MAAM;AAClC,YAAY,UAAU,EAAE,MAAM,CAAC,SAAS;AACxC,YAAY,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK;AAC9C,gBAAgB,OAAO,CAAC,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC;AACpD,YAAY,CAAC;AACb,YAAY,eAAe,EAAE,OAAO,CAAC,OAAO,CAAC,eAAe;AAC5D,YAAY,iBAAiB,EAAE,SAAS;AACxC,SAAS,CAAC;AACV,QAAQ,OAAO,CAAC,0BAA0B,CAAC,aAAa,CAAC;AACzD,QAAQ,OAAO,CAAC,gBAAgB,CAAC,aAAa,CAAC,aAAa,CAAC;AAC7D,QAAQ,OAAO,CAAC,wBAAwB,CAAC,MAAM,CAAC,qBAAqB,IAAI,aAAa,CAAC,aAAa,KAAK,IAAI,CAAC;AAC9G,QAAQ,OAAO,CAAC,eAAe,CAAC,MAAM,CAAC,YAAY,CAAC;AACpD,QAAQ,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,EAAE,aAAa,CAAC,SAAS,CAAC,CAAC;AACrF,QAAQ,OAAO,CAAC,oBAAoB,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,iBAAiB,EAAE,aAAa,CAAC,eAAe,CAAC,CAAC;AACvG,QAAQ,OAAO,CAAC,eAAe,CAAC,MAAM,CAAC,YAAY,CAAC;AACpD,QAAQ,OAAO,CAAC,kBAAkB,CAAC,MAAM,CAAC,eAAe,CAAC;AAC1D,QAAQ,OAAO,CAAC,iBAAiB,CAAC,MAAM,CAAC,cAAc,CAAC;AACxD,QAAQ,OAAO,CAAC,uBAAuB,CAAC,MAAM,CAAC,oBAAoB,CAAC;AACpE,QAAQ,OAAO,CAAC,wBAAwB,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,aAAa,CAAC,WAAW,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,iBAAiB,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC,wBAAwB,CAAC;AAC5M,QAAQ,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE;AAClC,IAAI;AACJ,IAAI,OAAO,aAAa,EAAE;AAC1B,QAAQ,aAAa,CAAC,OAAO,CAAC,OAAO,EAAE,aAAa,EAAE,gGAAgG,CAAC;AACvJ,QAAQ,OAAO,CAAC,yBAAyB,EAAE;AAC3C,IAAI;AACJ,IAAI,IAAI,OAAO,CAAC,gBAAgB,EAAE;AAClC,QAAQ,IAAI;AACZ,YAAY,IAAI,MAAM,CAAC,kBAAkB,KAAK,IAAI,EAAE;AACpD,gBAAgB,OAAO,CAAC,gBAAgB,CAAC,SAAS,GAAG,MAAM,CAAC,kBAAkB;AAC9E,YAAY;AACZ,YAAY,IAAI,MAAM,CAAC,mBAAmB,KAAK,IAAI,EAAE;AACrD,gBAAgB,OAAO,CAAC,gBAAgB,CAAC,UAAU,GAAG,MAAM,CAAC,mBAAmB;AAChF,YAAY;AACZ,QAAQ;AACR,QAAQ,OAAO,aAAa,EAAE;AAC9B,YAAY,aAAa,CAAC,OAAO,CAAC,OAAO,EAAE,aAAa,EAAE,2CAA2C,CAAC;AACtG,QAAQ;AACR,IAAI;AACJ,IAAI,IAAI,MAAM,CAAC,iBAAiB,KAAK,IAAI,EAAE;AAC3C,QAAQ,OAAO,CAAC,qBAAqB,CAAC,CAAC,MAAM,CAAC,iBAAiB,CAAC;AAChE,IAAI;AACJ;;AClQA,MAAM,kBAAkB,GAAG,IAAI;AAC/B,MAAM,QAAQ,GAAG,IAAI;AACrB,MAAM,QAAQ,GAAG,IAAI;AACrB,MAAM,QAAQ,GAAG,IAAI;AACrB,MAAM,SAAS,GAAG,IAAI;AACtB,MAAM,oBAAoB,GAAG,MAAM;AACnC,MAAM,eAAe,GAAG,CAAC;AACzB,MAAM,cAAc,GAAG,CAAC;AACxB,MAAM,WAAW,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;AACxD,SAAS,kBAAkB,CAAC,KAAK,EAAE;AACnC,IAAI,OAAO,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC;AAC9D;AACA,SAAS,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE;AAChD,IAAI,IAAI,MAAM,GAAG,CAAC,IAAI,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,UAAU;AAClD,QAAQ,OAAO,IAAI;AACnB,IAAI,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,YAAY,CAAC;AAC/C;AACA,SAAS,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE;AAChD,IAAI,IAAI,MAAM,GAAG,CAAC,IAAI,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,UAAU;AAClD,QAAQ,OAAO,IAAI;AACnB,IAAI,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,YAAY,CAAC;AAC/C;AACA,SAAS,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE;AAC1C,IAAI,IAAI,MAAM,GAAG,WAAW,CAAC,MAAM,GAAG,GAAG;AACzC,QAAQ,OAAO,KAAK;AACpB,IAAI,OAAO,WAAW,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,KAAK,KAAK,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,KAAK,CAAC,KAAK,IAAI,CAAC;AACrF;AACA,SAAS,kBAAkB,CAAC,MAAM,EAAE;AACpC,IAAI,OAAO,MAAM,KAAK,IAAI,KAAK,MAAM,IAAI,IAAI,IAAI,MAAM,IAAI,IAAI,CAAC;AAChE;AACO,SAAS,uBAAuB,CAAC,MAAM,EAAE;AAChD,IAAI,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC;AACrC,IAAI,IAAI,IAAI,CAAC,UAAU,GAAG,CAAC;AAC3B,QAAQ,OAAO,IAAI;AACnB,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,kBAAkB,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE;AAClF,QAAQ,OAAO,IAAI;AACnB,IAAI;AACJ,IAAI,IAAI,MAAM,GAAG,CAAC;AAClB,IAAI,OAAO,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE;AACrC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,kBAAkB;AACxD,YAAY,OAAO,IAAI;AACvB,QAAQ,OAAO,MAAM,GAAG,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,kBAAkB,EAAE;AACzF,YAAY,MAAM,IAAI,CAAC;AACvB,QAAQ;AACR,QAAQ,IAAI,MAAM,IAAI,IAAI,CAAC,UAAU;AACrC,YAAY,OAAO,IAAI;AACvB,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;AAC5C,QAAQ,MAAM,IAAI,CAAC;AACnB,QAAQ,IAAI,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,QAAQ;AACtD,YAAY,OAAO,IAAI;AACvB,QAAQ,IAAI,kBAAkB,CAAC,MAAM,CAAC;AACtC,YAAY;AACZ,QAAQ,IAAI,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,UAAU;AACxC,YAAY,OAAO,IAAI;AACvB,QAAQ,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC;AAC3D,QAAQ,IAAI,aAAa,GAAG,CAAC;AAC7B,YAAY,OAAO,IAAI;AACvB,QAAQ,MAAM,YAAY,GAAG,MAAM,GAAG,CAAC;AACvC,QAAQ,MAAM,UAAU,GAAG,MAAM,GAAG,aAAa;AACjD,QAAQ,IAAI,UAAU,GAAG,IAAI,CAAC,UAAU;AACxC,YAAY,OAAO,IAAI;AACvB,QAAQ,IAAI,MAAM,KAAK,SAAS,IAAI,aAAa,CAAC,IAAI,EAAE,YAAY,EAAE,UAAU,CAAC,EAAE;AACnF,YAAY,OAAO,0BAA0B,CAAC,IAAI,EAAE,YAAY,GAAG,WAAW,CAAC,MAAM,EAAE,UAAU,CAAC;AAClG,QAAQ;AACR,QAAQ,MAAM,GAAG,UAAU;AAC3B,IAAI;AACJ,IAAI,OAAO,IAAI;AACf;AACA,SAAS,0BAA0B,CAAC,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE;AACjE,IAAI,IAAI,SAAS,GAAG,CAAC,GAAG,UAAU;AAClC,QAAQ,OAAO,IAAI;AACnB,IAAI,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;AAC/C,IAAI,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,GAAG,CAAC,CAAC;AACnD,IAAI,MAAM,YAAY,GAAG,UAAU,KAAK,IAAI,IAAI,UAAU,KAAK;AAC/D,UAAU;AACV,UAAU,UAAU,KAAK,IAAI,IAAI,UAAU,KAAK;AAChD,cAAc;AACd,cAAc,IAAI;AAClB,IAAI,IAAI,YAAY,KAAK,IAAI;AAC7B,QAAQ,OAAO,IAAI;AACnB,IAAI,MAAM,SAAS,GAAG,UAAU,CAAC,IAAI,EAAE,SAAS,GAAG,CAAC,EAAE,YAAY,CAAC;AACnE,IAAI,IAAI,SAAS,KAAK,MAAM;AAC5B,QAAQ,OAAO,IAAI;AACnB,IAAI,MAAM,SAAS,GAAG,UAAU,CAAC,IAAI,EAAE,SAAS,GAAG,CAAC,EAAE,YAAY,CAAC;AACnE,IAAI,IAAI,SAAS,KAAK,IAAI;AAC1B,QAAQ,OAAO,IAAI;AACnB,IAAI,MAAM,QAAQ,GAAG,SAAS,GAAG,SAAS;AAC1C,IAAI,IAAI,QAAQ,GAAG,SAAS,IAAI,QAAQ,GAAG,CAAC,GAAG,UAAU;AACzD,QAAQ,OAAO,IAAI;AACnB,IAAI,MAAM,UAAU,GAAG,UAAU,CAAC,IAAI,EAAE,QAAQ,EAAE,YAAY,CAAC;AAC/D,IAAI,IAAI,UAAU,KAAK,IAAI;AAC3B,QAAQ,OAAO,IAAI;AACnB,IAAI,MAAM,YAAY,GAAG,QAAQ,GAAG,CAAC;AACrC,IAAI,MAAM,UAAU,GAAG,YAAY,GAAG,UAAU,GAAG,EAAE;AACrD,IAAI,IAAI,UAAU,GAAG,UAAU;AAC/B,QAAQ,OAAO,IAAI;AACnB,IAAI,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,UAAU,EAAE,KAAK,IAAI,CAAC,EAAE;AACxD,QAAQ,MAAM,WAAW,GAAG,YAAY,GAAG,KAAK,GAAG,EAAE;AACrD,QAAQ,MAAM,GAAG,GAAG,UAAU,CAAC,IAAI,EAAE,WAAW,EAAE,YAAY,CAAC;AAC/D,QAAQ,IAAI,GAAG,KAAK,oBAAoB;AACxC,YAAY;AACZ,QAAQ,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,EAAE,WAAW,GAAG,CAAC,EAAE,YAAY,CAAC;AACpE,QAAQ,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,EAAE,WAAW,GAAG,CAAC,EAAE,YAAY,CAAC;AACrE,QAAQ,IAAI,KAAK,KAAK,CAAC;AACvB,YAAY,OAAO,IAAI;AACvB,QAAQ,MAAM,KAAK,GAAG,IAAI,KAAK;AAC/B,cAAc,UAAU,CAAC,IAAI,EAAE,WAAW,GAAG,CAAC,EAAE,YAAY;AAC5D,cAAc,IAAI,KAAK;AACvB,kBAAkB,UAAU,CAAC,IAAI,EAAE,WAAW,GAAG,CAAC,EAAE,YAAY;AAChE,kBAAkB,IAAI;AACtB,QAAQ,IAAI,KAAK,KAAK,IAAI;AAC1B,YAAY,OAAO,IAAI;AACvB,QAAQ,OAAO,kBAAkB,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,IAAI;AACvD,IAAI;AACJ,IAAI,OAAO,IAAI;AACf;AACO,SAAS,UAAU,CAAC,IAAI,EAAE;AACjC,IAAI,IAAI,EAAE,EAAE,EAAE;AACd,IAAI,MAAM,IAAI,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,MAAM,GAAG,EAAE,CAAC,WAAW,EAAE,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,EAAE;AAClI,IAAI,IAAI,IAAI;AACZ,QAAQ,OAAO,IAAI,KAAK,YAAY;AACpC,IAAI,OAAO,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;AAC1C;AACA,eAAe,mBAAmB,CAAC,IAAI,EAAE;AACzC,IAAI,IAAI;AACR,QAAQ,OAAO,uBAAuB,CAAC,MAAM,qBAAqB,CAAC,IAAI,CAAC,CAAC;AACzE,IAAI;AACJ,IAAI,MAAM;AACV,QAAQ,OAAO,IAAI;AACnB,IAAI;AACJ;AACA,eAAe,oBAAoB,CAAC,IAAI,EAAE;AAC1C,IAAI,IAAI,OAAO,iBAAiB,KAAK,UAAU,EAAE;AACjD,QAAQ,MAAM,IAAI,KAAK,CAAC,sGAAsG,CAAC;AAC/H,IAAI;AACJ,IAAI,IAAI;AACR,QAAQ,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,IAAI,EAAE,EAAE,gBAAgB,EAAE,MAAM,EAAE,CAAC;AAClF,QAAQ,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE;AACjE,YAAY,MAAM,CAAC,KAAK,EAAE;AAC1B,YAAY,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC;AACtE,QAAQ;AACR,QAAQ,OAAO;AACf,YAAY,MAAM,EAAE,MAAM;AAC1B,YAAY,KAAK,EAAE,MAAM,CAAC,KAAK;AAC/B,YAAY,MAAM,EAAE,MAAM,CAAC,MAAM;AACjC,YAAY,KAAK,EAAE,MAAM;AACzB,gBAAgB,MAAM,CAAC,KAAK,EAAE;AAC9B,YAAY,CAAC;AACb,SAAS;AACT,IAAI;AACJ,IAAI,OAAO,KAAK,EAAE;AAClB,QAAQ,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,KAAK,YAAY;AACvD,cAAc,CAAC,kDAAkD,EAAE,KAAK,CAAC,OAAO,CAAC;AACjF,cAAc,mDAAmD,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;AACrF,IAAI;AACJ;AACA,SAAS,qBAAqB,CAAC,KAAK,EAAE,MAAM,EAAE;AAC9C,IAAI,OAAO,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,MAAM,GAAG,CAAC;AACvF;AACA,SAAS,iBAAiB,CAAC,aAAa,EAAE;AAC1C,IAAI,MAAM,gBAAgB,GAAG,aAAa,KAAK,IAAI,IAAI,aAAa,KAAK,MAAM,GAAG,aAAa,IAAI,OAAO,QAAQ,KAAK,WAAW,GAAG,QAAQ,GAAG,IAAI,CAAC;AACrJ,IAAI,IAAI,CAAC,gBAAgB,EAAE;AAC3B,QAAQ,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC;AACrF,IAAI;AACJ,IAAI,OAAO,gBAAgB;AAC3B;AACA,SAAS,YAAY,CAAC,aAAa,EAAE;AACrC,IAAI,OAAO,iBAAiB,CAAC,aAAa,CAAC,CAAC,aAAa,CAAC,QAAQ,CAAC;AACnE;AACA,SAAS,mBAAmB,CAAC,WAAW,EAAE;AAC1C,IAAI,OAAO,WAAW,IAAI,CAAC,IAAI,WAAW,IAAI,CAAC;AAC/C;AACA,SAAS,yBAAyB,CAAC,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE;AACxE,IAAI,QAAQ,WAAW;AACvB,QAAQ,KAAK,CAAC;AACd,YAAY,OAAO,CAAC,SAAS,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;AACpD,YAAY;AACZ,QAAQ,KAAK,CAAC;AACd,YAAY,OAAO,CAAC,SAAS,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC;AAC1D,YAAY;AACZ,QAAQ,KAAK,CAAC;AACd,YAAY,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,MAAM,CAAC;AACrD,YAAY;AACZ,QAAQ,KAAK,CAAC;AACd,YAAY,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AAC/C,YAAY;AACZ,QAAQ,KAAK,CAAC;AACd,YAAY,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;AACrD,YAAY;AACZ,QAAQ,KAAK,CAAC;AACd,YAAY,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC;AAC1D,YAAY;AACZ,QAAQ,KAAK,CAAC;AACd,YAAY,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC;AACpD,YAAY;AAGZ;AACA;AACA,SAAS,iBAAiB,CAAC,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,aAAa,EAAE;AACzE,IAAI,IAAI,EAAE;AACV,IAAI,MAAM,MAAM,GAAG,YAAY,CAAC,aAAa,CAAC;AAC9C,IAAI,MAAM,WAAW,GAAG,mBAAmB,CAAC,WAAW,CAAC,GAAG,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC,KAAK;AACzF,IAAI,MAAM,YAAY,GAAG,mBAAmB,CAAC,WAAW,CAAC,GAAG,OAAO,CAAC,KAAK,GAAG,OAAO,CAAC,MAAM;AAC1F,IAAI,MAAM,CAAC,KAAK,GAAG,WAAW;AAC9B,IAAI,MAAM,CAAC,MAAM,GAAG,YAAY;AAChC,IAAI,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC;AAC3C,IAAI,IAAI,CAAC,OAAO,EAAE;AAClB,QAAQ,MAAM,IAAI,KAAK,CAAC,8DAA8D,CAAC;AACvF,IAAI;AACJ,IAAI,yBAAyB,CAAC,OAAO,EAAE,WAAW,EAAE,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC;AAClF,IAAI,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC;AAC1E,IAAI,OAAO,MAAM,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC,sBAAsB,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,OAAO,CAAC,iBAAiB,CAAC;AAC3I;AACO,eAAe,gCAAgC,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE;AAE9F,IAAI,IAAI,CAAC,OAAO,CAAC,eAAe,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;AACrD,QAAQ,OAAO,IAAI;AACnB,IAAI,MAAM,WAAW,GAAG,MAAM,mBAAmB,CAAC,IAAI,CAAC;AACvD,IAAI,IAAI,WAAW,KAAK,IAAI,IAAI,WAAW,KAAK,CAAC;AACjD,QAAQ,OAAO,IAAI;AACnB,IAAI,MAAM,OAAO,GAAG,MAAM,oBAAoB,CAAC,IAAI,CAAC;AACpD,IAAI,IAAI;AACR,QAAQ,OAAO,iBAAiB,CAAC,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,aAAa,CAAC;AAC9E,IAAI;AACJ,YAAY;AACZ,QAAQ,OAAO,CAAC,KAAK,EAAE;AACvB,IAAI;AACJ;;ACjOO,eAAe,aAAa,CAAC,OAAO,EAAE,IAAI,EAAE;AACnD,IAAI,IAAI,EAAE;AACV,IAAI,MAAM,YAAY,GAAG,OAAO,CAAC,eAAe,EAAE;AAClD,IAAI,MAAM,IAAI,GAAG,kBAAkB,CAAC,IAAI,CAAC;AACzC,IAAI,IAAI,CAAC,IAAI,EAAE;AACf,QAAQ,aAAa,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,6BAA6B,EAAE,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC;AACpH,QAAQ,cAAc,CAAC,YAAY,CAAC;AACpC,QAAQ;AACR,IAAI;AACJ,IAAI,IAAI;AACR,QAAQ,MAAM,0BAA0B,CAAC,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC;AAC/D,IAAI;AACJ,IAAI,OAAO,KAAK,EAAE;AAClB,QAAQ,aAAa,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,YAAY,KAAK,GAAG,KAAK,CAAC,OAAO,GAAG,6CAA6C,CAAC;AACrI,QAAQ,cAAc,CAAC,YAAY,CAAC;AACpC,QAAQ;AACR,IAAI;AACJ,IAAI,IAAI,OAAO;AACf,IAAI,IAAI;AACR,QAAQ,OAAO,GAAG,MAAM,iBAAiB,CAAC,IAAI,CAAC;AAC/C,IAAI;AACJ,IAAI,OAAO,KAAK,EAAE;AAClB,QAAQ,WAAW,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,EAAE,qCAAqC,CAAC;AAClF,QAAQ,cAAc,CAAC,YAAY,CAAC;AACpC,QAAQ;AACR,IAAI;AACJ,IAAI,IAAI;AACR,QAAQ,IAAI;AACZ,YAAY,OAAO;AACnB,gBAAgB,CAAC,EAAE,IAAI,MAAM,gCAAgC,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,YAAY,KAAK,IAAI,IAAI,YAAY,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,YAAY,CAAC,aAAa,CAAC,CAAC,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,EAAE,GAAG,OAAO;AAChO,QAAQ;AACR,QAAQ,OAAO,KAAK,EAAE;AACtB,YAAY,aAAa,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,EAAE,6EAA6E,CAAC;AAChI,QAAQ;AACR,QAAQ,MAAM,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC;AACxC,IAAI;AACJ,YAAY;AACZ,QAAQ,cAAc,CAAC,YAAY,CAAC;AACpC,IAAI;AACJ;;AC1CA,MAAM,cAAc,GAAG,GAAG;AAC1B,MAAM,wBAAwB,GAAG,CAAC;AAC3B,SAAS,qBAAqB,CAAC,OAAO,EAAE,aAAa,EAAE;AAC9D,IAAI,OAAO,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,gBAAgB,EAAE;AACnE,QAAQ,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC,WAAW;AAC1C,QAAQ,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,YAAY;AAC5C,KAAK,EAAE,aAAa,CAAC;AACrB;AACO,SAAS,oCAAoC,CAAC,QAAQ,EAAE;AAC/D,IAAI,OAAO;AACX,QAAQ,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC;AAC9C,QAAQ,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;AAChD,KAAK;AACL;AACO,SAAS,6BAA6B,CAAC,OAAO,EAAE,OAAO,GAAG,EAAE,EAAE;AACrE,IAAI,IAAI,EAAE,EAAE,EAAE;AACd,IAAI,MAAM,aAAa,GAAG,OAAO,CAAC,gBAAgB,EAAE;AACpD,IAAI,IAAI,CAAC,aAAa;AACtB,QAAQ;AACR,IAAI,aAAa,CAAC,SAAS,EAAE;AAC7B,IAAI,MAAM,YAAY,GAAG,aAAa,CAAC,eAAe,EAAE;AACxD,IAAI,MAAM,aAAa,GAAG,oBAAoB,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,OAAO,CAAC,gBAAgB,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,MAAM,GAAG,EAAE,CAAC,aAAa,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,IAAI,CAAC;AAClL,IAAI,MAAM,QAAQ,GAAG,qBAAqB,CAAC,OAAO,EAAE,aAAa,CAAC;AAClE,IAAI,MAAM,gCAAgC,GAAG,OAAO,CAAC,0BAA0B,KAAK,KAAK;AACzF,IAAI,MAAM,iBAAiB,GAAG,YAAY,CAAC,KAAK,IAAI,QAAQ,CAAC,KAAK,GAAG,cAAc;AACnF,QAAQ,YAAY,CAAC,MAAM,IAAI,QAAQ,CAAC,MAAM,GAAG,cAAc;AAC/D,IAAI,IAAI,OAAO,CAAC,iBAAiB,KAAK,KAAK,IAAI,OAAO,CAAC,iBAAiB,KAAK,OAAO,EAAE;AACtF,QAAQ,IAAI,iBAAiB,EAAE;AAC/B,YAAY,MAAM,UAAU,GAAG;AAC/B,kBAAkB,oCAAoC,CAAC,QAAQ;AAC/D,kBAAkB,QAAQ;AAC1B,YAAY,OAAO,CAAC,aAAa,CAAC,UAAU,CAAC,KAAK,EAAE,UAAU,CAAC,MAAM,CAAC;AACtE,YAAY;AACZ,QAAQ;AACR,QAAQ,MAAM,UAAU,GAAG,2BAA2B,CAAC,YAAY,CAAC,KAAK,EAAE,YAAY,CAAC,MAAM,EAAE,QAAQ,EAAE,aAAa,CAAC;AACxH,QAAQ,OAAO,CAAC,aAAa,CAAC,UAAU,CAAC,KAAK,EAAE,UAAU,CAAC,MAAM,CAAC;AAClE,QAAQ;AACR,IAAI;AACJ,IAAI,IAAI,iBAAiB,EAAE;AAC3B,QAAQ,MAAM,UAAU,GAAG;AAC3B,cAAc,oCAAoC,CAAC,QAAQ;AAC3D,cAAc,QAAQ;AACtB,QAAQ,OAAO,CAAC,aAAa,CAAC,UAAU,CAAC,KAAK,EAAE,UAAU,CAAC,MAAM,CAAC;AAClE,QAAQ;AACR,IAAI;AACJ,IAAI,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC;AAC7I;AACO,SAAS,0CAA0C,CAAC,OAAO,EAAE;AACpE,IAAI,IAAI,EAAE,EAAE,EAAE;AACd,IAAI,MAAM,aAAa,GAAG,OAAO,CAAC,gBAAgB,EAAE;AACpD,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,aAAa;AACzC,QAAQ,OAAO,KAAK;AACpB,IAAI,aAAa,CAAC,SAAS,EAAE;AAC7B,IAAI,MAAM,YAAY,GAAG,aAAa,CAAC,eAAe,EAAE;AACxD,IAAI,MAAM,QAAQ,GAAG,qBAAqB,CAAC,OAAO,EAAE,oBAAoB,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,OAAO,CAAC,gBAAgB,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,MAAM,GAAG,EAAE,CAAC,aAAa,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;AAC7M,IAAI,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;AACxD,IAAI,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;AACzD,IAAI,MAAM,UAAU,GAAG,YAAY,CAAC,KAAK,GAAG,OAAO,GAAG,cAAc;AACpE,QAAQ,YAAY,CAAC,MAAM,GAAG,OAAO,GAAG,cAAc;AACtD,IAAI,IAAI,OAAO,CAAC,iBAAiB,KAAK,KAAK,IAAI,OAAO,CAAC,iBAAiB,KAAK,OAAO,EAAE;AACtF,QAAQ,MAAM,kBAAkB,GAAG,OAAO,GAAG,QAAQ,CAAC,KAAK,GAAG,cAAc;AAC5E,YAAY,YAAY,CAAC,KAAK,IAAI,QAAQ,CAAC,KAAK,GAAG,cAAc;AACjE,QAAQ,MAAM,mBAAmB,GAAG,OAAO,GAAG,QAAQ,CAAC,MAAM,GAAG,cAAc;AAC9E,YAAY,YAAY,CAAC,MAAM,IAAI,QAAQ,CAAC,MAAM,GAAG,cAAc;AACnE,QAAQ,OAAO,UAAU,IAAI,kBAAkB,IAAI,mBAAmB;AACtE,IAAI;AACJ,IAAI,IAAI,OAAO,CAAC,iBAAiB,KAAK,QAAQ,EAAE;AAChD,QAAQ,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;AACjF,QAAQ,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;AACnF,QAAQ,QAAQ,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,SAAS,CAAC,GAAG,cAAc;AAC9D,YAAY,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,SAAS,CAAC,GAAG,cAAc;AAC1D,IAAI;AACJ,IAAI,OAAO,UAAU;AACrB;AACO,SAAS,yCAAyC,CAAC,OAAO,EAAE;AACnE,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM;AACvB,QAAQ,CAAC,OAAO,CAAC,gBAAgB;AACjC,SAAS,OAAO,CAAC,iBAAiB,KAAK,KAAK,IAAI,OAAO,CAAC,iBAAiB,KAAK,OAAO,CAAC,EAAE;AACxF,QAAQ;AACR,IAAI;AACJ,IAAI,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;AACxD,IAAI,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;AACzD,IAAI,IAAI,OAAO,IAAI,CAAC,IAAI,OAAO,IAAI,CAAC;AACpC,QAAQ;AACR,IAAI,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC,WAAW,IAAI,CAAC,CAAC;AACzE,IAAI,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC,YAAY,IAAI,CAAC,CAAC;AAC1E,IAAI,IAAI,OAAO,IAAI,CAAC,IAAI,OAAO,IAAI,CAAC;AACpC,QAAQ;AACR,IAAI,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,WAAW,IAAI,CAAC,CAAC;AACxE,IAAI,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,YAAY,IAAI,CAAC,CAAC;AACzE,IAAI,MAAM,sBAAsB,GAAG,OAAO,GAAG,OAAO,GAAG,cAAc;AACrE,IAAI,MAAM,oBAAoB,GAAG,OAAO,GAAG,OAAO,GAAG,cAAc;AACnE,IAAI,IAAI,CAAC,sBAAsB,IAAI,CAAC,oBAAoB;AACxD,QAAQ;AACR,IAAI,MAAM,UAAU,GAAG,oBAAoB,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,OAAO,CAAC,IAAI,wBAAwB;AACtG,IAAI,MAAM,WAAW,GAAG,sBAAsB,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,OAAO,CAAC,IAAI,wBAAwB;AACzG,IAAI,IAAI,CAAC,UAAU,IAAI,CAAC,WAAW;AACnC,QAAQ;AACR,IAAI,OAAO,CAAC,aAAa,CAAC,UAAU,GAAG,OAAO,GAAG,CAAC,GAAG,OAAO,EAAE,WAAW,GAAG,OAAO,GAAG,CAAC,GAAG,OAAO,CAAC;AAClG,IAAI,OAAO,CAAC,aAAa,CAAC,OAAO,EAAE,OAAO,CAAC;AAC3C;AACO,SAAS,2BAA2B,CAAC,OAAO,EAAE;AACrD,IAAI,MAAM,aAAa,GAAG,OAAO,CAAC,gBAAgB,EAAE;AACpD,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,aAAa;AACzC,QAAQ,OAAO,IAAI;AACnB,IAAI,aAAa,CAAC,SAAS,EAAE;AAC7B,IAAI,MAAM,YAAY,GAAG,aAAa,CAAC,eAAe,EAAE;AACxD,IAAI,OAAO;AACX,QAAQ,WAAW,EAAE,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE;AAC9C,QAAQ,YAAY,EAAE,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE;AAChD,QAAQ,iBAAiB,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,YAAY,CAAC,KAAK,CAAC;AAC1D,QAAQ,kBAAkB,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,YAAY,CAAC,MAAM,CAAC;AAC5D,KAAK;AACL;AACO,SAAS,iCAAiC,CAAC,OAAO,EAAE,QAAQ,EAAE;AACrE,IAAI,MAAM,aAAa,GAAG,OAAO,CAAC,gBAAgB,EAAE;AACpD,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,aAAa;AACtD,QAAQ;AACR,IAAI,OAAO,CAAC,aAAa,CAAC,QAAQ,CAAC,WAAW,EAAE,QAAQ,CAAC,YAAY,CAAC;AACtE,IAAI,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,aAAa,CAAC,KAAK,IAAI,QAAQ,CAAC,iBAAiB,CAAC;AAClF,IAAI,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,aAAa,CAAC,MAAM,IAAI,QAAQ,CAAC,kBAAkB,CAAC;AACpF,IAAI,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,iBAAiB,GAAG,OAAO,EAAE,QAAQ,CAAC,kBAAkB,GAAG,OAAO,CAAC;AACvG,IAAI,aAAa,CAAC,GAAG,CAAC;AACtB,QAAQ,IAAI,EAAE,CAAC;AACf,QAAQ,GAAG,EAAE,CAAC;AACd,QAAQ,KAAK,EAAE,CAAC;AAChB,QAAQ,MAAM,EAAE,KAAK;AACrB,QAAQ,MAAM,EAAE,KAAK;AACrB,QAAQ,OAAO,EAAE,MAAM;AACvB,QAAQ,OAAO,EAAE,KAAK;AACtB,QAAQ,UAAU,EAAE,KAAK;AACzB,QAAQ,OAAO,EAAE,KAAK;AACtB,QAAQ,WAAW,EAAE,KAAK;AAC1B,QAAQ,WAAW,EAAE,SAAS;AAC9B,KAAK,CAAC;AACN,IAAI,aAAa,CAAC,SAAS,EAAE;AAC7B,IAAI,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAAC,aAAa,CAAC;AAClD,IAAI,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC;AAC9B,IAAI,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC;AACjC,IAAI,OAAO,CAAC,iBAAiB,CAAC,KAAK,CAAC;AACpC,IAAI,OAAO,CAAC,eAAe,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC;AACtD,IAAI,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE;AAC9B;;AC/IA,MAAM,yBAAyB,GAAG,IAAI;AAC/B,SAAS,YAAY,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE;AAC5D,IAAI,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;AAC5C,QAAQ,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM;AACnD,QAAQ,IAAI,SAAS,KAAK,CAAC,IAAI,KAAK,CAAC,UAAU,EAAE,EAAE;AACnD,YAAY,OAAO,EAAE;AACrB,YAAY;AACZ,QAAQ;AACR,QAAQ,IAAI,SAAS,GAAG,CAAC;AACzB,QAAQ,IAAI,OAAO,GAAG,KAAK;AAC3B,QAAQ,IAAI,QAAQ,GAAG,EAAE;AACzB,QAAQ,IAAI,SAAS,GAAG,IAAI;AAC5B,QAAQ,IAAI,iBAAiB,GAAG,IAAI;AACpC,QAAQ,MAAM,OAAO,GAAG,MAAM;AAC9B,YAAY,IAAI,SAAS,KAAK,IAAI,EAAE;AACpC,gBAAgB,YAAY,CAAC,SAAS,CAAC;AACvC,gBAAgB,SAAS,GAAG,IAAI;AAChC,YAAY;AACZ,YAAY,iBAAiB,KAAK,IAAI,IAAI,iBAAiB,KAAK,MAAM,GAAG,MAAM,GAAG,iBAAiB,EAAE;AACrG,YAAY,iBAAiB,GAAG,IAAI;AACpC,QAAQ,CAAC;AACT,QAAQ,MAAM,MAAM,GAAG,MAAM;AAC7B,YAAY,IAAI,OAAO;AACvB,gBAAgB;AAChB,YAAY,OAAO,GAAG,IAAI;AAC1B,YAAY,OAAO,EAAE;AACrB,YAAY,OAAO,EAAE;AACrB,QAAQ,CAAC;AACT,QAAQ,MAAM,IAAI,GAAG,CAAC,KAAK,KAAK;AAChC,YAAY,IAAI,OAAO;AACvB,gBAAgB;AAChB,YAAY,OAAO,GAAG,IAAI;AAC1B,YAAY,OAAO,EAAE;AACrB,YAAY,MAAM,CAAC,KAAK,CAAC;AACzB,QAAQ,CAAC;AACT,QAAQ,MAAM,cAAc,GAAG,MAAM;AACrC,YAAY,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE;AAC1C,gBAAgB,IAAI;AACpB,oBAAoB,KAAK,EAAE;AAC3B,gBAAgB;AAChB,gBAAgB,MAAM;AACtB,gBAAgB;AAChB,YAAY;AACZ,YAAY,MAAM,EAAE;AACpB,QAAQ,CAAC;AACT,QAAQ,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC;AAC9F,QAAQ,SAAS,GAAG,UAAU,CAAC,cAAc,EAAE,QAAQ,GAAG,yBAAyB,CAAC;AACpF,QAAQ,iBAAiB,GAAG,KAAK,CAAC,wBAAwB,CAAC,cAAc,CAAC;AAC1E,QAAQ,IAAI;AACZ,YAAY,MAAM,eAAe,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE;AAC1D,gBAAgB,QAAQ;AACxB,gBAAgB,QAAQ,EAAE,MAAM;AAChC,oBAAoB,IAAI,EAAE;AAC1B,oBAAoB,IAAI,KAAK,CAAC,UAAU,EAAE;AAC1C,wBAAwB;AACxB,oBAAoB,CAAC,EAAE,GAAG,OAAO,CAAC,QAAQ,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC;AACjG,gBAAgB,CAAC;AACjB,gBAAgB,UAAU,EAAE,MAAM;AAClC,oBAAoB,IAAI,EAAE,SAAS,IAAI,SAAS;AAChD,wBAAwB,MAAM,EAAE;AAChC,gBAAgB,CAAC;AACjB,aAAa,CAAC;AACd,YAAY,QAAQ,GAAG,wBAAwB,CAAC,eAAe,CAAC;AAChE,QAAQ;AACR,QAAQ,OAAO,KAAK,EAAE;AACtB,YAAY,IAAI,CAAC,KAAK,CAAC;AACvB,QAAQ;AACR,IAAI,CAAC,CAAC;AACN;AACA,SAAS,wBAAwB,CAAC,eAAe,EAAE;AACnD,IAAI,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,eAAe;AACjD,UAAU;AACV,UAAU,eAAe,IAAI,OAAO,eAAe,KAAK;AACxD,cAAc,MAAM,CAAC,MAAM,CAAC,eAAe;AAC3C,cAAc,CAAC,eAAe,CAAC;AAC/B,IAAI,OAAO,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK;AACvC,QAAQ,MAAM,KAAK,GAAG,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC,KAAK;AAClF,QAAQ,OAAO,OAAO,KAAK,KAAK,UAAU,GAAG,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE;AAC5E,IAAI,CAAC,CAAC;AACN;AACO,SAAS,aAAa,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE;AACxD,IAAI,IAAI;AACR,QAAQ,MAAM,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;AACxC,QAAQ,MAAM,CAAC,SAAS,EAAE;AAC1B,IAAI;AACJ,IAAI,MAAM;AACV,IAAI;AACJ;;ACrFO,MAAM,mBAAmB,CAAC;AACjC,IAAI,WAAW,CAAC,OAAO,EAAE;AACzB,QAAQ,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,SAAS,EAAE;AAC/C,YAAY,UAAU,EAAE,IAAI;AAC5B,YAAY,YAAY,EAAE,IAAI;AAC9B,YAAY,QAAQ,EAAE,IAAI;AAC1B,YAAY,KAAK,EAAE;AACnB,SAAS,CAAC;AACV,QAAQ,IAAI,CAAC,OAAO,GAAG,OAAO;AAC9B,IAAI;AACJ,IAAI,MAAM,UAAU,CAAC,MAAM,EAAE;AAC7B,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;AACpC,YAAY;AACZ,QAAQ,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE;AAC3D,QAAQ,IAAI,CAAC,WAAW;AACxB,YAAY;AACZ,QAAQ,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,EAAE;AAC5C,YAAY;AACZ,QAAQ,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,EAAE;AAC3C,YAAY;AACZ,QAAQ,WAAW,CAAC,SAAS,EAAE;AAC/B,QAAQ,MAAM,YAAY,GAAG,WAAW,CAAC,mBAAmB,EAAE;AAC9D,QAAQ,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE;AAC5D,QAAQ,MAAM,cAAc,GAAG,WAAW,CAAC,MAAM;AACjD,QAAQ,MAAM,cAAc,GAAG,WAAW,CAAC,MAAM;AACjD,QAAQ,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;AAChH,QAAQ,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,OAAO,CAAC;AAC7C,QAAQ,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE,GAAG,OAAO;AACpE,QAAQ,IAAI;AACZ,YAAY,MAAM,OAAO,GAAGS,qBAAmB,CAAC,WAAW,CAAC;AAC5D,YAAY,WAAW,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;AAChE,YAAY,WAAW,CAAC,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC;AACnE,YAAY,WAAW,CAAC,SAAS,EAAE;AACnC,QAAQ;AACR,QAAQ,OAAO,KAAK,EAAE;AACtB,YAAY,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,EAAE,sCAAsC,CAAC;AAC9F,QAAQ;AACR,QAAQ,IAAI;AACZ,YAAY,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,YAAY,CAAC,WAAW,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE;AAC5H,gBAAgB,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,iBAAiB;AAChE,gBAAgB,QAAQ,EAAE,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,gBAAgB,EAAE;AACtE,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AACnC,QAAQ;AACR,QAAQ,OAAO,KAAK,EAAE;AACtB,YAAY,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,aAAa,CAAC;AACvD,YAAY,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,EAAE,EAAE;AAClD,gBAAgB,WAAW,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC;AACnF,gBAAgB,WAAW,CAAC,SAAS,EAAE;AACvC,gBAAgB,IAAI,CAAC,sBAAsB,CAAC,YAAY,CAAC;AACzD,YAAY;AACZ,YAAY,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,EAAE,8BAA8B,CAAC;AACtF,YAAY;AACZ,QAAQ;AACR,QAAQ,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,EAAE;AAC3C,YAAY;AACZ,QAAQ,WAAW,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;AACjE,QAAQ,WAAW,CAAC,SAAS,EAAE;AAC/B,QAAQ,IAAI;AACZ,YAAY,IAAI,CAAC,sBAAsB,CAAC,YAAY,CAAC;AACrD,QAAQ;AACR,gBAAgB;AAChB,YAAY,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE;AAC1C,QAAQ;AACR,IAAI;AACJ,IAAI,MAAM,WAAW,CAAC,OAAO,EAAE;AAC/B,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC;AACrC,YAAY;AACZ,QAAQ,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE;AAC3D,QAAQ,IAAI,CAAC,WAAW;AACxB,YAAY;AACZ,QAAQ,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,EAAE;AAC5C,YAAY;AACZ,QAAQ,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,EAAE;AAC3C,YAAY;AACZ,QAAQ,WAAW,CAAC,SAAS,EAAE;AAC/B,QAAQ,MAAM,YAAY,GAAG,WAAW,CAAC,mBAAmB,EAAE;AAC9D,QAAQ,MAAM,gBAAgB,GAAG,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE;AAClE,QAAQ,MAAM,aAAa,GAAG,WAAW,CAAC,KAAK;AAC/C,QAAQ,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,OAAO,CAAC;AAChD,QAAQ,IAAI;AACZ,YAAY,MAAM,MAAM,GAAG,WAAW,CAAC,cAAc,EAAE;AACvD,YAAY,WAAW,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;AACrE,YAAY,WAAW,CAAC,mBAAmB,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC;AACvE,YAAY,WAAW,CAAC,SAAS,EAAE;AACnC,QAAQ;AACR,QAAQ,OAAO,KAAK,EAAE;AACtB,YAAY,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,EAAE,uCAAuC,CAAC;AAC/F,QAAQ;AACR,QAAQ,IAAI,eAAe,GAAG,KAAK;AACnC,QAAQ,IAAI;AACZ,YAAY,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,YAAY,CAAC,WAAW,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;AACtG,gBAAgB,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,iBAAiB;AAChE,gBAAgB,QAAQ,EAAE,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,gBAAgB,EAAE;AACtE,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AACnC,QAAQ;AACR,QAAQ,OAAO,KAAK,EAAE;AACtB,YAAY,eAAe,GAAG,IAAI;AAClC,YAAY,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,gBAAgB,CAAC;AAC7D,YAAY,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,EAAE,EAAE;AAClD,gBAAgB,WAAW,CAAC,GAAG,CAAC,OAAO,EAAE,aAAa,KAAK,IAAI,IAAI,aAAa,KAAK,MAAM,GAAG,aAAa,GAAG,gBAAgB,CAAC;AAC/H,gBAAgB,WAAW,CAAC,SAAS,EAAE;AACvC,gBAAgB,aAAa,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,CAAC;AACzD,gBAAgB,IAAI,CAAC,sBAAsB,CAAC,YAAY,CAAC;AACzD,YAAY;AACZ,YAAY,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,EAAE,+BAA+B,CAAC;AACvF,QAAQ;AACR,gBAAgB;AAChB,YAAY,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,EAAE,EAAE;AACjD,gBAAgB,aAAa,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,CAAC;AACzD,YAAY;AACZ,QAAQ;AACR,QAAQ,IAAI,eAAe;AAC3B,YAAY;AACZ,QAAQ,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,EAAE;AAC3C,YAAY;AACZ,QAAQ,WAAW,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC;AACzC,QAAQ,WAAW,CAAC,SAAS,EAAE;AAC/B,QAAQ,IAAI;AACZ,YAAY,MAAM,UAAU,GAAGA,qBAAmB,CAAC,WAAW,CAAC;AAC/D,YAAY,WAAW,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;AAChE,YAAY,WAAW,CAAC,mBAAmB,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,CAAC;AACtE,YAAY,WAAW,CAAC,SAAS,EAAE;AACnC,QAAQ;AACR,QAAQ,OAAO,KAAK,EAAE;AACtB,YAAY,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,EAAE,yCAAyC,CAAC;AACjG,QAAQ;AACR,QAAQ,IAAI;AACZ,YAAY,IAAI,CAAC,sBAAsB,CAAC,YAAY,CAAC;AACrD,QAAQ;AACR,gBAAgB;AAChB,YAAY,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE;AAC1C,QAAQ;AACR,IAAI;AACJ,IAAI,MAAM,cAAc,GAAG;AAC3B,QAAQ,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;AACrC,IAAI;AACJ,IAAI,MAAM,YAAY,GAAG;AACzB,QAAQ,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;AACrC,IAAI;AACJ,IAAI,MAAM,SAAS,CAAC,QAAQ,EAAE;AAC9B,QAAQ,IAAI,EAAE,EAAE,EAAE;AAClB,QAAQ,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE;AAC3D,QAAQ,IAAI,CAAC,WAAW;AACxB,YAAY;AACZ,QAAQ,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,EAAE;AAC5C,YAAY;AACZ,QAAQ,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,EAAE;AAC3C,YAAY;AACZ,QAAQ,WAAW,CAAC,SAAS,EAAE;AAC/B,QAAQ,MAAM,YAAY,GAAG,WAAW,CAAC,mBAAmB,EAAE;AAC9D,QAAQ,MAAM,aAAa,GAAG,WAAW,CAAC,KAAK;AAC/C,QAAQ,MAAM,aAAa,GAAG,WAAW,CAAC,KAAK;AAC/C,QAAQ,MAAM,eAAe,GAAG,CAAC,EAAE,GAAG,WAAW,CAAC,OAAO,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,MAAM;AAClG,QAAQ,MAAM,eAAe,GAAG,CAAC,EAAE,GAAG,WAAW,CAAC,OAAO,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,KAAK;AACjG,QAAQ,MAAM,aAAa,GAAG,QAAQ,KAAK,OAAO,GAAG,gBAAgB,GAAG,cAAc;AACtF,QAAQ,IAAI,MAAM,GAAG,IAAI;AACzB,QAAQ,IAAI;AACZ,YAAY,MAAM,GAAG,WAAW,CAAC,cAAc,EAAE;AACjD,YAAY,WAAW,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;AACrE,YAAY,WAAW,CAAC,mBAAmB,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC;AACvE,YAAY,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,QAAQ,GAAG,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC;AACnE,YAAY,WAAW,CAAC,SAAS,EAAE;AACnC,YAAY,MAAM,UAAU,GAAGA,qBAAmB,CAAC,WAAW,CAAC;AAC/D,YAAY,WAAW,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;AAChE,YAAY,WAAW,CAAC,mBAAmB,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,CAAC;AACtE,YAAY,WAAW,CAAC,SAAS,EAAE;AACnC,QAAQ;AACR,QAAQ,OAAO,KAAK,EAAE;AACtB,YAAY,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,EAAE,EAAE;AAClD,gBAAgB,IAAI;AACpB,oBAAoB,WAAW,CAAC,GAAG,CAAC;AACpC,wBAAwB,KAAK,EAAE,aAAa;AAC5C,wBAAwB,KAAK,EAAE,aAAa;AAC5C,wBAAwB,OAAO,EAAE,eAAe;AAChD,wBAAwB,OAAO,EAAE,eAAe;AAChD,qBAAqB,CAAC;AACtB,oBAAoB,IAAI,MAAM,EAAE;AAChC,wBAAwB,WAAW,CAAC,mBAAmB,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC;AACnF,oBAAoB;AACpB,oBAAoB,WAAW,CAAC,SAAS,EAAE;AAC3C,oBAAoB,IAAI,CAAC,sBAAsB,CAAC,YAAY,CAAC;AAC7D,gBAAgB;AAChB,gBAAgB,OAAO,aAAa,EAAE;AACtC,oBAAoB,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,aAAa,EAAE,CAAC,EAAE,aAAa,CAAC,iBAAiB,CAAC,CAAC;AAC3G,gBAAgB;AAChB,YAAY;AACZ,YAAY,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAC;AAClF,YAAY;AACZ,QAAQ;AACR,QAAQ,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,EAAE;AAC3C,YAAY;AACZ,QAAQ,IAAI,CAAC,sBAAsB,CAAC,YAAY,CAAC;AACjD,QAAQ,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE;AACtC,IAAI;AACJ,IAAI,MAAM,mBAAmB,GAAG;AAChC,QAAQ,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE;AAC5D,QAAQ,IAAI,CAAC,YAAY;AACzB,YAAY;AACZ,QAAQ,YAAY,CAAC,SAAS,EAAE;AAChC,QAAQ,MAAM,YAAY,GAAG,YAAY,CAAC,mBAAmB,EAAE;AAC/D,QAAQ,MAAM,6BAA6B,GAAG,IAAI,CAAC,OAAO,CAAC,uBAAuB,EAAE;AACpF,QAAQ,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,IAAI,CAAC;AAC/C,QAAQ,IAAI,CAAC,OAAO,CAAC,sBAAsB,CAAC,IAAI,CAAC;AACjD,QAAQ,IAAI;AACZ,YAAY,MAAM,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;AACpC,YAAY,MAAM,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;AACrC,YAAY,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE;AAC/D,YAAY,IAAI,WAAW,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,EAAE,EAAE;AACjE,gBAAgB,WAAW,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;AAC/D,gBAAgB,WAAW,CAAC,SAAS,EAAE;AACvC,gBAAgB,IAAI,CAAC,OAAO,CAAC,0BAA0B,EAAE;AACzD,YAAY;AACZ,QAAQ;AACR,gBAAgB;AAChB,YAAY,IAAI,CAAC,OAAO,CAAC,sBAAsB,CAAC,6BAA6B,CAAC;AAC9E,YAAY,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,KAAK,CAAC;AACpD,QAAQ;AACR,QAAQ,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,EAAE;AAC3C,YAAY;AACZ,QAAQ,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,uBAAuB,EAAE,EAAE;AACrD,YAAY,IAAI,CAAC,OAAO,CAAC,0BAA0B,CAAC,YAAY,CAAC;AACjE,QAAQ;AACR,QAAQ,IAAI,CAAC,OAAO,CAAC,yBAAyB,EAAE;AAChD,QAAQ,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE;AACtC,IAAI;AACJ,IAAI,sBAAsB,CAAC,YAAY,EAAE;AACzC,QAAQ,IAAI,CAAC,OAAO,CAAC,0BAA0B,EAAE;AACjD,QAAQ,IAAI,IAAI,CAAC,OAAO,CAAC,uBAAuB,EAAE;AAClD,YAAY;AACZ,QAAQ,IAAI,CAAC,OAAO,CAAC,0BAA0B,CAAC,YAAY,CAAC;AAC7D,QAAQ,IAAI,CAAC,OAAO,CAAC,yBAAyB,EAAE;AAChD,IAAI;AACJ;AACA,SAASA,qBAAmB,CAAC,MAAM,EAAE;AACrC,IAAI,MAAM,CAAC,SAAS,EAAE;AACtB,IAAI,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,EAAE;AACrC,IAAI,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC;AAC3B,IAAI,IAAI,KAAK;AACb,QAAQ,OAAO,KAAK;AACpB,IAAI,MAAM,YAAY,GAAG,MAAM,CAAC,eAAe,EAAE;AACjD,IAAI,OAAO,EAAE,CAAC,EAAE,YAAY,CAAC,IAAI,EAAE,CAAC,EAAE,YAAY,CAAC,GAAG,EAAE;AACxD;;ACnPO,SAAS,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE;AACjD,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;AAChC,QAAQ,OAAO,OAAO,CAAC,OAAO,EAAE;AAChC,IAAI,OAAO,wBAAwB,CAAC,MAAM,EAAE,YAAY,EAAE,CAAC,UAAU,KAAK,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;AACxG;AACO,SAAS,iBAAiB,CAAC,MAAM,EAAE,OAAO,EAAE;AACnD,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC;AACjC,QAAQ,OAAO,OAAO,CAAC,OAAO,EAAE;AAChC,IAAI,OAAO,wBAAwB,CAAC,MAAM,EAAE,aAAa,EAAE,CAAC,UAAU,KAAK,UAAU,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;AAC3G;AACO,SAAS,oBAAoB,CAAC,MAAM,EAAE;AAC7C,IAAI,OAAO,wBAAwB,CAAC,MAAM,EAAE,gBAAgB,EAAE,CAAC,UAAU,KAAK,UAAU,CAAC,cAAc,EAAE,CAAC;AAC1G;AACO,SAAS,kBAAkB,CAAC,MAAM,EAAE;AAC3C,IAAI,OAAO,wBAAwB,CAAC,MAAM,EAAE,cAAc,EAAE,CAAC,UAAU,KAAK,UAAU,CAAC,YAAY,EAAE,CAAC;AACtG;AACO,SAAS,yBAAyB,CAAC,MAAM,EAAE;AAClD,IAAI,OAAO,wBAAwB,CAAC,MAAM,EAAE,qBAAqB,EAAE,CAAC,UAAU,KAAK,UAAU,CAAC,mBAAmB,EAAE,CAAC;AACpH;AACA,SAAS,wBAAwB,CAAC,MAAM,EAAE,SAAS,EAAE,mBAAmB,EAAE;AAC1E,IAAI,MAAM,UAAU,GAAG,MAAM,CAAC,sBAAsB,EAAE;AACtD,IAAI,IAAI,MAAM,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU;AAC1C,QAAQ,OAAO,OAAO,CAAC,OAAO,EAAE;AAChC,IAAI,IAAI;AACR,QAAQ,MAAM,CAAC,uBAAuB,CAAC,SAAS,CAAC;AACjD,IAAI;AACJ,IAAI,OAAO,KAAK,EAAE;AAClB,QAAQ,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;AACpC,IAAI;AACJ,IAAI,MAAM,OAAO,GAAG,MAAM,CAAC,oBAAoB,CAAC,SAAS,EAAE,KAAK,CAAC;AACjE,IAAI,MAAM,GAAG,GAAG,MAAM,CAAC,gBAAgB,CAAC,YAAY;AACpD,QAAQ,IAAI,MAAM,CAAC,UAAU,EAAE;AAC/B,YAAY;AACZ,QAAQ,MAAM,CAAC,QAAQ,EAAE;AACzB,QAAQ,IAAI;AACZ,YAAY,MAAM,mBAAmB,CAAC,UAAU,CAAC;AACjD,YAAY,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE;AACpC,gBAAgB,MAAM,CAAC,gBAAgB,CAAC,OAAO,CAAC;AAChD,QAAQ;AACR,gBAAgB;AAChB,YAAY,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE;AACtC,gBAAgB,MAAM,CAAC,YAAY,EAAE;AACrC,YAAY;AACZ,QAAQ;AACR,IAAI,CAAC,CAAC;AACN,IAAI,MAAM,CAAC,uBAAuB,CAAC,OAAO,CAAC;AAC3C,IAAI,OAAO,GAAG,CAAC,OAAO,CAAC,MAAM;AAC7B,QAAQ,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE;AAClC,YAAY,MAAM,CAAC,6BAA6B,EAAE;AAClD,YAAY,MAAM,CAAC,uBAAuB,CAAC,OAAO,CAAC;AACnD,QAAQ;AACR,IAAI,CAAC,CAAC;AACN;;AClDO,MAAM,yBAAyB,CAAC;AACvC,IAAI,WAAW,CAAC,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE;AACpD,QAAQ,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,SAAS,EAAE;AAC/C,YAAY,UAAU,EAAE,IAAI;AAC5B,YAAY,YAAY,EAAE,IAAI;AAC9B,YAAY,QAAQ,EAAE,IAAI;AAC1B,YAAY,KAAK,EAAE;AACnB,SAAS,CAAC;AACV,QAAQ,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,WAAW,EAAE;AACjD,YAAY,UAAU,EAAE,IAAI;AAC5B,YAAY,YAAY,EAAE,IAAI;AAC9B,YAAY,QAAQ,EAAE,IAAI;AAC1B,YAAY,KAAK,EAAE;AACnB,SAAS,CAAC;AACV,QAAQ,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,gBAAgB,EAAE;AACtD,YAAY,UAAU,EAAE,IAAI;AAC5B,YAAY,YAAY,EAAE,IAAI;AAC9B,YAAY,QAAQ,EAAE,IAAI;AAC1B,YAAY,KAAK,EAAE;AACnB,SAAS,CAAC;AACV,IAAI;AACJ,IAAI,wBAAwB,GAAG;AAC/B,QAAQ,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,IAAI;AAC3C,QAAQ,OAAO;AACf,YAAY,kBAAkB,EAAE,CAAC,SAAS,KAAK,OAAO,CAAC,cAAc,CAAC,kBAAkB,CAAC,SAAS,CAAC;AACnG,YAAY,gBAAgB,EAAE,CAAC,KAAK,KAAK;AACzC,gBAAgB,OAAO,CAAC,cAAc,CAAC,gBAAgB,CAAC,KAAK,CAAC;AAC9D,YAAY,CAAC;AACb,YAAY,oBAAoB,EAAE,CAAC,SAAS,EAAE,mBAAmB,KAAK,SAAS,CAAC,oBAAoB,CAAC,SAAS,EAAE,mBAAmB,CAAC;AACpI,YAAY,uBAAuB,EAAE,CAAC,OAAO,KAAK;AAClD,gBAAgB,SAAS,CAAC,uBAAuB,CAAC,OAAO,CAAC;AAC1D,YAAY,CAAC;AACb,YAAY,QAAQ,EAAE,MAAM;AAC5B,gBAAgB,SAAS,CAAC,QAAQ,EAAE;AACpC,YAAY,CAAC;AACb,SAAS;AACT,IAAI;AACJ,IAAI,0BAA0B,GAAG;AACjC,QAAQ,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,IAAI;AAC3C,QAAQ,OAAO;AACf,YAAY,UAAU,EAAE,MAAM,OAAO,CAAC,UAAU;AAChD,YAAY,sBAAsB,EAAE,MAAM,OAAO,CAAC,mBAAmB;AACrE,YAAY,uBAAuB,EAAE,CAAC,SAAS,KAAK;AACpD,gBAAgB,SAAS,CAAC,uBAAuB,CAAC,SAAS,CAAC;AAC5D,YAAY,CAAC;AACb,YAAY,oBAAoB,EAAE,CAAC,SAAS,EAAE,mBAAmB,KAAK,SAAS,CAAC,oBAAoB,CAAC,SAAS,EAAE,mBAAmB,CAAC;AACpI,YAAY,gBAAgB,EAAE,CAAC,IAAI,KAAK,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;AACnE,YAAY,YAAY,EAAE,MAAM;AAChC,gBAAgB,SAAS,CAAC,YAAY,EAAE;AACxC,YAAY,CAAC;AACb,YAAY,QAAQ,EAAE,MAAM;AAC5B,gBAAgB,SAAS,CAAC,QAAQ,EAAE;AACpC,YAAY,CAAC;AACb,YAAY,6BAA6B,EAAE,MAAM;AACjD,gBAAgB,SAAS,CAAC,6BAA6B,EAAE;AACzD,YAAY,CAAC;AACb,YAAY,gBAAgB,EAAE,CAAC,OAAO,KAAK;AAC3C,gBAAgB,SAAS,CAAC,gBAAgB,CAAC,OAAO,CAAC;AACnD,YAAY,CAAC;AACb,YAAY,uBAAuB,EAAE,CAAC,OAAO,KAAK;AAClD,gBAAgB,SAAS,CAAC,uBAAuB,CAAC,OAAO,CAAC;AAC1D,YAAY,CAAC;AACb,SAAS;AACT,IAAI;AACJ,IAAI,4BAA4B,GAAG;AACnC,QAAQ,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,IAAI;AAC3C,QAAQ,OAAO;AACf,YAAY,SAAS,EAAE,MAAM,OAAO,CAAC,MAAM;AAC3C,YAAY,aAAa,EAAE,CAAC,aAAa,KAAK,OAAO,CAAC,oBAAoB,CAAC,aAAa,CAAC;AACzF,YAAY,UAAU,EAAE,MAAM,OAAO,CAAC,OAAO;AAC7C,YAAY,UAAU,EAAE,MAAM,OAAO,CAAC,UAAU;AAChD,YAAY,mBAAmB,EAAE,CAAC,SAAS,EAAE,OAAO,KAAK,SAAS,CAAC,mBAAmB,CAAC,SAAS,EAAE,OAAO,CAAC;AAC1G,YAAY,8BAA8B,EAAE,MAAM,OAAO,CAAC,2BAA2B;AACrF,YAAY,oBAAoB,EAAE,CAAC,SAAS,EAAE,mBAAmB,KAAK,SAAS,CAAC,oBAAoB,CAAC,SAAS,EAAE,mBAAmB,CAAC;AACpI,YAAY,gBAAgB,EAAE,MAAM,OAAO,CAAC,aAAa;AACzD,YAAY,gBAAgB,EAAE,CAAC,KAAK,KAAK;AACzC,gBAAgB,OAAO,CAAC,aAAa,GAAG,KAAK;AAC7C,YAAY,CAAC;AACb,YAAY,0BAA0B,EAAE,MAAM,SAAS,CAAC,0BAA0B,EAAE;AACpF,YAAY,gCAAgC,EAAE,MAAM,SAAS,CAAC,gCAAgC,EAAE;AAChG,YAAY,aAAa,EAAE,CAAC,OAAO,EAAE,QAAQ,KAAK;AAClD,gBAAgB,SAAS,CAAC,aAAa,CAAC,OAAO,EAAE,QAAQ,CAAC;AAC1D,YAAY,CAAC;AACb,YAAY,iBAAiB,EAAE,MAAM;AACrC,gBAAgB,SAAS,CAAC,iBAAiB,EAAE;AAC7C,YAAY,CAAC;AACb,YAAY,yBAAyB,EAAE,MAAM,SAAS,CAAC,yBAAyB,EAAE;AAClF,YAAY,uBAAuB,EAAE,CAAC,QAAQ,KAAK;AACnD,gBAAgB,OAAO,CAAC,oBAAoB,GAAG,QAAQ;AACvD,YAAY,CAAC;AACb,YAAY,2BAA2B,EAAE,MAAM,OAAO,CAAC,wBAAwB;AAC/E,YAAY,wBAAwB,EAAE,CAAC,MAAM,KAAK;AAClD,gBAAgB,MAAM,IAAI,GAAG,8BAA8B,CAAC,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,MAAM,GAAG,MAAM,GAAG,2BAA2B,CAAC;AACxI,gBAAgB,OAAO,CAAC,wBAAwB,GAAG,IAAI;AACvD,gBAAgB,OAAO,CAAC,8BAA8B,GAAG,8BAA8B,CAAC,IAAI,CAAC;AAC7F,gBAAgB,IAAI,OAAO,CAAC,aAAa,EAAE;AAC3C,oBAAoB,6BAA6B,CAAC,OAAO,CAAC,YAAY,EAAE,OAAO,CAAC,aAAa,EAAE,IAAI,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK;AACzH,wBAAwB,SAAS,CAAC,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC;AAC/D,oBAAoB,CAAC,CAAC;AACtB,gBAAgB;AAChB,YAAY,CAAC;AACb,YAAY,wBAAwB,EAAE,CAAC,KAAK,KAAK;AACjD,gBAAgB,OAAO,CAAC,qBAAqB,GAAG,KAAK;AACrD,YAAY,CAAC;AACb,YAAY,cAAc,EAAE,CAAC,KAAK,KAAK;AACvC,gBAAgB,OAAO,CAAC,WAAW,GAAG,KAAK;AAC3C,YAAY,CAAC;AACb,YAAY,oBAAoB,EAAE,CAAC,KAAK,KAAK;AAC7C,gBAAgB,OAAO,CAAC,iBAAiB,GAAG,KAAK;AACjD,YAAY,CAAC;AACb,YAAY,eAAe,EAAE,CAAC,KAAK,KAAK;AACxC,gBAAgB,OAAO,CAAC,YAAY,GAAG,KAAK;AAC5C,YAAY,CAAC;AACb,YAAY,kBAAkB,EAAE,CAAC,KAAK,KAAK;AAC3C,gBAAgB,OAAO,CAAC,eAAe,GAAG,KAAK;AAC/C,YAAY,CAAC;AACb,YAAY,iBAAiB,EAAE,CAAC,KAAK,KAAK;AAC1C,gBAAgB,OAAO,CAAC,cAAc,GAAG,KAAK;AAC9C,YAAY,CAAC;AACb,YAAY,WAAW,EAAE,CAAC,IAAI,KAAK;AACnC,gBAAgB,OAAO,CAAC,QAAQ,GAAG,IAAI;AACvC,YAAY,CAAC;AACb,YAAY,eAAe,EAAE,MAAM,OAAO,CAAC,YAAY;AACvD,YAAY,eAAe,EAAE,CAAC,QAAQ,KAAK;AAC3C,gBAAgB,OAAO,CAAC,YAAY,GAAG,QAAQ;AAC/C,YAAY,CAAC;AACb,YAAY,0CAA0C,EAAE,MAAM,SAAS,CAAC,0CAA0C,EAAE;AACpH,YAAY,6BAA6B,EAAE,CAAC,OAAO,KAAK;AACxD,gBAAgB,SAAS,CAAC,6BAA6B,CAAC,OAAO,CAAC;AAChE,YAAY,CAAC;AACb,YAAY,qCAAqC,EAAE,CAAC,MAAM,KAAK;AAC/D,gBAAgB,SAAS,CAAC,qCAAqC,CAAC,MAAM,CAAC;AACvE,YAAY,CAAC;AACb,YAAY,yCAAyC,EAAE,MAAM;AAC7D,gBAAgB,SAAS,CAAC,yCAAyC,EAAE;AACrE,YAAY,CAAC;AACb,YAAY,0BAA0B,EAAE,MAAM,IAAI,CAAC,cAAc,CAAC,0BAA0B,EAAE;AAC9F,YAAY,YAAY,EAAE,MAAM;AAChC,gBAAgB,SAAS,CAAC,YAAY,EAAE;AACxC,YAAY,CAAC;AACb,YAAY,cAAc,EAAE,MAAM;AAClC,gBAAgB,SAAS,CAAC,cAAc,EAAE;AAC1C,YAAY,CAAC;AACb,YAAY,oBAAoB,EAAE,MAAM;AACxC,gBAAgB,SAAS,CAAC,oBAAoB,EAAE;AAChD,YAAY,CAAC;AACb,YAAY,QAAQ,EAAE,MAAM;AAC5B,gBAAgB,SAAS,CAAC,QAAQ,EAAE;AACpC,YAAY,CAAC;AACb,YAAY,gBAAgB,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK;AAClD,gBAAgB,SAAS,CAAC,gBAAgB,CAAC,KAAK,EAAE,OAAO,CAAC;AAC1D,YAAY,CAAC;AACb,YAAY,gBAAgB,EAAE,CAAC,OAAO,KAAK;AAC3C,gBAAgB,SAAS,CAAC,gBAAgB,CAAC,OAAO,CAAC;AACnD,YAAY,CAAC;AACb,YAAY,sBAAsB,EAAE,CAAC,OAAO,KAAK;AACjD,gBAAgB,SAAS,CAAC,sBAAsB,CAAC,OAAO,CAAC;AACzD,YAAY,CAAC;AACb,YAAY,gBAAgB,EAAE,CAAC,OAAO,KAAK;AAC3C,gBAAgB,SAAS,CAAC,gBAAgB,CAAC,OAAO,CAAC;AACnD,YAAY,CAAC;AACb,YAAY,0BAA0B,EAAE,CAAC,OAAO,EAAE,QAAQ,KAAK,SAAS,CAAC,0BAA0B,CAAC,OAAO,EAAE,QAAQ,CAAC;AACtH,YAAY,sBAAsB,EAAE,CAAC,QAAQ,KAAK;AAClD,gBAAgB,SAAS,CAAC,sBAAsB,CAAC,QAAQ,CAAC;AAC1D,YAAY,CAAC;AACb,YAAY,uBAAuB,EAAE,MAAM,OAAO,CAAC,uBAAuB;AAC1E,YAAY,eAAe,EAAE,MAAM,OAAO,CAAC,YAAY;AACvD,YAAY,kBAAkB,EAAE,MAAM,OAAO,CAAC,eAAe;AAC7D,YAAY,iBAAiB,EAAE,MAAM,OAAO,CAAC,cAAc;AAC3D,YAAY,uBAAuB,EAAE,MAAM,OAAO,CAAC,oBAAoB;AACvE,YAAY,iBAAiB,EAAE,MAAM,OAAO,CAAC,cAAc;AAC3D,YAAY,wBAAwB,EAAE,MAAM,SAAS,CAAC,wBAAwB,EAAE;AAChF,YAAY,gBAAgB,EAAE,CAAC,IAAI,KAAK;AACxC,gBAAgB,SAAS,CAAC,gBAAgB,CAAC,IAAI,CAAC;AAChD,YAAY,CAAC;AACb,YAAY,uBAAuB,EAAE,CAAC,IAAI,KAAK;AAC/C,gBAAgB,SAAS,CAAC,uBAAuB,CAAC,IAAI,CAAC;AACvD,YAAY,CAAC;AACb,YAAY,6BAA6B,EAAE,CAAC,UAAU,KAAK;AAC3D,gBAAgB,SAAS,CAAC,6BAA6B,CAAC,UAAU,CAAC;AACnE,YAAY,CAAC;AACb,SAAS;AACT,IAAI;AACJ,IAAI,qBAAqB,GAAG;AAC5B,QAAQ,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,IAAI;AAC3C,QAAQ,OAAO;AACf,YAAY,SAAS,EAAE,MAAM,OAAO,CAAC,MAAM;AAC3C,YAAY,QAAQ,EAAE,MAAM,SAAS,CAAC,QAAQ,EAAE;AAChD,YAAY,mBAAmB,EAAE,CAAC,SAAS,EAAE,OAAO,KAAK,SAAS,CAAC,mBAAmB,CAAC,SAAS,EAAE,OAAO,CAAC;AAC1G,YAAY,oBAAoB,EAAE,CAAC,SAAS,EAAE,mBAAmB,KAAK,SAAS,CAAC,oBAAoB,CAAC,SAAS,EAAE,mBAAmB,CAAC;AACpI,YAAY,sBAAsB,EAAE,MAAM,IAAI,CAAC,cAAc,CAAC,sBAAsB,EAAE;AACtF,YAAY,sBAAsB,EAAE,MAAM,IAAI,CAAC,cAAc,CAAC,sBAAsB,EAAE;AACtF,YAAY,0BAA0B,EAAE,CAAC,OAAO,EAAE,QAAQ,KAAK,SAAS,CAAC,0BAA0B,CAAC,OAAO,EAAE,QAAQ,CAAC;AACtH,YAAY,QAAQ,EAAE,MAAM;AAC5B,gBAAgB,SAAS,CAAC,QAAQ,EAAE;AACpC,YAAY,CAAC;AACb,YAAY,gBAAgB,EAAE,CAAC,OAAO,KAAK;AAC3C,gBAAgB,SAAS,CAAC,gBAAgB,CAAC,OAAO,CAAC;AACnD,YAAY,CAAC;AACb,YAAY,gBAAgB,EAAE,CAAC,OAAO,KAAK;AAC3C,gBAAgB,SAAS,CAAC,gBAAgB,CAAC,OAAO,CAAC;AACnD,YAAY,CAAC;AACb,SAAS;AACT,IAAI;AACJ,IAAI,8BAA8B,GAAG;AACrC,QAAQ,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,IAAI;AAC3C,QAAQ,OAAO;AACf,YAAY,SAAS,EAAE,MAAM,OAAO,CAAC,MAAM;AAC3C,YAAY,kBAAkB,EAAE,CAAC,IAAI,KAAK;AAC1C,gBAAgB,SAAS,CAAC,kBAAkB,CAAC,IAAI,CAAC;AAClD,YAAY,CAAC;AACb,YAAY,gBAAgB,EAAE,CAAC,IAAI,KAAK;AACxC,gBAAgB,SAAS,CAAC,gBAAgB,CAAC,IAAI,CAAC;AAChD,YAAY,CAAC;AACb,YAAY,aAAa,EAAE,CAAC,IAAI,KAAK;AACrC,gBAAgB,SAAS,CAAC,aAAa,CAAC,IAAI,CAAC;AAC7C,YAAY,CAAC;AACb,YAAY,uBAAuB,EAAE,CAAC,IAAI,KAAK;AAC/C,gBAAgB,SAAS,CAAC,uBAAuB,CAAC,IAAI,CAAC;AACvD,YAAY,CAAC;AACb,YAAY,6BAA6B,EAAE,CAAC,UAAU,KAAK;AAC3D,gBAAgB,SAAS,CAAC,6BAA6B,CAAC,UAAU,CAAC;AACnE,YAAY,CAAC;AACb,YAAY,QAAQ,EAAE,MAAM;AAC5B,gBAAgB,SAAS,CAAC,QAAQ,EAAE;AACpC,YAAY,CAAC;AACb,YAAY,SAAS,EAAE,MAAM;AAC7B,gBAAgB,SAAS,CAAC,SAAS,EAAE;AACrC,YAAY,CAAC;AACb,YAAY,6BAA6B,EAAE,MAAM,OAAO,CAAC,0BAA0B;AACnF,YAAY,8BAA8B,EAAE,MAAM,OAAO,CAAC,2BAA2B;AACrF,YAAY,6BAA6B,EAAE,MAAM,OAAO,CAAC,6BAA6B;AACtF,YAAY,cAAc,EAAE,CAAC,QAAQ,KAAK,SAAS,CAAC,cAAc,CAAC,QAAQ,CAAC;AAC5E,YAAY,oBAAoB,EAAE,CAAC,SAAS,EAAE,gBAAgB,KAAK,SAAS,CAAC,oBAAoB,CAAC,SAAS,EAAE,gBAAgB,CAAC;AAC9H,YAAY,mBAAmB,EAAE,CAAC,SAAS,EAAE,OAAO,KAAK;AACzD,gBAAgB,SAAS,CAAC,mBAAmB,CAAC,SAAS,EAAE,OAAO,CAAC;AACjE,YAAY,CAAC;AACb,YAAY,gBAAgB,EAAE,CAAC,OAAO,KAAK;AAC3C,gBAAgB,SAAS,CAAC,gBAAgB,CAAC,OAAO,CAAC;AACnD,YAAY,CAAC;AACb,YAAY,sBAAsB,EAAE,CAAC,OAAO,KAAK;AACjD,gBAAgB,SAAS,CAAC,sBAAsB,CAAC,OAAO,CAAC;AACzD,YAAY,CAAC;AACb,YAAY,gBAAgB,EAAE,CAAC,OAAO,KAAK;AAC3C,gBAAgB,SAAS,CAAC,gBAAgB,CAAC,OAAO,CAAC;AACnD,YAAY,CAAC;AACb,SAAS;AACT,IAAI;AACJ,IAAI,+BAA+B,GAAG;AACtC,QAAQ,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,IAAI;AAC3C,QAAQ,OAAO;AACf,YAAY,SAAS,EAAE,MAAM,OAAO,CAAC,MAAM;AAC3C,YAAY,cAAc,EAAE,MAAM,OAAO,CAAC,WAAW;AACrD,YAAY,cAAc,EAAE,MAAM,OAAO,CAAC,WAAW;AACrD,YAAY,gBAAgB,EAAE,MAAM,OAAO,CAAC,WAAW,KAAK,IAAI;AAChE,gBAAgB,OAAO,CAAC,aAAa,KAAK,IAAI;AAC9C,gBAAgB,OAAO,CAAC,WAAW,KAAK,IAAI;AAC5C,gBAAgB,OAAO,CAAC,WAAW,KAAK,IAAI;AAC5C,gBAAgB,OAAO,CAAC,YAAY,KAAK,IAAI;AAC7C,YAAY,mBAAmB,EAAE,CAAC,SAAS,EAAE,OAAO,KAAK,SAAS,CAAC,mBAAmB,CAAC,SAAS,EAAE,OAAO,CAAC;AAC1G,YAAY,0BAA0B,EAAE,MAAM,IAAI,CAAC,cAAc,CAAC,0BAA0B,EAAE;AAC9F,YAAY,0BAA0B,EAAE,MAAM,IAAI,CAAC,cAAc,CAAC,0BAA0B,EAAE;AAC9F,YAAY,oBAAoB,EAAE,CAAC,SAAS,EAAE,mBAAmB,KAAK,SAAS,CAAC,oBAAoB,CAAC,SAAS,EAAE,mBAAmB,CAAC;AACpI,YAAY,YAAY,EAAE,MAAM;AAChC,gBAAgB,SAAS,CAAC,YAAY,EAAE;AACxC,YAAY,CAAC;AACb,YAAY,uBAAuB,EAAE,CAAC,OAAO,KAAK;AAClD,gBAAgB,SAAS,CAAC,uBAAuB,CAAC,OAAO,CAAC;AAC1D,YAAY,CAAC;AACb,YAAY,gBAAgB,EAAE,CAAC,OAAO,KAAK;AAC3C,gBAAgB,SAAS,CAAC,gBAAgB,CAAC,OAAO,CAAC;AACnD,YAAY,CAAC;AACb,SAAS;AACT,IAAI;AACJ,IAAI,+BAA+B,GAAG;AACtC,QAAQ,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,IAAI;AAC3C,QAAQ,OAAO;AACf,YAAY,SAAS,EAAE,MAAM,OAAO,CAAC,MAAM;AAC3C,YAAY,aAAa,EAAE,CAAC,aAAa,KAAK,OAAO,CAAC,oBAAoB,CAAC,aAAa,CAAC;AACzF,YAAY,6BAA6B,EAAE,MAAM,IAAI,CAAC,cAAc,CAAC,6BAA6B,EAAE;AACpG,YAAY,QAAQ,EAAE,MAAM,SAAS,CAAC,QAAQ,EAAE;AAChD,YAAY,cAAc,EAAE,MAAM,SAAS,CAAC,cAAc,EAAE;AAC5D,YAAY,kBAAkB,EAAE,CAAC,IAAI,KAAK;AAC1C,gBAAgB,SAAS,CAAC,kBAAkB,CAAC,IAAI,CAAC;AAClD,YAAY,CAAC;AACb,YAAY,0BAA0B,EAAE,CAAC,OAAO,EAAE,QAAQ,KAAK,SAAS,CAAC,0BAA0B,CAAC,OAAO,EAAE,QAAQ,CAAC;AACtH,YAAY,oBAAoB,EAAE,CAAC,SAAS,EAAE,mBAAmB,KAAK,SAAS,CAAC,oBAAoB,CAAC,SAAS,EAAE,mBAAmB,CAAC;AACpI,YAAY,SAAS,EAAE,MAAM;AAC7B,gBAAgB,SAAS,CAAC,SAAS,EAAE;AACrC,YAAY,CAAC;AACb,YAAY,cAAc,EAAE,MAAM;AAClC,gBAAgB,SAAS,CAAC,cAAc,EAAE;AAC1C,YAAY,CAAC;AACb,YAAY,uBAAuB,EAAE,CAAC,IAAI,KAAK;AAC/C,gBAAgB,SAAS,CAAC,uBAAuB,CAAC,IAAI,CAAC;AACvD,YAAY,CAAC;AACb,YAAY,oBAAoB,EAAE,MAAM;AACxC,gBAAgB,SAAS,CAAC,oBAAoB,EAAE;AAChD,YAAY,CAAC;AACb,YAAY,6BAA6B,EAAE,CAAC,UAAU,KAAK;AAC3D,gBAAgB,SAAS,CAAC,6BAA6B,CAAC,UAAU,CAAC;AACnE,YAAY,CAAC;AACb,YAAY,QAAQ,EAAE,MAAM;AAC5B,gBAAgB,SAAS,CAAC,QAAQ,EAAE;AACpC,YAAY,CAAC;AACb,YAAY,gBAAgB,EAAE,CAAC,OAAO,KAAK;AAC3C,gBAAgB,SAAS,CAAC,gBAAgB,CAAC,OAAO,CAAC;AACnD,YAAY,CAAC;AACb,YAAY,sBAAsB,EAAE,CAAC,OAAO,KAAK;AACjD,gBAAgB,SAAS,CAAC,sBAAsB,CAAC,OAAO,CAAC;AACzD,YAAY,CAAC;AACb,YAAY,gBAAgB,EAAE,CAAC,OAAO,KAAK;AAC3C,gBAAgB,SAAS,CAAC,gBAAgB,CAAC,OAAO,CAAC;AACnD,YAAY,CAAC;AACb,YAAY,aAAa,EAAE,CAAC,OAAO,KAAK;AACxC,gBAAgB,SAAS,CAAC,aAAa,CAAC,IAAI,EAAE,OAAO,CAAC;AACtD,YAAY,CAAC;AACb,SAAS;AACT,IAAI;AACJ,IAAI,iCAAiC,GAAG;AACxC,QAAQ,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,IAAI;AAC3C,QAAQ,OAAO;AACf,YAAY,SAAS,EAAE,MAAM,OAAO,CAAC,MAAM;AAC3C,YAAY,UAAU,EAAE,MAAM,OAAO,CAAC,WAAW,KAAK,IAAI;AAC1D,YAAY,UAAU,EAAE,MAAM,OAAO,CAAC,WAAW,KAAK,IAAI;AAC1D,YAAY,oBAAoB,EAAE,MAAM,OAAO,CAAC,iBAAiB;AACjE,YAAY,oBAAoB,EAAE,CAAC,MAAM,KAAK;AAC9C,gBAAgB,OAAO,CAAC,iBAAiB,GAAG,MAAM;AAClD,YAAY,CAAC;AACb,YAAY,oBAAoB,EAAE,MAAM,OAAO,CAAC,iBAAiB;AACjE,YAAY,oBAAoB,EAAE,MAAM,OAAO,CAAC,iBAAiB;AACjE,YAAY,oBAAoB,EAAE,CAAC,MAAM,KAAK;AAC9C,gBAAgB,OAAO,CAAC,iBAAiB,GAAG,MAAM;AAClD,YAAY,CAAC;AACb,YAAY,oBAAoB,EAAE,MAAM,OAAO,CAAC,iBAAiB;AACjE,YAAY,mBAAmB,EAAE,CAAC,SAAS,EAAE,OAAO,KAAK,SAAS,CAAC,mBAAmB,CAAC,SAAS,EAAE,OAAO,CAAC;AAC1G,YAAY,0BAA0B,EAAE,MAAM,IAAI,CAAC,cAAc,CAAC,0BAA0B,EAAE;AAC9F,YAAY,oBAAoB,EAAE,CAAC,SAAS,EAAE,mBAAmB,KAAK,SAAS,CAAC,oBAAoB,CAAC,SAAS,EAAE,mBAAmB,CAAC;AACpI,YAAY,wBAAwB,EAAE,CAAC,MAAM,KAAK;AAClD,gBAAgB,SAAS,CAAC,wBAAwB,CAAC,MAAM,CAAC;AAC1D,YAAY,CAAC;AACb,YAAY,YAAY,EAAE,CAAC,KAAK,KAAK;AACrC,gBAAgB,SAAS,CAAC,YAAY,CAAC,KAAK,CAAC;AAC7C,YAAY,CAAC;AACb,YAAY,eAAe,EAAE,CAAC,IAAI,KAAK;AACvC,gBAAgB,SAAS,CAAC,eAAe,CAAC,IAAI,CAAC;AAC/C,YAAY,CAAC;AACb,YAAY,YAAY,EAAE,CAAC,KAAK,KAAK;AACrC,gBAAgB,SAAS,CAAC,YAAY,CAAC,KAAK,CAAC;AAC7C,YAAY,CAAC;AACb,YAAY,gBAAgB,EAAE,CAAC,IAAI,KAAK;AACxC,gBAAgB,SAAS,CAAC,gBAAgB,CAAC,IAAI,CAAC;AAChD,YAAY,CAAC;AACb,YAAY,aAAa,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK;AAC/C,gBAAgB,SAAS,CAAC,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC;AACvD,YAAY,CAAC;AACb,YAAY,YAAY,EAAE,MAAM;AAChC,gBAAgB,SAAS,CAAC,YAAY,EAAE;AACxC,YAAY,CAAC;AACb,YAAY,QAAQ,EAAE,MAAM;AAC5B,gBAAgB,SAAS,CAAC,QAAQ,EAAE;AACpC,YAAY,CAAC;AACb,YAAY,gBAAgB,EAAE,CAAC,OAAO,KAAK;AAC3C,gBAAgB,SAAS,CAAC,gBAAgB,CAAC,OAAO,CAAC;AACnD,YAAY,CAAC;AACb,SAAS;AACT,IAAI;AACJ,IAAI,uBAAuB,GAAG;AAC9B,QAAQ,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,IAAI;AAC3C,QAAQ,OAAO;AACf,YAAY,SAAS,EAAE,MAAM,OAAO,CAAC,MAAM;AAC3C,YAAY,cAAc,EAAE,MAAM,SAAS,CAAC,cAAc,EAAE;AAC5D,YAAY,QAAQ,EAAE,MAAM,SAAS,CAAC,QAAQ,EAAE;AAChD,YAAY,mBAAmB,EAAE,CAAC,SAAS,EAAE,OAAO,KAAK,SAAS,CAAC,mBAAmB,CAAC,SAAS,EAAE,OAAO,CAAC;AAC1G,YAAY,sBAAsB,EAAE,CAAC,SAAS,EAAE,OAAO,KAAK;AAC5D,gBAAgB,SAAS,CAAC,sBAAsB,CAAC,SAAS,EAAE,OAAO,CAAC;AACpE,YAAY,CAAC;AACb,YAAY,iCAAiC,EAAE,MAAM;AACrD,gBAAgB,SAAS,CAAC,iCAAiC,EAAE;AAC7D,YAAY,CAAC;AACb,YAAY,yBAAyB,EAAE,MAAM,IAAI,CAAC,cAAc,CAAC,yBAAyB,EAAE;AAC5F,YAAY,sBAAsB,EAAE,CAAC,KAAK,KAAK,IAAI,CAAC,cAAc,CAAC,sBAAsB,CAAC,KAAK,CAAC;AAChG,YAAY,4BAA4B,EAAE,CAAC,KAAK,KAAK,IAAI,CAAC,cAAc,CAAC,4BAA4B,CAAC,KAAK,CAAC;AAC5G,YAAY,wBAAwB,EAAE,MAAM,IAAI,CAAC,wBAAwB,EAAE;AAC3E,YAAY,YAAY,EAAE,MAAM;AAChC,gBAAgB,SAAS,CAAC,YAAY,EAAE;AACxC,YAAY,CAAC;AACb,YAAY,cAAc,EAAE,MAAM;AAClC,gBAAgB,SAAS,CAAC,cAAc,EAAE;AAC1C,YAAY,CAAC;AACb,YAAY,oBAAoB,EAAE,MAAM;AACxC,gBAAgB,SAAS,CAAC,oBAAoB,EAAE;AAChD,YAAY,CAAC;AACb,YAAY,gBAAgB,EAAE,CAAC,OAAO,KAAK;AAC3C,gBAAgB,SAAS,CAAC,gBAAgB,CAAC,OAAO,CAAC;AACnD,YAAY,CAAC;AACb,YAAY,sBAAsB,EAAE,CAAC,OAAO,KAAK;AACjD,gBAAgB,SAAS,CAAC,sBAAsB,CAAC,OAAO,CAAC;AACzD,YAAY,CAAC;AACb,YAAY,gBAAgB,EAAE,CAAC,OAAO,KAAK;AAC3C,gBAAgB,SAAS,CAAC,gBAAgB,CAAC,OAAO,CAAC;AACnD,YAAY,CAAC;AACb,SAAS;AACT,IAAI;AACJ,IAAI,uBAAuB,GAAG;AAC9B,QAAQ,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,IAAI;AAC3C,QAAQ,OAAO;AACf,YAAY,SAAS,EAAE,MAAM,OAAO,CAAC,MAAM;AAC3C,YAAY,gBAAgB,EAAE,MAAM,OAAO,CAAC,aAAa;AACzD,YAAY,gBAAgB,EAAE,MAAM,OAAO,CAAC,aAAa;AACzD,YAAY,eAAe,EAAE,MAAM,OAAO,CAAC,mBAAmB;AAC9D,YAAY,eAAe,EAAE,CAAC,MAAM,KAAK;AACzC,gBAAgB,OAAO,CAAC,mBAAmB,GAAG,MAAM;AACpD,YAAY,CAAC;AACb,YAAY,sBAAsB,EAAE,MAAM,OAAO,CAAC,mBAAmB;AACrE,YAAY,UAAU,EAAE,MAAM,OAAO,CAAC,OAAO;AAC7C,YAAY,UAAU,EAAE,MAAM,OAAO,CAAC,UAAU;AAChD,YAAY,aAAa,EAAE,MAAM,OAAO,CAAC,aAAa,EAAE;AACxD,YAAY,mBAAmB,EAAE,CAAC,SAAS,EAAE,OAAO,KAAK,SAAS,CAAC,mBAAmB,CAAC,SAAS,EAAE,OAAO,CAAC;AAC1G,YAAY,4BAA4B,EAAE,MAAM,IAAI,CAAC,cAAc,CAAC,4BAA4B,EAAE;AAClG,YAAY,oBAAoB,EAAE,CAAC,SAAS,EAAE,mBAAmB,KAAK,SAAS,CAAC,oBAAoB,CAAC,SAAS,EAAE,mBAAmB,CAAC;AACpI,YAAY,YAAY,EAAE,MAAM;AAChC,gBAAgB,SAAS,CAAC,YAAY,EAAE;AACxC,YAAY,CAAC;AACb,YAAY,QAAQ,EAAE,MAAM;AAC5B,gBAAgB,SAAS,CAAC,QAAQ,EAAE;AACpC,YAAY,CAAC;AACb,YAAY,gBAAgB,EAAE,CAAC,OAAO,KAAK;AAC3C,gBAAgB,SAAS,CAAC,gBAAgB,CAAC,OAAO,CAAC;AACnD,YAAY,CAAC;AACb,YAAY,uBAAuB,EAAE,CAAC,OAAO,KAAK;AAClD,gBAAgB,SAAS,CAAC,uBAAuB,CAAC,OAAO,CAAC;AAC1D,YAAY,CAAC;AACb,SAAS;AACT,IAAI;AACJ,IAAI,qBAAqB,GAAG;AAC5B,QAAQ,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,IAAI;AAC3C,QAAQ,OAAO;AACf,YAAY,SAAS,EAAE,MAAM,OAAO,CAAC,MAAM;AAC3C,YAAY,gBAAgB,EAAE,MAAM,OAAO,CAAC,aAAa;AACzD,YAAY,cAAc,EAAE,MAAM,OAAO,CAAC,WAAW;AACrD,YAAY,cAAc,EAAE,CAAC,OAAO,KAAK;AACzC,gBAAgB,OAAO,CAAC,WAAW,GAAG,OAAO;AAC7C,YAAY,CAAC;AACb,YAAY,aAAa,EAAE,MAAM,OAAO,CAAC,aAAa,EAAE;AACxD,YAAY,mBAAmB,EAAE,CAAC,SAAS,EAAE,OAAO,KAAK,SAAS,CAAC,mBAAmB,CAAC,SAAS,EAAE,OAAO,CAAC;AAC1G,YAAY,0BAA0B,EAAE,CAAC,KAAK,KAAK,IAAI,CAAC,cAAc,CAAC,0BAA0B,CAAC,KAAK,CAAC;AACxG,YAAY,wBAAwB,EAAE,MAAM,IAAI,CAAC,wBAAwB,EAAE;AAC3E,YAAY,oBAAoB,EAAE,CAAC,SAAS,EAAE,mBAAmB,KAAK,SAAS,CAAC,oBAAoB,CAAC,SAAS,EAAE,mBAAmB,CAAC;AACpI,YAAY,QAAQ,EAAE,MAAM,SAAS,CAAC,QAAQ,EAAE;AAChD,YAAY,YAAY,EAAE,MAAM;AAChC,gBAAgB,SAAS,CAAC,YAAY,EAAE;AACxC,YAAY,CAAC;AACb,YAAY,cAAc,EAAE,MAAM;AAClC,gBAAgB,SAAS,CAAC,cAAc,EAAE;AAC1C,YAAY,CAAC;AACb,YAAY,QAAQ,EAAE,MAAM;AAC5B,gBAAgB,SAAS,CAAC,QAAQ,EAAE;AACpC,YAAY,CAAC;AACb,YAAY,gBAAgB,EAAE,CAAC,OAAO,KAAK;AAC3C,gBAAgB,SAAS,CAAC,gBAAgB,CAAC,OAAO,CAAC;AACnD,YAAY,CAAC;AACb,YAAY,gBAAgB,EAAE,CAAC,OAAO,KAAK;AAC3C,gBAAgB,SAAS,CAAC,gBAAgB,CAAC,OAAO,CAAC;AACnD,YAAY,CAAC;AACb,YAAY,uBAAuB,EAAE,CAAC,OAAO,KAAK;AAClD,gBAAgB,SAAS,CAAC,uBAAuB,CAAC,OAAO,CAAC;AAC1D,YAAY,CAAC;AACb,SAAS;AACT,IAAI;AACJ;;ACxdO,SAAS,qBAAqB,CAAC,kBAAkB,EAAE,gBAAgB,EAAE,IAAI,EAAE;AAClF,IAAI,IAAI,kBAAkB,EAAE;AAC5B,QAAQ,kBAAkB,CAAC,MAAM,GAAG,CAAC,IAAI;AACzC,QAAQ,kBAAkB,CAAC,YAAY,CAAC,aAAa,EAAE,IAAI,GAAG,OAAO,GAAG,MAAM,CAAC;AAC/E,IAAI;AACJ,IAAI,IAAI,gBAAgB,EAAE;AAC1B,QAAQ,gBAAgB,CAAC,MAAM,GAAG,IAAI;AACtC,QAAQ,gBAAgB,CAAC,YAAY,CAAC,aAAa,EAAE,IAAI,GAAG,MAAM,GAAG,OAAO,CAAC;AAC7E,IAAI;AACJ;;ACTO,SAAS,uBAAuB,CAAC,MAAM,EAAE;AAChD,IAAI,QAAQ,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;AACjC,QAAQ,MAAM,CAAC,MAAM,KAAK,CAAC;AAC3B,QAAQ,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,KAAK,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AACvD;AACO,SAAS,gCAAgC,CAAC,MAAM,EAAE,OAAO,GAAG,KAAK,EAAE;AAC1E,IAAI,MAAM,QAAQ,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AACvC,IAAI,QAAQ,MAAM,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM;AAC7C,QAAQ,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,IAAI,OAAO,CAAC;AACpF;AACO,SAAS,0BAA0B,CAAC,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE;AAClF,IAAI,IAAI,CAAC,uBAAuB,CAAC,YAAY,CAAC,IAAI,CAAC,uBAAuB,CAAC,WAAW,CAAC,EAAE;AACzF,QAAQ,OAAO,EAAE;AACjB,IAAI;AACJ,IAAI,OAAO,UAAU,CAAC,yBAAyB,CAAC,WAAW,EAAE,UAAU,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC;AACtG;AACO,SAAS,kBAAkB,CAAC,KAAK,EAAE;AAC1C,IAAI,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC;AACvC,QAAQ,OAAO,KAAK;AACpB,IAAI,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,KAAK;AAC9B,IAAI,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC;AAC5B;AACO,SAAS,sBAAsB,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE;AAClE,IAAI,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,MAAM;AACrC,IAAI,OAAO,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC;AAC7F;AACO,SAAS,wBAAwB,CAAC,KAAK,EAAE,UAAU,EAAE;AAC5D,IAAI,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC;AAClC,QAAQ,OAAO,KAAK;AACpB,IAAI,MAAM,WAAW,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AAC3C,IAAI,MAAM,WAAW,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;AAC3C,IAAI,MAAM,cAAc,GAAG,UAAU,CAAC,yBAAyB,CAAC,KAAK,EAAE,WAAW,CAAC;AACnF,IAAI,MAAM,cAAc,GAAG,UAAU,CAAC,yBAAyB,CAAC,KAAK,EAAE,WAAW,CAAC;AACnF,IAAI,MAAM,wBAAwB,GAAG,CAAC,MAAM,KAAK;AACjD,QAAQ,IAAI;AACZ,YAAY,MAAM,KAAK,GAAG,UAAU,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,KAAK;AAC9D,YAAY,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;AACvC,gBAAgB,OAAO,MAAM,CAAC,iBAAiB;AAC/C,YAAY,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,CAAC;AAChE,QAAQ;AACR,QAAQ,MAAM;AACd,YAAY,OAAO,MAAM,CAAC,iBAAiB;AAC3C,QAAQ;AACR,IAAI,CAAC;AACL,IAAI,OAAO,wBAAwB,CAAC,cAAc,CAAC,GAAG,wBAAwB,CAAC,cAAc;AAC7F,UAAU;AACV,UAAU,cAAc;AACxB;AACO,SAAS,kBAAkB,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE;AAC/D,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE;AAClB,IAAI,IAAI,CAAC,uBAAuB,CAAC,SAAS,CAAC;AAC3C,QAAQ;AACR,IAAI,IAAI,gCAAgC,CAAC,SAAS,CAAC;AACnD,QAAQ;AACR,IAAI,MAAM,EAAE,UAAU,EAAE,GAAG,OAAO;AAClC,IAAI,MAAM,CAAC,SAAS,EAAE;AACtB,IAAI,MAAM,eAAe,GAAG,CAAC,EAAE,GAAG,MAAM,CAAC,OAAO,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,MAAM;AACzF,IAAI,MAAM,eAAe,GAAG,CAAC,EAAE,GAAG,MAAM,CAAC,OAAO,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,KAAK;AACxF,IAAI,MAAM,cAAc,GAAG,MAAM,CAAC,cAAc,EAAE;AAClD,IAAI,MAAM,YAAY,GAAG,sBAAsB,CAAC,cAAc,EAAE,SAAS,EAAE,UAAU,CAAC;AACtF,IAAI,MAAM,gBAAgB,GAAG,OAAO,CAAC;AACrC,UAAU,wBAAwB,CAAC,SAAS,EAAE,UAAU;AACxD,UAAU,SAAS;AACnB,IAAI,IAAI,aAAa,GAAG,cAAc;AACtC,IAAI,IAAI;AACR,QAAQ,MAAM,CAAC,GAAG,CAAC;AACnB,YAAY,OAAO,EAAE,QAAQ;AAC7B,YAAY,OAAO,EAAE,QAAQ;AAC7B,SAAS,CAAC;AACV,QAAQ,MAAM,CAAC,mBAAmB,CAAC,cAAc,EAAE,QAAQ,EAAE,QAAQ,CAAC;AACtE,QAAQ,MAAM,CAAC,SAAS,EAAE;AAC1B,QAAQ,MAAM,mBAAmB,GAAG,MAAM,CAAC,mBAAmB,EAAE;AAChE,QAAQ,MAAM,UAAU,GAAG,UAAU,CAAC,yBAAyB,CAAC,gBAAgB,EAAE,mBAAmB,CAAC;AACtG,QAAQ,IAAI,CAAC,uBAAuB,CAAC,UAAU,CAAC;AAChD,YAAY;AACZ,QAAQ,MAAM,UAAU,GAAG,UAAU,CAAC,WAAW,CAAC,UAAU,CAAC;AAC7D,QAAQ,MAAM,CAAC,GAAG,CAAC;AACnB,YAAY,KAAK,EAAE,KAAK;AACxB,YAAY,KAAK,EAAE,KAAK;AACxB,SAAS,CAAC;AACV,QAAQ,MAAM,CAAC,GAAG,CAAC;AACnB,YAAY,KAAK,EAAE,UAAU,CAAC,KAAK;AACnC,YAAY,MAAM,EAAE,UAAU,CAAC,MAAM;AACrC,YAAY,MAAM,EAAE,UAAU,CAAC,MAAM;AACrC,YAAY,KAAK,EAAE,UAAU,CAAC,KAAK;AACnC,YAAY,KAAK,EAAE,CAAC,EAAE,GAAG,UAAU,CAAC,KAAK,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC;AAC7E,SAAS,CAAC;AACV,QAAQ,IAAI,OAAO,UAAU,CAAC,KAAK,KAAK,SAAS,IAAI,OAAO,UAAU,CAAC,KAAK,KAAK,SAAS,EAAE;AAC5F,YAAY,MAAM,CAAC,GAAG,CAAC;AACvB,gBAAgB,IAAI,OAAO,UAAU,CAAC,KAAK,KAAK,SAAS,GAAG,EAAE,KAAK,EAAE,UAAU,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC;AAC7F,gBAAgB,IAAI,OAAO,UAAU,CAAC,KAAK,KAAK,SAAS,GAAG,EAAE,KAAK,EAAE,UAAU,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC;AAC7F,aAAa,CAAC;AACd,QAAQ;AACR,QAAQ,aAAa,GAAG,YAAY;AACpC,IAAI;AACJ,YAAY;AACZ,QAAQ,MAAM,CAAC,GAAG,CAAC;AACnB,YAAY,OAAO,EAAE,eAAe;AACpC,YAAY,OAAO,EAAE,eAAe;AACpC,SAAS,CAAC;AACV,QAAQ,MAAM,CAAC,mBAAmB,CAAC,aAAa,EAAE,QAAQ,EAAE,QAAQ,CAAC;AACrE,QAAQ,MAAM,CAAC,SAAS,EAAE;AAC1B,IAAI;AACJ;;AChGA,MAAM,oBAAoB,GAAG,IAAI;AACjC,MAAM,oBAAoB,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;AAC9E,SAAS,aAAa,CAAC,MAAM,EAAE;AAC/B,IAAI,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AAC3B;AACA,SAAS,kBAAkB,CAAC,KAAK,EAAE;AACnC,IAAI,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;AAC3C,QAAQ,OAAO,KAAK;AACpB,IAAI,MAAM,SAAS,GAAG,KAAK;AAC3B,IAAI,OAAO,OAAO,SAAS,CAAC,GAAG,KAAK,UAAU,IAAI,OAAO,SAAS,CAAC,EAAE,KAAK,UAAU;AACpF;AACA,SAAS,aAAa,CAAC,KAAK,EAAE;AAC9B,IAAI,OAAO,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;AAC/E;AACA,SAAS,eAAe,CAAC,iBAAiB,EAAE,MAAM,EAAE;AACpD,IAAI,MAAM,iBAAiB,GAAG,qBAAqB,CAAC,iBAAiB,CAAC;AACtE,IAAI,MAAM,aAAa,GAAG,iBAAiB,CAAC,MAAM;AAClD,IAAI,OAAO,iBAAiB,CAAC,QAAQ;AACrC,IAAI,OAAO,iBAAiB,CAAC,eAAe;AAC5C,IAAI,OAAO,iBAAiB,CAAC,MAAM;AACnC,IAAI,MAAM,UAAU,GAAG,qBAAqB,CAAC,MAAM,CAAC;AACpD,IAAI,MAAM,YAAY,GAAG,qBAAqB,CAAC,MAAM,CAAC,MAAM,CAAC;AAC7D,IAAI,MAAM,iBAAiB,GAAG,qBAAqB,CAAC,aAAa,CAAC,aAAa,CAAC,GAAG,aAAa,GAAG,EAAE,CAAC;AACtG,IAAI,OAAO;AACX,QAAQ,GAAG,iBAAiB;AAC5B,QAAQ,GAAG,UAAU;AACrB,QAAQ,MAAM,EAAE;AAChB,YAAY,GAAG,iBAAiB;AAChC,YAAY,GAAG,YAAY;AAC3B,SAAS;AACT,KAAK;AACL;AACA,SAAS,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE;AAC1C,IAAI,aAAa,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,oBAAoB,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;AAClE;AACA,SAAS,kBAAkB,CAAC,KAAK,EAAE;AACnC,IAAI,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,oBAAoB,CAAC,GAAG,CAAC,KAAK,CAAC;AACvE;AACA,SAAS,gBAAgB,CAAC,OAAO,EAAE,KAAK,EAAE;AAC1C,IAAI,IAAI,kBAAkB,CAAC,KAAK,CAAC;AACjC,QAAQ,OAAO,KAAK;AACpB,IAAI,aAAa,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,uCAAuC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,wBAAwB,CAAC,CAAC;AACnH,IAAI,OAAO,MAAM;AACjB;AACA,SAAS,wBAAwB,CAAC,KAAK,EAAE;AACzC,IAAI,IAAI,KAAK,KAAK,SAAS;AAC3B,QAAQ,OAAO,IAAI;AACnB,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ;AACjC,QAAQ,OAAO,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;AACrC,IAAI,IAAI,OAAO,KAAK,KAAK,UAAU;AACnC,QAAQ,OAAO,IAAI;AACnB,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;AAC1D,QAAQ,OAAO,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AACxD,IAAI;AACJ,IAAI,OAAO,KAAK;AAChB;AACA,SAAS,cAAc,CAAC,KAAK,EAAE;AAC/B,IAAI,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;AAC9D;AACA,SAAS,mBAAmB,CAAC,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE;AACxD,IAAI,IAAI,cAAc,CAAC,KAAK,CAAC;AAC7B,QAAQ,OAAO,IAAI;AACnB,IAAI,eAAe,CAAC,OAAO,EAAE,CAAC,EAAE,SAAS,CAAC,gCAAgC,CAAC,CAAC;AAC5E,IAAI,OAAO,KAAK;AAChB;AACA,SAAS,qBAAqB,CAAC,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE;AAC1D,IAAI,IAAI,cAAc,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC;AAC1C,QAAQ,OAAO,IAAI;AACnB,IAAI,eAAe,CAAC,OAAO,EAAE,CAAC,EAAE,SAAS,CAAC,kCAAkC,CAAC,CAAC;AAC9E,IAAI,OAAO,KAAK;AAChB;AACA,SAAS,wBAAwB,CAAC,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE;AAC7D,IAAI,IAAI,cAAc,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC;AAC3C,QAAQ,OAAO,IAAI;AACnB,IAAI,eAAe,CAAC,OAAO,EAAE,CAAC,EAAE,SAAS,CAAC,sCAAsC,CAAC,CAAC;AAClF,IAAI,OAAO,KAAK;AAChB;AACA,SAAS,qBAAqB,CAAC,OAAO,EAAE,MAAM,EAAE;AAChD,IAAI,MAAM,MAAM,GAAG;AACnB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC;AAC/B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC;AACjC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC;AACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC;AACzB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC;AACjC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC;AAC7B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC;AAC3B,KAAK;AACL,IAAI,KAAK,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,IAAI,MAAM,EAAE;AAC7C,QAAQ,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC,EAAE;AAC9C,YAAY,eAAe,CAAC,OAAO,EAAE,CAAC,EAAE,SAAS,CAAC,iCAAiC,CAAC,CAAC;AACrF,YAAY,OAAO,KAAK;AACxB,QAAQ;AACR,IAAI;AACJ,IAAI,OAAO,IAAI;AACf;AACA,SAAS,uBAAuB,CAAC,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE;AACpF,IAAI,IAAI;AACR,QAAQ,OAAO,cAAc,CAAC,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC;AACrE,IAAI;AACJ,IAAI,OAAO,KAAK,EAAE;AAClB,QAAQ,aAAa,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC,oBAAoB,EAAE,SAAS,CAAC,gBAAgB,CAAC,CAAC;AACzF,QAAQ,OAAO,IAAI;AACnB,IAAI;AACJ;AACA,SAAS,oBAAoB,CAAC,OAAO,EAAE,MAAM,EAAE;AAC/C,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;AACrD,QAAQ,eAAe,CAAC,OAAO,EAAE,6CAA6C,CAAC;AAC/E,QAAQ,OAAO,IAAI;AACnB,IAAI;AACJ,IAAI,MAAM,cAAc,GAAG,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC;AAClD,IAAI,MAAM,SAAS,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC,KAAK,KAAK,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC3G,IAAI,IAAI,CAAC,SAAS,EAAE;AACpB,QAAQ,eAAe,CAAC,OAAO,EAAE,+CAA+C,CAAC;AACjF,QAAQ,OAAO,IAAI;AACnB,IAAI;AACJ,IAAI,IAAI,WAAW,CAAC,cAAc,CAAC,IAAI,oBAAoB,EAAE;AAC7D,QAAQ,eAAe,CAAC,OAAO,EAAE,8CAA8C,CAAC;AAChF,QAAQ,OAAO,IAAI;AACnB,IAAI;AACJ,IAAI,OAAO,cAAc;AACzB;AACA,SAAS,gBAAgB,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE;AAClD,IAAI,IAAI,OAAO,CAAC,oBAAoB,EAAE;AACtC,QAAQ,OAAO,CAAC,oBAAoB,CAAC,KAAK,EAAE,MAAM,CAAC;AACnD,IAAI;AACJ,SAAS;AACT,QAAQ,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;AACvD,IAAI;AACJ;AACA,SAAS,WAAW,CAAC,MAAM,EAAE;AAC7B,IAAI,IAAI,IAAI,GAAG,CAAC;AAChB,IAAI,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE;AAC3D,QAAQ,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC;AACrC,QAAQ,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,KAAK,GAAG,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC;AACxD,QAAQ,IAAI,IAAI,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC;AACvD,IAAI;AACJ,IAAI,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC;AAC7B;AACO,SAAS,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,EAAE,EAAE;AACjD,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AACtE,IAAI,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,GAAG,OAAO;AAC7D,IAAI,IAAI,CAAC,MAAM;AACf,QAAQ,OAAO,IAAI;AACnB,IAAI,MAAM,YAAY,GAAG,eAAe,CAAC,OAAO,CAAC,iBAAiB,EAAE,MAAM,CAAC;AAC3E,IAAI,MAAM,kBAAkB,GAAG,CAAC,EAAE,GAAG,YAAY,CAAC,KAAK,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,MAAM;AAChG,IAAI,IAAI,CAAC,qBAAqB,CAAC,OAAO,EAAE,YAAY,CAAC;AACrD,QAAQ,OAAO,IAAI;AACnB,IAAI,MAAM,SAAS,GAAG,OAAO,MAAM,CAAC,eAAe,KAAK;AACxD,UAAU;AACV,UAAU,gBAAgB,CAAC,OAAO,EAAE,kBAAkB,CAAC;AACvD,IAAI,MAAM,cAAc,GAAG;AAC3B,QAAQ,KAAK,EAAE,OAAO,CAAC,gBAAgB;AACvC,QAAQ,MAAM,EAAE,OAAO,CAAC,iBAAiB;AACzC,QAAQ,KAAK,EAAE,iBAAiB;AAChC,QAAQ,KAAK,EAAE,GAAG;AAClB,QAAQ,GAAG,EAAE,CAAC;AACd,QAAQ,IAAI,EAAE,SAAS;AACvB,QAAQ,GAAG,EAAE,SAAS;AACtB,QAAQ,KAAK,EAAE,CAAC;AAChB,QAAQ,UAAU,EAAE,IAAI;AACxB,QAAQ,GAAG,YAAY;AACvB,QAAQ,KAAK,EAAE,SAAS;AACxB,KAAK;AACL,IAAI,MAAM,WAAW,GAAG,EAAE;AAC1B,IAAI,IAAI,IAAI;AACZ,IAAI,IAAI,GAAG;AACX,IAAI,MAAM,YAAY,GAAG,OAAO,CAAC,WAAW,EAAE;AAC9C,IAAI,IAAI,YAAY,CAAC,IAAI,KAAK,SAAS,IAAI,YAAY,EAAE;AACzD,QAAQ,MAAM,aAAa,GAAG,CAAC,CAAC,EAAE,GAAG,YAAY,CAAC,IAAI,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,CAAC;AAC1F,aAAa,OAAO,YAAY,CAAC,cAAc,KAAK;AACpD,kBAAkB,YAAY,CAAC,cAAc;AAC7C,kBAAkB,CAAC,CAAC,EAAE,GAAG,YAAY,CAAC,KAAK,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,CAAC,KAAK,CAAC,EAAE,GAAG,YAAY,CAAC,MAAM,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;AACnJ,QAAQ,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,IAAI,CAAC,EAAE,GAAG,cAAc,CAAC,GAAG,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;AACzG,QAAQ,GAAG,GAAG,CAAC,EAAE,GAAG,YAAY,CAAC,GAAG,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,WAAW;AAClF,IAAI;AACJ,SAAS;AACT,QAAQ,MAAM,YAAY,GAAG,uBAAuB,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,WAAW,EAAE,MAAM,CAAC;AAClH,QAAQ,MAAM,WAAW,GAAG,uBAAuB,CAAC,OAAO,EAAE,KAAK,EAAE,YAAY,CAAC,GAAG,EAAE,GAAG,EAAE,WAAW,EAAE,MAAM,CAAC;AAC/G,QAAQ,IAAI,YAAY,KAAK,IAAI,IAAI,WAAW,KAAK,IAAI;AACzD,YAAY,OAAO,IAAI;AACvB,QAAQ,IAAI,GAAG,YAAY;AAC3B,QAAQ,GAAG,GAAG,WAAW;AACzB,IAAI;AACJ,IAAI,MAAM,aAAa,GAAG,uBAAuB,CAAC,OAAO,EAAE,OAAO,EAAE,YAAY,CAAC,KAAK,EAAE,GAAG,EAAE,OAAO,CAAC,gBAAgB,EAAE,MAAM,CAAC;AAC9H,IAAI,MAAM,cAAc,GAAG,uBAAuB,CAAC,OAAO,EAAE,QAAQ,EAAE,YAAY,CAAC,MAAM,EAAE,GAAG,EAAE,OAAO,CAAC,iBAAiB,EAAE,MAAM,CAAC;AAClI,IAAI,IAAI,aAAa,KAAK,IAAI,IAAI,cAAc,KAAK,IAAI;AACzD,QAAQ,OAAO,IAAI;AACnB,IAAI,cAAc,CAAC,KAAK,GAAG,aAAa;AACxC,IAAI,cAAc,CAAC,MAAM,GAAG,cAAc;AAC1C,IAAI,IAAI,EAAE;AACV,IAAI,IAAI,YAAY,CAAC,EAAE,KAAK,SAAS,EAAE;AACvC,QAAQ,MAAM,UAAU,GAAG,uBAAuB,CAAC,OAAO,EAAE,IAAI,EAAE,YAAY,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,MAAM,CAAC;AAClG,QAAQ,IAAI,UAAU,KAAK,IAAI;AAC/B,YAAY,OAAO,IAAI;AACvB,QAAQ,EAAE,GAAG,UAAU;AACvB,IAAI;AACJ,IAAI,IAAI,EAAE;AACV,IAAI,IAAI,YAAY,CAAC,EAAE,KAAK,SAAS,EAAE;AACvC,QAAQ,MAAM,UAAU,GAAG,uBAAuB,CAAC,OAAO,EAAE,IAAI,EAAE,YAAY,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,MAAM,CAAC;AAClG,QAAQ,IAAI,UAAU,KAAK,IAAI;AAC/B,YAAY,OAAO,IAAI;AACvB,QAAQ,EAAE,GAAG,UAAU;AACvB,IAAI;AACJ,IAAI,IAAI,MAAM;AACd,IAAI,IAAI,SAAS,KAAK,QAAQ,EAAE;AAChC,QAAQ,MAAM,cAAc,GAAG,uBAAuB,CAAC,OAAO,EAAE,QAAQ,EAAE,YAAY,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,KAAK,EAAE,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;AACtK,QAAQ,IAAI,cAAc,KAAK,IAAI;AACnC,YAAY,OAAO,IAAI;AACvB,QAAQ,MAAM,GAAG,cAAc;AAC/B,IAAI;AACJ,IAAI,MAAM,aAAa,GAAG,SAAS,KAAK,SAAS,GAAG,oBAAoB,CAAC,OAAO,EAAE,YAAY,CAAC,MAAM,CAAC,GAAG,IAAI;AAC7G,IAAI,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC;AACnD,QAAQ,CAAC,mBAAmB,CAAC,OAAO,EAAE,KAAK,EAAE,GAAG,CAAC;AACjD,QAAQ,CAAC,qBAAqB,CAAC,OAAO,EAAE,OAAO,EAAE,cAAc,CAAC,KAAK,CAAC;AACtE,QAAQ,CAAC,qBAAqB,CAAC,OAAO,EAAE,QAAQ,EAAE,cAAc,CAAC,MAAM,CAAC;AACxE,QAAQ,CAAC,mBAAmB,CAAC,OAAO,EAAE,KAAK,EAAE,cAAc,CAAC,GAAG,CAAC;AAChE,QAAQ,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,EAAE,cAAc,CAAC,KAAK,CAAC;AACpE,QAAQ,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,EAAE,cAAc,CAAC,KAAK,CAAC,EAAE;AACtE,QAAQ,OAAO,IAAI;AACnB,IAAI;AACJ,IAAI,IAAI,CAAC,EAAE,KAAK,SAAS,IAAI,CAAC,wBAAwB,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC;AACzE,SAAS,EAAE,KAAK,SAAS,IAAI,CAAC,wBAAwB,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;AAC1E,SAAS,MAAM,KAAK,SAAS,IAAI,CAAC,qBAAqB,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;AACnF,SAAS,SAAS,KAAK,SAAS,IAAI,aAAa,KAAK,IAAI,CAAC,EAAE;AAC7D,QAAQ,OAAO,IAAI;AACnB,IAAI;AACJ,IAAI,IAAI,mBAAmB,GAAG,IAAI;AAClC,IAAI,IAAI,OAAO,CAAC,UAAU,KAAK,QAAQ,EAAE;AACzC,QAAQ,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC,KAAK,GAAG,EAAE,CAAC;AACzE,QAAQ,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,cAAc,CAAC,MAAM,GAAG,EAAE,CAAC;AAC1E,QAAQ,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,aAAa,CAAC;AACpE,QAAQ,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,EAAE,EAAE,cAAc,CAAC;AACvE,QAAQ,IAAI,SAAS,KAAK,MAAM,CAAC,QAAQ,EAAE,IAAI,UAAU,KAAK,MAAM,CAAC,SAAS,EAAE,EAAE;AAClF,YAAY,mBAAmB,GAAG,EAAE,KAAK,EAAE,MAAM,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,SAAS,EAAE,EAAE;AAC1F,YAAY,gBAAgB,CAAC,OAAO,EAAE,SAAS,EAAE,UAAU,CAAC;AAC5D,QAAQ;AACR,IAAI;AACJ,IAAI,MAAM,uBAAuB,GAAG,MAAM;AAC1C,QAAQ,IAAI,CAAC,mBAAmB;AAChC,YAAY;AACZ,QAAQ,IAAI;AACZ,YAAY,gBAAgB,CAAC,OAAO,EAAE,mBAAmB,CAAC,KAAK,EAAE,mBAAmB,CAAC,MAAM,CAAC;AAC5F,QAAQ;AACR,QAAQ,OAAO,KAAK,EAAE;AACtB,YAAY,aAAa,CAAC,OAAO,EAAE,KAAK,EAAE,yCAAyC,CAAC;AACpF,QAAQ;AACR,IAAI,CAAC;AACL,IAAI,IAAI,IAAI;AACZ,IAAI,IAAI,OAAO,MAAM,CAAC,eAAe,KAAK,UAAU,EAAE;AACtD,QAAQ,IAAI,SAAS;AACrB,QAAQ,IAAI;AACZ,YAAY,SAAS,GAAG,MAAM,CAAC,eAAe,CAAC,cAAc,EAAE,MAAM,EAAE,OAAO,CAAC;AAC/E,QAAQ;AACR,QAAQ,OAAO,KAAK,EAAE;AACtB,YAAY,uBAAuB,EAAE;AACrC,YAAY,aAAa,CAAC,OAAO,EAAE,KAAK,EAAE,4CAA4C,CAAC;AACvF,YAAY,OAAO,IAAI;AACvB,QAAQ;AACR,QAAQ,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,EAAE;AAC5C,YAAY,uBAAuB,EAAE;AACrC,YAAY,aAAa,CAAC,OAAO,EAAE,SAAS,EAAE,qEAAqE,CAAC;AACpH,YAAY,OAAO,IAAI;AACvB,QAAQ;AACR,QAAQ,IAAI,GAAG,SAAS;AACxB,IAAI;AACJ,SAAS;AACT,QAAQ,MAAM,WAAW,GAAG;AAC5B,YAAY,OAAO,EAAE,MAAM;AAC3B,YAAY,OAAO,EAAE,KAAK;AAC1B,SAAS;AACT,QAAQ,QAAQ,SAAS;AACzB,YAAY,KAAK,QAAQ;AACzB,gBAAgB,IAAI,GAAG,IAAI,YAAY,CAAC,MAAM,CAAC;AAC/C,oBAAoB,IAAI;AACxB,oBAAoB,GAAG;AACvB,oBAAoB,GAAG,WAAW;AAClC,oBAAoB,MAAM;AAC1B,oBAAoB,IAAI,EAAE,cAAc,CAAC,KAAK;AAC9C,oBAAoB,OAAO,EAAE,cAAc,CAAC,KAAK;AACjD,oBAAoB,KAAK,EAAE,CAAC,EAAE,GAAG,cAAc,CAAC,KAAK,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,CAAC;AACzF,oBAAoB,GAAG,cAAc,CAAC,MAAM;AAC5C,iBAAiB,CAAC;AAClB,gBAAgB;AAChB,YAAY,KAAK,SAAS;AAC1B,gBAAgB,IAAI,GAAG,IAAI,YAAY,CAAC,OAAO,CAAC;AAChD,oBAAoB,IAAI;AACxB,oBAAoB,GAAG;AACvB,oBAAoB,GAAG,WAAW;AAClC,oBAAoB,EAAE,EAAE,EAAE,KAAK,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,cAAc,CAAC,KAAK,GAAG,CAAC;AACpF,oBAAoB,EAAE,EAAE,EAAE,KAAK,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,cAAc,CAAC,MAAM,GAAG,CAAC;AACrF,oBAAoB,IAAI,EAAE,cAAc,CAAC,KAAK;AAC9C,oBAAoB,OAAO,EAAE,cAAc,CAAC,KAAK;AACjD,oBAAoB,KAAK,EAAE,CAAC,EAAE,GAAG,cAAc,CAAC,KAAK,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,CAAC;AACzF,oBAAoB,GAAG,cAAc,CAAC,MAAM;AAC5C,iBAAiB,CAAC;AAClB,gBAAgB;AAChB,YAAY,KAAK,SAAS,EAAE;AAC5B,gBAAgB,MAAM,OAAO,GAAG,IAAI,YAAY,CAAC,OAAO,CAAC,aAAa,EAAE;AACxE,oBAAoB,GAAG,WAAW;AAClC,oBAAoB,IAAI,EAAE,cAAc,CAAC,KAAK;AAC9C,oBAAoB,OAAO,EAAE,cAAc,CAAC,KAAK;AACjD,oBAAoB,KAAK,EAAE,CAAC,EAAE,GAAG,cAAc,CAAC,KAAK,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,CAAC;AACzF,oBAAoB,GAAG,cAAc,CAAC,MAAM;AAC5C,iBAAiB,CAAC;AAClB,gBAAgB,OAAO,CAAC,SAAS,EAAE;AACnC,gBAAgB,MAAM,YAAY,GAAG,OAAO,CAAC,eAAe,EAAE;AAC9D,gBAAgB,MAAM,MAAM,GAAG,IAAI,GAAG,YAAY,CAAC,IAAI;AACvD,gBAAgB,MAAM,MAAM,GAAG,GAAG,GAAG,YAAY,CAAC,GAAG;AACrD,gBAAgB,OAAO,CAAC,GAAG,CAAC;AAC5B,oBAAoB,IAAI,EAAE,CAAC,CAAC,EAAE,GAAG,OAAO,CAAC,IAAI,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,CAAC,IAAI,MAAM;AAC3F,oBAAoB,GAAG,EAAE,CAAC,CAAC,EAAE,GAAG,OAAO,CAAC,GAAG,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,CAAC,IAAI,MAAM;AACzF,iBAAiB,CAAC;AAClB,gBAAgB,OAAO,CAAC,SAAS,EAAE;AACnC,gBAAgB,IAAI,GAAG,OAAO;AAC9B,gBAAgB;AAChB,YAAY;AACZ,YAAY,KAAK,MAAM;AACvB,YAAY;AACZ,gBAAgB,IAAI,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC;AAC7C,oBAAoB,IAAI;AACxB,oBAAoB,GAAG;AACvB,oBAAoB,GAAG,WAAW;AAClC,oBAAoB,KAAK,EAAE,cAAc,CAAC,KAAK;AAC/C,oBAAoB,MAAM,EAAE,cAAc,CAAC,MAAM;AACjD,oBAAoB,IAAI,EAAE,cAAc,CAAC,KAAK;AAC9C,oBAAoB,OAAO,EAAE,cAAc,CAAC,KAAK;AACjD,oBAAoB,KAAK,EAAE,CAAC,EAAE,GAAG,cAAc,CAAC,KAAK,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,CAAC;AACzF,oBAAoB,IAAI,EAAE,KAAK,SAAS,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC;AACvD,oBAAoB,IAAI,EAAE,KAAK,SAAS,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC;AACvD,oBAAoB,GAAG,cAAc,CAAC,MAAM;AAC5C,iBAAiB,CAAC;AAClB;AACA,IAAI;AACJ,IAAI,MAAM,UAAU,GAAG,IAAI;AAC3B,IAAI,UAAU,CAAC,UAAU,GAAG,YAAY,IAAI,YAAY,GAAG,CAAC,CAAC,YAAY,CAAC,UAAU,GAAG,IAAI;AAC3F,IAAI,UAAU,CAAC,OAAO,GAAG,SAAS,IAAI,YAAY,GAAG,CAAC,CAAC,YAAY,CAAC,OAAO,GAAG,IAAI;AAClF,IAAI,UAAU,CAAC,WAAW,GAAG,aAAa,IAAI,YAAY,GAAG,CAAC,CAAC,YAAY,CAAC,WAAW,GAAG,IAAI;AAC9F,IAAI,UAAU,CAAC,kBAAkB;AACjC,QAAQ,oBAAoB,IAAI,YAAY,GAAG,CAAC,CAAC,YAAY,CAAC,kBAAkB,GAAG,KAAK;AACxF,IAAI,UAAU,CAAC,aAAa;AAC5B,QAAQ,eAAe,IAAI,YAAY,GAAG,CAAC,CAAC,YAAY,CAAC,aAAa,GAAG,IAAI;AAC7E,IAAI,UAAU,CAAC,YAAY,GAAG,CAAC,OAAO,CAAC,aAAa;AACpD,IAAI,UAAU,CAAC,WAAW,GAAG,CAAC,EAAE,GAAG,YAAY,CAAC,WAAW,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,KAAK;AACnG,IAAI,UAAU,CAAC,WAAW,GAAG,CAAC,EAAE,GAAG,YAAY,CAAC,WAAW,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,OAAO;AACrG,IAAI,UAAU,CAAC,UAAU,GAAG,CAAC,EAAE,GAAG,YAAY,CAAC,UAAU,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,CAAC;AAC7F,IAAI,MAAM,MAAM,IAAI,CAAC,EAAE,GAAG,cAAc,CAAC,MAAM,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,EAAE,CAAC;AACrF,IAAI,IAAI,QAAQ,IAAI,MAAM,EAAE;AAC5B,QAAQ,UAAU,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM;AACzC,IAAI;AACJ,SAAS;AACT,QAAQ,UAAU,CAAC,MAAM,GAAG,MAAM;AAClC,IAAI;AACJ,IAAI,IAAI,aAAa,IAAI,MAAM,EAAE;AACjC,QAAQ,UAAU,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW;AACnD,IAAI;AACJ,SAAS;AACT,QAAQ,UAAU,CAAC,WAAW,GAAG,CAAC;AAClC,IAAI;AACJ,IAAI,IAAI,iBAAiB,IAAI,MAAM,EAAE;AACrC,QAAQ,UAAU,CAAC,eAAe,GAAG,MAAM,CAAC,eAAe;AAC3D,IAAI;AACJ,IAAI,MAAM,MAAM,GAAG,OAAO,CAAC,cAAc,EAAE,GAAG,CAAC;AAC/C,IAAI,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC;AAClC,IAAI,cAAc,CAAC,UAAU,EAAE;AAC/B,QAAQ,MAAM,EAAE,MAAM;AACtB,QAAQ,OAAO,EAAE,aAAa,CAAC,MAAM,CAAC;AACtC,QAAQ,QAAQ,EAAE,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,CAAC;AAChD,QAAQ,aAAa,EAAE,cAAc,CAAC,KAAK;AAC3C,QAAQ,cAAc,EAAE,UAAU,CAAC,MAAM;AACzC,QAAQ,mBAAmB,EAAE,UAAU,CAAC,WAAW;AACnD,KAAK,CAAC;AACN,IAAI,uBAAuB,CAAC,UAAU,CAAC;AACvC,IAAI,OAAO,CAAC,WAAW,CAAC,UAAU,CAAC;AACnC,IAAI,eAAe,CAAC,MAAM,EAAE,UAAU,CAAC;AACvC,IAAI,OAAO,CAAC,cAAc,EAAE;AAC5B,IAAI,IAAI,cAAc,CAAC,UAAU,KAAK,KAAK,EAAE;AAC7C,QAAQ,MAAM,CAAC,eAAe,CAAC,UAAU,CAAC;AAC1C,IAAI;AACJ,IAAI,MAAM,CAAC,SAAS,EAAE;AACtB,IAAI,OAAO,CAAC,eAAe,EAAE;AAC7B,IAAI,IAAI,OAAO,MAAM,CAAC,QAAQ,KAAK,UAAU,EAAE;AAC/C,QAAQ,IAAI;AACZ,YAAY,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;AAC/C,QAAQ;AACR,QAAQ,OAAO,KAAK,EAAE;AACtB,YAAY,aAAa,CAAC,OAAO,EAAE,KAAK,EAAE,qCAAqC,CAAC;AAChF,QAAQ;AACR,IAAI;AACJ,IAAI,OAAO,UAAU;AACrB;AACA,SAAS7B,yBAAuB,CAAC,MAAM,EAAE;AACzC,IAAI,IAAI,CAAC,MAAM;AACf,QAAQ,OAAO,KAAK;AACpB,IAAI,MAAM,IAAI,GAAG,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,EAAE;AACjF,IAAI,IAAI,IAAI,KAAK,iBAAiB;AAClC,QAAQ,OAAO,IAAI;AACnB,IAAI,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM;AAChC,IAAI,QAAQ,OAAO,MAAM,KAAK,UAAU;AACxC,SAAS,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,iBAAiB,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;AAC1F;AACA,SAAS,sBAAsB,CAAC,MAAM,EAAE;AACxC,IAAI,MAAM,MAAM,GAAG,MAAM,CAAC,eAAe,EAAE;AAC3C,IAAI,IAAI,CAAC,MAAM;AACf,QAAQ,OAAO,EAAE;AACjB,IAAI,IAAI,CAACA,yBAAuB,CAAC,MAAM,CAAC;AACxC,QAAQ,OAAO,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE;AACnD,IAAI,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU;AACxC,IAAI,MAAM,OAAO,GAAG,OAAO,UAAU,KAAK,UAAU,GAAG,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE;AACnF,IAAI,OAAO,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC;AACvC;AACO,SAAS,kBAAkB,CAAC,OAAO,EAAE;AAC5C,IAAI,MAAM,aAAa,GAAG,sBAAsB,CAAC,OAAO,CAAC,MAAM,CAAC;AAChE,IAAI,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC;AAClC,QAAQ;AACR,IAAI,KAAK,MAAM,IAAI,IAAI,aAAa,EAAE;AACtC,QAAQ,OAAO,CAAC,kBAAkB,CAAC,IAAI,CAAC;AACxC,QAAQ,uBAAuB,CAAC,IAAI,CAAC;AACrC,QAAQ,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;AACnC,IAAI;AACJ,IAAI,OAAO,CAAC,MAAM,CAAC,mBAAmB,EAAE;AACxC,IAAI,OAAO,CAAC,cAAc,EAAE;AAC5B,IAAI,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE;AAC9B,IAAI,OAAO,CAAC,eAAe,EAAE;AAC7B;AACO,SAAS,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,EAAE,EAAE;AACtD,IAAI,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC;AAClE,IAAI,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;AAC1B,QAAQ;AACR,IAAI,KAAK,MAAM,UAAU,IAAI,KAAK,EAAE;AACpC,QAAQ,OAAO,CAAC,kBAAkB,CAAC,UAAU,CAAC;AAC9C,QAAQ,uBAAuB,CAAC,UAAU,CAAC;AAC3C,QAAQ,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC;AACzC,IAAI;AACJ,IAAI,OAAO,CAAC,MAAM,CAAC,mBAAmB,EAAE;AACxC,IAAI,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC;AAC7B,IAAI,OAAO,CAAC,cAAc,EAAE;AAC5B,IAAI,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE;AAC9B,IAAI,IAAI,OAAO,CAAC,WAAW,KAAK,KAAK,EAAE;AACvC,QAAQ,OAAO,CAAC,eAAe,EAAE;AACjC,IAAI;AACJ;;ACtbA,SAAS,uBAAuB,CAAC,MAAM,EAAE;AACzC,IAAI,OAAO,MAAM;AACjB;AACA,SAAS,sBAAsB,CAAC,YAAY,EAAE;AAC9C,IAAI,OAAO;AACX,QAAQ,yBAAyB,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,YAAY,CAAC,IAAI,CAAC,yBAAyB,CAAC,uBAAuB,CAAC,CAAC,CAAC,EAAE,uBAAuB,CAAC,CAAC,CAAC,CAAC;AAChJ,QAAQ,eAAe,EAAE,CAAC,MAAM,KAAK,YAAY,CAAC,IAAI,CAAC,eAAe,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC;AACvG,QAAQ,WAAW,EAAE,CAAC,MAAM,KAAK,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC;AAC/F,QAAQ,KAAK,EAAE,YAAY,CAAC,KAAK;AACjC,KAAK;AACL;AACA,SAAS,uBAAuB,CAAC,MAAM,EAAE;AACzC,IAAI,IAAI,CAAC,MAAM;AACf,QAAQ,OAAO,KAAK;AACpB,IAAI,MAAM,IAAI,GAAG,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,EAAE;AACjF,IAAI,IAAI,IAAI,KAAK,iBAAiB;AAClC,QAAQ,OAAO,IAAI;AACnB,IAAI,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM;AAChC,IAAI,QAAQ,OAAO,MAAM,KAAK,UAAU;AACxC,SAAS,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,iBAAiB,CAAC;AAC/C,YAAY,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,iBAAiB,CAAC;AAClD,YAAY,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;AACnD;AACO,MAAM,oBAAoB,CAAC;AAClC,IAAI,WAAW,CAAC,MAAM,EAAE;AACxB,QAAQ,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,QAAQ,EAAE;AAC9C,YAAY,UAAU,EAAE,IAAI;AAC5B,YAAY,YAAY,EAAE,IAAI;AAC9B,YAAY,QAAQ,EAAE,IAAI;AAC1B,YAAY,KAAK,EAAE;AACnB,SAAS,CAAC;AACV,IAAI;AACJ,IAAI,yBAAyB,GAAG;AAChC,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM;AAClC,QAAQ,OAAO;AACf,YAAY,MAAM,EAAE,MAAM,CAAC,SAAS,EAAE;AACtC,YAAY,MAAM,EAAE,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC;AAClD,YAAY,OAAO,EAAE,MAAM,CAAC,UAAU,EAAE;AACxC,YAAY,aAAa,EAAE,MAAM,MAAM,CAAC,aAAa,EAAE;AACvD,YAAY,gBAAgB,EAAE,MAAM,MAAM,CAAC,gBAAgB,EAAE;AAC7D,YAAY,6BAA6B,EAAE,CAAC,QAAQ,KAAK,MAAM,CAAC,6BAA6B,CAAC,QAAQ,CAAC;AACvG,SAAS;AACT,IAAI;AACJ,IAAI,qBAAqB,GAAG;AAC5B,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM;AAClC,QAAQ,OAAO;AACf,YAAY,MAAM,EAAE,MAAM,CAAC,SAAS,EAAE;AACtC,YAAY,MAAM,EAAE,MAAM,CAAC,aAAa,CAAC,WAAW,CAAC;AACrD,YAAY,OAAO,EAAE,MAAM,CAAC,iBAAiB,EAAE;AAC/C,YAAY,gBAAgB,EAAE,MAAM,CAAC,mBAAmB,EAAE;AAC1D,YAAY,kBAAkB,EAAE,MAAM,CAAC,qBAAqB,EAAE;AAC9D,YAAY,aAAa,EAAE,MAAM,CAAC,gBAAgB,EAAE;AACpD,YAAY,gBAAgB,EAAE,MAAM,MAAM,CAAC,gBAAgB,EAAE;AAC7D,YAAY,gBAAgB,EAAE,CAAC,KAAK,KAAK;AACzC,gBAAgB,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC;AAC9C,YAAY,CAAC;AACb,YAAY,wBAAwB,EAAE,MAAM,MAAM,CAAC,wBAAwB,EAAE;AAC7E,YAAY,wBAAwB,EAAE,CAAC,KAAK,KAAK;AACjD,gBAAgB,MAAM,CAAC,wBAAwB,CAAC,KAAK,CAAC;AACtD,YAAY,CAAC;AACb,YAAY,eAAe,EAAE,MAAM,MAAM,CAAC,eAAe,EAAE;AAC3D,YAAY,eAAe,EAAE,CAAC,QAAQ,KAAK;AAC3C,gBAAgB,MAAM,CAAC,eAAe,CAAC,QAAQ,CAAC;AAChD,YAAY,CAAC;AACb,YAAY,cAAc,EAAE,MAAM,MAAM,CAAC,cAAc,EAAE;AACzD,YAAY,cAAc,EAAE,CAAC,KAAK,KAAK;AACvC,gBAAgB,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC;AAC5C,YAAY,CAAC;AACb,YAAY,oBAAoB,EAAE,MAAM,MAAM,CAAC,oBAAoB,EAAE;AACrE,YAAY,oBAAoB,EAAE,CAAC,KAAK,KAAK;AAC7C,gBAAgB,MAAM,CAAC,oBAAoB,CAAC,KAAK,CAAC;AAClD,YAAY,CAAC;AACb,YAAY,eAAe,EAAE,MAAM,MAAM,CAAC,eAAe,EAAE;AAC3D,YAAY,eAAe,EAAE,CAAC,KAAK,KAAK;AACxC,gBAAgB,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC;AAC7C,YAAY,CAAC;AACb,YAAY,kBAAkB,EAAE,MAAM,MAAM,CAAC,kBAAkB,EAAE;AACjE,YAAY,kBAAkB,EAAE,CAAC,QAAQ,KAAK;AAC9C,gBAAgB,MAAM,CAAC,kBAAkB,CAAC,QAAQ,CAAC;AACnD,YAAY,CAAC;AACb,YAAY,iBAAiB,EAAE,MAAM,MAAM,CAAC,iBAAiB,EAAE;AAC/D,YAAY,iBAAiB,EAAE,CAAC,KAAK,KAAK;AAC1C,gBAAgB,MAAM,CAAC,iBAAiB,CAAC,KAAK,CAAC;AAC/C,YAAY,CAAC;AACb,YAAY,uBAAuB,EAAE,MAAM,MAAM,CAAC,uBAAuB,EAAE;AAC3E,YAAY,uBAAuB,EAAE,CAAC,QAAQ,KAAK;AACnD,gBAAgB,MAAM,CAAC,uBAAuB,CAAC,QAAQ,CAAC;AACxD,YAAY,CAAC;AACb,YAAY,2BAA2B,EAAE,MAAM,MAAM,CAAC,2BAA2B,EAAE;AACnF,YAAY,qBAAqB,EAAE,MAAM;AACzC,gBAAgB,MAAM,CAAC,qBAAqB,EAAE;AAC9C,YAAY,CAAC;AACb,YAAY,wBAAwB,EAAE,CAAC,MAAM,KAAK;AAClD,gBAAgB,MAAM,CAAC,wBAAwB,CAAC,MAAM,CAAC;AACvD,YAAY,CAAC;AACb,YAAY,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK;AAC9C,gBAAgB,MAAM,CAAC,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC;AACnD,YAAY,CAAC;AACb,YAAY,0BAA0B,EAAE,CAAC,aAAa,KAAK;AAC3D,gBAAgB,IAAI,EAAE,EAAE,EAAE;AAC1B,gBAAgB,MAAM,CAAC,iBAAiB,EAAE;AAC1C,gBAAgB,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,EAAE;AACjD,gBAAgB,MAAM,aAAa,GAAG,aAAa,CAAC,aAAa;AACjE,gBAAgB,MAAM,CAAC,gBAAgB,CAAC,aAAa,CAAC;AACtD,gBAAgB,IAAI,aAAa,EAAE;AACnC,oBAAoB,aAAa,CAAC,GAAG,CAAC;AACtC,wBAAwB,OAAO,EAAE,MAAM;AACvC,wBAAwB,OAAO,EAAE,KAAK;AACtC,wBAAwB,UAAU,EAAE,KAAK;AACzC,wBAAwB,OAAO,EAAE,KAAK;AACtC,wBAAwB,WAAW,EAAE,KAAK;AAC1C,wBAAwB,WAAW,EAAE,SAAS;AAC9C,qBAAqB,CAAC;AACtB,oBAAoB,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC,gBAAgB,CAAC,aAAa,CAAC;AAC1G,gBAAgB;AAChB,gBAAgB,MAAM,CAAC,wBAAwB,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,aAAa,CAAC,WAAW,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,MAAM,GAAG,EAAE,CAAC,iBAAiB,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,IAAI,CAAC;AACxL,gBAAgB,MAAM,aAAa,GAAG,aAAa,CAAC,KAAK;AACzD,gBAAgB,MAAM,CAAC,WAAW,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,UAAU,KAAK,CAAC,QAAQ,IAAI,UAAU,CAAC,MAAM,GAAG,QAAQ,CAAC;AAC5H,sBAAsB;AACtB,sBAAsB,QAAQ,EAAE,IAAI,CAAC,CAAC;AACtC,gBAAgB,aAAa,CAAC,OAAO,CAAC,CAAC,UAAU,KAAK;AACtD,oBAAoB,wBAAwB,CAAC,UAAU,CAAC;AACxD,oBAAoB,yBAAyB,CAAC,UAAU,CAAC;AACzD,gBAAgB,CAAC,CAAC;AAClB,gBAAgB,2BAA2B,CAAC,aAAa,CAAC,WAAW,CAAC;AACtE,gBAAgB,sCAAsC,CAAC,IAAI,CAAC,0BAA0B,EAAE,EAAE,aAAa,CAAC,WAAW,CAAC;AACpH,gBAAgB,MAAM,CAAC,cAAc,EAAE;AACvC,gBAAgB,MAAM,CAAC,oBAAoB,EAAE;AAC7C,gBAAgB,MAAM,CAAC,YAAY,EAAE;AACrC,gBAAgB,MAAM,CAAC,QAAQ,EAAE;AACjC,YAAY,CAAC;AACb,YAAY,yBAAyB,EAAE,MAAM;AAC7C,gBAAgB,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,EAAE;AACjD,gBAAgB,IAAI;AACpB,oBAAoB,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,MAAM,CAAC,KAAK,EAAE;AAClF,oBAAoB,IAAI,MAAM,EAAE;AAChC,wBAAwB,MAAM,CAAC,eAAe,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC,eAAe;AACpF,wBAAwB,MAAM,CAAC,SAAS,EAAE;AAC1C,oBAAoB;AACpB,gBAAgB;AAChB,gBAAgB,MAAM;AACtB,gBAAgB;AAChB,gBAAgB,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC;AAC7C,gBAAgB,MAAM,CAAC,wBAAwB,CAAC,KAAK,CAAC;AACtD,gBAAgB,MAAM,CAAC,uBAAuB,CAAC,IAAI,CAAC;AACpD,gBAAgB,MAAM,CAAC,qBAAqB,EAAE;AAC9C,gBAAgB,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC;AAC5C,gBAAgB,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC;AACxC,gBAAgB,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC;AACxC,gBAAgB,MAAM,CAAC,oBAAoB,CAAC,CAAC,CAAC;AAC9C,gBAAgB,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC;AACzC,gBAAgB,MAAM,CAAC,kBAAkB,CAAC,CAAC,CAAC;AAC5C,gBAAgB,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC;AAC3C,gBAAgB,MAAM,CAAC,cAAc,EAAE;AACvC,gBAAgB,MAAM,CAAC,oBAAoB,EAAE;AAC7C,gBAAgB,MAAM,CAAC,YAAY,EAAE;AACrC,gBAAgB,MAAM,CAAC,QAAQ,EAAE;AACjC,YAAY,CAAC;AACb,YAAY,qBAAqB,EAAE,CAAC,IAAI,KAAK;AAC7C,gBAAgB,MAAM,CAAC,qBAAqB,CAAC,IAAI,CAAC;AAClD,YAAY,CAAC;AACb,SAAS;AACT,IAAI;AACJ,IAAI,qBAAqB,GAAG;AAC5B,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM;AAClC,QAAQ,MAAM,UAAU,GAAG,sBAAsB,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;AACrE,QAAQ,IAAI,mBAAmB,GAAG,KAAK;AACvC,QAAQ,MAAM,sBAAsB,GAAG,CAAC,IAAI,KAAK;AACjD,YAAY,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,EAAE;AAC7C,YAAY,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,EAAE;AAC/C,YAAY,IAAI,CAAC,MAAM;AACvB,gBAAgB,OAAO,EAAE;AACzB,YAAY,IAAI,IAAI,KAAK,OAAO,EAAE;AAClC,gBAAgB,IAAI,CAAC,OAAO,CAAC,yBAAyB;AACtD,oBAAoB,OAAO,EAAE;AAC7B,gBAAgB,OAAO,MAAM,CAAC,UAAU,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC;AAC/D,YAAY;AACZ,YAAY,IAAI,CAAC,OAAO,CAAC,+BAA+B;AACxD,gBAAgB,OAAO,EAAE;AACzB,YAAY,OAAO,MAAM,CAAC,UAAU,EAAE,CAAC,MAAM,CAAC,kBAAkB,CAAC;AACjE,QAAQ,CAAC;AACT,QAAQ,MAAM,mCAAmC,GAAG,CAAC,MAAM,KAAK;AAChE,YAAY,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,EAAE;AAC/C,YAAY,QAAQ,OAAO,CAAC,+BAA+B;AAC3D,gBAAgB,OAAO,CAAC,0BAA0B,KAAK,mBAAmB;AAC1E,gBAAgB,kBAAkB,CAAC,MAAM,CAAC;AAC1C,gBAAgB,MAAM,CAAC,cAAc,KAAK,MAAM;AAChD,QAAQ,CAAC;AACT,QAAQ,OAAO;AACf,YAAY,MAAM,EAAE,MAAM,CAAC,aAAa,CAAC,uBAAuB,CAAC;AACjE,YAAY,OAAO,EAAE,MAAM,CAAC,UAAU,EAAE;AACxC,YAAY,KAAK,EAAE,MAAM,CAAC,iBAAiB,EAAE;AAC7C,YAAY,gBAAgB,EAAE,MAAM,MAAM,CAAC,gBAAgB,EAAE;AAC7D,YAAY,eAAe,EAAE,MAAM,MAAM,CAAC,eAAe,EAAE;AAC3D,YAAY,eAAe,EAAE,CAAC,KAAK,KAAK;AACxC,gBAAgB,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC;AAC7C,YAAY,CAAC;AACb,YAAY,kBAAkB,EAAE,MAAM,MAAM,CAAC,kBAAkB,EAAE;AACjE,YAAY,kBAAkB,EAAE,CAAC,QAAQ,KAAK;AAC9C,gBAAgB,MAAM,CAAC,kBAAkB,CAAC,QAAQ,CAAC;AACnD,YAAY,CAAC;AACb,YAAY,iBAAiB,EAAE,MAAM,MAAM,CAAC,iBAAiB,EAAE;AAC/D,YAAY,eAAe,EAAE,MAAM;AACnC,gBAAgB,MAAM,CAAC,kCAAkC,EAAE;AAC3D,YAAY,CAAC;AACb,YAAY,oBAAoB,EAAE,CAAC,QAAQ,KAAK;AAChD,gBAAgB,MAAM,CAAC,oBAAoB,CAAC,QAAQ,CAAC;AACrD,YAAY,CAAC;AACb,YAAY,aAAa,EAAE,MAAM,UAAU;AAC3C,YAAY,sBAAsB;AAClC,YAAY,mCAAmC;AAC/C,YAAY,0BAA0B,EAAE,MAAM;AAC9C,gBAAgB,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,EAAE;AACjD,gBAAgB,MAAM,aAAa,GAAG,MAAM,CAAC,gBAAgB,EAAE;AAC/D,gBAAgB,IAAI,MAAM,CAAC,UAAU,EAAE,IAAI,CAAC,MAAM,IAAI,CAAC,aAAa;AACpE,oBAAoB;AACpB,gBAAgB,MAAM,CAAC,6BAA6B,EAAE;AACtD,gBAAgB,MAAM,CAAC,qCAAqC,CAAC,aAAa,CAAC;AAC3E,YAAY,CAAC;AACb,YAAY,0BAA0B,EAAE,CAAC,YAAY,KAAK;AAC1D,gBAAgB,IAAI,mBAAmB;AACvC,oBAAoB;AACpB,gBAAgB,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,EAAE;AACjD,gBAAgB,MAAM,aAAa,GAAG,MAAM,CAAC,gBAAgB,EAAE;AAC/D,gBAAgB,IAAI,MAAM,CAAC,UAAU,EAAE,IAAI,CAAC,MAAM,IAAI,CAAC,aAAa;AACpE,oBAAoB;AACpB,gBAAgB,MAAM,OAAO,GAAG;AAChC,oBAAoB,GAAG,sBAAsB,CAAC,OAAO,CAAC;AACtD,oBAAoB,GAAG,sBAAsB,CAAC,aAAa,CAAC;AAC5D,iBAAiB;AACjB,gBAAgB,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;AACxC,oBAAoB;AACpB,gBAAgB,aAAa,CAAC,SAAS,EAAE;AACzC,gBAAgB,MAAM,WAAW,GAAG,aAAa,CAAC,mBAAmB,EAAE;AACvE,gBAAgB,MAAM,KAAK,GAAG,0BAA0B,CAAC,YAAY,EAAE,WAAW,EAAE,UAAU,CAAC;AAC/F,gBAAgB,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC,IAAI,gCAAgC,CAAC,KAAK,CAAC,EAAE;AAChG,oBAAoB;AACpB,gBAAgB;AAChB,gBAAgB,IAAI,uBAAuB,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC,EAAE;AACvE,oBAAoB,MAAM,CAAC,mBAAmB,EAAE;AAChD,gBAAgB;AAChB,gBAAgB,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;AAC9C,oBAAoB,IAAI;AACxB,wBAAwB,kBAAkB,CAAC,MAAM,EAAE,KAAK,EAAE;AAC1D,4BAA4B,UAAU;AACtC,4BAA4B,oBAAoB,EAAE,mCAAmC,CAAC,MAAM,CAAC;AAC7F,yBAAyB,CAAC;AAC1B,oBAAoB;AACpB,oBAAoB,OAAO,KAAK,EAAE;AAClC,wBAAwB,aAAa,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE,KAAK,EAAE,wEAAwE,CAAC;AAC3I,oBAAoB;AACpB,gBAAgB;AAChB,gBAAgB,MAAM,CAAC,gBAAgB,EAAE;AACzC,YAAY,CAAC;AACb,YAAY,yBAAyB,EAAE,MAAM;AAC7C,gBAAgB,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,EAAE;AACjD,gBAAgB,IAAI,MAAM,CAAC,UAAU,EAAE,IAAI,CAAC,MAAM;AAClD,oBAAoB;AACpB,gBAAgB;AAChB,qBAAqB,UAAU;AAC/B,qBAAqB,MAAM,CAAC,YAAY;AACxC,qBAAqB,OAAO,CAAC,CAAC,UAAU,KAAK;AAC7C,oBAAoB,MAAM,CAAC,aAAa,CAAC,UAAU,CAAC;AACpD,gBAAgB,CAAC,CAAC;AAClB,gBAAgB,MAAM,CAAC,gBAAgB,EAAE;AACzC,YAAY,CAAC;AACb,YAAY,sBAAsB,EAAE,CAAC,QAAQ,KAAK;AAClD,gBAAgB,mBAAmB,GAAG,QAAQ;AAC9C,YAAY,CAAC;AACb,YAAY,uBAAuB,EAAE,MAAM,mBAAmB;AAC9D,SAAS;AACT,IAAI;AACJ,IAAI,sBAAsB,GAAG;AAC7B,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM;AAClC,QAAQ,OAAO;AACf,YAAY,MAAM,EAAE,MAAM,CAAC,SAAS,EAAE;AACtC,YAAY,MAAM,EAAE,MAAM,CAAC,aAAa,CAAC,YAAY,CAAC;AACtD,YAAY,OAAO,EAAE,MAAM,CAAC,iBAAiB,EAAE;AAC/C,YAAY,WAAW,EAAE,MAAM,MAAM,CAAC,WAAW,EAAE;AACnD,YAAY,WAAW,EAAE,CAAC,UAAU,KAAK;AACzC,gBAAgB,MAAM,CAAC,WAAW,CAAC,UAAU,CAAC;AAC9C,YAAY,CAAC;AACb,YAAY,cAAc,EAAE,MAAM,MAAM,CAAC,cAAc,EAAE;AACzD,YAAY,cAAc,EAAE,CAAC,KAAK,KAAK;AACvC,gBAAgB,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC;AAC5C,YAAY,CAAC;AACb,YAAY,cAAc,EAAE,MAAM;AAClC,gBAAgB,MAAM,CAAC,cAAc,EAAE;AACvC,YAAY,CAAC;AACb,YAAY,eAAe,EAAE,MAAM;AACnC,gBAAgB,MAAM,CAAC,eAAe,EAAE;AACxC,YAAY,CAAC;AACb,YAAY,oBAAoB,EAAE,CAAC,OAAO,EAAE,QAAQ,KAAK;AACzD,gBAAgB,MAAM,CAAC,aAAa,CAAC,OAAO,EAAE,QAAQ,CAAC;AACvD,YAAY,CAAC;AACb,SAAS;AACT,IAAI;AACJ,IAAI,sBAAsB,GAAG;AAC7B,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM;AAClC,QAAQ,OAAO;AACf,YAAY,MAAM,EAAE,MAAM,CAAC,aAAa,CAAC,YAAY,CAAC;AACtD,YAAY,kBAAkB,EAAE,CAAC,IAAI,KAAK;AAC1C,gBAAgB,MAAM,CAAC,kBAAkB,CAAC,IAAI,CAAC;AAC/C,YAAY,CAAC;AACb,YAAY,cAAc,EAAE,MAAM;AAClC,gBAAgB,MAAM,CAAC,cAAc,EAAE;AACvC,YAAY,CAAC;AACb,YAAY,eAAe,EAAE,MAAM;AACnC,gBAAgB,MAAM,CAAC,eAAe,EAAE;AACxC,YAAY,CAAC;AACb,YAAY,WAAW,EAAE,CAAC,UAAU,KAAK;AACzC,gBAAgB,MAAM,CAAC,WAAW,CAAC,UAAU,CAAC;AAC9C,YAAY,CAAC;AACb,SAAS;AACT,IAAI;AACJ,IAAI,qBAAqB,GAAG;AAC5B,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE;AAC9C,QAAQ,IAAI,CAAC,MAAM;AACnB,YAAY,OAAO,IAAI;AACvB,QAAQ,OAAO;AACf,YAAY,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE;AAC3C,YAAY,MAAM;AAClB,YAAY,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE;AAC7C,SAAS;AACT,IAAI;AACJ,IAAI,oBAAoB,GAAG;AAC3B,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM;AAClC,QAAQ,OAAO;AACf,YAAY,MAAM,EAAE,MAAM,CAAC,SAAS,EAAE;AACtC,YAAY,SAAS,EAAE,MAAM,MAAM,CAAC,SAAS,EAAE;AAC/C,YAAY,cAAc,EAAE,MAAM,MAAM,CAAC,kBAAkB,EAAE;AAC7D,YAAY,SAAS,EAAE,MAAM,CAAC,UAAU,EAAE,CAAC,aAAa;AACxD,YAAY,cAAc,EAAE,CAAC,IAAI,KAAK;AACtC,gBAAgB,MAAM,CAAC,kBAAkB,CAAC,IAAI,CAAC;AAC/C,YAAY,CAAC;AACb,SAAS;AACT,IAAI;AACJ,IAAI,6BAA6B,GAAG;AACpC,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM;AAClC,QAAQ,OAAO;AACf,YAAY,MAAM,EAAE,MAAM,CAAC,aAAa,CAAC,mBAAmB,CAAC;AAC7D,YAAY,eAAe,EAAE,MAAM,MAAM,CAAC,eAAe,EAAE;AAC3D,YAAY,QAAQ,EAAE,MAAM,MAAM,CAAC,QAAQ,EAAE;AAC7C,SAAS;AACT,IAAI;AACJ,IAAI,0BAA0B,GAAG;AACjC,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM;AAClC,QAAQ,OAAO;AACf,YAAY,MAAM,EAAE,MAAM,CAAC,SAAS,EAAE;AACtC,YAAY,SAAS,EAAE,MAAM,MAAM,CAAC,SAAS,EAAE;AAC/C,YAAY,cAAc,EAAE,MAAM,MAAM,CAAC,wBAAwB,EAAE;AACnE,YAAY,SAAS,EAAE,MAAM,CAAC,UAAU,EAAE,CAAC,mBAAmB;AAC9D,YAAY,oBAAoB,EAAE,CAAC,UAAU,KAAK;AAClD,gBAAgB,MAAM,CAAC,wBAAwB,CAAC,UAAU,CAAC;AAC3D,YAAY,CAAC;AACb,SAAS;AACT,IAAI;AACJ,IAAI,0BAA0B,GAAG;AACjC,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM;AAClC,QAAQ,OAAO;AACf,YAAY,MAAM,EAAE,MAAM,CAAC,SAAS,EAAE;AACtC,YAAY,MAAM,EAAE,MAAM,CAAC,aAAa,CAAC,gBAAgB,CAAC;AAC1D,YAAY,OAAO,EAAE,MAAM,CAAC,UAAU,EAAE;AACxC,YAAY,gBAAgB,EAAE,MAAM,MAAM,CAAC,gBAAgB,EAAE;AAC7D,YAAY,aAAa,EAAE,MAAM,MAAM,CAAC,aAAa,EAAE;AACvD,YAAY,aAAa,EAAE,MAAM,MAAM,CAAC,aAAa,EAAE;AACvD,YAAY,oBAAoB,EAAE,MAAM,MAAM,CAAC,oBAAoB,EAAE;AACrE,YAAY,oBAAoB,EAAE,CAAC,KAAK,KAAK;AAC7C,gBAAgB,MAAM,CAAC,oBAAoB,CAAC,KAAK,CAAC;AAClD,YAAY,CAAC;AACb,YAAY,cAAc,EAAE,MAAM,MAAM,CAAC,cAAc,EAAE;AACzD,YAAY,cAAc,EAAE,CAAC,OAAO,KAAK;AACzC,gBAAgB,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC;AAC9C,YAAY,CAAC;AACb,YAAY,eAAe,EAAE,MAAM,MAAM,CAAC,eAAe,EAAE;AAC3D,YAAY,oBAAoB,EAAE,MAAM,MAAM,CAAC,oBAAoB,EAAE;AACrE,YAAY,QAAQ,EAAE,MAAM,MAAM,CAAC,QAAQ,EAAE;AAC7C,YAAY,sBAAsB,EAAE,CAAC,OAAO,KAAK,MAAM,CAAC,sBAAsB,CAAC,OAAO,CAAC;AACvF,YAAY,gBAAgB,EAAE,CAAC,OAAO,KAAK,MAAM,CAAC,gBAAgB,CAAC,OAAO,CAAC;AAC3E,YAAY,oBAAoB,EAAE,CAAC,SAAS,KAAK,MAAM,CAAC,oBAAoB,CAAC,SAAS,EAAE,KAAK,CAAC;AAC9F,SAAS;AACT,IAAI;AACJ,IAAI,0BAA0B,GAAG;AACjC,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM;AAClC,QAAQ,OAAO;AACf,YAAY,MAAM,EAAE,MAAM,CAAC,SAAS,EAAE;AACtC,YAAY,MAAM,EAAE,MAAM,CAAC,aAAa,CAAC,gBAAgB,CAAC;AAC1D,YAAY,OAAO,EAAE,MAAM,CAAC,UAAU,EAAE;AACxC,YAAY,aAAa,EAAE,MAAM,MAAM,CAAC,aAAa,EAAE;AACvD,YAAY,eAAe,EAAE,MAAM,MAAM,CAAC,eAAe,EAAE;AAC3D,YAAY,aAAa,EAAE,MAAM,MAAM,CAAC,aAAa,EAAE;AACvD,YAAY,oBAAoB,EAAE,MAAM,MAAM,CAAC,oBAAoB,EAAE;AACrE,YAAY,oBAAoB,EAAE,CAAC,KAAK,KAAK;AAC7C,gBAAgB,MAAM,CAAC,oBAAoB,CAAC,KAAK,CAAC;AAClD,YAAY,CAAC;AACb,YAAY,cAAc,EAAE,MAAM,MAAM,CAAC,cAAc,EAAE;AACzD,YAAY,cAAc,EAAE,CAAC,OAAO,KAAK;AACzC,gBAAgB,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC;AAC9C,YAAY,CAAC;AACb,YAAY,eAAe,EAAE,MAAM,MAAM,CAAC,eAAe,EAAE;AAC3D,YAAY,oBAAoB,EAAE,MAAM,MAAM,CAAC,oBAAoB,EAAE;AACrE,YAAY,QAAQ,EAAE,MAAM,MAAM,CAAC,QAAQ,EAAE;AAC7C,YAAY,sBAAsB,EAAE,CAAC,OAAO,KAAK,MAAM,CAAC,sBAAsB,CAAC,OAAO,CAAC;AACvF,YAAY,gBAAgB,EAAE,CAAC,OAAO,KAAK,MAAM,CAAC,gBAAgB,CAAC,OAAO,CAAC;AAC3E,YAAY,oBAAoB,EAAE,CAAC,SAAS,KAAK,MAAM,CAAC,oBAAoB,CAAC,SAAS,EAAE,KAAK,CAAC;AAC9F,SAAS;AACT,IAAI;AACJ,IAAI,2BAA2B,GAAG;AAClC,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM;AAClC,QAAQ,OAAO;AACf,YAAY,MAAM,EAAE,MAAM,CAAC,SAAS,EAAE;AACtC,YAAY,MAAM,EAAE,MAAM,CAAC,aAAa,CAAC,iBAAiB,CAAC;AAC3D,YAAY,OAAO,EAAE,MAAM,CAAC,UAAU,EAAE;AACxC,YAAY,gBAAgB,EAAE,MAAM,MAAM,CAAC,gBAAgB,EAAE;AAC7D,YAAY,cAAc,EAAE,MAAM,MAAM,CAAC,cAAc,EAAE;AACzD,YAAY,aAAa,EAAE,MAAM,MAAM,CAAC,aAAa,EAAE;AACvD,YAAY,oBAAoB,EAAE,MAAM,MAAM,CAAC,oBAAoB,EAAE;AACrE,YAAY,oBAAoB,EAAE,CAAC,KAAK,KAAK;AAC7C,gBAAgB,MAAM,CAAC,oBAAoB,CAAC,KAAK,CAAC;AAClD,YAAY,CAAC;AACb,YAAY,eAAe,EAAE,MAAM,MAAM,CAAC,eAAe,EAAE;AAC3D,YAAY,eAAe,EAAE,CAAC,OAAO,KAAK;AAC1C,gBAAgB,MAAM,CAAC,eAAe,CAAC,OAAO,CAAC;AAC/C,YAAY,CAAC;AACb,YAAY,eAAe,EAAE,MAAM,MAAM,CAAC,eAAe,EAAE;AAC3D,YAAY,oBAAoB,EAAE,MAAM,MAAM,CAAC,oBAAoB,EAAE;AACrE,YAAY,QAAQ,EAAE,MAAM,MAAM,CAAC,QAAQ,EAAE;AAC7C,YAAY,sBAAsB,EAAE,CAAC,OAAO,KAAK,MAAM,CAAC,sBAAsB,CAAC,OAAO,CAAC;AACvF,YAAY,gBAAgB,EAAE,CAAC,OAAO,KAAK,MAAM,CAAC,gBAAgB,CAAC,OAAO,CAAC;AAC3E,YAAY,oBAAoB,EAAE,CAAC,SAAS,KAAK,MAAM,CAAC,oBAAoB,CAAC,SAAS,EAAE,KAAK,CAAC;AAC9F,SAAS;AACT,IAAI;AACJ,IAAI,4BAA4B,GAAG;AACnC,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM;AAClC,QAAQ,OAAO;AACf,YAAY,MAAM,EAAE,MAAM,CAAC,SAAS,EAAE;AACtC,YAAY,MAAM,EAAE,MAAM,CAAC,aAAa,CAAC,kBAAkB,CAAC;AAC5D,YAAY,OAAO,EAAE,MAAM,CAAC,UAAU,EAAE;AACxC,YAAY,cAAc,EAAE,MAAM,CAAC,iBAAiB,EAAE;AACtD,YAAY,eAAe,EAAE,MAAM,MAAM,CAAC,eAAe,EAAE;AAC3D,YAAY,aAAa,EAAE,MAAM,MAAM,CAAC,aAAa,EAAE;AACvD,YAAY,gBAAgB,EAAE,MAAM,MAAM,CAAC,gBAAgB,EAAE;AAC7D,YAAY,gBAAgB,EAAE,CAAC,KAAK,KAAK;AACzC,gBAAgB,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC;AAC9C,YAAY,CAAC;AACb,YAAY,uBAAuB,EAAE,MAAM,MAAM,CAAC,uBAAuB,EAAE;AAC3E,YAAY,uBAAuB,EAAE,CAAC,QAAQ,KAAK;AACnD,gBAAgB,MAAM,CAAC,uBAAuB,CAAC,QAAQ,CAAC;AACxD,YAAY,CAAC;AACb,YAAY,2BAA2B,EAAE,MAAM,MAAM,CAAC,2BAA2B,EAAE;AACnF,YAAY,qBAAqB,EAAE,MAAM;AACzC,gBAAgB,MAAM,CAAC,qBAAqB,EAAE;AAC9C,YAAY,CAAC;AACb,YAAY,eAAe,EAAE,MAAM,MAAM,CAAC,eAAe,EAAE;AAC3D,YAAY,eAAe,EAAE,CAAC,QAAQ,KAAK;AAC3C,gBAAgB,MAAM,CAAC,eAAe,CAAC,QAAQ,CAAC;AAChD,YAAY,CAAC;AACb,YAAY,eAAe,EAAE,MAAM,MAAM,CAAC,eAAe,EAAE;AAC3D,YAAY,aAAa,EAAE,CAAC,QAAQ,KAAK,MAAM,CAAC,yBAAyB,CAAC,SAAS,EAAE,QAAQ,CAAC;AAC9F,YAAY,QAAQ,EAAE,MAAM,MAAM,CAAC,QAAQ,EAAE;AAC7C,YAAY,YAAY,EAAE,MAAM,MAAM,CAAC,YAAY,EAAE;AACrD,YAAY,iBAAiB,EAAE,MAAM,MAAM,CAAC,iBAAiB,EAAE;AAC/D,YAAY,gBAAgB,EAAE,CAAC,OAAO,KAAK;AAC3C,gBAAgB,MAAM,CAAC,gBAAgB,CAAC,OAAO,CAAC;AAChD,YAAY,CAAC;AACb,YAAY,uBAAuB,EAAE,CAAC,OAAO,KAAK;AAClD,gBAAgB,MAAM,CAAC,uBAAuB,CAAC,OAAO,CAAC;AACvD,YAAY,CAAC;AACb,YAAY,oBAAoB,EAAE,CAAC,SAAS,EAAE,UAAU,KAAK,MAAM,CAAC,oBAAoB,CAAC,SAAS,EAAE,UAAU,CAAC;AAC/G,YAAY,gBAAgB,EAAE,MAAM,MAAM,CAAC,gBAAgB,EAAE;AAC7D,YAAY,gBAAgB,EAAE,CAAC,OAAO,KAAK;AAC3C,gBAAgB,MAAM,CAAC,gBAAgB,CAAC,OAAO,CAAC;AAChD,YAAY,CAAC;AACb,SAAS;AACT,IAAI;AACJ,IAAI,0BAA0B,CAAC,cAAc,EAAE;AAC/C,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM;AAClC,QAAQ,OAAO;AACf,YAAY,MAAM,EAAE,MAAM,CAAC,SAAS,EAAE;AACtC,YAAY,MAAM,EAAE,MAAM,CAAC,aAAa,CAAC,gBAAgB,CAAC;AAC1D,YAAY,OAAO,EAAE,MAAM,CAAC,UAAU,EAAE;AACxC,YAAY,cAAc,EAAE,MAAM,CAAC,iBAAiB,EAAE;AACtD,YAAY,aAAa,EAAE,MAAM,MAAM,CAAC,aAAa,EAAE;AACvD,YAAY,gBAAgB,EAAE,MAAM,MAAM,CAAC,gBAAgB,EAAE;AAC7D,YAAY,uBAAuB,EAAE,MAAM,MAAM,CAAC,uBAAuB,EAAE;AAC3E,YAAY,cAAc,EAAE,MAAM,MAAM,CAAC,cAAc,EAAE;AACzD,YAAY,cAAc,EAAE,CAAC,OAAO,KAAK;AACzC,gBAAgB,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC;AAC9C,YAAY,CAAC;AACb,YAAY,SAAS,EAAE,MAAM,MAAM,CAAC,eAAe,EAAE;AACrD,YAAY,aAAa,EAAE,CAAC,QAAQ,KAAK,MAAM,CAAC,yBAAyB,CAAC,cAAc,EAAE,QAAQ,CAAC;AACnG,YAAY,SAAS,EAAE,CAAC,MAAM,EAAE,eAAe,KAAK,MAAM,CAAC,qBAAqB,CAAC,cAAc,EAAE,MAAM,EAAE,eAAe,CAAC;AACzH,YAAY,cAAc,EAAE,MAAM,MAAM,CAAC,cAAc,EAAE;AACzD,YAAY,cAAc,EAAE,CAAC,KAAK,KAAK;AACvC,gBAAgB,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC;AAC5C,YAAY,CAAC;AACb,YAAY,cAAc,EAAE,MAAM;AAClC,gBAAgB,MAAM,CAAC,cAAc,EAAE;AACvC,YAAY,CAAC;AACb,SAAS;AACT,IAAI;AACJ,IAAI,sBAAsB,CAAC,cAAc,EAAE;AAC3C,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM;AAClC,QAAQ,OAAO;AACf,YAAY,GAAG,IAAI,CAAC,yBAAyB,EAAE;AAC/C,YAAY,cAAc,EAAE,MAAM,CAAC,iBAAiB,EAAE;AACtD,YAAY,gBAAgB,EAAE,MAAM,CAAC,mBAAmB,EAAE;AAC1D,YAAY,SAAS,EAAE,CAAC,MAAM,EAAE,eAAe,KAAK,MAAM,CAAC,eAAe,CAAC,cAAc,EAAE,MAAM,EAAE,eAAe,CAAC;AACnH,YAAY,eAAe,EAAE,MAAM,MAAM,CAAC,eAAe,EAAE;AAC3D,YAAY,aAAa,EAAE,CAAC,QAAQ,KAAK,MAAM,CAAC,yBAAyB,CAAC,cAAc,EAAE,QAAQ,CAAC;AACnG,YAAY,iBAAiB,EAAE,CAAC,OAAO,KAAK0B,iBAAqB,CAAC,IAAI,CAAC,yBAAyB,EAAE,EAAE,OAAO,CAAC;AAC5G,YAAY,QAAQ,EAAE,MAAM,MAAM,CAAC,QAAQ,EAAE;AAC7C,YAAY,YAAY,EAAE,MAAM,MAAM,CAAC,YAAY,EAAE;AACrD,YAAY,uBAAuB,EAAE,MAAM;AAC3C,gBAAgBI,cAAkB,CAAC,IAAI,CAAC,sBAAsB,EAAE,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC;AACzF,YAAY,CAAC;AACb,YAAY,cAAc,EAAE,MAAM,MAAM,CAAC,cAAc,EAAE;AACzD,YAAY,kBAAkB,EAAE,CAAC,OAAO,KAAK;AAC7C,gBAAgB,MAAM,MAAM,GAAG,MAAM,CAAC,aAAa,CAAC,oBAAoB,CAAC;AACzE,gBAAgB,OAAO,CAAC,OAAO,CAAC,CAAC,UAAU,KAAK;AAChD,oBAAoB,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC;AAC1C,gBAAgB,CAAC,CAAC;AAClB,gBAAgB,2BAA2B,CAAC,OAAO,CAAC;AACpD,gBAAgB,sCAAsC,CAAC,IAAI,CAAC,0BAA0B,EAAE,EAAE,OAAO,CAAC;AAClG,gBAAgB,MAAM,CAAC,oBAAoB,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,oBAAoB,EAAE,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,UAAU,KAAK,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC;AAChJ,gBAAgB,MAAM,CAAC,oBAAoB,EAAE;AAC7C,YAAY,CAAC;AACb,SAAS;AACT,IAAI;AACJ,IAAI,4BAA4B,CAAC,cAAc,EAAE;AACjD,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM;AAClC,QAAQ,OAAO;AACf,YAAY,GAAG,IAAI,CAAC,yBAAyB,EAAE;AAC/C,YAAY,cAAc,EAAE,MAAM,CAAC,iBAAiB,EAAE;AACtD,YAAY,gBAAgB,EAAE,MAAM,CAAC,mBAAmB,EAAE;AAC1D,YAAY,SAAS,EAAE,CAAC,MAAM,EAAE,eAAe,KAAK,MAAM,CAAC,eAAe,CAAC,cAAc,EAAE,MAAM,EAAE,eAAe,CAAC;AACnH,YAAY,eAAe,EAAE,MAAM,MAAM,CAAC,eAAe,EAAE;AAC3D,YAAY,aAAa,EAAE,CAAC,QAAQ,KAAK,MAAM,CAAC,yBAAyB,CAAC,cAAc,EAAE,QAAQ,CAAC;AACnG,YAAY,iBAAiB,EAAE,CAAC,OAAO,KAAKJ,iBAAqB,CAAC,IAAI,CAAC,yBAAyB,EAAE,EAAE,OAAO,CAAC;AAC5G,YAAY,QAAQ,EAAE,MAAM,MAAM,CAAC,QAAQ,EAAE;AAC7C,YAAY,YAAY,EAAE,MAAM,MAAM,CAAC,YAAY,EAAE;AACrD,YAAY,6BAA6B,EAAE,MAAM;AACjD,gBAAgBK,oBAAwB,CAAC,IAAI,CAAC,6BAA6B,EAAE,EAAE;AAC/E,oBAAoB,WAAW,EAAE,KAAK;AACtC,oBAAoB,KAAK,EAAE,IAAI;AAC/B,iBAAiB,CAAC;AAClB,YAAY,CAAC;AACb,YAAY,QAAQ,EAAE,MAAM,MAAM,CAAC,QAAQ,EAAE;AAC7C,YAAY,YAAY,EAAE,CAAC,OAAO,KAAK;AACvC,gBAAgB,MAAM,MAAM,GAAG,MAAM,CAAC,aAAa,CAAC,cAAc,CAAC;AACnE,gBAAgB,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK;AAC1C,oBAAoB,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;AACpC,oBAAoB,yBAAyB,CAAC,IAAI,CAAC;AACnD,gBAAgB,CAAC,CAAC;AAClB,gBAAgB,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,IAAI,KAAK,CAAC,QAAQ,IAAI,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,GAAG,IAAI,GAAG,QAAQ,EAAE,IAAI,CAAC,CAAC;AAC1I,gBAAgB,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,cAAc,EAAE,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;AAClH,gBAAgB,MAAM,CAAC,cAAc,EAAE;AACvC,YAAY,CAAC;AACb,SAAS;AACT,IAAI;AACJ;;ACnjBO,SAAS,0BAA0B,CAAC,OAAO,EAAE,SAAS,EAAE;AAC/D,IAAI,OAAO,IAAI,oBAAoB,CAAC;AACpC,QAAQ,SAAS,EAAE,MAAM,OAAO,CAAC,YAAY;AAC7C,QAAQ,UAAU,EAAE,MAAM,OAAO,CAAC,OAAO;AACzC,QAAQ,iBAAiB,EAAE,MAAM,OAAO,CAAC,iBAAiB,EAAE;AAC5D,QAAQ,iBAAiB,EAAE,MAAM,OAAO,CAAC,cAAc;AACvD,QAAQ,iBAAiB,EAAE,MAAM,OAAO,CAAC,cAAc;AACvD,QAAQ,SAAS,EAAE,MAAM,OAAO,CAAC,MAAM;AACvC,QAAQ,aAAa,EAAE,CAAC,aAAa,KAAK,OAAO,CAAC,oBAAoB,CAAC,aAAa,CAAC;AACrF,QAAQ,mBAAmB,EAAE,MAAM,OAAO,CAAC,gBAAgB;AAC3D,QAAQ,qBAAqB,EAAE,MAAM,OAAO,CAAC,kBAAkB;AAC/D,QAAQ,gBAAgB,EAAE,MAAM,OAAO,CAAC,aAAa;AACrD,QAAQ,UAAU,EAAE,MAAM,OAAO,CAAC,UAAU;AAC5C,QAAQ,aAAa,EAAE,MAAM,OAAO,CAAC,aAAa,EAAE;AACpD,QAAQ,gBAAgB,EAAE,MAAM,OAAO,CAAC,aAAa;AACrD,QAAQ,gBAAgB,EAAE,CAAC,KAAK,KAAK;AACrC,YAAY,OAAO,CAAC,aAAa,GAAG,KAAK;AACzC,QAAQ,CAAC;AACT,QAAQ,wBAAwB,EAAE,MAAM,OAAO,CAAC,qBAAqB;AACrE,QAAQ,wBAAwB,EAAE,CAAC,KAAK,KAAK;AAC7C,YAAY,OAAO,CAAC,qBAAqB,GAAG,KAAK;AACjD,QAAQ,CAAC;AACT,QAAQ,uBAAuB,EAAE,MAAM,OAAO,CAAC,oBAAoB;AACnE,QAAQ,uBAAuB,EAAE,CAAC,QAAQ,KAAK;AAC/C,YAAY,OAAO,CAAC,oBAAoB,GAAG,QAAQ;AACnD,QAAQ,CAAC;AACT,QAAQ,2BAA2B,EAAE,MAAM,8BAA8B,CAAC,OAAO,CAAC,wBAAwB,CAAC;AAC3G,QAAQ,qBAAqB,EAAE,MAAM;AACrC,YAAY,MAAM,IAAI,GAAG,8BAA8B,CAAC,2BAA2B,CAAC;AACpF,YAAY,OAAO,CAAC,wBAAwB,GAAG,IAAI;AACnD,YAAY,OAAO,CAAC,8BAA8B,GAAG,8BAA8B,CAAC,IAAI,CAAC;AACzF,YAAY,IAAI,OAAO,CAAC,aAAa,EAAE;AACvC,gBAAgB,6BAA6B,CAAC,OAAO,CAAC,YAAY,EAAE,OAAO,CAAC,aAAa,EAAE,IAAI,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK;AACrH,oBAAoB,SAAS,CAAC,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC;AAC3D,gBAAgB,CAAC,CAAC;AAClB,YAAY;AACZ,QAAQ,CAAC;AACT,QAAQ,wBAAwB,EAAE,CAAC,MAAM,KAAK;AAC9C,YAAY,MAAM,IAAI,GAAG,8BAA8B,CAAC,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,MAAM,GAAG,MAAM,GAAG,2BAA2B,CAAC;AACpI,YAAY,OAAO,CAAC,wBAAwB,GAAG,IAAI;AACnD,YAAY,OAAO,CAAC,8BAA8B,GAAG,8BAA8B,CAAC,IAAI,CAAC;AACzF,YAAY,IAAI,OAAO,CAAC,aAAa,EAAE;AACvC,gBAAgB,6BAA6B,CAAC,OAAO,CAAC,YAAY,EAAE,OAAO,CAAC,aAAa,EAAE,IAAI,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK;AACrH,oBAAoB,SAAS,CAAC,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC;AAC3D,gBAAgB,CAAC,CAAC;AAClB,YAAY;AACZ,QAAQ,CAAC;AACT,QAAQ,eAAe,EAAE,MAAM,OAAO,CAAC,YAAY;AACnD,QAAQ,eAAe,EAAE,CAAC,QAAQ,KAAK;AACvC,YAAY,OAAO,CAAC,YAAY,GAAG,QAAQ;AAC3C,QAAQ,CAAC;AACT,QAAQ,eAAe,EAAE,MAAM,OAAO,CAAC,YAAY;AACnD,QAAQ,eAAe,EAAE,CAAC,KAAK,KAAK;AACpC,YAAY,OAAO,CAAC,YAAY,GAAG,KAAK;AACxC,QAAQ,CAAC;AACT,QAAQ,kBAAkB,EAAE,MAAM,OAAO,CAAC,eAAe;AACzD,QAAQ,kBAAkB,EAAE,CAAC,QAAQ,KAAK;AAC1C,YAAY,OAAO,CAAC,eAAe,GAAG,QAAQ;AAC9C,QAAQ,CAAC;AACT,QAAQ,iBAAiB,EAAE,MAAM,OAAO,CAAC,cAAc;AACvD,QAAQ,iBAAiB,EAAE,CAAC,KAAK,KAAK;AACtC,YAAY,OAAO,CAAC,cAAc,GAAG,KAAK;AAC1C,QAAQ,CAAC;AACT,QAAQ,cAAc,EAAE,MAAM,OAAO,CAAC,WAAW;AACjD,QAAQ,cAAc,EAAE,CAAC,KAAK,KAAK;AACnC,YAAY,OAAO,CAAC,WAAW,GAAG,KAAK;AACvC,QAAQ,CAAC;AACT,QAAQ,WAAW,EAAE,MAAM,OAAO,CAAC,QAAQ;AAC3C,QAAQ,WAAW,EAAE,CAAC,IAAI,KAAK;AAC/B,YAAY,OAAO,CAAC,QAAQ,GAAG,IAAI;AACnC,QAAQ,CAAC;AACT,QAAQ,oBAAoB,EAAE,MAAM,OAAO,CAAC,iBAAiB;AAC7D,QAAQ,oBAAoB,EAAE,CAAC,KAAK,KAAK;AACzC,YAAY,OAAO,CAAC,iBAAiB,GAAG,KAAK;AAC7C,QAAQ,CAAC;AACT,QAAQ,aAAa,EAAE,MAAM,OAAO,CAAC,iBAAiB;AACtD,QAAQ,aAAa,EAAE,MAAM,OAAO,CAAC,iBAAiB;AACtD,QAAQ,eAAe,EAAE,MAAM,yBAAyB,CAAC,OAAO,CAAC,mBAAmB,CAAC;AACrF,QAAQ,cAAc,EAAE,MAAM,kCAAkC,CAAC,OAAO,CAAC,kBAAkB,CAAC;AAC5F,QAAQ,eAAe,EAAE,MAAM,yBAAyB,CAAC,OAAO,CAAC,mBAAmB,CAAC;AACrF,QAAQ,cAAc,EAAE,MAAM,OAAO,CAAC,WAAW;AACjD,QAAQ,cAAc,EAAE,CAAC,OAAO,KAAK;AACrC,YAAY,OAAO,CAAC,WAAW,GAAG,OAAO;AACzC,QAAQ,CAAC;AACT,QAAQ,cAAc,EAAE,MAAM,OAAO,CAAC,WAAW;AACjD,QAAQ,cAAc,EAAE,CAAC,OAAO,KAAK;AACrC,YAAY,OAAO,CAAC,WAAW,GAAG,OAAO;AACzC,QAAQ,CAAC;AACT,QAAQ,eAAe,EAAE,MAAM,OAAO,CAAC,YAAY;AACnD,QAAQ,eAAe,EAAE,CAAC,OAAO,KAAK;AACtC,YAAY,OAAO,CAAC,YAAY,GAAG,OAAO;AAC1C,QAAQ,CAAC;AACT,QAAQ,gBAAgB,EAAE,MAAM,OAAO,CAAC,aAAa;AACrD,QAAQ,gBAAgB,EAAE,CAAC,OAAO,KAAK;AACvC,YAAY,OAAO,CAAC,aAAa,GAAG,OAAO;AAC3C,QAAQ,CAAC;AACT,QAAQ,cAAc,EAAE,MAAM,OAAO,CAAC,WAAW;AACjD,QAAQ,cAAc,EAAE,CAAC,OAAO,KAAK;AACrC,YAAY,OAAO,CAAC,WAAW,GAAG,OAAO;AACzC,QAAQ,CAAC;AACT,QAAQ,eAAe,EAAE,MAAM,SAAS,CAAC,eAAe,EAAE;AAC1D,QAAQ,kCAAkC,EAAE,MAAM,SAAS,CAAC,kCAAkC,EAAE;AAChG,QAAQ,oBAAoB,EAAE,CAAC,QAAQ,KAAK;AAC5C,YAAY,OAAO,CAAC,uBAAuB,GAAG,QAAQ;AACtD,QAAQ,CAAC;AACT,QAAQ,6BAA6B,EAAE,OAAO,QAAQ,KAAK;AAC3D,YAAY,MAAM,QAAQ,GAAG,OAAO,CAAC,6BAA6B;AAClE,YAAY,OAAO,CAAC,6BAA6B,GAAG,IAAI;AACxD,YAAY,IAAI;AAChB,gBAAgB,OAAO,MAAM,QAAQ,EAAE;AACvC,YAAY;AACZ,oBAAoB;AACpB,gBAAgB,OAAO,CAAC,6BAA6B,GAAG,QAAQ;AAChE,YAAY;AACZ,QAAQ,CAAC;AACT,QAAQ,eAAe,EAAE,MAAM,SAAS,CAAC,eAAe,EAAE;AAC1D,QAAQ,qBAAqB,EAAE,CAAC,cAAc,EAAE,MAAM,EAAE,eAAe,KAAK,SAAS,CAAC,qBAAqB,CAAC,cAAc,EAAE,MAAM,EAAE,eAAe,CAAC;AACpJ,QAAQ,eAAe,EAAE,CAAC,cAAc,EAAE,MAAM,EAAE,eAAe,KAAK,SAAS,CAAC,eAAe,CAAC,cAAc,EAAE,MAAM,EAAE,eAAe,CAAC;AACxI,QAAQ,yBAAyB,EAAE,CAAC,cAAc,EAAE,QAAQ,KAAK,SAAS,CAAC,yBAAyB,CAAC,cAAc,EAAE,QAAQ,CAAC;AAC9H,QAAQ,aAAa,EAAE,CAAC,OAAO,EAAE,QAAQ,KAAK;AAC9C,YAAY,SAAS,CAAC,aAAa,CAAC,OAAO,EAAE,QAAQ,CAAC;AACtD,QAAQ,CAAC;AACT,QAAQ,6BAA6B,EAAE,MAAM,SAAS,CAAC,6BAA6B,EAAE;AACtF,QAAQ,qCAAqC,EAAE,CAAC,MAAM,KAAK;AAC3D,YAAY,SAAS,CAAC,qCAAqC,CAAC,MAAM,CAAC;AACnE,QAAQ,CAAC;AACT,QAAQ,aAAa,EAAE,CAAC,IAAI,KAAK;AACjC,YAAY,SAAS,CAAC,aAAa,CAAC,IAAI,CAAC;AACzC,QAAQ,CAAC;AACT,QAAQ,kBAAkB,EAAE,CAAC,IAAI,KAAK;AACtC,YAAY,SAAS,CAAC,kBAAkB,CAAC,IAAI,CAAC;AAC9C,QAAQ,CAAC;AACT,QAAQ,iBAAiB,EAAE,MAAM;AACjC,YAAY,SAAS,CAAC,iBAAiB,EAAE;AACzC,QAAQ,CAAC;AACT,QAAQ,qBAAqB,EAAE,CAAC,IAAI,KAAK;AACzC,YAAYC,qBAAyB,CAAC,OAAO,CAAC,kBAAkB,EAAE,OAAO,CAAC,gBAAgB,EAAE,OAAO,CAAC,OAAO,CAAC,eAAe,GAAG,IAAI,GAAG,KAAK,CAAC;AAC3I,QAAQ,CAAC;AACT,QAAQ,cAAc,EAAE,MAAM,SAAS,CAAC,cAAc,EAAE;AACxD,QAAQ,oBAAoB,EAAE,MAAM,SAAS,CAAC,oBAAoB,EAAE;AACpE,QAAQ,QAAQ,EAAE,MAAM,SAAS,CAAC,QAAQ,EAAE;AAC5C,QAAQ,YAAY,EAAE,MAAM,SAAS,CAAC,YAAY,EAAE;AACpD,QAAQ,kBAAkB,EAAE,MAAM;AAClC,YAAY,IAAI,EAAE;AAClB,YAAY,OAAO,iBAAiB,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC,aAAa,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,MAAM,GAAG,EAAE,CAAC,aAAa,CAAC;AACnJ,QAAQ,CAAC;AACT,QAAQ,kBAAkB,EAAE,CAAC,IAAI,KAAK,SAAS,CAAC,sBAAsB,CAAC,CAAC,IAAI,CAAC,CAAC;AAC9E,QAAQ,wBAAwB,EAAE,MAAM;AACxC,YAAY,IAAI,EAAE;AAClB,YAAY,OAAO,iBAAiB,CAAC,OAAO,CAAC,QAAQ,CAAC,cAAc,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC,aAAa,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,MAAM,GAAG,EAAE,CAAC,aAAa,CAAC;AACzJ,QAAQ,CAAC;AACT,QAAQ,wBAAwB,EAAE,CAAC,UAAU,KAAK,SAAS,CAAC,sBAAsB,CAAC,CAAC,UAAU,CAAC,CAAC;AAChG,QAAQ,QAAQ,EAAE,MAAM,SAAS,CAAC,QAAQ,EAAE;AAC5C,QAAQ,cAAc,EAAE,MAAM,SAAS,CAAC,cAAc,EAAE;AACxD,QAAQ,gBAAgB,EAAE,CAAC,OAAO,KAAK;AACvC,YAAY,SAAS,CAAC,gBAAgB,CAAC,OAAO,CAAC;AAC/C,QAAQ,CAAC;AACT,QAAQ,sBAAsB,EAAE,CAAC,OAAO,KAAK;AAC7C,YAAY,SAAS,CAAC,sBAAsB,CAAC,OAAO,CAAC;AACrD,QAAQ,CAAC;AACT,QAAQ,uBAAuB,EAAE,CAAC,OAAO,KAAK;AAC9C,YAAY,SAAS,CAAC,uBAAuB,CAAC,OAAO,CAAC;AACtD,QAAQ,CAAC;AACT,QAAQ,oBAAoB,EAAE,CAAC,SAAS,EAAE,mBAAmB,KAAK,SAAS,CAAC,oBAAoB,CAAC,SAAS,EAAE,mBAAmB,CAAC;AAChI,KAAK,CAAC;AACN;;ACzKO,SAAS,yBAAyB,CAAC,OAAO,EAAE,KAAK,EAAE;AAC1D,IAAI,MAAM,cAAc,GAAG,oBAAoB,CAAC,OAAO,EAAE,KAAK,CAAC;AAC/D,IAAI,OAAO;AACX,QAAQ,cAAc;AACtB,QAAQ,mBAAmB,EAAE,IAAI,yBAAyB,CAAC,OAAO,EAAE,qBAAqB,CAAC,KAAK,CAAC,EAAE,cAAc,CAAC;AACjH,KAAK;AACL;AACA,SAAS,oBAAoB,CAAC,OAAO,EAAE,KAAK,EAAE;AAC9C,IAAI,OAAO,0BAA0B,CAAC,OAAO,EAAE;AAC/C,QAAQ,eAAe,EAAE,MAAM;AAC/B,YAAY,KAAK,CAAC,KAAK,CAAC,eAAe,EAAE;AACzC,QAAQ,CAAC;AACT,QAAQ,kCAAkC,EAAE,MAAM;AAClD,YAAY,KAAK,CAAC,KAAK,CAAC,eAAe,CAAC,KAAK,CAAC,UAAU,CAAC,wBAAwB,EAAE,CAAC;AACpF,QAAQ,CAAC;AACT,QAAQ,eAAe,EAAE,MAAM,KAAK,CAAC,KAAK,CAAC,eAAe,EAAE;AAC5D,QAAQ,qBAAqB,EAAE,CAAC,cAAc,EAAE,MAAM,EAAE,eAAe,KAAK,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,UAAU,CAAC,4BAA4B,CAAC,cAAc,EAAE,eAAe,KAAK,IAAI,IAAI,eAAe,KAAK,MAAM,GAAG,eAAe,GAAG,EAAE,CAAC,CAAC;AACvP,QAAQ,eAAe,EAAE,OAAO,cAAc,EAAE,MAAM,EAAE,eAAe,KAAK;AAC5E,YAAY,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,2BAA2B,EAAE;AACxE,YAAY,IAAI;AAChB,gBAAgB,MAAM,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,UAAU,CAAC,4BAA4B,CAAC,cAAc,EAAE,eAAe,KAAK,IAAI,IAAI,eAAe,KAAK,KAAK,CAAC,GAAG,eAAe,GAAG,EAAE,CAAC,CAAC;AACjM,YAAY;AACZ,oBAAoB;AACpB,gBAAgB,KAAK,CAAC,OAAO,CAAC,iCAAiC,CAAC,QAAQ,CAAC;AACzE,YAAY;AACZ,QAAQ,CAAC;AACT,QAAQ,yBAAyB,EAAE,CAAC,cAAc,EAAE,QAAQ,KAAK,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC,QAAQ,EAAE,KAAK,CAAC,UAAU,CAAC,4BAA4B,CAAC,cAAc,EAAE,KAAK,CAAC,UAAU,CAAC,wBAAwB,EAAE,CAAC,CAAC;AAChN,QAAQ,aAAa,EAAE,CAAC,OAAO,EAAE,QAAQ,KAAK;AAC9C,YAAY,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,OAAO,EAAE,QAAQ,CAAC;AAC1D,QAAQ,CAAC;AACT,QAAQ,6BAA6B,EAAE,MAAM,KAAK,CAAC,OAAO,CAAC,6BAA6B,EAAE;AAC1F,QAAQ,qCAAqC,EAAE,CAAC,MAAM,KAAK;AAC3D,YAAY,KAAK,CAAC,OAAO,CAAC,qCAAqC,CAAC,MAAM,CAAC;AACvE,QAAQ,CAAC;AACT,QAAQ,aAAa,EAAE,CAAC,IAAI,KAAK;AACjC,YAAY,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC;AAC5C,QAAQ,CAAC;AACT,QAAQ,kBAAkB,EAAE,CAAC,IAAI,KAAK;AACtC,YAAY,KAAK,CAAC,MAAM,CAAC,kBAAkB,CAAC,IAAI,CAAC;AACjD,QAAQ,CAAC;AACT,QAAQ,iBAAiB,EAAE,MAAM;AACjC,YAAY,KAAK,CAAC,MAAM,CAAC,iBAAiB,EAAE;AAC5C,QAAQ,CAAC;AACT,QAAQ,cAAc,EAAE,MAAM;AAC9B,YAAY,KAAK,CAAC,EAAE,CAAC,cAAc,EAAE;AACrC,QAAQ,CAAC;AACT,QAAQ,oBAAoB,EAAE,MAAM;AACpC,YAAY,KAAK,CAAC,EAAE,CAAC,oBAAoB,EAAE;AAC3C,QAAQ,CAAC;AACT,QAAQ,QAAQ,EAAE,MAAM;AACxB,YAAY,KAAK,CAAC,EAAE,CAAC,QAAQ,EAAE;AAC/B,QAAQ,CAAC;AACT,QAAQ,YAAY,EAAE,MAAM;AAC5B,YAAY,KAAK,CAAC,EAAE,CAAC,YAAY,EAAE;AACnC,QAAQ,CAAC;AACT,QAAQ,sBAAsB,EAAE,CAAC,QAAQ,KAAK;AAC9C,YAAY,KAAK,CAAC,SAAS,CAAC,sBAAsB,CAAC,QAAQ,CAAC;AAC5D,QAAQ,CAAC;AACT,QAAQ,QAAQ,EAAE,MAAM,KAAK,CAAC,SAAS,CAAC,QAAQ,EAAE;AAClD,QAAQ,cAAc,EAAE,MAAM,KAAK,CAAC,SAAS,CAAC,cAAc,EAAE;AAC9D,QAAQ,gBAAgB,EAAE,CAAC,OAAO,KAAK;AACvC,YAAY,KAAK,CAAC,SAAS,CAAC,gBAAgB,CAAC,OAAO,CAAC;AACrD,QAAQ,CAAC;AACT,QAAQ,sBAAsB,EAAE,CAAC,OAAO,KAAK;AAC7C,YAAY,KAAK,CAAC,SAAS,CAAC,sBAAsB,CAAC,OAAO,CAAC;AAC3D,QAAQ,CAAC;AACT,QAAQ,uBAAuB,EAAE,CAAC,OAAO,KAAK;AAC9C,YAAY,KAAK,CAAC,SAAS,CAAC,uBAAuB,CAAC,OAAO,CAAC;AAC5D,QAAQ,CAAC;AACT,QAAQ,aAAa,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK;AAC3C,YAAY,KAAK,CAAC,SAAS,CAAC,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC;AACzD,QAAQ,CAAC;AACT,QAAQ,oBAAoB,EAAE,CAAC,SAAS,EAAE,mBAAmB,KAAK,KAAK,CAAC,SAAS,CAAC,oBAAoB,CAAC,SAAS,EAAE,mBAAmB,KAAK,IAAI,IAAI,mBAAmB,KAAK,MAAM,GAAG,mBAAmB,GAAG,KAAK,CAAC;AAC/M,KAAK,CAAC;AACN;AACA,SAAS,qBAAqB,CAAC,KAAK,EAAE;AACtC,IAAI,OAAO;AACX,QAAQ,mBAAmB,EAAE,CAAC,SAAS,EAAE,OAAO,KAAK,KAAK,CAAC,UAAU,CAAC,mBAAmB,CAAC,SAAS,EAAE,OAAO,CAAC;AAC7G,QAAQ,sBAAsB,EAAE,CAAC,SAAS,EAAE,OAAO,KAAK;AACxD,YAAY,KAAK,CAAC,UAAU,CAAC,sBAAsB,CAAC,SAAS,EAAE,OAAO,CAAC;AACvE,QAAQ,CAAC;AACT,QAAQ,uBAAuB,EAAE,CAAC,SAAS,KAAK;AAChD,YAAY,KAAK,CAAC,UAAU,CAAC,uBAAuB,CAAC,SAAS,CAAC;AAC/D,QAAQ,CAAC;AACT,QAAQ,iCAAiC,EAAE,MAAM;AACjD,YAAY,KAAK,CAAC,UAAU,CAAC,iCAAiC,EAAE;AAChE,QAAQ,CAAC;AACT,QAAQ,oBAAoB,EAAE,CAAC,SAAS,EAAE,mBAAmB,KAAK,KAAK,CAAC,SAAS,CAAC,oBAAoB,CAAC,SAAS,EAAE,mBAAmB,CAAC;AACtI,QAAQ,0BAA0B,EAAE,CAAC,OAAO,EAAE,QAAQ,KAAK,KAAK,CAAC,UAAU,CAAC,0BAA0B,CAAC,OAAO,EAAE,QAAQ,CAAC;AACzH,QAAQ,cAAc,EAAE,CAAC,QAAQ,KAAK,KAAK,CAAC,SAAS,CAAC,cAAc,CAAC,QAAQ,CAAC;AAC9E,QAAQ,QAAQ,EAAE,MAAM,KAAK,CAAC,SAAS,CAAC,QAAQ,EAAE;AAClD,QAAQ,cAAc,EAAE,MAAM,KAAK,CAAC,SAAS,CAAC,cAAc,EAAE;AAC9D,QAAQ,0BAA0B,EAAE,MAAM,KAAK,CAAC,SAAS,CAAC,0BAA0B,EAAE;AACtF,QAAQ,gCAAgC,EAAE,MAAM,KAAK,CAAC,SAAS,CAAC,gCAAgC,EAAE;AAClG,QAAQ,yBAAyB,EAAE,MAAM,KAAK,CAAC,OAAO,CAAC,yBAAyB,EAAE;AAClF,QAAQ,0CAA0C,EAAE,MAAM,KAAK,CAAC,OAAO,CAAC,0CAA0C,EAAE;AACpH,QAAQ,6BAA6B,EAAE,CAAC,OAAO,KAAK;AACpD,YAAY,KAAK,CAAC,OAAO,CAAC,6BAA6B,CAAC,OAAO,CAAC;AAChE,QAAQ,CAAC;AACT,QAAQ,qCAAqC,EAAE,CAAC,MAAM,KAAK;AAC3D,YAAY,KAAK,CAAC,OAAO,CAAC,qCAAqC,CAAC,MAAM,CAAC;AACvE,QAAQ,CAAC;AACT,QAAQ,yCAAyC,EAAE,MAAM;AACzD,YAAY,KAAK,CAAC,OAAO,CAAC,yCAAyC,EAAE;AACrE,QAAQ,CAAC;AACT,QAAQ,aAAa,EAAE,CAAC,OAAO,EAAE,QAAQ,KAAK;AAC9C,YAAY,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,OAAO,EAAE,QAAQ,CAAC;AAC1D,QAAQ,CAAC;AACT,QAAQ,6BAA6B,EAAE,MAAM;AAC7C,YAAY,KAAK,CAAC,EAAE,CAAC,6BAA6B,EAAE;AACpD,QAAQ,CAAC;AACT,QAAQ,YAAY,EAAE,MAAM;AAC5B,YAAY,KAAK,CAAC,EAAE,CAAC,YAAY,EAAE;AACnC,QAAQ,CAAC;AACT,QAAQ,cAAc,EAAE,MAAM;AAC9B,YAAY,KAAK,CAAC,EAAE,CAAC,cAAc,EAAE;AACrC,QAAQ,CAAC;AACT,QAAQ,uBAAuB,EAAE,CAAC,IAAI,KAAK;AAC3C,YAAY,KAAK,CAAC,EAAE,CAAC,uBAAuB,CAAC,IAAI,CAAC;AAClD,QAAQ,CAAC;AACT,QAAQ,oBAAoB,EAAE,MAAM;AACpC,YAAY,KAAK,CAAC,EAAE,CAAC,oBAAoB,EAAE;AAC3C,QAAQ,CAAC;AACT,QAAQ,6BAA6B,EAAE,CAAC,UAAU,KAAK;AACvD,YAAY,KAAK,CAAC,EAAE,CAAC,6BAA6B,CAAC,UAAU,CAAC;AAC9D,QAAQ,CAAC;AACT,QAAQ,QAAQ,EAAE,MAAM;AACxB,YAAY,KAAK,CAAC,EAAE,CAAC,QAAQ,EAAE;AAC/B,QAAQ,CAAC;AACT,QAAQ,SAAS,EAAE,MAAM;AACzB,YAAY,KAAK,CAAC,KAAK,CAAC,eAAe,EAAE;AACzC,QAAQ,CAAC;AACT,QAAQ,kBAAkB,EAAE,CAAC,IAAI,KAAK;AACtC,YAAY,KAAK,CAAC,MAAM,CAAC,kBAAkB,CAAC,IAAI,CAAC;AACjD,QAAQ,CAAC;AACT,QAAQ,gBAAgB,EAAE,CAAC,IAAI,KAAK;AACpC,YAAY,KAAK,CAAC,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC;AAC/C,QAAQ,CAAC;AACT,QAAQ,aAAa,EAAE,CAAC,IAAI,KAAK;AACjC,YAAY,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC;AAC5C,QAAQ,CAAC;AACT,QAAQ,iBAAiB,EAAE,MAAM;AACjC,YAAY,KAAK,CAAC,MAAM,CAAC,iBAAiB,EAAE;AAC5C,QAAQ,CAAC;AACT,QAAQ,sBAAsB,EAAE,CAAC,QAAQ,KAAK;AAC9C,YAAY,KAAK,CAAC,SAAS,CAAC,sBAAsB,CAAC,QAAQ,CAAC;AAC5D,QAAQ,CAAC;AACT,QAAQ,wBAAwB,EAAE,CAAC,MAAM,KAAK;AAC9C,YAAY,KAAK,CAAC,MAAM,CAAC,wBAAwB,CAAC,MAAM,CAAC;AACzD,QAAQ,CAAC;AACT,QAAQ,YAAY,EAAE,CAAC,KAAK,KAAK;AACjC,YAAY,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC;AAC5C,QAAQ,CAAC;AACT,QAAQ,eAAe,EAAE,CAAC,IAAI,KAAK;AACnC,YAAY,KAAK,CAAC,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC;AAC9C,QAAQ,CAAC;AACT,QAAQ,YAAY,EAAE,CAAC,KAAK,KAAK;AACjC,YAAY,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC;AAC5C,QAAQ,CAAC;AACT,QAAQ,gBAAgB,EAAE,CAAC,IAAI,KAAK;AACpC,YAAY,KAAK,CAAC,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC;AAC/C,QAAQ,CAAC;AACT,QAAQ,gBAAgB,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK;AAC9C,YAAY,KAAK,CAAC,SAAS,CAAC,gBAAgB,CAAC,KAAK,EAAE,OAAO,CAAC;AAC5D,QAAQ,CAAC;AACT,QAAQ,mBAAmB,EAAE,CAAC,SAAS,EAAE,OAAO,KAAK;AACrD,YAAY,KAAK,CAAC,SAAS,CAAC,mBAAmB,CAAC,SAAS,EAAE,OAAO,CAAC;AACnE,QAAQ,CAAC;AACT,QAAQ,gBAAgB,EAAE,CAAC,OAAO,KAAK;AACvC,YAAY,KAAK,CAAC,SAAS,CAAC,gBAAgB,CAAC,OAAO,CAAC;AACrD,QAAQ,CAAC;AACT,QAAQ,sBAAsB,EAAE,CAAC,OAAO,KAAK;AAC7C,YAAY,KAAK,CAAC,SAAS,CAAC,sBAAsB,CAAC,OAAO,CAAC;AAC3D,QAAQ,CAAC;AACT,QAAQ,gBAAgB,EAAE,CAAC,OAAO,KAAK;AACvC,YAAY,KAAK,CAAC,SAAS,CAAC,gBAAgB,CAAC,OAAO,CAAC;AACrD,QAAQ,CAAC;AACT,QAAQ,uBAAuB,EAAE,CAAC,OAAO,KAAK;AAC9C,YAAY,KAAK,CAAC,SAAS,CAAC,uBAAuB,CAAC,OAAO,CAAC;AAC5D,QAAQ,CAAC;AACT,QAAQ,aAAa,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK;AAC3C,YAAY,KAAK,CAAC,SAAS,CAAC,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC;AACzD,QAAQ,CAAC;AACT,QAAQ,wBAAwB,EAAE,MAAM,KAAK,CAAC,UAAU,CAAC,wBAAwB,EAAE;AACnF,KAAK;AACL;;AC3LO,MAAM,cAAc,CAAC;AAC5B,IAAI,WAAW,GAAG;AAClB,QAAQ,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,OAAO,EAAE;AAC7C,YAAY,UAAU,EAAE,IAAI;AAC5B,YAAY,YAAY,EAAE,IAAI;AAC9B,YAAY,QAAQ,EAAE,IAAI;AAC1B,YAAY,KAAK,EAAE;AACnB,SAAS,CAAC;AACV,QAAQ,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,SAAS,EAAE;AAC/C,YAAY,UAAU,EAAE,IAAI;AAC5B,YAAY,YAAY,EAAE,IAAI;AAC9B,YAAY,QAAQ,EAAE,IAAI;AAC1B,YAAY,KAAK,EAAE;AACnB,SAAS,CAAC;AACV,IAAI;AACJ,IAAI,GAAG,CAAC,WAAW,EAAE;AACrB,QAAQ,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;AAChD,YAAY,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;AAClE,YAAY,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AAC/B,gBAAgB,KAAK,IAAI,CAAC,UAAU,EAAE;AACtC,YAAY;AACZ,QAAQ,CAAC,CAAC;AACV,IAAI;AACJ,IAAI,KAAK,CAAC,MAAM,EAAE;AAClB,QAAQ,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK;AAClC,QAAQ,IAAI,CAAC,KAAK,GAAG,EAAE;AACvB,QAAQ,IAAI,MAAM,KAAK,SAAS,EAAE;AAClC,YAAY,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE;AACzC,gBAAgB,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC;AACpC,YAAY;AACZ,QAAQ;AACR,aAAa;AACb,YAAY,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE;AACzC,gBAAgB,KAAK,CAAC,OAAO,EAAE;AAC/B,YAAY;AACZ,QAAQ;AACR,IAAI;AACJ,IAAI,SAAS,GAAG;AAChB,QAAQ,OAAO,IAAI,CAAC,OAAO;AAC3B,IAAI;AACJ,IAAI,MAAM,GAAG;AACb,QAAQ,OAAO,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC;AACpD,IAAI;AACJ,IAAI,WAAW,GAAG;AAClB,QAAQ,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;AACtD,YAAY,OAAO,OAAO,CAAC,OAAO,EAAE;AACpC,QAAQ;AACR,QAAQ,OAAO,IAAI,CAAC,GAAG,CAAC,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,SAAS,EAAE,MAAM,SAAS,CAAC;AACvF,IAAI;AACJ,IAAI,MAAM,UAAU,GAAG;AACvB,QAAQ,IAAI,IAAI,CAAC,OAAO;AACxB,YAAY;AACZ,QAAQ,IAAI,CAAC,OAAO,GAAG,IAAI;AAC3B,QAAQ,IAAI;AACZ,YAAY,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;AAC1C,gBAAgB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE;AAChD,gBAAgB,IAAI;AACpB,oBAAoB,MAAM,KAAK,CAAC,GAAG,EAAE;AACrC,oBAAoB,KAAK,CAAC,OAAO,EAAE;AACnC,gBAAgB;AAChB,gBAAgB,OAAO,KAAK,EAAE;AAC9B,oBAAoB,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC;AACvC,gBAAgB;AAChB,YAAY;AACZ,QAAQ;AACR,gBAAgB;AAChB,YAAY,IAAI,CAAC,OAAO,GAAG,KAAK;AAChC,YAAY,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;AACvC,gBAAgB,KAAK,IAAI,CAAC,UAAU,EAAE;AACtC,YAAY;AACZ,QAAQ;AACR,IAAI;AACJ;;ACvEO,MAAM,cAAc,CAAC;AAC5B,IAAI,WAAW,GAAG;AAClB,QAAQ,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,mBAAmB,EAAE;AACzD,YAAY,UAAU,EAAE,IAAI;AAC5B,YAAY,YAAY,EAAE,IAAI;AAC9B,YAAY,QAAQ,EAAE,IAAI;AAC1B,YAAY,KAAK,EAAE;AACnB,SAAS,CAAC;AACV,QAAQ,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,gBAAgB,EAAE;AACtD,YAAY,UAAU,EAAE,IAAI;AAC5B,YAAY,YAAY,EAAE,IAAI;AAC9B,YAAY,QAAQ,EAAE,IAAI;AAC1B,YAAY,KAAK,EAAE;AACnB,SAAS,CAAC;AACV,QAAQ,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,iBAAiB,EAAE;AACvD,YAAY,UAAU,EAAE,IAAI;AAC5B,YAAY,YAAY,EAAE,IAAI;AAC9B,YAAY,QAAQ,EAAE,IAAI;AAC1B,YAAY,KAAK,EAAE;AACnB,SAAS,CAAC;AACV,QAAQ,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,sBAAsB,EAAE;AAC5D,YAAY,UAAU,EAAE,IAAI;AAC5B,YAAY,YAAY,EAAE,IAAI;AAC9B,YAAY,QAAQ,EAAE,IAAI;AAC1B,YAAY,KAAK,EAAE;AACnB,SAAS,CAAC;AACV,QAAQ,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,uBAAuB,EAAE;AAC7D,YAAY,UAAU,EAAE,IAAI;AAC5B,YAAY,YAAY,EAAE,IAAI;AAC9B,YAAY,QAAQ,EAAE,IAAI;AAC1B,YAAY,KAAK,EAAE;AACnB,SAAS,CAAC;AACV,QAAQ,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,mBAAmB,EAAE;AACzD,YAAY,UAAU,EAAE,IAAI;AAC5B,YAAY,YAAY,EAAE,IAAI;AAC9B,YAAY,QAAQ,EAAE,IAAI;AAC1B,YAAY,KAAK,EAAE,IAAI,GAAG;AAC1B,SAAS,CAAC;AACV,IAAI;AACJ,IAAI,WAAW,GAAG;AAClB,QAAQ,OAAO,IAAI,CAAC,iBAAiB;AACrC,IAAI;AACJ,IAAI,UAAU,GAAG;AACjB,QAAQ,OAAO,IAAI,CAAC,cAAc;AAClC,IAAI;AACJ,IAAI,SAAS,GAAG;AAChB,QAAQ,OAAO,IAAI,CAAC,eAAe;AACnC,IAAI;AACJ,IAAI,mBAAmB,GAAG;AAC1B,QAAQ,OAAO,IAAI,CAAC,oBAAoB;AACxC,IAAI;AACJ,IAAI,MAAM,GAAG;AACb,QAAQ,QAAQ,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,qBAAqB,KAAK,IAAI;AACrG,IAAI;AACJ,IAAI,cAAc,GAAG;AACrB,QAAQ,IAAI,CAAC,iBAAiB,GAAG,IAAI;AACrC,IAAI;AACJ,IAAI,YAAY,GAAG;AACnB,QAAQ,IAAI,CAAC,iBAAiB,GAAG,KAAK;AACtC,IAAI;AACJ,IAAI,YAAY,GAAG;AACnB,QAAQ,IAAI,CAAC,cAAc,GAAG,IAAI;AAClC,QAAQ,IAAI,CAAC,iBAAiB,GAAG,KAAK;AACtC,QAAQ,IAAI,CAAC,eAAe,GAAG,KAAK;AACpC,QAAQ,IAAI,CAAC,oBAAoB,GAAG,IAAI;AACxC,QAAQ,IAAI,CAAC,qBAAqB,GAAG,IAAI;AACzC,QAAQ,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,iBAAiB,EAAE;AACpD,YAAY,IAAI;AAChB,gBAAgB,KAAK,EAAE;AACvB,YAAY;AACZ,YAAY,MAAM;AAClB,YAAY;AACZ,QAAQ;AACR,QAAQ,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE;AACtC,IAAI;AACJ,IAAI,wBAAwB,CAAC,KAAK,EAAE;AACpC,QAAQ,IAAI,IAAI,CAAC,cAAc,EAAE;AACjC,YAAY,IAAI;AAChB,gBAAgB,KAAK,EAAE;AACvB,YAAY;AACZ,YAAY,MAAM;AAClB,YAAY;AACZ,YAAY,OAAO,MAAM,SAAS;AAClC,QAAQ;AACR,QAAQ,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,KAAK,CAAC;AACzC,QAAQ,OAAO,MAAM;AACrB,YAAY,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,KAAK,CAAC;AAChD,QAAQ,CAAC;AACT,IAAI;AACJ,IAAI,YAAY,GAAG;AACnB,QAAQ,IAAI,CAAC,eAAe,GAAG,IAAI;AACnC,IAAI;AACJ,IAAI,UAAU,GAAG;AACjB,QAAQ,IAAI,CAAC,eAAe,GAAG,KAAK;AACpC,IAAI;AACJ,IAAI,kBAAkB,CAAC,aAAa,EAAE;AACtC,QAAQ,IAAI,EAAE;AACd,QAAQ,IAAI,IAAI,CAAC,qBAAqB,KAAK,IAAI,EAAE;AACjD,YAAY,MAAM,IAAI,cAAc,CAAC,aAAa,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC,oBAAoB,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,mBAAmB,CAAC,WAAW,CAAC,CAAC;AAChK,QAAQ;AACR,QAAQ,MAAM,KAAK,GAAG,MAAM,CAAC,aAAa,CAAC;AAC3C,QAAQ,IAAI,CAAC,oBAAoB,GAAG,aAAa;AACjD,QAAQ,IAAI,CAAC,qBAAqB,GAAG,KAAK;AAC1C,QAAQ,OAAO,KAAK;AACpB,IAAI;AACJ,IAAI,gBAAgB,CAAC,KAAK,EAAE;AAC5B,QAAQ,IAAI,KAAK,IAAI,KAAK,KAAK,IAAI,CAAC,qBAAqB,EAAE;AAC3D,YAAY,IAAI,CAAC,oBAAoB,GAAG,IAAI;AAC5C,YAAY,IAAI,CAAC,qBAAqB,GAAG,IAAI;AAC7C,QAAQ;AACR,IAAI;AACJ,IAAI,cAAc,CAAC,KAAK,EAAE;AAC1B,QAAQ,OAAO,CAAC,CAAC,KAAK,IAAI,KAAK,KAAK,IAAI,CAAC,qBAAqB;AAC9D,IAAI;AACJ,IAAI,MAAM,YAAY,CAAC,aAAa,EAAE;AACtC,QAAQ,IAAI,CAAC,cAAc,EAAE;AAC7B,QAAQ,IAAI;AACZ,YAAY,OAAO,MAAM,aAAa,EAAE;AACxC,QAAQ;AACR,gBAAgB;AAChB,YAAY,IAAI,CAAC,YAAY,EAAE;AAC/B,QAAQ;AACR,IAAI;AACJ,IAAI,kBAAkB,CAAC,cAAc,EAAE;AACvC,QAAQ,IAAI,IAAI,CAAC,iBAAiB,EAAE;AACpC,YAAY,MAAM,IAAI,cAAc,CAAC,cAAc,EAAE,mCAAmC,CAAC;AACzF,QAAQ;AACR,IAAI;AACJ,IAAI,sBAAsB,CAAC,cAAc,EAAE,KAAK,EAAE;AAClD,QAAQ,IAAI,EAAE;AACd,QAAQ,IAAI,IAAI,CAAC,cAAc,EAAE;AACjC,YAAY,MAAM,IAAI,cAAc,CAAC,cAAc,EAAE,eAAe,CAAC;AACrE,QAAQ;AACR,QAAQ,MAAM,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC;AACvD,QAAQ,IAAI,IAAI,CAAC,iBAAiB,EAAE;AACpC,YAAY,MAAM,IAAI,cAAc,CAAC,cAAc,EAAE,mCAAmC,CAAC;AACzF,QAAQ;AACR,QAAQ,IAAI,IAAI,CAAC,eAAe,IAAI,CAAC,YAAY,EAAE;AACnD,YAAY,MAAM,IAAI,cAAc,CAAC,cAAc,EAAE,2BAA2B,CAAC;AACjF,QAAQ;AACR,QAAQ,IAAI,IAAI,CAAC,qBAAqB,IAAI,CAAC,YAAY,EAAE;AACzD,YAAY,MAAM,IAAI,cAAc,CAAC,cAAc,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC,oBAAoB,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,mBAAmB,CAAC,WAAW,CAAC,CAAC;AACjK,QAAQ;AACR,IAAI;AACJ,IAAI,uBAAuB,CAAC,cAAc,EAAE,KAAK,EAAE;AACnD,QAAQ,IAAI,EAAE;AACd,QAAQ,IAAI,IAAI,CAAC,cAAc,EAAE;AACjC,YAAY,MAAM,IAAI,cAAc,CAAC,cAAc,EAAE,eAAe,CAAC;AACrE,QAAQ;AACR,QAAQ,MAAM,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC;AACvD,QAAQ,IAAI,IAAI,CAAC,eAAe,IAAI,CAAC,YAAY,EAAE;AACnD,YAAY,MAAM,IAAI,cAAc,CAAC,cAAc,EAAE,2BAA2B,CAAC;AACjF,QAAQ;AACR,QAAQ,IAAI,IAAI,CAAC,qBAAqB,IAAI,CAAC,YAAY,EAAE;AACzD,YAAY,MAAM,IAAI,cAAc,CAAC,cAAc,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC,oBAAoB,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,mBAAmB,CAAC,WAAW,CAAC,CAAC;AACjK,QAAQ;AACR,IAAI;AACJ;;ACvJO,MAAM,aAAa,CAAC;AAC3B,IAAI,WAAW,CAAC,YAAY,EAAE,cAAc,EAAE,OAAO,EAAE;AACvD,QAAQ,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,cAAc,EAAE;AACpD,YAAY,UAAU,EAAE,IAAI;AAC5B,YAAY,YAAY,EAAE,IAAI;AAC9B,YAAY,QAAQ,EAAE,IAAI;AAC1B,YAAY,KAAK,EAAE;AACnB,SAAS,CAAC;AACV,QAAQ,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,gBAAgB,EAAE;AACtD,YAAY,UAAU,EAAE,IAAI;AAC5B,YAAY,YAAY,EAAE,IAAI;AAC9B,YAAY,QAAQ,EAAE,IAAI;AAC1B,YAAY,KAAK,EAAE;AACnB,SAAS,CAAC;AACV,QAAQ,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,SAAS,EAAE;AAC/C,YAAY,UAAU,EAAE,IAAI;AAC5B,YAAY,YAAY,EAAE,IAAI;AAC9B,YAAY,QAAQ,EAAE,IAAI;AAC1B,YAAY,KAAK,EAAE;AACnB,SAAS,CAAC;AACV,QAAQ,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,mBAAmB,EAAE;AACzD,YAAY,UAAU,EAAE,IAAI;AAC5B,YAAY,YAAY,EAAE,IAAI;AAC9B,YAAY,QAAQ,EAAE,IAAI;AAC1B,YAAY,KAAK,EAAE;AACnB,SAAS,CAAC;AACV,QAAQ,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,qBAAqB,EAAE;AAC3D,YAAY,UAAU,EAAE,IAAI;AAC5B,YAAY,YAAY,EAAE,IAAI;AAC9B,YAAY,QAAQ,EAAE,IAAI;AAC1B,YAAY,KAAK,EAAE;AACnB,SAAS,CAAC;AACV,QAAQ,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,qBAAqB,EAAE;AAC3D,YAAY,UAAU,EAAE,IAAI;AAC5B,YAAY,YAAY,EAAE,IAAI;AAC9B,YAAY,QAAQ,EAAE,IAAI;AAC1B,YAAY,KAAK,EAAE;AACnB,SAAS,CAAC;AACV,QAAQ,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,mBAAmB,EAAE;AACzD,YAAY,UAAU,EAAE,IAAI;AAC5B,YAAY,YAAY,EAAE,IAAI;AAC9B,YAAY,QAAQ,EAAE,IAAI;AAC1B,YAAY,KAAK,EAAE;AACnB,SAAS,CAAC;AACV,QAAQ,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,mBAAmB,EAAE;AACzD,YAAY,UAAU,EAAE,IAAI;AAC5B,YAAY,YAAY,EAAE,IAAI;AAC9B,YAAY,QAAQ,EAAE,IAAI;AAC1B,YAAY,KAAK,EAAE;AACnB,SAAS,CAAC;AACV,QAAQ,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,mBAAmB,EAAE;AACzD,YAAY,UAAU,EAAE,IAAI;AAC5B,YAAY,YAAY,EAAE,IAAI;AAC9B,YAAY,QAAQ,EAAE,IAAI;AAC1B,YAAY,KAAK,EAAE;AACnB,SAAS,CAAC;AACV,QAAQ,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,mBAAmB,EAAE;AACzD,YAAY,UAAU,EAAE,IAAI;AAC5B,YAAY,YAAY,EAAE,IAAI;AAC9B,YAAY,QAAQ,EAAE,IAAI;AAC1B,YAAY,KAAK,EAAE;AACnB,SAAS,CAAC;AACV,QAAQ,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,qBAAqB,EAAE;AAC3D,YAAY,UAAU,EAAE,IAAI;AAC5B,YAAY,YAAY,EAAE,IAAI;AAC9B,YAAY,QAAQ,EAAE,IAAI;AAC1B,YAAY,KAAK,EAAE;AACnB,SAAS,CAAC;AACV,QAAQ,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,qBAAqB,EAAE;AAC3D,YAAY,UAAU,EAAE,IAAI;AAC5B,YAAY,YAAY,EAAE,IAAI;AAC9B,YAAY,QAAQ,EAAE,IAAI;AAC1B,YAAY,KAAK,EAAE;AACnB,SAAS,CAAC;AACV,QAAQ,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,oBAAoB,EAAE;AAC1D,YAAY,UAAU,EAAE,IAAI;AAC5B,YAAY,YAAY,EAAE,IAAI;AAC9B,YAAY,QAAQ,EAAE,IAAI;AAC1B,YAAY,KAAK,EAAE;AACnB,SAAS,CAAC;AACV,QAAQ,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,oBAAoB,EAAE;AAC1D,YAAY,UAAU,EAAE,IAAI;AAC5B,YAAY,YAAY,EAAE,IAAI;AAC9B,YAAY,QAAQ,EAAE,IAAI;AAC1B,YAAY,KAAK,EAAE;AACnB,SAAS,CAAC;AACV,QAAQ,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,QAAQ,EAAE;AAC9C,YAAY,UAAU,EAAE,IAAI;AAC5B,YAAY,YAAY,EAAE,IAAI;AAC9B,YAAY,QAAQ,EAAE,IAAI;AAC1B,YAAY,KAAK,EAAE;AACnB,SAAS,CAAC;AACV,QAAQ,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,eAAe,EAAE;AACrD,YAAY,UAAU,EAAE,IAAI;AAC5B,YAAY,YAAY,EAAE,IAAI;AAC9B,YAAY,QAAQ,EAAE,IAAI;AAC1B,YAAY,KAAK,EAAE;AACnB,SAAS,CAAC;AACV,QAAQ,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,kBAAkB,EAAE;AACxD,YAAY,UAAU,EAAE,IAAI;AAC5B,YAAY,YAAY,EAAE,IAAI;AAC9B,YAAY,QAAQ,EAAE,IAAI;AAC1B,YAAY,KAAK,EAAE;AACnB,SAAS,CAAC;AACV,QAAQ,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,oBAAoB,EAAE;AAC1D,YAAY,UAAU,EAAE,IAAI;AAC5B,YAAY,YAAY,EAAE,IAAI;AAC9B,YAAY,QAAQ,EAAE,IAAI;AAC1B,YAAY,KAAK,EAAE;AACnB,SAAS,CAAC;AACV,QAAQ,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,UAAU,EAAE;AAChD,YAAY,UAAU,EAAE,IAAI;AAC5B,YAAY,YAAY,EAAE,IAAI;AAC9B,YAAY,QAAQ,EAAE,IAAI;AAC1B,YAAY,KAAK,EAAE;AACnB,SAAS,CAAC;AACV,QAAQ,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,4BAA4B,EAAE;AAClE,YAAY,UAAU,EAAE,IAAI;AAC5B,YAAY,YAAY,EAAE,IAAI;AAC9B,YAAY,QAAQ,EAAE,IAAI;AAC1B,YAAY,KAAK,EAAE,IAAI,GAAG;AAC1B,SAAS,CAAC;AACV,QAAQ,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,gCAAgC,EAAE;AACtE,YAAY,UAAU,EAAE,IAAI;AAC5B,YAAY,YAAY,EAAE,IAAI;AAC9B,YAAY,QAAQ,EAAE,IAAI;AAC1B,YAAY,KAAK,EAAE,IAAI,GAAG;AAC1B,SAAS,CAAC;AACV,QAAQ,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,iCAAiC,EAAE;AACvE,YAAY,UAAU,EAAE,IAAI;AAC5B,YAAY,YAAY,EAAE,IAAI;AAC9B,YAAY,QAAQ,EAAE,IAAI;AAC1B,YAAY,KAAK,EAAE,IAAI,GAAG;AAC1B,SAAS,CAAC;AACV,QAAQ,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,eAAe,EAAE;AACrD,YAAY,UAAU,EAAE,IAAI;AAC5B,YAAY,YAAY,EAAE,IAAI;AAC9B,YAAY,QAAQ,EAAE,IAAI;AAC1B,YAAY,KAAK,EAAE;AACnB,SAAS,CAAC;AACV,QAAQ,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,gBAAgB,EAAE;AACtD,YAAY,UAAU,EAAE,IAAI;AAC5B,YAAY,YAAY,EAAE,IAAI;AAC9B,YAAY,QAAQ,EAAE,IAAI;AAC1B,YAAY,KAAK,EAAE;AACnB,SAAS,CAAC;AACV,QAAQ,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,cAAc,EAAE;AACpD,YAAY,UAAU,EAAE,IAAI;AAC5B,YAAY,YAAY,EAAE,IAAI;AAC9B,YAAY,QAAQ,EAAE,IAAI;AAC1B,YAAY,KAAK,EAAE;AACnB,SAAS,CAAC;AACV,QAAQ,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,iBAAiB,EAAE;AACvD,YAAY,UAAU,EAAE,IAAI;AAC5B,YAAY,YAAY,EAAE,IAAI;AAC9B,YAAY,QAAQ,EAAE,IAAI;AAC1B,YAAY,KAAK,EAAE;AACnB,SAAS,CAAC;AACV,QAAQ,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,uBAAuB,EAAE;AAC7D,YAAY,UAAU,EAAE,IAAI;AAC5B,YAAY,YAAY,EAAE,IAAI;AAC9B,YAAY,QAAQ,EAAE,IAAI;AAC1B,YAAY,KAAK,EAAE;AACnB,SAAS,CAAC;AACV,QAAQ,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,sBAAsB,EAAE;AAC5D,YAAY,UAAU,EAAE,IAAI;AAC5B,YAAY,YAAY,EAAE,IAAI;AAC9B,YAAY,QAAQ,EAAE,IAAI;AAC1B,YAAY,KAAK,EAAE;AACnB,SAAS,CAAC;AACV,QAAQ,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,0BAA0B,EAAE;AAChE,YAAY,UAAU,EAAE,IAAI;AAC5B,YAAY,YAAY,EAAE,IAAI;AAC9B,YAAY,QAAQ,EAAE,IAAI;AAC1B,YAAY,KAAK,EAAE;AACnB,SAAS,CAAC;AACV,QAAQ,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,gCAAgC,EAAE;AACtE,YAAY,UAAU,EAAE,IAAI;AAC5B,YAAY,YAAY,EAAE,IAAI;AAC9B,YAAY,QAAQ,EAAE,IAAI;AAC1B,YAAY,KAAK,EAAE;AACnB,SAAS,CAAC;AACV,QAAQ,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,aAAa,EAAE;AACnD,YAAY,UAAU,EAAE,IAAI;AAC5B,YAAY,YAAY,EAAE,IAAI;AAC9B,YAAY,QAAQ,EAAE,IAAI;AAC1B,YAAY,KAAK,EAAE;AACnB,SAAS,CAAC;AACV,QAAQ,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,UAAU,EAAE;AAChD,YAAY,UAAU,EAAE,IAAI;AAC5B,YAAY,YAAY,EAAE,IAAI;AAC9B,YAAY,QAAQ,EAAE,IAAI;AAC1B,YAAY,KAAK,EAAE;AACnB,SAAS,CAAC;AACV,QAAQ,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,mBAAmB,EAAE;AACzD,YAAY,UAAU,EAAE,IAAI;AAC5B,YAAY,YAAY,EAAE,IAAI;AAC9B,YAAY,QAAQ,EAAE,IAAI;AAC1B,YAAY,KAAK,EAAE;AACnB,SAAS,CAAC;AACV,QAAQ,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,cAAc,EAAE;AACpD,YAAY,UAAU,EAAE,IAAI;AAC5B,YAAY,YAAY,EAAE,IAAI;AAC9B,YAAY,QAAQ,EAAE,IAAI;AAC1B,YAAY,KAAK,EAAE;AACnB,SAAS,CAAC;AACV,QAAQ,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,gBAAgB,EAAE;AACtD,YAAY,UAAU,EAAE,IAAI;AAC5B,YAAY,YAAY,EAAE,IAAI;AAC9B,YAAY,QAAQ,EAAE,IAAI;AAC1B,YAAY,KAAK,EAAE;AACnB,SAAS,CAAC;AACV,QAAQ,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,gBAAgB,EAAE;AACtD,YAAY,UAAU,EAAE,IAAI;AAC5B,YAAY,YAAY,EAAE,IAAI;AAC9B,YAAY,QAAQ,EAAE,IAAI;AAC1B,YAAY,KAAK,EAAE,IAAI,cAAc;AACrC,SAAS,CAAC;AACV,QAAQ,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,WAAW,EAAE;AACjD,YAAY,UAAU,EAAE,IAAI;AAC5B,YAAY,YAAY,EAAE,IAAI;AAC9B,YAAY,QAAQ,EAAE,IAAI;AAC1B,YAAY,KAAK,EAAE,IAAI,cAAc;AACrC,SAAS,CAAC;AACV,QAAQ,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,qBAAqB,EAAE;AAC3D,YAAY,UAAU,EAAE,IAAI;AAC5B,YAAY,YAAY,EAAE,IAAI;AAC9B,YAAY,QAAQ,EAAE,IAAI;AAC1B,YAAY,KAAK,EAAE;AACnB,SAAS,CAAC;AACV,QAAQ,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,eAAe,EAAE;AACrD,YAAY,UAAU,EAAE,IAAI;AAC5B,YAAY,YAAY,EAAE,IAAI;AAC9B,YAAY,QAAQ,EAAE,IAAI;AAC1B,YAAY,KAAK,EAAE,IAAI,aAAa;AACpC,SAAS,CAAC;AACV,QAAQ,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,aAAa,EAAE;AACnD,YAAY,UAAU,EAAE,IAAI;AAC5B,YAAY,YAAY,EAAE,IAAI;AAC9B,YAAY,QAAQ,EAAE,IAAI;AAC1B,YAAY,KAAK,EAAE;AACnB,SAAS,CAAC;AACV,QAAQ,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,eAAe,EAAE;AACrD,YAAY,UAAU,EAAE,IAAI;AAC5B,YAAY,YAAY,EAAE,IAAI;AAC9B,YAAY,QAAQ,EAAE,IAAI;AAC1B,YAAY,KAAK,EAAE;AACnB,SAAS,CAAC;AACV,QAAQ,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,aAAa,EAAE;AACnD,YAAY,UAAU,EAAE,IAAI;AAC5B,YAAY,YAAY,EAAE,IAAI;AAC9B,YAAY,QAAQ,EAAE,IAAI;AAC1B,YAAY,KAAK,EAAE;AACnB,SAAS,CAAC;AACV,QAAQ,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,aAAa,EAAE;AACnD,YAAY,UAAU,EAAE,IAAI;AAC5B,YAAY,YAAY,EAAE,IAAI;AAC9B,YAAY,QAAQ,EAAE,IAAI;AAC1B,YAAY,KAAK,EAAE;AACnB,SAAS,CAAC;AACV,QAAQ,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,cAAc,EAAE;AACpD,YAAY,UAAU,EAAE,IAAI;AAC5B,YAAY,YAAY,EAAE,IAAI;AAC9B,YAAY,QAAQ,EAAE,IAAI;AAC1B,YAAY,KAAK,EAAE;AACnB,SAAS,CAAC;AACV,QAAQ,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,aAAa,EAAE;AACnD,YAAY,UAAU,EAAE,IAAI;AAC5B,YAAY,YAAY,EAAE,IAAI;AAC9B,YAAY,QAAQ,EAAE,IAAI;AAC1B,YAAY,KAAK,EAAE;AACnB,SAAS,CAAC;AACV,QAAQ,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,kBAAkB,EAAE;AACxD,YAAY,UAAU,EAAE,IAAI;AAC5B,YAAY,YAAY,EAAE,IAAI;AAC9B,YAAY,QAAQ,EAAE,IAAI;AAC1B,YAAY,KAAK,EAAE;AACnB,SAAS,CAAC;AACV,QAAQ,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,iBAAiB,EAAE;AACvD,YAAY,UAAU,EAAE,IAAI;AAC5B,YAAY,YAAY,EAAE,IAAI;AAC9B,YAAY,QAAQ,EAAE,IAAI;AAC1B,YAAY,KAAK,EAAE;AACnB,SAAS,CAAC;AACV,QAAQ,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,YAAY,EAAE;AAClD,YAAY,UAAU,EAAE,IAAI;AAC5B,YAAY,YAAY,EAAE,IAAI;AAC9B,YAAY,QAAQ,EAAE,IAAI;AAC1B,YAAY,KAAK,EAAE;AACnB,SAAS,CAAC;AACV,QAAQ,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,yBAAyB,EAAE;AAC/D,YAAY,UAAU,EAAE,IAAI;AAC5B,YAAY,YAAY,EAAE,IAAI;AAC9B,YAAY,QAAQ,EAAE,IAAI;AAC1B,YAAY,KAAK,EAAE;AACnB,SAAS,CAAC;AACV,QAAQ,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,+BAA+B,EAAE;AACrE,YAAY,UAAU,EAAE,IAAI;AAC5B,YAAY,YAAY,EAAE,IAAI;AAC9B,YAAY,QAAQ,EAAE,IAAI;AAC1B,YAAY,KAAK,EAAE;AACnB,SAAS,CAAC;AACV,QAAQ,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,mBAAmB,EAAE;AACzD,YAAY,UAAU,EAAE,IAAI;AAC5B,YAAY,YAAY,EAAE,IAAI;AAC9B,YAAY,QAAQ,EAAE,IAAI;AAC1B,YAAY,KAAK,EAAE;AACnB,SAAS,CAAC;AACV,QAAQ,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,qBAAqB,EAAE;AAC3D,YAAY,UAAU,EAAE,IAAI;AAC5B,YAAY,YAAY,EAAE,IAAI;AAC9B,YAAY,QAAQ,EAAE,IAAI;AAC1B,YAAY,KAAK,EAAE;AACnB,SAAS,CAAC;AACV,QAAQ,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,yBAAyB,EAAE;AAC/D,YAAY,UAAU,EAAE,IAAI;AAC5B,YAAY,YAAY,EAAE,IAAI;AAC9B,YAAY,QAAQ,EAAE,IAAI;AAC1B,YAAY,KAAK,EAAE;AACnB,SAAS,CAAC;AACV,QAAQ,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,6BAA6B,EAAE;AACnE,YAAY,UAAU,EAAE,IAAI;AAC5B,YAAY,YAAY,EAAE,IAAI;AAC9B,YAAY,QAAQ,EAAE,IAAI;AAC1B,YAAY,KAAK,EAAE;AACnB,SAAS,CAAC;AACV,QAAQ,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,4BAA4B,EAAE;AAClE,YAAY,UAAU,EAAE,IAAI;AAC5B,YAAY,YAAY,EAAE,IAAI;AAC9B,YAAY,QAAQ,EAAE,IAAI;AAC1B,YAAY,KAAK,EAAE;AACnB,SAAS,CAAC;AACV,QAAQ,IAAI,CAAC,YAAY,GAAG,YAAY;AACxC,QAAQ,IAAI,CAAC,cAAc,GAAG,cAAc;AAC5C,QAAQ,IAAI,CAAC,OAAO,GAAG,OAAO;AAC9B,QAAQ,IAAI,CAAC,iBAAiB,GAAG,OAAO,CAAC,UAAU;AACnD,QAAQ,IAAI,CAAC,mBAAmB,GAAG,OAAO,CAAC,mBAAmB;AAC9D,QAAQ,IAAI,CAAC,mBAAmB,GAAG,yBAAyB,CAAC,IAAI,CAAC,mBAAmB,CAAC;AACtF,QAAQ,IAAI,CAAC,iBAAiB,GAAG,OAAO,CAAC,iBAAiB;AAC1D,QAAQ,IAAI,CAAC,iBAAiB,GAAG,iCAAiC,CAAC,IAAI,CAAC,iBAAiB,CAAC;AAC1F,QAAQ,IAAI,CAAC,iBAAiB,GAAG,OAAO,CAAC,iBAAiB;AAC1D,QAAQ,IAAI,CAAC,iBAAiB,GAAG,uBAAuB,CAAC,IAAI,CAAC,iBAAiB,CAAC;AAChF,QAAQ,IAAI,CAAC,mBAAmB,GAAG,OAAO,CAAC,mBAAmB;AAC9D,QAAQ,IAAI,CAAC,mBAAmB,GAAG,yBAAyB,CAAC,IAAI,CAAC,mBAAmB,CAAC;AACtF,QAAQ,IAAI,CAAC,kBAAkB,GAAG,OAAO,CAAC,kBAAkB;AAC5D,QAAQ,IAAI,CAAC,kBAAkB,GAAG,kCAAkC,CAAC,IAAI,CAAC,kBAAkB,CAAC;AAC7F,QAAQ,IAAI,CAAC,wBAAwB,GAAG,8BAA8B,CAAC,2BAA2B,CAAC;AACnG,QAAQ,IAAI,CAAC,8BAA8B,GAAG,8BAA8B,CAAC,2BAA2B,CAAC;AACzG,QAAQ,IAAI,CAAC,cAAc,GAAG,IAAI,cAAc,CAAC,OAAO,CAAC,cAAc,CAAC;AACxE,QAAQ,IAAI,CAAC,uBAAuB,GAAG;AACvC,YAAY,OAAO,EAAE,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE;AAClD,YAAY,OAAO,EAAE,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE;AAClD,SAAS;AACT,IAAI;AACJ,IAAI,iBAAiB,GAAG;AACxB,QAAQ,IAAI,IAAI,CAAC,iBAAiB,KAAK,IAAI,CAAC,OAAO,CAAC,UAAU;AAC9D,YAAY,OAAO,IAAI,CAAC,OAAO;AAC/B,QAAQ,OAAO,MAAM,CAAC,MAAM,CAAC;AAC7B,YAAY,GAAG,IAAI,CAAC,OAAO;AAC3B,YAAY,UAAU,EAAE,IAAI,CAAC,iBAAiB;AAC9C,SAAS,CAAC;AACV,IAAI;AACJ,IAAI,oBAAoB,CAAC,aAAa,EAAE;AACxC,QAAQ,IAAI,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;AAC7C,YAAY,MAAM,IAAI,KAAK,CAAC,CAAC,0BAA0B,EAAE,aAAa,CAAC,gBAAgB,CAAC,CAAC;AACzF,QAAQ;AACR,QAAQ,OAAO,IAAI,CAAC,MAAM;AAC1B,IAAI;AACJ,IAAI,aAAa,GAAG;AACpB,QAAQ,OAAO,CAAC,EAAE,IAAI,CAAC,aAAa;AACpC,YAAY,iBAAiB,CAAC,IAAI,CAAC,aAAa,CAAC;AACjD,YAAY,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC;AAChD,YAAY,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAClD,IAAI;AACJ,IAAI,MAAM,CAAC,gBAAgB,GAAG,KAAK,EAAE;AACrC,QAAQ,OAAO,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,gBAAgB;AAC1F,IAAI;AACJ,IAAI,iBAAiB,GAAG;AACxB,QAAQ,IAAI,CAAC,MAAM,GAAG,IAAI;AAC1B,QAAQ,IAAI,CAAC,aAAa,GAAG,IAAI;AACjC,QAAQ,IAAI,CAAC,gBAAgB,GAAG,IAAI;AACpC,QAAQ,IAAI,CAAC,kBAAkB,GAAG,IAAI;AACtC,QAAQ,IAAI,CAAC,QAAQ,GAAG,EAAE;AAC1B,QAAQ,IAAI,CAAC,0BAA0B,CAAC,KAAK,EAAE;AAC/C,QAAQ,IAAI,CAAC,8BAA8B,CAAC,KAAK,EAAE;AACnD,QAAQ,IAAI,CAAC,+BAA+B,CAAC,KAAK,EAAE;AACpD,QAAQ,IAAI,CAAC,qBAAqB,GAAG,KAAK;AAC1C,QAAQ,IAAI,CAAC,aAAa,GAAG,IAAI;AACjC,QAAQ,IAAI,CAAC,oBAAoB,GAAG,IAAI;AACxC,QAAQ,IAAI,CAAC,wBAAwB,GAAG,8BAA8B,CAAC,2BAA2B,CAAC;AACnG,QAAQ,IAAI,CAAC,8BAA8B,GAAG,8BAA8B,CAAC,2BAA2B,CAAC;AACzG,QAAQ,IAAI,CAAC,QAAQ,GAAG,IAAI;AAC5B,QAAQ,IAAI,CAAC,WAAW,GAAG,CAAC;AAC5B,QAAQ,IAAI,CAAC,iBAAiB,GAAG,CAAC;AAClC,QAAQ,IAAI,CAAC,YAAY,GAAG,CAAC;AAC7B,QAAQ,IAAI,CAAC,eAAe,GAAG,CAAC;AAChC,QAAQ,IAAI,CAAC,cAAc,GAAG,CAAC;AAC/B,QAAQ,IAAI,CAAC,YAAY,GAAG,IAAI;AAChC,QAAQ,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE;AACnC,QAAQ,IAAI,CAAC,mBAAmB,GAAG,IAAI;AACvC,QAAQ,IAAI,CAAC,WAAW,GAAG,IAAI;AAC/B,QAAQ,IAAI,CAAC,aAAa,GAAG,IAAI;AACjC,QAAQ,IAAI,CAAC,WAAW,GAAG,IAAI;AAC/B,QAAQ,IAAI,CAAC,WAAW,GAAG,IAAI;AAC/B,QAAQ,IAAI,CAAC,YAAY,GAAG,IAAI;AAChC,QAAQ,IAAI,CAAC,WAAW,GAAG,IAAI;AAC/B,QAAQ,IAAI,CAAC,gBAAgB,GAAG,IAAI;AACpC,QAAQ,IAAI,CAAC,eAAe,GAAG,IAAI;AACnC,QAAQ,IAAI,CAAC,mBAAmB,GAAG,yBAAyB,CAAC,IAAI,CAAC,mBAAmB,CAAC;AACtF,QAAQ,IAAI,CAAC,iBAAiB,GAAG,iCAAiC,CAAC,IAAI,CAAC,iBAAiB,CAAC;AAC1F,QAAQ,IAAI,CAAC,iBAAiB,GAAG,uBAAuB,CAAC,IAAI,CAAC,iBAAiB,CAAC;AAChF,QAAQ,IAAI,CAAC,mBAAmB,GAAG,yBAAyB,CAAC,IAAI,CAAC,mBAAmB,CAAC;AACtF,QAAQ,IAAI,CAAC,kBAAkB,GAAG,kCAAkC,CAAC,IAAI,CAAC,kBAAkB,CAAC;AAC7F,QAAQ,IAAI,CAAC,uBAAuB,GAAG,KAAK;AAC5C,QAAQ,IAAI,CAAC,6BAA6B,GAAG,KAAK;AAClD,QAAQ,IAAI,CAAC,iBAAiB,GAAG,IAAI;AACrC,QAAQ,IAAI,CAAC,mBAAmB,GAAG,IAAI;AACvC,QAAQ,IAAI,CAAC,uBAAuB,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE;AACzE,QAAQ,IAAI,CAAC,2BAA2B,GAAG,IAAI;AAC/C,QAAQ,IAAI,CAAC,0BAA0B,GAAG,IAAI;AAC9C,QAAQ,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE;AAClC,IAAI;AACJ;;AC1aO,SAAS,sBAAsB,CAAC,MAAM,EAAE,QAAQ,EAAE;AACzD,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE;AAClB,IAAI,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,EAAE;AACrC,IAAI,IAAI,CAAC,MAAM;AACf,QAAQ;AACR,IAAI,MAAM,YAAY,GAAG,CAAC,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,IAAI;AACjG,IAAI,MAAM,kBAAkB,GAAG,CAAC,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAC,kBAAkB,CAAC,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,IAAI;AAC7G,IAAI,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC;AAC1D,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,UAAU,KAAK;AAClC,QAAQ,IAAI,UAAU,KAAK,YAAY,EAAE;AACzC,YAAY,IAAI,UAAU,CAAC,WAAW,EAAE;AACxC,gBAAgB,MAAM,CAAC,kBAAkB,CAAC,UAAU,CAAC;AACrD,YAAY;AACZ,YAAY,wBAAwB,CAAC,UAAU,CAAC;AAChD,QAAQ;AACR,aAAa;AACb,YAAY,sBAAsB,CAAC,UAAU,CAAC;AAC9C,QAAQ;AACR,IAAI,CAAC,CAAC;AACN,IAAI,IAAI,YAAY;AACpB,QAAQ,MAAM,CAAC,gBAAgB,CAAC,YAAY,CAAC;AAC7C,IAAI,MAAM,CAAC,uBAAuB,CAAC,YAAY,CAAC;AAChD,IAAI,MAAM,CAAC,6BAA6B,CAAC,kBAAkB,CAAC;AAC5D,IAAI,MAAM,CAAC,gBAAgB,EAAE;AAC7B,IAAI,MAAM,CAAC,QAAQ,EAAE;AACrB,IAAI,IAAI,MAAM,CAAC,6BAA6B,EAAE;AAC9C,QAAQ;AACR,IAAI,MAAM,2BAA2B,GAAG,MAAM,CAAC,8BAA8B,EAAE;AAC/E,IAAI,MAAM,OAAO,GAAG,CAAC,EAAE,GAAG,MAAM,CAAC,6BAA6B,EAAE,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,MAAM,CAAC,oBAAoB,CAAC,2BAA2B,KAAK,IAAI,IAAI,2BAA2B,KAAK,MAAM,GAAG,2BAA2B,GAAG,YAAY,EAAE,2BAA2B,KAAK,MAAM,IAAI,2BAA2B,KAAK,MAAM,CAAC;AAC7U,IAAI,MAAM,CAAC,mBAAmB,CAAC,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;AACxE;AACO,SAAS,iCAAiC,CAAC,MAAM,EAAE,MAAM,EAAE;AAClE,IAAI,IAAI,YAAY,CAAC,MAAM,CAAC,EAAE;AAC9B,QAAQ,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC;AACpC,IAAI;AACJ;AACO,SAAS,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE;AACrD,IAAI,IAAI,YAAY,CAAC,MAAM,CAAC,EAAE;AAC9B,QAAQ,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC;AACpC,QAAQ,MAAM,OAAO,GAAG,MAAM,CAAC,oBAAoB,CAAC,WAAW,EAAE,KAAK,CAAC;AACvE,QAAQ,MAAM,CAAC,SAAS,EAAE;AAC1B,QAAQ,MAAM,CAAC,gBAAgB,CAAC,OAAO,CAAC;AACxC,QAAQ,MAAM,CAAC,gBAAgB,CAAC,OAAO,CAAC;AACxC,QAAQ;AACR,IAAI;AACJ,IAAI,IAAI,kBAAkB,CAAC,MAAM,CAAC,EAAE;AACpC,QAAQ,IAAI,kBAAkB,CAAC,MAAM,CAAC;AACtC,YAAY;AACZ,QAAQ,IAAI,sBAAsB,CAAC,MAAM,CAAC,EAAE;AAC5C,YAAY,MAAM,UAAU,GAAG,MAAM;AACrC,YAAY,IAAI,UAAU,CAAC,mCAAmC,KAAK,IAAI,EAAE;AACzE,gBAAgB,OAAO,UAAU,CAAC,mCAAmC;AACrE,gBAAgB;AAChB,YAAY;AACZ,QAAQ;AACR,QAAQ,MAAM,OAAO,GAAG,MAAM,CAAC,oBAAoB,CAAC,kBAAkB,EAAE,KAAK,CAAC;AAC9E,QAAQ,MAAM,CAAC,SAAS,EAAE;AAC1B,QAAQ,MAAM,CAAC,sBAAsB,CAAC,OAAO,CAAC;AAC9C,QAAQ,MAAM,CAAC,gBAAgB,CAAC,OAAO,CAAC;AACxC,IAAI;AACJ;;AC3DA,SAAS,wBAAwB,CAAC,MAAM,EAAE;AAC1C,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE;AAClB,IAAI,MAAM,YAAY,GAAG,MAAM,CAAC,eAAe,EAAE;AACjD,IAAI,IAAI,CAAC,YAAY;AACrB,QAAQ,OAAO,EAAE;AACjB,IAAI,MAAM,IAAI,GAAG,OAAO,YAAY,CAAC,IAAI,KAAK,QAAQ,GAAG,YAAY,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,EAAE;AAC7F,IAAI,MAAM,iBAAiB,GAAG,IAAI,KAAK,iBAAiB;AACxD,SAAS,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,YAAY,EAAE,MAAM,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,MAAM,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,iBAAiB,CAAC,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,KAAK,CAAC;AAC7J,IAAI,IAAI,CAAC,iBAAiB;AAC1B,QAAQ,OAAO,CAAC,YAAY,CAAC;AAC7B,IAAI,MAAM,UAAU,GAAG,YAAY,CAAC,UAAU;AAC9C,IAAI,OAAO,OAAO,UAAU,KAAK,UAAU,GAAG,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE;AAChF;AACO,SAAS,8BAA8B,CAAC,MAAM,EAAE,OAAO,EAAE;AAChE,IAAI,MAAM,MAAM,GAAG,MAAM,CAAC,cAAc,EAAE,CAAC,MAAM;AACjD,IAAI,MAAM,CAAC,0BAA0B,CAAC,OAAO,EAAE,MAAM;AACrD,QAAQC,wBAA4B,CAAC,MAAM,CAAC,6BAA6B,EAAE,CAAC;AAC5E,IAAI,CAAC,CAAC;AACN,IAAI,MAAM,CAAC,oBAAoB,EAAE;AACjC,IAAI,MAAM,CAAC,QAAQ,EAAE;AACrB,IAAI,IAAI,MAAM,CAAC,cAAc,EAAE,CAAC,MAAM,KAAK,MAAM,EAAE;AACnD,QAAQ,MAAM,CAAC,sBAAsB,CAAC,OAAO,CAAC;AAC9C,QAAQ,MAAM,CAAC,gBAAgB,CAAC,OAAO,CAAC;AACxC,IAAI;AACJ;AACO,SAAS,0BAA0B,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE;AACrE,IAAI,MAAM,MAAM,GAAG,MAAM,CAAC,cAAc,EAAE,CAAC,MAAM;AACjD,IAAI,MAAM,CAAC,0BAA0B,CAAC,OAAO,EAAE,MAAM;AACrD,QAAQF,oBAAwB,CAAC,MAAM,CAAC,6BAA6B,EAAE,EAAE,OAAO,CAAC;AACjF,IAAI,CAAC,CAAC;AACN,IAAI,MAAM,CAAC,oBAAoB,EAAE;AACjC,IAAI,MAAM,CAAC,QAAQ,EAAE;AACrB,IAAI,IAAI,MAAM,CAAC,cAAc,EAAE,CAAC,MAAM,KAAK,MAAM,EAAE;AACnD,QAAQ,MAAM,CAAC,sBAAsB,CAAC,OAAO,CAAC;AAC9C,QAAQ,MAAM,CAAC,gBAAgB,CAAC,OAAO,CAAC;AACxC,IAAI;AACJ;AACO,SAAS,sBAAsB,CAAC,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE;AAC9E,IAAI,MAAM,OAAO,GAAGG,gBAAoB,CAAC,MAAM,CAAC,6BAA6B,EAAE,EAAE,YAAY,EAAE,MAAM,CAAC;AACtG,IAAI,IAAI,OAAO,EAAE;AACjB,QAAQ,MAAM,CAAC,oBAAoB,EAAE;AACrC,QAAQ,MAAM,CAAC,sBAAsB,CAAC,OAAO,CAAC;AAC9C,QAAQ,MAAM,CAAC,gBAAgB,CAAC,OAAO,CAAC;AACxC,IAAI;AACJ;AACO,SAAS,8BAA8B,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE;AACxE,IAAI,MAAM,OAAO,GAAGC,wBAA4B,CAAC,MAAM,CAAC,6BAA6B,EAAE,EAAE,MAAM,CAAC;AAChG,IAAI,IAAI,OAAO,EAAE;AACjB,QAAQ,MAAM,CAAC,oBAAoB,EAAE;AACrC,QAAQ,MAAM,CAAC,sBAAsB,CAAC,OAAO,CAAC;AAC9C,QAAQ,MAAM,CAAC,gBAAgB,CAAC,OAAO,CAAC;AACxC,IAAI;AACJ;AACO,SAAS,6BAA6B,CAAC,MAAM,EAAE,OAAO,EAAE;AAC/D,IAAI,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,EAAE;AACrC,IAAI,IAAI,CAAC,MAAM;AACf,QAAQ;AACR,IAAI,MAAM,eAAe,GAAG,wBAAwB,CAAC,MAAM,CAAC;AAC5D,IAAI,MAAM,aAAa,GAAG,eAAe,CAAC,MAAM,CAAC,YAAY,CAAC;AAC9D,IAAI,MAAM,mBAAmB,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,kBAAkB,CAAC,MAAM,CAAC,IAAI,oBAAoB,CAAC,MAAM,CAAC,CAAC;AAC9H,IAAI,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,IAAI,mBAAmB,CAAC,MAAM,KAAK,CAAC;AACtE,QAAQ;AACR,IAAI,MAAM,UAAU,GAAG,MAAM,CAAC,aAAa,CAAC,sBAAsB,CAAC;AACnE,IAAI,MAAM,CAAC,0BAA0B,CAAC,OAAO,EAAE,MAAM;AACrD,QAAQ,KAAK,MAAM,IAAI,IAAI,aAAa,EAAE;AAC1C,YAAY,MAAM,CAAC,kBAAkB,CAAC,IAAI,CAAC;AAC3C,YAAY,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC;AACnC,QAAQ;AACR,QAAQ,uBAAuB,CAAC,MAAM,CAAC,6BAA6B,EAAE,EAAE,mBAAmB,EAAE;AAC7F,YAAY,WAAW,EAAE,KAAK;AAC9B,YAAY,KAAK,EAAE,IAAI;AACvB,SAAS,CAAC;AACV,QAAQ,UAAU,CAAC,mBAAmB,EAAE;AACxC,QAAQ,UAAU,CAAC,SAAS,EAAE;AAC9B,QAAQ,MAAM,CAAC,SAAS,EAAE;AAC1B,IAAI,CAAC,CAAC;AACN,IAAI,MAAM,CAAC,cAAc,EAAE;AAC3B,IAAI,MAAM,CAAC,oBAAoB,EAAE;AACjC,IAAI,MAAM,CAAC,QAAQ,EAAE;AACrB,IAAI,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC;AAChC,QAAQ,MAAM,CAAC,gBAAgB,CAAC,OAAO,CAAC;AACxC,IAAI,IAAI,mBAAmB,CAAC,MAAM,GAAG,CAAC;AACtC,QAAQ,MAAM,CAAC,sBAAsB,CAAC,OAAO,CAAC;AAC9C,IAAI,MAAM,CAAC,gBAAgB,CAAC,OAAO,CAAC;AACpC;AACO,SAAS,0BAA0B,CAAC,MAAM,EAAE,SAAS,EAAE;AAC9D,IAAI,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,EAAE;AACrC,IAAI,IAAI,CAAC,MAAM;AACf,QAAQ;AACR,IAAI,MAAM,QAAQ,GAAG,wBAAwB,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,uBAAuB,CAAC;AACrF,IAAI,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;AAC/B,QAAQ,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;AACjC,YAAY,MAAM,CAAC,aAAa,CAAC,CAAC,EAAE,SAAS,CAAC,wDAAwD,CAAC,CAAC;AACxG,QAAQ;AACR,QAAQ;AACR,IAAI;AACJ,IAAI,MAAM,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC;AAC9B,IAAI,MAAM,KAAK,GAAG,uBAAuB,CAAC,MAAM,CAAC;AACjD,IAAI,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ;AACnC,IAAI,MAAM,mBAAmB,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC;AACxD,IAAI,IAAI,mBAAmB,GAAG,CAAC;AAC/B,QAAQ;AACR,IAAI,IAAI,gBAAgB,GAAG,mBAAmB;AAC9C,IAAI,IAAI,SAAS,KAAK,4BAA4B,EAAE;AACpD,QAAQ,gBAAgB,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,mBAAmB,GAAG,CAAC,CAAC;AACjF,IAAI;AACJ,SAAS,IAAI,SAAS,KAAK,4BAA4B,EAAE;AACzD,QAAQ,gBAAgB,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,mBAAmB,GAAG,CAAC,CAAC;AAC/D,IAAI;AACJ,SAAS,IAAI,SAAS,KAAK,4BAA4B,EAAE;AACzD,QAAQ,gBAAgB,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC;AAC9C,IAAI;AACJ,SAAS,IAAI,SAAS,KAAK,0BAA0B,EAAE;AACvD,QAAQ,gBAAgB,GAAG,CAAC;AAC5B,IAAI;AACJ,IAAI,IAAI,gBAAgB,KAAK,mBAAmB;AAChD,QAAQ;AACR,IAAI,MAAM,SAAS,GAAG,QAAQ,CAAC,KAAK,EAAE;AACtC,IAAI,SAAS,CAAC,MAAM,CAAC,mBAAmB,EAAE,CAAC,CAAC;AAC5C,IAAI,SAAS,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC,EAAE,MAAM,CAAC;AACjD,IAAI,SAAS,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,KAAK,KAAK;AAC1C,QAAQ,IAAI,EAAE,EAAE,EAAE;AAClB,QAAQ,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,MAAM,EAAE,YAAY,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,MAAM,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,OAAO,EAAE,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;AACxH,IAAI,CAAC,CAAC;AACN,IAAI,mBAAmB,CAAC,MAAM,CAAC;AAC/B,IAAI,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC;AAClC,IAAI,MAAM,CAAC,SAAS,EAAE;AACtB,IAAI,MAAM,CAAC,SAAS,EAAE;AACtB,IAAI,MAAM,CAAC,cAAc,EAAE;AAC3B,IAAI,MAAM,CAAC,oBAAoB,EAAE;AACjC,IAAI,IAAI,YAAY,CAAC,MAAM,CAAC,EAAE;AAC9B,QAAQ,MAAM,CAAC,uBAAuB,CAAC,MAAM,CAAC;AAC9C,IAAI;AACJ,SAAS,IAAI,kBAAkB,CAAC,MAAM,CAAC,EAAE;AACzC,QAAQ,MAAM,CAAC,6BAA6B,CAAC,MAAM,CAAC;AACpD,IAAI;AACJ,IAAI,MAAM,CAAC,QAAQ,EAAE;AACrB,IAAI,MAAM,OAAO,GAAG,MAAM,CAAC,oBAAoB,CAAC,SAAS,EAAE,KAAK,CAAC;AACjE,IAAI,IAAI,YAAY,CAAC,MAAM,CAAC;AAC5B,QAAQ,MAAM,CAAC,gBAAgB,CAAC,OAAO,CAAC;AACxC,IAAI,IAAI,kBAAkB,CAAC,MAAM,CAAC;AAClC,QAAQ,MAAM,CAAC,sBAAsB,CAAC,OAAO,CAAC;AAC9C,IAAI,MAAM,CAAC,gBAAgB,CAAC,OAAO,CAAC;AACpC;;ACnJO,SAAS,wBAAwB,CAAC,QAAQ,EAAE;AACnD,IAAI,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,KAAK,IAAI,IAAI,QAAQ,KAAK,MAAM,GAAG,QAAQ,GAAG,CAAC,CAAC;AACjF,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;AAC/B,QAAQ,OAAO,CAAC;AAChB,IAAI,OAAO,CAAC,CAAC,KAAK,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG;AACtC;AACO,SAAS,4BAA4B,CAAC,KAAK,EAAE,SAAS,EAAE;AAC/D,IAAI,OAAO;AACX,QAAQ,CAAC,EAAE,KAAK,CAAC,CAAC,GAAG,SAAS,CAAC,YAAY;AAC3C,QAAQ,CAAC,EAAE,KAAK,CAAC,CAAC,GAAG,SAAS,CAAC,aAAa;AAC5C,KAAK;AACL;AACO,SAAS,4BAA4B,CAAC,KAAK,EAAE,SAAS,EAAE;AAC/D,IAAI,OAAO;AACX,QAAQ,CAAC,EAAE,KAAK,CAAC,CAAC,GAAG,SAAS,CAAC,YAAY;AAC3C,QAAQ,CAAC,EAAE,KAAK,CAAC,CAAC,GAAG,SAAS,CAAC,aAAa;AAC5C,KAAK;AACL;AACO,SAAS,uBAAuB,CAAC,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE;AACrE,IAAI,MAAM,OAAO,GAAG,SAAS,CAAC,YAAY,GAAG,CAAC;AAC9C,IAAI,MAAM,OAAO,GAAG,SAAS,CAAC,aAAa,GAAG,CAAC;AAC/C,IAAI,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,OAAO;AAC7B,IAAI,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,OAAO;AAC7B,IAAI,IAAI,CAAC,SAAS,KAAK,IAAI,IAAI,SAAS,KAAK,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC,KAAK,MAAM,IAAI;AACxF,QAAQ,CAAC,GAAG,CAAC,CAAC;AACd,IAAI,IAAI,CAAC,SAAS,KAAK,IAAI,IAAI,SAAS,KAAK,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC,KAAK,MAAM,IAAI;AACxF,QAAQ,CAAC,GAAG,CAAC,CAAC;AACd,IAAI,MAAM,OAAO,GAAG,CAAC,wBAAwB,CAAC,SAAS,KAAK,IAAI,IAAI,SAAS,KAAK,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,EAAE,IAAI,GAAG;AACxI,IAAI,IAAI,OAAO,KAAK,CAAC,EAAE;AACvB,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC;AACrC,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC;AACrC,QAAQ,MAAM,KAAK,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG;AACvC,QAAQ,MAAM,KAAK,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG;AACvC,QAAQ,CAAC,GAAG,KAAK;AACjB,QAAQ,CAAC,GAAG,KAAK;AACjB,IAAI;AACJ,IAAI,OAAO,EAAE,CAAC,EAAE,OAAO,GAAG,CAAC,EAAE,CAAC,EAAE,OAAO,GAAG,CAAC,EAAE;AAC7C;AACO,SAAS,yBAAyB,CAAC,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE;AACvE,IAAI,MAAM,OAAO,GAAG,SAAS,CAAC,YAAY,GAAG,CAAC;AAC9C,IAAI,MAAM,OAAO,GAAG,SAAS,CAAC,aAAa,GAAG,CAAC;AAC/C,IAAI,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,OAAO;AAC7B,IAAI,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,OAAO;AAC7B,IAAI,MAAM,OAAO,GAAG,CAAC,CAAC,wBAAwB,CAAC,SAAS,KAAK,IAAI,IAAI,SAAS,KAAK,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,EAAE,IAAI,GAAG;AACzI,IAAI,IAAI,OAAO,KAAK,CAAC,EAAE;AACvB,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC;AACrC,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC;AACrC,QAAQ,MAAM,KAAK,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG;AACvC,QAAQ,MAAM,KAAK,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG;AACvC,QAAQ,CAAC,GAAG,KAAK;AACjB,QAAQ,CAAC,GAAG,KAAK;AACjB,IAAI;AACJ,IAAI,IAAI,CAAC,SAAS,KAAK,IAAI,IAAI,SAAS,KAAK,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC,KAAK,MAAM,IAAI;AACxF,QAAQ,CAAC,GAAG,CAAC,CAAC;AACd,IAAI,IAAI,CAAC,SAAS,KAAK,IAAI,IAAI,SAAS,KAAK,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC,KAAK,MAAM,IAAI;AACxF,QAAQ,CAAC,GAAG,CAAC,CAAC;AACd,IAAI,OAAO,EAAE,CAAC,EAAE,OAAO,GAAG,CAAC,EAAE,CAAC,EAAE,OAAO,GAAG,CAAC,EAAE;AAC7C;AACO,SAAS,mBAAmB,CAAC,KAAK,EAAE,QAAQ,EAAE;AACrD,IAAI,MAAM,WAAW,GAAG,uBAAuB,CAAC,KAAK,EAAE;AACvD,QAAQ,YAAY,EAAE,QAAQ,CAAC,YAAY;AAC3C,QAAQ,aAAa,EAAE,QAAQ,CAAC,aAAa;AAC7C,KAAK,EAAE,QAAQ,CAAC,SAAS,CAAC;AAC1B,IAAI,OAAO;AACX,QAAQ,CAAC,EAAE,QAAQ,CAAC,aAAa,GAAG,CAAC,WAAW,CAAC,CAAC,GAAG,QAAQ,CAAC,YAAY,GAAG,CAAC,IAAI,QAAQ,CAAC,MAAM;AACjG,QAAQ,CAAC,EAAE,QAAQ,CAAC,aAAa,GAAG,CAAC,WAAW,CAAC,CAAC,GAAG,QAAQ,CAAC,aAAa,GAAG,CAAC,IAAI,QAAQ,CAAC,MAAM;AAClG,KAAK;AACL;AACO,SAAS,mBAAmB,CAAC,KAAK,EAAE,QAAQ,EAAE;AACrD,IAAI,MAAM,WAAW,GAAG;AACxB,QAAQ,CAAC,EAAE,QAAQ,CAAC,YAAY,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,QAAQ,CAAC,aAAa,IAAI,QAAQ,CAAC,MAAM;AAC3F,QAAQ,CAAC,EAAE,QAAQ,CAAC,aAAa,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,QAAQ,CAAC,aAAa,IAAI,QAAQ,CAAC,MAAM;AAC5F,KAAK;AACL,IAAI,OAAO,yBAAyB,CAAC,WAAW,EAAE;AAClD,QAAQ,YAAY,EAAE,QAAQ,CAAC,YAAY;AAC3C,QAAQ,aAAa,EAAE,QAAQ,CAAC,aAAa;AAC7C,KAAK,EAAE,QAAQ,CAAC,SAAS,CAAC;AAC1B;;AC7EA,MAAM,SAAS,GAAG,+BAA+B;AACjD,MAAM,QAAQ,GAAG,+BAA+B;AAChD,MAAM,YAAY,GAAG,kBAAkB;AACvC,SAAS,SAAS,CAAC,KAAK,EAAE;AAC1B,IAAI,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AACvD,SAAS,QAAQ,CAAC,EAAE;AACpB,SAAS,QAAQ,CAAC,CAAC,EAAE,GAAG;AACxB,SAAS,WAAW,EAAE;AACtB;AACA,SAAS,YAAY,CAAC,KAAK,EAAE;AAC7B,IAAI,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE;AAChC,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC;AAC9B,QAAQ,OAAO,CAAC,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;AACnD,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC;AAChC,QAAQ,OAAO,IAAI;AACnB,IAAI,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;AACnC,IAAI,MAAM,QAAQ,GAAG;AACrB,SAAS,KAAK,CAAC,EAAE;AACjB,SAAS,GAAG,CAAC,CAAC,KAAK,KAAK,CAAC,EAAE,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC;AAC1C,SAAS,IAAI,CAAC,EAAE;AAChB,SAAS,WAAW,EAAE;AACtB,IAAI,OAAO,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;AACzB;AACA,SAAS,eAAe,CAAC,KAAK,EAAE;AAChC,IAAI,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE;AAChC,IAAI,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;AAC/B,QAAQ,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACpD,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC;AACrC,YAAY,OAAO,IAAI;AACvB,QAAQ,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,GAAG,IAAI;AACzD,IAAI;AACJ,IAAI,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;AACnC,IAAI,OAAO,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,OAAO,GAAG,IAAI;AACpD;AACA,SAAS,UAAU,CAAC,KAAK,EAAE;AAC3B,IAAI,IAAI,KAAK,KAAK,SAAS;AAC3B,QAAQ,OAAO,CAAC;AAChB,IAAI,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE;AAChC,IAAI,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;AAC/B,QAAQ,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACpD,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC;AACrC,YAAY,OAAO,IAAI;AACvB,QAAQ,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,GAAG,GAAG;AACxD,IAAI;AACJ,IAAI,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;AACnC,IAAI,OAAO,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,GAAG,IAAI;AAC9E;AACA,SAAS,oBAAoB,CAAC,KAAK,EAAE;AACrC,IAAI,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC;AAClD,IAAI,IAAI,CAAC,KAAK;AACd,QAAQ,OAAO,IAAI;AACnB,IAAI,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC;AAChE,IAAI,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;AAChD,QAAQ,OAAO,IAAI;AACnB,IAAI,MAAM,CAAC,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACvC,IAAI,MAAM,CAAC,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACvC,IAAI,MAAM,CAAC,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACvC,IAAI,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACtC,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,KAAK,KAAK,IAAI;AAChE,QAAQ,OAAO,IAAI;AACnB,IAAI,MAAM,GAAG,GAAG,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/D,IAAI,OAAO,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,SAAS,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC,CAAC;AACtE;AACO,SAAS,wBAAwB,CAAC,KAAK,EAAE;AAChD,IAAI,IAAI,EAAE;AACV,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ;AACjC,QAAQ,OAAO,IAAI;AACnB,IAAI,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,aAAa;AACpD,QAAQ,OAAO,WAAW;AAC1B,IAAI,OAAO,CAAC,EAAE,GAAG,YAAY,CAAC,KAAK,CAAC,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,oBAAoB,CAAC,KAAK,CAAC;AAClG;AACO,SAAS,qBAAqB,CAAC,KAAK,EAAE,QAAQ,EAAE;AACvD,IAAI,IAAI,EAAE;AACV,IAAI,OAAO,CAAC,EAAE,GAAG,wBAAwB,CAAC,KAAK,CAAC,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,QAAQ;AAC3F;;AC1EO,MAAM,sBAAsB,GAAG,CAAC;AAChC,MAAM,sBAAsB,GAAG,KAAK;AAC3C,MAAM,kBAAkB,GAAG,0DAA0D;AACrF,SAAS,iBAAiB,CAAC,KAAK,EAAE;AAClC,IAAI,IAAI,OAAO,WAAW,KAAK,UAAU;AACzC,QAAQ,OAAO,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,UAAU;AACzD,IAAI,OAAO,KAAK,CAAC,MAAM;AACvB;AACA,SAAS,aAAa,CAAC,KAAK,EAAE,QAAQ,EAAE;AACxC,IAAI,OAAO,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,QAAQ;AAC7F;AACA,SAASC,UAAQ,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;AAC/C,IAAI,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;AACxC;AACA,SAAS,cAAc,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE;AACpE,IAAI,IAAI,KAAK,KAAK,IAAI;AACtB,QAAQ,OAAO,KAAK,KAAK,QAAQ;AACjC,QAAQ,OAAO,KAAK,KAAK,QAAQ;AACjC,QAAQ,OAAO,KAAK,KAAK,SAAS,EAAE;AACpC,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;AAClE,YAAYA,UAAQ,CAAC,MAAM,EAAE,IAAI,EAAE,wBAAwB,EAAE,kCAAkC,CAAC;AAChG,YAAY,OAAO,SAAS;AAC5B,QAAQ;AACR,QAAQ,OAAO,KAAK;AACpB,IAAI;AACJ,IAAI,IAAI,KAAK,KAAK,SAAS,IAAI,OAAO,KAAK,KAAK,UAAU,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AACzF,QAAQA,UAAQ,CAAC,MAAM,EAAE,IAAI,EAAE,uBAAuB,EAAE,mCAAmC,CAAC;AAC5F,QAAQ,OAAO,SAAS;AACxB,IAAI;AACJ,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AACnC,QAAQA,UAAQ,CAAC,MAAM,EAAE,IAAI,EAAE,wBAAwB,EAAE,mCAAmC,CAAC;AAC7F,QAAQ,OAAO,SAAS;AACxB,IAAI;AACJ,IAAI,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;AAC3C,QAAQ,OAAO,KAAK;AACpB,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;AACzB,QAAQA,UAAQ,CAAC,MAAM,EAAE,IAAI,EAAE,iBAAiB,EAAE,8CAA8C,CAAC;AACjG,QAAQ,OAAO,SAAS;AACxB,IAAI;AACJ,IAAI,IAAI,KAAK,GAAG,QAAQ,EAAE;AAC1B,QAAQA,UAAQ,CAAC,MAAM,EAAE,IAAI,EAAE,mBAAmB,EAAE,CAAC,2BAA2B,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;AAC9F,QAAQ,OAAO,SAAS;AACxB,IAAI;AACJ,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;AACnB,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AAC9B,QAAQ,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,KAAK,cAAc,CAAC,KAAK,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;AACjI,QAAQ,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;AAC1B,QAAQ,OAAO,MAAM;AACrB,IAAI;AACJ,IAAI,MAAM,MAAM,GAAG,EAAE;AACrB,IAAI,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AACtD,QAAQ,IAAI,GAAG,KAAK,WAAW,IAAI,GAAG,KAAK,aAAa,IAAI,GAAG,KAAK,WAAW;AAC/E,YAAY;AACZ,QAAQ,MAAM,CAAC,GAAG,CAAC,GAAG,cAAc,CAAC,KAAK,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,CAAC;AAChG,IAAI;AACJ,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;AACtB,IAAI,OAAO,MAAM;AACjB;AACO,SAAS,uBAAuB,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,GAAG,EAAE,EAAE;AACnE,IAAI,MAAM,MAAM,GAAG,EAAE;AACrB,IAAI,MAAM,QAAQ,GAAG,EAAE;AACvB,IAAI,IAAI,KAAK,KAAK,SAAS;AAC3B,QAAQ,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE;AACnC,IAAI,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AACrE,QAAQA,UAAQ,CAAC,MAAM,EAAE,IAAI,EAAE,sBAAsB,EAAE,6BAA6B,CAAC;AACrF,QAAQ,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE;AACnC,IAAI;AACJ,IAAI,MAAM,QAAQ,GAAG,aAAa,CAAC,OAAO,CAAC,gBAAgB,EAAE,sBAAsB,CAAC;AACpF,IAAI,MAAM,QAAQ,GAAG,aAAa,CAAC,OAAO,CAAC,gBAAgB,EAAE,sBAAsB,CAAC;AACpF,IAAI,MAAM,MAAM,GAAG,EAAE;AACrB,IAAI,KAAK,MAAM,CAAC,SAAS,EAAE,cAAc,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AACrE,QAAQ,MAAM,aAAa,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;AACpD,QAAQ,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;AACjD,YAAYA,UAAQ,CAAC,MAAM,EAAE,aAAa,EAAE,2BAA2B,EAAE,CAAC,oBAAoB,EAAE,SAAS,CAAC,eAAe,CAAC,CAAC;AAC3H,YAAY;AACZ,QAAQ;AACR,QAAQ,IAAI,CAAC,cAAc;AAC3B,YAAY,OAAO,cAAc,KAAK,QAAQ;AAC9C,YAAY,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE;AAC3C,YAAYA,UAAQ,CAAC,MAAM,EAAE,aAAa,EAAE,gCAAgC,EAAE,4CAA4C,CAAC;AAC3H,YAAY;AACZ,QAAQ;AACR,QAAQ,MAAM,MAAM,GAAG,cAAc,CAAC,cAAc,EAAE,aAAa,EAAE,CAAC,EAAE,QAAQ,EAAE,IAAI,OAAO,EAAE,EAAE,MAAM,CAAC;AACxG,QAAQ,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;AAC5E,YAAY,MAAM,CAAC,SAAS,CAAC,GAAG,MAAM;AACtC,QAAQ;AACR,IAAI;AACJ,IAAI,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;AAC7B,QAAQ,MAAM,KAAK,GAAG,iBAAiB,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;AAC/D,QAAQ,IAAI,KAAK,GAAG,QAAQ,EAAE;AAC9B,YAAYA,UAAQ,CAAC,MAAM,EAAE,IAAI,EAAE,mBAAmB,EAAE,CAAC,cAAc,EAAE,KAAK,CAAC,gCAAgC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;AAC7H,QAAQ;AACR,IAAI;AACJ,IAAI,OAAO;AACX,QAAQ,KAAK,EAAE,MAAM,CAAC,MAAM,KAAK,CAAC,GAAG,MAAM,GAAG,SAAS;AACvD,QAAQ,MAAM;AACd,QAAQ,QAAQ;AAChB,KAAK;AACL;AACO,SAAS,oBAAoB,CAAC,QAAQ,EAAE;AAC/C,IAAI,IAAI,CAAC,QAAQ;AACjB,QAAQ,OAAO,SAAS;AACxB,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;AAC/C;;AClGA,SAASC,cAAY,CAAC,KAAK,EAAE,QAAQ,GAAG,CAAC,EAAE;AAC3C,IAAI,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,QAAQ;AACjF;AACA,SAAS,OAAO,CAAC,KAAK,EAAE;AACxB,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;AAC/B,QAAQ,OAAO,CAAC;AAChB,IAAI,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;AAC1C;AACA,SAAS,eAAe,CAAC,KAAK,EAAE,QAAQ,EAAE;AAC1C,IAAI,MAAM,MAAM,GAAG,mBAAmB,CAAC,KAAK,EAAE,QAAQ,CAAC;AACvD,IAAI,MAAM,UAAU,GAAG,4BAA4B,CAAC,MAAM,EAAE;AAC5D,QAAQ,YAAY,EAAE,QAAQ,CAAC,YAAY;AAC3C,QAAQ,aAAa,EAAE,QAAQ,CAAC,aAAa;AAC7C,KAAK,CAAC;AACN,IAAI,OAAO,EAAE,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE;AACjE;AACA,SAAS,uBAAuB,CAAC,MAAM,EAAE,QAAQ,EAAE;AACnD,IAAI,OAAO,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,GAAG,QAAQ,CAAC,YAAY,CAAC,CAAC;AAC9E;AACA,SAAS,uBAAuB,CAAC,MAAM,EAAE,QAAQ,EAAE;AACnD,IAAI,OAAO,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,CAAC;AAC/E;AACA,SAASC,iBAAe,CAAC,MAAM,EAAE;AACjC,IAAI,IAAI,EAAE;AACV,IAAI,MAAM,MAAM,GAAG,CAAC,EAAE,GAAG,MAAM,CAAC,cAAc,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,MAAM,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC;AACpG,IAAI,IAAI,MAAM;AACd,QAAQ,OAAO,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE;AAC3C,IAAI,OAAO;AACX,QAAQ,CAAC,EAAED,cAAY,CAAC,MAAM,CAAC,IAAI,CAAC,GAAGA,cAAY,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC;AACrE,QAAQ,CAAC,EAAEA,cAAY,CAAC,MAAM,CAAC,GAAG,CAAC,GAAGA,cAAY,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC;AACrE,KAAK;AACL;AACO,SAAS,0BAA0B,CAAC,KAAK,EAAE,eAAe,EAAE;AACnE,IAAI,MAAM,MAAM,GAAGC,iBAAe,CAAC,KAAK,CAAC;AACzC,IAAI,OAAO;AACX,QAAQ,YAAY,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAED,cAAY,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AAC/D,QAAQ,aAAa,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAEA,cAAY,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;AACjE,QAAQ,aAAa,EAAE,MAAM,CAAC,CAAC;AAC/B,QAAQ,aAAa,EAAE,MAAM,CAAC,CAAC;AAC/B,QAAQ,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,CAACA,cAAY,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;AAC3E,QAAQ,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,CAACA,cAAY,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;AAC3E,QAAQ,SAAS,EAAE;AACnB,YAAY,QAAQ,EAAE,wBAAwB,CAAC,eAAe,CAAC;AAC/D,YAAY,KAAK,EAAE,KAAK,CAAC,KAAK,KAAK,IAAI;AACvC,YAAY,KAAK,EAAE,KAAK,CAAC,KAAK,KAAK,IAAI;AACvC,SAAS;AACT,KAAK;AACL;AACA,SAAS,qBAAqB,CAAC,KAAK,EAAE,eAAe,EAAE;AACvD,IAAI,MAAM,QAAQ,GAAG,wBAAwB,CAAC,eAAe,CAAC;AAC9D,IAAI,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,KAAK,IAAI;AACtC,IAAI,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,KAAK,IAAI;AACtC,IAAI,IAAI,QAAQ,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK;AAC1C,QAAQ,OAAO,SAAS;AACxB,IAAI,OAAO;AACX,QAAQ,IAAI,QAAQ,KAAK,CAAC,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC;AAC/C,QAAQ,IAAI,KAAK,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;AACnC,QAAQ,IAAI,KAAK,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;AACnC,KAAK;AACL;AACA,SAAS,YAAY,CAAC,KAAK,EAAE,QAAQ,EAAE;AACvC,IAAI,OAAO;AACX,QAAQ,YAAY,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAEA,cAAY,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AAC/D,QAAQ,aAAa,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAEA,cAAY,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;AACjE,QAAQ,IAAI,QAAQ,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC;AACzC,QAAQ,WAAW,EAAE,CAAC;AACtB,KAAK;AACL;AACA,SAAS,eAAe,CAAC,MAAM,EAAE;AACjC,IAAI,MAAM,UAAU,GAAG,MAAM,CAAC,mBAAmB;AACjD,IAAI,IAAI,OAAO,UAAU,KAAK,QAAQ,IAAI,UAAU,CAAC,IAAI,EAAE,KAAK,EAAE;AAClE,QAAQ,OAAO,UAAU;AACzB,IAAI,IAAI,YAAY,CAAC,MAAM,CAAC;AAC5B,QAAQ,OAAO,MAAM,CAAC,OAAO,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;AACxD,IAAI,OAAO,CAAC,WAAW,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC;AAC9C;AACA,SAAS,qBAAqB,CAAC,MAAM,EAAE,eAAe,EAAE;AACxD,IAAI,IAAI,CAAC,eAAe;AACxB,QAAQ,OAAO,SAAS;AACxB,IAAI,MAAM,QAAQ,GAAG,MAAM,CAAC,eAAe;AAC3C,IAAI,IAAI,CAAC,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC;AAC5E,QAAQ,OAAO,SAAS;AACxB,IAAI,OAAO,oBAAoB,CAAC,QAAQ,CAAC;AACzC;AACA,SAAS,QAAQ,CAAC,MAAM,EAAE;AAC1B,IAAI,IAAI,kBAAkB,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,gBAAgB,KAAK,IAAI;AACtE,QAAQ,OAAO,IAAI;AACnB,IAAI,OAAO,MAAM,CAAC,OAAO,KAAK,KAAK;AACnC;AACA,SAAS,QAAQ,CAAC,MAAM,EAAE;AAC1B,IAAI,OAAO,kBAAkB,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,gBAAgB,KAAK,IAAI;AACzE;AACA,SAAS,WAAW,CAAC,MAAM,EAAE,OAAO,EAAE;AACtC,IAAI,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;AACnC,IAAI,MAAM,QAAQ,GAAG,qBAAqB,CAAC,MAAM,EAAE,OAAO,CAAC,eAAe,CAAC;AAC3E,IAAI,OAAO;AACX,QAAQ,EAAE,EAAE,eAAe,CAAC,MAAM,CAAC;AACnC,QAAQ,IAAI,MAAM,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;AAC3C,QAAQ,IAAI,QAAQ,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC;AACzC,KAAK;AACL;AACA,SAAS,iBAAiB,CAAC,MAAM,EAAE,QAAQ,EAAE;AAC7C,IAAI,IAAI,EAAE;AACV,IAAI,MAAM,WAAW,GAAGA,cAAY,CAAC,MAAM,CAAC,KAAK,CAAC;AAClD,IAAI,MAAM,YAAY,GAAG,wBAAwB,CAAC,CAAC,EAAE,GAAG,QAAQ,CAAC,SAAS,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,MAAM,GAAG,EAAE,CAAC,QAAQ,CAAC;AAC7H,IAAI,MAAM,KAAK,GAAG,WAAW,GAAG,YAAY;AAC5C,IAAI,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,QAAQ,GAAG,CAAC,GAAG,KAAK;AACjD;AACA,SAAS,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE;AACtD,IAAI,MAAM,KAAK,GAAG,iBAAiB,CAAC,MAAM,EAAE,QAAQ,CAAC;AACrD,IAAI,MAAM,MAAM,GAAG,MAAM;AACzB,IAAI,IAAI,KAAK,KAAK,CAAC;AACnB,QAAQ,MAAM,CAAC,KAAK,GAAG,KAAK;AAC5B,IAAI,OAAO,MAAM;AACjB;AACA,SAAS,UAAU,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE;AAC7C,IAAI,IAAI,EAAE,EAAE,EAAE;AACd,IAAI,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,WAAW,EAAE;AAC3F,IAAI,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,EAAE,OAAO,CAAC;AAC3C,IAAI,MAAM,IAAI,GAAG,qBAAqB,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC;AAC5D,IAAI,MAAM,KAAK,GAAG,OAAO,CAACA,cAAY,CAAC,IAAI,CAAC,aAAa,EAAEA,cAAY,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;AAC5F,IAAI,MAAM,YAAY,GAAG,IAAI,CAAC,cAAc,KAAK,SAAS,GAAG,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,MAAM;AAC9F,IAAI,MAAM,MAAM,GAAG,YAAY,KAAK;AACpC,UAAU;AACV,UAAU,YAAY,KAAK;AAC3B,cAAc;AACd,cAAc,qBAAqB,CAAC,YAAY,EAAE,SAAS,CAAC;AAC5D,IAAI,MAAM,WAAW,GAAGA,cAAY,CAAC,IAAI,CAAC,mBAAmB,EAAEA,cAAY,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;AACjG,IAAI,MAAM,KAAK,GAAG;AAClB,QAAQ,IAAI;AACZ,QAAQ,KAAK;AACb,QAAQ,IAAI,MAAM,KAAK,SAAS,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;AACnD,QAAQ,WAAW;AACnB,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe;AAC9C,cAAc,EAAE,eAAe,EAAE,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,KAAK,KAAKA,cAAY,CAAC,KAAK,CAAC,CAAC;AACzF,cAAc,EAAE,CAAC;AACjB,QAAQ,IAAI,OAAO,IAAI,CAAC,UAAU,KAAK,SAAS,GAAG,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,GAAG,EAAE,CAAC;AACxF,QAAQ,IAAI,OAAO,IAAI,CAAC,OAAO,KAAK,SAAS,GAAG,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC;AAC/E,QAAQ,IAAI,OAAO,IAAI,CAAC,WAAW,KAAK,SAAS,GAAG,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,GAAG,EAAE,CAAC;AAC3F,KAAK;AACL,IAAI,IAAI,IAAI,KAAK,MAAM,EAAE;AACzB,QAAQ,MAAM,KAAK,GAAG,eAAe,CAAC,EAAE,CAAC,EAAEA,cAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,EAAEA,cAAY,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,QAAQ,CAAC;AAC1G,QAAQ,OAAO;AACf,YAAY,IAAI,EAAE,MAAM;AACxB,YAAY,GAAG,IAAI;AACnB,YAAY,SAAS,EAAE,MAAM;AAC7B,YAAY,QAAQ,EAAE,kBAAkB,CAAC;AACzC,gBAAgB,IAAI,EAAE,MAAM;AAC5B,gBAAgB,CAAC,EAAE,KAAK,CAAC,CAAC;AAC1B,gBAAgB,CAAC,EAAE,KAAK,CAAC,CAAC;AAC1B,gBAAgB,KAAK,EAAE,uBAAuB,CAACA,cAAY,CAAC,IAAI,CAAC,KAAK,CAAC,GAAGA,cAAY,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,QAAQ,CAAC;AACjH,gBAAgB,MAAM,EAAE,uBAAuB,CAACA,cAAY,CAAC,IAAI,CAAC,MAAM,CAAC,GAAGA,cAAY,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,QAAQ,CAAC;AACnH,gBAAgB,IAAIA,cAAY,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG;AAC5C,sBAAsB;AACtB,wBAAwB,EAAE,EAAE,uBAAuB,CAACA,cAAY,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC;AACpF;AACA,sBAAsB,EAAE,CAAC;AACzB,gBAAgB,IAAIA,cAAY,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG;AAC5C,sBAAsB;AACtB,wBAAwB,EAAE,EAAE,uBAAuB,CAACA,cAAY,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC;AACpF;AACA,sBAAsB,EAAE,CAAC;AACzB,aAAa,EAAE,IAAI,EAAE,QAAQ,CAAC;AAC9B,YAAY,KAAK;AACjB,SAAS;AACT,IAAI;AACJ,IAAI,IAAI,IAAI,KAAK,QAAQ,EAAE;AAC3B,QAAQ,MAAM,MAAM,GAAGA,cAAY,CAAC,IAAI,CAAC,MAAM,CAAC,GAAGA,cAAY,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;AAC/E,QAAQ,MAAM,MAAM,GAAG,eAAe,CAAC;AACvC,YAAY,CAAC,EAAEA,cAAY,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,MAAM;AAC/C,YAAY,CAAC,EAAEA,cAAY,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM;AAC9C,SAAS,EAAE,QAAQ,CAAC;AACpB,QAAQ,OAAO;AACf,YAAY,IAAI,EAAE,MAAM;AACxB,YAAY,GAAG,IAAI;AACnB,YAAY,SAAS,EAAE,QAAQ;AAC/B,YAAY,QAAQ,EAAE,kBAAkB,CAAC;AACzC,gBAAgB,IAAI,EAAE,QAAQ;AAC9B,gBAAgB,EAAE,EAAE,MAAM,CAAC,CAAC;AAC5B,gBAAgB,EAAE,EAAE,MAAM,CAAC,CAAC;AAC5B,gBAAgB,MAAM,EAAE,uBAAuB,CAAC,MAAM,EAAE,QAAQ,CAAC;AACjE,aAAa,EAAE,IAAI,EAAE,QAAQ,CAAC;AAC9B,YAAY,KAAK;AACjB,SAAS;AACT,IAAI;AACJ,IAAI,IAAI,IAAI,KAAK,SAAS,EAAE;AAC5B,QAAQ,MAAM,EAAE,GAAGA,cAAY,CAAC,IAAI,CAAC,EAAE,CAAC,GAAGA,cAAY,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;AACvE,QAAQ,MAAM,EAAE,GAAGA,cAAY,CAAC,IAAI,CAAC,EAAE,CAAC,GAAGA,cAAY,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;AACvE,QAAQ,MAAM,MAAM,GAAG,eAAe,CAAC;AACvC,YAAY,CAAC,EAAEA,cAAY,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;AAC3C,YAAY,CAAC,EAAEA,cAAY,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE;AAC1C,SAAS,EAAE,QAAQ,CAAC;AACpB,QAAQ,OAAO;AACf,YAAY,IAAI,EAAE,MAAM;AACxB,YAAY,GAAG,IAAI;AACnB,YAAY,SAAS,EAAE,SAAS;AAChC,YAAY,QAAQ,EAAE,kBAAkB,CAAC;AACzC,gBAAgB,IAAI,EAAE,SAAS;AAC/B,gBAAgB,EAAE,EAAE,MAAM,CAAC,CAAC;AAC5B,gBAAgB,EAAE,EAAE,MAAM,CAAC,CAAC;AAC5B,gBAAgB,EAAE,EAAE,uBAAuB,CAAC,EAAE,EAAE,QAAQ,CAAC;AACzD,gBAAgB,EAAE,EAAE,uBAAuB,CAAC,EAAE,EAAE,QAAQ,CAAC;AACzD,aAAa,EAAE,IAAI,EAAE,QAAQ,CAAC;AAC9B,YAAY,KAAK;AACjB,SAAS;AACT,IAAI;AACJ,IAAI,IAAI,IAAI,KAAK,SAAS,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;AAC1D,QAAQ,MAAM,MAAM,GAAG,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,MAAM,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,CAAC,CAAC,KAAK,KAAK,eAAe,CAAC;AAC/G,YAAY,CAAC,EAAEA,cAAY,CAAC,IAAI,CAAC,IAAI,CAAC,GAAGA,cAAY,CAAC,KAAK,CAAC,CAAC,CAAC;AAC9D,YAAY,CAAC,EAAEA,cAAY,CAAC,IAAI,CAAC,GAAG,CAAC,GAAGA,cAAY,CAAC,KAAK,CAAC,CAAC,CAAC;AAC7D,SAAS,EAAE,QAAQ,CAAC,CAAC;AACrB,QAAQ,OAAO;AACf,YAAY,IAAI,EAAE,MAAM;AACxB,YAAY,GAAG,IAAI;AACnB,YAAY,SAAS,EAAE,SAAS;AAChC,YAAY,QAAQ,EAAE,kBAAkB,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,CAAC;AACrF,YAAY,KAAK;AACjB,SAAS;AACT,IAAI;AACJ,IAAI,OAAO,IAAI;AACf;AACA,SAAS,kBAAkB,CAAC,UAAU,EAAE,KAAK,EAAE;AAC/C,IAAI,IAAI,EAAE,EAAE,EAAE;AACd,IAAI,MAAM,QAAQ,GAAG,UAAU;AAC/B,IAAI,MAAM,MAAM,GAAG,CAAC,EAAE,GAAG,QAAQ,CAAC,UAAU,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AAC7F,IAAI,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,GAAGA,cAAY,CAAC,MAAM,CAAC,CAAC,CAAC;AAC9C,IAAI,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,GAAGA,cAAY,CAAC,MAAM,CAAC,CAAC,CAAC;AAC9C,IAAI,MAAM,MAAM,GAAG,CAAC,EAAE,GAAG,QAAQ,CAAC,mBAAmB,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,MAAM,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC;AAC7G,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;AACrD,QAAQ,OAAO;AACf,YAAY,CAAC,EAAEA,cAAY,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC;AACtD,YAAY,CAAC,EAAEA,cAAY,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC;AACrD,SAAS;AACT,IAAI;AACJ,IAAI,MAAM,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM;AAC7D,IAAI,OAAO;AACX,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC;AAC5B,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC;AAC5B,KAAK;AACL;AACA,SAAS,iBAAiB,CAAC,UAAU,EAAE;AACvC,IAAI,MAAM,QAAQ,GAAG,UAAU,CAAC,IAAI;AACpC,IAAI,OAAO,aAAa,CAAC,QAAQ,EAAE,CAAC,KAAK,KAAK,kBAAkB,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;AACpF;AACA,SAAS,oBAAoB,CAAC,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE;AAC7D,IAAI,IAAI,EAAE;AACV,IAAI,MAAM,IAAI,GAAG,UAAU;AAC3B,IAAI,MAAM,KAAK,GAAG,eAAe,CAAC,EAAE,CAAC,EAAEA,cAAY,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,EAAEA,cAAY,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,EAAE,QAAQ,CAAC;AAClH,IAAI,MAAM,KAAK,GAAG,iBAAiB,CAAC,UAAU,EAAE,QAAQ,CAAC;AACzD,IAAI,MAAM,KAAK,GAAGA,cAAY,CAAC,UAAU,CAAC,KAAK,CAAC,GAAGA,cAAY,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC;AACrF,IAAI,OAAO;AACX,QAAQ,IAAI,EAAE,YAAY;AAC1B,QAAQ,cAAc,EAAE,MAAM;AAC9B,QAAQ,GAAG,WAAW,CAAC,UAAU,EAAE,OAAO,CAAC;AAC3C,QAAQ,QAAQ,EAAE;AAClB,YAAY,CAAC,EAAE,KAAK,CAAC,CAAC;AACtB,YAAY,CAAC,EAAE,KAAK,CAAC,CAAC;AACtB,YAAY,IAAI,KAAK,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,uBAAuB,CAAC,KAAK,EAAE,QAAQ,CAAC,EAAE,GAAG,EAAE,CAAC;AACrF,YAAY,IAAI,KAAK,KAAK,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;AAC7C,SAAS;AACT,QAAQ,IAAI,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE;AACrF,QAAQ,KAAK,EAAE;AACf,YAAY,IAAIA,cAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,EAAEA,cAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,GAAG,EAAE,CAAC;AACjG,YAAY,IAAI,OAAO,IAAI,CAAC,UAAU,KAAK,QAAQ,GAAG,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,GAAG,EAAE,CAAC;AAC3F,YAAY,IAAI,OAAO,IAAI,CAAC,UAAU,KAAK,QAAQ,IAAI,OAAO,IAAI,CAAC,UAAU,KAAK;AAClF,kBAAkB,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU;AAC/C,kBAAkB,EAAE,CAAC;AACrB,YAAY,IAAI,IAAI,CAAC,IAAI,KAAK;AAC9B,kBAAkB,EAAE,IAAI,EAAE,qBAAqB,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC;AACrE,kBAAkB,EAAE,CAAC;AACrB,YAAY,IAAI,IAAI,CAAC,eAAe,KAAK;AACzC,kBAAkB,EAAE,eAAe,EAAE,qBAAqB,CAAC,IAAI,CAAC,eAAe,EAAE,WAAW,CAAC;AAC7F,kBAAkB,EAAE,CAAC;AACrB,YAAY,IAAI,IAAI,CAAC,SAAS,KAAK,MAAM;AACzC,gBAAgB,IAAI,CAAC,SAAS,KAAK,QAAQ;AAC3C,gBAAgB,IAAI,CAAC,SAAS,KAAK,OAAO;AAC1C,gBAAgB,IAAI,CAAC,SAAS,KAAK;AACnC,kBAAkB,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS;AAC7C,kBAAkB,EAAE,CAAC;AACrB,YAAY,IAAIA,cAAY,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG;AAChD,kBAAkB,EAAE,UAAU,EAAEA,cAAY,CAAC,IAAI,CAAC,UAAU,CAAC;AAC7D,kBAAkB,EAAE,CAAC;AACrB,SAAS;AACT,QAAQ,IAAI,UAAU,CAAC,gBAAgB,KAAK,IAAI,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;AACzE,KAAK;AACL;AACA,SAAS,qBAAqB,CAAC,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE;AAC9D,IAAI,MAAM,SAAS,GAAG;AACtB,QAAQ,IAAI,UAAU,CAAC,MAAM,KAAK;AAClC,cAAc,EAAE,MAAM,EAAE,qBAAqB,CAAC,UAAU,CAAC,MAAM,EAAE,SAAS,CAAC;AAC3E,cAAc,EAAE,CAAC;AACjB,QAAQ,IAAIA,cAAY,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI;AACpD,cAAc,EAAE,WAAW,EAAEA,cAAY,CAAC,UAAU,CAAC,WAAW,CAAC;AACjE,cAAc,EAAE,CAAC;AACjB,QAAQ,IAAI,UAAU,CAAC,IAAI,KAAK;AAChC,cAAc,EAAE,IAAI,EAAE,qBAAqB,CAAC,UAAU,CAAC,IAAI,EAAE,WAAW,CAAC;AACzE,cAAc,EAAE,CAAC;AACjB,QAAQ,IAAIA,cAAY,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,KAAK;AACpD,cAAc,EAAE,OAAO,EAAE,OAAO,CAACA,cAAY,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;AACrE,cAAc,EAAE,CAAC;AACjB,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,eAAe;AACpD,cAAc,EAAE,eAAe,EAAE,UAAU,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,KAAK,KAAKA,cAAY,CAAC,KAAK,CAAC,CAAC;AAC/F,cAAc,EAAE,CAAC;AACjB,QAAQ,IAAI,OAAO,UAAU,CAAC,UAAU,KAAK;AAC7C,cAAc,EAAE,UAAU,EAAE,UAAU,CAAC,UAAU;AACjD,cAAc,EAAE,CAAC;AACjB,QAAQ,IAAI,OAAO,UAAU,CAAC,OAAO,KAAK,SAAS,GAAG,EAAE,OAAO,EAAE,UAAU,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC;AAC3F,KAAK;AACL,IAAI,MAAM,KAAK,GAAG,UAAU,CAAC,mBAAmB;AAChD,IAAI,IAAI,KAAK,KAAK,MAAM,EAAE;AAC1B,QAAQ,MAAM,KAAK,GAAG,eAAe,CAAC,EAAE,CAAC,EAAEA,cAAY,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,EAAEA,cAAY,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,EAAE,QAAQ,CAAC;AACtH,QAAQ,MAAM,KAAK,GAAG,iBAAiB,CAAC,UAAU,EAAE,QAAQ,CAAC;AAC7D,QAAQ,OAAO;AACf,YAAY,IAAI,EAAE,YAAY;AAC9B,YAAY,cAAc,EAAE,OAAO;AACnC,YAAY,GAAG,WAAW,CAAC,UAAU,EAAE,OAAO,CAAC;AAC/C,YAAY,KAAK,EAAE,MAAM;AACzB,YAAY,QAAQ,EAAE;AACtB,gBAAgB,IAAI,EAAE,MAAM;AAC5B,gBAAgB,CAAC,EAAE,KAAK,CAAC,CAAC;AAC1B,gBAAgB,CAAC,EAAE,KAAK,CAAC,CAAC;AAC1B,gBAAgB,KAAK,EAAE,uBAAuB,CAACA,cAAY,CAAC,UAAU,CAAC,KAAK,CAAC,GAAGA,cAAY,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,QAAQ,CAAC;AAC7H,gBAAgB,MAAM,EAAE,uBAAuB,CAACA,cAAY,CAAC,UAAU,CAAC,MAAM,CAAC,GAAGA,cAAY,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,QAAQ,CAAC;AAC/H,gBAAgB,IAAI,KAAK,KAAK,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;AACjD,aAAa;AACb,YAAY,KAAK,EAAE,SAAS;AAC5B,YAAY,IAAI,UAAU,CAAC,gBAAgB,KAAK,IAAI,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;AAC7E,SAAS;AACT,IAAI;AACJ,IAAI,MAAM,MAAM,GAAG,iBAAiB,CAAC,UAAU,CAAC;AAChD,IAAI,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;AACzB,QAAQ,OAAO,IAAI;AACnB,IAAI,MAAM,KAAK,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC;AACtD,IAAI,MAAM,MAAM,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC;AACvD,IAAI,IAAI,KAAK,KAAK,MAAM,EAAE;AAC1B,QAAQ,OAAO;AACf,YAAY,IAAI,EAAE,YAAY;AAC9B,YAAY,cAAc,EAAE,OAAO;AACnC,YAAY,GAAG,WAAW,CAAC,UAAU,EAAE,OAAO,CAAC;AAC/C,YAAY,KAAK,EAAE,MAAM;AACzB,YAAY,QAAQ,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC,EAAE;AAC5F,YAAY,KAAK,EAAE,SAAS;AAC5B,YAAY,IAAI,UAAU,CAAC,gBAAgB,KAAK,IAAI,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;AAC7E,SAAS;AACT,IAAI;AACJ,IAAI,OAAO;AACX,QAAQ,IAAI,EAAE,YAAY;AAC1B,QAAQ,cAAc,EAAE,OAAO;AAC/B,QAAQ,GAAG,WAAW,CAAC,UAAU,EAAE,OAAO,CAAC;AAC3C,QAAQ,KAAK,EAAE,OAAO;AACtB,QAAQ,QAAQ,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC,EAAE;AACzF,QAAQ,KAAK,EAAE,SAAS;AACxB,QAAQ,IAAI,UAAU,CAAC,gBAAgB,KAAK,IAAI,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;AACzE,KAAK;AACL;AACA,SAAS,oBAAoB,CAAC,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE;AAC7D,IAAI,MAAM,MAAM,GAAG,iBAAiB,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,eAAe,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;AACjG,IAAI,OAAO;AACX,QAAQ,IAAI,EAAE,YAAY;AAC1B,QAAQ,cAAc,EAAE,MAAM;AAC9B,QAAQ,GAAG,WAAW,CAAC,UAAU,EAAE,OAAO,CAAC;AAC3C,QAAQ,OAAO,EAAE;AACjB,YAAY;AACZ,gBAAgB,EAAE,EAAE,CAAC,EAAE,eAAe,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC;AAC7D,gBAAgB,MAAM;AACtB,gBAAgB,KAAK,EAAE;AACvB,oBAAoB,KAAK,EAAE,qBAAqB,CAAC,UAAU,CAAC,MAAM,EAAE,SAAS,CAAC;AAC9E,oBAAoB,KAAK,EAAEA,cAAY,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC;AAClE,oBAAoB,IAAIA,cAAY,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,KAAK;AAChE,0BAA0B,EAAE,OAAO,EAAE,OAAO,CAACA,cAAY,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;AACjF,0BAA0B,EAAE,CAAC;AAC7B,oBAAoB,OAAO,EAAE,OAAO;AACpC,oBAAoB,QAAQ,EAAE,OAAO;AACrC,iBAAiB;AACjB,aAAa;AACb,SAAS;AACT,QAAQ,IAAI,UAAU,CAAC,gBAAgB,KAAK,IAAI,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;AACzE,KAAK;AACL;AACA,SAAS,gBAAgB,CAAC,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE;AACzD,IAAI,IAAI,sBAAsB,CAAC,UAAU,CAAC,EAAE;AAC5C,QAAQ,OAAO,oBAAoB,CAAC,UAAU,EAAE,QAAQ,EAAE,OAAO,CAAC;AAClE,IAAI;AACJ,IAAI,IAAI,uBAAuB,CAAC,UAAU,CAAC,EAAE;AAC7C,QAAQ,OAAO,qBAAqB,CAAC,UAAU,EAAE,QAAQ,EAAE,OAAO,CAAC;AACnE,IAAI;AACJ,IAAI,IAAI,sBAAsB,CAAC,UAAU,CAAC,EAAE;AAC5C,QAAQ,OAAO,oBAAoB,CAAC,UAAU,EAAE,QAAQ,EAAE,OAAO,CAAC;AAClE,IAAI;AACJ,IAAI,OAAO,IAAI;AACf;AACO,SAAS,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,EAAE,EAAE;AAC1D,IAAI,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM;AACjC,IAAI,MAAM,KAAK,GAAG,OAAO,CAAC,aAAa;AACvC,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE;AAC3B,QAAQ,MAAM,IAAI,KAAK,CAAC,2DAA2D,CAAC;AACpF,IAAI;AACJ,IAAI,MAAM,eAAe,GAAG;AAC5B,QAAQ,aAAa,EAAE,OAAO,CAAC,aAAa,KAAK,KAAK;AACtD,QAAQ,aAAa,EAAE,OAAO,CAAC,aAAa,KAAK,KAAK;AACtD,QAAQ,eAAe,EAAE,OAAO,CAAC,eAAe,KAAK,KAAK;AAC1D,KAAK;AACL,IAAI,MAAM,SAAS,GAAG,YAAY,CAAC,KAAK,EAAE,OAAO,CAAC,oBAAoB,CAAC;AACvE,IAAI,MAAM,QAAQ,GAAG,0BAA0B,CAAC,KAAK,EAAE,OAAO,CAAC,eAAe,CAAC;AAC/E,IAAI,MAAM,QAAQ,GAAG;AACrB,SAAS,UAAU;AACnB,SAAS,MAAM,CAAC,uBAAuB;AACvC,SAAS,MAAM,CAAC,CAAC,MAAM,KAAK,eAAe,CAAC,aAAa,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;AAC9E,SAAS,MAAM,CAAC,CAAC,MAAM,KAAK,eAAe,CAAC,aAAa,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;AAC9E,SAAS,GAAG,CAAC,CAAC,MAAM,KAAK;AACzB,QAAQ,IAAI,YAAY,CAAC,MAAM,CAAC;AAChC,YAAY,OAAO,UAAU,CAAC,MAAM,EAAE,QAAQ,EAAE,eAAe,CAAC;AAChE,QAAQ,IAAI,kBAAkB,CAAC,MAAM,CAAC;AACtC,YAAY,OAAO,gBAAgB,CAAC,MAAM,EAAE,QAAQ,EAAE,eAAe,CAAC;AACtE,QAAQ,OAAO,IAAI;AACnB,IAAI,CAAC;AACL,SAAS,MAAM,CAAC,CAAC,OAAO,KAAK,CAAC,CAAC,OAAO,CAAC;AACvC,IAAI,MAAM,kBAAkB,GAAG,qBAAqB,CAAC,KAAK,EAAE,OAAO,CAAC,eAAe,CAAC;AACpF,IAAI,OAAO;AACX,QAAQ,MAAM,EAAE,4BAA4B;AAC5C,QAAQ,OAAO,EAAE,CAAC;AAClB,QAAQ,KAAK,EAAE,SAAS;AACxB,QAAQ,eAAe,EAAE,kBAAkB;AAC3C,QAAQ,IAAI,kBAAkB,GAAG,EAAE,kBAAkB,EAAE,GAAG,EAAE,CAAC;AAC7D,QAAQ,QAAQ;AAChB,KAAK;AACL;;AC/aA,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAE;AAInB,SAAS,oBAAoB,CAAC,UAAU,EAAE;AACjD,IAAI,OAAO,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC;AACnC;;ACGA,SAAS,YAAY,CAAC,KAAK,EAAE,QAAQ,GAAG,CAAC,EAAE;AAC3C,IAAI,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,QAAQ;AACjF;AACA,SAAS,aAAa,CAAC,QAAQ,EAAE;AACjC,IAAI,OAAO,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,GAAG,SAAS;AACtE;AACA,SAAS,eAAe,CAAC,MAAM,EAAE;AACjC,IAAI,IAAI,EAAE;AACV,IAAI,MAAM,MAAM,GAAG,CAAC,EAAE,GAAG,MAAM,CAAC,cAAc,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,MAAM,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC;AACpG,IAAI,IAAI,MAAM;AACd,QAAQ,OAAO,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE;AAC3C,IAAI,OAAO;AACX,QAAQ,CAAC,EAAE,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC;AACrE,QAAQ,CAAC,EAAE,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC;AACrE,KAAK;AACL;AACA,SAAS,oBAAoB,CAAC,KAAK,EAAE,SAAS,EAAE;AAChD,IAAI,MAAM,MAAM,GAAG,eAAe,CAAC,KAAK,CAAC;AACzC,IAAI,OAAO;AACX,QAAQ,YAAY,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,YAAY,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AAC/D,QAAQ,aAAa,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,YAAY,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;AACjE,QAAQ,aAAa,EAAE,MAAM,CAAC,CAAC;AAC/B,QAAQ,aAAa,EAAE,MAAM,CAAC,CAAC;AAC/B,QAAQ,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;AAC3E,QAAQ,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;AAC3E,QAAQ,SAAS,EAAE;AACnB,YAAY,QAAQ,EAAE,wBAAwB,CAAC,SAAS,KAAK,IAAI,IAAI,SAAS,KAAK,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC,QAAQ,CAAC;AACxH,YAAY,KAAK,EAAE,CAAC,SAAS,KAAK,IAAI,IAAI,SAAS,KAAK,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC,KAAK,MAAM,IAAI;AACnG,YAAY,KAAK,EAAE,CAAC,SAAS,KAAK,IAAI,IAAI,SAAS,KAAK,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC,KAAK,MAAM,IAAI;AACnG,SAAS;AACT,KAAK;AACL;AACA,SAAS,yBAAyB,CAAC,KAAK,EAAE,KAAK,EAAE;AACjD,IAAI,OAAO,4BAA4B,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC;AAC3D;AACA,SAAS,yBAAyB,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE;AAC3D,IAAI,OAAO,mBAAmB,CAAC,yBAAyB,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,QAAQ,CAAC;AACjF;AACA,SAAS,iBAAiB,CAAC,KAAK,EAAE,QAAQ,EAAE;AAC5C,IAAI,OAAO,KAAK,GAAG,QAAQ,CAAC,YAAY,GAAG,QAAQ,CAAC,MAAM;AAC1D;AACA,SAAS,iBAAiB,CAAC,KAAK,EAAE,QAAQ,EAAE;AAC5C,IAAI,OAAO,KAAK,GAAG,QAAQ,CAAC,aAAa,GAAG,QAAQ,CAAC,MAAM;AAC3D;AACA,SAAS,UAAU,CAAC,OAAO,EAAE;AAC7B,IAAI,MAAM,EAAE,GAAG,OAAO,CAAC,cAAc,EAAE,GAAG,CAAC;AAC3C,IAAI,OAAO,CAAC,cAAc,CAAC,EAAE,CAAC;AAC9B,IAAI,OAAO,EAAE;AACb;AACA,SAAS,gBAAgB,CAAC,OAAO,EAAE;AACnC,IAAI,MAAM,EAAE,GAAG,OAAO,CAAC,oBAAoB,EAAE,GAAG,CAAC;AACjD,IAAI,OAAO,CAAC,oBAAoB,CAAC,EAAE,CAAC;AACpC,IAAI,OAAO,EAAE;AACb;AACA,SAAS,eAAe,CAAC,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,qBAAqB,EAAE,MAAM,EAAE;AAC3F,IAAI,IAAI,OAAO,CAAC,UAAU,KAAK,UAAU,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE;AACrF,QAAQ,qBAAqB,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;AAC7C,QAAQ,OAAO,OAAO,CAAC,EAAE;AACzB,IAAI;AACJ,IAAI,MAAM,SAAS,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;AAC5C,IAAI,qBAAqB,CAAC,GAAG,CAAC,SAAS,CAAC;AACxC,IAAI,IAAI,SAAS,KAAK,OAAO,CAAC,EAAE,EAAE;AAClC,QAAQ,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;AAChF,IAAI;AACJ,IAAI,OAAO,SAAS;AACpB;AACA,SAAS,sBAAsB,CAAC,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE;AAC/D,IAAI,MAAM,MAAM,GAAG,MAAM;AACzB,IAAI,MAAM,CAAC,mBAAmB,GAAG,YAAY;AAC7C,IAAI,MAAM,QAAQ,GAAG,aAAa,CAAC,OAAO,CAAC,QAAQ,CAAC;AACpD,IAAI,IAAI,QAAQ;AAChB,QAAQ,MAAM,CAAC,eAAe,GAAG,QAAQ;AACzC;AACA,SAAS,cAAc,CAAC,KAAK,EAAE;AAC/B,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AAC9B,IAAI,OAAO;AACX,QAAQ,IAAI,EAAE,KAAK,CAAC,IAAI;AACxB,QAAQ,OAAO,EAAE,KAAK,CAAC,KAAK;AAC5B,QAAQ,MAAM,EAAE,CAAC,EAAE,GAAG,KAAK,CAAC,MAAM,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,SAAS;AAC9E,QAAQ,WAAW,EAAE,CAAC,EAAE,GAAG,KAAK,CAAC,WAAW,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,CAAC;AAChF,QAAQ,eAAe,EAAE,CAAC,EAAE,GAAG,KAAK,CAAC,eAAe,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,SAAS;AAChG,QAAQ,UAAU,EAAE,CAAC,EAAE,GAAG,KAAK,CAAC,UAAU,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,IAAI;AACjF,QAAQ,OAAO,EAAE,CAAC,EAAE,GAAG,KAAK,CAAC,OAAO,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,IAAI;AAC3E,QAAQ,WAAW,EAAE,CAAC,EAAE,GAAG,KAAK,CAAC,WAAW,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,IAAI;AACnF,QAAQ,OAAO,EAAE,MAAM;AACvB,QAAQ,OAAO,EAAE,KAAK;AACtB,QAAQ,aAAa,EAAE,IAAI;AAC3B,KAAK;AACL;AACA,SAAS,gBAAgB,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE;AAC7D,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AAC1C,IAAI,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM;AACjC,IAAI,IAAI,MAAM;AACd,IAAI,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,KAAK,MAAM,EAAE;AAC1C,QAAQ,MAAM,KAAK,GAAG,yBAAyB,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,QAAQ,CAAC;AAClH,QAAQ,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC;AACjC,YAAY,GAAG,cAAc,CAAC,OAAO,CAAC,KAAK,CAAC;AAC5C,YAAY,IAAI,EAAE,KAAK,CAAC,CAAC;AACzB,YAAY,GAAG,EAAE,KAAK,CAAC,CAAC;AACxB,YAAY,KAAK,EAAE,iBAAiB,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC;AACtE,YAAY,MAAM,EAAE,iBAAiB,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC;AACxE,YAAY,EAAE,EAAE,OAAO,CAAC,QAAQ,CAAC,EAAE,KAAK;AACxC,kBAAkB,iBAAiB,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,QAAQ;AACjE,kBAAkB,SAAS;AAC3B,YAAY,EAAE,EAAE,OAAO,CAAC,QAAQ,CAAC,EAAE,KAAK;AACxC,kBAAkB,iBAAiB,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,QAAQ;AACjE,kBAAkB,SAAS;AAC3B,YAAY,KAAK,EAAE,wBAAwB,CAAC,CAAC,EAAE,GAAG,KAAK,CAAC,kBAAkB,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,MAAM,GAAG,EAAE,CAAC,QAAQ,CAAC;AAC7H,gBAAgB,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC;AACpD,SAAS,CAAC;AACV,IAAI;AACJ,SAAS,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,KAAK,QAAQ,EAAE;AACjD,QAAQ,MAAM,MAAM,GAAG,iBAAiB,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC;AAC3E,QAAQ,MAAM,MAAM,GAAG,yBAAyB,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,CAAC;AACrH,QAAQ,MAAM,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC;AACnC,YAAY,GAAG,cAAc,CAAC,OAAO,CAAC,KAAK,CAAC;AAC5C,YAAY,IAAI,EAAE,MAAM,CAAC,CAAC,GAAG,MAAM;AACnC,YAAY,GAAG,EAAE,MAAM,CAAC,CAAC,GAAG,MAAM;AAClC,YAAY,MAAM;AAClB,YAAY,KAAK,EAAE,wBAAwB,CAAC,CAAC,EAAE,GAAG,KAAK,CAAC,kBAAkB,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,MAAM,GAAG,EAAE,CAAC,QAAQ,CAAC;AAC7H,gBAAgB,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC;AACpD,SAAS,CAAC;AACV,IAAI;AACJ,SAAS,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,KAAK,SAAS,EAAE;AAClD,QAAQ,MAAM,EAAE,GAAG,iBAAiB,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC;AACnE,QAAQ,MAAM,EAAE,GAAG,iBAAiB,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC;AACnE,QAAQ,MAAM,MAAM,GAAG,yBAAyB,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,CAAC;AACrH,QAAQ,MAAM,GAAG,IAAI,MAAM,CAAC,OAAO,CAAC;AACpC,YAAY,GAAG,cAAc,CAAC,OAAO,CAAC,KAAK,CAAC;AAC5C,YAAY,IAAI,EAAE,MAAM,CAAC,CAAC,GAAG,EAAE;AAC/B,YAAY,GAAG,EAAE,MAAM,CAAC,CAAC,GAAG,EAAE;AAC9B,YAAY,EAAE;AACd,YAAY,EAAE;AACd,YAAY,KAAK,EAAE,wBAAwB,CAAC,CAAC,EAAE,GAAG,KAAK,CAAC,kBAAkB,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,MAAM,GAAG,EAAE,CAAC,QAAQ,CAAC;AAC7H,gBAAgB,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC;AACpD,SAAS,CAAC;AACV,IAAI;AACJ,SAAS;AACT,QAAQ,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,yBAAyB,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;AAChH,QAAQ,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC;AAChE,QAAQ,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC;AAChE,QAAQ,MAAM,GAAG,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,MAAM,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,EAAE;AACvG,YAAY,GAAG,cAAc,CAAC,OAAO,CAAC,KAAK,CAAC;AAC5C,YAAY,IAAI,EAAE,IAAI;AACtB,YAAY,GAAG,EAAE,IAAI;AACrB,YAAY,KAAK,EAAE,wBAAwB,CAAC,CAAC,EAAE,GAAG,KAAK,CAAC,kBAAkB,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,MAAM,GAAG,EAAE,CAAC,QAAQ,CAAC;AAC7H,gBAAgB,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC;AACpD,SAAS,CAAC;AACV,IAAI;AACJ,IAAI,MAAM,MAAM,GAAG,UAAU,CAAC,OAAO,CAAC;AACtC,IAAI,MAAM,IAAI,GAAG,cAAc,CAAC,MAAM,EAAE;AACxC,QAAQ,MAAM;AACd,QAAQ,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AACjC,QAAQ,QAAQ,EAAE,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,CAAC;AACxD,QAAQ,aAAa,EAAE,OAAO,CAAC,KAAK,CAAC,KAAK;AAC1C,QAAQ,cAAc,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,IAAI;AACzF,QAAQ,mBAAmB,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,WAAW,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,CAAC;AAChG,KAAK,CAAC;AACN,IAAI,IAAI,CAAC,UAAU,GAAG,CAAC,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,UAAU,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,IAAI;AAC3F,IAAI,IAAI,CAAC,OAAO,GAAG,CAAC,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,IAAI;AACrF,IAAI,IAAI,CAAC,WAAW,GAAG,CAAC,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,WAAW,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,IAAI;AAC7F,IAAI,IAAI,CAAC,kBAAkB,GAAG,KAAK;AACnC,IAAI,IAAI,CAAC,aAAa,GAAG,IAAI;AAC7B,IAAI,uBAAuB,CAAC,IAAI,CAAC;AACjC,IAAI,OAAO,IAAI;AACf;AACA,SAAS,mBAAmB,CAAC,MAAM,EAAE;AACrC,IAAI,OAAO;AACX,QAAQ,gBAAgB,EAAE,KAAK;AAC/B,QAAQ,gBAAgB,EAAE,MAAM,KAAK,IAAI;AACzC,KAAK;AACL;AACA,SAAS,gBAAgB,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE;AACvE,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AACtC,IAAI,MAAM,KAAK,GAAG,yBAAyB,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,QAAQ,CAAC;AAC9G,IAAI,MAAM,aAAa,GAAG,OAAO,CAAC,KAAK,CAAC,UAAU;AAClD,IAAI,MAAM,UAAU,GAAG,aAAa,IAAI,OAAO,CAAC,OAAO,CAAC,iBAAiB,CAAC,UAAU;AACpF,IAAI,MAAM,QAAQ,GAAG,CAAC,EAAE,GAAG,aAAa,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,EAAE;AAC/F,IAAI,IAAI,aAAa,EAAE;AACvB,QAAQ,QAAQ,CAAC,WAAW,CAAC,GAAG;AAChC,YAAY,IAAI,CAAC,EAAE,GAAG,QAAQ,CAAC,WAAW,CAAC,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,EAAE,CAAC;AACjF,YAAY,mBAAmB,EAAE,aAAa;AAC9C,SAAS;AACT,QAAQ,QAAQ,CAAC,IAAI,CAAC;AACtB,YAAY,IAAI,EAAE,2BAA2B;AAC7C,YAAY,IAAI,EAAE,CAAC,SAAS,EAAE,OAAO,CAAC,EAAE,CAAC,iBAAiB,CAAC;AAC3D,YAAY,OAAO,EAAE,CAAC,mCAAmC,EAAE,aAAa,CAAC,+CAA+C,CAAC;AACzH,YAAY,OAAO,EAAE,EAAE,UAAU,EAAE,aAAa,EAAE;AAClD,SAAS,CAAC;AACV,IAAI;AACJ,IAAI,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE;AACnE,QAAQ,IAAI,EAAE,KAAK,CAAC,CAAC;AACrB,QAAQ,GAAG,EAAE,KAAK,CAAC,CAAC;AACpB,QAAQ,KAAK,EAAE,OAAO,CAAC,QAAQ,CAAC,KAAK,KAAK;AAC1C,cAAc,iBAAiB,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ;AAChE,cAAc,OAAO,CAAC,OAAO,CAAC,iBAAiB,CAAC,KAAK;AACrD,QAAQ,QAAQ,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,QAAQ,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,iBAAiB,CAAC,QAAQ;AAC3H,QAAQ,UAAU;AAClB,QAAQ,UAAU,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,UAAU,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,iBAAiB,CAAC,UAAU;AACjI,QAAQ,IAAI,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAI;AAC/G,QAAQ,eAAe,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,eAAe,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,iBAAiB,CAAC,eAAe;AAChJ,QAAQ,SAAS,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,SAAS,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,iBAAiB,CAAC,SAAS;AAC9H,QAAQ,UAAU,EAAE,OAAO,CAAC,KAAK,CAAC,UAAU;AAC5C,QAAQ,KAAK,EAAE,wBAAwB,CAAC,CAAC,EAAE,GAAG,KAAK,CAAC,kBAAkB,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,MAAM,GAAG,EAAE,CAAC,QAAQ,CAAC;AACzH,YAAY,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC;AAChD,QAAQ,OAAO,EAAE,MAAM;AACvB,QAAQ,OAAO,EAAE,KAAK;AACtB,QAAQ,UAAU,EAAE,IAAI;AACxB,QAAQ,OAAO,EAAE,IAAI;AACrB,QAAQ,QAAQ,EAAE,IAAI;AACtB,KAAK,CAAC;AACN,IAAI,MAAM,YAAY,GAAG,gBAAgB,CAAC,OAAO,CAAC;AAClD,IAAI,MAAM,UAAU,GAAG,oBAAoB,CAAC,OAAO,EAAE;AACrD,QAAQ,YAAY;AACpB,QAAQ,cAAc,EAAE,MAAM;AAC9B,QAAQ,cAAc,EAAE,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,kBAAkB,CAAC,EAAE,YAAY,CAAC,CAAC;AAC9E,QAAQ,oBAAoB,EAAE,IAAI;AAClC,QAAQ,iBAAiB,EAAE,IAAI;AAC/B,QAAQ,qBAAqB,EAAE,OAAO,CAAC,WAAW,KAAK,KAAK;AAC5D,QAAQ,kBAAkB,EAAE,IAAI;AAChC,QAAQ,GAAG,mBAAmB,CAAC,OAAO,CAAC,MAAM,CAAC;AAC9C,KAAK,CAAC;AACN,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;AAC1C,QAAQ,UAAU,CAAC,eAAe,GAAG,QAAQ;AAC7C,IAAI;AACJ,IAAI,0BAA0B,CAAC,UAAU,CAAC;AAC1C,IAAI,yBAAyB,CAAC,OAAO,CAAC,0BAA0B,EAAE,EAAE,UAAU,CAAC;AAC/E,IAAI,OAAO,UAAU;AACrB;AACA,SAAS,cAAc,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,UAAU,EAAE;AACpD,IAAI,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC;AAC9C,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC;AAC1C,IAAI,MAAM,SAAS,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC;AACjC,IAAI,MAAM,MAAM,GAAG,EAAE,GAAG,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,SAAS,CAAC;AAC5D,IAAI,MAAM,MAAM,GAAG,EAAE,GAAG,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,SAAS,CAAC;AAC5D,IAAI,MAAM,MAAM,GAAG,EAAE,GAAG,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,SAAS,CAAC;AAC5D,IAAI,MAAM,MAAM,GAAG,EAAE,GAAG,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,SAAS,CAAC;AAC5D,IAAI,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;AAChH;AACA,SAAS,iBAAiB,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE;AAC9D,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AACtD,IAAI,MAAM,KAAK,GAAG;AAClB,QAAQ,MAAM,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,kBAAkB,CAAC,MAAM;AACtH,QAAQ,WAAW,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,WAAW,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,kBAAkB,CAAC,WAAW;AACrI,QAAQ,IAAI,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,kBAAkB,CAAC,IAAI;AAChH,QAAQ,OAAO,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,kBAAkB,CAAC,OAAO;AACzH,QAAQ,eAAe,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,eAAe,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,SAAS;AACxG,QAAQ,UAAU,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,UAAU,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,IAAI;AACzF,QAAQ,OAAO,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,IAAI;AACnF,QAAQ,OAAO,EAAE,MAAM;AACvB,QAAQ,OAAO,EAAE,KAAK;AACtB,KAAK;AACL,IAAI,IAAI,MAAM;AACd,IAAI,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,KAAK,MAAM,EAAE;AAC1C,QAAQ,MAAM,KAAK,GAAG,yBAAyB,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,QAAQ,CAAC;AAClH,QAAQ,MAAM,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC;AACzC,YAAY,GAAG,KAAK;AACpB,YAAY,IAAI,EAAE,KAAK,CAAC,CAAC;AACzB,YAAY,GAAG,EAAE,KAAK,CAAC,CAAC;AACxB,YAAY,KAAK,EAAE,iBAAiB,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC;AACtE,YAAY,MAAM,EAAE,iBAAiB,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC;AACxE,YAAY,KAAK,EAAE,wBAAwB,CAAC,CAAC,EAAE,GAAG,KAAK,CAAC,kBAAkB,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,MAAM,GAAG,EAAE,CAAC,QAAQ,CAAC;AAC7H,gBAAgB,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC;AACpD,SAAS,CAAC;AACV,IAAI;AACJ,SAAS;AACT,QAAQ,MAAM,KAAK,GAAG,yBAAyB,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,CAAC;AACpH,QAAQ,MAAM,GAAG,GAAG,yBAAyB,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,CAAC;AAClH,QAAQ,MAAM,IAAI,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,KAAK;AAC/C,cAAc,cAAc,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC,QAAQ,CAAC,eAAe,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,kBAAkB,CAAC,eAAe;AACxL,cAAc,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;AAC3D,QAAQ,MAAM,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE;AAC/C,YAAY,GAAG,KAAK;AACpB,YAAY,IAAI,EAAE,EAAE;AACpB,YAAY,aAAa,EAAE,OAAO;AAClC,YAAY,cAAc,EAAE,OAAO;AACnC,YAAY,aAAa,EAAE,KAAK;AAChC,YAAY,KAAK,EAAE,wBAAwB,CAAC,CAAC,EAAE,GAAG,KAAK,CAAC,kBAAkB,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,MAAM,GAAG,EAAE,CAAC,QAAQ,CAAC;AAC7H,gBAAgB,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC;AACpD,SAAS,CAAC;AACV,IAAI;AACJ,IAAI,MAAM,YAAY,GAAG,gBAAgB,CAAC,OAAO,CAAC;AAClD,IAAI,MAAM,UAAU,GAAG,oBAAoB,CAAC,MAAM,EAAE;AACpD,QAAQ,YAAY;AACpB,QAAQ,cAAc,EAAE,OAAO;AAC/B,QAAQ,cAAc,EAAE,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,mBAAmB,CAAC,EAAE,YAAY,CAAC,CAAC;AAC/E,QAAQ,oBAAoB,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,UAAU,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,IAAI;AACnG,QAAQ,iBAAiB,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,IAAI;AAC7F,QAAQ,qBAAqB,EAAE,MAAM,CAAC,WAAW,KAAK,KAAK;AAC3D,QAAQ,mBAAmB,EAAE,OAAO,CAAC,KAAK;AAC1C,QAAQ,GAAG,mBAAmB,CAAC,OAAO,CAAC,MAAM,CAAC;AAC9C,KAAK,CAAC;AACN,IAAI,0BAA0B,CAAC,UAAU,CAAC;AAC1C,IAAI,OAAO,UAAU;AACrB;AACA,SAAS,gBAAgB,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE;AAC7D,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AACtB,IAAI,MAAM,QAAQ,GAAG,EAAE;AACvB,IAAI,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;AAC1C,IAAI,MAAM,KAAK,GAAG,CAAC,EAAE,GAAG,WAAW,KAAK,IAAI,IAAI,WAAW,KAAK,MAAM,GAAG,MAAM,GAAG,WAAW,CAAC,KAAK,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG;AACtI,QAAQ,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC,iBAAiB,CAAC,KAAK;AACtD,QAAQ,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC,iBAAiB,CAAC,SAAS;AAC1D,KAAK;AACL,IAAI,KAAK,MAAM,MAAM,IAAI,OAAO,CAAC,OAAO,EAAE;AAC1C,QAAQ,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,KAAK;AAChD,YAAY,MAAM,WAAW,GAAG,yBAAyB,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAC;AACjF,YAAY,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,KAAK,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;AACzF,QAAQ,CAAC,CAAC;AACV,IAAI;AACJ,IAAI,MAAM,MAAM,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;AAC/D,QAAQ,IAAI,EAAE,EAAE;AAChB,QAAQ,MAAM,EAAE,KAAK,CAAC,KAAK;AAC3B,QAAQ,WAAW,EAAE,KAAK,CAAC,KAAK;AAChC,QAAQ,OAAO,EAAE,CAAC,EAAE,GAAG,KAAK,CAAC,OAAO,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,iBAAiB,CAAC,OAAO;AAChH,QAAQ,aAAa,EAAE,CAAC,EAAE,GAAG,KAAK,CAAC,OAAO,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,iBAAiB,CAAC,OAAO;AACtH,QAAQ,cAAc,EAAE,CAAC,EAAE,GAAG,KAAK,CAAC,QAAQ,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,iBAAiB,CAAC,QAAQ;AACzH,QAAQ,UAAU,EAAE,IAAI;AACxB,QAAQ,OAAO,EAAE,IAAI;AACrB,QAAQ,aAAa,EAAE,KAAK;AAC5B,KAAK,CAAC;AACN,IAAI,MAAM,YAAY,GAAG,gBAAgB,CAAC,OAAO,CAAC;AAClD,IAAI,MAAM,UAAU,GAAG,oBAAoB,CAAC,MAAM,EAAE;AACpD,QAAQ,YAAY;AACpB,QAAQ,cAAc,EAAE,MAAM;AAC9B,QAAQ,cAAc,EAAE,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,kBAAkB,CAAC,EAAE,YAAY,CAAC,CAAC;AAC9E,QAAQ,oBAAoB,EAAE,IAAI;AAClC,QAAQ,iBAAiB,EAAE,IAAI;AAC/B,QAAQ,qBAAqB,EAAE,MAAM,CAAC,WAAW,KAAK,KAAK;AAC3D,QAAQ,GAAG,mBAAmB,CAAC,OAAO,CAAC,MAAM,CAAC;AAC9C,KAAK,CAAC;AACN,IAAI,0BAA0B,CAAC,UAAU,CAAC;AAC1C,IAAI,OAAO,UAAU;AACrB;AACA,SAAS,sBAAsB,CAAC,OAAO,EAAE;AACzC,IAAI,MAAM,OAAO,GAAG,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;AACpD,IAAI,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;AAClC,QAAQ,IAAI,YAAY,CAAC,MAAM,CAAC,EAAE;AAClC,YAAY,OAAO,CAAC,kBAAkB,CAAC,MAAM,CAAC;AAC9C,YAAY,uBAAuB,CAAC,MAAM,CAAC;AAC3C,YAAY,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;AACzC,QAAQ;AACR,aAAa,IAAI,kBAAkB,CAAC,MAAM,CAAC,EAAE;AAC7C,YAAY,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;AACzC,QAAQ;AACR,IAAI;AACJ,IAAI,OAAO,CAAC,MAAM,CAAC,mBAAmB,EAAE;AACxC,IAAI,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC;AAC7B;AACA,SAAS,yBAAyB,CAAC,MAAM,EAAE;AAC3C,IAAI,MAAM,GAAG,GAAG,IAAI,GAAG,EAAE;AACzB,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK;AAC5C,QAAQ,MAAM,EAAE,GAAG,MAAM,CAAC,mBAAmB;AAC7C,QAAQ,IAAI,OAAO,EAAE,KAAK,QAAQ;AAClC,YAAY,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;AACvB,IAAI,CAAC,CAAC;AACN,IAAI,OAAO,GAAG;AACd;AACA,SAAS,mBAAmB,CAAC,MAAM,EAAE;AACrC,IAAI,MAAM,CAAC,SAAS,EAAE;AACtB,IAAI,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,EAAE;AACrC,IAAI,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC;AAC3B,IAAI,IAAI,KAAK;AACb,QAAQ,OAAO,KAAK;AACpB,IAAI,MAAM,YAAY,GAAG,MAAM,CAAC,eAAe,EAAE;AACjD,IAAI,OAAO,EAAE,CAAC,EAAE,YAAY,CAAC,IAAI,EAAE,CAAC,EAAE,YAAY,CAAC,GAAG,EAAE;AACxD;AACA,SAAS,yBAAyB,CAAC,OAAO,EAAE,SAAS,EAAE;AACvD,IAAI,IAAI,SAAS,KAAK,SAAS;AAC/B,QAAQ;AACR,IAAI,MAAM,KAAK,GAAG,OAAO,CAAC,aAAa;AACvC,IAAI,MAAM,QAAQ,GAAG,wBAAwB,CAAC,SAAS,CAAC,QAAQ,CAAC;AACjE,IAAI,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,KAAK,IAAI;AAC1C,IAAI,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,KAAK,IAAI;AAC1C,IAAI,MAAM,MAAM,GAAG,KAAK,CAAC,cAAc,EAAE;AACzC,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;AACvD,IAAI,KAAK,CAAC,mBAAmB,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC;AACzD,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;AAChD,IAAI,KAAK,CAAC,SAAS,EAAE;AACrB,IAAI,MAAM,WAAW,GAAG,mBAAmB,CAAC,KAAK,CAAC;AAClD,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;AAClD,IAAI,KAAK,CAAC,mBAAmB,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,CAAC;AACzD,IAAI,KAAK,CAAC,SAAS,EAAE;AACrB,IAAI,OAAO,CAAC,kBAAkB,CAAC,QAAQ,CAAC;AACxC;AACA,SAAS,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE;AAC5C,IAAI,MAAM,CAAC,eAAe,IAAI,CAAC;AAC/B,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;AACzB,QAAQ,IAAI,EAAE,oBAAoB;AAClC,QAAQ,IAAI,EAAE,CAAC,SAAS,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;AACtC,QAAQ,OAAO,EAAE,CAAC,qBAAqB,EAAE,OAAO,CAAC,UAAU,CAAC,6CAA6C,CAAC;AAC1G,QAAQ,OAAO,EAAE,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE;AACnD,KAAK,CAAC;AACN;AACO,eAAe,4BAA4B,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,GAAG,EAAE,EAAE;AACjF,IAAI,IAAI,EAAE;AACV,IAAI,MAAM,MAAM,GAAG;AACnB,QAAQ,gBAAgB,EAAE,CAAC;AAC3B,QAAQ,aAAa,EAAE,CAAC;AACxB,QAAQ,mBAAmB,EAAE,CAAC;AAC9B,QAAQ,eAAe,EAAE,CAAC;AAC1B,QAAQ,cAAc,EAAE,EAAE;AAC1B,QAAQ,QAAQ,EAAE,EAAE;AACpB,KAAK;AACL,IAAI,MAAM,IAAI,GAAG,CAAC,EAAE,GAAG,OAAO,CAAC,IAAI,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,SAAS;AAC/E,IAAI,IAAI,IAAI,KAAK,SAAS;AAC1B,QAAQ,sBAAsB,CAAC,OAAO,CAAC;AACvC,IAAI,yBAAyB,CAAC,OAAO,EAAE,KAAK,CAAC,kBAAkB,CAAC;AAChE,IAAI,MAAM,QAAQ,GAAG,oBAAoB,CAAC,OAAO,CAAC,aAAa,EAAE,KAAK,CAAC,kBAAkB,CAAC;AAC1F,IAAI,MAAM,qBAAqB,GAAG,yBAAyB,CAAC,OAAO,CAAC,MAAM,CAAC;AAE3E,IAAI,KAAK,MAAM,OAAO,IAAI,KAAK,CAAC,QAAQ,EAAE;AAC1C,QAAQ,IAAI,OAAO,CAAC,IAAI,KAAK,QAAQ,EAAE;AACvC,YAAY,MAAM,KAAK,GAAG,oBAAoB,CAAC,OAAO,CAAC,UAAU,CAAC;AAClE,YAAY,IAAI,CAAC,KAAK,EAAE;AACxB,gBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,CAAC;AAClD,gBAAgB;AAChB,YAAY;AACZ,YAAY,MAAM,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC;AACvD,YAAY,MAAM,CAAC,gBAAgB,IAAI,CAAC;AACxC,YAAY;AACZ,QAAQ;AACR,QAAQ,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE;AACrC,YAAY,MAAM,IAAI,GAAG,gBAAgB,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,CAAC;AAC5E,YAAY,MAAM,YAAY,GAAG,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,qBAAqB,EAAE,MAAM,CAAC;AACtH,YAAY,sBAAsB,CAAC,IAAI,EAAE,OAAO,EAAE,YAAY,CAAC;AAC/D,YAAY,eAAe,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC;AACjD,YAAY,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC;AAErC,YAAY,MAAM,CAAC,gBAAgB,IAAI,CAAC;AACxC,YAAY,MAAM,CAAC,aAAa,IAAI,CAAC;AACrC,YAAY;AACZ,QAAQ;AACR,QAAQ,IAAI,UAAU;AACtB,QAAQ,IAAI,OAAO,CAAC,cAAc,KAAK,MAAM,EAAE;AAC/C,YAAY,UAAU,GAAG,gBAAgB,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC;AAC7F,QAAQ;AACR,aAAa,IAAI,OAAO,CAAC,cAAc,KAAK,OAAO,EAAE;AACrD,YAAY,UAAU,GAAG,iBAAiB,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,CAAC;AAC7E,QAAQ;AACR,aAAa;AACb,YAAY,UAAU,GAAG,gBAAgB,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,CAAC;AAC5E,QAAQ;AACR,QAAQ,MAAM,YAAY,GAAG,eAAe,CAAC,OAAO,EAAE,YAAY,EAAE,UAAU,CAAC,YAAY,EAAE,OAAO,EAAE,qBAAqB,EAAE,MAAM,CAAC;AACpI,QAAQ,sBAAsB,CAAC,UAAU,EAAE,OAAO,EAAE,YAAY,CAAC;AACjE,QAAQ,qBAAqB,CAAC,OAAO,CAAC,MAAM,EAAE,UAAU,CAAC;AACzD,QAAQ,IAAI,UAAU,CAAC,UAAU,KAAK,KAAK,IAAI,oBAAoB,CAAC,UAAU,CAAC,EAAE;AACjF,YAAY,OAAO,CAAC,MAAM,CAAC,eAAe,CAAC,UAAU,CAAC;AACtD,QAAQ;AAER,QAAQ,MAAM,CAAC,gBAAgB,IAAI,CAAC;AACpC,QAAQ,MAAM,CAAC,mBAAmB,IAAI,CAAC;AACvC,IAAI;AACJ,IAAI,mBAAmB,CAAC,OAAO,CAAC,MAAM,CAAC;AACvC,IAAI,IAAI,OAAO,CAAC,iBAAiB,KAAK,IAAI,EAAE;AAC5C,QAAQ,OAAO,CAAC,MAAM,CAAC,mBAAmB,EAAE;AAC5C,IAAI;AACJ,IAAI,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE;AAC9B,IAAI,OAAO,MAAM;AACjB;;ACndA,SAAS,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;AACpC,IAAI,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;AAClC;AACO,SAAS,mBAAmB,CAAC,KAAK,EAAE;AAC3C,IAAI,MAAM,MAAM,GAAG,EAAE;AACrB,IAAI,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AACrE,QAAQ,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,mBAAmB,EAAE,kCAAkC,CAAC,CAAC;AACvF,QAAQ,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE;AACvC,IAAI;AACJ,IAAI,MAAM,SAAS,GAAG,KAAK;AAC3B,IAAI,IAAI,SAAS,CAAC,MAAM,KAAK,4BAA4B,EAAE;AAC3D,QAAQ,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,yBAAyB,EAAE,4DAA4D,CAAC,CAAC;AAC7H,QAAQ,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE;AACvC,IAAI;AACJ,IAAI,IAAI,OAAO,SAAS,CAAC,OAAO,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE;AACvF,QAAQ,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,sBAAsB,EAAE,mCAAmC,CAAC,CAAC;AAClG,QAAQ,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE;AACvC,IAAI;AACJ,IAAI,IAAI,SAAS,CAAC,OAAO,GAAG,CAAC,EAAE;AAC/B,QAAQ,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,qBAAqB,EAAE,CAAC,sBAAsB,EAAE,SAAS,CAAC,OAAO,CAAC,wDAAwD,CAAC,CAAC,CAAC;AAClK,QAAQ,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE;AACvC,IAAI;AACJ,IAAI,IAAI,SAAS,CAAC,OAAO,KAAK,CAAC,EAAE;AACjC,QAAQ,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,0BAA0B,EAAE,CAAC,sBAAsB,EAAE,SAAS,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC;AACjI,QAAQ,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE;AACvC,IAAI;AACJ,IAAI,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE;AACrD;;ACvBO,MAAM,iCAAiC,GAAG,MAAM,CAAC,MAAM,CAAC;AAC/D,IAAI,WAAW,EAAE,GAAG;AACpB,IAAI,gBAAgB,EAAE,IAAI;AAC1B,IAAI,cAAc,EAAE,GAAG;AACvB,IAAI,sBAAsB,EAAE,IAAI;AAChC,IAAI,kBAAkB,EAAE,MAAM;AAC9B,IAAI,aAAa,EAAE,KAAK;AACxB,IAAI,gBAAgB,EAAE,sBAAsB;AAC5C,IAAI,gBAAgB,EAAE,sBAAsB;AAC5C,CAAC,CAAC;AACF,SAAS,aAAa,CAAC,OAAO,GAAG,EAAE,EAAE;AACrC,IAAI,MAAM,QAAQ,GAAG,CAAC,KAAK,EAAE,QAAQ,KAAK,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,QAAQ;AAC5H,IAAI,OAAO;AACX,QAAQ,WAAW,EAAE,QAAQ,CAAC,OAAO,CAAC,WAAW,EAAE,iCAAiC,CAAC,WAAW,CAAC;AACjG,QAAQ,gBAAgB,EAAE,QAAQ,CAAC,OAAO,CAAC,gBAAgB,EAAE,iCAAiC,CAAC,gBAAgB,CAAC;AAChH,QAAQ,cAAc,EAAE,QAAQ,CAAC,OAAO,CAAC,cAAc,EAAE,iCAAiC,CAAC,cAAc,CAAC;AAC1G,QAAQ,sBAAsB,EAAE,QAAQ,CAAC,OAAO,CAAC,sBAAsB,EAAE,iCAAiC,CAAC,sBAAsB,CAAC;AAClI,QAAQ,kBAAkB,EAAE,QAAQ,CAAC,OAAO,CAAC,kBAAkB,EAAE,iCAAiC,CAAC,kBAAkB,CAAC;AACtH,QAAQ,aAAa,EAAE,QAAQ,CAAC,OAAO,CAAC,aAAa,EAAE,iCAAiC,CAAC,aAAa,CAAC;AACvG,QAAQ,gBAAgB,EAAE,QAAQ,CAAC,OAAO,CAAC,gBAAgB,EAAE,iCAAiC,CAAC,gBAAgB,CAAC;AAChH,QAAQ,gBAAgB,EAAE,QAAQ,CAAC,OAAO,CAAC,gBAAgB,EAAE,iCAAiC,CAAC,gBAAgB,CAAC;AAChH,KAAK;AACL;AACA,SAAS,QAAQ,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;AAChD,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;AAChD;AACA,SAAS,UAAU,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE;AAC3D,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,OAAO,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC;AACnF;AACA,SAAS,QAAQ,CAAC,KAAK,EAAE,IAAI,GAAG,IAAI,OAAO,EAAE,EAAE;AAC/C,IAAI,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;AAC3C,QAAQ,OAAO,KAAK;AACpB,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;AACvB,QAAQ,OAAO,IAAI;AACnB,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;AACnB,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;AAC5B,QAAQ,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AAC3D,IAAI,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AACtE;AACA,SAAS,QAAQ,CAAC,KAAK,EAAE;AACzB,IAAI,OAAO,CAAC,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;AACxE;AACA,SAAS,MAAM,CAAC,KAAK,EAAE;AACvB,IAAI,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;AAC9D;AACA,SAAS,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,GAAG,EAAE,EAAE;AAC9D,IAAI,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC;AAC7B,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE;AAC7B,QAAQ,IAAI,OAAO,CAAC,QAAQ;AAC5B,YAAY,QAAQ,CAAC,OAAO,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;AAC9E,QAAQ,OAAO,SAAS;AACxB,IAAI;AACJ,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;AACxB,QAAQ,QAAQ,CAAC,OAAO,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAC,EAAE,IAAI,CAAC,yBAAyB,CAAC,CAAC;AACrF,QAAQ,OAAO,SAAS;AACxB,IAAI;AACJ,IAAI,IAAI,OAAO,CAAC,GAAG,KAAK,SAAS,IAAI,KAAK,GAAG,OAAO,CAAC,GAAG,EAAE;AAC1D,QAAQ,QAAQ,CAAC,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,EAAE,IAAI,CAAC,YAAY,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACnF,IAAI;AACJ,IAAI,IAAI,OAAO,CAAC,GAAG,KAAK,SAAS,IAAI,KAAK,GAAG,OAAO,CAAC,GAAG,EAAE;AAC1D,QAAQ,QAAQ,CAAC,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,EAAE,IAAI,CAAC,YAAY,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACnF,IAAI;AACJ,IAAI,OAAO,KAAK;AAChB;AACA,SAAS,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,GAAG,IAAI,EAAE;AACrE,IAAI,OAAO,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE;AAClD,QAAQ,QAAQ;AAChB,QAAQ,GAAG,EAAE,CAAC;AACd,QAAQ,GAAG,EAAE,CAAC;AACd,KAAK,CAAC;AACN;AACA,SAAS,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE;AACjD,IAAI,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC;AAC7B,IAAI,IAAI,KAAK,KAAK,SAAS;AAC3B,QAAQ,OAAO,SAAS;AACxB,IAAI,IAAI,OAAO,KAAK,KAAK,SAAS,EAAE;AACpC,QAAQ,QAAQ,CAAC,OAAO,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC;AAChF,QAAQ,OAAO,SAAS;AACxB,IAAI;AACJ,IAAI,OAAO,KAAK;AAChB;AACA,SAAS,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,GAAG,KAAK,EAAE;AAClE,IAAI,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC;AAC7B,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE;AAC7B,QAAQ,IAAI,QAAQ;AACpB,YAAY,QAAQ,CAAC,OAAO,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;AAC9E,QAAQ,OAAO,SAAS;AACxB,IAAI;AACJ,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AACnC,QAAQ,QAAQ,CAAC,OAAO,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAC,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;AAC9E,QAAQ,OAAO,SAAS;AACxB,IAAI;AACJ,IAAI,OAAO,KAAK;AAChB;AACA,SAAS,mBAAmB,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE;AAC7D,IAAI,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE;AAC/C,QAAQ,IAAI,QAAQ;AACpB,YAAY,QAAQ,CAAC,OAAO,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAC,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;AAC7E,QAAQ,OAAO,SAAS;AACxB,IAAI;AACJ,IAAI,MAAM,UAAU,GAAG,wBAAwB,CAAC,KAAK,CAAC;AACtD,IAAI,IAAI,CAAC,UAAU,EAAE;AACrB,QAAQ,QAAQ,CAAC,OAAO,EAAE,IAAI,EAAE,eAAe,EAAE,CAAC,EAAE,IAAI,CAAC,8CAA8C,CAAC,CAAC;AACzG,QAAQ,OAAO,SAAS;AACxB,IAAI;AACJ,IAAI,OAAO,UAAU;AACrB;AACA,SAAS,kBAAkB,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE;AAClD,IAAI,IAAI,KAAK,KAAK,SAAS;AAC3B,QAAQ,OAAO,SAAS;AACxB,IAAI,IAAI,KAAK,KAAK,IAAI;AACtB,QAAQ,OAAO,IAAI;AACnB,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AAC/B,QAAQ,QAAQ,CAAC,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC,EAAE,IAAI,CAAC,0BAA0B,CAAC,CAAC;AACpF,QAAQ,OAAO,SAAS;AACxB,IAAI;AACJ,IAAI,MAAM,MAAM,GAAG,EAAE;AACrB,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,KAAK;AACpC,QAAQ,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE;AACzC,YAAY,QAAQ,CAAC,OAAO,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,mBAAmB,EAAE,mDAAmD,CAAC;AAC5H,YAAY;AACZ,QAAQ;AACR,QAAQ,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;AAC1B,IAAI,CAAC,CAAC;AACN,IAAI,OAAO,MAAM;AACjB;AACA,SAAS,iBAAiB,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE;AACjD,IAAI,MAAM,MAAM,GAAG,uBAAuB,CAAC,KAAK,EAAE,IAAI,EAAE;AACxD,QAAQ,gBAAgB,EAAE,OAAO,CAAC,MAAM,CAAC,gBAAgB;AACzD,QAAQ,gBAAgB,EAAE,OAAO,CAAC,MAAM,CAAC,gBAAgB;AACzD,KAAK,CAAC;AACN,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC;AACzC,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC;AAC7C,IAAI,OAAO,MAAM,CAAC,KAAK;AACvB;AACA,SAAS,kBAAkB,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE;AAClD,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;AAC1D,QAAQ,QAAQ,CAAC,OAAO,EAAE,IAAI,EAAE,oBAAoB,EAAE,CAAC,EAAE,IAAI,CAAC,4BAA4B,CAAC,CAAC;AAC5F,QAAQ,OAAO,EAAE;AACjB,IAAI;AACJ,IAAI,IAAI,KAAK,CAAC,MAAM,GAAG,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;AACjE,QAAQ,QAAQ,CAAC,OAAO,EAAE,IAAI,EAAE,wBAAwB,EAAE,CAAC,EAAE,IAAI,CAAC,iCAAiC,CAAC,CAAC;AACrG,IAAI;AACJ,IAAI,OAAO,KAAK;AAChB;AACA,SAAS,oBAAoB,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE;AACtD,IAAI,MAAM,EAAE,GAAG,kBAAkB,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;AACpE,IAAI,MAAM,OAAO,GAAG,OAAO,CAAC,cAAc;AAC1C,IAAI,IAAI,cAAc;AACtB,IAAI,IAAI,OAAO,KAAK,SAAS,EAAE;AAC/B,QAAQ,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;AAChE,YAAY,QAAQ,CAAC,OAAO,EAAE,CAAC,EAAE,IAAI,CAAC,eAAe,CAAC,EAAE,yBAAyB,EAAE,4CAA4C,CAAC;AAChI,QAAQ;AACR,aAAa;AACb,YAAY,cAAc,GAAG,MAAM,CAAC,OAAO,CAAC;AAC5C,QAAQ;AACR,IAAI;AACJ,IAAI,MAAM,MAAM,GAAG,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;AAC5E,IAAI,MAAM,QAAQ,GAAG,iBAAiB,CAAC,OAAO,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;AACrF,IAAI,OAAO;AACX,QAAQ,EAAE;AACV,QAAQ,IAAI,cAAc,KAAK,SAAS,GAAG,EAAE,cAAc,EAAE,GAAG,EAAE,CAAC;AACnE,QAAQ,IAAI,MAAM,KAAK,SAAS,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;AACnD,QAAQ,IAAI,QAAQ,KAAK,SAAS,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC;AACvD,KAAK;AACL;AACA,SAAS,iBAAiB,CAAC,OAAO,EAAE,KAAK,EAAE;AAC3C,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;AAC1B,QAAQ,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,0BAA0B,CAAC;AAC/E,QAAQ,OAAO,SAAS;AACxB,IAAI;AACJ,IAAI,MAAM,YAAY,GAAG,UAAU,CAAC,OAAO,EAAE,KAAK,EAAE,cAAc,EAAE,oBAAoB,EAAE;AAC1F,QAAQ,QAAQ,EAAE,IAAI;AACtB,QAAQ,GAAG,EAAE,CAAC;AACd,KAAK,CAAC;AACN,IAAI,MAAM,aAAa,GAAG,UAAU,CAAC,OAAO,EAAE,KAAK,EAAE,eAAe,EAAE,qBAAqB,EAAE;AAC7F,QAAQ,QAAQ,EAAE,IAAI;AACtB,QAAQ,GAAG,EAAE,CAAC;AACd,KAAK,CAAC;AACN,IAAI,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ;AACnC,IAAI,MAAM,WAAW,GAAG,KAAK,CAAC,WAAW;AACzC,IAAI,MAAM,QAAQ,GAAG,UAAU,CAAC,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,gBAAgB,CAAC;AAC7E,IAAI,MAAM,QAAQ,GAAG,UAAU,CAAC,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,gBAAgB,CAAC;AAC7E,IAAI,IAAI,QAAQ,KAAK,SAAS;AAC9B,QAAQ,QAAQ,KAAK,YAAY;AACjC,QAAQ,QAAQ,KAAK,WAAW;AAChC,QAAQ,QAAQ,KAAK,YAAY,EAAE;AACnC,QAAQ,QAAQ,CAAC,OAAO,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,8BAA8B,CAAC;AACrG,IAAI;AACJ,IAAI,IAAI,WAAW,KAAK,SAAS,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE;AACtF,QAAQ,QAAQ,CAAC,OAAO,EAAE,mBAAmB,EAAE,2BAA2B,EAAE,uCAAuC,CAAC;AACpH,IAAI;AACJ,IAAI,IAAI,YAAY,KAAK,SAAS,IAAI,aAAa,KAAK,SAAS;AACjE,QAAQ,OAAO,SAAS;AACxB,IAAI,OAAO;AACX,QAAQ,YAAY;AACpB,QAAQ,aAAa;AACrB,QAAQ,IAAI,OAAO,QAAQ,KAAK;AAChC,cAAc,EAAE,QAAQ,EAAE,QAAQ;AAClC,cAAc,EAAE,CAAC;AACjB,QAAQ,IAAI,OAAO,WAAW,KAAK;AACnC,cAAc,EAAE,WAAW,EAAE,WAAW;AACxC,cAAc,EAAE,CAAC;AACjB,QAAQ,IAAI,QAAQ,KAAK,SAAS,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC;AACvD,QAAQ,IAAI,QAAQ,KAAK,SAAS,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC;AACvD,KAAK;AACL;AACA,SAAS,0BAA0B,CAAC,OAAO,EAAE,KAAK,EAAE;AACpD,IAAI,IAAI,KAAK,KAAK,SAAS;AAC3B,QAAQ,OAAO,SAAS;AACxB,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;AAC1B,QAAQ,QAAQ,CAAC,OAAO,EAAE,oBAAoB,EAAE,uBAAuB,EAAE,uCAAuC,CAAC;AACjH,QAAQ,OAAO,SAAS;AACxB,IAAI;AACJ,IAAI,MAAM,QAAQ,GAAG,UAAU,CAAC,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,6BAA6B,EAAE;AAC3F,QAAQ,QAAQ,EAAE,KAAK;AACvB,KAAK,CAAC;AACN,IAAI,MAAM,KAAK,GAAG,WAAW,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,0BAA0B,CAAC;AAClF,IAAI,MAAM,KAAK,GAAG,WAAW,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,0BAA0B,CAAC;AAClF,IAAI,OAAO;AACX,QAAQ,IAAI,QAAQ,KAAK,SAAS,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC;AACvD,QAAQ,IAAI,KAAK,KAAK,SAAS,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;AACjD,QAAQ,IAAI,KAAK,KAAK,SAAS,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;AACjD,KAAK;AACL;AACA,SAAS,mBAAmB,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE;AACrD,IAAI,MAAM,IAAI,GAAG,oBAAoB,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC;AAC7D,IAAI,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS;AACvC,IAAI,IAAI,SAAS,KAAK,MAAM;AAC5B,QAAQ,SAAS,KAAK,QAAQ;AAC9B,QAAQ,SAAS,KAAK,SAAS;AAC/B,QAAQ,SAAS,KAAK,SAAS,EAAE;AACjC,QAAQ,QAAQ,CAAC,OAAO,EAAE,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,EAAE,oBAAoB,EAAE,yBAAyB,CAAC;AAC/F,QAAQ,OAAO,IAAI;AACnB,IAAI;AACJ,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;AACrC,QAAQ,QAAQ,CAAC,OAAO,EAAE,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,uBAAuB,EAAE,kCAAkC,CAAC;AAC1G,QAAQ,OAAO,IAAI;AACnB,IAAI;AACJ,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AAClC,QAAQ,QAAQ,CAAC,OAAO,EAAE,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,oBAAoB,EAAE,+BAA+B,CAAC;AACjG,QAAQ,OAAO,IAAI;AACnB,IAAI;AACJ,IAAI,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ;AACrC,IAAI,IAAI,kBAAkB,GAAG,IAAI;AACjC,IAAI,IAAI,SAAS,KAAK,MAAM,IAAI,QAAQ,CAAC,IAAI,KAAK,MAAM,EAAE;AAC1D,QAAQ,MAAM,CAAC,GAAG,cAAc,CAAC,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;AAC9E,QAAQ,MAAM,CAAC,GAAG,cAAc,CAAC,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;AAC9E,QAAQ,MAAM,KAAK,GAAG,cAAc,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;AAC1F,QAAQ,MAAM,MAAM,GAAG,cAAc,CAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;AAC7F,QAAQ,MAAM,EAAE,GAAG,cAAc,CAAC,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,EAAE,KAAK,CAAC;AACxF,QAAQ,MAAM,EAAE,GAAG,cAAc,CAAC,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,EAAE,KAAK,CAAC;AACxF,QAAQ,MAAM,KAAK,GAAG,UAAU,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;AACtF,QAAQ,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,SAAS,IAAI,KAAK,KAAK,SAAS,IAAI,MAAM,KAAK,SAAS,EAAE;AAC/F,YAAY,kBAAkB,GAAG;AACjC,gBAAgB,IAAI,EAAE,MAAM;AAC5B,gBAAgB,CAAC;AACjB,gBAAgB,CAAC;AACjB,gBAAgB,KAAK;AACrB,gBAAgB,MAAM;AACtB,gBAAgB,IAAI,EAAE,KAAK,SAAS,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC;AACnD,gBAAgB,IAAI,EAAE,KAAK,SAAS,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC;AACnD,gBAAgB,IAAI,KAAK,KAAK,SAAS,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;AACzD,aAAa;AACb,QAAQ;AACR,IAAI;AACJ,SAAS,IAAI,SAAS,KAAK,QAAQ,IAAI,QAAQ,CAAC,IAAI,KAAK,QAAQ,EAAE;AACnE,QAAQ,MAAM,EAAE,GAAG,cAAc,CAAC,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;AACjF,QAAQ,MAAM,EAAE,GAAG,cAAc,CAAC,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;AACjF,QAAQ,MAAM,MAAM,GAAG,cAAc,CAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;AAC7F,QAAQ,MAAM,KAAK,GAAG,UAAU,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;AACtF,QAAQ,IAAI,EAAE,KAAK,SAAS,IAAI,EAAE,KAAK,SAAS,IAAI,MAAM,KAAK,SAAS,EAAE;AAC1E,YAAY,kBAAkB,GAAG;AACjC,gBAAgB,IAAI,EAAE,QAAQ;AAC9B,gBAAgB,EAAE;AAClB,gBAAgB,EAAE;AAClB,gBAAgB,MAAM;AACtB,gBAAgB,IAAI,KAAK,KAAK,SAAS,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;AACzD,aAAa;AACb,QAAQ;AACR,IAAI;AACJ,SAAS,IAAI,SAAS,KAAK,SAAS,IAAI,QAAQ,CAAC,IAAI,KAAK,SAAS,EAAE;AACrE,QAAQ,MAAM,EAAE,GAAG,cAAc,CAAC,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;AACjF,QAAQ,MAAM,EAAE,GAAG,cAAc,CAAC,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;AACjF,QAAQ,MAAM,EAAE,GAAG,cAAc,CAAC,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;AACjF,QAAQ,MAAM,EAAE,GAAG,cAAc,CAAC,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;AACjF,QAAQ,MAAM,KAAK,GAAG,UAAU,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;AACtF,QAAQ,IAAI,EAAE,KAAK,SAAS,IAAI,EAAE,KAAK,SAAS,IAAI,EAAE,KAAK,SAAS,IAAI,EAAE,KAAK,SAAS,EAAE;AAC1F,YAAY,kBAAkB,GAAG;AACjC,gBAAgB,IAAI,EAAE,SAAS;AAC/B,gBAAgB,EAAE;AAClB,gBAAgB,EAAE;AAClB,gBAAgB,EAAE;AAClB,gBAAgB,EAAE;AAClB,gBAAgB,IAAI,KAAK,KAAK,SAAS,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;AACzD,aAAa;AACb,QAAQ;AACR,IAAI;AACJ,SAAS,IAAI,SAAS,KAAK,SAAS,IAAI,QAAQ,CAAC,IAAI,KAAK,SAAS,EAAE;AACrE,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;AAC7C,YAAY,QAAQ,CAAC,OAAO,EAAE,CAAC,EAAE,IAAI,CAAC,gBAAgB,CAAC,EAAE,6BAA6B,EAAE,kCAAkC,CAAC;AAC3H,QAAQ;AACR,aAAa,IAAI,QAAQ,CAAC,MAAM,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,gBAAgB,EAAE;AAC3E,YAAY,QAAQ,CAAC,OAAO,EAAE,CAAC,EAAE,IAAI,CAAC,gBAAgB,CAAC,EAAE,yBAAyB,EAAE,CAAC,YAAY,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,oCAAoC,EAAE,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;AACnM,QAAQ;AACR,aAAa;AACb,YAAY,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,KAAK;AACjE,gBAAgB,IAAI,EAAE,EAAE,EAAE;AAC1B,gBAAgB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;AACtC,oBAAoB,QAAQ,CAAC,OAAO,EAAE,CAAC,EAAE,IAAI,CAAC,iBAAiB,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,4BAA4B,EAAE,kCAAkC,CAAC;AAC5I,oBAAoB,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AACzC,gBAAgB;AAChB,gBAAgB,OAAO;AACvB,oBAAoB,CAAC,EAAE,CAAC,EAAE,GAAG,cAAc,CAAC,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,CAAC,iBAAiB,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,CAAC;AAC3I,oBAAoB,CAAC,EAAE,CAAC,EAAE,GAAG,cAAc,CAAC,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,CAAC,iBAAiB,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,CAAC;AAC3I,iBAAiB;AACjB,YAAY,CAAC,CAAC;AACd,YAAY,MAAM,KAAK,GAAG,UAAU,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;AAC1F,YAAY,kBAAkB,GAAG;AACjC,gBAAgB,IAAI,EAAE,SAAS;AAC/B,gBAAgB,MAAM;AACtB,gBAAgB,IAAI,KAAK,KAAK,SAAS,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;AACzD,aAAa;AACb,QAAQ;AACR,IAAI;AACJ,SAAS;AACT,QAAQ,QAAQ,CAAC,OAAO,EAAE,CAAC,EAAE,IAAI,CAAC,cAAc,CAAC,EAAE,4BAA4B,EAAE,0CAA0C,CAAC;AAC5H,IAAI;AACJ,IAAI,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK;AAC/B,IAAI,MAAM,IAAI,GAAG,mBAAmB,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,EAAE,IAAI,CAAC;AACrF,IAAI,MAAM,KAAK,GAAG,UAAU,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,EAAE;AAC7E,QAAQ,QAAQ,EAAE,IAAI;AACtB,QAAQ,GAAG,EAAE,CAAC;AACd,QAAQ,GAAG,EAAE,CAAC;AACd,KAAK,CAAC;AACN,IAAI,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,KAAK;AACpC,UAAU;AACV,UAAU,mBAAmB,CAAC,OAAO,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,IAAI,CAAC,aAAa,CAAC,EAAE,KAAK,CAAC;AACnF,IAAI,MAAM,WAAW,GAAG,UAAU,CAAC,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC,EAAE,IAAI,CAAC,kBAAkB,CAAC,EAAE;AAC/F,QAAQ,GAAG,EAAE,CAAC;AACd,KAAK,CAAC;AACN,IAAI,MAAM,eAAe,GAAG,kBAAkB,CAAC,OAAO,EAAE,KAAK,CAAC,eAAe,EAAE,CAAC,EAAE,IAAI,CAAC,sBAAsB,CAAC,CAAC;AAC/G,IAAI,MAAM,UAAU,GAAG,WAAW,CAAC,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;AAC5F,IAAI,MAAM,OAAO,GAAG,WAAW,CAAC,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;AACnF,IAAI,MAAM,WAAW,GAAG,WAAW,CAAC,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;AAC/F,IAAI,IAAI,CAAC,kBAAkB,IAAI,CAAC,IAAI,IAAI,KAAK,KAAK,SAAS;AAC3D,QAAQ,OAAO,IAAI;AACnB,IAAI,OAAO;AACX,QAAQ,IAAI,EAAE,MAAM;AACpB,QAAQ,GAAG,IAAI;AACf,QAAQ,SAAS;AACjB,QAAQ,QAAQ,EAAE,kBAAkB;AACpC,QAAQ,KAAK,EAAE;AACf,YAAY,IAAI;AAChB,YAAY,KAAK;AACjB,YAAY,IAAI,MAAM,KAAK,SAAS,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;AACvD,YAAY,IAAI,WAAW,KAAK,SAAS,GAAG,EAAE,WAAW,EAAE,GAAG,EAAE,CAAC;AACjE,YAAY,IAAI,eAAe,KAAK,SAAS,GAAG,EAAE,eAAe,EAAE,GAAG,EAAE,CAAC;AACzE,YAAY,IAAI,UAAU,KAAK,SAAS,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC;AAC/D,YAAY,IAAI,OAAO,KAAK,SAAS,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC;AACzD,YAAY,IAAI,WAAW,KAAK,SAAS,GAAG,EAAE,WAAW,EAAE,GAAG,EAAE,CAAC;AACjE,SAAS;AACT,KAAK;AACL;AACA,SAAS,mBAAmB,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE;AACrD,IAAI,IAAI,EAAE;AACV,IAAI,MAAM,IAAI,GAAG,oBAAoB,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC;AAC7D,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AAC5F,QAAQ,QAAQ,CAAC,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,0DAA0D,CAAC;AAC3G,QAAQ,OAAO,IAAI;AACnB,IAAI;AACJ,IAAI,MAAM,CAAC,GAAG,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;AAClF,IAAI,MAAM,CAAC,GAAG,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;AAClF,IAAI,MAAM,KAAK,GAAG,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,QAAQ,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,CAAC,eAAe,CAAC,EAAE,KAAK,CAAC;AACrG,IAAI,MAAM,KAAK,GAAG,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,QAAQ,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;AAC1F,IAAI,MAAM,KAAK,GAAG,CAAC,EAAE,GAAG,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,EAAE,IAAI,CAAC,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,EAAE;AACnI,IAAI,IAAI,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,aAAa,EAAE;AACrD,QAAQ,QAAQ,CAAC,OAAO,EAAE,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,EAAE,gBAAgB,EAAE,CAAC,kCAAkC,EAAE,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;AACvI,IAAI;AACJ,IAAI,MAAM,QAAQ,GAAG,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,EAAE,UAAU,EAAE,CAAC,EAAE,IAAI,CAAC,eAAe,CAAC,EAAE;AAC9F,QAAQ,GAAG,EAAE,CAAC;AACd,KAAK,CAAC;AACN,IAAI,MAAM,UAAU,GAAG,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,EAAE,YAAY,EAAE,CAAC,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;AACnG,IAAI,MAAM,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,UAAU;AAC/C,IAAI,IAAI,UAAU,KAAK,SAAS;AAChC,QAAQ,OAAO,UAAU,KAAK,QAAQ;AACtC,SAAS,OAAO,UAAU,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,EAAE;AAC1E,QAAQ,QAAQ,CAAC,OAAO,EAAE,CAAC,EAAE,IAAI,CAAC,iBAAiB,CAAC,EAAE,yBAAyB,EAAE,+CAA+C,CAAC;AACjI,IAAI;AACJ,IAAI,MAAM,IAAI,GAAG,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,EAAE,KAAK,CAAC;AAC9F,IAAI,MAAM,eAAe,GAAG,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,eAAe,EAAE,CAAC,EAAE,IAAI,CAAC,sBAAsB,CAAC,EAAE,KAAK,CAAC;AAC/H,IAAI,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,SAAS;AAC7C,IAAI,IAAI,SAAS,KAAK,SAAS;AAC/B,QAAQ,SAAS,KAAK,MAAM;AAC5B,QAAQ,SAAS,KAAK,QAAQ;AAC9B,QAAQ,SAAS,KAAK,OAAO;AAC7B,QAAQ,SAAS,KAAK,SAAS,EAAE;AACjC,QAAQ,QAAQ,CAAC,OAAO,EAAE,CAAC,EAAE,IAAI,CAAC,gBAAgB,CAAC,EAAE,oBAAoB,EAAE,wBAAwB,CAAC;AACpG,IAAI;AACJ,IAAI,MAAM,UAAU,GAAG,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,EAAE,YAAY,EAAE,CAAC,EAAE,IAAI,CAAC,iBAAiB,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC;AAC/G,IAAI,MAAM,MAAM,GAAG,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;AAC5E,IAAI,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,SAAS;AAC1C,QAAQ,OAAO,IAAI;AACnB,IAAI,OAAO;AACX,QAAQ,IAAI,EAAE,YAAY;AAC1B,QAAQ,cAAc,EAAE,MAAM;AAC9B,QAAQ,GAAG,IAAI;AACf,QAAQ,QAAQ,EAAE;AAClB,YAAY,CAAC;AACb,YAAY,CAAC;AACb,YAAY,IAAI,KAAK,KAAK,SAAS,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;AACrD,YAAY,IAAI,KAAK,KAAK,SAAS,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;AACrD,SAAS;AACT,QAAQ,IAAI,EAAE,EAAE,KAAK,EAAE;AACvB,QAAQ,KAAK,EAAE;AACf,YAAY,IAAI,QAAQ,KAAK,SAAS,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC;AAC3D,YAAY,IAAI,UAAU,KAAK,SAAS,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC;AAC/D,YAAY,IAAI,UAAU,KAAK,SAAS,GAAG,EAAE,UAAU,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC;AAC3E,YAAY,IAAI,IAAI,KAAK,SAAS,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;AACnD,YAAY,IAAI,eAAe,KAAK,SAAS,GAAG,EAAE,eAAe,EAAE,GAAG,EAAE,CAAC;AACzE,YAAY,IAAI,OAAO,SAAS,KAAK;AACrC,kBAAkB,EAAE,SAAS,EAAE,SAAS;AACxC,kBAAkB,EAAE,CAAC;AACrB,YAAY,IAAI,UAAU,KAAK,SAAS,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC;AAC/D,SAAS;AACT,QAAQ,IAAI,MAAM,KAAK,SAAS,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;AACnD,KAAK;AACL;AACA,SAAS,oBAAoB,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE;AACtD,IAAI,MAAM,IAAI,GAAG,oBAAoB,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC;AAC7D,IAAI,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK;AAC/B,IAAI,IAAI,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,OAAO,EAAE;AACnE,QAAQ,QAAQ,CAAC,OAAO,EAAE,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,eAAe,EAAE,oCAAoC,CAAC;AACjG,QAAQ,OAAO,IAAI;AACnB,IAAI;AACJ,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AACjE,QAAQ,QAAQ,CAAC,OAAO,EAAE,IAAI,EAAE,sBAAsB,EAAE,oDAAoD,CAAC;AAC7G,QAAQ,OAAO,IAAI;AACnB,IAAI;AACJ,IAAI,IAAI,QAAQ,GAAG,IAAI;AACvB,IAAI,IAAI,KAAK,KAAK,MAAM,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,KAAK,MAAM,EAAE;AAC9D,QAAQ,MAAM,CAAC,GAAG,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;AACtF,QAAQ,MAAM,CAAC,GAAG,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;AACtF,QAAQ,MAAM,KAAK,GAAG,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,QAAQ,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;AAClG,QAAQ,MAAM,MAAM,GAAG,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,QAAQ,EAAE,QAAQ,EAAE,CAAC,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;AACrG,QAAQ,MAAM,KAAK,GAAG,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,QAAQ,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;AAC9F,QAAQ,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,SAAS,IAAI,KAAK,KAAK,SAAS,IAAI,MAAM,KAAK,SAAS,EAAE;AAC/F,YAAY,QAAQ,GAAG;AACvB,gBAAgB,IAAI,EAAE,MAAM;AAC5B,gBAAgB,CAAC;AACjB,gBAAgB,CAAC;AACjB,gBAAgB,KAAK;AACrB,gBAAgB,MAAM;AACtB,gBAAgB,IAAI,KAAK,KAAK,SAAS,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;AACzD,aAAa;AACb,QAAQ;AACR,IAAI;AACJ,SAAS,IAAI,CAAC,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,IAAI,KAAK,KAAK,EAAE;AACzF,QAAQ,MAAM,EAAE,GAAG,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;AACzF,QAAQ,MAAM,EAAE,GAAG,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;AACzF,QAAQ,MAAM,EAAE,GAAG,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;AACzF,QAAQ,MAAM,EAAE,GAAG,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;AACzF,QAAQ,MAAM,KAAK,GAAG,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,QAAQ,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;AAC9F,QAAQ,IAAI,EAAE,KAAK,SAAS,IAAI,EAAE,KAAK,SAAS,IAAI,EAAE,KAAK,SAAS,IAAI,EAAE,KAAK,SAAS,EAAE;AAC1F,YAAY,IAAI,KAAK,KAAK,MAAM,EAAE;AAClC,gBAAgB,QAAQ,GAAG;AAC3B,oBAAoB,IAAI,EAAE,MAAM;AAChC,oBAAoB,EAAE;AACtB,oBAAoB,EAAE;AACtB,oBAAoB,EAAE;AACtB,oBAAoB,EAAE;AACtB,oBAAoB,IAAI,KAAK,KAAK,SAAS,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;AAC7D,iBAAiB;AACjB,YAAY;AACZ,iBAAiB;AACjB,gBAAgB,MAAM,eAAe,GAAG,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,QAAQ,EAAE,iBAAiB,EAAE,CAAC,EAAE,IAAI,CAAC,yBAAyB,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC;AAChJ,gBAAgB,QAAQ,GAAG;AAC3B,oBAAoB,IAAI,EAAE,OAAO;AACjC,oBAAoB,EAAE;AACtB,oBAAoB,EAAE;AACtB,oBAAoB,EAAE;AACtB,oBAAoB,EAAE;AACtB,oBAAoB,IAAI,eAAe,KAAK,SAAS,GAAG,EAAE,eAAe,EAAE,GAAG,EAAE,CAAC;AACjF,oBAAoB,IAAI,KAAK,KAAK,SAAS,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;AAC7D,iBAAiB;AACjB,YAAY;AACZ,QAAQ;AACR,IAAI;AACJ,SAAS;AACT,QAAQ,QAAQ,CAAC,OAAO,EAAE,CAAC,EAAE,IAAI,CAAC,cAAc,CAAC,EAAE,6BAA6B,EAAE,uCAAuC,CAAC;AAC1H,IAAI;AACJ,IAAI,MAAM,MAAM,GAAG,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,IAAI,CAAC,aAAa,CAAC,EAAE,KAAK,CAAC;AACpG,IAAI,MAAM,WAAW,GAAG,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,EAAE,aAAa,EAAE,CAAC,EAAE,IAAI,CAAC,kBAAkB,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC;AAClH,IAAI,MAAM,IAAI,GAAG,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,EAAE,KAAK,CAAC;AAC9F,IAAI,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,EAAE,SAAS,EAAE,CAAC,EAAE,IAAI,CAAC,cAAc,CAAC,EAAE;AAC3F,QAAQ,GAAG,EAAE,CAAC;AACd,QAAQ,GAAG,EAAE,CAAC;AACd,KAAK,CAAC;AACN,IAAI,MAAM,eAAe,GAAG,kBAAkB,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,eAAe,EAAE,CAAC,EAAE,IAAI,CAAC,sBAAsB,CAAC,CAAC;AACvH,IAAI,MAAM,UAAU,GAAG,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,EAAE,YAAY,EAAE,CAAC,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;AACpG,IAAI,MAAM,OAAO,GAAG,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,EAAE,SAAS,EAAE,CAAC,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;AAC3F,IAAI,MAAM,MAAM,GAAG,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;AAC5E,IAAI,IAAI,CAAC,QAAQ;AACjB,QAAQ,OAAO,IAAI;AACnB,IAAI,OAAO;AACX,QAAQ,IAAI,EAAE,YAAY;AAC1B,QAAQ,cAAc,EAAE,OAAO;AAC/B,QAAQ,GAAG,IAAI;AACf,QAAQ,KAAK;AACb,QAAQ,QAAQ;AAChB,QAAQ,KAAK,EAAE;AACf,YAAY,IAAI,MAAM,KAAK,SAAS,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;AACvD,YAAY,IAAI,WAAW,KAAK,SAAS,GAAG,EAAE,WAAW,EAAE,GAAG,EAAE,CAAC;AACjE,YAAY,IAAI,IAAI,KAAK,SAAS,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;AACnD,YAAY,IAAI,OAAO,KAAK,SAAS,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC;AACzD,YAAY,IAAI,eAAe,KAAK,SAAS,GAAG,EAAE,eAAe,EAAE,GAAG,EAAE,CAAC;AACzE,YAAY,IAAI,UAAU,KAAK,SAAS,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC;AAC/D,YAAY,IAAI,OAAO,KAAK,SAAS,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC;AACzD,SAAS;AACT,QAAQ,IAAI,MAAM,KAAK,SAAS,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;AACnD,KAAK;AACL;AACA,SAAS,kBAAkB,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE;AAClD,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;AAC1B,QAAQ,QAAQ,CAAC,OAAO,EAAE,IAAI,EAAE,oBAAoB,EAAE,+BAA+B,CAAC;AACtF,QAAQ,OAAO,IAAI;AACnB,IAAI;AACJ,IAAI,MAAM,KAAK,GAAG,mBAAmB,CAAC,OAAO,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC;AAClF,IAAI,MAAM,KAAK,GAAG,UAAU,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC;AAClG,IAAI,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC;AAChG,IAAI,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO;AACjC,IAAI,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ;AACnC,IAAI,IAAI,OAAO,KAAK,SAAS;AAC7B,QAAQ,OAAO,KAAK,MAAM;AAC1B,QAAQ,OAAO,KAAK,OAAO;AAC3B,QAAQ,OAAO,KAAK,QAAQ,EAAE;AAC9B,QAAQ,QAAQ,CAAC,OAAO,EAAE,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,sBAAsB,EAAE,sBAAsB,CAAC;AAC5F,IAAI;AACJ,IAAI,IAAI,QAAQ,KAAK,SAAS;AAC9B,QAAQ,QAAQ,KAAK,OAAO;AAC5B,QAAQ,QAAQ,KAAK,OAAO;AAC5B,QAAQ,QAAQ,KAAK,OAAO,EAAE;AAC9B,QAAQ,QAAQ,CAAC,OAAO,EAAE,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,uBAAuB,EAAE,uBAAuB,CAAC;AAC/F,IAAI;AACJ,IAAI,IAAI,CAAC,KAAK,IAAI,KAAK,KAAK,SAAS;AACrC,QAAQ,OAAO,IAAI;AACnB,IAAI,OAAO;AACX,QAAQ,KAAK;AACb,QAAQ,KAAK;AACb,QAAQ,IAAI,OAAO,KAAK,SAAS,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC;AACrD,QAAQ,IAAI,OAAO,OAAO,KAAK,QAAQ,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC;AACpE,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC;AACvE,KAAK;AACL;AACA,SAAS,kBAAkB,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE;AAClD,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;AAC1B,QAAQ,QAAQ,CAAC,OAAO,EAAE,IAAI,EAAE,oBAAoB,EAAE,8BAA8B,CAAC;AACrF,QAAQ,OAAO,IAAI;AACnB,IAAI;AACJ,IAAI,MAAM,CAAC,GAAG,cAAc,CAAC,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;AAC9D,IAAI,MAAM,CAAC,GAAG,cAAc,CAAC,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;AAC9D,IAAI,MAAM,QAAQ,GAAG,UAAU,CAAC,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC;AACnG,IAAI,MAAM,CAAC,GAAG,UAAU,CAAC,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC;AACtE,IAAI,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,SAAS;AAC1C,QAAQ,OAAO,IAAI;AACnB,IAAI,OAAO;AACX,QAAQ,CAAC;AACT,QAAQ,CAAC;AACT,QAAQ,IAAI,QAAQ,KAAK,SAAS,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC;AACvD,QAAQ,IAAI,CAAC,KAAK,SAAS,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC;AACzC,KAAK;AACL;AACA,SAAS,mBAAmB,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE;AACrD,IAAI,MAAM,IAAI,GAAG,oBAAoB,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC;AAC7D,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;AACzC,QAAQ,QAAQ,CAAC,OAAO,EAAE,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,sBAAsB,EAAE,gCAAgC,CAAC;AACtG,QAAQ,OAAO,IAAI;AACnB,IAAI;AACJ,IAAI,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE;AAChE,QAAQ,QAAQ,CAAC,OAAO,EAAE,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,kBAAkB,EAAE,CAAC,mCAAmC,EAAE,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;AACxI,QAAQ,OAAO,IAAI;AACnB,IAAI;AACJ,IAAI,MAAM,OAAO,GAAG,EAAE;AACtB,IAAI,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,WAAW,KAAK;AAC1D,QAAQ,MAAM,UAAU,GAAG,CAAC,EAAE,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC,CAAC;AAC5D,QAAQ,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE;AACpC,YAAY,QAAQ,CAAC,OAAO,EAAE,UAAU,EAAE,qBAAqB,EAAE,gCAAgC,CAAC;AAClG,YAAY;AACZ,QAAQ;AACR,QAAQ,MAAM,EAAE,GAAG,UAAU,CAAC,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC;AAC7E,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE;AAChD,YAAY,QAAQ,CAAC,OAAO,EAAE,CAAC,EAAE,UAAU,CAAC,OAAO,CAAC,EAAE,qBAAqB,EAAE,sCAAsC,CAAC;AACpH,YAAY;AACZ,QAAQ;AACR,QAAQ,IAAI,WAAW,CAAC,MAAM,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,sBAAsB,EAAE;AAC/E,YAAY,QAAQ,CAAC,OAAO,EAAE,CAAC,EAAE,UAAU,CAAC,OAAO,CAAC,EAAE,0BAA0B,EAAE,CAAC,2CAA2C,EAAE,OAAO,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC;AACzK,QAAQ;AACR,QAAQ,MAAM,MAAM,GAAG,WAAW,CAAC;AACnC,aAAa,GAAG,CAAC,CAAC,KAAK,EAAE,UAAU,KAAK,kBAAkB,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,UAAU,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;AACjH,aAAa,MAAM,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,KAAK,CAAC;AACvC,QAAQ,OAAO,CAAC,eAAe,IAAI,MAAM,CAAC,MAAM;AAChD,QAAQ,IAAI,OAAO,CAAC,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,kBAAkB,EAAE;AACzE,YAAY,QAAQ,CAAC,OAAO,EAAE,CAAC,EAAE,UAAU,CAAC,OAAO,CAAC,EAAE,sBAAsB,EAAE,CAAC,sCAAsC,EAAE,OAAO,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;AAC5J,QAAQ;AACR,QAAQ,IAAI,SAAS,GAAG,CAAC,QAAQ;AACjC,QAAQ,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,UAAU,KAAK;AAC9C,YAAY,IAAI,KAAK,CAAC,CAAC,KAAK,SAAS;AACrC,gBAAgB;AAChB,YAAY,IAAI,KAAK,CAAC,CAAC,GAAG,SAAS,EAAE;AACrC,gBAAgB,QAAQ,CAAC,OAAO,EAAE,CAAC,EAAE,UAAU,CAAC,QAAQ,EAAE,UAAU,CAAC,GAAG,CAAC,EAAE,qBAAqB,EAAE,2DAA2D,CAAC;AAC9J,YAAY;AACZ,YAAY,SAAS,GAAG,KAAK,CAAC,CAAC;AAC/B,QAAQ,CAAC,CAAC;AACV,QAAQ,MAAM,KAAK,GAAG,kBAAkB,CAAC,OAAO,EAAE,WAAW,CAAC,KAAK,EAAE,CAAC,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC;AAC3F,QAAQ,IAAI,KAAK;AACjB,YAAY,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,SAAS,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;AAChF,IAAI,CAAC,CAAC;AACN,IAAI,MAAM,MAAM,GAAG,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;AAC5E,IAAI,OAAO;AACX,QAAQ,IAAI,EAAE,YAAY;AAC1B,QAAQ,cAAc,EAAE,MAAM;AAC9B,QAAQ,GAAG,IAAI;AACf,QAAQ,OAAO;AACf,QAAQ,IAAI,MAAM,KAAK,SAAS,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;AACnD,KAAK;AACL;AACA,SAAS,qBAAqB,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE;AACvD,IAAI,MAAM,IAAI,GAAG,oBAAoB,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC;AAC7D,IAAI,MAAM,UAAU,GAAG,UAAU,CAAC,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,EAAE,IAAI,CAAC;AAC7F,IAAI,IAAI,UAAU;AAClB,QAAQ,CAAC,6DAA6D,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;AACzF,QAAQ,QAAQ,CAAC,OAAO,EAAE,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,EAAE,qBAAqB,EAAE,gCAAgC,CAAC;AACxG,IAAI;AACJ,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;AACjC,QAAQ,QAAQ,CAAC,OAAO,EAAE,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,qBAAqB,EAAE,wCAAwC,CAAC;AAC1G,QAAQ,OAAO,IAAI;AACnB,IAAI;AACJ,IAAI,MAAM,cAAc,GAAG,uBAAuB,CAAC,EAAE,gBAAgB,EAAE,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE;AACvG,QAAQ,gBAAgB,EAAE,OAAO,CAAC,MAAM,CAAC,gBAAgB;AACzD,QAAQ,gBAAgB,EAAE,OAAO,CAAC,MAAM,CAAC,gBAAgB;AACzD,KAAK,CAAC;AACN,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,MAAM,CAAC;AACjD,IAAI,IAAI,UAAU,IAAI,CAAC,oBAAoB,CAAC,UAAU,CAAC,EAAE;AACzD,QAAQ,UAAU,CAAC,OAAO,EAAE,IAAI,EAAE,oBAAoB,EAAE,CAAC,qBAAqB,EAAE,UAAU,CAAC,iDAAiD,CAAC,EAAE,EAAE,UAAU,EAAE,CAAC;AAC9J,IAAI;AACJ,IAAI,OAAO;AACX,UAAU;AACV,YAAY,IAAI,EAAE,QAAQ;AAC1B,YAAY,GAAG,IAAI;AACnB,YAAY,UAAU;AACtB,YAAY,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAC1D;AACA,UAAU,IAAI;AACd;AACA,SAAS,eAAe,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE;AAChD,IAAI,MAAM,IAAI,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC;AACrC,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;AAC1B,QAAQ,QAAQ,CAAC,OAAO,EAAE,IAAI,EAAE,iBAAiB,EAAE,4BAA4B,CAAC;AAChF,QAAQ,OAAO,IAAI;AACnB,IAAI;AACJ,IAAI,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM;AAC7B,QAAQ,OAAO,mBAAmB,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC;AACxD,IAAI,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ;AAC/B,QAAQ,OAAO,qBAAqB,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC;AAC1D,IAAI,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,EAAE;AACrC,QAAQ,IAAI,KAAK,CAAC,cAAc,KAAK,MAAM;AAC3C,YAAY,OAAO,mBAAmB,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC;AAC5D,QAAQ,IAAI,KAAK,CAAC,cAAc,KAAK,OAAO;AAC5C,YAAY,OAAO,oBAAoB,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC;AAC7D,QAAQ,IAAI,KAAK,CAAC,cAAc,KAAK,MAAM;AAC3C,YAAY,OAAO,mBAAmB,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC;AAC5D,QAAQ,QAAQ,CAAC,OAAO,EAAE,CAAC,EAAE,IAAI,CAAC,eAAe,CAAC,EAAE,yBAAyB,EAAE,8BAA8B,CAAC;AAC9G,QAAQ,OAAO,IAAI;AACnB,IAAI;AACJ,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,sBAAsB,EAAE,2BAA2B,CAAC;AAC1F,IAAI,OAAO,IAAI;AACf;AACO,SAAS,oBAAoB,CAAC,KAAK,EAAE,OAAO,GAAG,EAAE,EAAE;AAC1D,IAAI,MAAM,OAAO,GAAG;AACpB,QAAQ,MAAM,EAAE,aAAa,CAAC,OAAO,CAAC;AACtC,QAAQ,MAAM,EAAE,EAAE;AAClB,QAAQ,QAAQ,EAAE,EAAE;AACpB,QAAQ,eAAe,EAAE,CAAC;AAC1B,KAAK;AACL,IAAI,IAAI,QAAQ,CAAC,KAAK,CAAC,EAAE;AACzB,QAAQ,QAAQ,CAAC,OAAO,EAAE,EAAE,EAAE,cAAc,EAAE,gDAAgD,CAAC;AAC/F,QAAQ,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE;AACnF,IAAI;AACJ,IAAI,MAAM,SAAS,GAAG,mBAAmB,CAAC,KAAK,CAAC;AAChD,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,MAAM,CAAC;AAC5C,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,QAAQ,CAAC;AAChD,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;AACvD,QAAQ,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE;AACnF,IAAI;AACJ,IAAI,MAAM,GAAG,GAAG,SAAS,CAAC,KAAK;AAC/B,IAAI,MAAM,KAAK,GAAG,iBAAiB,CAAC,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC;AACvD,IAAI,IAAI,GAAG,CAAC,eAAe,KAAK,kBAAkB,EAAE;AACpD,QAAQ,QAAQ,CAAC,OAAO,EAAE,iBAAiB,EAAE,+BAA+B,EAAE,6CAA6C,CAAC;AAC5H,IAAI;AACJ,IAAI,MAAM,kBAAkB,GAAG,0BAA0B,CAAC,OAAO,EAAE,GAAG,CAAC,kBAAkB,CAAC;AAC1F,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;AACtC,QAAQ,QAAQ,CAAC,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,4BAA4B,CAAC;AACvF,IAAI;AACJ,SAAS,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE;AAC/D,QAAQ,QAAQ,CAAC,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,CAAC,cAAc,EAAE,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,qBAAqB,EAAE,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;AAChJ,IAAI;AACJ,IAAI,MAAM,QAAQ,GAAG,iBAAiB,CAAC,OAAO,EAAE,GAAG,CAAC,QAAQ,EAAE,UAAU,CAAC;AACzE,IAAI,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ;AAC/C,UAAU,GAAG,CAAC;AACd,aAAa,GAAG,CAAC,CAAC,OAAO,EAAE,KAAK,KAAK,eAAe,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC;AAC7E,aAAa,MAAM,CAAC,CAAC,OAAO,KAAK,CAAC,CAAC,OAAO;AAC1C,UAAU,EAAE;AACZ,IAAI,IAAI,CAAC,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;AAC7C,QAAQ,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE;AACnF,IAAI;AACJ,IAAI,MAAM,KAAK,GAAG;AAClB,QAAQ,MAAM,EAAE,4BAA4B;AAC5C,QAAQ,OAAO,EAAE,CAAC;AAClB,QAAQ,KAAK;AACb,QAAQ,eAAe,EAAE,kBAAkB;AAC3C,QAAQ,IAAI,kBAAkB,KAAK,SAAS,GAAG,EAAE,kBAAkB,EAAE,GAAG,EAAE,CAAC;AAC3E,QAAQ,QAAQ;AAChB,QAAQ,IAAI,QAAQ,KAAK,SAAS,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC;AACvD,KAAK;AACL,IAAI,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE;AACzE;;ACxtBO,SAAS,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,EAAE,EAAE;AACtD,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE;AAC3B,QAAQ,OAAO,IAAI;AACnB,IAAI,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,YAAY,CAAC;AACjD,QAAQ,OAAO,IAAI;AACnB,IAAI,MAAM,eAAe,GAAG,MAAM,CAAC,oBAAoB,CAAC,YAAY,EAAE,KAAK,CAAC;AAC5E,IAAI,MAAM,IAAI,GAAG,MAAM,CAAC,0BAA0B,CAAC,eAAe,EAAE,MAAME,UAAc,CAAC,MAAM,CAAC,sBAAsB,EAAE,EAAE,MAAM,CAAC,CAAC;AAClI,IAAI,IAAI,IAAI,EAAE;AACd,QAAQ,MAAM,CAAC,gBAAgB,CAAC,eAAe,CAAC;AAChD,QAAQ,MAAM,CAAC,gBAAgB,CAAC,eAAe,CAAC;AAChD,IAAI;AACJ,IAAI,OAAO,IAAI;AACf;AACO,SAAS,wBAAwB,CAAC,MAAM,EAAE;AACjD,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE;AAC3B,QAAQ;AACR,IAAI,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,oBAAoB,CAAC;AACzD,QAAQ;AACR,IAAI,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM;AAC3C,IAAI,MAAM,eAAe,GAAG,MAAM,CAAC,oBAAoB,CAAC,oBAAoB,EAAE,KAAK,CAAC;AACpF,IAAI,MAAM,CAAC,0BAA0B,CAAC,eAAe,EAAE,MAAMC,kBAAsB,CAAC,MAAM,CAAC,sBAAsB,EAAE,CAAC,CAAC;AACrH,IAAI,MAAM,CAAC,QAAQ,EAAE;AACrB,IAAI,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,KAAK,MAAM,EAAE;AAC7C,QAAQ,MAAM,CAAC,gBAAgB,CAAC,eAAe,CAAC;AAChD,QAAQ,MAAM,CAAC,gBAAgB,CAAC,eAAe,CAAC;AAChD,IAAI;AACJ;AACO,SAAS,oBAAoB,CAAC,MAAM,EAAE,OAAO,GAAG,EAAE,EAAE;AAC3D,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE;AAC3B,QAAQ;AACR,IAAI,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,gBAAgB,EAAE,OAAO,CAAC;AAC9D,QAAQ;AACR,IAAI,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM;AAC3C,IAAI,MAAM,eAAe,GAAG,MAAM,CAAC,oBAAoB,CAAC,gBAAgB,EAAE,KAAK,CAAC;AAChF,IAAI,MAAM,CAAC,0BAA0B,CAAC,eAAe,EAAE,MAAMV,cAAkB,CAAC,MAAM,CAAC,sBAAsB,EAAE,EAAE,OAAO,CAAC,CAAC;AAC1H,IAAI,MAAM,CAAC,QAAQ,EAAE;AACrB,IAAI,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,KAAK,MAAM,EAAE;AAC7C,QAAQ,MAAM,CAAC,gBAAgB,CAAC,eAAe,CAAC;AAChD,QAAQ,MAAM,CAAC,gBAAgB,CAAC,eAAe,CAAC;AAChD,IAAI;AACJ;;ACtCO,SAAS,kBAAkB,CAAC,OAAO,EAAE,IAAI,EAAE;AAClD,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,WAAW;AAC5C,QAAQ;AACR,IAAI,IAAI;AACR,QAAQ,IAAI,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE;AACpE,YAAY,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC;AACnD,QAAQ;AACR,IAAI;AACJ,IAAI,MAAM;AACV,IAAI;AACJ,IAAI,IAAI;AACR,QAAQ,OAAO,IAAI,CAAC,WAAW;AAC/B,IAAI;AACJ,IAAI,MAAM;AACV,IAAI;AACJ;AACO,SAAS,kBAAkB,CAAC,OAAO,EAAE,IAAI,EAAE;AAClD,IAAI,IAAI,EAAE;AACV,IAAI,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,GAAG,OAAO;AAC7D,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,iBAAiB;AAC7C,QAAQ;AACR,IAAI,kBAAkB,CAAC,OAAO,EAAE,IAAI,CAAC;AACrC,IAAI,IAAI,eAAe,GAAG,IAAI;AAC9B,IAAI,IAAI,OAAO,OAAO,CAAC,KAAK,CAAC,MAAM,KAAK,UAAU,EAAE;AACpD,QAAQ,IAAI;AACZ,YAAY,eAAe,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,YAAY,CAAC;AACtE,QAAQ;AACR,QAAQ,OAAO,KAAK,EAAE;AACtB,YAAY,aAAa,CAAC,OAAO,EAAE,KAAK,EAAE,8BAA8B,CAAC;AACzE,YAAY,eAAe,GAAG,IAAI;AAClC,QAAQ;AACR,IAAI;AACJ,IAAI,IAAI,CAAC,eAAe,EAAE;AAC1B,QAAQ,MAAM,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;AAC5D,QAAQ,IAAI,SAAS,GAAG,IAAI,CAAC,QAAQ;AACrC,QAAQ,IAAI,OAAO,OAAO,CAAC,KAAK,CAAC,OAAO,KAAK,UAAU,EAAE;AACzD,YAAY,IAAI;AAChB,gBAAgB,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,eAAe,CAAC;AACxE,YAAY;AACZ,YAAY,OAAO,KAAK,EAAE;AAC1B,gBAAgB,aAAa,CAAC,OAAO,EAAE,KAAK,EAAE,+BAA+B,CAAC;AAC9E,gBAAgB,SAAS,GAAG,IAAI,CAAC,QAAQ;AACzC,YAAY;AACZ,QAAQ;AACR,QAAQ,MAAM,WAAW,GAAG;AAC5B,YAAY,IAAI,EAAE,CAAC;AACnB,YAAY,GAAG,EAAE,CAAC;AAClB,YAAY,IAAI,CAAC,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,WAAW,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,EAAE,CAAC;AACrF,YAAY,OAAO,EAAE,MAAM;AAC3B,YAAY,OAAO,EAAE,KAAK;AAC1B,SAAS;AACT,QAAQ,eAAe,GAAG,IAAI,YAAY,CAAC,UAAU,CAAC,SAAS,EAAE,WAAW,CAAC;AAC7E,IAAI;AACJ,IAAI,iBAAiB,CAAC,eAAe,EAAE,WAAW,CAAC;AACnD,IAAI,eAAe,CAAC,SAAS,GAAG,IAAI;AACpC,IAAI,IAAI,CAAC,WAAW,GAAG,eAAe;AACtC,IAAI,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC;AAC/B,IAAI,MAAM,CAAC,kBAAkB,CAAC,eAAe,CAAC;AAC9C,IAAI,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC;AAChC;AACO,SAAS,aAAa,CAAC,OAAO,EAAE,IAAI,EAAE;AAC7C,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE;AAClB,IAAI,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO;AACvC,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,iBAAiB,IAAI,CAAC,IAAI,CAAC,WAAW;AAClE,QAAQ;AACR,IAAI,MAAM,MAAM,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,SAAS,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,MAAM,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC;AAC3F,IAAI,IAAI,EAAE,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AACxE,QAAQ;AACR,IAAI,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC;AACxB,IAAI,IAAI,CAAC,EAAE;AACX,QAAQ;AACR,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,EAAE;AACxC,IAAI,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;AAC9B,IAAI,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;AAC9B,IAAI,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC;AAClD,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC,eAAe,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,CAAC,CAAC;AACjG,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC;AACzB,QAAQ,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,IAAI,IAAI,MAAM,CAAC;AACrD,QAAQ,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,IAAI,IAAI,MAAM,CAAC;AACpD,QAAQ,KAAK,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,CAAC;AACnE,QAAQ,OAAO,EAAE,MAAM;AACvB,QAAQ,OAAO,EAAE,KAAK;AACtB,QAAQ,OAAO,EAAE,IAAI;AACrB,KAAK,CAAC;AACN,IAAI,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE;AAChC,IAAI,MAAM,CAAC,SAAS,EAAE;AACtB;AACO,SAAS,gBAAgB,CAAC,OAAO,EAAE,IAAI,EAAE;AAChD,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,iBAAiB;AAC1C,QAAQ;AACR,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;AAC3B,QAAQ,kBAAkB,CAAC,OAAO,EAAE,IAAI,CAAC;AACzC,IAAI;AACJ,IAAI,IAAI,IAAI,CAAC,WAAW,EAAE;AAC1B,QAAQ,IAAI,CAAC,WAAW,CAAC,OAAO,GAAG,IAAI;AACvC,QAAQ,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC;AACpC,IAAI;AACJ;AACO,SAAS,iBAAiB,CAAC,OAAO,EAAE;AAC3C,IAAI,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO;AAC9B,IAAI,IAAI,CAAC,MAAM;AACf,QAAQ;AACR,IAAI,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,EAAE;AACpC,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK;AACnD,QAAQ,IAAI;AACZ,YAAY,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;AAC5B,QAAQ;AACR,QAAQ,MAAM;AACd,QAAQ;AACR,IAAI,CAAC,CAAC;AACN,IAAI,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK;AAC7C,QAAQ,IAAI;AACZ,YAAY,OAAO,CAAC,CAAC,WAAW;AAChC,QAAQ;AACR,QAAQ,MAAM;AACd,QAAQ;AACR,IAAI,CAAC,CAAC;AACN;;ACvHA,SAAS,wBAAwB,CAAC,OAAO,EAAE;AAC3C,IAAI,IAAI,EAAE,EAAE,EAAE;AACd,IAAI,OAAO,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,OAAO,CAAC,SAAS,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,MAAM,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,OAAO,CAAC,MAAM;AAChJ;AACA,SAAS,iBAAiB,CAAC,KAAK,EAAE,KAAK,EAAE;AACzC,IAAI,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,EAAE;AACjC,IAAI,OAAO,KAAK,KAAK,eAAe,GAAG,OAAO,GAAG,OAAO,CAAC,OAAO,EAAE;AAClE;AACO,SAAS,cAAc,CAAC,OAAO,EAAE;AACxC,IAAI,MAAM,MAAM,GAAG,OAAO,CAAC,cAAc,EAAE;AAC3C,IAAI,MAAM,MAAM,GAAG,wBAAwB,CAAC,OAAO,CAAC;AACpD,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM;AAC1B,QAAQ;AACR,IAAI,MAAM,aAAa,GAAG,MAAM,CAAC,aAAa;AAC9C,IAAI,MAAM,CAAC,SAAS,GAAG,EAAE;AACzB,IAAI,iBAAiB,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK;AACrG,QAAQ,MAAM,eAAe,GAAG,aAAa,CAAC,aAAa,CAAC,IAAI,CAAC;AACjE,QAAQ,eAAe,CAAC,SAAS,GAAG,2BAA2B;AAC/D,QAAQ,eAAe,CAAC,WAAW,GAAG,IAAI,CAAC,QAAQ;AACnD,QAAQ,eAAe,CAAC,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;AAC5D,QAAQ,eAAe,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM;AACxD,YAAY,MAAM,EAAE,GAAG,MAAM,CAAC,eAAe,CAAC,OAAO,CAAC,MAAM,CAAC;AAC7D,YAAY,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;AACpC,gBAAgB;AAChB,YAAY,MAAM,UAAU,GAAG,wBAAwB,CAAC,OAAO,CAAC;AAChE,YAAY,IAAI,CAAC,UAAU;AAC3B,gBAAgB;AAChB,YAAY,MAAM,MAAM,GAAG;AAC3B,iBAAiB,UAAU;AAC3B,iBAAiB,IAAI,CAAC,CAAC,CAAC,KAAK,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,EAAE,CAAC;AAChE,YAAY,IAAI,CAAC,MAAM;AACvB,gBAAgB;AAChB,YAAY,UAAU,CAAC,eAAe,CAAC,MAAM,CAAC;AAC9C,YAAY,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC;AAC1C,QAAQ,CAAC,CAAC;AACV,QAAQ,MAAM,CAAC,WAAW,CAAC,eAAe,CAAC;AAC3C,IAAI,CAAC,CAAC;AACN;AACO,SAAS,uBAAuB,CAAC,OAAO,EAAE,YAAY,EAAE;AAC/D,IAAI,MAAM,MAAM,GAAG,OAAO,CAAC,cAAc,EAAE;AAC3C,IAAI,IAAI,CAAC,MAAM;AACf,QAAQ;AACR,IAAI,MAAM,UAAU,GAAG,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,IAAI;AACxE,IAAI,MAAM,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK;AAC5D,QAAQ,MAAM,UAAU,GAAG,UAAU,KAAK,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,UAAU;AACpF,QAAQ,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,EAAE,UAAU,CAAC;AACnD,IAAI,CAAC,CAAC;AACN;;AChDO,SAAS,4BAA4B,CAAC,gBAAgB,EAAE,eAAe,EAAE;AAChF,IAAI,IAAI,CAAC,gBAAgB,IAAI,CAAC,eAAe;AAC7C,QAAQ;AACR,IAAI,IAAI;AACR,QAAQ,gBAAgB,CAAC,mBAAmB,CAAC,SAAS,EAAE,eAAe,CAAC;AACxE,IAAI;AACJ,IAAI,MAAM;AACV,IAAI;AACJ;AACO,SAAS,mBAAmB,CAAC,MAAM,EAAE;AAC5C,IAAI,IAAI,CAAC,MAAM;AACf,QAAQ,OAAO,OAAO,CAAC,OAAO,EAAE;AAChC,IAAI,IAAI;AACR,QAAQ,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE;AAC/C,aAAa,IAAI,CAAC,MAAM,SAAS;AACjC,aAAa,KAAK,CAAC,MAAM;AACzB,QAAQ,CAAC,CAAC;AACV,IAAI;AACJ,IAAI,MAAM;AACV,QAAQ,OAAO,OAAO,CAAC,OAAO,EAAE;AAChC,IAAI;AACJ;AACO,SAAS,uBAAuB,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE;AACvF,IAAI,IAAI,CAAC,UAAU,IAAI,CAAC,MAAM;AAC9B,QAAQ;AACR,IAAI,IAAI;AACR,QAAQ,WAAW,EAAE;AACrB,IAAI;AACJ,IAAI,MAAM;AACV,IAAI;AACJ,IAAI,YAAY,EAAE;AAClB;;AC/BO,MAAM,WAAW,CAAC;AACzB,IAAI,WAAW,CAAC,cAAc,EAAE,UAAU,EAAE;AAC5C,QAAQ,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,UAAU,EAAE;AAChD,YAAY,UAAU,EAAE,IAAI;AAC5B,YAAY,YAAY,EAAE,IAAI;AAC9B,YAAY,QAAQ,EAAE,IAAI;AAC1B,YAAY,KAAK,EAAE;AACnB,SAAS,CAAC;AACV,QAAQ,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,gBAAgB,EAAE;AACtD,YAAY,UAAU,EAAE,IAAI;AAC5B,YAAY,YAAY,EAAE,IAAI;AAC9B,YAAY,QAAQ,EAAE,IAAI;AAC1B,YAAY,KAAK,EAAE;AACnB,SAAS,CAAC;AACV,QAAQ,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,YAAY,EAAE;AAClD,YAAY,UAAU,EAAE,IAAI;AAC5B,YAAY,YAAY,EAAE,IAAI;AAC9B,YAAY,QAAQ,EAAE,IAAI;AAC1B,YAAY,KAAK,EAAE;AACnB,SAAS,CAAC;AACV,QAAQ,IAAI,CAAC,cAAc,GAAG,cAAc;AAC5C,QAAQ,IAAI,CAAC,UAAU,GAAG,UAAU;AACpC,IAAI;AACJ,IAAI,YAAY,CAAC,GAAG,EAAE,SAAS,EAAE,OAAO,EAAE;AAC1C,QAAQ,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC;AAChD,QAAQ,IAAI,CAAC,OAAO;AACpB,YAAY,OAAO,KAAK;AACxB,QAAQ,MAAM,OAAO,GAAG,CAAC,KAAK,KAAK;AACnC,YAAY,IAAI,IAAI,CAAC,UAAU,EAAE;AACjC,gBAAgB;AAChB,YAAY,OAAO,CAAC,KAAK,CAAC;AAC1B,QAAQ,CAAC;AACT,QAAQ,OAAO,CAAC,gBAAgB,CAAC,SAAS,EAAE,OAAO,CAAC;AACpD,QAAQ,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,GAAG,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;AACrF,QAAQ,OAAO,IAAI;AACnB,IAAI;AACJ,IAAI,SAAS,GAAG;AAChB,QAAQ,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,EAAE;AAC3C,YAAY,IAAI;AAChB,gBAAgB,KAAK,CAAC,OAAO,CAAC,mBAAmB,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC;AACjF,YAAY;AACZ,YAAY,MAAM;AAClB,YAAY;AACZ,QAAQ;AACR,QAAQ,IAAI,CAAC,QAAQ,GAAG,EAAE;AAC1B,IAAI;AACJ,IAAI,IAAI,GAAG;AACX,QAAQ,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM;AACnC,IAAI;AACJ;;ACjDA,MAAM,sBAAsB,GAAG;AAC/B,IAAI,sBAAsB;AAC1B,IAAI,sBAAsB;AAC1B,IAAI,oBAAoB;AACxB,IAAI,sBAAsB;AAC1B,IAAI,gBAAgB;AACpB,IAAI,mBAAmB;AACvB,IAAI,qBAAqB;AACzB,IAAI,iBAAiB;AACrB,IAAI,mBAAmB;AACvB,IAAI,yBAAyB;AAC7B,IAAI,yBAAyB;AAC7B,IAAI,yBAAyB;AAC7B,IAAI,wBAAwB;AAC5B,IAAI,yBAAyB;AAC7B,IAAI,kBAAkB;AACtB,IAAI,mBAAmB;AACvB,IAAI,sBAAsB;AAC1B,IAAI,oBAAoB;AACxB,IAAI,kBAAkB;AACtB,IAAI,0BAA0B;AAC9B,IAAI,sBAAsB;AAC1B,IAAI,kBAAkB;AACtB,IAAI,wBAAwB;AAC5B,IAAI,qBAAqB;AACzB,IAAI,oBAAoB;AACxB,IAAI,gBAAgB;AACpB,IAAI,mBAAmB;AACvB,IAAI,qBAAqB;AACzB,IAAI,oBAAoB;AACxB,IAAI,gBAAgB;AACpB,IAAI,oBAAoB;AACxB,IAAI,wBAAwB;AAC5B,IAAI,wBAAwB;AAC5B,IAAI,sBAAsB;AAC1B,IAAI,iBAAiB;AACrB,IAAI,kBAAkB;AACtB,IAAI,uBAAuB;AAC3B,IAAI,gBAAgB;AACpB,IAAI,6BAA6B;AACjC,IAAI,sBAAsB;AAC1B,IAAI,qBAAqB;AACzB,IAAI,gCAAgC;AACpC,IAAI,4BAA4B;AAChC,IAAI,4BAA4B;AAChC,IAAI,kCAAkC;AACtC,IAAI,kCAAkC;AACtC,IAAI,kCAAkC;AACtC,IAAI,gCAAgC;AACpC,IAAI,qBAAqB;AACzB,IAAI,cAAc;AAClB,IAAI,eAAe;AACnB,IAAI,2BAA2B;AAC/B,IAAI,YAAY;AAChB,IAAI,YAAY;AAChB,IAAI,YAAY;AAChB,IAAI,qBAAqB;AACzB,IAAI,uBAAuB;AAC3B,IAAI,iBAAiB;AACrB,IAAI,kBAAkB;AACtB,IAAI,uBAAuB;AAC3B,IAAI,sBAAsB;AAC1B,IAAI,sBAAsB;AAC1B,IAAI,sBAAsB;AAC1B,CAAC;AACD,MAAM,sBAAsB,GAAG;AAC/B,IAAI,uBAAuB;AAC3B,IAAI,iBAAiB;AACrB,IAAI,kBAAkB;AACtB,CAAC;AACD,MAAM,sBAAsB,GAAG,sBAAsB;AACrD,MAAM,sBAAsB,GAAG;AAC/B,IAAI,oBAAoB;AACxB,IAAI,gBAAgB;AACpB,IAAI,mBAAmB;AACvB,CAAC;AACD,MAAM,sBAAsB,GAAG,sBAAsB;AACrD,MAAM,sBAAsB,GAAG;AAC/B,IAAI,oBAAoB;AACxB,IAAI,gBAAgB;AACpB,IAAI,oBAAoB;AACxB,IAAI,wBAAwB;AAC5B,IAAI,wBAAwB;AAC5B,IAAI,sBAAsB;AAC1B,CAAC;AACD,MAAM,uBAAuB,GAAG,sBAAsB;AACtD,MAAM,uBAAuB,GAAG;AAChC,IAAI,iBAAiB;AACrB,IAAI,kBAAkB;AACtB,IAAI,uBAAuB;AAC3B,IAAI,gBAAgB;AACpB,IAAI,6BAA6B;AACjC,IAAI,sBAAsB;AAC1B,IAAI,qBAAqB;AACzB,CAAC;AACD,MAAM,wBAAwB,GAAG;AACjC,IAAI,sBAAsB;AAC1B,IAAI,sBAAsB;AAC1B,IAAI,oBAAoB;AACxB,IAAI,sBAAsB;AAC1B,IAAI,gBAAgB;AACpB,IAAI,mBAAmB;AACvB,IAAI,qBAAqB;AACzB,IAAI,iBAAiB;AACrB,IAAI,mBAAmB;AACvB,IAAI,yBAAyB;AAC7B,IAAI,yBAAyB;AAC7B,IAAI,yBAAyB;AAC7B,IAAI,wBAAwB;AAC5B,IAAI,yBAAyB;AAC7B,IAAI,kBAAkB;AACtB,IAAI,mBAAmB;AACvB,IAAI,sBAAsB;AAC1B,IAAI,oBAAoB;AACxB,IAAI,kBAAkB;AACtB,IAAI,0BAA0B;AAC9B,IAAI,sBAAsB;AAC1B,IAAI,kBAAkB;AACtB,IAAI,wBAAwB;AAC5B,IAAI,qBAAqB;AACzB,IAAI,oBAAoB;AACxB,IAAI,gBAAgB;AACpB,IAAI,mBAAmB;AACvB,IAAI,qBAAqB;AACzB,IAAI,oBAAoB;AACxB,IAAI,gBAAgB;AACpB,IAAI,oBAAoB;AACxB,IAAI,wBAAwB;AAC5B,IAAI,wBAAwB;AAC5B,IAAI,sBAAsB;AAC1B,IAAI,iBAAiB;AACrB,IAAI,kBAAkB;AACtB,IAAI,uBAAuB;AAC3B,IAAI,gBAAgB;AACpB,IAAI,6BAA6B;AACjC,IAAI,sBAAsB;AAC1B,IAAI,qBAAqB;AACzB,IAAI,gCAAgC;AACpC,IAAI,4BAA4B;AAChC,IAAI,4BAA4B;AAChC,IAAI,kCAAkC;AACtC,IAAI,kCAAkC;AACtC,IAAI,kCAAkC;AACtC,IAAI,gCAAgC;AACpC,IAAI,qBAAqB;AACzB,IAAI,cAAc;AAClB,IAAI,eAAe;AACnB,IAAI,2BAA2B;AAC/B,IAAI,YAAY;AAChB,IAAI,YAAY;AAChB,IAAI,YAAY;AAChB,IAAI,qBAAqB;AACzB,IAAI,uBAAuB;AAC3B,IAAI,iBAAiB;AACrB,IAAI,kBAAkB;AACtB,IAAI,uBAAuB;AAC3B,IAAI,sBAAsB;AAC1B,IAAI,sBAAsB;AAC1B,IAAI,sBAAsB;AAC1B,CAAC;AACD,MAAM,wBAAwB,GAAG;AACjC,IAAI,sBAAsB;AAC1B,IAAI,sBAAsB;AAC1B,IAAI,sBAAsB;AAC1B,CAAC;AACD,SAAS,mBAAmB,CAAC,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE,UAAU,EAAE;AAC7E,IAAI,WAAW,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK;AACjC,QAAQ,UAAU,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,MAAM,IAAI,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AACtE,IAAI,CAAC,CAAC;AACN;AACO,SAAS,uBAAuB,CAAC,QAAQ,EAAE,UAAU,EAAE;AAC9D,IAAI,IAAI,QAAQ,CAAC,UAAU,EAAE;AAC7B,QAAQ,sBAAsB,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK;AAChD,YAAY,UAAU,CAAC,GAAG,EAAE,KAAK,CAAC;AAClC,QAAQ,CAAC,CAAC;AACV,QAAQ;AACR,IAAI;AACJ,IAAI,IAAI,QAAQ,CAAC,YAAY,EAAE;AAC/B,QAAQ,mBAAmB,CAAC,sBAAsB,EAAE,sBAAsB,EAAE,QAAQ,EAAE,UAAU,CAAC;AACjG,QAAQ;AACR,IAAI;AACJ,IAAI,IAAI,QAAQ,CAAC,YAAY,EAAE;AAC/B,QAAQ,mBAAmB,CAAC,sBAAsB,EAAE,sBAAsB,EAAE,QAAQ,EAAE,UAAU,CAAC;AACjG,QAAQ;AACR,IAAI;AACJ,IAAI,IAAI,QAAQ,CAAC,YAAY,EAAE;AAC/B,QAAQ,mBAAmB,CAAC,sBAAsB,EAAE,sBAAsB,EAAE,QAAQ,EAAE,UAAU,CAAC;AACjG,QAAQ;AACR,IAAI;AACJ,IAAI,IAAI,QAAQ,CAAC,aAAa,EAAE;AAChC,QAAQ,mBAAmB,CAAC,uBAAuB,EAAE,uBAAuB,EAAE,QAAQ,EAAE,UAAU,CAAC;AACnG,QAAQ;AACR,IAAI;AACJ,IAAI,IAAI,QAAQ,CAAC,cAAc,EAAE;AACjC,QAAQ,wBAAwB,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK;AAClD,YAAY,UAAU,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,MAAM;AAC5C,gBAAgB,CAAC,QAAQ,CAAC,gBAAgB;AAC1C,gBAAgB,wBAAwB,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AACvD,QAAQ,CAAC,CAAC;AACV,QAAQ,UAAU,CAAC,YAAY,EAAE,KAAK,CAAC;AACvC,QAAQ;AACR,IAAI;AACJ,IAAI,UAAU,CAAC,sBAAsB,EAAE,QAAQ,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;AAC7E,IAAI,UAAU,CAAC,sBAAsB,EAAE,QAAQ,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;AAC7E,IAAI,UAAU,CAAC,oBAAoB,EAAE,QAAQ,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;AAC3E,IAAI,UAAU,CAAC,sBAAsB,EAAE,QAAQ,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;AAC7E,IAAI,UAAU,CAAC,gBAAgB,EAAE,QAAQ,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;AACvE,IAAI,UAAU,CAAC,mBAAmB,EAAE,QAAQ,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;AAC1E,IAAI,UAAU,CAAC,qBAAqB,EAAE,QAAQ,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;AAC5E,IAAI,UAAU,CAAC,iBAAiB,EAAE,QAAQ,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;AACxE,IAAI,UAAU,CAAC,mBAAmB,EAAE,QAAQ,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;AAC1E,IAAI,UAAU,CAAC,yBAAyB,EAAE,QAAQ,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;AAChF,IAAI,UAAU,CAAC,yBAAyB,EAAE,QAAQ,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;AAChF,IAAI,UAAU,CAAC,yBAAyB,EAAE,QAAQ,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;AAChF,IAAI,UAAU,CAAC,wBAAwB,EAAE,QAAQ,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;AAC/E,IAAI,UAAU,CAAC,yBAAyB,EAAE,QAAQ,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;AAChF,IAAI,UAAU,CAAC,cAAc,EAAE,QAAQ,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,YAAY,GAAG,QAAQ,CAAC,QAAQ,CAAC;AAClH,IAAI,UAAU,CAAC,eAAe,EAAE,QAAQ,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,YAAY,GAAG,QAAQ,CAAC,QAAQ,CAAC;AACnH,IAAI,UAAU,CAAC,kBAAkB,EAAE,QAAQ,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;AACzE,IAAI,UAAU,CAAC,mBAAmB,EAAE,QAAQ,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;AAC1E,IAAI,UAAU,CAAC,sBAAsB,EAAE,QAAQ,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;AAC7E,IAAI,UAAU,CAAC,oBAAoB,EAAE,QAAQ,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;AAC3E,IAAI,UAAU,CAAC,kBAAkB,EAAE,QAAQ,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;AACzE,IAAI,UAAU,CAAC,0BAA0B,EAAE,QAAQ,CAAC,eAAe,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;AACxF,IAAI,UAAU,CAAC,sBAAsB,EAAE,QAAQ,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;AAC7E,IAAI,UAAU,CAAC,kBAAkB,EAAE,QAAQ,CAAC,QAAQ,IAAI,QAAQ,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;AAC9F,IAAI,UAAU,CAAC,gCAAgC,EAAE,QAAQ,CAAC,qBAAqB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;AACpG,IAAI,UAAU,CAAC,4BAA4B,EAAE,QAAQ,CAAC,cAAc,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;AACzF,IAAI,UAAU,CAAC,4BAA4B,EAAE,QAAQ,CAAC,yBAAyB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;AACpG,IAAI,UAAU,CAAC,wBAAwB,EAAE,QAAQ,CAAC,QAAQ,IAAI,QAAQ,CAAC,cAAc,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;AAC1G,IAAI,UAAU,CAAC,kCAAkC,EAAE,QAAQ,CAAC,yBAAyB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;AAC1G,IAAI,UAAU,CAAC,kCAAkC,EAAE,QAAQ,CAAC,yBAAyB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;AAC1G,IAAI,UAAU,CAAC,kCAAkC,EAAE,QAAQ,CAAC,yBAAyB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;AAC1G,IAAI,UAAU,CAAC,gCAAgC,EAAE,QAAQ,CAAC,yBAAyB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;AACxG,IAAI,UAAU,CAAC,qBAAqB,EAAE,QAAQ,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;AAC5E,IAAI,UAAU,CAAC,2BAA2B,EAAE,QAAQ,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,kBAAkB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;AAClH,IAAI,UAAU,CAAC,YAAY,EAAE,QAAQ,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,OAAO,CAAC;AACvF,IAAI,UAAU,CAAC,YAAY,EAAE,QAAQ,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,OAAO,CAAC;AACvF,IAAI,UAAU,CAAC,qBAAqB,EAAE,QAAQ,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;AAC5E,IAAI,UAAU,CAAC,uBAAuB,EAAE,QAAQ,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;AAC9E,IAAI,UAAU,CAAC,uBAAuB,EAAE,QAAQ,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;AAC9E,IAAI,UAAU,CAAC,qBAAqB,EAAE,QAAQ,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;AAC5E,IAAI,UAAU,CAAC,qBAAqB,EAAE,QAAQ,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;AAC5E,IAAI,UAAU,CAAC,sBAAsB,EAAE,QAAQ,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;AAC7E,IAAI,UAAU,CAAC,6BAA6B,EAAE,QAAQ,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;AACpF,IAAI,UAAU,CAAC,sBAAsB,EAAE,KAAK,CAAC;AAC7C,IAAI,UAAU,CAAC,oBAAoB,EAAE,KAAK,CAAC;AAC3C,IAAI,UAAU,CAAC,oBAAoB,EAAE,KAAK,CAAC;AAC3C,IAAI,UAAU,CAAC,qBAAqB,EAAE,KAAK,CAAC;AAC5C,IAAI,UAAU,CAAC,sBAAsB,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC;AAC5D,IAAI,UAAU,CAAC,sBAAsB,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC;AAC5D,IAAI,UAAU,CAAC,gBAAgB,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC;AACtD,IAAI,UAAU,CAAC,mBAAmB,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC;AACzD,IAAI,UAAU,CAAC,gBAAgB,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC;AACtD,IAAI,UAAU,CAAC,oBAAoB,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC;AAC1D,IAAI,UAAU,CAAC,wBAAwB,EAAE,KAAK,CAAC;AAC/C,IAAI,UAAU,CAAC,wBAAwB,EAAE,KAAK,CAAC;AAC/C,IAAI,UAAU,CAAC,sBAAsB,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC;AAC5D,IAAI,UAAU,CAAC,iBAAiB,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC;AACvD,IAAI,UAAU,CAAC,kBAAkB,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC;AACxD,IAAI,UAAU,CAAC,uBAAuB,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC;AAC7D,IAAI,UAAU,CAAC,gBAAgB,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC;AACtD,IAAI,UAAU,CAAC,YAAY,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC;AAC9C,IAAI,UAAU,CAAC,iBAAiB,EAAE,KAAK,CAAC;AACxC,IAAI,UAAU,CAAC,kBAAkB,EAAE,KAAK,CAAC;AACzC;;ACxQO,SAAS,0BAA0B,CAAC,OAAO,EAAE;AACpD,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE;AAClB,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM;AACvB,QAAQ,OAAO,IAAI;AACnB,IAAI,MAAM,QAAQ,GAAG,CAAC,CAAC,OAAO,CAAC,aAAa;AAC5C,IAAI,MAAM,KAAK,GAAG,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE;AAClF,IAAI,MAAM,WAAW,GAAG,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,MAAM,CAAC,kBAAkB,CAAC,GAAG,EAAE;AAC9F,IAAI,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,eAAe,EAAE;AACzD,IAAI,OAAO;AACX,QAAQ,QAAQ;AAChB,QAAQ,QAAQ,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC;AAClC,QAAQ,cAAc,EAAE,WAAW,CAAC,MAAM,GAAG,CAAC;AAC9C,QAAQ,eAAe,EAAE,CAAC,EAAE,YAAY,IAAI,YAAY,CAAC,YAAY,CAAC,CAAC;AACvE,QAAQ,qBAAqB,EAAE,CAAC,EAAE,YAAY,IAAI,kBAAkB,CAAC,YAAY,CAAC,CAAC;AACnF,QAAQ,yBAAyB,EAAE,CAAC,CAAC,YAAY,IAAI,uBAAuB,CAAC,YAAY,CAAC;AAC1F,QAAQ,kBAAkB,EAAE,OAAO,CAAC,YAAY,KAAK,CAAC;AACtD,YAAY,OAAO,CAAC,eAAe,KAAK,CAAC;AACzC,YAAY,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC,aAAa,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,MAAM,GAAG,EAAE,CAAC,KAAK,CAAC;AACzF,YAAY,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC,aAAa,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,MAAM,GAAG,EAAE,CAAC,KAAK,CAAC;AACzF,QAAQ,YAAY,EAAE,OAAO,CAAC,YAAY;AAC1C,QAAQ,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAC,QAAQ;AAC1C,QAAQ,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAC,QAAQ;AAC1C,QAAQ,OAAO,EAAE,OAAO,CAAC,cAAc,CAAC,OAAO,EAAE;AACjD,QAAQ,OAAO,EAAE,OAAO,CAAC,cAAc,CAAC,OAAO,EAAE;AACjD,QAAQ,MAAM,EAAE,OAAO,CAAC,cAAc,CAAC,MAAM,EAAE,IAAI,OAAO,CAAC,SAAS,CAAC,MAAM,EAAE;AAC7E,QAAQ,UAAU,EAAE,OAAO,CAAC,UAAU;AACtC,QAAQ,YAAY,EAAE,OAAO,CAAC,WAAW,KAAK,IAAI;AAClD,QAAQ,cAAc,EAAE,OAAO,CAAC,aAAa,KAAK,IAAI;AACtD,QAAQ,YAAY,EAAE,OAAO,CAAC,WAAW,KAAK,IAAI;AAClD,QAAQ,YAAY,EAAE,OAAO,CAAC,WAAW,KAAK,IAAI;AAClD,QAAQ,aAAa,EAAE,OAAO,CAAC,YAAY,KAAK,IAAI;AACpD,QAAQ,gBAAgB,EAAE,CAAC,CAAC,EAAE,GAAG,OAAO,CAAC,aAAa,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,MAAM,GAAG,EAAE,CAAC,UAAU,MAAM,IAAI;AACpH,KAAK;AACL;;AClCA,SAAS,0BAA0B,CAAC,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE;AAC3D,IAAI,IAAI,CAAC,OAAO,CAAC,uBAAuB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;AACnD,QAAQ,OAAO,CAAC,uBAAuB,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC;AACvF,IAAI;AACJ,IAAI,IAAI,CAAC,OAAO,CAAC,wBAAwB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;AACpD,QAAQ,OAAO,CAAC,wBAAwB,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,KAAK,CAAC,aAAa,IAAI,EAAE,CAAC;AACpF,IAAI;AACJ,IAAI,IAAI,UAAU,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;AACxE,QAAQ,OAAO,CAAC,mBAAmB,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC;AAChE,IAAI;AACJ;AACO,SAAS,uBAAuB,CAAC,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE;AACjE,IAAI,IAAI,EAAE;AACV,IAAI,MAAM,cAAc,GAAG,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC;AAClD,IAAI,IAAI,CAAC,cAAc;AACvB,QAAQ;AACR,IAAI,0BAA0B,CAAC,OAAO,EAAE,GAAG,EAAE,cAAc,CAAC;AAC5D,IAAI,IAAI,UAAU,IAAI,cAAc,EAAE;AACtC,QAAQ,MAAM,WAAW,GAAG,cAAc;AAC1C,QAAQ,MAAM,YAAY,GAAG,CAAC,SAAS;AACvC,QAAQ,IAAI,WAAW,CAAC,QAAQ,KAAK,YAAY;AACjD,YAAY,WAAW,CAAC,QAAQ,GAAG,YAAY;AAC/C,QAAQ;AACR,IAAI;AACJ,IAAI,IAAI,CAAC,SAAS,EAAE;AACpB,QAAQ,cAAc,CAAC,YAAY,CAAC,eAAe,EAAE,MAAM,CAAC;AAC5D,QAAQ,cAAc,CAAC,KAAK,CAAC,aAAa,GAAG,MAAM;AACnD,IAAI;AACJ,SAAS;AACT,QAAQ,MAAM,YAAY,GAAG,OAAO,CAAC,uBAAuB,CAAC,GAAG,CAAC,GAAG,CAAC;AACrE,QAAQ,IAAI,YAAY,KAAK,IAAI,IAAI,YAAY,KAAK,SAAS,EAAE;AACjE,YAAY,cAAc,CAAC,eAAe,CAAC,eAAe,CAAC;AAC3D,QAAQ;AACR,aAAa;AACb,YAAY,cAAc,CAAC,YAAY,CAAC,eAAe,EAAE,YAAY,CAAC;AACtE,QAAQ;AACR,QAAQ,cAAc,CAAC,KAAK,CAAC,aAAa,GAAG,CAAC,EAAE,GAAG,OAAO,CAAC,wBAAwB,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,EAAE;AACjI,IAAI;AACJ;AACO,SAAS,kCAAkC,CAAC,OAAO,EAAE;AAC5D,IAAI,IAAI,EAAE,EAAE,EAAE;AACd,IAAI,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;AACrD,QAAQ,MAAM,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC;AAC/C,QAAQ,IAAI,CAAC,OAAO;AACpB,YAAY;AACZ,QAAQ,IAAI,UAAU,IAAI,OAAO,IAAI,OAAO,CAAC,mBAAmB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;AAC3E,YAAY,OAAO,CAAC,QAAQ;AAC5B,gBAAgB,CAAC,EAAE,GAAG,OAAO,CAAC,mBAAmB,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,KAAK;AAClG,QAAQ;AACR,QAAQ,IAAI,OAAO,CAAC,uBAAuB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;AACtD,YAAY,MAAM,YAAY,GAAG,OAAO,CAAC,uBAAuB,CAAC,GAAG,CAAC,GAAG,CAAC;AACzE,YAAY,IAAI,YAAY,KAAK,IAAI,IAAI,YAAY,KAAK,SAAS,EAAE;AACrE,gBAAgB,OAAO,CAAC,eAAe,CAAC,eAAe,CAAC;AACxD,YAAY;AACZ,iBAAiB;AACjB,gBAAgB,OAAO,CAAC,YAAY,CAAC,eAAe,EAAE,YAAY,CAAC;AACnE,YAAY;AACZ,QAAQ;AACR,QAAQ,IAAI,OAAO,CAAC,wBAAwB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;AACvD,YAAY,OAAO,CAAC,KAAK,CAAC,aAAa,GAAG,CAAC,EAAE,GAAG,OAAO,CAAC,wBAAwB,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,EAAE;AAC9H,QAAQ;AACR,IAAI;AACJ,IAAI,OAAO,CAAC,mBAAmB,CAAC,KAAK,EAAE;AACvC,IAAI,OAAO,CAAC,uBAAuB,CAAC,KAAK,EAAE;AAC3C,IAAI,OAAO,CAAC,wBAAwB,CAAC,KAAK,EAAE;AAC5C;;ACjEA,SAAS,WAAW,CAAC,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,OAAO,EAAE;AACvD,IAAI,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,GAAG,EAAE,SAAS,EAAE,OAAO,CAAC;AAC1D;AACA,SAAS,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE;AACxC,IAAI,OAAO,UAAU,CAAC,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;AACjD;AACA,SAAS,qBAAqB,CAAC,KAAK,EAAE;AACtC,IAAI,OAAO,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC;AACzC;AACA,SAAS,iBAAiB,CAAC,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE;AACvD,IAAI,IAAI;AACR,QAAQ,KAAK,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,KAAK;AACxD,YAAY,OAAO,CAAC,OAAO,CAAC,sBAAsB,CAAC,SAAS,EAAE,KAAK,CAAC;AACpE,QAAQ,CAAC,CAAC;AACV,IAAI;AACJ,IAAI,OAAO,KAAK,EAAE;AAClB,QAAQ,OAAO,CAAC,OAAO,CAAC,sBAAsB,CAAC,SAAS,EAAE,KAAK,CAAC;AAChE,IAAI;AACJ;AACA,SAAS,kBAAkB,CAAC,KAAK,EAAE;AACnC,IAAI,OAAO,KAAK,CAAC,MAAM,CAAC,KAAK;AAC7B;AACA,SAAS,oBAAoB,CAAC,KAAK,EAAE;AACrC,IAAI,OAAO,KAAK,CAAC,MAAM,CAAC,OAAO;AAC/B;AACA,SAAS,cAAc,CAAC,KAAK,EAAE;AAC/B,IAAI,IAAI,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,OAAO;AACjE,QAAQ,OAAO,KAAK;AACpB,IAAI,OAAO,IAAI;AACf;AACA,SAAS,gBAAgB,CAAC,OAAO,EAAE;AACnC,IAAI,WAAW,CAAC,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM;AACtD,QAAQ,OAAO,CAAC,OAAO,CAAC,eAAe,EAAE;AACzC,IAAI,CAAC,CAAC;AACN,IAAI,WAAW,CAAC,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,CAAC,KAAK,KAAK;AAC5D,QAAQ,IAAI,EAAE;AACd,QAAQ,MAAM,IAAI,GAAG,CAAC,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC;AACzF,QAAQ,IAAI,IAAI,EAAE;AAClB,YAAY,iBAAiB,CAAC,OAAO,EAAE,eAAe,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;AAClG,QAAQ;AACR,IAAI,CAAC,CAAC;AACN;AACA,SAAS,qBAAqB,CAAC,OAAO,EAAE;AACxC,IAAI,wBAAwB,CAAC,OAAO,EAAE,sBAAsB,EAAE,CAAC,KAAK,KAAK;AACzE,QAAQ,OAAO,CAAC,OAAO,CAAC,oBAAoB,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;AACnE,IAAI,CAAC,CAAC;AACN,IAAI,wBAAwB,CAAC,OAAO,EAAE,oBAAoB,EAAE,CAAC,KAAK,KAAK;AACvE,QAAQ,OAAO,CAAC,OAAO,CAAC,oBAAoB,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;AACjE,IAAI,CAAC,CAAC;AACN,IAAI,wBAAwB,CAAC,OAAO,EAAE,sBAAsB,EAAE,CAAC,KAAK,KAAK;AACzE,QAAQ,OAAO,CAAC,OAAO,CAAC,oBAAoB,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;AACnE,IAAI,CAAC,CAAC;AACN,IAAI,wBAAwB,CAAC,OAAO,EAAE,gBAAgB,EAAE,CAAC,KAAK,KAAK;AACnE,QAAQ,OAAO,CAAC,OAAO,CAAC,oBAAoB,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;AAC7D,IAAI,CAAC,CAAC;AACN,IAAI,wBAAwB,CAAC,OAAO,EAAE,mBAAmB,EAAE,CAAC,KAAK,KAAK;AACtE,QAAQ,OAAO,CAAC,OAAO,CAAC,oBAAoB,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;AAChE,IAAI,CAAC,CAAC;AACN,IAAI,gBAAgB,CAAC,OAAO,EAAE,qBAAqB,EAAE,CAAC,KAAK,KAAK;AAChE,QAAQ,OAAO,CAAC,OAAO,CAAC,oBAAoB,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;AAClE,IAAI,CAAC,CAAC;AACN,IAAI,gBAAgB,CAAC,OAAO,EAAE,iBAAiB,EAAE,CAAC,KAAK,KAAK;AAC5D,QAAQ,OAAO,CAAC,OAAO,CAAC,oBAAoB,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;AAC9D,IAAI,CAAC,CAAC;AACN,IAAI,gBAAgB,CAAC,OAAO,EAAE,mBAAmB,EAAE,CAAC,KAAK,KAAK;AAC9D,QAAQ,OAAO,CAAC,OAAO,CAAC,oBAAoB,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;AAChE,IAAI,CAAC,CAAC;AACN,IAAI,WAAW,CAAC,OAAO,EAAE,yBAAyB,EAAE,OAAO,EAAE,MAAM;AACnE,QAAQ,OAAO,CAAC,OAAO,CAAC,kBAAkB,EAAE;AAC5C,IAAI,CAAC,CAAC;AACN,IAAI,WAAW,CAAC,OAAO,EAAE,yBAAyB,EAAE,OAAO,EAAE,MAAM;AACnE,QAAQ,OAAO,CAAC,OAAO,CAAC,sBAAsB,EAAE;AAChD,IAAI,CAAC,CAAC;AACN,IAAI,WAAW,CAAC,OAAO,EAAE,yBAAyB,EAAE,OAAO,EAAE,MAAM;AACnE,QAAQ,OAAO,CAAC,OAAO,CAAC,iBAAiB,EAAE;AAC3C,IAAI,CAAC,CAAC;AACN;AACA,SAAS,mBAAmB,CAAC,OAAO,EAAE;AACtC,IAAI,WAAW,CAAC,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM;AACxD,QAAQ,iBAAiB,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;AAC5E,IAAI,CAAC,CAAC;AACN,IAAI,WAAW,CAAC,OAAO,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM;AACzD,QAAQ,iBAAiB,CAAC,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;AAC9E,IAAI,CAAC,CAAC;AACN,IAAI,WAAW,CAAC,OAAO,EAAE,2BAA2B,EAAE,OAAO,EAAE,MAAM;AACrE,QAAQ,iBAAiB,CAAC,OAAO,EAAE,qBAAqB,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,mBAAmB,EAAE,CAAC;AACtG,IAAI,CAAC,CAAC;AACN,IAAI,WAAW,CAAC,OAAO,EAAE,sBAAsB,EAAE,OAAO,EAAE,MAAM;AAChE,QAAQ,iBAAiB,CAAC,OAAO,EAAE,gBAAgB,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC;AAC5F,IAAI,CAAC,CAAC;AACN,IAAI,WAAW,CAAC,OAAO,EAAE,oBAAoB,EAAE,OAAO,EAAE,MAAM;AAC9D,QAAQ,iBAAiB,CAAC,OAAO,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;AACxF,IAAI,CAAC,CAAC;AACN,IAAI,WAAW,CAAC,OAAO,EAAE,kBAAkB,EAAE,OAAO,EAAE,MAAM;AAC5D,QAAQ,MAAM,UAAU,GAAG,gBAAgB,CAAC,OAAO,EAAE,wBAAwB,CAAC;AAC9E,QAAQ,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,OAAO,CAAC,YAAY,GAAG,UAAU;AACjF,QAAQ,iBAAiB,CAAC,OAAO,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AACxF,IAAI,CAAC,CAAC;AACN,IAAI,WAAW,CAAC,OAAO,EAAE,mBAAmB,EAAE,OAAO,EAAE,MAAM;AAC7D,QAAQ,MAAM,UAAU,GAAG,gBAAgB,CAAC,OAAO,EAAE,yBAAyB,CAAC;AAC/E,QAAQ,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,OAAO,CAAC,YAAY,GAAG,UAAU;AACjF,QAAQ,iBAAiB,CAAC,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AAC1F,IAAI,CAAC,CAAC;AACN;AACA,SAAS,cAAc,CAAC,OAAO,EAAE;AACjC,IAAI,WAAW,CAAC,OAAO,EAAE,kBAAkB,EAAE,OAAO,EAAE,MAAM;AAC5D,QAAQ,OAAO,CAAC,OAAO,CAAC,UAAU,EAAE;AACpC,IAAI,CAAC,CAAC;AACN,IAAI,WAAW,CAAC,OAAO,EAAE,0BAA0B,EAAE,OAAO,EAAE,MAAM;AACpE,QAAQ,OAAO,CAAC,OAAO,CAAC,kBAAkB,EAAE;AAC5C,IAAI,CAAC,CAAC;AACN,IAAI,WAAW,CAAC,OAAO,EAAE,sBAAsB,EAAE,OAAO,EAAE,MAAM;AAChE,QAAQ,OAAO,CAAC,OAAO,CAAC,cAAc,EAAE;AACxC,IAAI,CAAC,CAAC;AACN,IAAI,WAAW,CAAC,OAAO,EAAE,kBAAkB,EAAE,OAAO,EAAE,MAAM;AAC5D,QAAQ,iBAAiB,CAAC,OAAO,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;AACpF,IAAI,CAAC,CAAC;AACN;AACA,SAAS,oBAAoB,CAAC,OAAO,EAAE;AACvC,IAAI,WAAW,CAAC,OAAO,EAAE,wBAAwB,EAAE,OAAO,EAAE,MAAM;AAClE,QAAQ,iBAAiB,CAAC,OAAO,EAAE,kBAAkB,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,gBAAgB,EAAE,CAAC;AAChG,IAAI,CAAC,CAAC;AACN,IAAI,WAAW,CAAC,OAAO,EAAE,qBAAqB,EAAE,OAAO,EAAE,MAAM;AAC/D,QAAQ,OAAO,CAAC,OAAO,CAAC,aAAa,EAAE;AACvC,IAAI,CAAC,CAAC;AACN,IAAI,WAAW,CAAC,OAAO,EAAE,oBAAoB,EAAE,OAAO,EAAE,MAAM;AAC9D,QAAQ,OAAO,CAAC,OAAO,CAAC,YAAY,EAAE;AACtC,IAAI,CAAC,CAAC;AACN,IAAI,WAAW,CAAC,OAAO,EAAE,qBAAqB,EAAE,OAAO,EAAE,MAAM;AAC/D,QAAQ,OAAO,CAAC,OAAO,CAAC,aAAa,EAAE;AACvC,IAAI,CAAC,CAAC;AACN,IAAI,WAAW,CAAC,OAAO,EAAE,oBAAoB,EAAE,OAAO,EAAE,MAAM;AAC9D,QAAQ,OAAO,CAAC,OAAO,CAAC,YAAY,EAAE;AACtC,IAAI,CAAC,CAAC;AACN,IAAI,WAAW,CAAC,OAAO,EAAE,6BAA6B,EAAE,OAAO,EAAE,MAAM;AACvE,QAAQ,OAAO,CAAC,OAAO,CAAC,qBAAqB,EAAE;AAC/C,IAAI,CAAC,CAAC;AACN,IAAI,WAAW,CAAC,OAAO,EAAE,sBAAsB,EAAE,OAAO,EAAE,MAAM;AAChE,QAAQ,MAAM,KAAK,GAAG,cAAc,CAAC,OAAO,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC;AAC9E,QAAQ,IAAI,CAAC,KAAK;AAClB,YAAY;AACZ,QAAQ,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC;AAC7C,IAAI,CAAC,CAAC;AACN,IAAI,WAAW,CAAC,OAAO,EAAE,qBAAqB,EAAE,OAAO,EAAE,MAAM;AAC/D,QAAQ,OAAO,CAAC,OAAO,CAAC,aAAa,EAAE;AACvC,IAAI,CAAC,CAAC;AACN,IAAI,WAAW,CAAC,OAAO,EAAE,gCAAgC,EAAE,OAAO,EAAE,MAAM;AAC1E,QAAQ,OAAO,CAAC,OAAO,CAAC,wBAAwB,EAAE;AAClD,IAAI,CAAC,CAAC;AACN,IAAI,WAAW,CAAC,OAAO,EAAE,4BAA4B,EAAE,OAAO,EAAE,MAAM;AACtE,QAAQ,OAAO,CAAC,OAAO,CAAC,oBAAoB,EAAE;AAC9C,IAAI,CAAC,CAAC;AACN,IAAI,WAAW,CAAC,OAAO,EAAE,4BAA4B,EAAE,OAAO,EAAE,MAAM;AACtE,QAAQ,OAAO,CAAC,OAAO,CAAC,oBAAoB,EAAE;AAC9C,IAAI,CAAC,CAAC;AACN,IAAI,WAAW,CAAC,OAAO,EAAE,kCAAkC,EAAE,OAAO,EAAE,MAAM;AAC5E,QAAQ,OAAO,CAAC,OAAO,CAAC,0BAA0B,EAAE;AACpD,IAAI,CAAC,CAAC;AACN,IAAI,WAAW,CAAC,OAAO,EAAE,kCAAkC,EAAE,OAAO,EAAE,MAAM;AAC5E,QAAQ,OAAO,CAAC,OAAO,CAAC,0BAA0B,EAAE;AACpD,IAAI,CAAC,CAAC;AACN,IAAI,WAAW,CAAC,OAAO,EAAE,kCAAkC,EAAE,OAAO,EAAE,MAAM;AAC5E,QAAQ,OAAO,CAAC,OAAO,CAAC,0BAA0B,EAAE;AACpD,IAAI,CAAC,CAAC;AACN,IAAI,WAAW,CAAC,OAAO,EAAE,gCAAgC,EAAE,OAAO,EAAE,MAAM;AAC1E,QAAQ,OAAO,CAAC,OAAO,CAAC,wBAAwB,EAAE;AAClD,IAAI,CAAC,CAAC;AACN,IAAI,eAAe,CAAC,OAAO,EAAE,gBAAgB,EAAE,CAAC,KAAK,KAAK;AAC1D,QAAQ,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC;AAC3C,IAAI,CAAC,CAAC;AACN,IAAI,eAAe,CAAC,OAAO,EAAE,mBAAmB,EAAE,CAAC,KAAK,KAAK;AAC7D,QAAQ,OAAO,CAAC,OAAO,CAAC,eAAe,CAAC,KAAK,CAAC;AAC9C,IAAI,CAAC,CAAC;AACN,IAAI,eAAe,CAAC,OAAO,EAAE,gBAAgB,EAAE,CAAC,KAAK,KAAK;AAC1D,QAAQ,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC;AAC3C,IAAI,CAAC,CAAC;AACN,IAAI,eAAe,CAAC,OAAO,EAAE,oBAAoB,EAAE,CAAC,KAAK,KAAK;AAC9D,QAAQ,OAAO,CAAC,OAAO,CAAC,gBAAgB,CAAC,KAAK,CAAC;AAC/C,IAAI,CAAC,CAAC;AACN,IAAI,WAAW,CAAC,OAAO,EAAE,wBAAwB,EAAE,OAAO,EAAE,MAAM;AAClE,QAAQ,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,OAAO,CAAC;AAC/C,IAAI,CAAC,CAAC;AACN,IAAI,WAAW,CAAC,OAAO,EAAE,wBAAwB,EAAE,OAAO,EAAE,MAAM;AAClE,QAAQ,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,OAAO,CAAC;AAC/C,IAAI,CAAC,CAAC;AACN,IAAI,eAAe,CAAC,OAAO,EAAE,sBAAsB,EAAE,CAAC,KAAK,KAAK;AAChE,QAAQ,OAAO,CAAC,OAAO,CAAC,kBAAkB,CAAC,KAAK,CAAC;AACjD,IAAI,CAAC,CAAC;AACN,IAAI,eAAe,CAAC,OAAO,EAAE,iBAAiB,EAAE,CAAC,KAAK,KAAK;AAC3D,QAAQ,MAAM,KAAK,GAAG,cAAc,CAAC,KAAK,CAAC;AAC3C,QAAQ,IAAI,CAAC,KAAK;AAClB,YAAY;AACZ,QAAQ,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,KAAK,EAAE,CAAC;AACjD,IAAI,CAAC,CAAC;AACN,IAAI,eAAe,CAAC,OAAO,EAAE,kBAAkB,EAAE,CAAC,KAAK,KAAK;AAC5D,QAAQ,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;AACzD,IAAI,CAAC,CAAC;AACN,IAAI,eAAe,CAAC,OAAO,EAAE,uBAAuB,EAAE,CAAC,KAAK,KAAK;AACjE,QAAQ,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC;AAC9D,IAAI,CAAC,CAAC;AACN,IAAI,eAAe,CAAC,OAAO,EAAE,gBAAgB,EAAE,CAAC,KAAK,KAAK;AAC1D,QAAQ,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;AACvD,IAAI,CAAC,CAAC;AACN;AACA,SAAS,iBAAiB,CAAC,OAAO,EAAE;AACpC,IAAI,WAAW,CAAC,OAAO,EAAE,qBAAqB,EAAE,OAAO,EAAE,MAAM;AAC/D,QAAQ,iBAAiB,CAAC,OAAO,EAAE,eAAe,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC;AAC1F,IAAI,CAAC,CAAC;AACN,IAAI,WAAW,CAAC,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM;AACtD,QAAQ,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;AACxE,IAAI,CAAC,CAAC;AACN,IAAI,WAAW,CAAC,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM;AACtD,QAAQ,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;AACxE,IAAI,CAAC,CAAC;AACN;AACA,SAAS,cAAc,CAAC,OAAO,EAAE;AACjC,IAAI,WAAW,CAAC,OAAO,EAAE,qBAAqB,EAAE,OAAO,EAAE,MAAM;AAC/D,QAAQ,OAAO,CAAC,OAAO,CAAC,aAAa,EAAE;AACvC,IAAI,CAAC,CAAC;AACN,IAAI,WAAW,CAAC,OAAO,EAAE,uBAAuB,EAAE,QAAQ,EAAE,MAAM;AAClE,QAAQ,OAAO,CAAC,OAAO,CAAC,6BAA6B,EAAE;AACvD,IAAI,CAAC,CAAC;AACN,IAAI,WAAW,CAAC,OAAO,EAAE,iBAAiB,EAAE,OAAO,EAAE,MAAM;AAC3D,QAAQ,KAAK,OAAO,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,KAAK;AAC1D,YAAY,OAAO,CAAC,OAAO,CAAC,oBAAoB,CAAC,KAAK,CAAC;AACvD,QAAQ,CAAC,CAAC;AACV,IAAI,CAAC,CAAC;AACN,IAAI,WAAW,CAAC,OAAO,EAAE,kBAAkB,EAAE,OAAO,EAAE,MAAM;AAC5D,QAAQ,OAAO,CAAC,OAAO,CAAC,UAAU,EAAE;AACpC,IAAI,CAAC,CAAC;AACN;AACA,SAAS,gBAAgB,CAAC,OAAO,EAAE;AACnC,IAAI,WAAW,CAAC,OAAO,EAAE,uBAAuB,EAAE,OAAO,EAAE,MAAM;AACjE,QAAQ,OAAO,CAAC,OAAO,CAAC,eAAe,EAAE;AACzC,IAAI,CAAC,CAAC;AACN,IAAI,WAAW,CAAC,OAAO,EAAE,sBAAsB,EAAE,OAAO,EAAE,MAAM;AAChE,QAAQ,OAAO,CAAC,OAAO,CAAC,cAAc,EAAE;AACxC,IAAI,CAAC,CAAC;AACN,IAAI,eAAe,CAAC,OAAO,EAAE,sBAAsB,EAAE,CAAC,KAAK,KAAK;AAChE,QAAQ,OAAO,CAAC,OAAO,CAAC,kBAAkB,CAAC,KAAK,CAAC;AACjD,IAAI,CAAC,CAAC;AACN,IAAI,eAAe,CAAC,OAAO,EAAE,sBAAsB,EAAE,CAAC,KAAK,KAAK;AAChE,QAAQ,OAAO,CAAC,OAAO,CAAC,kBAAkB,CAAC,KAAK,CAAC;AACjD,IAAI,CAAC,CAAC;AACN;AACA,SAAS,eAAe,CAAC,OAAO,EAAE,GAAG,EAAE,UAAU,EAAE;AACnD,IAAI,IAAI,gBAAgB,GAAG,IAAI;AAC/B,IAAI,MAAM,OAAO,GAAG,CAAC,KAAK,KAAK;AAC/B,QAAQ,MAAM,KAAK,GAAG,kBAAkB,CAAC,KAAK,CAAC;AAC/C,QAAQ,IAAI,KAAK,KAAK,gBAAgB;AACtC,YAAY;AACZ,QAAQ,gBAAgB,GAAG,KAAK;AAChC,QAAQ,UAAU,CAAC,KAAK,CAAC;AACzB,IAAI,CAAC;AACL,IAAI,WAAW,CAAC,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,CAAC;AAC/C,IAAI,WAAW,CAAC,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,OAAO,CAAC;AAChD;AACA,SAAS,wBAAwB,CAAC,OAAO,EAAE,GAAG,EAAE,UAAU,EAAE;AAC5D,IAAI,IAAI,gBAAgB,GAAG,IAAI;AAC/B,IAAI,IAAI,YAAY,GAAG,CAAC;AACxB,IAAI,IAAI,eAAe,GAAG,KAAK;AAC/B,IAAI,IAAI,SAAS,GAAG,KAAK;AACzB,IAAI,MAAM,cAAc,GAAG,CAAC,KAAK,KAAK;AACtC,QAAQ,IAAI,gBAAgB,KAAK,IAAI,IAAI,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,gBAAgB,CAAC;AAC3E,YAAY;AACZ,QAAQ,gBAAgB,GAAG,KAAK;AAChC,QAAQ,UAAU,CAAC,KAAK,CAAC;AACzB,IAAI,CAAC;AACL,IAAI,MAAM,KAAK,GAAG,MAAM;AACxB,QAAQ,SAAS,GAAG,KAAK;AACzB,QAAQ,IAAI,CAAC,eAAe;AAC5B,YAAY;AACZ,QAAQ,MAAM,KAAK,GAAG,YAAY;AAClC,QAAQ,eAAe,GAAG,KAAK;AAC/B,QAAQ,cAAc,CAAC,KAAK,CAAC;AAC7B,IAAI,CAAC;AACL,IAAI,MAAM,aAAa,GAAG,MAAM;AAChC,QAAQ,IAAI,SAAS;AACrB,YAAY;AACZ,QAAQ,SAAS,GAAG,IAAI;AACxB,QAAQ,IAAI,OAAO,UAAU,CAAC,qBAAqB,KAAK,UAAU,EAAE;AACpE,YAAY,UAAU,CAAC,qBAAqB,CAAC,MAAM,KAAK,EAAE,CAAC;AAC3D,YAAY;AACZ,QAAQ;AACR,QAAQ,KAAK,EAAE;AACf,IAAI,CAAC;AACL,IAAI,MAAM,YAAY,GAAG,CAAC,KAAK,KAAK;AACpC,QAAQ,YAAY,GAAG,qBAAqB,CAAC,KAAK,CAAC;AACnD,QAAQ,eAAe,GAAG,IAAI;AAC9B,QAAQ,aAAa,EAAE;AACvB,IAAI,CAAC;AACL,IAAI,MAAM,aAAa,GAAG,CAAC,KAAK,KAAK;AACrC,QAAQ,YAAY,GAAG,qBAAqB,CAAC,KAAK,CAAC;AACnD,QAAQ,eAAe,GAAG,IAAI;AAC9B,QAAQ,KAAK,EAAE;AACf,IAAI,CAAC;AACL,IAAI,WAAW,CAAC,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,YAAY,CAAC;AACpD,IAAI,WAAW,CAAC,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,aAAa,CAAC;AACtD;AACA,SAAS,eAAe,CAAC,OAAO,EAAE,GAAG,EAAE,UAAU,EAAE;AACnD,IAAI,IAAI,gBAAgB,GAAG,IAAI;AAC/B,IAAI,MAAM,OAAO,GAAG,CAAC,KAAK,KAAK;AAC/B,QAAQ,MAAM,KAAK,GAAG,qBAAqB,CAAC,KAAK,CAAC;AAClD,QAAQ,IAAI,gBAAgB,KAAK,IAAI,IAAI,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,gBAAgB,CAAC;AAC3E,YAAY;AACZ,QAAQ,gBAAgB,GAAG,KAAK;AAChC,QAAQ,UAAU,CAAC,KAAK,CAAC;AACzB,IAAI,CAAC;AACL,IAAI,WAAW,CAAC,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,CAAC;AAC/C,IAAI,WAAW,CAAC,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,OAAO,CAAC;AAChD;AACA,SAAS,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE,UAAU,EAAE;AACpD,IAAI,IAAI,gBAAgB,GAAG,IAAI;AAC/B,IAAI,MAAM,OAAO,GAAG,CAAC,KAAK,KAAK;AAC/B,QAAQ,MAAM,KAAK,GAAG,oBAAoB,CAAC,KAAK,CAAC;AACjD,QAAQ,IAAI,gBAAgB,KAAK,IAAI,IAAI,KAAK,KAAK,gBAAgB;AACnE,YAAY;AACZ,QAAQ,gBAAgB,GAAG,KAAK;AAChC,QAAQ,UAAU,CAAC,KAAK,CAAC;AACzB,IAAI,CAAC;AACL,IAAI,WAAW,CAAC,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,CAAC;AAC/C,IAAI,WAAW,CAAC,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,OAAO,CAAC;AAChD;AACO,SAAS,mBAAmB,CAAC,OAAO,EAAE;AAC7C,IAAI,gBAAgB,CAAC,OAAO,CAAC;AAC7B,IAAI,qBAAqB,CAAC,OAAO,CAAC;AAClC,IAAI,mBAAmB,CAAC,OAAO,CAAC;AAChC,IAAI,cAAc,CAAC,OAAO,CAAC;AAC3B,IAAI,oBAAoB,CAAC,OAAO,CAAC;AACjC,IAAI,iBAAiB,CAAC,OAAO,CAAC;AAC9B,IAAI,cAAc,CAAC,OAAO,CAAC;AAC3B,IAAI,gBAAgB,CAAC,OAAO,CAAC;AAC7B;;AC3UA,SAAS,kBAAkB,CAAC,KAAK,EAAE;AACnC,IAAI,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,OAAO,CAAC,GAAG,OAAO;AACzD,IAAI,OAAO,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,OAAO,GAAG,CAAC;AACjD;AACO,SAAS,2BAA2B,CAAC,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE;AAC1E,IAAI,OAAO;AACX,QAAQ,sBAAsB,EAAE,CAAC,SAAS,EAAE,KAAK,KAAK;AACtD,YAAY,IAAI,CAAC,sBAAsB,CAAC,SAAS,EAAE,KAAK,CAAC;AACzD,QAAQ,CAAC;AACT,QAAQ,eAAe,EAAE,MAAM;AAC/B,YAAY,IAAI,EAAE;AAClB,YAAY,CAAC,EAAE,GAAG,iBAAiB,CAAC,OAAO,CAAC,QAAQ,CAAC,UAAU,EAAE,aAAa,EAAE,cAAc,CAAC,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,MAAM,GAAG,EAAE,CAAC,KAAK,EAAE;AAChJ,QAAQ,CAAC;AACT,QAAQ,aAAa,EAAE,CAAC,IAAI,KAAK,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;AACzD,QAAQ,MAAM,EAAE,MAAM,IAAI,CAAC,UAAU,CAAC,kBAAkB,CAAC,OAAO,CAAC,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AAC3G,QAAQ,OAAO,EAAE,MAAM,IAAI,CAAC,UAAU,CAAC,kBAAkB,CAAC,OAAO,CAAC,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AAC5G,QAAQ,mBAAmB,EAAE,MAAM,IAAI,CAAC,mBAAmB,EAAE;AAC7D,QAAQ,cAAc,EAAE,MAAM,IAAI,CAAC,cAAc,EAAE;AACnD,QAAQ,YAAY,EAAE,MAAM,IAAI,CAAC,YAAY,EAAE;AAC/C,QAAQ,UAAU,EAAE,CAAC,OAAO,KAAK,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,eAAe,GAAG,OAAO,CAAC;AACpF,QAAQ,WAAW,EAAE,CAAC,OAAO,KAAK,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,eAAe,GAAG,OAAO,CAAC;AACrF,QAAQ,oBAAoB,EAAE,CAAC,MAAM,KAAK;AAC1C,YAAY,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC;AAC7C,QAAQ,CAAC;AACT,QAAQ,sBAAsB,EAAE,MAAM;AACtC,YAAY,IAAI,CAAC,sBAAsB,EAAE;AACzC,QAAQ,CAAC;AACT,QAAQ,iBAAiB,EAAE,MAAM;AACjC,YAAY,IAAI,CAAC,iBAAiB,EAAE;AACpC,QAAQ,CAAC;AACT,QAAQ,kBAAkB,EAAE,MAAM;AAClC,YAAY,IAAI,CAAC,kBAAkB,EAAE;AACrC,QAAQ,CAAC;AACT,QAAQ,UAAU,EAAE,MAAM;AAC1B,YAAY,IAAI,CAAC,UAAU,EAAE;AAC7B,QAAQ,CAAC;AACT,QAAQ,kBAAkB,EAAE,MAAM;AAClC,YAAY,IAAI,CAAC,kBAAkB,EAAE;AACrC,QAAQ,CAAC;AACT,QAAQ,cAAc,EAAE,MAAM;AAC9B,YAAY,IAAI,CAAC,cAAc,EAAE;AACjC,QAAQ,CAAC;AACT,QAAQ,UAAU,EAAE,MAAM,IAAI,CAAC,UAAU,EAAE;AAC3C,QAAQ,gBAAgB,EAAE,MAAM,IAAI,CAAC,gBAAgB,EAAE;AACvD,QAAQ,aAAa,EAAE,MAAM;AAC7B,YAAY,IAAI,CAAC,aAAa,EAAE;AAChC,QAAQ,CAAC;AACT,QAAQ,YAAY,EAAE,MAAM;AAC5B,YAAY,IAAI,CAAC,YAAY,EAAE;AAC/B,QAAQ,CAAC;AACT,QAAQ,aAAa,EAAE,MAAM;AAC7B,YAAY,IAAI,CAAC,aAAa,EAAE;AAChC,QAAQ,CAAC;AACT,QAAQ,YAAY,EAAE,MAAM;AAC5B,YAAY,IAAI,CAAC,YAAY,EAAE;AAC/B,QAAQ,CAAC;AACT,QAAQ,qBAAqB,EAAE,MAAM;AACrC,YAAY,IAAI,CAAC,qBAAqB,EAAE;AACxC,QAAQ,CAAC;AACT,QAAQ,cAAc,EAAE,CAAC,KAAK,KAAK;AACnC,YAAY,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC;AACtC,QAAQ,CAAC;AACT,QAAQ,aAAa,EAAE,MAAM;AAC7B,YAAY,IAAI,CAAC,aAAa,EAAE;AAChC,QAAQ,CAAC;AACT,QAAQ,wBAAwB,EAAE,MAAM;AACxC,YAAY,IAAI,CAAC,wBAAwB,EAAE;AAC3C,QAAQ,CAAC;AACT,QAAQ,oBAAoB,EAAE,MAAM;AACpC,YAAY,IAAI,CAAC,oBAAoB,EAAE;AACvC,QAAQ,CAAC;AACT,QAAQ,oBAAoB,EAAE,MAAM;AACpC,YAAY,IAAI,CAAC,oBAAoB,EAAE;AACvC,QAAQ,CAAC;AACT,QAAQ,0BAA0B,EAAE,MAAM;AAC1C,YAAY,IAAI,CAAC,0BAA0B,EAAE;AAC7C,QAAQ,CAAC;AACT,QAAQ,0BAA0B,EAAE,MAAM;AAC1C,YAAY,IAAI,CAAC,0BAA0B,EAAE;AAC7C,QAAQ,CAAC;AACT,QAAQ,0BAA0B,EAAE,MAAM;AAC1C,YAAY,IAAI,CAAC,0BAA0B,EAAE;AAC7C,QAAQ,CAAC;AACT,QAAQ,wBAAwB,EAAE,MAAM;AACxC,YAAY,IAAI,CAAC,wBAAwB,EAAE;AAC3C,QAAQ,CAAC;AACT,QAAQ,aAAa,EAAE,MAAM,IAAI,CAAC,aAAa,EAAE;AACjD,QAAQ,IAAI,EAAE,MAAM,IAAI,CAAC,IAAI,EAAE;AAC/B,QAAQ,IAAI,EAAE,MAAM,IAAI,CAAC,IAAI,EAAE;AAC/B,QAAQ,aAAa,EAAE,MAAM;AAC7B,YAAY,IAAI,CAAC,aAAa,CAAC,EAAE,WAAW,EAAE,0BAA0B,CAAC,OAAO,EAAE,aAAa,CAAC,EAAE,CAAC;AACnG,QAAQ,CAAC;AACT,QAAQ,6BAA6B,EAAE,MAAM;AAC7C,YAAY,IAAI,OAAO,CAAC,WAAW,EAAE;AACrC,gBAAgB,IAAI,CAAC,kBAAkB,CAAC,0BAA0B,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;AAC3F,YAAY;AACZ,QAAQ,CAAC;AACT,QAAQ,SAAS,EAAE,MAAM,IAAI,CAAC,SAAS,EAAE;AACzC,QAAQ,oBAAoB,EAAE,CAAC,KAAK,KAAK;AACzC,YAAY,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC;AAC5C,QAAQ,CAAC;AACT,QAAQ,UAAU,EAAE,MAAM;AAC1B,YAAY,IAAI,CAAC,UAAU,EAAE;AAC7B,QAAQ,CAAC;AACT,QAAQ,eAAe,EAAE,MAAM;AAC/B,YAAY,IAAI,CAAC,eAAe,EAAE;AAClC,QAAQ,CAAC;AACT,QAAQ,cAAc,EAAE,MAAM;AAC9B,YAAY,IAAI,CAAC,cAAc,EAAE;AACjC,QAAQ,CAAC;AACT,QAAQ,kBAAkB,EAAE,CAAC,IAAI,KAAK;AACtC,YAAY,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC;AACzC,QAAQ,CAAC;AACT,QAAQ,kBAAkB,EAAE,CAAC,IAAI,KAAK;AACtC,YAAY,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC;AACzC,QAAQ,CAAC;AACT,QAAQ,YAAY,EAAE,CAAC,KAAK,KAAK;AACjC,YAAY,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;AACpC,QAAQ,CAAC;AACT,QAAQ,eAAe,EAAE,CAAC,IAAI,KAAK;AACnC,YAAY,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;AACtC,QAAQ,CAAC;AACT,QAAQ,YAAY,EAAE,CAAC,KAAK,KAAK;AACjC,YAAY,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;AACpC,QAAQ,CAAC;AACT,QAAQ,gBAAgB,EAAE,CAAC,IAAI,KAAK;AACpC,YAAY,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC;AACvC,QAAQ,CAAC;AACT,QAAQ,cAAc,EAAE,CAAC,IAAI,KAAK;AAClC,YAAY,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC;AACrC,QAAQ,CAAC;AACT,QAAQ,kBAAkB,EAAE,CAAC,IAAI,KAAK;AACtC,YAAY,IAAI,CAAC,eAAe,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;AACrD,QAAQ,CAAC;AACT,QAAQ,cAAc,EAAE,CAAC,MAAM,KAAK;AACpC,YAAY,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC;AACvC,QAAQ,CAAC;AACT,KAAK;AACL;AACA,SAAS,0BAA0B,CAAC,OAAO,EAAE,aAAa,EAAE;AAC5D,IAAI,MAAM,OAAO,GAAG,iBAAiB,CAAC,OAAO,CAAC,QAAQ,CAAC,qBAAqB,EAAE,aAAa,EAAE,sBAAsB,CAAC;AACpH,IAAI,MAAM,KAAK,GAAG,OAAO,IAAI,OAAO,IAAI,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE;AACnF,IAAI,QAAQ,KAAK,IAAI,MAAM;AAC3B;;AChJA,SAAS,cAAc,CAAC,OAAO,EAAE;AACjC,IAAI,OAAO,CAAC,CAAC,OAAO,IAAI,OAAO,IAAI,OAAO;AAC1C;AACA,SAAS,cAAc,CAAC,OAAO,EAAE;AACjC,IAAI,OAAO,CAAC,CAAC,OAAO,IAAI,SAAS,IAAI,OAAO;AAC5C;AACA,SAAS,iBAAiB,CAAC,OAAO,EAAE;AACpC,IAAI,OAAO,UAAU,IAAI,OAAO,IAAI,OAAO,CAAC,QAAQ;AACpD;AACA,SAAS,YAAY,CAAC,OAAO,EAAE;AAC/B,IAAI,OAAO,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,OAAO,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO;AAChF;AACA,SAAS,cAAc,CAAC,OAAO,EAAE,KAAK,EAAE;AACxC,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC;AAChC,QAAQ;AACR,IAAI,MAAM,aAAa,GAAG,OAAO,CAAC,aAAa;AAC/C,IAAI,IAAI,aAAa,CAAC,aAAa,KAAK,OAAO,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC;AAC9E,QAAQ;AACR,IAAI,IAAI,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC;AAC/D,QAAQ;AACR,IAAI,IAAI,OAAO,CAAC,KAAK,KAAK,KAAK;AAC/B,QAAQ,OAAO,CAAC,KAAK,GAAG,KAAK;AAC7B;AACA,SAAS,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE;AAC5C,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC;AAChC,QAAQ;AACR,IAAI,IAAI,OAAO,CAAC,OAAO,KAAK,OAAO;AACnC,QAAQ,OAAO,CAAC,OAAO,GAAG,OAAO;AACjC;AACA,SAAS,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE;AAC5C,IAAI,IAAI,CAAC,OAAO;AAChB,QAAQ;AACR,IAAI,MAAM,IAAI,GAAG,OAAO,GAAG,MAAM,GAAG,OAAO;AAC3C,IAAI,IAAI,OAAO,CAAC,YAAY,CAAC,cAAc,CAAC,KAAK,IAAI,EAAE;AACvD,QAAQ,OAAO,CAAC,YAAY,CAAC,cAAc,EAAE,IAAI,CAAC;AAClD,IAAI;AACJ;AACA,SAAS,SAAS,CAAC,UAAU,EAAE,GAAG,EAAE,KAAK,EAAE;AAC3C,IAAI,cAAc,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC;AAC1C;AACA,SAAS,WAAW,CAAC,UAAU,EAAE,GAAG,EAAE,OAAO,EAAE;AAC/C,IAAI,gBAAgB,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC;AAC9C;AACA,SAAS,WAAW,CAAC,UAAU,EAAE,GAAG,EAAE,OAAO,EAAE;AAC/C,IAAI,gBAAgB,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC;AAC9C;AACO,SAAS,qBAAqB,CAAC,QAAQ,EAAE,UAAU,EAAE;AAC5D,IAAI,SAAS,CAAC,UAAU,EAAE,sBAAsB,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,GAAG,GAAG,CAAC,CAAC,CAAC;AAClG,IAAI,SAAS,CAAC,UAAU,EAAE,sBAAsB,EAAE,MAAM,CAAC,QAAQ,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;AAChG,IAAI,SAAS,CAAC,UAAU,EAAE,oBAAoB,EAAE,MAAM,CAAC,QAAQ,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;AAC5F,IAAI,SAAS,CAAC,UAAU,EAAE,sBAAsB,EAAE,MAAM,CAAC,QAAQ,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;AAChG,IAAI,SAAS,CAAC,UAAU,EAAE,gBAAgB,EAAE,MAAM,CAAC,QAAQ,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;AACpF,IAAI,SAAS,CAAC,UAAU,EAAE,mBAAmB,EAAE,MAAM,CAAC,QAAQ,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;AAC1F,IAAI,WAAW,CAAC,UAAU,EAAE,qBAAqB,EAAE,QAAQ,CAAC,iBAAiB,CAAC,SAAS,CAAC;AACxF,IAAI,WAAW,CAAC,UAAU,EAAE,iBAAiB,EAAE,QAAQ,CAAC,iBAAiB,CAAC,KAAK,CAAC;AAChF,IAAI,WAAW,CAAC,UAAU,EAAE,mBAAmB,EAAE,QAAQ,CAAC,iBAAiB,CAAC,OAAO,CAAC;AACpF,IAAI,SAAS,CAAC,UAAU,EAAE,sBAAsB,EAAE,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;AAC1F,IAAI,SAAS,CAAC,UAAU,EAAE,sBAAsB,EAAE,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;AAC1F,IAAI,SAAS,CAAC,UAAU,EAAE,gBAAgB,EAAE,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC;AACrE,IAAI,SAAS,CAAC,UAAU,EAAE,mBAAmB,EAAE,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;AACpF,IAAI,SAAS,CAAC,UAAU,EAAE,gBAAgB,EAAE,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC;AACtE,IAAI,SAAS,CAAC,UAAU,EAAE,oBAAoB,EAAE,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;AACtF,IAAI,WAAW,CAAC,UAAU,EAAE,wBAAwB,EAAE,QAAQ,CAAC,WAAW,KAAK,OAAO,CAAC;AACvF,IAAI,WAAW,CAAC,UAAU,EAAE,wBAAwB,EAAE,QAAQ,CAAC,WAAW,KAAK,OAAO,CAAC;AACvF,IAAI,SAAS,CAAC,UAAU,EAAE,sBAAsB,EAAE,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;AAC1F,IAAI,SAAS,CAAC,UAAU,EAAE,iBAAiB,EAAE,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC;AACxE,IAAI,SAAS,CAAC,UAAU,EAAE,kBAAkB,EAAE,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC;AAC1E,IAAI,SAAS,CAAC,UAAU,EAAE,uBAAuB,EAAE,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;AAC5F,IAAI,SAAS,CAAC,UAAU,EAAE,gBAAgB,EAAE,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC;AACtE;;ACpEO,SAAS,wBAAwB,CAAC,MAAM,EAAE;AACjD,IAAI,MAAM,aAAa,GAAG,MAAM,CAAC,gBAAgB,EAAE;AACnD,IAAI,MAAM,gBAAgB,GAAG,MAAM,CAAC,mBAAmB,EAAE;AACzD,IAAI,MAAM,eAAe,GAAG,MAAM,CAAC,kBAAkB,EAAE;AACvD,IAAI,IAAI,eAAe,IAAI,gBAAgB,EAAE;AAC7C,QAAQ,MAAM,CAAC,sBAAsB,CAAC,gBAAgB,EAAE,eAAe,CAAC;AACxE,IAAI;AACJ,IAAI,MAAM,OAAO,GAAG,CAAC,KAAK,KAAK;AAC/B,QAAQ,MAAM,CAAC,mBAAmB,CAAC,KAAK,CAAC;AACzC,IAAI,CAAC;AACL,IAAI,MAAM,CAAC,kBAAkB,CAAC,aAAa,EAAE,OAAO,CAAC;AACrD,IAAI,aAAa,CAAC,gBAAgB,CAAC,SAAS,EAAE,OAAO,CAAC;AACtD;AACA,SAAS,uBAAuB,CAAC,OAAO,EAAE;AAC1C,IAAI,IAAI,EAAE;AACV,IAAI,IAAI,CAAC,OAAO;AAChB,QAAQ,OAAO,KAAK;AACpB,IAAI,MAAM,aAAa,GAAG,OAAO;AACjC,IAAI,MAAM,OAAO,GAAG,MAAM,CAAC,CAAC,EAAE,GAAG,aAAa,CAAC,OAAO,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,WAAW,EAAE;AAC1G,IAAI,QAAQ,OAAO,KAAK,OAAO;AAC/B,QAAQ,OAAO,KAAK,UAAU;AAC9B,QAAQ,OAAO,KAAK,QAAQ;AAC5B,QAAQ,aAAa,CAAC,iBAAiB,KAAK,IAAI;AAChD;AACA,SAAS,oBAAoB,CAAC,IAAI,EAAE;AACpC,IAAI,IAAI,EAAE,EAAE,EAAE;AACd,IAAI,IAAI,aAAa,GAAG,CAAC,EAAE,GAAG,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC,aAAa,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,IAAI;AACnI,IAAI,OAAO,CAAC,EAAE,GAAG,aAAa,KAAK,IAAI,IAAI,aAAa,KAAK,MAAM,GAAG,MAAM,GAAG,aAAa,CAAC,UAAU,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,MAAM,GAAG,EAAE,CAAC,aAAa,EAAE;AAChK,QAAQ,aAAa,GAAG,aAAa,CAAC,UAAU,CAAC,aAAa;AAC9D,IAAI;AACJ,IAAI,OAAO,aAAa;AACxB;AACO,SAAS,uBAAuB,CAAC,gBAAgB,EAAE,KAAK,EAAE;AACjE,IAAI,MAAM,YAAY,GAAG,QAAQ,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC,YAAY,CAAC,KAAK,UAAU,GAAG,KAAK,CAAC,YAAY,EAAE,GAAG,SAAS;AACpJ,IAAI,IAAI,YAAY,KAAK,IAAI,IAAI,YAAY,KAAK,MAAM,GAAG,MAAM,GAAG,YAAY,CAAC,IAAI,CAAC,uBAAuB,CAAC;AAC9G,QAAQ,OAAO,IAAI;AACnB,IAAI,OAAO,uBAAuB,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,CAAC;AAC1E;AACO,SAAS,yBAAyB,CAAC,MAAM,EAAE;AAClD,IAAI,MAAM,YAAY,GAAG,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC,eAAe,EAAE;AACjG,IAAI,OAAO,CAAC,EAAE,YAAY;AAC1B,QAAQ,sBAAsB,CAAC,YAAY,CAAC;AAC5C,QAAQ,YAAY,CAAC,SAAS,KAAK,IAAI,CAAC;AACxC;AACO,SAAS,yBAAyB,CAAC,MAAM,EAAE,KAAK,EAAE;AACzD,IAAI,IAAI,MAAM,CAAC,UAAU,EAAE;AAC3B,QAAQ;AACR,IAAI,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,EAAE;AACrC,IAAI,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,IAAI,KAAK,CAAC,GAAG,KAAK,WAAW,EAAE;AAC7D,QAAQ,IAAI,uBAAuB,CAAC,MAAM,CAAC,mBAAmB,EAAE,EAAE,KAAK,CAAC;AACxE,YAAY,yBAAyB,CAAC,MAAM,CAAC,EAAE;AAC/C,YAAY;AACZ,QAAQ;AACR,QAAQ,KAAK,CAAC,cAAc,EAAE;AAC9B,QAAQ,MAAM,CAAC,oBAAoB,EAAE;AACrC,QAAQ;AACR,IAAI;AACJ,IAAI,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ;AAC9B,QAAQ;AACR,IAAI,IAAI,yBAAyB,CAAC,MAAM,CAAC,IAAI,MAAM,EAAE;AACrD,QAAQ,MAAM,CAAC,yBAAyB,CAAC,KAAK,CAAC;AAC/C,QAAQ,KAAK,CAAC,cAAc,EAAE;AAC9B,QAAQ;AACR,IAAI;AACJ,IAAI,IAAI,MAAM,CAAC,cAAc,EAAE,EAAE;AACjC,QAAQ,KAAK,CAAC,cAAc,EAAE;AAC9B,QAAQ,MAAM,CAAC,YAAY,EAAE;AAC7B,IAAI;AACJ,SAAS,IAAI,MAAM,CAAC,cAAc,EAAE,EAAE;AACtC,QAAQ,KAAK,CAAC,cAAc,EAAE;AAC9B,QAAQ,MAAM,CAAC,YAAY,EAAE;AAC7B,IAAI;AACJ,SAAS,IAAI,MAAM,CAAC,gBAAgB,EAAE,EAAE;AACxC,QAAQ,KAAK,CAAC,cAAc,EAAE;AAC9B,QAAQ,MAAM,CAAC,cAAc,EAAE;AAC/B,IAAI;AACJ,SAAS,IAAI,MAAM,CAAC,cAAc,EAAE,EAAE;AACtC,QAAQ,KAAK,CAAC,cAAc,EAAE;AAC9B,QAAQ,MAAM,CAAC,UAAU,EAAE;AAC3B,IAAI;AACJ;;ACjFA,MAAM,+BAA+B,GAAG,IAAI,GAAG,CAAC;AAChD,IAAI,oBAAoB;AACxB,IAAI,WAAW;AACf,IAAI,YAAY;AAChB,IAAI,WAAW;AACf,CAAC,CAAC;AACF,MAAM,iCAAiC,GAAG,IAAI,GAAG,CAAC;AAClD,IAAI,gBAAgB;AACpB,IAAI,aAAa;AACjB,IAAI,iBAAiB;AACrB,IAAI,mBAAmB;AACvB,IAAI,oBAAoB;AACxB,IAAI,oBAAoB;AACxB,IAAI,WAAW;AACf,CAAC,CAAC;AACF,MAAM,4BAA4B,GAAG;AACrC,IAAI,IAAI,EAAE,+BAA+B;AACzC,IAAI,MAAM,EAAE,iCAAiC;AAC7C,IAAI,IAAI,EAAE,IAAI,GAAG,CAAC;AAClB,QAAQ,cAAc;AACtB,QAAQ,sBAAsB;AAC9B,QAAQ,eAAe;AACvB,QAAQ,iBAAiB;AACzB,QAAQ,cAAc;AACtB,QAAQ,iBAAiB;AACzB,QAAQ,WAAW;AACnB,KAAK,CAAC;AACN,IAAI,IAAI,EAAE,IAAI,GAAG,CAAC;AAClB,QAAQ,cAAc;AACtB,QAAQ,eAAe;AACvB,QAAQ,iBAAiB;AACzB,QAAQ,sBAAsB;AAC9B,QAAQ,cAAc;AACtB,QAAQ,kBAAkB;AAC1B,QAAQ,gBAAgB;AACxB,QAAQ,iBAAiB;AACzB,QAAQ,mBAAmB;AAC3B,QAAQ,oBAAoB;AAC5B,QAAQ,WAAW;AACnB,KAAK,CAAC;AACN,IAAI,KAAK,EAAE,IAAI,GAAG,CAAC;AACnB,QAAQ,gBAAgB;AACxB,QAAQ,eAAe;AACvB,QAAQ,uBAAuB;AAC/B,QAAQ,gBAAgB;AACxB,QAAQ,kBAAkB;AAC1B,QAAQ,WAAW;AACnB,KAAK,CAAC;AACN,CAAC;AACD,MAAM,uBAAuB,GAAG,IAAI,GAAG,CAAC;AACxC,IAAI,MAAM;AACV,IAAI,WAAW;AACf,IAAI,eAAe;AACnB,IAAI,WAAW;AACf,IAAI,eAAe;AACnB,IAAI,mBAAmB;AACvB,IAAI,UAAU;AACd,IAAI,YAAY;AAChB,IAAI,aAAa;AACjB,IAAI,gBAAgB;AACpB,IAAI,cAAc;AAClB,IAAI,qBAAqB;AACzB,IAAI,sBAAsB;AAC1B,IAAI,wBAAwB;AAC5B,IAAI,mBAAmB;AACvB,IAAI,oBAAoB;AACxB,IAAI,YAAY;AAChB,IAAI,oBAAoB;AACxB,IAAI,gBAAgB;AACpB,IAAI,YAAY;AAChB,IAAI,sBAAsB;AAC1B,IAAI,uBAAuB;AAC3B,IAAI,eAAe;AACnB,IAAI,cAAc;AAClB,IAAI,gBAAgB;AACpB,IAAI,eAAe;AACnB,IAAI,gBAAgB;AACpB,IAAI,kBAAkB;AACtB,IAAI,eAAe;AACnB,IAAI,iBAAiB;AACrB,IAAI,cAAc;AAClB,IAAI,iBAAiB;AACrB,IAAI,eAAe;AACnB,IAAI,cAAc;AAClB,IAAI,eAAe;AACnB,IAAI,iBAAiB;AACrB,IAAI,sBAAsB;AAC1B,IAAI,cAAc;AAClB,IAAI,kBAAkB;AACtB,IAAI,gBAAgB;AACpB,IAAI,iBAAiB;AACrB,IAAI,mBAAmB;AACvB,IAAI,oBAAoB;AACxB,IAAI,0BAA0B;AAC9B,IAAI,kBAAkB;AACtB,IAAI,0BAA0B;AAC9B,IAAI,sBAAsB;AAC1B,IAAI,sBAAsB;AAC1B,IAAI,kBAAkB;AACtB,IAAI,4BAA4B;AAChC,IAAI,4BAA4B;AAChC,IAAI,4BAA4B;AAChC,IAAI,0BAA0B;AAC9B,IAAI,eAAe;AACnB,IAAI,oBAAoB;AACxB,IAAI,WAAW;AACf,IAAI,YAAY;AAChB,IAAI,iBAAiB;AACrB,IAAI,gBAAgB;AACpB,IAAI,aAAa;AACjB,IAAI,iBAAiB;AACrB,IAAI,mBAAmB;AACvB,IAAI,oBAAoB;AACxB,IAAI,oBAAoB;AACxB,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,oBAAoB;AACxB,IAAI,sBAAsB;AAC1B,IAAI,oBAAoB;AACxB,IAAI,mBAAmB;AACvB,IAAI,iBAAiB;AACrB,IAAI,eAAe;AACnB,IAAI,SAAS;AACb,CAAC,CAAC;AACK,SAAS,iBAAiB,CAAC,QAAQ,EAAE;AAC5C,IAAI,IAAI,QAAQ,CAAC,cAAc;AAC/B,QAAQ,OAAO,MAAM;AACrB,IAAI,IAAI,QAAQ,CAAC,gBAAgB;AACjC,QAAQ,OAAO,QAAQ;AACvB,IAAI,IAAI,QAAQ,CAAC,cAAc;AAC/B,QAAQ,OAAO,MAAM;AACrB,IAAI,IAAI,QAAQ,CAAC,cAAc;AAC/B,QAAQ,OAAO,MAAM;AACrB,IAAI,IAAI,QAAQ,CAAC,eAAe;AAChC,QAAQ,OAAO,OAAO;AACtB,IAAI,OAAO,IAAI;AACf;AACO,SAAS,gBAAgB,CAAC,QAAQ,EAAE;AAC3C,IAAI,OAAO,iBAAiB,CAAC,QAAQ,CAAC,KAAK,IAAI;AAC/C;AACO,SAAS,+BAA+B,CAAC,IAAI,EAAE;AACtD,IAAI,OAAO,4BAA4B,CAAC,IAAI,CAAC;AAC7C;AACO,SAAS,yBAAyB,CAAC,UAAU,EAAE,aAAa,EAAE;AACrE,IAAI,OAAO,CAAC,UAAU,IAAI,+BAA+B,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,aAAa,CAAC;AACxF;AACO,SAAS,sBAAsB,CAAC,KAAK,EAAE;AAC9C,IAAI,OAAO,KAAK,KAAK,IAAI,IAAI,uBAAuB,CAAC,GAAG,CAAC,KAAK,CAAC;AAC/D;;AClGA,MAAM,wBAAwB,GAAG,MAAM,CAAC,8BAA8B,CAAC;AACvE,MAAM,qCAAqC,GAAG,MAAM,CAAC,sCAAsC,CAAC;AAC5F,SAAS,kBAAkB,CAAC,aAAa,EAAE;AAC3C,IAAI,IAAI,EAAE;AACV,IAAI,OAAO,CAAC,EAAE,GAAG,aAAa,KAAK,IAAI,IAAI,aAAa,KAAK,MAAM,GAAG,MAAM,GAAG,aAAa,CAAC,aAAa,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,IAAI,OAAO,QAAQ,KAAK,WAAW,GAAG,QAAQ,GAAG,IAAI,CAAC;AAChM;AACA,SAAS,qBAAqB,CAAC,MAAM,EAAE;AACvC,IAAI,IAAI,OAAO,MAAM,KAAK,QAAQ;AAClC,QAAQ,OAAO,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;AAC5B,IAAI,IAAI,MAAM,KAAK,IAAI;AACvB,QAAQ,OAAO,MAAM;AACrB,IAAI,IAAI,MAAM,KAAK,SAAS;AAC5B,QAAQ,OAAO,WAAW;AAC1B,IAAI,OAAO,kBAAkB;AAC7B;AACA,SAAS,sBAAsB,CAAC,SAAS,EAAE;AAC3C,IAAI,OAAO,SAAS,GAAG,EAAE,IAAI,EAAE,SAAS,CAAC,UAAU,EAAE,GAAG,EAAE,SAAS,CAAC,SAAS,EAAE,GAAG,IAAI;AACtF;AACA,SAAS,sBAAsB,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE;AAC5D,IAAI,IAAI,CAAC,SAAS,IAAI,CAAC,MAAM;AAC7B,QAAQ;AACR,IAAI,IAAI;AACR,QAAQ,SAAS,CAAC,UAAU,GAAG,MAAM,CAAC,IAAI;AAC1C,QAAQ,SAAS,CAAC,SAAS,GAAG,MAAM,CAAC,GAAG;AACxC,IAAI;AACJ,IAAI,OAAO,KAAK,EAAE;AAClB,QAAQ,aAAa,CAAC,OAAO,EAAE,KAAK,EAAE,wBAAwB,CAAC;AAC/D,IAAI;AACJ;AACA,SAAS,yBAAyB,CAAC,KAAK,EAAE;AAC1C,IAAI,OAAO,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC;AAC9C;AACO,MAAM,WAAW,CAAC;AACzB,IAAI,WAAW,CAAC,qBAAqB,GAAG,EAAE,EAAE,OAAO,GAAG,EAAE,EAAE;AAC1D,QAAQ,IAAI,EAAE;AACd,QAAQ,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,SAAS,EAAE;AAC/C,YAAY,UAAU,EAAE,IAAI;AAC5B,YAAY,YAAY,EAAE,IAAI;AAC9B,YAAY,QAAQ,EAAE,IAAI;AAC1B,YAAY,KAAK,EAAE;AACnB,SAAS,CAAC;AACV,QAAQ,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,gBAAgB,EAAE;AACtD,YAAY,UAAU,EAAE,IAAI;AAC5B,YAAY,YAAY,EAAE,IAAI;AAC9B,YAAY,QAAQ,EAAE,IAAI;AAC1B,YAAY,KAAK,EAAE;AACnB,SAAS,CAAC;AACV,QAAQ,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,qBAAqB,EAAE;AAC3D,YAAY,UAAU,EAAE,IAAI;AAC5B,YAAY,YAAY,EAAE,IAAI;AAC9B,YAAY,QAAQ,EAAE,IAAI;AAC1B,YAAY,KAAK,EAAE;AACnB,SAAS,CAAC;AACV,QAAQ,MAAM,QAAQ,GAAG,YAAY,CAAC,qBAAqB,EAAE,OAAO,CAAC;AACrE,QAAQ,MAAM,eAAe,GAAG,cAAc,CAAC,QAAQ,CAAC,OAAO,CAAC;AAChE,QAAQ,IAAI,CAAC,OAAO,GAAG,IAAI,aAAa,CAAC,CAAC,EAAE,GAAG,QAAQ,CAAC,MAAM,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,EAAE,EAAE,QAAQ,CAAC,cAAc,EAAE,eAAe,CAAC;AAC9I,QAAQ,MAAM,oBAAoB,GAAG,QAAQ,CAAC;AAC9C,aAAa,iBAAiB;AAC9B,QAAQ,IAAI,oBAAoB,KAAK,SAAS,IAAI,CAAC,YAAY,CAAC,oBAAoB,CAAC,EAAE;AACvF,YAAY,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,SAAS,CAAC,CAAC,4CAA4C,CAAC;AAC5G,gBAAgB,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,oBAAoB,CAAC,CAAC,EAAE,CAAC;AAC3D,gBAAgB,uCAAuC,CAAC,EAAE,kDAAkD,CAAC;AAC7G,QAAQ;AACR,QAAQ,MAAM,oBAAoB,GAAG,QAAQ,CAAC;AAC9C,aAAa,iBAAiB;AAC9B,QAAQ,IAAI,oBAAoB;AAChC,YAAY,OAAO,oBAAoB,KAAK,QAAQ;AACpD,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC,oBAAoB,CAAC;AAChD,aAAa,UAAU,IAAI,oBAAoB,IAAI,iBAAiB,IAAI,oBAAoB,CAAC,EAAE;AAC/F,YAAY,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,SAAS,CAAC,0HAA0H,CAAC,EAAE,iEAAiE,CAAC;AAC7P,QAAQ;AACR,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,mBAAmB,EAAE;AACjD,QAAQ,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,cAAc;AACnD,QAAQ,IAAI,CAAC,mBAAmB,GAAG,MAAM,CAAC,mBAAmB;AAC7D,IAAI;AACJ,IAAI,mBAAmB,GAAG;AAC1B,QAAQ,OAAO,yBAAyB,CAAC,IAAI,CAAC,OAAO,EAAE;AACvD,YAAY,UAAU,EAAE;AACxB,gBAAgB,mBAAmB,EAAE,CAAC,SAAS,EAAE,OAAO,KAAK,IAAI,CAAC,mBAAmB,CAAC,SAAS,EAAE,OAAO,CAAC;AACzG,gBAAgB,sBAAsB,EAAE,CAAC,SAAS,EAAE,OAAO,KAAK;AAChE,oBAAoB,IAAI,CAAC,sBAAsB,CAAC,SAAS,EAAE,OAAO,CAAC;AACnE,gBAAgB,CAAC;AACjB,gBAAgB,uBAAuB,EAAE,CAAC,SAAS,KAAK;AACxD,oBAAoB,IAAI,CAAC,uBAAuB,CAAC,SAAS,CAAC;AAC3D,gBAAgB,CAAC;AACjB,gBAAgB,iCAAiC,EAAE,MAAM;AACzD,oBAAoB,IAAI,CAAC,iCAAiC,EAAE;AAC5D,gBAAgB,CAAC;AACjB,gBAAgB,0BAA0B,EAAE,CAAC,OAAO,EAAE,QAAQ,KAAK,IAAI,CAAC,0BAA0B,CAAC,OAAO,EAAE,QAAQ,CAAC;AACrH,gBAAgB,4BAA4B,EAAE,CAAC,KAAK,EAAE,OAAO,GAAG,EAAE,KAAK,IAAI,CAAC,4BAA4B,CAAC,KAAK,EAAE,OAAO,CAAC;AACxH,gBAAgB,wBAAwB,EAAE,CAAC,OAAO,GAAG,EAAE,KAAK,IAAI,CAAC,wBAAwB,CAAC,OAAO,CAAC;AAClG,aAAa;AACb,YAAY,KAAK,EAAE;AACnB,gBAAgB,eAAe,EAAE,CAAC,OAAO,KAAK;AAC9C,oBAAoB,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC;AACnD,gBAAgB,CAAC;AACjB,gBAAgB,eAAe,EAAE,MAAM,IAAI,CAAC,uBAAuB,EAAE;AACrE,gBAAgB,SAAS,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,OAAO,CAAC;AACvF,gBAAgB,aAAa,EAAE,CAAC,QAAQ,EAAE,OAAO,KAAK,IAAI,CAAC,qBAAqB,CAAC,QAAQ,EAAE,OAAO,CAAC;AACnG,aAAa;AACb,YAAY,OAAO,EAAE;AACrB,gBAAgB,yBAAyB,EAAE,MAAM,IAAI,CAAC,yBAAyB,EAAE;AACjF,gBAAgB,0CAA0C,EAAE,MAAM,IAAI,CAAC,0CAA0C,EAAE;AACnH,gBAAgB,6BAA6B,EAAE,CAAC,OAAO,KAAK,IAAI,CAAC,6BAA6B,CAAC,OAAO,CAAC;AACvG,gBAAgB,qCAAqC,EAAE,CAAC,MAAM,KAAK;AACnE,oBAAoB,IAAI,CAAC,qCAAqC,CAAC,MAAM,CAAC;AACtE,gBAAgB,CAAC;AACjB,gBAAgB,yCAAyC,EAAE,MAAM;AACjE,oBAAoB,IAAI,CAAC,yCAAyC,EAAE;AACpE,gBAAgB,CAAC;AACjB,gBAAgB,aAAa,EAAE,CAAC,OAAO,EAAE,QAAQ,KAAK;AACtD,oBAAoB,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,QAAQ,CAAC;AAC3D,gBAAgB,CAAC;AACjB,gBAAgB,2BAA2B,EAAE,MAAM,IAAI,CAAC,2BAA2B,EAAE;AACrF,gBAAgB,iCAAiC,EAAE,CAAC,QAAQ,KAAK;AACjE,oBAAoB,IAAI,CAAC,iCAAiC,CAAC,QAAQ,CAAC;AACpE,gBAAgB,CAAC;AACjB,aAAa;AACb,YAAY,SAAS,EAAE;AACvB,gBAAgB,cAAc,EAAE,CAAC,QAAQ,KAAK,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC;AAC3E,gBAAgB,sBAAsB,EAAE,CAAC,QAAQ,KAAK;AACtD,oBAAoB,IAAI,CAAC,sBAAsB,CAAC,QAAQ,CAAC;AACzD,gBAAgB,CAAC;AACjB,gBAAgB,QAAQ,EAAE,MAAM,IAAI,CAAC,QAAQ,EAAE;AAC/C,gBAAgB,cAAc,EAAE,MAAM,IAAI,CAAC,cAAc,EAAE;AAC3D,gBAAgB,0BAA0B,EAAE,MAAM,IAAI,CAAC,0BAA0B,EAAE;AACnF,gBAAgB,gCAAgC,EAAE,MAAM,IAAI,CAAC,gCAAgC,EAAE;AAC/F,aAAa;AACb,YAAY,EAAE,EAAE;AAChB,gBAAgB,6BAA6B,EAAE,MAAM;AACrD,oBAAoB,IAAI,CAAC,6BAA6B,EAAE;AACxD,gBAAgB,CAAC;AACjB,gBAAgB,YAAY,EAAE,MAAM;AACpC,oBAAoB,IAAI,CAAC,YAAY,EAAE;AACvC,gBAAgB,CAAC;AACjB,gBAAgB,cAAc,EAAE,MAAM;AACtC,oBAAoB,IAAI,CAAC,cAAc,EAAE;AACzC,gBAAgB,CAAC;AACjB,gBAAgB,uBAAuB,EAAE,CAAC,IAAI,KAAK;AACnD,oBAAoB,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC;AACtD,gBAAgB,CAAC;AACjB,gBAAgB,oBAAoB,EAAE,MAAM;AAC5C,oBAAoB,IAAI,CAAC,oBAAoB,EAAE;AAC/C,gBAAgB,CAAC;AACjB,gBAAgB,6BAA6B,EAAE,CAAC,UAAU,KAAK;AAC/D,oBAAoB,IAAI,CAAC,6BAA6B,CAAC,UAAU,CAAC;AAClE,gBAAgB,CAAC;AACjB,gBAAgB,QAAQ,EAAE,MAAM;AAChC,oBAAoB,IAAI,CAAC,QAAQ,EAAE;AACnC,gBAAgB,CAAC;AACjB,aAAa;AACb,YAAY,MAAM,EAAE;AACpB,gBAAgB,kBAAkB,EAAE,CAAC,IAAI,KAAK;AAC9C,oBAAoB,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC;AACjD,gBAAgB,CAAC;AACjB,gBAAgB,gBAAgB,EAAE,CAAC,IAAI,KAAK;AAC5C,oBAAoB,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC;AAC/C,gBAAgB,CAAC;AACjB,gBAAgB,aAAa,EAAE,CAAC,IAAI,KAAK;AACzC,oBAAoB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;AAC5C,gBAAgB,CAAC;AACjB,gBAAgB,iBAAiB,EAAE,MAAM;AACzC,oBAAoB,IAAI,CAAC,iBAAiB,EAAE;AAC5C,gBAAgB,CAAC;AACjB,aAAa;AACb,YAAY,MAAM,EAAE;AACpB,gBAAgB,wBAAwB,EAAE,CAAC,MAAM,KAAK;AACtD,oBAAoB,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC;AACzD,gBAAgB,CAAC;AACjB,gBAAgB,YAAY,EAAE,CAAC,KAAK,KAAK;AACzC,oBAAoB,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;AAC5C,gBAAgB,CAAC;AACjB,gBAAgB,eAAe,EAAE,CAAC,IAAI,KAAK;AAC3C,oBAAoB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;AAC9C,gBAAgB,CAAC;AACjB,gBAAgB,YAAY,EAAE,CAAC,KAAK,KAAK;AACzC,oBAAoB,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;AAC5C,gBAAgB,CAAC;AACjB,gBAAgB,gBAAgB,EAAE,CAAC,IAAI,KAAK;AAC5C,oBAAoB,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC;AAC/C,gBAAgB,CAAC;AACjB,aAAa;AACb,YAAY,SAAS,EAAE;AACvB,gBAAgB,oBAAoB,EAAE,CAAC,SAAS,EAAE,mBAAmB,KAAK,IAAI,CAAC,oBAAoB,CAAC,SAAS,EAAE,mBAAmB,CAAC;AACnI,gBAAgB,gBAAgB,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK;AACtD,oBAAoB,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AAC/E,gBAAgB,CAAC;AACjB,gBAAgB,mBAAmB,EAAE,CAAC,SAAS,EAAE,OAAO,KAAK;AAC7D,oBAAoB,IAAI,CAAC,kBAAkB,CAAC,mBAAmB,EAAE,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;AACtF,gBAAgB,CAAC;AACjB,gBAAgB,gBAAgB,EAAE,CAAC,OAAO,KAAK;AAC/C,oBAAoB,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC;AAClD,gBAAgB,CAAC;AACjB,gBAAgB,sBAAsB,EAAE,CAAC,OAAO,KAAK;AACrD,oBAAoB,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC;AACxD,gBAAgB,CAAC;AACjB,gBAAgB,gBAAgB,EAAE,CAAC,OAAO,KAAK;AAC/C,oBAAoB,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC;AAClD,gBAAgB,CAAC;AACjB,gBAAgB,uBAAuB,EAAE,CAAC,OAAO,KAAK;AACtD,oBAAoB,IAAI,CAAC,uBAAuB,CAAC,OAAO,CAAC;AACzD,gBAAgB,CAAC;AACjB,gBAAgB,aAAa,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK;AACnD,oBAAoB,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC;AACvE,gBAAgB,CAAC;AACjB,aAAa;AACb,SAAS,CAAC;AACV,IAAI;AACJ,IAAI,IAAI,CAAC,UAAU,GAAG,EAAE,EAAE;AAC1B,QAAQ,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE;AAC1C,YAAY,MAAM,YAAY,GAAG,UAAU,CAAC,MAAM;AAClD,YAAY,IAAI,CAAC,YAAY;AAC7B,gBAAgB,OAAO,YAAY,CAAC,MAAM,KAAK,UAAU,EAAE;AAC3D,gBAAgB,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,EAAE,2GAA2G,CAAC;AACtK,gBAAgB;AAChB,YAAY;AACZ,YAAY,IAAI,CAAC,OAAO,CAAC,YAAY,GAAG,YAAY;AACpD,YAAY,IAAI,CAAC,OAAO,CAAC,cAAc,GAAG,IAAI;AAC9C,QAAQ;AACR,QAAQ,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU;AACnC,YAAY;AACZ,QAAQ,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE;AAC7F,YAAY,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,EAAE,oGAAoG,CAAC;AAC3J,YAAY;AACZ,QAAQ;AACR,QAAQ,IAAI,CAAC,OAAO,CAAC,QAAQ,GAAG,qBAAqB,CAAC,UAAU,CAAC;AACjE,QAAQ,IAAI,CAAC,UAAU,EAAE;AACzB,QAAQ,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,IAAI,WAAW,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;AACpH,QAAQ,IAAI,CAAC,OAAO,CAAC,mBAAmB,GAAG,IAAI,mBAAmB,CAAC,IAAI,CAAC,qBAAqB,EAAE,CAAC;AAChG,QAAQ,IAAI,CAAC,aAAa,EAAE;AAC5B,QAAQ,IAAI,CAAC,YAAY,EAAE;AAC3B,QAAQ,IAAI,CAAC,cAAc,EAAE;AAC7B,QAAQ,IAAI,CAAC,oBAAoB,EAAE;AACnC,QAAQ,IAAI,CAAC,QAAQ,EAAE;AACvB,QAAQ,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,kBAAkB,EAAE;AACrD,YAAY,KAAK,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,KAAK,CAAC,MAAM;AACrF,YAAY,CAAC,CAAC;AACd,QAAQ;AACR,aAAa;AACb,YAAY,IAAI,CAAC,uBAAuB,EAAE;AAC1C,QAAQ;AACR,IAAI;AACJ,IAAI,UAAU,GAAG;AACjB,QAAQ,IAAI,EAAE;AACd,QAAQ,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM;AACzD,QAAQ,MAAM,eAAe,GAAG,iBAAiB,CAAC,YAAY,EAAE,kBAAkB,CAAC,IAAI,CAAC,EAAE,eAAe,CAAC;AAC1G,QAAQ,IAAI,CAAC,eAAe,EAAE;AAC9B,YAAY,MAAM,IAAI,KAAK,CAAC,CAAC,wCAAwC,EAAE,qBAAqB,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;AAC7G,QAAQ;AACR,QAAQ,MAAM,aAAa,GAAG,eAAe;AAC7C,QAAQ,IAAI,CAAC,OAAO,CAAC,aAAa,GAAG,aAAa;AAClD,QAAQ,MAAM,aAAa,GAAG,aAAa,CAAC,aAAa;AACzD,QAAQ,IAAI,CAAC,OAAO,CAAC,gBAAgB;AACrC,YAAY,CAAC,EAAE,GAAG,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,eAAe,EAAE,aAAa,CAAC,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,aAAa,CAAC,aAAa;AACvJ,QAAQ,IAAI,CAAC,OAAO,CAAC,kBAAkB,GAAG,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,EAAE,aAAa,CAAC;AAClH,QAAQ,IAAI,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW;AAC3D,QAAQ,IAAI,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,YAAY;AAC7D,QAAQ,IAAI,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE;AAC3C,YAAY,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,WAAW,CAAC;AACxF,YAAY,MAAM,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,YAAY,CAAC;AAC1F,YAAY,IAAI,cAAc,GAAG,CAAC,IAAI,eAAe,GAAG,CAAC,EAAE;AAC3D,gBAAgB,YAAY,GAAG,cAAc;AAC7C,gBAAgB,aAAa,GAAG,eAAe;AAC/C,YAAY;AACZ,QAAQ;AACR,QAAQ,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,aAAa,EAAE;AAClF,YAAY,KAAK,EAAE,YAAY;AAC/B,YAAY,MAAM,EAAE,aAAa;AACjC,YAAY,eAAe,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,eAAe;AACjE,YAAY,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,cAAc;AAC1D,YAAY,sBAAsB,EAAE,IAAI;AACxC,SAAS,CAAC;AACV,QAAQ,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,mBAAmB,EAAE,CAAC,CAAC,KAAK;AAC3D,YAAY,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC,QAAQ,CAAC;AACnD,QAAQ,CAAC,CAAC;AACV,QAAQ,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,mBAAmB,EAAE,CAAC,CAAC,KAAK;AAC3D,YAAY,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC,QAAQ,CAAC;AACnD,QAAQ,CAAC,CAAC;AACV,QAAQ,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,mBAAmB,EAAE,MAAM,IAAI,CAAC,sBAAsB,CAAC,EAAE,CAAC,CAAC;AAC1F,QAAQ,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK;AACrC,YAAY,IAAI,CAAC,CAAC,MAAM;AACxB,gBAAgB,IAAI,CAAC,iCAAiC,CAAC,CAAC,CAAC,MAAM,CAAC;AAChE,QAAQ,CAAC;AACT,QAAQ,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK;AACxC,YAAY,IAAI,CAAC,CAAC,MAAM;AACxB,gBAAgB,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,MAAM,CAAC;AACnD,QAAQ,CAAC;AACT,QAAQ,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,eAAe,EAAE,aAAa,CAAC;AAC9D,QAAQ,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,gBAAgB,EAAE,aAAa,CAAC;AAC/D,QAAQ,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,iBAAiB,EAAE,aAAa,CAAC;AAChE,QAAQ,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,iBAAiB,EAAE,gBAAgB,CAAC;AACnE,IAAI;AACJ,IAAI,cAAc,CAAC,GAAG,EAAE,aAAa,GAAG,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,KAAK,EAAE;AAC/F,QAAQ,OAAO,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,aAAa,EAAE,KAAK,CAAC;AAClF,IAAI;AACJ,IAAI,aAAa,GAAG;AACpB,QAAQ,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW;AACrC,YAAY;AACZ,QAAQ,MAAM,aAAa,GAAG,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC;AAC5E,QAAQ,IAAI,CAAC,aAAa;AAC1B,YAAY;AACZ,QAAQ,mBAAmB,CAAC;AAC5B,YAAY,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,WAAW;AAC9C,YAAY,YAAY,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,YAAY;AAC3D,YAAY,aAAa,EAAE,CAAC,GAAG,KAAK;AACpC,gBAAgB,IAAI,EAAE;AACtB,gBAAgB,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,aAAa,EAAE,sBAAsB,CAAC;AAC/F,gBAAgB,OAAO,CAAC,EAAE,GAAG,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,KAAK,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,EAAE;AACjI,YAAY,CAAC;AACb,YAAY,OAAO,EAAE,2BAA2B,CAAC,IAAI,CAAC,OAAO,EAAE,aAAa,EAAE;AAC9E,gBAAgB,sBAAsB,EAAE,CAAC,SAAS,EAAE,KAAK,KAAK;AAC9D,oBAAoB,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC;AACpF,gBAAgB,CAAC;AACjB,gBAAgB,aAAa,EAAE,CAAC,IAAI,KAAK,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;AACjE,gBAAgB,UAAU,EAAE,CAAC,KAAK,KAAK,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;AAC7D,gBAAgB,WAAW,EAAE,CAAC,QAAQ,KAAK,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC;AACrE,gBAAgB,mBAAmB,EAAE,MAAM,IAAI,CAAC,mBAAmB,EAAE;AACrE,gBAAgB,cAAc,EAAE,MAAM,IAAI,CAAC,cAAc,EAAE;AAC3D,gBAAgB,YAAY,EAAE,MAAM,IAAI,CAAC,YAAY,EAAE;AACvD,gBAAgB,oBAAoB,EAAE,CAAC,MAAM,KAAK;AAClD,oBAAoB,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC;AACrD,gBAAgB,CAAC;AACjB,gBAAgB,sBAAsB,EAAE,MAAM;AAC9C,oBAAoB,IAAI,CAAC,sBAAsB,EAAE;AACjD,gBAAgB,CAAC;AACjB,gBAAgB,iBAAiB,EAAE,MAAM;AACzC,oBAAoB,IAAI,CAAC,iBAAiB,EAAE;AAC5C,gBAAgB,CAAC;AACjB,gBAAgB,kBAAkB,EAAE,MAAM;AAC1C,oBAAoB,IAAI,CAAC,kBAAkB,EAAE;AAC7C,gBAAgB,CAAC;AACjB,gBAAgB,UAAU,EAAE,MAAM;AAClC,oBAAoB,IAAI,CAAC,UAAU,EAAE;AACrC,gBAAgB,CAAC;AACjB,gBAAgB,kBAAkB,EAAE,MAAM;AAC1C,oBAAoB,IAAI,CAAC,kBAAkB,EAAE;AAC7C,gBAAgB,CAAC;AACjB,gBAAgB,cAAc,EAAE,MAAM;AACtC,oBAAoB,IAAI,CAAC,cAAc,EAAE;AACzC,gBAAgB,CAAC;AACjB,gBAAgB,UAAU,EAAE,MAAM,IAAI,CAAC,UAAU,EAAE;AACnD,gBAAgB,gBAAgB,EAAE,MAAM,IAAI,CAAC,gBAAgB,EAAE;AAC/D,gBAAgB,aAAa,EAAE,MAAM;AACrC,oBAAoB,IAAI,CAAC,aAAa,EAAE;AACxC,gBAAgB,CAAC;AACjB,gBAAgB,YAAY,EAAE,MAAM;AACpC,oBAAoB,IAAI,CAAC,YAAY,EAAE;AACvC,gBAAgB,CAAC;AACjB,gBAAgB,aAAa,EAAE,MAAM;AACrC,oBAAoB,IAAI,CAAC,aAAa,EAAE;AACxC,gBAAgB,CAAC;AACjB,gBAAgB,YAAY,EAAE,MAAM;AACpC,oBAAoB,IAAI,CAAC,YAAY,EAAE;AACvC,gBAAgB,CAAC;AACjB,gBAAgB,qBAAqB,EAAE,CAAC,MAAM,KAAK;AACnD,oBAAoB,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC;AACtD,gBAAgB,CAAC;AACjB,gBAAgB,cAAc,EAAE,CAAC,KAAK,KAAK;AAC3C,oBAAoB,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC;AAC9C,gBAAgB,CAAC;AACjB,gBAAgB,aAAa,EAAE,MAAM;AACrC,oBAAoB,IAAI,CAAC,aAAa,EAAE;AACxC,gBAAgB,CAAC;AACjB,gBAAgB,wBAAwB,EAAE,MAAM;AAChD,oBAAoB,IAAI,CAAC,wBAAwB,EAAE;AACnD,gBAAgB,CAAC;AACjB,gBAAgB,oBAAoB,EAAE,MAAM;AAC5C,oBAAoB,IAAI,CAAC,oBAAoB,EAAE;AAC/C,gBAAgB,CAAC;AACjB,gBAAgB,oBAAoB,EAAE,MAAM;AAC5C,oBAAoB,IAAI,CAAC,oBAAoB,EAAE;AAC/C,gBAAgB,CAAC;AACjB,gBAAgB,0BAA0B,EAAE,MAAM;AAClD,oBAAoB,IAAI,CAAC,0BAA0B,EAAE;AACrD,gBAAgB,CAAC;AACjB,gBAAgB,0BAA0B,EAAE,MAAM;AAClD,oBAAoB,IAAI,CAAC,0BAA0B,EAAE;AACrD,gBAAgB,CAAC;AACjB,gBAAgB,0BAA0B,EAAE,MAAM;AAClD,oBAAoB,IAAI,CAAC,0BAA0B,EAAE;AACrD,gBAAgB,CAAC;AACjB,gBAAgB,wBAAwB,EAAE,MAAM;AAChD,oBAAoB,IAAI,CAAC,wBAAwB,EAAE;AACnD,gBAAgB,CAAC;AACjB,gBAAgB,aAAa,EAAE,MAAM,IAAI,CAAC,aAAa,EAAE;AACzD,gBAAgB,IAAI,EAAE,MAAM,IAAI,CAAC,IAAI,EAAE;AACvC,gBAAgB,IAAI,EAAE,MAAM,IAAI,CAAC,IAAI,EAAE;AACvC,gBAAgB,aAAa,EAAE,CAAC,OAAO,KAAK;AAC5C,oBAAoB,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC;AAC/C,gBAAgB,CAAC;AACjB,gBAAgB,kBAAkB,EAAE,CAAC,WAAW,KAAK;AACrD,oBAAoB,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC;AACxD,gBAAgB,CAAC;AACjB,gBAAgB,SAAS,EAAE,MAAM,IAAI,CAAC,SAAS,EAAE;AACjD,gBAAgB,oBAAoB,EAAE,CAAC,KAAK,KAAK;AACjD,oBAAoB,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,EAAE,oBAAoB,CAAC;AAClF,gBAAgB,CAAC;AACjB,gBAAgB,UAAU,EAAE,MAAM;AAClC,oBAAoB,IAAI,CAAC,UAAU,EAAE;AACrC,gBAAgB,CAAC;AACjB,gBAAgB,eAAe,EAAE,MAAM;AACvC,oBAAoB,IAAI,CAAC,eAAe,EAAE;AAC1C,gBAAgB,CAAC;AACjB,gBAAgB,cAAc,EAAE,MAAM;AACtC,oBAAoB,IAAI,CAAC,cAAc,EAAE;AACzC,gBAAgB,CAAC;AACjB,gBAAgB,kBAAkB,EAAE,CAAC,IAAI,KAAK;AAC9C,oBAAoB,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC;AACjD,gBAAgB,CAAC;AACjB,gBAAgB,kBAAkB,EAAE,CAAC,IAAI,KAAK;AAC9C,oBAAoB,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC;AACjD,gBAAgB,CAAC;AACjB,gBAAgB,YAAY,EAAE,CAAC,KAAK,KAAK;AACzC,oBAAoB,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC;AACnD,gBAAgB,CAAC;AACjB,gBAAgB,eAAe,EAAE,CAAC,IAAI,KAAK;AAC3C,oBAAoB,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC;AACrD,gBAAgB,CAAC;AACjB,gBAAgB,YAAY,EAAE,CAAC,KAAK,KAAK;AACzC,oBAAoB,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC;AACnD,gBAAgB,CAAC;AACjB,gBAAgB,gBAAgB,EAAE,CAAC,IAAI,KAAK;AAC5C,oBAAoB,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC;AACtD,gBAAgB,CAAC;AACjB,gBAAgB,cAAc,EAAE,CAAC,IAAI,KAAK;AAC1C,oBAAoB,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC;AAC7C,gBAAgB,CAAC;AACjB,gBAAgB,eAAe,EAAE,CAAC,MAAM,KAAK;AAC7C,oBAAoB,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC;AAChD,gBAAgB,CAAC;AACjB,gBAAgB,cAAc,EAAE,CAAC,MAAM,KAAK;AAC5C,oBAAoB,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC;AAC/C,gBAAgB,CAAC;AACjB,aAAa,CAAC;AACd,SAAS,CAAC;AACV,QAAQ,IAAI,CAAC,kBAAkB,CAAC,aAAa,CAAC;AAC9C,IAAI;AACJ,IAAI,kBAAkB,CAAC,aAAa,EAAE;AACtC,QAAQ,wBAAwB,CAAC;AACjC,YAAY,gBAAgB,EAAE,MAAM,aAAa;AACjD,YAAY,mBAAmB,EAAE,MAAM,IAAI,CAAC,OAAO,CAAC,gBAAgB;AACpE,YAAY,kBAAkB,EAAE,MAAM,IAAI,CAAC,OAAO,CAAC,eAAe;AAClE,YAAY,kBAAkB,EAAE,CAAC,gBAAgB,EAAE,eAAe,KAAK;AACvE,gBAAgB,IAAI,CAAC,OAAO,CAAC,gBAAgB,GAAG,gBAAgB;AAChE,gBAAgB,IAAI,CAAC,OAAO,CAAC,eAAe,GAAG,eAAe;AAC9D,YAAY,CAAC;AACb,YAAY,sBAAsB,EAAE,CAAC,gBAAgB,EAAE,eAAe,KAAK;AAC3E,gBAAgB,4BAA4B,CAAC,gBAAgB,EAAE,eAAe,CAAC;AAC/E,YAAY,CAAC;AACb,YAAY,mBAAmB,EAAE,CAAC,KAAK,KAAK;AAC5C,gBAAgB,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC;AAC/C,YAAY,CAAC;AACb,SAAS,CAAC;AACV,IAAI;AACJ,IAAI,mBAAmB,CAAC,KAAK,EAAE;AAC/B,QAAQ,yBAAyB,CAAC;AAClC,YAAY,UAAU,EAAE,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU;AACrD,YAAY,SAAS,EAAE,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM;AAChD,YAAY,mBAAmB,EAAE,MAAM,IAAI,CAAC,OAAO,CAAC,gBAAgB;AACpE,YAAY,cAAc,EAAE,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,KAAK,IAAI;AACnE,YAAY,cAAc,EAAE,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,KAAK,IAAI;AACnE,YAAY,gBAAgB,EAAE,MAAM,IAAI,CAAC,OAAO,CAAC,aAAa,KAAK,IAAI;AACvE,YAAY,cAAc,EAAE,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,KAAK,IAAI;AACnE,YAAY,oBAAoB,EAAE,MAAM;AACxC,gBAAgB,IAAI,CAAC,oBAAoB,EAAE;AAC3C,YAAY,CAAC;AACb,YAAY,yBAAyB,EAAE,CAAC,MAAM,KAAK;AACnD,gBAAgB,yBAAyB,CAAC,IAAI,CAAC,0BAA0B,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC;AACxF,YAAY,CAAC;AACb,YAAY,YAAY,EAAE,MAAM;AAChC,gBAAgB,IAAI,CAAC,YAAY,EAAE;AACnC,YAAY,CAAC;AACb,YAAY,YAAY,EAAE,MAAM;AAChC,gBAAgB,IAAI,CAAC,YAAY,EAAE;AACnC,YAAY,CAAC;AACb,YAAY,cAAc,EAAE,MAAM;AAClC,gBAAgB,IAAI,CAAC,cAAc,EAAE;AACrC,YAAY,CAAC;AACb,YAAY,UAAU,EAAE,MAAM;AAC9B,gBAAgB,IAAI,CAAC,UAAU,EAAE;AACjC,YAAY,CAAC;AACb,SAAS,EAAE,KAAK,CAAC;AACjB,IAAI;AACJ,IAAI,iCAAiC,GAAG;AACxC,QAAQ,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;AACnF,YAAY;AACZ,QAAQ,yBAAyB,CAAC,IAAI,CAAC,0BAA0B,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;AACtF,IAAI;AACJ,IAAI,MAAM,aAAa,CAAC,IAAI,EAAE;AAC9B,QAAQ,MAAMW,aAAiB,CAAC;AAChC,YAAY,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO;AACzC,YAAY,eAAe,EAAE,MAAM,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,SAAS,EAAE,cAAc,CAAC;AAC/F,YAAY,SAAS,EAAE,CAAC,OAAO,KAAK,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;AAC3D,SAAS,EAAE,IAAI,CAAC;AAChB,IAAI;AACJ,IAAI,MAAM,SAAS,CAAC,MAAM,EAAE,OAAO,GAAG,EAAE,EAAE;AAC1C,QAAQ,OAAO,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,OAAO,CAAC;AACtD,IAAI;AACJ,IAAI,MAAM,iBAAiB,CAAC,MAAM,EAAE,OAAO,GAAG,EAAE,EAAE;AAClD,QAAQ,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;AAClE,YAAY,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,EAAE,+CAA+C,CAAC;AACtG,YAAY;AACZ,QAAQ;AACR,QAAQ,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE;AACrC,YAAY,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,EAAE,wCAAwC,CAAC;AAC/F,YAAY;AACZ,QAAQ;AACR,QAAQ,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,EAAE;AAC9C,YAAY,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,SAAS,CAAC,2CAA2C,CAAC,EAAE,0EAA0E,CAAC;AACvL,YAAY;AACZ,QAAQ;AACR,QAAQ,IAAI;AACZ,YAAY,IAAI,CAAC,sBAAsB,CAAC,WAAW,EAAE,OAAO,CAAC;AAC7D,QAAQ;AACR,QAAQ,OAAO,KAAK,EAAE;AACtB,YAAY,IAAI,IAAI,CAAC,wBAAwB,CAAC,KAAK,EAAE,WAAW,CAAC,EAAE;AACnE,gBAAgB,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC;AACzE,gBAAgB;AAChB,YAAY;AACZ,YAAY,MAAM,KAAK;AACvB,QAAQ;AACR,QAAQ,IAAI,CAAC,iCAAiC,EAAE;AAChD,QAAQ,MAAM,eAAe,GAAG,IAAI,CAAC,mBAAmB,CAAC,WAAW,EAAE,OAAO,CAAC;AAC9E,QAAQ,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa;AACxD,QAAQ,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,MAAM,GAAG,CAAC;AACnD,QAAQ,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC,MAAM,GAAG,CAAC;AAC/D,QAAQ,IAAI,CAAC,kBAAkB,CAAC,kBAAkB,EAAE,CAAC,eAAe,CAAC,CAAC;AACtE,QAAQ,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,YAAY,EAAE;AAClD,QAAQ,IAAI,CAAC,uBAAuB,CAAC,eAAe,CAAC;AACrD,QAAQ,IAAI,CAAC,QAAQ,EAAE;AACvB,QAAQ,MAAM,gBAAgB,GAAG,IAAI,CAAC,cAAc,CAAC,qBAAqB,EAAE;AAC5E,QAAQ,IAAI;AACZ,YAAY,IAAI;AAChB,gBAAgB,6BAA6B,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;AAC3E,YAAY;AACZ,YAAY,OAAO,KAAK,EAAE;AAC1B,gBAAgB,MAAM,YAAY,GAAG,KAAK,YAAY;AACtD,sBAAsB,CAAC,kBAAkB,EAAE,KAAK,CAAC,OAAO,CAAC;AACzD,sBAAsB,kBAAkB;AACxC,gBAAgB,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,EAAE,YAAY,CAAC;AACtE,gBAAgB,MAAM,KAAK;AAC3B,YAAY;AACZ,YAAY,IAAI,CAAC,iBAAiB,EAAE;AACpC,YAAY,MAAMC,SAAa,CAAC,gBAAgB,EAAE,MAAM,EAAE,OAAO,CAAC;AAClE,QAAQ;AACR,gBAAgB;AAChB,YAAY,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,UAAU,EAAE;AACpD,YAAY,IAAI,CAAC,uBAAuB,CAAC,eAAe,CAAC;AACzD,YAAY,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM;AAC/D,gBAAgB,IAAI,CAAC,QAAQ,EAAE;AAC/B,QAAQ;AACR,QAAQ,IAAI,CAAC,OAAO,CAAC,QAAQ,GAAG,IAAI;AACpC,QAAQ,IAAI,CAAC,YAAY,EAAE;AAC3B,QAAQ,IAAI,CAAC,cAAc,EAAE;AAC7B,QAAQ,IAAI,CAAC,oBAAoB,EAAE;AACnC,QAAQ,IAAI,CAAC,QAAQ,EAAE;AACvB,QAAQ,IAAI,aAAa,IAAI,aAAa,KAAK,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE;AAC3E,YAAY,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,EAAE,CAAC,aAAa,EAAE,eAAe,CAAC,CAAC;AACvF,QAAQ;AACR,QAAQ,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,EAAE;AAC7C,QAAQ,IAAI,SAAS,EAAE;AACvB,YAAY,IAAI,CAAC,kBAAkB,CAAC,eAAe,EAAE,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC;AAClF,QAAQ;AACR,QAAQ,IAAI,QAAQ,EAAE;AACtB,YAAY,IAAI,CAAC,gBAAgB,CAAC,eAAe,CAAC;AAClD,QAAQ;AACR,QAAQ,IAAI,cAAc,EAAE;AAC5B,YAAY,IAAI,CAAC,sBAAsB,CAAC,eAAe,CAAC;AACxD,QAAQ;AACR,QAAQ,IAAI,CAAC,gBAAgB,CAAC,eAAe,CAAC;AAC9C,IAAI;AACJ,IAAI,yBAAyB,CAAC,OAAO,EAAE;AACvC,QAAQ,IAAI,EAAE;AACd,QAAQ,QAAQ,CAAC,EAAE,GAAG,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,wBAAwB,CAAC,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,IAAI;AAChJ,IAAI;AACJ,IAAI,0BAA0B,CAAC,OAAO,EAAE;AACxC,QAAQ,OAAO,CAAC,EAAE,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,qCAAqC,CAAC,CAAC;AACnH,IAAI;AACJ,IAAI,4BAA4B,CAAC,KAAK,EAAE,OAAO,GAAG,EAAE,EAAE;AACtD,QAAQ,OAAO;AACf,YAAY,GAAG,OAAO;AACtB,YAAY,IAAI,KAAK,GAAG,EAAE,CAAC,wBAAwB,GAAG,KAAK,EAAE,GAAG,EAAE,CAAC;AACnE,YAAY,CAAC,qBAAqB,GAAG,IAAI;AACzC,SAAS;AACT,IAAI;AACJ,IAAI,wBAAwB,CAAC,OAAO,GAAG,EAAE,EAAE;AAC3C,QAAQ,OAAO;AACf,YAAY,GAAG,OAAO;AACtB,YAAY,CAAC,qCAAqC,GAAG,IAAI;AACzD,YAAY,CAAC,qBAAqB,GAAG,IAAI;AACzC,SAAS;AACT,IAAI;AACJ,IAAI,sBAAsB,CAAC,aAAa,EAAE,OAAO,EAAE;AACnD,QAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,yBAAyB,CAAC,OAAO,CAAC;AAC7D,QAAQ,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,sBAAsB,CAAC,aAAa,EAAE,KAAK,CAAC;AAChF,QAAQ,MAAM,cAAc,GAAG,IAAI,CAAC,iBAAiB,EAAE;AACvD,QAAQ,IAAI,cAAc;AAC1B,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,cAAc,CAAC,KAAK,CAAC;AAC9D,YAAY,CAAC,yBAAyB,CAAC,cAAc,EAAE,aAAa,CAAC,EAAE;AACvE,YAAY,MAAM,IAAI,cAAc,CAAC,aAAa,EAAE,CAAC,MAAM,EAAE,cAAc,CAAC,eAAe,CAAC,CAAC;AAC7F,QAAQ;AACR,QAAQ,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,0BAA0B,CAAC,OAAO,CAAC,EAAE;AAC1F,YAAY,MAAM,IAAI,cAAc,CAAC,aAAa,EAAE,8BAA8B,CAAC;AACnF,QAAQ;AACR,IAAI;AACJ,IAAI,mBAAmB,CAAC,aAAa,EAAE,OAAO,EAAE;AAChD,QAAQ,IAAI;AACZ,YAAY,IAAI,CAAC,sBAAsB,CAAC,aAAa,EAAE,OAAO,CAAC;AAC/D,YAAY,OAAO,IAAI;AACvB,QAAQ;AACR,QAAQ,OAAO,KAAK,EAAE;AACtB,YAAY,IAAI,CAAC,IAAI,CAAC,wBAAwB,CAAC,KAAK,EAAE,aAAa,CAAC,EAAE;AACtE,gBAAgB,MAAM,KAAK;AAC3B,YAAY;AACZ,YAAY,OAAO,KAAK;AACxB,QAAQ;AACR,IAAI;AACJ,IAAI,wBAAwB,CAAC,KAAK,EAAE,aAAa,EAAE;AACnD,QAAQ,OAAO,KAAK,YAAY,cAAc,IAAI,KAAK,CAAC,SAAS,KAAK,aAAa;AACnF,IAAI;AACJ,IAAI,uBAAuB,CAAC,aAAa,EAAE,OAAO,EAAE;AACpD,QAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,yBAAyB,CAAC,OAAO,CAAC;AAC7D,QAAQ,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,uBAAuB,CAAC,aAAa,EAAE,KAAK,CAAC;AACjF,QAAQ,MAAM,cAAc,GAAG,IAAI,CAAC,iBAAiB,EAAE;AACvD,QAAQ,IAAI,cAAc;AAC1B,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,cAAc,CAAC,KAAK,CAAC;AAC9D,YAAY,CAAC,yBAAyB,CAAC,cAAc,EAAE,aAAa,CAAC,EAAE;AACvE,YAAY,MAAM,IAAI,KAAK,CAAC,CAAC,0BAA0B,EAAE,aAAa,CAAC,QAAQ,EAAE,cAAc,CAAC,gBAAgB,CAAC,CAAC;AAClH,QAAQ;AACR,IAAI;AACJ,IAAI,aAAa,GAAG;AACpB,QAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa;AAChD,QAAQ,OAAO,CAAC,EAAE,KAAK;AACvB,YAAY,iBAAiB,CAAC,KAAK,CAAC;AACpC,YAAY,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC;AACnC,YAAY,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AACrC,IAAI;AACJ,IAAI,MAAM,GAAG;AACb,QAAQ,QAAQ,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,MAAM,EAAE;AACpD,YAAY,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,EAAE;AAC3C,YAAY,IAAI,CAAC,gBAAgB,EAAE;AACnC,IAAI;AACJ,IAAI,YAAY,GAAG;AACnB,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,MAAM,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,EAAE;AACtF,IAAI;AACJ,IAAI,oBAAoB,CAAC,MAAM,EAAE;AACjC,QAAQ,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa;AAC/D,YAAY;AACZ,QAAQ,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,sBAAsB,CAAC;AAC7D,YAAY;AACZ,QAAQ,MAAM,MAAM,GAAG,2BAA2B,CAAC,IAAI,CAAC,OAAO,CAAC,wBAAwB,EAAE,MAAM,CAAC;AACjG,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;AACxC,YAAY,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,SAAS,CAAC,CAAC,6DAA6D,EAAE,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,qCAAqC,CAAC;AACpM,QAAQ;AACR,QAAQ,IAAI,kCAAkC,CAAC,IAAI,CAAC,OAAO,CAAC,wBAAwB,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE;AACtG,YAAY;AACZ,QAAQ;AACR,QAAQ,IAAI,CAAC,OAAO,CAAC,wBAAwB,GAAG,8BAA8B,CAAC,MAAM,CAAC,MAAM,CAAC;AAC7F,QAAQ,IAAI,CAAC,wBAAwB,EAAE;AACvC,QAAQ,IAAI,CAAC,YAAY,EAAE;AAC3B,QAAQ,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,gBAAgB,EAAE;AAC9C,QAAQ,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,oBAAoB,CAAC,sBAAsB,EAAE,KAAK,CAAC,CAAC;AACvF,IAAI;AACJ,IAAI,oBAAoB,GAAG;AAC3B,QAAQ,OAAO,8BAA8B,CAAC,IAAI,CAAC,OAAO,CAAC,wBAAwB,CAAC;AACpF,IAAI;AACJ,IAAI,sBAAsB,GAAG;AAC7B,QAAQ,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa;AAC/D,YAAY;AACZ,QAAQ,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,wBAAwB,CAAC;AAC/D,YAAY;AACZ,QAAQ,MAAM,IAAI,GAAG,8BAA8B,CAAC,IAAI,CAAC,OAAO,CAAC,8BAA8B,CAAC;AAChG,QAAQ,IAAI,kCAAkC,CAAC,IAAI,CAAC,OAAO,CAAC,wBAAwB,EAAE,IAAI,CAAC;AAC3F,YAAY;AACZ,QAAQ,IAAI,CAAC,OAAO,CAAC,wBAAwB,GAAG,IAAI;AACpD,QAAQ,IAAI,CAAC,wBAAwB,EAAE;AACvC,QAAQ,IAAI,CAAC,YAAY,EAAE;AAC3B,QAAQ,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,gBAAgB,EAAE;AAC9C,QAAQ,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,oBAAoB,CAAC,wBAAwB,EAAE,KAAK,CAAC,CAAC;AACzF,IAAI;AACJ,IAAI,iBAAiB,GAAG;AACxB,QAAQ,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa;AAC/D,YAAY;AACZ,QAAQ,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,mBAAmB,CAAC;AAC1D,YAAY;AACZ,QAAQ,IAAI,CAAC,OAAO,CAAC,wBAAwB,GAAG,8BAA8B,CAAC,2BAA2B,CAAC;AAC3G,QAAQ,IAAI,CAAC,wBAAwB,EAAE;AACvC,QAAQ,IAAI,CAAC,YAAY,EAAE;AAC3B,QAAQ,IAAI,CAAC,0BAA0B,CAAC,mBAAmB,CAAC;AAC5D,IAAI;AACJ,IAAI,kBAAkB,GAAG;AACzB,QAAQ,IAAI,CAAC,0BAA0B,CAAC,oBAAoB,CAAC;AAC7D,IAAI;AACJ,IAAI,0BAA0B,CAAC,SAAS,EAAE;AAC1C,QAAQ,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa;AAC/D,YAAY;AACZ,QAAQ,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC;AAChD,YAAY;AACZ,QAAQ,IAAI,kCAAkC,CAAC,IAAI,CAAC,OAAO,CAAC,wBAAwB,EAAE,IAAI,CAAC,OAAO,CAAC,8BAA8B,CAAC,EAAE;AACpI,YAAY;AACZ,QAAQ;AACR,QAAQ,IAAI,CAAC,iBAAiB,EAAE;AAChC,QAAQ,IAAI,CAAC,OAAO,CAAC,8BAA8B,GAAG,8BAA8B,CAAC,IAAI,CAAC,OAAO,CAAC,wBAAwB,CAAC;AAC3H,QAAQ,MAAM,OAAO,GAAG,IAAI,CAAC,oBAAoB,CAAC,SAAS,EAAE,KAAK,CAAC;AACnE,QAAQ,IAAI,CAAC,0BAA0B,CAAC,OAAO,CAAC;AAChD,QAAQ,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC;AACtC,IAAI;AACJ,IAAI,wBAAwB,GAAG;AAC/B,QAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa;AAChD,QAAQ,IAAI,CAAC,KAAK;AAClB,YAAY;AACZ,QAAQ,6BAA6B,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,wBAAwB,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK;AACnI,YAAY,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC;AAC/D,QAAQ,CAAC,CAAC;AACV,IAAI;AACJ,IAAI,aAAa,CAAC,IAAI,EAAE;AACxB,QAAQ,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE;AACjC,YAAY,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,SAAS,CAAC,CAAC,sCAAsC,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;AAC/H,gBAAgB,uCAAuC,CAAC,EAAE,8BAA8B,CAAC;AACzF,YAAY;AACZ,QAAQ;AACR,QAAQ,IAAI,CAAC,OAAO,CAAC,iBAAiB,GAAG,IAAI;AAC7C,IAAI;AACJ,IAAI,aAAa,CAAC,OAAO,EAAE,QAAQ,EAAE;AACrC,QAAQ,IAAI,CAAC,qBAAqB,CAAC,OAAO,EAAE,QAAQ,EAAE,eAAe,CAAC;AACtE,IAAI;AACJ,IAAI,iBAAiB,CAAC,OAAO,GAAG,EAAE,EAAE;AACpC,QAAQ,IAAI,CAAC,IAAI,CAAC,2BAA2B,CAAC,mBAAmB,CAAC;AAClE,YAAY;AACZ,QAAQ,MAAM,IAAI,GAAG,IAAI,CAAC,0BAA0B,CAAC,OAAO,CAAC;AAC7D,QAAQ,IAAI,CAAC,IAAI,EAAE;AACnB,YAAY,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,SAAS,CAAC,uDAAuD,CAAC,EAAE,sFAAsF,CAAC;AAC/M,YAAY;AACZ,QAAQ;AACR,QAAQ,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,mBAAmB,EAAE;AACjF,YAAY,SAAS,EAAE,IAAI;AAC3B,YAAY,cAAc,EAAE,IAAI;AAChC,SAAS,CAAC;AACV,IAAI;AACJ,IAAI,QAAQ,CAAC,OAAO,GAAG,EAAE,EAAE;AAC3B,QAAQ,IAAI,EAAE;AACd,QAAQ,IAAI,CAAC,IAAI,CAAC,2BAA2B,CAAC,UAAU,CAAC;AACzD,YAAY;AACZ,QAAQ,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,EAAE;AACxC,YAAY,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;AAC7C,gBAAgB,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,SAAS,CAAC,CAAC,wCAAwC,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;AAC7I,oBAAoB,uCAAuC,CAAC,EAAE,gCAAgC,CAAC;AAC/F,gBAAgB;AAChB,YAAY;AACZ,YAAY,IAAI,CAAC,OAAO,CAAC,iBAAiB,GAAG,OAAO,CAAC,IAAI;AACzD,QAAQ;AACR,QAAQ,MAAM,MAAM,GAAG,OAAO,CAAC;AAC/B,cAAc,sBAAsB,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB;AAClE,cAAc,IAAI;AAClB,QAAQ,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,qBAAqB,EAAE,GAAG,IAAI;AAC5F,QAAQ,IAAI,QAAQ;AACpB,YAAY,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC;AACjE,QAAQ,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE;AACxC,YAAY,IAAI,CAAC,6BAA6B,EAAE;AAChD,QAAQ;AACR,QAAQ,sBAAsB,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;AAC3F,QAAQ,CAAC,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,MAAM,GAAG,EAAE,CAAC,SAAS,EAAE;AACtF,QAAQ,IAAI,CAAC,8BAA8B,CAAC,UAAU,CAAC;AACvD,IAAI;AACJ,IAAI,oBAAoB,CAAC,SAAS,EAAE,mBAAmB,GAAG,KAAK,EAAE;AACjE,QAAQ,OAAO,EAAE,SAAS,EAAE,mBAAmB,EAAE;AACjD,IAAI;AACJ,IAAI,mBAAmB,CAAC,QAAQ,EAAE,OAAO,EAAE;AAC3C,QAAQ,MAAM,QAAQ,GAAG,IAAI,CAAC,yBAAyB,CAAC,OAAO,CAAC;AAChE,QAAQ,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,mBAAmB,EAAE;AACjF,QAAQ,IAAI,QAAQ,IAAI,eAAe,EAAE;AACzC,YAAY,OAAO,IAAI,CAAC,oBAAoB,CAAC,sBAAsB,CAAC,eAAe,CAAC,GAAG,eAAe,GAAG,QAAQ,EAAE,IAAI,CAAC;AACxH,QAAQ;AACR,QAAQ,OAAO,IAAI,CAAC,oBAAoB,CAAC,QAAQ,EAAE,KAAK,CAAC;AACzD,IAAI;AACJ,IAAI,kBAAkB,CAAC,YAAY,EAAE,IAAI,EAAE;AAC3C,QAAQ,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC;AAC3D,QAAQ,IAAI,OAAO,QAAQ,KAAK,UAAU;AAC1C,YAAY;AACZ,QAAQ,IAAI;AACZ,YAAY,QAAQ,CAAC,GAAG,IAAI,CAAC;AAC7B,QAAQ;AACR,QAAQ,OAAO,KAAK,EAAE;AACtB,YAAY,OAAO,CAAC,KAAK,CAAC,CAAC,cAAc,EAAE,YAAY,CAAC,eAAe,CAAC,EAAE,KAAK,CAAC;AAChF,QAAQ;AACR,IAAI;AACJ,IAAI,YAAY,GAAG;AACnB,QAAQ,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE;AAC1F,YAAY,OAAO,IAAI;AACvB,QAAQ;AACR,QAAQ,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE;AAC1D,QAAQ,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE;AAC5D,QAAQ,IAAI,YAAY;AACxB,QAAQ,IAAI,aAAa;AACzB,QAAQ,IAAI;AACZ,YAAY,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,SAAS,EAAE;AAClD,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,eAAe,EAAE;AACvE,YAAY,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AACjE,YAAY,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACnE,QAAQ;AACR,QAAQ,OAAO,KAAK,EAAE;AACtB,YAAY,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,EAAE,8EAA8E,CAAC;AACtI,YAAY,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC;AACrF,gBAAgB,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;AACzE,YAAY,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC;AACvF,gBAAgB,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;AACzE,QAAQ;AACR,QAAQ,OAAO;AACf,YAAY,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAC7E,YAAY,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAC/E,YAAY,YAAY;AACxB,YAAY,aAAa;AACzB,YAAY,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY;AAC5C,YAAY,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,eAAe;AAClD,YAAY,WAAW;AACvB,YAAY,YAAY;AACxB,SAAS;AACT,IAAI;AACJ,IAAI,QAAQ,GAAG;AACf,QAAQ,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM;AAChC,YAAY,OAAO,EAAE;AACrB,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,KAAK,EAAE;AAC5E,IAAI;AACJ,IAAI,cAAc,GAAG;AACrB,QAAQ,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM;AAChC,YAAY,OAAO,EAAE;AACrB,QAAQ,OAAOC,cAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;AACtD,IAAI;AACJ,IAAI,kBAAkB,CAAC,OAAO,GAAG,EAAE,EAAE;AACrC,QAAQ,IAAI,CAAC,sBAAsB,CAAC,oBAAoB,CAAC;AACzD,QAAQ,OAAOC,kBAAsB,CAAC,IAAI,CAAC,8BAA8B,EAAE,EAAE,OAAO,CAAC;AACrF,IAAI;AACJ,IAAI,oBAAoB,CAAC,KAAK,EAAE,OAAO,GAAG,EAAE,EAAE;AAC9C,QAAQ,OAAOC,oBAAwB,CAAC,KAAK,EAAE,OAAO,CAAC;AACvD,IAAI;AACJ,IAAI,MAAM,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,EAAE,EAAE;AAClD,QAAQ,IAAI,EAAE,EAAE,EAAE;AAClB,QAAQ,MAAM,UAAU,GAAGA,oBAAwB,CAAC,KAAK,EAAE,OAAO,CAAC;AACnE,QAAQ,IAAI,CAAC,UAAU,CAAC,KAAK,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE;AACpD,YAAY,MAAM,OAAO,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,MAAM,GAAG,EAAE,CAAC,OAAO,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,gDAAgD;AAChM,YAAY,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,CAAC,yCAAyC,EAAE,OAAO,CAAC,CAAC,CAAC;AAC1F,YAAY,KAAK,CAAC,UAAU,GAAG,UAAU;AACzC,YAAY,MAAM,KAAK;AACvB,QAAQ;AACR,QAAQ,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE;AACjE,YAAY,MAAM,IAAI,KAAK,CAAC,2DAA2D,CAAC;AACxF,QAAQ;AACR,QAAQ,IAAI,CAAC,sBAAsB,CAAC,oBAAoB,CAAC;AACzD,QAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,kBAAkB,CAAC,oBAAoB,CAAC;AAC1F,QAAQ,MAAM,eAAe,GAAG,IAAI,CAAC,oBAAoB,CAAC,oBAAoB,EAAE,KAAK,CAAC;AACtF,QAAQ,MAAM,cAAc,GAAG,IAAI,CAAC,uBAAuB,EAAE;AAC7D,QAAQ,MAAM,oBAAoB,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,eAAe,EAAE;AAC1E,QAAQ,MAAM,yBAAyB,GAAG,IAAI,CAAC,OAAO,CAAC,uBAAuB;AAC9E,QAAQ,MAAM,qBAAqB,GAAG,IAAI,CAAC,0BAA0B,EAAE;AACvE,QAAQ,MAAM,2BAA2B,GAAG,IAAI,CAAC,gCAAgC,EAAE;AACnF,QAAQ,IAAI,MAAM;AAClB,QAAQ,IAAI,CAAC,iCAAiC,EAAE;AAChD,QAAQ,IAAI,CAAC,OAAO,CAAC,uBAAuB,GAAG,IAAI;AACnD,QAAQ,IAAI,CAAC,uBAAuB,CAAC,eAAe,CAAC;AACrD,QAAQ,IAAI,CAAC,QAAQ,EAAE;AACvB,QAAQ,IAAI;AACZ,YAAY,MAAM,GAAG,MAAM,4BAA4B,CAAC,IAAI,CAAC,8BAA8B,EAAE,EAAE,UAAU,CAAC,KAAK,EAAE,OAAO,CAAC;AACzH,YAAY,IAAI,CAAC,OAAO,CAAC,uBAAuB,GAAG,yBAAyB;AAC5E,YAAY,IAAI,OAAO,CAAC,iBAAiB,KAAK,IAAI;AAClD,gBAAgB,oBAAoB;AACpC,gBAAgB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,QAAQ,CAAC,oBAAoB,CAAC,EAAE;AACjF,gBAAgB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,eAAe,CAAC,oBAAoB,CAAC;AACzE,YAAY;AACZ,YAAY,IAAI,OAAO,CAAC,WAAW,KAAK,KAAK,EAAE;AAC/C,gBAAgB,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,4BAA4B,CAAC,KAAK,CAAC,CAAC;AAChF,YAAY;AACZ,iBAAiB;AACjB,gBAAgB,IAAI,CAAC,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,uBAAuB,EAAE;AAC1E,YAAY;AACZ,YAAY,IAAI,CAAC,YAAY,EAAE;AAC/B,YAAY,IAAI,CAAC,cAAc,EAAE;AACjC,YAAY,IAAI,CAAC,oBAAoB,EAAE;AACvC,YAAY,IAAI,CAAC,QAAQ,EAAE;AAC3B,YAAY,IAAI,qBAAqB,KAAK,IAAI,CAAC,0BAA0B,EAAE,EAAE;AAC7E,gBAAgB,IAAI,CAAC,gBAAgB,CAAC,eAAe,CAAC;AACtD,YAAY;AACZ,YAAY,IAAI,2BAA2B,KAAK,IAAI,CAAC,gCAAgC,EAAE,EAAE;AACzF,gBAAgB,IAAI,CAAC,sBAAsB,CAAC,eAAe,CAAC;AAC5D,YAAY;AACZ,YAAY,IAAI,CAAC,gBAAgB,CAAC,eAAe,CAAC;AAClD,YAAY,OAAO;AACnB,gBAAgB,GAAG,MAAM;AACzB,gBAAgB,QAAQ,EAAE,CAAC,GAAG,UAAU,CAAC,QAAQ,EAAE,GAAG,MAAM,CAAC,QAAQ,CAAC;AACtE,aAAa;AACb,QAAQ;AACR,QAAQ,OAAO,KAAK,EAAE;AACtB,YAAY,IAAI,CAAC,OAAO,CAAC,uBAAuB,GAAG,yBAAyB;AAC5E,YAAY,IAAI;AAChB,gBAAgB,MAAM,IAAI,CAAC,qBAAqB,CAAC,cAAc,EAAE,IAAI,CAAC,4BAA4B,CAAC,KAAK,CAAC,CAAC;AAC1G,YAAY;AACZ,YAAY,OAAO,aAAa,EAAE;AAClC,gBAAgB,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,aAAa,EAAE,qCAAqC,CAAC;AACzG,YAAY;AACZ,YAAY,MAAM,KAAK;AACvB,QAAQ;AACR,gBAAgB;AAChB,YAAY,IAAI,CAAC,OAAO,CAAC,uBAAuB,GAAG,yBAAyB;AAC5E,YAAY,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,gBAAgB,CAAC,KAAK,CAAC;AAC/D,YAAY,IAAI,CAAC,uBAAuB,CAAC,eAAe,CAAC;AACzD,YAAY,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM;AAC/D,gBAAgB,IAAI,CAAC,QAAQ,EAAE;AAC/B,QAAQ;AACR,IAAI;AACJ,IAAI,8BAA8B,GAAG;AACrC,QAAQ,OAAO;AACf,YAAY,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM;AACvC,YAAY,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC,aAAa;AACrD,YAAY,eAAe,EAAE,IAAI,CAAC,OAAO,CAAC,eAAe;AACzD,YAAY,oBAAoB,EAAE,IAAI,CAAC,OAAO,CAAC,oBAAoB;AACnE,SAAS;AACT,IAAI;AACJ,IAAI,8BAA8B,GAAG;AACrC,QAAQ,OAAO;AACf,YAAY,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY;AAC7C,YAAY,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,oBAAoB,CAAC;AAC3E,YAAY,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE;AACrD,YAAY,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC,aAAa;AACrD,YAAY,cAAc,EAAE,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW;AAC1D,YAAY,cAAc,EAAE,CAAC,KAAK,KAAK;AACvC,gBAAgB,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,KAAK;AAChD,YAAY,CAAC;AACb,YAAY,oBAAoB,EAAE,MAAM,IAAI,CAAC,OAAO,CAAC,iBAAiB;AACtE,YAAY,oBAAoB,EAAE,CAAC,KAAK,KAAK;AAC7C,gBAAgB,IAAI,CAAC,OAAO,CAAC,iBAAiB,GAAG,KAAK;AACtD,YAAY,CAAC;AACb,YAAY,WAAW,EAAE,CAAC,IAAI,KAAK;AACnC,gBAAgB,IAAI,CAAC,OAAO,CAAC,QAAQ,GAAG,IAAI;AAC5C,YAAY,CAAC;AACb,YAAY,kBAAkB,EAAE,CAAC,QAAQ,KAAK;AAC9C,gBAAgB,IAAI,CAAC,OAAO,CAAC,eAAe,GAAG,QAAQ;AACvD,YAAY,CAAC;AACb,YAAY,kBAAkB,EAAE,CAAC,IAAI,KAAK;AAC1C,gBAAgB,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC;AAC7C,YAAY,CAAC;AACb,YAAY,0BAA0B,EAAE,MAAM,IAAI,CAAC,0BAA0B,EAAE;AAC/E,SAAS;AACT,IAAI;AACJ,IAAI,0BAA0B,GAAG;AACjC,QAAQ,OAAO,IAAI,CAAC,QAAQ;AAC5B,aAAa,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC5D,aAAa,IAAI,CAAC,GAAG,CAAC;AACtB,IAAI;AACJ,IAAI,gCAAgC,GAAG;AACvC,QAAQ,OAAO,IAAI,CAAC,cAAc;AAClC,aAAa,GAAG,CAAC,CAAC,UAAU,KAAK,CAAC,EAAE,UAAU,CAAC,YAAY,CAAC,CAAC,EAAE,UAAU,CAAC,cAAc,CAAC,CAAC;AAC1F,aAAa,IAAI,CAAC,GAAG,CAAC;AACtB,IAAI;AACJ,IAAI,qBAAqB,GAAG;AAC5B,QAAQ,OAAO;AACf,YAAY,cAAc,EAAE,IAAI,CAAC,OAAO,CAAC,WAAW,KAAK,IAAI;AAC7D,YAAY,gBAAgB,EAAE,IAAI,CAAC,OAAO,CAAC,aAAa,KAAK,IAAI;AACjE,YAAY,cAAc,EAAE,IAAI,CAAC,OAAO,CAAC,WAAW,KAAK,IAAI;AAC7D,YAAY,cAAc,EAAE,IAAI,CAAC,OAAO,CAAC,WAAW,KAAK,IAAI;AAC7D,YAAY,eAAe,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY,KAAK,IAAI;AAC/D,SAAS;AACT,IAAI;AACJ,IAAI,iBAAiB,GAAG;AACxB,QAAQ,OAAOC,iBAA6B,CAAC,IAAI,CAAC,qBAAqB,EAAE,CAAC;AAC1E,IAAI;AACJ,IAAI,gBAAgB,GAAG;AACvB,QAAQ,OAAOC,gBAA4B,CAAC,IAAI,CAAC,qBAAqB,EAAE,CAAC;AACzE,IAAI;AACJ,IAAI,cAAc,GAAG;AACrB,QAAQ,IAAI,EAAE,EAAE,EAAE;AAClB,QAAQ,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,GAAG,CAAC;AACpF,QAAQ,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,GAAG,CAAC;AACtF,QAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,EAAE;AACzC,QAAQ,OAAO;AACf,YAAY,QAAQ,EAAE,KAAK,KAAK,IAAI;AACpC,YAAY,KAAK;AACjB,YAAY,SAAS,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,MAAM;AAC7C,YAAY,eAAe,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC,MAAM;AACzD,YAAY,YAAY,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY;AACnD,YAAY,eAAe,EAAE,IAAI,CAAC,OAAO,CAAC,eAAe;AACzD,YAAY,qBAAqB,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,MAAM,GAAG,EAAE,CAAC,KAAK,CAAC;AACtH,YAAY,mBAAmB,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,MAAM,GAAG,EAAE,CAAC,KAAK,CAAC;AACpH,YAAY,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE;AACjC,YAAY,cAAc,EAAE,IAAI,CAAC,iBAAiB,EAAE;AACpD,YAAY,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,WAAW,KAAK,IAAI;AACzD,YAAY,YAAY,EAAE,IAAI,CAAC,OAAO,CAAC,aAAa,KAAK,IAAI;AAC7D,YAAY,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,WAAW,KAAK,IAAI;AACzD,YAAY,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,WAAW,KAAK,IAAI;AACzD,YAAY,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY,KAAK,IAAI;AAC3D,YAAY,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,OAAO,EAAE;AAC1D,YAAY,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,OAAO,EAAE;AAC1D,YAAY,WAAW;AACvB,YAAY,YAAY;AACxB,SAAS;AACT,IAAI;AACJ,IAAI,gBAAgB,CAAC,OAAO,EAAE;AAC9B,QAAQ,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,EAAE,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,OAAO,CAAC,CAAC;AACnF,QAAQ,IAAI,CAAC,2BAA2B,CAAC,OAAO,CAAC;AACjD,QAAQ,IAAI,CAAC,0BAA0B,CAAC,OAAO,CAAC;AAChD,IAAI;AACJ,IAAI,gBAAgB,CAAC,OAAO,EAAE;AAC9B,QAAQ,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,OAAO,CAAC,CAAC;AAC7E,IAAI;AACJ,IAAI,sBAAsB,CAAC,OAAO,EAAE;AACpC,QAAQ,IAAI,CAAC,kBAAkB,CAAC,sBAAsB,EAAE,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,OAAO,CAAC,CAAC;AACzF,IAAI;AACJ,IAAI,uBAAuB,CAAC,OAAO,EAAE;AACrC,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE;AACpC,QAAQ,IAAI,IAAI,CAAC,OAAO,CAAC,iBAAiB,KAAK,MAAM;AACrD,YAAY;AACZ,QAAQ,IAAI,CAAC,OAAO,CAAC,iBAAiB,GAAG,MAAM;AAC/C,QAAQ,IAAI,CAAC,kBAAkB,CAAC,cAAc,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAClE,IAAI;AACJ,IAAI,2BAA2B,CAAC,OAAO,EAAE;AACzC,QAAQ,MAAM,cAAc,GAAG,IAAI,CAAC,iBAAiB,EAAE;AACvD,QAAQ,MAAM,gBAAgB,GAAG,IAAI,CAAC,OAAO,CAAC,mBAAmB;AACjE,QAAQ,IAAI,gBAAgB,KAAK,cAAc;AAC/C,YAAY;AACZ,QAAQ,IAAI,CAAC,OAAO,CAAC,mBAAmB,GAAG,cAAc;AACzD,QAAQ,IAAI,CAAC,kBAAkB,CAAC,kBAAkB,EAAE,CAAC,cAAc,EAAE,gBAAgB,EAAE,OAAO,CAAC,CAAC;AAChG,IAAI;AACJ,IAAI,0BAA0B,CAAC,OAAO,EAAE;AACxC,QAAQ,MAAM,OAAO,GAAG;AACxB,YAAY,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,OAAO,EAAE;AAC1D,YAAY,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,OAAO,EAAE;AAC1D,SAAS;AACT,QAAQ,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,uBAAuB;AAC7D,QAAQ,IAAI,QAAQ,CAAC,OAAO,KAAK,OAAO,CAAC,OAAO,IAAI,QAAQ,CAAC,OAAO,KAAK,OAAO,CAAC,OAAO;AACxF,YAAY;AACZ,QAAQ,IAAI,CAAC,OAAO,CAAC,uBAAuB,GAAG,OAAO;AACtD,QAAQ,IAAI,CAAC,kBAAkB,CAAC,iBAAiB,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AACtE,IAAI;AACJ,IAAI,cAAc,CAAC,QAAQ,EAAE;AAC7B,QAAQ,IAAI,EAAE,EAAE,EAAE;AAClB,QAAQ,MAAM,aAAa,GAAG,QAAQ,CAAC,MAAM,CAAC,YAAY,CAAC;AAC3D,QAAQ,MAAM,mBAAmB,GAAG,QAAQ,CAAC,MAAM,CAAC,kBAAkB,CAAC;AACvE,QAAQ,MAAM,kBAAkB,GAAG,aAAa,CAAC,MAAM,KAAK,CAAC,IAAI,mBAAmB,CAAC,MAAM,KAAK;AAChG,cAAc;AACd,cAAc,mBAAmB,CAAC,MAAM,KAAK,CAAC,IAAI,aAAa,CAAC,MAAM,KAAK;AAC3E,kBAAkB;AAClB,kBAAkB,IAAI;AACtB,QAAQ,OAAO;AACf,YAAY,YAAY,EAAE,CAAC,EAAE,GAAG,aAAa,CAAC,CAAC,CAAC,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,IAAI;AACvF,YAAY,aAAa;AACzB,YAAY,kBAAkB,EAAE,CAAC,EAAE,GAAG,mBAAmB,CAAC,CAAC,CAAC,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,IAAI;AACnG,YAAY,mBAAmB;AAC/B,YAAY,kBAAkB;AAC9B,SAAS;AACT,IAAI;AACJ,IAAI,YAAY,GAAG;AACnB,QAAQ,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM;AAChC,YAAY,OAAO,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC;AAC1C,QAAQ,OAAO,IAAI,CAAC,cAAc,CAAC,yBAAyB,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AAClF,IAAI;AACJ,IAAI,0BAA0B,CAAC,OAAO,EAAE,QAAQ,EAAE;AAClD,QAAQ,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,0BAA0B;AAChE,QAAQ,IAAI,CAAC,OAAO,CAAC,0BAA0B,GAAG,OAAO;AACzD,QAAQ,IAAI;AACZ,YAAY,OAAO,QAAQ,EAAE;AAC7B,QAAQ;AACR,gBAAgB;AAChB,YAAY,IAAI,CAAC,OAAO,CAAC,0BAA0B,GAAG,QAAQ;AAC9D,QAAQ;AACR,IAAI;AACJ,IAAI,wBAAwB,CAAC,QAAQ,EAAE;AACvC,QAAQ,OAAO,QAAQ,KAAK,YAAY,IAAI,QAAQ,KAAK,WAAW,IAAI,QAAQ,KAAK,YAAY;AACjG,IAAI;AACJ,IAAI,yBAAyB,GAAG;AAChC,QAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa;AAChD,QAAQ,IAAI,CAAC,KAAK;AAClB,YAAY,OAAO,IAAI;AACvB,QAAQ,IAAI,MAAM,GAAG,IAAI;AACzB,QAAQ,IAAI;AACZ,YAAY,IAAI,OAAO,KAAK,CAAC,MAAM,KAAK,UAAU;AAClD,gBAAgB,MAAM,GAAG,KAAK,CAAC,MAAM,EAAE;AACvC,iBAAiB,IAAI,OAAO,KAAK,CAAC,GAAG,KAAK,QAAQ;AAClD,gBAAgB,MAAM,GAAG,KAAK,CAAC,GAAG;AAClC,QAAQ;AACR,QAAQ,MAAM;AACd,YAAY,MAAM,GAAG,IAAI;AACzB,QAAQ;AACR,QAAQ,MAAM,QAAQ,GAAG,MAAM,GAAG,oBAAoB,CAAC,MAAM,CAAC,GAAG,IAAI;AACrE,QAAQ,OAAO,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,GAAG,QAAQ,GAAG,IAAI;AACxE,IAAI;AACJ,IAAI,2BAA2B,CAAC,SAAS,EAAE;AAC3C,QAAQ,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM;AAC3D,YAAY,OAAO,KAAK;AACxB,QAAQ,OAAO,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC;AAClD,IAAI;AACJ,IAAI,wBAAwB,CAAC,KAAK,EAAE,SAAS,EAAE;AAC/C,QAAQ,MAAM,YAAY,GAAG,MAAM,CAAC,KAAK,CAAC;AAC1C,QAAQ,IAAI,yBAAyB,CAAC,YAAY,CAAC;AACnD,YAAY,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC;AAC3C,QAAQ,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,SAAS,CAAC,CAAC,cAAc,EAAE,SAAS,CAAC,4CAA4C,CAAC,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,mCAAmC,CAAC,CAAC;AACvL,QAAQ,OAAO,IAAI;AACnB,IAAI;AACJ,IAAI,8BAA8B,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE;AAC7D,QAAQ,MAAM,EAAE,kBAAkB,EAAE,eAAe,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO;AAC5E,QAAQ,IAAI,KAAK,GAAG,kBAAkB,IAAI,MAAM,GAAG,kBAAkB,EAAE;AACvE,YAAY,MAAM,OAAO,GAAG,CAAC,EAAE,SAAS,CAAC,6BAA6B,EAAE,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,6BAA6B,EAAE,kBAAkB,CAAC,EAAE,CAAC;AAC7I,YAAY,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,UAAU,CAAC,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC;AACpG,YAAY,OAAO,KAAK;AACxB,QAAQ;AACR,QAAQ,MAAM,UAAU,GAAG,KAAK,GAAG,MAAM;AACzC,QAAQ,IAAI,UAAU,GAAG,eAAe,EAAE;AAC1C,YAAY,MAAM,OAAO,GAAG,CAAC,EAAE,SAAS,CAAC,6BAA6B,EAAE,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,0BAA0B,EAAE,eAAe,CAAC,EAAE,CAAC;AACvI,YAAY,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,UAAU,CAAC,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC;AACpG,YAAY,OAAO,KAAK;AACxB,QAAQ;AACR,QAAQ,OAAO,IAAI;AACnB,IAAI;AACJ,IAAI,qBAAqB,CAAC,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,GAAG,EAAE,EAAE;AACtE,QAAQ,IAAI,EAAE;AACd,QAAQ,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,2BAA2B,CAAC,SAAS,CAAC;AAC9E,YAAY,OAAO,KAAK;AACxB,QAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,wBAAwB,CAAC,OAAO,EAAE,SAAS,CAAC;AACvE,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,wBAAwB,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzE,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,MAAM,KAAK,IAAI;AAC7C,YAAY,OAAO,KAAK;AACxB,QAAQ,IAAI,CAAC,IAAI,CAAC,8BAA8B,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,CAAC;AAC1E,YAAY,OAAO,KAAK;AACxB,QAAQ,MAAM,MAAM,GAAG,OAAO,CAAC;AAC/B,cAAc,sBAAsB,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB;AAClE,cAAc,IAAI;AAClB,QAAQ,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,MAAM,CAAC;AAC3C,QAAQ,sBAAsB,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;AAC3F,QAAQ,CAAC,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,MAAM,GAAG,EAAE,CAAC,SAAS,EAAE;AACtF,QAAQ,IAAI,CAAC,8BAA8B,CAAC,SAAS,CAAC;AACtD,QAAQ,OAAO,IAAI;AACnB,IAAI;AACJ,IAAI,0BAA0B,CAAC,OAAO,EAAE;AACxC,QAAQ,IAAI,EAAE,EAAE,EAAE;AAClB,QAAQ,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB;AACvD,QAAQ,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,SAAS,KAAK,IAAI,IAAI,SAAS,KAAK,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC,WAAW,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,CAAC,CAAC;AAChK,QAAQ,MAAM,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,SAAS,KAAK,IAAI,IAAI,SAAS,KAAK,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC,YAAY,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,CAAC,CAAC;AAClK,QAAQ,IAAI,cAAc,GAAG,CAAC,IAAI,eAAe,GAAG,CAAC,EAAE;AACvD,YAAY,OAAO,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,EAAE,eAAe,EAAE;AACrE,QAAQ;AACR,QAAQ,MAAM,aAAa,GAAG,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC;AAC3D,QAAQ,MAAM,cAAc,GAAG,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC;AAC7D,QAAQ,IAAI,yBAAyB,CAAC,aAAa,CAAC,IAAI,yBAAyB,CAAC,cAAc,CAAC,EAAE;AACnG,YAAY,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,EAAE;AAC3F,QAAQ;AACR,QAAQ,OAAO,IAAI;AACnB,IAAI;AACJ,IAAI,8BAA8B,CAAC,SAAS,EAAE;AAC9C,QAAQ,MAAM,OAAO,GAAG,IAAI,CAAC,oBAAoB,CAAC,SAAS,EAAE,KAAK,CAAC;AACnE,QAAQ,IAAI,CAAC,YAAY,EAAE;AAC3B,QAAQ,IAAI,CAAC,QAAQ,EAAE;AACvB,QAAQ,IAAI,CAAC,uBAAuB,EAAE;AACtC,QAAQ,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC;AACtC,QAAQ,IAAI,CAAC,uBAAuB,CAAC,OAAO,CAAC;AAC7C,IAAI;AACJ,IAAI,eAAe,CAAC,OAAO,EAAE,QAAQ,EAAE;AACvC,QAAQ,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM;AAChC,YAAY;AACZ,QAAQ,qBAAqB,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC;AACpG,IAAI;AACJ,IAAI,qCAAqC,CAAC,MAAM,EAAE;AAClD,QAAQ,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE;AACtB,QAAQ,MAAM,CAAC,SAAS,EAAE;AAC1B,QAAQ,MAAM,YAAY,GAAG,MAAM,CAAC,eAAe,EAAE;AACrD,QAAQ,MAAM,CAAC,GAAG,CAAC;AACnB,YAAY,IAAI,EAAE,CAAC,CAAC,EAAE,GAAG,MAAM,CAAC,IAAI,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,CAAC,IAAI,YAAY,CAAC,IAAI;AAC7F,YAAY,GAAG,EAAE,CAAC,CAAC,EAAE,GAAG,MAAM,CAAC,GAAG,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,CAAC,IAAI,YAAY,CAAC,GAAG;AAC1F,SAAS,CAAC;AACV,QAAQ,MAAM,CAAC,SAAS,EAAE;AAC1B,QAAQ,CAAC,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,MAAM,GAAG,EAAE,CAAC,SAAS,EAAE;AACtF,IAAI;AACJ,IAAI,2BAA2B,GAAG;AAClC,QAAQ,OAAO;AACf,YAAY,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM;AACvC,YAAY,gBAAgB,EAAE,IAAI,CAAC,OAAO,CAAC,gBAAgB;AAC3D,YAAY,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO;AACzC,YAAY,iBAAiB,EAAE,IAAI,CAAC,OAAO,CAAC,iBAAiB;AAC7D,YAAY,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC,aAAa;AACrD,YAAY,gBAAgB,EAAE,MAAM,IAAI,CAAC,OAAO,CAAC,aAAa;AAC9D,YAAY,aAAa,EAAE,CAAC,OAAO,EAAE,QAAQ,KAAK;AAClD,gBAAgB,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,QAAQ,CAAC;AACvD,YAAY,CAAC;AACb,YAAY,eAAe,EAAE,CAAC,KAAK,KAAK;AACxC,gBAAgB,IAAI,CAAC,OAAO,CAAC,YAAY,GAAG,KAAK;AACjD,YAAY,CAAC;AACb,YAAY,kBAAkB,EAAE,CAAC,QAAQ,KAAK;AAC9C,gBAAgB,IAAI,CAAC,OAAO,CAAC,eAAe,GAAG,QAAQ;AACvD,YAAY,CAAC;AACb,YAAY,iBAAiB,EAAE,CAAC,KAAK,KAAK;AAC1C,gBAAgB,IAAI,CAAC,OAAO,CAAC,cAAc,GAAG,KAAK;AACnD,YAAY,CAAC;AACb,YAAY,eAAe,EAAE,MAAM,IAAI,CAAC,uBAAuB,EAAE;AACjE,YAAY,eAAe,EAAE,CAAC,QAAQ,KAAK;AAC3C,gBAAgB,IAAI,CAAC,OAAO,CAAC,YAAY,GAAG,QAAQ;AACpD,YAAY,CAAC;AACb,SAAS;AACT,IAAI;AACJ,IAAI,qBAAqB,CAAC,aAAa,EAAE;AACzC,QAAQ,OAAOC,qBAAyB,CAAC,IAAI,CAAC,2BAA2B,EAAE,EAAE,aAAa,CAAC;AAC3F,IAAI;AACJ,IAAI,6BAA6B,CAAC,OAAO,GAAG,EAAE,EAAE;AAChD,QAAQC,6BAAiC,CAAC,IAAI,CAAC,2BAA2B,EAAE,EAAE,OAAO,CAAC;AACtF,IAAI;AACJ,IAAI,0CAA0C,GAAG;AACjD,QAAQ,OAAOC,0CAA8C,CAAC,IAAI,CAAC,2BAA2B,EAAE,CAAC;AACjG,IAAI;AACJ,IAAI,yCAAyC,GAAG;AAChD,QAAQC,yCAA6C,CAAC,IAAI,CAAC,2BAA2B,EAAE,CAAC;AACzF,IAAI;AACJ,IAAI,2BAA2B,GAAG;AAClC,QAAQ,OAAOC,2BAA+B,CAAC,IAAI,CAAC,2BAA2B,EAAE,CAAC;AAClF,IAAI;AACJ,IAAI,iCAAiC,CAAC,QAAQ,EAAE;AAChD,QAAQC,iCAAqC,CAAC,IAAI,CAAC,2BAA2B,EAAE,EAAE,QAAQ,CAAC;AAC3F,IAAI;AACJ,IAAI,qBAAqB,GAAG;AAC5B,QAAQ,OAAO,IAAI,CAAC,cAAc,CAAC,qBAAqB,EAAE;AAC1D,IAAI;AACJ,IAAI,UAAU,CAAC,MAAM,EAAE;AACvB,QAAQ,OAAO,gBAAgB,CAAC,IAAI,CAAC,mBAAmB,CAAC,0BAA0B,EAAE,EAAE,MAAM,CAAC;AAC9F,IAAI;AACJ,IAAI,WAAW,CAAC,OAAO,EAAE;AACzB,QAAQ,OAAO,iBAAiB,CAAC,IAAI,CAAC,mBAAmB,CAAC,0BAA0B,EAAE,EAAE,OAAO,CAAC;AAChG,IAAI;AACJ,IAAI,cAAc,GAAG;AACrB,QAAQ,OAAO,oBAAoB,CAAC,IAAI,CAAC,mBAAmB,CAAC,0BAA0B,EAAE,CAAC;AAC1F,IAAI;AACJ,IAAI,YAAY,GAAG;AACnB,QAAQ,OAAO,kBAAkB,CAAC,IAAI,CAAC,mBAAmB,CAAC,0BAA0B,EAAE,CAAC;AACxF,IAAI;AACJ,IAAI,mBAAmB,GAAG;AAC1B,QAAQ,OAAO,yBAAyB,CAAC,IAAI,CAAC,mBAAmB,CAAC,0BAA0B,EAAE,CAAC;AAC/F,IAAI;AACJ,IAAI,6BAA6B,GAAG;AACpC,QAAQ,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM;AAC3D,YAAY;AACZ,QAAQ,IAAI,CAAC,YAAY,EAAE;AAC3B,QAAQ,IAAI,CAAC,QAAQ,EAAE;AACvB,IAAI;AACJ,IAAI,MAAM,aAAa,CAAC,UAAU,EAAE;AACpC,QAAQ,OAAO,IAAI,CAAC,qBAAqB,CAAC,UAAU,CAAC;AACrD,IAAI;AACJ,IAAI,MAAM,qBAAqB,CAAC,UAAU,EAAE,OAAO,EAAE;AACrD,QAAQ,MAAM,mBAAmB,CAAC,IAAI,CAAC,mBAAmB,CAAC,4BAA4B,EAAE,EAAE,UAAU,EAAE,OAAO,CAAC;AAC/G,IAAI;AACJ,IAAI,SAAS,GAAG;AAChB,QAAQ,IAAI,CAAC,iBAAiB,EAAE;AAChC,QAAQ,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,oBAAoB,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;AACtF,IAAI;AACJ,IAAI,iBAAiB,CAAC,OAAO,EAAE;AAC/B,QAAQ,eAAe,CAAC,IAAI,CAAC,mBAAmB,CAAC,4BAA4B,EAAE,EAAE,OAAO,CAAC;AACzF,IAAI;AACJ,IAAI,IAAI,GAAG;AACX,QAAQ,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU;AACnC,YAAY,OAAO,OAAO,CAAC,OAAO,EAAE;AACpC,QAAQ,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC;AAC7C,YAAY,OAAO,OAAO,CAAC,OAAO,EAAE;AACpC,QAAQ,IAAI,CAAC,iCAAiC,EAAE;AAChD,QAAQ,MAAM,OAAO,GAAG,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE,IAAI,CAAC;AAC/D,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,YAAY;AAC3D,YAAY,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU;AACvC,gBAAgB;AAChB,YAAY,IAAI,CAAC,OAAO,CAAC,2BAA2B,GAAG,MAAM;AAC7D,YAAY,IAAI;AAChB,gBAAgB,MAAM,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,EAAE;AACxD,gBAAgB,IAAI,CAAC,0BAA0B,CAAC,OAAO,CAAC;AACxD,YAAY;AACZ,oBAAoB;AACpB,gBAAgB,IAAI,CAAC,OAAO,CAAC,2BAA2B,GAAG,IAAI;AAC/D,YAAY;AACZ,QAAQ,CAAC,CAAC;AACV,QAAQ,IAAI,CAAC,uBAAuB,CAAC,OAAO,CAAC;AAC7C,QAAQ,OAAO,GAAG,CAAC,OAAO,CAAC,MAAM;AACjC,YAAY,IAAI,CAAC,6BAA6B,EAAE;AAChD,YAAY,IAAI,CAAC,uBAAuB,CAAC,OAAO,CAAC;AACjD,QAAQ,CAAC,CAAC;AACV,IAAI;AACJ,IAAI,IAAI,GAAG;AACX,QAAQ,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU;AACnC,YAAY,OAAO,OAAO,CAAC,OAAO,EAAE;AACpC,QAAQ,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC;AAC7C,YAAY,OAAO,OAAO,CAAC,OAAO,EAAE;AACpC,QAAQ,IAAI,CAAC,iCAAiC,EAAE;AAChD,QAAQ,MAAM,OAAO,GAAG,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE,IAAI,CAAC;AAC/D,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,YAAY;AAC3D,YAAY,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU;AACvC,gBAAgB;AAChB,YAAY,IAAI,CAAC,OAAO,CAAC,2BAA2B,GAAG,MAAM;AAC7D,YAAY,IAAI;AAChB,gBAAgB,MAAM,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,EAAE;AACxD,gBAAgB,IAAI,CAAC,0BAA0B,CAAC,OAAO,CAAC;AACxD,YAAY;AACZ,oBAAoB;AACpB,gBAAgB,IAAI,CAAC,OAAO,CAAC,2BAA2B,GAAG,IAAI;AAC/D,YAAY;AACZ,QAAQ,CAAC,CAAC;AACV,QAAQ,IAAI,CAAC,uBAAuB,CAAC,OAAO,CAAC;AAC7C,QAAQ,OAAO,GAAG,CAAC,OAAO,CAAC,MAAM;AACjC,YAAY,IAAI,CAAC,6BAA6B,EAAE;AAChD,YAAY,IAAI,CAAC,uBAAuB,CAAC,OAAO,CAAC;AACjD,QAAQ,CAAC,CAAC;AACV,IAAI;AACJ,IAAI,UAAU,CAAC,MAAM,GAAG,EAAE,EAAE;AAC5B,QAAQ,OAAO,gBAAgB,CAAC,IAAI,CAAC,mBAAmB,CAAC,qBAAqB,EAAE,EAAE,MAAM,CAAC;AACzF,IAAI;AACJ,IAAI,kBAAkB,GAAG;AACzB,QAAQ,wBAAwB,CAAC,IAAI,CAAC,mBAAmB,CAAC,qBAAqB,EAAE,CAAC;AAClF,IAAI;AACJ,IAAI,cAAc,CAAC,OAAO,GAAG,EAAE,EAAE;AACjC,QAAQC,oBAAwB,CAAC,IAAI,CAAC,mBAAmB,CAAC,qBAAqB,EAAE,EAAE,OAAO,CAAC;AAC3F,IAAI;AACJ,IAAI,qBAAqB,GAAG;AAC5B,QAAQ,OAAO,IAAI,CAAC,cAAc,CAAC,qBAAqB,EAAE;AAC1D,IAAI;AACJ,IAAI,kBAAkB,CAAC,IAAI,EAAE;AAC7B,QAAQ,MAAM,OAAO,GAAG,IAAI,CAAC,qBAAqB,EAAE;AACpD,QAAQ,IAAI,CAAC,OAAO;AACpB,YAAY;AACZ,QAAQ,kBAAkB,CAAC,OAAO,EAAE,IAAI,CAAC;AACzC,IAAI;AACJ,IAAI,iBAAiB,GAAG;AACxB,QAAQ,MAAM,OAAO,GAAG,IAAI,CAAC,qBAAqB,EAAE;AACpD,QAAQ,IAAI,CAAC,OAAO;AACpB,YAAY;AACZ,QAAQ,iBAAiB,CAAC,OAAO,CAAC;AAClC,IAAI;AACJ,IAAI,aAAa,CAAC,IAAI,EAAE;AACxB,QAAQ,MAAM,OAAO,GAAG,IAAI,CAAC,qBAAqB,EAAE;AACpD,QAAQ,IAAI,CAAC,OAAO;AACpB,YAAY;AACZ,QAAQ,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC;AACpC,IAAI;AACJ,IAAI,gBAAgB,CAAC,IAAI,EAAE;AAC3B,QAAQ,MAAM,OAAO,GAAG,IAAI,CAAC,qBAAqB,EAAE;AACpD,QAAQ,IAAI,CAAC,OAAO;AACpB,YAAY;AACZ,QAAQ,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC;AACvC,IAAI;AACJ,IAAI,iCAAiC,CAAC,MAAM,EAAE;AAC9C,QAAQC,iCAAqC,CAAC,IAAI,CAAC,mBAAmB,CAAC,8BAA8B,EAAE,EAAE,MAAM,CAAC;AAChH,IAAI;AACJ,IAAI,oBAAoB,CAAC,MAAM,EAAE;AACjC,QAAQC,oBAAwB,CAAC,IAAI,CAAC,mBAAmB,CAAC,8BAA8B,EAAE,EAAE,MAAM,CAAC;AACnG,IAAI;AACJ,IAAI,sBAAsB,CAAC,QAAQ,EAAE;AACrC,QAAQC,sBAA0B,CAAC,IAAI,CAAC,mBAAmB,CAAC,8BAA8B,EAAE,EAAE,QAAQ,CAAC;AACvG,IAAI;AACJ,IAAI,oBAAoB,GAAG;AAC3B,QAAQ,OAAO,IAAI,CAAC,cAAc,CAAC,oBAAoB,EAAE;AACzD,IAAI;AACJ,IAAI,cAAc,GAAG;AACrB,QAAQ,cAAc,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC;AACnD,IAAI;AACJ,IAAI,uBAAuB,CAAC,YAAY,EAAE;AAC1C,QAAQ,uBAAuB,CAAC,IAAI,CAAC,oBAAoB,EAAE,EAAE,YAAY,CAAC;AAC1E,IAAI;AACJ,IAAI,aAAa,GAAG;AACpB,QAAQ,mBAAmB,CAAC,IAAI,CAAC,mBAAmB,CAAC,+BAA+B,EAAE,CAAC;AACvF,IAAI;AACJ,IAAI,YAAY,GAAG;AACnB,QAAQ,kBAAkB,CAAC,IAAI,CAAC,mBAAmB,CAAC,+BAA+B,EAAE,CAAC;AACtF,IAAI;AACJ,IAAI,UAAU,GAAG;AACjB,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,KAAK,IAAI;AAChD,IAAI;AACJ,IAAI,oBAAoB,CAAC,MAAM,GAAG,EAAE,EAAE;AACtC,QAAQ,OAAO,0BAA0B,CAAC,IAAI,CAAC,mBAAmB,CAAC,+BAA+B,EAAE,EAAE,MAAM,CAAC;AAC7G,IAAI;AACJ,IAAI,aAAa,GAAG;AACpB,QAAQ,mBAAmB,CAAC,IAAI,CAAC,mBAAmB,CAAC,+BAA+B,EAAE,CAAC;AACvF,IAAI;AACJ,IAAI,YAAY,GAAG;AACnB,QAAQ,kBAAkB,CAAC,IAAI,CAAC,mBAAmB,CAAC,+BAA+B,EAAE,CAAC;AACtF,IAAI;AACJ,IAAI,UAAU,GAAG;AACjB,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,KAAK,IAAI;AAChD,IAAI;AACJ,IAAI,aAAa,GAAG;AACpB,QAAQ,OAAO,iCAAiC,CAAC,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC;AAChF,IAAI;AACJ,IAAI,aAAa,CAAC,MAAM,EAAE;AAC1B,QAAQ,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE,eAAe,CAAC;AAC1D,IAAI;AACJ,IAAI,eAAe,GAAG;AACtB,QAAQ,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;AACpF,IAAI;AACJ,IAAI,YAAY,CAAC,KAAK,EAAE;AACxB,QAAQ,IAAI,CAAC,oBAAoB,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,cAAc,CAAC;AAClE,IAAI;AACJ,IAAI,eAAe,CAAC,IAAI,EAAE;AAC1B,QAAQ,IAAI,CAAC,oBAAoB,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,iBAAiB,CAAC;AACxE,IAAI;AACJ,IAAI,aAAa,GAAG;AACpB,QAAQ,OAAO,uBAAuB,CAAC,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC;AACtE,IAAI;AACJ,IAAI,aAAa,CAAC,MAAM,EAAE;AAC1B,QAAQ,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE,eAAe,CAAC;AAC1D,IAAI;AACJ,IAAI,eAAe,GAAG;AACtB,QAAQ,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;AACpF,IAAI;AACJ,IAAI,YAAY,CAAC,KAAK,EAAE;AACxB,QAAQ,IAAI,CAAC,oBAAoB,CAAC,EAAE,KAAK,EAAE,EAAE,cAAc,CAAC;AAC5D,IAAI;AACJ,IAAI,gBAAgB,CAAC,IAAI,EAAE;AAC3B,QAAQ,IAAI,CAAC,oBAAoB,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,kBAAkB,CAAC;AAC1E,IAAI;AACJ,IAAI,cAAc,CAAC,IAAI,EAAE;AACzB,QAAQ,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW;AAC7D,YAAY;AACZ,QAAQ,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,gBAAgB,CAAC;AACvD,YAAY;AACZ,QAAQ,IAAI,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,OAAO,EAAE;AAClD,YAAY,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,SAAS,CAAC,2DAA2D,CAAC,EAAE,gCAAgC,CAAC;AAC7J,YAAY;AACZ,QAAQ;AACR,QAAQC,cAAkB,CAAC,IAAI,CAAC,0BAA0B,EAAE,EAAE,IAAI,CAAC;AACnE,QAAQ,IAAI,CAAC,YAAY,EAAE;AAC3B,QAAQ,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,oBAAoB,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC;AACjF,IAAI;AACJ,IAAI,cAAc,GAAG;AACrB,QAAQ,IAAI,EAAE,EAAE,EAAE;AAClB,QAAQ,OAAO,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,MAAM,GAAG,EAAE,CAAC,OAAO,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,IAAI;AAC3I,IAAI;AACJ,IAAI,eAAe,GAAG;AACtB,QAAQ,OAAO,yBAAyB,CAAC,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC;AAC1E,IAAI;AACJ,IAAI,eAAe,CAAC,MAAM,EAAE;AAC5B,QAAQ,IAAI,CAAC,sBAAsB,CAAC,MAAM,EAAE,iBAAiB,CAAC;AAC9D,IAAI;AACJ,IAAI,iBAAiB,GAAG;AACxB,QAAQ,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,OAAO,CAAC,mBAAmB,EAAE,mBAAmB,CAAC;AAC1F,IAAI;AACJ,IAAI,qBAAqB,CAAC,MAAM,GAAG,EAAE,EAAE;AACvC,QAAQ,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM;AAChC,YAAY,OAAO,IAAI;AACvB,QAAQ,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,uBAAuB,CAAC;AAC9D,YAAY,OAAO,IAAI;AACvB,QAAQ,OAAOC,qBAAyB,CAAC,IAAI,CAAC,2BAA2B,EAAE,EAAE,MAAM,CAAC;AACpF,IAAI;AACJ,IAAI,cAAc,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,KAAK,EAAE;AAClE,QAAQ,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM;AAChC,YAAY;AACZ,QAAQ,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,gBAAgB,CAAC;AACvD,YAAY;AACZ,QAAQC,cAAkB,CAAC,IAAI,CAAC,2BAA2B,EAAE,EAAE,KAAK,CAAC;AACrE,QAAQ,MAAM,eAAe,GAAG,IAAI,CAAC,oBAAoB,CAAC,gBAAgB,EAAE,KAAK,CAAC;AAClF,QAAQ,IAAI,CAAC,uBAAuB,CAAC,eAAe,CAAC;AACrD,QAAQ,IAAI,CAAC,gBAAgB,CAAC,eAAe,CAAC;AAC9C,IAAI;AACJ,IAAI,aAAa,GAAG;AACpB,QAAQ,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY;AAC9D,YAAY;AACZ,QAAQ,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,eAAe,CAAC;AACtD,YAAY;AACZ,QAAQC,aAAiB,CAAC,IAAI,CAAC,2BAA2B,EAAE,CAAC;AAC7D,QAAQ,MAAM,eAAe,GAAG,IAAI,CAAC,oBAAoB,CAAC,eAAe,EAAE,KAAK,CAAC;AACjF,QAAQ,IAAI,CAAC,uBAAuB,CAAC,eAAe,CAAC;AACrD,QAAQ,IAAI,CAAC,gBAAgB,CAAC,eAAe,CAAC;AAC9C,IAAI;AACJ,IAAI,WAAW,GAAG;AAClB,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,KAAK,IAAI;AACjD,IAAI;AACJ,IAAI,cAAc,GAAG;AACrB,QAAQ,OAAO,kCAAkC,CAAC,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC;AAClF,IAAI;AACJ,IAAI,cAAc,CAAC,MAAM,EAAE;AAC3B,QAAQ,IAAI,CAAC,qBAAqB,CAAC,MAAM,EAAE,gBAAgB,CAAC;AAC5D,IAAI;AACJ,IAAI,gBAAgB,GAAG;AACvB,QAAQ,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE,kBAAkB,CAAC;AACvF,IAAI;AACJ,IAAI,wBAAwB,GAAG;AAC/B,QAAQ,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM;AAChC,YAAY;AACZ,QAAQ,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,0BAA0B,CAAC;AACjE,YAAY;AACZ,QAAQ,MAAM,eAAe,GAAG,IAAI,CAAC,oBAAoB,CAAC,0BAA0B,EAAE,KAAK,CAAC;AAC5F,QAAQ,8BAA8B,CAAC,IAAI,CAAC,mBAAmB,CAAC,+BAA+B,EAAE,EAAE,eAAe,CAAC;AACnH,IAAI;AACJ,IAAI,oBAAoB,CAAC,OAAO,GAAG,EAAE,EAAE;AACvC,QAAQ,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM;AAChC,YAAY;AACZ,QAAQ,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,sBAAsB,EAAE,OAAO,CAAC;AACtE,YAAY;AACZ,QAAQ,MAAM,eAAe,GAAG,IAAI,CAAC,oBAAoB,CAAC,sBAAsB,EAAE,KAAK,CAAC;AACxF,QAAQ,0BAA0B,CAAC,IAAI,CAAC,mBAAmB,CAAC,+BAA+B,EAAE,EAAE,OAAO,EAAE,eAAe,CAAC;AACxH,IAAI;AACJ,IAAI,gBAAgB,CAAC,YAAY,EAAE,MAAM,EAAE;AAC3C,QAAQ,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM;AAChC,YAAY;AACZ,QAAQ,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,kBAAkB,CAAC;AACzD,YAAY;AACZ,QAAQ,MAAM,eAAe,GAAG,IAAI,CAAC,oBAAoB,CAAC,kBAAkB,EAAE,KAAK,CAAC;AACpF,QAAQ,sBAAsB,CAAC,IAAI,CAAC,mBAAmB,CAAC,+BAA+B,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,eAAe,CAAC;AACjI,IAAI;AACJ,IAAI,wBAAwB,CAAC,MAAM,EAAE;AACrC,QAAQ,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM;AAChC,YAAY;AACZ,QAAQ,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,0BAA0B,CAAC;AACjE,YAAY;AACZ,QAAQ,MAAM,eAAe,GAAG,IAAI,CAAC,oBAAoB,CAAC,0BAA0B,EAAE,KAAK,CAAC;AAC5F,QAAQ,8BAA8B,CAAC,IAAI,CAAC,mBAAmB,CAAC,+BAA+B,EAAE,EAAE,MAAM,EAAE,eAAe,CAAC;AAC3H,IAAI;AACJ,IAAI,oBAAoB,GAAG;AAC3B,QAAQ,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM;AAChC,YAAY;AACZ,QAAQ,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,sBAAsB,CAAC;AAC7D,YAAY;AACZ,QAAQ,IAAI,CAAC,iCAAiC,EAAE;AAChD,QAAQ,MAAM,eAAe,GAAG,IAAI,CAAC,oBAAoB,CAAC,sBAAsB,EAAE,KAAK,CAAC;AACxF,QAAQ,6BAA6B,CAAC,IAAI,CAAC,mBAAmB,CAAC,+BAA+B,EAAE,EAAE,eAAe,CAAC;AAClH,IAAI;AACJ,IAAI,0BAA0B,GAAG;AACjC,QAAQ,IAAI,CAAC,0BAA0B,CAAC,4BAA4B,CAAC;AACrE,IAAI;AACJ,IAAI,0BAA0B,GAAG;AACjC,QAAQ,IAAI,CAAC,0BAA0B,CAAC,4BAA4B,CAAC;AACrE,IAAI;AACJ,IAAI,0BAA0B,GAAG;AACjC,QAAQ,IAAI,CAAC,0BAA0B,CAAC,4BAA4B,CAAC;AACrE,IAAI;AACJ,IAAI,wBAAwB,GAAG;AAC/B,QAAQ,IAAI,CAAC,0BAA0B,CAAC,0BAA0B,CAAC;AACnE,IAAI;AACJ,IAAI,0BAA0B,GAAG;AACjC,QAAQ,OAAO,IAAI,CAAC,cAAc,CAAC,0BAA0B,EAAE;AAC/D,IAAI;AACJ,IAAI,oBAAoB,GAAG;AAC3B,QAAQ,oBAAoB,CAAC,IAAI,CAAC,0BAA0B,EAAE,CAAC;AAC/D,IAAI;AACJ,IAAI,6BAA6B,CAAC,kBAAkB,EAAE;AACtD,QAAQ,6BAA6B,CAAC,IAAI,CAAC,0BAA0B,EAAE,EAAE,kBAAkB,CAAC;AAC5F,IAAI;AACJ,IAAI,0BAA0B,GAAG;AACjC,QAAQ,OAAO,IAAI,CAAC,cAAc,CAAC,0BAA0B,EAAE;AAC/D,IAAI;AACJ,IAAI,0BAA0B,GAAG;AACjC,QAAQ,OAAO,IAAI,CAAC,cAAc,CAAC,0BAA0B,EAAE;AAC/D,IAAI;AACJ,IAAI,2BAA2B,GAAG;AAClC,QAAQ,OAAO,IAAI,CAAC,cAAc,CAAC,2BAA2B,EAAE;AAChE,IAAI;AACJ,IAAI,oBAAoB,CAAC,MAAM,EAAE,SAAS,EAAE;AAC5C,QAAQ,0BAA0B,CAAC,IAAI,CAAC,mBAAmB,CAAC,iCAAiC,EAAE,EAAE,MAAM,EAAE,SAAS,CAAC;AACnH,IAAI;AACJ,IAAI,oBAAoB,CAAC,MAAM,EAAE,SAAS,EAAE;AAC5C,QAAQ,0BAA0B,CAAC,IAAI,CAAC,mBAAmB,CAAC,iCAAiC,EAAE,EAAE,MAAM,EAAE,SAAS,CAAC;AACnH,IAAI;AACJ,IAAI,sBAAsB,CAAC,MAAM,EAAE,SAAS,EAAE;AAC9C,QAAQ,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM;AAChC,YAAY;AACZ,QAAQ,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC;AAChD,YAAY;AACZ,QAAQ,MAAM,aAAa,GAAG,4BAA4B,CAAC,MAAM,CAAC;AAClE,QAAQ,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;AACtC,YAAY,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,SAAS,CAAC,uCAAuC,EAAE,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AACxI,QAAQ;AACR,QAAQ,MAAM,IAAI,GAAG,sBAAsB,CAAC,IAAI,CAAC,OAAO,CAAC,mBAAmB,EAAE,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC;AACvH,QAAQ,IAAI,6BAA6B,CAAC,IAAI,CAAC,OAAO,CAAC,mBAAmB,EAAE,IAAI,CAAC;AACjF,YAAY;AACZ,QAAQ,IAAI,CAAC,OAAO,CAAC,mBAAmB,GAAG,IAAI;AAC/C,QAAQ,mBAAmB,CAAC,IAAI,CAAC,0BAA0B,EAAE,CAAC;AAC9D,QAAQ,IAAI,CAAC,YAAY,EAAE;AAC3B,QAAQ,IAAI,CAAC,QAAQ,EAAE;AACvB,QAAQ,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,oBAAoB,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;AAC1E,IAAI;AACJ,IAAI,qBAAqB,CAAC,MAAM,EAAE,SAAS,EAAE;AAC7C,QAAQ,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM;AAChC,YAAY;AACZ,QAAQ,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC;AAChD,YAAY;AACZ,QAAQ,MAAM,aAAa,GAAG,qCAAqC,CAAC,MAAM,CAAC;AAC3E,QAAQ,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;AACtC,YAAY,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,SAAS,CAAC,sCAAsC,EAAE,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AACvI,QAAQ;AACR,QAAQ,MAAM,IAAI,GAAG,+BAA+B,CAAC,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC;AAC9H,QAAQ,IAAI,sCAAsC,CAAC,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE,IAAI,CAAC;AACzF,YAAY;AACZ,QAAQ,IAAI,CAAC,OAAO,CAAC,kBAAkB,GAAG,IAAI;AAC9C,QAAQ,mBAAmB,CAAC,IAAI,CAAC,2BAA2B,EAAE,CAAC;AAC/D,QAAQ,IAAI,CAAC,YAAY,EAAE;AAC3B,QAAQ,IAAI,CAAC,QAAQ,EAAE;AACvB,QAAQ,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,oBAAoB,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;AAC1E,IAAI;AACJ,IAAI,mBAAmB,CAAC,KAAK,EAAE;AAC/B,QAAQ,yBAAyB,CAAC,IAAI,CAAC,mBAAmB,CAAC,iCAAiC,EAAE,EAAE,KAAK,CAAC;AACtG,IAAI;AACJ,IAAI,sBAAsB,CAAC,IAAI,EAAE;AACjC,QAAQ,4BAA4B,CAAC,IAAI,CAAC,mBAAmB,CAAC,iCAAiC,EAAE,EAAE,IAAI,CAAC;AACxG,IAAI;AACJ,IAAI,mBAAmB,CAAC,KAAK,EAAE;AAC/B,QAAQ,yBAAyB,CAAC,IAAI,CAAC,mBAAmB,CAAC,iCAAiC,EAAE,EAAE,KAAK,CAAC;AACtG,IAAI;AACJ,IAAI,uBAAuB,CAAC,IAAI,EAAE;AAClC,QAAQ,6BAA6B,CAAC,IAAI,CAAC,mBAAmB,CAAC,iCAAiC,EAAE,EAAE,IAAI,CAAC;AACzG,IAAI;AACJ,IAAI,0BAA0B,CAAC,SAAS,EAAE;AAC1C,QAAQ,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM;AAChC,YAAY;AACZ,QAAQ,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC;AAChD,YAAY;AACZ,QAAQC,0BAA8B,CAAC,IAAI,CAAC,mBAAmB,CAAC,+BAA+B,EAAE,EAAE,SAAS,CAAC;AAC7G,IAAI;AACJ,IAAI,MAAM,UAAU,GAAG;AACvB,QAAQ,MAAM,gBAAgB,CAAC,IAAI,CAAC,mBAAmB,CAAC,uBAAuB,EAAE,CAAC;AAClF,IAAI;AACJ,IAAI,MAAM,aAAa,CAAC,OAAO,EAAE;AACjC,QAAQ,MAAM,mBAAmB,CAAC,IAAI,CAAC,mBAAmB,CAAC,uBAAuB,EAAE,EAAE,OAAO,CAAC;AAC9F,IAAI;AACJ,IAAI,MAAM,iBAAiB,CAAC,OAAO,EAAE;AACrC,QAAQ,OAAO,uBAAuB,CAAC,IAAI,CAAC,mBAAmB,CAAC,uBAAuB,EAAE,EAAE,OAAO,CAAC;AACnG,IAAI;AACJ,IAAI,MAAM,eAAe,CAAC,OAAO,EAAE;AACnC,QAAQ,OAAO,qBAAqB,CAAC,IAAI,CAAC,mBAAmB,CAAC,uBAAuB,EAAE,EAAE,OAAO,CAAC;AACjG,IAAI;AACJ,IAAI,uBAAuB,GAAG;AAC9B,QAAQ,OAAO,qBAAqB,CAAC,IAAI,CAAC,mBAAmB,CAAC,4BAA4B,EAAE,CAAC;AAC7F,IAAI;AACJ,IAAI,eAAe,GAAG;AACtB,QAAQ,qBAAqB,CAAC,IAAI,CAAC,mBAAmB,CAAC,uBAAuB,EAAE,CAAC;AACjF,IAAI;AACJ,IAAI,cAAc,GAAG;AACrB,QAAQ,oBAAoB,CAAC,IAAI,CAAC,mBAAmB,CAAC,uBAAuB,EAAE,CAAC;AAChF,IAAI;AACJ,IAAI,YAAY,GAAG;AACnB,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,aAAa,KAAK,IAAI;AAClD,IAAI;AACJ,IAAI,eAAe,GAAG;AACtB,QAAQ,OAAO,yBAAyB,CAAC,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC;AAC1E,IAAI;AACJ,IAAI,eAAe,CAAC,MAAM,EAAE;AAC5B,QAAQ,IAAI,CAAC,sBAAsB,CAAC,MAAM,EAAE,iBAAiB,CAAC;AAC9D,IAAI;AACJ,IAAI,iBAAiB,GAAG;AACxB,QAAQ,uBAAuB,CAAC,IAAI,CAAC,mBAAmB,CAAC,uBAAuB,EAAE,CAAC;AACnF,IAAI;AACJ,IAAI,kBAAkB,CAAC,IAAI,EAAE;AAC7B,QAAQ,IAAI,CAAC,sBAAsB,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,oBAAoB,CAAC;AAC9E,IAAI;AACJ,IAAI,kBAAkB,CAAC,IAAI,EAAE;AAC7B,QAAQ,IAAI,CAAC,sBAAsB,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,oBAAoB,CAAC;AAC9E,IAAI;AACJ,IAAI,sBAAsB,CAAC,MAAM,EAAE,SAAS,EAAE;AAC9C,QAAQ,4BAA4B,CAAC,IAAI,CAAC,mBAAmB,CAAC,uBAAuB,EAAE,EAAE,MAAM,EAAE,SAAS,CAAC;AAC3G,IAAI;AACJ,IAAI,4BAA4B,GAAG;AACnC,QAAQ,OAAO,IAAI,CAAC,cAAc,CAAC,4BAA4B,EAAE;AACjE,IAAI;AACJ,IAAI,aAAa,CAAC,OAAO,GAAG,EAAE,EAAE;AAChC,QAAQ,mBAAmB,CAAC,IAAI,CAAC,mBAAmB,CAAC,qBAAqB,EAAE,EAAE,OAAO,CAAC;AACtF,IAAI;AACJ,IAAI,kBAAkB,CAAC,WAAW,EAAE;AACpC,QAAQ,wBAAwB,CAAC,IAAI,CAAC,mBAAmB,CAAC,qBAAqB,EAAE,EAAE,WAAW,CAAC;AAC/F,IAAI;AACJ,IAAI,UAAU,GAAG;AACjB,QAAQ,gBAAgB,CAAC,IAAI,CAAC,mBAAmB,CAAC,qBAAqB,EAAE,CAAC;AAC1E,IAAI;AACJ,IAAI,MAAM,SAAS,GAAG;AACtB,QAAQ,MAAM,eAAe,CAAC,IAAI,CAAC,mBAAmB,CAAC,qBAAqB,EAAE,CAAC;AAC/E,IAAI;AACJ,IAAI,0BAA0B,CAAC,cAAc,EAAE;AAC/C,QAAQ,OAAO,IAAI,CAAC,cAAc,CAAC,0BAA0B,CAAC,cAAc,CAAC;AAC7E,IAAI;AACJ,IAAI,YAAY,GAAG;AACnB,QAAQ,qBAAqB,CAAC;AAC9B,YAAY,YAAY,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY;AACnD,YAAY,iBAAiB,EAAE,IAAI,CAAC,oBAAoB,EAAE;AAC1D,YAAY,YAAY,EAAE,IAAI,CAAC,eAAe,EAAE;AAChD,YAAY,UAAU,EAAE,IAAI,CAAC,aAAa,EAAE;AAC5C,YAAY,UAAU,EAAE,IAAI,CAAC,aAAa,EAAE;AAC5C,YAAY,WAAW,EAAE,IAAI,CAAC,cAAc,EAAE;AAC9C,YAAY,YAAY,EAAE,IAAI,CAAC,eAAe,EAAE;AAChD,YAAY,WAAW,EAAE,IAAI,CAAC,cAAc,EAAE;AAC9C,SAAS,EAAE,CAAC,GAAG,KAAK,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;AAC7C,IAAI;AACJ,IAAI,MAAM,gBAAgB,GAAG;AAC7B,QAAQ,MAAM,sBAAsB,CAAC,IAAI,CAAC,mBAAmB,CAAC,uBAAuB,EAAE,CAAC;AACxF,IAAI;AACJ,IAAI,QAAQ,GAAG;AACf,QAAQ,MAAM,QAAQ,GAAG,0BAA0B,CAAC,IAAI,CAAC,OAAO,CAAC;AACjE,QAAQ,IAAI,CAAC,QAAQ;AACrB,YAAY;AACZ,QAAQ,uBAAuB,CAAC,QAAQ,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK;AAC5D,YAAY,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,OAAO,CAAC;AAChD,QAAQ,CAAC,CAAC;AACV,IAAI;AACJ,IAAI,0BAA0B,GAAG;AACjC,QAAQ,OAAO;AACf,YAAY,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ;AAC3C,YAAY,mBAAmB,EAAE,IAAI,CAAC,OAAO,CAAC,0BAA0B;AACxE,YAAY,uBAAuB,EAAE,IAAI,CAAC,OAAO,CAAC,8BAA8B;AAChF,YAAY,wBAAwB,EAAE,IAAI,CAAC,OAAO,CAAC,+BAA+B;AAClF,YAAY,UAAU,EAAE,CAAC,GAAG,KAAK,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC;AACzD,SAAS;AACT,IAAI;AACJ,IAAI,iBAAiB,CAAC,GAAG,EAAE,SAAS,EAAE;AACtC,QAAQ,uBAAuB,CAAC,IAAI,CAAC,0BAA0B,EAAE,EAAE,GAAG,EAAE,SAAS,CAAC;AAClF,IAAI;AACJ,IAAI,4BAA4B,GAAG;AACnC,QAAQ,kCAAkC,CAAC,IAAI,CAAC,0BAA0B,EAAE,CAAC;AAC7E,IAAI;AACJ,IAAI,uBAAuB,GAAG;AAC9B,QAAQ9B,qBAAyB,CAAC,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,eAAe,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,GAAG,KAAK,CAAC;AAC7K,IAAI;AACJ,IAAI,OAAO,GAAG;AACd,QAAQ,KAAK,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC;AACxC,IAAI;AACJ,IAAI,MAAM,YAAY,GAAG;AACzB,QAAQ,MAAM,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;AACxC,IAAI;AACJ,IAAI,eAAe,CAAC,oBAAoB,EAAE;AAC1C,QAAQ,IAAI,EAAE;AACd,QAAQ,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE;AACrC,YAAY,OAAO,oBAAoB,GAAG,OAAO,CAAC,OAAO,EAAE,GAAG,SAAS;AACvE,QAAQ;AACR,QAAQ,MAAM,OAAO,GAAG,IAAI,CAAC,oBAAoB,CAAC,SAAS,EAAE,KAAK,CAAC;AACnE,QAAQ,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa;AACxD,QAAQ,IAAI,CAAC,OAAO,CAAC,UAAU,GAAG,IAAI;AACtC,QAAQ,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,YAAY,EAAE;AAClD,QAAQ,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE;AACtC,QAAQ,CAAC,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,MAAM,GAAG,EAAE,CAAC,SAAS,EAAE;AAC3F,QAAQ,4BAA4B,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC;AACjG,QAAQ,IAAI,CAAC,OAAO,CAAC,eAAe,GAAG,IAAI;AAC3C,QAAQ,IAAI,CAAC,OAAO,CAAC,gBAAgB,GAAG,IAAI;AAC5C,QAAQ,IAAI,CAAC,4BAA4B,EAAE;AAC3C,QAAQ,uBAAuB,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,KAAK,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,MAAMf,UAAc,CAAC,IAAI,CAAC,0BAA0B,EAAE,CAAC,EAAE,MAAM;AACvJ,YAAY,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,IAAI;AAC3C,QAAQ,CAAC,CAAC;AACV,QAAQ,uBAAuB,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,KAAK,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,MAAMK,cAAkB,CAAC,IAAI,CAAC,4BAA4B,EAAE,CAAC,EAAE,MAAM;AAC/J,YAAY,IAAI,CAAC,OAAO,CAAC,aAAa,GAAG,IAAI;AAC7C,QAAQ,CAAC,CAAC;AACV,QAAQ,uBAAuB,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,KAAK,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,MAAMZ,YAAgB,CAAC,IAAI,CAAC,0BAA0B,EAAE,CAAC,EAAE,MAAM;AACzJ,YAAY,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,IAAI;AAC3C,QAAQ,CAAC,CAAC;AACV,QAAQ,uBAAuB,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,KAAK,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,MAAMG,YAAgB,CAAC,IAAI,CAAC,0BAA0B,EAAE,CAAC,EAAE,MAAM;AACzJ,YAAY,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,IAAI;AAC3C,QAAQ,CAAC,CAAC;AACV,QAAQ,uBAAuB,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,KAAK,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,MAAMgD,aAAiB,CAAC,IAAI,CAAC,2BAA2B,EAAE,CAAC,EAAE,MAAM;AAC5J,YAAY,IAAI,CAAC,OAAO,CAAC,YAAY,GAAG,IAAI;AAC5C,QAAQ,CAAC,CAAC;AACV,QAAQ,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC;AAC3C,cAAc,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM;AACrD,cAAc,OAAO,CAAC,OAAO,EAAE;AAC/B,QAAQ,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE;AACxC,QAAQ,IAAI,aAAa,EAAE;AAC3B,YAAY,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,EAAE,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;AAC/E,QAAQ;AACR,QAAQ,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC;AACtC,QAAQ,IAAI,CAAC,uBAAuB,CAAC,OAAO,CAAC;AAC7C,QAAQ,IAAI,CAAC,kBAAkB,CAAC,kBAAkB,EAAE,CAAC,OAAO,CAAC,CAAC;AAC9D,QAAQ,IAAI,oBAAoB;AAChC,YAAY,OAAO,aAAa;AAChC,QAAQ,OAAO,SAAS;AACxB,IAAI;AACJ;;;;;;;;;;;;;"}