ngx-open-map-wrapper/node_modules/@maplibre/maplibre-gl-style-spec/dist/index.mjs.map

1 line
655 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{"version":3,"file":"index.mjs","sources":["../src/util/ref_properties.ts","../src/deref.ts","../src/util/deep_equal.ts","../src/diff.ts","../src/error/validation_error.ts","../src/error/parsing_error.ts","../src/util/extend.ts","../src/expression/parsing_error.ts","../src/expression/scope.ts","../src/expression/types.ts","../src/expression/types/color_spaces.ts","../src/util/get_own.ts","../src/expression/types/parse_css_color.ts","../src/util/interpolate-primitives.ts","../src/expression/types/color.ts","../src/expression/types/collator.ts","../src/expression/types/formatted.ts","../src/expression/types/padding.ts","../src/expression/types/number_array.ts","../src/expression/types/color_array.ts","../src/expression/runtime_error.ts","../src/expression/types/variable_anchor_offset_collection.ts","../src/expression/types/resolved_image.ts","../src/expression/types/projection_definition.ts","../src/expression/values.ts","../src/expression/definitions/literal.ts","../src/expression/definitions/assertion.ts","../src/expression/definitions/coercion.ts","../src/expression/evaluation_context.ts","../src/expression/parsing_context.ts","../src/expression/definitions/let.ts","../src/expression/definitions/var.ts","../src/expression/definitions/at.ts","../src/expression/definitions/in.ts","../src/expression/definitions/index_of.ts","../src/expression/definitions/match.ts","../src/expression/definitions/case.ts","../src/expression/definitions/slice.ts","../src/expression/stops.ts","../src/expression/definitions/step.ts","../node_modules/@mapbox/unitbezier/index.js","../src/expression/definitions/interpolate.ts","../src/expression/definitions/coalesce.ts","../src/expression/definitions/comparison.ts","../src/expression/definitions/collator.ts","../src/expression/definitions/number_format.ts","../src/expression/definitions/format.ts","../src/expression/definitions/image.ts","../src/expression/definitions/length.ts","../src/util/geometry_util.ts","../src/expression/definitions/within.ts","../node_modules/tinyqueue/index.js","../node_modules/quickselect/index.js","../src/util/classify_rings.ts","../src/util/cheap_ruler.ts","../src/expression/definitions/distance.ts","../src/expression/definitions/global_state.ts","../src/expression/definitions/index.ts","../src/expression/compound_expression.ts","../src/util/result.ts","../src/util/properties.ts","../src/util/get_type.ts","../src/function/index.ts","../src/expression/index.ts","../src/feature_filter/index.ts","../src/feature_filter/convert.ts","../src/function/convert.ts","../src/visit.ts","../src/group_by_layout.ts","../src/empty.ts","../src/validate/validate_constants.ts","../src/util/unbundle_jsonlint.ts","../src/validate/validate_object.ts","../src/validate/validate_array.ts","../src/validate/validate_number.ts","../src/validate/validate_function.ts","../src/validate/validate_expression.ts","../src/validate/validate_boolean.ts","../src/validate/validate_color.ts","../src/validate/validate_enum.ts","../src/validate/validate_filter.ts","../src/validate/validate_property.ts","../src/validate/validate_paint_property.ts","../src/validate/validate_layout_property.ts","../src/validate/validate_layer.ts","../src/validate/validate_string.ts","../src/validate/validate_raster_dem_source.ts","../src/validate/validate_source.ts","../src/validate/validate_light.ts","../src/validate/validate_sky.ts","../src/validate/validate_terrain.ts","../src/validate/validate_formatted.ts","../src/validate/validate_image.ts","../src/validate/validate_padding.ts","../src/validate/validate_number_array.ts","../src/validate/validate_color_array.ts","../src/validate/validate_variable_anchor_offset_collection.ts","../src/validate/validate_sprite.ts","../src/validate/validate_projection.ts","../src/validate/validate_projectiondefinition.ts","../src/util/is_object_literal.ts","../src/validate/validate_state.ts","../src/validate/validate.ts","../src/validate/validate_glyphs_url.ts","../src/validate_style.min.ts","../node_modules/json-stringify-pretty-compact/index.js","../src/format.ts","../src/migrate/v8.ts","../src/migrate/expressions.ts","../src/migrate/migrate_colors.ts","../src/migrate.ts","../src/index.ts"],"sourcesContent":["\nexport const refProperties = ['type', 'source', 'source-layer', 'minzoom', 'maxzoom', 'filter', 'layout'];\n","\nimport {refProperties} from './util/ref_properties';\nimport {LayerSpecification} from './types.g';\n\nexport type LayerWithRef = LayerSpecification & { ref?: string };\n\nfunction deref(layer: LayerWithRef, parent: LayerSpecification): LayerSpecification {\n const result: Partial<LayerSpecification> = {};\n\n for (const k in layer) {\n if (k !== 'ref') {\n result[k] = layer[k];\n }\n }\n\n refProperties.forEach((k) => {\n if (k in parent) {\n result[k] = parent[k];\n }\n });\n\n return result as LayerSpecification;\n}\n\n/**\n *\n * The input is not modified. The output may contain references to portions\n * of the input.\n *\n * @param layers - array of layers, some of which may contain `ref` properties\n * whose value is the `id` of another property\n * @returns a new array where such layers have been augmented with the 'type', 'source', etc. properties\n * from the parent layer, and the `ref` property has been removed.\n */\nexport function derefLayers(layers: LayerWithRef[]): LayerSpecification[] {\n layers = layers.slice();\n\n const map = Object.create(null);\n for (let i = 0; i < layers.length; i++) {\n map[layers[i].id] = layers[i];\n }\n\n for (let i = 0; i < layers.length; i++) {\n if ('ref' in layers[i]) {\n layers[i] = deref(layers[i], map[layers[i].ref]);\n }\n }\n\n return layers;\n}\n","/**\n * Deeply compares two object literals.\n *\n * @private\n */\n\nexport function deepEqual(a?: unknown | null, b?: unknown | null): boolean {\n if (Array.isArray(a)) {\n if (!Array.isArray(b) || a.length !== b.length) return false;\n for (let i = 0; i < a.length; i++) {\n if (!deepEqual(a[i], b[i])) return false;\n }\n return true;\n }\n if (typeof a === 'object' && a !== null && b !== null) {\n if (!(typeof b === 'object')) return false;\n const keys = Object.keys(a);\n if (keys.length !== Object.keys(b).length) return false;\n for (const key in a) {\n if (!deepEqual(a[key], b[key])) return false;\n }\n return true;\n }\n return a === b;\n}","\nimport {GeoJSONSourceSpecification, LayerSpecification, LightSpecification, ProjectionSpecification, SkySpecification, SourceSpecification, SpriteSpecification, StyleSpecification, TerrainSpecification, TransitionSpecification, StateSpecification} from './types.g';\nimport {deepEqual} from './util/deep_equal';\n\n/**\n * Operations that can be performed by the diff.\n * Below are the operations and their arguments, the arguments should be aligned with the style methods in maplibre-gl-js.\n */\nexport type DiffOperationsMap = {\n 'setStyle': [StyleSpecification];\n 'addLayer': [LayerSpecification, string | null];\n 'removeLayer': [string];\n 'setPaintProperty': [string, string, unknown, string | null];\n 'setLayoutProperty': [string, string, unknown, string | null];\n 'setFilter': [string, unknown];\n 'addSource': [string, SourceSpecification];\n 'removeSource': [string];\n 'setGeoJSONSourceData': [string, unknown];\n 'setLayerZoomRange': [string, number, number];\n 'setLayerProperty': [string, string, unknown];\n 'setCenter': [number[]];\n 'setCenterAltitude': [number];\n 'setZoom': [number];\n 'setBearing': [number];\n 'setPitch': [number];\n 'setRoll': [number];\n 'setSprite': [SpriteSpecification];\n 'setGlyphs': [string];\n 'setTransition': [TransitionSpecification];\n 'setLight': [LightSpecification];\n 'setTerrain': [TerrainSpecification];\n 'setSky': [SkySpecification];\n 'setProjection': [ProjectionSpecification];\n 'setGlobalState': [StateSpecification];\n}\n\nexport type DiffOperations = keyof DiffOperationsMap;\n\nexport type DiffCommand<T extends DiffOperations> = {\n command: T;\n args: DiffOperationsMap[T];\n};\n\n/**\n * The main reason for this method is to allow type check when adding a command to the array.\n * @param commands - The commands array to add to\n * @param command - The command to add\n */\nfunction addCommand<T extends DiffOperations>(commands: DiffCommand<DiffOperations>[], command: DiffCommand<T>) {\n commands.push(command);\n}\n\nfunction addSource(sourceId: string, after: {[key: string]: SourceSpecification}, commands: DiffCommand<DiffOperations>[]) {\n addCommand(commands, {command: 'addSource', args: [sourceId, after[sourceId]]});\n}\n\nfunction removeSource(sourceId: string, commands: DiffCommand<DiffOperations>[], sourcesRemoved: {[key: string]: boolean}) {\n addCommand(commands, {command: 'removeSource', args: [sourceId]});\n sourcesRemoved[sourceId] = true;\n}\n\nfunction updateSource(sourceId: string, after: {[key: string]: SourceSpecification}, commands: DiffCommand<DiffOperations>[], sourcesRemoved: {[key: string]: boolean}) {\n removeSource(sourceId, commands, sourcesRemoved);\n addSource(sourceId, after, commands);\n}\n\nfunction canUpdateGeoJSON(before: {[key: string]: SourceSpecification}, after: {[key: string]: SourceSpecification}, sourceId: string) {\n let prop;\n for (prop in before[sourceId]) {\n if (!Object.prototype.hasOwnProperty.call(before[sourceId], prop)) continue;\n if (prop !== 'data' && !deepEqual(before[sourceId][prop], after[sourceId][prop])) {\n return false;\n }\n }\n for (prop in after[sourceId]) {\n if (!Object.prototype.hasOwnProperty.call(after[sourceId], prop)) continue;\n if (prop !== 'data' && !deepEqual(before[sourceId][prop], after[sourceId][prop])) {\n return false;\n }\n }\n return true;\n}\n\nfunction diffSources(before: {[key: string]: SourceSpecification}, after: {[key: string]: SourceSpecification}, commands: DiffCommand<DiffOperations>[], sourcesRemoved: {[key: string]: boolean}) {\n before = before || {} as {[key: string]: SourceSpecification};\n after = after || {} as {[key: string]: SourceSpecification};\n\n let sourceId: string;\n\n // look for sources to remove\n for (sourceId in before) {\n if (!Object.prototype.hasOwnProperty.call(before, sourceId)) continue;\n if (!Object.prototype.hasOwnProperty.call(after, sourceId)) {\n removeSource(sourceId, commands, sourcesRemoved);\n }\n }\n\n // look for sources to add/update\n for (sourceId in after) {\n if (!Object.prototype.hasOwnProperty.call(after, sourceId)) continue;\n if (!Object.prototype.hasOwnProperty.call(before, sourceId)) {\n addSource(sourceId, after, commands);\n } else if (!deepEqual(before[sourceId], after[sourceId])) {\n if (before[sourceId].type === 'geojson' && after[sourceId].type === 'geojson' && canUpdateGeoJSON(before, after, sourceId)) {\n addCommand(commands, {command: 'setGeoJSONSourceData', args: [sourceId, (after[sourceId] as GeoJSONSourceSpecification).data]});\n } else {\n // no update command, must remove then add\n updateSource(sourceId, after, commands, sourcesRemoved);\n }\n }\n }\n}\n\nfunction diffLayerPropertyChanges(before: LayerSpecification['layout'] | LayerSpecification['paint'], after:LayerSpecification['layout'] | LayerSpecification['paint'], commands: DiffCommand<DiffOperations>[], layerId: string, klass: string | null, command: 'setPaintProperty' | 'setLayoutProperty') {\n before = before || {} as LayerSpecification['layout'] | LayerSpecification['paint'];\n after = after || {} as LayerSpecification['layout'] | LayerSpecification['paint'];\n\n for (const prop in before) {\n if (!Object.prototype.hasOwnProperty.call(before, prop)) continue;\n if (!deepEqual(before[prop], after[prop])) {\n commands.push({command, args: [layerId, prop, after[prop], klass]});\n }\n }\n for (const prop in after) {\n if (!Object.prototype.hasOwnProperty.call(after, prop) || Object.prototype.hasOwnProperty.call(before, prop)) continue;\n if (!deepEqual(before[prop], after[prop])) {\n commands.push({command, args: [layerId, prop, after[prop], klass]});\n }\n }\n}\n\nfunction pluckId(layer: LayerSpecification) {\n return layer.id;\n}\nfunction indexById(group: {[key: string]: LayerSpecification}, layer: LayerSpecification) {\n group[layer.id] = layer;\n return group;\n}\n\nfunction diffLayers(before: LayerSpecification[], after: LayerSpecification[], commands: DiffCommand<DiffOperations>[]) {\n before = before || [];\n after = after || [];\n\n // order of layers by id\n const beforeOrder = before.map(pluckId);\n const afterOrder = after.map(pluckId);\n\n // index of layer by id\n const beforeIndex = before.reduce(indexById, {});\n const afterIndex = after.reduce(indexById, {});\n\n // track order of layers as if they have been mutated\n const tracker = beforeOrder.slice();\n\n // layers that have been added do not need to be diffed\n const clean = Object.create(null);\n\n let layerId: string;\n let beforeLayer: LayerSpecification & { source?: string; filter?: unknown};\n let afterLayer: LayerSpecification & { source?: string; filter?: unknown};\n let insertBeforeLayerId: string;\n let prop: string;\n\n // remove layers\n for (let i = 0, d = 0; i < beforeOrder.length; i++) {\n layerId = beforeOrder[i];\n if (!Object.prototype.hasOwnProperty.call(afterIndex, layerId)) {\n addCommand(commands, {command: 'removeLayer', args: [layerId]});\n tracker.splice(tracker.indexOf(layerId, d), 1);\n } else {\n // limit where in tracker we need to look for a match\n d++;\n }\n }\n\n // add/reorder layers\n for (let i = 0, d = 0; i < afterOrder.length; i++) {\n // work backwards as insert is before an existing layer\n layerId = afterOrder[afterOrder.length - 1 - i];\n\n if (tracker[tracker.length - 1 - i] === layerId) continue;\n\n if (Object.prototype.hasOwnProperty.call(beforeIndex, layerId)) {\n // remove the layer before we insert at the correct position\n addCommand(commands, {command: 'removeLayer', args: [layerId]});\n tracker.splice(tracker.lastIndexOf(layerId, tracker.length - d), 1);\n } else {\n // limit where in tracker we need to look for a match\n d++;\n }\n\n // add layer at correct position\n insertBeforeLayerId = tracker[tracker.length - i];\n addCommand(commands, {command: 'addLayer', args: [afterIndex[layerId], insertBeforeLayerId]});\n tracker.splice(tracker.length - i, 0, layerId);\n clean[layerId] = true;\n }\n\n // update layers\n for (let i = 0; i < afterOrder.length; i++) {\n layerId = afterOrder[i];\n beforeLayer = beforeIndex[layerId];\n afterLayer = afterIndex[layerId];\n\n // no need to update if previously added (new or moved)\n if (clean[layerId] || deepEqual(beforeLayer, afterLayer)) continue;\n\n // If source, source-layer, or type have changes, then remove the layer\n // and add it back 'from scratch'.\n if (!deepEqual(beforeLayer.source, afterLayer.source) || !deepEqual(beforeLayer['source-layer'], afterLayer['source-layer']) || !deepEqual(beforeLayer.type, afterLayer.type)) {\n addCommand(commands, {command: 'removeLayer', args: [layerId]});\n // we add the layer back at the same position it was already in, so\n // there's no need to update the `tracker`\n insertBeforeLayerId = tracker[tracker.lastIndexOf(layerId) + 1];\n addCommand(commands, {command: 'addLayer', args: [afterLayer, insertBeforeLayerId]});\n continue;\n }\n\n // layout, paint, filter, minzoom, maxzoom\n diffLayerPropertyChanges(beforeLayer.layout, afterLayer.layout, commands, layerId, null, 'setLayoutProperty');\n diffLayerPropertyChanges(beforeLayer.paint, afterLayer.paint, commands, layerId, null, 'setPaintProperty');\n if (!deepEqual(beforeLayer.filter, afterLayer.filter)) {\n addCommand(commands, {command: 'setFilter', args: [layerId, afterLayer.filter]});\n }\n if (!deepEqual(beforeLayer.minzoom, afterLayer.minzoom) || !deepEqual(beforeLayer.maxzoom, afterLayer.maxzoom)) {\n addCommand(commands, {command: 'setLayerZoomRange', args: [layerId, afterLayer.minzoom, afterLayer.maxzoom]});\n }\n\n // handle all other layer props, including paint.*\n for (prop in beforeLayer) {\n if (!Object.prototype.hasOwnProperty.call(beforeLayer, prop)) continue;\n if (prop === 'layout' || prop === 'paint' || prop === 'filter' ||\n prop === 'metadata' || prop === 'minzoom' || prop === 'maxzoom') continue;\n if (prop.indexOf('paint.') === 0) {\n diffLayerPropertyChanges(beforeLayer[prop], afterLayer[prop], commands, layerId, prop.slice(6), 'setPaintProperty');\n } else if (!deepEqual(beforeLayer[prop], afterLayer[prop])) {\n addCommand(commands, {command: 'setLayerProperty', args: [layerId, prop, afterLayer[prop]]});\n }\n }\n for (prop in afterLayer) {\n if (!Object.prototype.hasOwnProperty.call(afterLayer, prop) || Object.prototype.hasOwnProperty.call(beforeLayer, prop)) continue;\n if (prop === 'layout' || prop === 'paint' || prop === 'filter' ||\n prop === 'metadata' || prop === 'minzoom' || prop === 'maxzoom') continue;\n if (prop.indexOf('paint.') === 0) {\n diffLayerPropertyChanges(beforeLayer[prop], afterLayer[prop], commands, layerId, prop.slice(6), 'setPaintProperty');\n } else if (!deepEqual(beforeLayer[prop], afterLayer[prop])) {\n addCommand(commands, {command: 'setLayerProperty', args: [layerId, prop, afterLayer[prop]]});\n }\n }\n }\n}\n\n/**\n * Diff two stylesheet\n *\n * Creates semanticly aware diffs that can easily be applied at runtime.\n * Operations produced by the diff closely resemble the maplibre-gl-js API. Any\n * error creating the diff will fall back to the 'setStyle' operation.\n *\n * Example diff:\n * [\n * { command: 'setConstant', args: ['@water', '#0000FF'] },\n * { command: 'setPaintProperty', args: ['background', 'background-color', 'black'] }\n * ]\n *\n * @private\n * @param {*} [before] stylesheet to compare from\n * @param {*} after stylesheet to compare to\n * @returns Array list of changes\n */\nexport function diff(before: StyleSpecification, after: StyleSpecification): DiffCommand<DiffOperations>[] {\n if (!before) return [{command: 'setStyle', args: [after]}];\n\n let commands: DiffCommand<DiffOperations>[] = [];\n\n try {\n // Handle changes to top-level properties\n if (!deepEqual(before.version, after.version)) {\n return [{command: 'setStyle', args: [after]}];\n }\n if (!deepEqual(before.center, after.center)) {\n commands.push({command: 'setCenter', args: [after.center]});\n }\n if (!deepEqual(before.state, after.state)) {\n commands.push({command: 'setGlobalState', args: [after.state]});\n }\n if (!deepEqual(before.centerAltitude, after.centerAltitude)) {\n commands.push({command: 'setCenterAltitude', args: [after.centerAltitude]});\n }\n if (!deepEqual(before.zoom, after.zoom)) {\n commands.push({command: 'setZoom', args: [after.zoom]});\n }\n if (!deepEqual(before.bearing, after.bearing)) {\n commands.push({command: 'setBearing', args: [after.bearing]});\n }\n if (!deepEqual(before.pitch, after.pitch)) {\n commands.push({command: 'setPitch', args: [after.pitch]});\n }\n if (!deepEqual(before.roll, after.roll)) {\n commands.push({command: 'setRoll', args: [after.roll]});\n }\n if (!deepEqual(before.sprite, after.sprite)) {\n commands.push({command: 'setSprite', args: [after.sprite]});\n }\n if (!deepEqual(before.glyphs, after.glyphs)) {\n commands.push({command: 'setGlyphs', args: [after.glyphs]});\n }\n if (!deepEqual(before.transition, after.transition)) {\n commands.push({command: 'setTransition', args: [after.transition]});\n }\n if (!deepEqual(before.light, after.light)) {\n commands.push({command: 'setLight', args: [after.light]});\n }\n if (!deepEqual(before.terrain, after.terrain)) {\n commands.push({command: 'setTerrain', args: [after.terrain]});\n }\n if (!deepEqual(before.sky, after.sky)) {\n commands.push({command: 'setSky', args: [after.sky]});\n }\n if (!deepEqual(before.projection, after.projection)) {\n commands.push({command: 'setProjection', args: [after.projection]});\n }\n\n // Handle changes to `sources`\n // If a source is to be removed, we also--before the removeSource\n // command--need to remove all the style layers that depend on it.\n const sourcesRemoved = {};\n\n // First collect the {add,remove}Source commands\n const removeOrAddSourceCommands = [];\n diffSources(before.sources, after.sources, removeOrAddSourceCommands, sourcesRemoved);\n\n // Push a removeLayer command for each style layer that depends on a\n // source that's being removed.\n // Also, exclude any such layers them from the input to `diffLayers`\n // below, so that diffLayers produces the appropriate `addLayers`\n // command\n const beforeLayers = [];\n if (before.layers) {\n before.layers.forEach((layer) => {\n if ('source' in layer && sourcesRemoved[layer.source]) {\n commands.push({command: 'removeLayer', args: [layer.id]});\n } else {\n beforeLayers.push(layer);\n }\n });\n }\n commands = commands.concat(removeOrAddSourceCommands);\n\n // Handle changes to `layers`\n diffLayers(beforeLayers, after.layers, commands);\n\n } catch (e) {\n // fall back to setStyle\n console.warn('Unable to compute style diff:', e);\n commands = [{command: 'setStyle', args: [after]}];\n }\n\n return commands;\n}\n","// Note: Do not inherit from Error. It breaks when transpiling to ES5.\n\nexport class ValidationError {\n message: string;\n identifier: string;\n line: number;\n\n constructor(key: string, value: any & {\n __line__: number;\n }, message: string, identifier?: string | null) {\n this.message = (key ? `${key}: ` : '') + message;\n if (identifier) this.identifier = identifier;\n\n if (value !== null && value !== undefined && value.__line__) {\n this.line = value.__line__;\n }\n }\n}\n","// Note: Do not inherit from Error. It breaks when transpiling to ES5.\n\nexport class ParsingError {\n message: string;\n error: Error;\n line: number;\n\n constructor(error: Error) {\n this.error = error;\n this.message = error.message;\n const match = error.message.match(/line (\\d+)/);\n this.line = match ? parseInt(match[1], 10) : 0;\n }\n}\n","export function extendBy(output: any, ...inputs: Array<any>) {\n for (const input of inputs) {\n for (const k in input) {\n output[k] = input[k];\n }\n }\n return output;\n}\n","export class ExpressionParsingError extends Error {\n key: string;\n message: string;\n constructor(key: string, message: string) {\n super(message);\n this.message = message;\n this.key = key;\n }\n}\n","import type {Expression} from './expression';\n\n/**\n * Tracks `let` bindings during expression parsing.\n * @private\n */\nexport class Scope {\n parent: Scope;\n bindings: {[_: string]: Expression};\n constructor(parent?: Scope, bindings: Array<[string, Expression]> = []) {\n this.parent = parent;\n this.bindings = {};\n for (const [name, expression] of bindings) {\n this.bindings[name] = expression;\n }\n }\n\n concat(bindings: Array<[string, Expression]>) {\n return new Scope(this, bindings);\n }\n\n get(name: string): Expression {\n if (this.bindings[name]) { return this.bindings[name]; }\n if (this.parent) { return this.parent.get(name); }\n throw new Error(`${name} not found in scope.`);\n }\n\n has(name: string): boolean {\n if (this.bindings[name]) return true;\n return this.parent ? this.parent.has(name) : false;\n }\n}\n","export type NullTypeT = {\n kind: 'null';\n};\nexport type NumberTypeT = {\n kind: 'number';\n};\nexport type StringTypeT = {\n kind: 'string';\n};\nexport type BooleanTypeT = {\n kind: 'boolean';\n};\nexport type ColorTypeT = {\n kind: 'color';\n};\nexport type ProjectionDefinitionTypeT = {\n kind: 'projectionDefinition';\n};\nexport type ObjectTypeT = {\n kind: 'object';\n};\nexport type ValueTypeT = {\n kind: 'value';\n};\nexport type ErrorTypeT = {\n kind: 'error';\n};\nexport type CollatorTypeT = {\n kind: 'collator';\n};\nexport type FormattedTypeT = {\n kind: 'formatted';\n};\nexport type PaddingTypeT = {\n kind: 'padding';\n};\nexport type NumberArrayTypeT = {\n kind: 'numberArray';\n};\nexport type ColorArrayTypeT = {\n kind: 'colorArray';\n};\nexport type ResolvedImageTypeT = {\n kind: 'resolvedImage';\n};\nexport type VariableAnchorOffsetCollectionTypeT = {\n kind: 'variableAnchorOffsetCollection';\n};\n\nexport type EvaluationKind = 'constant' | 'source' | 'camera' | 'composite';\n\nexport type Type = NullTypeT | NumberTypeT | StringTypeT | BooleanTypeT | ColorTypeT | ProjectionDefinitionTypeT | ObjectTypeT | ValueTypeT |\nArrayType | ErrorTypeT | CollatorTypeT | FormattedTypeT | PaddingTypeT | NumberArrayTypeT | ColorArrayTypeT | ResolvedImageTypeT | VariableAnchorOffsetCollectionTypeT;\n\nexport interface ArrayType<T extends Type = Type> {\n kind: 'array';\n itemType: T;\n N: number;\n}\n\nexport type NativeType = 'number' | 'string' | 'boolean' | 'null' | 'array' | 'object';\n\nexport const NullType = {kind: 'null'} as NullTypeT;\nexport const NumberType = {kind: 'number'} as NumberTypeT;\nexport const StringType = {kind: 'string'} as StringTypeT;\nexport const BooleanType = {kind: 'boolean'} as BooleanTypeT;\nexport const ColorType = {kind: 'color'} as ColorTypeT;\nexport const ProjectionDefinitionType = {kind: 'projectionDefinition'} as ProjectionDefinitionTypeT;\nexport const ObjectType = {kind: 'object'} as ObjectTypeT;\nexport const ValueType = {kind: 'value'} as ValueTypeT;\nexport const ErrorType = {kind: 'error'} as ErrorTypeT;\nexport const CollatorType = {kind: 'collator'} as CollatorTypeT;\nexport const FormattedType = {kind: 'formatted'} as FormattedTypeT;\nexport const PaddingType = {kind: 'padding'} as PaddingTypeT;\nexport const ColorArrayType = {kind: 'colorArray'} as ColorArrayTypeT;\nexport const NumberArrayType = {kind: 'numberArray'} as NumberArrayTypeT;\nexport const ResolvedImageType = {kind: 'resolvedImage'} as ResolvedImageTypeT;\nexport const VariableAnchorOffsetCollectionType = {kind: 'variableAnchorOffsetCollection'} as VariableAnchorOffsetCollectionTypeT;\n\nexport function array<T extends Type>(itemType: T, N?: number | null): ArrayType<T> {\n return {\n kind: 'array',\n itemType,\n N\n };\n}\n\nexport function typeToString(type: Type): string {\n if (type.kind === 'array') {\n const itemType = typeToString(type.itemType);\n return typeof type.N === 'number' ?\n `array<${itemType}, ${type.N}>` :\n type.itemType.kind === 'value' ? 'array' : `array<${itemType}>`;\n } else {\n return type.kind;\n }\n}\n\nconst valueMemberTypes = [\n NullType,\n NumberType,\n StringType,\n BooleanType,\n ColorType,\n ProjectionDefinitionType,\n FormattedType,\n ObjectType,\n array(ValueType),\n PaddingType,\n NumberArrayType,\n ColorArrayType,\n ResolvedImageType,\n VariableAnchorOffsetCollectionType\n];\n\n/**\n * Returns null if `t` is a subtype of `expected`; otherwise returns an\n * error message.\n * @private\n */\nexport function checkSubtype(expected: Type, t: Type): string {\n if (t.kind === 'error') {\n // Error is a subtype of every type\n return null;\n } else if (expected.kind === 'array') {\n if (t.kind === 'array' &&\n ((t.N === 0 && t.itemType.kind === 'value') || !checkSubtype(expected.itemType, t.itemType)) &&\n (typeof expected.N !== 'number' || expected.N === t.N)) {\n return null;\n }\n } else if (expected.kind === t.kind) {\n return null;\n } else if (expected.kind === 'value') {\n for (const memberType of valueMemberTypes) {\n if (!checkSubtype(memberType, t)) {\n return null;\n }\n }\n }\n\n return `Expected ${typeToString(expected)} but found ${typeToString(t)} instead.`;\n}\n\nexport function isValidType(provided: Type, allowedTypes: Array<Type>): boolean {\n return allowedTypes.some(t => t.kind === provided.kind);\n}\n\nexport function isValidNativeType(provided: any, allowedTypes: Array<NativeType>): boolean {\n return allowedTypes.some(t => {\n if (t === 'null') {\n return provided === null;\n } else if (t === 'array') {\n return Array.isArray(provided);\n } else if (t === 'object') {\n return provided && !Array.isArray(provided) && typeof provided === 'object';\n } else {\n return t === typeof provided;\n }\n });\n}\n\n/**\n * Verify whether the specified type is of the same type as the specified sample.\n *\n * @param provided Type to verify\n * @param sample Sample type to reference\n * @returns `true` if both objects are of the same type, `false` otherwise\n * @example basic types\n * if (verifyType(outputType, ValueType)) {\n * // type narrowed to:\n * outputType.kind; // 'value'\n * }\n * @example array types\n * if (verifyType(outputType, array(NumberType))) {\n * // type narrowed to:\n * outputType.kind; // 'array'\n * outputType.itemType; // NumberTypeT\n * outputType.itemType.kind; // 'number'\n * }\n */\nexport function verifyType<T extends Type>(provided: Type, sample: T): provided is T {\n if (provided.kind === 'array' && sample.kind === 'array') {\n return provided.itemType.kind === sample.itemType.kind && typeof provided.N === 'number';\n }\n return provided.kind === sample.kind;\n}\n","/**\n * @param r Red component 0..1\n * @param g Green component 0..1\n * @param b Blue component 0..1\n * @param alpha Alpha component 0..1\n */\nexport type RGBColor = [r: number, g: number, b: number, alpha: number];\n\n/**\n * @param h Hue as degrees 0..360\n * @param s Saturation as percentage 0..100\n * @param l Lightness as percentage 0..100\n * @param alpha Alpha component 0..1\n */\nexport type HSLColor = [h: number, s: number, l: number, alpha: number];\n\n/**\n * @param h Hue as degrees 0..360\n * @param c Chroma 0..~230\n * @param l Lightness as percentage 0..100\n * @param alpha Alpha component 0..1\n */\nexport type HCLColor = [h: number, c: number, l: number, alpha: number];\n\n/**\n * @param l Lightness as percentage 0..100\n * @param a A axis value -125..125\n * @param b B axis value -125..125\n * @param alpha Alpha component 0..1\n */\nexport type LABColor = [l: number, a: number, b: number, alpha: number];\n\n// See https://observablehq.com/@mbostock/lab-and-rgb\nconst Xn = 0.96422,\n Yn = 1,\n Zn = 0.82521,\n t0 = 4 / 29,\n t1 = 6 / 29,\n t2 = 3 * t1 * t1,\n t3 = t1 * t1 * t1,\n deg2rad = Math.PI / 180,\n rad2deg = 180 / Math.PI;\n\nfunction constrainAngle(angle: number): number {\n angle = angle % 360;\n if (angle < 0) {\n angle += 360;\n }\n return angle;\n}\n\nexport function rgbToLab([r, g, b, alpha]: RGBColor): LABColor {\n r = rgb2xyz(r);\n g = rgb2xyz(g);\n b = rgb2xyz(b);\n let x, z;\n const y = xyz2lab((0.2225045 * r + 0.7168786 * g + 0.0606169 * b) / Yn);\n if (r === g && g === b) {\n x = z = y;\n } else {\n x = xyz2lab((0.4360747 * r + 0.3850649 * g + 0.1430804 * b) / Xn);\n z = xyz2lab((0.0139322 * r + 0.0971045 * g + 0.7141733 * b) / Zn);\n }\n\n const l = 116 * y - 16;\n return [(l < 0) ? 0 : l, 500 * (x - y), 200 * (y - z), alpha];\n}\n\nfunction rgb2xyz(x: number): number {\n return (x <= 0.04045) ? x / 12.92 : Math.pow((x + 0.055) / 1.055, 2.4);\n}\n\nfunction xyz2lab(t: number): number {\n return (t > t3) ? Math.pow(t, 1 / 3) : t / t2 + t0;\n}\n\nexport function labToRgb([l, a, b, alpha]: LABColor): RGBColor {\n let y = (l + 16) / 116,\n x = isNaN(a) ? y : y + a / 500,\n z = isNaN(b) ? y : y - b / 200;\n\n y = Yn * lab2xyz(y);\n x = Xn * lab2xyz(x);\n z = Zn * lab2xyz(z);\n\n return [\n xyz2rgb(3.1338561 * x - 1.6168667 * y - 0.4906146 * z), // D50 -> sRGB\n xyz2rgb(-0.9787684 * x + 1.9161415 * y + 0.0334540 * z),\n xyz2rgb(0.0719453 * x - 0.2289914 * y + 1.4052427 * z),\n alpha,\n ];\n}\n\nfunction xyz2rgb(x: number): number {\n x = (x <= 0.00304) ? 12.92 * x : 1.055 * Math.pow(x, 1 / 2.4) - 0.055;\n return (x < 0) ? 0 : (x > 1) ? 1 : x; // clip to 0..1 range\n}\n\nfunction lab2xyz(t: number): number {\n return (t > t1) ? t * t * t : t2 * (t - t0);\n}\n\nexport function rgbToHcl(rgbColor: RGBColor): HCLColor {\n const [l, a, b, alpha] = rgbToLab(rgbColor);\n const c = Math.sqrt(a * a + b * b);\n const h = Math.round(c * 10000) ? constrainAngle(Math.atan2(b, a) * rad2deg) : NaN;\n return [h, c, l, alpha];\n}\n\nexport function hclToRgb([h, c, l, alpha]: HCLColor): RGBColor {\n h = isNaN(h) ? 0 : h * deg2rad;\n return labToRgb([l, Math.cos(h) * c, Math.sin(h) * c, alpha]);\n}\n\n// https://drafts.csswg.org/css-color-4/#hsl-to-rgb\nexport function hslToRgb([h, s, l, alpha]: HSLColor): RGBColor {\n h = constrainAngle(h);\n s /= 100;\n l /= 100;\n\n function f(n) {\n const k = (n + h / 30) % 12;\n const a = s * Math.min(l, 1 - l);\n return l - a * Math.max(-1, Math.min(k - 3, 9 - k, 1));\n }\n\n return [f(0), f(8), f(4), alpha];\n}\n","type HasOwnPropertyFn = <TObject extends object>(obj: TObject, key: PropertyKey) => key is keyof TObject;\n\n// polyfill for Object.hasOwn\nconst hasOwnProperty: HasOwnPropertyFn =\n (Object.hasOwn as HasOwnPropertyFn) ||\n function hasOwnProperty<T extends object>(object: T, key: PropertyKey): key is keyof T {\n return Object.prototype.hasOwnProperty.call(object, key);\n };\n\nexport function getOwn<T extends object>(object: T, key: PropertyKey): T[keyof T] | undefined {\n return hasOwnProperty(object, key) ? object[key] : undefined;\n}\n","import {getOwn} from '../../util/get_own';\nimport {HSLColor, hslToRgb, RGBColor} from './color_spaces';\n\n/**\n * CSS color parser compliant with CSS Color 4 Specification.\n * Supports: named colors, `transparent` keyword, all rgb hex notations,\n * rgb(), rgba(), hsl() and hsla() functions.\n * Does not round the parsed values to integers from the range 0..255.\n *\n * Syntax:\n *\n * <alpha-value> = <number> | <percentage>\n * <hue> = <number> | <angle>\n *\n * rgb() = rgb( <percentage>{3} [ / <alpha-value> ]? ) | rgb( <number>{3} [ / <alpha-value> ]? )\n * rgb() = rgb( <percentage>#{3} , <alpha-value>? ) | rgb( <number>#{3} , <alpha-value>? )\n *\n * hsl() = hsl( <hue> <percentage> <percentage> [ / <alpha-value> ]? )\n * hsl() = hsl( <hue>, <percentage>, <percentage>, <alpha-value>? )\n *\n * Caveats:\n * - <angle> - <number> with optional `deg` suffix; `grad`, `rad`, `turn` are not supported\n * - `none` keyword is not supported\n * - comments inside rgb()/hsl() are not supported\n * - legacy color syntax rgba() is supported with an identical grammar and behavior to rgb()\n * - legacy color syntax hsla() is supported with an identical grammar and behavior to hsl()\n *\n * @param input CSS color string to parse.\n * @returns Color in sRGB color space, with `red`, `green`, `blue`\n * and `alpha` channels normalized to the range 0..1,\n * or `undefined` if the input is not a valid color string.\n */\nexport function parseCssColor(input: string): RGBColor | undefined {\n input = input.toLowerCase().trim();\n\n if (input === 'transparent') {\n return [0, 0, 0, 0];\n }\n\n // 'white', 'black', 'blue'\n const namedColorsMatch = getOwn(namedColors, input);\n if (namedColorsMatch) {\n const [r, g, b] = namedColorsMatch;\n return [r / 255, g / 255, b / 255, 1];\n }\n\n // #f0c, #f0cf, #ff00cc, #ff00ccff\n if (input.startsWith('#')) {\n const hexRegexp = /^#(?:[0-9a-f]{3,4}|[0-9a-f]{6}|[0-9a-f]{8})$/;\n if (hexRegexp.test(input)) {\n const step = input.length < 6 ? 1 : 2;\n let i = 1;\n return [\n parseHex(input.slice(i, i += step)),\n parseHex(input.slice(i, i += step)),\n parseHex(input.slice(i, i += step)),\n parseHex(input.slice(i, i + step) || 'ff'),\n ];\n }\n }\n\n // rgb(128 0 0), rgb(50% 0% 0%), rgba(255,0,255,0.6), rgb(255 0 255 / 60%), rgb(100% 0% 100% /.6)\n if (input.startsWith('rgb')) {\n const rgbRegExp = /^rgba?\\(\\s*([\\de.+-]+)(%)?(?:\\s+|\\s*(,)\\s*)([\\de.+-]+)(%)?(?:\\s+|\\s*(,)\\s*)([\\de.+-]+)(%)?(?:\\s*([,\\/])\\s*([\\de.+-]+)(%)?)?\\s*\\)$/;\n const rgbMatch = input.match(rgbRegExp);\n if (rgbMatch) {\n const [\n _, // eslint-disable-line @typescript-eslint/no-unused-vars\n r, // <numeric>\n rp, // % (optional)\n f1, // , (optional)\n g, // <numeric>\n gp, // % (optional)\n f2, // , (optional)\n b, // <numeric>\n bp, // % (optional)\n f3, // ,|/ (optional)\n a, // <numeric> (optional)\n ap, // % (optional)\n ] = rgbMatch;\n\n const argFormat = [f1 || ' ', f2 || ' ', f3].join('');\n if (\n argFormat === ' ' ||\n argFormat === ' /' ||\n argFormat === ',,' ||\n argFormat === ',,,'\n ) {\n const valFormat = [rp, gp, bp].join('');\n const maxValue =\n (valFormat === '%%%') ? 100 :\n (valFormat === '') ? 255 : 0;\n if (maxValue) {\n const rgba: RGBColor = [\n clamp(+r / maxValue, 0, 1),\n clamp(+g / maxValue, 0, 1),\n clamp(+b / maxValue, 0, 1),\n a ? parseAlpha(+a, ap) : 1,\n ];\n if (validateNumbers(rgba)) {\n return rgba;\n }\n // invalid numbers\n }\n // values must be all numbers or all percentages\n }\n return; // comma optional syntax requires no commas at all\n }\n }\n\n // hsl(120 50% 80%), hsla(120deg,50%,80%,.9), hsl(12e1 50% 80% / 90%)\n const hslRegExp = /^hsla?\\(\\s*([\\de.+-]+)(?:deg)?(?:\\s+|\\s*(,)\\s*)([\\de.+-]+)%(?:\\s+|\\s*(,)\\s*)([\\de.+-]+)%(?:\\s*([,\\/])\\s*([\\de.+-]+)(%)?)?\\s*\\)$/;\n const hslMatch = input.match(hslRegExp);\n if (hslMatch) {\n const [\n _, // eslint-disable-line @typescript-eslint/no-unused-vars\n h, // <numeric>\n f1, // , (optional)\n s, // <numeric>\n f2, // , (optional)\n l, // <numeric>\n f3, // ,|/ (optional)\n a, // <numeric> (optional)\n ap, // % (optional)\n ] = hslMatch;\n\n const argFormat = [f1 || ' ', f2 || ' ', f3].join('');\n if (\n argFormat === ' ' ||\n argFormat === ' /' ||\n argFormat === ',,' ||\n argFormat === ',,,'\n ) {\n const hsla: HSLColor = [\n +h,\n clamp(+s, 0, 100),\n clamp(+l, 0, 100),\n a ? parseAlpha(+a, ap) : 1,\n ];\n if (validateNumbers(hsla)) {\n return hslToRgb(hsla);\n }\n // invalid numbers\n }\n // comma optional syntax requires no commas at all\n }\n}\n\nfunction parseHex(hex: string): number {\n return parseInt(hex.padEnd(2, hex), 16) / 255;\n}\n\nfunction parseAlpha(a: number, asPercentage: string | undefined): number {\n return clamp(asPercentage ? (a / 100) : a, 0, 1);\n}\n\nfunction clamp(n: number, min: number, max: number): number {\n return Math.min(Math.max(min, n), max);\n}\n\n/**\n * The regular expression for numeric values is not super specific, and it may\n * happen that it will accept a value that is not a valid number. In order to\n * detect and eliminate such values this function exists.\n *\n * @param array Array of uncertain numbers.\n * @returns `true` if the specified array contains only valid numbers, `false` otherwise.\n */\nfunction validateNumbers(array: number[]): boolean {\n return !array.some(Number.isNaN);\n}\n\n/**\n * To generate:\n * - visit {@link https://www.w3.org/TR/css-color-4/#named-colors}\n * - run in the console:\n * @example\n * copy(`{\\n${[...document.querySelector('.named-color-table tbody').children].map((tr) => `${tr.cells[2].textContent.trim()}: [${tr.cells[4].textContent.trim().split(/\\s+/).join(', ')}],`).join('\\n')}\\n}`);\n */\nconst namedColors: Record<string, [number, number, number]> = {\n aliceblue: [240, 248, 255],\n antiquewhite: [250, 235, 215],\n aqua: [0, 255, 255],\n aquamarine: [127, 255, 212],\n azure: [240, 255, 255],\n beige: [245, 245, 220],\n bisque: [255, 228, 196],\n black: [0, 0, 0],\n blanchedalmond: [255, 235, 205],\n blue: [0, 0, 255],\n blueviolet: [138, 43, 226],\n brown: [165, 42, 42],\n burlywood: [222, 184, 135],\n cadetblue: [95, 158, 160],\n chartreuse: [127, 255, 0],\n chocolate: [210, 105, 30],\n coral: [255, 127, 80],\n cornflowerblue: [100, 149, 237],\n cornsilk: [255, 248, 220],\n crimson: [220, 20, 60],\n cyan: [0, 255, 255],\n darkblue: [0, 0, 139],\n darkcyan: [0, 139, 139],\n darkgoldenrod: [184, 134, 11],\n darkgray: [169, 169, 169],\n darkgreen: [0, 100, 0],\n darkgrey: [169, 169, 169],\n darkkhaki: [189, 183, 107],\n darkmagenta: [139, 0, 139],\n darkolivegreen: [85, 107, 47],\n darkorange: [255, 140, 0],\n darkorchid: [153, 50, 204],\n darkred: [139, 0, 0],\n darksalmon: [233, 150, 122],\n darkseagreen: [143, 188, 143],\n darkslateblue: [72, 61, 139],\n darkslategray: [47, 79, 79],\n darkslategrey: [47, 79, 79],\n darkturquoise: [0, 206, 209],\n darkviolet: [148, 0, 211],\n deeppink: [255, 20, 147],\n deepskyblue: [0, 191, 255],\n dimgray: [105, 105, 105],\n dimgrey: [105, 105, 105],\n dodgerblue: [30, 144, 255],\n firebrick: [178, 34, 34],\n floralwhite: [255, 250, 240],\n forestgreen: [34, 139, 34],\n fuchsia: [255, 0, 255],\n gainsboro: [220, 220, 220],\n ghostwhite: [248, 248, 255],\n gold: [255, 215, 0],\n goldenrod: [218, 165, 32],\n gray: [128, 128, 128],\n green: [0, 128, 0],\n greenyellow: [173, 255, 47],\n grey: [128, 128, 128],\n honeydew: [240, 255, 240],\n hotpink: [255, 105, 180],\n indianred: [205, 92, 92],\n indigo: [75, 0, 130],\n ivory: [255, 255, 240],\n khaki: [240, 230, 140],\n lavender: [230, 230, 250],\n lavenderblush: [255, 240, 245],\n lawngreen: [124, 252, 0],\n lemonchiffon: [255, 250, 205],\n lightblue: [173, 216, 230],\n lightcoral: [240, 128, 128],\n lightcyan: [224, 255, 255],\n lightgoldenrodyellow: [250, 250, 210],\n lightgray: [211, 211, 211],\n lightgreen: [144, 238, 144],\n lightgrey: [211, 211, 211],\n lightpink: [255, 182, 193],\n lightsalmon: [255, 160, 122],\n lightseagreen: [32, 178, 170],\n lightskyblue: [135, 206, 250],\n lightslategray: [119, 136, 153],\n lightslategrey: [119, 136, 153],\n lightsteelblue: [176, 196, 222],\n lightyellow: [255, 255, 224],\n lime: [0, 255, 0],\n limegreen: [50, 205, 50],\n linen: [250, 240, 230],\n magenta: [255, 0, 255],\n maroon: [128, 0, 0],\n mediumaquamarine: [102, 205, 170],\n mediumblue: [0, 0, 205],\n mediumorchid: [186, 85, 211],\n mediumpurple: [147, 112, 219],\n mediumseagreen: [60, 179, 113],\n mediumslateblue: [123, 104, 238],\n mediumspringgreen: [0, 250, 154],\n mediumturquoise: [72, 209, 204],\n mediumvioletred: [199, 21, 133],\n midnightblue: [25, 25, 112],\n mintcream: [245, 255, 250],\n mistyrose: [255, 228, 225],\n moccasin: [255, 228, 181],\n navajowhite: [255, 222, 173],\n navy: [0, 0, 128],\n oldlace: [253, 245, 230],\n olive: [128, 128, 0],\n olivedrab: [107, 142, 35],\n orange: [255, 165, 0],\n orangered: [255, 69, 0],\n orchid: [218, 112, 214],\n palegoldenrod: [238, 232, 170],\n palegreen: [152, 251, 152],\n paleturquoise: [175, 238, 238],\n palevioletred: [219, 112, 147],\n papayawhip: [255, 239, 213],\n peachpuff: [255, 218, 185],\n peru: [205, 133, 63],\n pink: [255, 192, 203],\n plum: [221, 160, 221],\n powderblue: [176, 224, 230],\n purple: [128, 0, 128],\n rebeccapurple: [102, 51, 153],\n red: [255, 0, 0],\n rosybrown: [188, 143, 143],\n royalblue: [65, 105, 225],\n saddlebrown: [139, 69, 19],\n salmon: [250, 128, 114],\n sandybrown: [244, 164, 96],\n seagreen: [46, 139, 87],\n seashell: [255, 245, 238],\n sienna: [160, 82, 45],\n silver: [192, 192, 192],\n skyblue: [135, 206, 235],\n slateblue: [106, 90, 205],\n slategray: [112, 128, 144],\n slategrey: [112, 128, 144],\n snow: [255, 250, 250],\n springgreen: [0, 255, 127],\n steelblue: [70, 130, 180],\n tan: [210, 180, 140],\n teal: [0, 128, 128],\n thistle: [216, 191, 216],\n tomato: [255, 99, 71],\n turquoise: [64, 224, 208],\n violet: [238, 130, 238],\n wheat: [245, 222, 179],\n white: [255, 255, 255],\n whitesmoke: [245, 245, 245],\n yellow: [255, 255, 0],\n yellowgreen: [154, 205, 50],\n};\n","export function interpolateNumber(from: number, to: number, t: number): number {\n return from + t * (to - from);\n}\n\nexport function interpolateArray<T extends number[]>(from: T, to: T, t: number): T {\n return from.map((d, i) => {\n return interpolateNumber(d, to[i], t);\n }) as T;\n}\n","import {HCLColor, hclToRgb, LABColor, labToRgb, RGBColor, rgbToHcl, rgbToLab} from './color_spaces';\nimport {parseCssColor} from './parse_css_color';\nimport {interpolateArray, interpolateNumber} from '../../util/interpolate-primitives';\n\nexport type InterpolationColorSpace = 'rgb' | 'hcl' | 'lab';\n\n/**\n * Checks whether the specified color space is one of the supported interpolation color spaces.\n *\n * @param colorSpace Color space key to verify.\n * @returns `true` if the specified color space is one of the supported\n * interpolation color spaces, `false` otherwise\n */\nexport function isSupportedInterpolationColorSpace(colorSpace: string): colorSpace is InterpolationColorSpace {\n return colorSpace === 'rgb' || colorSpace === 'hcl' || colorSpace === 'lab';\n}\n\n/**\n * Color representation used by WebGL.\n * Defined in sRGB color space and pre-blended with alpha.\n * @private\n */\nexport class Color {\n\n readonly r: number;\n readonly g: number;\n readonly b: number;\n readonly a: number;\n\n /**\n * @param r Red component premultiplied by `alpha` 0..1\n * @param g Green component premultiplied by `alpha` 0..1\n * @param b Blue component premultiplied by `alpha` 0..1\n * @param [alpha=1] Alpha component 0..1\n * @param [premultiplied=true] Whether the `r`, `g` and `b` values have already\n * been multiplied by alpha. If `true` nothing happens if `false` then they will\n * be multiplied automatically.\n */\n constructor(r: number, g: number, b: number, alpha = 1, premultiplied = true) {\n this.r = r;\n this.g = g;\n this.b = b;\n this.a = alpha;\n\n if (!premultiplied) {\n this.r *= alpha;\n this.g *= alpha;\n this.b *= alpha;\n\n if (!alpha) {\n // alpha = 0 erases completely rgb channels. This behavior is not desirable\n // if this particular color is later used in color interpolation.\n // Because of that, a reference to original color is saved.\n this.overwriteGetter('rgb', [r, g, b, alpha]);\n }\n }\n }\n\n static black = new Color(0, 0, 0, 1);\n static white = new Color(1, 1, 1, 1);\n static transparent = new Color(0, 0, 0, 0);\n static red = new Color(1, 0, 0, 1);\n\n /**\n * Parses CSS color strings and converts colors to sRGB color space if needed.\n * Officially supported color formats:\n * - keyword, e.g. 'aquamarine' or 'steelblue'\n * - hex (with 3, 4, 6 or 8 digits), e.g. '#f0f' or '#e9bebea9'\n * - rgb and rgba, e.g. 'rgb(0,240,120)' or 'rgba(0%,94%,47%,0.1)' or 'rgb(0 240 120 / .3)'\n * - hsl and hsla, e.g. 'hsl(0,0%,83%)' or 'hsla(0,0%,83%,.5)' or 'hsl(0 0% 83% / 20%)'\n *\n * @param input CSS color string to parse.\n * @returns A `Color` instance, or `undefined` if the input is not a valid color string.\n */\n static parse(input: Color | string | undefined | null): Color | undefined {\n // in zoom-and-property function input could be an instance of Color class\n if (input instanceof Color) {\n return input;\n }\n\n if (typeof input !== 'string') {\n return;\n }\n\n const rgba = parseCssColor(input);\n if (rgba) {\n return new Color(...rgba, false);\n }\n }\n\n /**\n * Used in color interpolation and by 'to-rgba' expression.\n *\n * @returns Gien color, with reversed alpha blending, in sRGB color space.\n */\n get rgb(): RGBColor {\n const {r, g, b, a} = this;\n const f = a || Infinity; // reverse alpha blending factor\n return this.overwriteGetter('rgb', [r / f, g / f, b / f, a]);\n }\n\n /**\n * Used in color interpolation.\n *\n * @returns Gien color, with reversed alpha blending, in HCL color space.\n */\n get hcl(): HCLColor {\n return this.overwriteGetter('hcl', rgbToHcl(this.rgb));\n }\n\n /**\n * Used in color interpolation.\n *\n * @returns Gien color, with reversed alpha blending, in LAB color space.\n */\n get lab(): LABColor {\n return this.overwriteGetter('lab', rgbToLab(this.rgb));\n }\n\n /**\n * Lazy getter pattern. When getter is called for the first time lazy value\n * is calculated and then overwrites getter function in given object instance.\n *\n * @example:\n * const redColor = Color.parse('red');\n * let x = redColor.hcl; // this will invoke `get hcl()`, which will calculate\n * // the value of red in HCL space and invoke this `overwriteGetter` function\n * // which in turn will set a field with a key 'hcl' in the `redColor` object.\n * // In other words it will override `get hcl()` from its `Color` prototype\n * // with its own property: hcl = [calculated red value in hcl].\n * let y = redColor.hcl; // next call will no longer invoke getter but simply\n * // return the previously calculated value\n * x === y; // true - `x` is exactly the same object as `y`\n *\n * @param getterKey Getter key\n * @param lazyValue Lazily calculated value to be memoized by current instance\n * @private\n */\n private overwriteGetter<T>(getterKey: string, lazyValue: T): T {\n Object.defineProperty(this, getterKey, {value: lazyValue});\n return lazyValue;\n }\n\n /**\n * Used by 'to-string' expression.\n *\n * @returns Serialized color in format `rgba(r,g,b,a)`\n * where r,g,b are numbers within 0..255 and alpha is number within 1..0\n *\n * @example\n * var purple = new Color.parse('purple');\n * purple.toString; // = \"rgba(128,0,128,1)\"\n * var translucentGreen = new Color.parse('rgba(26, 207, 26, .73)');\n * translucentGreen.toString(); // = \"rgba(26,207,26,0.73)\"\n */\n toString(): string {\n const [r, g, b, a] = this.rgb;\n return `rgba(${[r, g, b].map(n => Math.round(n * 255)).join(',')},${a})`;\n }\n\n static interpolate(from: Color, to: Color, t: number, spaceKey: InterpolationColorSpace = 'rgb'): Color {\n switch (spaceKey) {\n case 'rgb': {\n const [r, g, b, alpha] = interpolateArray(from.rgb, to.rgb, t);\n return new Color(r, g, b, alpha, false);\n }\n case 'hcl': {\n const [hue0, chroma0, light0, alphaF] = from.hcl;\n const [hue1, chroma1, light1, alphaT] = to.hcl;\n \n // https://github.com/gka/chroma.js/blob/cd1b3c0926c7a85cbdc3b1453b3a94006de91a92/src/interpolator/_hsx.js\n let hue, chroma;\n \n if (!isNaN(hue0) && !isNaN(hue1)) {\n let dh = hue1 - hue0;\n if (hue1 > hue0 && dh > 180) {\n dh -= 360;\n } else if (hue1 < hue0 && hue0 - hue1 > 180) {\n dh += 360;\n }\n hue = hue0 + t * dh;\n } else if (!isNaN(hue0)) {\n hue = hue0;\n if (light1 === 1 || light1 === 0) chroma = chroma0;\n } else if (!isNaN(hue1)) {\n hue = hue1;\n if (light0 === 1 || light0 === 0) chroma = chroma1;\n } else {\n hue = NaN;\n }\n \n const [r, g, b, alpha] = hclToRgb([\n hue,\n chroma ?? interpolateNumber(chroma0, chroma1, t),\n interpolateNumber(light0, light1, t),\n interpolateNumber(alphaF, alphaT, t),\n ]);\n return new Color(r, g, b, alpha, false);\n }\n case 'lab': {\n const [r, g, b, alpha] = labToRgb(interpolateArray(from.lab, to.lab, t));\n return new Color(r, g, b, alpha, false);\n }\n }\n }\n\n}\n","export class Collator {\n locale: string | null;\n sensitivity: 'base' | 'accent' | 'case' | 'variant';\n collator: Intl.Collator;\n\n constructor(caseSensitive: boolean, diacriticSensitive: boolean, locale: string | null) {\n if (caseSensitive)\n this.sensitivity = diacriticSensitive ? 'variant' : 'case';\n else\n this.sensitivity = diacriticSensitive ? 'accent' : 'base';\n\n this.locale = locale;\n this.collator = new Intl.Collator(this.locale ? this.locale : [],\n {sensitivity: this.sensitivity, usage: 'search'});\n }\n\n compare(lhs: string, rhs: string): number {\n return this.collator.compare(lhs, rhs);\n }\n\n resolvedLocale(): string {\n // We create a Collator without \"usage: search\" because we don't want\n // the search options encoded in our result (e.g. \"en-u-co-search\")\n return new Intl.Collator(this.locale ? this.locale : [])\n .resolvedOptions().locale;\n }\n}\n","import type {Color} from '../../expression/types/color';\nimport type {ResolvedImage} from '../types/resolved_image';\n\nexport const VERTICAL_ALIGN_OPTIONS = ['bottom', 'center', 'top'] as const;\nexport type VerticalAlign = typeof VERTICAL_ALIGN_OPTIONS[number];\n\nexport class FormattedSection {\n text: string;\n image: ResolvedImage | null;\n scale: number | null;\n fontStack: string | null;\n textColor: Color | null;\n verticalAlign: VerticalAlign | null;\n\n constructor(text: string, image: ResolvedImage | null, scale: number | null, fontStack: string | null, textColor: Color | null, verticalAlign: VerticalAlign | null) {\n this.text = text;\n this.image = image;\n this.scale = scale;\n this.fontStack = fontStack;\n this.textColor = textColor;\n this.verticalAlign = verticalAlign;\n }\n}\n\nexport class Formatted {\n sections: Array<FormattedSection>;\n\n constructor(sections: Array<FormattedSection>) {\n this.sections = sections;\n }\n\n static fromString(unformatted: string): Formatted {\n return new Formatted([new FormattedSection(unformatted, null, null, null, null, null)]);\n }\n\n isEmpty(): boolean {\n if (this.sections.length === 0) return true;\n return !this.sections.some(section => section.text.length !== 0 ||\n (section.image && section.image.name.length !== 0));\n }\n\n static factory(text: Formatted | string): Formatted {\n if (text instanceof Formatted) {\n return text;\n } else {\n return Formatted.fromString(text);\n }\n }\n\n toString(): string {\n if (this.sections.length === 0) return '';\n return this.sections.map(section => section.text).join('');\n }\n}\n","import {interpolateArray} from '../../util/interpolate-primitives';\n\n/**\n * A set of four numbers representing padding around a box. Create instances from\n * bare arrays or numeric values using the static method `Padding.parse`.\n * @private\n */\nexport class Padding {\n /** Padding values are in CSS order: top, right, bottom, left */\n values: [number, number, number, number];\n\n constructor(values: [number, number, number, number]) {\n this.values = values.slice() as [number, number, number, number];\n }\n\n /**\n * Numeric padding values\n * @param input A padding value\n * @returns A `Padding` instance, or `undefined` if the input is not a valid padding value.\n */\n static parse(input?: number | number[] | Padding | null): Padding | undefined {\n if (input instanceof Padding) {\n return input;\n }\n\n // Backwards compatibility: bare number is treated the same as array with single value.\n // Padding applies to all four sides.\n if (typeof input === 'number') {\n return new Padding([input, input, input, input]);\n }\n\n if (!Array.isArray(input)) {\n return undefined;\n }\n\n if (input.length < 1 || input.length > 4) {\n return undefined;\n }\n\n for (const val of input) {\n if (typeof val !== 'number') {\n return undefined;\n }\n }\n\n // Expand shortcut properties into explicit 4-sided values\n switch (input.length) {\n case 1:\n input = [input[0], input[0], input[0], input[0]];\n break;\n case 2:\n input = [input[0], input[1], input[0], input[1]];\n break;\n case 3:\n input = [input[0], input[1], input[2], input[1]];\n break;\n }\n\n return new Padding(input as [number, number, number, number]);\n }\n\n toString(): string {\n return JSON.stringify(this.values);\n }\n\n static interpolate(from: Padding, to: Padding, t: number): Padding {\n return new Padding(interpolateArray(from.values, to.values, t));\n }\n}\n","import {interpolateArray} from '../../util/interpolate-primitives';\n\n/**\n * An array of numbers. Create instances from\n * bare arrays or numeric values using the static method `NumberArray.parse`.\n * @private\n */\nexport class NumberArray {\n values: number[];\n\n constructor(values: number[]) {\n this.values = values.slice();\n }\n\n /**\n * Numeric NumberArray values\n * @param input A NumberArray value\n * @returns A `NumberArray` instance, or `undefined` if the input is not a valid NumberArray value.\n */\n static parse(input?: number | number[] | NumberArray | null): NumberArray | undefined {\n if (input instanceof NumberArray) {\n return input;\n }\n\n // Backwards compatibility (e.g. hillshade-illumination-direction): bare number is treated the same as array with single value.\n if (typeof input === 'number') {\n return new NumberArray([input]);\n }\n\n if (!Array.isArray(input)) {\n return undefined;\n }\n\n for (const val of input) {\n if (typeof val !== 'number') {\n return undefined;\n }\n }\n\n return new NumberArray(input);\n }\n\n toString(): string {\n return JSON.stringify(this.values);\n }\n\n static interpolate(from: NumberArray, to: NumberArray, t: number): NumberArray {\n return new NumberArray(interpolateArray(from.values, to.values, t));\n }\n}\n","import {Color, InterpolationColorSpace} from './color';\n\n/**\n * An array of colors. Create instances from\n * bare arrays or strings using the static method `ColorArray.parse`.\n * @private\n */\nexport class ColorArray {\n values: Color[];\n\n constructor(values: Color[]) {\n this.values = values.slice();\n }\n\n /**\n * ColorArray values\n * @param input A ColorArray value\n * @returns A `ColorArray` instance, or `undefined` if the input is not a valid ColorArray value.\n */\n static parse(input?: string | string[] | ColorArray | null): ColorArray | undefined {\n if (input instanceof ColorArray) {\n return input;\n }\n\n // Backwards compatibility (e.g. hillshade-shadow-color): bare Color is treated the same as array with single value.\n if (typeof input === 'string') {\n const parsed_val = Color.parse(input);\n if (!parsed_val) {\n return undefined;\n }\n return new ColorArray([parsed_val]);\n }\n\n if (!Array.isArray(input)) {\n return undefined;\n }\n\n const colors: Color[] = [];\n\n for (const val of input) {\n if (typeof val !== 'string') {\n return undefined;\n }\n const parsed_val = Color.parse(val);\n if(!parsed_val) {\n return undefined;\n }\n colors.push(parsed_val);\n }\n\n return new ColorArray(colors);\n }\n\n toString(): string {\n return JSON.stringify(this.values);\n }\n\n static interpolate(from: ColorArray, to: ColorArray, t: number, spaceKey: InterpolationColorSpace = 'rgb'): ColorArray {\n const colors = [] as Color[];\n if (from.values.length != to.values.length) {\n throw new Error(`colorArray: Arrays have mismatched length (${from.values.length} vs. ${to.values.length}), cannot interpolate.`);\n }\n for(let i = 0; i < from.values.length; i++) {\n colors.push(Color.interpolate(from.values[i], to.values[i], t, spaceKey))\n }\n return new ColorArray(colors);\n }\n}\n","export class RuntimeError extends Error {\n constructor(message: string) {\n super(message);\n this.name = 'RuntimeError';\n }\n\n toJSON() {\n return this.message;\n }\n}\n","import {RuntimeError} from '../runtime_error';\nimport {interpolateNumber} from '../../util/interpolate-primitives';\nimport type {VariableAnchorOffsetCollectionSpecification} from '../../types.g';\n\n/** Set of valid anchor positions, as a set for validation */\nconst anchors = new Set(['center', 'left', 'right', 'top', 'bottom', 'top-left', 'top-right', 'bottom-left', 'bottom-right']);\n\n/**\n * Utility class to assist managing values for text-variable-anchor-offset property. Create instances from\n * bare arrays using the static method `VariableAnchorOffsetCollection.parse`.\n * @private\n */\nexport class VariableAnchorOffsetCollection {\n /** Series of paired of anchor (string) and offset (point) values */\n values: VariableAnchorOffsetCollectionSpecification;\n\n constructor(values: VariableAnchorOffsetCollectionSpecification) {\n this.values = values.slice();\n }\n\n static parse(input?: VariableAnchorOffsetCollectionSpecification | VariableAnchorOffsetCollection): VariableAnchorOffsetCollection | undefined {\n if (input instanceof VariableAnchorOffsetCollection) {\n return input;\n }\n\n if (!Array.isArray(input) ||\n input.length < 1 ||\n input.length % 2 !== 0) {\n return undefined;\n }\n\n for (let i = 0; i < input.length; i += 2) {\n // Elements in even positions should be anchor positions; Elements in odd positions should be offset values\n const anchorValue = input[i];\n const offsetValue = input[i + 1];\n\n if (typeof anchorValue !== 'string' || !anchors.has(anchorValue)) {\n return undefined;\n }\n\n if (!Array.isArray(offsetValue) || offsetValue.length !== 2 || typeof offsetValue[0] !== 'number' || typeof offsetValue[1] !== 'number') {\n return undefined;\n }\n }\n\n return new VariableAnchorOffsetCollection(input);\n }\n\n toString(): string {\n return JSON.stringify(this.values);\n }\n\n static interpolate(from: VariableAnchorOffsetCollection, to: VariableAnchorOffsetCollection, t: number): VariableAnchorOffsetCollection {\n const fromValues = from.values;\n const toValues = to.values;\n \n if (fromValues.length !== toValues.length) {\n throw new RuntimeError(`Cannot interpolate values of different length. from: ${from.toString()}, to: ${to.toString()}`);\n }\n \n const output: VariableAnchorOffsetCollectionSpecification = [];\n \n for (let i = 0; i < fromValues.length; i += 2) {\n // Anchor entries must match\n if (fromValues[i] !== toValues[i]) {\n throw new RuntimeError(`Cannot interpolate values containing mismatched anchors. from[${i}]: ${fromValues[i]}, to[${i}]: ${toValues[i]}`);\n }\n output.push(fromValues[i]);\n \n // Interpolate the offset values for each anchor\n const [fx, fy] = fromValues[i + 1] as [number, number];\n const [tx, ty] = toValues[i + 1] as [number, number];\n output.push([interpolateNumber(fx, tx, t), interpolateNumber(fy, ty, t)]);\n }\n \n return new VariableAnchorOffsetCollection(output);\n }\n}\n","export type ResolvedImageOptions = {\n name: string;\n available: boolean;\n};\n\nexport class ResolvedImage {\n name: string;\n available: boolean;\n\n constructor(options: ResolvedImageOptions) {\n this.name = options.name;\n this.available = options.available;\n }\n\n toString(): string {\n return this.name;\n }\n\n static fromString(name: string): ResolvedImage | null {\n if (!name) return null; // treat empty values as no image\n return new ResolvedImage({name, available: false});\n }\n}\n","export class ProjectionDefinition {\n readonly from: string;\n readonly to: string;\n readonly transition: number;\n\n constructor(from: string, to: string, transition: number){\n this.from = from;\n this.to = to;\n this.transition = transition;\n }\n\n static interpolate(from: string, to: string, t: number) {\n return new ProjectionDefinition(from, to, t);\n }\n\n static parse(input?: any): ProjectionDefinition {\n if (input instanceof ProjectionDefinition) {\n return input;\n }\n if (Array.isArray(input) && input.length === 3 && typeof input[0] === 'string' && typeof input[1] === 'string' && typeof input[2] === 'number') {\n return new ProjectionDefinition(input[0], input[1], input[2]);\n }\n\n if (typeof input === 'object' && typeof input.from === 'string' && typeof input.to === 'string' && typeof input.transition === 'number') {\n return new ProjectionDefinition(input.from, input.to, input.transition);\n }\n\n if (typeof input === 'string') {\n return new ProjectionDefinition(input, input, 1);\n }\n return undefined;\n }\n}","\nimport {Color} from './types/color';\nimport {Collator} from './types/collator';\nimport {Formatted} from './types/formatted';\nimport {Padding} from './types/padding';\nimport {NumberArray} from './types/number_array';\nimport {ColorArray} from './types/color_array';\nimport {VariableAnchorOffsetCollection} from './types/variable_anchor_offset_collection';\nimport {ResolvedImage} from './types/resolved_image';\nimport {ProjectionDefinition} from './types/projection_definition';\nimport {NullType, NumberType, StringType, BooleanType, ColorType, ObjectType, ValueType, CollatorType, FormattedType, ResolvedImageType, array, PaddingType, NumberArrayType, ColorArrayType, VariableAnchorOffsetCollectionType, ProjectionDefinitionType} from './types';\n\nimport type {Type} from './types';\n\nexport function validateRGBA(r: unknown, g: unknown, b: unknown, a?: unknown): string | null {\n if (!(\n typeof r === 'number' && r >= 0 && r <= 255 &&\n typeof g === 'number' && g >= 0 && g <= 255 &&\n typeof b === 'number' && b >= 0 && b <= 255\n )) {\n const value = typeof a === 'number' ? [r, g, b, a] : [r, g, b];\n return `Invalid rgba value [${value.join(', ')}]: 'r', 'g', and 'b' must be between 0 and 255.`;\n }\n\n if (!(\n typeof a === 'undefined' || (typeof a === 'number' && a >= 0 && a <= 1)\n )) {\n return `Invalid rgba value [${[r, g, b, a].join(', ')}]: 'a' must be between 0 and 1.`;\n }\n\n return null;\n}\n\nexport type Value = null | string | boolean | number | Color | ProjectionDefinition | Collator | Formatted | Padding | NumberArray | ColorArray | ResolvedImage | VariableAnchorOffsetCollection | ReadonlyArray<Value> | {\n readonly [x: string]: Value;\n};\n\nexport function isValue(mixed: unknown): boolean {\n if (mixed === null ||\n typeof mixed === 'string' ||\n typeof mixed === 'boolean' ||\n typeof mixed === 'number' ||\n mixed instanceof ProjectionDefinition ||\n mixed instanceof Color ||\n mixed instanceof Collator ||\n mixed instanceof Formatted ||\n mixed instanceof Padding ||\n mixed instanceof NumberArray ||\n mixed instanceof ColorArray ||\n mixed instanceof VariableAnchorOffsetCollection ||\n mixed instanceof ResolvedImage) {\n return true;\n } else if (Array.isArray(mixed)) {\n for (const item of mixed) {\n if (!isValue(item)) {\n return false;\n }\n }\n return true;\n } else if (typeof mixed === 'object') {\n for (const key in mixed) {\n if (!isValue(mixed[key])) {\n return false;\n }\n }\n return true;\n } else {\n return false;\n }\n}\n\nexport function typeOf(value: Value): Type {\n if (value === null) {\n return NullType;\n } else if (typeof value === 'string') {\n return StringType;\n } else if (typeof value === 'boolean') {\n return BooleanType;\n } else if (typeof value === 'number') {\n return NumberType;\n } else if (value instanceof Color) {\n return ColorType;\n } else if (value instanceof ProjectionDefinition) {\n return ProjectionDefinitionType;\n } else if (value instanceof Collator) {\n return CollatorType;\n } else if (value instanceof Formatted) {\n return FormattedType;\n } else if (value instanceof Padding) {\n return PaddingType;\n } else if (value instanceof NumberArray) {\n return NumberArrayType;\n } else if (value instanceof ColorArray) {\n return ColorArrayType;\n } else if (value instanceof VariableAnchorOffsetCollection) {\n return VariableAnchorOffsetCollectionType;\n } else if (value instanceof ResolvedImage) {\n return ResolvedImageType;\n } else if (Array.isArray(value)) {\n const length = value.length;\n let itemType: Type | typeof undefined;\n\n for (const item of value) {\n const t = typeOf(item);\n if (!itemType) {\n itemType = t;\n } else if (itemType === t) {\n continue;\n } else {\n itemType = ValueType;\n break;\n }\n }\n\n return array(itemType || ValueType, length);\n } else {\n return ObjectType;\n }\n}\n\nexport function valueToString(value: Value) {\n const type = typeof value;\n if (value === null) {\n return '';\n } else if (type === 'string' || type === 'number' || type === 'boolean') {\n return String(value);\n } else if (value instanceof Color || value instanceof ProjectionDefinition || value instanceof Formatted || value instanceof Padding || value instanceof NumberArray || value instanceof ColorArray || value instanceof VariableAnchorOffsetCollection || value instanceof ResolvedImage) {\n return value.toString();\n } else {\n return JSON.stringify(value);\n }\n}\n","import {isValue, typeOf} from '../values';\n\nimport type {Type} from '../types';\nimport type {Value} from '../values';\nimport type {Expression} from '../expression';\nimport type {ParsingContext} from '../parsing_context';\n\nexport class Literal implements Expression {\n type: Type;\n value: Value;\n\n constructor(type: Type, value: Value) {\n this.type = type;\n this.value = value;\n }\n\n static parse(args: ReadonlyArray<unknown>, context: ParsingContext): Expression {\n if (args.length !== 2)\n return context.error(`'literal' expression requires exactly one argument, but found ${args.length - 1} instead.`) as null;\n\n if (!isValue(args[1]))\n return context.error('invalid value') as null;\n\n const value = (args[1] as any);\n let type = typeOf(value);\n\n // special case: infer the item type if possible for zero-length arrays\n const expected = context.expectedType;\n if (\n type.kind === 'array' &&\n type.N === 0 &&\n expected &&\n expected.kind === 'array' &&\n (typeof expected.N !== 'number' || expected.N === 0)\n ) {\n type = expected;\n }\n\n return new Literal(type, value);\n }\n\n evaluate() {\n return this.value;\n }\n\n eachChild() {}\n\n outputDefined() {\n return true;\n }\n}\n\n","\nimport {\n ObjectType,\n ValueType,\n StringType,\n NumberType,\n BooleanType,\n checkSubtype,\n typeToString,\n array\n} from '../types';\nimport {RuntimeError} from '../runtime_error';\nimport {typeOf} from '../values';\n\nimport type {Expression} from '../expression';\nimport type {ParsingContext} from '../parsing_context';\nimport type {EvaluationContext} from '../evaluation_context';\nimport type {Type} from '../types';\n\nconst types = {\n string: StringType,\n number: NumberType,\n boolean: BooleanType,\n object: ObjectType\n};\n\nexport class Assertion implements Expression {\n type: Type;\n args: Array<Expression>;\n\n constructor(type: Type, args: Array<Expression>) {\n this.type = type;\n this.args = args;\n }\n\n static parse(args: ReadonlyArray<unknown>, context: ParsingContext): Expression {\n if (args.length < 2)\n return context.error('Expected at least one argument.') as null;\n\n let i = 1;\n let type;\n\n const name: string = (args[0] as any);\n if (name === 'array') {\n let itemType;\n if (args.length > 2) {\n const type = args[1];\n if (typeof type !== 'string' || !(type in types) || type === 'object')\n return context.error('The item type argument of \"array\" must be one of string, number, boolean', 1) as null;\n itemType = types[type];\n i++;\n } else {\n itemType = ValueType;\n }\n\n let N;\n if (args.length > 3) {\n if (args[2] !== null &&\n (typeof args[2] !== 'number' ||\n args[2] < 0 ||\n args[2] !== Math.floor(args[2]))\n ) {\n return context.error('The length argument to \"array\" must be a positive integer literal', 2) as null;\n }\n N = args[2];\n i++;\n }\n\n type = array(itemType, N);\n } else {\n if (!types[name]) throw new Error(`Types doesn't contain name = ${name}`);\n type = types[name];\n }\n\n const parsed = [];\n for (; i < args.length; i++) {\n const input = context.parse(args[i], i, ValueType);\n if (!input) return null;\n parsed.push(input);\n }\n\n return new Assertion(type, parsed);\n }\n\n evaluate(ctx: EvaluationContext) {\n for (let i = 0; i < this.args.length; i++) {\n const value = this.args[i].evaluate(ctx);\n const error = checkSubtype(this.type, typeOf(value));\n if (!error) {\n return value;\n } else if (i === this.args.length - 1) {\n throw new RuntimeError(`Expected value to be of type ${typeToString(this.type)}, but found ${typeToString(typeOf(value))} instead.`);\n }\n }\n\n throw new Error();\n }\n\n eachChild(fn: (_: Expression) => void) {\n this.args.forEach(fn);\n }\n\n outputDefined(): boolean {\n return this.args.every(arg => arg.outputDefined());\n }\n}\n","import {BooleanType, ColorType, NumberType, StringType, ValueType} from '../types';\nimport {valueToString, validateRGBA} from '../values';\nimport {RuntimeError} from '../runtime_error';\nimport {Formatted} from '../types/formatted';\nimport {ResolvedImage} from '../types/resolved_image';\nimport {Color} from '../types/color';\nimport {Padding} from '../types/padding';\nimport {NumberArray} from '../types/number_array';\nimport {ColorArray} from '../types/color_array';\nimport {VariableAnchorOffsetCollection} from '../types/variable_anchor_offset_collection';\n\nimport type {Expression} from '../expression';\nimport type {ParsingContext} from '../parsing_context';\nimport type {EvaluationContext} from '../evaluation_context';\nimport type {Type} from '../types';\n\nconst types = {\n 'to-boolean': BooleanType,\n 'to-color': ColorType,\n 'to-number': NumberType,\n 'to-string': StringType\n};\n\n/**\n * Special form for error-coalescing coercion expressions \"to-number\",\n * \"to-color\". Since these coercions can fail at runtime, they accept multiple\n * arguments, only evaluating one at a time until one succeeds.\n *\n * @private\n */\nexport class Coercion implements Expression {\n type: Type;\n args: Array<Expression>;\n\n constructor(type: Type, args: Array<Expression>) {\n this.type = type;\n this.args = args;\n\n }\n\n static parse(args: ReadonlyArray<unknown>, context: ParsingContext): Expression {\n if (args.length < 2)\n return context.error('Expected at least one argument.') as null;\n\n const name: string = (args[0] as any);\n if (!types[name]) throw new Error(`Can't parse ${name} as it is not part of the known types`);\n if ((name === 'to-boolean' || name === 'to-string') && args.length !== 2)\n return context.error('Expected one argument.') as null;\n\n const type = types[name];\n\n const parsed = [];\n for (let i = 1; i < args.length; i++) {\n const input = context.parse(args[i], i, ValueType);\n if (!input) return null;\n parsed.push(input);\n }\n\n return new Coercion(type, parsed);\n }\n\n evaluate(ctx: EvaluationContext) {\n switch (this.type.kind) {\n case 'boolean':\n return Boolean(this.args[0].evaluate(ctx));\n case 'color': {\n let input;\n let error;\n for (const arg of this.args) {\n input = arg.evaluate(ctx);\n error = null;\n if (input instanceof Color) {\n return input;\n } else if (typeof input === 'string') {\n const c = ctx.parseColor(input);\n if (c) return c;\n } else if (Array.isArray(input)) {\n if (input.length < 3 || input.length > 4) {\n error = `Invalid rgba value ${JSON.stringify(input)}: expected an array containing either three or four numeric values.`;\n } else {\n error = validateRGBA(input[0], input[1], input[2], input[3]);\n }\n if (!error) {\n return new Color((input[0] as any) / 255, (input[1] as any) / 255, (input[2] as any) / 255, (input[3] as any));\n }\n }\n }\n throw new RuntimeError(error || `Could not parse color from value '${typeof input === 'string' ? input : JSON.stringify(input)}'`);\n }\n case 'padding': {\n let input;\n for (const arg of this.args) {\n input = arg.evaluate(ctx);\n\n const pad = Padding.parse(input);\n if (pad) {\n return pad;\n }\n }\n throw new RuntimeError(`Could not parse padding from value '${typeof input === 'string' ? input : JSON.stringify(input)}'`);\n }\n case 'numberArray': {\n let input;\n for (const arg of this.args) {\n input = arg.evaluate(ctx);\n\n const val = NumberArray.parse(input);\n if (val) {\n return val;\n }\n }\n throw new RuntimeError(`Could not parse numberArray from value '${typeof input === 'string' ? input : JSON.stringify(input)}'`);\n }\n case 'colorArray': {\n let input;\n for (const arg of this.args) {\n input = arg.evaluate(ctx);\n\n const val = ColorArray.parse(input);\n if (val) {\n return val;\n }\n }\n throw new RuntimeError(`Could not parse colorArray from value '${typeof input === 'string' ? input : JSON.stringify(input)}'`);\n }\n case 'variableAnchorOffsetCollection': {\n let input;\n for (const arg of this.args) {\n input = arg.evaluate(ctx);\n\n const coll = VariableAnchorOffsetCollection.parse(input);\n if (coll) {\n return coll;\n }\n }\n throw new RuntimeError(`Could not parse variableAnchorOffsetCollection from value '${typeof input === 'string' ? input : JSON.stringify(input)}'`);\n }\n case 'number': {\n let value = null;\n for (const arg of this.args) {\n value = arg.evaluate(ctx);\n if (value === null) return 0;\n const num = Number(value);\n if (isNaN(num)) continue;\n return num;\n }\n throw new RuntimeError(`Could not convert ${JSON.stringify(value)} to number.`);\n }\n case 'formatted':\n // There is no explicit 'to-formatted' but this coercion can be implicitly\n // created by properties that expect the 'formatted' type.\n return Formatted.fromString(valueToString(this.args[0].evaluate(ctx)));\n case 'resolvedImage':\n return ResolvedImage.fromString(valueToString(this.args[0].evaluate(ctx)));\n case 'projectionDefinition':\n return this.args[0].evaluate(ctx);\n default:\n return valueToString(this.args[0].evaluate(ctx));\n }\n }\n\n eachChild(fn: (_: Expression) => void) {\n this.args.forEach(fn);\n }\n\n outputDefined(): boolean {\n return this.args.every(arg => arg.outputDefined());\n }\n}\n\n","import type {FormattedSection} from './types/formatted';\nimport type {GlobalProperties, Feature, FeatureState} from './index';\nimport {ICanonicalTileID} from '../tiles_and_coordinates';\nimport {Color} from './types/color';\n\nconst geometryTypes = ['Unknown', 'Point', 'LineString', 'Polygon'];\n\nexport class EvaluationContext {\n globals: GlobalProperties;\n feature: Feature;\n featureState: FeatureState;\n formattedSection: FormattedSection;\n availableImages: Array<string>;\n canonical: ICanonicalTileID;\n\n _parseColorCache: Map<string, Color>;\n\n constructor() {\n this.globals = null;\n this.feature = null;\n this.featureState = null;\n this.formattedSection = null;\n this._parseColorCache = new Map<string, Color>();\n this.availableImages = null;\n this.canonical = null;\n }\n\n id() {\n return this.feature && 'id' in this.feature ? this.feature.id : null;\n }\n\n geometryType() {\n return this.feature ? typeof this.feature.type === 'number' ? geometryTypes[this.feature.type] : this.feature.type : null;\n }\n\n geometry() {\n return this.feature && 'geometry' in this.feature ? this.feature.geometry : null;\n }\n\n canonicalID() {\n return this.canonical;\n }\n\n properties() {\n return this.feature && this.feature.properties || {};\n }\n\n parseColor(input: string): Color {\n let cached = this._parseColorCache.get(input);\n if (!cached) {\n cached = Color.parse(input);\n this._parseColorCache.set(input, cached);\n }\n return cached;\n }\n}\n\n","import {Scope} from './scope';\nimport {checkSubtype} from './types';\nimport {ExpressionParsingError} from './parsing_error';\nimport {Literal} from './definitions/literal';\nimport {Assertion} from './definitions/assertion';\nimport {Coercion} from './definitions/coercion';\nimport {EvaluationContext} from './evaluation_context';\n\nimport type {Expression, ExpressionRegistry} from './expression';\nimport type {Type} from './types';\n\n/**\n * State associated parsing at a given point in an expression tree.\n * @private\n */\nexport class ParsingContext {\n registry: ExpressionRegistry;\n path: Array<number>;\n key: string;\n scope: Scope;\n errors: Array<ExpressionParsingError>;\n\n // The expected type of this expression. Provided only to allow Expression\n // implementations to infer argument types: Expression#parse() need not\n // check that the output type of the parsed expression matches\n // `expectedType`.\n expectedType: Type;\n\n /**\n * Internal delegate to inConstant function to avoid circular dependency to CompoundExpression\n */\n private _isConstant: (expression: Expression)=> boolean;\n\n constructor(\n registry: ExpressionRegistry,\n isConstantFunc: (expression: Expression)=> boolean,\n path: Array<number> = [],\n expectedType?: Type | null,\n scope: Scope = new Scope(),\n errors: Array<ExpressionParsingError> = []\n ) {\n this.registry = registry;\n this.path = path;\n this.key = path.map(part => `[${part}]`).join('');\n this.scope = scope;\n this.errors = errors;\n this.expectedType = expectedType;\n this._isConstant = isConstantFunc;\n }\n\n /**\n * @param expr the JSON expression to parse\n * @param index the optional argument index if this expression is an argument of a parent expression that's being parsed\n * @param options\n * @param options.omitTypeAnnotations set true to omit inferred type annotations. Caller beware: with this option set, the parsed expression's type will NOT satisfy `expectedType` if it would normally be wrapped in an inferred annotation.\n * @private\n */\n parse(\n expr: unknown,\n index?: number,\n expectedType?: Type | null,\n bindings?: Array<[string, Expression]>,\n options: {\n typeAnnotation?: 'assert' | 'coerce' | 'omit';\n } = {}\n ): Expression {\n if (index) {\n return this.concat(index, expectedType, bindings)._parse(expr, options);\n }\n return this._parse(expr, options);\n }\n\n _parse(\n expr: unknown,\n options: {\n typeAnnotation?: 'assert' | 'coerce' | 'omit';\n }\n ): Expression {\n if (expr === null || typeof expr === 'string' || typeof expr === 'boolean' || typeof expr === 'number') {\n expr = ['literal', expr];\n }\n\n function annotate(parsed, type, typeAnnotation: 'assert' | 'coerce' | 'omit') {\n if (typeAnnotation === 'assert') {\n return new Assertion(type, [parsed]);\n } else if (typeAnnotation === 'coerce') {\n return new Coercion(type, [parsed]);\n } else {\n return parsed;\n }\n }\n\n if (Array.isArray(expr)) {\n if (expr.length === 0) {\n return this.error('Expected an array with at least one element. If you wanted a literal array, use [\"literal\", []].') as null;\n }\n\n const op = expr[0];\n if (typeof op !== 'string') {\n this.error(`Expression name must be a string, but found ${typeof op} instead. If you wanted a literal array, use [\"literal\", [...]].`, 0);\n return null;\n }\n\n const Expr = this.registry[op];\n if (Expr) {\n let parsed = Expr.parse(expr, this);\n if (!parsed) return null;\n\n if (this.expectedType) {\n const expected = this.expectedType;\n const actual = parsed.type;\n\n // When we expect a number, string, boolean, or array but have a value, wrap it in an assertion.\n // When we expect a color or formatted string, but have a string or value, wrap it in a coercion.\n // Otherwise, we do static type-checking.\n //\n // These behaviors are overridable for:\n // * The \"coalesce\" operator, which needs to omit type annotations.\n // * String-valued properties (e.g. `text-field`), where coercion is more convenient than assertion.\n //\n if ((expected.kind === 'string' || expected.kind === 'number' || expected.kind === 'boolean' || expected.kind === 'object' || expected.kind === 'array') && actual.kind === 'value') {\n parsed = annotate(parsed, expected, options.typeAnnotation || 'assert');\n } else if (('projectionDefinition' === expected.kind && ['string', 'array'].includes(actual.kind)) ||\n ((['color', 'formatted','resolvedImage'].includes(expected.kind)) && ['value','string'].includes(actual.kind)) ||\n ((['padding','numberArray'].includes(expected.kind)) && ['value', 'number', 'array'].includes(actual.kind)) ||\n ('colorArray' === expected.kind && ['value', 'string', 'array'].includes(actual.kind)) ||\n ('variableAnchorOffsetCollection' === expected.kind && ['value', 'array'].includes(actual.kind))) {\n parsed = annotate(parsed, expected, options.typeAnnotation || 'coerce');\n } else if (this.checkSubtype(expected, actual)) {\n return null;\n }\n }\n\n // If an expression's arguments are all literals, we can evaluate\n // it immediately and replace it with a literal value in the\n // parsed/compiled result. Expressions that expect an image should\n // not be resolved here so we can later get the available images.\n if (!(parsed instanceof Literal) && (parsed.type.kind !== 'resolvedImage') && this._isConstant(parsed)) {\n const ec = new EvaluationContext();\n try {\n parsed = new Literal(parsed.type, parsed.evaluate(ec));\n } catch (e) {\n this.error(e.message);\n return null;\n }\n }\n\n return parsed;\n }\n\n return this.error(`Unknown expression \"${op}\". If you wanted a literal array, use [\"literal\", [...]].`, 0) as null;\n } else if (typeof expr === 'undefined') {\n return this.error('\\'undefined\\' value invalid. Use null instead.') as null;\n } else if (typeof expr === 'object') {\n return this.error('Bare objects invalid. Use [\"literal\", {...}] instead.') as null;\n } else {\n return this.error(`Expected an array, but found ${typeof expr} instead.`) as null;\n }\n }\n\n /**\n * Returns a copy of this context suitable for parsing the subexpression at\n * index `index`, optionally appending to 'let' binding map.\n *\n * Note that `errors` property, intended for collecting errors while\n * parsing, is copied by reference rather than cloned.\n * @private\n */\n concat(index: number, expectedType?: Type | null, bindings?: Array<[string, Expression]>) {\n const path = typeof index === 'number' ? this.path.concat(index) : this.path;\n const scope = bindings ? this.scope.concat(bindings) : this.scope;\n return new ParsingContext(\n this.registry,\n this._isConstant,\n path,\n expectedType || null,\n scope,\n this.errors\n );\n }\n\n /**\n * Push a parsing (or type checking) error into the `this.errors`\n * @param error The message\n * @param keys Optionally specify the source of the error at a child\n * of the current expression at `this.key`.\n * @private\n */\n error(error: string, ...keys: Array<number>) {\n const key = `${this.key}${keys.map(k => `[${k}]`).join('')}`;\n this.errors.push(new ExpressionParsingError(key, error));\n }\n\n /**\n * Returns null if `t` is a subtype of `expected`; otherwise returns an\n * error message and also pushes it to `this.errors`.\n * @param expected The expected type\n * @param t The actual type\n * @returns null if `t` is a subtype of `expected`; otherwise returns an error message\n */\n checkSubtype(expected: Type, t: Type): string {\n const error = checkSubtype(expected, t);\n if (error) this.error(error);\n return error;\n }\n}\n\n","import type {Type} from '../types';\nimport type {Expression} from '../expression';\nimport type {ParsingContext} from '../parsing_context';\nimport type {EvaluationContext} from '../evaluation_context';\n\nexport class Let implements Expression {\n type: Type;\n bindings: Array<[string, Expression]>;\n result: Expression;\n\n constructor(bindings: Array<[string, Expression]>, result: Expression) {\n this.type = result.type;\n this.bindings = [].concat(bindings);\n this.result = result;\n }\n\n evaluate(ctx: EvaluationContext) {\n return this.result.evaluate(ctx);\n }\n\n eachChild(fn: (_: Expression) => void) {\n for (const binding of this.bindings) {\n fn(binding[1]);\n }\n fn(this.result);\n }\n\n static parse(args: ReadonlyArray<unknown>, context: ParsingContext): Expression {\n if (args.length < 4)\n return context.error(`Expected at least 3 arguments, but found ${args.length - 1} instead.`) as null;\n\n const bindings: Array<[string, Expression]> = [];\n for (let i = 1; i < args.length - 1; i += 2) {\n const name = args[i];\n\n if (typeof name !== 'string') {\n return context.error(`Expected string, but found ${typeof name} instead.`, i) as null;\n }\n\n if (/[^a-zA-Z0-9_]/.test(name)) {\n return context.error('Variable names must contain only alphanumeric characters or \\'_\\'.', i) as null;\n }\n\n const value = context.parse(args[i + 1], i + 1);\n if (!value) return null;\n\n bindings.push([name, value]);\n }\n\n const result = context.parse(args[args.length - 1], args.length - 1, context.expectedType, bindings);\n if (!result) return null;\n\n return new Let(bindings, result);\n }\n\n outputDefined() {\n return this.result.outputDefined();\n }\n}\n","import type {Type} from '../types';\nimport type {Expression} from '../expression';\nimport type {ParsingContext} from '../parsing_context';\nimport type {EvaluationContext} from '../evaluation_context';\n\nexport class Var implements Expression {\n type: Type;\n name: string;\n boundExpression: Expression;\n\n constructor(name: string, boundExpression: Expression) {\n this.type = boundExpression.type;\n this.name = name;\n this.boundExpression = boundExpression;\n }\n\n static parse(args: ReadonlyArray<unknown>, context: ParsingContext): Expression {\n if (args.length !== 2 || typeof args[1] !== 'string')\n return context.error('\\'var\\' expression requires exactly one string literal argument.') as null;\n\n const name = args[1];\n if (!context.scope.has(name)) {\n return context.error(`Unknown variable \"${name}\". Make sure \"${name}\" has been bound in an enclosing \"let\" expression before using it.`, 1) as null;\n }\n\n return new Var(name, context.scope.get(name));\n }\n\n evaluate(ctx: EvaluationContext) {\n return this.boundExpression.evaluate(ctx);\n }\n\n eachChild() {}\n\n outputDefined() {\n return false;\n }\n}\n\n","import {array, ValueType, NumberType} from '../types';\n\nimport {RuntimeError} from '../runtime_error';\n\nimport type {Expression} from '../expression';\nimport type {ParsingContext} from '../parsing_context';\nimport type {EvaluationContext} from '../evaluation_context';\nimport type {Type, ArrayType} from '../types';\nimport type {Value} from '../values';\n\nexport class At implements Expression {\n type: Type;\n index: Expression;\n input: Expression;\n\n constructor(type: Type, index: Expression, input: Expression) {\n this.type = type;\n this.index = index;\n this.input = input;\n }\n\n static parse(args: ReadonlyArray<unknown>, context: ParsingContext): Expression {\n if (args.length !== 3)\n return context.error(`Expected 2 arguments, but found ${args.length - 1} instead.`) as null;\n\n const index = context.parse(args[1], 1, NumberType);\n const input = context.parse(args[2], 2, array(context.expectedType || ValueType));\n\n if (!index || !input) return null;\n\n const t: ArrayType = (input.type as any);\n return new At(t.itemType, index, input);\n }\n\n evaluate(ctx: EvaluationContext) {\n const index = (this.index.evaluate(ctx) as any as number);\n const array = (this.input.evaluate(ctx) as any as Array<Value>);\n\n if (index < 0) {\n throw new RuntimeError(`Array index out of bounds: ${index} < 0.`);\n }\n\n if (index >= array.length) {\n throw new RuntimeError(`Array index out of bounds: ${index} > ${array.length - 1}.`);\n }\n\n if (index !== Math.floor(index)) {\n throw new RuntimeError(`Array index must be an integer, but found ${index} instead.`);\n }\n\n return array[index];\n }\n\n eachChild(fn: (_: Expression) => void) {\n fn(this.index);\n fn(this.input);\n }\n\n outputDefined() {\n return false;\n }\n}\n\n","import {\n BooleanType,\n StringType,\n ValueType,\n NullType,\n typeToString,\n NumberType,\n isValidType,\n isValidNativeType,\n} from '../types';\nimport {RuntimeError} from '../runtime_error';\nimport {typeOf} from '../values';\n\nimport type {Expression} from '../expression';\nimport type {ParsingContext} from '../parsing_context';\nimport type {EvaluationContext} from '../evaluation_context';\nimport type {Type} from '../types';\n\nexport class In implements Expression {\n type: Type;\n needle: Expression;\n haystack: Expression;\n\n constructor(needle: Expression, haystack: Expression) {\n this.type = BooleanType;\n this.needle = needle;\n this.haystack = haystack;\n }\n\n static parse(args: ReadonlyArray<unknown>, context: ParsingContext): Expression {\n if (args.length !== 3) {\n return context.error(`Expected 2 arguments, but found ${args.length - 1} instead.`) as null;\n }\n\n const needle = context.parse(args[1], 1, ValueType);\n\n const haystack = context.parse(args[2], 2, ValueType);\n\n if (!needle || !haystack) return null;\n\n if (!isValidType(needle.type, [BooleanType, StringType, NumberType, NullType, ValueType])) {\n return context.error(`Expected first argument to be of type boolean, string, number or null, but found ${typeToString(needle.type)} instead`) as null;\n }\n\n return new In(needle, haystack);\n }\n\n evaluate(ctx: EvaluationContext) {\n const needle = (this.needle.evaluate(ctx) as any);\n const haystack = (this.haystack.evaluate(ctx) as any);\n\n if (!haystack) return false;\n\n if (!isValidNativeType(needle, ['boolean', 'string', 'number', 'null'])) {\n throw new RuntimeError(`Expected first argument to be of type boolean, string, number or null, but found ${typeToString(typeOf(needle))} instead.`);\n }\n\n if (!isValidNativeType(haystack, ['string', 'array'])) {\n throw new RuntimeError(`Expected second argument to be of type array or string, but found ${typeToString(typeOf(haystack))} instead.`);\n }\n\n return haystack.indexOf(needle) >= 0;\n }\n\n eachChild(fn: (_: Expression) => void) {\n fn(this.needle);\n fn(this.haystack);\n }\n\n outputDefined() {\n return true;\n }\n}\n\n","import {\n BooleanType,\n StringType,\n ValueType,\n NullType,\n typeToString,\n NumberType,\n isValidType,\n isValidNativeType,\n} from '../types';\nimport {RuntimeError} from '../runtime_error';\nimport {typeOf} from '../values';\n\nimport type {Expression} from '../expression';\nimport type {ParsingContext} from '../parsing_context';\nimport type {EvaluationContext} from '../evaluation_context';\nimport type {Type} from '../types';\n\nexport class IndexOf implements Expression {\n type: Type;\n needle: Expression;\n haystack: Expression;\n fromIndex: Expression;\n\n constructor(needle: Expression, haystack: Expression, fromIndex?: Expression) {\n this.type = NumberType;\n this.needle = needle;\n this.haystack = haystack;\n this.fromIndex = fromIndex;\n }\n\n static parse(args: ReadonlyArray<unknown>, context: ParsingContext): Expression {\n if (args.length <= 2 || args.length >= 5) {\n return context.error(`Expected 2 or 3 arguments, but found ${args.length - 1} instead.`) as null;\n }\n\n const needle = context.parse(args[1], 1, ValueType);\n\n const haystack = context.parse(args[2], 2, ValueType);\n\n if (!needle || !haystack) return null;\n if (!isValidType(needle.type, [BooleanType, StringType, NumberType, NullType, ValueType])) {\n return context.error(`Expected first argument to be of type boolean, string, number or null, but found ${typeToString(needle.type)} instead`) as null;\n }\n\n if (args.length === 4) {\n const fromIndex = context.parse(args[3], 3, NumberType);\n if (!fromIndex) return null;\n return new IndexOf(needle, haystack, fromIndex);\n } else {\n return new IndexOf(needle, haystack);\n }\n }\n\n evaluate(ctx: EvaluationContext) {\n const needle = (this.needle.evaluate(ctx) as any);\n const haystack = (this.haystack.evaluate(ctx) as any);\n\n if (!isValidNativeType(needle, ['boolean', 'string', 'number', 'null'])) {\n throw new RuntimeError(`Expected first argument to be of type boolean, string, number or null, but found ${typeToString(typeOf(needle))} instead.`);\n }\n\n let fromIndex;\n if (this.fromIndex) {\n fromIndex = (this.fromIndex.evaluate(ctx) as number);\n }\n\n if (isValidNativeType(haystack, ['string'])) {\n const rawIndex = haystack.indexOf(needle, fromIndex);\n if (rawIndex === -1) {\n return -1;\n } else {\n // The index may be affected by surrogate pairs, so get the length of the preceding substring.\n return [...haystack.slice(0, rawIndex)].length;\n }\n } else if (isValidNativeType(haystack, ['array'])) {\n return haystack.indexOf(needle, fromIndex);\n } else {\n throw new RuntimeError(`Expected second argument to be of type array or string, but found ${typeToString(typeOf(haystack))} instead.`);\n }\n }\n\n eachChild(fn: (_: Expression) => void) {\n fn(this.needle);\n fn(this.haystack);\n if (this.fromIndex) {\n fn(this.fromIndex);\n }\n }\n\n outputDefined() {\n return false;\n }\n}\n\n","\nimport {typeOf} from '../values';\nimport {ValueType} from '../types';\n\nimport type {Type} from '../types';\n\nimport type {Expression} from '../expression';\nimport type {ParsingContext} from '../parsing_context';\nimport type {EvaluationContext} from '../evaluation_context';\n\n// Map input label values to output expression index\ntype Cases = {\n [k in number | string]: number;\n};\n\nexport class Match implements Expression {\n type: Type;\n inputType: Type;\n\n input: Expression;\n cases: Cases;\n outputs: Array<Expression>;\n otherwise: Expression;\n\n constructor(inputType: Type, outputType: Type, input: Expression, cases: Cases, outputs: Array<Expression>, otherwise: Expression) {\n this.inputType = inputType;\n this.type = outputType;\n this.input = input;\n this.cases = cases;\n this.outputs = outputs;\n this.otherwise = otherwise;\n }\n\n static parse(args: ReadonlyArray<unknown>, context: ParsingContext): Expression {\n if (args.length < 5)\n return context.error(`Expected at least 4 arguments, but found only ${args.length - 1}.`) as null;\n if (args.length % 2 !== 1)\n return context.error('Expected an even number of arguments.') as null;\n\n let inputType;\n let outputType;\n if (context.expectedType && context.expectedType.kind !== 'value') {\n outputType = context.expectedType;\n }\n const cases = {};\n const outputs = [];\n for (let i = 2; i < args.length - 1; i += 2) {\n let labels = args[i] as unknown[];\n const value = args[i + 1];\n\n if (!Array.isArray(labels)) {\n labels = [labels];\n }\n\n const labelContext = context.concat(i);\n if (labels.length === 0) {\n return labelContext.error('Expected at least one branch label.') as null;\n }\n\n for (const label of labels) {\n if (typeof label !== 'number' && typeof label !== 'string') {\n return labelContext.error('Branch labels must be numbers or strings.') as null;\n } else if (typeof label === 'number' && Math.abs(label) > Number.MAX_SAFE_INTEGER) {\n return labelContext.error(`Branch labels must be integers no larger than ${Number.MAX_SAFE_INTEGER}.`) as null;\n\n } else if (typeof label === 'number' && Math.floor(label) !== label) {\n return labelContext.error('Numeric branch labels must be integer values.') as null;\n\n } else if (!inputType) {\n inputType = typeOf(label);\n } else if (labelContext.checkSubtype(inputType, typeOf(label))) {\n return null;\n }\n\n if (typeof cases[String(label)] !== 'undefined') {\n return labelContext.error('Branch labels must be unique.') as null;\n }\n\n cases[String(label)] = outputs.length;\n }\n\n const result = context.parse(value, i, outputType);\n if (!result) return null;\n outputType = outputType || result.type;\n outputs.push(result);\n }\n\n const input = context.parse(args[1], 1, ValueType);\n if (!input) return null;\n\n const otherwise = context.parse(args[args.length - 1], args.length - 1, outputType);\n if (!otherwise) return null;\n\n if (input.type.kind !== 'value' && context.concat(1).checkSubtype(((inputType as any)), input.type)) {\n return null;\n }\n\n return new Match((inputType as any), (outputType as any), input, cases, outputs, otherwise);\n }\n\n evaluate(ctx: EvaluationContext) {\n const input = (this.input.evaluate(ctx) as any);\n const output = (typeOf(input) === this.inputType && this.outputs[this.cases[input]]) || this.otherwise;\n return output.evaluate(ctx);\n }\n\n eachChild(fn: (_: Expression) => void) {\n fn(this.input);\n this.outputs.forEach(fn);\n fn(this.otherwise);\n }\n\n outputDefined(): boolean {\n return this.outputs.every(out => out.outputDefined()) && this.otherwise.outputDefined();\n }\n}\n\n","\nimport {BooleanType} from '../types';\n\nimport type {Expression} from '../expression';\nimport type {ParsingContext} from '../parsing_context';\nimport type {EvaluationContext} from '../evaluation_context';\nimport type {Type} from '../types';\n\ntype Branches = Array<[Expression, Expression]>;\n\nexport class Case implements Expression {\n type: Type;\n\n branches: Branches;\n otherwise: Expression;\n\n constructor(type: Type, branches: Branches, otherwise: Expression) {\n this.type = type;\n this.branches = branches;\n this.otherwise = otherwise;\n }\n\n static parse(args: ReadonlyArray<unknown>, context: ParsingContext): Expression {\n if (args.length < 4)\n return context.error(`Expected at least 3 arguments, but found only ${args.length - 1}.`) as null;\n if (args.length % 2 !== 0)\n return context.error('Expected an odd number of arguments.') as null;\n\n let outputType: Type;\n if (context.expectedType && context.expectedType.kind !== 'value') {\n outputType = context.expectedType;\n }\n\n const branches = [];\n for (let i = 1; i < args.length - 1; i += 2) {\n const test = context.parse(args[i], i, BooleanType);\n if (!test) return null;\n\n const result = context.parse(args[i + 1], i + 1, outputType);\n if (!result) return null;\n\n branches.push([test, result]);\n\n outputType = outputType || result.type;\n }\n\n const otherwise = context.parse(args[args.length - 1], args.length - 1, outputType);\n if (!otherwise) return null;\n\n if (!outputType) throw new Error('Can\\'t infer output type');\n return new Case((outputType as any), branches, otherwise);\n }\n\n evaluate(ctx: EvaluationContext) {\n for (const [test, expression] of this.branches) {\n if (test.evaluate(ctx)) {\n return expression.evaluate(ctx);\n }\n }\n return this.otherwise.evaluate(ctx);\n }\n\n eachChild(fn: (_: Expression) => void) {\n for (const [test, expression] of this.branches) {\n fn(test);\n fn(expression);\n }\n fn(this.otherwise);\n }\n\n outputDefined(): boolean {\n return this.branches.every(([_, out]) => out.outputDefined()) && this.otherwise.outputDefined();\n }\n}\n\n","import {\n ValueType,\n NumberType,\n StringType,\n array,\n typeToString,\n isValidType,\n isValidNativeType,\n} from '../types';\nimport {RuntimeError} from '../runtime_error';\nimport {typeOf} from '../values';\n\nimport type {Expression} from '../expression';\nimport type {ParsingContext} from '../parsing_context';\nimport type {EvaluationContext} from '../evaluation_context';\nimport type {Type} from '../types';\n\nexport class Slice implements Expression {\n type: Type;\n input: Expression;\n beginIndex: Expression;\n endIndex: Expression;\n\n constructor(type: Type, input: Expression, beginIndex: Expression, endIndex?: Expression) {\n this.type = type;\n this.input = input;\n this.beginIndex = beginIndex;\n this.endIndex = endIndex;\n\n }\n\n static parse(args: ReadonlyArray<unknown>, context: ParsingContext): Expression {\n if (args.length <= 2 || args.length >= 5) {\n return context.error(`Expected 2 or 3 arguments, but found ${args.length - 1} instead.`) as null;\n }\n\n const input = context.parse(args[1], 1, ValueType);\n const beginIndex = context.parse(args[2], 2, NumberType);\n\n if (!input || !beginIndex) return null;\n\n if (!isValidType(input.type, [array(ValueType), StringType, ValueType])) {\n return context.error(`Expected first argument to be of type array or string, but found ${typeToString(input.type)} instead`) as null;\n }\n\n if (args.length === 4) {\n const endIndex = context.parse(args[3], 3, NumberType);\n if (!endIndex) return null;\n return new Slice(input.type, input, beginIndex, endIndex);\n } else {\n return new Slice(input.type, input, beginIndex);\n }\n }\n\n evaluate(ctx: EvaluationContext) {\n const input = (this.input.evaluate(ctx) as any);\n const beginIndex = (this.beginIndex.evaluate(ctx) as number);\n\n let endIndex;\n if (this.endIndex) {\n endIndex = (this.endIndex.evaluate(ctx) as number);\n }\n\n if (isValidNativeType(input, ['string'])) {\n // Indices may be affected by surrogate pairs.\n return [...input].slice(beginIndex, endIndex).join('');\n } else if (isValidNativeType(input, ['array'])) {\n return input.slice(beginIndex, endIndex);\n } else {\n throw new RuntimeError(`Expected first argument to be of type array or string, but found ${typeToString(typeOf(input))} instead.`);\n }\n }\n\n eachChild(fn: (_: Expression) => void) {\n fn(this.input);\n fn(this.beginIndex);\n if (this.endIndex) {\n fn(this.endIndex);\n }\n }\n\n outputDefined() {\n return false;\n }\n}\n\n","import {RuntimeError} from './runtime_error';\n\nimport type {Expression} from './expression';\n\nexport type Stops = Array<[number, Expression]>;\n\n/**\n * Returns the index of the last stop <= input, or 0 if it doesn't exist.\n * @private\n */\nexport function findStopLessThanOrEqualTo(stops: Array<number>, input: number) {\n const lastIndex = stops.length - 1;\n let lowerIndex = 0;\n let upperIndex = lastIndex;\n let currentIndex = 0;\n let currentValue, nextValue;\n\n while (lowerIndex <= upperIndex) {\n currentIndex = Math.floor((lowerIndex + upperIndex) / 2);\n currentValue = stops[currentIndex];\n nextValue = stops[currentIndex + 1];\n\n if (currentValue <= input) {\n if (currentIndex === lastIndex || input < nextValue) { // Search complete\n return currentIndex;\n }\n\n lowerIndex = currentIndex + 1;\n } else if (currentValue > input) {\n upperIndex = currentIndex - 1;\n } else {\n throw new RuntimeError('Input is not a number.');\n }\n }\n\n return 0;\n}\n","import {NumberType} from '../types';\n\nimport {findStopLessThanOrEqualTo} from '../stops';\n\nimport type {Stops} from '../stops';\nimport type {Expression} from '../expression';\nimport type {ParsingContext} from '../parsing_context';\nimport type {EvaluationContext} from '../evaluation_context';\nimport type {Type} from '../types';\n\nexport class Step implements Expression {\n type: Type;\n\n input: Expression;\n labels: Array<number>;\n outputs: Array<Expression>;\n\n constructor(type: Type, input: Expression, stops: Stops) {\n this.type = type;\n this.input = input;\n\n this.labels = [];\n this.outputs = [];\n for (const [label, expression] of stops) {\n this.labels.push(label);\n this.outputs.push(expression);\n }\n }\n\n static parse(args: ReadonlyArray<unknown>, context: ParsingContext): Expression {\n if (args.length - 1 < 4) {\n return context.error(`Expected at least 4 arguments, but found only ${args.length - 1}.`) as null;\n }\n\n if ((args.length - 1) % 2 !== 0) {\n return context.error('Expected an even number of arguments.') as null;\n }\n\n const input = context.parse(args[1], 1, NumberType);\n if (!input) return null;\n\n const stops: Stops = [];\n\n let outputType: Type = null;\n if (context.expectedType && context.expectedType.kind !== 'value') {\n outputType = context.expectedType;\n }\n\n for (let i = 1; i < args.length; i += 2) {\n const label = i === 1 ? -Infinity : args[i];\n const value = args[i + 1];\n\n const labelKey = i;\n const valueKey = i + 1;\n\n if (typeof label !== 'number') {\n return context.error('Input/output pairs for \"step\" expressions must be defined using literal numeric values (not computed expressions) for the input values.', labelKey) as null;\n }\n\n if (stops.length && stops[stops.length - 1][0] >= label) {\n return context.error('Input/output pairs for \"step\" expressions must be arranged with input values in strictly ascending order.', labelKey) as null;\n }\n\n const parsed = context.parse(value, valueKey, outputType);\n if (!parsed) return null;\n outputType = outputType || parsed.type;\n stops.push([label, parsed]);\n }\n\n return new Step(outputType, input, stops);\n }\n\n evaluate(ctx: EvaluationContext) {\n const labels = this.labels;\n const outputs = this.outputs;\n\n if (labels.length === 1) {\n return outputs[0].evaluate(ctx);\n }\n\n const value = (this.input.evaluate(ctx) as any as number);\n if (value <= labels[0]) {\n return outputs[0].evaluate(ctx);\n }\n\n const stopCount = labels.length;\n if (value >= labels[stopCount - 1]) {\n return outputs[stopCount - 1].evaluate(ctx);\n }\n\n const index = findStopLessThanOrEqualTo(labels, value);\n return outputs[index].evaluate(ctx);\n }\n\n eachChild(fn: (_: Expression) => void) {\n fn(this.input);\n for (const expression of this.outputs) {\n fn(expression);\n }\n }\n\n outputDefined(): boolean {\n return this.outputs.every(out => out.outputDefined());\n }\n}\n\n","'use strict';\n\nmodule.exports = UnitBezier;\n\nfunction UnitBezier(p1x, p1y, p2x, p2y) {\n // Calculate the polynomial coefficients, implicit first and last control points are (0,0) and (1,1).\n this.cx = 3.0 * p1x;\n this.bx = 3.0 * (p2x - p1x) - this.cx;\n this.ax = 1.0 - this.cx - this.bx;\n\n this.cy = 3.0 * p1y;\n this.by = 3.0 * (p2y - p1y) - this.cy;\n this.ay = 1.0 - this.cy - this.by;\n\n this.p1x = p1x;\n this.p1y = p1y;\n this.p2x = p2x;\n this.p2y = p2y;\n}\n\nUnitBezier.prototype = {\n sampleCurveX: function (t) {\n // `ax t^3 + bx t^2 + cx t' expanded using Horner's rule.\n return ((this.ax * t + this.bx) * t + this.cx) * t;\n },\n\n sampleCurveY: function (t) {\n return ((this.ay * t + this.by) * t + this.cy) * t;\n },\n\n sampleCurveDerivativeX: function (t) {\n return (3.0 * this.ax * t + 2.0 * this.bx) * t + this.cx;\n },\n\n solveCurveX: function (x, epsilon) {\n if (epsilon === undefined) epsilon = 1e-6;\n\n if (x < 0.0) return 0.0;\n if (x > 1.0) return 1.0;\n\n var t = x;\n\n // First try a few iterations of Newton's method - normally very fast.\n for (var i = 0; i < 8; i++) {\n var x2 = this.sampleCurveX(t) - x;\n if (Math.abs(x2) < epsilon) return t;\n\n var d2 = this.sampleCurveDerivativeX(t);\n if (Math.abs(d2) < 1e-6) break;\n\n t = t - x2 / d2;\n }\n\n // Fall back to the bisection method for reliability.\n var t0 = 0.0;\n var t1 = 1.0;\n t = x;\n\n for (i = 0; i < 20; i++) {\n x2 = this.sampleCurveX(t);\n if (Math.abs(x2 - x) < epsilon) break;\n\n if (x > x2) {\n t0 = t;\n } else {\n t1 = t;\n }\n\n t = (t1 - t0) * 0.5 + t0;\n }\n\n return t;\n },\n\n solve: function (x, epsilon) {\n return this.sampleCurveY(this.solveCurveX(x, epsilon));\n }\n};\n","import UnitBezier from '@mapbox/unitbezier';\n\nimport {array, ArrayType, ColorType, ColorTypeT, NumberType, NumberTypeT, PaddingType, PaddingTypeT, NumberArrayTypeT, ColorArrayTypeT, VariableAnchorOffsetCollectionType, VariableAnchorOffsetCollectionTypeT, typeToString, verifyType, ProjectionDefinitionType, ColorArrayType, NumberArrayType} from '../types';\nimport {findStopLessThanOrEqualTo} from '../stops';\nimport {Color} from '../types/color';\nimport {interpolateArray, interpolateNumber} from '../../util/interpolate-primitives';\nimport {Padding} from '../types/padding';\nimport {ColorArray} from '../types/color_array';\nimport {NumberArray} from '../types/number_array';\nimport {VariableAnchorOffsetCollection} from '../types/variable_anchor_offset_collection';\nimport {ProjectionDefinition} from '../types/projection_definition';\n\nimport type {Stops} from '../stops';\nimport type {Expression} from '../expression';\nimport type {ParsingContext} from '../parsing_context';\nimport type {EvaluationContext} from '../evaluation_context';\nimport type {ProjectionDefinitionTypeT, Type} from '../types';\n\nexport type InterpolationType = {\n name: 'linear';\n} | {\n name: 'exponential';\n base: number;\n} | {\n name: 'cubic-bezier';\n controlPoints: [number, number, number, number];\n};\ntype InterpolatedValueType = NumberTypeT | ColorTypeT | ProjectionDefinitionTypeT | PaddingTypeT | NumberArrayTypeT | ColorArrayTypeT | VariableAnchorOffsetCollectionTypeT | ArrayType<NumberTypeT>;\nexport class Interpolate implements Expression {\n type: InterpolatedValueType;\n\n operator: 'interpolate' | 'interpolate-hcl' | 'interpolate-lab';\n interpolation: InterpolationType;\n input: Expression;\n labels: Array<number>;\n outputs: Array<Expression>;\n\n constructor(type: InterpolatedValueType, operator: 'interpolate' | 'interpolate-hcl' | 'interpolate-lab', interpolation: InterpolationType, input: Expression, stops: Stops) {\n this.type = type;\n this.operator = operator;\n this.interpolation = interpolation;\n this.input = input;\n\n this.labels = [];\n this.outputs = [];\n for (const [label, expression] of stops) {\n this.labels.push(label);\n this.outputs.push(expression);\n }\n }\n\n static interpolationFactor(interpolation: InterpolationType, input: number, lower: number, upper: number) {\n let t = 0;\n if (interpolation.name === 'exponential') {\n t = exponentialInterpolation(input, interpolation.base, lower, upper);\n } else if (interpolation.name === 'linear') {\n t = exponentialInterpolation(input, 1, lower, upper);\n } else if (interpolation.name === 'cubic-bezier') {\n const c = interpolation.controlPoints;\n const ub = new UnitBezier(c[0], c[1], c[2], c[3]);\n t = ub.solve(exponentialInterpolation(input, 1, lower, upper));\n }\n return t;\n }\n\n static parse(args: ReadonlyArray<unknown>, context: ParsingContext): Expression {\n let [operator, interpolation, input, ...rest] = args;\n\n if (!Array.isArray(interpolation) || interpolation.length === 0) {\n return context.error('Expected an interpolation type expression.', 1) as null;\n }\n\n if (interpolation[0] === 'linear') {\n interpolation = {name: 'linear'};\n } else if (interpolation[0] === 'exponential') {\n const base = interpolation[1];\n if (typeof base !== 'number')\n return context.error('Exponential interpolation requires a numeric base.', 1, 1) as null;\n interpolation = {\n name: 'exponential',\n base\n };\n } else if (interpolation[0] === 'cubic-bezier') {\n const controlPoints = interpolation.slice(1);\n if (\n controlPoints.length !== 4 ||\n controlPoints.some(t => typeof t !== 'number' || t < 0 || t > 1)\n ) {\n return context.error('Cubic bezier interpolation requires four numeric arguments with values between 0 and 1.', 1) as null;\n }\n\n interpolation = {\n name: 'cubic-bezier',\n controlPoints: (controlPoints as any)\n };\n } else {\n return context.error(`Unknown interpolation type ${String(interpolation[0])}`, 1, 0) as null;\n }\n\n if (args.length - 1 < 4) {\n return context.error(`Expected at least 4 arguments, but found only ${args.length - 1}.`) as null;\n }\n\n if ((args.length - 1) % 2 !== 0) {\n return context.error('Expected an even number of arguments.') as null;\n }\n\n input = context.parse(input, 2, NumberType);\n if (!input) return null;\n\n const stops: Stops = [];\n\n let outputType: Type = null;\n if ((operator === 'interpolate-hcl' || operator === 'interpolate-lab') && context.expectedType != ColorArrayType) {\n outputType = ColorType;\n } else if (context.expectedType && context.expectedType.kind !== 'value') {\n outputType = context.expectedType;\n }\n\n for (let i = 0; i < rest.length; i += 2) {\n const label = rest[i];\n const value = rest[i + 1];\n\n const labelKey = i + 3;\n const valueKey = i + 4;\n\n if (typeof label !== 'number') {\n return context.error('Input/output pairs for \"interpolate\" expressions must be defined using literal numeric values (not computed expressions) for the input values.', labelKey) as null;\n }\n\n if (stops.length && stops[stops.length - 1][0] >= label) {\n return context.error('Input/output pairs for \"interpolate\" expressions must be arranged with input values in strictly ascending order.', labelKey) as null;\n }\n const parsed = context.parse(value, valueKey, outputType);\n if (!parsed) return null;\n outputType = outputType || parsed.type;\n stops.push([label, parsed]);\n }\n\n if (!verifyType(outputType, NumberType) &&\n !verifyType(outputType, ProjectionDefinitionType) &&\n !verifyType(outputType, ColorType) &&\n !verifyType(outputType, PaddingType) &&\n !verifyType(outputType, NumberArrayType) &&\n !verifyType(outputType, ColorArrayType) &&\n !verifyType(outputType, VariableAnchorOffsetCollectionType) &&\n !verifyType(outputType, array(NumberType))\n ) {\n return context.error(`Type ${typeToString(outputType)} is not interpolatable.`) as null;\n }\n\n return new Interpolate(outputType, (operator as any), interpolation as InterpolationType, input as Expression, stops);\n }\n\n evaluate(ctx: EvaluationContext) {\n const labels = this.labels;\n const outputs = this.outputs;\n\n if (labels.length === 1) {\n return outputs[0].evaluate(ctx);\n }\n\n const value: number = this.input.evaluate(ctx);\n if (value <= labels[0]) {\n return outputs[0].evaluate(ctx);\n }\n\n const stopCount = labels.length;\n if (value >= labels[stopCount - 1]) {\n return outputs[stopCount - 1].evaluate(ctx);\n }\n\n const index = findStopLessThanOrEqualTo(labels, value);\n const lower = labels[index];\n const upper = labels[index + 1];\n const t = Interpolate.interpolationFactor(this.interpolation, value, lower, upper);\n\n const outputLower = outputs[index].evaluate(ctx);\n const outputUpper = outputs[index + 1].evaluate(ctx);\n\n switch (this.operator) {\n case 'interpolate':\n switch (this.type.kind) {\n case 'number':\n return interpolateNumber(outputLower, outputUpper, t)\n case 'color':\n return Color.interpolate(outputLower, outputUpper, t);\n case 'padding':\n return Padding.interpolate(outputLower, outputUpper, t);\n case 'colorArray':\n return ColorArray.interpolate(outputLower, outputUpper, t);\n case 'numberArray':\n return NumberArray.interpolate(outputLower, outputUpper, t);\n case 'variableAnchorOffsetCollection':\n return VariableAnchorOffsetCollection.interpolate(outputLower, outputUpper, t);\n case 'array':\n return interpolateArray(outputLower, outputUpper, t);\n case 'projectionDefinition':\n return ProjectionDefinition.interpolate(outputLower, outputUpper, t);\n }\n case 'interpolate-hcl':\n switch (this.type.kind) {\n case 'color':\n return Color.interpolate(outputLower, outputUpper, t, 'hcl');\n case 'colorArray':\n return ColorArray.interpolate(outputLower, outputUpper, t, 'hcl');\n }\n case 'interpolate-lab':\n switch (this.type.kind) {\n case 'color':\n return Color.interpolate(outputLower, outputUpper, t, 'lab');\n case 'colorArray':\n return ColorArray.interpolate(outputLower, outputUpper, t, 'lab');\n }\n }\n }\n\n eachChild(fn: (_: Expression) => void) {\n fn(this.input);\n for (const expression of this.outputs) {\n fn(expression);\n }\n }\n\n outputDefined(): boolean {\n return this.outputs.every(out => out.outputDefined());\n }\n}\n\n/**\n * Returns a ratio that can be used to interpolate between exponential function\n * stops.\n * How it works: Two consecutive stop values define a (scaled and shifted) exponential function `f(x) = a * base^x + b`, where `base` is the user-specified base,\n * and `a` and `b` are constants affording sufficient degrees of freedom to fit\n * the function to the given stops.\n *\n * Here's a bit of algebra that lets us compute `f(x)` directly from the stop\n * values without explicitly solving for `a` and `b`:\n *\n * First stop value: `f(x0) = y0 = a * base^x0 + b`\n * Second stop value: `f(x1) = y1 = a * base^x1 + b`\n * => `y1 - y0 = a(base^x1 - base^x0)`\n * => `a = (y1 - y0)/(base^x1 - base^x0)`\n *\n * Desired value: `f(x) = y = a * base^x + b`\n * => `f(x) = y0 + a * (base^x - base^x0)`\n *\n * From the above, we can replace the `a` in `a * (base^x - base^x0)` and do a\n * little algebra:\n * ```\n * a * (base^x - base^x0) = (y1 - y0)/(base^x1 - base^x0) * (base^x - base^x0)\n * = (y1 - y0) * (base^x - base^x0) / (base^x1 - base^x0)\n * ```\n *\n * If we let `(base^x - base^x0) / (base^x1 base^x0)`, then we have\n * `f(x) = y0 + (y1 - y0) * ratio`. In other words, `ratio` may be treated as\n * an interpolation factor between the two stops' output values.\n *\n * (Note: a slightly different form for `ratio`,\n * `(base^(x-x0) - 1) / (base^(x1-x0) - 1) `, is equivalent, but requires fewer\n * expensive `Math.pow()` operations.)\n *\n * @private\n*/\nfunction exponentialInterpolation(input, base, lowerValue, upperValue) {\n const difference = upperValue - lowerValue;\n const progress = input - lowerValue;\n\n if (difference === 0) {\n return 0;\n } else if (base === 1) {\n return progress / difference;\n } else {\n return (Math.pow(base, progress) - 1) / (Math.pow(base, difference) - 1);\n }\n}\n\nexport const interpolateFactory = {\n color: Color.interpolate,\n number: interpolateNumber,\n padding: Padding.interpolate,\n numberArray: NumberArray.interpolate,\n colorArray: ColorArray.interpolate,\n variableAnchorOffsetCollection: VariableAnchorOffsetCollection.interpolate,\n array: interpolateArray\n}\n","import {checkSubtype, ValueType} from '../types';\nimport {ResolvedImage} from '../types/resolved_image';\n\nimport type {Expression} from '../expression';\nimport type {ParsingContext} from '../parsing_context';\nimport type {EvaluationContext} from '../evaluation_context';\nimport type {Type} from '../types';\n\nexport class Coalesce implements Expression {\n type: Type;\n args: Array<Expression>;\n\n constructor(type: Type, args: Array<Expression>) {\n this.type = type;\n this.args = args;\n }\n\n static parse(args: ReadonlyArray<unknown>, context: ParsingContext): Expression {\n if (args.length < 2) {\n return context.error('Expected at least one argument.') as null;\n }\n let outputType: Type = null;\n const expectedType = context.expectedType;\n if (expectedType && expectedType.kind !== 'value') {\n outputType = expectedType;\n }\n const parsedArgs = [];\n\n for (const arg of args.slice(1)) {\n const parsed = context.parse(arg, 1 + parsedArgs.length, outputType, undefined, {typeAnnotation: 'omit'});\n if (!parsed) return null;\n outputType = outputType || parsed.type;\n parsedArgs.push(parsed);\n }\n if (!outputType) throw new Error('No output type');\n\n // Above, we parse arguments without inferred type annotation so that\n // they don't produce a runtime error for `null` input, which would\n // preempt the desired null-coalescing behavior.\n // Thus, if any of our arguments would have needed an annotation, we\n // need to wrap the enclosing coalesce expression with it instead.\n const needsAnnotation = expectedType &&\n parsedArgs.some(arg => checkSubtype(expectedType, arg.type));\n\n return needsAnnotation ?\n new Coalesce(ValueType, parsedArgs) :\n new Coalesce((outputType as any), parsedArgs);\n }\n\n evaluate(ctx: EvaluationContext) {\n let result = null;\n let argCount = 0;\n let requestedImageName;\n for (const arg of this.args) {\n argCount++;\n result = arg.evaluate(ctx);\n // we need to keep track of the first requested image in a coalesce statement\n // if coalesce can't find a valid image, we return the first image name so styleimagemissing can fire\n if (result && result instanceof ResolvedImage && !result.available) {\n if (!requestedImageName) {\n requestedImageName = result.name;\n }\n result = null;\n if (argCount === this.args.length) {\n result = requestedImageName;\n }\n }\n\n if (result !== null) break;\n }\n return result;\n }\n\n eachChild(fn: (_: Expression) => void) {\n this.args.forEach(fn);\n }\n\n outputDefined(): boolean {\n return this.args.every(arg => arg.outputDefined());\n }\n}\n\n","import {typeToString, ValueType, BooleanType, CollatorType} from '../types';\nimport {Assertion} from './assertion';\nimport {typeOf} from '../values';\nimport {RuntimeError} from '../runtime_error';\n\nimport type {Expression} from '../expression';\nimport type {EvaluationContext} from '../evaluation_context';\nimport type {ParsingContext} from '../parsing_context';\nimport type {Type} from '../types';\n\ntype ComparisonOperator = '==' | '!=' | '<' | '>' | '<=' | '>=';\n\nfunction isComparableType(op: ComparisonOperator, type: Type) {\n if (op === '==' || op === '!=') {\n // equality operator\n return type.kind === 'boolean' ||\n type.kind === 'string' ||\n type.kind === 'number' ||\n type.kind === 'null' ||\n type.kind === 'value';\n } else {\n // ordering operator\n return type.kind === 'string' ||\n type.kind === 'number' ||\n type.kind === 'value';\n }\n}\n\nfunction eq(ctx, a, b) { return a === b; }\nfunction neq(ctx, a, b) { return a !== b; }\nfunction lt(ctx, a, b) { return a < b; }\nfunction gt(ctx, a, b) { return a > b; }\nfunction lteq(ctx, a, b) { return a <= b; }\nfunction gteq(ctx, a, b) { return a >= b; }\n\nfunction eqCollate(ctx, a, b, c) { return c.compare(a, b) === 0; }\nfunction neqCollate(ctx, a, b, c) { return !eqCollate(ctx, a, b, c); }\nfunction ltCollate(ctx, a, b, c) { return c.compare(a, b) < 0; }\nfunction gtCollate(ctx, a, b, c) { return c.compare(a, b) > 0; }\nfunction lteqCollate(ctx, a, b, c) { return c.compare(a, b) <= 0; }\nfunction gteqCollate(ctx, a, b, c) { return c.compare(a, b) >= 0; }\n\n/**\n * Special form for comparison operators, implementing the signatures:\n * - (T, T, ?Collator) => boolean\n * - (T, value, ?Collator) => boolean\n * - (value, T, ?Collator) => boolean\n *\n * For inequalities, T must be either value, string, or number. For ==/!=, it\n * can also be boolean or null.\n *\n * Equality semantics are equivalent to Javascript's strict equality (===/!==)\n * -- i.e., when the arguments' types don't match, == evaluates to false, != to\n * true.\n *\n * When types don't match in an ordering comparison, a runtime error is thrown.\n *\n * @private\n */\nfunction makeComparison(op: ComparisonOperator, compareBasic, compareWithCollator) {\n const isOrderComparison = op !== '==' && op !== '!=';\n\n return class Comparison implements Expression {\n type: Type;\n lhs: Expression;\n rhs: Expression;\n collator: Expression;\n hasUntypedArgument: boolean;\n\n constructor(lhs: Expression, rhs: Expression, collator?: Expression | null) {\n this.type = BooleanType;\n this.lhs = lhs;\n this.rhs = rhs;\n this.collator = collator;\n this.hasUntypedArgument = lhs.type.kind === 'value' || rhs.type.kind === 'value';\n }\n\n static parse(args: ReadonlyArray<unknown>, context: ParsingContext): Expression {\n if (args.length !== 3 && args.length !== 4)\n return context.error('Expected two or three arguments.') as null;\n\n const op: ComparisonOperator = (args[0] as any);\n\n let lhs = context.parse(args[1], 1, ValueType);\n if (!lhs) return null;\n if (!isComparableType(op, lhs.type)) {\n return context.concat(1).error(`\"${op}\" comparisons are not supported for type '${typeToString(lhs.type)}'.`) as null;\n }\n let rhs = context.parse(args[2], 2, ValueType);\n if (!rhs) return null;\n if (!isComparableType(op, rhs.type)) {\n return context.concat(2).error(`\"${op}\" comparisons are not supported for type '${typeToString(rhs.type)}'.`) as null;\n }\n\n if (\n lhs.type.kind !== rhs.type.kind &&\n lhs.type.kind !== 'value' &&\n rhs.type.kind !== 'value'\n ) {\n return context.error(`Cannot compare types '${typeToString(lhs.type)}' and '${typeToString(rhs.type)}'.`) as null;\n }\n\n if (isOrderComparison) {\n // typing rules specific to less/greater than operators\n if (lhs.type.kind === 'value' && rhs.type.kind !== 'value') {\n // (value, T)\n lhs = new Assertion(rhs.type, [lhs]);\n } else if (lhs.type.kind !== 'value' && rhs.type.kind === 'value') {\n // (T, value)\n rhs = new Assertion(lhs.type, [rhs]);\n }\n }\n\n let collator = null;\n if (args.length === 4) {\n if (\n lhs.type.kind !== 'string' &&\n rhs.type.kind !== 'string' &&\n lhs.type.kind !== 'value' &&\n rhs.type.kind !== 'value'\n ) {\n return context.error('Cannot use collator to compare non-string types.') as null;\n }\n collator = context.parse(args[3], 3, CollatorType);\n if (!collator) return null;\n }\n\n return new Comparison(lhs, rhs, collator);\n }\n\n evaluate(ctx: EvaluationContext) {\n const lhs = this.lhs.evaluate(ctx);\n const rhs = this.rhs.evaluate(ctx);\n\n if (isOrderComparison && this.hasUntypedArgument) {\n const lt = typeOf(lhs);\n const rt = typeOf(rhs);\n // check that type is string or number, and equal\n if (lt.kind !== rt.kind || !(lt.kind === 'string' || lt.kind === 'number')) {\n throw new RuntimeError(`Expected arguments for \"${op}\" to be (string, string) or (number, number), but found (${lt.kind}, ${rt.kind}) instead.`);\n }\n }\n\n if (this.collator && !isOrderComparison && this.hasUntypedArgument) {\n const lt = typeOf(lhs);\n const rt = typeOf(rhs);\n if (lt.kind !== 'string' || rt.kind !== 'string') {\n return compareBasic(ctx, lhs, rhs);\n }\n }\n\n return this.collator ?\n compareWithCollator(ctx, lhs, rhs, this.collator.evaluate(ctx)) :\n compareBasic(ctx, lhs, rhs);\n }\n\n eachChild(fn: (_: Expression) => void) {\n fn(this.lhs);\n fn(this.rhs);\n if (this.collator) {\n fn(this.collator);\n }\n }\n\n outputDefined(): boolean {\n return true;\n }\n };\n}\n\nexport const Equals = makeComparison('==', eq, eqCollate);\nexport const NotEquals = makeComparison('!=', neq, neqCollate);\nexport const LessThan = makeComparison('<', lt, ltCollate);\nexport const GreaterThan = makeComparison('>', gt, gtCollate);\nexport const LessThanOrEqual = makeComparison('<=', lteq, lteqCollate);\nexport const GreaterThanOrEqual = makeComparison('>=', gteq, gteqCollate);\n","import {StringType, BooleanType, CollatorType} from '../types';\nimport {Collator} from '../types/collator';\n\nimport type {Expression} from '../expression';\nimport type {EvaluationContext} from '../evaluation_context';\nimport type {ParsingContext} from '../parsing_context';\nimport type {Type} from '../types';\n\nexport class CollatorExpression implements Expression {\n type: Type;\n caseSensitive: Expression;\n diacriticSensitive: Expression;\n locale: Expression | null;\n\n constructor(caseSensitive: Expression, diacriticSensitive: Expression, locale: Expression | null) {\n this.type = CollatorType;\n this.locale = locale;\n this.caseSensitive = caseSensitive;\n this.diacriticSensitive = diacriticSensitive;\n }\n\n static parse(args: ReadonlyArray<unknown>, context: ParsingContext): Expression {\n if (args.length !== 2)\n return context.error('Expected one argument.') as null;\n\n const options = (args[1] as any);\n if (typeof options !== 'object' || Array.isArray(options))\n return context.error('Collator options argument must be an object.') as null;\n\n const caseSensitive = context.parse(\n options['case-sensitive'] === undefined ? false : options['case-sensitive'], 1, BooleanType);\n if (!caseSensitive) return null;\n\n const diacriticSensitive = context.parse(\n options['diacritic-sensitive'] === undefined ? false : options['diacritic-sensitive'], 1, BooleanType);\n if (!diacriticSensitive) return null;\n\n let locale = null;\n if (options['locale']) {\n locale = context.parse(options['locale'], 1, StringType);\n if (!locale) return null;\n }\n\n return new CollatorExpression(caseSensitive, diacriticSensitive, locale);\n }\n\n evaluate(ctx: EvaluationContext) {\n return new Collator(this.caseSensitive.evaluate(ctx), this.diacriticSensitive.evaluate(ctx), this.locale ? this.locale.evaluate(ctx) : null);\n }\n\n eachChild(fn: (_: Expression) => void) {\n fn(this.caseSensitive);\n fn(this.diacriticSensitive);\n if (this.locale) {\n fn(this.locale);\n }\n }\n\n outputDefined() {\n // Technically the set of possible outputs is the combinatoric set of Collators produced\n // by all possible outputs of locale/caseSensitive/diacriticSensitive\n // But for the primary use of Collators in comparison operators, we ignore the Collator's\n // possible outputs anyway, so we can get away with leaving this false for now.\n return false;\n }\n}\n","import {StringType, NumberType} from '../types';\n\nimport type {Expression} from '../expression';\nimport type {EvaluationContext} from '../evaluation_context';\nimport type {ParsingContext} from '../parsing_context';\nimport type {Type} from '../types';\n\nexport class NumberFormat implements Expression {\n type: Type;\n number: Expression;\n locale: Expression | null; // BCP 47 language tag\n currency: Expression | null; // ISO 4217 currency code, required if style=currency\n minFractionDigits: Expression | null; // Default 0\n maxFractionDigits: Expression | null; // Default 3\n\n constructor(number: Expression,\n locale: Expression | null,\n currency: Expression | null,\n minFractionDigits: Expression | null,\n maxFractionDigits: Expression | null) {\n this.type = StringType;\n this.number = number;\n this.locale = locale;\n this.currency = currency;\n this.minFractionDigits = minFractionDigits;\n this.maxFractionDigits = maxFractionDigits;\n }\n\n static parse(args: ReadonlyArray<unknown>, context: ParsingContext): Expression {\n if (args.length !== 3)\n return context.error('Expected two arguments.') as null;\n\n const number = context.parse(args[1], 1, NumberType);\n if (!number) return null;\n\n const options = (args[2] as any);\n if (typeof options !== 'object' || Array.isArray(options))\n return context.error('NumberFormat options argument must be an object.') as null;\n\n let locale = null;\n if (options['locale']) {\n locale = context.parse(options['locale'], 1, StringType);\n if (!locale) return null;\n }\n\n let currency = null;\n if (options['currency']) {\n currency = context.parse(options['currency'], 1, StringType);\n if (!currency) return null;\n }\n\n let minFractionDigits = null;\n if (options['min-fraction-digits']) {\n minFractionDigits = context.parse(options['min-fraction-digits'], 1, NumberType);\n if (!minFractionDigits) return null;\n }\n\n let maxFractionDigits = null;\n if (options['max-fraction-digits']) {\n maxFractionDigits = context.parse(options['max-fraction-digits'], 1, NumberType);\n if (!maxFractionDigits) return null;\n }\n\n return new NumberFormat(number, locale, currency, minFractionDigits, maxFractionDigits);\n }\n\n evaluate(ctx: EvaluationContext) {\n return new Intl.NumberFormat(this.locale ? this.locale.evaluate(ctx) : [],\n {\n style: this.currency ? 'currency' : 'decimal',\n currency: this.currency ? this.currency.evaluate(ctx) : undefined,\n minimumFractionDigits: this.minFractionDigits ? this.minFractionDigits.evaluate(ctx) : undefined,\n maximumFractionDigits: this.maxFractionDigits ? this.maxFractionDigits.evaluate(ctx) : undefined,\n }).format(this.number.evaluate(ctx));\n }\n\n eachChild(fn: (_: Expression) => void) {\n fn(this.number);\n if (this.locale) {\n fn(this.locale);\n }\n if (this.currency) {\n fn(this.currency);\n }\n if (this.minFractionDigits) {\n fn(this.minFractionDigits);\n }\n if (this.maxFractionDigits) {\n fn(this.maxFractionDigits);\n }\n }\n\n outputDefined() {\n return false;\n }\n}\n","import {\n NumberType,\n ValueType,\n FormattedType,\n array,\n StringType,\n ColorType,\n ResolvedImageType,\n} from '../types';\nimport {Formatted, FormattedSection, VERTICAL_ALIGN_OPTIONS, VerticalAlign} from '../types/formatted';\nimport {valueToString, typeOf} from '../values';\n\nimport type {Expression} from '../expression';\nimport type {EvaluationContext} from '../evaluation_context';\nimport type {ParsingContext} from '../parsing_context';\nimport type {Type} from '../types';\n\ntype FormattedSectionExpression = {\n // Content of a section may be Image expression or other\n // type of expression that is coercable to 'string'.\n content: Expression;\n scale: Expression | null;\n font: Expression | null;\n textColor: Expression | null;\n verticalAlign: Expression | null;\n};\n\nexport class FormatExpression implements Expression {\n type: Type;\n sections: Array<FormattedSectionExpression>;\n\n constructor(sections: Array<FormattedSectionExpression>) {\n this.type = FormattedType;\n this.sections = sections;\n }\n\n static parse(args: ReadonlyArray<unknown>, context: ParsingContext): Expression {\n if (args.length < 2) {\n return context.error('Expected at least one argument.') as null;\n }\n\n const firstArg = args[1];\n if (!Array.isArray(firstArg) && typeof firstArg === 'object') {\n return context.error('First argument must be an image or text section.') as null;\n }\n\n const sections: Array<FormattedSectionExpression> = [];\n let nextTokenMayBeObject = false;\n for (let i = 1; i <= args.length - 1; ++i) {\n const arg = (args[i] as any);\n\n if (nextTokenMayBeObject && typeof arg === 'object' && !Array.isArray(arg)) {\n nextTokenMayBeObject = false;\n\n let scale = null;\n if (arg['font-scale']) {\n scale = context.parse(arg['font-scale'], 1, NumberType);\n if (!scale) return null;\n }\n\n let font = null;\n if (arg['text-font']) {\n font = context.parse(arg['text-font'], 1, array(StringType));\n if (!font) return null;\n }\n\n let textColor = null;\n if (arg['text-color']) {\n textColor = context.parse(arg['text-color'], 1, ColorType);\n if (!textColor) return null;\n }\n\n let verticalAlign = null;\n if (arg['vertical-align']) {\n if (typeof arg['vertical-align'] === 'string' && !VERTICAL_ALIGN_OPTIONS.includes(arg['vertical-align'] as VerticalAlign)) {\n return context.error(`'vertical-align' must be one of: 'bottom', 'center', 'top' but found '${arg['vertical-align']}' instead.`) as null;\n }\n\n verticalAlign = context.parse(arg['vertical-align'], 1, StringType);\n if (!verticalAlign) return null;\n }\n\n const lastExpression = sections[sections.length - 1];\n lastExpression.scale = scale;\n lastExpression.font = font;\n lastExpression.textColor = textColor;\n lastExpression.verticalAlign = verticalAlign;\n } else {\n const content = context.parse(args[i], 1, ValueType);\n if (!content) return null;\n\n const kind = content.type.kind;\n if (kind !== 'string' && kind !== 'value' && kind !== 'null' && kind !== 'resolvedImage')\n return context.error('Formatted text type must be \\'string\\', \\'value\\', \\'image\\' or \\'null\\'.') as null;\n\n nextTokenMayBeObject = true;\n sections.push({content, scale: null, font: null, textColor: null, verticalAlign: null});\n }\n }\n\n return new FormatExpression(sections);\n }\n\n evaluate(ctx: EvaluationContext) {\n const evaluateSection = section => {\n const evaluatedContent = section.content.evaluate(ctx);\n if (typeOf(evaluatedContent) === ResolvedImageType) {\n return new FormattedSection(\n '',\n evaluatedContent,\n null,\n null,\n null,\n section.verticalAlign ? section.verticalAlign.evaluate(ctx) : null\n );\n }\n\n return new FormattedSection(\n valueToString(evaluatedContent),\n null,\n section.scale ? section.scale.evaluate(ctx) : null,\n section.font ? section.font.evaluate(ctx).join(',') : null,\n section.textColor ? section.textColor.evaluate(ctx) : null,\n section.verticalAlign ? section.verticalAlign.evaluate(ctx) : null\n );\n };\n\n return new Formatted(this.sections.map(evaluateSection));\n }\n\n eachChild(fn: (_: Expression) => void) {\n for (const section of this.sections) {\n fn(section.content);\n if (section.scale) {\n fn(section.scale);\n }\n if (section.font) {\n fn(section.font);\n }\n if (section.textColor) {\n fn(section.textColor);\n }\n if (section.verticalAlign) {\n fn(section.verticalAlign);\n }\n }\n }\n\n outputDefined() {\n // Technically the combinatoric set of all children\n // Usually, this.text will be undefined anyway\n return false;\n }\n}\n","import {ResolvedImageType, StringType} from '../types';\nimport {ResolvedImage} from '../types/resolved_image';\n\nimport type {Expression} from '../expression';\nimport type {EvaluationContext} from '../evaluation_context';\nimport type {ParsingContext} from '../parsing_context';\nimport type {Type} from '../types';\n\nexport class ImageExpression implements Expression {\n type: Type;\n input: Expression;\n\n constructor(input: Expression) {\n this.type = ResolvedImageType;\n this.input = input;\n }\n\n static parse(args: ReadonlyArray<unknown>, context: ParsingContext): Expression {\n if (args.length !== 2) {\n return context.error('Expected two arguments.') as null;\n }\n\n const name = context.parse(args[1], 1, StringType);\n if (!name) return context.error('No image name provided.') as null;\n\n return new ImageExpression(name);\n }\n\n evaluate(ctx: EvaluationContext) {\n const evaluatedImageName = this.input.evaluate(ctx);\n\n const value = ResolvedImage.fromString(evaluatedImageName);\n if (value && ctx.availableImages) value.available = ctx.availableImages.indexOf(evaluatedImageName) > -1;\n\n return value;\n }\n\n eachChild(fn: (_: Expression) => void) {\n fn(this.input);\n }\n\n outputDefined() {\n // The output of image is determined by the list of available images in the evaluation context\n return false;\n }\n}\n","import {NumberType, typeToString} from '../types';\n\nimport {typeOf} from '../values';\nimport {RuntimeError} from '../runtime_error';\n\nimport type {Expression} from '../expression';\nimport type {ParsingContext} from '../parsing_context';\nimport type {EvaluationContext} from '../evaluation_context';\nimport type {Type} from '../types';\n\nexport class Length implements Expression {\n type: Type;\n input: Expression;\n\n constructor(input: Expression) {\n this.type = NumberType;\n this.input = input;\n }\n\n static parse(args: ReadonlyArray<unknown>, context: ParsingContext): Expression {\n if (args.length !== 2)\n return context.error(`Expected 1 argument, but found ${args.length - 1} instead.`) as null;\n\n const input = context.parse(args[1], 1);\n if (!input) return null;\n\n if (input.type.kind !== 'array' && input.type.kind !== 'string' && input.type.kind !== 'value')\n return context.error(`Expected argument of type string or array, but found ${typeToString(input.type)} instead.`) as null;\n\n return new Length(input);\n }\n\n evaluate(ctx: EvaluationContext) {\n const input = this.input.evaluate(ctx);\n if (typeof input === 'string') {\n // The length may be affected by surrogate pairs.\n return [...input].length;\n } else if (Array.isArray(input)) {\n return input.length;\n } else {\n throw new RuntimeError(`Expected value to be of type string or array, but found ${typeToString(typeOf(input))} instead.`);\n }\n }\n\n eachChild(fn: (_: Expression) => void) {\n fn(this.input);\n }\n\n outputDefined() {\n return false;\n }\n}\n\n","import {ICanonicalTileID} from '../tiles_and_coordinates';\n\n// minX, minY, maxX, maxY\nexport type BBox = [number, number, number, number];\n\nexport const EXTENT = 8192;\n\nexport function getTileCoordinates(p: GeoJSON.Position, canonical: ICanonicalTileID): [number, number] {\n const x = mercatorXfromLng(p[0]);\n const y = mercatorYfromLat(p[1]);\n const tilesAtZoom = Math.pow(2, canonical.z);\n return [Math.round(x * tilesAtZoom * EXTENT), Math.round(y * tilesAtZoom * EXTENT)];\n}\n\nexport function getLngLatFromTileCoord(coord: [number, number], canonical: ICanonicalTileID): GeoJSON.Position {\n const tilesAtZoom = Math.pow(2, canonical.z);\n const x = (coord[0] / EXTENT + canonical.x) / tilesAtZoom;\n const y = (coord[1] / EXTENT + canonical.y) / tilesAtZoom;\n return [lngFromMercatorXfromLng(x), latFromMercatorY(y)];\n}\n\nfunction mercatorXfromLng(lng: number) {\n return (180 + lng) / 360;\n}\n\nfunction lngFromMercatorXfromLng(mercatorX: number) {\n return mercatorX * 360 - 180;\n}\n\nfunction mercatorYfromLat(lat: number) {\n return (180 - (180 / Math.PI * Math.log(Math.tan(Math.PI / 4 + lat * Math.PI / 360)))) / 360;\n}\n\nfunction latFromMercatorY(mercatorY: number) {\n return 360 / Math.PI * Math.atan(Math.exp((180 - mercatorY * 360) * Math.PI / 180)) - 90;\n}\n\nexport function updateBBox(bbox: BBox, coord: GeoJSON.Position) {\n bbox[0] = Math.min(bbox[0], coord[0]);\n bbox[1] = Math.min(bbox[1], coord[1]);\n bbox[2] = Math.max(bbox[2], coord[0]);\n bbox[3] = Math.max(bbox[3], coord[1]);\n}\n\nexport function boxWithinBox(bbox1: BBox, bbox2: BBox) {\n if (bbox1[0] <= bbox2[0]) return false;\n if (bbox1[2] >= bbox2[2]) return false;\n if (bbox1[1] <= bbox2[1]) return false;\n if (bbox1[3] >= bbox2[3]) return false;\n return true;\n}\n\nexport function rayIntersect(p: [number, number], p1: [number, number], p2: [number, number]): boolean {\n return ((p1[1] > p[1]) !== (p2[1] > p[1])) && (p[0] < (p2[0] - p1[0]) * (p[1] - p1[1]) / (p2[1] - p1[1]) + p1[0]);\n}\n\nfunction pointOnBoundary(p: [number, number], p1: [number, number], p2: [number, number]): boolean {\n const x1 = p[0] - p1[0];\n const y1 = p[1] - p1[1];\n const x2 = p[0] - p2[0];\n const y2 = p[1] - p2[1];\n return (x1 * y2 - x2 * y1 === 0) && (x1 * x2 <= 0) && (y1 * y2 <= 0);\n}\n\n// a, b are end points for line segment1, c and d are end points for line segment2\nexport function segmentIntersectSegment(a: [number, number], b: [number, number], c: [number, number], d: [number, number]) {\n // check if two segments are parallel or not\n // precondition is end point a, b is inside polygon, if line a->b is\n // parallel to polygon edge c->d, then a->b won't intersect with c->d\n const vectorP: [number, number] = [b[0] - a[0], b[1] - a[1]];\n const vectorQ: [number, number] = [d[0] - c[0], d[1] - c[1]];\n if (perp(vectorQ, vectorP) === 0) return false;\n\n // If lines are intersecting with each other, the relative location should be:\n // a and b lie in different sides of segment c->d\n // c and d lie in different sides of segment a->b\n if (twoSided(a, b, c, d) && twoSided(c, d, a, b)) return true;\n return false;\n}\n\nexport function lineIntersectPolygon(p1, p2, polygon) {\n for (const ring of polygon) {\n // loop through every edge of the ring\n for (let j = 0; j < ring.length - 1; ++j) {\n if (segmentIntersectSegment(p1, p2, ring[j], ring[j + 1])) {\n return true;\n }\n }\n }\n return false;\n}\n\n// ray casting algorithm for detecting if point is in polygon\nexport function pointWithinPolygon(point: [number, number], rings: [number, number][][], trueIfOnBoundary = false) {\n let inside = false;\n for (const ring of rings) {\n for (let j = 0; j < ring.length - 1; j++) {\n if (pointOnBoundary(point, ring[j], ring[j + 1])) return trueIfOnBoundary;\n if (rayIntersect(point, ring[j], ring[j + 1])) inside = !inside;\n }\n }\n return inside;\n}\n\nexport function pointWithinPolygons(point: [number, number], polygons: [number, number][][][]) {\n for (const polygon of polygons) {\n if (pointWithinPolygon(point, polygon)) return true;\n }\n return false;\n}\n\nexport function lineStringWithinPolygon(line: [number, number][], polygon: [number, number][][]) {\n // First, check if geometry points of line segments are all inside polygon\n for (const point of line) {\n if (!pointWithinPolygon(point, polygon)) {\n return false;\n }\n }\n\n // Second, check if there is line segment intersecting polygon edge\n for (let i = 0; i < line.length - 1; ++i) {\n if (lineIntersectPolygon(line[i], line[i + 1], polygon)) {\n return false;\n }\n }\n return true;\n}\n\nexport function lineStringWithinPolygons(line: [number, number][], polygons: [number, number][][][]) {\n for (const polygon of polygons) {\n if (lineStringWithinPolygon(line, polygon)) return true;\n }\n return false;\n}\n\nfunction perp(v1: [number, number], v2: [number, number]) {\n return (v1[0] * v2[1] - v1[1] * v2[0]);\n}\n\n// check if p1 and p2 are in different sides of line segment q1->q2\nfunction twoSided(p1: [number, number], p2: [number, number], q1: [number, number], q2: [number, number]) {\n // q1->p1 (x1, y1), q1->p2 (x2, y2), q1->q2 (x3, y3)\n const x1 = p1[0] - q1[0];\n const y1 = p1[1] - q1[1];\n const x2 = p2[0] - q1[0];\n const y2 = p2[1] - q1[1];\n const x3 = q2[0] - q1[0];\n const y3 = q2[1] - q1[1];\n const det1 = (x1 * y3 - x3 * y1);\n const det2 = (x2 * y3 - x3 * y2);\n if ((det1 > 0 && det2 < 0) || (det1 < 0 && det2 > 0)) return true;\n return false;\n}\n","import {isValue} from '../values';\nimport type {Type} from '../types';\nimport {BooleanType} from '../types';\nimport type {Expression} from '../expression';\nimport type {ParsingContext} from '../parsing_context';\nimport type {EvaluationContext} from '../evaluation_context';\nimport {ICanonicalTileID} from '../../tiles_and_coordinates';\nimport {BBox, EXTENT, boxWithinBox, getTileCoordinates, lineStringWithinPolygon, lineStringWithinPolygons, pointWithinPolygon, pointWithinPolygons, updateBBox} from '../../util/geometry_util';\nimport {Point2D} from '../../point2d';\n\ntype GeoJSONPolygons = GeoJSON.Polygon | GeoJSON.MultiPolygon;\n\nfunction getTilePolygon(coordinates: GeoJSON.Position[][], bbox: BBox, canonical: ICanonicalTileID) {\n const polygon = [];\n for (let i = 0; i < coordinates.length; i++) {\n const ring = [];\n for (let j = 0; j < coordinates[i].length; j++) {\n const coord = getTileCoordinates(coordinates[i][j], canonical);\n updateBBox(bbox, coord);\n ring.push(coord);\n }\n polygon.push(ring);\n }\n return polygon;\n}\n\nfunction getTilePolygons(coordinates: GeoJSON.Position[][][], bbox: BBox, canonical: ICanonicalTileID) {\n const polygons = [];\n for (let i = 0; i < coordinates.length; i++) {\n const polygon = getTilePolygon(coordinates[i], bbox, canonical);\n polygons.push(polygon);\n }\n return polygons;\n}\n\nfunction updatePoint(p: GeoJSON.Position, bbox: BBox, polyBBox: BBox, worldSize: number) {\n if (p[0] < polyBBox[0] || p[0] > polyBBox[2]) {\n const halfWorldSize = worldSize * 0.5;\n let shift = (p[0] - polyBBox[0] > halfWorldSize) ? -worldSize : (polyBBox[0] - p[0] > halfWorldSize) ? worldSize : 0;\n if (shift === 0) {\n shift = (p[0] - polyBBox[2] > halfWorldSize) ? -worldSize : (polyBBox[2] - p[0] > halfWorldSize) ? worldSize : 0;\n }\n p[0] += shift;\n }\n updateBBox(bbox, p);\n}\n\nfunction resetBBox(bbox: BBox) {\n bbox[0] = bbox[1] = Infinity;\n bbox[2] = bbox[3] = -Infinity;\n}\n\nfunction getTilePoints(geometry: Point2D[][], pointBBox: BBox, polyBBox: BBox, canonical: ICanonicalTileID): [number, number][] {\n const worldSize = Math.pow(2, canonical.z) * EXTENT;\n const shifts = [canonical.x * EXTENT, canonical.y * EXTENT];\n const tilePoints: [number, number][] = [];\n for (const points of geometry) {\n for (const point of points) {\n const p: [number, number] = [point.x + shifts[0], point.y + shifts[1]];\n updatePoint(p, pointBBox, polyBBox, worldSize);\n tilePoints.push(p);\n }\n }\n return tilePoints;\n}\n\nfunction getTileLines(geometry: Point2D[][], lineBBox: BBox, polyBBox: BBox, canonical: ICanonicalTileID): [number, number][][] {\n const worldSize = Math.pow(2, canonical.z) * EXTENT;\n const shifts = [canonical.x * EXTENT, canonical.y * EXTENT];\n const tileLines: [number, number][][] = [];\n for (const line of geometry) {\n const tileLine:[number, number][] = [];\n for (const point of line) {\n const p: [number, number] = [point.x + shifts[0], point.y + shifts[1]];\n updateBBox(lineBBox, p);\n tileLine.push(p);\n }\n tileLines.push(tileLine);\n }\n if (lineBBox[2] - lineBBox[0] <= worldSize / 2) {\n resetBBox(lineBBox);\n for (const line of tileLines) {\n for (const p of line) {\n updatePoint(p, lineBBox, polyBBox, worldSize);\n }\n }\n }\n return tileLines;\n}\n\nfunction pointsWithinPolygons(ctx: EvaluationContext, polygonGeometry: GeoJSONPolygons) {\n const pointBBox: BBox = [Infinity, Infinity, -Infinity, -Infinity];\n const polyBBox: BBox = [Infinity, Infinity, -Infinity, -Infinity];\n\n const canonical = ctx.canonicalID();\n\n if (polygonGeometry.type === 'Polygon') {\n const tilePolygon = getTilePolygon(polygonGeometry.coordinates, polyBBox, canonical);\n const tilePoints = getTilePoints(ctx.geometry(), pointBBox, polyBBox, canonical);\n if (!boxWithinBox(pointBBox, polyBBox)) return false;\n\n for (const point of tilePoints) {\n if (!pointWithinPolygon(point, tilePolygon)) return false;\n }\n }\n if (polygonGeometry.type === 'MultiPolygon') {\n const tilePolygons = getTilePolygons(polygonGeometry.coordinates, polyBBox, canonical);\n const tilePoints = getTilePoints(ctx.geometry(), pointBBox, polyBBox, canonical);\n if (!boxWithinBox(pointBBox, polyBBox)) return false;\n\n for (const point of tilePoints) {\n if (!pointWithinPolygons(point, tilePolygons)) return false;\n }\n }\n\n return true;\n}\n\nfunction linesWithinPolygons(ctx: EvaluationContext, polygonGeometry: GeoJSONPolygons) {\n const lineBBox: BBox = [Infinity, Infinity, -Infinity, -Infinity];\n const polyBBox: BBox = [Infinity, Infinity, -Infinity, -Infinity];\n\n const canonical = ctx.canonicalID();\n\n if (polygonGeometry.type === 'Polygon') {\n const tilePolygon = getTilePolygon(polygonGeometry.coordinates, polyBBox, canonical);\n const tileLines = getTileLines(ctx.geometry(), lineBBox, polyBBox, canonical);\n if (!boxWithinBox(lineBBox, polyBBox)) return false;\n\n for (const line of tileLines) {\n if (!lineStringWithinPolygon(line, tilePolygon)) return false;\n }\n }\n if (polygonGeometry.type === 'MultiPolygon') {\n const tilePolygons = getTilePolygons(polygonGeometry.coordinates, polyBBox, canonical);\n const tileLines = getTileLines(ctx.geometry(), lineBBox, polyBBox, canonical);\n if (!boxWithinBox(lineBBox, polyBBox)) return false;\n\n for (const line of tileLines) {\n if (!lineStringWithinPolygons(line, tilePolygons)) return false;\n }\n }\n return true;\n}\n\nexport class Within implements Expression {\n type: Type;\n geojson: GeoJSON.GeoJSON;\n geometries: GeoJSONPolygons;\n\n constructor(geojson: GeoJSON.GeoJSON, geometries: GeoJSONPolygons) {\n this.type = BooleanType;\n this.geojson = geojson;\n this.geometries = geometries;\n }\n\n static parse(args: ReadonlyArray<unknown>, context: ParsingContext): Expression {\n if (args.length !== 2)\n return context.error(`'within' expression requires exactly one argument, but found ${args.length - 1} instead.`) as null;\n if (isValue(args[1])) {\n const geojson = (args[1] as any);\n if (geojson.type === 'FeatureCollection') {\n const polygonsCoords: GeoJSON.Position[][][] = [];\n for (const polygon of geojson.features) {\n const {type, coordinates} = polygon.geometry;\n if (type === 'Polygon') {\n polygonsCoords.push(coordinates);\n }\n if (type === 'MultiPolygon') {\n polygonsCoords.push(...coordinates);\n }\n }\n if (polygonsCoords.length) {\n const multipolygonWrapper: GeoJSON.MultiPolygon = {\n type: 'MultiPolygon',\n coordinates: polygonsCoords\n };\n return new Within(geojson, multipolygonWrapper);\n }\n\n } else if (geojson.type === 'Feature') {\n const type = geojson.geometry.type;\n if (type === 'Polygon' || type === 'MultiPolygon') {\n return new Within(geojson, geojson.geometry);\n }\n } else if (geojson.type === 'Polygon' || geojson.type === 'MultiPolygon') {\n return new Within(geojson, geojson);\n }\n }\n return context.error('\\'within\\' expression requires valid geojson object that contains polygon geometry type.') as null;\n }\n\n evaluate(ctx: EvaluationContext) {\n if (ctx.geometry() != null && ctx.canonicalID() != null) {\n if (ctx.geometryType() === 'Point') {\n return pointsWithinPolygons(ctx, this.geometries);\n } else if (ctx.geometryType() === 'LineString') {\n return linesWithinPolygons(ctx, this.geometries);\n }\n }\n return false;\n }\n\n eachChild() {}\n\n outputDefined(): boolean {\n return true;\n }\n}\n","\nexport default class TinyQueue {\n constructor(data = [], compare = (a, b) => (a < b ? -1 : a > b ? 1 : 0)) {\n this.data = data;\n this.length = this.data.length;\n this.compare = compare;\n\n if (this.length > 0) {\n for (let i = (this.length >> 1) - 1; i >= 0; i--) this._down(i);\n }\n }\n\n push(item) {\n this.data.push(item);\n this._up(this.length++);\n }\n\n pop() {\n if (this.length === 0) return undefined;\n\n const top = this.data[0];\n const bottom = this.data.pop();\n\n if (--this.length > 0) {\n this.data[0] = bottom;\n this._down(0);\n }\n\n return top;\n }\n\n peek() {\n return this.data[0];\n }\n\n _up(pos) {\n const {data, compare} = this;\n const item = data[pos];\n\n while (pos > 0) {\n const parent = (pos - 1) >> 1;\n const current = data[parent];\n if (compare(item, current) >= 0) break;\n data[pos] = current;\n pos = parent;\n }\n\n data[pos] = item;\n }\n\n _down(pos) {\n const {data, compare} = this;\n const halfLength = this.length >> 1;\n const item = data[pos];\n\n while (pos < halfLength) {\n let bestChild = (pos << 1) + 1; // initially it is the left child\n const right = bestChild + 1;\n\n if (right < this.length && compare(data[right], data[bestChild]) < 0) {\n bestChild = right;\n }\n if (compare(data[bestChild], item) >= 0) break;\n\n data[pos] = data[bestChild];\n pos = bestChild;\n }\n\n data[pos] = item;\n }\n}\n","\n/**\n * Rearranges items so that all items in the [left, k] are the smallest.\n * The k-th element will have the (k - left + 1)-th smallest value in [left, right].\n *\n * @template T\n * @param {T[]} arr the array to partially sort (in place)\n * @param {number} k middle index for partial sorting (as defined above)\n * @param {number} [left=0] left index of the range to sort\n * @param {number} [right=arr.length-1] right index\n * @param {(a: T, b: T) => number} [compare = (a, b) => a - b] compare function\n */\nexport default function quickselect(arr, k, left = 0, right = arr.length - 1, compare = defaultCompare) {\n\n while (right > left) {\n if (right - left > 600) {\n const n = right - left + 1;\n const m = k - left + 1;\n const z = Math.log(n);\n const s = 0.5 * Math.exp(2 * z / 3);\n const sd = 0.5 * Math.sqrt(z * s * (n - s) / n) * (m - n / 2 < 0 ? -1 : 1);\n const newLeft = Math.max(left, Math.floor(k - m * s / n + sd));\n const newRight = Math.min(right, Math.floor(k + (n - m) * s / n + sd));\n quickselect(arr, k, newLeft, newRight, compare);\n }\n\n const t = arr[k];\n let i = left;\n /** @type {number} */\n let j = right;\n\n swap(arr, left, k);\n if (compare(arr[right], t) > 0) swap(arr, left, right);\n\n while (i < j) {\n swap(arr, i, j);\n i++;\n j--;\n while (compare(arr[i], t) < 0) i++;\n while (compare(arr[j], t) > 0) j--;\n }\n\n if (compare(arr[left], t) === 0) swap(arr, left, j);\n else {\n j++;\n swap(arr, j, right);\n }\n\n if (j <= k) left = j + 1;\n if (k <= j) right = j - 1;\n }\n}\n\n/**\n * @template T\n * @param {T[]} arr\n * @param {number} i\n * @param {number} j\n */\nfunction swap(arr, i, j) {\n const tmp = arr[i];\n arr[i] = arr[j];\n arr[j] = tmp;\n}\n\n/**\n * @template T\n * @param {T} a\n * @param {T} b\n * @returns {number}\n */\nfunction defaultCompare(a, b) {\n return a < b ? -1 : a > b ? 1 : 0;\n}\n","import quickselect from 'quickselect';\nimport {Point2D} from '../point2d';\n\nexport type RingWithArea<T extends Point2D> = T[] & { area?: number };\n\n/**\n * Classifies an array of rings into polygons with outer rings and holes\n * @param rings - the rings to classify\n * @param maxRings - the maximum number of rings to include in a polygon, use 0 to include all rings\n * @returns an array of polygons with internal rings as holes\n */\nexport function classifyRings<T extends Point2D>(rings: RingWithArea<T>[], maxRings?: number): RingWithArea<T>[][] {\n const len = rings.length;\n\n if (len <= 1) return [rings];\n\n const polygons: RingWithArea<T>[][] = [];\n let polygon: RingWithArea<T>[];\n let ccw: boolean | undefined;\n\n for (const ring of rings) {\n const area = calculateSignedArea(ring);\n if (area === 0) continue;\n\n ring.area = Math.abs(area);\n\n if (ccw === undefined) ccw = area < 0;\n\n if (ccw === area < 0) {\n if (polygon) polygons.push(polygon);\n polygon = [ring];\n } else {\n polygon.push(ring);\n }\n }\n if (polygon) polygons.push(polygon);\n\n // Earcut performance degrades with the # of rings in a polygon. For this\n // reason, we limit strip out all but the `maxRings` largest rings.\n if (maxRings > 1) {\n for (let j = 0; j < polygons.length; j++) {\n if (polygons[j].length <= maxRings) continue;\n quickselect(polygons[j], maxRings, 1, polygons[j].length - 1, compareAreas);\n polygons[j] = polygons[j].slice(0, maxRings);\n }\n }\n\n return polygons;\n}\n\nfunction compareAreas<T extends Point2D>(a: RingWithArea<T>, b: RingWithArea<T>): number {\n return b.area - a.area;\n}\n\n/**\n * Returns the signed area for the polygon ring. Positive areas are exterior rings and\n * have a clockwise winding. Negative areas are interior rings and have a counter clockwise\n * ordering.\n *\n * @param ring - Exterior or interior ring\n * @returns Signed area\n */\nfunction calculateSignedArea(ring: Point2D[]): number {\n let sum = 0;\n for (let i = 0, len = ring.length, j = len - 1, p1, p2; i < len; j = i++) {\n p1 = ring[i];\n p2 = ring[j];\n sum += (p2.x - p1.x) * (p1.y + p2.y);\n }\n return sum;\n}\n","// This is taken from https://github.com/mapbox/cheap-ruler/ in order to take only the relevant parts\n\n// Values that define WGS84 ellipsoid model of the Earth\nconst RE = 6378.137; // equatorial radius\nconst FE = 1 / 298.257223563; // flattening\n\nconst E2 = FE * (2 - FE);\nconst RAD = Math.PI / 180;\n\nexport class CheapRuler {\n private kx: number;\n private ky: number;\n\n constructor(lat: number) {\n\n // Curvature formulas from https://en.wikipedia.org/wiki/Earth_radius#Meridional\n const m = RAD * RE * 1000;\n const coslat = Math.cos(lat * RAD);\n const w2 = 1 / (1 - E2 * (1 - coslat * coslat));\n const w = Math.sqrt(w2);\n\n // multipliers for converting longitude and latitude degrees into distance\n this.kx = m * w * coslat; // based on normal radius of curvature\n this.ky = m * w * w2 * (1 - E2); // based on meridional radius of curvature\n }\n\n /**\n * Given two points of the form [longitude, latitude], returns the distance.\n *\n * @param a - point [longitude, latitude]\n * @param b - point [longitude, latitude]\n * @returns distance\n * @example\n * const distance = ruler.distance([30.5, 50.5], [30.51, 50.49]);\n * //=distance\n */\n public distance(a: [number, number], b: [number, number]) {\n const dx = this.wrap(a[0] - b[0]) * this.kx;\n const dy = (a[1] - b[1]) * this.ky;\n return Math.sqrt(dx * dx + dy * dy);\n }\n\n /**\n * Returns an object of the form {point, index, t}, where point is closest point on the line\n * from the given point, index is the start index of the segment with the closest point,\n * and t is a parameter from 0 to 1 that indicates where the closest point is on that segment.\n *\n * @param line - an array of points that form the line\n * @param p - point [longitude, latitude]\n * @returns the nearest point, its index in the array and the proportion along the line\n * @example\n * const point = ruler.pointOnLine(line, [-67.04, 50.5]).point;\n * //=point\n */\n public pointOnLine(line: [number, number][], p: [number, number]) {\n let minDist = Infinity;\n let minX: number, minY: number, minI: number, minT: number;\n\n for (let i = 0; i < line.length - 1; i++) {\n\n let x = line[i][0];\n let y = line[i][1];\n let dx = this.wrap(line[i + 1][0] - x) * this.kx;\n let dy = (line[i + 1][1] - y) * this.ky;\n let t = 0;\n\n if (dx !== 0 || dy !== 0) {\n t = (this.wrap(p[0] - x) * this.kx * dx + (p[1] - y) * this.ky * dy) / (dx * dx + dy * dy);\n\n if (t > 1) {\n x = line[i + 1][0];\n y = line[i + 1][1];\n\n } else if (t > 0) {\n x += (dx / this.kx) * t;\n y += (dy / this.ky) * t;\n }\n }\n\n dx = this.wrap(p[0] - x) * this.kx;\n dy = (p[1] - y) * this.ky;\n\n const sqDist = dx * dx + dy * dy;\n if (sqDist < minDist) {\n minDist = sqDist;\n minX = x;\n minY = y;\n minI = i;\n minT = t;\n }\n }\n\n return {\n point: [minX, minY] as [number, number],\n index: minI,\n t: Math.max(0, Math.min(1, minT))\n };\n }\n\n private wrap(deg: number) {\n while (deg < -180) deg += 360;\n while (deg > 180) deg -= 360;\n return deg;\n }\n}\n","import TinyQueue from 'tinyqueue';\nimport {Expression} from '../expression';\nimport {ParsingContext} from '../parsing_context';\nimport {NumberType, Type} from '../types';\nimport {isValue} from '../values';\nimport {EvaluationContext} from '../evaluation_context';\nimport {BBox, boxWithinBox, getLngLatFromTileCoord, pointWithinPolygon, segmentIntersectSegment, updateBBox} from '../../util/geometry_util';\nimport {classifyRings} from '../../util/classify_rings';\nimport {CheapRuler} from '../../util/cheap_ruler';\n\ntype SimpleGeometry = GeoJSON.Polygon | GeoJSON.LineString | GeoJSON.Point;\n\nconst MinPointsSize = 100;\nconst MinLinePointsSize = 50;\n\ntype IndexRange = [number, number];\ntype DistPair = [number, IndexRange, IndexRange];\n\nfunction compareDistPair(a: DistPair, b: DistPair): number {\n return b[0] - a[0];\n}\n\nfunction getRangeSize(range: IndexRange) {\n return range[1] - range[0] + 1;\n}\n\nfunction isRangeSafe(range: IndexRange, threshold: number): boolean {\n return range[1] >= range[0] && range[1] < threshold;\n}\n\nfunction splitRange(range: IndexRange, isLine: boolean): [IndexRange, IndexRange] {\n if (range[0] > range[1]) {\n return [null, null];\n }\n const size = getRangeSize(range);\n if (isLine) {\n if (size === 2) {\n return [range, null];\n }\n const size1 = Math.floor(size / 2);\n return [[range[0], range[0] + size1],\n [range[0] + size1, range[1]]];\n }\n if (size === 1) {\n return [range, null];\n }\n const size1 = Math.floor(size / 2) - 1;\n return [[range[0], range[0] + size1],\n [range[0] + size1 + 1, range[1]]];\n}\n\nfunction getBBox(coords: [number, number][], range: IndexRange): BBox {\n if (!isRangeSafe(range, coords.length)) {\n return [Infinity, Infinity, -Infinity, -Infinity];\n }\n\n const bbox: BBox = [Infinity, Infinity, -Infinity, -Infinity];\n for (let i = range[0]; i <= range[1]; ++i) {\n updateBBox(bbox, coords[i]);\n }\n return bbox;\n}\n\nfunction getPolygonBBox(polygon: [number, number][][]): BBox {\n const bbox: BBox = [Infinity, Infinity, -Infinity, -Infinity];\n for (const ring of polygon) {\n for (const coord of ring) {\n updateBBox(bbox, coord);\n }\n }\n return bbox;\n}\n\nfunction isValidBBox(bbox: BBox): boolean {\n return bbox[0] !== -Infinity && bbox[1] !== -Infinity && bbox[2] !== Infinity && bbox[3] !== Infinity;\n}\n\n// Calculate the distance between two bounding boxes.\n// Calculate the delta in x and y direction, and use two fake points {0.0, 0.0}\n// and {dx, dy} to calculate the distance. Distance will be 0.0 if bounding box are overlapping.\nfunction bboxToBBoxDistance(bbox1: BBox, bbox2: BBox, ruler: CheapRuler): number {\n if (!isValidBBox(bbox1) || !isValidBBox(bbox2)) {\n return NaN;\n }\n let dx = 0.0;\n let dy = 0.0;\n // bbox1 in left side\n if (bbox1[2] < bbox2[0]) {\n dx = bbox2[0] - bbox1[2];\n }\n // bbox1 in right side\n if (bbox1[0] > bbox2[2]) {\n dx = bbox1[0] - bbox2[2];\n }\n // bbox1 in above side\n if (bbox1[1] > bbox2[3]) {\n dy = bbox1[1] - bbox2[3];\n }\n // bbox1 in down side\n if (bbox1[3] < bbox2[1]) {\n dy = bbox2[1] - bbox1[3];\n }\n return ruler.distance([0.0, 0.0], [dx, dy]);\n}\n\nfunction pointToLineDistance(point: [number, number], line: [number, number][], ruler: CheapRuler): number {\n const nearestPoint = ruler.pointOnLine(line, point);\n return ruler.distance(point, nearestPoint.point);\n}\n\nfunction segmentToSegmentDistance(p1: [number, number], p2: [number, number],\n q1: [number, number], q2: [number, number], ruler: CheapRuler): number {\n const dist1 = Math.min(pointToLineDistance(p1, [q1, q2], ruler), pointToLineDistance(p2, [q1, q2], ruler));\n const dist2 = Math.min(pointToLineDistance(q1, [p1, p2], ruler), pointToLineDistance(q2, [p1, p2], ruler));\n return Math.min(dist1, dist2);\n}\n\nfunction lineToLineDistance(line1: [number, number][],\n range1: IndexRange,\n line2: [number, number][],\n range2: IndexRange,\n ruler: CheapRuler): number {\n const rangeSafe = isRangeSafe(range1, line1.length) && isRangeSafe(range2, line2.length);\n if (!rangeSafe) {\n return Infinity;\n }\n\n let dist = Infinity;\n for (let i = range1[0]; i < range1[1]; ++i) {\n const p1 = line1[i];\n const p2 = line1[i + 1];\n for (let j = range2[0]; j < range2[1]; ++j) {\n const q1 = line2[j];\n const q2 = line2[j + 1];\n if (segmentIntersectSegment(p1, p2, q1, q2)) {\n return 0.0;\n }\n dist = Math.min(dist, segmentToSegmentDistance(p1, p2, q1, q2, ruler));\n }\n }\n return dist;\n}\n\nfunction pointsToPointsDistance(points1: [number, number][],\n range1: IndexRange,\n points2: [number, number][],\n range2: IndexRange,\n ruler: CheapRuler): number {\n const rangeSafe = isRangeSafe(range1, points1.length) && isRangeSafe(range2, points2.length);\n if (!rangeSafe) {\n return NaN;\n }\n\n let dist = Infinity;\n for (let i = range1[0]; i <= range1[1]; ++i) {\n for (let j = range2[0]; j <= range2[1]; ++j) {\n dist = Math.min(dist, ruler.distance(points1[i], points2[j]));\n if (dist === 0.0) {\n return dist;\n }\n }\n }\n return dist;\n}\n\nfunction pointToPolygonDistance(point: [number, number],\n polygon: [number, number][][],\n ruler: CheapRuler): number {\n if (pointWithinPolygon(point, polygon, true)) {\n return 0.0;\n }\n let dist = Infinity;\n for (const ring of polygon) {\n const front = ring[0];\n const back = ring[ring.length - 1];\n if (front !== back) {\n dist = Math.min(dist, pointToLineDistance(point, [back, front], ruler));\n if (dist === 0.0) {\n return dist;\n }\n }\n const nearestPoint = ruler.pointOnLine(ring, point);\n dist = Math.min(dist, ruler.distance(point, nearestPoint.point));\n if (dist === 0.0) {\n return dist;\n }\n }\n return dist;\n}\n\nfunction lineToPolygonDistance(line: [number, number][],\n range: IndexRange,\n polygon: [number, number][][],\n ruler: CheapRuler): number {\n if (!isRangeSafe(range, line.length)) {\n return NaN;\n }\n\n for (let i = range[0]; i <= range[1]; ++i) {\n if (pointWithinPolygon(line[i], polygon, true)) {\n return 0.0;\n }\n }\n\n let dist = Infinity;\n for (let i = range[0]; i < range[1]; ++i) {\n const p1 = line[i];\n const p2 = line[i + 1];\n for (const ring of polygon) {\n for (let j = 0, len = ring.length, k = len - 1; j < len; k = j++) {\n const q1 = ring[k];\n const q2 = ring[j];\n if (segmentIntersectSegment(p1, p2, q1, q2)) {\n return 0.0;\n }\n dist = Math.min(dist, segmentToSegmentDistance(p1, p2, q1, q2, ruler));\n }\n }\n }\n return dist;\n}\n\nfunction polygonIntersect(poly1: [number, number][][], poly2: [number, number][][]): boolean {\n for (const ring of poly1) {\n for (const point of ring) {\n if (pointWithinPolygon(point, poly2, true)) {\n return true;\n }\n }\n }\n return false;\n}\n\nfunction polygonToPolygonDistance(polygon1: [number, number][][],\n polygon2: [number, number][][],\n ruler,\n currentMiniDist = Infinity): number {\n const bbox1 = getPolygonBBox(polygon1);\n const bbox2 = getPolygonBBox(polygon2);\n if (currentMiniDist !== Infinity && bboxToBBoxDistance(bbox1, bbox2, ruler) >= currentMiniDist) {\n return currentMiniDist;\n }\n\n if (boxWithinBox(bbox1, bbox2)) {\n if (polygonIntersect(polygon1, polygon2)) {\n return 0.0;\n }\n } else if (polygonIntersect(polygon2, polygon1)) {\n return 0.0;\n }\n\n let dist = Infinity;\n for (const ring1 of polygon1) {\n for (let i = 0, len1 = ring1.length, l = len1 - 1; i < len1; l = i++) {\n const p1 = ring1[l];\n const p2 = ring1[i];\n for (const ring2 of polygon2) {\n for (let j = 0, len2 = ring2.length, k = len2 - 1; j < len2; k = j++) {\n const q1 = ring2[k];\n const q2 = ring2[j];\n if (segmentIntersectSegment(p1, p2, q1, q2)) {\n return 0.0;\n }\n dist = Math.min(dist, segmentToSegmentDistance(p1, p2, q1, q2, ruler));\n }\n }\n }\n }\n return dist;\n}\n\nfunction updateQueue(distQueue: TinyQueue<DistPair>, miniDist: number, ruler: CheapRuler, points: [number, number][], polyBBox: BBox, rangeA?: IndexRange) {\n if (!rangeA) {\n return;\n }\n const tempDist = bboxToBBoxDistance(getBBox(points, rangeA), polyBBox, ruler);\n // Insert new pair to the queue if the bbox distance is less than\n // miniDist, The pair with biggest distance will be at the top\n if (tempDist < miniDist) {\n distQueue.push([tempDist, rangeA, [0, 0]]);\n }\n}\n\nfunction updateQueueTwoSets(distQueue: TinyQueue<DistPair>, miniDist: number, ruler: CheapRuler,\n pointSet1: [number, number][], pointSet2: [number, number][], range1?: IndexRange, range2?: IndexRange) {\n if (!range1 || !range2) {\n return;\n }\n const tempDist = bboxToBBoxDistance(\n getBBox(pointSet1, range1), getBBox(pointSet2, range2), ruler);\n // Insert new pair to the queue if the bbox distance is less than\n // miniDist, The pair with biggest distance will be at the top\n if (tempDist < miniDist) {\n distQueue.push([tempDist, range1, range2]);\n }\n}\n\n// Divide and conquer, the time complexity is O(n*lgn), faster than Brute force\n// O(n*n) Most of the time, use index for in-place processing.\nfunction pointsToPolygonDistance(points: [number, number][],\n isLine: boolean,\n polygon: [number, number][][],\n ruler: CheapRuler,\n currentMiniDist = Infinity) {\n let miniDist = Math.min(ruler.distance(points[0], polygon[0][0]), currentMiniDist);\n if (miniDist === 0.0) {\n return miniDist;\n }\n\n const distQueue = new TinyQueue<DistPair>([[0, [0, points.length - 1], [0, 0]]], compareDistPair);\n\n const polyBBox = getPolygonBBox(polygon);\n while (distQueue.length > 0) {\n const distPair = distQueue.pop();\n if (distPair[0] >= miniDist) {\n continue;\n }\n\n const range = distPair[1];\n\n // In case the set size are relatively small, we could use brute-force directly\n const threshold = isLine ? MinLinePointsSize : MinPointsSize;\n if (getRangeSize(range) <= threshold) {\n if (!isRangeSafe(range, points.length)) {\n return NaN;\n }\n if (isLine) {\n const tempDist = lineToPolygonDistance(points, range, polygon, ruler);\n if (isNaN(tempDist) || tempDist === 0.0) {\n return tempDist;\n }\n miniDist = Math.min(miniDist, tempDist);\n } else {\n for (let i = range[0]; i <= range[1]; ++i) {\n const tempDist = pointToPolygonDistance(points[i], polygon, ruler);\n miniDist = Math.min(miniDist, tempDist);\n if (miniDist === 0.0) {\n return 0.0;\n }\n }\n }\n } else {\n const newRangesA = splitRange(range, isLine);\n\n updateQueue(distQueue, miniDist, ruler, points, polyBBox, newRangesA[0]);\n updateQueue(distQueue, miniDist, ruler, points, polyBBox, newRangesA[1]);\n }\n }\n return miniDist;\n}\n\nfunction pointSetToPointSetDistance(pointSet1: [number, number][],\n isLine1: boolean,\n pointSet2: [number, number][],\n isLine2: boolean,\n ruler: CheapRuler,\n currentMiniDist = Infinity): number {\n let miniDist = Math.min(currentMiniDist, ruler.distance(pointSet1[0], pointSet2[0]));\n if (miniDist === 0.0) {\n return miniDist;\n }\n\n const distQueue = new TinyQueue<DistPair>([[0, [0, pointSet1.length - 1], [0, pointSet2.length - 1]]], compareDistPair);\n\n while (distQueue.length > 0) {\n const distPair = distQueue.pop();\n if (distPair[0] >= miniDist) {\n continue;\n }\n\n const rangeA = distPair[1];\n const rangeB = distPair[2];\n const threshold1 = isLine1 ? MinLinePointsSize : MinPointsSize;\n const threshold2 = isLine2 ? MinLinePointsSize : MinPointsSize;\n\n // In case the set size are relatively small, we could use brute-force directly\n if (getRangeSize(rangeA) <= threshold1 && getRangeSize(rangeB) <= threshold2) {\n if (!isRangeSafe(rangeA, pointSet1.length) && isRangeSafe(rangeB, pointSet2.length)) {\n return NaN;\n }\n let tempDist: number;\n if (isLine1 && isLine2) {\n tempDist = lineToLineDistance(pointSet1, rangeA, pointSet2, rangeB, ruler);\n miniDist = Math.min(miniDist, tempDist);\n } else if (isLine1 && !isLine2) {\n const sublibe = pointSet1.slice(rangeA[0], rangeA[1] + 1);\n for (let i = rangeB[0]; i <= rangeB[1]; ++i) {\n tempDist = pointToLineDistance(pointSet2[i], sublibe, ruler);\n miniDist = Math.min(miniDist, tempDist);\n if (miniDist === 0.0) {\n return miniDist;\n }\n }\n } else if (!isLine1 && isLine2) {\n const sublibe = pointSet2.slice(rangeB[0], rangeB[1] + 1);\n for (let i = rangeA[0]; i <= rangeA[1]; ++i) {\n tempDist = pointToLineDistance(pointSet1[i], sublibe, ruler);\n miniDist = Math.min(miniDist, tempDist);\n if (miniDist === 0.0) {\n return miniDist;\n }\n }\n } else {\n tempDist = pointsToPointsDistance(pointSet1, rangeA, pointSet2, rangeB, ruler);\n miniDist = Math.min(miniDist, tempDist);\n }\n } else {\n const newRangesA = splitRange(rangeA, isLine1);\n const newRangesB = splitRange(rangeB, isLine2);\n updateQueueTwoSets(distQueue, miniDist, ruler, pointSet1, pointSet2, newRangesA[0], newRangesB[0]);\n updateQueueTwoSets(distQueue, miniDist, ruler, pointSet1, pointSet2, newRangesA[0], newRangesB[1]);\n updateQueueTwoSets(distQueue, miniDist, ruler, pointSet1, pointSet2, newRangesA[1], newRangesB[0]);\n updateQueueTwoSets(distQueue, miniDist, ruler, pointSet1, pointSet2, newRangesA[1], newRangesB[1]);\n }\n }\n return miniDist;\n}\n\nfunction pointToGeometryDistance(ctx: EvaluationContext, geometries: SimpleGeometry[]) {\n const tilePoints = ctx.geometry();\n const pointPosition = tilePoints.flat().map(p => getLngLatFromTileCoord([p.x, p.y], ctx.canonical) as [number, number]);\n if (tilePoints.length === 0) {\n return NaN;\n }\n const ruler = new CheapRuler(pointPosition[0][1]);\n let dist = Infinity;\n for (const geometry of geometries) {\n switch (geometry.type) {\n case 'Point':\n dist = Math.min(dist, pointSetToPointSetDistance(pointPosition, false, [geometry.coordinates as [number, number]], false, ruler, dist));\n break;\n case 'LineString':\n dist = Math.min(dist, pointSetToPointSetDistance(pointPosition, false, geometry.coordinates as [number, number][], true, ruler, dist));\n break;\n case 'Polygon':\n dist = Math.min(dist, pointsToPolygonDistance(pointPosition, false, geometry.coordinates as [number, number][][], ruler, dist));\n break;\n }\n if (dist === 0.0) {\n return dist;\n }\n }\n return dist;\n}\n\nfunction lineStringToGeometryDistance(ctx: EvaluationContext, geometries: SimpleGeometry[]) {\n const tileLine = ctx.geometry();\n const linePositions = tileLine.flat().map(p => getLngLatFromTileCoord([p.x, p.y], ctx.canonical) as [number, number]);\n if (tileLine.length === 0) {\n return NaN;\n }\n const ruler = new CheapRuler(linePositions[0][1]);\n let dist = Infinity;\n for (const geometry of geometries) {\n switch (geometry.type) {\n case 'Point':\n dist = Math.min(dist, pointSetToPointSetDistance(linePositions, true, [geometry.coordinates as [number, number]], false, ruler, dist));\n break;\n case 'LineString':\n dist = Math.min(dist, pointSetToPointSetDistance(linePositions, true, geometry.coordinates as [number, number][], true, ruler, dist));\n break;\n case 'Polygon':\n dist = Math.min(dist, pointsToPolygonDistance(linePositions, true, geometry.coordinates as [number, number][][], ruler, dist));\n break;\n }\n if (dist === 0.0) {\n return dist;\n }\n }\n return dist;\n}\n\nfunction polygonToGeometryDistance(ctx: EvaluationContext, geometries: SimpleGeometry[]) {\n const tilePolygon = ctx.geometry();\n if (tilePolygon.length === 0 || tilePolygon[0].length === 0) {\n return NaN;\n }\n const polygons = classifyRings(tilePolygon, 0).map(polygon => {\n return polygon.map(ring => {\n return ring.map(p => getLngLatFromTileCoord([p.x, p.y], ctx.canonical) as [number, number]);\n });\n });\n const ruler = new CheapRuler(polygons[0][0][0][1]);\n let dist = Infinity;\n for (const geometry of geometries) {\n for (const polygon of polygons) {\n switch (geometry.type) {\n case 'Point':\n dist = Math.min(dist, pointsToPolygonDistance([geometry.coordinates as [number, number]], false, polygon, ruler, dist));\n break;\n case 'LineString':\n dist = Math.min(dist, pointsToPolygonDistance(geometry.coordinates as [number, number][], true, polygon, ruler, dist));\n break;\n case 'Polygon':\n dist = Math.min(dist, polygonToPolygonDistance(polygon, geometry.coordinates as [number, number][][], ruler, dist));\n break;\n }\n if (dist === 0.0) {\n return dist;\n }\n }\n }\n return dist;\n\n}\n\nfunction toSimpleGeometry(geometry: Exclude<GeoJSON.Geometry, GeoJSON.GeometryCollection>): SimpleGeometry[] {\n if (geometry.type === 'MultiPolygon') {\n return geometry.coordinates.map(polygon => {\n return {\n type: 'Polygon',\n coordinates: polygon\n };\n });\n }\n if (geometry.type === 'MultiLineString') {\n return geometry.coordinates.map(lineString => {\n return {\n type: 'LineString',\n coordinates: lineString\n };\n });\n }\n if (geometry.type === 'MultiPoint') {\n return geometry.coordinates.map(point => {\n return {\n type: 'Point',\n coordinates: point\n };\n });\n }\n return [geometry];\n}\n\nexport class Distance implements Expression {\n type: Type;\n geojson: GeoJSON.GeoJSON;\n geometries: SimpleGeometry[];\n\n constructor(geojson: GeoJSON.GeoJSON, geometries: SimpleGeometry[]) {\n this.type = NumberType;\n this.geojson = geojson;\n this.geometries = geometries;\n }\n\n static parse(args: ReadonlyArray<unknown>, context: ParsingContext): Expression {\n if (args.length !== 2)\n return context.error(`'distance' expression requires exactly one argument, but found ${args.length - 1} instead.`) as null;\n if (isValue(args[1])) {\n const geojson = (args[1] as any);\n if (geojson.type === 'FeatureCollection') {\n return new Distance(geojson, geojson.features.map(feature => toSimpleGeometry(feature.geometry)).flat());\n } else if (geojson.type === 'Feature') {\n return new Distance(geojson, toSimpleGeometry(geojson.geometry));\n } else if ('type' in geojson && 'coordinates' in geojson) {\n return new Distance(geojson, toSimpleGeometry(geojson));\n }\n }\n return context.error('\\'distance\\' expression requires valid geojson object that contains polygon geometry type.') as null;\n }\n\n evaluate(ctx: EvaluationContext) {\n if (ctx.geometry() != null && ctx.canonicalID() != null) {\n if (ctx.geometryType() === 'Point') {\n return pointToGeometryDistance(ctx, this.geometries);\n } else if (ctx.geometryType() === 'LineString') {\n return lineStringToGeometryDistance(ctx, this.geometries);\n } else if (ctx.geometryType() === 'Polygon') {\n return polygonToGeometryDistance(ctx, this.geometries);\n }\n }\n return NaN;\n }\n\n eachChild() {}\n\n outputDefined(): boolean {\n return true;\n }\n}\n","import {Type, ValueType} from '../types';\nimport type {Expression} from '../expression';\nimport {ParsingContext} from '../parsing_context';\nimport {EvaluationContext} from '../evaluation_context';\nimport {getOwn} from '../../util/get_own';\n\nexport class GlobalState implements Expression {\n type: Type;\n key: string;\n\n constructor(key: string) {\n this.type = ValueType;\n this.key = key;\n }\n\n static parse(args: ReadonlyArray<unknown>, context: ParsingContext): Expression {\n if (args.length !== 2) {\n return context.error(`Expected 1 argument, but found ${args.length - 1} instead.`) as null;\n }\n\n const key = args[1];\n\n if (key === undefined || key === null) {\n return context.error('Global state property must be defined.') as null;\n }\n\n if (typeof key !== 'string') {\n return context.error(`Global state property must be string, but found ${typeof args[1]} instead.`) as null;\n }\n\n return new GlobalState(key);\n }\n\n evaluate(ctx: EvaluationContext) {\n const globalState = ctx.globals?.globalState;\n\n if (!globalState || Object.keys(globalState).length === 0) return null;\n\n return getOwn(globalState, this.key);\n }\n\n eachChild() {}\n\n outputDefined() {\n return false;\n }\n}\n","\nimport {Let} from './let';\nimport {Var} from './var';\nimport {Literal} from './literal';\nimport {Assertion} from './assertion';\nimport {Coercion} from './coercion';\nimport {At} from './at';\nimport {In} from './in';\nimport {IndexOf} from './index_of';\nimport {Match} from './match';\nimport {Case} from './case';\nimport {Slice} from './slice';\nimport {Step} from './step';\nimport {Interpolate} from './interpolate';\nimport {Coalesce} from './coalesce';\nimport {\n Equals,\n NotEquals,\n LessThan,\n GreaterThan,\n LessThanOrEqual,\n GreaterThanOrEqual\n} from './comparison';\nimport {CollatorExpression} from './collator';\nimport {NumberFormat} from './number_format';\nimport {FormatExpression} from './format';\nimport {ImageExpression} from './image';\nimport {Length} from './length';\nimport {Within} from './within';\nimport {Distance} from './distance';\nimport {GlobalState} from './global_state';\n\nimport type {ExpressionRegistry} from '../expression';\n\nexport const expressions: ExpressionRegistry = {\n // special forms\n '==': Equals,\n '!=': NotEquals,\n '>': GreaterThan,\n '<': LessThan,\n '>=': GreaterThanOrEqual,\n '<=': LessThanOrEqual,\n 'array': Assertion,\n 'at': At,\n 'boolean': Assertion,\n 'case': Case,\n 'coalesce': Coalesce,\n 'collator': CollatorExpression,\n 'format': FormatExpression,\n 'image': ImageExpression,\n 'in': In,\n 'index-of': IndexOf,\n 'interpolate': Interpolate,\n 'interpolate-hcl': Interpolate,\n 'interpolate-lab': Interpolate,\n 'length': Length,\n 'let': Let,\n 'literal': Literal,\n 'match': Match,\n 'number': Assertion,\n 'number-format': NumberFormat,\n 'object': Assertion,\n 'slice': Slice,\n 'step': Step,\n 'string': Assertion,\n 'to-boolean': Coercion,\n 'to-color': Coercion,\n 'to-number': Coercion,\n 'to-string': Coercion,\n 'var': Var,\n 'within': Within,\n 'distance': Distance,\n 'global-state': GlobalState\n};\n","import {typeToString,\n NumberType,\n StringType,\n BooleanType,\n ColorType,\n ObjectType,\n ValueType,\n ErrorType,\n CollatorType,\n array,\n} from './types';\n\nimport {ParsingContext} from './parsing_context';\nimport {EvaluationContext} from './evaluation_context';\n\nimport {expressions} from './definitions/index';\nimport {CollatorExpression} from './definitions/collator';\nimport {Within} from './definitions/within';\nimport {Literal} from './definitions/literal';\nimport {Assertion} from './definitions/assertion';\nimport {Coercion} from './definitions/coercion';\nimport {Var} from './definitions/var';\nimport {Distance} from './definitions/distance';\nimport {GlobalState} from './definitions/global_state';\n\nimport type {Expression, ExpressionRegistry} from './expression';\nimport type {Value} from './values';\nimport type {Type} from './types';\n\nimport {typeOf, validateRGBA, valueToString} from './values';\nimport {RuntimeError} from './runtime_error';\nimport {Color} from './types/color';\n\nexport type Varargs = {\n type: Type;\n};\ntype Signature = Array<Type> | Varargs;\ntype Evaluate = (b: EvaluationContext, a: Array<Expression>) => Value;\n\ntype Definition = [Type, Signature, Evaluate] | {\n type: Type;\n overloads: Array<[Signature, Evaluate]>;\n};\n\nexport class CompoundExpression implements Expression {\n name: string;\n type: Type;\n _evaluate: Evaluate;\n args: Array<Expression>;\n\n static definitions: {[_: string]: Definition};\n\n constructor(name: string, type: Type, evaluate: Evaluate, args: Array<Expression>) {\n this.name = name;\n this.type = type;\n this._evaluate = evaluate;\n this.args = args;\n }\n\n evaluate(ctx: EvaluationContext) {\n return this._evaluate(ctx, this.args);\n }\n\n eachChild(fn: (_: Expression) => void) {\n this.args.forEach(fn);\n }\n\n outputDefined() {\n return false;\n }\n\n static parse(args: ReadonlyArray<unknown>, context: ParsingContext): Expression {\n const op: string = (args[0] as any);\n const definition = CompoundExpression.definitions[op];\n if (!definition) {\n return context.error(`Unknown expression \"${op}\". If you wanted a literal array, use [\"literal\", [...]].`, 0) as null;\n }\n\n // Now check argument types against each signature\n const type = Array.isArray(definition) ?\n definition[0] : definition.type;\n\n const availableOverloads = Array.isArray(definition) ?\n [[definition[1], definition[2]]] :\n definition.overloads;\n\n const overloads = availableOverloads.filter(([signature]) => (\n !Array.isArray(signature) || // varags\n signature.length === args.length - 1 // correct param count\n ));\n\n let signatureContext: ParsingContext = null;\n\n for (const [params, evaluate] of overloads) {\n // Use a fresh context for each attempted signature so that, if\n // we eventually succeed, we haven't polluted `context.errors`.\n signatureContext = new ParsingContext(context.registry, isExpressionConstant, context.path, null, context.scope);\n\n // First parse all the args, potentially coercing to the\n // types expected by this overload.\n const parsedArgs: Array<Expression> = [];\n let argParseFailed = false;\n for (let i = 1; i < args.length; i++) {\n const arg = args[i];\n const expectedType = Array.isArray(params) ?\n params[i - 1] :\n (params as Varargs).type;\n\n const parsed = signatureContext.parse(arg, 1 + parsedArgs.length, expectedType);\n if (!parsed) {\n argParseFailed = true;\n break;\n }\n parsedArgs.push(parsed);\n }\n if (argParseFailed) {\n // Couldn't coerce args of this overload to expected type, move\n // on to next one.\n continue;\n }\n\n if (Array.isArray(params)) {\n if (params.length !== parsedArgs.length) {\n signatureContext.error(`Expected ${params.length} arguments, but found ${parsedArgs.length} instead.`);\n continue;\n }\n }\n\n for (let i = 0; i < parsedArgs.length; i++) {\n const expected = Array.isArray(params) ? params[i] : (params as Varargs).type;\n const arg = parsedArgs[i];\n signatureContext.concat(i + 1).checkSubtype(expected, arg.type);\n }\n\n if (signatureContext.errors.length === 0) {\n return new CompoundExpression(op, type, evaluate as Evaluate, parsedArgs);\n }\n }\n\n if (overloads.length === 1) {\n context.errors.push(...signatureContext.errors);\n } else {\n const expected = overloads.length ? overloads : availableOverloads;\n const signatures = expected\n .map(([params]) => stringifySignature(params as Signature))\n .join(' | ');\n\n const actualTypes = [];\n // For error message, re-parse arguments without trying to\n // apply any coercions\n for (let i = 1; i < args.length; i++) {\n const parsed = context.parse(args[i], 1 + actualTypes.length);\n if (!parsed) return null;\n actualTypes.push(typeToString(parsed.type));\n }\n context.error(`Expected arguments of type ${signatures}, but found (${actualTypes.join(', ')}) instead.`);\n }\n\n return null;\n }\n\n static register(\n registry: ExpressionRegistry,\n definitions: {[_: string]: Definition}\n ) {\n CompoundExpression.definitions = definitions;\n for (const name in definitions) {\n registry[name] = CompoundExpression;\n }\n }\n}\n\nfunction rgba(ctx, [r, g, b, a]) {\n r = r.evaluate(ctx);\n g = g.evaluate(ctx);\n b = b.evaluate(ctx);\n const alpha = a ? a.evaluate(ctx) : 1;\n const error = validateRGBA(r, g, b, alpha);\n if (error) throw new RuntimeError(error);\n return new Color(r / 255, g / 255, b / 255, alpha, false);\n}\n\nfunction has(key, obj) {\n return key in obj;\n}\n\nfunction get(key, obj) {\n const v = obj[key];\n return typeof v === 'undefined' ? null : v;\n}\n\nfunction binarySearch(v, a, i, j) {\n while (i <= j) {\n const m = (i + j) >> 1;\n if (a[m] === v)\n return true;\n if (a[m] > v)\n j = m - 1;\n else\n i = m + 1;\n }\n return false;\n}\n\nfunction varargs(type: Type): Varargs {\n return {type};\n}\n\nCompoundExpression.register(expressions, {\n 'error': [\n ErrorType,\n [StringType],\n (ctx, [v]) => { throw new RuntimeError(v.evaluate(ctx)); }\n ],\n 'typeof': [\n StringType,\n [ValueType],\n (ctx, [v]) => typeToString(typeOf(v.evaluate(ctx)))\n ],\n 'to-rgba': [\n array(NumberType, 4),\n [ColorType],\n (ctx, [v]) => {\n const [r, g, b, a] = v.evaluate(ctx).rgb;\n return [r * 255, g * 255, b * 255, a];\n },\n ],\n 'rgb': [\n ColorType,\n [NumberType, NumberType, NumberType],\n rgba\n ],\n 'rgba': [\n ColorType,\n [NumberType, NumberType, NumberType, NumberType],\n rgba\n ],\n 'has': {\n type: BooleanType,\n overloads: [\n [\n [StringType],\n (ctx, [key]) => has(key.evaluate(ctx), ctx.properties())\n ], [\n [StringType, ObjectType],\n (ctx, [key, obj]) => has(key.evaluate(ctx), obj.evaluate(ctx))\n ]\n ]\n },\n 'get': {\n type: ValueType,\n overloads: [\n [\n [StringType],\n (ctx, [key]) => get(key.evaluate(ctx), ctx.properties())\n ], [\n [StringType, ObjectType],\n (ctx, [key, obj]) => get(key.evaluate(ctx), obj.evaluate(ctx))\n ]\n ]\n },\n 'feature-state': [\n ValueType,\n [StringType],\n (ctx, [key]) => get(key.evaluate(ctx), ctx.featureState || {})\n ],\n 'properties': [\n ObjectType,\n [],\n (ctx) => ctx.properties()\n ],\n 'geometry-type': [\n StringType,\n [],\n (ctx) => ctx.geometryType()\n ],\n 'id': [\n ValueType,\n [],\n (ctx) => ctx.id()\n ],\n 'zoom': [\n NumberType,\n [],\n (ctx) => ctx.globals.zoom\n ],\n 'heatmap-density': [\n NumberType,\n [],\n (ctx) => ctx.globals.heatmapDensity || 0\n ],\n 'elevation': [\n NumberType,\n [],\n (ctx) => ctx.globals.elevation || 0\n ],\n 'line-progress': [\n NumberType,\n [],\n (ctx) => ctx.globals.lineProgress || 0\n ],\n 'accumulated': [\n ValueType,\n [],\n (ctx) => ctx.globals.accumulated === undefined ? null : ctx.globals.accumulated\n ],\n '+': [\n NumberType,\n varargs(NumberType),\n (ctx, args) => {\n let result = 0;\n for (const arg of args) {\n result += arg.evaluate(ctx);\n }\n return result;\n }\n ],\n '*': [\n NumberType,\n varargs(NumberType),\n (ctx, args) => {\n let result = 1;\n for (const arg of args) {\n result *= arg.evaluate(ctx);\n }\n return result;\n }\n ],\n '-': {\n type: NumberType,\n overloads: [\n [\n [NumberType, NumberType],\n (ctx, [a, b]) => a.evaluate(ctx) - b.evaluate(ctx)\n ], [\n [NumberType],\n (ctx, [a]) => -a.evaluate(ctx)\n ]\n ]\n },\n '/': [\n NumberType,\n [NumberType, NumberType],\n (ctx, [a, b]) => a.evaluate(ctx) / b.evaluate(ctx)\n ],\n '%': [\n NumberType,\n [NumberType, NumberType],\n (ctx, [a, b]) => a.evaluate(ctx) % b.evaluate(ctx)\n ],\n 'ln2': [\n NumberType,\n [],\n () => Math.LN2\n ],\n 'pi': [\n NumberType,\n [],\n () => Math.PI\n ],\n 'e': [\n NumberType,\n [],\n () => Math.E\n ],\n '^': [\n NumberType,\n [NumberType, NumberType],\n (ctx, [b, e]) => Math.pow(b.evaluate(ctx), e.evaluate(ctx))\n ],\n 'sqrt': [\n NumberType,\n [NumberType],\n (ctx, [x]) => Math.sqrt(x.evaluate(ctx))\n ],\n 'log10': [\n NumberType,\n [NumberType],\n (ctx, [n]) => Math.log(n.evaluate(ctx)) / Math.LN10\n ],\n 'ln': [\n NumberType,\n [NumberType],\n (ctx, [n]) => Math.log(n.evaluate(ctx))\n ],\n 'log2': [\n NumberType,\n [NumberType],\n (ctx, [n]) => Math.log(n.evaluate(ctx)) / Math.LN2\n ],\n 'sin': [\n NumberType,\n [NumberType],\n (ctx, [n]) => Math.sin(n.evaluate(ctx))\n ],\n 'cos': [\n NumberType,\n [NumberType],\n (ctx, [n]) => Math.cos(n.evaluate(ctx))\n ],\n 'tan': [\n NumberType,\n [NumberType],\n (ctx, [n]) => Math.tan(n.evaluate(ctx))\n ],\n 'asin': [\n NumberType,\n [NumberType],\n (ctx, [n]) => Math.asin(n.evaluate(ctx))\n ],\n 'acos': [\n NumberType,\n [NumberType],\n (ctx, [n]) => Math.acos(n.evaluate(ctx))\n ],\n 'atan': [\n NumberType,\n [NumberType],\n (ctx, [n]) => Math.atan(n.evaluate(ctx))\n ],\n 'min': [\n NumberType,\n varargs(NumberType),\n (ctx, args) => Math.min(...args.map(arg => arg.evaluate(ctx)))\n ],\n 'max': [\n NumberType,\n varargs(NumberType),\n (ctx, args) => Math.max(...args.map(arg => arg.evaluate(ctx)))\n ],\n 'abs': [\n NumberType,\n [NumberType],\n (ctx, [n]) => Math.abs(n.evaluate(ctx))\n ],\n 'round': [\n NumberType,\n [NumberType],\n (ctx, [n]) => {\n const v = n.evaluate(ctx);\n // Javascript's Math.round() rounds towards +Infinity for halfway\n // values, even when they're negative. It's more common to round\n // away from 0 (e.g., this is what python and C++ do)\n return v < 0 ? -Math.round(-v) : Math.round(v);\n }\n ],\n 'floor': [\n NumberType,\n [NumberType],\n (ctx, [n]) => Math.floor(n.evaluate(ctx))\n ],\n 'ceil': [\n NumberType,\n [NumberType],\n (ctx, [n]) => Math.ceil(n.evaluate(ctx))\n ],\n 'filter-==': [\n BooleanType,\n [StringType, ValueType],\n (ctx, [k, v]) => ctx.properties()[(k as any).value] === (v as any).value\n ],\n 'filter-id-==': [\n BooleanType,\n [ValueType],\n (ctx, [v]) => ctx.id() === (v as any).value\n ],\n 'filter-type-==': [\n BooleanType,\n [StringType],\n (ctx, [v]) => ctx.geometryType() === (v as any).value\n ],\n 'filter-<': [\n BooleanType,\n [StringType, ValueType],\n (ctx, [k, v]) => {\n const a = ctx.properties()[(k as any).value];\n const b = (v as any).value;\n return typeof a === typeof b && a < b;\n }\n ],\n 'filter-id-<': [\n BooleanType,\n [ValueType],\n (ctx, [v]) => {\n const a = ctx.id();\n const b = (v as any).value;\n return typeof a === typeof b && a < b;\n }\n ],\n 'filter->': [\n BooleanType,\n [StringType, ValueType],\n (ctx, [k, v]) => {\n const a = ctx.properties()[(k as any).value];\n const b = (v as any).value;\n return typeof a === typeof b && a > b;\n }\n ],\n 'filter-id->': [\n BooleanType,\n [ValueType],\n (ctx, [v]) => {\n const a = ctx.id();\n const b = (v as any).value;\n return typeof a === typeof b && a > b;\n }\n ],\n 'filter-<=': [\n BooleanType,\n [StringType, ValueType],\n (ctx, [k, v]) => {\n const a = ctx.properties()[(k as any).value];\n const b = (v as any).value;\n return typeof a === typeof b && a <= b;\n }\n ],\n 'filter-id-<=': [\n BooleanType,\n [ValueType],\n (ctx, [v]) => {\n const a = ctx.id();\n const b = (v as any).value;\n return typeof a === typeof b && a <= b;\n }\n ],\n 'filter->=': [\n BooleanType,\n [StringType, ValueType],\n (ctx, [k, v]) => {\n const a = ctx.properties()[(k as any).value];\n const b = (v as any).value;\n return typeof a === typeof b && a >= b;\n }\n ],\n 'filter-id->=': [\n BooleanType,\n [ValueType],\n (ctx, [v]) => {\n const a = ctx.id();\n const b = (v as any).value;\n return typeof a === typeof b && a >= b;\n }\n ],\n 'filter-has': [\n BooleanType,\n [ValueType],\n (ctx, [k]) => (k as any).value in ctx.properties()\n ],\n 'filter-has-id': [\n BooleanType,\n [],\n (ctx) => (ctx.id() !== null && ctx.id() !== undefined)\n ],\n 'filter-type-in': [\n BooleanType,\n [array(StringType)],\n (ctx, [v]) => (v as any).value.indexOf(ctx.geometryType()) >= 0\n ],\n 'filter-id-in': [\n BooleanType,\n [array(ValueType)],\n (ctx, [v]) => (v as any).value.indexOf(ctx.id()) >= 0\n ],\n 'filter-in-small': [\n BooleanType,\n [StringType, array(ValueType)],\n // assumes v is an array literal\n (ctx, [k, v]) => (v as any).value.indexOf(ctx.properties()[(k as any).value]) >= 0\n ],\n 'filter-in-large': [\n BooleanType,\n [StringType, array(ValueType)],\n // assumes v is a array literal with values sorted in ascending order and of a single type\n (ctx, [k, v]) => binarySearch(ctx.properties()[(k as any).value], (v as any).value, 0, (v as any).value.length - 1)\n ],\n 'all': {\n type: BooleanType,\n overloads: [\n [\n [BooleanType, BooleanType],\n (ctx, [a, b]) => a.evaluate(ctx) && b.evaluate(ctx)\n ],\n [\n varargs(BooleanType),\n (ctx, args) => {\n for (const arg of args) {\n if (!arg.evaluate(ctx))\n return false;\n }\n return true;\n }\n ]\n ]\n },\n 'any': {\n type: BooleanType,\n overloads: [\n [\n [BooleanType, BooleanType],\n (ctx, [a, b]) => a.evaluate(ctx) || b.evaluate(ctx)\n ],\n [\n varargs(BooleanType),\n (ctx, args) => {\n for (const arg of args) {\n if (arg.evaluate(ctx))\n return true;\n }\n return false;\n }\n ]\n ]\n },\n '!': [\n BooleanType,\n [BooleanType],\n (ctx, [b]) => !b.evaluate(ctx)\n ],\n 'is-supported-script': [\n BooleanType,\n [StringType],\n // At parse time this will always return true, so we need to exclude this expression with isGlobalPropertyConstant\n (ctx, [s]) => {\n const isSupportedScript = ctx.globals && ctx.globals.isSupportedScript;\n if (isSupportedScript) {\n return isSupportedScript(s.evaluate(ctx));\n }\n return true;\n }\n ],\n 'upcase': [\n StringType,\n [StringType],\n (ctx, [s]) => s.evaluate(ctx).toUpperCase()\n ],\n 'downcase': [\n StringType,\n [StringType],\n (ctx, [s]) => s.evaluate(ctx).toLowerCase()\n ],\n 'concat': [\n StringType,\n varargs(ValueType),\n (ctx, args) => args.map(arg => valueToString(arg.evaluate(ctx))).join('')\n ],\n 'resolved-locale': [\n StringType,\n [CollatorType],\n (ctx, [collator]) => collator.evaluate(ctx).resolvedLocale()\n ]\n});\n\nfunction stringifySignature(signature: Signature): string {\n if (Array.isArray(signature)) {\n return `(${signature.map(typeToString).join(', ')})`;\n } else {\n return `(${typeToString(signature.type)}...)`;\n }\n}\n\nfunction isExpressionConstant(expression: Expression) {\n if (expression instanceof Var) {\n return isExpressionConstant(expression.boundExpression);\n } else if (expression instanceof CompoundExpression && expression.name === 'error') {\n return false;\n } else if (expression instanceof CollatorExpression) {\n // Although the results of a Collator expression with fixed arguments\n // generally shouldn't change between executions, we can't serialize them\n // as constant expressions because results change based on environment.\n return false;\n } else if (expression instanceof Within) {\n return false;\n } else if (expression instanceof Distance) {\n return false;\n } else if (expression instanceof GlobalState) {\n return false;\n }\n\n const isTypeAnnotation = expression instanceof Coercion ||\n expression instanceof Assertion;\n\n let childrenConstant = true;\n expression.eachChild(child => {\n // We can _almost_ assume that if `expressions` children are constant,\n // they would already have been evaluated to Literal values when they\n // were parsed. Type annotations are the exception, because they might\n // have been inferred and added after a child was parsed.\n\n // So we recurse into isConstant() for the children of type annotations,\n // but otherwise simply check whether they are Literals.\n if (isTypeAnnotation) {\n childrenConstant = childrenConstant && isExpressionConstant(child);\n } else {\n childrenConstant = childrenConstant && child instanceof Literal;\n }\n });\n if (!childrenConstant) {\n return false;\n }\n\n return isFeatureConstant(expression) &&\n isGlobalPropertyConstant(expression,\n ['zoom', 'heatmap-density', 'elevation', 'line-progress', 'accumulated', 'is-supported-script']);\n}\n\nfunction isFeatureConstant(e: Expression) {\n if (e instanceof CompoundExpression) {\n if (e.name === 'get' && e.args.length === 1) {\n return false;\n } else if (e.name === 'feature-state') {\n return false;\n } else if (e.name === 'has' && e.args.length === 1) {\n return false;\n } else if (\n e.name === 'properties' ||\n e.name === 'geometry-type' ||\n e.name === 'id'\n ) {\n return false;\n } else if (/^filter-/.test(e.name)) {\n return false;\n }\n }\n\n if (e instanceof Within) {\n return false;\n }\n if (e instanceof Distance) {\n return false;\n }\n\n let result = true;\n e.eachChild(arg => {\n if (result && !isFeatureConstant(arg)) { result = false; }\n });\n return result;\n}\n\nfunction isStateConstant(e: Expression) {\n if (e instanceof CompoundExpression) {\n if (e.name === 'feature-state') {\n return false;\n }\n }\n let result = true;\n e.eachChild(arg => {\n if (result && !isStateConstant(arg)) { result = false; }\n });\n return result;\n}\n\nfunction isGlobalPropertyConstant(e: Expression, properties: Array<string>) {\n if (e instanceof CompoundExpression && properties.indexOf(e.name) >= 0) { return false; }\n let result = true;\n e.eachChild((arg) => {\n if (result && !isGlobalPropertyConstant(arg, properties)) { result = false; }\n });\n return result;\n}\n\nexport {isFeatureConstant, isGlobalPropertyConstant, isStateConstant, isExpressionConstant};\n","/**\n * A type used for returning and propagating errors. The first element of the union\n * represents success and contains a value, and the second represents an error and\n * contains an error value.\n * @private\n */\nexport type Result<T, E> = {\n result: 'success';\n value: T;\n} | {\n result: 'error';\n value: E;\n};\n\nexport function success<T, E>(value: T): Result<T, E> {\n return {result: 'success', value};\n}\n\nexport function error<T, E>(value: E): Result<T, E> {\n return {result: 'error', value};\n}\n","import type {StylePropertySpecification} from '..';\n\nexport function supportsPropertyExpression(spec: StylePropertySpecification): boolean {\n return spec['property-type'] === 'data-driven' || spec['property-type'] === 'cross-faded-data-driven';\n}\n\nexport function supportsZoomExpression(spec: StylePropertySpecification): boolean {\n return !!spec.expression && spec.expression.parameters.indexOf('zoom') > -1;\n}\n\nexport function supportsInterpolation(spec: StylePropertySpecification): boolean {\n return !!spec.expression && spec.expression.interpolated;\n}\n","export function getType(val: unknown): string {\n if (val instanceof Number) {\n return 'number';\n } else if (val instanceof String) {\n return 'string';\n } else if (val instanceof Boolean) {\n return 'boolean';\n } else if (Array.isArray(val)) {\n return 'array';\n } else if (val === null) {\n return 'null';\n } else {\n return typeof val;\n }\n}\n","import {Color, isSupportedInterpolationColorSpace} from '../expression/types/color';\nimport {extendBy} from '../util/extend';\nimport {getType} from '../util/get_type';\nimport {Interpolate, interpolateFactory} from '../expression/definitions/interpolate';\nimport {Formatted} from '../expression/types/formatted';\nimport {ResolvedImage} from '../expression/types/resolved_image';\nimport {supportsInterpolation} from '../util/properties';\nimport {findStopLessThanOrEqualTo} from '../expression/stops';\nimport {Padding} from '../expression/types/padding';\nimport {ColorArray} from '../expression/types/color_array';\nimport {NumberArray} from '../expression/types/number_array';\nimport {typeOf} from '../expression/values';\nimport {ObjectType} from '../expression/types';\nimport {StylePropertySpecification} from '..';\n\nexport function isFunction(value) {\n return typeof value === 'object' && value !== null && !Array.isArray(value) && typeOf(value) === ObjectType;\n}\n\nfunction identityFunction(x) {\n return x;\n}\n\nfunction getParseFunction(propertySpec: StylePropertySpecification) {\n switch (propertySpec.type) {\n case 'color':\n return Color.parse;\n case 'padding':\n return Padding.parse;\n case 'numberArray':\n return NumberArray.parse;\n case 'colorArray':\n return ColorArray.parse;\n default:\n return null;\n }\n}\n\nfunction getInnerFunction(type: string) {\n switch (type) {\n case 'exponential':\n return evaluateExponentialFunction;\n case 'interval':\n return evaluateIntervalFunction;\n case 'categorical':\n return evaluateCategoricalFunction;\n case 'identity':\n return evaluateIdentityFunction;\n default:\n throw new Error(`Unknown function type \"${type}\"`);\n }\n}\n\nexport function createFunction(parameters, propertySpec) {\n const zoomAndFeatureDependent = parameters.stops && typeof parameters.stops[0][0] === 'object';\n const featureDependent = zoomAndFeatureDependent || parameters.property !== undefined;\n const zoomDependent = zoomAndFeatureDependent || !featureDependent;\n const type = parameters.type || (supportsInterpolation(propertySpec) ? 'exponential' : 'interval');\n\n const parseFn = getParseFunction(propertySpec);\n if (parseFn) {\n parameters = extendBy({}, parameters);\n\n if (parameters.stops) {\n parameters.stops = parameters.stops.map((stop) => {\n return [stop[0], parseFn(stop[1])];\n });\n }\n\n if (parameters.default) {\n parameters.default = parseFn(parameters.default);\n } else {\n parameters.default = parseFn(propertySpec.default);\n }\n }\n\n if (parameters.colorSpace && !isSupportedInterpolationColorSpace(parameters.colorSpace)) {\n throw new Error(`Unknown color space: \"${parameters.colorSpace}\"`);\n }\n\n const innerFun = getInnerFunction(type);\n let hashedStops;\n let categoricalKeyType;\n if (type === 'categorical') {\n // For categorical functions, generate an Object as a hashmap of the stops for fast searching\n hashedStops = Object.create(null);\n for (const stop of parameters.stops) {\n hashedStops[stop[0]] = stop[1];\n }\n\n // Infer key type based on first stop key-- used to encforce strict type checking later\n categoricalKeyType = typeof parameters.stops[0][0];\n }\n\n if (zoomAndFeatureDependent) {\n const featureFunctions = {};\n const zoomStops = [];\n for (let s = 0; s < parameters.stops.length; s++) {\n const stop = parameters.stops[s];\n const zoom = stop[0].zoom;\n if (featureFunctions[zoom] === undefined) {\n featureFunctions[zoom] = {\n zoom,\n type: parameters.type,\n property: parameters.property,\n default: parameters.default,\n stops: []\n };\n zoomStops.push(zoom);\n }\n featureFunctions[zoom].stops.push([stop[0].value, stop[1]]);\n }\n\n const featureFunctionStops = [];\n for (const z of zoomStops) {\n featureFunctionStops.push([featureFunctions[z].zoom, createFunction(featureFunctions[z], propertySpec)]);\n }\n\n const interpolationType = {name: 'linear'};\n return {\n kind: 'composite',\n interpolationType,\n interpolationFactor: Interpolate.interpolationFactor.bind(undefined, interpolationType),\n zoomStops: featureFunctionStops.map(s => s[0]),\n evaluate({zoom}, properties) {\n return evaluateExponentialFunction({\n stops: featureFunctionStops,\n base: parameters.base\n }, propertySpec, zoom).evaluate(zoom, properties);\n }\n };\n } else if (zoomDependent) {\n const interpolationType = type === 'exponential' ?\n {name: 'exponential', base: parameters.base !== undefined ? parameters.base : 1} : null;\n return {\n kind: 'camera',\n interpolationType,\n interpolationFactor: Interpolate.interpolationFactor.bind(undefined, interpolationType),\n zoomStops: parameters.stops.map(s => s[0]),\n evaluate: ({zoom}) => innerFun(parameters, propertySpec, zoom, hashedStops, categoricalKeyType)\n };\n } else {\n return {\n kind: 'source',\n evaluate(_, feature) {\n const value = feature && feature.properties ? feature.properties[parameters.property] : undefined;\n if (value === undefined) {\n return coalesce(parameters.default, propertySpec.default);\n }\n return innerFun(parameters, propertySpec, value, hashedStops, categoricalKeyType);\n }\n };\n }\n}\n\nfunction coalesce(a, b, c?) {\n if (a !== undefined) return a;\n if (b !== undefined) return b;\n if (c !== undefined) return c;\n}\n\nfunction evaluateCategoricalFunction(parameters, propertySpec, input, hashedStops, keyType) {\n const evaluated = typeof input === keyType ? hashedStops[input] : undefined; // Enforce strict typing on input\n return coalesce(evaluated, parameters.default, propertySpec.default);\n}\n\nfunction evaluateIntervalFunction(parameters, propertySpec, input) {\n // Edge cases\n if (getType(input) !== 'number') return coalesce(parameters.default, propertySpec.default);\n const n = parameters.stops.length;\n if (n === 1) return parameters.stops[0][1];\n if (input <= parameters.stops[0][0]) return parameters.stops[0][1];\n if (input >= parameters.stops[n - 1][0]) return parameters.stops[n - 1][1];\n\n const index = findStopLessThanOrEqualTo(parameters.stops.map((stop) => stop[0]), input);\n\n return parameters.stops[index][1];\n}\n\nfunction evaluateExponentialFunction(parameters, propertySpec, input) {\n const base = parameters.base !== undefined ? parameters.base : 1;\n\n // Edge cases\n if (getType(input) !== 'number') return coalesce(parameters.default, propertySpec.default);\n const n = parameters.stops.length;\n if (n === 1) return parameters.stops[0][1];\n if (input <= parameters.stops[0][0]) return parameters.stops[0][1];\n if (input >= parameters.stops[n - 1][0]) return parameters.stops[n - 1][1];\n\n const index = findStopLessThanOrEqualTo(parameters.stops.map((stop) => stop[0]), input);\n const t = interpolationFactor(\n input, base,\n parameters.stops[index][0],\n parameters.stops[index + 1][0]);\n\n const outputLower = parameters.stops[index][1];\n const outputUpper = parameters.stops[index + 1][1];\n const interp = interpolateFactory[propertySpec.type] || identityFunction;\n\n if (typeof outputLower.evaluate === 'function') {\n return {\n evaluate(...args) {\n const evaluatedLower = outputLower.evaluate.apply(undefined, args);\n const evaluatedUpper = outputUpper.evaluate.apply(undefined, args);\n // Special case for fill-outline-color, which has no spec default.\n if (evaluatedLower === undefined || evaluatedUpper === undefined) {\n return undefined;\n }\n return interp(evaluatedLower, evaluatedUpper, t, parameters.colorSpace);\n }\n };\n }\n\n return interp(outputLower, outputUpper, t, parameters.colorSpace);\n}\n\nfunction evaluateIdentityFunction(parameters, propertySpec, input) {\n switch (propertySpec.type) {\n case 'color':\n input = Color.parse(input);\n break;\n case 'formatted':\n input = Formatted.fromString(input.toString());\n break;\n case 'resolvedImage':\n input = ResolvedImage.fromString(input.toString());\n break;\n case 'padding':\n input = Padding.parse(input);\n break;\n case 'colorArray':\n input = ColorArray.parse(input);\n break;\n case 'numberArray':\n input = NumberArray.parse(input);\n break;\n default:\n if (getType(input) !== propertySpec.type && (propertySpec.type !== 'enum' || !propertySpec.values[input])) {\n input = undefined;\n }\n }\n return coalesce(input, parameters.default, propertySpec.default);\n}\n\n/**\n * Returns a ratio that can be used to interpolate between exponential function\n * stops.\n *\n * How it works:\n * Two consecutive stop values define a (scaled and shifted) exponential\n * function `f(x) = a * base^x + b`, where `base` is the user-specified base,\n * and `a` and `b` are constants affording sufficient degrees of freedom to fit\n * the function to the given stops.\n *\n * Here's a bit of algebra that lets us compute `f(x)` directly from the stop\n * values without explicitly solving for `a` and `b`:\n *\n * First stop value: `f(x0) = y0 = a * base^x0 + b`\n * Second stop value: `f(x1) = y1 = a * base^x1 + b`\n * => `y1 - y0 = a(base^x1 - base^x0)`\n * => `a = (y1 - y0)/(base^x1 - base^x0)`\n *\n * Desired value: `f(x) = y = a * base^x + b`\n * => `f(x) = y0 + a * (base^x - base^x0)`\n *\n * From the above, we can replace the `a` in `a * (base^x - base^x0)` and do a\n * little algebra:\n * ```\n * a * (base^x - base^x0) = (y1 - y0)/(base^x1 - base^x0) * (base^x - base^x0)\n * = (y1 - y0) * (base^x - base^x0) / (base^x1 - base^x0)\n * ```\n *\n * If we let `(base^x - base^x0) / (base^x1 base^x0)`, then we have\n * `f(x) = y0 + (y1 - y0) * ratio`. In other words, `ratio` may be treated as\n * an interpolation factor between the two stops' output values.\n *\n * (Note: a slightly different form for `ratio`,\n * `(base^(x-x0) - 1) / (base^(x1-x0) - 1) `, is equivalent, but requires fewer\n * expensive `Math.pow()` operations.)\n *\n * @private\n */\nfunction interpolationFactor(input, base, lowerValue, upperValue) {\n const difference = upperValue - lowerValue;\n const progress = input - lowerValue;\n\n if (difference === 0) {\n return 0;\n } else if (base === 1) {\n return progress / difference;\n } else {\n return (Math.pow(base, progress) - 1) / (Math.pow(base, difference) - 1);\n }\n}\n","\nimport {extendBy} from '../util/extend';\nimport {ExpressionParsingError} from './parsing_error';\nimport {ParsingContext} from './parsing_context';\nimport {EvaluationContext} from './evaluation_context';\n\nimport {CompoundExpression, isFeatureConstant,\n isGlobalPropertyConstant,\n isStateConstant,\n isExpressionConstant\n} from './compound_expression';\n\nimport {Step} from './definitions/step';\nimport {Interpolate} from './definitions/interpolate';\nimport {Coalesce} from './definitions/coalesce';\nimport {Let} from './definitions/let';\nimport {expressions} from './definitions';\n\nimport {RuntimeError} from './runtime_error';\nimport {success, error} from '../util/result';\nimport {supportsPropertyExpression, supportsZoomExpression, supportsInterpolation} from '../util/properties';\n\nimport {ColorType, StringType, NumberType, BooleanType, ValueType, FormattedType, PaddingType, ResolvedImageType, VariableAnchorOffsetCollectionType, array, type Type, type EvaluationKind, ProjectionDefinitionType, NumberArrayType, ColorArrayType} from './types';\nimport type {Value} from './values';\nimport type {Expression} from './expression';\nimport {type StylePropertySpecification} from '..';\nimport type {Result} from '../util/result';\nimport type {InterpolationType} from './definitions/interpolate';\nimport type {PaddingSpecification, NumberArraySpecification, ColorArraySpecification, PropertyValueSpecification, VariableAnchorOffsetCollectionSpecification} from '../types.g';\nimport type {FormattedSection} from './types/formatted';\nimport type {Point2D} from '../point2d';\n\nimport {ICanonicalTileID} from '../tiles_and_coordinates';\nimport {isFunction, createFunction} from '../function';\nimport {Color} from './types/color';\nimport {Padding} from './types/padding';\nimport {NumberArray} from './types/number_array';\nimport {ColorArray} from './types/color_array';\nimport {VariableAnchorOffsetCollection} from './types/variable_anchor_offset_collection';\nimport {ProjectionDefinition} from './types/projection_definition';\nimport {GlobalState} from './definitions/global_state';\n\nexport type Feature = {\n readonly type: 0 | 1 | 2 | 3 | 'Unknown' | 'Point' | 'MultiPoint' | 'LineString' | 'MultiLineString' | 'Polygon' | 'MultiPolygon';\n readonly id?: any;\n readonly properties: {[_: string]: any};\n readonly patterns?: {\n [_: string]: {\n 'min': string;\n 'mid': string;\n 'max': string;\n };\n };\n readonly dashes?: {\n [_: string]: {\n 'min': string;\n 'mid': string;\n 'max': string;\n };\n };\n readonly geometry?: Array<Array<Point2D>>;\n};\n\nexport type FeatureState = {[_: string]: any};\n\nexport type GlobalProperties = Readonly<{\n zoom: number;\n heatmapDensity?: number;\n elevation?: number;\n lineProgress?: number;\n isSupportedScript?: (_: string) => boolean;\n accumulated?: Value;\n globalState?: Record<string, any>;\n}>;\n\nexport class StyleExpression {\n expression: Expression;\n\n _evaluator: EvaluationContext;\n _defaultValue: Value;\n _warningHistory: {[key: string]: boolean};\n _enumValues: {[_: string]: any};\n readonly _globalState: Record<string, any>;\n\n constructor(expression: Expression, propertySpec?: StylePropertySpecification | null, globalState?: Record<string, any>) {\n this.expression = expression;\n this._warningHistory = {};\n this._evaluator = new EvaluationContext();\n this._defaultValue = propertySpec ? getDefaultValue(propertySpec) : null;\n this._enumValues = propertySpec && propertySpec.type === 'enum' ? propertySpec.values : null;\n this._globalState = globalState;\n }\n\n evaluateWithoutErrorHandling(\n globals: GlobalProperties,\n feature?: Feature,\n featureState?: FeatureState,\n canonical?: ICanonicalTileID,\n availableImages?: Array<string>,\n formattedSection?: FormattedSection\n ): any {\n if (this._globalState) {\n globals = addGlobalState(globals, this._globalState);\n }\n this._evaluator.globals = globals;\n this._evaluator.feature = feature;\n this._evaluator.featureState = featureState;\n this._evaluator.canonical = canonical;\n this._evaluator.availableImages = availableImages || null;\n this._evaluator.formattedSection = formattedSection;\n\n return this.expression.evaluate(this._evaluator);\n }\n\n evaluate(\n globals: GlobalProperties,\n feature?: Feature,\n featureState?: FeatureState,\n canonical?: ICanonicalTileID,\n availableImages?: Array<string>,\n formattedSection?: FormattedSection\n ): any {\n if (this._globalState) {\n globals = addGlobalState(globals, this._globalState);\n }\n this._evaluator.globals = globals;\n this._evaluator.feature = feature || null;\n this._evaluator.featureState = featureState || null;\n this._evaluator.canonical = canonical;\n this._evaluator.availableImages = availableImages || null;\n this._evaluator.formattedSection = formattedSection || null;\n\n try {\n const val = this.expression.evaluate(this._evaluator);\n if (val === null || val === undefined || (typeof val === 'number' && val !== val)) {\n return this._defaultValue;\n }\n if (this._enumValues && !(val in this._enumValues)) {\n throw new RuntimeError(`Expected value to be one of ${Object.keys(this._enumValues).map(v => JSON.stringify(v)).join(', ')}, but found ${JSON.stringify(val)} instead.`);\n }\n return val;\n } catch (e) {\n if (!this._warningHistory[e.message]) {\n this._warningHistory[e.message] = true;\n if (typeof console !== 'undefined') {\n console.warn(e.message);\n }\n }\n return this._defaultValue;\n }\n }\n}\n\nexport function isExpression(expression: unknown) {\n return Array.isArray(expression) && expression.length > 0 &&\n typeof expression[0] === 'string' && expression[0] in expressions;\n}\n\n/**\n * Parse and typecheck the given style spec JSON expression. If\n * options.defaultValue is provided, then the resulting StyleExpression's\n * `evaluate()` method will handle errors by logging a warning (once per\n * message) and returning the default value. Otherwise, it will throw\n * evaluation errors.\n *\n * @private\n */\nexport function createExpression(expression: unknown, propertySpec?: StylePropertySpecification | null, globalState?: Record<string, any>): Result<StyleExpression, Array<ExpressionParsingError>> {\n const parser = new ParsingContext(expressions, isExpressionConstant, [], propertySpec ? getExpectedType(propertySpec) : undefined);\n\n // For string-valued properties, coerce to string at the top level rather than asserting.\n const parsed = parser.parse(expression, undefined, undefined, undefined,\n propertySpec && propertySpec.type === 'string' ? {typeAnnotation: 'coerce'} : undefined);\n\n if (!parsed) {\n return error(parser.errors);\n }\n\n return success(new StyleExpression(parsed, propertySpec, globalState));\n}\n\nexport class ZoomConstantExpression<Kind extends EvaluationKind> {\n kind: Kind;\n isStateDependent: boolean;\n globalStateRefs: Set<string>;\n _styleExpression: StyleExpression;\n readonly _globalState: Record<string, any>;\n\n constructor(kind: Kind, expression: StyleExpression, globalState?: Record<string, any>) {\n this.kind = kind;\n this._styleExpression = expression;\n this.isStateDependent = kind !== ('constant' as EvaluationKind) && !isStateConstant(expression.expression);\n this.globalStateRefs = findGlobalStateRefs(expression.expression);\n this._globalState = globalState;\n }\n\n evaluateWithoutErrorHandling(\n globals: GlobalProperties,\n feature?: Feature,\n featureState?: FeatureState,\n canonical?: ICanonicalTileID,\n availableImages?: Array<string>,\n formattedSection?: FormattedSection\n ): any {\n if (this._globalState) {\n globals = addGlobalState(globals, this._globalState);\n }\n return this._styleExpression.evaluateWithoutErrorHandling(globals, feature, featureState, canonical, availableImages, formattedSection);\n }\n\n evaluate(\n globals: GlobalProperties,\n feature?: Feature,\n featureState?: FeatureState,\n canonical?: ICanonicalTileID,\n availableImages?: Array<string>,\n formattedSection?: FormattedSection\n ): any {\n if (this._globalState) {\n globals = addGlobalState(globals, this._globalState);\n }\n return this._styleExpression.evaluate(globals, feature, featureState, canonical, availableImages, formattedSection);\n }\n}\n\nexport class ZoomDependentExpression<Kind extends EvaluationKind> {\n kind: Kind;\n zoomStops: Array<number>;\n isStateDependent: boolean;\n globalStateRefs: Set<string>;\n _styleExpression: StyleExpression;\n interpolationType: InterpolationType;\n readonly _globalState: Record<string, any>;\n\n constructor(kind: Kind, expression: StyleExpression, zoomStops: Array<number>, interpolationType?: InterpolationType, globalState?: Record<string, any>) {\n this.kind = kind;\n this.zoomStops = zoomStops;\n this._styleExpression = expression;\n this.isStateDependent = kind !== ('camera' as EvaluationKind) && !isStateConstant(expression.expression);\n this.globalStateRefs = findGlobalStateRefs(expression.expression);\n this.interpolationType = interpolationType;\n this._globalState = globalState;\n }\n\n evaluateWithoutErrorHandling(\n globals: GlobalProperties,\n feature?: Feature,\n featureState?: FeatureState,\n canonical?: ICanonicalTileID,\n availableImages?: Array<string>,\n formattedSection?: FormattedSection\n ): any {\n if (this._globalState) {\n globals = addGlobalState(globals, this._globalState);\n }\n return this._styleExpression.evaluateWithoutErrorHandling(globals, feature, featureState, canonical, availableImages, formattedSection);\n }\n\n evaluate(\n globals: GlobalProperties,\n feature?: Feature,\n featureState?: FeatureState,\n canonical?: ICanonicalTileID,\n availableImages?: Array<string>,\n formattedSection?: FormattedSection\n ): any {\n if (this._globalState) {\n globals = addGlobalState(globals, this._globalState);\n }\n return this._styleExpression.evaluate(globals, feature, featureState, canonical, availableImages, formattedSection);\n }\n\n interpolationFactor(input: number, lower: number, upper: number): number {\n if (this.interpolationType) {\n return Interpolate.interpolationFactor(this.interpolationType, input, lower, upper);\n } else {\n return 0;\n }\n }\n}\n\nexport function isZoomExpression(expression: any): expression is ZoomConstantExpression<'source'> | ZoomDependentExpression<'source'> {\n return (expression as ZoomConstantExpression<'source'>)._styleExpression !== undefined;\n}\n\nexport type ConstantExpression = {\n kind: 'constant';\n globalStateRefs: Set<string>;\n readonly _globalState: Record<string, any>;\n readonly evaluate: (\n globals: GlobalProperties,\n feature?: Feature,\n featureState?: FeatureState,\n canonical?: ICanonicalTileID,\n availableImages?: Array<string>\n ) => any;\n};\n\nexport type SourceExpression = {\n kind: 'source';\n isStateDependent: boolean;\n globalStateRefs: Set<string>;\n readonly _globalState: Record<string, any>;\n readonly evaluate: (\n globals: GlobalProperties,\n feature?: Feature,\n featureState?: FeatureState,\n canonical?: ICanonicalTileID,\n availableImages?: Array<string>,\n formattedSection?: FormattedSection\n ) => any;\n};\n\nexport type CameraExpression = {\n kind: 'camera';\n globalStateRefs: Set<string>;\n readonly _globalState: Record<string, any>;\n readonly evaluate: (\n globals: GlobalProperties,\n feature?: Feature,\n featureState?: FeatureState,\n canonical?: ICanonicalTileID,\n availableImages?: Array<string>\n ) => any;\n readonly interpolationFactor: (input: number, lower: number, upper: number) => number;\n zoomStops: Array<number>;\n interpolationType: InterpolationType;\n};\n\nexport type CompositeExpression = {\n kind: 'composite';\n isStateDependent: boolean;\n globalStateRefs: Set<string>;\n readonly _globalState: Record<string, any>;\n readonly evaluate: (\n globals: GlobalProperties,\n feature?: Feature,\n featureState?: FeatureState,\n canonical?: ICanonicalTileID,\n availableImages?: Array<string>,\n formattedSection?: FormattedSection\n ) => any;\n readonly interpolationFactor: (input: number, lower: number, upper: number) => number;\n zoomStops: Array<number>;\n interpolationType: InterpolationType;\n};\n\nexport type StylePropertyExpression = ConstantExpression | SourceExpression | CameraExpression | CompositeExpression;\n\nexport function createPropertyExpression(expressionInput: unknown, propertySpec: StylePropertySpecification, globalState?: Record<string, any>): Result<StylePropertyExpression, Array<ExpressionParsingError>> {\n const expression = createExpression(expressionInput, propertySpec, globalState);\n if (expression.result === 'error') {\n return expression;\n }\n\n const parsed = expression.value.expression;\n\n const isFeatureConstantResult = isFeatureConstant(parsed);\n if (!isFeatureConstantResult && !supportsPropertyExpression(propertySpec)) {\n return error([new ExpressionParsingError('', 'data expressions not supported')]);\n }\n\n const isZoomConstant = isGlobalPropertyConstant(parsed, ['zoom']);\n if (!isZoomConstant && !supportsZoomExpression(propertySpec)) {\n return error([new ExpressionParsingError('', 'zoom expressions not supported')]);\n }\n\n const zoomCurve = findZoomCurve(parsed);\n if (!zoomCurve && !isZoomConstant) {\n return error([new ExpressionParsingError('', '\"zoom\" expression may only be used as input to a top-level \"step\" or \"interpolate\" expression.')]);\n } else if (zoomCurve instanceof ExpressionParsingError) {\n return error([zoomCurve]);\n } else if (zoomCurve instanceof Interpolate && !supportsInterpolation(propertySpec)) {\n return error([new ExpressionParsingError('', '\"interpolate\" expressions cannot be used with this property')]);\n }\n\n if (!zoomCurve) {\n return success(isFeatureConstantResult ?\n (new ZoomConstantExpression('constant', expression.value, globalState) as ConstantExpression) :\n (new ZoomConstantExpression('source', expression.value, globalState) as SourceExpression));\n }\n\n const interpolationType = zoomCurve instanceof Interpolate ? zoomCurve.interpolation : undefined;\n\n return success(isFeatureConstantResult ?\n (new ZoomDependentExpression('camera', expression.value, zoomCurve.labels, interpolationType, globalState) as CameraExpression) :\n (new ZoomDependentExpression('composite', expression.value, zoomCurve.labels, interpolationType, globalState) as CompositeExpression));\n}\n\n// serialization wrapper for old-style stop functions normalized to the\n// expression interface\nexport class StylePropertyFunction<T> {\n _parameters: PropertyValueSpecification<T>;\n _specification: StylePropertySpecification;\n\n kind: EvaluationKind;\n evaluate: (globals: GlobalProperties, feature?: Feature) => any;\n interpolationFactor: ((input: number, lower: number, upper: number) => number);\n zoomStops: Array<number>;\n\n constructor(parameters: PropertyValueSpecification<T>, specification: StylePropertySpecification) {\n this._parameters = parameters;\n this._specification = specification;\n extendBy(this, createFunction(this._parameters, this._specification));\n }\n\n static deserialize<T>(serialized: {\n _parameters: PropertyValueSpecification<T>;\n _specification: StylePropertySpecification;\n }) {\n return new StylePropertyFunction(serialized._parameters, serialized._specification) as StylePropertyFunction<T>;\n }\n\n static serialize<T>(input: StylePropertyFunction<T>) {\n return {\n _parameters: input._parameters,\n _specification: input._specification\n };\n }\n}\n\nexport function normalizePropertyExpression<T>(\n value: PropertyValueSpecification<T>,\n specification: StylePropertySpecification,\n globalState?: Record<string, any>\n): StylePropertyExpression {\n if (isFunction(value)) {\n return new StylePropertyFunction(value, specification) as any;\n\n } else if (isExpression(value)) {\n const expression = createPropertyExpression(value, specification, globalState);\n if (expression.result === 'error') {\n // this should have been caught in validation\n throw new Error(expression.value.map(err => `${err.key}: ${err.message}`).join(', '));\n }\n return expression.value;\n\n } else {\n let constant: any = value;\n if (specification.type === 'color' && typeof value === 'string') {\n constant = Color.parse(value);\n } else if (specification.type === 'padding' && (typeof value === 'number' || Array.isArray(value))) {\n constant = Padding.parse(value as PaddingSpecification);\n } else if (specification.type === 'numberArray' && (typeof value === 'number' || Array.isArray(value))) {\n constant = NumberArray.parse(value as NumberArraySpecification);\n } else if (specification.type === 'colorArray' && (typeof value === 'string' || Array.isArray(value))) {\n constant = ColorArray.parse(value as ColorArraySpecification);\n } else if (specification.type === 'variableAnchorOffsetCollection' && Array.isArray(value)) {\n constant = VariableAnchorOffsetCollection.parse(value as VariableAnchorOffsetCollectionSpecification);\n } else if (specification.type === 'projectionDefinition' && typeof value === 'string') {\n constant = ProjectionDefinition.parse(value);\n }\n return {\n globalStateRefs: new Set<string>(),\n _globalState: null,\n kind: 'constant',\n evaluate: () => constant\n };\n }\n}\n\n// Zoom-dependent expressions may only use [\"zoom\"] as the input to a top-level \"step\" or \"interpolate\"\n// expression (collectively referred to as a \"curve\"). The curve may be wrapped in one or more \"let\" or\n// \"coalesce\" expressions.\nfunction findZoomCurve(expression: Expression): Step | Interpolate | ExpressionParsingError | null {\n let result = null;\n if (expression instanceof Let) {\n result = findZoomCurve(expression.result);\n\n } else if (expression instanceof Coalesce) {\n for (const arg of expression.args) {\n result = findZoomCurve(arg);\n if (result) {\n break;\n }\n }\n\n } else if ((expression instanceof Step || expression instanceof Interpolate) &&\n expression.input instanceof CompoundExpression &&\n expression.input.name === 'zoom') {\n\n result = expression;\n }\n\n if (result instanceof ExpressionParsingError) {\n return result;\n }\n\n expression.eachChild((child) => {\n const childResult = findZoomCurve(child);\n if (childResult instanceof ExpressionParsingError) {\n result = childResult;\n } else if (!result && childResult) {\n result = new ExpressionParsingError('', '\"zoom\" expression may only be used as input to a top-level \"step\" or \"interpolate\" expression.');\n } else if (result && childResult && result !== childResult) {\n result = new ExpressionParsingError('', 'Only one zoom-based \"step\" or \"interpolate\" subexpression may be used in an expression.');\n }\n });\n\n return result;\n}\n\nexport function findGlobalStateRefs(expression: Expression, results = new Set<string>()): Set<string> {\n if (expression instanceof GlobalState) {\n results.add(expression.key);\n }\n\n expression.eachChild(childExpression => {\n findGlobalStateRefs(childExpression, results);\n });\n return results;\n}\n\nfunction getExpectedType(spec: StylePropertySpecification): Type {\n const types = {\n color: ColorType,\n string: StringType,\n number: NumberType,\n enum: StringType,\n boolean: BooleanType,\n formatted: FormattedType,\n padding: PaddingType,\n numberArray: NumberArrayType,\n colorArray: ColorArrayType,\n projectionDefinition: ProjectionDefinitionType,\n resolvedImage: ResolvedImageType,\n variableAnchorOffsetCollection: VariableAnchorOffsetCollectionType\n };\n\n if (spec.type === 'array') {\n return array(types[spec.value] || ValueType, spec.length);\n }\n\n return types[spec.type];\n}\n\nfunction getDefaultValue(spec: StylePropertySpecification): Value {\n if (spec.type === 'color' && isFunction(spec.default)) {\n // Special case for heatmap-color: it uses the 'default:' to define a\n // default color ramp, but createExpression expects a simple value to fall\n // back to in case of runtime errors\n return new Color(0, 0, 0, 0);\n }\n switch (spec.type) {\n case 'color':\n return Color.parse(spec.default) || null;\n case 'padding':\n return Padding.parse(spec.default) || null;\n case 'numberArray':\n return NumberArray.parse(spec.default) || null;\n case 'colorArray':\n return ColorArray.parse(spec.default) || null;\n case 'variableAnchorOffsetCollection':\n return VariableAnchorOffsetCollection.parse(spec.default) || null;\n case 'projectionDefinition':\n return ProjectionDefinition.parse(spec.default) || null;\n default:\n return (spec.default === undefined ? null : spec.default);\n }\n}\n\nfunction addGlobalState(globals: GlobalProperties, globalState: Record<string, any>): GlobalProperties {\n const {\n zoom,\n heatmapDensity,\n elevation,\n lineProgress,\n isSupportedScript,\n accumulated\n } = globals ?? {};\n return {\n zoom,\n heatmapDensity,\n elevation,\n lineProgress,\n isSupportedScript,\n accumulated,\n globalState\n };\n}\n","import {createExpression, findGlobalStateRefs} from '../expression';\nimport type {GlobalProperties, Feature} from '../expression';\nimport {ICanonicalTileID} from '../tiles_and_coordinates';\nimport {StylePropertySpecification} from '..';\nimport {ExpressionFilterSpecification, type FilterSpecification} from '../types.g';\n\ntype FilterExpression = (\n globalProperties: GlobalProperties,\n feature: Feature,\n canonical?: ICanonicalTileID\n) => boolean;\n\nexport type FeatureFilter = {\n filter: FilterExpression;\n needGeometry: boolean;\n getGlobalStateRefs: () => Set<string>;\n};\n\nexport function isExpressionFilter(filter: any): filter is ExpressionFilterSpecification {\n if (filter === true || filter === false) {\n return true;\n }\n\n if (!Array.isArray(filter) || filter.length === 0) {\n return false;\n }\n switch (filter[0]) {\n case 'has':\n return filter.length >= 2 && filter[1] !== '$id' && filter[1] !== '$type';\n\n case 'in':\n return filter.length >= 3 && (typeof filter[1] !== 'string' || Array.isArray(filter[2]));\n\n case '!in':\n case '!has':\n case 'none':\n return false;\n\n case '==':\n case '!=':\n case '>':\n case '>=':\n case '<':\n case '<=':\n return filter.length !== 3 || (Array.isArray(filter[1]) || Array.isArray(filter[2]));\n\n case 'any':\n case 'all':\n for (const f of filter.slice(1)) {\n if (!isExpressionFilter(f) && typeof f !== 'boolean') {\n return false;\n }\n }\n return true;\n\n default:\n return true;\n }\n}\n\nconst filterSpec = {\n 'type': 'boolean',\n 'default': false,\n 'transition': false,\n 'property-type': 'data-driven',\n 'expression': {\n 'interpolated': false,\n 'parameters': ['zoom', 'feature']\n }\n};\n\n/**\n * Given a filter expressed as nested arrays, return a new function\n * that evaluates whether a given feature (with a .properties or .tags property)\n * passes its test.\n *\n * @private\n * @param filter MapLibre filter\n * @param [globalState] Global state object to be used for evaluating 'global-state' expressions\n * @returns filter-evaluating function\n */\nexport function featureFilter(filter: FilterSpecification | void, globalState?: Record<string, any>): FeatureFilter {\n if (filter === null || filter === undefined) {\n return {filter: () => true, needGeometry: false, getGlobalStateRefs: () => new Set()};\n }\n\n if (!isExpressionFilter(filter)) {\n filter = convertFilter(filter) as ExpressionFilterSpecification;\n }\n\n const compiled = createExpression(filter, filterSpec as StylePropertySpecification, globalState);\n if (compiled.result === 'error') {\n throw new Error(compiled.value.map(err => `${err.key}: ${err.message}`).join(', '));\n } else {\n const needGeometry = geometryNeeded(filter);\n return {\n filter: (globalProperties: GlobalProperties, feature: Feature, canonical?: ICanonicalTileID) => compiled.value.evaluate(globalProperties, feature, {}, canonical),\n needGeometry,\n getGlobalStateRefs: () => findGlobalStateRefs(compiled.value.expression)\n };\n }\n}\n\n// Comparison function to sort numbers and strings\nfunction compare(a, b) {\n return a < b ? -1 : a > b ? 1 : 0;\n}\n\nfunction geometryNeeded(filter) {\n if (!Array.isArray(filter)) return false;\n if (filter[0] === 'within' || filter[0] === 'distance') return true;\n for (let index = 1; index < filter.length; index++) {\n if (geometryNeeded(filter[index])) return true;\n }\n return false;\n}\n\nfunction convertFilter(filter?: Array<any> | null | void): unknown {\n if (!filter) return true;\n const op = filter[0];\n if (filter.length <= 1) return (op !== 'any');\n const converted =\n op === '==' ? convertComparisonOp(filter[1], filter[2], '==') :\n op === '!=' ? convertNegation(convertComparisonOp(filter[1], filter[2], '==')) :\n op === '<' ||\n op === '>' ||\n op === '<=' ||\n op === '>=' ? convertComparisonOp(filter[1], filter[2], op) :\n op === 'any' ? convertDisjunctionOp(filter.slice(1)) :\n op === 'all' ? ['all' as unknown].concat(filter.slice(1).map(convertFilter)) :\n op === 'none' ? ['all' as unknown].concat(filter.slice(1).map(convertFilter).map(convertNegation)) :\n op === 'in' ? convertInOp(filter[1], filter.slice(2)) :\n op === '!in' ? convertNegation(convertInOp(filter[1], filter.slice(2))) :\n op === 'has' ? convertHasOp(filter[1]) :\n op === '!has' ? convertNegation(convertHasOp(filter[1])) :\n true;\n return converted;\n}\n\nfunction convertComparisonOp(property: string, value: any, op: string) {\n switch (property) {\n case '$type':\n return [`filter-type-${op}`, value];\n case '$id':\n return [`filter-id-${op}`, value];\n default:\n return [`filter-${op}`, property, value];\n }\n}\n\nfunction convertDisjunctionOp(filters: Array<Array<any>>) {\n return ['any' as unknown].concat(filters.map(convertFilter));\n}\n\nfunction convertInOp(property: string, values: Array<any>) {\n if (values.length === 0) { return false; }\n switch (property) {\n case '$type':\n return ['filter-type-in', ['literal', values]];\n case '$id':\n return ['filter-id-in', ['literal', values]];\n default:\n if (values.length > 200 && !values.some(v => typeof v !== typeof values[0])) {\n return ['filter-in-large', property, ['literal', values.sort(compare)]];\n } else {\n return ['filter-in-small', property, ['literal', values]];\n }\n }\n}\n\nfunction convertHasOp(property: string) {\n switch (property) {\n case '$type':\n return true;\n case '$id':\n return ['filter-has-id'];\n default:\n return ['filter-has', property];\n }\n}\n\nfunction convertNegation(filter: unknown) {\n return ['!', filter];\n}\n","import {isExpressionFilter} from './index';\n\nimport type {ExpressionFilterSpecification, ExpressionInputType, ExpressionSpecification, FilterSpecification, LegacyFilterSpecification} from '../types.g';\n\ntype ExpectedTypes = {[_: string]: ExpressionInputType};\n\n/*\n * Convert the given filter to an expression, storing the expected types for\n * any feature properties referenced in expectedTypes.\n *\n * These expected types are needed in order to construct preflight type checks\n * needed for handling 'any' filters. A preflight type check is necessary in\n * order to mimic legacy filters' semantics around expected type mismatches.\n * For example, consider the legacy filter:\n *\n * [\"any\", [\"all\", [\">\", \"y\", 0], [\">\", \"y\", 0]], [\">\", \"x\", 0]]\n *\n * Naively, we might convert this to the expression:\n *\n * [\"any\", [\"all\", [\">\", [\"get\", \"y\"], 0], [\">\", [\"get\", \"z\"], 0]], [\">\", [\"get\", \"x\"], 0]]\n *\n * But if we tried to evaluate this against, say `{x: 1, y: null, z: 0}`, the\n * [\">\", [\"get\", \"y\"], 0] would cause an evaluation error, leading to the\n * entire filter returning false. Legacy filter semantics, though, ask for\n * [\">\", \"y\", 0] to simply return `false` when `y` is of the wrong type,\n * allowing the subsequent terms of the outer \"any\" expression to be evaluated\n * (resulting, in this case, in a `true` value, because x > 0).\n *\n * We account for this by inserting a preflight type-checking expression before\n * each \"any\" term, allowing us to avoid evaluating the actual converted filter\n * if any type mismatches would cause it to produce an evaluation error:\n *\n * [\"any\",\n * [\"case\",\n * [\"all\", [\"==\", [\"typeof\", [\"get\", \"y\"]], \"number\"], [\"==\", [\"typeof\", [\"get\", \"z\"], \"number]],\n * [\"all\", [\">\", [\"get\", \"y\"], 0], [\">\", [\"get\", \"z\"], 0]],\n * false\n * ],\n * [\"case\",\n * [\"==\", [\"typeof\", [\"get\", \"x\"], \"number\"]],\n * [\">\", [\"get\", \"x\"], 0],\n * false\n * ]\n * ]\n *\n * An alternative, possibly more direct approach would be to use type checks\n * in the conversion of each comparison operator, so that the converted version\n * of each individual ==, >=, etc. would mimic the legacy filter semantics. The\n * downside of this approach is that it can lead to many more type checks than\n * would otherwise be necessary: outside the context of an \"any\" expression,\n * bailing out due to a runtime type error (expression semantics) and returning\n * false (legacy filter semantics) are equivalent: they cause the filter to\n * produce a `false` result.\n */\nexport function convertFilter(filter: FilterSpecification, expectedTypes: ExpectedTypes = {}): ExpressionFilterSpecification {\n if (isExpressionFilter(filter)) return filter;\n if (!filter) return true;\n\n const legacyFilter = filter as LegacyFilterSpecification;\n const legacyOp = legacyFilter[0];\n if (filter.length <= 1) return (legacyOp !== 'any');\n\n switch (legacyOp) {\n case '==':\n case '!=':\n case '<':\n case '>':\n case '<=':\n case '>=': {\n const [, property, value] = filter;\n return convertComparisonOp(property as string, value, legacyOp, expectedTypes);\n }\n case 'any': {\n const [, ...conditions] = legacyFilter;\n const children = conditions.map((f: LegacyFilterSpecification) => {\n const types = {};\n const child = convertFilter(f, types);\n const typechecks = runtimeTypeChecks(types);\n return typechecks === true ? child : ['case', typechecks, child, false] as ExpressionSpecification;\n });\n return ['any', ...children];\n }\n case 'all': {\n const [, ...conditions] = legacyFilter;\n const children = conditions.map(f => convertFilter(f, expectedTypes));\n return children.length > 1 ? ['all', ...children] : children[0];\n }\n case 'none': {\n const [, ...conditions] = legacyFilter;\n return ['!', convertFilter(['any', ...conditions], {})];\n }\n case 'in': {\n const [, property, ...values] = legacyFilter;\n return convertInOp(property, values);\n }\n case '!in': {\n const [, property, ...values] = legacyFilter;\n return convertInOp(property, values, true);\n }\n case 'has':\n return convertHasOp(legacyFilter[1]);\n case '!has':\n return ['!', convertHasOp(legacyFilter[1])];\n default:\n return true;\n }\n}\n\n// Given a set of feature properties and an expected type for each one,\n// construct an boolean expression that tests whether each property has the\n// right type.\n// E.g.: for {name: 'string', population: 'number'}, return\n// [ 'all',\n// ['==', ['typeof', ['get', 'name'], 'string']],\n// ['==', ['typeof', ['get', 'population'], 'number]]\n// ]\nfunction runtimeTypeChecks(expectedTypes: ExpectedTypes): ExpressionFilterSpecification {\n const conditions = [];\n for (const property in expectedTypes) {\n const get = property === '$id' ? ['id'] : ['get', property];\n conditions.push(['==', ['typeof', get], expectedTypes[property]]);\n }\n if (conditions.length === 0) return true;\n if (conditions.length === 1) return conditions[0];\n return ['all', ...conditions];\n}\n\nfunction convertComparisonOp(property: string, value: any, op: string, expectedTypes?: ExpectedTypes | null): ExpressionFilterSpecification {\n let get;\n if (property === '$type') {\n return [op, ['geometry-type'], value] as ExpressionFilterSpecification;\n } else if (property === '$id') {\n get = ['id'];\n } else {\n get = ['get', property];\n }\n\n if (expectedTypes && value !== null) {\n const type = (typeof value as any);\n expectedTypes[property] = type;\n }\n\n if (op === '==' && property !== '$id' && value === null) {\n return [\n 'all',\n ['has', property], // missing property != null for legacy filters\n ['==', get, null]\n ];\n } else if (op === '!=' && property !== '$id' && value === null) {\n return [\n 'any',\n ['!', ['has', property]], // missing property != null for legacy filters\n ['!=', get, null]\n ];\n }\n\n return [op, get, value] as ExpressionFilterSpecification;\n}\n\nfunction convertInOp(property: string, values: Array<any>, negate = false): ExpressionFilterSpecification {\n if (values.length === 0) return negate;\n\n let get: ExpressionSpecification;\n if (property === '$type') {\n get = ['geometry-type'];\n } else if (property === '$id') {\n get = ['id'];\n } else {\n get = ['get', property];\n }\n\n // Determine if the list of values to be searched is homogenously typed.\n // If so (and if the type is string or number), then we can use a\n // [match, input, [...values], true, false] construction rather than a\n // bunch of `==` tests.\n let uniformTypes = true;\n const type = typeof values[0];\n for (const value of values) {\n if (typeof value !== type) {\n uniformTypes = false;\n break;\n }\n }\n\n if (uniformTypes && (type === 'string' || type === 'number')) {\n // Match expressions must have unique values.\n const uniqueValues = values.sort().filter((v, i) => i === 0 || values[i - 1] !== v);\n return ['match', get, uniqueValues, !negate, negate];\n }\n\n if (negate) {\n return ['all', ...values.map(v => ['!=', get, v] as ExpressionSpecification)];\n } else {\n return ['any', ...values.map(v => ['==', get, v] as ExpressionSpecification)];\n }\n}\n\nfunction convertHasOp(property: string): ExpressionFilterSpecification {\n if (property === '$type') {\n return true;\n } else if (property === '$id') {\n return ['!=', ['id'], null];\n } else {\n return ['has', property];\n }\n}\n","\nimport type {StylePropertySpecification} from '..';\n\nfunction convertLiteral(value) {\n return typeof value === 'object' ? ['literal', value] : value;\n}\n\nexport function convertFunction(parameters: any, propertySpec: StylePropertySpecification) {\n let stops = parameters.stops;\n if (!stops) {\n // identity function\n return convertIdentityFunction(parameters, propertySpec);\n }\n\n const zoomAndFeatureDependent = stops && typeof stops[0][0] === 'object';\n const featureDependent = zoomAndFeatureDependent || parameters.property !== undefined;\n const zoomDependent = zoomAndFeatureDependent || !featureDependent;\n\n stops = stops.map((stop) => {\n if (!featureDependent && (propertySpec as any).tokens && typeof stop[1] === 'string') {\n return [stop[0], convertTokenString(stop[1])];\n }\n return [stop[0], convertLiteral(stop[1])];\n });\n\n if (zoomAndFeatureDependent) {\n return convertZoomAndPropertyFunction(parameters, propertySpec, stops);\n } else if (zoomDependent) {\n return convertZoomFunction(parameters, propertySpec, stops);\n } else {\n return convertPropertyFunction(parameters, propertySpec, stops);\n }\n}\n\nfunction convertIdentityFunction(parameters, propertySpec): Array<unknown> {\n const get = ['get', parameters.property];\n\n if (parameters.default === undefined) {\n // By default, expressions for string-valued properties get coerced. To preserve\n // legacy function semantics, insert an explicit assertion instead.\n return propertySpec.type === 'string' ? ['string', get] : get;\n } else if (propertySpec.type === 'enum') {\n return [\n 'match',\n get,\n Object.keys(propertySpec.values),\n get,\n parameters.default\n ];\n } else {\n const expression = [propertySpec.type === 'color' ? 'to-color' : propertySpec.type, get, convertLiteral(parameters.default)];\n if (propertySpec.type === 'array') {\n expression.splice(1, 0, propertySpec.value, propertySpec.length || null);\n }\n return expression;\n }\n}\n\nfunction getInterpolateOperator(parameters) {\n switch (parameters.colorSpace) {\n case 'hcl': return 'interpolate-hcl';\n case 'lab': return 'interpolate-lab';\n default: return 'interpolate';\n }\n}\n\nfunction convertZoomAndPropertyFunction(parameters, propertySpec, stops) {\n const featureFunctionParameters = {};\n const featureFunctionStops = {};\n const zoomStops = [];\n for (let s = 0; s < stops.length; s++) {\n const stop = stops[s];\n const zoom = stop[0].zoom;\n if (featureFunctionParameters[zoom] === undefined) {\n featureFunctionParameters[zoom] = {\n zoom,\n type: parameters.type,\n property: parameters.property,\n default: parameters.default,\n };\n featureFunctionStops[zoom] = [];\n zoomStops.push(zoom);\n }\n featureFunctionStops[zoom].push([stop[0].value, stop[1]]);\n }\n\n // the interpolation type for the zoom dimension of a zoom-and-property\n // function is determined directly from the style property specification\n // for which it's being used: linear for interpolatable properties, step\n // otherwise.\n const functionType = getFunctionType({}, propertySpec);\n if (functionType === 'exponential') {\n const expression = [getInterpolateOperator(parameters), ['linear'], ['zoom']];\n\n for (const z of zoomStops) {\n const output = convertPropertyFunction(featureFunctionParameters[z], propertySpec, featureFunctionStops[z]);\n appendStopPair(expression, z, output, false);\n }\n\n return expression;\n } else {\n const expression = ['step', ['zoom']];\n\n for (const z of zoomStops) {\n const output = convertPropertyFunction(featureFunctionParameters[z], propertySpec, featureFunctionStops[z]);\n appendStopPair(expression, z, output, true);\n }\n\n fixupDegenerateStepCurve(expression);\n\n return expression;\n }\n}\n\nfunction coalesce(a, b) {\n if (a !== undefined) return a;\n if (b !== undefined) return b;\n}\n\nfunction getFallback(parameters, propertySpec) {\n const defaultValue = convertLiteral(coalesce(parameters.default, propertySpec.default));\n\n /*\n * Some fields with type: resolvedImage have an undefined default.\n * Because undefined is an invalid value for resolvedImage, set fallback to\n * an empty string instead of undefined to ensure output\n * passes validation.\n */\n if (defaultValue === undefined && propertySpec.type === 'resolvedImage') {\n return '';\n }\n return defaultValue;\n}\n\nfunction convertPropertyFunction(parameters, propertySpec, stops) {\n const type = getFunctionType(parameters, propertySpec);\n const get = ['get', parameters.property];\n if (type === 'categorical' && typeof stops[0][0] === 'boolean') {\n const expression: any = ['case'];\n for (const stop of stops) {\n expression.push(['==', get, stop[0]], stop[1]);\n }\n\n expression.push(getFallback(parameters, propertySpec));\n return expression;\n } else if (type === 'categorical') {\n const expression = ['match', get];\n for (const stop of stops) {\n appendStopPair(expression, stop[0], stop[1], false);\n }\n expression.push(getFallback(parameters, propertySpec));\n return expression;\n } else if (type === 'interval') {\n const expression = ['step', ['number', get]];\n for (const stop of stops) {\n appendStopPair(expression, stop[0], stop[1], true);\n }\n fixupDegenerateStepCurve(expression);\n return parameters.default === undefined ? expression : [\n 'case',\n ['==', ['typeof', get], 'number'],\n expression,\n convertLiteral(parameters.default)\n ];\n } else if (type === 'exponential') {\n const base = parameters.base !== undefined ? parameters.base : 1;\n const expression = [\n getInterpolateOperator(parameters),\n base === 1 ? ['linear'] : ['exponential', base],\n ['number', get]\n ];\n\n for (const stop of stops) {\n appendStopPair(expression, stop[0], stop[1], false);\n }\n return parameters.default === undefined ? expression : [\n 'case',\n ['==', ['typeof', get], 'number'],\n expression,\n convertLiteral(parameters.default)\n ];\n } else {\n throw new Error(`Unknown property function type ${type}`);\n }\n}\n\nfunction convertZoomFunction(parameters, propertySpec, stops, input = ['zoom']) {\n const type = getFunctionType(parameters, propertySpec);\n let expression;\n let isStep = false;\n if (type === 'interval') {\n expression = ['step', input];\n isStep = true;\n } else if (type === 'exponential') {\n const base = parameters.base !== undefined ? parameters.base : 1;\n expression = [getInterpolateOperator(parameters), base === 1 ? ['linear'] : ['exponential', base], input];\n\n } else {\n throw new Error(`Unknown zoom function type \"${type}\"`);\n }\n\n for (const stop of stops) {\n appendStopPair(expression, stop[0], stop[1], isStep);\n }\n\n fixupDegenerateStepCurve(expression);\n\n return expression;\n}\n\nfunction fixupDegenerateStepCurve(expression) {\n // degenerate step curve (i.e. a constant function): add a noop stop\n if (expression[0] === 'step' && expression.length === 3) {\n expression.push(0);\n expression.push(expression[3]);\n }\n}\n\nfunction appendStopPair(curve, input, output, isStep) {\n // Skip duplicate stop values. They were not validated for functions, but they are for expressions.\n // https://github.com/mapbox/mapbox-gl-js/issues/4107\n if (curve.length > 3 && input === curve[curve.length - 2]) {\n return;\n }\n // step curves don't get the first input value, as it is redundant.\n if (!(isStep && curve.length === 2)) {\n curve.push(input);\n }\n curve.push(output);\n}\n\nfunction getFunctionType(parameters, propertySpec) {\n if (parameters.type) {\n return parameters.type;\n } else {\n return (propertySpec.expression as any).interpolated ? 'exponential' : 'interval';\n }\n}\n\n// \"String with {name} token\" => [\"concat\", \"String with \", [\"get\", \"name\"], \" token\"]\nexport function convertTokenString(s: string) {\n const result: any = ['concat'];\n const re = /{([^{}]+)}/g;\n let pos = 0;\n for (let match = re.exec(s); match !== null; match = re.exec(s)) {\n const literal = s.slice(pos, re.lastIndex - match[0].length);\n pos = re.lastIndex;\n if (literal.length > 0) result.push(literal);\n result.push(['get', match[1]]);\n }\n\n if (result.length === 1) {\n return s;\n }\n\n if (pos < s.length) {\n result.push(s.slice(pos));\n } else if (result.length === 2) {\n return ['to-string', result[1]];\n }\n\n return result;\n}\n\n","import Reference from './reference/v8.json' with {type: 'json'};\nimport type {StylePropertySpecification} from '.';\nimport type {\n StyleSpecification,\n SourceSpecification,\n LayerSpecification,\n PropertyValueSpecification,\n DataDrivenPropertyValueSpecification\n} from './types.g';\n\nfunction getPropertyReference(propertyName: string): StylePropertySpecification | null {\n for (let i = 0; i < Reference.layout.length; i++) {\n for (const key in Reference[Reference.layout[i]]) {\n if (key === propertyName) return Reference[Reference.layout[i]][key];\n }\n }\n for (let i = 0; i < Reference.paint.length; i++) {\n for (const key in Reference[Reference.paint[i]]) {\n if (key === propertyName) return Reference[Reference.paint[i]][key];\n }\n }\n\n return null;\n}\n\nexport function eachSource(style: StyleSpecification, callback: (_: SourceSpecification) => void) {\n for (const k in style.sources) {\n callback(style.sources[k]);\n }\n}\n\nexport function eachLayer(style: StyleSpecification, callback: (_: LayerSpecification) => void) {\n for (const layer of style.layers) {\n callback(layer);\n }\n}\n\ntype PropertyCallback = (\n a: {\n path: [string, 'paint' | 'layout', string]; // [layerid, paint/layout, property key],\n key: string;\n value: PropertyValueSpecification<unknown> | DataDrivenPropertyValueSpecification<unknown>;\n reference: StylePropertySpecification | null;\n set: (\n a: PropertyValueSpecification<unknown> | DataDrivenPropertyValueSpecification<unknown>\n ) => void;\n }\n) => void;\n\nexport function eachProperty(\n style: StyleSpecification,\n options: {\n paint?: boolean;\n layout?: boolean;\n },\n callback: PropertyCallback\n) {\n function inner(layer: LayerSpecification, propertyType: 'paint' | 'layout') {\n const properties = layer[propertyType];\n if (!properties) return;\n Object.keys(properties).forEach((key) => {\n callback({\n path: [layer.id, propertyType, key],\n key,\n value: properties[key],\n reference: getPropertyReference(key),\n set(x) {\n properties[key] = x;\n }\n });\n });\n }\n\n eachLayer(style, (layer) => {\n if (options.paint) {\n inner(layer, 'paint');\n }\n if (options.layout) {\n inner(layer, 'layout');\n }\n });\n}\n","\nimport {refProperties} from './util/ref_properties';\nimport type {LayerSpecification} from './types.g';\n\nfunction stringify(obj: any): string {\n const type = typeof obj;\n if (type === 'number' || type === 'boolean' || type === 'string' || obj === undefined || obj === null)\n return JSON.stringify(obj);\n\n if (Array.isArray(obj)) {\n let str = '[';\n for (const val of obj) {\n str += `${stringify(val)},`;\n }\n return `${str}]`;\n }\n\n const keys = Object.keys(obj).sort();\n\n let str = '{';\n for (let i = 0; i < keys.length; i++) {\n str += `${JSON.stringify(keys[i])}:${stringify(obj[keys[i]])},`;\n }\n return `${str}}`;\n}\n\nfunction getKey(layer: LayerSpecification): string {\n let key = '';\n for (const k of refProperties) {\n key += `/${stringify(layer[k])}`;\n }\n return key;\n}\n\n/**\n * Groups layers by their layout-affecting properties.\n * These are the properties that were formerly used by explicit `ref` mechanism\n * for layers: 'type', 'source', 'source-layer', 'minzoom', 'maxzoom',\n * 'filter', and 'layout'.\n *\n * The input is not modified. The output layers are references to the\n * input layers.\n *\n * @param layers - an array of {@link LayerSpecification}.\n * @param cachedKeys - an object to keep already calculated keys.\n * @returns an array of arrays of {@link LayerSpecification} objects, where each inner array \n * contains layers that share the same layout-affecting properties.\n */\nexport function groupByLayout(layers: LayerSpecification[], cachedKeys?: Record<string, string>): LayerSpecification[][] {\n const groups: Record<string, LayerSpecification[]> = {};\n\n for (let i = 0; i < layers.length; i++) {\n\n const k: string = (cachedKeys && cachedKeys[layers[i].id]) || getKey(layers[i]);\n // update the cache if there is one\n if (cachedKeys)\n cachedKeys[layers[i].id] = k;\n\n let group = groups[k];\n if (!group) {\n group = groups[k] = [];\n }\n group.push(layers[i]);\n }\n\n const result: LayerSpecification[][] = [];\n\n for (const k in groups) {\n result.push(groups[k]);\n }\n\n return result;\n}\n","import {latest} from './reference/latest';\nimport {StyleSpecification} from './types.g';\n\nexport function emptyStyle(): StyleSpecification {\n const style = {};\n\n const version = latest['$version'];\n for (const styleKey in latest['$root']) {\n const specification = latest['$root'][styleKey];\n\n if (specification.required) {\n let value = null;\n if (styleKey === 'version') {\n value = version;\n } else {\n if (specification.type === 'array') {\n value = [];\n } else {\n value = {};\n }\n }\n\n if (value != null) {\n style[styleKey] = value;\n }\n }\n }\n\n return style as StyleSpecification;\n}\n","\nimport {ValidationError} from '../error/validation_error';\n\nexport function validateConstants(options) {\n const key = options.key;\n const constants = options.value;\n\n if (constants) {\n return [new ValidationError(key, constants, 'constants have been deprecated as of v8')];\n } else {\n return [];\n }\n}\n","// Turn jsonlint-lines-primitives objects into primitive objects\nexport function unbundle(value: unknown) {\n if (value instanceof Number || value instanceof String || value instanceof Boolean) {\n return value.valueOf();\n } else {\n return value;\n }\n}\n\nexport function deepUnbundle(value: unknown): unknown {\n if (Array.isArray(value)) {\n return value.map(deepUnbundle);\n } else if (value instanceof Object && !(value instanceof Number || value instanceof String || value instanceof Boolean)) {\n const unbundledValue: {[key: string]: unknown} = {};\n for (const key in value) {\n unbundledValue[key] = deepUnbundle(value[key]);\n }\n return unbundledValue;\n }\n\n return unbundle(value);\n}\n","\nimport {ValidationError} from '../error/validation_error';\nimport {getOwn} from '../util/get_own';\nimport {getType} from '../util/get_type';\n\nexport function validateObject(options): Array<ValidationError> {\n const key = options.key;\n const object = options.value;\n const elementSpecs = options.valueSpec || {};\n const elementValidators = options.objectElementValidators || {};\n const style = options.style;\n const styleSpec = options.styleSpec;\n const validateSpec = options.validateSpec;\n let errors: ValidationError[] = [];\n\n const type = getType(object);\n if (type !== 'object') {\n return [new ValidationError(key, object, `object expected, ${type} found`)];\n }\n\n for (const objectKey in object) {\n const elementSpecKey = objectKey.split('.')[0]; // treat 'paint.*' as 'paint'\n // objectKey comes from the user controlled style input, so elementSpecKey may be e.g. \"__proto__\"\n const elementSpec = getOwn(elementSpecs, elementSpecKey) || elementSpecs['*'];\n\n let validateElement;\n if (getOwn(elementValidators, elementSpecKey)) {\n validateElement = elementValidators[elementSpecKey];\n } else if (getOwn(elementSpecs, elementSpecKey)) {\n validateElement = validateSpec;\n } else if (elementValidators['*']) {\n validateElement = elementValidators['*'];\n } else if (elementSpecs['*']) {\n validateElement = validateSpec;\n } else {\n errors.push(new ValidationError(key, object[objectKey], `unknown property \"${objectKey}\"`));\n continue;\n }\n\n errors = errors.concat(validateElement({\n key: (key ? `${key}.` : key) + objectKey,\n value: object[objectKey],\n valueSpec: elementSpec,\n style,\n styleSpec,\n object,\n objectKey,\n validateSpec,\n }, object));\n }\n\n for (const elementSpecKey in elementSpecs) {\n // Don't check `required` when there's a custom validator for that property.\n if (elementValidators[elementSpecKey]) {\n continue;\n }\n\n if (elementSpecs[elementSpecKey].required && elementSpecs[elementSpecKey]['default'] === undefined && object[elementSpecKey] === undefined) {\n errors.push(new ValidationError(key, object, `missing required property \"${elementSpecKey}\"`));\n }\n }\n\n return errors;\n}\n","import {getType} from '../util/get_type';\nimport {ValidationError} from '../error/validation_error';\n\nexport function validateArray(options) {\n const array = options.value;\n const arraySpec = options.valueSpec;\n const validateSpec = options.validateSpec;\n const style = options.style;\n const styleSpec = options.styleSpec;\n const key = options.key;\n const validateArrayElement = options.arrayElementValidator || validateSpec;\n\n if (getType(array) !== 'array') {\n return [new ValidationError(key, array, `array expected, ${getType(array)} found`)];\n }\n\n if (arraySpec.length && array.length !== arraySpec.length) {\n return [new ValidationError(key, array, `array length ${arraySpec.length} expected, length ${array.length} found`)];\n }\n\n if (arraySpec['min-length'] && array.length < arraySpec['min-length']) {\n return [new ValidationError(key, array, `array length at least ${arraySpec['min-length']} expected, length ${array.length} found`)];\n }\n\n let arrayElementSpec = {\n 'type': arraySpec.value,\n 'values': arraySpec.values\n };\n\n if (styleSpec.$version < 7) {\n arrayElementSpec['function'] = arraySpec.function;\n }\n\n if (getType(arraySpec.value) === 'object') {\n arrayElementSpec = arraySpec.value;\n }\n\n let errors = [];\n for (let i = 0; i < array.length; i++) {\n errors = errors.concat(validateArrayElement({\n array,\n arrayIndex: i,\n value: array[i],\n valueSpec: arrayElementSpec,\n validateSpec: options.validateSpec,\n style,\n styleSpec,\n key: `${key}[${i}]`\n }));\n }\n return errors;\n}\n","\nimport {getType} from '../util/get_type';\nimport {ValidationError} from '../error/validation_error';\n\nexport function validateNumber(options) {\n const key = options.key;\n const value = options.value;\n const valueSpec = options.valueSpec;\n let type = getType(value);\n\n if (type === 'number' && value !== value) {\n type = 'NaN';\n }\n\n if (type !== 'number') {\n return [new ValidationError(key, value, `number expected, ${type} found`)];\n }\n\n if ('minimum' in valueSpec && value < valueSpec.minimum) {\n return [new ValidationError(key, value, `${value} is less than the minimum value ${valueSpec.minimum}`)];\n }\n\n if ('maximum' in valueSpec && value > valueSpec.maximum) {\n return [new ValidationError(key, value, `${value} is greater than the maximum value ${valueSpec.maximum}`)];\n }\n\n return [];\n}\n","\nimport {ValidationError} from '../error/validation_error';\nimport {getType} from '../util/get_type';\nimport {validateObject} from './validate_object';\nimport {validateArray} from './validate_array';\nimport {validateNumber} from './validate_number';\nimport {isExpression} from '../expression';\nimport {unbundle, deepUnbundle} from '../util/unbundle_jsonlint';\nimport {\n supportsPropertyExpression,\n supportsZoomExpression,\n supportsInterpolation\n} from '../util/properties';\n\nexport function validateFunction(options): Array<ValidationError> {\n const functionValueSpec = options.valueSpec;\n const functionType = unbundle(options.value.type);\n let stopKeyType;\n let stopDomainValues = {};\n let previousStopDomainValue;\n let previousStopDomainZoom;\n\n const isZoomFunction = functionType !== 'categorical' && options.value.property === undefined;\n const isPropertyFunction = !isZoomFunction;\n const isZoomAndPropertyFunction =\n getType(options.value.stops) === 'array' &&\n getType(options.value.stops[0]) === 'array' &&\n getType(options.value.stops[0][0]) === 'object';\n\n const errors = validateObject({\n key: options.key,\n value: options.value,\n valueSpec: options.styleSpec.function,\n validateSpec: options.validateSpec,\n style: options.style,\n styleSpec: options.styleSpec,\n objectElementValidators: {\n stops: validateFunctionStops,\n default: validateFunctionDefault\n }\n });\n\n if (functionType === 'identity' && isZoomFunction) {\n errors.push(new ValidationError(options.key, options.value, 'missing required property \"property\"'));\n }\n\n if (functionType !== 'identity' && !options.value.stops) {\n errors.push(new ValidationError(options.key, options.value, 'missing required property \"stops\"'));\n }\n\n if (functionType === 'exponential' && options.valueSpec.expression && !supportsInterpolation(options.valueSpec)) {\n errors.push(new ValidationError(options.key, options.value, 'exponential functions not supported'));\n }\n\n if (options.styleSpec.$version >= 8) {\n if (isPropertyFunction && !supportsPropertyExpression(options.valueSpec)) {\n errors.push(new ValidationError(options.key, options.value, 'property functions not supported'));\n } else if (isZoomFunction && !supportsZoomExpression(options.valueSpec)) {\n errors.push(new ValidationError(options.key, options.value, 'zoom functions not supported'));\n }\n }\n\n if ((functionType === 'categorical' || isZoomAndPropertyFunction) && options.value.property === undefined) {\n errors.push(new ValidationError(options.key, options.value, '\"property\" property is required'));\n }\n\n return errors;\n\n function validateFunctionStops(options) {\n if (functionType === 'identity') {\n return [new ValidationError(options.key, options.value, 'identity function may not have a \"stops\" property')];\n }\n\n let errors = [];\n const value = options.value;\n\n errors = errors.concat(validateArray({\n key: options.key,\n value,\n valueSpec: options.valueSpec,\n validateSpec: options.validateSpec,\n style: options.style,\n styleSpec: options.styleSpec,\n arrayElementValidator: validateFunctionStop\n }));\n\n if (getType(value) === 'array' && value.length === 0) {\n errors.push(new ValidationError(options.key, value, 'array must have at least one stop'));\n }\n\n return errors;\n }\n\n function validateFunctionStop(options) {\n let errors = [];\n const value = options.value;\n const key = options.key;\n\n if (getType(value) !== 'array') {\n return [new ValidationError(key, value, `array expected, ${getType(value)} found`)];\n }\n\n if (value.length !== 2) {\n return [new ValidationError(key, value, `array length 2 expected, length ${value.length} found`)];\n }\n\n if (isZoomAndPropertyFunction) {\n if (getType(value[0]) !== 'object') {\n return [new ValidationError(key, value, `object expected, ${getType(value[0])} found`)];\n }\n if (value[0].zoom === undefined) {\n return [new ValidationError(key, value, 'object stop key must have zoom')];\n }\n if (value[0].value === undefined) {\n return [new ValidationError(key, value, 'object stop key must have value')];\n }\n if (previousStopDomainZoom && previousStopDomainZoom > unbundle(value[0].zoom)) {\n return [new ValidationError(key, value[0].zoom, 'stop zoom values must appear in ascending order')];\n }\n if (unbundle(value[0].zoom) !== previousStopDomainZoom) {\n previousStopDomainZoom = unbundle(value[0].zoom);\n previousStopDomainValue = undefined;\n stopDomainValues = {};\n }\n errors = errors.concat(validateObject({\n key: `${key}[0]`,\n value: value[0],\n valueSpec: {zoom: {}},\n validateSpec: options.validateSpec,\n style: options.style,\n styleSpec: options.styleSpec,\n objectElementValidators: {zoom: validateNumber, value: validateStopDomainValue}\n }));\n } else {\n errors = errors.concat(validateStopDomainValue({\n key: `${key}[0]`,\n value: value[0],\n valueSpec: {},\n validateSpec: options.validateSpec,\n style: options.style,\n styleSpec: options.styleSpec\n }, value));\n }\n\n if (isExpression(deepUnbundle(value[1]))) {\n return errors.concat([new ValidationError(`${key}[1]`, value[1], 'expressions are not allowed in function stops.')]);\n }\n\n return errors.concat(options.validateSpec({\n key: `${key}[1]`,\n value: value[1],\n valueSpec: functionValueSpec,\n validateSpec: options.validateSpec,\n style: options.style,\n styleSpec: options.styleSpec\n }));\n }\n\n function validateStopDomainValue(options, stop) {\n const type = getType(options.value);\n const value = unbundle(options.value);\n\n const reportValue = options.value !== null ? options.value : stop;\n\n if (!stopKeyType) {\n stopKeyType = type;\n } else if (type !== stopKeyType) {\n return [new ValidationError(options.key, reportValue, `${type} stop domain type must match previous stop domain type ${stopKeyType}`)];\n }\n\n if (type !== 'number' && type !== 'string' && type !== 'boolean') {\n return [new ValidationError(options.key, reportValue, 'stop domain value must be a number, string, or boolean')];\n }\n\n if (type !== 'number' && functionType !== 'categorical') {\n let message = `number expected, ${type} found`;\n if (supportsPropertyExpression(functionValueSpec) && functionType === undefined) {\n message += '\\nIf you intended to use a categorical function, specify `\"type\": \"categorical\"`.';\n }\n return [new ValidationError(options.key, reportValue, message)];\n }\n\n if (functionType === 'categorical' && type === 'number' && (!isFinite(value as number) || Math.floor(value as number) !== value)) {\n return [new ValidationError(options.key, reportValue, `integer expected, found ${value}`)];\n }\n\n if (functionType !== 'categorical' && type === 'number' && previousStopDomainValue !== undefined && value < previousStopDomainValue) {\n return [new ValidationError(options.key, reportValue, 'stop domain values must appear in ascending order')];\n } else {\n previousStopDomainValue = value;\n }\n\n if (functionType === 'categorical' && (value as any) in stopDomainValues) {\n return [new ValidationError(options.key, reportValue, 'stop domain values must be unique')];\n } else {\n stopDomainValues[value as any] = true;\n }\n\n return [];\n }\n\n function validateFunctionDefault(options): Array<ValidationError> {\n return options.validateSpec({\n key: options.key,\n value: options.value,\n valueSpec: functionValueSpec,\n validateSpec: options.validateSpec,\n style: options.style,\n styleSpec: options.styleSpec\n });\n }\n}\n","import {ValidationError} from '../error/validation_error';\n\nimport {createExpression, createPropertyExpression} from '../expression';\nimport {deepUnbundle} from '../util/unbundle_jsonlint';\n\nimport {isFeatureConstant,\n isGlobalPropertyConstant,\n isStateConstant} from '../expression/compound_expression';\n\nimport {Expression} from '../expression/expression';\n\nexport function validateExpression(options: any): Array<ValidationError> {\n const expression = (options.expressionContext === 'property' ? createPropertyExpression : createExpression)(deepUnbundle(options.value), options.valueSpec);\n if (expression.result === 'error') {\n return expression.value.map((error) => {\n return new ValidationError(`${options.key}${error.key}`, options.value, error.message);\n });\n }\n\n const expressionObj: Expression = (expression.value as any).expression || (expression.value as any)._styleExpression.expression;\n\n if (options.expressionContext === 'property' && (options.propertyKey === 'text-font') &&\n !expressionObj.outputDefined()) {\n return [new ValidationError(options.key, options.value, `Invalid data expression for \"${options.propertyKey}\". Output values must be contained as literals within the expression.`)];\n }\n\n if (options.expressionContext === 'property' && options.propertyType === 'layout' &&\n (!isStateConstant(expressionObj))) {\n return [new ValidationError(options.key, options.value, '\"feature-state\" data expressions are not supported with layout properties.')];\n }\n\n if (options.expressionContext === 'filter' && !isStateConstant(expressionObj)) {\n return [new ValidationError(options.key, options.value, '\"feature-state\" data expressions are not supported with filters.')];\n }\n\n if (options.expressionContext && options.expressionContext.indexOf('cluster') === 0) {\n if (!isGlobalPropertyConstant(expressionObj, ['zoom', 'feature-state'])) {\n return [new ValidationError(options.key, options.value, '\"zoom\" and \"feature-state\" expressions are not supported with cluster properties.')];\n }\n if (options.expressionContext === 'cluster-initial' && !isFeatureConstant(expressionObj)) {\n return [new ValidationError(options.key, options.value, 'Feature data expressions are not supported with initial expression part of cluster properties.')];\n }\n }\n\n return [];\n}\n","\nimport {getType} from '../util/get_type';\nimport {ValidationError} from '../error/validation_error';\n\nexport function validateBoolean(options) {\n const value = options.value;\n const key = options.key;\n const type = getType(value);\n\n if (type !== 'boolean') {\n return [new ValidationError(key, value, `boolean expected, ${type} found`)];\n }\n\n return [];\n}\n","import {ValidationError} from '../error/validation_error';\nimport {getType} from '../util/get_type';\nimport {Color} from '../expression/types/color';\n\nexport function validateColor(options) {\n const key = options.key;\n const value = options.value;\n const type = getType(value);\n\n if (type !== 'string') {\n return [new ValidationError(key, value, `color expected, ${type} found`)];\n }\n\n if (!Color.parse(String(value))) { // cast String object to string primitive\n return [new ValidationError(key, value, `color expected, \"${value}\" found`)];\n }\n\n return [];\n}\n","\nimport {ValidationError} from '../error/validation_error';\nimport {unbundle} from '../util/unbundle_jsonlint';\n\nexport function validateEnum(options) {\n const key = options.key;\n const value = options.value;\n const valueSpec = options.valueSpec;\n const errors = [];\n\n if (Array.isArray(valueSpec.values)) { // <=v7\n if (valueSpec.values.indexOf(unbundle(value)) === -1) {\n errors.push(new ValidationError(key, value, `expected one of [${valueSpec.values.join(', ')}], ${JSON.stringify(value)} found`));\n }\n } else { // >=v8\n if (Object.keys(valueSpec.values).indexOf(unbundle(value) as string) === -1) {\n errors.push(new ValidationError(key, value, `expected one of [${Object.keys(valueSpec.values).join(', ')}], ${JSON.stringify(value)} found`));\n }\n }\n return errors;\n}\n","\nimport {ValidationError} from '../error/validation_error';\nimport {validateExpression} from './validate_expression';\nimport {validateEnum} from './validate_enum';\nimport {getType} from '../util/get_type';\nimport {unbundle, deepUnbundle} from '../util/unbundle_jsonlint';\nimport {extendBy as extend} from '../util/extend';\nimport {isExpressionFilter} from '../feature_filter';\n\nexport function validateFilter(options) {\n if (isExpressionFilter(deepUnbundle(options.value))) {\n return validateExpression(extend({}, options, {\n expressionContext: 'filter',\n valueSpec: {value: 'boolean'}\n }));\n } else {\n return validateNonExpressionFilter(options);\n }\n}\n\nfunction validateNonExpressionFilter(options) {\n const value = options.value;\n const key = options.key;\n\n if (getType(value) !== 'array') {\n return [new ValidationError(key, value, `array expected, ${getType(value)} found`)];\n }\n\n const styleSpec = options.styleSpec;\n let type;\n\n let errors = [];\n\n if (value.length < 1) {\n return [new ValidationError(key, value, 'filter array must have at least 1 element')];\n }\n\n errors = errors.concat(validateEnum({\n key: `${key}[0]`,\n value: value[0],\n valueSpec: styleSpec.filter_operator,\n style: options.style,\n styleSpec: options.styleSpec\n }));\n\n switch (unbundle(value[0])) {\n case '<':\n case '<=':\n case '>':\n case '>=':\n if (value.length >= 2 && unbundle(value[1]) === '$type') {\n errors.push(new ValidationError(key, value, `\"$type\" cannot be use with operator \"${value[0]}\"`));\n }\n /* falls through */\n case '==':\n case '!=':\n if (value.length !== 3) {\n errors.push(new ValidationError(key, value, `filter array for operator \"${value[0]}\" must have 3 elements`));\n }\n /* falls through */\n case 'in':\n case '!in':\n if (value.length >= 2) {\n type = getType(value[1]);\n if (type !== 'string') {\n errors.push(new ValidationError(`${key}[1]`, value[1], `string expected, ${type} found`));\n }\n }\n for (let i = 2; i < value.length; i++) {\n type = getType(value[i]);\n if (unbundle(value[1]) === '$type') {\n errors = errors.concat(validateEnum({\n key: `${key}[${i}]`,\n value: value[i],\n valueSpec: styleSpec.geometry_type,\n style: options.style,\n styleSpec: options.styleSpec\n }));\n } else if (type !== 'string' && type !== 'number' && type !== 'boolean') {\n errors.push(new ValidationError(`${key}[${i}]`, value[i], `string, number, or boolean expected, ${type} found`));\n }\n }\n break;\n\n case 'any':\n case 'all':\n case 'none':\n for (let i = 1; i < value.length; i++) {\n errors = errors.concat(validateNonExpressionFilter({\n key: `${key}[${i}]`,\n value: value[i],\n style: options.style,\n styleSpec: options.styleSpec\n }));\n }\n break;\n\n case 'has':\n case '!has':\n type = getType(value[1]);\n if (value.length !== 2) {\n errors.push(new ValidationError(key, value, `filter array for \"${value[0]}\" operator must have 2 elements`));\n } else if (type !== 'string') {\n errors.push(new ValidationError(`${key}[1]`, value[1], `string expected, ${type} found`));\n }\n break;\n }\n return errors;\n}\n","\nimport {ValidationError} from '../error/validation_error';\nimport {getType} from '../util/get_type';\nimport {isFunction} from '../function';\nimport {unbundle, deepUnbundle} from '../util/unbundle_jsonlint';\nimport {supportsPropertyExpression} from '../util/properties';\n\nexport function validateProperty(options, propertyType) {\n const key = options.key;\n const validateSpec = options.validateSpec;\n const style = options.style;\n const styleSpec = options.styleSpec;\n const value = options.value;\n const propertyKey = options.objectKey;\n const layerSpec = styleSpec[`${propertyType}_${options.layerType}`];\n\n if (!layerSpec) return [];\n\n const transitionMatch = propertyKey.match(/^(.*)-transition$/);\n if (propertyType === 'paint' && transitionMatch && layerSpec[transitionMatch[1]] && layerSpec[transitionMatch[1]].transition) {\n return validateSpec({\n key,\n value,\n valueSpec: styleSpec.transition,\n style,\n styleSpec\n });\n }\n\n const valueSpec = options.valueSpec || layerSpec[propertyKey];\n if (!valueSpec) {\n return [new ValidationError(key, value, `unknown property \"${propertyKey}\"`)];\n }\n\n let tokenMatch;\n if (getType(value) === 'string' && supportsPropertyExpression(valueSpec) && !valueSpec.tokens && (tokenMatch = /^{([^}]+)}$/.exec(value))) {\n return [new ValidationError(\n key, value,\n `\"${propertyKey}\" does not support interpolation syntax\\n` +\n `Use an identity property function instead: \\`{ \"type\": \"identity\", \"property\": ${JSON.stringify(tokenMatch[1])} }\\`.`)];\n }\n\n const errors = [];\n\n if (options.layerType === 'symbol') {\n if (propertyKey === 'text-field' && style && !style.glyphs) {\n errors.push(new ValidationError(key, value, 'use of \"text-field\" requires a style \"glyphs\" property'));\n }\n if (propertyKey === 'text-font' && isFunction(deepUnbundle(value)) && unbundle(value.type) === 'identity') {\n errors.push(new ValidationError(key, value, '\"text-font\" does not support identity functions'));\n }\n }\n\n return errors.concat(validateSpec({\n key: options.key,\n value,\n valueSpec,\n style,\n styleSpec,\n expressionContext: 'property',\n propertyType,\n propertyKey\n }));\n}\n","\nimport {validateProperty} from './validate_property';\n\nexport function validatePaintProperty(options) {\n return validateProperty(options, 'paint');\n}\n","\nimport {validateProperty} from './validate_property';\n\nexport function validateLayoutProperty(options) {\n return validateProperty(options, 'layout');\n}\n","\nimport {ValidationError} from '../error/validation_error';\nimport {unbundle} from '../util/unbundle_jsonlint';\nimport {validateObject} from './validate_object';\nimport {validateFilter} from './validate_filter';\nimport {validatePaintProperty} from './validate_paint_property';\nimport {validateLayoutProperty} from './validate_layout_property';\nimport {extendBy as extend} from '../util/extend';\nimport {getType} from '../util/get_type';\n\nexport function validateLayer(options) {\n let errors = [];\n\n const layer = options.value;\n const key = options.key;\n const style = options.style;\n const styleSpec = options.styleSpec;\n\n if (getType(layer) !== 'object') {\n return [new ValidationError(key, layer, `object expected, ${getType(layer)} found`)]\n }\n\n if (!layer.type && !layer.ref) {\n errors.push(new ValidationError(key, layer, 'either \"type\" or \"ref\" is required'));\n }\n let type = unbundle(layer.type);\n const ref = unbundle(layer.ref);\n\n if (layer.id) {\n const layerId = unbundle(layer.id);\n for (let i = 0; i < options.arrayIndex; i++) {\n const otherLayer = style.layers[i];\n if (unbundle(otherLayer.id) === layerId) {\n errors.push(new ValidationError(key, layer.id, `duplicate layer id \"${layer.id}\", previously used at line ${otherLayer.id.__line__}`));\n }\n }\n }\n\n if ('ref' in layer) {\n ['type', 'source', 'source-layer', 'filter', 'layout'].forEach((p) => {\n if (p in layer) {\n errors.push(new ValidationError(key, layer[p], `\"${p}\" is prohibited for ref layers`));\n }\n });\n\n let parent;\n\n style.layers.forEach((layer) => {\n if (unbundle(layer.id) === ref) parent = layer;\n });\n\n if (!parent) {\n errors.push(new ValidationError(key, layer.ref, `ref layer \"${ref}\" not found`));\n } else if (parent.ref) {\n errors.push(new ValidationError(key, layer.ref, 'ref cannot reference another ref layer'));\n } else {\n type = unbundle(parent.type);\n }\n } else if (type !== 'background') {\n if (!layer.source) {\n errors.push(new ValidationError(key, layer, 'missing required property \"source\"'));\n } else {\n const source = style.sources && style.sources[layer.source];\n const sourceType = source && unbundle(source.type);\n if (!source) {\n errors.push(new ValidationError(key, layer.source, `source \"${layer.source}\" not found`));\n } else if (sourceType === 'vector' && type === 'raster') {\n errors.push(new ValidationError(key, layer.source, `layer \"${layer.id}\" requires a raster source`));\n } else if (sourceType !== 'raster-dem' && type === 'hillshade') {\n errors.push(new ValidationError(key, layer.source, `layer \"${layer.id}\" requires a raster-dem source`));\n } else if (sourceType !== 'raster-dem' && type === 'color-relief') {\n errors.push(new ValidationError(key, layer.source, `layer \"${layer.id}\" requires a raster-dem source`));\n } else if (sourceType === 'raster' && type !== 'raster') {\n errors.push(new ValidationError(key, layer.source, `layer \"${layer.id}\" requires a vector source`));\n } else if (sourceType === 'vector' && !layer['source-layer']) {\n errors.push(new ValidationError(key, layer, `layer \"${layer.id}\" must specify a \"source-layer\"`));\n } else if (sourceType === 'raster-dem' && (type !== 'hillshade' && type !== 'color-relief')) {\n errors.push(new ValidationError(key, layer.source, 'raster-dem source can only be used with layer type \\'hillshade\\' or \\'color-relief\\'.'));\n } else if (type === 'line' && layer.paint && layer.paint['line-gradient'] &&\n (sourceType !== 'geojson' || !source.lineMetrics)) {\n errors.push(new ValidationError(key, layer, `layer \"${layer.id}\" specifies a line-gradient, which requires a GeoJSON source with \\`lineMetrics\\` enabled.`));\n }\n }\n }\n\n errors = errors.concat(validateObject({\n key,\n value: layer,\n valueSpec: styleSpec.layer,\n style: options.style,\n styleSpec: options.styleSpec,\n validateSpec: options.validateSpec,\n objectElementValidators: {\n '*'() {\n return [];\n },\n // We don't want to enforce the spec's `\"requires\": true` for backward compatibility with refs;\n // the actual requirement is validated above. See https://github.com/mapbox/mapbox-gl-js/issues/5772.\n type() {\n return options.validateSpec({\n key: `${key}.type`,\n value: layer.type,\n valueSpec: styleSpec.layer.type,\n style: options.style,\n styleSpec: options.styleSpec,\n validateSpec: options.validateSpec,\n object: layer,\n objectKey: 'type'\n });\n },\n filter: validateFilter,\n layout(options) {\n return validateObject({\n layer,\n key: options.key,\n value: options.value,\n style: options.style,\n styleSpec: options.styleSpec,\n validateSpec: options.validateSpec,\n objectElementValidators: {\n '*'(options) {\n return validateLayoutProperty(extend({layerType: type}, options));\n }\n }\n });\n },\n paint(options) {\n return validateObject({\n layer,\n key: options.key,\n value: options.value,\n style: options.style,\n styleSpec: options.styleSpec,\n validateSpec: options.validateSpec,\n objectElementValidators: {\n '*'(options) {\n return validatePaintProperty(extend({layerType: type}, options));\n }\n }\n });\n }\n }\n }));\n\n return errors;\n}\n","\nimport {getType} from '../util/get_type';\nimport {ValidationError} from '../error/validation_error';\n\nexport function validateString(options) {\n const value = options.value;\n const key = options.key;\n const type = getType(value);\n\n if (type !== 'string') {\n return [new ValidationError(key, value, `string expected, ${type} found`)];\n }\n\n return [];\n}\n","import {ValidationError} from '../error/validation_error';\nimport {getType} from '../util/get_type';\nimport type {RasterDEMSourceSpecification, StyleSpecification} from '../types.g';\nimport v8 from '../reference/v8.json' with {type: 'json'};\nimport {unbundle} from '../util/unbundle_jsonlint';\n\ninterface ValidateRasterDENSourceOptions {\n sourceName?: string;\n value: RasterDEMSourceSpecification;\n styleSpec: typeof v8;\n style: StyleSpecification;\n validateSpec: Function;\n}\n\nexport function validateRasterDEMSource(\n options: ValidateRasterDENSourceOptions\n): ValidationError[] {\n\n const sourceName = options.sourceName ?? '';\n const rasterDEM = options.value;\n const styleSpec = options.styleSpec;\n const rasterDEMSpec = styleSpec.source_raster_dem;\n const style = options.style;\n\n let errors = [];\n\n const rootType = getType(rasterDEM);\n if (rasterDEM === undefined) {\n return errors;\n } else if (rootType !== 'object') {\n errors.push(new ValidationError('source_raster_dem', rasterDEM, `object expected, ${rootType} found`));\n return errors;\n }\n\n const encoding = unbundle(rasterDEM.encoding);\n const isCustomEncoding = encoding === 'custom';\n const customEncodingKeys = ['redFactor', 'greenFactor', 'blueFactor', 'baseShift'];\n const encodingName = options.value.encoding ? `\"${options.value.encoding}\"` : 'Default';\n\n for (const key in rasterDEM) {\n if (!isCustomEncoding && customEncodingKeys.includes(key)) {\n errors.push(new ValidationError(key, rasterDEM[key], `In \"${sourceName}\": \"${key}\" is only valid when \"encoding\" is set to \"custom\". ${encodingName} encoding found`));\n } else if (rasterDEMSpec[key]) {\n errors = errors.concat(options.validateSpec({\n key,\n value: rasterDEM[key],\n valueSpec: rasterDEMSpec[key],\n validateSpec: options.validateSpec,\n style,\n styleSpec\n }));\n } else {\n errors.push(new ValidationError(key, rasterDEM[key], `unknown property \"${key}\"`));\n }\n }\n\n return errors;\n}\n","\nimport {ValidationError} from '../error/validation_error';\nimport {unbundle} from '../util/unbundle_jsonlint';\nimport {validateObject} from './validate_object';\nimport {validateEnum} from './validate_enum';\nimport {validateExpression} from './validate_expression';\nimport {validateString} from './validate_string';\nimport {getType} from '../util/get_type';\nimport {validateRasterDEMSource} from './validate_raster_dem_source';\n\nconst objectElementValidators = {\n promoteId: validatePromoteId\n};\n\nexport function validateSource(options) {\n const value = options.value;\n const key = options.key;\n const styleSpec = options.styleSpec;\n const style = options.style;\n const validateSpec = options.validateSpec;\n\n if (!value.type) {\n return [new ValidationError(key, value, '\"type\" is required')];\n }\n\n const type = unbundle(value.type);\n let errors;\n\n switch (type) {\n case 'vector':\n case 'raster':\n errors = validateObject({\n key,\n value,\n valueSpec: styleSpec[`source_${type.replace('-', '_')}`],\n style: options.style,\n styleSpec,\n objectElementValidators,\n validateSpec,\n });\n return errors;\n case 'raster-dem':\n errors = validateRasterDEMSource({\n sourceName: key,\n value,\n style: options.style,\n styleSpec,\n validateSpec,\n });\n return errors;\n\n case 'geojson':\n errors = validateObject({\n key,\n value,\n valueSpec: styleSpec.source_geojson,\n style,\n styleSpec,\n validateSpec,\n objectElementValidators\n });\n if (value.cluster) {\n for (const prop in value.clusterProperties) {\n const [operator, mapExpr] = value.clusterProperties[prop];\n const reduceExpr = typeof operator === 'string' ? [operator, ['accumulated'], ['get', prop]] : operator;\n\n errors.push(...validateExpression({\n key: `${key}.${prop}.map`,\n value: mapExpr,\n validateSpec,\n expressionContext: 'cluster-map'\n }));\n errors.push(...validateExpression({\n key: `${key}.${prop}.reduce`,\n value: reduceExpr,\n validateSpec,\n expressionContext: 'cluster-reduce'\n }));\n }\n }\n return errors;\n\n case 'video':\n return validateObject({\n key,\n value,\n valueSpec: styleSpec.source_video,\n style,\n validateSpec,\n styleSpec\n });\n\n case 'image':\n return validateObject({\n key,\n value,\n valueSpec: styleSpec.source_image,\n style,\n validateSpec,\n styleSpec\n });\n\n case 'canvas':\n return [new ValidationError(key, null, 'Please use runtime APIs to add canvas sources, rather than including them in stylesheets.', 'source.canvas')];\n\n default:\n return validateEnum({\n key: `${key}.type`,\n value: value.type,\n valueSpec: {values: ['vector', 'raster', 'raster-dem', 'geojson', 'video', 'image']},\n style,\n validateSpec,\n styleSpec\n });\n }\n}\n\nfunction validatePromoteId({key, value}) {\n if (getType(value) === 'string') {\n return validateString({key, value});\n } else {\n const errors = [];\n for (const prop in value) {\n errors.push(...validateString({key: `${key}.${prop}`, value: value[prop]}));\n }\n return errors;\n }\n}\n","import {ValidationError} from '../error/validation_error';\nimport {getType} from '../util/get_type';\n\nexport function validateLight(options) {\n const light = options.value;\n const styleSpec = options.styleSpec;\n const lightSpec = styleSpec.light;\n const style = options.style;\n\n let errors = [];\n\n const rootType = getType(light);\n if (light === undefined) {\n return errors;\n } else if (rootType !== 'object') {\n errors = errors.concat([new ValidationError('light', light, `object expected, ${rootType} found`)]);\n return errors;\n }\n\n for (const key in light) {\n const transitionMatch = key.match(/^(.*)-transition$/);\n\n if (transitionMatch && lightSpec[transitionMatch[1]] && lightSpec[transitionMatch[1]].transition) {\n errors = errors.concat(options.validateSpec({\n key,\n value: light[key],\n valueSpec: styleSpec.transition,\n validateSpec: options.validateSpec,\n style,\n styleSpec\n }));\n } else if (lightSpec[key]) {\n errors = errors.concat(options.validateSpec({\n key,\n value: light[key],\n valueSpec: lightSpec[key],\n validateSpec: options.validateSpec,\n style,\n styleSpec\n }));\n } else {\n errors = errors.concat([new ValidationError(key, light[key], `unknown property \"${key}\"`)]);\n }\n }\n\n return errors;\n}\n","import {ValidationError} from '../error/validation_error';\nimport {getType} from '../util/get_type';\nimport v8 from '../reference/v8.json' with {type: 'json'};\nimport {SkySpecification, StyleSpecification} from '../types.g';\n\ninterface ValidateSkyOptions {\n sourceName?: string;\n value: SkySpecification;\n styleSpec: typeof v8;\n style: StyleSpecification;\n validateSpec: Function;\n}\n\nexport function validateSky(options: ValidateSkyOptions) {\n const sky = options.value;\n const styleSpec = options.styleSpec;\n const skySpec = styleSpec.sky;\n const style = options.style;\n\n const rootType = getType(sky);\n if (sky === undefined) {\n return [];\n } else if (rootType !== 'object') {\n return [new ValidationError('sky', sky, `object expected, ${rootType} found`)];\n }\n\n let errors = [];\n for (const key in sky) {\n if (skySpec[key]) {\n errors = errors.concat(options.validateSpec({\n key,\n value: sky[key],\n valueSpec: skySpec[key],\n style,\n styleSpec\n }));\n } else {\n errors = errors.concat([new ValidationError(key, sky[key], `unknown property \"${key}\"`)]);\n }\n }\n\n return errors;\n}\n","import {ValidationError} from '../error/validation_error';\nimport {getType} from '../util/get_type';\nimport type {StyleSpecification, TerrainSpecification} from '../types.g';\nimport v8 from '../reference/v8.json' with {type: 'json'};\n\nexport function validateTerrain(\n options: {value: TerrainSpecification; styleSpec: typeof v8; style: StyleSpecification; validateSpec: Function}\n): ValidationError[] {\n\n const terrain = options.value;\n const styleSpec = options.styleSpec;\n const terrainSpec = styleSpec.terrain;\n const style = options.style;\n\n let errors = [];\n\n const rootType = getType(terrain);\n if (terrain === undefined) {\n return errors;\n } else if (rootType !== 'object') {\n errors = errors.concat([new ValidationError('terrain', terrain, `object expected, ${rootType} found`)]);\n return errors;\n }\n\n for (const key in terrain) {\n if (terrainSpec[key]) {\n errors = errors.concat(options.validateSpec({\n key,\n value: terrain[key],\n valueSpec: terrainSpec[key],\n validateSpec: options.validateSpec,\n style,\n styleSpec\n }));\n } else {\n errors = errors.concat([new ValidationError(key, terrain[key], `unknown property \"${key}\"`)]);\n }\n }\n\n return errors;\n}\n","import {validateExpression} from './validate_expression';\nimport {validateString} from './validate_string';\n\nexport function validateFormatted(options: any) {\n if (validateString(options).length === 0) {\n return [];\n }\n\n return validateExpression(options);\n}\n","import {validateExpression} from './validate_expression';\nimport {validateString} from './validate_string';\n\nexport function validateImage(options: any) {\n if (validateString(options).length === 0) {\n return [];\n }\n\n return validateExpression(options);\n}\n","import {ValidationError} from '../error/validation_error';\nimport {getType} from '../util/get_type';\nimport {validateNumber} from './validate_number';\n\nexport function validatePadding(options) {\n const key = options.key;\n const value = options.value;\n const type = getType(value);\n\n if (type === 'array') {\n if (value.length < 1 || value.length > 4) {\n return [new ValidationError(key, value, `padding requires 1 to 4 values; ${value.length} values found`)];\n }\n\n const arrayElementSpec = {\n type: 'number'\n };\n\n let errors = [];\n for (let i = 0; i < value.length; i++) {\n errors = errors.concat(options.validateSpec({\n key: `${key}[${i}]`,\n value: value[i],\n validateSpec: options.validateSpec,\n valueSpec: arrayElementSpec\n }));\n }\n return errors;\n } else {\n return validateNumber({\n key,\n value,\n valueSpec: {}\n });\n }\n}\n","import {ValidationError} from '../error/validation_error';\nimport {getType} from '../util/get_type';\nimport {validateNumber} from './validate_number';\n\nexport function validateNumberArray(options) {\n const key = options.key;\n const value = options.value;\n const type = getType(value);\n\n if (type === 'array') {\n\n const arrayElementSpec = {\n type: 'number'\n };\n\n if (value.length < 1) {\n return [new ValidationError(key, value, 'array length at least 1 expected, length 0 found')];\n }\n\n let errors = [];\n for (let i = 0; i < value.length; i++) {\n errors = errors.concat(options.validateSpec({\n key: `${key}[${i}]`,\n value: value[i],\n validateSpec: options.validateSpec,\n valueSpec: arrayElementSpec\n }));\n }\n return errors;\n } else {\n return validateNumber({\n key,\n value,\n valueSpec: {}\n });\n }\n}\n","import {ValidationError} from '../error/validation_error';\nimport {getType} from '../util/get_type';\nimport {validateColor} from './validate_color';\n\nexport function validateColorArray(options) {\n const key = options.key;\n const value = options.value;\n const type = getType(value);\n\n if (type === 'array') {\n\n if (value.length < 1) {\n return [new ValidationError(key, value, 'array length at least 1 expected, length 0 found')];\n }\n\n let errors = [];\n for (let i = 0; i < value.length; i++) {\n errors = errors.concat(validateColor({\n key: `${key}[${i}]`,\n value: value[i],\n valueSpec: {}\n }));\n }\n return errors;\n } else {\n return validateColor({\n key,\n value,\n valueSpec: {}\n });\n }\n}\n","import {ValidationError} from '../error/validation_error';\nimport {getType} from '../util/get_type';\nimport {validateArray} from './validate_array';\nimport {validateEnum} from './validate_enum';\n\nexport function validateVariableAnchorOffsetCollection(options): ValidationError[] {\n const key = options.key;\n const value = options.value;\n const type = getType(value);\n const styleSpec = options.styleSpec;\n\n if (type !== 'array' || value.length < 1 || value.length % 2 !== 0) {\n return [new ValidationError(key, value, 'variableAnchorOffsetCollection requires a non-empty array of even length')];\n }\n\n let errors = [];\n\n for (let i = 0; i < value.length; i += 2) {\n // Elements in even positions should be values from text-anchor enum\n errors = errors.concat(validateEnum({\n key: `${key}[${i}]`,\n value: value[i],\n valueSpec: styleSpec['layout_symbol']['text-anchor']\n }));\n\n // Elements in odd positions should be points (2-element numeric arrays)\n errors = errors.concat(validateArray({\n key: `${key}[${i + 1}]`,\n value: value[i + 1],\n valueSpec: {\n length: 2,\n value: 'number'\n },\n validateSpec: options.validateSpec,\n style: options.style,\n styleSpec\n }));\n }\n\n return errors;\n}\n","import {validateObject} from './validate_object';\nimport {validateString} from './validate_string';\nimport {ValidationError} from '../error/validation_error';\n\ninterface ValidateSpriteOptions {\n key: 'sprite';\n value: unknown; // we don't know how the user defined the \"sprite\"\n validateSpec: Function;\n}\n\nexport function validateSprite(options: ValidateSpriteOptions) {\n let errors = [];\n\n const sprite = options.value;\n const key = options.key;\n\n if (!Array.isArray(sprite)) {\n return validateString({\n key,\n value: sprite\n });\n\n } else {\n const allSpriteIds = [];\n const allSpriteURLs = [];\n\n for (const i in sprite) {\n if (sprite[i].id && allSpriteIds.includes(sprite[i].id)) errors.push(new ValidationError(key, sprite, `all the sprites' ids must be unique, but ${sprite[i].id} is duplicated`));\n allSpriteIds.push(sprite[i].id);\n\n if (sprite[i].url && allSpriteURLs.includes(sprite[i].url)) errors.push(new ValidationError(key, sprite, `all the sprites' URLs must be unique, but ${sprite[i].url} is duplicated`));\n allSpriteURLs.push(sprite[i].url);\n\n const pairSpec = {\n id: {\n type: 'string',\n required: true,\n },\n url: {\n type: 'string',\n required: true,\n }\n };\n\n errors = errors.concat(validateObject({\n key: `${key}[${i}]`,\n value: sprite[i],\n valueSpec: pairSpec,\n validateSpec: options.validateSpec,\n }));\n }\n\n return errors;\n }\n}\n","import {ValidationError} from '../error/validation_error';\nimport {getType} from '../util/get_type';\nimport v8 from '../reference/v8.json' with {type: 'json'};\nimport {ProjectionSpecification, StyleSpecification} from '../types.g';\n\ninterface ValidateProjectionOptions {\n sourceName?: string;\n value: ProjectionSpecification;\n styleSpec: typeof v8;\n style: StyleSpecification;\n validateSpec: Function;\n}\n\nexport function validateProjection(options: ValidateProjectionOptions) {\n const projection = options.value;\n const styleSpec = options.styleSpec;\n const projectionSpec = styleSpec.projection;\n const style = options.style;\n\n const rootType = getType(projection);\n if (projection === undefined) {\n return [];\n } else if (rootType !== 'object') {\n return [new ValidationError('projection', projection, `object expected, ${rootType} found`)];\n }\n\n let errors = [];\n for (const key in projection) {\n if (projectionSpec[key]) {\n errors = errors.concat(options.validateSpec({\n key,\n value: projection[key],\n valueSpec: projectionSpec[key],\n style,\n styleSpec\n }));\n } else {\n errors = errors.concat([new ValidationError(key, projection[key], `unknown property \"${key}\"`)]);\n }\n }\n\n return errors;\n}\n","import {ValidationError} from '../error/validation_error';\nimport {ProjectionDefinitionT, PropertyValueSpecification} from '../types.g';\nimport {getType} from '../util/get_type';\n\nexport function validateProjectionDefinition(options) {\n\n const key = options.key;\n let value = options.value;\n value = value instanceof String ? value.valueOf() : value;\n\n const type = getType(value);\n\n if (type === 'array' && !isProjectionDefinitionValue(value) && !isPropertyValueSpecification(value)) {\n return [new ValidationError(key, value, `projection expected, invalid array ${JSON.stringify(value)} found`)];\n } else if (!['array', 'string'].includes(type)) {\n return [new ValidationError(key, value, `projection expected, invalid type \"${type}\" found`)];\n }\n\n return [];\n}\n\nfunction isPropertyValueSpecification(value: unknown): value is PropertyValueSpecification<ProjectionDefinitionT> {\n\n if (['interpolate', 'step', 'literal'].includes(value[0])) {\n return true\n }\n return false\n}\n\nfunction isProjectionDefinitionValue(value: unknown): value is ProjectionDefinitionT {\n return Array.isArray(value) &&\n value.length === 3 &&\n typeof value[0] === 'string' &&\n typeof value[1] === 'string' &&\n typeof value[2] === 'number';\n}","export function isObjectLiteral(\n anything: unknown\n): anything is Record<string, unknown> {\n return Boolean(anything) && anything.constructor === Object;\n}","import {ValidationError} from '../error/validation_error';\nimport {getType} from '../util/get_type';\nimport {isObjectLiteral} from '../util/is_object_literal';\n\ninterface ValidateStateOptions {\n key: 'state';\n value: unknown;\n}\n\nexport function validateState(options: ValidateStateOptions): ValidationError[] {\n if (!isObjectLiteral(options.value)) {\n return [\n new ValidationError(\n options.key,\n options.value,\n `object expected, ${getType(options.value)} found`\n ),\n ];\n }\n\n return [];\n}\n","\nimport {extendBy} from '../util/extend';\nimport {unbundle, deepUnbundle} from '../util/unbundle_jsonlint';\nimport {isExpression} from '../expression';\nimport {isFunction} from '../function';\n\nimport {validateFunction} from './validate_function';\nimport {validateExpression} from './validate_expression';\nimport {validateObject} from './validate_object';\nimport {validateArray} from './validate_array';\nimport {validateBoolean} from './validate_boolean';\nimport {validateNumber} from './validate_number';\nimport {validateColor} from './validate_color';\nimport {validateConstants} from './validate_constants';\nimport {validateEnum} from './validate_enum';\nimport {validateFilter} from './validate_filter';\nimport {validateLayer} from './validate_layer';\nimport {validateSource} from './validate_source';\nimport {validateLight} from './validate_light';\nimport {validateSky} from './validate_sky';\nimport {validateTerrain} from './validate_terrain';\nimport {validateString} from './validate_string';\nimport {validateFormatted} from './validate_formatted';\nimport {validateImage} from './validate_image';\nimport {validatePadding} from './validate_padding';\nimport {validateNumberArray} from './validate_number_array';\nimport {validateColorArray} from './validate_color_array';\nimport {validateVariableAnchorOffsetCollection} from './validate_variable_anchor_offset_collection';\nimport {validateSprite} from './validate_sprite';\nimport {ValidationError} from '../error/validation_error';\nimport {validateProjection} from './validate_projection';\nimport {validateProjectionDefinition} from './validate_projectiondefinition';\nimport {validateState} from './validate_state';\n\nconst VALIDATORS = {\n '*'() {\n return [];\n },\n 'array': validateArray,\n 'boolean': validateBoolean,\n 'number': validateNumber,\n 'color': validateColor,\n 'constants': validateConstants,\n 'enum': validateEnum,\n 'filter': validateFilter,\n 'function': validateFunction,\n 'layer': validateLayer,\n 'object': validateObject,\n 'source': validateSource,\n 'light': validateLight,\n 'sky': validateSky,\n 'terrain': validateTerrain,\n 'projection': validateProjection,\n 'projectionDefinition': validateProjectionDefinition,\n 'string': validateString,\n 'formatted': validateFormatted,\n 'resolvedImage': validateImage,\n 'padding': validatePadding,\n 'numberArray': validateNumberArray,\n 'colorArray': validateColorArray,\n 'variableAnchorOffsetCollection': validateVariableAnchorOffsetCollection,\n 'sprite': validateSprite,\n 'state': validateState\n};\n\n/**\n * Main recursive validation function used internally.\n * You should use `validateStyleMin` in the browser or `validateStyle` in node env.\n * @param options - the options object\n * @param options.key - string representing location of validation in style tree. Used only\n * for more informative error reporting.\n * @param options.value - current value from style being evaluated. May be anything from a\n * high level object that needs to be descended into deeper or a simple\n * scalar value.\n * @param options.valueSpec - current spec being evaluated. Tracks value.\n * @param options.styleSpec - current full spec being evaluated.\n * @param options.validateSpec - the validate function itself\n * @param options.style - the style object\n * @param options.objectElementValidators - optional object of functions that will be called\n * @returns an array of errors, or an empty array if no errors are found.\n */\nexport function validate(options: {\n key: any;\n value: any;\n valueSpec: any;\n styleSpec: any;\n validateSpec?: any;\n style: any;\n objectElementValidators?: any;}): ValidationError[] {\n const value = options.value;\n const valueSpec = options.valueSpec;\n const styleSpec = options.styleSpec;\n options.validateSpec = validate;\n\n if (valueSpec.expression && isFunction(unbundle(value))) {\n return validateFunction(options);\n\n } else if (valueSpec.expression && isExpression(deepUnbundle(value))) {\n return validateExpression(options);\n\n } else if (valueSpec.type && VALIDATORS[valueSpec.type]) {\n return VALIDATORS[valueSpec.type](options);\n\n } else {\n const valid = validateObject(extendBy({}, options, {\n valueSpec: valueSpec.type ? styleSpec[valueSpec.type] : valueSpec\n }));\n return valid;\n }\n}\n","\nimport {ValidationError} from '../error/validation_error';\nimport {validateString} from './validate_string';\n\nexport function validateGlyphsUrl(options) {\n const value = options.value;\n const key = options.key;\n\n const errors = validateString(options);\n if (errors.length) return errors;\n\n if (value.indexOf('{fontstack}') === -1) {\n errors.push(new ValidationError(key, value, '\"glyphs\" url must include a \"{fontstack}\" token'));\n }\n\n if (value.indexOf('{range}') === -1) {\n errors.push(new ValidationError(key, value, '\"glyphs\" url must include a \"{range}\" token'));\n }\n\n return errors;\n}\n","\nimport {validateConstants} from './validate/validate_constants';\nimport {validate} from './validate/validate';\nimport {latest} from './reference/latest';\n\nimport {validateSource} from './validate/validate_source';\nimport {validateLight} from './validate/validate_light';\nimport {validateSky} from './validate/validate_sky';\nimport {validateTerrain} from './validate/validate_terrain';\nimport {validateState} from './validate/validate_state';\nimport {validateLayer} from './validate/validate_layer';\nimport {validateFilter} from './validate/validate_filter';\nimport {validatePaintProperty} from './validate/validate_paint_property';\nimport {validateLayoutProperty} from './validate/validate_layout_property';\nimport {validateSprite} from './validate/validate_sprite';\nimport {validateGlyphsUrl} from './validate/validate_glyphs_url';\nimport {ValidationError} from './error/validation_error';\nimport type {StyleSpecification} from './types.g';\n\n/**\n * Validate a MapLibre style against the style specification.\n * Use this when running in the browser.\n *\n * @param style - The style to be validated.\n * @param styleSpec - The style specification to validate against.\n * If omitted, the latest style spec is used.\n * @returns an array of errors, or an empty array if no errors are found.\n * @example\n * const validate = require('@maplibre/maplibre-gl-style-spec/').validateStyleMin;\n * const errors = validate(style);\n */\nexport function validateStyleMin(style: StyleSpecification, styleSpec = latest): Array<ValidationError> {\n\n let errors: ValidationError[] = [];\n\n errors = errors.concat(validate({\n key: '',\n value: style,\n valueSpec: styleSpec.$root,\n styleSpec,\n style,\n validateSpec: validate,\n objectElementValidators: {\n glyphs: validateGlyphsUrl,\n '*'() {\n return [];\n }\n }\n }));\n\n if (style['constants']) {\n errors = errors.concat(validateConstants({\n key: 'constants',\n value: style['constants'],\n style,\n styleSpec,\n validateSpec: validate,\n }));\n }\n\n return sortErrors(errors);\n}\n\nvalidateStyleMin.source = wrapCleanErrors(injectValidateSpec(validateSource));\nvalidateStyleMin.sprite = wrapCleanErrors(injectValidateSpec(validateSprite));\nvalidateStyleMin.glyphs = wrapCleanErrors(injectValidateSpec(validateGlyphsUrl));\nvalidateStyleMin.light = wrapCleanErrors(injectValidateSpec(validateLight));\nvalidateStyleMin.sky = wrapCleanErrors(injectValidateSpec(validateSky));\nvalidateStyleMin.terrain = wrapCleanErrors(injectValidateSpec(validateTerrain));\nvalidateStyleMin.state = wrapCleanErrors(injectValidateSpec(validateState));\nvalidateStyleMin.layer = wrapCleanErrors(injectValidateSpec(validateLayer));\nvalidateStyleMin.filter = wrapCleanErrors(injectValidateSpec(validateFilter));\nvalidateStyleMin.paintProperty = wrapCleanErrors(injectValidateSpec(validatePaintProperty));\nvalidateStyleMin.layoutProperty = wrapCleanErrors(injectValidateSpec(validateLayoutProperty));\n\nfunction injectValidateSpec(validator: (options: object) => any) {\n return function(options) {\n return validator(Object.assign({}, options, {validateSpec: validate}));\n };\n}\n\nfunction sortErrors(errors) {\n return [].concat(errors).sort((a, b) => {\n return a.line - b.line;\n });\n}\n\nfunction wrapCleanErrors(inner) {\n return function(...args) {\n return sortErrors(inner.apply(this, args));\n };\n}\n","// Note: This regex matches even invalid JSON strings, but since were\n// working on the output of `JSON.stringify` we know that only valid strings\n// are present (unless the user supplied a weird `options.indent` but in\n// that case we dont care since the output would be invalid anyway).\nconst stringOrChar = /(\"(?:[^\\\\\"]|\\\\.)*\")|[:,]/g;\n\nexport default function stringify(passedObj, options = {}) {\n const indent = JSON.stringify(\n [1],\n undefined,\n options.indent === undefined ? 2 : options.indent\n ).slice(2, -3);\n\n const maxLength =\n indent === \"\"\n ? Infinity\n : options.maxLength === undefined\n ? 80\n : options.maxLength;\n\n let { replacer } = options;\n\n return (function _stringify(obj, currentIndent, reserved) {\n if (obj && typeof obj.toJSON === \"function\") {\n obj = obj.toJSON();\n }\n\n const string = JSON.stringify(obj, replacer);\n\n if (string === undefined) {\n return string;\n }\n\n const length = maxLength - currentIndent.length - reserved;\n\n if (string.length <= length) {\n const prettified = string.replace(\n stringOrChar,\n (match, stringLiteral) => {\n return stringLiteral || `${match} `;\n }\n );\n if (prettified.length <= length) {\n return prettified;\n }\n }\n\n if (replacer != null) {\n obj = JSON.parse(string);\n replacer = undefined;\n }\n\n if (typeof obj === \"object\" && obj !== null) {\n const nextIndent = currentIndent + indent;\n const items = [];\n let index = 0;\n let start;\n let end;\n\n if (Array.isArray(obj)) {\n start = \"[\";\n end = \"]\";\n const { length } = obj;\n for (; index < length; index++) {\n items.push(\n _stringify(obj[index], nextIndent, index === length - 1 ? 0 : 1) ||\n \"null\"\n );\n }\n } else {\n start = \"{\";\n end = \"}\";\n const keys = Object.keys(obj);\n const { length } = keys;\n for (; index < length; index++) {\n const key = keys[index];\n const keyPart = `${JSON.stringify(key)}: `;\n const value = _stringify(\n obj[key],\n nextIndent,\n keyPart.length + (index === length - 1 ? 0 : 1)\n );\n if (value !== undefined) {\n items.push(keyPart + value);\n }\n }\n }\n\n if (items.length > 0) {\n return [start, indent + items.join(`,\\n${nextIndent}`), end].join(\n `\\n${currentIndent}`\n );\n }\n }\n\n return string;\n })(passedObj, \"\", 0);\n}\n","\nimport {latest} from './reference/latest';\nimport stringifyPretty from 'json-stringify-pretty-compact';\n\nfunction sortKeysBy(obj, reference) {\n const result = {};\n for (const key in reference) {\n if (obj[key] !== undefined) {\n result[key] = obj[key];\n }\n }\n for (const key in obj) {\n if (result[key] === undefined) {\n result[key] = obj[key];\n }\n }\n return result;\n}\n\n/**\n * Format a MapLibre Style. Returns a stringified style with its keys\n * sorted in the same order as the reference style.\n *\n * The optional `space` argument is passed to\n * [`JSON.stringify`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify)\n * to generate formatted output.\n *\n * If `space` is unspecified, a default of `2` spaces will be used.\n *\n * @private\n * @param {Object} style a MapLibre Style\n * @param {number} [space] space argument to pass to `JSON.stringify`\n * @returns {string} stringified formatted JSON\n * @example\n * var fs = require('fs');\n * var format = require('maplibre-gl-style-spec').format;\n * var style = fs.readFileSync('./source.json', 'utf8');\n * fs.writeFileSync('./dest.json', format(style));\n * fs.writeFileSync('./dest.min.json', format(style, 0));\n */\nexport function format(style, space = 2) {\n style = sortKeysBy(style, latest.$root);\n\n if (style.layers) {\n style.layers = style.layers.map((layer) => sortKeysBy(layer, latest.layer));\n }\n\n return stringifyPretty(style, {indent: space});\n}\n\n","\nimport {eachSource, eachLayer, eachProperty} from '../visit';\nimport type {LayerSpecification, StyleSpecification} from '../types.g';\n\nfunction eachLayout(layer: LayerSpecification, callback: (_: LayerSpecification['layout'], __: string) => void) {\n for (const k in layer) {\n if (k.indexOf('layout') === 0) {\n callback(layer[k], k);\n }\n }\n}\n\nfunction eachPaint(layer: LayerSpecification, callback: (_: LayerSpecification['paint'], __: string) => void) {\n for (const k in layer) {\n if (k.indexOf('paint') === 0) {\n callback(layer[k], k);\n }\n }\n}\n\nfunction resolveConstant(style: StyleSpecification, value: any) {\n if (typeof value === 'string' && value[0] === '@') {\n return resolveConstant(style, (style as any).constants[value]);\n } else {\n return value;\n }\n}\n\nfunction isFunction(value) {\n return Array.isArray(value.stops);\n}\n\nfunction renameProperty(obj: Object, from: string, to: string) {\n obj[to] = obj[from]; delete obj[from];\n}\n\nexport function migrateV8(style: StyleSpecification) {\n style.version = 8;\n\n // Rename properties, reverse coordinates in source and layers\n eachSource(style, (source) => {\n if (source.type === 'video' && source['url'] !== undefined) {\n renameProperty(source, 'url', 'urls');\n }\n if (source.type === 'video') {\n source.coordinates.forEach((coord) => {\n return coord.reverse();\n });\n }\n });\n\n eachLayer(style, (layer) => {\n eachLayout(layer, (layout) => {\n if (layout['symbol-min-distance'] !== undefined) {\n renameProperty(layout, 'symbol-min-distance', 'symbol-spacing');\n }\n });\n\n eachPaint(layer, (paint) => {\n if (paint['background-image'] !== undefined) {\n renameProperty(paint, 'background-image', 'background-pattern');\n }\n if (paint['line-image'] !== undefined) {\n renameProperty(paint, 'line-image', 'line-pattern');\n }\n if (paint['fill-image'] !== undefined) {\n renameProperty(paint, 'fill-image', 'fill-pattern');\n }\n });\n });\n\n // Inline Constants\n eachProperty(style, {paint: true, layout: true}, (property) => {\n const value = resolveConstant(style, property.value);\n\n if (isFunction(value)) {\n value.stops.forEach((stop) => {\n stop[1] = resolveConstant(style, stop[1]);\n });\n }\n\n property.set(value);\n });\n delete style['constants'];\n\n eachLayer(style, (layer) => {\n // get rid of text-max-size, icon-max-size\n // turn text-size, icon-size into layout properties\n // https://github.com/mapbox/mapbox-gl-style-spec/issues/255\n\n eachLayout(layer, (layout) => {\n delete layout['text-max-size'];\n delete layout['icon-max-size'];\n });\n\n eachPaint(layer, (paint) => {\n if (paint['text-size']) {\n if (!layer.layout) layer.layout = {};\n layer.layout['text-size'] = paint['text-size'];\n delete paint['text-size'];\n }\n\n if (paint['icon-size']) {\n if (!layer.layout) layer.layout = {};\n layer.layout['icon-size'] = paint['icon-size'];\n delete paint['icon-size'];\n }\n });\n });\n\n function migrateFontStack(font) {\n function splitAndTrim(string) {\n return string.split(',').map((s) => {\n return s.trim();\n });\n }\n\n if (Array.isArray(font)) {\n // Assume it's a previously migrated font-array.\n return font;\n\n } else if (typeof font === 'string') {\n return splitAndTrim(font);\n\n } else if (typeof font === 'object') {\n font.stops.forEach((stop) => {\n stop[1] = splitAndTrim(stop[1]);\n });\n return font;\n\n } else {\n throw new Error('unexpected font value');\n }\n }\n\n eachLayer(style, (layer) => {\n eachLayout(layer, (layout) => {\n if (layout['text-font']) {\n layout['text-font'] = migrateFontStack(layout['text-font']);\n }\n });\n });\n\n // Reverse order of symbol layers. This is an imperfect migration.\n //\n // The order of a symbol layer in the layers list affects two things:\n // - how it is drawn relative to other layers (like oneway arrows below bridges)\n // - the placement priority compared to other layers\n //\n // It's impossible to reverse the placement priority without breaking the draw order\n // in some cases. This migration only reverses the order of symbol layers that\n // are above all other types of layers.\n //\n // Symbol layers that are at the top of the map preserve their priority.\n // Symbol layers that are below another type (line, fill) of layer preserve their draw order.\n\n let firstSymbolLayer = 0;\n for (let i = style.layers.length - 1; i >= 0; i--) {\n const layer = style.layers[i];\n if (layer.type !== 'symbol') {\n firstSymbolLayer = i + 1;\n break;\n }\n }\n\n const symbolLayers = style.layers.splice(firstSymbolLayer);\n symbolLayers.reverse();\n style.layers = style.layers.concat(symbolLayers);\n\n return style;\n}\n","import {eachLayer, eachProperty} from '../visit';\nimport {isExpression} from '../expression';\nimport {convertFunction, convertTokenString} from '../function/convert';\nimport {convertFilter} from '../feature_filter/convert';\n\nimport type {FilterSpecification, LayerSpecification, StyleSpecification} from '../types.g';\n\n/**\n * Migrate the given style object in place to use expressions. Specifically,\n * this will convert (a) \"stop\" functions, and (b) legacy filters to their\n * expression equivalents.\n * @param style The style object to migrate.\n * @returns The migrated style object.\n */\nexport function expressions(style: StyleSpecification) {\n const converted = [];\n\n eachLayer(style, (layer: LayerSpecification & { filter?: FilterSpecification }) => {\n if (layer.filter) {\n layer.filter = convertFilter(layer.filter);\n }\n });\n\n eachProperty(style, {paint: true, layout: true}, ({path, key, value, reference, set}) => {\n if (isExpression(value) || key.endsWith('-transition') || reference === null) return;\n if (typeof value === 'object' && !Array.isArray(value)) {\n set(convertFunction(value, reference));\n converted.push(path.join('.'));\n } else if ((reference as any).tokens && typeof value === 'string') {\n set(convertTokenString(value));\n }\n });\n\n return style;\n}\n\n","/**\n * Migrate color style values to supported format.\n *\n * @param colorToMigrate Color value to migrate, could be a string or an expression.\n * @returns Color style value in supported format.\n */\nexport function migrateColors<T>(colorToMigrate: T): T {\n return JSON.parse(migrateHslColors(JSON.stringify(colorToMigrate)));\n}\n\n/**\n * Created to migrate from colors supported by the former CSS color parsing\n * library `csscolorparser` but not compliant with the CSS Color specification,\n * like `hsl(900, 0.15, 90%)`.\n *\n * @param colorToMigrate Serialized color style value.\n * @returns A serialized color style value in which all non-standard hsl color values\n * have been converted to a format that complies with the CSS Color specification.\n *\n * @example\n * migrateHslColors('\"hsl(900, 0.15, 90%)\"'); // returns '\"hsl(900, 15%, 90%)\"'\n * migrateHslColors('\"hsla(900, .15, .9)\"'); // returns '\"hsl(900, 15%, 90%)\"'\n * migrateHslColors('\"hsl(900, 15%, 90%)\"'); // returns '\"hsl(900, 15%, 90%)\"' - no changes\n */\nfunction migrateHslColors(colorToMigrate: string): string {\n return colorToMigrate.replace(/\"hsla?\\((.+?)\\)\"/gi, (match, hslArgs) => {\n const argsMatch = hslArgs.match(/^(.+?)\\s*,\\s*(.+?)\\s*,\\s*(.+?)(?:\\s*,\\s*(.+))?$/i);\n if (argsMatch) {\n let [h, s, l, a] = argsMatch.slice(1);\n [s, l] = [s, l].map(v => v.endsWith('%') ? v : `${parseFloat(v) * 100}%`);\n return `\"hsl${typeof a === 'string' ? 'a' : ''}(${[h, s, l, a].filter(Boolean).join(',')})\"`;\n }\n return match;\n });\n}\n","\nimport {migrateV8} from './migrate/v8';\nimport {expressions} from './migrate/expressions';\nimport {migrateColors} from './migrate/migrate_colors';\nimport {eachProperty} from './visit';\nimport type {StyleSpecification} from './types.g';\n\n/**\n * Migrate a Mapbox/MapLibre GL Style to the latest version.\n *\n * @param style - a MapLibre Style\n * @returns a migrated style\n * @example\n * const fs = require('fs');\n * const migrate = require('@maplibre/maplibre-gl-style-spec').migrate;\n * const style = fs.readFileSync('./style.json', 'utf8');\n * fs.writeFileSync('./style.json', JSON.stringify(migrate(style)));\n */\nexport function migrate(style: StyleSpecification): StyleSpecification {\n let migrated = false;\n\n if (style.version as any === 7) {\n style = migrateV8(style);\n migrated = true;\n }\n\n if (style.version === 8) {\n migrated = !!expressions(style);\n migrated = true;\n }\n\n eachProperty(style, {paint: true, layout: true}, ({value, reference, set}) => {\n if (reference?.type === 'color') {\n set(migrateColors(value));\n }\n });\n\n if (!migrated) {\n throw new Error(`Cannot migrate from ${style.version}`);\n }\n\n return style;\n}\n","import v8Spec from './reference/v8.json' with {type: 'json'};\nconst v8 = v8Spec as any;\nimport latest from './reference/latest';\nimport {derefLayers} from './deref';\nimport {diff} from './diff';\nimport {ValidationError} from './error/validation_error';\nimport {ParsingError} from './error/parsing_error';\nimport {FeatureState, StyleExpression, isExpression, isZoomExpression, createExpression, createPropertyExpression, normalizePropertyExpression, ZoomConstantExpression, ZoomDependentExpression, StylePropertyFunction, Feature, GlobalProperties, SourceExpression, CompositeExpression, StylePropertyExpression} from './expression';\nimport {featureFilter, isExpressionFilter} from './feature_filter';\n\nimport {convertFilter} from './feature_filter/convert';\nimport {Color} from './expression/types/color';\nimport {Padding} from './expression/types/padding';\nimport {NumberArray} from './expression/types/number_array';\nimport {ColorArray} from './expression/types/color_array';\nimport {VariableAnchorOffsetCollection} from './expression/types/variable_anchor_offset_collection';\nimport {Formatted, FormattedSection} from './expression/types/formatted';\nimport {createFunction, isFunction} from './function';\nimport {convertFunction} from './function/convert';\nimport {eachSource, eachLayer, eachProperty} from './visit';\nimport {ResolvedImage} from './expression/types/resolved_image';\nimport {supportsPropertyExpression} from './util/properties';\nimport {IMercatorCoordinate, ICanonicalTileID, ILngLat, ILngLatLike} from './tiles_and_coordinates';\nimport {EvaluationContext} from './expression/evaluation_context';\nimport {FormattedType, NullType, Type, typeToString, ColorType, ProjectionDefinitionType} from './expression/types';\n\nimport {expressions} from './expression/definitions';\nimport {Interpolate} from './expression/definitions/interpolate';\nimport {interpolateFactory, type InterpolationType} from './expression/definitions/interpolate';\n\nimport {groupByLayout} from './group_by_layout';\nimport {emptyStyle} from './empty';\nimport {validateStyleMin} from './validate_style.min';\nimport {Step} from './expression/definitions/step';\nimport {typeOf} from './expression/values';\nimport {FormatExpression} from './expression/definitions/format';\nimport {Literal} from './expression/definitions/literal';\nimport {CompoundExpression} from './expression/compound_expression';\nimport {ColorSpecification, PaddingSpecification, NumberArraySpecification, ColorArraySpecification, ProjectionDefinitionSpecification, VariableAnchorOffsetCollectionSpecification} from './types.g';\nimport {format} from './format';\nimport {validate} from './validate/validate';\nimport {migrate} from './migrate';\nimport {classifyRings} from './util/classify_rings';\nimport {ProjectionDefinition} from './expression/types/projection_definition';\n\ntype ExpressionType = 'data-driven' | 'cross-faded' | 'cross-faded-data-driven' | 'color-ramp' | 'data-constant' | 'constant';\ntype ExpressionParameters = Array<'zoom' | 'feature' | 'feature-state' | 'heatmap-density' | 'elevation' | 'line-progress'>;\n\ntype ExpressionSpecificationDefinition = {\n interpolated: boolean;\n parameters: ExpressionParameters;\n};\n\nexport type StylePropertySpecification = {\n type: 'number';\n 'property-type': ExpressionType;\n expression?: ExpressionSpecificationDefinition;\n transition: boolean;\n default?: number;\n} | {\n type: 'string';\n 'property-type': ExpressionType;\n expression?: ExpressionSpecificationDefinition;\n transition: boolean;\n default?: string;\n tokens?: boolean;\n} | {\n type: 'boolean';\n 'property-type': ExpressionType;\n expression?: ExpressionSpecificationDefinition;\n transition: boolean;\n default?: boolean;\n} | {\n type: 'enum';\n 'property-type': ExpressionType;\n expression?: ExpressionSpecificationDefinition;\n values: {[_: string]: {}};\n transition: boolean;\n default?: string;\n} | {\n type: 'color';\n 'property-type': ExpressionType;\n expression?: ExpressionSpecificationDefinition;\n transition: boolean;\n default?: ColorSpecification;\n overridable: boolean;\n} | {\n type: 'array';\n value: 'number';\n 'property-type': ExpressionType;\n expression?: ExpressionSpecificationDefinition;\n length?: number;\n transition: boolean;\n default?: Array<number>;\n} | {\n type: 'array';\n value: 'string';\n 'property-type': ExpressionType;\n expression?: ExpressionSpecificationDefinition;\n length?: number;\n transition: boolean;\n default?: Array<string>;\n} | {\n type: 'padding';\n 'property-type': ExpressionType;\n expression?: ExpressionSpecificationDefinition;\n transition: boolean;\n default?: PaddingSpecification;\n} | {\n type: 'numberArray';\n 'property-type': ExpressionType;\n expression?: ExpressionSpecificationDefinition;\n transition: boolean;\n default?: NumberArraySpecification;\n} | {\n type: 'colorArray';\n 'property-type': ExpressionType;\n expression?: ExpressionSpecificationDefinition;\n transition: boolean;\n default?: ColorArraySpecification;\n} | {\n type: 'variableAnchorOffsetCollection';\n 'property-type': ExpressionType;\n expression?: ExpressionSpecificationDefinition;\n transition: boolean;\n default?: VariableAnchorOffsetCollectionSpecification;\n} | {\n type: 'projectionDefinition';\n 'property-type': ExpressionType;\n expression?: ExpressionSpecificationDefinition;\n transition: boolean;\n default?: ProjectionDefinitionSpecification;\n};\n\nconst expression = {\n StyleExpression,\n StylePropertyFunction,\n ZoomConstantExpression,\n ZoomDependentExpression,\n createExpression,\n createPropertyExpression,\n isExpression,\n isExpressionFilter,\n isZoomExpression,\n normalizePropertyExpression,\n};\n\nconst styleFunction = {\n convertFunction,\n createFunction,\n isFunction\n};\n\nconst visit = {eachLayer, eachProperty, eachSource};\n\nexport {\n Interpolate,\n InterpolationType,\n ValidationError,\n ParsingError,\n FeatureState,\n ProjectionDefinition,\n Color,\n Step,\n CompoundExpression,\n Padding,\n NumberArray,\n ColorArray,\n VariableAnchorOffsetCollection,\n Formatted,\n ResolvedImage,\n Feature,\n EvaluationContext,\n GlobalProperties,\n SourceExpression,\n CompositeExpression,\n FormattedSection,\n IMercatorCoordinate,\n ICanonicalTileID,\n ILngLat,\n ILngLatLike,\n StyleExpression,\n ZoomConstantExpression,\n Literal,\n Type,\n StylePropertyFunction,\n StylePropertyExpression,\n ZoomDependentExpression,\n FormatExpression,\n\n latest,\n\n validateStyleMin,\n groupByLayout,\n emptyStyle,\n derefLayers,\n normalizePropertyExpression,\n isExpression,\n isZoomExpression,\n diff,\n supportsPropertyExpression,\n convertFunction,\n createExpression,\n isFunction, createFunction,\n createPropertyExpression,\n convertFilter,\n featureFilter,\n typeOf,\n typeToString as toString,\n format,\n validate,\n migrate,\n classifyRings,\n\n ProjectionDefinitionType,\n ColorType,\n interpolateFactory as interpolates,\n v8,\n NullType,\n styleFunction as function,\n visit,\n expressions,\n expression,\n FormattedType,\n};\n"],"names":["types","expressions","isFunction","coalesce","convertFilter","convertComparisonOp","convertInOp","convertHasOp","Reference","stringify","latest","extend","stringifyPretty"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACO,MAAM,aAAa,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,cAAc,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,CAAC;;ACKzG,SAAS,KAAK,CAAC,KAAmB,EAAE,MAA0B,EAAA;IAC1D,MAAM,MAAM,GAAgC,EAAE;AAE9C,IAAA,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE;AACnB,QAAA,IAAI,CAAC,KAAK,KAAK,EAAE;YACb,MAAM,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;QACxB;IACJ;AAEA,IAAA,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,KAAI;AACxB,QAAA,IAAI,CAAC,IAAI,MAAM,EAAE;YACb,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;QACzB;AACJ,IAAA,CAAC,CAAC;AAEF,IAAA,OAAO,MAA4B;AACvC;AAEA;;;;;;;;;AASG;AACG,SAAU,WAAW,CAAC,MAAsB,EAAA;AAC9C,IAAA,MAAM,GAAG,MAAM,CAAC,KAAK,EAAE;IAEvB,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;AAC/B,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACpC,QAAA,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;IACjC;AAEA,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACpC,QAAA,IAAI,KAAK,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE;YACpB,MAAM,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACpD;IACJ;AAEA,IAAA,OAAO,MAAM;AACjB;;ACjDA;;;;AAIG;AAEG,SAAU,SAAS,CAAC,CAAkB,EAAE,CAAkB,EAAA;AAC5D,IAAA,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;AAClB,QAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM;AAAE,YAAA,OAAO,KAAK;AAC5D,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC/B,YAAA,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAAE,gBAAA,OAAO,KAAK;QAC5C;AACA,QAAA,OAAO,IAAI;IACf;AACA,IAAA,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,IAAI,EAAE;AACnD,QAAA,IAAI,EAAE,OAAO,CAAC,KAAK,QAAQ,CAAC;AAAE,YAAA,OAAO,KAAK;QAC1C,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;QAC3B,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM;AAAE,YAAA,OAAO,KAAK;AACvD,QAAA,KAAK,MAAM,GAAG,IAAI,CAAC,EAAE;AACjB,YAAA,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;AAAE,gBAAA,OAAO,KAAK;QAChD;AACA,QAAA,OAAO,IAAI;IACf;IACA,OAAO,CAAC,KAAK,CAAC;AAClB;;ACmBA;;;;AAIG;AACH,SAAS,UAAU,CAA2B,QAAuC,EAAE,OAAuB,EAAA;AAC1G,IAAA,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC;AAC1B;AAEA,SAAS,SAAS,CAAC,QAAgB,EAAE,KAA2C,EAAE,QAAuC,EAAA;IACrH,UAAU,CAAC,QAAQ,EAAE,EAAC,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAC,CAAC;AACnF;AAEA,SAAS,YAAY,CAAC,QAAgB,EAAE,QAAuC,EAAE,cAAwC,EAAA;AACrH,IAAA,UAAU,CAAC,QAAQ,EAAE,EAAC,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC,QAAQ,CAAC,EAAC,CAAC;AACjE,IAAA,cAAc,CAAC,QAAQ,CAAC,GAAG,IAAI;AACnC;AAEA,SAAS,YAAY,CAAC,QAAgB,EAAE,KAA2C,EAAE,QAAuC,EAAE,cAAwC,EAAA;AAClK,IAAA,YAAY,CAAC,QAAQ,EAAE,QAAQ,EAAE,cAAc,CAAC;AAChD,IAAA,SAAS,CAAC,QAAQ,EAAE,KAAK,EAAE,QAAQ,CAAC;AACxC;AAEA,SAAS,gBAAgB,CAAC,MAA4C,EAAE,KAA2C,EAAE,QAAgB,EAAA;AACjI,IAAA,IAAI,IAAI;AACR,IAAA,KAAK,IAAI,IAAI,MAAM,CAAC,QAAQ,CAAC,EAAE;AAC3B,QAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC;YAAE;QACnE,IAAI,IAAI,KAAK,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE;AAC9E,YAAA,OAAO,KAAK;QAChB;IACJ;AACA,IAAA,KAAK,IAAI,IAAI,KAAK,CAAC,QAAQ,CAAC,EAAE;AAC1B,QAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC;YAAE;QAClE,IAAI,IAAI,KAAK,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE;AAC9E,YAAA,OAAO,KAAK;QAChB;IACJ;AACA,IAAA,OAAO,IAAI;AACf;AAEA,SAAS,WAAW,CAAC,MAA4C,EAAE,KAA2C,EAAE,QAAuC,EAAE,cAAwC,EAAA;AAC7L,IAAA,MAAM,GAAG,MAAM,IAAI,EAA0C;AAC7D,IAAA,KAAK,GAAG,KAAK,IAAI,EAA0C;AAE3D,IAAA,IAAI,QAAgB;;AAGpB,IAAA,KAAK,QAAQ,IAAI,MAAM,EAAE;AACrB,QAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC;YAAE;AAC7D,QAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,EAAE;AACxD,YAAA,YAAY,CAAC,QAAQ,EAAE,QAAQ,EAAE,cAAc,CAAC;QACpD;IACJ;;AAGA,IAAA,KAAK,QAAQ,IAAI,KAAK,EAAE;AACpB,QAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC;YAAE;AAC5D,QAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE;AACzD,YAAA,SAAS,CAAC,QAAQ,EAAE,KAAK,EAAE,QAAQ,CAAC;QACxC;AAAO,aAAA,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE;YACtD,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,KAAK,SAAS,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC,IAAI,KAAK,SAAS,IAAI,gBAAgB,CAAC,MAAM,EAAE,KAAK,EAAE,QAAQ,CAAC,EAAE;gBACxH,UAAU,CAAC,QAAQ,EAAE,EAAC,OAAO,EAAE,sBAAsB,EAAE,IAAI,EAAE,CAAC,QAAQ,EAAG,KAAK,CAAC,QAAQ,CAAgC,CAAC,IAAI,CAAC,EAAC,CAAC;YACnI;iBAAO;;gBAEH,YAAY,CAAC,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,cAAc,CAAC;YAC3D;QACJ;IACJ;AACJ;AAEA,SAAS,wBAAwB,CAAC,MAAkE,EAAE,KAAgE,EAAE,QAAuC,EAAE,OAAe,EAAE,KAAoB,EAAE,OAAiD,EAAA;AACrS,IAAA,MAAM,GAAG,MAAM,IAAI,EAAgE;AACnF,IAAA,KAAK,GAAG,KAAK,IAAI,EAAgE;AAEjF,IAAA,KAAK,MAAM,IAAI,IAAI,MAAM,EAAE;AACvB,QAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC;YAAE;AACzD,QAAA,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE;YACvC,QAAQ,CAAC,IAAI,CAAC,EAAC,OAAO,EAAE,IAAI,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,EAAC,CAAC;QACvE;IACJ;AACA,IAAA,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;QACtB,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC;YAAE;AAC9G,QAAA,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE;YACvC,QAAQ,CAAC,IAAI,CAAC,EAAC,OAAO,EAAE,IAAI,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,EAAC,CAAC;QACvE;IACJ;AACJ;AAEA,SAAS,OAAO,CAAC,KAAyB,EAAA;IACtC,OAAO,KAAK,CAAC,EAAE;AACnB;AACA,SAAS,SAAS,CAAC,KAA0C,EAAE,KAAyB,EAAA;AACpF,IAAA,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,KAAK;AACvB,IAAA,OAAO,KAAK;AAChB;AAEA,SAAS,UAAU,CAAC,MAA4B,EAAE,KAA2B,EAAE,QAAuC,EAAA;AAClH,IAAA,MAAM,GAAG,MAAM,IAAI,EAAE;AACrB,IAAA,KAAK,GAAG,KAAK,IAAI,EAAE;;IAGnB,MAAM,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC;IACvC,MAAM,UAAU,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC;;IAGrC,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,EAAE,CAAC;IAChD,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,SAAS,EAAE,EAAE,CAAC;;AAG9C,IAAA,MAAM,OAAO,GAAG,WAAW,CAAC,KAAK,EAAE;;IAGnC,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;AAEjC,IAAA,IAAI,OAAe;AACnB,IAAA,IAAI,WAAsE;AAC1E,IAAA,IAAI,UAAqE;AACzE,IAAA,IAAI,mBAA2B;AAC/B,IAAA,IAAI,IAAY;;AAGhB,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAChD,QAAA,OAAO,GAAG,WAAW,CAAC,CAAC,CAAC;AACxB,QAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,EAAE;AAC5D,YAAA,UAAU,CAAC,QAAQ,EAAE,EAAC,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,OAAO,CAAC,EAAC,CAAC;AAC/D,YAAA,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;QAClD;aAAO;;AAEH,YAAA,CAAC,EAAE;QACP;IACJ;;AAGA,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;;QAE/C,OAAO,GAAG,UAAU,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC;QAE/C,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,OAAO;YAAE;AAEjD,QAAA,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,EAAE;;AAE5D,YAAA,UAAU,CAAC,QAAQ,EAAE,EAAC,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,OAAO,CAAC,EAAC,CAAC;AAC/D,YAAA,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;QACvE;aAAO;;AAEH,YAAA,CAAC,EAAE;QACP;;QAGA,mBAAmB,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;QACjD,UAAU,CAAC,QAAQ,EAAE,EAAC,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,mBAAmB,CAAC,EAAC,CAAC;AAC7F,QAAA,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC;AAC9C,QAAA,KAAK,CAAC,OAAO,CAAC,GAAG,IAAI;IACzB;;AAGA,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACxC,QAAA,OAAO,GAAG,UAAU,CAAC,CAAC,CAAC;AACvB,QAAA,WAAW,GAAG,WAAW,CAAC,OAAO,CAAC;AAClC,QAAA,UAAU,GAAG,UAAU,CAAC,OAAO,CAAC;;QAGhC,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,SAAS,CAAC,WAAW,EAAE,UAAU,CAAC;YAAE;;;AAI1D,QAAA,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,cAAc,CAAC,EAAE,UAAU,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,EAAE,UAAU,CAAC,IAAI,CAAC,EAAE;AAC3K,YAAA,UAAU,CAAC,QAAQ,EAAE,EAAC,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,OAAO,CAAC,EAAC,CAAC;;;AAG/D,YAAA,mBAAmB,GAAG,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AAC/D,YAAA,UAAU,CAAC,QAAQ,EAAE,EAAC,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,UAAU,EAAE,mBAAmB,CAAC,EAAC,CAAC;YACpF;QACJ;;AAGA,QAAA,wBAAwB,CAAC,WAAW,CAAC,MAAM,EAAE,UAAU,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,mBAAmB,CAAC;AAC7G,QAAA,wBAAwB,CAAC,WAAW,CAAC,KAAK,EAAE,UAAU,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,kBAAkB,CAAC;AAC1G,QAAA,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC,EAAE;AACnD,YAAA,UAAU,CAAC,QAAQ,EAAE,EAAC,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,OAAO,EAAE,UAAU,CAAC,MAAM,CAAC,EAAC,CAAC;QACpF;QACA,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,OAAO,EAAE,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,OAAO,EAAE,UAAU,CAAC,OAAO,CAAC,EAAE;YAC5G,UAAU,CAAC,QAAQ,EAAE,EAAC,OAAO,EAAE,mBAAmB,EAAE,IAAI,EAAE,CAAC,OAAO,EAAE,UAAU,CAAC,OAAO,EAAE,UAAU,CAAC,OAAO,CAAC,EAAC,CAAC;QACjH;;AAGA,QAAA,KAAK,IAAI,IAAI,WAAW,EAAE;AACtB,YAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC;gBAAE;YAC9D,IAAI,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,QAAQ;gBAC1D,IAAI,KAAK,UAAU,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,SAAS;gBAAE;YACrE,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;gBAC9B,wBAAwB,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,UAAU,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,kBAAkB,CAAC;YACvH;AAAO,iBAAA,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE;gBACxD,UAAU,CAAC,QAAQ,EAAE,EAAC,OAAO,EAAE,kBAAkB,EAAE,IAAI,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC,EAAC,CAAC;YAChG;QACJ;AACA,QAAA,KAAK,IAAI,IAAI,UAAU,EAAE;YACrB,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC;gBAAE;YACxH,IAAI,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,QAAQ;gBAC1D,IAAI,KAAK,UAAU,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,SAAS;gBAAE;YACrE,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;gBAC9B,wBAAwB,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,UAAU,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,kBAAkB,CAAC;YACvH;AAAO,iBAAA,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE;gBACxD,UAAU,CAAC,QAAQ,EAAE,EAAC,OAAO,EAAE,kBAAkB,EAAE,IAAI,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC,EAAC,CAAC;YAChG;QACJ;IACJ;AACJ;AAEA;;;;;;;;;;;;;;;;;AAiBG;AACG,SAAU,IAAI,CAAC,MAA0B,EAAE,KAAyB,EAAA;AACtE,IAAA,IAAI,CAAC,MAAM;AAAE,QAAA,OAAO,CAAC,EAAC,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,KAAK,CAAC,EAAC,CAAC;IAE1D,IAAI,QAAQ,GAAkC,EAAE;AAEhD,IAAA,IAAI;;AAEA,QAAA,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,EAAE;AAC3C,YAAA,OAAO,CAAC,EAAC,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,KAAK,CAAC,EAAC,CAAC;QACjD;AACA,QAAA,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE;AACzC,YAAA,QAAQ,CAAC,IAAI,CAAC,EAAC,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,EAAC,CAAC;QAC/D;AACA,QAAA,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,EAAE;AACvC,YAAA,QAAQ,CAAC,IAAI,CAAC,EAAC,OAAO,EAAE,gBAAgB,EAAE,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,EAAC,CAAC;QACnE;AACA,QAAA,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,cAAc,EAAE,KAAK,CAAC,cAAc,CAAC,EAAE;AACzD,YAAA,QAAQ,CAAC,IAAI,CAAC,EAAC,OAAO,EAAE,mBAAmB,EAAE,IAAI,EAAE,CAAC,KAAK,CAAC,cAAc,CAAC,EAAC,CAAC;QAC/E;AACA,QAAA,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE;AACrC,YAAA,QAAQ,CAAC,IAAI,CAAC,EAAC,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,EAAC,CAAC;QAC3D;AACA,QAAA,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,EAAE;AAC3C,YAAA,QAAQ,CAAC,IAAI,CAAC,EAAC,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,EAAC,CAAC;QACjE;AACA,QAAA,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,EAAE;AACvC,YAAA,QAAQ,CAAC,IAAI,CAAC,EAAC,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,EAAC,CAAC;QAC7D;AACA,QAAA,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE;AACrC,YAAA,QAAQ,CAAC,IAAI,CAAC,EAAC,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,EAAC,CAAC;QAC3D;AACA,QAAA,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE;AACzC,YAAA,QAAQ,CAAC,IAAI,CAAC,EAAC,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,EAAC,CAAC;QAC/D;AACA,QAAA,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE;AACzC,YAAA,QAAQ,CAAC,IAAI,CAAC,EAAC,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,EAAC,CAAC;QAC/D;AACA,QAAA,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,EAAE;AACjD,YAAA,QAAQ,CAAC,IAAI,CAAC,EAAC,OAAO,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,EAAC,CAAC;QACvE;AACA,QAAA,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,EAAE;AACvC,YAAA,QAAQ,CAAC,IAAI,CAAC,EAAC,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,EAAC,CAAC;QAC7D;AACA,QAAA,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,EAAE;AAC3C,YAAA,QAAQ,CAAC,IAAI,CAAC,EAAC,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,EAAC,CAAC;QACjE;AACA,QAAA,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE;AACnC,YAAA,QAAQ,CAAC,IAAI,CAAC,EAAC,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,EAAC,CAAC;QACzD;AACA,QAAA,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,EAAE;AACjD,YAAA,QAAQ,CAAC,IAAI,CAAC,EAAC,OAAO,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,EAAC,CAAC;QACvE;;;;QAKA,MAAM,cAAc,GAAG,EAAE;;QAGzB,MAAM,yBAAyB,GAAG,EAAE;AACpC,QAAA,WAAW,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,yBAAyB,EAAE,cAAc,CAAC;;;;;;QAOrF,MAAM,YAAY,GAAG,EAAE;AACvB,QAAA,IAAI,MAAM,CAAC,MAAM,EAAE;YACf,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,KAAI;gBAC5B,IAAI,QAAQ,IAAI,KAAK,IAAI,cAAc,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;AACnD,oBAAA,QAAQ,CAAC,IAAI,CAAC,EAAC,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,EAAC,CAAC;gBAC7D;qBAAO;AACH,oBAAA,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC;gBAC5B;AACJ,YAAA,CAAC,CAAC;QACN;AACA,QAAA,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,yBAAyB,CAAC;;QAGrD,UAAU,CAAC,YAAY,EAAE,KAAK,CAAC,MAAM,EAAE,QAAQ,CAAC;IAEpD;IAAE,OAAO,CAAC,EAAE;;AAER,QAAA,OAAO,CAAC,IAAI,CAAC,+BAA+B,EAAE,CAAC,CAAC;AAChD,QAAA,QAAQ,GAAG,CAAC,EAAC,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,KAAK,CAAC,EAAC,CAAC;IACrD;AAEA,IAAA,OAAO,QAAQ;AACnB;;ACvWA;MAEa,eAAe,CAAA;AAKxB,IAAA,WAAA,CAAY,GAAW,EAAE,KAExB,EAAE,OAAe,EAAE,UAA0B,EAAA;AAC1C,QAAA,IAAI,CAAC,OAAO,GAAG,CAAC,GAAG,GAAG,CAAA,EAAG,GAAG,CAAA,EAAA,CAAI,GAAG,EAAE,IAAI,OAAO;AAChD,QAAA,IAAI,UAAU;AAAE,YAAA,IAAI,CAAC,UAAU,GAAG,UAAU;AAE5C,QAAA,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,QAAQ,EAAE;AACzD,YAAA,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,QAAQ;QAC9B;IACJ;AACH;;ACjBD;MAEa,YAAY,CAAA;AAKrB,IAAA,WAAA,CAAY,KAAY,EAAA;AACpB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK;AAClB,QAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO;QAC5B,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC;QAC/C,IAAI,CAAC,IAAI,GAAG,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC;IAClD;AACH;;SCbe,QAAQ,CAAC,MAAW,EAAE,GAAG,MAAkB,EAAA;AACvD,IAAA,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;AACxB,QAAA,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE;YACnB,MAAM,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;QACxB;IACJ;AACA,IAAA,OAAO,MAAM;AACjB;;ACPM,MAAO,sBAAuB,SAAQ,KAAK,CAAA;IAG7C,WAAA,CAAY,GAAW,EAAE,OAAe,EAAA;QACpC,KAAK,CAAC,OAAO,CAAC;AACd,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO;AACtB,QAAA,IAAI,CAAC,GAAG,GAAG,GAAG;IAClB;AACH;;ACND;;;AAGG;MACU,KAAK,CAAA;IAGd,WAAA,CAAY,MAAc,EAAE,QAAA,GAAwC,EAAE,EAAA;AAClE,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM;AACpB,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;QAClB,KAAK,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC,IAAI,QAAQ,EAAE;AACvC,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,UAAU;QACpC;IACJ;AAEA,IAAA,MAAM,CAAC,QAAqC,EAAA;AACxC,QAAA,OAAO,IAAI,KAAK,CAAC,IAAI,EAAE,QAAQ,CAAC;IACpC;AAEA,IAAA,GAAG,CAAC,IAAY,EAAA;AACZ,QAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;AAAE,YAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;QAAE;AACvD,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE;YAAE,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;QAAE;AACjD,QAAA,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,CAAA,oBAAA,CAAsB,CAAC;IAClD;AAEA,IAAA,GAAG,CAAC,IAAY,EAAA;AACZ,QAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;AAAE,YAAA,OAAO,IAAI;AACpC,QAAA,OAAO,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,KAAK;IACtD;AACH;;MC+BY,QAAQ,GAAG,EAAC,IAAI,EAAE,MAAM;AAC9B,MAAM,UAAU,GAAG,EAAC,IAAI,EAAE,QAAQ,EAAgB;AAClD,MAAM,UAAU,GAAG,EAAC,IAAI,EAAE,QAAQ,EAAgB;AAClD,MAAM,WAAW,GAAG,EAAC,IAAI,EAAE,SAAS,EAAiB;MAC/C,SAAS,GAAG,EAAC,IAAI,EAAE,OAAO;MAC1B,wBAAwB,GAAG,EAAC,IAAI,EAAE,sBAAsB;AAC9D,MAAM,UAAU,GAAG,EAAC,IAAI,EAAE,QAAQ,EAAgB;AAClD,MAAM,SAAS,GAAG,EAAC,IAAI,EAAE,OAAO,EAAe;AAC/C,MAAM,SAAS,GAAG,EAAC,IAAI,EAAE,OAAO,EAAe;AAC/C,MAAM,YAAY,GAAG,EAAC,IAAI,EAAE,UAAU,EAAkB;MAClD,aAAa,GAAG,EAAC,IAAI,EAAE,WAAW;AACxC,MAAM,WAAW,GAAG,EAAC,IAAI,EAAE,SAAS,EAAiB;AACrD,MAAM,cAAc,GAAG,EAAC,IAAI,EAAE,YAAY,EAAoB;AAC9D,MAAM,eAAe,GAAG,EAAC,IAAI,EAAE,aAAa,EAAqB;AACjE,MAAM,iBAAiB,GAAG,EAAC,IAAI,EAAE,eAAe,EAAuB;AACvE,MAAM,kCAAkC,GAAG,EAAC,IAAI,EAAE,gCAAgC,EAAwC;AAE3H,SAAU,KAAK,CAAiB,QAAW,EAAE,CAAiB,EAAA;IAChE,OAAO;AACH,QAAA,IAAI,EAAE,OAAO;QACb,QAAQ;QACR;KACH;AACL;AAEM,SAAU,YAAY,CAAC,IAAU,EAAA;AACnC,IAAA,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE;QACvB,MAAM,QAAQ,GAAG,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC;AAC5C,QAAA,OAAO,OAAO,IAAI,CAAC,CAAC,KAAK,QAAQ;AAC7B,YAAA,CAAA,MAAA,EAAS,QAAQ,CAAA,EAAA,EAAK,IAAI,CAAC,CAAC,CAAA,CAAA,CAAG;AAC/B,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,OAAO,GAAG,OAAO,GAAG,CAAA,MAAA,EAAS,QAAQ,GAAG;IACvE;SAAO;QACH,OAAO,IAAI,CAAC,IAAI;IACpB;AACJ;AAEA,MAAM,gBAAgB,GAAG;IACrB,QAAQ;IACR,UAAU;IACV,UAAU;IACV,WAAW;IACX,SAAS;IACT,wBAAwB;IACxB,aAAa;IACb,UAAU;IACV,KAAK,CAAC,SAAS,CAAC;IAChB,WAAW;IACX,eAAe;IACf,cAAc;IACd,iBAAiB;IACjB;CACH;AAED;;;;AAIG;AACG,SAAU,YAAY,CAAC,QAAc,EAAE,CAAO,EAAA;AAChD,IAAA,IAAI,CAAC,CAAC,IAAI,KAAK,OAAO,EAAE;;AAEpB,QAAA,OAAO,IAAI;IACf;AAAO,SAAA,IAAI,QAAQ,CAAC,IAAI,KAAK,OAAO,EAAE;AAClC,QAAA,IAAI,CAAC,CAAC,IAAI,KAAK,OAAO;aACjB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,KAAK,OAAO,KAAK,CAAC,YAAY,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC;AAC5F,aAAC,OAAO,QAAQ,CAAC,CAAC,KAAK,QAAQ,IAAI,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;AACxD,YAAA,OAAO,IAAI;QACf;IACJ;SAAO,IAAI,QAAQ,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,EAAE;AACjC,QAAA,OAAO,IAAI;IACf;AAAO,SAAA,IAAI,QAAQ,CAAC,IAAI,KAAK,OAAO,EAAE;AAClC,QAAA,KAAK,MAAM,UAAU,IAAI,gBAAgB,EAAE;YACvC,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,CAAC,CAAC,EAAE;AAC9B,gBAAA,OAAO,IAAI;YACf;QACJ;IACJ;IAEA,OAAO,CAAA,SAAA,EAAY,YAAY,CAAC,QAAQ,CAAC,CAAA,WAAA,EAAc,YAAY,CAAC,CAAC,CAAC,CAAA,SAAA,CAAW;AACrF;AAEM,SAAU,WAAW,CAAC,QAAc,EAAE,YAAyB,EAAA;AACjE,IAAA,OAAO,YAAY,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,IAAI,CAAC;AAC3D;AAEM,SAAU,iBAAiB,CAAC,QAAa,EAAE,YAA+B,EAAA;AAC5E,IAAA,OAAO,YAAY,CAAC,IAAI,CAAC,CAAC,IAAG;AACzB,QAAA,IAAI,CAAC,KAAK,MAAM,EAAE;YACd,OAAO,QAAQ,KAAK,IAAI;QAC5B;AAAO,aAAA,IAAI,CAAC,KAAK,OAAO,EAAE;AACtB,YAAA,OAAO,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC;QAClC;AAAO,aAAA,IAAI,CAAC,KAAK,QAAQ,EAAE;AACvB,YAAA,OAAO,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,OAAO,QAAQ,KAAK,QAAQ;QAC/E;aAAO;AACH,YAAA,OAAO,CAAC,KAAK,OAAO,QAAQ;QAChC;AACJ,IAAA,CAAC,CAAC;AACN;AAEA;;;;;;;;;;;;;;;;;;AAkBG;AACG,SAAU,UAAU,CAAiB,QAAc,EAAE,MAAS,EAAA;AAChE,IAAA,IAAI,QAAQ,CAAC,IAAI,KAAK,OAAO,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO,EAAE;AACtD,QAAA,OAAO,QAAQ,CAAC,QAAQ,CAAC,IAAI,KAAK,MAAM,CAAC,QAAQ,CAAC,IAAI,IAAI,OAAO,QAAQ,CAAC,CAAC,KAAK,QAAQ;IAC5F;AACA,IAAA,OAAO,QAAQ,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI;AACxC;;ACzJA;AACA,MAAM,EAAE,GAAG,OAAO,EACd,EAAE,GAAG,CAAC,EACN,EAAE,GAAG,OAAO,EACZ,EAAE,GAAG,CAAC,GAAG,EAAE,EACX,EAAE,GAAG,CAAC,GAAG,EAAE,EACX,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,EAChB,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EACjB,OAAO,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,EACvB,OAAO,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE;AAE3B,SAAS,cAAc,CAAC,KAAa,EAAA;AACjC,IAAA,KAAK,GAAG,KAAK,GAAG,GAAG;AACnB,IAAA,IAAI,KAAK,GAAG,CAAC,EAAE;QACX,KAAK,IAAI,GAAG;IAChB;AACA,IAAA,OAAO,KAAK;AAChB;AAEM,SAAU,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,CAAW,EAAA;AAC/C,IAAA,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;AACd,IAAA,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;AACd,IAAA,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IACd,IAAI,CAAC,EAAE,CAAC;IACR,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,SAAS,GAAG,CAAC,GAAG,SAAS,GAAG,CAAC,GAAG,SAAS,GAAG,CAAC,IAAI,EAAE,CAAC;IACvE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;AACpB,QAAA,CAAC,GAAG,CAAC,GAAG,CAAC;IACb;SAAO;AACH,QAAA,CAAC,GAAG,OAAO,CAAC,CAAC,SAAS,GAAG,CAAC,GAAG,SAAS,GAAG,CAAC,GAAG,SAAS,GAAG,CAAC,IAAI,EAAE,CAAC;AACjE,QAAA,CAAC,GAAG,OAAO,CAAC,CAAC,SAAS,GAAG,CAAC,GAAG,SAAS,GAAG,CAAC,GAAG,SAAS,GAAG,CAAC,IAAI,EAAE,CAAC;IACrE;AAEA,IAAA,MAAM,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,EAAE;AACtB,IAAA,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC;AACjE;AAEA,SAAS,OAAO,CAAC,CAAS,EAAA;AACtB,IAAA,OAAO,CAAC,CAAC,IAAI,OAAO,IAAI,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI,KAAK,EAAE,GAAG,CAAC;AAC1E;AAEA,SAAS,OAAO,CAAC,CAAS,EAAA;IACtB,OAAO,CAAC,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE;AACtD;AAEM,SAAU,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,CAAW,EAAA;IAC/C,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,GAAG,EAClB,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,EAC9B,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG;AAElC,IAAA,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC;AACnB,IAAA,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC;AACnB,IAAA,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC;IAEnB,OAAO;AACH,QAAA,OAAO,CAAC,SAAS,GAAG,CAAC,GAAG,SAAS,GAAG,CAAC,GAAG,SAAS,GAAG,CAAC,CAAC;AACtD,QAAA,OAAO,CAAC,UAAU,GAAG,CAAC,GAAG,SAAS,GAAG,CAAC,GAAG,SAAS,GAAG,CAAC,CAAC;AACvD,QAAA,OAAO,CAAC,SAAS,GAAG,CAAC,GAAG,SAAS,GAAG,CAAC,GAAG,SAAS,GAAG,CAAC,CAAC;QACtD,KAAK;KACR;AACL;AAEA,SAAS,OAAO,CAAC,CAAS,EAAA;AACtB,IAAA,CAAC,GAAG,CAAC,CAAC,IAAI,OAAO,IAAI,KAAK,GAAG,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,GAAG,KAAK;IACrE,OAAO,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACzC;AAEA,SAAS,OAAO,CAAC,CAAS,EAAA;IACtB,OAAO,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AAC/C;AAEM,SAAU,QAAQ,CAAC,QAAkB,EAAA;AACvC,IAAA,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,GAAG,QAAQ,CAAC,QAAQ,CAAC;AAC3C,IAAA,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAClC,IAAA,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,OAAO,CAAC,GAAG,GAAG;IAClF,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC;AAC3B;AAEM,SAAU,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,CAAW,EAAA;AAC/C,IAAA,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,OAAO;IAC9B,OAAO,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC;AACjE;AAEA;AACM,SAAU,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,CAAW,EAAA;AAC/C,IAAA,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC;IACrB,CAAC,IAAI,GAAG;IACR,CAAC,IAAI,GAAG;IAER,SAAS,CAAC,CAAC,CAAC,EAAA;QACR,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE;AAC3B,QAAA,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;QAChC,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IAC1D;AAEA,IAAA,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC;AACpC;;AC7HA;AACA,MAAM,cAAc,GACf,MAAM,CAAC,MAA2B;AACnC,IAAA,SAAS,cAAc,CAAmB,MAAS,EAAE,GAAgB,EAAA;AACjE,QAAA,OAAO,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC;AAC5D,IAAA,CAAC;AAEC,SAAU,MAAM,CAAmB,MAAS,EAAE,GAAgB,EAAA;AAChE,IAAA,OAAO,cAAc,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,SAAS;AAChE;;ACRA;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4BG;AACG,SAAU,aAAa,CAAC,KAAa,EAAA;IACvC,KAAK,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE;AAElC,IAAA,IAAI,KAAK,KAAK,aAAa,EAAE;QACzB,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IACvB;;IAGA,MAAM,gBAAgB,GAAG,MAAM,CAAC,WAAW,EAAE,KAAK,CAAC;IACnD,IAAI,gBAAgB,EAAE;QAClB,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,gBAAgB;AAClC,QAAA,OAAO,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC;IACzC;;AAGA,IAAA,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;QACvB,MAAM,SAAS,GAAG,8CAA8C;AAChE,QAAA,IAAI,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;AACvB,YAAA,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC;YACrC,IAAI,CAAC,GAAG,CAAC;YACT,OAAO;gBACH,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC;gBACnC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC;gBACnC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC;AACnC,gBAAA,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,IAAI,CAAC;aAC7C;QACL;IACJ;;AAGA,IAAA,IAAI,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE;QACzB,MAAM,SAAS,GAAG,mIAAmI;QACrJ,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC;QACvC,IAAI,QAAQ,EAAE;YACV,MAAM,CACF,CAAC;AACD,YAAA,CAAC;AACD,YAAA,EAAE;AACF,YAAA,EAAE;AACF,YAAA,CAAC;AACD,YAAA,EAAE;AACF,YAAA,EAAE;AACF,YAAA,CAAC;AACD,YAAA,EAAE;AACF,YAAA,EAAE;AACF,YAAA,CAAC;AACD,YAAA,EAAE;AACL,aAAA,GAAG,QAAQ;AAEZ,YAAA,MAAM,SAAS,GAAG,CAAC,EAAE,IAAI,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;YACrD,IACI,SAAS,KAAK,IAAI;AAClB,gBAAA,SAAS,KAAK,KAAK;AACnB,gBAAA,SAAS,KAAK,IAAI;gBAClB,SAAS,KAAK,KAAK,EACrB;AACE,gBAAA,MAAM,SAAS,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;AACvC,gBAAA,MAAM,QAAQ,GACV,CAAC,SAAS,KAAK,KAAK,IAAI,GAAG;AACvB,oBAAA,CAAC,SAAS,KAAK,EAAE,IAAI,GAAG,GAAG,CAAC;gBACpC,IAAI,QAAQ,EAAE;AACV,oBAAA,MAAM,IAAI,GAAa;wBACnB,KAAK,CAAC,CAAC,CAAC,GAAG,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC;wBAC1B,KAAK,CAAC,CAAC,CAAC,GAAG,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC;wBAC1B,KAAK,CAAC,CAAC,CAAC,GAAG,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC;AAC1B,wBAAA,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC;qBAC7B;AACD,oBAAA,IAAI,eAAe,CAAC,IAAI,CAAC,EAAE;AACvB,wBAAA,OAAO,IAAI;oBACf;;gBAEJ;;YAEJ;AACA,YAAA,OAAO;QACX;IACJ;;IAGA,MAAM,SAAS,GAAG,iIAAiI;IACnJ,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC;IACvC,IAAI,QAAQ,EAAE;QACV,MAAM,CACF,CAAC;AACD,QAAA,CAAC;AACD,QAAA,EAAE;AACF,QAAA,CAAC;AACD,QAAA,EAAE;AACF,QAAA,CAAC;AACD,QAAA,EAAE;AACF,QAAA,CAAC;AACD,QAAA,EAAE;AACL,SAAA,GAAG,QAAQ;AAEZ,QAAA,MAAM,SAAS,GAAG,CAAC,EAAE,IAAI,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;QACrD,IACI,SAAS,KAAK,IAAI;AAClB,YAAA,SAAS,KAAK,KAAK;AACnB,YAAA,SAAS,KAAK,IAAI;YAClB,SAAS,KAAK,KAAK,EACrB;AACE,YAAA,MAAM,IAAI,GAAa;AACnB,gBAAA,CAAC,CAAC;AACF,gBAAA,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC;AACjB,gBAAA,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC;AACjB,gBAAA,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC;aAC7B;AACD,YAAA,IAAI,eAAe,CAAC,IAAI,CAAC,EAAE;AACvB,gBAAA,OAAO,QAAQ,CAAC,IAAI,CAAC;YACzB;;QAEJ;;IAEJ;AACJ;AAEA,SAAS,QAAQ,CAAC,GAAW,EAAA;AACzB,IAAA,OAAO,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG;AACjD;AAEA,SAAS,UAAU,CAAC,CAAS,EAAE,YAAgC,EAAA;IAC3D,OAAO,KAAK,CAAC,YAAY,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AACpD;AAEA,SAAS,KAAK,CAAC,CAAS,EAAE,GAAW,EAAE,GAAW,EAAA;AAC9C,IAAA,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC;AAC1C;AAEA;;;;;;;AAOG;AACH,SAAS,eAAe,CAAC,KAAe,EAAA;IACpC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;AACpC;AAEA;;;;;;AAMG;AACH,MAAM,WAAW,GAA6C;AAC1D,IAAA,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;AAC1B,IAAA,YAAY,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;AAC7B,IAAA,IAAI,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC;AACnB,IAAA,UAAU,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;AAC3B,IAAA,KAAK,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;AACtB,IAAA,KAAK,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;AACtB,IAAA,MAAM,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;AACvB,IAAA,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AAChB,IAAA,cAAc,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;AAC/B,IAAA,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC;AACjB,IAAA,UAAU,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC;AAC1B,IAAA,KAAK,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC;AACpB,IAAA,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;AAC1B,IAAA,SAAS,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC;AACzB,IAAA,UAAU,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;AACzB,IAAA,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC;AACzB,IAAA,KAAK,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC;AACrB,IAAA,cAAc,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;AAC/B,IAAA,QAAQ,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;AACzB,IAAA,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC;AACtB,IAAA,IAAI,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC;AACnB,IAAA,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC;AACrB,IAAA,QAAQ,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC;AACvB,IAAA,aAAa,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC;AAC7B,IAAA,QAAQ,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;AACzB,IAAA,SAAS,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;AACtB,IAAA,QAAQ,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;AACzB,IAAA,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;AAC1B,IAAA,WAAW,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC;AAC1B,IAAA,cAAc,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC;AAC7B,IAAA,UAAU,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;AACzB,IAAA,UAAU,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC;AAC1B,IAAA,OAAO,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;AACpB,IAAA,UAAU,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;AAC3B,IAAA,YAAY,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;AAC7B,IAAA,aAAa,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC;AAC5B,IAAA,aAAa,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;AAC3B,IAAA,aAAa,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;AAC3B,IAAA,aAAa,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC;AAC5B,IAAA,UAAU,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC;AACzB,IAAA,QAAQ,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC;AACxB,IAAA,WAAW,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC;AAC1B,IAAA,OAAO,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;AACxB,IAAA,OAAO,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;AACxB,IAAA,UAAU,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC;AAC1B,IAAA,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC;AACxB,IAAA,WAAW,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;AAC5B,IAAA,WAAW,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC;AAC1B,IAAA,OAAO,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC;AACtB,IAAA,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;AAC1B,IAAA,UAAU,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;AAC3B,IAAA,IAAI,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;AACnB,IAAA,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC;AACzB,IAAA,IAAI,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;AACrB,IAAA,KAAK,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;AAClB,IAAA,WAAW,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC;AAC3B,IAAA,IAAI,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;AACrB,IAAA,QAAQ,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;AACzB,IAAA,OAAO,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;AACxB,IAAA,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC;AACxB,IAAA,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC;AACpB,IAAA,KAAK,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;AACtB,IAAA,KAAK,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;AACtB,IAAA,QAAQ,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;AACzB,IAAA,aAAa,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;AAC9B,IAAA,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;AACxB,IAAA,YAAY,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;AAC7B,IAAA,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;AAC1B,IAAA,UAAU,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;AAC3B,IAAA,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;AAC1B,IAAA,oBAAoB,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;AACrC,IAAA,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;AAC1B,IAAA,UAAU,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;AAC3B,IAAA,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;AAC1B,IAAA,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;AAC1B,IAAA,WAAW,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;AAC5B,IAAA,aAAa,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC;AAC7B,IAAA,YAAY,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;AAC7B,IAAA,cAAc,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;AAC/B,IAAA,cAAc,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;AAC/B,IAAA,cAAc,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;AAC/B,IAAA,WAAW,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;AAC5B,IAAA,IAAI,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;AACjB,IAAA,SAAS,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC;AACxB,IAAA,KAAK,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;AACtB,IAAA,OAAO,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC;AACtB,IAAA,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;AACnB,IAAA,gBAAgB,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;AACjC,IAAA,UAAU,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC;AACvB,IAAA,YAAY,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC;AAC5B,IAAA,YAAY,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;AAC7B,IAAA,cAAc,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC;AAC9B,IAAA,eAAe,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;AAChC,IAAA,iBAAiB,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC;AAChC,IAAA,eAAe,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC;AAC/B,IAAA,eAAe,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC;AAC/B,IAAA,YAAY,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC;AAC3B,IAAA,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;AAC1B,IAAA,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;AAC1B,IAAA,QAAQ,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;AACzB,IAAA,WAAW,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;AAC5B,IAAA,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC;AACjB,IAAA,OAAO,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;AACxB,IAAA,KAAK,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;AACpB,IAAA,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC;AACzB,IAAA,MAAM,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;AACrB,IAAA,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC;AACvB,IAAA,MAAM,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;AACvB,IAAA,aAAa,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;AAC9B,IAAA,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;AAC1B,IAAA,aAAa,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;AAC9B,IAAA,aAAa,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;AAC9B,IAAA,UAAU,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;AAC3B,IAAA,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;AAC1B,IAAA,IAAI,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC;AACpB,IAAA,IAAI,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;AACrB,IAAA,IAAI,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;AACrB,IAAA,UAAU,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;AAC3B,IAAA,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC;AACrB,IAAA,aAAa,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC;AAC7B,IAAA,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;AAChB,IAAA,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;AAC1B,IAAA,SAAS,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC;AACzB,IAAA,WAAW,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC;AAC1B,IAAA,MAAM,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;AACvB,IAAA,UAAU,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC;AAC1B,IAAA,QAAQ,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC;AACvB,IAAA,QAAQ,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;AACzB,IAAA,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC;AACrB,IAAA,MAAM,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;AACvB,IAAA,OAAO,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;AACxB,IAAA,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC;AACzB,IAAA,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;AAC1B,IAAA,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;AAC1B,IAAA,IAAI,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;AACrB,IAAA,WAAW,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC;AAC1B,IAAA,SAAS,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC;AACzB,IAAA,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;AACpB,IAAA,IAAI,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC;AACnB,IAAA,OAAO,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;AACxB,IAAA,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC;AACrB,IAAA,SAAS,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC;AACzB,IAAA,MAAM,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;AACvB,IAAA,KAAK,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;AACtB,IAAA,KAAK,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;AACtB,IAAA,UAAU,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;AAC3B,IAAA,MAAM,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;AACrB,IAAA,WAAW,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC;CAC9B;;SCxUe,iBAAiB,CAAC,IAAY,EAAE,EAAU,EAAE,CAAS,EAAA;IACjE,OAAO,IAAI,GAAG,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC;AACjC;SAEgB,gBAAgB,CAAqB,IAAO,EAAE,EAAK,EAAE,CAAS,EAAA;IAC1E,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAI;QACrB,OAAO,iBAAiB,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACzC,IAAA,CAAC,CAAM;AACX;;ACFA;;;;;;AAMG;AACG,SAAU,kCAAkC,CAAC,UAAkB,EAAA;IACjE,OAAO,UAAU,KAAK,KAAK,IAAI,UAAU,KAAK,KAAK,IAAI,UAAU,KAAK,KAAK;AAC/E;AAEA;;;;AAIG;MACU,KAAK,CAAA;AAOd;;;;;;;;AAQG;AACH,IAAA,WAAA,CAAY,CAAS,EAAE,CAAS,EAAE,CAAS,EAAE,KAAK,GAAG,CAAC,EAAE,aAAa,GAAG,IAAI,EAAA;AACxE,QAAA,IAAI,CAAC,CAAC,GAAG,CAAC;AACV,QAAA,IAAI,CAAC,CAAC,GAAG,CAAC;AACV,QAAA,IAAI,CAAC,CAAC,GAAG,CAAC;AACV,QAAA,IAAI,CAAC,CAAC,GAAG,KAAK;QAEd,IAAI,CAAC,aAAa,EAAE;AAChB,YAAA,IAAI,CAAC,CAAC,IAAI,KAAK;AACf,YAAA,IAAI,CAAC,CAAC,IAAI,KAAK;AACf,YAAA,IAAI,CAAC,CAAC,IAAI,KAAK;YAEf,IAAI,CAAC,KAAK,EAAE;;;;AAIR,gBAAA,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;YACjD;QACJ;IACJ;AAOA;;;;;;;;;;AAUG;IACH,OAAO,KAAK,CAAC,KAAwC,EAAA;;AAEjD,QAAA,IAAI,KAAK,YAAY,KAAK,EAAE;AACxB,YAAA,OAAO,KAAK;QAChB;AAEA,QAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;YAC3B;QACJ;AAEA,QAAA,MAAM,IAAI,GAAG,aAAa,CAAC,KAAK,CAAC;QACjC,IAAI,IAAI,EAAE;YACN,OAAO,IAAI,KAAK,CAAC,GAAG,IAAI,EAAE,KAAK,CAAC;QACpC;IACJ;AAEA;;;;AAIG;AACH,IAAA,IAAI,GAAG,GAAA;QACH,MAAM,EAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,GAAG,IAAI;AACzB,QAAA,MAAM,CAAC,GAAG,CAAC,IAAI,QAAQ,CAAC;QACxB,OAAO,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IAChE;AAEA;;;;AAIG;AACH,IAAA,IAAI,GAAG,GAAA;AACH,QAAA,OAAO,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC1D;AAEA;;;;AAIG;AACH,IAAA,IAAI,GAAG,GAAA;AACH,QAAA,OAAO,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC1D;AAEA;;;;;;;;;;;;;;;;;;AAkBG;IACK,eAAe,CAAI,SAAiB,EAAE,SAAY,EAAA;AACtD,QAAA,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,SAAS,EAAE,EAAC,KAAK,EAAE,SAAS,EAAC,CAAC;AAC1D,QAAA,OAAO,SAAS;IACpB;AAEA;;;;;;;;;;;AAWG;IACH,QAAQ,GAAA;AACJ,QAAA,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG;AAC7B,QAAA,OAAO,CAAA,KAAA,EAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA,CAAA,EAAI,CAAC,GAAG;IAC5E;IAEA,OAAO,WAAW,CAAC,IAAW,EAAE,EAAS,EAAE,CAAS,EAAE,QAAA,GAAoC,KAAK,EAAA;QAC3F,QAAQ,QAAQ;YACZ,KAAK,KAAK,EAAE;gBACR,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,GAAG,gBAAgB,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AAC9D,gBAAA,OAAO,IAAI,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC;YAC3C;YACA,KAAK,KAAK,EAAE;AACR,gBAAA,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG;AAChD,gBAAA,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG;;gBAG9C,IAAI,GAAG,EAAE,MAAM;AAEf,gBAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;AAC9B,oBAAA,IAAI,EAAE,GAAG,IAAI,GAAG,IAAI;oBACpB,IAAI,IAAI,GAAG,IAAI,IAAI,EAAE,GAAG,GAAG,EAAE;wBACzB,EAAE,IAAI,GAAG;oBACb;yBAAO,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,EAAE;wBACzC,EAAE,IAAI,GAAG;oBACb;AACA,oBAAA,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,EAAE;gBACvB;AAAO,qBAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;oBACrB,GAAG,GAAG,IAAI;AACV,oBAAA,IAAI,MAAM,KAAK,CAAC,IAAI,MAAM,KAAK,CAAC;wBAAE,MAAM,GAAG,OAAO;gBACtD;AAAO,qBAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;oBACrB,GAAG,GAAG,IAAI;AACV,oBAAA,IAAI,MAAM,KAAK,CAAC,IAAI,MAAM,KAAK,CAAC;wBAAE,MAAM,GAAG,OAAO;gBACtD;qBAAO;oBACH,GAAG,GAAG,GAAG;gBACb;gBAEA,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,GAAG,QAAQ,CAAC;oBAC9B,GAAG;AACH,oBAAA,MAAM,KAAA,IAAA,IAAN,MAAM,KAAA,MAAA,GAAN,MAAM,GAAI,iBAAiB,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;AAChD,oBAAA,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;AACpC,oBAAA,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;AACvC,iBAAA,CAAC;AACF,gBAAA,OAAO,IAAI,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC;YAC3C;YACA,KAAK,KAAK,EAAE;gBACR,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,GAAG,QAAQ,CAAC,gBAAgB,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AACxE,gBAAA,OAAO,IAAI,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC;YAC3C;;IAER;;AAlJO,KAAA,CAAA,KAAK,GAAG,IAAI,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AAC7B,KAAA,CAAA,KAAK,GAAG,IAAI,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AAC7B,KAAA,CAAA,WAAW,GAAG,IAAI,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AACnC,KAAA,CAAA,GAAG,GAAG,IAAI,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;;MC7DzB,QAAQ,CAAA;AAKjB,IAAA,WAAA,CAAY,aAAsB,EAAE,kBAA2B,EAAE,MAAqB,EAAA;AAClF,QAAA,IAAI,aAAa;AACb,YAAA,IAAI,CAAC,WAAW,GAAG,kBAAkB,GAAG,SAAS,GAAG,MAAM;;AAE1D,YAAA,IAAI,CAAC,WAAW,GAAG,kBAAkB,GAAG,QAAQ,GAAG,MAAM;AAE7D,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM;AACpB,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,EAAE,EAC5D,EAAC,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,KAAK,EAAE,QAAQ,EAAC,CAAC;IACzD;IAEA,OAAO,CAAC,GAAW,EAAE,GAAW,EAAA;QAC5B,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC;IAC1C;IAEA,cAAc,GAAA;;;AAGV,QAAA,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,EAAE;aAClD,eAAe,EAAE,CAAC,MAAM;IACjC;AACH;;ACvBM,MAAM,sBAAsB,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,CAAU;MAG7D,gBAAgB,CAAA;IAQzB,WAAA,CAAY,IAAY,EAAE,KAA2B,EAAE,KAAoB,EAAE,SAAwB,EAAE,SAAuB,EAAE,aAAmC,EAAA;AAC/J,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI;AAChB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK;AAClB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK;AAClB,QAAA,IAAI,CAAC,SAAS,GAAG,SAAS;AAC1B,QAAA,IAAI,CAAC,SAAS,GAAG,SAAS;AAC1B,QAAA,IAAI,CAAC,aAAa,GAAG,aAAa;IACtC;AACH;MAEY,SAAS,CAAA;AAGlB,IAAA,WAAA,CAAY,QAAiC,EAAA;AACzC,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ;IAC5B;IAEA,OAAO,UAAU,CAAC,WAAmB,EAAA;QACjC,OAAO,IAAI,SAAS,CAAC,CAAC,IAAI,gBAAgB,CAAC,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;IAC3F;IAEA,OAAO,GAAA;AACH,QAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC;AAAE,YAAA,OAAO,IAAI;AAC3C,QAAA,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC;AAC1B,aAAC,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC;IAC5F;IAEA,OAAO,OAAO,CAAC,IAAwB,EAAA;AACnC,QAAA,IAAI,IAAI,YAAY,SAAS,EAAE;AAC3B,YAAA,OAAO,IAAI;QACf;aAAO;AACH,YAAA,OAAO,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC;QACrC;IACJ;IAEA,QAAQ,GAAA;AACJ,QAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC;AAAE,YAAA,OAAO,EAAE;AACzC,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;IAC9D;AACH;;ACnDD;;;;AAIG;MACU,OAAO,CAAA;AAIhB,IAAA,WAAA,CAAY,MAAwC,EAAA;AAChD,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,KAAK,EAAsC;IACpE;AAEA;;;;AAIG;IACH,OAAO,KAAK,CAAC,KAA0C,EAAA;AACnD,QAAA,IAAI,KAAK,YAAY,OAAO,EAAE;AAC1B,YAAA,OAAO,KAAK;QAChB;;;AAIA,QAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AAC3B,YAAA,OAAO,IAAI,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;QACpD;QAEA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AACvB,YAAA,OAAO,SAAS;QACpB;AAEA,QAAA,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;AACtC,YAAA,OAAO,SAAS;QACpB;AAEA,QAAA,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE;AACrB,YAAA,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;AACzB,gBAAA,OAAO,SAAS;YACpB;QACJ;;AAGA,QAAA,QAAQ,KAAK,CAAC,MAAM;AAChB,YAAA,KAAK,CAAC;gBACF,KAAK,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;gBAChD;AACJ,YAAA,KAAK,CAAC;gBACF,KAAK,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;gBAChD;AACJ,YAAA,KAAK,CAAC;gBACF,KAAK,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;gBAChD;;AAGR,QAAA,OAAO,IAAI,OAAO,CAAC,KAAyC,CAAC;IACjE;IAEA,QAAQ,GAAA;QACJ,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC;IACtC;AAEA,IAAA,OAAO,WAAW,CAAC,IAAa,EAAE,EAAW,EAAE,CAAS,EAAA;AACpD,QAAA,OAAO,IAAI,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IACnE;AACH;;AClED;;;;AAIG;MACU,WAAW,CAAA;AAGpB,IAAA,WAAA,CAAY,MAAgB,EAAA;AACxB,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,KAAK,EAAE;IAChC;AAEA;;;;AAIG;IACH,OAAO,KAAK,CAAC,KAA8C,EAAA;AACvD,QAAA,IAAI,KAAK,YAAY,WAAW,EAAE;AAC9B,YAAA,OAAO,KAAK;QAChB;;AAGA,QAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AAC3B,YAAA,OAAO,IAAI,WAAW,CAAC,CAAC,KAAK,CAAC,CAAC;QACnC;QAEA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AACvB,YAAA,OAAO,SAAS;QACpB;AAEA,QAAA,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE;AACrB,YAAA,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;AACzB,gBAAA,OAAO,SAAS;YACpB;QACJ;AAEA,QAAA,OAAO,IAAI,WAAW,CAAC,KAAK,CAAC;IACjC;IAEA,QAAQ,GAAA;QACJ,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC;IACtC;AAEA,IAAA,OAAO,WAAW,CAAC,IAAiB,EAAE,EAAe,EAAE,CAAS,EAAA;AAC5D,QAAA,OAAO,IAAI,WAAW,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IACvE;AACH;;AC/CD;;;;AAIG;MACU,UAAU,CAAA;AAGnB,IAAA,WAAA,CAAY,MAAe,EAAA;AACvB,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,KAAK,EAAE;IAChC;AAEA;;;;AAIG;IACH,OAAO,KAAK,CAAC,KAA6C,EAAA;AACtD,QAAA,IAAI,KAAK,YAAY,UAAU,EAAE;AAC7B,YAAA,OAAO,KAAK;QAChB;;AAGA,QAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;YAC3B,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC;YACrC,IAAI,CAAC,UAAU,EAAE;AACb,gBAAA,OAAO,SAAS;YACpB;AACA,YAAA,OAAO,IAAI,UAAU,CAAC,CAAC,UAAU,CAAC,CAAC;QACvC;QAEA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AACvB,YAAA,OAAO,SAAS;QACpB;QAEA,MAAM,MAAM,GAAY,EAAE;AAE1B,QAAA,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE;AACrB,YAAA,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;AACzB,gBAAA,OAAO,SAAS;YACpB;YACA,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC;YACnC,IAAG,CAAC,UAAU,EAAE;AACZ,gBAAA,OAAO,SAAS;YACpB;AACA,YAAA,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC;QAC3B;AAEA,QAAA,OAAO,IAAI,UAAU,CAAC,MAAM,CAAC;IACjC;IAEA,QAAQ,GAAA;QACJ,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC;IACtC;IAEA,OAAO,WAAW,CAAC,IAAgB,EAAE,EAAc,EAAE,CAAS,EAAE,QAAA,GAAoC,KAAK,EAAA;QACrG,MAAO,MAAM,GAAG,EAAa;AAC7B,QAAA,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE;AACxC,YAAA,MAAM,IAAI,KAAK,CAAC,CAAA,2CAAA,EAA8C,IAAI,CAAC,MAAM,CAAC,MAAM,CAAA,KAAA,EAAQ,EAAE,CAAC,MAAM,CAAC,MAAM,CAAA,sBAAA,CAAwB,CAAC;QACrI;AACA,QAAA,KAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACxC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC;QAC7E;AACA,QAAA,OAAO,IAAI,UAAU,CAAC,MAAM,CAAC;IACjC;AACH;;ACnEK,MAAO,YAAa,SAAQ,KAAK,CAAA;AACnC,IAAA,WAAA,CAAY,OAAe,EAAA;QACvB,KAAK,CAAC,OAAO,CAAC;AACd,QAAA,IAAI,CAAC,IAAI,GAAG,cAAc;IAC9B;IAEA,MAAM,GAAA;QACF,OAAO,IAAI,CAAC,OAAO;IACvB;AACH;;ACLD;AACA,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,WAAW,EAAE,aAAa,EAAE,cAAc,CAAC,CAAC;AAE7H;;;;AAIG;MACU,8BAA8B,CAAA;AAIvC,IAAA,WAAA,CAAY,MAAmD,EAAA;AAC3D,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,KAAK,EAAE;IAChC;IAEA,OAAO,KAAK,CAAC,KAAoF,EAAA;AAC7F,QAAA,IAAI,KAAK,YAAY,8BAA8B,EAAE;AACjD,YAAA,OAAO,KAAK;QAChB;AAEA,QAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;YACrB,KAAK,CAAC,MAAM,GAAG,CAAC;AAChB,YAAA,KAAK,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC,EAAE;AACxB,YAAA,OAAO,SAAS;QACpB;AAEA,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;;AAEtC,YAAA,MAAM,WAAW,GAAG,KAAK,CAAC,CAAC,CAAC;YAC5B,MAAM,WAAW,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC;AAEhC,YAAA,IAAI,OAAO,WAAW,KAAK,QAAQ,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE;AAC9D,gBAAA,OAAO,SAAS;YACpB;AAEA,YAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,WAAW,CAAC,CAAC,CAAC,KAAK,QAAQ,IAAI,OAAO,WAAW,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE;AACrI,gBAAA,OAAO,SAAS;YACpB;QACJ;AAEA,QAAA,OAAO,IAAI,8BAA8B,CAAC,KAAK,CAAC;IACpD;IAEA,QAAQ,GAAA;QACJ,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC;IACtC;AAEA,IAAA,OAAO,WAAW,CAAC,IAAoC,EAAE,EAAkC,EAAE,CAAS,EAAA;AAClG,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM;AAC9B,QAAA,MAAM,QAAQ,GAAG,EAAE,CAAC,MAAM;QAE1B,IAAI,UAAU,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM,EAAE;AACvC,YAAA,MAAM,IAAI,YAAY,CAAC,CAAA,qDAAA,EAAwD,IAAI,CAAC,QAAQ,EAAE,CAAA,MAAA,EAAS,EAAE,CAAC,QAAQ,EAAE,CAAA,CAAE,CAAC;QAC3H;QAEA,MAAM,MAAM,GAAgD,EAAE;AAE9D,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;;YAE3C,IAAI,UAAU,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE;AAC/B,gBAAA,MAAM,IAAI,YAAY,CAAC,iEAAiE,CAAC,CAAA,GAAA,EAAM,UAAU,CAAC,CAAC,CAAC,CAAA,KAAA,EAAQ,CAAC,MAAM,QAAQ,CAAC,CAAC,CAAC,CAAA,CAAE,CAAC;YAC7I;YACA,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;;AAG1B,YAAA,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,UAAU,CAAC,CAAC,GAAG,CAAC,CAAqB;AACtD,YAAA,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAqB;YACpD,MAAM,CAAC,IAAI,CAAC,CAAC,iBAAiB,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,iBAAiB,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;QAC7E;AAEA,QAAA,OAAO,IAAI,8BAA8B,CAAC,MAAM,CAAC;IACrD;AACH;;MCxEY,aAAa,CAAA;AAItB,IAAA,WAAA,CAAY,OAA6B,EAAA;AACrC,QAAA,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI;AACxB,QAAA,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS;IACtC;IAEA,QAAQ,GAAA;QACJ,OAAO,IAAI,CAAC,IAAI;IACpB;IAEA,OAAO,UAAU,CAAC,IAAY,EAAA;AAC1B,QAAA,IAAI,CAAC,IAAI;YAAE,OAAO,IAAI,CAAC;QACvB,OAAO,IAAI,aAAa,CAAC,EAAC,IAAI,EAAE,SAAS,EAAE,KAAK,EAAC,CAAC;IACtD;AACH;;MCtBY,oBAAoB,CAAA;AAK7B,IAAA,WAAA,CAAY,IAAY,EAAE,EAAU,EAAE,UAAkB,EAAA;AACpD,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI;AAChB,QAAA,IAAI,CAAC,EAAE,GAAG,EAAE;AACZ,QAAA,IAAI,CAAC,UAAU,GAAG,UAAU;IAChC;AAEA,IAAA,OAAO,WAAW,CAAC,IAAY,EAAE,EAAU,EAAE,CAAS,EAAA;QAClD,OAAO,IAAI,oBAAoB,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;IAChD;IAEA,OAAO,KAAK,CAAC,KAAW,EAAA;AACpB,QAAA,IAAI,KAAK,YAAY,oBAAoB,EAAE;AACvC,YAAA,OAAO,KAAK;QAChB;AACA,QAAA,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,QAAQ,IAAI,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,QAAQ,IAAI,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE;AAC5I,YAAA,OAAO,IAAI,oBAAoB,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;QACjE;QAEA,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,OAAO,KAAK,CAAC,EAAE,KAAK,QAAQ,IAAI,OAAO,KAAK,CAAC,UAAU,KAAK,QAAQ,EAAE;AACrI,YAAA,OAAO,IAAI,oBAAoB,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,UAAU,CAAC;QAC3E;AAEA,QAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;YAC3B,OAAO,IAAI,oBAAoB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;QACpD;AACA,QAAA,OAAO,SAAS;IACpB;AACH;;AClBK,SAAU,YAAY,CAAC,CAAU,EAAE,CAAU,EAAE,CAAU,EAAE,CAAW,EAAA;AACxE,IAAA,IAAI,EACA,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG;QAC3C,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG;AAC3C,QAAA,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,CAC9C,EAAE;AACC,QAAA,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,QAAQ,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QAC9D,OAAO,CAAA,oBAAA,EAAuB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,iDAAiD;IACnG;IAEA,IAAI,EACA,OAAO,CAAC,KAAK,WAAW,KAAK,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAC1E,EAAE;AACC,QAAA,OAAO,uBAAuB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,iCAAiC;IAC1F;AAEA,IAAA,OAAO,IAAI;AACf;AAMM,SAAU,OAAO,CAAC,KAAc,EAAA;IAClC,IAAI,KAAK,KAAK,IAAI;QACd,OAAO,KAAK,KAAK,QAAQ;QACzB,OAAO,KAAK,KAAK,SAAS;QAC1B,OAAO,KAAK,KAAK,QAAQ;AACzB,QAAA,KAAK,YAAY,oBAAoB;AACrC,QAAA,KAAK,YAAY,KAAK;AACtB,QAAA,KAAK,YAAY,QAAQ;AACzB,QAAA,KAAK,YAAY,SAAS;AAC1B,QAAA,KAAK,YAAY,OAAO;AACxB,QAAA,KAAK,YAAY,WAAW;AAC5B,QAAA,KAAK,YAAY,UAAU;AAC3B,QAAA,KAAK,YAAY,8BAA8B;QAC/C,KAAK,YAAY,aAAa,EAAE;AAChC,QAAA,OAAO,IAAI;IACf;AAAO,SAAA,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AAC7B,QAAA,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;AACtB,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;AAChB,gBAAA,OAAO,KAAK;YAChB;QACJ;AACA,QAAA,OAAO,IAAI;IACf;AAAO,SAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AAClC,QAAA,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE;YACrB,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE;AACtB,gBAAA,OAAO,KAAK;YAChB;QACJ;AACA,QAAA,OAAO,IAAI;IACf;SAAO;AACH,QAAA,OAAO,KAAK;IAChB;AACJ;AAEM,SAAU,MAAM,CAAC,KAAY,EAAA;AAC/B,IAAA,IAAI,KAAK,KAAK,IAAI,EAAE;AAChB,QAAA,OAAO,QAAQ;IACnB;AAAO,SAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AAClC,QAAA,OAAO,UAAU;IACrB;AAAO,SAAA,IAAI,OAAO,KAAK,KAAK,SAAS,EAAE;AACnC,QAAA,OAAO,WAAW;IACtB;AAAO,SAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AAClC,QAAA,OAAO,UAAU;IACrB;AAAO,SAAA,IAAI,KAAK,YAAY,KAAK,EAAE;AAC/B,QAAA,OAAO,SAAS;IACpB;AAAO,SAAA,IAAI,KAAK,YAAY,oBAAoB,EAAE;AAC9C,QAAA,OAAO,wBAAwB;IACnC;AAAO,SAAA,IAAI,KAAK,YAAY,QAAQ,EAAE;AAClC,QAAA,OAAO,YAAY;IACvB;AAAO,SAAA,IAAI,KAAK,YAAY,SAAS,EAAE;AACnC,QAAA,OAAO,aAAa;IACxB;AAAO,SAAA,IAAI,KAAK,YAAY,OAAO,EAAE;AACjC,QAAA,OAAO,WAAW;IACtB;AAAO,SAAA,IAAI,KAAK,YAAY,WAAW,EAAE;AACrC,QAAA,OAAO,eAAe;IAC1B;AAAO,SAAA,IAAI,KAAK,YAAY,UAAU,EAAE;AACpC,QAAA,OAAO,cAAc;IACzB;AAAO,SAAA,IAAI,KAAK,YAAY,8BAA8B,EAAE;AACxD,QAAA,OAAO,kCAAkC;IAC7C;AAAO,SAAA,IAAI,KAAK,YAAY,aAAa,EAAE;AACvC,QAAA,OAAO,iBAAiB;IAC5B;AAAO,SAAA,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AAC7B,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM;AAC3B,QAAA,IAAI,QAAiC;AAErC,QAAA,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;AACtB,YAAA,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC;YACtB,IAAI,CAAC,QAAQ,EAAE;gBACX,QAAQ,GAAG,CAAC;YAChB;AAAO,iBAAA,IAAI,QAAQ,KAAK,CAAC,EAAE;gBACvB;YACJ;iBAAO;gBACH,QAAQ,GAAG,SAAS;gBACpB;YACJ;QACJ;QAEA,OAAO,KAAK,CAAC,QAAQ,IAAI,SAAS,EAAE,MAAM,CAAC;IAC/C;SAAO;AACH,QAAA,OAAO,UAAU;IACrB;AACJ;AAEM,SAAU,aAAa,CAAC,KAAY,EAAA;AACtC,IAAA,MAAM,IAAI,GAAG,OAAO,KAAK;AACzB,IAAA,IAAI,KAAK,KAAK,IAAI,EAAE;AAChB,QAAA,OAAO,EAAE;IACb;AAAO,SAAA,IAAI,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,SAAS,EAAE;AACrE,QAAA,OAAO,MAAM,CAAC,KAAK,CAAC;IACxB;AAAO,SAAA,IAAI,KAAK,YAAY,KAAK,IAAI,KAAK,YAAY,oBAAoB,IAAI,KAAK,YAAY,SAAS,IAAI,KAAK,YAAY,OAAO,IAAI,KAAK,YAAY,WAAW,IAAI,KAAK,YAAY,UAAU,IAAI,KAAK,YAAY,8BAA8B,IAAI,KAAK,YAAY,aAAa,EAAE;AACtR,QAAA,OAAO,KAAK,CAAC,QAAQ,EAAE;IAC3B;SAAO;AACH,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;IAChC;AACJ;;MC5Ha,OAAO,CAAA;IAIhB,WAAA,CAAY,IAAU,EAAE,KAAY,EAAA;AAChC,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI;AAChB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK;IACtB;AAEA,IAAA,OAAO,KAAK,CAAC,IAA4B,EAAE,OAAuB,EAAA;AAC9D,QAAA,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;AACjB,YAAA,OAAO,OAAO,CAAC,KAAK,CAAC,CAAA,8DAAA,EAAiE,IAAI,CAAC,MAAM,GAAG,CAAC,CAAA,SAAA,CAAW,CAAS;AAE7H,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACjB,YAAA,OAAO,OAAO,CAAC,KAAK,CAAC,eAAe,CAAS;AAEjD,QAAA,MAAM,KAAK,GAAI,IAAI,CAAC,CAAC,CAAS;AAC9B,QAAA,IAAI,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC;;AAGxB,QAAA,MAAM,QAAQ,GAAG,OAAO,CAAC,YAAY;AACrC,QAAA,IACI,IAAI,CAAC,IAAI,KAAK,OAAO;YACrB,IAAI,CAAC,CAAC,KAAK,CAAC;YACZ,QAAQ;YACR,QAAQ,CAAC,IAAI,KAAK,OAAO;AACzB,aAAC,OAAO,QAAQ,CAAC,CAAC,KAAK,QAAQ,IAAI,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC,EACtD;YACE,IAAI,GAAG,QAAQ;QACnB;AAEA,QAAA,OAAO,IAAI,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC;IACnC;IAEA,QAAQ,GAAA;QACJ,OAAO,IAAI,CAAC,KAAK;IACrB;AAEA,IAAA,SAAS,KAAI;IAEb,aAAa,GAAA;AACT,QAAA,OAAO,IAAI;IACf;AACH;;AC/BD,MAAMA,OAAK,GAAG;AACV,IAAA,MAAM,EAAE,UAAU;AAClB,IAAA,MAAM,EAAE,UAAU;AAClB,IAAA,OAAO,EAAE,WAAW;AACpB,IAAA,MAAM,EAAE;CACX;MAEY,SAAS,CAAA;IAIlB,WAAA,CAAY,IAAU,EAAE,IAAuB,EAAA;AAC3C,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI;AAChB,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI;IACpB;AAEA,IAAA,OAAO,KAAK,CAAC,IAA4B,EAAE,OAAuB,EAAA;AAC9D,QAAA,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;AACf,YAAA,OAAO,OAAO,CAAC,KAAK,CAAC,iCAAiC,CAAS;QAEnE,IAAI,CAAC,GAAG,CAAC;AACT,QAAA,IAAI,IAAI;AAER,QAAA,MAAM,IAAI,GAAY,IAAI,CAAC,CAAC,CAAS;AACrC,QAAA,IAAI,IAAI,KAAK,OAAO,EAAE;AAClB,YAAA,IAAI,QAAQ;AACZ,YAAA,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;AACjB,gBAAA,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC;AACpB,gBAAA,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,EAAE,IAAI,IAAIA,OAAK,CAAC,IAAI,IAAI,KAAK,QAAQ;oBACjE,OAAO,OAAO,CAAC,KAAK,CAAC,0EAA0E,EAAE,CAAC,CAAS;AAC/G,gBAAA,QAAQ,GAAGA,OAAK,CAAC,IAAI,CAAC;AACtB,gBAAA,CAAC,EAAE;YACP;iBAAO;gBACH,QAAQ,GAAG,SAAS;YACxB;AAEA,YAAA,IAAI,CAAC;AACL,YAAA,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;AACjB,gBAAA,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI;AAChB,qBAAC,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ;AACxB,wBAAA,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC;AACX,wBAAA,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EACtC;oBACE,OAAO,OAAO,CAAC,KAAK,CAAC,mEAAmE,EAAE,CAAC,CAAS;gBACxG;AACA,gBAAA,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;AACX,gBAAA,CAAC,EAAE;YACP;AAEA,YAAA,IAAI,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC7B;aAAO;AACH,YAAA,IAAI,CAACA,OAAK,CAAC,IAAI,CAAC;AAAE,gBAAA,MAAM,IAAI,KAAK,CAAC,gCAAgC,IAAI,CAAA,CAAE,CAAC;AACzE,YAAA,IAAI,GAAGA,OAAK,CAAC,IAAI,CAAC;QACtB;QAEA,MAAM,MAAM,GAAG,EAAE;QACjB,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACzB,YAAA,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC;AAClD,YAAA,IAAI,CAAC,KAAK;AAAE,gBAAA,OAAO,IAAI;AACvB,YAAA,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;QACtB;AAEA,QAAA,OAAO,IAAI,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC;IACtC;AAEA,IAAA,QAAQ,CAAC,GAAsB,EAAA;AAC3B,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACvC,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC;AACxC,YAAA,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;YACpD,IAAI,CAAC,KAAK,EAAE;AACR,gBAAA,OAAO,KAAK;YAChB;iBAAO,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;gBACnC,MAAM,IAAI,YAAY,CAAC,CAAA,6BAAA,EAAgC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAA,SAAA,CAAW,CAAC;YACxI;QACJ;QAEA,MAAM,IAAI,KAAK,EAAE;IACrB;AAEA,IAAA,SAAS,CAAC,EAA2B,EAAA;AACjC,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;IACzB;IAEA,aAAa,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,GAAG,CAAC,aAAa,EAAE,CAAC;IACtD;AACH;;ACzFD,MAAM,KAAK,GAAG;AACV,IAAA,YAAY,EAAE,WAAW;AACzB,IAAA,UAAU,EAAE,SAAS;AACrB,IAAA,WAAW,EAAE,UAAU;AACvB,IAAA,WAAW,EAAE;CAChB;AAED;;;;;;AAMG;MACU,QAAQ,CAAA;IAIjB,WAAA,CAAY,IAAU,EAAE,IAAuB,EAAA;AAC3C,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI;AAChB,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI;IAEpB;AAEA,IAAA,OAAO,KAAK,CAAC,IAA4B,EAAE,OAAuB,EAAA;AAC9D,QAAA,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;AACf,YAAA,OAAO,OAAO,CAAC,KAAK,CAAC,iCAAiC,CAAS;AAEnE,QAAA,MAAM,IAAI,GAAY,IAAI,CAAC,CAAC,CAAS;AACrC,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;AAAE,YAAA,MAAM,IAAI,KAAK,CAAC,eAAe,IAAI,CAAA,qCAAA,CAAuC,CAAC;AAC7F,QAAA,IAAI,CAAC,IAAI,KAAK,YAAY,IAAI,IAAI,KAAK,WAAW,KAAK,IAAI,CAAC,MAAM,KAAK,CAAC;AACpE,YAAA,OAAO,OAAO,CAAC,KAAK,CAAC,wBAAwB,CAAS;AAE1D,QAAA,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;QAExB,MAAM,MAAM,GAAG,EAAE;AACjB,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAClC,YAAA,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC;AAClD,YAAA,IAAI,CAAC,KAAK;AAAE,gBAAA,OAAO,IAAI;AACvB,YAAA,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;QACtB;AAEA,QAAA,OAAO,IAAI,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACrC;AAEA,IAAA,QAAQ,CAAC,GAAsB,EAAA;AAC3B,QAAA,QAAQ,IAAI,CAAC,IAAI,CAAC,IAAI;AAClB,YAAA,KAAK,SAAS;AACV,gBAAA,OAAO,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;YAC9C,KAAK,OAAO,EAAE;AACV,gBAAA,IAAI,KAAK;AACT,gBAAA,IAAI,KAAK;AACT,gBAAA,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE;AACzB,oBAAA,KAAK,GAAG,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC;oBACzB,KAAK,GAAG,IAAI;AACZ,oBAAA,IAAI,KAAK,YAAY,KAAK,EAAE;AACxB,wBAAA,OAAO,KAAK;oBAChB;AAAO,yBAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;wBAClC,MAAM,CAAC,GAAG,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC;AAC/B,wBAAA,IAAI,CAAC;AAAE,4BAAA,OAAO,CAAC;oBACnB;AAAO,yBAAA,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AAC7B,wBAAA,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;4BACtC,KAAK,GAAG,sBAAsB,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA,mEAAA,CAAqE;wBAC5H;6BAAO;4BACH,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;wBAChE;wBACA,IAAI,CAAC,KAAK,EAAE;AACR,4BAAA,OAAO,IAAI,KAAK,CAAE,KAAK,CAAC,CAAC,CAAS,GAAG,GAAG,EAAG,KAAK,CAAC,CAAC,CAAS,GAAG,GAAG,EAAG,KAAK,CAAC,CAAC,CAAS,GAAG,GAAG,EAAG,KAAK,CAAC,CAAC,CAAS,CAAC;wBAClH;oBACJ;gBACJ;gBACA,MAAM,IAAI,YAAY,CAAC,KAAK,IAAI,qCAAqC,OAAO,KAAK,KAAK,QAAQ,GAAG,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA,CAAA,CAAG,CAAC;YACtI;YACA,KAAK,SAAS,EAAE;AACZ,gBAAA,IAAI,KAAK;AACT,gBAAA,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE;AACzB,oBAAA,KAAK,GAAG,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC;oBAEzB,MAAM,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC;oBAChC,IAAI,GAAG,EAAE;AACL,wBAAA,OAAO,GAAG;oBACd;gBACJ;gBACA,MAAM,IAAI,YAAY,CAAC,CAAA,oCAAA,EAAuC,OAAO,KAAK,KAAK,QAAQ,GAAG,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA,CAAA,CAAG,CAAC;YAC/H;YACA,KAAK,aAAa,EAAE;AAChB,gBAAA,IAAI,KAAK;AACT,gBAAA,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE;AACzB,oBAAA,KAAK,GAAG,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC;oBAEzB,MAAM,GAAG,GAAG,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC;oBACpC,IAAI,GAAG,EAAE;AACL,wBAAA,OAAO,GAAG;oBACd;gBACJ;gBACA,MAAM,IAAI,YAAY,CAAC,CAAA,wCAAA,EAA2C,OAAO,KAAK,KAAK,QAAQ,GAAG,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA,CAAA,CAAG,CAAC;YACnI;YACA,KAAK,YAAY,EAAE;AACf,gBAAA,IAAI,KAAK;AACT,gBAAA,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE;AACzB,oBAAA,KAAK,GAAG,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC;oBAEzB,MAAM,GAAG,GAAG,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC;oBACnC,IAAI,GAAG,EAAE;AACL,wBAAA,OAAO,GAAG;oBACd;gBACJ;gBACA,MAAM,IAAI,YAAY,CAAC,CAAA,uCAAA,EAA0C,OAAO,KAAK,KAAK,QAAQ,GAAG,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA,CAAA,CAAG,CAAC;YAClI;YACA,KAAK,gCAAgC,EAAE;AACnC,gBAAA,IAAI,KAAK;AACT,gBAAA,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE;AACzB,oBAAA,KAAK,GAAG,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC;oBAEzB,MAAM,IAAI,GAAG,8BAA8B,CAAC,KAAK,CAAC,KAAK,CAAC;oBACxD,IAAI,IAAI,EAAE;AACN,wBAAA,OAAO,IAAI;oBACf;gBACJ;gBACA,MAAM,IAAI,YAAY,CAAC,CAAA,2DAAA,EAA8D,OAAO,KAAK,KAAK,QAAQ,GAAG,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA,CAAA,CAAG,CAAC;YACtJ;YACA,KAAK,QAAQ,EAAE;gBACX,IAAI,KAAK,GAAG,IAAI;AAChB,gBAAA,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE;AACzB,oBAAA,KAAK,GAAG,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC;oBACzB,IAAI,KAAK,KAAK,IAAI;AAAE,wBAAA,OAAO,CAAC;AAC5B,oBAAA,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC;oBACzB,IAAI,KAAK,CAAC,GAAG,CAAC;wBAAE;AAChB,oBAAA,OAAO,GAAG;gBACd;AACA,gBAAA,MAAM,IAAI,YAAY,CAAC,CAAA,kBAAA,EAAqB,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA,WAAA,CAAa,CAAC;YACnF;AACA,YAAA,KAAK,WAAW;;;AAGZ,gBAAA,OAAO,SAAS,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;AAC1E,YAAA,KAAK,eAAe;AAChB,gBAAA,OAAO,aAAa,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;AAC9E,YAAA,KAAK,sBAAsB;gBACvB,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC;AACrC,YAAA;AACI,gBAAA,OAAO,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;;IAE5D;AAEA,IAAA,SAAS,CAAC,EAA2B,EAAA;AACjC,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;IACzB;IAEA,aAAa,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,GAAG,CAAC,aAAa,EAAE,CAAC;IACtD;AACH;;ACnKD,MAAM,aAAa,GAAG,CAAC,SAAS,EAAE,OAAO,EAAE,YAAY,EAAE,SAAS,CAAC;MAEtD,iBAAiB,CAAA;AAU1B,IAAA,WAAA,GAAA;AACI,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI;AACnB,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI;AACnB,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI;AACxB,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI;AAC5B,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,GAAG,EAAiB;AAChD,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI;AAC3B,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI;IACzB;IAEA,EAAE,GAAA;QACE,OAAO,IAAI,CAAC,OAAO,IAAI,IAAI,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,GAAG,IAAI;IACxE;IAEA,YAAY,GAAA;AACR,QAAA,OAAO,IAAI,CAAC,OAAO,GAAG,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,QAAQ,GAAG,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,IAAI;IAC7H;IAEA,QAAQ,GAAA;QACJ,OAAO,IAAI,CAAC,OAAO,IAAI,UAAU,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,GAAG,IAAI;IACpF;IAEA,WAAW,GAAA;QACP,OAAO,IAAI,CAAC,SAAS;IACzB;IAEA,UAAU,GAAA;QACN,OAAO,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,EAAE;IACxD;AAEA,IAAA,UAAU,CAAC,KAAa,EAAA;QACpB,IAAI,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC;QAC7C,IAAI,CAAC,MAAM,EAAE;AACT,YAAA,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC;YAC3B,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC;QAC5C;AACA,QAAA,OAAO,MAAM;IACjB;AACH;;AC5CD;;;AAGG;MACU,cAAc,CAAA;AAkBvB,IAAA,WAAA,CACI,QAA4B,EAC5B,cAAkD,EAClD,OAAsB,EAAE,EACxB,YAA0B,EAC1B,QAAe,IAAI,KAAK,EAAE,EAC1B,SAAwC,EAAE,EAAA;AAE1C,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ;AACxB,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI;QAChB,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,CAAA,CAAA,EAAI,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;AACjD,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK;AAClB,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM;AACpB,QAAA,IAAI,CAAC,YAAY,GAAG,YAAY;AAChC,QAAA,IAAI,CAAC,WAAW,GAAG,cAAc;IACrC;AAEA;;;;;;AAMG;IACH,KAAK,CACD,IAAa,EACb,KAAc,EACd,YAA0B,EAC1B,QAAsC,EACtC,OAAA,GAEI,EAAE,EAAA;QAEN,IAAI,KAAK,EAAE;AACP,YAAA,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC;QAC3E;QACA,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC;IACrC;IAEA,MAAM,CACF,IAAa,EACb,OAEC,EAAA;AAED,QAAA,IAAI,IAAI,KAAK,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,OAAO,IAAI,KAAK,SAAS,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;AACpG,YAAA,IAAI,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC;QAC5B;AAEA,QAAA,SAAS,QAAQ,CAAC,MAAM,EAAE,IAAI,EAAE,cAA4C,EAAA;AACxE,YAAA,IAAI,cAAc,KAAK,QAAQ,EAAE;gBAC7B,OAAO,IAAI,SAAS,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,CAAC;YACxC;AAAO,iBAAA,IAAI,cAAc,KAAK,QAAQ,EAAE;gBACpC,OAAO,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,CAAC;YACvC;iBAAO;AACH,gBAAA,OAAO,MAAM;YACjB;QACJ;AAEA,QAAA,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;AACrB,YAAA,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;AACnB,gBAAA,OAAO,IAAI,CAAC,KAAK,CAAC,kGAAkG,CAAS;YACjI;AAEA,YAAA,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;AAClB,YAAA,IAAI,OAAO,EAAE,KAAK,QAAQ,EAAE;gBACxB,IAAI,CAAC,KAAK,CAAC,CAAA,4CAAA,EAA+C,OAAO,EAAE,CAAA,gEAAA,CAAkE,EAAE,CAAC,CAAC;AACzI,gBAAA,OAAO,IAAI;YACf;YAEA,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC9B,IAAI,IAAI,EAAE;gBACN,IAAI,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC;AACnC,gBAAA,IAAI,CAAC,MAAM;AAAE,oBAAA,OAAO,IAAI;AAExB,gBAAA,IAAI,IAAI,CAAC,YAAY,EAAE;AACnB,oBAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY;AAClC,oBAAA,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI;;;;;;;;;AAU1B,oBAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,QAAQ,IAAI,QAAQ,CAAC,IAAI,KAAK,QAAQ,IAAI,QAAQ,CAAC,IAAI,KAAK,SAAS,IAAI,QAAQ,CAAC,IAAI,KAAK,QAAQ,IAAI,QAAQ,CAAC,IAAI,KAAK,OAAO,KAAK,MAAM,CAAC,IAAI,KAAK,OAAO,EAAE;AACjL,wBAAA,MAAM,GAAG,QAAQ,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,CAAC,cAAc,IAAI,QAAQ,CAAC;oBAC3E;AAAO,yBAAA,IAAI,CAAC,sBAAsB,KAAK,QAAQ,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC;AAC7F,yBAAC,CAAC,CAAC,OAAO,EAAE,WAAW,EAAC,eAAe,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAC9G,yBAAC,CAAC,CAAC,SAAS,EAAC,aAAa,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;yBAC1G,YAAY,KAAK,QAAQ,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;yBACrF,gCAAgC,KAAK,QAAQ,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE;AAClG,wBAAA,MAAM,GAAG,QAAQ,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,CAAC,cAAc,IAAI,QAAQ,CAAC;oBAC3E;yBAAO,IAAI,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE;AAC5C,wBAAA,OAAO,IAAI;oBACf;gBACJ;;;;;gBAMA,IAAI,EAAE,MAAM,YAAY,OAAO,CAAC,KAAK,MAAM,CAAC,IAAI,CAAC,IAAI,KAAK,eAAe,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE;AACpG,oBAAA,MAAM,EAAE,GAAG,IAAI,iBAAiB,EAAE;AAClC,oBAAA,IAAI;AACA,wBAAA,MAAM,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;oBAC1D;oBAAE,OAAO,CAAC,EAAE;AACR,wBAAA,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC;AACrB,wBAAA,OAAO,IAAI;oBACf;gBACJ;AAEA,gBAAA,OAAO,MAAM;YACjB;YAEA,OAAO,IAAI,CAAC,KAAK,CAAC,CAAA,oBAAA,EAAuB,EAAE,CAAA,yDAAA,CAA2D,EAAE,CAAC,CAAS;QACtH;AAAO,aAAA,IAAI,OAAO,IAAI,KAAK,WAAW,EAAE;AACpC,YAAA,OAAO,IAAI,CAAC,KAAK,CAAC,gDAAgD,CAAS;QAC/E;AAAO,aAAA,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;AACjC,YAAA,OAAO,IAAI,CAAC,KAAK,CAAC,uDAAuD,CAAS;QACtF;aAAO;YACH,OAAO,IAAI,CAAC,KAAK,CAAC,gCAAgC,OAAO,IAAI,CAAA,SAAA,CAAW,CAAS;QACrF;IACJ;AAEA;;;;;;;AAOG;AACH,IAAA,MAAM,CAAC,KAAa,EAAE,YAA0B,EAAE,QAAsC,EAAA;QACpF,MAAM,IAAI,GAAG,OAAO,KAAK,KAAK,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,IAAI;QAC5E,MAAM,KAAK,GAAG,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,KAAK;QACjE,OAAO,IAAI,cAAc,CACrB,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,WAAW,EAChB,IAAI,EACJ,YAAY,IAAI,IAAI,EACpB,KAAK,EACL,IAAI,CAAC,MAAM,CACd;IACL;AAEA;;;;;;AAMG;AACH,IAAA,KAAK,CAAC,KAAa,EAAE,GAAG,IAAmB,EAAA;QACvC,MAAM,GAAG,GAAG,CAAA,EAAG,IAAI,CAAC,GAAG,CAAA,EAAG,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAA,CAAA,EAAI,CAAC,CAAA,CAAA,CAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA,CAAE;AAC5D,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,sBAAsB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAC5D;AAEA;;;;;;AAMG;IACH,YAAY,CAAC,QAAc,EAAE,CAAO,EAAA;QAChC,MAAM,KAAK,GAAG,YAAY,CAAC,QAAQ,EAAE,CAAC,CAAC;AACvC,QAAA,IAAI,KAAK;AAAE,YAAA,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;AAC5B,QAAA,OAAO,KAAK;IAChB;AACH;;MCxMY,GAAG,CAAA;IAKZ,WAAA,CAAY,QAAqC,EAAE,MAAkB,EAAA;AACjE,QAAA,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI;QACvB,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC;AACnC,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM;IACxB;AAEA,IAAA,QAAQ,CAAC,GAAsB,EAAA;QAC3B,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC;IACpC;AAEA,IAAA,SAAS,CAAC,EAA2B,EAAA;AACjC,QAAA,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjC,YAAA,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAClB;AACA,QAAA,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC;IACnB;AAEA,IAAA,OAAO,KAAK,CAAC,IAA4B,EAAE,OAAuB,EAAA;AAC9D,QAAA,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;AACf,YAAA,OAAO,OAAO,CAAC,KAAK,CAAC,CAAA,yCAAA,EAA4C,IAAI,CAAC,MAAM,GAAG,CAAC,CAAA,SAAA,CAAW,CAAS;QAExG,MAAM,QAAQ,GAAgC,EAAE;AAChD,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE;AACzC,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC;AAEpB,YAAA,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;gBAC1B,OAAO,OAAO,CAAC,KAAK,CAAC,CAAA,2BAAA,EAA8B,OAAO,IAAI,CAAA,SAAA,CAAW,EAAE,CAAC,CAAS;YACzF;AAEA,YAAA,IAAI,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;gBAC5B,OAAO,OAAO,CAAC,KAAK,CAAC,oEAAoE,EAAE,CAAC,CAAS;YACzG;AAEA,YAAA,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;AAC/C,YAAA,IAAI,CAAC,KAAK;AAAE,gBAAA,OAAO,IAAI;YAEvB,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAChC;QAEA,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,OAAO,CAAC,YAAY,EAAE,QAAQ,CAAC;AACpG,QAAA,IAAI,CAAC,MAAM;AAAE,YAAA,OAAO,IAAI;AAExB,QAAA,OAAO,IAAI,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC;IACpC;IAEA,aAAa,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE;IACtC;AACH;;MCrDY,GAAG,CAAA;IAKZ,WAAA,CAAY,IAAY,EAAE,eAA2B,EAAA;AACjD,QAAA,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC,IAAI;AAChC,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI;AAChB,QAAA,IAAI,CAAC,eAAe,GAAG,eAAe;IAC1C;AAEA,IAAA,OAAO,KAAK,CAAC,IAA4B,EAAE,OAAuB,EAAA;AAC9D,QAAA,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ;AAChD,YAAA,OAAO,OAAO,CAAC,KAAK,CAAC,kEAAkE,CAAS;AAEpG,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC;QACpB,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;AAC1B,YAAA,OAAO,OAAO,CAAC,KAAK,CAAC,CAAA,kBAAA,EAAqB,IAAI,CAAA,cAAA,EAAiB,IAAI,CAAA,kEAAA,CAAoE,EAAE,CAAC,CAAS;QACvJ;AAEA,QAAA,OAAO,IAAI,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACjD;AAEA,IAAA,QAAQ,CAAC,GAAsB,EAAA;QAC3B,OAAO,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,GAAG,CAAC;IAC7C;AAEA,IAAA,SAAS,KAAI;IAEb,aAAa,GAAA;AACT,QAAA,OAAO,KAAK;IAChB;AACH;;MC3BY,EAAE,CAAA;AAKX,IAAA,WAAA,CAAY,IAAU,EAAE,KAAiB,EAAE,KAAiB,EAAA;AACxD,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI;AAChB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK;AAClB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK;IACtB;AAEA,IAAA,OAAO,KAAK,CAAC,IAA4B,EAAE,OAAuB,EAAA;AAC9D,QAAA,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;AACjB,YAAA,OAAO,OAAO,CAAC,KAAK,CAAC,CAAA,gCAAA,EAAmC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAA,SAAA,CAAW,CAAS;AAE/F,QAAA,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC;QACnD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,YAAY,IAAI,SAAS,CAAC,CAAC;AAEjF,QAAA,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK;AAAE,YAAA,OAAO,IAAI;AAEjC,QAAA,MAAM,CAAC,GAAe,KAAK,CAAC,IAAY;QACxC,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,KAAK,EAAE,KAAK,CAAC;IAC3C;AAEA,IAAA,QAAQ,CAAC,GAAsB,EAAA;QAC3B,MAAM,KAAK,GAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAmB;QACzD,MAAM,KAAK,GAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAyB;AAE/D,QAAA,IAAI,KAAK,GAAG,CAAC,EAAE;AACX,YAAA,MAAM,IAAI,YAAY,CAAC,8BAA8B,KAAK,CAAA,KAAA,CAAO,CAAC;QACtE;AAEA,QAAA,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,EAAE;AACvB,YAAA,MAAM,IAAI,YAAY,CAAC,CAAA,2BAAA,EAA8B,KAAK,CAAA,GAAA,EAAM,KAAK,CAAC,MAAM,GAAG,CAAC,CAAA,CAAA,CAAG,CAAC;QACxF;QAEA,IAAI,KAAK,KAAK,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;AAC7B,YAAA,MAAM,IAAI,YAAY,CAAC,6CAA6C,KAAK,CAAA,SAAA,CAAW,CAAC;QACzF;AAEA,QAAA,OAAO,KAAK,CAAC,KAAK,CAAC;IACvB;AAEA,IAAA,SAAS,CAAC,EAA2B,EAAA;AACjC,QAAA,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC;AACd,QAAA,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC;IAClB;IAEA,aAAa,GAAA;AACT,QAAA,OAAO,KAAK;IAChB;AACH;;MC3CY,EAAE,CAAA;IAKX,WAAA,CAAY,MAAkB,EAAE,QAAoB,EAAA;AAChD,QAAA,IAAI,CAAC,IAAI,GAAG,WAAW;AACvB,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM;AACpB,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ;IAC5B;AAEA,IAAA,OAAO,KAAK,CAAC,IAA4B,EAAE,OAAuB,EAAA;AAC9D,QAAA,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;AACnB,YAAA,OAAO,OAAO,CAAC,KAAK,CAAC,CAAA,gCAAA,EAAmC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAA,SAAA,CAAW,CAAS;QAC/F;AAEA,QAAA,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC;AAEnD,QAAA,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC;AAErD,QAAA,IAAI,CAAC,MAAM,IAAI,CAAC,QAAQ;AAAE,YAAA,OAAO,IAAI;QAErC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC,EAAE;AACvF,YAAA,OAAO,OAAO,CAAC,KAAK,CAAC,CAAA,iFAAA,EAAoF,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA,QAAA,CAAU,CAAS;QACzJ;AAEA,QAAA,OAAO,IAAI,EAAE,CAAC,MAAM,EAAE,QAAQ,CAAC;IACnC;AAEA,IAAA,QAAQ,CAAC,GAAsB,EAAA;QAC3B,MAAM,MAAM,GAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAS;QACjD,MAAM,QAAQ,GAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAS;AAErD,QAAA,IAAI,CAAC,QAAQ;AAAE,YAAA,OAAO,KAAK;AAE3B,QAAA,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,CAAC,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,EAAE;AACrE,YAAA,MAAM,IAAI,YAAY,CAAC,CAAA,iFAAA,EAAoF,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAA,SAAA,CAAW,CAAC;QACvJ;AAEA,QAAA,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,EAAE;AACnD,YAAA,MAAM,IAAI,YAAY,CAAC,CAAA,kEAAA,EAAqE,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAA,SAAA,CAAW,CAAC;QAC1I;QAEA,OAAO,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC;IACxC;AAEA,IAAA,SAAS,CAAC,EAA2B,EAAA;AACjC,QAAA,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC;AACf,QAAA,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC;IACrB;IAEA,aAAa,GAAA;AACT,QAAA,OAAO,IAAI;IACf;AACH;;MCtDY,OAAO,CAAA;AAMhB,IAAA,WAAA,CAAY,MAAkB,EAAE,QAAoB,EAAE,SAAsB,EAAA;AACxE,QAAA,IAAI,CAAC,IAAI,GAAG,UAAU;AACtB,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM;AACpB,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ;AACxB,QAAA,IAAI,CAAC,SAAS,GAAG,SAAS;IAC9B;AAEA,IAAA,OAAO,KAAK,CAAC,IAA4B,EAAE,OAAuB,EAAA;AAC9D,QAAA,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,IAAK,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE;AACvC,YAAA,OAAO,OAAO,CAAC,KAAK,CAAC,CAAA,qCAAA,EAAwC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAA,SAAA,CAAW,CAAS;QACpG;AAEA,QAAA,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC;AAEnD,QAAA,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC;AAErD,QAAA,IAAI,CAAC,MAAM,IAAI,CAAC,QAAQ;AAAE,YAAA,OAAO,IAAI;QACrC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC,EAAE;AACvF,YAAA,OAAO,OAAO,CAAC,KAAK,CAAC,CAAA,iFAAA,EAAoF,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA,QAAA,CAAU,CAAS;QACzJ;AAEA,QAAA,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;AACnB,YAAA,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC;AACvD,YAAA,IAAI,CAAC,SAAS;AAAE,gBAAA,OAAO,IAAI;YAC3B,OAAO,IAAI,OAAO,CAAC,MAAM,EAAE,QAAQ,EAAE,SAAS,CAAC;QACnD;aAAO;AACH,YAAA,OAAO,IAAI,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC;QACxC;IACJ;AAEA,IAAA,QAAQ,CAAC,GAAsB,EAAA;QAC3B,MAAM,MAAM,GAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAS;QACjD,MAAM,QAAQ,GAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAS;AAErD,QAAA,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,CAAC,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,EAAE;AACrE,YAAA,MAAM,IAAI,YAAY,CAAC,CAAA,iFAAA,EAAoF,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAA,SAAA,CAAW,CAAC;QACvJ;AAEA,QAAA,IAAI,SAAS;AACb,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;YAChB,SAAS,GAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAY;QACxD;QAEA,IAAI,iBAAiB,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE;YACzC,MAAM,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,SAAS,CAAC;AACpD,YAAA,IAAI,QAAQ,KAAK,EAAE,EAAE;gBACjB,OAAO,EAAE;YACb;iBAAO;;AAEH,gBAAA,OAAO,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,MAAM;YAClD;QACJ;aAAO,IAAI,iBAAiB,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,CAAC,EAAE;YAC/C,OAAO,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,SAAS,CAAC;QAC9C;aAAO;AACH,YAAA,MAAM,IAAI,YAAY,CAAC,CAAA,kEAAA,EAAqE,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAA,SAAA,CAAW,CAAC;QAC1I;IACJ;AAEA,IAAA,SAAS,CAAC,EAA2B,EAAA;AACjC,QAAA,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC;AACf,QAAA,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC;AACjB,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AAChB,YAAA,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC;QACtB;IACJ;IAEA,aAAa,GAAA;AACT,QAAA,OAAO,KAAK;IAChB;AACH;;MC9EY,KAAK,CAAA;IASd,WAAA,CAAY,SAAe,EAAE,UAAgB,EAAE,KAAiB,EAAE,KAAY,EAAE,OAA0B,EAAE,SAAqB,EAAA;AAC7H,QAAA,IAAI,CAAC,SAAS,GAAG,SAAS;AAC1B,QAAA,IAAI,CAAC,IAAI,GAAG,UAAU;AACtB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK;AAClB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK;AAClB,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO;AACtB,QAAA,IAAI,CAAC,SAAS,GAAG,SAAS;IAC9B;AAEA,IAAA,OAAO,KAAK,CAAC,IAA4B,EAAE,OAAuB,EAAA;AAC9D,QAAA,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;AACf,YAAA,OAAO,OAAO,CAAC,KAAK,CAAC,CAAA,8CAAA,EAAiD,IAAI,CAAC,MAAM,GAAG,CAAC,CAAA,CAAA,CAAG,CAAS;AACrG,QAAA,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC;AACrB,YAAA,OAAO,OAAO,CAAC,KAAK,CAAC,uCAAuC,CAAS;AAEzE,QAAA,IAAI,SAAS;AACb,QAAA,IAAI,UAAU;AACd,QAAA,IAAI,OAAO,CAAC,YAAY,IAAI,OAAO,CAAC,YAAY,CAAC,IAAI,KAAK,OAAO,EAAE;AAC/D,YAAA,UAAU,GAAG,OAAO,CAAC,YAAY;QACrC;QACA,MAAM,KAAK,GAAG,EAAE;QAChB,MAAM,OAAO,GAAG,EAAE;AAClB,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE;AACzC,YAAA,IAAI,MAAM,GAAG,IAAI,CAAC,CAAC,CAAc;YACjC,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;YAEzB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;AACxB,gBAAA,MAAM,GAAG,CAAC,MAAM,CAAC;YACrB;YAEA,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;AACtC,YAAA,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;AACrB,gBAAA,OAAO,YAAY,CAAC,KAAK,CAAC,qCAAqC,CAAS;YAC5E;AAEA,YAAA,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;gBACxB,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AACxD,oBAAA,OAAO,YAAY,CAAC,KAAK,CAAC,2CAA2C,CAAS;gBAClF;AAAO,qBAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,gBAAgB,EAAE;oBAC/E,OAAO,YAAY,CAAC,KAAK,CAAC,CAAA,8CAAA,EAAiD,MAAM,CAAC,gBAAgB,CAAA,CAAA,CAAG,CAAS;gBAElH;AAAO,qBAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,KAAK,EAAE;AACjE,oBAAA,OAAO,YAAY,CAAC,KAAK,CAAC,+CAA+C,CAAS;gBAEtF;qBAAO,IAAI,CAAC,SAAS,EAAE;AACnB,oBAAA,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC;gBAC7B;AAAO,qBAAA,IAAI,YAAY,CAAC,YAAY,CAAC,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE;AAC5D,oBAAA,OAAO,IAAI;gBACf;gBAEA,IAAI,OAAO,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,WAAW,EAAE;AAC7C,oBAAA,OAAO,YAAY,CAAC,KAAK,CAAC,+BAA+B,CAAS;gBACtE;gBAEA,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM;YACzC;AAEA,YAAA,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,EAAE,UAAU,CAAC;AAClD,YAAA,IAAI,CAAC,MAAM;AAAE,gBAAA,OAAO,IAAI;AACxB,YAAA,UAAU,GAAG,UAAU,IAAI,MAAM,CAAC,IAAI;AACtC,YAAA,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC;QACxB;AAEA,QAAA,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC;AAClD,QAAA,IAAI,CAAC,KAAK;AAAE,YAAA,OAAO,IAAI;QAEvB,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,UAAU,CAAC;AACnF,QAAA,IAAI,CAAC,SAAS;AAAE,YAAA,OAAO,IAAI;QAE3B,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,YAAY,CAAG,SAAkB,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE;AACjG,YAAA,OAAO,IAAI;QACf;AAEA,QAAA,OAAO,IAAI,KAAK,CAAE,SAAiB,EAAG,UAAkB,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,CAAC;IAC/F;AAEA,IAAA,QAAQ,CAAC,GAAsB,EAAA;QAC3B,MAAM,KAAK,GAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAS;AAC/C,QAAA,MAAM,MAAM,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,KAAK,IAAI,CAAC,SAAS;AACtG,QAAA,OAAO,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC;IAC/B;AAEA,IAAA,SAAS,CAAC,EAA2B,EAAA;AACjC,QAAA,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC;AACd,QAAA,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;AACxB,QAAA,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC;IACtB;IAEA,aAAa,GAAA;QACT,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,GAAG,CAAC,aAAa,EAAE,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE;IAC3F;AACH;;MCzGY,IAAI,CAAA;AAMb,IAAA,WAAA,CAAY,IAAU,EAAE,QAAkB,EAAE,SAAqB,EAAA;AAC7D,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI;AAChB,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ;AACxB,QAAA,IAAI,CAAC,SAAS,GAAG,SAAS;IAC9B;AAEA,IAAA,OAAO,KAAK,CAAC,IAA4B,EAAE,OAAuB,EAAA;AAC9D,QAAA,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;AACf,YAAA,OAAO,OAAO,CAAC,KAAK,CAAC,CAAA,8CAAA,EAAiD,IAAI,CAAC,MAAM,GAAG,CAAC,CAAA,CAAA,CAAG,CAAS;AACrG,QAAA,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC;AACrB,YAAA,OAAO,OAAO,CAAC,KAAK,CAAC,sCAAsC,CAAS;AAExE,QAAA,IAAI,UAAgB;AACpB,QAAA,IAAI,OAAO,CAAC,YAAY,IAAI,OAAO,CAAC,YAAY,CAAC,IAAI,KAAK,OAAO,EAAE;AAC/D,YAAA,UAAU,GAAG,OAAO,CAAC,YAAY;QACrC;QAEA,MAAM,QAAQ,GAAG,EAAE;AACnB,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE;AACzC,YAAA,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,WAAW,CAAC;AACnD,YAAA,IAAI,CAAC,IAAI;AAAE,gBAAA,OAAO,IAAI;AAEtB,YAAA,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,UAAU,CAAC;AAC5D,YAAA,IAAI,CAAC,MAAM;AAAE,gBAAA,OAAO,IAAI;YAExB,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AAE7B,YAAA,UAAU,GAAG,UAAU,IAAI,MAAM,CAAC,IAAI;QAC1C;QAEA,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,UAAU,CAAC;AACnF,QAAA,IAAI,CAAC,SAAS;AAAE,YAAA,OAAO,IAAI;AAE3B,QAAA,IAAI,CAAC,UAAU;AAAE,YAAA,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC;QAC5D,OAAO,IAAI,IAAI,CAAE,UAAkB,EAAE,QAAQ,EAAE,SAAS,CAAC;IAC7D;AAEA,IAAA,QAAQ,CAAC,GAAsB,EAAA;QAC3B,KAAK,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE;AAC5C,YAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;AACpB,gBAAA,OAAO,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC;YACnC;QACJ;QACA,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC;IACvC;AAEA,IAAA,SAAS,CAAC,EAA2B,EAAA;QACjC,KAAK,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE;YAC5C,EAAE,CAAC,IAAI,CAAC;YACR,EAAE,CAAC,UAAU,CAAC;QAClB;AACA,QAAA,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC;IACtB;IAEA,aAAa,GAAA;QACT,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,KAAK,GAAG,CAAC,aAAa,EAAE,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE;IACnG;AACH;;MCxDY,KAAK,CAAA;AAMd,IAAA,WAAA,CAAY,IAAU,EAAE,KAAiB,EAAE,UAAsB,EAAE,QAAqB,EAAA;AACpF,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI;AAChB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK;AAClB,QAAA,IAAI,CAAC,UAAU,GAAG,UAAU;AAC5B,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ;IAE5B;AAEA,IAAA,OAAO,KAAK,CAAC,IAA4B,EAAE,OAAuB,EAAA;AAC9D,QAAA,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,IAAK,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE;AACvC,YAAA,OAAO,OAAO,CAAC,KAAK,CAAC,CAAA,qCAAA,EAAwC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAA,SAAA,CAAW,CAAS;QACpG;AAEA,QAAA,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC;AAClD,QAAA,MAAM,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC;AAExD,QAAA,IAAI,CAAC,KAAK,IAAI,CAAC,UAAU;AAAE,YAAA,OAAO,IAAI;AAEtC,QAAA,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC,EAAE;AACrE,YAAA,OAAO,OAAO,CAAC,KAAK,CAAC,CAAA,iEAAA,EAAoE,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA,QAAA,CAAU,CAAS;QACxI;AAEA,QAAA,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;AACnB,YAAA,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC;AACtD,YAAA,IAAI,CAAC,QAAQ;AAAE,gBAAA,OAAO,IAAI;AAC1B,YAAA,OAAO,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,QAAQ,CAAC;QAC7D;aAAO;YACH,OAAO,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,UAAU,CAAC;QACnD;IACJ;AAEA,IAAA,QAAQ,CAAC,GAAsB,EAAA;QAC3B,MAAM,KAAK,GAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAS;QAC/C,MAAM,UAAU,GAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAY;AAE5D,QAAA,IAAI,QAAQ;AACZ,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,QAAQ,GAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAY;QACtD;QAEA,IAAI,iBAAiB,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE;;AAEtC,YAAA,OAAO,CAAC,GAAG,KAAK,CAAC,CAAC,KAAK,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;QAC1D;aAAO,IAAI,iBAAiB,CAAC,KAAK,EAAE,CAAC,OAAO,CAAC,CAAC,EAAE;YAC5C,OAAO,KAAK,CAAC,KAAK,CAAC,UAAU,EAAE,QAAQ,CAAC;QAC5C;aAAO;AACH,YAAA,MAAM,IAAI,YAAY,CAAC,CAAA,iEAAA,EAAoE,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAA,SAAA,CAAW,CAAC;QACtI;IACJ;AAEA,IAAA,SAAS,CAAC,EAA2B,EAAA;AACjC,QAAA,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC;AACd,QAAA,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC;AACnB,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACf,YAAA,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC;QACrB;IACJ;IAEA,aAAa,GAAA;AACT,QAAA,OAAO,KAAK;IAChB;AACH;;AC9ED;;;AAGG;AACG,SAAU,yBAAyB,CAAC,KAAoB,EAAE,KAAa,EAAA;AACzE,IAAA,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC;IAClC,IAAI,UAAU,GAAG,CAAC;IAClB,IAAI,UAAU,GAAG,SAAS;IAC1B,IAAI,YAAY,GAAG,CAAC;IACpB,IAAI,YAAY,EAAE,SAAS;AAE3B,IAAA,OAAO,UAAU,IAAI,UAAU,EAAE;AAC7B,QAAA,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,UAAU,GAAG,UAAU,IAAI,CAAC,CAAC;AACxD,QAAA,YAAY,GAAG,KAAK,CAAC,YAAY,CAAC;AAClC,QAAA,SAAS,GAAG,KAAK,CAAC,YAAY,GAAG,CAAC,CAAC;AAEnC,QAAA,IAAI,YAAY,IAAI,KAAK,EAAE;YACvB,IAAI,YAAY,KAAK,SAAS,IAAI,KAAK,GAAG,SAAS,EAAE;AACjD,gBAAA,OAAO,YAAY;YACvB;AAEA,YAAA,UAAU,GAAG,YAAY,GAAG,CAAC;QACjC;AAAO,aAAA,IAAI,YAAY,GAAG,KAAK,EAAE;AAC7B,YAAA,UAAU,GAAG,YAAY,GAAG,CAAC;QACjC;aAAO;AACH,YAAA,MAAM,IAAI,YAAY,CAAC,wBAAwB,CAAC;QACpD;IACJ;AAEA,IAAA,OAAO,CAAC;AACZ;;MC1Ba,IAAI,CAAA;AAOb,IAAA,WAAA,CAAY,IAAU,EAAE,KAAiB,EAAE,KAAY,EAAA;AACnD,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI;AAChB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK;AAElB,QAAA,IAAI,CAAC,MAAM,GAAG,EAAE;AAChB,QAAA,IAAI,CAAC,OAAO,GAAG,EAAE;QACjB,KAAK,MAAM,CAAC,KAAK,EAAE,UAAU,CAAC,IAAI,KAAK,EAAE;AACrC,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;AACvB,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC;QACjC;IACJ;AAEA,IAAA,OAAO,KAAK,CAAC,IAA4B,EAAE,OAAuB,EAAA;QAC9D,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,EAAE;AACrB,YAAA,OAAO,OAAO,CAAC,KAAK,CAAC,CAAA,8CAAA,EAAiD,IAAI,CAAC,MAAM,GAAG,CAAC,CAAA,CAAA,CAAG,CAAS;QACrG;AAEA,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;AAC7B,YAAA,OAAO,OAAO,CAAC,KAAK,CAAC,uCAAuC,CAAS;QACzE;AAEA,QAAA,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC;AACnD,QAAA,IAAI,CAAC,KAAK;AAAE,YAAA,OAAO,IAAI;QAEvB,MAAM,KAAK,GAAU,EAAE;QAEvB,IAAI,UAAU,GAAS,IAAI;AAC3B,QAAA,IAAI,OAAO,CAAC,YAAY,IAAI,OAAO,CAAC,YAAY,CAAC,IAAI,KAAK,OAAO,EAAE;AAC/D,YAAA,UAAU,GAAG,OAAO,CAAC,YAAY;QACrC;AAEA,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;AACrC,YAAA,MAAM,KAAK,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC;YAC3C,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;YAEzB,MAAM,QAAQ,GAAG,CAAC;AAClB,YAAA,MAAM,QAAQ,GAAG,CAAC,GAAG,CAAC;AAEtB,YAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;gBAC3B,OAAO,OAAO,CAAC,KAAK,CAAC,yIAAyI,EAAE,QAAQ,CAAS;YACrL;AAEA,YAAA,IAAI,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,EAAE;gBACrD,OAAO,OAAO,CAAC,KAAK,CAAC,2GAA2G,EAAE,QAAQ,CAAS;YACvJ;AAEA,YAAA,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,QAAQ,EAAE,UAAU,CAAC;AACzD,YAAA,IAAI,CAAC,MAAM;AAAE,gBAAA,OAAO,IAAI;AACxB,YAAA,UAAU,GAAG,UAAU,IAAI,MAAM,CAAC,IAAI;YACtC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAC/B;QAEA,OAAO,IAAI,IAAI,CAAC,UAAU,EAAE,KAAK,EAAE,KAAK,CAAC;IAC7C;AAEA,IAAA,QAAQ,CAAC,GAAsB,EAAA;AAC3B,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM;AAC1B,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO;AAE5B,QAAA,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;YACrB,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC;QACnC;QAEA,MAAM,KAAK,GAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAmB;AACzD,QAAA,IAAI,KAAK,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE;YACpB,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC;QACnC;AAEA,QAAA,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM;QAC/B,IAAI,KAAK,IAAI,MAAM,CAAC,SAAS,GAAG,CAAC,CAAC,EAAE;YAChC,OAAO,OAAO,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC;QAC/C;QAEA,MAAM,KAAK,GAAG,yBAAyB,CAAC,MAAM,EAAE,KAAK,CAAC;QACtD,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC;IACvC;AAEA,IAAA,SAAS,CAAC,EAA2B,EAAA;AACjC,QAAA,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC;AACd,QAAA,KAAK,MAAM,UAAU,IAAI,IAAI,CAAC,OAAO,EAAE;YACnC,EAAE,CAAC,UAAU,CAAC;QAClB;IACJ;IAEA,aAAa,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,GAAG,CAAC,aAAa,EAAE,CAAC;IACzD;AACH;;;;;;;;;;;;;ACtGD,CAAA,UAAc,GAAG,UAAU;;CAE3B,SAAS,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE;AACxC;AACA,KAAI,IAAI,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG;AACvB,KAAI,IAAI,CAAC,EAAE,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE;AACzC,KAAI,IAAI,CAAC,EAAE,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE;;AAErC,KAAI,IAAI,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG;AACvB,KAAI,IAAI,CAAC,EAAE,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE;AACzC,KAAI,IAAI,CAAC,EAAE,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE;;AAErC,KAAI,IAAI,CAAC,GAAG,GAAG,GAAG;AAClB,KAAI,IAAI,CAAC,GAAG,GAAG,GAAG;AAClB,KAAI,IAAI,CAAC,GAAG,GAAG,GAAG;AAClB,KAAI,IAAI,CAAC,GAAG,GAAG,GAAG;AAClB,CAAA;;CAEA,UAAU,CAAC,SAAS,GAAG;AACvB,KAAI,YAAY,EAAE,UAAU,CAAC,EAAE;AAC/B;AACA,SAAQ,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,IAAI,CAAC;KAC1D,CAAK;;AAEL,KAAI,YAAY,EAAE,UAAU,CAAC,EAAE;AAC/B,SAAQ,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,IAAI,CAAC;KAC1D,CAAK;;AAEL,KAAI,sBAAsB,EAAE,UAAU,CAAC,EAAE;SACjC,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE;KAChE,CAAK;;AAEL,KAAI,WAAW,EAAE,UAAU,CAAC,EAAE,OAAO,EAAE;AACvC,SAAQ,IAAI,OAAO,KAAK,SAAS,EAAE,OAAO,GAAG,IAAI;;AAEjD,SAAQ,IAAI,CAAC,GAAG,GAAG,EAAE,OAAO,GAAG;AAC/B,SAAQ,IAAI,CAAC,GAAG,GAAG,EAAE,OAAO,GAAG;;SAEvB,IAAI,CAAC,GAAG,CAAC;;AAEjB;AACA,SAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;aACxB,IAAI,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC;aACjC,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,EAAE,OAAO,CAAC;;aAEpC,IAAI,EAAE,GAAG,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC;aACvC,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE;;AAErC,aAAY,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE;AAC3B,SAAA;;AAEA;SACQ,IAAI,EAAE,GAAG,GAAG;SACZ,IAAI,EAAE,GAAG,GAAG;SACZ,CAAC,GAAG,CAAC;;SAEL,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;AACjC,aAAY,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;aACzB,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,OAAO,EAAE;;AAE5C,aAAY,IAAI,CAAC,GAAG,EAAE,EAAE;iBACR,EAAE,GAAG,CAAC;AACtB,aAAA,CAAa,MAAM;iBACH,EAAE,GAAG,CAAC;AACtB,aAAA;;aAEY,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,IAAI,GAAG,GAAG,EAAE;AACpC,SAAA;;AAEA,SAAQ,OAAO,CAAC;KAChB,CAAK;;AAEL,KAAI,KAAK,EAAE,UAAU,CAAC,EAAE,OAAO,EAAE;AACjC,SAAQ,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;AAC9D,KAAA;EACC;;;;;;;MCjDY,WAAW,CAAA;IASpB,WAAA,CAAY,IAA2B,EAAE,QAA+D,EAAE,aAAgC,EAAE,KAAiB,EAAE,KAAY,EAAA;AACvK,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI;AAChB,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ;AACxB,QAAA,IAAI,CAAC,aAAa,GAAG,aAAa;AAClC,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK;AAElB,QAAA,IAAI,CAAC,MAAM,GAAG,EAAE;AAChB,QAAA,IAAI,CAAC,OAAO,GAAG,EAAE;QACjB,KAAK,MAAM,CAAC,KAAK,EAAE,UAAU,CAAC,IAAI,KAAK,EAAE;AACrC,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;AACvB,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC;QACjC;IACJ;IAEA,OAAO,mBAAmB,CAAC,aAAgC,EAAE,KAAa,EAAE,KAAa,EAAE,KAAa,EAAA;QACpG,IAAI,CAAC,GAAG,CAAC;AACT,QAAA,IAAI,aAAa,CAAC,IAAI,KAAK,aAAa,EAAE;AACtC,YAAA,CAAC,GAAG,wBAAwB,CAAC,KAAK,EAAE,aAAa,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC;QACzE;AAAO,aAAA,IAAI,aAAa,CAAC,IAAI,KAAK,QAAQ,EAAE;YACxC,CAAC,GAAG,wBAAwB,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC;QACxD;AAAO,aAAA,IAAI,aAAa,CAAC,IAAI,KAAK,cAAc,EAAE;AAC9C,YAAA,MAAM,CAAC,GAAG,aAAa,CAAC,aAAa;YACrC,MAAM,EAAE,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AACjD,YAAA,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,wBAAwB,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;QAClE;AACA,QAAA,OAAO,CAAC;IACZ;AAEA,IAAA,OAAO,KAAK,CAAC,IAA4B,EAAE,OAAuB,EAAA;AAC9D,QAAA,IAAI,CAAC,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI;AAEpD,QAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE;YAC7D,OAAO,OAAO,CAAC,KAAK,CAAC,4CAA4C,EAAE,CAAC,CAAS;QACjF;AAEA,QAAA,IAAI,aAAa,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE;AAC/B,YAAA,aAAa,GAAG,EAAC,IAAI,EAAE,QAAQ,EAAC;QACpC;AAAO,aAAA,IAAI,aAAa,CAAC,CAAC,CAAC,KAAK,aAAa,EAAE;AAC3C,YAAA,MAAM,IAAI,GAAG,aAAa,CAAC,CAAC,CAAC;YAC7B,IAAI,OAAO,IAAI,KAAK,QAAQ;gBACxB,OAAO,OAAO,CAAC,KAAK,CAAC,oDAAoD,EAAE,CAAC,EAAE,CAAC,CAAS;AAC5F,YAAA,aAAa,GAAG;AACZ,gBAAA,IAAI,EAAE,aAAa;gBACnB;aACH;QACL;AAAO,aAAA,IAAI,aAAa,CAAC,CAAC,CAAC,KAAK,cAAc,EAAE;YAC5C,MAAM,aAAa,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;AAC5C,YAAA,IACI,aAAa,CAAC,MAAM,KAAK,CAAC;gBAC1B,aAAa,CAAC,IAAI,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAClE;gBACE,OAAO,OAAO,CAAC,KAAK,CAAC,yFAAyF,EAAE,CAAC,CAAS;YAC9H;AAEA,YAAA,aAAa,GAAG;AACZ,gBAAA,IAAI,EAAE,cAAc;AACpB,gBAAA,aAAa,EAAG;aACnB;QACL;aAAO;AACH,YAAA,OAAO,OAAO,CAAC,KAAK,CAAC,CAAA,2BAAA,EAA8B,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAA,CAAE,EAAE,CAAC,EAAE,CAAC,CAAS;QAChG;QAEA,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,EAAE;AACrB,YAAA,OAAO,OAAO,CAAC,KAAK,CAAC,CAAA,8CAAA,EAAiD,IAAI,CAAC,MAAM,GAAG,CAAC,CAAA,CAAA,CAAG,CAAS;QACrG;AAEA,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;AAC7B,YAAA,OAAO,OAAO,CAAC,KAAK,CAAC,uCAAuC,CAAS;QACzE;QAEA,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,EAAE,UAAU,CAAC;AAC3C,QAAA,IAAI,CAAC,KAAK;AAAE,YAAA,OAAO,IAAI;QAEvB,MAAM,KAAK,GAAU,EAAE;QAEvB,IAAI,UAAU,GAAS,IAAI;AAC3B,QAAA,IAAI,CAAC,QAAQ,KAAK,iBAAiB,IAAI,QAAQ,KAAK,iBAAiB,KAAK,OAAO,CAAC,YAAY,IAAI,cAAc,EAAE;YAC9G,UAAU,GAAG,SAAS;QAC1B;AAAO,aAAA,IAAI,OAAO,CAAC,YAAY,IAAI,OAAO,CAAC,YAAY,CAAC,IAAI,KAAK,OAAO,EAAE;AACtE,YAAA,UAAU,GAAG,OAAO,CAAC,YAAY;QACrC;AAEA,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;AACrC,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC;YACrB,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;AAEzB,YAAA,MAAM,QAAQ,GAAG,CAAC,GAAG,CAAC;AACtB,YAAA,MAAM,QAAQ,GAAG,CAAC,GAAG,CAAC;AAEtB,YAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;gBAC3B,OAAO,OAAO,CAAC,KAAK,CAAC,gJAAgJ,EAAE,QAAQ,CAAS;YAC5L;AAEA,YAAA,IAAI,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,EAAE;gBACrD,OAAO,OAAO,CAAC,KAAK,CAAC,kHAAkH,EAAE,QAAQ,CAAS;YAC9J;AACA,YAAA,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,QAAQ,EAAE,UAAU,CAAC;AACzD,YAAA,IAAI,CAAC,MAAM;AAAE,gBAAA,OAAO,IAAI;AACxB,YAAA,UAAU,GAAG,UAAU,IAAI,MAAM,CAAC,IAAI;YACtC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAC/B;AAEA,QAAA,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,UAAU,CAAC;AACnC,YAAA,CAAC,UAAU,CAAC,UAAU,EAAE,wBAAwB,CAAC;AACjD,YAAA,CAAC,UAAU,CAAC,UAAU,EAAE,SAAS,CAAC;AAClC,YAAA,CAAC,UAAU,CAAC,UAAU,EAAE,WAAW,CAAC;AACpC,YAAA,CAAC,UAAU,CAAC,UAAU,EAAE,eAAe,CAAC;AACxC,YAAA,CAAC,UAAU,CAAC,UAAU,EAAE,cAAc,CAAC;AACvC,YAAA,CAAC,UAAU,CAAC,UAAU,EAAE,kCAAkC,CAAC;YAC3D,CAAC,UAAU,CAAC,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC,EAC5C;YACE,OAAO,OAAO,CAAC,KAAK,CAAC,CAAA,KAAA,EAAQ,YAAY,CAAC,UAAU,CAAC,CAAA,uBAAA,CAAyB,CAAS;QAC3F;AAEA,QAAA,OAAO,IAAI,WAAW,CAAC,UAAU,EAAG,QAAgB,EAAE,aAAkC,EAAE,KAAmB,EAAE,KAAK,CAAC;IACzH;AAEA,IAAA,QAAQ,CAAC,GAAsB,EAAA;AAC3B,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM;AAC1B,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO;AAE5B,QAAA,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;YACrB,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC;QACnC;QAEA,MAAM,KAAK,GAAW,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC;AAC9C,QAAA,IAAI,KAAK,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE;YACpB,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC;QACnC;AAEA,QAAA,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM;QAC/B,IAAI,KAAK,IAAI,MAAM,CAAC,SAAS,GAAG,CAAC,CAAC,EAAE;YAChC,OAAO,OAAO,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC;QAC/C;QAEA,MAAM,KAAK,GAAG,yBAAyB,CAAC,MAAM,EAAE,KAAK,CAAC;AACtD,QAAA,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;QAC3B,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC;AAC/B,QAAA,MAAM,CAAC,GAAG,WAAW,CAAC,mBAAmB,CAAC,IAAI,CAAC,aAAa,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC;QAElF,MAAM,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC;AAChD,QAAA,MAAM,WAAW,GAAG,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC;AAEpD,QAAA,QAAQ,IAAI,CAAC,QAAQ;AACjB,YAAA,KAAK,aAAa;AACd,gBAAA,QAAQ,IAAI,CAAC,IAAI,CAAC,IAAI;AAClB,oBAAA,KAAK,QAAQ;wBACT,OAAO,iBAAiB,CAAC,WAAW,EAAE,WAAW,EAAE,CAAC,CAAC;AACzD,oBAAA,KAAK,OAAO;wBACR,OAAO,KAAK,CAAC,WAAW,CAAC,WAAW,EAAE,WAAW,EAAE,CAAC,CAAC;AACzD,oBAAA,KAAK,SAAS;wBACV,OAAO,OAAO,CAAC,WAAW,CAAC,WAAW,EAAE,WAAW,EAAE,CAAC,CAAC;AAC3D,oBAAA,KAAK,YAAY;wBACb,OAAO,UAAU,CAAC,WAAW,CAAC,WAAW,EAAE,WAAW,EAAE,CAAC,CAAC;AAC9D,oBAAA,KAAK,aAAa;wBACd,OAAO,WAAW,CAAC,WAAW,CAAC,WAAW,EAAE,WAAW,EAAE,CAAC,CAAC;AAC/D,oBAAA,KAAK,gCAAgC;wBACjC,OAAO,8BAA8B,CAAC,WAAW,CAAC,WAAW,EAAE,WAAW,EAAE,CAAC,CAAC;AAClF,oBAAA,KAAK,OAAO;wBACR,OAAO,gBAAgB,CAAC,WAAW,EAAE,WAAW,EAAE,CAAC,CAAC;AACxD,oBAAA,KAAK,sBAAsB;wBACvB,OAAO,oBAAoB,CAAC,WAAW,CAAC,WAAW,EAAE,WAAW,EAAE,CAAC,CAAC;;AAEhF,YAAA,KAAK,iBAAiB;AAClB,gBAAA,QAAQ,IAAI,CAAC,IAAI,CAAC,IAAI;AAClB,oBAAA,KAAK,OAAO;AACR,wBAAA,OAAO,KAAK,CAAC,WAAW,CAAC,WAAW,EAAE,WAAW,EAAE,CAAC,EAAE,KAAK,CAAC;AAChE,oBAAA,KAAK,YAAY;AACb,wBAAA,OAAO,UAAU,CAAC,WAAW,CAAC,WAAW,EAAE,WAAW,EAAE,CAAC,EAAE,KAAK,CAAC;;AAE7E,YAAA,KAAK,iBAAiB;AAClB,gBAAA,QAAQ,IAAI,CAAC,IAAI,CAAC,IAAI;AAClB,oBAAA,KAAK,OAAO;AACR,wBAAA,OAAO,KAAK,CAAC,WAAW,CAAC,WAAW,EAAE,WAAW,EAAE,CAAC,EAAE,KAAK,CAAC;AAChE,oBAAA,KAAK,YAAY;AACb,wBAAA,OAAO,UAAU,CAAC,WAAW,CAAC,WAAW,EAAE,WAAW,EAAE,CAAC,EAAE,KAAK,CAAC;;;IAGrF;AAEA,IAAA,SAAS,CAAC,EAA2B,EAAA;AACjC,QAAA,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC;AACd,QAAA,KAAK,MAAM,UAAU,IAAI,IAAI,CAAC,OAAO,EAAE;YACnC,EAAE,CAAC,UAAU,CAAC;QAClB;IACJ;IAEA,aAAa,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,GAAG,CAAC,aAAa,EAAE,CAAC;IACzD;AACH;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkCE;AACF,SAAS,wBAAwB,CAAC,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,UAAU,EAAA;AACjE,IAAA,MAAM,UAAU,GAAG,UAAU,GAAG,UAAU;AAC1C,IAAA,MAAM,QAAQ,GAAG,KAAK,GAAG,UAAU;AAEnC,IAAA,IAAI,UAAU,KAAK,CAAC,EAAE;AAClB,QAAA,OAAO,CAAC;IACZ;AAAO,SAAA,IAAI,IAAI,KAAK,CAAC,EAAE;QACnB,OAAO,QAAQ,GAAG,UAAU;IAChC;SAAO;QACH,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC;IAC5E;AACJ;AAEO,MAAM,kBAAkB,GAAG;IAC9B,KAAK,EAAE,KAAK,CAAC,WAAW;AACxB,IAAA,MAAM,EAAE,iBAAiB;IACzB,OAAO,EAAE,OAAO,CAAC,WAAW;IAC5B,WAAW,EAAE,WAAW,CAAC,WAAW;IACpC,UAAU,EAAE,UAAU,CAAC,WAAW;IAClC,8BAA8B,EAAE,8BAA8B,CAAC,WAAW;AAC1E,IAAA,KAAK,EAAE;;;MCpRE,QAAQ,CAAA;IAIjB,WAAA,CAAY,IAAU,EAAE,IAAuB,EAAA;AAC3C,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI;AAChB,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI;IACpB;AAEA,IAAA,OAAO,KAAK,CAAC,IAA4B,EAAE,OAAuB,EAAA;AAC9D,QAAA,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;AACjB,YAAA,OAAO,OAAO,CAAC,KAAK,CAAC,iCAAiC,CAAS;QACnE;QACA,IAAI,UAAU,GAAS,IAAI;AAC3B,QAAA,MAAM,YAAY,GAAG,OAAO,CAAC,YAAY;QACzC,IAAI,YAAY,IAAI,YAAY,CAAC,IAAI,KAAK,OAAO,EAAE;YAC/C,UAAU,GAAG,YAAY;QAC7B;QACA,MAAM,UAAU,GAAG,EAAE;QAErB,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;YAC7B,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,EAAC,cAAc,EAAE,MAAM,EAAC,CAAC;AACzG,YAAA,IAAI,CAAC,MAAM;AAAE,gBAAA,OAAO,IAAI;AACxB,YAAA,UAAU,GAAG,UAAU,IAAI,MAAM,CAAC,IAAI;AACtC,YAAA,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC;QAC3B;AACA,QAAA,IAAI,CAAC,UAAU;AAAE,YAAA,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC;;;;;;QAOlD,MAAM,eAAe,GAAG,YAAY;AAChC,YAAA,UAAU,CAAC,IAAI,CAAC,GAAG,IAAI,YAAY,CAAC,YAAY,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;QAEhE,OAAO,eAAe;AAClB,YAAA,IAAI,QAAQ,CAAC,SAAS,EAAE,UAAU,CAAC;AACnC,YAAA,IAAI,QAAQ,CAAE,UAAkB,EAAE,UAAU,CAAC;IACrD;AAEA,IAAA,QAAQ,CAAC,GAAsB,EAAA;QAC3B,IAAI,MAAM,GAAG,IAAI;QACjB,IAAI,QAAQ,GAAG,CAAC;AAChB,QAAA,IAAI,kBAAkB;AACtB,QAAA,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE;AACzB,YAAA,QAAQ,EAAE;AACV,YAAA,MAAM,GAAG,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC;;;YAG1B,IAAI,MAAM,IAAI,MAAM,YAAY,aAAa,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE;gBAChE,IAAI,CAAC,kBAAkB,EAAE;AACrB,oBAAA,kBAAkB,GAAG,MAAM,CAAC,IAAI;gBACpC;gBACA,MAAM,GAAG,IAAI;gBACb,IAAI,QAAQ,KAAK,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;oBAC/B,MAAM,GAAG,kBAAkB;gBAC/B;YACJ;YAEA,IAAI,MAAM,KAAK,IAAI;gBAAE;QACzB;AACA,QAAA,OAAO,MAAM;IACjB;AAEA,IAAA,SAAS,CAAC,EAA2B,EAAA;AACjC,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;IACzB;IAEA,aAAa,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,GAAG,CAAC,aAAa,EAAE,CAAC;IACtD;AACH;;ACpED,SAAS,gBAAgB,CAAC,EAAsB,EAAE,IAAU,EAAA;IACxD,IAAI,EAAE,KAAK,IAAI,IAAI,EAAE,KAAK,IAAI,EAAE;;AAE5B,QAAA,OAAO,IAAI,CAAC,IAAI,KAAK,SAAS;YAC1B,IAAI,CAAC,IAAI,KAAK,QAAQ;YACtB,IAAI,CAAC,IAAI,KAAK,QAAQ;YACtB,IAAI,CAAC,IAAI,KAAK,MAAM;AACpB,YAAA,IAAI,CAAC,IAAI,KAAK,OAAO;IAC7B;SAAO;;AAEH,QAAA,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ;YACzB,IAAI,CAAC,IAAI,KAAK,QAAQ;AACtB,YAAA,IAAI,CAAC,IAAI,KAAK,OAAO;IAC7B;AACJ;AAEA,SAAS,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAA,EAAI,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;AACzC,SAAS,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAA,EAAI,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1C,SAAS,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAA,EAAI,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;AACvC,SAAS,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAA,EAAI,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;AACvC,SAAS,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAA,EAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;AAC1C,SAAS,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAA,EAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;AAE1C,SAAS,SAAS,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAA,EAAI,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACjE,SAAS,UAAU,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAA,EAAI,OAAO,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACrE,SAAS,SAAS,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAA,EAAI,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAC/D,SAAS,SAAS,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAA,EAAI,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAC/D,SAAS,WAAW,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAA,EAAI,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAClE,SAAS,WAAW,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAA,EAAI,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAElE;;;;;;;;;;;;;;;;AAgBG;AACH,SAAS,cAAc,CAAC,EAAsB,EAAE,YAAY,EAAE,mBAAmB,EAAA;IAC7E,MAAM,iBAAiB,GAAG,EAAE,KAAK,IAAI,IAAI,EAAE,KAAK,IAAI;AAEpD,IAAA,OAAO,MAAM,UAAU,CAAA;AAOnB,QAAA,WAAA,CAAY,GAAe,EAAE,GAAe,EAAE,QAA4B,EAAA;AACtE,YAAA,IAAI,CAAC,IAAI,GAAG,WAAW;AACvB,YAAA,IAAI,CAAC,GAAG,GAAG,GAAG;AACd,YAAA,IAAI,CAAC,GAAG,GAAG,GAAG;AACd,YAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ;AACxB,YAAA,IAAI,CAAC,kBAAkB,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,OAAO,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,OAAO;QACpF;AAEA,QAAA,OAAO,KAAK,CAAC,IAA4B,EAAE,OAAuB,EAAA;YAC9D,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;AACtC,gBAAA,OAAO,OAAO,CAAC,KAAK,CAAC,kCAAkC,CAAS;AAEpE,YAAA,MAAM,EAAE,GAAwB,IAAI,CAAC,CAAC,CAAS;AAE/C,YAAA,IAAI,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC;AAC9C,YAAA,IAAI,CAAC,GAAG;AAAE,gBAAA,OAAO,IAAI;YACrB,IAAI,CAAC,gBAAgB,CAAC,EAAE,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE;gBACjC,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAA,CAAA,EAAI,EAAE,CAAA,0CAAA,EAA6C,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA,EAAA,CAAI,CAAS;YACzH;AACA,YAAA,IAAI,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC;AAC9C,YAAA,IAAI,CAAC,GAAG;AAAE,gBAAA,OAAO,IAAI;YACrB,IAAI,CAAC,gBAAgB,CAAC,EAAE,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE;gBACjC,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAA,CAAA,EAAI,EAAE,CAAA,0CAAA,EAA6C,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA,EAAA,CAAI,CAAS;YACzH;YAEA,IACI,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,CAAC,IAAI;AAC/B,gBAAA,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,OAAO;AACzB,gBAAA,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,OAAO,EAC3B;gBACE,OAAO,OAAO,CAAC,KAAK,CAAC,yBAAyB,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA,OAAA,EAAU,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA,EAAA,CAAI,CAAS;YACrH;YAEA,IAAI,iBAAiB,EAAE;;AAEnB,gBAAA,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,OAAO,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE;;AAExD,oBAAA,GAAG,GAAG,IAAI,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC;gBACxC;AAAO,qBAAA,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,OAAO,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE;;AAE/D,oBAAA,GAAG,GAAG,IAAI,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC;gBACxC;YACJ;YAEA,IAAI,QAAQ,GAAG,IAAI;AACnB,YAAA,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;AACnB,gBAAA,IACI,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,QAAQ;AAC1B,oBAAA,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,QAAQ;AAC1B,oBAAA,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,OAAO;AACzB,oBAAA,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,OAAO,EAC3B;AACE,oBAAA,OAAO,OAAO,CAAC,KAAK,CAAC,kDAAkD,CAAS;gBACpF;AACA,gBAAA,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,YAAY,CAAC;AAClD,gBAAA,IAAI,CAAC,QAAQ;AAAE,oBAAA,OAAO,IAAI;YAC9B;YAEA,OAAO,IAAI,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,QAAQ,CAAC;QAC7C;AAEA,QAAA,QAAQ,CAAC,GAAsB,EAAA;YAC3B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC;YAClC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC;AAElC,YAAA,IAAI,iBAAiB,IAAI,IAAI,CAAC,kBAAkB,EAAE;AAC9C,gBAAA,MAAM,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC;AACtB,gBAAA,MAAM,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC;;gBAEtB,IAAI,EAAE,CAAC,IAAI,KAAK,EAAE,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,QAAQ,IAAI,EAAE,CAAC,IAAI,KAAK,QAAQ,CAAC,EAAE;AACxE,oBAAA,MAAM,IAAI,YAAY,CAAC,CAAA,wBAAA,EAA2B,EAAE,CAAA,yDAAA,EAA4D,EAAE,CAAC,IAAI,KAAK,EAAE,CAAC,IAAI,CAAA,UAAA,CAAY,CAAC;gBACpJ;YACJ;YAEA,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,kBAAkB,EAAE;AAChE,gBAAA,MAAM,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC;AACtB,gBAAA,MAAM,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC;AACtB,gBAAA,IAAI,EAAE,CAAC,IAAI,KAAK,QAAQ,IAAI,EAAE,CAAC,IAAI,KAAK,QAAQ,EAAE;oBAC9C,OAAO,YAAY,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;gBACtC;YACJ;AAEA,YAAA,OAAO,IAAI,CAAC,QAAQ;AAChB,gBAAA,mBAAmB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AAC/D,gBAAA,YAAY,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;QACnC;AAEA,QAAA,SAAS,CAAC,EAA2B,EAAA;AACjC,YAAA,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC;AACZ,YAAA,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC;AACZ,YAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACf,gBAAA,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC;YACrB;QACJ;QAEA,aAAa,GAAA;AACT,YAAA,OAAO,IAAI;QACf;KACH;AACL;AAEO,MAAM,MAAM,GAAG,cAAc,CAAC,IAAI,EAAE,EAAE,EAAE,SAAS,CAAC;AAClD,MAAM,SAAS,GAAG,cAAc,CAAC,IAAI,EAAE,GAAG,EAAE,UAAU,CAAC;AACvD,MAAM,QAAQ,GAAG,cAAc,CAAC,GAAG,EAAE,EAAE,EAAE,SAAS,CAAC;AACnD,MAAM,WAAW,GAAG,cAAc,CAAC,GAAG,EAAE,EAAE,EAAE,SAAS,CAAC;AACtD,MAAM,eAAe,GAAG,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,WAAW,CAAC;AAC/D,MAAM,kBAAkB,GAAG,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,WAAW,CAAC;;MCvK5D,kBAAkB,CAAA;AAM3B,IAAA,WAAA,CAAY,aAAyB,EAAE,kBAA8B,EAAE,MAAyB,EAAA;AAC5F,QAAA,IAAI,CAAC,IAAI,GAAG,YAAY;AACxB,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM;AACpB,QAAA,IAAI,CAAC,aAAa,GAAG,aAAa;AAClC,QAAA,IAAI,CAAC,kBAAkB,GAAG,kBAAkB;IAChD;AAEA,IAAA,OAAO,KAAK,CAAC,IAA4B,EAAE,OAAuB,EAAA;AAC9D,QAAA,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;AACjB,YAAA,OAAO,OAAO,CAAC,KAAK,CAAC,wBAAwB,CAAS;AAE1D,QAAA,MAAM,OAAO,GAAI,IAAI,CAAC,CAAC,CAAS;QAChC,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;AACrD,YAAA,OAAO,OAAO,CAAC,KAAK,CAAC,8CAA8C,CAAS;AAEhF,QAAA,MAAM,aAAa,GAAG,OAAO,CAAC,KAAK,CAC/B,OAAO,CAAC,gBAAgB,CAAC,KAAK,SAAS,GAAG,KAAK,GAAG,OAAO,CAAC,gBAAgB,CAAC,EAAE,CAAC,EAAE,WAAW,CAAC;AAChG,QAAA,IAAI,CAAC,aAAa;AAAE,YAAA,OAAO,IAAI;AAE/B,QAAA,MAAM,kBAAkB,GAAG,OAAO,CAAC,KAAK,CACpC,OAAO,CAAC,qBAAqB,CAAC,KAAK,SAAS,GAAG,KAAK,GAAG,OAAO,CAAC,qBAAqB,CAAC,EAAE,CAAC,EAAE,WAAW,CAAC;AAC1G,QAAA,IAAI,CAAC,kBAAkB;AAAE,YAAA,OAAO,IAAI;QAEpC,IAAI,MAAM,GAAG,IAAI;AACjB,QAAA,IAAI,OAAO,CAAC,QAAQ,CAAC,EAAE;AACnB,YAAA,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC;AACxD,YAAA,IAAI,CAAC,MAAM;AAAE,gBAAA,OAAO,IAAI;QAC5B;QAEA,OAAO,IAAI,kBAAkB,CAAC,aAAa,EAAE,kBAAkB,EAAE,MAAM,CAAC;IAC5E;AAEA,IAAA,QAAQ,CAAC,GAAsB,EAAA;AAC3B,QAAA,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;IAChJ;AAEA,IAAA,SAAS,CAAC,EAA2B,EAAA;AACjC,QAAA,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC;AACtB,QAAA,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC;AAC3B,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE;AACb,YAAA,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC;QACnB;IACJ;IAEA,aAAa,GAAA;;;;;AAKT,QAAA,OAAO,KAAK;IAChB;AACH;;MC1DY,YAAY,CAAA;IAQrB,WAAA,CAAY,MAAkB,EAC1B,MAAyB,EACzB,QAA2B,EAC3B,iBAAoC,EACpC,iBAAoC,EAAA;AACpC,QAAA,IAAI,CAAC,IAAI,GAAG,UAAU;AACtB,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM;AACpB,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM;AACpB,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ;AACxB,QAAA,IAAI,CAAC,iBAAiB,GAAG,iBAAiB;AAC1C,QAAA,IAAI,CAAC,iBAAiB,GAAG,iBAAiB;IAC9C;AAEA,IAAA,OAAO,KAAK,CAAC,IAA4B,EAAE,OAAuB,EAAA;AAC9D,QAAA,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;AACjB,YAAA,OAAO,OAAO,CAAC,KAAK,CAAC,yBAAyB,CAAS;AAE3D,QAAA,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC;AACpD,QAAA,IAAI,CAAC,MAAM;AAAE,YAAA,OAAO,IAAI;AAExB,QAAA,MAAM,OAAO,GAAI,IAAI,CAAC,CAAC,CAAS;QAChC,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;AACrD,YAAA,OAAO,OAAO,CAAC,KAAK,CAAC,kDAAkD,CAAS;QAEpF,IAAI,MAAM,GAAG,IAAI;AACjB,QAAA,IAAI,OAAO,CAAC,QAAQ,CAAC,EAAE;AACnB,YAAA,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC;AACxD,YAAA,IAAI,CAAC,MAAM;AAAE,gBAAA,OAAO,IAAI;QAC5B;QAEA,IAAI,QAAQ,GAAG,IAAI;AACnB,QAAA,IAAI,OAAO,CAAC,UAAU,CAAC,EAAE;AACrB,YAAA,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC;AAC5D,YAAA,IAAI,CAAC,QAAQ;AAAE,gBAAA,OAAO,IAAI;QAC9B;QAEA,IAAI,iBAAiB,GAAG,IAAI;AAC5B,QAAA,IAAI,OAAO,CAAC,qBAAqB,CAAC,EAAE;AAChC,YAAA,iBAAiB,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,qBAAqB,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC;AAChF,YAAA,IAAI,CAAC,iBAAiB;AAAE,gBAAA,OAAO,IAAI;QACvC;QAEA,IAAI,iBAAiB,GAAG,IAAI;AAC5B,QAAA,IAAI,OAAO,CAAC,qBAAqB,CAAC,EAAE;AAChC,YAAA,iBAAiB,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,qBAAqB,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC;AAChF,YAAA,IAAI,CAAC,iBAAiB;AAAE,gBAAA,OAAO,IAAI;QACvC;AAEA,QAAA,OAAO,IAAI,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,iBAAiB,EAAE,iBAAiB,CAAC;IAC3F;AAEA,IAAA,QAAQ,CAAC,GAAsB,EAAA;QAC3B,OAAO,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,EACrE;YACI,KAAK,EAAE,IAAI,CAAC,QAAQ,GAAG,UAAU,GAAG,SAAS;AAC7C,YAAA,QAAQ,EAAE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,SAAS;AACjE,YAAA,qBAAqB,EAAE,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,SAAS;AAChG,YAAA,qBAAqB,EAAE,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,SAAS;AACnG,SAAA,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IAC5C;AAEA,IAAA,SAAS,CAAC,EAA2B,EAAA;AACjC,QAAA,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC;AACf,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE;AACb,YAAA,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC;QACnB;AACA,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACf,YAAA,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC;QACrB;AACA,QAAA,IAAI,IAAI,CAAC,iBAAiB,EAAE;AACxB,YAAA,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC;QAC9B;AACA,QAAA,IAAI,IAAI,CAAC,iBAAiB,EAAE;AACxB,YAAA,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC;QAC9B;IACJ;IAEA,aAAa,GAAA;AACT,QAAA,OAAO,KAAK;IAChB;AACH;;MCpEY,gBAAgB,CAAA;AAIzB,IAAA,WAAA,CAAY,QAA2C,EAAA;AACnD,QAAA,IAAI,CAAC,IAAI,GAAG,aAAa;AACzB,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ;IAC5B;AAEA,IAAA,OAAO,KAAK,CAAC,IAA4B,EAAE,OAAuB,EAAA;AAC9D,QAAA,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;AACjB,YAAA,OAAO,OAAO,CAAC,KAAK,CAAC,iCAAiC,CAAS;QACnE;AAEA,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC;AACxB,QAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAG;AAC3D,YAAA,OAAO,OAAO,CAAC,KAAK,CAAC,kDAAkD,CAAS;QACpF;QAEA,MAAM,QAAQ,GAAsC,EAAE;QACtD,IAAI,oBAAoB,GAAG,KAAK;AAChC,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE;AACvC,YAAA,MAAM,GAAG,GAAI,IAAI,CAAC,CAAC,CAAS;AAE5B,YAAA,IAAI,oBAAoB,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;gBACxE,oBAAoB,GAAG,KAAK;gBAE5B,IAAI,KAAK,GAAG,IAAI;AAChB,gBAAA,IAAI,GAAG,CAAC,YAAY,CAAC,EAAE;AACnB,oBAAA,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC;AACvD,oBAAA,IAAI,CAAC,KAAK;AAAE,wBAAA,OAAO,IAAI;gBAC3B;gBAEA,IAAI,IAAI,GAAG,IAAI;AACf,gBAAA,IAAI,GAAG,CAAC,WAAW,CAAC,EAAE;AAClB,oBAAA,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;AAC5D,oBAAA,IAAI,CAAC,IAAI;AAAE,wBAAA,OAAO,IAAI;gBAC1B;gBAEA,IAAI,SAAS,GAAG,IAAI;AACpB,gBAAA,IAAI,GAAG,CAAC,YAAY,CAAC,EAAE;AACnB,oBAAA,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC;AAC1D,oBAAA,IAAI,CAAC,SAAS;AAAE,wBAAA,OAAO,IAAI;gBAC/B;gBAEA,IAAI,aAAa,GAAG,IAAI;AACxB,gBAAA,IAAI,GAAG,CAAC,gBAAgB,CAAC,EAAE;AACvB,oBAAA,IAAI,OAAO,GAAG,CAAC,gBAAgB,CAAC,KAAK,QAAQ,IAAI,CAAC,sBAAsB,CAAC,QAAQ,CAAC,GAAG,CAAC,gBAAgB,CAAkB,CAAC,EAAE;wBACvH,OAAO,OAAO,CAAC,KAAK,CAAC,CAAA,sEAAA,EAAyE,GAAG,CAAC,gBAAgB,CAAC,CAAA,UAAA,CAAY,CAAS;oBAC5I;AAEA,oBAAA,aAAa,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC;AACnE,oBAAA,IAAI,CAAC,aAAa;AAAE,wBAAA,OAAO,IAAI;gBACnC;gBAEA,MAAM,cAAc,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;AACpD,gBAAA,cAAc,CAAC,KAAK,GAAG,KAAK;AAC5B,gBAAA,cAAc,CAAC,IAAI,GAAG,IAAI;AAC1B,gBAAA,cAAc,CAAC,SAAS,GAAG,SAAS;AACpC,gBAAA,cAAc,CAAC,aAAa,GAAG,aAAa;YAChD;iBAAO;AACH,gBAAA,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC;AACpD,gBAAA,IAAI,CAAC,OAAO;AAAE,oBAAA,OAAO,IAAI;AAEzB,gBAAA,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI;AAC9B,gBAAA,IAAI,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,eAAe;AACpF,oBAAA,OAAO,OAAO,CAAC,KAAK,CAAC,2EAA2E,CAAS;gBAE7G,oBAAoB,GAAG,IAAI;gBAC3B,QAAQ,CAAC,IAAI,CAAC,EAAC,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAC,CAAC;YAC3F;QACJ;AAEA,QAAA,OAAO,IAAI,gBAAgB,CAAC,QAAQ,CAAC;IACzC;AAEA,IAAA,QAAQ,CAAC,GAAsB,EAAA;AAC3B,QAAA,MAAM,eAAe,GAAG,OAAO,IAAG;YAC9B,MAAM,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC;AACtD,YAAA,IAAI,MAAM,CAAC,gBAAgB,CAAC,KAAK,iBAAiB,EAAE;AAChD,gBAAA,OAAO,IAAI,gBAAgB,CACvB,EAAE,EACF,gBAAgB,EAChB,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,OAAO,CAAC,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,IAAI,CACrE;YACL;AAEA,YAAA,OAAO,IAAI,gBAAgB,CACvB,aAAa,CAAC,gBAAgB,CAAC,EAC/B,IAAI,EACJ,OAAO,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,IAAI,EAClD,OAAO,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,EAC1D,OAAO,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,IAAI,EAC1D,OAAO,CAAC,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,IAAI,CACrE;AACL,QAAA,CAAC;AAED,QAAA,OAAO,IAAI,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;IAC5D;AAEA,IAAA,SAAS,CAAC,EAA2B,EAAA;AACjC,QAAA,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjC,YAAA,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC;AACnB,YAAA,IAAI,OAAO,CAAC,KAAK,EAAE;AACf,gBAAA,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;YACrB;AACA,YAAA,IAAI,OAAO,CAAC,IAAI,EAAE;AACd,gBAAA,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;YACpB;AACA,YAAA,IAAI,OAAO,CAAC,SAAS,EAAE;AACnB,gBAAA,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC;YACzB;AACA,YAAA,IAAI,OAAO,CAAC,aAAa,EAAE;AACvB,gBAAA,EAAE,CAAC,OAAO,CAAC,aAAa,CAAC;YAC7B;QACJ;IACJ;IAEA,aAAa,GAAA;;;AAGT,QAAA,OAAO,KAAK;IAChB;AACH;;MCjJY,eAAe,CAAA;AAIxB,IAAA,WAAA,CAAY,KAAiB,EAAA;AACzB,QAAA,IAAI,CAAC,IAAI,GAAG,iBAAiB;AAC7B,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK;IACtB;AAEA,IAAA,OAAO,KAAK,CAAC,IAA4B,EAAE,OAAuB,EAAA;AAC9D,QAAA,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;AACnB,YAAA,OAAO,OAAO,CAAC,KAAK,CAAC,yBAAyB,CAAS;QAC3D;AAEA,QAAA,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC;AAClD,QAAA,IAAI,CAAC,IAAI;AAAE,YAAA,OAAO,OAAO,CAAC,KAAK,CAAC,yBAAyB,CAAS;AAElE,QAAA,OAAO,IAAI,eAAe,CAAC,IAAI,CAAC;IACpC;AAEA,IAAA,QAAQ,CAAC,GAAsB,EAAA;QAC3B,MAAM,kBAAkB,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC;QAEnD,MAAM,KAAK,GAAG,aAAa,CAAC,UAAU,CAAC,kBAAkB,CAAC;AAC1D,QAAA,IAAI,KAAK,IAAI,GAAG,CAAC,eAAe;AAAE,YAAA,KAAK,CAAC,SAAS,GAAG,GAAG,CAAC,eAAe,CAAC,OAAO,CAAC,kBAAkB,CAAC,GAAG,EAAE;AAExG,QAAA,OAAO,KAAK;IAChB;AAEA,IAAA,SAAS,CAAC,EAA2B,EAAA;AACjC,QAAA,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC;IAClB;IAEA,aAAa,GAAA;;AAET,QAAA,OAAO,KAAK;IAChB;AACH;;MCnCY,MAAM,CAAA;AAIf,IAAA,WAAA,CAAY,KAAiB,EAAA;AACzB,QAAA,IAAI,CAAC,IAAI,GAAG,UAAU;AACtB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK;IACtB;AAEA,IAAA,OAAO,KAAK,CAAC,IAA4B,EAAE,OAAuB,EAAA;AAC9D,QAAA,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;AACjB,YAAA,OAAO,OAAO,CAAC,KAAK,CAAC,CAAA,+BAAA,EAAkC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAA,SAAA,CAAW,CAAS;AAE9F,QAAA,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACvC,QAAA,IAAI,CAAC,KAAK;AAAE,YAAA,OAAO,IAAI;QAEvB,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,OAAO,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,OAAO;AAC1F,YAAA,OAAO,OAAO,CAAC,KAAK,CAAC,CAAA,qDAAA,EAAwD,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA,SAAA,CAAW,CAAS;AAE7H,QAAA,OAAO,IAAI,MAAM,CAAC,KAAK,CAAC;IAC5B;AAEA,IAAA,QAAQ,CAAC,GAAsB,EAAA;QAC3B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC;AACtC,QAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;;AAE3B,YAAA,OAAO,CAAC,GAAG,KAAK,CAAC,CAAC,MAAM;QAC5B;AAAO,aAAA,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YAC7B,OAAO,KAAK,CAAC,MAAM;QACvB;aAAO;AACH,YAAA,MAAM,IAAI,YAAY,CAAC,CAAA,wDAAA,EAA2D,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAA,SAAA,CAAW,CAAC;QAC7H;IACJ;AAEA,IAAA,SAAS,CAAC,EAA2B,EAAA;AACjC,QAAA,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC;IAClB;IAEA,aAAa,GAAA;AACT,QAAA,OAAO,KAAK;IAChB;AACH;;AC9CM,MAAM,MAAM,GAAG,IAAI;AAEpB,SAAU,kBAAkB,CAAC,CAAmB,EAAE,SAA2B,EAAA;IAC/E,MAAM,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAChC,MAAM,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAChC,IAAA,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC;IAC5C,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,WAAW,GAAG,MAAM,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,WAAW,GAAG,MAAM,CAAC,CAAC;AACvF;AAEM,SAAU,sBAAsB,CAAC,KAAuB,EAAE,SAA2B,EAAA;AACvF,IAAA,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC;AAC5C,IAAA,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,MAAM,GAAG,SAAS,CAAC,CAAC,IAAI,WAAW;AACzD,IAAA,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,MAAM,GAAG,SAAS,CAAC,CAAC,IAAI,WAAW;IACzD,OAAO,CAAC,uBAAuB,CAAC,CAAC,CAAC,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC;AAC5D;AAEA,SAAS,gBAAgB,CAAC,GAAW,EAAA;AACjC,IAAA,OAAO,CAAC,GAAG,GAAG,GAAG,IAAI,GAAG;AAC5B;AAEA,SAAS,uBAAuB,CAAC,SAAiB,EAAA;AAC9C,IAAA,OAAO,SAAS,GAAG,GAAG,GAAG,GAAG;AAChC;AAEA,SAAS,gBAAgB,CAAC,GAAW,EAAA;AACjC,IAAA,OAAO,CAAC,GAAG,IAAI,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG;AAChG;AAEA,SAAS,gBAAgB,CAAC,SAAiB,EAAA;AACvC,IAAA,OAAO,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,SAAS,GAAG,GAAG,IAAI,IAAI,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,GAAG,EAAE;AAC5F;AAEM,SAAU,UAAU,CAAC,IAAU,EAAE,KAAuB,EAAA;AAC1D,IAAA,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;AACrC,IAAA,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;AACrC,IAAA,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;AACrC,IAAA,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;AACzC;AAEM,SAAU,YAAY,CAAC,KAAW,EAAE,KAAW,EAAA;IACjD,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC;AAAE,QAAA,OAAO,KAAK;IACtC,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC;AAAE,QAAA,OAAO,KAAK;IACtC,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC;AAAE,QAAA,OAAO,KAAK;IACtC,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC;AAAE,QAAA,OAAO,KAAK;AACtC,IAAA,OAAO,IAAI;AACf;SAEgB,YAAY,CAAC,CAAmB,EAAE,EAAoB,EAAE,EAAoB,EAAA;AACxF,IAAA,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;AACrH;AAEA,SAAS,eAAe,CAAC,CAAmB,EAAE,EAAoB,EAAE,EAAoB,EAAA;IACpF,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IACvB,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IACvB,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IACvB,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IACvB,OAAO,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;AACxE;AAEA;AACM,SAAU,uBAAuB,CAAC,CAAmB,EAAE,CAAmB,EAAE,CAAmB,EAAE,CAAmB,EAAA;;;;IAItH,MAAM,OAAO,GAAqB,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5D,MAAM,OAAO,GAAqB,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5D,IAAA,IAAI,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC;AAAE,QAAA,OAAO,KAAK;;;;IAK9C,IAAI,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AAAE,QAAA,OAAO,IAAI;AAC7D,IAAA,OAAO,KAAK;AAChB;SAEgB,oBAAoB,CAAC,EAAE,EAAE,EAAE,EAAE,OAAO,EAAA;AAChD,IAAA,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE;;AAExB,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE;AACtC,YAAA,IAAI,uBAAuB,CAAC,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;AACvD,gBAAA,OAAO,IAAI;YACf;QACJ;IACJ;AACA,IAAA,OAAO,KAAK;AAChB;AAEA;AACM,SAAU,kBAAkB,CAAC,KAAuB,EAAE,KAA2B,EAAE,gBAAgB,GAAG,KAAK,EAAA;IAC7G,IAAI,MAAM,GAAG,KAAK;AAClB,IAAA,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;AACtB,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AACtC,YAAA,IAAI,eAAe,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAAE,gBAAA,OAAO,gBAAgB;AACzE,YAAA,IAAI,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;gBAAE,MAAM,GAAG,CAAC,MAAM;QACnE;IACJ;AACA,IAAA,OAAO,MAAM;AACjB;AAEM,SAAU,mBAAmB,CAAC,KAAuB,EAAE,QAAgC,EAAA;AACzF,IAAA,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE;AAC5B,QAAA,IAAI,kBAAkB,CAAC,KAAK,EAAE,OAAO,CAAC;AAAE,YAAA,OAAO,IAAI;IACvD;AACA,IAAA,OAAO,KAAK;AAChB;AAEM,SAAU,uBAAuB,CAAC,IAAwB,EAAE,OAA6B,EAAA;;AAE3F,IAAA,KAAK,MAAM,KAAK,IAAI,IAAI,EAAE;QACtB,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE;AACrC,YAAA,OAAO,KAAK;QAChB;IACJ;;AAGA,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE;AACtC,QAAA,IAAI,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE;AACrD,YAAA,OAAO,KAAK;QAChB;IACJ;AACA,IAAA,OAAO,IAAI;AACf;AAEM,SAAU,wBAAwB,CAAC,IAAwB,EAAE,QAAgC,EAAA;AAC/F,IAAA,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE;AAC5B,QAAA,IAAI,uBAAuB,CAAC,IAAI,EAAE,OAAO,CAAC;AAAE,YAAA,OAAO,IAAI;IAC3D;AACA,IAAA,OAAO,KAAK;AAChB;AAEA,SAAS,IAAI,CAAC,EAAoB,EAAE,EAAoB,EAAA;IACpD,QAAQ,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AACzC;AAEA;AACA,SAAU,QAAQ,CAAC,EAAoB,EAAE,EAAoB,EAAE,EAAoB,EAAE,EAAoB,EAAA;;IAErG,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IACxB,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IACxB,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IACxB,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IACxB,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IACxB,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IACxB,MAAM,IAAI,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;IAChC,MAAM,IAAI,IAAK,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;AACjC,IAAA,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,CAAC;AAAE,QAAA,OAAO,IAAI;AACjE,IAAA,OAAO,KAAK;AAChB;;AC5IA,SAAS,cAAc,CAAC,WAAiC,EAAE,IAAU,EAAE,SAA2B,EAAA;IAC9F,MAAM,OAAO,GAAG,EAAE;AAClB,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACzC,MAAM,IAAI,GAAG,EAAE;AACf,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC5C,YAAA,MAAM,KAAK,GAAG,kBAAkB,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC;AAC9D,YAAA,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC;AACvB,YAAA,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;QACpB;AACA,QAAA,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;IACtB;AACA,IAAA,OAAO,OAAO;AAClB;AAEA,SAAS,eAAe,CAAC,WAAmC,EAAE,IAAU,EAAE,SAA2B,EAAA;IACjG,MAAM,QAAQ,GAAG,EAAE;AACnB,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACzC,QAAA,MAAM,OAAO,GAAG,cAAc,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,CAAC;AAC/D,QAAA,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC;IAC1B;AACA,IAAA,OAAO,QAAQ;AACnB;AAEA,SAAS,WAAW,CAAC,CAAmB,EAAE,IAAU,EAAE,QAAc,EAAE,SAAiB,EAAA;IACnF,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,EAAE;AAC1C,QAAA,MAAM,aAAa,GAAG,SAAS,GAAG,GAAG;QACrC,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,aAAa,IAAI,CAAC,SAAS,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,aAAa,IAAI,SAAS,GAAG,CAAC;AACpH,QAAA,IAAI,KAAK,KAAK,CAAC,EAAE;AACb,YAAA,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,aAAa,IAAI,CAAC,SAAS,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,aAAa,IAAI,SAAS,GAAG,CAAC;QACpH;AACA,QAAA,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK;IACjB;AACA,IAAA,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC;AACvB;AAEA,SAAS,SAAS,CAAC,IAAU,EAAA;IACzB,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,QAAQ;IAC5B,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ;AACjC;AAEA,SAAS,aAAa,CAAC,QAAqB,EAAE,SAAe,EAAE,QAAc,EAAE,SAA2B,EAAA;AACtG,IAAA,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG,MAAM;AACnD,IAAA,MAAM,MAAM,GAAG,CAAC,SAAS,CAAC,CAAC,GAAG,MAAM,EAAE,SAAS,CAAC,CAAC,GAAG,MAAM,CAAC;IAC3D,MAAM,UAAU,GAAuB,EAAE;AACzC,IAAA,KAAK,MAAM,MAAM,IAAI,QAAQ,EAAE;AAC3B,QAAA,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;YACxB,MAAM,CAAC,GAAqB,CAAC,KAAK,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;YACtE,WAAW,CAAC,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,CAAC;AAC9C,YAAA,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;QACtB;IACJ;AACA,IAAA,OAAO,UAAU;AACrB;AAEA,SAAS,YAAY,CAAC,QAAqB,EAAE,QAAc,EAAE,QAAc,EAAE,SAA2B,EAAA;AACpG,IAAA,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG,MAAM;AACnD,IAAA,MAAM,MAAM,GAAG,CAAC,SAAS,CAAC,CAAC,GAAG,MAAM,EAAE,SAAS,CAAC,CAAC,GAAG,MAAM,CAAC;IAC3D,MAAM,SAAS,GAAyB,EAAE;AAC1C,IAAA,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE;QACzB,MAAM,QAAQ,GAAsB,EAAE;AACtC,QAAA,KAAK,MAAM,KAAK,IAAI,IAAI,EAAE;YACtB,MAAM,CAAC,GAAqB,CAAC,KAAK,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;AACtE,YAAA,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC;AACvB,YAAA,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;QACpB;AACA,QAAA,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;IAC5B;AACA,IAAA,IAAI,QAAQ,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,SAAS,GAAG,CAAC,EAAE;QAC5C,SAAS,CAAC,QAAQ,CAAC;AACnB,QAAA,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE;AAC1B,YAAA,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE;gBAClB,WAAW,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC;YACjD;QACJ;IACJ;AACA,IAAA,OAAO,SAAS;AACpB;AAEA,SAAS,oBAAoB,CAAC,GAAsB,EAAE,eAAgC,EAAA;AAClF,IAAA,MAAM,SAAS,GAAS,CAAC,QAAQ,EAAE,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC;AAClE,IAAA,MAAM,QAAQ,GAAS,CAAC,QAAQ,EAAE,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC;AAEjE,IAAA,MAAM,SAAS,GAAG,GAAG,CAAC,WAAW,EAAE;AAEnC,IAAA,IAAI,eAAe,CAAC,IAAI,KAAK,SAAS,EAAE;AACpC,QAAA,MAAM,WAAW,GAAG,cAAc,CAAC,eAAe,CAAC,WAAW,EAAE,QAAQ,EAAE,SAAS,CAAC;AACpF,QAAA,MAAM,UAAU,GAAG,aAAa,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,CAAC;AAChF,QAAA,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,QAAQ,CAAC;AAAE,YAAA,OAAO,KAAK;AAEpD,QAAA,KAAK,MAAM,KAAK,IAAI,UAAU,EAAE;AAC5B,YAAA,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,WAAW,CAAC;AAAE,gBAAA,OAAO,KAAK;QAC7D;IACJ;AACA,IAAA,IAAI,eAAe,CAAC,IAAI,KAAK,cAAc,EAAE;AACzC,QAAA,MAAM,YAAY,GAAG,eAAe,CAAC,eAAe,CAAC,WAAW,EAAE,QAAQ,EAAE,SAAS,CAAC;AACtF,QAAA,MAAM,UAAU,GAAG,aAAa,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,CAAC;AAChF,QAAA,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,QAAQ,CAAC;AAAE,YAAA,OAAO,KAAK;AAEpD,QAAA,KAAK,MAAM,KAAK,IAAI,UAAU,EAAE;AAC5B,YAAA,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,YAAY,CAAC;AAAE,gBAAA,OAAO,KAAK;QAC/D;IACJ;AAEA,IAAA,OAAO,IAAI;AACf;AAEA,SAAS,mBAAmB,CAAC,GAAsB,EAAE,eAAgC,EAAA;AACjF,IAAA,MAAM,QAAQ,GAAS,CAAC,QAAQ,EAAE,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC;AACjE,IAAA,MAAM,QAAQ,GAAS,CAAC,QAAQ,EAAE,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC;AAEjE,IAAA,MAAM,SAAS,GAAG,GAAG,CAAC,WAAW,EAAE;AAEnC,IAAA,IAAI,eAAe,CAAC,IAAI,KAAK,SAAS,EAAE;AACpC,QAAA,MAAM,WAAW,GAAG,cAAc,CAAC,eAAe,CAAC,WAAW,EAAE,QAAQ,EAAE,SAAS,CAAC;AACpF,QAAA,MAAM,SAAS,GAAG,YAAY,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC;AAC7E,QAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,QAAQ,CAAC;AAAE,YAAA,OAAO,KAAK;AAEnD,QAAA,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE;AAC1B,YAAA,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE,WAAW,CAAC;AAAE,gBAAA,OAAO,KAAK;QACjE;IACJ;AACA,IAAA,IAAI,eAAe,CAAC,IAAI,KAAK,cAAc,EAAE;AACzC,QAAA,MAAM,YAAY,GAAG,eAAe,CAAC,eAAe,CAAC,WAAW,EAAE,QAAQ,EAAE,SAAS,CAAC;AACtF,QAAA,MAAM,SAAS,GAAG,YAAY,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC;AAC7E,QAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,QAAQ,CAAC;AAAE,YAAA,OAAO,KAAK;AAEnD,QAAA,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE;AAC1B,YAAA,IAAI,CAAC,wBAAwB,CAAC,IAAI,EAAE,YAAY,CAAC;AAAE,gBAAA,OAAO,KAAK;QACnE;IACJ;AACA,IAAA,OAAO,IAAI;AACf;MAEa,MAAM,CAAA;IAKf,WAAA,CAAY,OAAwB,EAAE,UAA2B,EAAA;AAC7D,QAAA,IAAI,CAAC,IAAI,GAAG,WAAW;AACvB,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO;AACtB,QAAA,IAAI,CAAC,UAAU,GAAG,UAAU;IAChC;AAEA,IAAA,OAAO,KAAK,CAAC,IAA4B,EAAE,OAAuB,EAAA;AAC9D,QAAA,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;AACjB,YAAA,OAAO,OAAO,CAAC,KAAK,CAAC,CAAA,6DAAA,EAAgE,IAAI,CAAC,MAAM,GAAG,CAAC,CAAA,SAAA,CAAW,CAAS;QAC5H,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE;AAClB,YAAA,MAAM,OAAO,GAAI,IAAI,CAAC,CAAC,CAAS;AAChC,YAAA,IAAI,OAAO,CAAC,IAAI,KAAK,mBAAmB,EAAE;gBACtC,MAAM,cAAc,GAA2B,EAAE;AACjD,gBAAA,KAAK,MAAM,OAAO,IAAI,OAAO,CAAC,QAAQ,EAAE;oBACpC,MAAM,EAAC,IAAI,EAAE,WAAW,EAAC,GAAG,OAAO,CAAC,QAAQ;AAC5C,oBAAA,IAAI,IAAI,KAAK,SAAS,EAAE;AACpB,wBAAA,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC;oBACpC;AACA,oBAAA,IAAI,IAAI,KAAK,cAAc,EAAE;AACzB,wBAAA,cAAc,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC;oBACvC;gBACJ;AACA,gBAAA,IAAI,cAAc,CAAC,MAAM,EAAE;AACvB,oBAAA,MAAM,mBAAmB,GAAyB;AAC9C,wBAAA,IAAI,EAAE,cAAc;AACpB,wBAAA,WAAW,EAAE;qBAChB;AACD,oBAAA,OAAO,IAAI,MAAM,CAAC,OAAO,EAAE,mBAAmB,CAAC;gBACnD;YAEJ;AAAO,iBAAA,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,EAAE;AACnC,gBAAA,MAAM,IAAI,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAClC,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,cAAc,EAAE;oBAC/C,OAAO,IAAI,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,QAAQ,CAAC;gBAChD;YACJ;AAAO,iBAAA,IAAI,OAAO,CAAC,IAAI,KAAM,SAAS,IAAI,OAAO,CAAC,IAAI,KAAK,cAAc,EAAE;AACvE,gBAAA,OAAO,IAAI,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC;YACvC;QACJ;AACA,QAAA,OAAO,OAAO,CAAC,KAAK,CAAC,0FAA0F,CAAS;IAC5H;AAEA,IAAA,QAAQ,CAAC,GAAsB,EAAA;AAC3B,QAAA,IAAI,GAAG,CAAC,QAAQ,EAAE,IAAI,IAAI,IAAI,GAAG,CAAC,WAAW,EAAE,IAAI,IAAI,EAAE;AACrD,YAAA,IAAI,GAAG,CAAC,YAAY,EAAE,KAAK,OAAO,EAAE;gBAChC,OAAO,oBAAoB,CAAC,GAAG,EAAE,IAAI,CAAC,UAAU,CAAC;YACrD;AAAO,iBAAA,IAAI,GAAG,CAAC,YAAY,EAAE,KAAK,YAAY,EAAE;gBAC5C,OAAO,mBAAmB,CAAC,GAAG,EAAE,IAAI,CAAC,UAAU,CAAC;YACpD;QACJ;AACA,QAAA,OAAO,KAAK;IAChB;AAEA,IAAA,SAAS,KAAI;IAEb,aAAa,GAAA;AACT,QAAA,OAAO,IAAI;IACf;AACH;;AC/Mc,MAAM,SAAS,CAAC;AAC/B,IAAI,WAAW,CAAC,IAAI,GAAG,EAAE,EAAE,OAAO,GAAG,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE;AAC7E,QAAQ,IAAI,CAAC,IAAI,GAAG,IAAI;AACxB,QAAQ,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM;AACtC,QAAQ,IAAI,CAAC,OAAO,GAAG,OAAO;;AAE9B,QAAQ,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;AAC7B,YAAY,KAAK,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AAC3E,QAAQ;AACR,IAAI;;AAEJ,IAAI,IAAI,CAAC,IAAI,EAAE;AACf,QAAQ,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;AAC5B,QAAQ,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;AAC/B,IAAI;;AAEJ,IAAI,GAAG,GAAG;AACV,QAAQ,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,OAAO,SAAS;;AAE/C,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAChC,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;;AAEtC,QAAQ,IAAI,EAAE,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;AAC/B,YAAY,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,MAAM;AACjC,YAAY,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AACzB,QAAQ;;AAER,QAAQ,OAAO,GAAG;AAClB,IAAI;;AAEJ,IAAI,IAAI,GAAG;AACX,QAAQ,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC3B,IAAI;;AAEJ,IAAI,GAAG,CAAC,GAAG,EAAE;AACb,QAAQ,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,IAAI;AACpC,QAAQ,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC;;AAE9B,QAAQ,OAAO,GAAG,GAAG,CAAC,EAAE;AACxB,YAAY,MAAM,MAAM,GAAG,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC;AACzC,YAAY,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC;AACxC,YAAY,IAAI,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE;AAC7C,YAAY,IAAI,CAAC,GAAG,CAAC,GAAG,OAAO;AAC/B,YAAY,GAAG,GAAG,MAAM;AACxB,QAAQ;;AAER,QAAQ,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI;AACxB,IAAI;;AAEJ,IAAI,KAAK,CAAC,GAAG,EAAE;AACf,QAAQ,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,IAAI;AACpC,QAAQ,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,IAAI,CAAC;AAC3C,QAAQ,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC;;AAE9B,QAAQ,OAAO,GAAG,GAAG,UAAU,EAAE;AACjC,YAAY,IAAI,SAAS,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;AAC3C,YAAY,MAAM,KAAK,GAAG,SAAS,GAAG,CAAC;;AAEvC,YAAY,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,EAAE;AAClF,gBAAgB,SAAS,GAAG,KAAK;AACjC,YAAY;AACZ,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE;;AAErD,YAAY,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC;AACvC,YAAY,GAAG,GAAG,SAAS;AAC3B,QAAQ;;AAER,QAAQ,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI;AACxB,IAAI;AACJ;;ACrEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACe,SAAS,WAAW,CAAC,GAAG,EAAE,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,KAAK,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,OAAO,GAAG,cAAc,EAAE;;AAExG,IAAI,OAAO,KAAK,GAAG,IAAI,EAAE;AACzB,QAAQ,IAAI,KAAK,GAAG,IAAI,GAAG,GAAG,EAAE;AAChC,YAAY,MAAM,CAAC,GAAG,KAAK,GAAG,IAAI,GAAG,CAAC;AACtC,YAAY,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC;AAClC,YAAY,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AACjC,YAAY,MAAM,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAC/C,YAAY,MAAM,EAAE,GAAG,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AACtF,YAAY,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;AAC1E,YAAY,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;AAClF,YAAY,WAAW,CAAC,GAAG,EAAE,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC;AAC3D,QAAQ;;AAER,QAAQ,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;AACxB,QAAQ,IAAI,CAAC,GAAG,IAAI;AACpB;AACA,QAAQ,IAAI,CAAC,GAAG,KAAK;;AAErB,QAAQ,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;AAC1B,QAAQ,IAAI,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,KAAK,CAAC;;AAE9D,QAAQ,OAAO,CAAC,GAAG,CAAC,EAAE;AACtB,YAAY,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;AAC3B,YAAY,CAAC,EAAE;AACf,YAAY,CAAC,EAAE;AACf,YAAY,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;AAC9C,YAAY,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;AAC9C,QAAQ;;AAER,QAAQ,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;AAC3D,aAAa;AACb,YAAY,CAAC,EAAE;AACf,YAAY,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,KAAK,CAAC;AAC/B,QAAQ;;AAER,QAAQ,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,GAAG,CAAC,GAAG,CAAC;AAChC,QAAQ,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,GAAG,CAAC,GAAG,CAAC;AACjC,IAAI;AACJ;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE;AACzB,IAAI,MAAM,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC;AACtB,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;AACnB,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG;AAChB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,cAAc,CAAC,CAAC,EAAE,CAAC,EAAE;AAC9B,IAAI,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC;AACrC;;ACpEA;;;;;AAKG;AACG,SAAU,aAAa,CAAoB,KAAwB,EAAE,QAAiB,EAAA;AACxF,IAAA,MAAM,GAAG,GAAG,KAAK,CAAC,MAAM;IAExB,IAAI,GAAG,IAAI,CAAC;QAAE,OAAO,CAAC,KAAK,CAAC;IAE5B,MAAM,QAAQ,GAAwB,EAAE;AACxC,IAAA,IAAI,OAA0B;AAC9B,IAAA,IAAI,GAAwB;AAE5B,IAAA,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;AACtB,QAAA,MAAM,IAAI,GAAG,mBAAmB,CAAC,IAAI,CAAC;QACtC,IAAI,IAAI,KAAK,CAAC;YAAE;QAEhB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;QAE1B,IAAI,GAAG,KAAK,SAAS;AAAE,YAAA,GAAG,GAAG,IAAI,GAAG,CAAC;AAErC,QAAA,IAAI,GAAG,KAAK,IAAI,GAAG,CAAC,EAAE;AAClB,YAAA,IAAI,OAAO;AAAE,gBAAA,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC;AACnC,YAAA,OAAO,GAAG,CAAC,IAAI,CAAC;QACpB;aAAO;AACH,YAAA,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;QACtB;IACJ;AACA,IAAA,IAAI,OAAO;AAAE,QAAA,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC;;;AAInC,IAAA,IAAI,QAAQ,GAAG,CAAC,EAAE;AACd,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACtC,YAAA,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,QAAQ;gBAAE;YACpC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,YAAY,CAAC;AAC3E,YAAA,QAAQ,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC;QAChD;IACJ;AAEA,IAAA,OAAO,QAAQ;AACnB;AAEA,SAAS,YAAY,CAAoB,CAAkB,EAAE,CAAkB,EAAA;AAC3E,IAAA,OAAO,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI;AAC1B;AAEA;;;;;;;AAOG;AACH,SAAS,mBAAmB,CAAC,IAAe,EAAA;IACxC,IAAI,GAAG,GAAG,CAAC;AACX,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE;AACtE,QAAA,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;AACZ,QAAA,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;QACZ,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IACxC;AACA,IAAA,OAAO,GAAG;AACd;;ACtEA;AAEA;AACA,MAAM,EAAE,GAAG,QAAQ,CAAC;AACpB,MAAM,EAAE,GAAG,CAAC,GAAG,aAAa,CAAC;AAE7B,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACxB,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG;MAEZ,UAAU,CAAA;AAInB,IAAA,WAAA,CAAY,GAAW,EAAA;;AAGnB,QAAA,MAAM,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,IAAI;QACzB,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC;AAClC,QAAA,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,MAAM,GAAG,MAAM,CAAC,CAAC;QAC/C,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;;QAGvB,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC;AACzB,QAAA,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;IACpC;AAEA;;;;;;;;;AASG;IACI,QAAQ,CAAC,CAAmB,EAAE,CAAmB,EAAA;QACpD,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE;AAC3C,QAAA,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,EAAE;AAClC,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;IACvC;AAEA;;;;;;;;;;;AAWG;IACI,WAAW,CAAC,IAAwB,EAAE,CAAmB,EAAA;QAC5D,IAAI,OAAO,GAAG,QAAQ;AACtB,QAAA,IAAI,IAAY,EAAE,IAAY,EAAE,IAAY,EAAE,IAAY;AAE1D,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;YAEtC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAClB,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAClB,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE;AAChD,YAAA,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,EAAE;YACvC,IAAI,CAAC,GAAG,CAAC;YAET,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE;gBACtB,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;AAE1F,gBAAA,IAAI,CAAC,GAAG,CAAC,EAAE;oBACP,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;oBAClB,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;gBAEtB;AAAO,qBAAA,IAAI,CAAC,GAAG,CAAC,EAAE;oBACd,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,IAAI,CAAC;oBACvB,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,IAAI,CAAC;gBAC3B;YACJ;AAEA,YAAA,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE;AAClC,YAAA,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,EAAE;YAEzB,MAAM,MAAM,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE;AAChC,YAAA,IAAI,MAAM,GAAG,OAAO,EAAE;gBAClB,OAAO,GAAG,MAAM;gBAChB,IAAI,GAAG,CAAC;gBACR,IAAI,GAAG,CAAC;gBACR,IAAI,GAAG,CAAC;gBACR,IAAI,GAAG,CAAC;YACZ;QACJ;QAEA,OAAO;AACH,YAAA,KAAK,EAAE,CAAC,IAAI,EAAE,IAAI,CAAqB;AACvC,YAAA,KAAK,EAAE,IAAI;AACX,YAAA,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC;SACnC;IACL;AAEQ,IAAA,IAAI,CAAC,GAAW,EAAA;QACpB,OAAO,GAAG,GAAG,IAAI;YAAE,GAAG,IAAI,GAAG;QAC7B,OAAO,GAAG,GAAG,GAAG;YAAE,GAAG,IAAI,GAAG;AAC5B,QAAA,OAAO,GAAG;IACd;AACH;;AC5FD,MAAM,aAAa,GAAG,GAAG;AACzB,MAAM,iBAAiB,GAAG,EAAE;AAK5B,SAAS,eAAe,CAAC,CAAW,EAAE,CAAW,EAAA;IAC7C,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACtB;AAEA,SAAS,YAAY,CAAC,KAAiB,EAAA;IACnC,OAAO,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC;AAClC;AAEA,SAAS,WAAW,CAAC,KAAiB,EAAE,SAAiB,EAAA;AACrD,IAAA,OAAO,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,GAAG,SAAS;AACvD;AAEA,SAAS,UAAU,CAAC,KAAiB,EAAE,MAAe,EAAA;IAClD,IAAI,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE;AACrB,QAAA,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC;IACvB;AACA,IAAA,MAAM,IAAI,GAAG,YAAY,CAAC,KAAK,CAAC;IAChC,IAAI,MAAM,EAAE;AACR,QAAA,IAAI,IAAI,KAAK,CAAC,EAAE;AACZ,YAAA,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC;QACxB;QACA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC;AAClC,QAAA,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;AAChC,YAAA,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACrC;AACA,IAAA,IAAI,IAAI,KAAK,CAAC,EAAE;AACZ,QAAA,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC;IACxB;AACA,IAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC;AACtC,IAAA,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;AAChC,QAAA,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACzC;AAEA,SAAS,OAAO,CAAC,MAA0B,EAAE,KAAiB,EAAA;IAC1D,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE;QACpC,OAAO,CAAC,QAAQ,EAAE,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC;IACrD;AAEA,IAAA,MAAM,IAAI,GAAS,CAAC,QAAQ,EAAE,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC;AAC7D,IAAA,KAAK,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE;QACvC,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;IAC/B;AACA,IAAA,OAAO,IAAI;AACf;AAEA,SAAS,cAAc,CAAC,OAA6B,EAAA;AACjD,IAAA,MAAM,IAAI,GAAS,CAAC,QAAQ,EAAE,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC;AAC7D,IAAA,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE;AACxB,QAAA,KAAK,MAAM,KAAK,IAAI,IAAI,EAAE;AACtB,YAAA,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC;QAC3B;IACJ;AACA,IAAA,OAAO,IAAI;AACf;AAEA,SAAS,WAAW,CAAC,IAAU,EAAA;AAC3B,IAAA,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ;AACzG;AAEA;AACA;AACA;AACA,SAAS,kBAAkB,CAAC,KAAW,EAAE,KAAW,EAAE,KAAiB,EAAA;AACnE,IAAA,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE;AAC5C,QAAA,OAAO,GAAG;IACd;IACA,IAAI,EAAE,GAAG,GAAG;IACZ,IAAI,EAAE,GAAG,GAAG;;IAEZ,IAAI,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE;QACrB,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;IAC5B;;IAEA,IAAI,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE;QACrB,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;IAC5B;;IAEA,IAAI,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE;QACrB,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;IAC5B;;IAEA,IAAI,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE;QACrB,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;IAC5B;AACA,IAAA,OAAO,KAAK,CAAC,QAAQ,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AAC/C;AAEA,SAAS,mBAAmB,CAAC,KAAuB,EAAE,IAAwB,EAAE,KAAiB,EAAA;IAC7F,MAAM,YAAY,GAAG,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC;IACnD,OAAO,KAAK,CAAC,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC,KAAK,CAAC;AACpD;AAEA,SAAS,wBAAwB,CAAC,EAAoB,EAAE,EAAoB,EACxE,EAAoB,EAAE,EAAoB,EAAE,KAAiB,EAAA;AAC7D,IAAA,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,mBAAmB,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,mBAAmB,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;AAC1G,IAAA,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,mBAAmB,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,mBAAmB,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;IAC1G,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC;AACjC;AAEA,SAAS,kBAAkB,CAAC,KAAyB,EACjD,MAAkB,EAClB,KAAyB,EACzB,MAAkB,EAClB,KAAiB,EAAA;AACjB,IAAA,MAAM,SAAS,GAAG,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,IAAI,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC;IACxF,IAAI,CAAC,SAAS,EAAE;AACZ,QAAA,OAAO,QAAQ;IACnB;IAEA,IAAI,IAAI,GAAG,QAAQ;AACnB,IAAA,KAAK,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE;AACxC,QAAA,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC;QACnB,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC;AACvB,QAAA,KAAK,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE;AACxC,YAAA,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC;YACnB,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC;YACvB,IAAI,uBAAuB,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE;AACzC,gBAAA,OAAO,GAAG;YACd;YACA,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,wBAAwB,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;QAC1E;IACJ;AACA,IAAA,OAAO,IAAI;AACf;AAEA,SAAS,sBAAsB,CAAC,OAA2B,EACvD,MAAkB,EAClB,OAA2B,EAC3B,MAAkB,EAClB,KAAiB,EAAA;AACjB,IAAA,MAAM,SAAS,GAAG,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC;IAC5F,IAAI,CAAC,SAAS,EAAE;AACZ,QAAA,OAAO,GAAG;IACd;IAEA,IAAI,IAAI,GAAG,QAAQ;AACnB,IAAA,KAAK,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE;AACzC,QAAA,KAAK,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE;YACzC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7D,YAAA,IAAI,IAAI,KAAK,GAAG,EAAE;AACd,gBAAA,OAAO,IAAI;YACf;QACJ;IACJ;AACA,IAAA,OAAO,IAAI;AACf;AAEA,SAAS,sBAAsB,CAAC,KAAuB,EACnD,OAA6B,EAC7B,KAAiB,EAAA;IACjB,IAAI,kBAAkB,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE;AAC1C,QAAA,OAAO,GAAG;IACd;IACA,IAAI,IAAI,GAAG,QAAQ;AACnB,IAAA,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE;AACxB,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC;QACrB,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;AAClC,QAAA,IAAI,KAAK,KAAK,IAAI,EAAE;YAChB,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,mBAAmB,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC;AACvE,YAAA,IAAI,IAAI,KAAK,GAAG,EAAE;AACd,gBAAA,OAAO,IAAI;YACf;QACJ;QACA,MAAM,YAAY,GAAG,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC;AACnD,QAAA,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC;AAChE,QAAA,IAAI,IAAI,KAAK,GAAG,EAAE;AACd,YAAA,OAAO,IAAI;QACf;IACJ;AACA,IAAA,OAAO,IAAI;AACf;AAEA,SAAS,qBAAqB,CAAC,IAAwB,EACnD,KAAiB,EACjB,OAA6B,EAC7B,KAAiB,EAAA;IACjB,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE;AAClC,QAAA,OAAO,GAAG;IACd;AAEA,IAAA,KAAK,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE;AACvC,QAAA,IAAI,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE;AAC5C,YAAA,OAAO,GAAG;QACd;IACJ;IAEA,IAAI,IAAI,GAAG,QAAQ;AACnB,IAAA,KAAK,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE;AACtC,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;QAClB,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;AACtB,QAAA,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE;YACxB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE;AAC9D,gBAAA,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;AAClB,gBAAA,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;gBAClB,IAAI,uBAAuB,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE;AACzC,oBAAA,OAAO,GAAG;gBACd;gBACA,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,wBAAwB,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;YAC1E;QACJ;IACJ;AACA,IAAA,OAAO,IAAI;AACf;AAEA,SAAS,gBAAgB,CAAC,KAA2B,EAAE,KAA2B,EAAA;AAC9E,IAAA,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;AACtB,QAAA,KAAK,MAAM,KAAK,IAAI,IAAI,EAAE;YACtB,IAAI,kBAAkB,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE;AACxC,gBAAA,OAAO,IAAI;YACf;QACJ;IACJ;AACA,IAAA,OAAO,KAAK;AAChB;AAEA,SAAS,wBAAwB,CAAC,QAA8B,EAC5D,QAA8B,EAC9B,KAAK,EACL,eAAe,GAAG,QAAQ,EAAA;AAC1B,IAAA,MAAM,KAAK,GAAG,cAAc,CAAC,QAAQ,CAAC;AACtC,IAAA,MAAM,KAAK,GAAG,cAAc,CAAC,QAAQ,CAAC;AACtC,IAAA,IAAI,eAAe,KAAK,QAAQ,IAAI,kBAAkB,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,eAAe,EAAE;AAC5F,QAAA,OAAO,eAAe;IAC1B;AAEA,IAAA,IAAI,YAAY,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE;AAC5B,QAAA,IAAI,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE;AACtC,YAAA,OAAO,GAAG;QACd;IACJ;AAAO,SAAA,IAAI,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE;AAC7C,QAAA,OAAO,GAAG;IACd;IAEA,IAAI,IAAI,GAAG,QAAQ;AACnB,IAAA,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE;QAC1B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE;AAClE,YAAA,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC;AACnB,YAAA,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC;AACnB,YAAA,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE;gBAC1B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE;AAClE,oBAAA,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC;AACnB,oBAAA,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC;oBACnB,IAAI,uBAAuB,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE;AACzC,wBAAA,OAAO,GAAG;oBACd;oBACA,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,wBAAwB,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;gBAC1E;YACJ;QACJ;IACJ;AACA,IAAA,OAAO,IAAI;AACf;AAEA,SAAS,WAAW,CAAC,SAA8B,EAAE,QAAgB,EAAE,KAAiB,EAAE,MAA0B,EAAE,QAAc,EAAE,MAAmB,EAAA;IACrJ,IAAI,CAAC,MAAM,EAAE;QACT;IACJ;AACA,IAAA,MAAM,QAAQ,GAAG,kBAAkB,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC;;;AAG7E,IAAA,IAAI,QAAQ,GAAG,QAAQ,EAAE;AACrB,QAAA,SAAS,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC9C;AACJ;AAEA,SAAS,kBAAkB,CAAC,SAA+B,EAAE,QAAgB,EAAE,KAAiB,EAC5F,SAA6B,EAAE,SAA6B,EAAE,MAAmB,EAAE,MAAmB,EAAA;AACtG,IAAA,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE;QACpB;IACJ;IACA,MAAM,QAAQ,GAAG,kBAAkB,CAC/B,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,EAAE,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,EAAE,KAAK,CAAC;;;AAGlE,IAAA,IAAI,QAAQ,GAAG,QAAQ,EAAE;QACrB,SAAS,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9C;AACJ;AAEA;AACA;AACA,SAAS,uBAAuB,CAAC,MAA0B,EACvD,MAAe,EACf,OAA6B,EAC7B,KAAiB,EACjB,eAAe,GAAG,QAAQ,EAAA;IAC1B,IAAI,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,eAAe,CAAC;AAClF,IAAA,IAAI,QAAQ,KAAK,GAAG,EAAE;AAClB,QAAA,OAAO,QAAQ;IACnB;AAEA,IAAA,MAAM,SAAS,GAAG,IAAI,SAAS,CAAW,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,eAAe,CAAC;AAEjG,IAAA,MAAM,QAAQ,GAAG,cAAc,CAAC,OAAO,CAAC;AACxC,IAAA,OAAO,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;AACzB,QAAA,MAAM,QAAQ,GAAG,SAAS,CAAC,GAAG,EAAE;AAChC,QAAA,IAAI,QAAQ,CAAC,CAAC,CAAC,IAAI,QAAQ,EAAE;YACzB;QACJ;AAEA,QAAA,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC;;QAGzB,MAAM,SAAS,GAAG,MAAM,GAAG,iBAAiB,GAAG,aAAa;AAC5D,QAAA,IAAI,YAAY,CAAC,KAAK,CAAC,IAAI,SAAS,EAAE;YAClC,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE;AACpC,gBAAA,OAAO,GAAG;YACd;YACA,IAAI,MAAM,EAAE;AACR,gBAAA,MAAM,QAAQ,GAAG,qBAAqB,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,CAAC;gBACrE,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,QAAQ,KAAK,GAAG,EAAE;AACrC,oBAAA,OAAO,QAAQ;gBACnB;gBACA,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC;YAC3C;iBAAO;AACH,gBAAA,KAAK,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE;AACvC,oBAAA,MAAM,QAAQ,GAAG,sBAAsB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC;oBAClE,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACvC,oBAAA,IAAI,QAAQ,KAAK,GAAG,EAAE;AAClB,wBAAA,OAAO,GAAG;oBACd;gBACJ;YACJ;QACJ;aAAO;YACH,MAAM,UAAU,GAAG,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC;AAE5C,YAAA,WAAW,CAAC,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;AACxE,YAAA,WAAW,CAAC,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;QAC5E;IACJ;AACA,IAAA,OAAO,QAAQ;AACnB;AAEA,SAAS,0BAA0B,CAAC,SAA6B,EAC7D,OAAgB,EAChB,SAA6B,EAC7B,OAAgB,EAChB,KAAiB,EACjB,eAAe,GAAG,QAAQ,EAAA;IAC1B,IAAI,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,eAAe,EAAE,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;AACpF,IAAA,IAAI,QAAQ,KAAK,GAAG,EAAE;AAClB,QAAA,OAAO,QAAQ;IACnB;AAEA,IAAA,MAAM,SAAS,GAAG,IAAI,SAAS,CAAW,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,eAAe,CAAC;AAEvH,IAAA,OAAO,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;AACzB,QAAA,MAAM,QAAQ,GAAG,SAAS,CAAC,GAAG,EAAE;AAChC,QAAA,IAAI,QAAQ,CAAC,CAAC,CAAC,IAAI,QAAQ,EAAE;YACzB;QACJ;AAEA,QAAA,MAAM,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC;AAC1B,QAAA,MAAM,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC;QAC1B,MAAM,UAAU,GAAG,OAAO,GAAG,iBAAiB,GAAG,aAAa;QAC9D,MAAM,UAAU,GAAG,OAAO,GAAG,iBAAiB,GAAG,aAAa;;AAG9D,QAAA,IAAI,YAAY,CAAC,MAAM,CAAC,IAAI,UAAU,IAAI,YAAY,CAAC,MAAM,CAAC,IAAI,UAAU,EAAE;AAC1E,YAAA,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,IAAI,WAAW,CAAC,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE;AACjF,gBAAA,OAAO,GAAG;YACd;AACA,YAAA,IAAI,QAAgB;AACpB,YAAA,IAAI,OAAO,IAAI,OAAO,EAAE;AACpB,gBAAA,QAAQ,GAAG,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,CAAC;gBAC1E,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC;YAC3C;AAAO,iBAAA,IAAI,OAAO,IAAI,CAAC,OAAO,EAAE;AAC5B,gBAAA,MAAM,OAAO,GAAG,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACzD,gBAAA,KAAK,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE;AACzC,oBAAA,QAAQ,GAAG,mBAAmB,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC;oBAC5D,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACvC,oBAAA,IAAI,QAAQ,KAAK,GAAG,EAAE;AAClB,wBAAA,OAAO,QAAQ;oBACnB;gBACJ;YACJ;AAAO,iBAAA,IAAI,CAAC,OAAO,IAAI,OAAO,EAAE;AAC5B,gBAAA,MAAM,OAAO,GAAG,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACzD,gBAAA,KAAK,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE;AACzC,oBAAA,QAAQ,GAAG,mBAAmB,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC;oBAC5D,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACvC,oBAAA,IAAI,QAAQ,KAAK,GAAG,EAAE;AAClB,wBAAA,OAAO,QAAQ;oBACnB;gBACJ;YACJ;iBAAO;AACH,gBAAA,QAAQ,GAAG,sBAAsB,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,CAAC;gBAC9E,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC;YAC3C;QACJ;aAAO;YACH,MAAM,UAAU,GAAG,UAAU,CAAC,MAAM,EAAE,OAAO,CAAC;YAC9C,MAAM,UAAU,GAAG,UAAU,CAAC,MAAM,EAAE,OAAO,CAAC;YAC9C,kBAAkB,CAAC,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;YAClG,kBAAkB,CAAC,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;YAClG,kBAAkB,CAAC,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;YAClG,kBAAkB,CAAC,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;QACtG;IACJ;AACA,IAAA,OAAO,QAAQ;AACnB;AAEA,SAAS,uBAAuB,CAAC,GAAsB,EAAE,UAA4B,EAAA;AACjF,IAAA,MAAM,UAAU,GAAG,GAAG,CAAC,QAAQ,EAAE;AACjC,IAAA,MAAM,aAAa,GAAG,UAAU,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,SAAS,CAAqB,CAAC;AACvH,IAAA,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE;AACzB,QAAA,OAAO,GAAG;IACd;AACA,IAAA,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACjD,IAAI,IAAI,GAAG,QAAQ;AACnB,IAAA,KAAK,MAAM,QAAQ,IAAI,UAAU,EAAE;AAC/B,QAAA,QAAQ,QAAQ,CAAC,IAAI;AACjB,YAAA,KAAK,OAAO;gBACR,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,0BAA0B,CAAC,aAAa,EAAE,KAAK,EAAE,CAAC,QAAQ,CAAC,WAA+B,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;gBACvI;AACJ,YAAA,KAAK,YAAY;gBACb,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,0BAA0B,CAAC,aAAa,EAAE,KAAK,EAAE,QAAQ,CAAC,WAAiC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;gBACtI;AACJ,YAAA,KAAK,SAAS;gBACV,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,uBAAuB,CAAC,aAAa,EAAE,KAAK,EAAE,QAAQ,CAAC,WAAmC,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;gBAC/H;;AAER,QAAA,IAAI,IAAI,KAAK,GAAG,EAAE;AACd,YAAA,OAAO,IAAI;QACf;IACJ;AACA,IAAA,OAAO,IAAI;AACf;AAEA,SAAS,4BAA4B,CAAC,GAAsB,EAAE,UAA4B,EAAA;AACtF,IAAA,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,EAAE;AAC/B,IAAA,MAAM,aAAa,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,SAAS,CAAqB,CAAC;AACrH,IAAA,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;AACvB,QAAA,OAAO,GAAG;IACd;AACA,IAAA,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACjD,IAAI,IAAI,GAAG,QAAQ;AACnB,IAAA,KAAK,MAAM,QAAQ,IAAI,UAAU,EAAE;AAC/B,QAAA,QAAQ,QAAQ,CAAC,IAAI;AACjB,YAAA,KAAK,OAAO;gBACR,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,0BAA0B,CAAC,aAAa,EAAE,IAAI,EAAE,CAAC,QAAQ,CAAC,WAA+B,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;gBACtI;AACJ,YAAA,KAAK,YAAY;gBACb,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,0BAA0B,CAAC,aAAa,EAAE,IAAI,EAAE,QAAQ,CAAC,WAAiC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;gBACrI;AACJ,YAAA,KAAK,SAAS;gBACV,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,uBAAuB,CAAC,aAAa,EAAE,IAAI,EAAE,QAAQ,CAAC,WAAmC,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;gBAC9H;;AAER,QAAA,IAAI,IAAI,KAAK,GAAG,EAAE;AACd,YAAA,OAAO,IAAI;QACf;IACJ;AACA,IAAA,OAAO,IAAI;AACf;AAEA,SAAS,yBAAyB,CAAC,GAAsB,EAAE,UAA4B,EAAA;AACnF,IAAA,MAAM,WAAW,GAAG,GAAG,CAAC,QAAQ,EAAE;AAClC,IAAA,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE;AACzD,QAAA,OAAO,GAAG;IACd;AACA,IAAA,MAAM,QAAQ,GAAG,aAAa,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,IAAG;AACzD,QAAA,OAAO,OAAO,CAAC,GAAG,CAAC,IAAI,IAAG;YACtB,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,SAAS,CAAqB,CAAC;AAC/F,QAAA,CAAC,CAAC;AACN,IAAA,CAAC,CAAC;AACF,IAAA,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAClD,IAAI,IAAI,GAAG,QAAQ;AACnB,IAAA,KAAK,MAAM,QAAQ,IAAI,UAAU,EAAE;AAC/B,QAAA,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE;AAC5B,YAAA,QAAQ,QAAQ,CAAC,IAAI;AACjB,gBAAA,KAAK,OAAO;oBACR,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,uBAAuB,CAAC,CAAC,QAAQ,CAAC,WAA+B,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;oBACvH;AACJ,gBAAA,KAAK,YAAY;oBACb,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,uBAAuB,CAAC,QAAQ,CAAC,WAAiC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;oBACtH;AACJ,gBAAA,KAAK,SAAS;oBACV,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,wBAAwB,CAAC,OAAO,EAAE,QAAQ,CAAC,WAAmC,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;oBACnH;;AAER,YAAA,IAAI,IAAI,KAAK,GAAG,EAAE;AACd,gBAAA,OAAO,IAAI;YACf;QACJ;IACJ;AACA,IAAA,OAAO,IAAI;AAEf;AAEA,SAAS,gBAAgB,CAAC,QAA+D,EAAA;AACrF,IAAA,IAAI,QAAQ,CAAC,IAAI,KAAK,cAAc,EAAE;QAClC,OAAO,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,IAAG;YACtC,OAAO;AACH,gBAAA,IAAI,EAAE,SAAS;AACf,gBAAA,WAAW,EAAE;aAChB;AACL,QAAA,CAAC,CAAC;IACN;AACA,IAAA,IAAI,QAAQ,CAAC,IAAI,KAAK,iBAAiB,EAAE;QACrC,OAAO,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,UAAU,IAAG;YACzC,OAAO;AACH,gBAAA,IAAI,EAAE,YAAY;AAClB,gBAAA,WAAW,EAAE;aAChB;AACL,QAAA,CAAC,CAAC;IACN;AACA,IAAA,IAAI,QAAQ,CAAC,IAAI,KAAK,YAAY,EAAE;QAChC,OAAO,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,IAAG;YACpC,OAAO;AACH,gBAAA,IAAI,EAAE,OAAO;AACb,gBAAA,WAAW,EAAE;aAChB;AACL,QAAA,CAAC,CAAC;IACN;IACA,OAAO,CAAC,QAAQ,CAAC;AACrB;MAEa,QAAQ,CAAA;IAKjB,WAAA,CAAY,OAAwB,EAAE,UAA4B,EAAA;AAC9D,QAAA,IAAI,CAAC,IAAI,GAAG,UAAU;AACtB,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO;AACtB,QAAA,IAAI,CAAC,UAAU,GAAG,UAAU;IAChC;AAEA,IAAA,OAAO,KAAK,CAAC,IAA4B,EAAE,OAAuB,EAAA;AAC9D,QAAA,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;AACjB,YAAA,OAAO,OAAO,CAAC,KAAK,CAAC,CAAA,+DAAA,EAAkE,IAAI,CAAC,MAAM,GAAG,CAAC,CAAA,SAAA,CAAW,CAAS;QAC9H,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE;AAClB,YAAA,MAAM,OAAO,GAAI,IAAI,CAAC,CAAC,CAAS;AAChC,YAAA,IAAI,OAAO,CAAC,IAAI,KAAK,mBAAmB,EAAE;gBACtC,OAAO,IAAI,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,IAAI,gBAAgB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YAC5G;AAAO,iBAAA,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,EAAE;AACnC,gBAAA,OAAO,IAAI,QAAQ,CAAC,OAAO,EAAE,gBAAgB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YACpE;iBAAO,IAAI,MAAM,IAAI,OAAO,IAAI,aAAa,IAAI,OAAO,EAAE;gBACtD,OAAO,IAAI,QAAQ,CAAC,OAAO,EAAE,gBAAgB,CAAC,OAAO,CAAC,CAAC;YAC3D;QACJ;AACA,QAAA,OAAO,OAAO,CAAC,KAAK,CAAC,4FAA4F,CAAS;IAC9H;AAEA,IAAA,QAAQ,CAAC,GAAsB,EAAA;AAC3B,QAAA,IAAI,GAAG,CAAC,QAAQ,EAAE,IAAI,IAAI,IAAI,GAAG,CAAC,WAAW,EAAE,IAAI,IAAI,EAAE;AACrD,YAAA,IAAI,GAAG,CAAC,YAAY,EAAE,KAAK,OAAO,EAAE;gBAChC,OAAO,uBAAuB,CAAC,GAAG,EAAE,IAAI,CAAC,UAAU,CAAC;YACxD;AAAO,iBAAA,IAAI,GAAG,CAAC,YAAY,EAAE,KAAK,YAAY,EAAE;gBAC5C,OAAO,4BAA4B,CAAC,GAAG,EAAE,IAAI,CAAC,UAAU,CAAC;YAC7D;AAAO,iBAAA,IAAI,GAAG,CAAC,YAAY,EAAE,KAAK,SAAS,EAAE;gBACzC,OAAO,yBAAyB,CAAC,GAAG,EAAE,IAAI,CAAC,UAAU,CAAC;YAC1D;QACJ;AACA,QAAA,OAAO,GAAG;IACd;AAEA,IAAA,SAAS,KAAI;IAEb,aAAa,GAAA;AACT,QAAA,OAAO,IAAI;IACf;AACH;;MC7jBY,WAAW,CAAA;AAIpB,IAAA,WAAA,CAAY,GAAW,EAAA;AACnB,QAAA,IAAI,CAAC,IAAI,GAAG,SAAS;AACrB,QAAA,IAAI,CAAC,GAAG,GAAG,GAAG;IAClB;AAEA,IAAA,OAAO,KAAK,CAAC,IAA4B,EAAE,OAAuB,EAAA;AAC9D,QAAA,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;AACnB,YAAA,OAAO,OAAO,CAAC,KAAK,CAAC,CAAA,+BAAA,EAAkC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAA,SAAA,CAAW,CAAS;QAC9F;AAEA,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC;QAEnB,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,IAAI,EAAE;AACnC,YAAA,OAAO,OAAO,CAAC,KAAK,CAAC,wCAAwC,CAAS;QAC1E;AAEA,QAAA,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;AACzB,YAAA,OAAO,OAAO,CAAC,KAAK,CAAC,CAAA,gDAAA,EAAmD,OAAO,IAAI,CAAC,CAAC,CAAC,CAAA,SAAA,CAAW,CAAS;QAC9G;AAEA,QAAA,OAAO,IAAI,WAAW,CAAC,GAAG,CAAC;IAC/B;AAEA,IAAA,QAAQ,CAAC,GAAsB,EAAA;;QAC3B,MAAM,WAAW,GAAG,CAAA,EAAA,GAAA,GAAG,CAAC,OAAO,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,WAAW;AAE5C,QAAA,IAAI,CAAC,WAAW,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,MAAM,KAAK,CAAC;AAAE,YAAA,OAAO,IAAI;QAEtE,OAAO,MAAM,CAAC,WAAW,EAAE,IAAI,CAAC,GAAG,CAAC;IACxC;AAEA,IAAA,SAAS,KAAI;IAEb,aAAa,GAAA;AACT,QAAA,OAAO,KAAK;IAChB;AACH;;ACZM,MAAMC,aAAW,GAAuB;;AAE3C,IAAA,IAAI,EAAE,MAAM;AACZ,IAAA,IAAI,EAAE,SAAS;AACf,IAAA,GAAG,EAAE,WAAW;AAChB,IAAA,GAAG,EAAE,QAAQ;AACb,IAAA,IAAI,EAAE,kBAAkB;AACxB,IAAA,IAAI,EAAE,eAAe;AACrB,IAAA,OAAO,EAAE,SAAS;AAClB,IAAA,IAAI,EAAE,EAAE;AACR,IAAA,SAAS,EAAE,SAAS;AACpB,IAAA,MAAM,EAAE,IAAI;AACZ,IAAA,UAAU,EAAE,QAAQ;AACpB,IAAA,UAAU,EAAE,kBAAkB;AAC9B,IAAA,QAAQ,EAAE,gBAAgB;AAC1B,IAAA,OAAO,EAAE,eAAe;AACxB,IAAA,IAAI,EAAE,EAAE;AACR,IAAA,UAAU,EAAE,OAAO;AACnB,IAAA,aAAa,EAAE,WAAW;AAC1B,IAAA,iBAAiB,EAAE,WAAW;AAC9B,IAAA,iBAAiB,EAAE,WAAW;AAC9B,IAAA,QAAQ,EAAE,MAAM;AAChB,IAAA,KAAK,EAAE,GAAG;AACV,IAAA,SAAS,EAAE,OAAO;AAClB,IAAA,OAAO,EAAE,KAAK;AACd,IAAA,QAAQ,EAAE,SAAS;AACnB,IAAA,eAAe,EAAE,YAAY;AAC7B,IAAA,QAAQ,EAAE,SAAS;AACnB,IAAA,OAAO,EAAE,KAAK;AACd,IAAA,MAAM,EAAE,IAAI;AACZ,IAAA,QAAQ,EAAE,SAAS;AACnB,IAAA,YAAY,EAAE,QAAQ;AACtB,IAAA,UAAU,EAAE,QAAQ;AACpB,IAAA,WAAW,EAAE,QAAQ;AACrB,IAAA,WAAW,EAAE,QAAQ;AACrB,IAAA,KAAK,EAAE,GAAG;AACV,IAAA,QAAQ,EAAE,MAAM;AAChB,IAAA,UAAU,EAAE,QAAQ;AACpB,IAAA,cAAc,EAAE;;;MC5BP,kBAAkB,CAAA;AAQ3B,IAAA,WAAA,CAAY,IAAY,EAAE,IAAU,EAAE,QAAkB,EAAE,IAAuB,EAAA;AAC7E,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI;AAChB,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI;AAChB,QAAA,IAAI,CAAC,SAAS,GAAG,QAAQ;AACzB,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI;IACpB;AAEA,IAAA,QAAQ,CAAC,GAAsB,EAAA;QAC3B,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC;IACzC;AAEA,IAAA,SAAS,CAAC,EAA2B,EAAA;AACjC,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;IACzB;IAEA,aAAa,GAAA;AACT,QAAA,OAAO,KAAK;IAChB;AAEA,IAAA,OAAO,KAAK,CAAC,IAA4B,EAAE,OAAuB,EAAA;AAC9D,QAAA,MAAM,EAAE,GAAY,IAAI,CAAC,CAAC,CAAS;QACnC,MAAM,UAAU,GAAG,kBAAkB,CAAC,WAAW,CAAC,EAAE,CAAC;QACrD,IAAI,CAAC,UAAU,EAAE;YACb,OAAO,OAAO,CAAC,KAAK,CAAC,CAAA,oBAAA,EAAuB,EAAE,CAAA,yDAAA,CAA2D,EAAE,CAAC,CAAS;QACzH;;QAGA,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC;YAClC,UAAU,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,IAAI;QAEnC,MAAM,kBAAkB,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC;AAChD,YAAA,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;YAChC,UAAU,CAAC,SAAS;QAExB,MAAM,SAAS,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,MACpD,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC;YACzB,SAAS,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,GAAG,CAAC;AACvC,SAAA,CAAC;QAEF,IAAI,gBAAgB,GAAmB,IAAI;QAE3C,KAAK,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,IAAI,SAAS,EAAE;;;YAGxC,gBAAgB,GAAG,IAAI,cAAc,CAAC,OAAO,CAAC,QAAQ,EAAE,oBAAoB,EAAE,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC;;;YAIhH,MAAM,UAAU,GAAsB,EAAE;YACxC,IAAI,cAAc,GAAG,KAAK;AAC1B,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAClC,gBAAA,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC;gBACnB,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;AACtC,oBAAA,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC;oBACZ,MAAkB,CAAC,IAAI;AAE5B,gBAAA,MAAM,MAAM,GAAG,gBAAgB,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,YAAY,CAAC;gBAC/E,IAAI,CAAC,MAAM,EAAE;oBACT,cAAc,GAAG,IAAI;oBACrB;gBACJ;AACA,gBAAA,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC;YAC3B;YACA,IAAI,cAAc,EAAE;;;gBAGhB;YACJ;AAEA,YAAA,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;gBACvB,IAAI,MAAM,CAAC,MAAM,KAAK,UAAU,CAAC,MAAM,EAAE;AACrC,oBAAA,gBAAgB,CAAC,KAAK,CAAC,CAAA,SAAA,EAAY,MAAM,CAAC,MAAM,CAAA,sBAAA,EAAyB,UAAU,CAAC,MAAM,CAAA,SAAA,CAAW,CAAC;oBACtG;gBACJ;YACJ;AAEA,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBACxC,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,GAAI,MAAkB,CAAC,IAAI;AAC7E,gBAAA,MAAM,GAAG,GAAG,UAAU,CAAC,CAAC,CAAC;AACzB,gBAAA,gBAAgB,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC,QAAQ,EAAE,GAAG,CAAC,IAAI,CAAC;YACnE;YAEA,IAAI,gBAAgB,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;gBACtC,OAAO,IAAI,kBAAkB,CAAC,EAAE,EAAE,IAAI,EAAE,QAAoB,EAAE,UAAU,CAAC;YAC7E;QACJ;AAEA,QAAA,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE;YACxB,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,gBAAgB,CAAC,MAAM,CAAC;QACnD;aAAO;AACH,YAAA,MAAM,QAAQ,GAAG,SAAS,CAAC,MAAM,GAAG,SAAS,GAAG,kBAAkB;YAClE,MAAM,UAAU,GAAG;AACd,iBAAA,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,kBAAkB,CAAC,MAAmB,CAAC;iBACzD,IAAI,CAAC,KAAK,CAAC;YAEhB,MAAM,WAAW,GAAG,EAAE;;;AAGtB,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAClC,gBAAA,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,MAAM,CAAC;AAC7D,gBAAA,IAAI,CAAC,MAAM;AAAE,oBAAA,OAAO,IAAI;gBACxB,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAC/C;AACA,YAAA,OAAO,CAAC,KAAK,CAAC,CAAA,2BAAA,EAA8B,UAAU,CAAA,aAAA,EAAgB,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA,UAAA,CAAY,CAAC;QAC7G;AAEA,QAAA,OAAO,IAAI;IACf;AAEA,IAAA,OAAO,QAAQ,CACX,QAA4B,EAC5B,WAAsC,EAAA;AAEtC,QAAA,kBAAkB,CAAC,WAAW,GAAG,WAAW;AAC5C,QAAA,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE;AAC5B,YAAA,QAAQ,CAAC,IAAI,CAAC,GAAG,kBAAkB;QACvC;IACJ;AACH;AAED,SAAS,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAA;AAC3B,IAAA,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC;AACnB,IAAA,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC;AACnB,IAAA,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC;AACnB,IAAA,MAAM,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC;AACrC,IAAA,MAAM,KAAK,GAAG,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC;AAC1C,IAAA,IAAI,KAAK;AAAE,QAAA,MAAM,IAAI,YAAY,CAAC,KAAK,CAAC;AACxC,IAAA,OAAO,IAAI,KAAK,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC;AAC7D;AAEA,SAAS,GAAG,CAAC,GAAG,EAAE,GAAG,EAAA;IACjB,OAAO,GAAG,IAAI,GAAG;AACrB;AAEA,SAAS,GAAG,CAAC,GAAG,EAAE,GAAG,EAAA;AACjB,IAAA,MAAM,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC;AAClB,IAAA,OAAO,OAAO,CAAC,KAAK,WAAW,GAAG,IAAI,GAAG,CAAC;AAC9C;AAEA,SAAS,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAA;AAC5B,IAAA,OAAO,CAAC,IAAI,CAAC,EAAE;QACX,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC;AACtB,QAAA,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AACV,YAAA,OAAO,IAAI;AACf,QAAA,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;AACR,YAAA,CAAC,GAAG,CAAC,GAAG,CAAC;;AAET,YAAA,CAAC,GAAG,CAAC,GAAG,CAAC;IACjB;AACA,IAAA,OAAO,KAAK;AAChB;AAEA,SAAS,OAAO,CAAC,IAAU,EAAA;IACvB,OAAO,EAAC,IAAI,EAAC;AACjB;AAEA,kBAAkB,CAAC,QAAQ,CAACA,aAAW,EAAE;AACrC,IAAA,OAAO,EAAE;QACL,SAAS;AACT,QAAA,CAAC,UAAU,CAAC;QACZ,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,OAAO,MAAM,IAAI,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAC5D,KAAA;AACD,IAAA,QAAQ,EAAE;QACN,UAAU;AACV,QAAA,CAAC,SAAS,CAAC;AACX,QAAA,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,KAAK,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AACrD,KAAA;AACD,IAAA,SAAS,EAAE;AACP,QAAA,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC;AACpB,QAAA,CAAC,SAAS,CAAC;AACX,QAAA,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,KAAI;AACT,YAAA,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG;AACxC,YAAA,OAAO,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC;QACzC,CAAC;AACJ,KAAA;AACD,IAAA,KAAK,EAAE;QACH,SAAS;AACT,QAAA,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC;QACpC;AACH,KAAA;AACD,IAAA,MAAM,EAAE;QACJ,SAAS;AACT,QAAA,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC;QAChD;AACH,KAAA;AACD,IAAA,KAAK,EAAE;AACH,QAAA,IAAI,EAAE,WAAW;AACjB,QAAA,SAAS,EAAE;AACP,YAAA;AACI,gBAAA,CAAC,UAAU,CAAC;gBACZ,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,UAAU,EAAE;aAC1D,EAAE;gBACC,CAAC,UAAU,EAAE,UAAU,CAAC;gBACxB,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC;AAChE;AACJ;AACJ,KAAA;AACD,IAAA,KAAK,EAAE;AACH,QAAA,IAAI,EAAE,SAAS;AACf,QAAA,SAAS,EAAE;AACP,YAAA;AACI,gBAAA,CAAC,UAAU,CAAC;gBACZ,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,UAAU,EAAE;aAC1D,EAAE;gBACC,CAAC,UAAU,EAAE,UAAU,CAAC;gBACxB,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC;AAChE;AACJ;AACJ,KAAA;AACD,IAAA,eAAe,EAAE;QACb,SAAS;AACT,QAAA,CAAC,UAAU,CAAC;QACZ,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,YAAY,IAAI,EAAE;AAChE,KAAA;AACD,IAAA,YAAY,EAAE;QACV,UAAU;QACV,EAAE;AACF,QAAA,CAAC,GAAG,KAAK,GAAG,CAAC,UAAU;AAC1B,KAAA;AACD,IAAA,eAAe,EAAE;QACb,UAAU;QACV,EAAE;AACF,QAAA,CAAC,GAAG,KAAK,GAAG,CAAC,YAAY;AAC5B,KAAA;AACD,IAAA,IAAI,EAAE;QACF,SAAS;QACT,EAAE;AACF,QAAA,CAAC,GAAG,KAAK,GAAG,CAAC,EAAE;AAClB,KAAA;AACD,IAAA,MAAM,EAAE;QACJ,UAAU;QACV,EAAE;QACF,CAAC,GAAG,KAAK,GAAG,CAAC,OAAO,CAAC;AACxB,KAAA;AACD,IAAA,iBAAiB,EAAE;QACf,UAAU;QACV,EAAE;QACF,CAAC,GAAG,KAAK,GAAG,CAAC,OAAO,CAAC,cAAc,IAAI;AAC1C,KAAA;AACD,IAAA,WAAW,EAAE;QACT,UAAU;QACV,EAAE;QACF,CAAC,GAAG,KAAK,GAAG,CAAC,OAAO,CAAC,SAAS,IAAI;AACrC,KAAA;AACD,IAAA,eAAe,EAAE;QACb,UAAU;QACV,EAAE;QACF,CAAC,GAAG,KAAK,GAAG,CAAC,OAAO,CAAC,YAAY,IAAI;AACxC,KAAA;AACD,IAAA,aAAa,EAAE;QACX,SAAS;QACT,EAAE;QACF,CAAC,GAAG,KAAK,GAAG,CAAC,OAAO,CAAC,WAAW,KAAK,SAAS,GAAG,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC;AACvE,KAAA;AACD,IAAA,GAAG,EAAE;QACD,UAAU;QACV,OAAO,CAAC,UAAU,CAAC;AACnB,QAAA,CAAC,GAAG,EAAE,IAAI,KAAI;YACV,IAAI,MAAM,GAAG,CAAC;AACd,YAAA,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;AACpB,gBAAA,MAAM,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC;YAC/B;AACA,YAAA,OAAO,MAAM;QACjB;AACH,KAAA;AACD,IAAA,GAAG,EAAE;QACD,UAAU;QACV,OAAO,CAAC,UAAU,CAAC;AACnB,QAAA,CAAC,GAAG,EAAE,IAAI,KAAI;YACV,IAAI,MAAM,GAAG,CAAC;AACd,YAAA,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;AACpB,gBAAA,MAAM,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC;YAC/B;AACA,YAAA,OAAO,MAAM;QACjB;AACH,KAAA;AACD,IAAA,GAAG,EAAE;AACD,QAAA,IAAI,EAAE,UAAU;AAChB,QAAA,SAAS,EAAE;AACP,YAAA;gBACI,CAAC,UAAU,EAAE,UAAU,CAAC;gBACxB,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,GAAG;aACpD,EAAE;AACC,gBAAA,CAAC,UAAU,CAAC;AACZ,gBAAA,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG;AAChC;AACJ;AACJ,KAAA;AACD,IAAA,GAAG,EAAE;QACD,UAAU;QACV,CAAC,UAAU,EAAE,UAAU,CAAC;QACxB,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,GAAG;AACpD,KAAA;AACD,IAAA,GAAG,EAAE;QACD,UAAU;QACV,CAAC,UAAU,EAAE,UAAU,CAAC;QACxB,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,GAAG;AACpD,KAAA;AACD,IAAA,KAAK,EAAE;QACH,UAAU;QACV,EAAE;AACF,QAAA,MAAM,IAAI,CAAC;AACd,KAAA;AACD,IAAA,IAAI,EAAE;QACF,UAAU;QACV,EAAE;AACF,QAAA,MAAM,IAAI,CAAC;AACd,KAAA;AACD,IAAA,GAAG,EAAE;QACD,UAAU;QACV,EAAE;AACF,QAAA,MAAM,IAAI,CAAC;AACd,KAAA;AACD,IAAA,GAAG,EAAE;QACD,UAAU;QACV,CAAC,UAAU,EAAE,UAAU,CAAC;QACxB,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC;AAC7D,KAAA;AACD,IAAA,MAAM,EAAE;QACJ,UAAU;AACV,QAAA,CAAC,UAAU,CAAC;AACZ,QAAA,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC;AAC1C,KAAA;AACD,IAAA,OAAO,EAAE;QACL,UAAU;AACV,QAAA,CAAC,UAAU,CAAC;QACZ,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC;AAClD,KAAA;AACD,IAAA,IAAI,EAAE;QACF,UAAU;AACV,QAAA,CAAC,UAAU,CAAC;AACZ,QAAA,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC;AACzC,KAAA;AACD,IAAA,MAAM,EAAE;QACJ,UAAU;AACV,QAAA,CAAC,UAAU,CAAC;QACZ,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC;AAClD,KAAA;AACD,IAAA,KAAK,EAAE;QACH,UAAU;AACV,QAAA,CAAC,UAAU,CAAC;AACZ,QAAA,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC;AACzC,KAAA;AACD,IAAA,KAAK,EAAE;QACH,UAAU;AACV,QAAA,CAAC,UAAU,CAAC;AACZ,QAAA,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC;AACzC,KAAA;AACD,IAAA,KAAK,EAAE;QACH,UAAU;AACV,QAAA,CAAC,UAAU,CAAC;AACZ,QAAA,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC;AACzC,KAAA;AACD,IAAA,MAAM,EAAE;QACJ,UAAU;AACV,QAAA,CAAC,UAAU,CAAC;AACZ,QAAA,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC;AAC1C,KAAA;AACD,IAAA,MAAM,EAAE;QACJ,UAAU;AACV,QAAA,CAAC,UAAU,CAAC;AACZ,QAAA,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC;AAC1C,KAAA;AACD,IAAA,MAAM,EAAE;QACJ,UAAU;AACV,QAAA,CAAC,UAAU,CAAC;AACZ,QAAA,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC;AAC1C,KAAA;AACD,IAAA,KAAK,EAAE;QACH,UAAU;QACV,OAAO,CAAC,UAAU,CAAC;QACnB,CAAC,GAAG,EAAE,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AAChE,KAAA;AACD,IAAA,KAAK,EAAE;QACH,UAAU;QACV,OAAO,CAAC,UAAU,CAAC;QACnB,CAAC,GAAG,EAAE,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AAChE,KAAA;AACD,IAAA,KAAK,EAAE;QACH,UAAU;AACV,QAAA,CAAC,UAAU,CAAC;AACZ,QAAA,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC;AACzC,KAAA;AACD,IAAA,OAAO,EAAE;QACL,UAAU;AACV,QAAA,CAAC,UAAU,CAAC;AACZ,QAAA,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,KAAI;YACT,MAAM,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC;;;;YAIzB,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;QAClD;AACH,KAAA;AACD,IAAA,OAAO,EAAE;QACL,UAAU;AACV,QAAA,CAAC,UAAU,CAAC;AACZ,QAAA,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC;AAC3C,KAAA;AACD,IAAA,MAAM,EAAE;QACJ,UAAU;AACV,QAAA,CAAC,UAAU,CAAC;AACZ,QAAA,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC;AAC1C,KAAA;AACD,IAAA,WAAW,EAAE;QACT,WAAW;QACX,CAAC,UAAU,EAAE,SAAS,CAAC;QACvB,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,UAAU,EAAE,CAAE,CAAS,CAAC,KAAK,CAAC,KAAM,CAAS,CAAC;AACtE,KAAA;AACD,IAAA,cAAc,EAAE;QACZ,WAAW;AACX,QAAA,CAAC,SAAS,CAAC;AACX,QAAA,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,EAAE,EAAE,KAAM,CAAS,CAAC;AACzC,KAAA;AACD,IAAA,gBAAgB,EAAE;QACd,WAAW;AACX,QAAA,CAAC,UAAU,CAAC;AACZ,QAAA,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,YAAY,EAAE,KAAM,CAAS,CAAC;AACnD,KAAA;AACD,IAAA,UAAU,EAAE;QACR,WAAW;QACX,CAAC,UAAU,EAAE,SAAS,CAAC;QACvB,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,KAAI;YACZ,MAAM,CAAC,GAAG,GAAG,CAAC,UAAU,EAAE,CAAE,CAAS,CAAC,KAAK,CAAC;AAC5C,YAAA,MAAM,CAAC,GAAI,CAAS,CAAC,KAAK;YAC1B,OAAO,OAAO,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;QACzC;AACH,KAAA;AACD,IAAA,aAAa,EAAE;QACX,WAAW;AACX,QAAA,CAAC,SAAS,CAAC;AACX,QAAA,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,KAAI;AACT,YAAA,MAAM,CAAC,GAAG,GAAG,CAAC,EAAE,EAAE;AAClB,YAAA,MAAM,CAAC,GAAI,CAAS,CAAC,KAAK;YAC1B,OAAO,OAAO,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;QACzC;AACH,KAAA;AACD,IAAA,UAAU,EAAE;QACR,WAAW;QACX,CAAC,UAAU,EAAE,SAAS,CAAC;QACvB,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,KAAI;YACZ,MAAM,CAAC,GAAG,GAAG,CAAC,UAAU,EAAE,CAAE,CAAS,CAAC,KAAK,CAAC;AAC5C,YAAA,MAAM,CAAC,GAAI,CAAS,CAAC,KAAK;YAC1B,OAAO,OAAO,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;QACzC;AACH,KAAA;AACD,IAAA,aAAa,EAAE;QACX,WAAW;AACX,QAAA,CAAC,SAAS,CAAC;AACX,QAAA,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,KAAI;AACT,YAAA,MAAM,CAAC,GAAG,GAAG,CAAC,EAAE,EAAE;AAClB,YAAA,MAAM,CAAC,GAAI,CAAS,CAAC,KAAK;YAC1B,OAAO,OAAO,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;QACzC;AACH,KAAA;AACD,IAAA,WAAW,EAAE;QACT,WAAW;QACX,CAAC,UAAU,EAAE,SAAS,CAAC;QACvB,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,KAAI;YACZ,MAAM,CAAC,GAAG,GAAG,CAAC,UAAU,EAAE,CAAE,CAAS,CAAC,KAAK,CAAC;AAC5C,YAAA,MAAM,CAAC,GAAI,CAAS,CAAC,KAAK;YAC1B,OAAO,OAAO,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;QAC1C;AACH,KAAA;AACD,IAAA,cAAc,EAAE;QACZ,WAAW;AACX,QAAA,CAAC,SAAS,CAAC;AACX,QAAA,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,KAAI;AACT,YAAA,MAAM,CAAC,GAAG,GAAG,CAAC,EAAE,EAAE;AAClB,YAAA,MAAM,CAAC,GAAI,CAAS,CAAC,KAAK;YAC1B,OAAO,OAAO,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;QAC1C;AACH,KAAA;AACD,IAAA,WAAW,EAAE;QACT,WAAW;QACX,CAAC,UAAU,EAAE,SAAS,CAAC;QACvB,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,KAAI;YACZ,MAAM,CAAC,GAAG,GAAG,CAAC,UAAU,EAAE,CAAE,CAAS,CAAC,KAAK,CAAC;AAC5C,YAAA,MAAM,CAAC,GAAI,CAAS,CAAC,KAAK;YAC1B,OAAO,OAAO,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;QAC1C;AACH,KAAA;AACD,IAAA,cAAc,EAAE;QACZ,WAAW;AACX,QAAA,CAAC,SAAS,CAAC;AACX,QAAA,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,KAAI;AACT,YAAA,MAAM,CAAC,GAAG,GAAG,CAAC,EAAE,EAAE;AAClB,YAAA,MAAM,CAAC,GAAI,CAAS,CAAC,KAAK;YAC1B,OAAO,OAAO,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;QAC1C;AACH,KAAA;AACD,IAAA,YAAY,EAAE;QACV,WAAW;AACX,QAAA,CAAC,SAAS,CAAC;AACX,QAAA,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,KAAM,CAAS,CAAC,KAAK,IAAI,GAAG,CAAC,UAAU;AACnD,KAAA;AACD,IAAA,eAAe,EAAE;QACb,WAAW;QACX,EAAE;AACF,QAAA,CAAC,GAAG,MAAM,GAAG,CAAC,EAAE,EAAE,KAAK,IAAI,IAAI,GAAG,CAAC,EAAE,EAAE,KAAK,SAAS;AACxD,KAAA;AACD,IAAA,gBAAgB,EAAE;QACd,WAAW;AACX,QAAA,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QACnB,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,KAAM,CAAS,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC,IAAI;AACjE,KAAA;AACD,IAAA,cAAc,EAAE;QACZ,WAAW;AACX,QAAA,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAClB,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,KAAM,CAAS,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,IAAI;AACvD,KAAA;AACD,IAAA,iBAAiB,EAAE;QACf,WAAW;AACX,QAAA,CAAC,UAAU,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;;QAE9B,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,KAAM,CAAS,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,CAAE,CAAS,CAAC,KAAK,CAAC,CAAC,IAAI;AACpF,KAAA;AACD,IAAA,iBAAiB,EAAE;QACf,WAAW;AACX,QAAA,CAAC,UAAU,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;;AAE9B,QAAA,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,YAAY,CAAC,GAAG,CAAC,UAAU,EAAE,CAAE,CAAS,CAAC,KAAK,CAAC,EAAG,CAAS,CAAC,KAAK,EAAE,CAAC,EAAG,CAAS,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC;AACrH,KAAA;AACD,IAAA,KAAK,EAAE;AACH,QAAA,IAAI,EAAE,WAAW;AACjB,QAAA,SAAS,EAAE;AACP,YAAA;gBACI,CAAC,WAAW,EAAE,WAAW,CAAC;gBAC1B,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,GAAG;AACrD,aAAA;AACD,YAAA;gBACI,OAAO,CAAC,WAAW,CAAC;AACpB,gBAAA,CAAC,GAAG,EAAE,IAAI,KAAI;AACV,oBAAA,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;AACpB,wBAAA,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC;AAClB,4BAAA,OAAO,KAAK;oBACpB;AACA,oBAAA,OAAO,IAAI;gBACf;AACH;AACJ;AACJ,KAAA;AACD,IAAA,KAAK,EAAE;AACH,QAAA,IAAI,EAAE,WAAW;AACjB,QAAA,SAAS,EAAE;AACP,YAAA;gBACI,CAAC,WAAW,EAAE,WAAW,CAAC;gBAC1B,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,GAAG;AACrD,aAAA;AACD,YAAA;gBACI,OAAO,CAAC,WAAW,CAAC;AACpB,gBAAA,CAAC,GAAG,EAAE,IAAI,KAAI;AACV,oBAAA,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;AACpB,wBAAA,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC;AACjB,4BAAA,OAAO,IAAI;oBACnB;AACA,oBAAA,OAAO,KAAK;gBAChB;AACH;AACJ;AACJ,KAAA;AACD,IAAA,GAAG,EAAE;QACD,WAAW;AACX,QAAA,CAAC,WAAW,CAAC;AACb,QAAA,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG;AAChC,KAAA;AACD,IAAA,qBAAqB,EAAE;QACnB,WAAW;AACX,QAAA,CAAC,UAAU,CAAC;;AAEZ,QAAA,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,KAAI;YACT,MAAM,iBAAiB,GAAG,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,OAAO,CAAC,iBAAiB;YACtE,IAAI,iBAAiB,EAAE;gBACnB,OAAO,iBAAiB,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;YAC7C;AACA,YAAA,OAAO,IAAI;QACf;AACH,KAAA;AACD,IAAA,QAAQ,EAAE;QACN,UAAU;AACV,QAAA,CAAC,UAAU,CAAC;AACZ,QAAA,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,WAAW;AAC5C,KAAA;AACD,IAAA,UAAU,EAAE;QACR,UAAU;AACV,QAAA,CAAC,UAAU,CAAC;AACZ,QAAA,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,WAAW;AAC5C,KAAA;AACD,IAAA,QAAQ,EAAE;QACN,UAAU;QACV,OAAO,CAAC,SAAS,CAAC;AAClB,QAAA,CAAC,GAAG,EAAE,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE;AAC3E,KAAA;AACD,IAAA,iBAAiB,EAAE;QACf,UAAU;AACV,QAAA,CAAC,YAAY,CAAC;AACd,QAAA,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,KAAK,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,cAAc;AAC7D;AACJ,CAAA,CAAC;AAEF,SAAS,kBAAkB,CAAC,SAAoB,EAAA;AAC5C,IAAA,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE;AAC1B,QAAA,OAAO,CAAA,CAAA,EAAI,SAAS,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;IACxD;SAAO;QACH,OAAO,CAAA,CAAA,EAAI,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM;IACjD;AACJ;AAEA,SAAS,oBAAoB,CAAC,UAAsB,EAAA;AAChD,IAAA,IAAI,UAAU,YAAY,GAAG,EAAE;AAC3B,QAAA,OAAO,oBAAoB,CAAC,UAAU,CAAC,eAAe,CAAC;IAC3D;SAAO,IAAI,UAAU,YAAY,kBAAkB,IAAI,UAAU,CAAC,IAAI,KAAK,OAAO,EAAE;AAChF,QAAA,OAAO,KAAK;IAChB;AAAO,SAAA,IAAI,UAAU,YAAY,kBAAkB,EAAE;;;;AAIjD,QAAA,OAAO,KAAK;IAChB;AAAO,SAAA,IAAI,UAAU,YAAY,MAAM,EAAE;AACrC,QAAA,OAAO,KAAK;IAChB;AAAO,SAAA,IAAI,UAAU,YAAY,QAAQ,EAAE;AACvC,QAAA,OAAO,KAAK;IAChB;AAAO,SAAA,IAAI,UAAU,YAAY,WAAW,EAAE;AAC1C,QAAA,OAAO,KAAK;IAChB;AAEA,IAAA,MAAM,gBAAgB,GAAG,UAAU,YAAY,QAAQ;QACnD,UAAU,YAAY,SAAS;IAEnC,IAAI,gBAAgB,GAAG,IAAI;AAC3B,IAAA,UAAU,CAAC,SAAS,CAAC,KAAK,IAAG;;;;;;;QAQzB,IAAI,gBAAgB,EAAE;AAClB,YAAA,gBAAgB,GAAG,gBAAgB,IAAI,oBAAoB,CAAC,KAAK,CAAC;QACtE;aAAO;AACH,YAAA,gBAAgB,GAAG,gBAAgB,IAAI,KAAK,YAAY,OAAO;QACnE;AACJ,IAAA,CAAC,CAAC;IACF,IAAI,CAAC,gBAAgB,EAAE;AACnB,QAAA,OAAO,KAAK;IAChB;IAEA,OAAO,iBAAiB,CAAC,UAAU,CAAC;AAC7B,QAAA,wBAAwB,CAAC,UAAU,EAC/B,CAAC,MAAM,EAAE,iBAAiB,EAAE,WAAW,EAAE,eAAe,EAAE,aAAa,EAAE,qBAAqB,CAAC,CAAC;AAC/G;AAEA,SAAS,iBAAiB,CAAC,CAAa,EAAA;AACpC,IAAA,IAAI,CAAC,YAAY,kBAAkB,EAAE;AACjC,QAAA,IAAI,CAAC,CAAC,IAAI,KAAK,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;AACzC,YAAA,OAAO,KAAK;QAChB;AAAO,aAAA,IAAI,CAAC,CAAC,IAAI,KAAK,eAAe,EAAE;AACnC,YAAA,OAAO,KAAK;QAChB;AAAO,aAAA,IAAI,CAAC,CAAC,IAAI,KAAK,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;AAChD,YAAA,OAAO,KAAK;QAChB;AAAO,aAAA,IACH,CAAC,CAAC,IAAI,KAAK,YAAY;YACvB,CAAC,CAAC,IAAI,KAAK,eAAe;AAC1B,YAAA,CAAC,CAAC,IAAI,KAAK,IAAI,EACjB;AACE,YAAA,OAAO,KAAK;QAChB;aAAO,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE;AAChC,YAAA,OAAO,KAAK;QAChB;IACJ;AAEA,IAAA,IAAI,CAAC,YAAY,MAAM,EAAE;AACrB,QAAA,OAAO,KAAK;IAChB;AACA,IAAA,IAAI,CAAC,YAAY,QAAQ,EAAE;AACvB,QAAA,OAAO,KAAK;IAChB;IAEA,IAAI,MAAM,GAAG,IAAI;AACjB,IAAA,CAAC,CAAC,SAAS,CAAC,GAAG,IAAG;QACd,IAAI,MAAM,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,EAAE;YAAE,MAAM,GAAG,KAAK;QAAE;AAC7D,IAAA,CAAC,CAAC;AACF,IAAA,OAAO,MAAM;AACjB;AAEA,SAAS,eAAe,CAAC,CAAa,EAAA;AAClC,IAAA,IAAI,CAAC,YAAY,kBAAkB,EAAE;AACjC,QAAA,IAAI,CAAC,CAAC,IAAI,KAAK,eAAe,EAAE;AAC5B,YAAA,OAAO,KAAK;QAChB;IACJ;IACA,IAAI,MAAM,GAAG,IAAI;AACjB,IAAA,CAAC,CAAC,SAAS,CAAC,GAAG,IAAG;QACd,IAAI,MAAM,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE;YAAE,MAAM,GAAG,KAAK;QAAE;AAC3D,IAAA,CAAC,CAAC;AACF,IAAA,OAAO,MAAM;AACjB;AAEA,SAAS,wBAAwB,CAAC,CAAa,EAAE,UAAyB,EAAA;AACtE,IAAA,IAAI,CAAC,YAAY,kBAAkB,IAAI,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AAAE,QAAA,OAAO,KAAK;IAAE;IACxF,IAAI,MAAM,GAAG,IAAI;AACjB,IAAA,CAAC,CAAC,SAAS,CAAC,CAAC,GAAG,KAAI;QAChB,IAAI,MAAM,IAAI,CAAC,wBAAwB,CAAC,GAAG,EAAE,UAAU,CAAC,EAAE;YAAE,MAAM,GAAG,KAAK;QAAE;AAChF,IAAA,CAAC,CAAC;AACF,IAAA,OAAO,MAAM;AACjB;;ACxuBM,SAAU,OAAO,CAAO,KAAQ,EAAA;AAClC,IAAA,OAAO,EAAC,MAAM,EAAE,SAAS,EAAE,KAAK,EAAC;AACrC;AAEM,SAAU,KAAK,CAAO,KAAQ,EAAA;AAChC,IAAA,OAAO,EAAC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAC;AACnC;;AClBM,SAAU,0BAA0B,CAAC,IAAgC,EAAA;AACvE,IAAA,OAAO,IAAI,CAAC,eAAe,CAAC,KAAK,aAAa,IAAI,IAAI,CAAC,eAAe,CAAC,KAAK,yBAAyB;AACzG;AAEM,SAAU,sBAAsB,CAAC,IAAgC,EAAA;AACnE,IAAA,OAAO,CAAC,CAAC,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE;AAC/E;AAEM,SAAU,qBAAqB,CAAC,IAAgC,EAAA;IAClE,OAAO,CAAC,CAAC,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,YAAY;AAC5D;;ACZM,SAAU,OAAO,CAAC,GAAY,EAAA;AAChC,IAAA,IAAI,GAAG,YAAY,MAAM,EAAE;AACvB,QAAA,OAAO,QAAQ;IACnB;AAAO,SAAA,IAAI,GAAG,YAAY,MAAM,EAAE;AAC9B,QAAA,OAAO,QAAQ;IACnB;AAAO,SAAA,IAAI,GAAG,YAAY,OAAO,EAAE;AAC/B,QAAA,OAAO,SAAS;IACpB;AAAO,SAAA,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;AAC3B,QAAA,OAAO,OAAO;IAClB;AAAO,SAAA,IAAI,GAAG,KAAK,IAAI,EAAE;AACrB,QAAA,OAAO,MAAM;IACjB;SAAO;QACH,OAAO,OAAO,GAAG;IACrB;AACJ;;ACCM,SAAUC,YAAU,CAAC,KAAK,EAAA;IAC5B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,UAAU;AAC/G;AAEA,SAAS,gBAAgB,CAAC,CAAC,EAAA;AACvB,IAAA,OAAO,CAAC;AACZ;AAEA,SAAS,gBAAgB,CAAC,YAAwC,EAAA;AAC9D,IAAA,QAAQ,YAAY,CAAC,IAAI;AACrB,QAAA,KAAK,OAAO;YACR,OAAO,KAAK,CAAC,KAAK;AACtB,QAAA,KAAK,SAAS;YACV,OAAO,OAAO,CAAC,KAAK;AACxB,QAAA,KAAK,aAAa;YACd,OAAO,WAAW,CAAC,KAAK;AAC5B,QAAA,KAAK,YAAY;YACb,OAAO,UAAU,CAAC,KAAK;AAC3B,QAAA;AACI,YAAA,OAAO,IAAI;;AAEvB;AAEA,SAAS,gBAAgB,CAAC,IAAY,EAAA;IAClC,QAAQ,IAAI;AACR,QAAA,KAAK,aAAa;AACd,YAAA,OAAO,2BAA2B;AACtC,QAAA,KAAK,UAAU;AACX,YAAA,OAAO,wBAAwB;AACnC,QAAA,KAAK,aAAa;AACd,YAAA,OAAO,2BAA2B;AACtC,QAAA,KAAK,UAAU;AACX,YAAA,OAAO,wBAAwB;AACnC,QAAA;AACI,YAAA,MAAM,IAAI,KAAK,CAAC,0BAA0B,IAAI,CAAA,CAAA,CAAG,CAAC;;AAE9D;AAEM,SAAU,cAAc,CAAC,UAAU,EAAE,YAAY,EAAA;AACnD,IAAA,MAAM,uBAAuB,GAAG,UAAU,CAAC,KAAK,IAAI,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,QAAQ;IAC9F,MAAM,gBAAgB,GAAG,uBAAuB,IAAI,UAAU,CAAC,QAAQ,KAAK,SAAS;AACrF,IAAA,MAAM,aAAa,GAAG,uBAAuB,IAAI,CAAC,gBAAgB;IAClE,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,KAAK,qBAAqB,CAAC,YAAY,CAAC,GAAG,aAAa,GAAG,UAAU,CAAC;AAElG,IAAA,MAAM,OAAO,GAAG,gBAAgB,CAAC,YAAY,CAAC;IAC9C,IAAI,OAAO,EAAE;AACT,QAAA,UAAU,GAAG,QAAQ,CAAC,EAAE,EAAE,UAAU,CAAC;AAErC,QAAA,IAAI,UAAU,CAAC,KAAK,EAAE;AAClB,YAAA,UAAU,CAAC,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,KAAI;AAC7C,gBAAA,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AACtC,YAAA,CAAC,CAAC;QACN;AAEA,QAAA,IAAI,UAAU,CAAC,OAAO,EAAE;YACpB,UAAU,CAAC,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC;QACpD;aAAO;YACH,UAAU,CAAC,OAAO,GAAG,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC;QACtD;IACJ;AAEA,IAAA,IAAI,UAAU,CAAC,UAAU,IAAI,CAAC,kCAAkC,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE;QACrF,MAAM,IAAI,KAAK,CAAC,CAAA,sBAAA,EAAyB,UAAU,CAAC,UAAU,CAAA,CAAA,CAAG,CAAC;IACtE;AAEA,IAAA,MAAM,QAAQ,GAAG,gBAAgB,CAAC,IAAI,CAAC;AACvC,IAAA,IAAI,WAAW;AACf,IAAA,IAAI,kBAAkB;AACtB,IAAA,IAAI,IAAI,KAAK,aAAa,EAAE;;AAExB,QAAA,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;AACjC,QAAA,KAAK,MAAM,IAAI,IAAI,UAAU,CAAC,KAAK,EAAE;YACjC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;QAClC;;QAGA,kBAAkB,GAAG,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACtD;IAEA,IAAI,uBAAuB,EAAE;QACzB,MAAM,gBAAgB,GAAG,EAAE;QAC3B,MAAM,SAAS,GAAG,EAAE;AACpB,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAC9C,MAAM,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;YAChC,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI;AACzB,YAAA,IAAI,gBAAgB,CAAC,IAAI,CAAC,KAAK,SAAS,EAAE;gBACtC,gBAAgB,CAAC,IAAI,CAAC,GAAG;oBACrB,IAAI;oBACJ,IAAI,EAAE,UAAU,CAAC,IAAI;oBACrB,QAAQ,EAAE,UAAU,CAAC,QAAQ;oBAC7B,OAAO,EAAE,UAAU,CAAC,OAAO;AAC3B,oBAAA,KAAK,EAAE;iBACV;AACD,gBAAA,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;YACxB;YACA,gBAAgB,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/D;QAEA,MAAM,oBAAoB,GAAG,EAAE;AAC/B,QAAA,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE;YACvB,oBAAoB,CAAC,IAAI,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,cAAc,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC;QAC5G;AAEA,QAAA,MAAM,iBAAiB,GAAG,EAAC,IAAI,EAAE,QAAQ,EAAC;QAC1C,OAAO;AACH,YAAA,IAAI,EAAE,WAAW;YACjB,iBAAiB;YACjB,mBAAmB,EAAE,WAAW,CAAC,mBAAmB,CAAC,IAAI,CAAC,SAAS,EAAE,iBAAiB,CAAC;AACvF,YAAA,SAAS,EAAE,oBAAoB,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9C,YAAA,QAAQ,CAAC,EAAC,IAAI,EAAC,EAAE,UAAU,EAAA;AACvB,gBAAA,OAAO,2BAA2B,CAAC;AAC/B,oBAAA,KAAK,EAAE,oBAAoB;oBAC3B,IAAI,EAAE,UAAU,CAAC;iBACpB,EAAE,YAAY,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;YACrD;SACH;IACL;SAAO,IAAI,aAAa,EAAE;AACtB,QAAA,MAAM,iBAAiB,GAAG,IAAI,KAAK,aAAa;YAC5C,EAAC,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,UAAU,CAAC,IAAI,KAAK,SAAS,GAAG,UAAU,CAAC,IAAI,GAAG,CAAC,EAAC,GAAG,IAAI;QAC3F,OAAO;AACH,YAAA,IAAI,EAAE,QAAQ;YACd,iBAAiB;YACjB,mBAAmB,EAAE,WAAW,CAAC,mBAAmB,CAAC,IAAI,CAAC,SAAS,EAAE,iBAAiB,CAAC;AACvF,YAAA,SAAS,EAAE,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1C,YAAA,QAAQ,EAAE,CAAC,EAAC,IAAI,EAAC,KAAK,QAAQ,CAAC,UAAU,EAAE,YAAY,EAAE,IAAI,EAAE,WAAW,EAAE,kBAAkB;SACjG;IACL;SAAO;QACH,OAAO;AACH,YAAA,IAAI,EAAE,QAAQ;YACd,QAAQ,CAAC,CAAC,EAAE,OAAO,EAAA;gBACf,MAAM,KAAK,GAAG,OAAO,IAAI,OAAO,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,SAAS;AACjG,gBAAA,IAAI,KAAK,KAAK,SAAS,EAAE;oBACrB,OAAOC,UAAQ,CAAC,UAAU,CAAC,OAAO,EAAE,YAAY,CAAC,OAAO,CAAC;gBAC7D;AACA,gBAAA,OAAO,QAAQ,CAAC,UAAU,EAAE,YAAY,EAAE,KAAK,EAAE,WAAW,EAAE,kBAAkB,CAAC;YACrF;SACH;IACL;AACJ;AAEA,SAASA,UAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAE,EAAA;IACtB,IAAI,CAAC,KAAK,SAAS;AAAE,QAAA,OAAO,CAAC;IAC7B,IAAI,CAAC,KAAK,SAAS;AAAE,QAAA,OAAO,CAAC;IAC7B,IAAI,CAAC,KAAK,SAAS;AAAE,QAAA,OAAO,CAAC;AACjC;AAEA,SAAS,2BAA2B,CAAC,UAAU,EAAE,YAAY,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAA;AACtF,IAAA,MAAM,SAAS,GAAG,OAAO,KAAK,KAAK,OAAO,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,SAAS,CAAC;AAC5E,IAAA,OAAOA,UAAQ,CAAC,SAAS,EAAE,UAAU,CAAC,OAAO,EAAE,YAAY,CAAC,OAAO,CAAC;AACxE;AAEA,SAAS,wBAAwB,CAAC,UAAU,EAAE,YAAY,EAAE,KAAK,EAAA;;AAE7D,IAAA,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,QAAQ;QAAE,OAAOA,UAAQ,CAAC,UAAU,CAAC,OAAO,EAAE,YAAY,CAAC,OAAO,CAAC;AAC1F,IAAA,MAAM,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,MAAM;IACjC,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1C,IAAI,KAAK,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAAE,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAClE,IAAA,IAAI,KAAK,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAAE,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAE1E,MAAM,KAAK,GAAG,yBAAyB,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC;IAEvF,OAAO,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACrC;AAEA,SAAS,2BAA2B,CAAC,UAAU,EAAE,YAAY,EAAE,KAAK,EAAA;AAChE,IAAA,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,KAAK,SAAS,GAAG,UAAU,CAAC,IAAI,GAAG,CAAC;;AAGhE,IAAA,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,QAAQ;QAAE,OAAOA,UAAQ,CAAC,UAAU,CAAC,OAAO,EAAE,YAAY,CAAC,OAAO,CAAC;AAC1F,IAAA,MAAM,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,MAAM;IACjC,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1C,IAAI,KAAK,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAAE,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAClE,IAAA,IAAI,KAAK,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAAE,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAE1E,MAAM,KAAK,GAAG,yBAAyB,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC;AACvF,IAAA,MAAM,CAAC,GAAG,mBAAmB,CACzB,KAAK,EAAE,IAAI,EACX,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAC1B,UAAU,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAEnC,MAAM,WAAW,GAAG,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC9C,IAAA,MAAM,WAAW,GAAG,UAAU,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAClD,MAAM,MAAM,GAAG,kBAAkB,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,gBAAgB;AAExE,IAAA,IAAI,OAAO,WAAW,CAAC,QAAQ,KAAK,UAAU,EAAE;QAC5C,OAAO;YACH,QAAQ,CAAC,GAAG,IAAI,EAAA;AACZ,gBAAA,MAAM,cAAc,GAAG,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,EAAE,IAAI,CAAC;AAClE,gBAAA,MAAM,cAAc,GAAG,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,EAAE,IAAI,CAAC;;gBAElE,IAAI,cAAc,KAAK,SAAS,IAAI,cAAc,KAAK,SAAS,EAAE;AAC9D,oBAAA,OAAO,SAAS;gBACpB;AACA,gBAAA,OAAO,MAAM,CAAC,cAAc,EAAE,cAAc,EAAE,CAAC,EAAE,UAAU,CAAC,UAAU,CAAC;YAC3E;SACH;IACL;AAEA,IAAA,OAAO,MAAM,CAAC,WAAW,EAAE,WAAW,EAAE,CAAC,EAAE,UAAU,CAAC,UAAU,CAAC;AACrE;AAEA,SAAS,wBAAwB,CAAC,UAAU,EAAE,YAAY,EAAE,KAAK,EAAA;AAC7D,IAAA,QAAQ,YAAY,CAAC,IAAI;AACrB,QAAA,KAAK,OAAO;AACR,YAAA,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC;YAC1B;AACJ,QAAA,KAAK,WAAW;YACZ,KAAK,GAAG,SAAS,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;YAC9C;AACJ,QAAA,KAAK,eAAe;YAChB,KAAK,GAAG,aAAa,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;YAClD;AACJ,QAAA,KAAK,SAAS;AACV,YAAA,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC;YAC5B;AACJ,QAAA,KAAK,YAAY;AACb,YAAA,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC;YAC/B;AACJ,QAAA,KAAK,aAAa;AACd,YAAA,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC;YAChC;AACJ,QAAA;YACI,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,YAAY,CAAC,IAAI,KAAK,YAAY,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE;gBACvG,KAAK,GAAG,SAAS;YACrB;;AAER,IAAA,OAAOA,UAAQ,CAAC,KAAK,EAAE,UAAU,CAAC,OAAO,EAAE,YAAY,CAAC,OAAO,CAAC;AACpE;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqCG;AACH,SAAS,mBAAmB,CAAC,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,UAAU,EAAA;AAC5D,IAAA,MAAM,UAAU,GAAG,UAAU,GAAG,UAAU;AAC1C,IAAA,MAAM,QAAQ,GAAG,KAAK,GAAG,UAAU;AAEnC,IAAA,IAAI,UAAU,KAAK,CAAC,EAAE;AAClB,QAAA,OAAO,CAAC;IACZ;AAAO,SAAA,IAAI,IAAI,KAAK,CAAC,EAAE;QACnB,OAAO,QAAQ,GAAG,UAAU;IAChC;SAAO;QACH,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC;IAC5E;AACJ;;MC1Na,eAAe,CAAA;AASxB,IAAA,WAAA,CAAY,UAAsB,EAAE,YAAgD,EAAE,WAAiC,EAAA;AACnH,QAAA,IAAI,CAAC,UAAU,GAAG,UAAU;AAC5B,QAAA,IAAI,CAAC,eAAe,GAAG,EAAE;AACzB,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,iBAAiB,EAAE;AACzC,QAAA,IAAI,CAAC,aAAa,GAAG,YAAY,GAAG,eAAe,CAAC,YAAY,CAAC,GAAG,IAAI;QACxE,IAAI,CAAC,WAAW,GAAG,YAAY,IAAI,YAAY,CAAC,IAAI,KAAK,MAAM,GAAG,YAAY,CAAC,MAAM,GAAG,IAAI;AAC5F,QAAA,IAAI,CAAC,YAAY,GAAG,WAAW;IACnC;IAEA,4BAA4B,CACxB,OAAyB,EACzB,OAAiB,EACjB,YAA2B,EAC3B,SAA4B,EAC5B,eAA+B,EAC/B,gBAAmC,EAAA;AAEnC,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE;YACnB,OAAO,GAAG,cAAc,CAAC,OAAO,EAAE,IAAI,CAAC,YAAY,CAAC;QACxD;AACA,QAAA,IAAI,CAAC,UAAU,CAAC,OAAO,GAAG,OAAO;AACjC,QAAA,IAAI,CAAC,UAAU,CAAC,OAAO,GAAG,OAAO;AACjC,QAAA,IAAI,CAAC,UAAU,CAAC,YAAY,GAAG,YAAY;AAC3C,QAAA,IAAI,CAAC,UAAU,CAAC,SAAS,GAAG,SAAS;QACrC,IAAI,CAAC,UAAU,CAAC,eAAe,GAAG,eAAe,IAAI,IAAI;AACzD,QAAA,IAAI,CAAC,UAAU,CAAC,gBAAgB,GAAG,gBAAgB;QAEnD,OAAO,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC;IACpD;IAEA,QAAQ,CACJ,OAAyB,EACzB,OAAiB,EACjB,YAA2B,EAC3B,SAA4B,EAC5B,eAA+B,EAC/B,gBAAmC,EAAA;AAEnC,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE;YACnB,OAAO,GAAG,cAAc,CAAC,OAAO,EAAE,IAAI,CAAC,YAAY,CAAC;QACxD;AACA,QAAA,IAAI,CAAC,UAAU,CAAC,OAAO,GAAG,OAAO;QACjC,IAAI,CAAC,UAAU,CAAC,OAAO,GAAG,OAAO,IAAI,IAAI;QACzC,IAAI,CAAC,UAAU,CAAC,YAAY,GAAG,YAAY,IAAI,IAAI;AACnD,QAAA,IAAI,CAAC,UAAU,CAAC,SAAS,GAAG,SAAS;QACrC,IAAI,CAAC,UAAU,CAAC,eAAe,GAAG,eAAe,IAAI,IAAI;QACzD,IAAI,CAAC,UAAU,CAAC,gBAAgB,GAAG,gBAAgB,IAAI,IAAI;AAE3D,QAAA,IAAI;AACA,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC;AACrD,YAAA,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS,KAAK,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,GAAG,CAAC,EAAE;gBAC/E,OAAO,IAAI,CAAC,aAAa;YAC7B;AACA,YAAA,IAAI,IAAI,CAAC,WAAW,IAAI,EAAE,GAAG,IAAI,IAAI,CAAC,WAAW,CAAC,EAAE;AAChD,gBAAA,MAAM,IAAI,YAAY,CAAC,+BAA+B,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA,YAAA,EAAe,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAA,SAAA,CAAW,CAAC;YAC5K;AACA,YAAA,OAAO,GAAG;QACd;QAAE,OAAO,CAAC,EAAE;YACR,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE;gBAClC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,IAAI;AACtC,gBAAA,IAAI,OAAO,OAAO,KAAK,WAAW,EAAE;AAChC,oBAAA,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC;gBAC3B;YACJ;YACA,OAAO,IAAI,CAAC,aAAa;QAC7B;IACJ;AACH;AAEK,SAAU,YAAY,CAAC,UAAmB,EAAA;IAC5C,OAAO,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC;AACrD,QAAA,OAAO,UAAU,CAAC,CAAC,CAAC,KAAK,QAAQ,IAAI,UAAU,CAAC,CAAC,CAAC,IAAIF,aAAW;AACzE;AAEA;;;;;;;;AAQG;SACa,gBAAgB,CAAC,UAAmB,EAAE,YAAgD,EAAE,WAAiC,EAAA;IACrI,MAAM,MAAM,GAAG,IAAI,cAAc,CAACA,aAAW,EAAE,oBAAoB,EAAE,EAAE,EAAE,YAAY,GAAG,eAAe,CAAC,YAAY,CAAC,GAAG,SAAS,CAAC;;AAGlI,IAAA,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EACnE,YAAY,IAAI,YAAY,CAAC,IAAI,KAAK,QAAQ,GAAG,EAAC,cAAc,EAAE,QAAQ,EAAC,GAAG,SAAS,CAAC;IAE5F,IAAI,CAAC,MAAM,EAAE;AACT,QAAA,OAAO,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC;IAC/B;AAEA,IAAA,OAAO,OAAO,CAAC,IAAI,eAAe,CAAC,MAAM,EAAE,YAAY,EAAE,WAAW,CAAC,CAAC;AAC1E;MAEa,sBAAsB,CAAA;AAO/B,IAAA,WAAA,CAAY,IAAU,EAAE,UAA2B,EAAE,WAAiC,EAAA;AAClF,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI;AAChB,QAAA,IAAI,CAAC,gBAAgB,GAAG,UAAU;AAClC,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,KAAM,UAA6B,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,UAAU,CAAC;QAC1G,IAAI,CAAC,eAAe,GAAG,mBAAmB,CAAC,UAAU,CAAC,UAAU,CAAC;AACjE,QAAA,IAAI,CAAC,YAAY,GAAG,WAAW;IACnC;IAEA,4BAA4B,CACxB,OAAyB,EACzB,OAAiB,EACjB,YAA2B,EAC3B,SAA4B,EAC5B,eAA+B,EAC/B,gBAAmC,EAAA;AAEnC,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE;YACnB,OAAO,GAAG,cAAc,CAAC,OAAO,EAAE,IAAI,CAAC,YAAY,CAAC;QACxD;AACA,QAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,4BAA4B,CAAC,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,eAAe,EAAE,gBAAgB,CAAC;IAC3I;IAEA,QAAQ,CACJ,OAAyB,EACzB,OAAiB,EACjB,YAA2B,EAC3B,SAA4B,EAC5B,eAA+B,EAC/B,gBAAmC,EAAA;AAEnC,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE;YACnB,OAAO,GAAG,cAAc,CAAC,OAAO,EAAE,IAAI,CAAC,YAAY,CAAC;QACxD;AACA,QAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,eAAe,EAAE,gBAAgB,CAAC;IACvH;AACH;MAEY,uBAAuB,CAAA;IAShC,WAAA,CAAY,IAAU,EAAE,UAA2B,EAAE,SAAwB,EAAE,iBAAqC,EAAE,WAAiC,EAAA;AACnJ,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI;AAChB,QAAA,IAAI,CAAC,SAAS,GAAG,SAAS;AAC1B,QAAA,IAAI,CAAC,gBAAgB,GAAG,UAAU;AAClC,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,KAAM,QAA2B,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,UAAU,CAAC;QACxG,IAAI,CAAC,eAAe,GAAG,mBAAmB,CAAC,UAAU,CAAC,UAAU,CAAC;AACjE,QAAA,IAAI,CAAC,iBAAiB,GAAG,iBAAiB;AAC1C,QAAA,IAAI,CAAC,YAAY,GAAG,WAAW;IACnC;IAEA,4BAA4B,CACxB,OAAyB,EACzB,OAAiB,EACjB,YAA2B,EAC3B,SAA4B,EAC5B,eAA+B,EAC/B,gBAAmC,EAAA;AAEnC,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE;YACnB,OAAO,GAAG,cAAc,CAAC,OAAO,EAAE,IAAI,CAAC,YAAY,CAAC;QACxD;AACA,QAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,4BAA4B,CAAC,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,eAAe,EAAE,gBAAgB,CAAC;IAC3I;IAEA,QAAQ,CACJ,OAAyB,EACzB,OAAiB,EACjB,YAA2B,EAC3B,SAA4B,EAC5B,eAA+B,EAC/B,gBAAmC,EAAA;AAEnC,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE;YACnB,OAAO,GAAG,cAAc,CAAC,OAAO,EAAE,IAAI,CAAC,YAAY,CAAC;QACxD;AACA,QAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,eAAe,EAAE,gBAAgB,CAAC;IACvH;AAEA,IAAA,mBAAmB,CAAC,KAAa,EAAE,KAAa,EAAE,KAAa,EAAA;AAC3D,QAAA,IAAI,IAAI,CAAC,iBAAiB,EAAE;AACxB,YAAA,OAAO,WAAW,CAAC,mBAAmB,CAAC,IAAI,CAAC,iBAAiB,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC;QACvF;aAAO;AACH,YAAA,OAAO,CAAC;QACZ;IACJ;AACH;AAEK,SAAU,gBAAgB,CAAC,UAAe,EAAA;AAC5C,IAAA,OAAQ,UAA+C,CAAC,gBAAgB,KAAK,SAAS;AAC1F;SAkEgB,wBAAwB,CAAC,eAAwB,EAAE,YAAwC,EAAE,WAAiC,EAAA;IAC1I,MAAM,UAAU,GAAG,gBAAgB,CAAC,eAAe,EAAE,YAAY,EAAE,WAAW,CAAC;AAC/E,IAAA,IAAI,UAAU,CAAC,MAAM,KAAK,OAAO,EAAE;AAC/B,QAAA,OAAO,UAAU;IACrB;AAEA,IAAA,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,UAAU;AAE1C,IAAA,MAAM,uBAAuB,GAAG,iBAAiB,CAAC,MAAM,CAAC;IACzD,IAAI,CAAC,uBAAuB,IAAI,CAAC,0BAA0B,CAAC,YAAY,CAAC,EAAE;AACvE,QAAA,OAAO,KAAK,CAAC,CAAC,IAAI,sBAAsB,CAAC,EAAE,EAAE,gCAAgC,CAAC,CAAC,CAAC;IACpF;IAEA,MAAM,cAAc,GAAG,wBAAwB,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC;IACjE,IAAI,CAAC,cAAc,IAAI,CAAC,sBAAsB,CAAC,YAAY,CAAC,EAAE;AAC1D,QAAA,OAAO,KAAK,CAAC,CAAC,IAAI,sBAAsB,CAAC,EAAE,EAAE,gCAAgC,CAAC,CAAC,CAAC;IACpF;AAEA,IAAA,MAAM,SAAS,GAAG,aAAa,CAAC,MAAM,CAAC;AACvC,IAAA,IAAI,CAAC,SAAS,IAAI,CAAC,cAAc,EAAE;AAC/B,QAAA,OAAO,KAAK,CAAC,CAAC,IAAI,sBAAsB,CAAC,EAAE,EAAE,gGAAgG,CAAC,CAAC,CAAC;IACpJ;AAAO,SAAA,IAAI,SAAS,YAAY,sBAAsB,EAAE;AACpD,QAAA,OAAO,KAAK,CAAC,CAAC,SAAS,CAAC,CAAC;IAC7B;SAAO,IAAI,SAAS,YAAY,WAAW,IAAI,CAAC,qBAAqB,CAAC,YAAY,CAAC,EAAE;AACjF,QAAA,OAAO,KAAK,CAAC,CAAC,IAAI,sBAAsB,CAAC,EAAE,EAAE,6DAA6D,CAAC,CAAC,CAAC;IACjH;IAEA,IAAI,CAAC,SAAS,EAAE;AACZ,QAAA,OAAO,OAAO,CAAC,uBAAuB;YACjC,IAAI,sBAAsB,CAAC,UAAU,EAAE,UAAU,CAAC,KAAK,EAAE,WAAW,CAAwB;YAC5F,IAAI,sBAAsB,CAAC,QAAQ,EAAE,UAAU,CAAC,KAAK,EAAE,WAAW,CAAsB,CAAC;IAClG;AAEA,IAAA,MAAM,iBAAiB,GAAG,SAAS,YAAY,WAAW,GAAG,SAAS,CAAC,aAAa,GAAG,SAAS;AAEhG,IAAA,OAAO,OAAO,CAAC,uBAAuB;AACjC,QAAA,IAAI,uBAAuB,CAAC,QAAQ,EAAE,UAAU,CAAC,KAAK,EAAE,SAAS,CAAC,MAAM,EAAE,iBAAiB,EAAE,WAAW,CAAsB;AAC9H,QAAA,IAAI,uBAAuB,CAAC,WAAW,EAAE,UAAU,CAAC,KAAK,EAAE,SAAS,CAAC,MAAM,EAAE,iBAAiB,EAAE,WAAW,CAAyB,CAAC;AAC9I;AAEA;AACA;MACa,qBAAqB,CAAA;IAS9B,WAAA,CAAY,UAAyC,EAAE,aAAyC,EAAA;AAC5F,QAAA,IAAI,CAAC,WAAW,GAAG,UAAU;AAC7B,QAAA,IAAI,CAAC,cAAc,GAAG,aAAa;AACnC,QAAA,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;IACzE;IAEA,OAAO,WAAW,CAAI,UAGrB,EAAA;QACG,OAAO,IAAI,qBAAqB,CAAC,UAAU,CAAC,WAAW,EAAE,UAAU,CAAC,cAAc,CAA6B;IACnH;IAEA,OAAO,SAAS,CAAI,KAA+B,EAAA;QAC/C,OAAO;YACH,WAAW,EAAE,KAAK,CAAC,WAAW;YAC9B,cAAc,EAAE,KAAK,CAAC;SACzB;IACL;AACH;SAEe,2BAA2B,CACvC,KAAoC,EACpC,aAAyC,EACzC,WAAiC,EAAA;AAEjC,IAAA,IAAIC,YAAU,CAAC,KAAK,CAAC,EAAE;AACnB,QAAA,OAAO,IAAI,qBAAqB,CAAC,KAAK,EAAE,aAAa,CAAQ;IAEjE;AAAO,SAAA,IAAI,YAAY,CAAC,KAAK,CAAC,EAAE;QAC5B,MAAM,UAAU,GAAG,wBAAwB,CAAC,KAAK,EAAE,aAAa,EAAE,WAAW,CAAC;AAC9E,QAAA,IAAI,UAAU,CAAC,MAAM,KAAK,OAAO,EAAE;;AAE/B,YAAA,MAAM,IAAI,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAA,EAAG,GAAG,CAAC,GAAG,CAAA,EAAA,EAAK,GAAG,CAAC,OAAO,CAAA,CAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzF;QACA,OAAO,UAAU,CAAC,KAAK;IAE3B;SAAO;QACH,IAAI,QAAQ,GAAQ,KAAK;QACzB,IAAI,aAAa,CAAC,IAAI,KAAK,OAAO,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AAC7D,YAAA,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC;QACjC;aAAO,IAAI,aAAa,CAAC,IAAI,KAAK,SAAS,KAAK,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE;AAChG,YAAA,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,KAA6B,CAAC;QAC3D;aAAO,IAAI,aAAa,CAAC,IAAI,KAAK,aAAa,KAAK,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE;AACpG,YAAA,QAAQ,GAAG,WAAW,CAAC,KAAK,CAAC,KAAiC,CAAC;QACnE;aAAO,IAAI,aAAa,CAAC,IAAI,KAAK,YAAY,KAAK,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE;AACnG,YAAA,QAAQ,GAAG,UAAU,CAAC,KAAK,CAAC,KAAgC,CAAC;QACjE;AAAO,aAAA,IAAI,aAAa,CAAC,IAAI,KAAK,gCAAgC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AACxF,YAAA,QAAQ,GAAG,8BAA8B,CAAC,KAAK,CAAC,KAAoD,CAAC;QACzG;aAAO,IAAI,aAAa,CAAC,IAAI,KAAK,sBAAsB,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AACnF,YAAA,QAAQ,GAAG,oBAAoB,CAAC,KAAK,CAAC,KAAK,CAAC;QAChD;QACA,OAAO;YACH,eAAe,EAAE,IAAI,GAAG,EAAU;AAClC,YAAA,YAAY,EAAE,IAAI;AAClB,YAAA,IAAI,EAAE,UAAU;AAChB,YAAA,QAAQ,EAAE,MAAM;SACnB;IACL;AACJ;AAEA;AACA;AACA;AACA,SAAS,aAAa,CAAC,UAAsB,EAAA;IACzC,IAAI,MAAM,GAAG,IAAI;AACjB,IAAA,IAAI,UAAU,YAAY,GAAG,EAAE;AAC3B,QAAA,MAAM,GAAG,aAAa,CAAC,UAAU,CAAC,MAAM,CAAC;IAE7C;AAAO,SAAA,IAAI,UAAU,YAAY,QAAQ,EAAE;AACvC,QAAA,KAAK,MAAM,GAAG,IAAI,UAAU,CAAC,IAAI,EAAE;AAC/B,YAAA,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC;YAC3B,IAAI,MAAM,EAAE;gBACR;YACJ;QACJ;IAEJ;SAAO,IAAI,CAAC,UAAU,YAAY,IAAI,IAAI,UAAU,YAAY,WAAW;QACvE,UAAU,CAAC,KAAK,YAAY,kBAAkB;AAC9C,QAAA,UAAU,CAAC,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE;QAElC,MAAM,GAAG,UAAU;IACvB;AAEA,IAAA,IAAI,MAAM,YAAY,sBAAsB,EAAE;AAC1C,QAAA,OAAO,MAAM;IACjB;AAEA,IAAA,UAAU,CAAC,SAAS,CAAC,CAAC,KAAK,KAAI;AAC3B,QAAA,MAAM,WAAW,GAAG,aAAa,CAAC,KAAK,CAAC;AACxC,QAAA,IAAI,WAAW,YAAY,sBAAsB,EAAE;YAC/C,MAAM,GAAG,WAAW;QACxB;AAAO,aAAA,IAAI,CAAC,MAAM,IAAI,WAAW,EAAE;YAC/B,MAAM,GAAG,IAAI,sBAAsB,CAAC,EAAE,EAAE,gGAAgG,CAAC;QAC7I;aAAO,IAAI,MAAM,IAAI,WAAW,IAAI,MAAM,KAAK,WAAW,EAAE;YACxD,MAAM,GAAG,IAAI,sBAAsB,CAAC,EAAE,EAAE,yFAAyF,CAAC;QACtI;AACJ,IAAA,CAAC,CAAC;AAEF,IAAA,OAAO,MAAM;AACjB;AAEM,SAAU,mBAAmB,CAAC,UAAsB,EAAE,OAAA,GAAU,IAAI,GAAG,EAAU,EAAA;AACnF,IAAA,IAAI,UAAU,YAAY,WAAW,EAAE;AACnC,QAAA,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC;IAC/B;AAEA,IAAA,UAAU,CAAC,SAAS,CAAC,eAAe,IAAG;AACnC,QAAA,mBAAmB,CAAC,eAAe,EAAE,OAAO,CAAC;AACjD,IAAA,CAAC,CAAC;AACF,IAAA,OAAO,OAAO;AAClB;AAEA,SAAS,eAAe,CAAC,IAAgC,EAAA;AACrD,IAAA,MAAM,KAAK,GAAG;AACV,QAAA,KAAK,EAAE,SAAS;AAChB,QAAA,MAAM,EAAE,UAAU;AAClB,QAAA,MAAM,EAAE,UAAU;AAClB,QAAA,IAAI,EAAE,UAAU;AAChB,QAAA,OAAO,EAAE,WAAW;AACpB,QAAA,SAAS,EAAE,aAAa;AACxB,QAAA,OAAO,EAAE,WAAW;AACpB,QAAA,WAAW,EAAE,eAAe;AAC5B,QAAA,UAAU,EAAE,cAAc;AAC1B,QAAA,oBAAoB,EAAE,wBAAwB;AAC9C,QAAA,aAAa,EAAE,iBAAiB;AAChC,QAAA,8BAA8B,EAAE;KACnC;AAED,IAAA,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE;AACvB,QAAA,OAAO,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC;IAC7D;AAEA,IAAA,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;AAC3B;AAEA,SAAS,eAAe,CAAC,IAAgC,EAAA;AACrD,IAAA,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,IAAIA,YAAU,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;;;;QAInD,OAAO,IAAI,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAChC;AACA,IAAA,QAAQ,IAAI,CAAC,IAAI;AACb,QAAA,KAAK,OAAO;YACR,OAAO,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI;AAC5C,QAAA,KAAK,SAAS;YACV,OAAO,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI;AAC9C,QAAA,KAAK,aAAa;YACd,OAAO,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI;AAClD,QAAA,KAAK,YAAY;YACb,OAAO,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI;AACjD,QAAA,KAAK,gCAAgC;YACjC,OAAO,8BAA8B,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI;AACrE,QAAA,KAAK,sBAAsB;YACvB,OAAO,oBAAoB,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI;AAC3D,QAAA;AACI,YAAA,QAAQ,IAAI,CAAC,OAAO,KAAK,SAAS,GAAG,IAAI,GAAG,IAAI,CAAC,OAAO;;AAEpE;AAEA,SAAS,cAAc,CAAC,OAAyB,EAAE,WAAgC,EAAA;IAC/E,MAAM,EACF,IAAI,EACJ,cAAc,EACd,SAAS,EACT,YAAY,EACZ,iBAAiB,EACjB,WAAW,EACd,GAAG,OAAO,KAAA,IAAA,IAAP,OAAO,KAAA,MAAA,GAAP,OAAO,GAAI,EAAE;IACjB,OAAO;QACH,IAAI;QACJ,cAAc;QACd,SAAS;QACT,YAAY;QACZ,iBAAiB;QACjB,WAAW;QACX;KACH;AACL;;ACjjBM,SAAU,kBAAkB,CAAC,MAAW,EAAA;IAC1C,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,KAAK,EAAE;AACrC,QAAA,OAAO,IAAI;IACf;AAEA,IAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;AAC/C,QAAA,OAAO,KAAK;IAChB;AACA,IAAA,QAAQ,MAAM,CAAC,CAAC,CAAC;AACb,QAAA,KAAK,KAAK;AACN,YAAA,OAAO,MAAM,CAAC,MAAM,IAAI,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,OAAO;AAE7E,QAAA,KAAK,IAAI;YACL,OAAO,MAAM,CAAC,MAAM,IAAI,CAAC,KAAK,OAAO,MAAM,CAAC,CAAC,CAAC,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AAE5F,QAAA,KAAK,KAAK;AACV,QAAA,KAAK,MAAM;AACX,QAAA,KAAK,MAAM;AACP,YAAA,OAAO,KAAK;AAEhB,QAAA,KAAK,IAAI;AACT,QAAA,KAAK,IAAI;AACT,QAAA,KAAK,GAAG;AACR,QAAA,KAAK,IAAI;AACT,QAAA,KAAK,GAAG;AACR,QAAA,KAAK,IAAI;YACL,OAAO,MAAM,CAAC,MAAM,KAAK,CAAC,KAAK,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AAExF,QAAA,KAAK,KAAK;AACV,QAAA,KAAK,KAAK;YACN,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;gBAC7B,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,SAAS,EAAE;AAClD,oBAAA,OAAO,KAAK;gBAChB;YACJ;AACA,YAAA,OAAO,IAAI;AAEf,QAAA;AACI,YAAA,OAAO,IAAI;;AAEvB;AAEA,MAAM,UAAU,GAAG;AACf,IAAA,MAAM,EAAE,SAAS;AACjB,IAAA,SAAS,EAAE,KAAK;AAChB,IAAA,YAAY,EAAE,KAAK;AACnB,IAAA,eAAe,EAAE,aAAa;AAC9B,IAAA,YAAY,EAAE;AACV,QAAA,cAAc,EAAE,KAAK;AACrB,QAAA,YAAY,EAAE,CAAC,MAAM,EAAE,SAAS;AACnC;CACJ;AAED;;;;;;;;;AASG;AACG,SAAU,aAAa,CAAC,MAAkC,EAAE,WAAiC,EAAA;IAC/F,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,SAAS,EAAE;QACzC,OAAO,EAAC,MAAM,EAAE,MAAM,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,kBAAkB,EAAE,MAAM,IAAI,GAAG,EAAE,EAAC;IACzF;AAEA,IAAA,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,EAAE;AAC7B,QAAA,MAAM,GAAGE,eAAa,CAAC,MAAM,CAAkC;IACnE;IAEA,MAAM,QAAQ,GAAG,gBAAgB,CAAC,MAAM,EAAE,UAAwC,EAAE,WAAW,CAAC;AAChG,IAAA,IAAI,QAAQ,CAAC,MAAM,KAAK,OAAO,EAAE;AAC7B,QAAA,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAA,EAAG,GAAG,CAAC,GAAG,CAAA,EAAA,EAAK,GAAG,CAAC,OAAO,CAAA,CAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACvF;SAAO;AACH,QAAA,MAAM,YAAY,GAAG,cAAc,CAAC,MAAM,CAAC;QAC3C,OAAO;YACH,MAAM,EAAE,CAAC,gBAAkC,EAAE,OAAgB,EAAE,SAA4B,KAAK,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,gBAAgB,EAAE,OAAO,EAAE,EAAE,EAAE,SAAS,CAAC;YACjK,YAAY;YACZ,kBAAkB,EAAE,MAAM,mBAAmB,CAAC,QAAQ,CAAC,KAAK,CAAC,UAAU;SAC1E;IACL;AACJ;AAEA;AACA,SAAS,OAAO,CAAC,CAAC,EAAE,CAAC,EAAA;IACjB,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC;AACrC;AAEA,SAAS,cAAc,CAAC,MAAM,EAAA;AAC1B,IAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;AAAE,QAAA,OAAO,KAAK;AACxC,IAAA,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,QAAQ,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,UAAU;AAAE,QAAA,OAAO,IAAI;AACnE,IAAA,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;AAChD,QAAA,IAAI,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAAE,YAAA,OAAO,IAAI;IAClD;AACA,IAAA,OAAO,KAAK;AAChB;AAEA,SAASA,eAAa,CAAC,MAAiC,EAAA;AACpD,IAAA,IAAI,CAAC,MAAM;AAAE,QAAA,OAAO,IAAI;AACxB,IAAA,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC;AACpB,IAAA,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC;AAAE,QAAA,QAAQ,EAAE,KAAK,KAAK;IAC5C,MAAM,SAAS,GACX,EAAE,KAAK,IAAI,GAAGC,qBAAmB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC;QACzD,EAAE,KAAK,IAAI,GAAG,eAAe,CAACA,qBAAmB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;AAC1E,YAAA,EAAE,KAAK,GAAG;AAClB,gBAAA,EAAE,KAAK,GAAG;AACV,gBAAA,EAAE,KAAK,IAAI;gBACX,EAAE,KAAK,IAAI,GAAGA,qBAAmB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;AAC/C,gBAAA,EAAE,KAAK,KAAK,GAAG,oBAAoB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;oBAChD,EAAE,KAAK,KAAK,GAAG,CAAC,KAAgB,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAACD,eAAa,CAAC,CAAC;AACxE,wBAAA,EAAE,KAAK,MAAM,GAAG,CAAC,KAAgB,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAACA,eAAa,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;4BAC9F,EAAE,KAAK,IAAI,GAAGE,aAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gCACjD,EAAE,KAAK,KAAK,GAAG,eAAe,CAACA,aAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACnE,oCAAA,EAAE,KAAK,KAAK,GAAGC,cAAY,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAClC,wCAAA,EAAE,KAAK,MAAM,GAAG,eAAe,CAACA,cAAY,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AACpD,4CAAA,IAAI;AAChD,IAAA,OAAO,SAAS;AACpB;AAEA,SAASF,qBAAmB,CAAC,QAAgB,EAAE,KAAU,EAAE,EAAU,EAAA;IACjE,QAAQ,QAAQ;AACZ,QAAA,KAAK,OAAO;AACR,YAAA,OAAO,CAAC,CAAA,YAAA,EAAe,EAAE,EAAE,EAAE,KAAK,CAAC;AACvC,QAAA,KAAK,KAAK;AACN,YAAA,OAAO,CAAC,CAAA,UAAA,EAAa,EAAE,EAAE,EAAE,KAAK,CAAC;AACrC,QAAA;YACI,OAAO,CAAC,UAAU,EAAE,CAAA,CAAE,EAAE,QAAQ,EAAE,KAAK,CAAC;;AAEpD;AAEA,SAAS,oBAAoB,CAAC,OAA0B,EAAA;AACpD,IAAA,OAAO,CAAC,KAAgB,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAACD,eAAa,CAAC,CAAC;AAChE;AAEA,SAASE,aAAW,CAAC,QAAgB,EAAE,MAAkB,EAAA;AACrD,IAAA,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;AAAE,QAAA,OAAO,KAAK;IAAE;IACzC,QAAQ,QAAQ;AACZ,QAAA,KAAK,OAAO;YACR,OAAO,CAAC,gBAAgB,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;AAClD,QAAA,KAAK,KAAK;YACN,OAAO,CAAC,cAAc,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;AAChD,QAAA;YACI,IAAI,MAAM,CAAC,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE;AACzE,gBAAA,OAAO,CAAC,iBAAiB,EAAE,QAAQ,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;YAC3E;iBAAO;gBACH,OAAO,CAAC,iBAAiB,EAAE,QAAQ,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;YAC7D;;AAEZ;AAEA,SAASC,cAAY,CAAC,QAAgB,EAAA;IAClC,QAAQ,QAAQ;AACZ,QAAA,KAAK,OAAO;AACR,YAAA,OAAO,IAAI;AACf,QAAA,KAAK,KAAK;YACN,OAAO,CAAC,eAAe,CAAC;AAC5B,QAAA;AACI,YAAA,OAAO,CAAC,YAAY,EAAE,QAAQ,CAAC;;AAE3C;AAEA,SAAS,eAAe,CAAC,MAAe,EAAA;AACpC,IAAA,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC;AACxB;;ACjLA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+CG;SACa,aAAa,CAAC,MAA2B,EAAE,gBAA+B,EAAE,EAAA;IACxF,IAAI,kBAAkB,CAAC,MAAM,CAAC;AAAE,QAAA,OAAO,MAAM;AAC7C,IAAA,IAAI,CAAC,MAAM;AAAE,QAAA,OAAO,IAAI;IAExB,MAAM,YAAY,GAAG,MAAmC;AACxD,IAAA,MAAM,QAAQ,GAAG,YAAY,CAAC,CAAC,CAAC;AAChC,IAAA,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC;AAAE,QAAA,QAAQ,QAAQ,KAAK,KAAK;IAElD,QAAQ,QAAQ;AACZ,QAAA,KAAK,IAAI;AACT,QAAA,KAAK,IAAI;AACT,QAAA,KAAK,GAAG;AACR,QAAA,KAAK,GAAG;AACR,QAAA,KAAK,IAAI;QACT,KAAK,IAAI,EAAE;YACP,MAAM,GAAG,QAAQ,EAAE,KAAK,CAAC,GAAG,MAAM;YAClC,OAAO,mBAAmB,CAAC,QAAkB,EAAE,KAAK,EAAE,QAAQ,EAAE,aAAa,CAAC;QAClF;QACA,KAAK,KAAK,EAAE;AACR,YAAA,MAAM,GAAG,GAAG,UAAU,CAAC,GAAG,YAAY;YACtC,MAAM,QAAQ,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAA4B,KAAI;gBAC7D,MAAM,KAAK,GAAG,EAAE;gBAChB,MAAM,KAAK,GAAG,aAAa,CAAC,CAAC,EAAE,KAAK,CAAC;AACrC,gBAAA,MAAM,UAAU,GAAG,iBAAiB,CAAC,KAAK,CAAC;AAC3C,gBAAA,OAAO,UAAU,KAAK,IAAI,GAAG,KAAK,GAAG,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,CAA4B;AACtG,YAAA,CAAC,CAAC;AACF,YAAA,OAAO,CAAC,KAAK,EAAE,GAAG,QAAQ,CAAC;QAC/B;QACA,KAAK,KAAK,EAAE;AACR,YAAA,MAAM,GAAG,GAAG,UAAU,CAAC,GAAG,YAAY;AACtC,YAAA,MAAM,QAAQ,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,aAAa,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC;YACrE,OAAO,QAAQ,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,QAAQ,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC;QACnE;QACA,KAAK,MAAM,EAAE;AACT,YAAA,MAAM,GAAG,GAAG,UAAU,CAAC,GAAG,YAAY;AACtC,YAAA,OAAO,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC,KAAK,EAAE,GAAG,UAAU,CAAC,EAAE,EAAE,CAAC,CAAC;QAC3D;QACA,KAAK,IAAI,EAAE;YACP,MAAM,GAAG,QAAQ,EAAE,GAAG,MAAM,CAAC,GAAG,YAAY;AAC5C,YAAA,OAAO,WAAW,CAAC,QAAQ,EAAE,MAAM,CAAC;QACxC;QACA,KAAK,KAAK,EAAE;YACR,MAAM,GAAG,QAAQ,EAAE,GAAG,MAAM,CAAC,GAAG,YAAY;YAC5C,OAAO,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC;QAC9C;AACA,QAAA,KAAK,KAAK;AACN,YAAA,OAAO,YAAY,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;AACxC,QAAA,KAAK,MAAM;YACP,OAAO,CAAC,GAAG,EAAE,YAAY,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/C,QAAA;AACI,YAAA,OAAO,IAAI;;AAEvB;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,iBAAiB,CAAC,aAA4B,EAAA;IACnD,MAAM,UAAU,GAAG,EAAE;AACrB,IAAA,KAAK,MAAM,QAAQ,IAAI,aAAa,EAAE;AAClC,QAAA,MAAM,GAAG,GAAG,QAAQ,KAAK,KAAK,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC;AAC3D,QAAA,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC;IACrE;AACA,IAAA,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;AAAE,QAAA,OAAO,IAAI;AACxC,IAAA,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;AAAE,QAAA,OAAO,UAAU,CAAC,CAAC,CAAC;AACjD,IAAA,OAAO,CAAC,KAAK,EAAE,GAAG,UAAU,CAAC;AACjC;AAEA,SAAS,mBAAmB,CAAC,QAAgB,EAAE,KAAU,EAAE,EAAU,EAAE,aAAoC,EAAA;AACvG,IAAA,IAAI,GAAG;AACP,IAAA,IAAI,QAAQ,KAAK,OAAO,EAAE;QACtB,OAAO,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,EAAE,KAAK,CAAkC;IAC1E;AAAO,SAAA,IAAI,QAAQ,KAAK,KAAK,EAAE;AAC3B,QAAA,GAAG,GAAG,CAAC,IAAI,CAAC;IAChB;SAAO;AACH,QAAA,GAAG,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC;IAC3B;AAEA,IAAA,IAAI,aAAa,IAAI,KAAK,KAAK,IAAI,EAAE;AACjC,QAAA,MAAM,IAAI,GAAI,OAAO,KAAa;AAClC,QAAA,aAAa,CAAC,QAAQ,CAAC,GAAG,IAAI;IAClC;AAEA,IAAA,IAAI,EAAE,KAAK,IAAI,IAAI,QAAQ,KAAK,KAAK,IAAI,KAAK,KAAK,IAAI,EAAE;QACrD,OAAO;YACH,KAAK;AACL,YAAA,CAAC,KAAK,EAAE,QAAQ,CAAC;AACjB,YAAA,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI;SACnB;IACL;AAAO,SAAA,IAAI,EAAE,KAAK,IAAI,IAAI,QAAQ,KAAK,KAAK,IAAI,KAAK,KAAK,IAAI,EAAE;QAC5D,OAAO;YACH,KAAK;YACL,CAAC,GAAG,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;AACxB,YAAA,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI;SACnB;IACL;AAEA,IAAA,OAAO,CAAC,EAAE,EAAE,GAAG,EAAE,KAAK,CAAkC;AAC5D;AAEA,SAAS,WAAW,CAAC,QAAgB,EAAE,MAAkB,EAAE,MAAM,GAAG,KAAK,EAAA;AACrE,IAAA,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;AAAE,QAAA,OAAO,MAAM;AAEtC,IAAA,IAAI,GAA4B;AAChC,IAAA,IAAI,QAAQ,KAAK,OAAO,EAAE;AACtB,QAAA,GAAG,GAAG,CAAC,eAAe,CAAC;IAC3B;AAAO,SAAA,IAAI,QAAQ,KAAK,KAAK,EAAE;AAC3B,QAAA,GAAG,GAAG,CAAC,IAAI,CAAC;IAChB;SAAO;AACH,QAAA,GAAG,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC;IAC3B;;;;;IAMA,IAAI,YAAY,GAAG,IAAI;AACvB,IAAA,MAAM,IAAI,GAAG,OAAO,MAAM,CAAC,CAAC,CAAC;AAC7B,IAAA,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;AACxB,QAAA,IAAI,OAAO,KAAK,KAAK,IAAI,EAAE;YACvB,YAAY,GAAG,KAAK;YACpB;QACJ;IACJ;AAEA,IAAA,IAAI,YAAY,KAAK,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,QAAQ,CAAC,EAAE;;AAE1D,QAAA,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;AACnF,QAAA,OAAO,CAAC,OAAO,EAAE,GAAG,EAAE,YAAY,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;IACxD;IAEA,IAAI,MAAM,EAAE;QACR,OAAO,CAAC,KAAK,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAA4B,CAAC,CAAC;IACjF;SAAO;QACH,OAAO,CAAC,KAAK,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAA4B,CAAC,CAAC;IACjF;AACJ;AAEA,SAAS,YAAY,CAAC,QAAgB,EAAA;AAClC,IAAA,IAAI,QAAQ,KAAK,OAAO,EAAE;AACtB,QAAA,OAAO,IAAI;IACf;AAAO,SAAA,IAAI,QAAQ,KAAK,KAAK,EAAE;QAC3B,OAAO,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC;IAC/B;SAAO;AACH,QAAA,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC;IAC5B;AACJ;;AC1MA,SAAS,cAAc,CAAC,KAAK,EAAA;AACzB,IAAA,OAAO,OAAO,KAAK,KAAK,QAAQ,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,GAAG,KAAK;AACjE;AAEM,SAAU,eAAe,CAAC,UAAe,EAAE,YAAwC,EAAA;AACrF,IAAA,IAAI,KAAK,GAAG,UAAU,CAAC,KAAK;IAC5B,IAAI,CAAC,KAAK,EAAE;;AAER,QAAA,OAAO,uBAAuB,CAAC,UAAU,EAAE,YAAY,CAAC;IAC5D;AAEA,IAAA,MAAM,uBAAuB,GAAG,KAAK,IAAI,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,QAAQ;IACxE,MAAM,gBAAgB,GAAG,uBAAuB,IAAI,UAAU,CAAC,QAAQ,KAAK,SAAS;AACrF,IAAA,MAAM,aAAa,GAAG,uBAAuB,IAAI,CAAC,gBAAgB;IAElE,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,KAAI;AACvB,QAAA,IAAI,CAAC,gBAAgB,IAAK,YAAoB,CAAC,MAAM,IAAI,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE;AAClF,YAAA,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QACjD;AACA,QAAA,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7C,IAAA,CAAC,CAAC;IAEF,IAAI,uBAAuB,EAAE;QACzB,OAAO,8BAA8B,CAAC,UAAU,EAAE,YAAY,EAAE,KAAK,CAAC;IAC1E;SAAO,IAAI,aAAa,EAAE;QACtB,OAAO,mBAAmB,CAAC,UAAU,EAAE,YAAY,EAAE,KAAK,CAAC;IAC/D;SAAO;QACH,OAAO,uBAAuB,CAAC,UAAU,EAAE,YAAY,EAAE,KAAK,CAAC;IACnE;AACJ;AAEA,SAAS,uBAAuB,CAAC,UAAU,EAAE,YAAY,EAAA;IACrD,MAAM,GAAG,GAAG,CAAC,KAAK,EAAE,UAAU,CAAC,QAAQ,CAAC;AAExC,IAAA,IAAI,UAAU,CAAC,OAAO,KAAK,SAAS,EAAE;;;AAGlC,QAAA,OAAO,YAAY,CAAC,IAAI,KAAK,QAAQ,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,GAAG,GAAG;IACjE;AAAO,SAAA,IAAI,YAAY,CAAC,IAAI,KAAK,MAAM,EAAE;QACrC,OAAO;YACH,OAAO;YACP,GAAG;AACH,YAAA,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC;YAChC,GAAG;AACH,YAAA,UAAU,CAAC;SACd;IACL;SAAO;AACH,QAAA,MAAM,UAAU,GAAG,CAAC,YAAY,CAAC,IAAI,KAAK,OAAO,GAAG,UAAU,GAAG,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,cAAc,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;AAC5H,QAAA,IAAI,YAAY,CAAC,IAAI,KAAK,OAAO,EAAE;AAC/B,YAAA,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,YAAY,CAAC,KAAK,EAAE,YAAY,CAAC,MAAM,IAAI,IAAI,CAAC;QAC5E;AACA,QAAA,OAAO,UAAU;IACrB;AACJ;AAEA,SAAS,sBAAsB,CAAC,UAAU,EAAA;AACtC,IAAA,QAAQ,UAAU,CAAC,UAAU;AACzB,QAAA,KAAK,KAAK,EAAE,OAAO,iBAAiB;AACpC,QAAA,KAAK,KAAK,EAAE,OAAO,iBAAiB;AACpC,QAAA,SAAS,OAAO,aAAa;;AAErC;AAEA,SAAS,8BAA8B,CAAC,UAAU,EAAE,YAAY,EAAE,KAAK,EAAA;IACnE,MAAM,yBAAyB,GAAG,EAAE;IACpC,MAAM,oBAAoB,GAAG,EAAE;IAC/B,MAAM,SAAS,GAAG,EAAE;AACpB,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACnC,QAAA,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC;QACrB,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI;AACzB,QAAA,IAAI,yBAAyB,CAAC,IAAI,CAAC,KAAK,SAAS,EAAE;YAC/C,yBAAyB,CAAC,IAAI,CAAC,GAAG;gBAC9B,IAAI;gBACJ,IAAI,EAAE,UAAU,CAAC,IAAI;gBACrB,QAAQ,EAAE,UAAU,CAAC,QAAQ;gBAC7B,OAAO,EAAE,UAAU,CAAC,OAAO;aAC9B;AACD,YAAA,oBAAoB,CAAC,IAAI,CAAC,GAAG,EAAE;AAC/B,YAAA,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;QACxB;QACA,oBAAoB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7D;;;;;IAMA,MAAM,YAAY,GAAG,eAAe,CAAC,EAAE,EAAE,YAAY,CAAC;AACtD,IAAA,IAAI,YAAY,KAAK,aAAa,EAAE;AAChC,QAAA,MAAM,UAAU,GAAG,CAAC,sBAAsB,CAAC,UAAU,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;AAE7E,QAAA,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE;AACvB,YAAA,MAAM,MAAM,GAAG,uBAAuB,CAAC,yBAAyB,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,oBAAoB,CAAC,CAAC,CAAC,CAAC;YAC3G,cAAc,CAAC,UAAU,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC;QAChD;AAEA,QAAA,OAAO,UAAU;IACrB;SAAO;QACH,MAAM,UAAU,GAAG,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC;AAErC,QAAA,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE;AACvB,YAAA,MAAM,MAAM,GAAG,uBAAuB,CAAC,yBAAyB,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,oBAAoB,CAAC,CAAC,CAAC,CAAC;YAC3G,cAAc,CAAC,UAAU,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC;QAC/C;QAEA,wBAAwB,CAAC,UAAU,CAAC;AAEpC,QAAA,OAAO,UAAU;IACrB;AACJ;AAEA,SAAS,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAA;IAClB,IAAI,CAAC,KAAK,SAAS;AAAE,QAAA,OAAO,CAAC;IAC7B,IAAI,CAAC,KAAK,SAAS;AAAE,QAAA,OAAO,CAAC;AACjC;AAEA,SAAS,WAAW,CAAC,UAAU,EAAE,YAAY,EAAA;AACzC,IAAA,MAAM,YAAY,GAAG,cAAc,CAAC,QAAQ,CAAC,UAAU,CAAC,OAAO,EAAE,YAAY,CAAC,OAAO,CAAC,CAAC;AAEvF;;;;;AAKG;IACH,IAAI,YAAY,KAAK,SAAS,IAAI,YAAY,CAAC,IAAI,KAAK,eAAe,EAAE;AACrE,QAAA,OAAO,EAAE;IACb;AACA,IAAA,OAAO,YAAY;AACvB;AAEA,SAAS,uBAAuB,CAAC,UAAU,EAAE,YAAY,EAAE,KAAK,EAAA;IAC5D,MAAM,IAAI,GAAG,eAAe,CAAC,UAAU,EAAE,YAAY,CAAC;IACtD,MAAM,GAAG,GAAG,CAAC,KAAK,EAAE,UAAU,CAAC,QAAQ,CAAC;AACxC,IAAA,IAAI,IAAI,KAAK,aAAa,IAAI,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,SAAS,EAAE;AAC5D,QAAA,MAAM,UAAU,GAAQ,CAAC,MAAM,CAAC;AAChC,QAAA,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;AACtB,YAAA,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;QAClD;QAEA,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;AACtD,QAAA,OAAO,UAAU;IACrB;AAAO,SAAA,IAAI,IAAI,KAAK,aAAa,EAAE;AAC/B,QAAA,MAAM,UAAU,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC;AACjC,QAAA,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;AACtB,YAAA,cAAc,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC;QACvD;QACA,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;AACtD,QAAA,OAAO,UAAU;IACrB;AAAO,SAAA,IAAI,IAAI,KAAK,UAAU,EAAE;QAC5B,MAAM,UAAU,GAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;AAC5C,QAAA,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;AACtB,YAAA,cAAc,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC;QACtD;QACA,wBAAwB,CAAC,UAAU,CAAC;QACpC,OAAO,UAAU,CAAC,OAAO,KAAK,SAAS,GAAG,UAAU,GAAG;YACnD,MAAM;YACN,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE,QAAQ,CAAC;YACjC,UAAU;AACV,YAAA,cAAc,CAAC,UAAU,CAAC,OAAO;SACpC;IACL;AAAO,SAAA,IAAI,IAAI,KAAK,aAAa,EAAE;AAC/B,QAAA,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,KAAK,SAAS,GAAG,UAAU,CAAC,IAAI,GAAG,CAAC;AAChE,QAAA,MAAM,UAAU,GAAG;YACf,sBAAsB,CAAC,UAAU,CAAC;AAClC,YAAA,IAAI,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,aAAa,EAAE,IAAI,CAAC;YAC/C,CAAC,QAAQ,EAAE,GAAG;SACjB;AAED,QAAA,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;AACtB,YAAA,cAAc,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC;QACvD;QACA,OAAO,UAAU,CAAC,OAAO,KAAK,SAAS,GAAG,UAAU,GAAG;YACnD,MAAM;YACN,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE,QAAQ,CAAC;YACjC,UAAU;AACV,YAAA,cAAc,CAAC,UAAU,CAAC,OAAO;SACpC;IACL;SAAO;AACH,QAAA,MAAM,IAAI,KAAK,CAAC,kCAAkC,IAAI,CAAA,CAAE,CAAC;IAC7D;AACJ;AAEA,SAAS,mBAAmB,CAAC,UAAU,EAAE,YAAY,EAAE,KAAK,EAAE,KAAK,GAAG,CAAC,MAAM,CAAC,EAAA;IAC1E,MAAM,IAAI,GAAG,eAAe,CAAC,UAAU,EAAE,YAAY,CAAC;AACtD,IAAA,IAAI,UAAU;IACd,IAAI,MAAM,GAAG,KAAK;AAClB,IAAA,IAAI,IAAI,KAAK,UAAU,EAAE;AACrB,QAAA,UAAU,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC;QAC5B,MAAM,GAAG,IAAI;IACjB;AAAO,SAAA,IAAI,IAAI,KAAK,aAAa,EAAE;AAC/B,QAAA,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,KAAK,SAAS,GAAG,UAAU,CAAC,IAAI,GAAG,CAAC;QAChE,UAAU,GAAG,CAAC,sBAAsB,CAAC,UAAU,CAAC,EAAE,IAAI,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,aAAa,EAAE,IAAI,CAAC,EAAE,KAAK,CAAC;IAE7G;SAAO;AACH,QAAA,MAAM,IAAI,KAAK,CAAC,+BAA+B,IAAI,CAAA,CAAA,CAAG,CAAC;IAC3D;AAEA,IAAA,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;AACtB,QAAA,cAAc,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC;IACxD;IAEA,wBAAwB,CAAC,UAAU,CAAC;AAEpC,IAAA,OAAO,UAAU;AACrB;AAEA,SAAS,wBAAwB,CAAC,UAAU,EAAA;;AAExC,IAAA,IAAI,UAAU,CAAC,CAAC,CAAC,KAAK,MAAM,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE;AACrD,QAAA,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;QAClB,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IAClC;AACJ;AAEA,SAAS,cAAc,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAA;;;AAGhD,IAAA,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,KAAK,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE;QACvD;IACJ;;IAEA,IAAI,EAAE,MAAM,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,EAAE;AACjC,QAAA,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;IACrB;AACA,IAAA,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC;AACtB;AAEA,SAAS,eAAe,CAAC,UAAU,EAAE,YAAY,EAAA;AAC7C,IAAA,IAAI,UAAU,CAAC,IAAI,EAAE;QACjB,OAAO,UAAU,CAAC,IAAI;IAC1B;SAAO;AACH,QAAA,OAAQ,YAAY,CAAC,UAAkB,CAAC,YAAY,GAAG,aAAa,GAAG,UAAU;IACrF;AACJ;AAEA;AACM,SAAU,kBAAkB,CAAC,CAAS,EAAA;AACxC,IAAA,MAAM,MAAM,GAAQ,CAAC,QAAQ,CAAC;IAC9B,MAAM,EAAE,GAAG,aAAa;IACxB,IAAI,GAAG,GAAG,CAAC;IACX,KAAK,IAAI,KAAK,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;AAC7D,QAAA,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,CAAC,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;AAC5D,QAAA,GAAG,GAAG,EAAE,CAAC,SAAS;AAClB,QAAA,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;AAAE,YAAA,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;AAC5C,QAAA,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAClC;AAEA,IAAA,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;AACrB,QAAA,OAAO,CAAC;IACZ;AAEA,IAAA,IAAI,GAAG,GAAG,CAAC,CAAC,MAAM,EAAE;QAChB,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC7B;AAAO,SAAA,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;QAC5B,OAAO,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;IACnC;AAEA,IAAA,OAAO,MAAM;AACjB;;AC5PA,SAAS,oBAAoB,CAAC,YAAoB,EAAA;AAC9C,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAGC,MAAS,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC9C,QAAA,KAAK,MAAM,GAAG,IAAIA,MAAS,CAACA,MAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE;YAC9C,IAAI,GAAG,KAAK,YAAY;AAAE,gBAAA,OAAOA,MAAS,CAACA,MAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;QACxE;IACJ;AACA,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAGA,MAAS,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC7C,QAAA,KAAK,MAAM,GAAG,IAAIA,MAAS,CAACA,MAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;YAC7C,IAAI,GAAG,KAAK,YAAY;AAAE,gBAAA,OAAOA,MAAS,CAACA,MAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;QACvE;IACJ;AAEA,IAAA,OAAO,IAAI;AACf;AAEM,SAAU,UAAU,CAAC,KAAyB,EAAE,QAA0C,EAAA;AAC5F,IAAA,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,OAAO,EAAE;QAC3B,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAC9B;AACJ;AAEM,SAAU,SAAS,CAAC,KAAyB,EAAE,QAAyC,EAAA;AAC1F,IAAA,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,MAAM,EAAE;QAC9B,QAAQ,CAAC,KAAK,CAAC;IACnB;AACJ;SAcgB,YAAY,CACxB,KAAyB,EACzB,OAGC,EACD,QAA0B,EAAA;AAE1B,IAAA,SAAS,KAAK,CAAC,KAAyB,EAAE,YAAgC,EAAA;AACtE,QAAA,MAAM,UAAU,GAAG,KAAK,CAAC,YAAY,CAAC;AACtC,QAAA,IAAI,CAAC,UAAU;YAAE;QACjB,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,KAAI;AACpC,YAAA,QAAQ,CAAC;gBACL,IAAI,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,YAAY,EAAE,GAAG,CAAC;gBACnC,GAAG;AACH,gBAAA,KAAK,EAAE,UAAU,CAAC,GAAG,CAAC;AACtB,gBAAA,SAAS,EAAE,oBAAoB,CAAC,GAAG,CAAC;AACpC,gBAAA,GAAG,CAAC,CAAC,EAAA;AACD,oBAAA,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC;gBACvB;AACH,aAAA,CAAC;AACN,QAAA,CAAC,CAAC;IACN;AAEA,IAAA,SAAS,CAAC,KAAK,EAAE,CAAC,KAAK,KAAI;AACvB,QAAA,IAAI,OAAO,CAAC,KAAK,EAAE;AACf,YAAA,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC;QACzB;AACA,QAAA,IAAI,OAAO,CAAC,MAAM,EAAE;AAChB,YAAA,KAAK,CAAC,KAAK,EAAE,QAAQ,CAAC;QAC1B;AACJ,IAAA,CAAC,CAAC;AACN;;AC7EA,SAASC,WAAS,CAAC,GAAQ,EAAA;AACvB,IAAA,MAAM,IAAI,GAAG,OAAO,GAAG;AACvB,IAAA,IAAI,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,QAAQ,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,IAAI;AACjG,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC;AAE9B,IAAA,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;QACpB,IAAI,GAAG,GAAG,GAAG;AACb,QAAA,KAAK,MAAM,GAAG,IAAI,GAAG,EAAE;AACnB,YAAA,GAAG,IAAI,CAAA,EAAGA,WAAS,CAAC,GAAG,CAAC,GAAG;QAC/B;QACA,OAAO,CAAA,EAAG,GAAG,CAAA,CAAA,CAAG;IACpB;IAEA,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE;IAEpC,IAAI,GAAG,GAAG,GAAG;AACb,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QAClC,GAAG,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAIA,WAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA,CAAA,CAAG;IACnE;IACA,OAAO,CAAA,EAAG,GAAG,CAAA,CAAA,CAAG;AACpB;AAEA,SAAS,MAAM,CAAC,KAAyB,EAAA;IACrC,IAAI,GAAG,GAAG,EAAE;AACZ,IAAA,KAAK,MAAM,CAAC,IAAI,aAAa,EAAE;QAC3B,GAAG,IAAI,CAAA,CAAA,EAAIA,WAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA,CAAE;IACpC;AACA,IAAA,OAAO,GAAG;AACd;AAEA;;;;;;;;;;;;;AAaG;AACG,SAAU,aAAa,CAAC,MAA4B,EAAE,UAAmC,EAAA;IAC3F,MAAM,MAAM,GAAyC,EAAE;AAEvD,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QAEpC,MAAM,CAAC,GAAW,CAAC,UAAU,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;;AAE/E,QAAA,IAAI,UAAU;YACV,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC;AAEhC,QAAA,IAAI,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC;QACrB,IAAI,CAAC,KAAK,EAAE;AACR,YAAA,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE;QAC1B;QACA,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACzB;IAEA,MAAM,MAAM,GAA2B,EAAE;AAEzC,IAAA,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE;QACpB,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAC1B;AAEA,IAAA,OAAO,MAAM;AACjB;;SCrEgB,UAAU,GAAA;IACtB,MAAM,KAAK,GAAG,EAAE;AAEhB,IAAA,MAAM,OAAO,GAAGC,MAAM,CAAC,UAAU,CAAC;IAClC,KAAK,MAAM,QAAQ,IAAIA,MAAM,CAAC,OAAO,CAAC,EAAE;QACpC,MAAM,aAAa,GAAGA,MAAM,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC;AAE/C,QAAA,IAAI,aAAa,CAAC,QAAQ,EAAE;YACxB,IAAI,KAAK,GAAG,IAAI;AAChB,YAAA,IAAI,QAAQ,KAAK,SAAS,EAAE;gBACxB,KAAK,GAAG,OAAO;YACnB;iBAAO;AACH,gBAAA,IAAI,aAAa,CAAC,IAAI,KAAK,OAAO,EAAE;oBAChC,KAAK,GAAG,EAAE;gBACd;qBAAO;oBACH,KAAK,GAAG,EAAE;gBACd;YACJ;AAEA,YAAA,IAAI,KAAK,IAAI,IAAI,EAAE;AACf,gBAAA,KAAK,CAAC,QAAQ,CAAC,GAAG,KAAK;YAC3B;QACJ;IACJ;AAEA,IAAA,OAAO,KAA2B;AACtC;;AC1BM,SAAU,iBAAiB,CAAC,OAAO,EAAA;AACrC,IAAA,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG;AACvB,IAAA,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK;IAE/B,IAAI,SAAS,EAAE;QACX,OAAO,CAAC,IAAI,eAAe,CAAC,GAAG,EAAE,SAAS,EAAE,yCAAyC,CAAC,CAAC;IAC3F;SAAO;AACH,QAAA,OAAO,EAAE;IACb;AACJ;;ACZA;AACM,SAAU,QAAQ,CAAC,KAAc,EAAA;AACnC,IAAA,IAAI,KAAK,YAAY,MAAM,IAAI,KAAK,YAAY,MAAM,IAAI,KAAK,YAAY,OAAO,EAAE;AAChF,QAAA,OAAO,KAAK,CAAC,OAAO,EAAE;IAC1B;SAAO;AACH,QAAA,OAAO,KAAK;IAChB;AACJ;AAEM,SAAU,YAAY,CAAC,KAAc,EAAA;AACvC,IAAA,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AACtB,QAAA,OAAO,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC;IAClC;AAAO,SAAA,IAAI,KAAK,YAAY,MAAM,IAAI,EAAE,KAAK,YAAY,MAAM,IAAI,KAAK,YAAY,MAAM,IAAI,KAAK,YAAY,OAAO,CAAC,EAAE;QACrH,MAAM,cAAc,GAA6B,EAAE;AACnD,QAAA,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE;YACrB,cAAc,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAClD;AACA,QAAA,OAAO,cAAc;IACzB;AAEA,IAAA,OAAO,QAAQ,CAAC,KAAK,CAAC;AAC1B;;AChBM,SAAU,cAAc,CAAC,OAAO,EAAA;AAClC,IAAA,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG;AACvB,IAAA,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK;AAC5B,IAAA,MAAM,YAAY,GAAG,OAAO,CAAC,SAAS,IAAI,EAAE;AAC5C,IAAA,MAAM,iBAAiB,GAAG,OAAO,CAAC,uBAAuB,IAAI,EAAE;AAC/D,IAAA,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK;AAC3B,IAAA,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS;AACnC,IAAA,MAAM,YAAY,GAAG,OAAO,CAAC,YAAY;IACzC,IAAI,MAAM,GAAsB,EAAE;AAElC,IAAA,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC;AAC5B,IAAA,IAAI,IAAI,KAAK,QAAQ,EAAE;AACnB,QAAA,OAAO,CAAC,IAAI,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,CAAA,iBAAA,EAAoB,IAAI,CAAA,MAAA,CAAQ,CAAC,CAAC;IAC/E;AAEA,IAAA,KAAK,MAAM,SAAS,IAAI,MAAM,EAAE;AAC5B,QAAA,MAAM,cAAc,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;;AAE/C,QAAA,MAAM,WAAW,GAAG,MAAM,CAAC,YAAY,EAAE,cAAc,CAAC,IAAI,YAAY,CAAC,GAAG,CAAC;AAE7E,QAAA,IAAI,eAAe;AACnB,QAAA,IAAI,MAAM,CAAC,iBAAiB,EAAE,cAAc,CAAC,EAAE;AAC3C,YAAA,eAAe,GAAG,iBAAiB,CAAC,cAAc,CAAC;QACvD;AAAO,aAAA,IAAI,MAAM,CAAC,YAAY,EAAE,cAAc,CAAC,EAAE;YAC7C,eAAe,GAAG,YAAY;QAClC;AAAO,aAAA,IAAI,iBAAiB,CAAC,GAAG,CAAC,EAAE;AAC/B,YAAA,eAAe,GAAG,iBAAiB,CAAC,GAAG,CAAC;QAC5C;AAAO,aAAA,IAAI,YAAY,CAAC,GAAG,CAAC,EAAE;YAC1B,eAAe,GAAG,YAAY;QAClC;aAAO;AACH,YAAA,MAAM,CAAC,IAAI,CAAC,IAAI,eAAe,CAAC,GAAG,EAAE,MAAM,CAAC,SAAS,CAAC,EAAE,CAAA,kBAAA,EAAqB,SAAS,CAAA,CAAA,CAAG,CAAC,CAAC;YAC3F;QACJ;AAEA,QAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC;AACnC,YAAA,GAAG,EAAE,CAAC,GAAG,GAAG,CAAA,EAAG,GAAG,CAAA,CAAA,CAAG,GAAG,GAAG,IAAI,SAAS;AACxC,YAAA,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC;AACxB,YAAA,SAAS,EAAE,WAAW;YACtB,KAAK;YACL,SAAS;YACT,MAAM;YACN,SAAS;YACT,YAAY;SACf,EAAE,MAAM,CAAC,CAAC;IACf;AAEA,IAAA,KAAK,MAAM,cAAc,IAAI,YAAY,EAAE;;AAEvC,QAAA,IAAI,iBAAiB,CAAC,cAAc,CAAC,EAAE;YACnC;QACJ;QAEA,IAAI,YAAY,CAAC,cAAc,CAAC,CAAC,QAAQ,IAAI,YAAY,CAAC,cAAc,CAAC,CAAC,SAAS,CAAC,KAAK,SAAS,IAAI,MAAM,CAAC,cAAc,CAAC,KAAK,SAAS,EAAE;AACxI,YAAA,MAAM,CAAC,IAAI,CAAC,IAAI,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,CAAA,2BAAA,EAA8B,cAAc,CAAA,CAAA,CAAG,CAAC,CAAC;QAClG;IACJ;AAEA,IAAA,OAAO,MAAM;AACjB;;AC5DM,SAAU,aAAa,CAAC,OAAO,EAAA;AACjC,IAAA,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK;AAC3B,IAAA,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS;AACnC,IAAA,MAAM,YAAY,GAAG,OAAO,CAAC,YAAY;AACzC,IAAA,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK;AAC3B,IAAA,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS;AACnC,IAAA,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG;AACvB,IAAA,MAAM,oBAAoB,GAAG,OAAO,CAAC,qBAAqB,IAAI,YAAY;AAE1E,IAAA,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,OAAO,EAAE;AAC5B,QAAA,OAAO,CAAC,IAAI,eAAe,CAAC,GAAG,EAAE,KAAK,EAAE,CAAA,gBAAA,EAAmB,OAAO,CAAC,KAAK,CAAC,CAAA,MAAA,CAAQ,CAAC,CAAC;IACvF;AAEA,IAAA,IAAI,SAAS,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC,MAAM,EAAE;AACvD,QAAA,OAAO,CAAC,IAAI,eAAe,CAAC,GAAG,EAAE,KAAK,EAAE,CAAA,aAAA,EAAgB,SAAS,CAAC,MAAM,qBAAqB,KAAK,CAAC,MAAM,CAAA,MAAA,CAAQ,CAAC,CAAC;IACvH;AAEA,IAAA,IAAI,SAAS,CAAC,YAAY,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC,YAAY,CAAC,EAAE;QACnE,OAAO,CAAC,IAAI,eAAe,CAAC,GAAG,EAAE,KAAK,EAAE,CAAA,sBAAA,EAAyB,SAAS,CAAC,YAAY,CAAC,qBAAqB,KAAK,CAAC,MAAM,CAAA,MAAA,CAAQ,CAAC,CAAC;IACvI;AAEA,IAAA,IAAI,gBAAgB,GAAG;QACnB,MAAM,EAAE,SAAS,CAAC,KAAK;QACvB,QAAQ,EAAE,SAAS,CAAC;KACvB;AAED,IAAA,IAAI,SAAS,CAAC,QAAQ,GAAG,CAAC,EAAE;AACxB,QAAA,gBAAgB,CAAC,UAAU,CAAC,GAAG,SAAS,CAAC,QAAQ;IACrD;IAEA,IAAI,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,QAAQ,EAAE;AACvC,QAAA,gBAAgB,GAAG,SAAS,CAAC,KAAK;IACtC;IAEA,IAAI,MAAM,GAAG,EAAE;AACf,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACnC,QAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,oBAAoB,CAAC;YACxC,KAAK;AACL,YAAA,UAAU,EAAE,CAAC;AACb,YAAA,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;AACf,YAAA,SAAS,EAAE,gBAAgB;YAC3B,YAAY,EAAE,OAAO,CAAC,YAAY;YAClC,KAAK;YACL,SAAS;AACT,YAAA,GAAG,EAAE,CAAA,EAAG,GAAG,CAAA,CAAA,EAAI,CAAC,CAAA,CAAA;AACnB,SAAA,CAAC,CAAC;IACP;AACA,IAAA,OAAO,MAAM;AACjB;;AC/CM,SAAU,cAAc,CAAC,OAAO,EAAA;AAClC,IAAA,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG;AACvB,IAAA,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK;AAC3B,IAAA,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS;AACnC,IAAA,IAAI,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC;IAEzB,IAAI,IAAI,KAAK,QAAQ,IAAI,KAAK,KAAK,KAAK,EAAE;QACtC,IAAI,GAAG,KAAK;IAChB;AAEA,IAAA,IAAI,IAAI,KAAK,QAAQ,EAAE;AACnB,QAAA,OAAO,CAAC,IAAI,eAAe,CAAC,GAAG,EAAE,KAAK,EAAE,CAAA,iBAAA,EAAoB,IAAI,CAAA,MAAA,CAAQ,CAAC,CAAC;IAC9E;IAEA,IAAI,SAAS,IAAI,SAAS,IAAI,KAAK,GAAG,SAAS,CAAC,OAAO,EAAE;AACrD,QAAA,OAAO,CAAC,IAAI,eAAe,CAAC,GAAG,EAAE,KAAK,EAAE,CAAA,EAAG,KAAK,mCAAmC,SAAS,CAAC,OAAO,CAAA,CAAE,CAAC,CAAC;IAC5G;IAEA,IAAI,SAAS,IAAI,SAAS,IAAI,KAAK,GAAG,SAAS,CAAC,OAAO,EAAE;AACrD,QAAA,OAAO,CAAC,IAAI,eAAe,CAAC,GAAG,EAAE,KAAK,EAAE,CAAA,EAAG,KAAK,sCAAsC,SAAS,CAAC,OAAO,CAAA,CAAE,CAAC,CAAC;IAC/G;AAEA,IAAA,OAAO,EAAE;AACb;;ACbM,SAAU,gBAAgB,CAAC,OAAO,EAAA;AACpC,IAAA,MAAM,iBAAiB,GAAG,OAAO,CAAC,SAAS;IAC3C,MAAM,YAAY,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC;AACjD,IAAA,IAAI,WAAW;IACf,IAAI,gBAAgB,GAAG,EAAE;AACzB,IAAA,IAAI,uBAAuB;AAC3B,IAAA,IAAI,sBAAsB;AAE1B,IAAA,MAAM,cAAc,GAAG,YAAY,KAAK,aAAa,IAAI,OAAO,CAAC,KAAK,CAAC,QAAQ,KAAK,SAAS;AAC7F,IAAA,MAAM,kBAAkB,GAAG,CAAC,cAAc;IAC1C,MAAM,yBAAyB,GAC3B,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,OAAO;QACxC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,OAAO;AAC3C,QAAA,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,QAAQ;IAEnD,MAAM,MAAM,GAAG,cAAc,CAAC;QAC1B,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,KAAK,EAAE,OAAO,CAAC,KAAK;AACpB,QAAA,SAAS,EAAE,OAAO,CAAC,SAAS,CAAC,QAAQ;QACrC,YAAY,EAAE,OAAO,CAAC,YAAY;QAClC,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,SAAS,EAAE,OAAO,CAAC,SAAS;AAC5B,QAAA,uBAAuB,EAAE;AACrB,YAAA,KAAK,EAAE,qBAAqB;AAC5B,YAAA,OAAO,EAAE;AACZ;AACJ,KAAA,CAAC;AAEF,IAAA,IAAI,YAAY,KAAK,UAAU,IAAI,cAAc,EAAE;AAC/C,QAAA,MAAM,CAAC,IAAI,CAAC,IAAI,eAAe,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,KAAK,EAAE,sCAAsC,CAAC,CAAC;IACxG;IAEA,IAAI,YAAY,KAAK,UAAU,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE;AACrD,QAAA,MAAM,CAAC,IAAI,CAAC,IAAI,eAAe,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,KAAK,EAAE,mCAAmC,CAAC,CAAC;IACrG;AAEA,IAAA,IAAI,YAAY,KAAK,aAAa,IAAI,OAAO,CAAC,SAAS,CAAC,UAAU,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE;AAC7G,QAAA,MAAM,CAAC,IAAI,CAAC,IAAI,eAAe,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,KAAK,EAAE,qCAAqC,CAAC,CAAC;IACvG;IAEA,IAAI,OAAO,CAAC,SAAS,CAAC,QAAQ,IAAI,CAAC,EAAE;QACjC,IAAI,kBAAkB,IAAI,CAAC,0BAA0B,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE;AACtE,YAAA,MAAM,CAAC,IAAI,CAAC,IAAI,eAAe,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,KAAK,EAAE,kCAAkC,CAAC,CAAC;QACpG;aAAO,IAAI,cAAc,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE;AACrE,YAAA,MAAM,CAAC,IAAI,CAAC,IAAI,eAAe,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,KAAK,EAAE,8BAA8B,CAAC,CAAC;QAChG;IACJ;AAEA,IAAA,IAAI,CAAC,YAAY,KAAK,aAAa,IAAI,yBAAyB,KAAK,OAAO,CAAC,KAAK,CAAC,QAAQ,KAAK,SAAS,EAAE;AACvG,QAAA,MAAM,CAAC,IAAI,CAAC,IAAI,eAAe,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,KAAK,EAAE,iCAAiC,CAAC,CAAC;IACnG;AAEA,IAAA,OAAO,MAAM;IAEb,SAAS,qBAAqB,CAAC,OAAO,EAAA;AAClC,QAAA,IAAI,YAAY,KAAK,UAAU,EAAE;AAC7B,YAAA,OAAO,CAAC,IAAI,eAAe,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,KAAK,EAAE,mDAAmD,CAAC,CAAC;QACjH;QAEA,IAAI,MAAM,GAAG,EAAE;AACf,QAAA,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK;AAE3B,QAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC;YACjC,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,KAAK;YACL,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,YAAY,EAAE,OAAO,CAAC,YAAY;YAClC,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,SAAS,EAAE,OAAO,CAAC,SAAS;AAC5B,YAAA,qBAAqB,EAAE;AAC1B,SAAA,CAAC,CAAC;AAEH,QAAA,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,OAAO,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;AAClD,YAAA,MAAM,CAAC,IAAI,CAAC,IAAI,eAAe,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE,mCAAmC,CAAC,CAAC;QAC7F;AAEA,QAAA,OAAO,MAAM;IACjB;IAEA,SAAS,oBAAoB,CAAC,OAAO,EAAA;QACjC,IAAI,MAAM,GAAG,EAAE;AACf,QAAA,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK;AAC3B,QAAA,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG;AAEvB,QAAA,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,OAAO,EAAE;AAC5B,YAAA,OAAO,CAAC,IAAI,eAAe,CAAC,GAAG,EAAE,KAAK,EAAE,CAAA,gBAAA,EAAmB,OAAO,CAAC,KAAK,CAAC,CAAA,MAAA,CAAQ,CAAC,CAAC;QACvF;AAEA,QAAA,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;AACpB,YAAA,OAAO,CAAC,IAAI,eAAe,CAAC,GAAG,EAAE,KAAK,EAAE,CAAA,gCAAA,EAAmC,KAAK,CAAC,MAAM,CAAA,MAAA,CAAQ,CAAC,CAAC;QACrG;QAEA,IAAI,yBAAyB,EAAE;YAC3B,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE;AAChC,gBAAA,OAAO,CAAC,IAAI,eAAe,CAAC,GAAG,EAAE,KAAK,EAAE,CAAA,iBAAA,EAAoB,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA,MAAA,CAAQ,CAAC,CAAC;YAC3F;YACA,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,EAAE;gBAC7B,OAAO,CAAC,IAAI,eAAe,CAAC,GAAG,EAAE,KAAK,EAAE,gCAAgC,CAAC,CAAC;YAC9E;YACA,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,SAAS,EAAE;gBAC9B,OAAO,CAAC,IAAI,eAAe,CAAC,GAAG,EAAE,KAAK,EAAE,iCAAiC,CAAC,CAAC;YAC/E;AACA,YAAA,IAAI,sBAAsB,IAAI,sBAAsB,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE;AAC5E,gBAAA,OAAO,CAAC,IAAI,eAAe,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,iDAAiD,CAAC,CAAC;YACvG;AACA,YAAA,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,sBAAsB,EAAE;gBACpD,sBAAsB,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;gBAChD,uBAAuB,GAAG,SAAS;gBACnC,gBAAgB,GAAG,EAAE;YACzB;AACA,YAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC;gBAClC,GAAG,EAAE,CAAA,EAAG,GAAG,CAAA,GAAA,CAAK;AAChB,gBAAA,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;AACf,gBAAA,SAAS,EAAE,EAAC,IAAI,EAAE,EAAE,EAAC;gBACrB,YAAY,EAAE,OAAO,CAAC,YAAY;gBAClC,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,SAAS,EAAE,OAAO,CAAC,SAAS;gBAC5B,uBAAuB,EAAE,EAAC,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,uBAAuB;AACjF,aAAA,CAAC,CAAC;QACP;aAAO;AACH,YAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,uBAAuB,CAAC;gBAC3C,GAAG,EAAE,CAAA,EAAG,GAAG,CAAA,GAAA,CAAK;AAChB,gBAAA,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;AACf,gBACA,YAAY,EAAE,OAAO,CAAC,YAAY;gBAClC,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,SAAS,EAAE,OAAO,CAAC;aACtB,EAAE,KAAK,CAAC,CAAC;QACd;QAEA,IAAI,YAAY,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;YACtC,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,eAAe,CAAC,CAAA,EAAG,GAAG,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,gDAAgD,CAAC,CAAC,CAAC;QACxH;AAEA,QAAA,OAAO,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC;YACtC,GAAG,EAAE,CAAA,EAAG,GAAG,CAAA,GAAA,CAAK;AAChB,YAAA,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;AACf,YAAA,SAAS,EAAE,iBAAiB;YAC5B,YAAY,EAAE,OAAO,CAAC,YAAY;YAClC,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,SAAS,EAAE,OAAO,CAAC;AACtB,SAAA,CAAC,CAAC;IACP;AAEA,IAAA,SAAS,uBAAuB,CAAC,OAAO,EAAE,IAAI,EAAA;QAC1C,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC;QACnC,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC;AAErC,QAAA,MAAM,WAAW,GAAG,OAAO,CAAC,KAAK,KAAK,IAAI,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI;QAEjE,IAAI,CAAC,WAAW,EAAE;YACd,WAAW,GAAG,IAAI;QACtB;AAAO,aAAA,IAAI,IAAI,KAAK,WAAW,EAAE;AAC7B,YAAA,OAAO,CAAC,IAAI,eAAe,CAAC,OAAO,CAAC,GAAG,EAAE,WAAW,EAAE,GAAG,IAAI,CAAA,uDAAA,EAA0D,WAAW,CAAA,CAAE,CAAC,CAAC;QAC1I;AAEA,QAAA,IAAI,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,SAAS,EAAE;AAC9D,YAAA,OAAO,CAAC,IAAI,eAAe,CAAC,OAAO,CAAC,GAAG,EAAE,WAAW,EAAE,wDAAwD,CAAC,CAAC;QACpH;QAEA,IAAI,IAAI,KAAK,QAAQ,IAAI,YAAY,KAAK,aAAa,EAAE;AACrD,YAAA,IAAI,OAAO,GAAG,CAAA,iBAAA,EAAoB,IAAI,QAAQ;YAC9C,IAAI,0BAA0B,CAAC,iBAAiB,CAAC,IAAI,YAAY,KAAK,SAAS,EAAE;gBAC7E,OAAO,IAAI,mFAAmF;YAClG;AACA,YAAA,OAAO,CAAC,IAAI,eAAe,CAAC,OAAO,CAAC,GAAG,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;QACnE;QAEA,IAAI,YAAY,KAAK,aAAa,IAAI,IAAI,KAAK,QAAQ,KAAK,CAAC,QAAQ,CAAC,KAAe,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,KAAe,CAAC,KAAK,KAAK,CAAC,EAAE;AAC9H,YAAA,OAAO,CAAC,IAAI,eAAe,CAAC,OAAO,CAAC,GAAG,EAAE,WAAW,EAAE,CAAA,wBAAA,EAA2B,KAAK,CAAA,CAAE,CAAC,CAAC;QAC9F;AAEA,QAAA,IAAI,YAAY,KAAK,aAAa,IAAI,IAAI,KAAK,QAAQ,IAAI,uBAAuB,KAAK,SAAS,IAAI,KAAK,GAAG,uBAAuB,EAAE;AACjI,YAAA,OAAO,CAAC,IAAI,eAAe,CAAC,OAAO,CAAC,GAAG,EAAE,WAAW,EAAE,mDAAmD,CAAC,CAAC;QAC/G;aAAO;YACH,uBAAuB,GAAG,KAAK;QACnC;QAEA,IAAI,YAAY,KAAK,aAAa,IAAK,KAAa,IAAI,gBAAgB,EAAE;AACtE,YAAA,OAAO,CAAC,IAAI,eAAe,CAAC,OAAO,CAAC,GAAG,EAAE,WAAW,EAAE,mCAAmC,CAAC,CAAC;QAC/F;aAAO;AACH,YAAA,gBAAgB,CAAC,KAAY,CAAC,GAAG,IAAI;QACzC;AAEA,QAAA,OAAO,EAAE;IACb;IAEA,SAAS,uBAAuB,CAAC,OAAO,EAAA;QACpC,OAAO,OAAO,CAAC,YAAY,CAAC;YACxB,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,KAAK,EAAE,OAAO,CAAC,KAAK;AACpB,YAAA,SAAS,EAAE,iBAAiB;YAC5B,YAAY,EAAE,OAAO,CAAC,YAAY;YAClC,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,SAAS,EAAE,OAAO,CAAC;AACtB,SAAA,CAAC;IACN;AACJ;;ACxMM,SAAU,kBAAkB,CAAC,OAAY,EAAA;AAC3C,IAAA,MAAM,UAAU,GAAG,CAAC,OAAO,CAAC,iBAAiB,KAAK,UAAU,GAAG,wBAAwB,GAAG,gBAAgB,EAAE,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC;AAC3J,IAAA,IAAI,UAAU,CAAC,MAAM,KAAK,OAAO,EAAE;QAC/B,OAAO,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,KAAI;YAClC,OAAO,IAAI,eAAe,CAAC,CAAA,EAAG,OAAO,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,CAAA,CAAE,EAAE,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC;AAC1F,QAAA,CAAC,CAAC;IACN;AAEA,IAAA,MAAM,aAAa,GAAgB,UAAU,CAAC,KAAa,CAAC,UAAU,IAAK,UAAU,CAAC,KAAa,CAAC,gBAAgB,CAAC,UAAU;AAE/H,IAAA,IAAI,OAAO,CAAC,iBAAiB,KAAK,UAAU,KAAK,OAAO,CAAC,WAAW,KAAK,WAAW,CAAC;AACjF,QAAA,CAAC,aAAa,CAAC,aAAa,EAAE,EAAE;AAChC,QAAA,OAAO,CAAC,IAAI,eAAe,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,KAAK,EAAE,gCAAgC,OAAO,CAAC,WAAW,CAAA,qEAAA,CAAuE,CAAC,CAAC;IACxL;IAEA,IAAI,OAAO,CAAC,iBAAiB,KAAK,UAAU,IAAI,OAAO,CAAC,YAAY,KAAK,QAAQ;AAC7E,SAAC,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC,EAAE;AACnC,QAAA,OAAO,CAAC,IAAI,eAAe,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,KAAK,EAAE,4EAA4E,CAAC,CAAC;IAC1I;AAEA,IAAA,IAAI,OAAO,CAAC,iBAAiB,KAAK,QAAQ,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,EAAE;AAC3E,QAAA,OAAO,CAAC,IAAI,eAAe,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,KAAK,EAAE,kEAAkE,CAAC,CAAC;IAChI;AAEA,IAAA,IAAI,OAAO,CAAC,iBAAiB,IAAI,OAAO,CAAC,iBAAiB,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;AACjF,QAAA,IAAI,CAAC,wBAAwB,CAAC,aAAa,EAAE,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC,EAAE;AACrE,YAAA,OAAO,CAAC,IAAI,eAAe,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,KAAK,EAAE,mFAAmF,CAAC,CAAC;QACjJ;AACA,QAAA,IAAI,OAAO,CAAC,iBAAiB,KAAK,iBAAiB,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,EAAE;AACtF,YAAA,OAAO,CAAC,IAAI,eAAe,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,KAAK,EAAE,gGAAgG,CAAC,CAAC;QAC9J;IACJ;AAEA,IAAA,OAAO,EAAE;AACb;;ACzCM,SAAU,eAAe,CAAC,OAAO,EAAA;AACnC,IAAA,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK;AAC3B,IAAA,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG;AACvB,IAAA,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC;AAE3B,IAAA,IAAI,IAAI,KAAK,SAAS,EAAE;AACpB,QAAA,OAAO,CAAC,IAAI,eAAe,CAAC,GAAG,EAAE,KAAK,EAAE,CAAA,kBAAA,EAAqB,IAAI,CAAA,MAAA,CAAQ,CAAC,CAAC;IAC/E;AAEA,IAAA,OAAO,EAAE;AACb;;ACVM,SAAU,aAAa,CAAC,OAAO,EAAA;AACjC,IAAA,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG;AACvB,IAAA,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK;AAC3B,IAAA,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC;AAE3B,IAAA,IAAI,IAAI,KAAK,QAAQ,EAAE;AACnB,QAAA,OAAO,CAAC,IAAI,eAAe,CAAC,GAAG,EAAE,KAAK,EAAE,CAAA,gBAAA,EAAmB,IAAI,CAAA,MAAA,CAAQ,CAAC,CAAC;IAC7E;AAEA,IAAA,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE;AAC7B,QAAA,OAAO,CAAC,IAAI,eAAe,CAAC,GAAG,EAAE,KAAK,EAAE,CAAA,iBAAA,EAAoB,KAAK,CAAA,OAAA,CAAS,CAAC,CAAC;IAChF;AAEA,IAAA,OAAO,EAAE;AACb;;ACdM,SAAU,YAAY,CAAC,OAAO,EAAA;AAChC,IAAA,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG;AACvB,IAAA,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK;AAC3B,IAAA,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS;IACnC,MAAM,MAAM,GAAG,EAAE;IAEjB,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE;AACjC,QAAA,IAAI,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;AAClD,YAAA,MAAM,CAAC,IAAI,CAAC,IAAI,eAAe,CAAC,GAAG,EAAE,KAAK,EAAE,CAAA,iBAAA,EAAoB,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA,GAAA,EAAM,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA,MAAA,CAAQ,CAAC,CAAC;QACpI;IACJ;AAAO,SAAA;QACH,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAW,CAAC,KAAK,EAAE,EAAE;AACzE,YAAA,MAAM,CAAC,IAAI,CAAC,IAAI,eAAe,CAAC,GAAG,EAAE,KAAK,EAAE,CAAA,iBAAA,EAAoB,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA,GAAA,EAAM,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA,MAAA,CAAQ,CAAC,CAAC;QACjJ;IACJ;AACA,IAAA,OAAO,MAAM;AACjB;;ACXM,SAAU,cAAc,CAAC,OAAO,EAAA;IAClC,IAAI,kBAAkB,CAAC,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE;AACjD,QAAA,OAAO,kBAAkB,CAACC,QAAM,CAAC,EAAE,EAAE,OAAO,EAAE;AAC1C,YAAA,iBAAiB,EAAE,QAAQ;AAC3B,YAAA,SAAS,EAAE,EAAC,KAAK,EAAE,SAAS;AAC/B,SAAA,CAAC,CAAC;IACP;SAAO;AACH,QAAA,OAAO,2BAA2B,CAAC,OAAO,CAAC;IAC/C;AACJ;AAEA,SAAS,2BAA2B,CAAC,OAAO,EAAA;AACxC,IAAA,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK;AAC3B,IAAA,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG;AAEvB,IAAA,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,OAAO,EAAE;AAC5B,QAAA,OAAO,CAAC,IAAI,eAAe,CAAC,GAAG,EAAE,KAAK,EAAE,CAAA,gBAAA,EAAmB,OAAO,CAAC,KAAK,CAAC,CAAA,MAAA,CAAQ,CAAC,CAAC;IACvF;AAEA,IAAA,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS;AACnC,IAAA,IAAI,IAAI;IAER,IAAI,MAAM,GAAG,EAAE;AAEf,IAAA,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;QAClB,OAAO,CAAC,IAAI,eAAe,CAAC,GAAG,EAAE,KAAK,EAAE,2CAA2C,CAAC,CAAC;IACzF;AAEA,IAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC;QAChC,GAAG,EAAE,CAAA,EAAG,GAAG,CAAA,GAAA,CAAK;AAChB,QAAA,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;QACf,SAAS,EAAE,SAAS,CAAC,eAAe;QACpC,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,SAAS,EAAE,OAAO,CAAC;AACtB,KAAA,CAAC,CAAC;IAEH,QAAQ,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACtB,QAAA,KAAK,GAAG;AACR,QAAA,KAAK,IAAI;AACT,QAAA,KAAK,GAAG;AACR,QAAA,KAAK,IAAI;AACL,YAAA,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,OAAO,EAAE;AACrD,gBAAA,MAAM,CAAC,IAAI,CAAC,IAAI,eAAe,CAAC,GAAG,EAAE,KAAK,EAAE,CAAA,qCAAA,EAAwC,KAAK,CAAC,CAAC,CAAC,CAAA,CAAA,CAAG,CAAC,CAAC;YACrG;;AAEJ,QAAA,KAAK,IAAI;AACT,QAAA,KAAK,IAAI;AACL,YAAA,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;AACpB,gBAAA,MAAM,CAAC,IAAI,CAAC,IAAI,eAAe,CAAC,GAAG,EAAE,KAAK,EAAE,CAAA,2BAAA,EAA8B,KAAK,CAAC,CAAC,CAAC,CAAA,sBAAA,CAAwB,CAAC,CAAC;YAChH;;AAEJ,QAAA,KAAK,IAAI;AACT,QAAA,KAAK,KAAK;AACN,YAAA,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE;gBACnB,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACxB,gBAAA,IAAI,IAAI,KAAK,QAAQ,EAAE;oBACnB,MAAM,CAAC,IAAI,CAAC,IAAI,eAAe,CAAC,CAAA,EAAG,GAAG,CAAA,GAAA,CAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,CAAA,iBAAA,EAAoB,IAAI,CAAA,MAAA,CAAQ,CAAC,CAAC;gBAC7F;YACJ;AACA,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBACnC,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBACxB,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,OAAO,EAAE;AAChC,oBAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC;AAChC,wBAAA,GAAG,EAAE,CAAA,EAAG,GAAG,CAAA,CAAA,EAAI,CAAC,CAAA,CAAA,CAAG;AACnB,wBAAA,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;wBACf,SAAS,EAAE,SAAS,CAAC,aAAa;wBAClC,KAAK,EAAE,OAAO,CAAC,KAAK;wBACpB,SAAS,EAAE,OAAO,CAAC;AACtB,qBAAA,CAAC,CAAC;gBACP;AAAO,qBAAA,IAAI,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,SAAS,EAAE;oBACrE,MAAM,CAAC,IAAI,CAAC,IAAI,eAAe,CAAC,CAAA,EAAG,GAAG,CAAA,CAAA,EAAI,CAAC,CAAA,CAAA,CAAG,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,wCAAwC,IAAI,CAAA,MAAA,CAAQ,CAAC,CAAC;gBACpH;YACJ;YACA;AAEJ,QAAA,KAAK,KAAK;AACV,QAAA,KAAK,KAAK;AACV,QAAA,KAAK,MAAM;AACP,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACnC,gBAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,2BAA2B,CAAC;AAC/C,oBAAA,GAAG,EAAE,CAAA,EAAG,GAAG,CAAA,CAAA,EAAI,CAAC,CAAA,CAAA,CAAG;AACnB,oBAAA,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;oBACf,KAAK,EAAE,OAAO,CAAC,KAAK;oBACpB,SAAS,EAAE,OAAO,CAAC;AACtB,iBAAA,CAAC,CAAC;YACP;YACA;AAEJ,QAAA,KAAK,KAAK;AACV,QAAA,KAAK,MAAM;YACP,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACxB,YAAA,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;AACpB,gBAAA,MAAM,CAAC,IAAI,CAAC,IAAI,eAAe,CAAC,GAAG,EAAE,KAAK,EAAE,CAAA,kBAAA,EAAqB,KAAK,CAAC,CAAC,CAAC,CAAA,+BAAA,CAAiC,CAAC,CAAC;YAChH;AAAO,iBAAA,IAAI,IAAI,KAAK,QAAQ,EAAE;gBAC1B,MAAM,CAAC,IAAI,CAAC,IAAI,eAAe,CAAC,CAAA,EAAG,GAAG,CAAA,GAAA,CAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,CAAA,iBAAA,EAAoB,IAAI,CAAA,MAAA,CAAQ,CAAC,CAAC;YAC7F;YACA;;AAER,IAAA,OAAO,MAAM;AACjB;;ACrGM,SAAU,gBAAgB,CAAC,OAAO,EAAE,YAAY,EAAA;AAClD,IAAA,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG;AACvB,IAAA,MAAM,YAAY,GAAG,OAAO,CAAC,YAAY;AACzC,IAAA,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK;AAC3B,IAAA,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS;AACnC,IAAA,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK;AAC3B,IAAA,MAAM,WAAW,GAAG,OAAO,CAAC,SAAS;AACrC,IAAA,MAAM,SAAS,GAAG,SAAS,CAAC,CAAA,EAAG,YAAY,CAAA,CAAA,EAAI,OAAO,CAAC,SAAS,CAAA,CAAE,CAAC;AAEnE,IAAA,IAAI,CAAC,SAAS;AAAE,QAAA,OAAO,EAAE;IAEzB,MAAM,eAAe,GAAG,WAAW,CAAC,KAAK,CAAC,mBAAmB,CAAC;IAC9D,IAAI,YAAY,KAAK,OAAO,IAAI,eAAe,IAAI,SAAS,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE;AAC1H,QAAA,OAAO,YAAY,CAAC;YAChB,GAAG;YACH,KAAK;YACL,SAAS,EAAE,SAAS,CAAC,UAAU;YAC/B,KAAK;YACL;AACH,SAAA,CAAC;IACN;IAEA,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,SAAS,CAAC,WAAW,CAAC;IAC7D,IAAI,CAAC,SAAS,EAAE;AACZ,QAAA,OAAO,CAAC,IAAI,eAAe,CAAC,GAAG,EAAE,KAAK,EAAE,CAAA,kBAAA,EAAqB,WAAW,CAAA,CAAA,CAAG,CAAC,CAAC;IACjF;AAEA,IAAA,IAAI,UAAU;AACd,IAAA,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,QAAQ,IAAI,0BAA0B,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,KAAK,UAAU,GAAG,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE;QACvI,OAAO,CAAC,IAAI,eAAe,CACvB,GAAG,EAAE,KAAK,EACV,CAAA,CAAA,EAAI,WAAW,CAAA,yCAAA,CAA2C;AACtD,gBAAA,CAAA,+EAAA,EAAkF,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAA,KAAA,CAAO,CAAC,CAAC;IACpI;IAEA,MAAM,MAAM,GAAG,EAAE;AAEjB,IAAA,IAAI,OAAO,CAAC,SAAS,KAAK,QAAQ,EAAE;QAChC,IAAI,WAAW,KAAK,YAAY,IAAI,KAAK,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;AACxD,YAAA,MAAM,CAAC,IAAI,CAAC,IAAI,eAAe,CAAC,GAAG,EAAE,KAAK,EAAE,wDAAwD,CAAC,CAAC;QAC1G;QACA,IAAI,WAAW,KAAK,WAAW,IAAIT,YAAU,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,IAAI,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,UAAU,EAAE;AACvG,YAAA,MAAM,CAAC,IAAI,CAAC,IAAI,eAAe,CAAC,GAAG,EAAE,KAAK,EAAE,iDAAiD,CAAC,CAAC;QACnG;IACJ;AAEA,IAAA,OAAO,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC;QAC9B,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,KAAK;QACL,SAAS;QACT,KAAK;QACL,SAAS;AACT,QAAA,iBAAiB,EAAE,UAAU;QAC7B,YAAY;QACZ;AACH,KAAA,CAAC,CAAC;AACP;;AC5DM,SAAU,qBAAqB,CAAC,OAAO,EAAA;AACzC,IAAA,OAAO,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC;AAC7C;;ACFM,SAAU,sBAAsB,CAAC,OAAO,EAAA;AAC1C,IAAA,OAAO,gBAAgB,CAAC,OAAO,EAAE,QAAQ,CAAC;AAC9C;;ACKM,SAAU,aAAa,CAAC,OAAO,EAAA;IACjC,IAAI,MAAM,GAAG,EAAE;AAEf,IAAA,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK;AAC3B,IAAA,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG;AACvB,IAAA,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK;AAC3B,IAAA,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS;AAEnC,IAAA,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,QAAQ,EAAE;AAC7B,QAAA,OAAO,CAAC,IAAI,eAAe,CAAC,GAAG,EAAE,KAAK,EAAE,CAAA,iBAAA,EAAoB,OAAO,CAAC,KAAK,CAAC,CAAA,MAAA,CAAQ,CAAC,CAAC;IACxF;IAEA,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE;AAC3B,QAAA,MAAM,CAAC,IAAI,CAAC,IAAI,eAAe,CAAC,GAAG,EAAE,KAAK,EAAE,oCAAoC,CAAC,CAAC;IACtF;IACA,IAAI,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC;IAC/B,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC;AAE/B,IAAA,IAAI,KAAK,CAAC,EAAE,EAAE;QACV,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;AAClC,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,EAAE,EAAE;YACzC,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;YAClC,IAAI,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,KAAK,OAAO,EAAE;gBACrC,MAAM,CAAC,IAAI,CAAC,IAAI,eAAe,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,uBAAuB,KAAK,CAAC,EAAE,CAAA,2BAAA,EAA8B,UAAU,CAAC,EAAE,CAAC,QAAQ,CAAA,CAAE,CAAC,CAAC;YAC1I;QACJ;IACJ;AAEA,IAAA,IAAI,KAAK,IAAI,KAAK,EAAE;AAChB,QAAA,CAAC,MAAM,EAAE,QAAQ,EAAE,cAAc,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAI;AACjE,YAAA,IAAI,CAAC,IAAI,KAAK,EAAE;AACZ,gBAAA,MAAM,CAAC,IAAI,CAAC,IAAI,eAAe,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,CAAA,CAAA,EAAI,CAAC,CAAA,8BAAA,CAAgC,CAAC,CAAC;YAC1F;AACJ,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,MAAM;QAEV,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,KAAI;AAC3B,YAAA,IAAI,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,GAAG;gBAAE,MAAM,GAAG,KAAK;AAClD,QAAA,CAAC,CAAC;QAEF,IAAI,CAAC,MAAM,EAAE;AACT,YAAA,MAAM,CAAC,IAAI,CAAC,IAAI,eAAe,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,CAAA,WAAA,EAAc,GAAG,CAAA,WAAA,CAAa,CAAC,CAAC;QACpF;AAAO,aAAA,IAAI,MAAM,CAAC,GAAG,EAAE;AACnB,YAAA,MAAM,CAAC,IAAI,CAAC,IAAI,eAAe,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,wCAAwC,CAAC,CAAC;QAC9F;aAAO;AACH,YAAA,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC;QAChC;IACJ;AAAO,SAAA,IAAI,IAAI,KAAK,YAAY,EAAE;AAC9B,QAAA,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;AACf,YAAA,MAAM,CAAC,IAAI,CAAC,IAAI,eAAe,CAAC,GAAG,EAAE,KAAK,EAAE,oCAAoC,CAAC,CAAC;QACtF;aAAO;AACH,YAAA,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC;YAC3D,MAAM,UAAU,GAAG,MAAM,IAAI,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC;YAClD,IAAI,CAAC,MAAM,EAAE;AACT,gBAAA,MAAM,CAAC,IAAI,CAAC,IAAI,eAAe,CAAC,GAAG,EAAE,KAAK,CAAC,MAAM,EAAE,WAAW,KAAK,CAAC,MAAM,CAAA,WAAA,CAAa,CAAC,CAAC;YAC7F;iBAAO,IAAI,UAAU,KAAK,QAAQ,IAAI,IAAI,KAAK,QAAQ,EAAE;AACrD,gBAAA,MAAM,CAAC,IAAI,CAAC,IAAI,eAAe,CAAC,GAAG,EAAE,KAAK,CAAC,MAAM,EAAE,UAAU,KAAK,CAAC,EAAE,CAAA,0BAAA,CAA4B,CAAC,CAAC;YACvG;iBAAO,IAAI,UAAU,KAAK,YAAY,IAAI,IAAI,KAAK,WAAW,EAAE;AAC5D,gBAAA,MAAM,CAAC,IAAI,CAAC,IAAI,eAAe,CAAC,GAAG,EAAE,KAAK,CAAC,MAAM,EAAE,UAAU,KAAK,CAAC,EAAE,CAAA,8BAAA,CAAgC,CAAC,CAAC;YAC3G;iBAAO,IAAI,UAAU,KAAK,YAAY,IAAI,IAAI,KAAK,cAAc,EAAE;AAC/D,gBAAA,MAAM,CAAC,IAAI,CAAC,IAAI,eAAe,CAAC,GAAG,EAAE,KAAK,CAAC,MAAM,EAAE,UAAU,KAAK,CAAC,EAAE,CAAA,8BAAA,CAAgC,CAAC,CAAC;YAC3G;iBAAO,IAAI,UAAU,KAAK,QAAQ,IAAI,IAAI,KAAK,QAAQ,EAAE;AACrD,gBAAA,MAAM,CAAC,IAAI,CAAC,IAAI,eAAe,CAAC,GAAG,EAAE,KAAK,CAAC,MAAM,EAAE,UAAU,KAAK,CAAC,EAAE,CAAA,0BAAA,CAA4B,CAAC,CAAC;YACvG;iBAAO,IAAI,UAAU,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,EAAE;AAC1D,gBAAA,MAAM,CAAC,IAAI,CAAC,IAAI,eAAe,CAAC,GAAG,EAAE,KAAK,EAAE,UAAU,KAAK,CAAC,EAAE,CAAA,+BAAA,CAAiC,CAAC,CAAC;YACrG;AAAO,iBAAA,IAAI,UAAU,KAAK,YAAY,KAAK,IAAI,KAAK,WAAW,IAAI,IAAI,KAAK,cAAc,CAAC,EAAE;AACzF,gBAAA,MAAM,CAAC,IAAI,CAAC,IAAI,eAAe,CAAC,GAAG,EAAE,KAAK,CAAC,MAAM,EAAE,uFAAuF,CAAC,CAAC;YAChJ;AAAO,iBAAA,IAAI,IAAI,KAAK,MAAM,IAAI,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC,eAAe,CAAC;iBAC7D,UAAU,KAAK,SAAS,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE;AAC1D,gBAAA,MAAM,CAAC,IAAI,CAAC,IAAI,eAAe,CAAC,GAAG,EAAE,KAAK,EAAE,UAAU,KAAK,CAAC,EAAE,CAAA,0FAAA,CAA4F,CAAC,CAAC;YAChK;QACJ;IACJ;AAEA,IAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC;QAClC,GAAG;AACH,QAAA,KAAK,EAAE,KAAK;QACZ,SAAS,EAAE,SAAS,CAAC,KAAK;QAC1B,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,YAAY,EAAE,OAAO,CAAC,YAAY;AAClC,QAAA,uBAAuB,EAAE;YACrB,GAAG,GAAA;AACC,gBAAA,OAAO,EAAE;YACb,CAAC;;;YAGD,IAAI,GAAA;gBACA,OAAO,OAAO,CAAC,YAAY,CAAC;oBACxB,GAAG,EAAE,CAAA,EAAG,GAAG,CAAA,KAAA,CAAO;oBAClB,KAAK,EAAE,KAAK,CAAC,IAAI;AACjB,oBAAA,SAAS,EAAE,SAAS,CAAC,KAAK,CAAC,IAAI;oBAC/B,KAAK,EAAE,OAAO,CAAC,KAAK;oBACpB,SAAS,EAAE,OAAO,CAAC,SAAS;oBAC5B,YAAY,EAAE,OAAO,CAAC,YAAY;AAClC,oBAAA,MAAM,EAAE,KAAK;AACb,oBAAA,SAAS,EAAE;AACd,iBAAA,CAAC;YACN,CAAC;AACD,YAAA,MAAM,EAAE,cAAc;AACtB,YAAA,MAAM,CAAC,OAAO,EAAA;AACV,gBAAA,OAAO,cAAc,CAAC;oBAClB,KAAK;oBACL,GAAG,EAAE,OAAO,CAAC,GAAG;oBAChB,KAAK,EAAE,OAAO,CAAC,KAAK;oBACpB,KAAK,EAAE,OAAO,CAAC,KAAK;oBACpB,SAAS,EAAE,OAAO,CAAC,SAAS;oBAC5B,YAAY,EAAE,OAAO,CAAC,YAAY;AAClC,oBAAA,uBAAuB,EAAE;AACrB,wBAAA,GAAG,CAAC,OAAO,EAAA;AACP,4BAAA,OAAO,sBAAsB,CAACS,QAAM,CAAC,EAAC,SAAS,EAAE,IAAI,EAAC,EAAE,OAAO,CAAC,CAAC;wBACrE;AACH;AACJ,iBAAA,CAAC;YACN,CAAC;AACD,YAAA,KAAK,CAAC,OAAO,EAAA;AACT,gBAAA,OAAO,cAAc,CAAC;oBAClB,KAAK;oBACL,GAAG,EAAE,OAAO,CAAC,GAAG;oBAChB,KAAK,EAAE,OAAO,CAAC,KAAK;oBACpB,KAAK,EAAE,OAAO,CAAC,KAAK;oBACpB,SAAS,EAAE,OAAO,CAAC,SAAS;oBAC5B,YAAY,EAAE,OAAO,CAAC,YAAY;AAClC,oBAAA,uBAAuB,EAAE;AACrB,wBAAA,GAAG,CAAC,OAAO,EAAA;AACP,4BAAA,OAAO,qBAAqB,CAACA,QAAM,CAAC,EAAC,SAAS,EAAE,IAAI,EAAC,EAAE,OAAO,CAAC,CAAC;wBACpE;AACH;AACJ,iBAAA,CAAC;YACN;AACH;AACJ,KAAA,CAAC,CAAC;AAEH,IAAA,OAAO,MAAM;AACjB;;AC7IM,SAAU,cAAc,CAAC,OAAO,EAAA;AAClC,IAAA,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK;AAC3B,IAAA,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG;AACvB,IAAA,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC;AAE3B,IAAA,IAAI,IAAI,KAAK,QAAQ,EAAE;AACnB,QAAA,OAAO,CAAC,IAAI,eAAe,CAAC,GAAG,EAAE,KAAK,EAAE,CAAA,iBAAA,EAAoB,IAAI,CAAA,MAAA,CAAQ,CAAC,CAAC;IAC9E;AAEA,IAAA,OAAO,EAAE;AACb;;ACAM,SAAU,uBAAuB,CACnC,OAAuC,EAAA;;IAGvC,MAAM,UAAU,GAAG,CAAA,EAAA,GAAA,OAAO,CAAC,UAAU,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,EAAE;AAC3C,IAAA,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK;AAC/B,IAAA,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS;AACnC,IAAA,MAAM,aAAa,GAAG,SAAS,CAAC,iBAAiB;AACjD,IAAA,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK;IAE3B,IAAI,MAAM,GAAG,EAAE;AAEf,IAAA,MAAM,QAAQ,GAAG,OAAO,CAAC,SAAS,CAAC;AACnC,IAAA,IAAI,SAAS,KAAK,SAAS,EAAE;AACzB,QAAA,OAAO,MAAM;IACjB;AAAO,SAAA,IAAI,QAAQ,KAAK,QAAQ,EAAE;AAC9B,QAAA,MAAM,CAAC,IAAI,CAAC,IAAI,eAAe,CAAC,mBAAmB,EAAE,SAAS,EAAE,CAAA,iBAAA,EAAoB,QAAQ,CAAA,MAAA,CAAQ,CAAC,CAAC;AACtG,QAAA,OAAO,MAAM;IACjB;IAEA,MAAM,QAAQ,GAAG,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC;AAC7C,IAAA,MAAM,gBAAgB,GAAG,QAAQ,KAAK,QAAQ;IAC9C,MAAM,kBAAkB,GAAG,CAAC,WAAW,EAAE,aAAa,EAAE,YAAY,EAAE,WAAW,CAAC;IAClF,MAAM,YAAY,GAAG,OAAO,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,OAAO,CAAC,KAAK,CAAC,QAAQ,GAAG,GAAG,SAAS;AAEvF,IAAA,KAAK,MAAM,GAAG,IAAI,SAAS,EAAE;QACzB,IAAI,CAAC,gBAAgB,IAAI,kBAAkB,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;YACvD,MAAM,CAAC,IAAI,CAAC,IAAI,eAAe,CAAC,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAA,IAAA,EAAO,UAAU,CAAA,IAAA,EAAO,GAAG,uDAAuD,YAAY,CAAA,eAAA,CAAiB,CAAC,CAAC;QAC1K;AAAO,aAAA,IAAI,aAAa,CAAC,GAAG,CAAC,EAAE;YAC3B,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC;gBACxC,GAAG;AACH,gBAAA,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC;AACrB,gBAAA,SAAS,EAAE,aAAa,CAAC,GAAG,CAAC;gBAC7B,YAAY,EAAE,OAAO,CAAC,YAAY;gBAClC,KAAK;gBACL;AACH,aAAA,CAAC,CAAC;QACP;aAAO;AACH,YAAA,MAAM,CAAC,IAAI,CAAC,IAAI,eAAe,CAAC,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAA,kBAAA,EAAqB,GAAG,CAAA,CAAA,CAAG,CAAC,CAAC;QACtF;IACJ;AAEA,IAAA,OAAO,MAAM;AACjB;;AC/CA,MAAM,uBAAuB,GAAG;AAC5B,IAAA,SAAS,EAAE;CACd;AAEK,SAAU,cAAc,CAAC,OAAO,EAAA;AAClC,IAAA,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK;AAC3B,IAAA,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG;AACvB,IAAA,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS;AACnC,IAAA,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK;AAC3B,IAAA,MAAM,YAAY,GAAG,OAAO,CAAC,YAAY;AAEzC,IAAA,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;QACb,OAAO,CAAC,IAAI,eAAe,CAAC,GAAG,EAAE,KAAK,EAAE,oBAAoB,CAAC,CAAC;IAClE;IAEA,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC;AACjC,IAAA,IAAI,MAAM;IAEV,QAAQ,IAAI;AACR,QAAA,KAAK,QAAQ;AACb,QAAA,KAAK,QAAQ;YACT,MAAM,GAAG,cAAc,CAAC;gBACpB,GAAG;gBACH,KAAK;AACL,gBAAA,SAAS,EAAE,SAAS,CAAC,CAAA,OAAA,EAAU,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC;gBACxD,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,SAAS;gBACT,uBAAuB;gBACvB,YAAY;AACf,aAAA,CAAC;AACF,YAAA,OAAO,MAAM;AACjB,QAAA,KAAK,YAAY;YACb,MAAM,GAAG,uBAAuB,CAAC;AAC7B,gBAAA,UAAU,EAAE,GAAG;gBACf,KAAK;gBACL,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,SAAS;gBACT,YAAY;AACf,aAAA,CAAC;AACF,YAAA,OAAO,MAAM;AAEjB,QAAA,KAAK,SAAS;YACV,MAAM,GAAG,cAAc,CAAC;gBACpB,GAAG;gBACH,KAAK;gBACL,SAAS,EAAE,SAAS,CAAC,cAAc;gBACnC,KAAK;gBACL,SAAS;gBACT,YAAY;gBACZ;AACH,aAAA,CAAC;AACF,YAAA,IAAI,KAAK,CAAC,OAAO,EAAE;AACf,gBAAA,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,iBAAiB,EAAE;AACxC,oBAAA,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,GAAG,KAAK,CAAC,iBAAiB,CAAC,IAAI,CAAC;oBACzD,MAAM,UAAU,GAAG,OAAO,QAAQ,KAAK,QAAQ,GAAG,CAAC,QAAQ,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,GAAG,QAAQ;AAEvG,oBAAA,MAAM,CAAC,IAAI,CAAC,GAAG,kBAAkB,CAAC;AAC9B,wBAAA,GAAG,EAAE,CAAA,EAAG,GAAG,CAAA,CAAA,EAAI,IAAI,CAAA,IAAA,CAAM;AACzB,wBAAA,KAAK,EAAE,OAAO;wBAEd,iBAAiB,EAAE;AACtB,qBAAA,CAAC,CAAC;AACH,oBAAA,MAAM,CAAC,IAAI,CAAC,GAAG,kBAAkB,CAAC;AAC9B,wBAAA,GAAG,EAAE,CAAA,EAAG,GAAG,CAAA,CAAA,EAAI,IAAI,CAAA,OAAA,CAAS;AAC5B,wBAAA,KAAK,EAAE,UAAU;wBAEjB,iBAAiB,EAAE;AACtB,qBAAA,CAAC,CAAC;gBACP;YACJ;AACA,YAAA,OAAO,MAAM;AAEjB,QAAA,KAAK,OAAO;AACR,YAAA,OAAO,cAAc,CAAC;gBAClB,GAAG;gBACH,KAAK;gBACL,SAAS,EAAE,SAAS,CAAC,YAAY;gBACjC,KAAK;gBACL,YAAY;gBACZ;AACH,aAAA,CAAC;AAEN,QAAA,KAAK,OAAO;AACR,YAAA,OAAO,cAAc,CAAC;gBAClB,GAAG;gBACH,KAAK;gBACL,SAAS,EAAE,SAAS,CAAC,YAAY;gBACjC,KAAK;gBACL,YAAY;gBACZ;AACH,aAAA,CAAC;AAEN,QAAA,KAAK,QAAQ;AACT,YAAA,OAAO,CAAC,IAAI,eAAe,CAAC,GAAG,EAAE,IAAI,EAAE,2FAA2F,EAAE,eAAe,CAAC,CAAC;AAEzJ,QAAA;AACI,YAAA,OAAO,YAAY,CAAC;gBAChB,GAAG,EAAE,CAAA,EAAG,GAAG,CAAA,KAAA,CAAO;gBAClB,KAAK,EAAE,KAAK,CAAC,IAAI;AACjB,gBAAA,SAAS,EAAE,EAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,YAAY,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,CAAC,EAItF,CAAA,CAAC;;AAEd;AAEA,SAAS,iBAAiB,CAAC,EAAC,GAAG,EAAE,KAAK,EAAC,EAAA;AACnC,IAAA,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,QAAQ,EAAE;QAC7B,OAAO,cAAc,CAAC,EAAC,GAAG,EAAE,KAAK,EAAC,CAAC;IACvC;SAAO;QACH,MAAM,MAAM,GAAG,EAAE;AACjB,QAAA,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;YACtB,MAAM,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,EAAC,GAAG,EAAE,CAAA,EAAG,GAAG,CAAA,CAAA,EAAI,IAAI,CAAA,CAAE,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,EAAC,CAAC,CAAC;QAC/E;AACA,QAAA,OAAO,MAAM;IACjB;AACJ;;AC5HM,SAAU,aAAa,CAAC,OAAO,EAAA;AACjC,IAAA,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK;AAC3B,IAAA,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS;AACnC,IAAA,MAAM,SAAS,GAAG,SAAS,CAAC,KAAK;AACjC,IAAA,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK;IAE3B,IAAI,MAAM,GAAG,EAAE;AAEf,IAAA,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC;AAC/B,IAAA,IAAI,KAAK,KAAK,SAAS,EAAE;AACrB,QAAA,OAAO,MAAM;IACjB;AAAO,SAAA,IAAI,QAAQ,KAAK,QAAQ,EAAE;AAC9B,QAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,eAAe,CAAC,OAAO,EAAE,KAAK,EAAE,CAAA,iBAAA,EAAoB,QAAQ,QAAQ,CAAC,CAAC,CAAC;AACnG,QAAA,OAAO,MAAM;IACjB;AAEA,IAAA,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE;QACrB,MAAM,eAAe,GAAG,GAAG,CAAC,KAAK,CAAC,mBAAmB,CAAC;QAEtD,IAAI,eAAe,IAAI,SAAS,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE;YAC9F,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC;gBACxC,GAAG;AACH,gBAAA,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC;gBACjB,SAAS,EAAE,SAAS,CAAC,UAAU;gBAC/B,YAAY,EAAE,OAAO,CAAC,YAAY;gBAClC,KAAK;gBACL;AACH,aAAA,CAAC,CAAC;QACP;AAAO,aAAA,IAAI,SAAS,CAAC,GAAG,CAAC,EAAE;YACvB,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC;gBACxC,GAAG;AACH,gBAAA,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC;AACjB,gBAAA,SAAS,EAAE,SAAS,CAAC,GAAG,CAAC;gBACzB,YAAY,EAAE,OAAO,CAAC,YAAY;gBAClC,KAAK;gBACL;AACH,aAAA,CAAC,CAAC;QACP;aAAO;YACH,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,eAAe,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,CAAA,kBAAA,EAAqB,GAAG,CAAA,CAAA,CAAG,CAAC,CAAC,CAAC;QAC/F;IACJ;AAEA,IAAA,OAAO,MAAM;AACjB;;ACjCM,SAAU,WAAW,CAAC,OAA2B,EAAA;AACnD,IAAA,MAAM,GAAG,GAAG,OAAO,CAAC,KAAK;AACzB,IAAA,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS;AACnC,IAAA,MAAM,OAAO,GAAG,SAAS,CAAC,GAAG;AAC7B,IAAA,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK;AAE3B,IAAA,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC;AAC7B,IAAA,IAAI,GAAG,KAAK,SAAS,EAAE;AACnB,QAAA,OAAO,EAAE;IACb;AAAO,SAAA,IAAI,QAAQ,KAAK,QAAQ,EAAE;AAC9B,QAAA,OAAO,CAAC,IAAI,eAAe,CAAC,KAAK,EAAE,GAAG,EAAE,CAAA,iBAAA,EAAoB,QAAQ,CAAA,MAAA,CAAQ,CAAC,CAAC;IAClF;IAEA,IAAI,MAAM,GAAG,EAAE;AACf,IAAA,KAAK,MAAM,GAAG,IAAI,GAAG,EAAE;AACnB,QAAA,IAAI,OAAO,CAAC,GAAG,CAAC,EAAE;YACd,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC;gBACxC,GAAG;AACH,gBAAA,KAAK,EAAE,GAAG,CAAC,GAAG,CAAC;AACf,gBAAA,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC;gBACvB,KAAK;gBACL;AACH,aAAA,CAAC,CAAC;QACP;aAAO;YACH,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,eAAe,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,CAAA,kBAAA,EAAqB,GAAG,CAAA,CAAA,CAAG,CAAC,CAAC,CAAC;QAC7F;IACJ;AAEA,IAAA,OAAO,MAAM;AACjB;;ACrCM,SAAU,eAAe,CAC3B,OAA+G,EAAA;AAG/G,IAAA,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK;AAC7B,IAAA,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS;AACnC,IAAA,MAAM,WAAW,GAAG,SAAS,CAAC,OAAO;AACrC,IAAA,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK;IAE3B,IAAI,MAAM,GAAG,EAAE;AAEf,IAAA,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC;AACjC,IAAA,IAAI,OAAO,KAAK,SAAS,EAAE;AACvB,QAAA,OAAO,MAAM;IACjB;AAAO,SAAA,IAAI,QAAQ,KAAK,QAAQ,EAAE;AAC9B,QAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,eAAe,CAAC,SAAS,EAAE,OAAO,EAAE,CAAA,iBAAA,EAAoB,QAAQ,QAAQ,CAAC,CAAC,CAAC;AACvG,QAAA,OAAO,MAAM;IACjB;AAEA,IAAA,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE;AACvB,QAAA,IAAI,WAAW,CAAC,GAAG,CAAC,EAAE;YAClB,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC;gBACxC,GAAG;AACH,gBAAA,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC;AACnB,gBAAA,SAAS,EAAE,WAAW,CAAC,GAAG,CAAC;gBAC3B,YAAY,EAAE,OAAO,CAAC,YAAY;gBAClC,KAAK;gBACL;AACH,aAAA,CAAC,CAAC;QACP;aAAO;YACH,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,eAAe,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAA,kBAAA,EAAqB,GAAG,CAAA,CAAA,CAAG,CAAC,CAAC,CAAC;QACjG;IACJ;AAEA,IAAA,OAAO,MAAM;AACjB;;ACrCM,SAAU,iBAAiB,CAAC,OAAY,EAAA;IAC1C,IAAI,cAAc,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE;AACtC,QAAA,OAAO,EAAE;IACb;AAEA,IAAA,OAAO,kBAAkB,CAAC,OAAO,CAAC;AACtC;;ACNM,SAAU,aAAa,CAAC,OAAY,EAAA;IACtC,IAAI,cAAc,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE;AACtC,QAAA,OAAO,EAAE;IACb;AAEA,IAAA,OAAO,kBAAkB,CAAC,OAAO,CAAC;AACtC;;ACLM,SAAU,eAAe,CAAC,OAAO,EAAA;AACnC,IAAA,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG;AACvB,IAAA,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK;AAC3B,IAAA,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC;AAE3B,IAAA,IAAI,IAAI,KAAK,OAAO,EAAE;AAClB,QAAA,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;AACtC,YAAA,OAAO,CAAC,IAAI,eAAe,CAAC,GAAG,EAAE,KAAK,EAAE,CAAA,gCAAA,EAAmC,KAAK,CAAC,MAAM,CAAA,aAAA,CAAe,CAAC,CAAC;QAC5G;AAEA,QAAA,MAAM,gBAAgB,GAAG;AACrB,YAAA,IAAI,EAAE;SACT;QAED,IAAI,MAAM,GAAG,EAAE;AACf,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACnC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC;AACxC,gBAAA,GAAG,EAAE,CAAA,EAAG,GAAG,CAAA,CAAA,EAAI,CAAC,CAAA,CAAA,CAAG;AACnB,gBAAA,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;gBACf,YAAY,EAAE,OAAO,CAAC,YAAY;AAClC,gBAAA,SAAS,EAAE;AACd,aAAA,CAAC,CAAC;QACP;AACA,QAAA,OAAO,MAAM;IACjB;SAAO;AACH,QAAA,OAAO,cAAc,CAAC;YAClB,GAAG;YACH,KAAK;AACL,YAAA,SAAS,EAAE;AACd,SAAA,CAAC;IACN;AACJ;;AC/BM,SAAU,mBAAmB,CAAC,OAAO,EAAA;AACvC,IAAA,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG;AACvB,IAAA,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK;AAC3B,IAAA,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC;AAE3B,IAAA,IAAI,IAAI,KAAK,OAAO,EAAE;AAElB,QAAA,MAAM,gBAAgB,GAAG;AACrB,YAAA,IAAI,EAAE;SACT;AAED,QAAA,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;YAClB,OAAO,CAAC,IAAI,eAAe,CAAC,GAAG,EAAE,KAAK,EAAE,kDAAkD,CAAC,CAAC;QAChG;QAEA,IAAI,MAAM,GAAG,EAAE;AACf,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACnC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC;AACxC,gBAAA,GAAG,EAAE,CAAA,EAAG,GAAG,CAAA,CAAA,EAAI,CAAC,CAAA,CAAA,CAAG;AACnB,gBAAA,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;gBACf,YAAY,EAAE,OAAO,CAAC,YAAY;AAClC,gBAAA,SAAS,EAAE;AACd,aAAA,CAAC,CAAC;QACP;AACA,QAAA,OAAO,MAAM;IACjB;SAAO;AACH,QAAA,OAAO,cAAc,CAAC;YAClB,GAAG;YACH,KAAK;AACL,YAAA,SAAS,EAAE;AACd,SAAA,CAAC;IACN;AACJ;;AChCM,SAAU,kBAAkB,CAAC,OAAO,EAAA;AACtC,IAAA,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG;AACvB,IAAA,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK;AAC3B,IAAA,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC;AAE3B,IAAA,IAAI,IAAI,KAAK,OAAO,EAAE;AAElB,QAAA,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;YAClB,OAAO,CAAC,IAAI,eAAe,CAAC,GAAG,EAAE,KAAK,EAAE,kDAAkD,CAAC,CAAC;QAChG;QAEA,IAAI,MAAM,GAAG,EAAE;AACf,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACnC,YAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC;AACjC,gBAAA,GAAG,EAAE,CAAA,EAAG,GAAG,CAAA,CAAA,EAAI,CAAC,CAAA,CAAA,CAAG;AACnB,gBAAA,KAAK,EAAE,KAAK,CAAC,CAAC,CAEjB,CAAA,CAAC,CAAC;QACP;AACA,QAAA,OAAO,MAAM;IACjB;SAAO;AACH,QAAA,OAAO,aAAa,CAAC;YACjB,GAAG;YACH,KAEH,CAAA,CAAC;IACN;AACJ;;AC1BM,SAAU,sCAAsC,CAAC,OAAO,EAAA;AAC1D,IAAA,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG;AACvB,IAAA,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK;AAC3B,IAAA,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC;AAC3B,IAAA,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS;AAEnC,IAAA,IAAI,IAAI,KAAK,OAAO,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC,EAAE;QAChE,OAAO,CAAC,IAAI,eAAe,CAAC,GAAG,EAAE,KAAK,EAAE,0EAA0E,CAAC,CAAC;IACxH;IAEA,IAAI,MAAM,GAAG,EAAE;AAEf,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;;AAEtC,QAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC;AAChC,YAAA,GAAG,EAAE,CAAA,EAAG,GAAG,CAAA,CAAA,EAAI,CAAC,CAAA,CAAA,CAAG;AACnB,YAAA,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;AACf,YAAA,SAAS,EAAE,SAAS,CAAC,eAAe,CAAC,CAAC,aAAa;AACtD,SAAA,CAAC,CAAC;;AAGH,QAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC;AACjC,YAAA,GAAG,EAAE,CAAA,EAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAA,CAAA,CAAG;AACvB,YAAA,KAAK,EAAE,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC;AACnB,YAAA,SAAS,EAAE;AACP,gBAAA,MAAM,EAAE,CAAC;AACT,gBAAA,KAAK,EAAE;AACV,aAAA;YACD,YAAY,EAAE,OAAO,CAAC,YAAY;YAClC,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB;AACH,SAAA,CAAC,CAAC;IACP;AAEA,IAAA,OAAO,MAAM;AACjB;;AC9BM,SAAU,cAAc,CAAC,OAA8B,EAAA;IACzD,IAAI,MAAM,GAAG,EAAE;AAEf,IAAA,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK;AAC5B,IAAA,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG;IAEvB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;AACxB,QAAA,OAAO,cAAc,CAAC;YAClB,GAAG;AACH,YAAA,KAAK,EAAE;AACV,SAAA,CAAC;IAEN;SAAO;QACH,MAAM,YAAY,GAAG,EAAE;QACvB,MAAM,aAAa,GAAG,EAAE;AAExB,QAAA,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE;AACpB,YAAA,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBAAE,MAAM,CAAC,IAAI,CAAC,IAAI,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,4CAA4C,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA,cAAA,CAAgB,CAAC,CAAC;YAChL,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AAE/B,YAAA,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;gBAAE,MAAM,CAAC,IAAI,CAAC,IAAI,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,6CAA6C,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAA,cAAA,CAAgB,CAAC,CAAC;YACrL,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;AAEjC,YAAA,MAAM,QAAQ,GAAG;AACb,gBAAA,EAAE,EAAE;AACA,oBAAA,IAAI,EAAE,QAAQ;AACd,oBAAA,QAAQ,EAAE,IAAI;AACjB,iBAAA;AACD,gBAAA,GAAG,EAAE;AACD,oBAAA,IAAI,EAAE,QAAQ;AACd,oBAAA,QAAQ,EAAE,IAAI;AACjB;aACJ;AAED,YAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC;AAClC,gBAAA,GAAG,EAAE,CAAA,EAAG,GAAG,CAAA,CAAA,EAAI,CAAC,CAAA,CAAA,CAAG;AACnB,gBAAA,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;AAChB,gBAAA,SAAS,EAAE,QAAQ;gBACnB,YAAY,EAAE,OAAO,CAAC,YAAY;AACrC,aAAA,CAAC,CAAC;QACP;AAEA,QAAA,OAAO,MAAM;IACjB;AACJ;;ACzCM,SAAU,kBAAkB,CAAC,OAAkC,EAAA;AACjE,IAAA,MAAM,UAAU,GAAG,OAAO,CAAC,KAAK;AAChC,IAAA,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS;AACnC,IAAA,MAAM,cAAc,GAAG,SAAS,CAAC,UAAU;AAC3C,IAAA,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK;AAE3B,IAAA,MAAM,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC;AACpC,IAAA,IAAI,UAAU,KAAK,SAAS,EAAE;AAC1B,QAAA,OAAO,EAAE;IACb;AAAO,SAAA,IAAI,QAAQ,KAAK,QAAQ,EAAE;AAC9B,QAAA,OAAO,CAAC,IAAI,eAAe,CAAC,YAAY,EAAE,UAAU,EAAE,CAAA,iBAAA,EAAoB,QAAQ,CAAA,MAAA,CAAQ,CAAC,CAAC;IAChG;IAEA,IAAI,MAAM,GAAG,EAAE;AACf,IAAA,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE;AAC1B,QAAA,IAAI,cAAc,CAAC,GAAG,CAAC,EAAE;YACrB,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC;gBACxC,GAAG;AACH,gBAAA,KAAK,EAAE,UAAU,CAAC,GAAG,CAAC;AACtB,gBAAA,SAAS,EAAE,cAAc,CAAC,GAAG,CAAC;gBAC9B,KAAK;gBACL;AACH,aAAA,CAAC,CAAC;QACP;aAAO;YACH,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,eAAe,CAAC,GAAG,EAAE,UAAU,CAAC,GAAG,CAAC,EAAE,CAAA,kBAAA,EAAqB,GAAG,CAAA,CAAA,CAAG,CAAC,CAAC,CAAC;QACpG;IACJ;AAEA,IAAA,OAAO,MAAM;AACjB;;ACtCM,SAAU,4BAA4B,CAAC,OAAO,EAAA;AAEhD,IAAA,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG;AACvB,IAAA,IAAI,KAAK,GAAG,OAAO,CAAC,KAAK;AACzB,IAAA,KAAK,GAAG,KAAK,YAAY,MAAM,GAAG,KAAK,CAAC,OAAO,EAAE,GAAG,KAAK;AAEzD,IAAA,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC;AAE3B,IAAA,IAAI,IAAI,KAAK,OAAO,IAAI,CAAC,2BAA2B,CAAC,KAAK,CAAC,IAAI,CAAC,4BAA4B,CAAC,KAAK,CAAC,EAAE;AACjG,QAAA,OAAO,CAAC,IAAI,eAAe,CAAC,GAAG,EAAE,KAAK,EAAE,CAAA,mCAAA,EAAsC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA,MAAA,CAAQ,CAAC,CAAC;IACjH;AAAQ,SAAA,IAAI,CAAC,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;AAC7C,QAAA,OAAO,CAAC,IAAI,eAAe,CAAC,GAAG,EAAE,KAAK,EAAE,CAAA,mCAAA,EAAsC,IAAI,CAAA,OAAA,CAAS,CAAC,CAAC;IACjG;AAEA,IAAA,OAAO,EAAE;AACb;AAEA,SAAS,4BAA4B,CAAC,KAAc,EAAA;AAEhD,IAAA,IAAI,CAAC,aAAa,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;AACvD,QAAA,OAAO,IAAI;IACf;AACA,IAAA,OAAO,KAAK;AAChB;AAEA,SAAS,2BAA2B,CAAC,KAAc,EAAA;AAC/C,IAAA,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QACvB,KAAK,CAAC,MAAM,KAAK,CAAC;AAClB,QAAA,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,QAAQ;AAC5B,QAAA,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,QAAQ;AAC5B,QAAA,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,QAAQ;AACpC;;ACnCM,SAAU,eAAe,CAC3B,QAAiB,EAAA;IAEjB,OAAO,OAAO,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,WAAW,KAAK,MAAM;AAC/D;;ACKM,SAAU,aAAa,CAAC,OAA6B,EAAA;IACvD,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;QACjC,OAAO;AACH,YAAA,IAAI,eAAe,CACf,OAAO,CAAC,GAAG,EACX,OAAO,CAAC,KAAK,EACb,CAAA,iBAAA,EAAoB,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CACrD;SACJ;IACL;AAEA,IAAA,OAAO,EAAE;AACb;;ACaA,MAAM,UAAU,GAAG;IACf,GAAG,GAAA;AACC,QAAA,OAAO,EAAE;IACb,CAAC;AACD,IAAA,OAAO,EAAE,aAAa;AACtB,IAAA,SAAS,EAAE,eAAe;AAC1B,IAAA,QAAQ,EAAE,cAAc;AACxB,IAAA,OAAO,EAAE,aAAa;AACtB,IAAA,WAAW,EAAE,iBAAiB;AAC9B,IAAA,MAAM,EAAE,YAAY;AACpB,IAAA,QAAQ,EAAE,cAAc;AACxB,IAAA,UAAU,EAAE,gBAAgB;AAC5B,IAAA,OAAO,EAAE,aAAa;AACtB,IAAA,QAAQ,EAAE,cAAc;AACxB,IAAA,QAAQ,EAAE,cAAc;AACxB,IAAA,OAAO,EAAE,aAAa;AACtB,IAAA,KAAK,EAAE,WAAW;AAClB,IAAA,SAAS,EAAE,eAAe;AAC1B,IAAA,YAAY,EAAE,kBAAkB;AAChC,IAAA,sBAAsB,EAAE,4BAA4B;AACpD,IAAA,QAAQ,EAAE,cAAc;AACxB,IAAA,WAAW,EAAE,iBAAiB;AAC9B,IAAA,eAAe,EAAE,aAAa;AAC9B,IAAA,SAAS,EAAE,eAAe;AAC1B,IAAA,aAAa,EAAE,mBAAmB;AAClC,IAAA,YAAY,EAAE,kBAAkB;AAChC,IAAA,gCAAgC,EAAE,sCAAsC;AACxE,IAAA,QAAQ,EAAE,cAAc;AACxB,IAAA,OAAO,EAAE;CACZ;AAED;;;;;;;;;;;;;;;AAeG;AACG,SAAU,QAAQ,CAAC,OAOU,EAAA;AAC/B,IAAA,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK;AAC3B,IAAA,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS;AACnC,IAAA,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS;AACnC,IAAA,OAAO,CAAC,YAAY,GAAG,QAAQ;AAE/B,IAAA,IAAI,SAAS,CAAC,UAAU,IAAIT,YAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE;AACrD,QAAA,OAAO,gBAAgB,CAAC,OAAO,CAAC;IAEpC;AAAO,SAAA,IAAI,SAAS,CAAC,UAAU,IAAI,YAAY,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE;AAClE,QAAA,OAAO,kBAAkB,CAAC,OAAO,CAAC;IAEtC;SAAO,IAAI,SAAS,CAAC,IAAI,IAAI,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;QACrD,OAAO,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC;IAE9C;SAAO;QACH,MAAM,KAAK,GAAG,cAAc,CAAC,QAAQ,CAAC,EAAE,EAAE,OAAO,EAAE;AAC/C,YAAA,SAAS,EAAE,SAAS,CAAC,IAAI,GAAG,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG;AAC3D,SAAA,CAAC,CAAC;AACH,QAAA,OAAO,KAAK;IAChB;AACJ;;ACzGM,SAAU,iBAAiB,CAAC,OAAO,EAAA;AACrC,IAAA,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK;AAC3B,IAAA,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG;AAEvB,IAAA,MAAM,MAAM,GAAG,cAAc,CAAC,OAAO,CAAC;IACtC,IAAI,MAAM,CAAC,MAAM;AAAE,QAAA,OAAO,MAAM;IAEhC,IAAI,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,EAAE,EAAE;AACrC,QAAA,MAAM,CAAC,IAAI,CAAC,IAAI,eAAe,CAAC,GAAG,EAAE,KAAK,EAAE,iDAAiD,CAAC,CAAC;IACnG;IAEA,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE,EAAE;AACjC,QAAA,MAAM,CAAC,IAAI,CAAC,IAAI,eAAe,CAAC,GAAG,EAAE,KAAK,EAAE,6CAA6C,CAAC,CAAC;IAC/F;AAEA,IAAA,OAAO,MAAM;AACjB;;ACDA;;;;;;;;;;;AAWG;SACa,gBAAgB,CAAC,KAAyB,EAAE,SAAS,GAAGQ,MAAM,EAAA;IAE1E,IAAI,MAAM,GAAsB,EAAE;AAElC,IAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC;AAC5B,QAAA,GAAG,EAAE,EAAE;AACP,QAAA,KAAK,EAAE,KAAK;QACZ,SAAS,EAAE,SAAS,CAAC,KAAK;QAC1B,SAAS;QACT,KAAK;AACL,QAAA,YAAY,EAAE,QAAQ;AACtB,QAAA,uBAAuB,EAAE;AACrB,YAAA,MAAM,EAAE,iBAAiB;YACzB,GAAG,GAAA;AACC,gBAAA,OAAO,EAAE;YACb;AACH;AACJ,KAAA,CAAC,CAAC;AAEH,IAAA,IAAI,KAAK,CAAC,WAAW,CAAC,EAAE;AACpB,QAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,iBAAiB,CAAC;AACrC,YAAA,GAAG,EAAE,WAAW;AAChB,YAAA,KAAK,EAAE,KAAK,CAAC,WAAW,CAI3B,CAAA,CAAC,CAAC;IACP;AAEA,IAAA,OAAO,UAAU,CAAC,MAAM,CAAC;AAC7B;AAEA,gBAAgB,CAAC,MAAM,GAAG,eAAe,CAAC,kBAAkB,CAAC,cAAc,CAAC,CAAC;AAC7E,gBAAgB,CAAC,MAAM,GAAG,eAAe,CAAC,kBAAkB,CAAC,cAAc,CAAC,CAAC;AAC7E,gBAAgB,CAAC,MAAM,GAAG,eAAe,CAAC,kBAAkB,CAAC,iBAAiB,CAAC,CAAC;AAChF,gBAAgB,CAAC,KAAK,GAAG,eAAe,CAAC,kBAAkB,CAAC,aAAa,CAAC,CAAC;AAC3E,gBAAgB,CAAC,GAAG,GAAG,eAAe,CAAC,kBAAkB,CAAC,WAAW,CAAC,CAAC;AACvE,gBAAgB,CAAC,OAAO,GAAG,eAAe,CAAC,kBAAkB,CAAC,eAAe,CAAC,CAAC;AAC/E,gBAAgB,CAAC,KAAK,GAAG,eAAe,CAAC,kBAAkB,CAAC,aAAa,CAAC,CAAC;AAC3E,gBAAgB,CAAC,KAAK,GAAG,eAAe,CAAC,kBAAkB,CAAC,aAAa,CAAC,CAAC;AAC3E,gBAAgB,CAAC,MAAM,GAAG,eAAe,CAAC,kBAAkB,CAAC,cAAc,CAAC,CAAC;AAC7E,gBAAgB,CAAC,aAAa,GAAG,eAAe,CAAC,kBAAkB,CAAC,qBAAqB,CAAC,CAAC;AAC3F,gBAAgB,CAAC,cAAc,GAAG,eAAe,CAAC,kBAAkB,CAAC,sBAAsB,CAAC,CAAC;AAE7F,SAAS,kBAAkB,CAAC,SAAmC,EAAA;AAC3D,IAAA,OAAO,UAAS,OAAO,EAAA;AACnB,QAAA,OAAO,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,OAAO,EAAE,EAAC,YAAY,EAAE,QAAQ,EAAC,CAAC,CAAC;AAC1E,IAAA,CAAC;AACL;AAEA,SAAS,UAAU,CAAC,MAAM,EAAA;AACtB,IAAA,OAAO,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAI;AACnC,QAAA,OAAO,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI;AAC1B,IAAA,CAAC,CAAC;AACN;AAEA,SAAS,eAAe,CAAC,KAAK,EAAA;IAC1B,OAAO,UAAS,GAAG,IAAI,EAAA;QACnB,OAAO,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AAC9C,IAAA,CAAC;AACL;;AC3FA;AACA;AACA;AACA;AACA,MAAM,YAAY,GAAG,2BAA2B;;AAEjC,SAAS,SAAS,CAAC,SAAS,EAAE,OAAO,GAAG,EAAE,EAAE;AAC3D,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS;AAC/B,IAAI,CAAC,CAAC,CAAC;AACP,IAAI,SAAS;AACb,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS,GAAG,CAAC,GAAG,OAAO,CAAC;AAC/C,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;;AAEhB,EAAE,MAAM,SAAS;AACjB,IAAI,MAAM,KAAK;AACf,QAAQ;AACR,QAAQ,OAAO,CAAC,SAAS,KAAK;AAC9B,QAAQ;AACR,QAAQ,OAAO,CAAC,SAAS;;AAEzB,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,OAAO;;AAE5B,EAAE,OAAO,CAAC,SAAS,UAAU,CAAC,GAAG,EAAE,aAAa,EAAE,QAAQ,EAAE;AAC5D,IAAI,IAAI,GAAG,IAAI,OAAO,GAAG,CAAC,MAAM,KAAK,UAAU,EAAE;AACjD,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,EAAE;AACxB,IAAI;;AAEJ,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,QAAQ,CAAC;;AAEhD,IAAI,IAAI,MAAM,KAAK,SAAS,EAAE;AAC9B,MAAM,OAAO,MAAM;AACnB,IAAI;;AAEJ,IAAI,MAAM,MAAM,GAAG,SAAS,GAAG,aAAa,CAAC,MAAM,GAAG,QAAQ;;AAE9D,IAAI,IAAI,MAAM,CAAC,MAAM,IAAI,MAAM,EAAE;AACjC,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO;AACvC,QAAQ,YAAY;AACpB,QAAQ,CAAC,KAAK,EAAE,aAAa,KAAK;AAClC,UAAU,OAAO,aAAa,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;AAC7C,QAAQ;AACR,OAAO;AACP,MAAM,IAAI,UAAU,CAAC,MAAM,IAAI,MAAM,EAAE;AACvC,QAAQ,OAAO,UAAU;AACzB,MAAM;AACN,IAAI;;AAEJ,IAAI,IAAI,QAAQ,IAAI,IAAI,EAAE;AAC1B,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;AAC9B,MAAM,QAAQ,GAAG,SAAS;AAC1B,IAAI;;AAEJ,IAAI,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,EAAE;AACjD,MAAM,MAAM,UAAU,GAAG,aAAa,GAAG,MAAM;AAC/C,MAAM,MAAM,KAAK,GAAG,EAAE;AACtB,MAAM,IAAI,KAAK,GAAG,CAAC;AACnB,MAAM,IAAI,KAAK;AACf,MAAM,IAAI,GAAG;;AAEb,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;AAC9B,QAAQ,KAAK,GAAG,GAAG;AACnB,QAAQ,GAAG,GAAG,GAAG;AACjB,QAAQ,MAAM,EAAE,MAAM,EAAE,GAAG,GAAG;AAC9B,QAAQ,OAAO,KAAK,GAAG,MAAM,EAAE,KAAK,EAAE,EAAE;AACxC,UAAU,KAAK,CAAC,IAAI;AACpB,YAAY,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,UAAU,EAAE,KAAK,KAAK,MAAM,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAC5E,cAAc;AACd,WAAW;AACX,QAAQ;AACR,MAAM,CAAC,MAAM;AACb,QAAQ,KAAK,GAAG,GAAG;AACnB,QAAQ,GAAG,GAAG,GAAG;AACjB,QAAQ,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;AACrC,QAAQ,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI;AAC/B,QAAQ,OAAO,KAAK,GAAG,MAAM,EAAE,KAAK,EAAE,EAAE;AACxC,UAAU,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC;AACjC,UAAU,MAAM,OAAO,GAAG,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;AACpD,UAAU,MAAM,KAAK,GAAG,UAAU;AAClC,YAAY,GAAG,CAAC,GAAG,CAAC;AACpB,YAAY,UAAU;AACtB,YAAY,OAAO,CAAC,MAAM,IAAI,KAAK,KAAK,MAAM,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC;AAC1D,WAAW;AACX,UAAU,IAAI,KAAK,KAAK,SAAS,EAAE;AACnC,YAAY,KAAK,CAAC,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;AACvC,UAAU;AACV,QAAQ;AACR,MAAM;;AAEN,MAAM,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;AAC5B,QAAQ,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI;AACzE,UAAU,CAAC,EAAE,EAAE,aAAa,CAAC;AAC7B,SAAS;AACT,MAAM;AACN,IAAI;;AAEJ,IAAI,OAAO,MAAM;AACjB,EAAE,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,CAAC;AACtB;;AC7FA,SAAS,UAAU,CAAC,GAAG,EAAE,SAAS,EAAA;IAC9B,MAAM,MAAM,GAAG,EAAE;AACjB,IAAA,KAAK,MAAM,GAAG,IAAI,SAAS,EAAE;AACzB,QAAA,IAAI,GAAG,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE;YACxB,MAAM,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC;QAC1B;IACJ;AACA,IAAA,KAAK,MAAM,GAAG,IAAI,GAAG,EAAE;AACnB,QAAA,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE;YAC3B,MAAM,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC;QAC1B;IACJ;AACA,IAAA,OAAO,MAAM;AACjB;AAEA;;;;;;;;;;;;;;;;;;;;AAoBG;SACa,MAAM,CAAC,KAAK,EAAE,KAAK,GAAG,CAAC,EAAA;IACnC,KAAK,GAAG,UAAU,CAAC,KAAK,EAAEA,MAAM,CAAC,KAAK,CAAC;AAEvC,IAAA,IAAI,KAAK,CAAC,MAAM,EAAE;QACd,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,UAAU,CAAC,KAAK,EAAEA,MAAM,CAAC,KAAK,CAAC,CAAC;IAC/E;IAEA,OAAOE,SAAe,CAAC,KAAK,EAAE,EAAC,MAAM,EAAE,KAAK,EAAC,CAAC;AAClD;;AC5CA,SAAS,UAAU,CAAC,KAAyB,EAAE,QAA+D,EAAA;AAC1G,IAAA,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE;QACnB,IAAI,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;YAC3B,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACzB;IACJ;AACJ;AAEA,SAAS,SAAS,CAAC,KAAyB,EAAE,QAA8D,EAAA;AACxG,IAAA,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE;QACnB,IAAI,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YAC1B,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACzB;IACJ;AACJ;AAEA,SAAS,eAAe,CAAC,KAAyB,EAAE,KAAU,EAAA;AAC1D,IAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;QAC/C,OAAO,eAAe,CAAC,KAAK,EAAG,KAAa,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAClE;SAAO;AACH,QAAA,OAAO,KAAK;IAChB;AACJ;AAEA,SAAS,UAAU,CAAC,KAAK,EAAA;IACrB,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC;AACrC;AAEA,SAAS,cAAc,CAAC,GAAW,EAAE,IAAY,EAAE,EAAU,EAAA;IACzD,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC;AAAE,IAAA,OAAO,GAAG,CAAC,IAAI,CAAC;AACzC;AAEM,SAAU,SAAS,CAAC,KAAyB,EAAA;AAC/C,IAAA,KAAK,CAAC,OAAO,GAAG,CAAC;;AAGjB,IAAA,UAAU,CAAC,KAAK,EAAE,CAAC,MAAM,KAAI;AACzB,QAAA,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,SAAS,EAAE;AACxD,YAAA,cAAc,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC;QACzC;AACA,QAAA,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO,EAAE;YACzB,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,KAAK,KAAI;AACjC,gBAAA,OAAO,KAAK,CAAC,OAAO,EAAE;AAC1B,YAAA,CAAC,CAAC;QACN;AACJ,IAAA,CAAC,CAAC;AAEF,IAAA,SAAS,CAAC,KAAK,EAAE,CAAC,KAAK,KAAI;AACvB,QAAA,UAAU,CAAC,KAAK,EAAE,CAAC,MAAM,KAAI;AACzB,YAAA,IAAI,MAAM,CAAC,qBAAqB,CAAC,KAAK,SAAS,EAAE;AAC7C,gBAAA,cAAc,CAAC,MAAM,EAAE,qBAAqB,EAAE,gBAAgB,CAAC;YACnE;AACJ,QAAA,CAAC,CAAC;AAEF,QAAA,SAAS,CAAC,KAAK,EAAE,CAAC,KAAK,KAAI;AACvB,YAAA,IAAI,KAAK,CAAC,kBAAkB,CAAC,KAAK,SAAS,EAAE;AACzC,gBAAA,cAAc,CAAC,KAAK,EAAE,kBAAkB,EAAE,oBAAoB,CAAC;YACnE;AACA,YAAA,IAAI,KAAK,CAAC,YAAY,CAAC,KAAK,SAAS,EAAE;AACnC,gBAAA,cAAc,CAAC,KAAK,EAAE,YAAY,EAAE,cAAc,CAAC;YACvD;AACA,YAAA,IAAI,KAAK,CAAC,YAAY,CAAC,KAAK,SAAS,EAAE;AACnC,gBAAA,cAAc,CAAC,KAAK,EAAE,YAAY,EAAE,cAAc,CAAC;YACvD;AACJ,QAAA,CAAC,CAAC;AACN,IAAA,CAAC,CAAC;;AAGF,IAAA,YAAY,CAAC,KAAK,EAAE,EAAC,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAC,EAAE,CAAC,QAAQ,KAAI;QAC1D,MAAM,KAAK,GAAG,eAAe,CAAC,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC;AAEpD,QAAA,IAAI,UAAU,CAAC,KAAK,CAAC,EAAE;YACnB,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;AACzB,gBAAA,IAAI,CAAC,CAAC,CAAC,GAAG,eAAe,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;AAC7C,YAAA,CAAC,CAAC;QACN;AAEA,QAAA,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC;AACvB,IAAA,CAAC,CAAC;AACF,IAAA,OAAO,KAAK,CAAC,WAAW,CAAC;AAEzB,IAAA,SAAS,CAAC,KAAK,EAAE,CAAC,KAAK,KAAI;;;;AAKvB,QAAA,UAAU,CAAC,KAAK,EAAE,CAAC,MAAM,KAAI;AACzB,YAAA,OAAO,MAAM,CAAC,eAAe,CAAC;AAC9B,YAAA,OAAO,MAAM,CAAC,eAAe,CAAC;AAClC,QAAA,CAAC,CAAC;AAEF,QAAA,SAAS,CAAC,KAAK,EAAE,CAAC,KAAK,KAAI;AACvB,YAAA,IAAI,KAAK,CAAC,WAAW,CAAC,EAAE;gBACpB,IAAI,CAAC,KAAK,CAAC,MAAM;AAAE,oBAAA,KAAK,CAAC,MAAM,GAAG,EAAE;gBACpC,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,KAAK,CAAC,WAAW,CAAC;AAC9C,gBAAA,OAAO,KAAK,CAAC,WAAW,CAAC;YAC7B;AAEA,YAAA,IAAI,KAAK,CAAC,WAAW,CAAC,EAAE;gBACpB,IAAI,CAAC,KAAK,CAAC,MAAM;AAAE,oBAAA,KAAK,CAAC,MAAM,GAAG,EAAE;gBACpC,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,KAAK,CAAC,WAAW,CAAC;AAC9C,gBAAA,OAAO,KAAK,CAAC,WAAW,CAAC;YAC7B;AACJ,QAAA,CAAC,CAAC;AACN,IAAA,CAAC,CAAC;IAEF,SAAS,gBAAgB,CAAC,IAAI,EAAA;QAC1B,SAAS,YAAY,CAAC,MAAM,EAAA;AACxB,YAAA,OAAO,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAI;AAC/B,gBAAA,OAAO,CAAC,CAAC,IAAI,EAAE;AACnB,YAAA,CAAC,CAAC;QACN;AAEA,QAAA,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;;AAErB,YAAA,OAAO,IAAI;QAEf;AAAO,aAAA,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;AACjC,YAAA,OAAO,YAAY,CAAC,IAAI,CAAC;QAE7B;AAAO,aAAA,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;YACjC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;gBACxB,IAAI,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACnC,YAAA,CAAC,CAAC;AACF,YAAA,OAAO,IAAI;QAEf;aAAO;AACH,YAAA,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC;QAC5C;IACJ;AAEA,IAAA,SAAS,CAAC,KAAK,EAAE,CAAC,KAAK,KAAI;AACvB,QAAA,UAAU,CAAC,KAAK,EAAE,CAAC,MAAM,KAAI;AACzB,YAAA,IAAI,MAAM,CAAC,WAAW,CAAC,EAAE;gBACrB,MAAM,CAAC,WAAW,CAAC,GAAG,gBAAgB,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;YAC/D;AACJ,QAAA,CAAC,CAAC;AACN,IAAA,CAAC,CAAC;;;;;;;;;;;;;IAeF,IAAI,gBAAgB,GAAG,CAAC;AACxB,IAAA,KAAK,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;QAC/C,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;AAC7B,QAAA,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE;AACzB,YAAA,gBAAgB,GAAG,CAAC,GAAG,CAAC;YACxB;QACJ;IACJ;IAEA,MAAM,YAAY,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC;IAC1D,YAAY,CAAC,OAAO,EAAE;IACtB,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC;AAEhD,IAAA,OAAO,KAAK;AAChB;;ACnKA;;;;;;AAMG;AACG,SAAU,WAAW,CAAC,KAAyB,EAAA;IACjD,MAAM,SAAS,GAAG,EAAE;AAEpB,IAAA,SAAS,CAAC,KAAK,EAAE,CAAC,KAA4D,KAAI;AAC9E,QAAA,IAAI,KAAK,CAAC,MAAM,EAAE;YACd,KAAK,CAAC,MAAM,GAAG,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC;QAC9C;AACJ,IAAA,CAAC,CAAC;IAEF,YAAY,CAAC,KAAK,EAAE,EAAC,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAC,EAAE,CAAC,EAAC,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,EAAC,KAAI;AACpF,QAAA,IAAI,YAAY,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,SAAS,KAAK,IAAI;YAAE;AAC9E,QAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YACpD,GAAG,CAAC,eAAe,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;YACtC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAClC;aAAO,IAAK,SAAiB,CAAC,MAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AAC/D,YAAA,GAAG,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;QAClC;AACJ,IAAA,CAAC,CAAC;AAEF,IAAA,OAAO,KAAK;AAChB;;AClCA;;;;;AAKG;AACG,SAAU,aAAa,CAAI,cAAiB,EAAA;AAC9C,IAAA,OAAO,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC,CAAC;AACvE;AAEA;;;;;;;;;;;;;AAaG;AACH,SAAS,gBAAgB,CAAC,cAAsB,EAAA;IAC5C,OAAO,cAAc,CAAC,OAAO,CAAC,oBAAoB,EAAE,CAAC,KAAK,EAAE,OAAO,KAAI;QACnE,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,kDAAkD,CAAC;QACnF,IAAI,SAAS,EAAE;AACX,YAAA,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;AACrC,YAAA,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAA,EAAG,UAAU,CAAC,CAAC,CAAC,GAAG,GAAG,CAAA,CAAA,CAAG,CAAC;AACzE,YAAA,OAAO,CAAA,IAAA,EAAO,OAAO,CAAC,KAAK,QAAQ,GAAG,GAAG,GAAG,EAAE,CAAA,CAAA,EAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI;QAChG;AACA,QAAA,OAAO,KAAK;AAChB,IAAA,CAAC,CAAC;AACN;;AC3BA;;;;;;;;;;AAUG;AACG,SAAU,OAAO,CAAC,KAAyB,EAAA;IAC7C,IAAI,QAAQ,GAAG,KAAK;AAEpB,IAAA,IAAI,KAAK,CAAC,OAAc,KAAK,CAAC,EAAE;AAC5B,QAAA,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC;QACxB,QAAQ,GAAG,IAAI;IACnB;AAEA,IAAA,IAAI,KAAK,CAAC,OAAO,KAAK,CAAC,EAAE;AACrB,QAAA,QAAQ,GAAG,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC;QAC/B,QAAQ,GAAG,IAAI;IACnB;IAEA,YAAY,CAAC,KAAK,EAAE,EAAC,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAC,EAAE,CAAC,EAAC,KAAK,EAAE,SAAS,EAAE,GAAG,EAAC,KAAI;QACzE,IAAI,CAAA,SAAS,KAAA,IAAA,IAAT,SAAS,KAAA,MAAA,GAAA,MAAA,GAAT,SAAS,CAAE,IAAI,MAAK,OAAO,EAAE;AAC7B,YAAA,GAAG,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC7B;AACJ,IAAA,CAAC,CAAC;IAEF,IAAI,CAAC,QAAQ,EAAE;QACX,MAAM,IAAI,KAAK,CAAC,CAAA,oBAAA,EAAuB,KAAK,CAAC,OAAO,CAAA,CAAE,CAAC;IAC3D;AAEA,IAAA,OAAO,KAAK;AAChB;;ACzCA,MAAM,EAAE,GAAG;AAqIX,MAAM,UAAU,GAAG;IACf,eAAe;IACf,qBAAqB;IACrB,sBAAsB;IACtB,uBAAuB;IACvB,gBAAgB;IAChB,wBAAwB;IACxB,YAAY;IACZ,kBAAkB;IAClB,gBAAgB;IAChB,2BAA2B;;AAG/B,MAAM,aAAa,GAAG;IAClB,eAAe;IACf,cAAc;gBACdV;;AAGJ,MAAM,KAAK,GAAG,EAAC,SAAS,EAAE,YAAY,EAAE,UAAU;;;;","x_google_ignoreList":[40,51,52,105]}