{"version":3,"file":"sp-treeview-v4.mjs","sources":["../../../projects/sp-treeview-v4/src/lib/app/sp-treeview/model/tree-level-config.ts","../../../projects/sp-treeview-v4/src/lib/app/sp-treeview/model/dropdown-level-config.ts","../../../projects/sp-treeview-v4/src/lib/app/sp-treeview/model/config.ts","../../../projects/sp-treeview-v4/src/lib/app/sp-treeview/model/node-state.ts","../../../projects/sp-treeview-v4/src/lib/app/sp-treeview/model/node-level-config.ts","../../../projects/sp-treeview-v4/src/lib/app/sp-treeview/model/node.ts","../../../projects/sp-treeview-v4/src/lib/app/sp-treeview/model/sp-treeview-node-template-context.ts","../../../projects/sp-treeview-v4/src/lib/app/sp-treeview/sp-treeview-node/sp-treeview-node.component.ts","../../../projects/sp-treeview-v4/src/lib/app/sp-treeview/sp-treeview-node/sp-treeview-node.component.html","../../../projects/sp-treeview-v4/src/lib/app/sp-treeview/sp-treeview/sp-treeview.component.ts","../../../projects/sp-treeview-v4/src/lib/app/sp-treeview/sp-treeview/sp-treeview.component.html","../../../projects/sp-treeview-v4/src/lib/app/sp-treeview/sp-treeview-dropdown/sp-treeview-dropdown.component.ts","../../../projects/sp-treeview-v4/src/lib/app/sp-treeview/sp-treeview-dropdown/sp-treeview-dropdown.component.html","../../../projects/sp-treeview-v4/src/lib/app/sp-treeview/sp-treeview-overlay/sp-treeview-overlay.component.ts","../../../projects/sp-treeview-v4/src/lib/app/sp-treeview/sp-treeview-overlay/sp-treeview-overlay.component.html","../../../projects/sp-treeview-v4/src/lib/app/material/material.module.ts","../../../projects/sp-treeview-v4/src/lib/app/sp-treeview/sp-treeview.module.ts","../../../projects/sp-treeview-v4/src/sp-treeview-v4.ts"],"sourcesContent":["import type { SpTreeviewComponent } from '../sp-treeview/sp-treeview.component';\n\nexport const SELECT_NONE = 0;\nexport const SELECT_CHECKBOX = 1;\nexport const SELECT_RADIO = 2;\n\n/**\n * this class sets the config for complete tree\n */\nexport class TreeLevelConfig {\n\n    private _treeview: SpTreeviewComponent;\n\n    private loadChildrenStack:any = [];\n\n    private _progress = false;\n    private _searchStr = '';\n\n    constructor(\n        // make service call for children once or always\n        private _loadOnce = true,\n        private _allNode = true,\n        private _select = SELECT_NONE,\n        private _deleteNode = false,\n        private _addChild = false,\n        private _search = true\n    ) { }\n\n    public get treeview(): SpTreeviewComponent {\n        return this._treeview;\n    }\n\n    public set treeview(treeview: SpTreeviewComponent) {\n        this._treeview = treeview;\n    }\n\n    public get loadOnce(): boolean {\n        return this._loadOnce;\n    }\n\n    public set loadOnce(loadOnce: boolean) {\n        this._loadOnce = loadOnce;\n    }\n\n    public get allNode(): boolean {\n        return this._allNode;\n    }\n\n    public set allNode(allNode: boolean) {\n        this._allNode = allNode;\n    }\n\n    public get select(): number {\n        return this._select;\n    }\n\n    public set select(select: number) {\n        this._select = select;\n    }\n\n    public get search(): boolean {\n        return this._search;\n    }\n\n    public set search(search: boolean) {\n        this._search = search;\n    }\n\n    public get searchStr(): string {\n        return this._searchStr;\n    }\n\n    public set searchStr(searchStr: string) {\n        this._searchStr = searchStr;\n    }\n\n    public get progress(): boolean {\n        return this._progress;\n    }\n\n    public set progress(progress: boolean) {\n        this._progress = progress;\n    }\n\n    public get deleteNode(): boolean {\n        return this._deleteNode;\n    }\n\n    public set deleteNode(deleteNode: boolean) {\n        this._deleteNode = deleteNode;\n    }\n\n    public get addChild(): boolean {\n        return this._addChild;\n    }\n\n    public set addChild(addChild: boolean) {\n        this._addChild = addChild;\n    }\n\n    public loadChildren() {\n        this.loadChildrenStack.push(1);\n        // console.log(\"push\" + this.loadChildrenStack.length);\n    }\n    public childrenLoaded() {\n        this.loadChildrenStack.pop();\n        if (this.loadChildrenStack.length == 0) {\n            this.progress = false;\n        }\n        // console.log(\"pop\" + this.loadChildrenStack.length);\n    }\n\n    public checkloadChildrenStackSize() {\n        if (this.loadChildrenStack.length == 0) {\n            this.progress = false;\n        }\n    }\n\n}\n\n","\n/**\n * this class public set the config for dropdown\n */\nexport class DropdownLevelConfig {\n    constructor(\n        private _height = 'auto',\n        private _showDropdownDefault = false\n    ) { }\n\n    public get height(): string {\n        return this._height;\n    }\n\n    public set height(height: string) {\n        this._height = height;\n    }\n\n    public get showDropdownDefault(): boolean {\n        return this._showDropdownDefault;\n    }\n\n    public set showDropdownDefault(showDropdownDefault: boolean) {\n        this._showDropdownDefault = showDropdownDefault;\n    }\n\n}\n\n","import { TreeLevelConfig } from './tree-level-config';\nimport { DropdownLevelConfig } from './dropdown-level-config';\n\nexport class Config {\n    constructor(\n        private _treeLevelConfig = new TreeLevelConfig(),\n        private _dropdownLevelConfig = new DropdownLevelConfig()\n    ) { }\n\n    public get treeLevelConfig(): TreeLevelConfig {\n        return this._treeLevelConfig;\n    }\n\n    public set treeLevelConfig(treeLevelConfig: TreeLevelConfig) {\n        this._treeLevelConfig = treeLevelConfig;\n    }\n\n    public get dropdownLevelConfig(): DropdownLevelConfig {\n        return this._dropdownLevelConfig;\n    }\n\n    public set dropdownLevelConfig(dropdownLevelConfig: DropdownLevelConfig) {\n        this._dropdownLevelConfig = dropdownLevelConfig;\n    }\n}\n","export const CHECKED = 1;\nexport const UNCHECKED = 0;\nexport const INDETERMINATE = -1;\n\n/**\n * this class specifies the state(checked, collapsed, disabled) of the node\n */\nexport class NodeState {\n   \n    constructor(\n        private _checked = UNCHECKED,\n        private _collapsed = true,\n        private _disabled = false,\n        private _hidden = false\n    ) { }\n\n    public get checked(): number {\n        return this._checked;\n    }\n\n    public set checked(checked: number) {\n        this._checked = checked;\n    }\n\n    public get collapsed(): boolean {\n        return this._collapsed;\n    }\n\n    public set collapsed(collapsed: boolean) {\n        this._collapsed = collapsed;\n    }\n\n    public get disabled(): boolean {\n        return this._disabled;\n    }\n\n    public set disabled(disabled: boolean) {\n        this._disabled = disabled;\n    }\n\n    public get hidden(): boolean {\n        return this._hidden;\n    }\n\n    public set hidden(hidden: boolean) {\n        this._hidden = hidden;\n    }\n\n   \n}\n","import { Optional } from \"@angular/core\";\n\n/**\n * this class properties if public set will override the tree level config\n */\nexport class NodeLevelConfig {\n    constructor(\n        @Optional() private _deleteNode: boolean,\n        @Optional() private _addChild: boolean,\n        @Optional() private _editNode: boolean,\n        @Optional() private _renameNode: boolean\n    ) {\n        if (this._addChild == undefined || this._addChild === undefined) {\n            this._addChild = false;\n        }\n        if (this._deleteNode == undefined || this._deleteNode === undefined) {\n            this._deleteNode = false;\n        }\n        if (this._editNode == undefined || this._editNode === undefined) {\n            this._editNode = false;\n        }\n        if (this._renameNode == undefined || this._renameNode === undefined) {\n            this._renameNode = false;\n        }\n    }\n\n    public get deleteNode(): boolean {\n        return this._deleteNode;\n    }\n    public set deleteNode(deleteNode: boolean) {\n        this._deleteNode = deleteNode;\n    }\n\n    public get addChild(): boolean {\n        return this._addChild;\n    }\n    public set addChild(addChild: boolean) {\n        this._addChild = addChild;\n    }\n\n    public get editNode(): boolean {\n        return this._editNode;\n    }\n    public set editNode(editNode: boolean) {\n        this._editNode = editNode;\n    }\n    public get renameNode(): boolean {\n        return this._editNode;\n    }\n    public set renameNode(renameNode: boolean) {\n        this._renameNode = renameNode;\n    }\n}\n","import { Config } from './config';\nimport { EventEmitter, Optional } from '@angular/core';\nimport { NodeState, CHECKED, UNCHECKED, INDETERMINATE } from './node-state';\nimport { NodeLevelConfig } from './node-level-config';\n\nexport class Node {\n\n    private config: Config;\n    private loadChildrenEvent: EventEmitter<Node>;\n\n    /**\n     * recursively sets prototype Node on the object and its children\n     *\n     * @param node\n     */\n    public static nodify(obj: any): Node {\n        const node: Node = Object.setPrototypeOf(obj, Node.prototype);\n        // nodeState\n        if (node.nodeState == null || node.nodeState == undefined) {\n            node.nodeState = new NodeState();\n        } else {\n            node.nodeState = Object.setPrototypeOf(node.nodeState, NodeState.prototype);\n        }\n        // nodeLevelConfig\n        if (node.nodeLevelConfig == null || node.nodeLevelConfig == undefined) {\n            node.nodeLevelConfig = new NodeLevelConfig(false,false, false,false);\n        } else {\n            node.nodeLevelConfig = Object.setPrototypeOf(node.nodeLevelConfig, NodeLevelConfig.prototype);\n        }\n        // children \n        if (node.children != null) {\n            node.children.forEach(child => { this.nodify(child); child.parent = node; });\n        }\n        return node;\n    }\n\n    public static toNodeArray(objArr: any[]): Node[] {\n        let nodes: Node[] = [];\n        objArr.forEach(obj => {\n            // console.log(\"obj.children\");\n            // console.log(obj.children);\n            if(obj.children!=null){\n                nodes.push(new Node(obj.name, obj.value, this.toNodeArray(obj.children), obj.progress, obj.nodeState, obj.nodeLevelConfig));\n                 \n  \n            }else{\n                nodes.push(new Node(obj.name, obj.value, obj.children, obj.progress, obj.nodeState, obj.nodeLevelConfig)); \n  \n            }\n                 });\n                 \n        return nodes;\n    }\n\n    private _parent: Node ;\n\n    constructor(\n        private _name: string,\n        private _value: any,\n        @Optional() private _children: Node[],\n        private _progress = false,\n        private _nodeState = new NodeState(),\n        private _nodeLevelConfig = new NodeLevelConfig(false,false, false,false)\n    ) {\n        if (this._children == undefined || this._children === undefined) {\n            this._children ;\n        }\n    }\n\n    public get name(): string {\n        return this._name;\n    }\n\n    public set name(name: string) {\n        this._name = name;\n    }\n\n    public get value(): any {\n        return this._value;\n    }\n\n    public set value(value: any) {\n        this._value = value;\n    }\n\n    public get children(): Node[] {\n        return this._children;\n    }\n\n    public set children(children: Node[]) {\n        this._children = children;\n    }\n\n    public loadChildren(children: any[]) {\n        // children.forEach(child => Node.nodify(child));\n        this._children = children;\n        Node.nodify(this);\n        this.setConfigRecursively(this.config);\n        this._progress = false;\n        this._nodeState.collapsed = false;\n        this.verifyStateRecursive();\n        //console.log(typeof this.config.treeLevelConfig.searchStr);\n        if (this.config!=null && this.config.treeLevelConfig!=null && this.config.treeLevelConfig.searchStr != null && this.config.treeLevelConfig.searchStr != '') {\n            this._children.forEach(child => child.filter(this.config.treeLevelConfig.searchStr, this.loadChildrenEvent));\n        }\n        if (this.config!=null && this.config.treeLevelConfig!=null)\n        this.config.treeLevelConfig.childrenLoaded();\n    }\n\n    public addChild(child: Node) {\n        if (this._children === null || this._children === undefined) {\n            this._children = [];\n        }\n        this._children.push(Node.nodify(child));\n        Node.nodify(this);\n    }\n\n    public get progress(): boolean {\n        return this._progress;\n    }\n\n    public set progress(progress: boolean) {\n        this._progress = progress;\n    }\n\n    public get nodeState(): NodeState {\n        return this._nodeState;\n    }\n\n    public set nodeState(nodeState: NodeState) {\n        this._nodeState = nodeState;\n    }\n\n    public get nodeLevelConfig(): NodeLevelConfig {\n        return this._nodeLevelConfig;\n    }\n\n    public set nodeLevelConfig(nodeLevelConfig: NodeLevelConfig) {\n        this._nodeLevelConfig = nodeLevelConfig;\n    }\n\n    public get parent(): Node {\n        return this._parent;\n    }\n\n    public set parent(node: Node) {\n        this._parent = node;\n    }\n\n    public setConfigRecursively(config: Config) {\n        this.config = config;\n        if (this.children != null) {\n            this.children.forEach(child => child.setConfigRecursively(config));\n        }\n    }\n\n    public verifyStateRecursive() {\n        if (this.children == null) {\n            return;\n        }\n\n        if (this._nodeState.checked === CHECKED) {\n            this.changeChildrenRecursive();\n            return;\n        }\n\n        this.children.filter(n => n.children != null).forEach(n => n.verifyStateRecursive());\n\n        this.checkImmediateChildren();\n    }\n\n    public changeChildrenRecursive() {\n        if (this.children == null) {\n            return;\n        }\n        this.children.forEach(n => {\n            n.nodeState.checked = this.nodeState.checked;\n            n.changeChildrenRecursive();\n        });\n    }\n\n    public checkImmediateChildren() {\n       // console.log(this.config.treeLevelConfig.customSearch);\n        if (this.children && this.children.length > 0) {\n            this.children.forEach(c => c.checkImmediateChildren());\n\n            let checkedChildren: number = this.children.filter(n => n.nodeState.checked === CHECKED).length;\n\n            let indeterminateChildren: number = this.children.filter(n => n.nodeState.checked === INDETERMINATE).length;\n\n            if (indeterminateChildren > 0) {\n                // if indeterminate child the indeterminate\n                this.nodeState.checked = INDETERMINATE;\n            } else {\n                // if no indeterminate child\n                if (checkedChildren === this.children.length) {\n                   \n                    // if all checked then checked\n                    if(window.localStorage.getItem(\"check\")==\"true\"){\n                    }else{\n                        this.nodeState.checked = CHECKED;\n                    }\n                    //this.nodeState.checked = CHECKED;\n                } else if (checkedChildren === 0) {\n                    // if all unchecked then unchecked\n                    this.nodeState.checked = UNCHECKED;\n                } else {\n                    // if not all checked then indeterminate\n                    this.nodeState.checked = INDETERMINATE;\n                }\n            }\n        }\n    }\n\n    public getCheckedValues(): Node[] {\n        if (this.nodeState.checked === CHECKED) {\n            return [this]\n        }\n        if (this.children) {\n            let values:any = [];\n            this.children.forEach(n => {\n                // console.log(\"getCheckedValues\");\n                n.getCheckedValues().forEach(v => values.push(v));\n            });\n            return values;\n        }\n        return [];\n    }\n\n    public expandAndShowParentRecursively() {\n        if (this.parent != null) {\n            this.parent.nodeState.hidden = false;\n            this.parent.nodeState.collapsed = false;\n            this.parent.expandAndShowParentRecursively();\n        }\n        this.config.treeLevelConfig.checkloadChildrenStackSize();\n    }\n\n    public filter(text: string, loadChildren: EventEmitter<Node>): boolean {\n        this.loadChildrenEvent = loadChildren;\n        \n        if (this.children == null) {\n            if (this.name.toLowerCase().indexOf(text.toLowerCase())!=-1) {\n                this.nodeState.hidden = false;\n                this.expandAndShowParentRecursively();\n                return true;\n            } else {\n                this.nodeState.hidden = true;\n                return false;\n            }\n        } else {\n            if (this.children.length === 0) {\n                this.progress = true;\n                loadChildren.emit(this);\n            }\n            let matchFound = false;\n            this.children.forEach(child => {\n                let childMatchFound = child.filter(text, loadChildren);\n                if (!matchFound) {\n                    matchFound = childMatchFound;\n                }\n            });\n            if (matchFound) {\n                this.nodeState.hidden = false;\n                this.nodeState.collapsed = false;\n                this.expandAndShowParentRecursively();\n                return true;\n            } else {\n                this.nodeState.collapsed = true;\n                if (this.name.toLowerCase().indexOf(text.toLowerCase())!=-1) {\n                    this.nodeState.hidden = false;\n                    this.expandAndShowParentRecursively();\n                    return true;\n                } else {\n                    this.nodeState.hidden = true;\n                    return false;\n                }\n            }\n        }\n    }\n\n    public unHideChildren() {\n        if (this.children) {\n            this.children.forEach(child => {\n                child.nodeState.hidden = false;\n            });\n        }\n    }\n\n    public setCheckedRecursively(checked: boolean) {\n        if (checked) {\n            this.nodeState.checked = CHECKED;\n        } else {\n            this.nodeState.checked = UNCHECKED;\n        }\n        if (this.children) {\n            this.children.forEach(child => {\n                child.setCheckedRecursively(checked);\n            });\n        }\n    }\n\n    public removeMe() {\n        if (this.parent == null) {\n            this.config.treeLevelConfig.treeview.nodes = this.config.treeLevelConfig.treeview.nodes.filter(node => node.value != this.value);\n        } else {\n            this.parent.children = this.parent.children.filter(child => child.value != this.value);\n        }\n    }\n\n    public search() {\n        //console.log(\"Hello in search\")\n    }\n}\n","import { SpTreeviewNodeTemplate } from './sp-treeview-node-template';\nimport { EventEmitter } from '@angular/core';\n// import { MatRadioChange, MatCheckboxChange } from '@angular/material';\nimport { CHECKED, UNCHECKED } from './node-state';\nimport { MatRadioChange } from '@angular/material/radio';\nimport { MatCheckboxChange } from '@angular/material/checkbox';\nimport { Config } from './config';\nimport { Node } from './node';\n\nexport class SpTreeviewNodeTemplateContext implements SpTreeviewNodeTemplate {\n\n    node: Node = new Node('','',[]);\n    config: Config = new Config();\n\n    radioSelect: EventEmitter<Node[]> = new EventEmitter;\n    checkboxSelect: EventEmitter<null>;\n    delete: EventEmitter<Node>;\n    addChild: EventEmitter<Node> = new EventEmitter;\n    loadChildren: EventEmitter<Node>;\n    selectParent: EventEmitter<Node>;\n    constructor() {\n\n    }\n\n    public onCollapseExpand = (node: Node) => {\n        node.unHideChildren();\n        if (node.nodeState.collapsed) {\n            if ((this.config.treeLevelConfig.loadOnce && node.children.length === 0) || (!this.config.treeLevelConfig.loadOnce)) {\n                node.progress = true;\n                this.loadChildren.emit(node);\n                return;\n            }\n        }\n        node.nodeState.collapsed = !node.nodeState.collapsed;\n    }\n\n    public onDelete = (node: Node) => {\n        this.delete.emit(node);\n    }\n\n    public onAddChild = (node: Node) => {\n        this.addChild.emit(node);\n    }\n\n    public onLoadChildren = (node: Node) => {\n        this.loadChildren.emit(node);\n    }\n\n    public onRadioChange = (event: MatRadioChange) => {\n        this.radioSelect.emit([event.value]);\n    }\n\n    /**\n     * called when the checkbox value is changed\n     * sets checked value recursively\n     */\n    public onCheckChange = (event: MatCheckboxChange) => {\n        // set new check status for this node and its children\n        // console.log(this.node.children);\n        this.node.nodeState.checked = event.checked ? CHECKED : UNCHECKED;\n        this.node.changeChildrenRecursive();\n       \n        // notify parent of the change\n        this.selectParent.emit(this.node);\n        this.checkboxSelect.emit();\n    }\n}\n","import { Component, EventEmitter, Input, OnInit, Output, TemplateRef } from '@angular/core';\nimport { Config } from '../model/config';\nimport { Node } from '../model/node';\nimport { CHECKED, INDETERMINATE, UNCHECKED } from '../model/node-state';\nimport { SpTreeviewNodeTemplate } from '../model/sp-treeview-node-template';\nimport { SpTreeviewNodeTemplateContext } from '../model/sp-treeview-node-template-context';\nimport { SELECT_CHECKBOX, SELECT_NONE, SELECT_RADIO } from '../model/tree-level-config';\n\n@Component({\n  selector: 'sp-treeview-node',\n  templateUrl: './sp-treeview-node.component.html',\n  styleUrls: ['./sp-treeview-node.component.scss']\n})\nexport class SpTreeviewNodeComponent implements OnInit {\n\n  public SELECT_CHECKBOX = SELECT_CHECKBOX;\n  public SELECT_RADIO = SELECT_RADIO;\n  public SELECT_NONE = SELECT_NONE;\n\n  public CHECKED = CHECKED;\n  public UNCHECKED = UNCHECKED;\n  public INDETERMINATE = INDETERMINATE;\n\n  @Input() public template: TemplateRef<SpTreeviewNodeTemplate>;\n  @Input() public contextPrototype: any;\n\n  @Input() public node: Node;\n  @Input() public config: Config = new Config();\n\n  @Output() public radioSelect: EventEmitter<Node[]> = new EventEmitter<Node[]>();\n  @Output() public checkboxSelect: EventEmitter<null> = new EventEmitter<null>();\n\n  @Output() public delete: EventEmitter<Node> = new EventEmitter<Node>();\n  @Output() public addChild: EventEmitter<Node> = new EventEmitter<Node>();\n  @Output() public loadChildren: EventEmitter<Node> = new EventEmitter<Node>();\n  @Output() public selectParent: EventEmitter<Node> = new EventEmitter<Node>();\n  @Output() dereference: EventEmitter<Node> = new EventEmitter<Node>();\n\n  public context = new SpTreeviewNodeTemplateContext();\n  @Output() renameNode: EventEmitter<Node> = new EventEmitter<Node>();\n  constructor() {\n\n  }\n\n  ngOnInit() {\n    // set input context prototype\n    this.context = Object.setPrototypeOf(this.context, this.contextPrototype);\n    // input\n    this.context.node = this.node;\n    this.context.config = this.config;\n    // output\n    this.context.addChild = this.addChild;\n    this.context.delete = this.delete;\n    this.context.loadChildren = this.loadChildren;\n    this.context.checkboxSelect = this.checkboxSelect;\n    this.context.radioSelect = this.radioSelect;\n    this.context.selectParent = this.selectParent;\n  }\n\n  onDelete = (node: Node) => {\n    this.delete.emit(node);\n  }\n\n  onAddChild = (node: Node) => {\n    this.addChild.emit(node);\n  }\n\n  onLoadChildren = (node: Node) => {\n    this.loadChildren.emit(node);\n  }\n\n  onSelectParent = (node: Node) => {\n    this.selectParent.emit(node);\n  }\n\n  onRadioChange(nodes: Node[]) {\n    this.radioSelect.emit(nodes);\n  }\n\n  onCheckChange(nodes: Node[]) {\n    \n    this.node.checkImmediateChildren();\n    this.checkboxSelect.emit();\n  }\n\n  search(text: string): boolean {\n    return this.node.filter(text, this.loadChildren);\n  }\n\n  onDereference(node:Node) {\n    this.dereference.emit(node);\n  }\n  onRenameNode(node:any) {\n    this.renameNode.emit(node);\n  }\n}\n","<div class=\"node-base\" [class.slideUp]=\"node.nodeState.hidden\">\n    <ng-template [ngTemplateOutlet]=\"template\" [ngTemplateOutletContext]=\"context\">\n    </ng-template>\n  \n    <!-- <div class=\"node-child\" *ngIf=\"!node.collapsed\"> -->\n    <div class=\"node-child\" [class.slideUp]=\"node.nodeState.collapsed\">\n      <sp-treeview-node *ngFor=\"let child of node.children\" [template]=\"template\" [contextPrototype]=\"contextPrototype\" [node]=\"child\"\n        [config]=\"config\" (radioSelect)=\"onRadioChange($event)\" (checkboxSelect)=\"onCheckChange($event);\" (delete)=\"onDelete($event)\"\n        (addChild)=\"onAddChild($event)\" (loadChildren)=\"onLoadChildren($event)\" (selectParent)=\"onSelectParent($event)\" (renameNode)=\"onRenameNode($event)\">\n      </sp-treeview-node>\n    </div>\n  </div>","import { Component, EventEmitter, Input, OnDestroy, OnInit, Output, QueryList, TemplateRef, ViewChildren } from '@angular/core';\nimport { MatCheckboxChange } from '@angular/material/checkbox';\nimport { MatRadioChange } from '@angular/material/radio';\nimport { Config } from '../model/config';\nimport { Node } from '../model/node';\nimport { CHECKED, INDETERMINATE, UNCHECKED } from '../model/node-state';\nimport { SpTreeviewNodeTemplate } from '../model/sp-treeview-node-template';\nimport { SpTreeviewNodeTemplateContext } from '../model/sp-treeview-node-template-context';\nimport { SELECT_CHECKBOX, SELECT_NONE, SELECT_RADIO } from '../model/tree-level-config';\nimport { SpTreeviewNodeComponent } from '../sp-treeview-node/sp-treeview-node.component';\n\n@Component({\n  selector: 'sp-treeview',\n  templateUrl: './sp-treeview.component.html',\n  styleUrls: ['./sp-treeview.component.scss']\n})\nexport class SpTreeviewComponent implements OnInit, OnDestroy{\n  public searchString:string = \"\";\n  public SELECT_CHECKBOX = SELECT_CHECKBOX;\n  public SELECT_RADIO = SELECT_RADIO;\n  public SELECT_NONE = SELECT_NONE;\n\n  public CHECKED = CHECKED;\n  public UNCHECKED = UNCHECKED;\n  public INDETERMINATE = INDETERMINATE;\n  all:any;\n  //all = new Node('All', 'ALL');\n\n  @Input() nodes: Node[];\n  @Input() customSearch: boolean;\n  @Input() customRootText: string;\n  @Input() config: Config = new Config();\n\n  @Input() template: TemplateRef<SpTreeviewNodeTemplate>;\n  @Input() contextPrototype = SpTreeviewNodeTemplateContext.prototype;\n\n  @Output() change: EventEmitter<Node[]> = new EventEmitter<Node[]>();\n\n  @Output() delete: EventEmitter<Node> = new EventEmitter<Node>();\n  @Output() addChild: EventEmitter<Node> = new EventEmitter<Node>();\n  @Output() loadChildren: EventEmitter<Node> = new EventEmitter<Node>();\n  @Output() selectParent: EventEmitter<Node> = new EventEmitter<Node>();\n  @Output() search: EventEmitter<string> = new EventEmitter<string>();\n  @Output() searchTo: EventEmitter<string> = new EventEmitter<string>();\n  @Output() dereference: EventEmitter<Node> = new EventEmitter<Node>();\n  @Output() editNode: EventEmitter<Node> = new EventEmitter<Node>();\n  @ViewChildren('tree') trees: QueryList<SpTreeviewNodeComponent>;\n  @Output() renameNode: EventEmitter<Node> = new EventEmitter<Node>();\n  constructor() {\n  }\n\n  ngOnInit() {\n    if(this.customRootText==undefined || this.customRootText.length==0){\n      this.all = new Node('All', 'ALL',[]);\n    }else{\n      this.all = new Node(this.customRootText, 'ALL', []);\n    }\n    this.config.treeLevelConfig.treeview = this;\n    this.nodes.forEach(n => {\n      Node.nodify(n);\n      n.setConfigRecursively(this.config);\n    });\n  }\n\n  public getSelectedValues(): Node[] {\n    let values: Node[] = [];\n    this.nodes.forEach(n => n.getCheckedValues().forEach(v => values.push(v)));\n\n\n    return values;\n  }\n\n  onSearch(event: any) {\n    if(this.customSearch){\n      this.searchTo.emit(event);\n    }\n  }\n\n  applySearch(event: any) {\n    this.config.treeLevelConfig.progress = true;\n    if(this.customSearch){\n      this.search.emit(event);\n    }else{\n      this.trees.forEach(t => t.search(event));\n    }\n\n    setTimeout(()=>{  this.config.treeLevelConfig.progress = false;}, 1000);\n\n  }\n\n  onChange(nodes: Node[]) {\n    if (this.config.treeLevelConfig.select === SELECT_CHECKBOX) {\n      let values: any = [];\n      this.trees.forEach(t => {\n        t.node.getCheckedValues().forEach((v:Node)  => values.push(v))\n      });\n      let isAllChecked = true;\n      this.nodes.forEach(node => {\n        if (node.nodeState.checked != CHECKED) {\n          isAllChecked = false;\n        }\n      })\n      if (isAllChecked) {\n        this.all.nodeState.checked = CHECKED;\n        this.change.emit([this.all]);\n      } else {\n        this.all.nodeState.checked = UNCHECKED;\n        this.change.emit(values);\n      }\n    } else if (this.config.treeLevelConfig.select === SELECT_RADIO) {\n      this.all.nodeState.checked = UNCHECKED;\n      this.change.emit(nodes);\n    }\n  }\n\n  onDelete(node:Node) {\n    this.delete.emit(node);\n  }\n  onEditNode(node:any){\n    this.editNode.emit(node);\n  }\n  onAddChild(node: Node) {\n    this.addChild.emit(node);\n  }\n\n  onLoadChildren(node: Node) {\n    this.loadChildren.emit(node);\n    this.config.treeLevelConfig.loadChildren();\n  }\n\n  onSelectParent(node: Node){\n    this.selectParent.emit(node)\n  }\n\n  onAllRadioChange(event: MatRadioChange) {\n    alert(\"onAllRadioChange\");\n    this.change.emit([this.all]);\n    this.onSelectParent(this.all);\n  }\n\n  onAllCheckChange(event: MatCheckboxChange) {\n    this.onSelectParent(this.all);\n    this.nodes.forEach(node => {\n      node.setCheckedRecursively(event.checked);\n    });\n    if (event.checked) {\n      this.change.emit([this.all]);\n    } else {\n      this.change.emit([]);\n    }\n  }\n\n  onAddRoot() {\n    this.addChild.emit(this.all);\n  }\n  ngOnDestroy(){\n  }\n\n  onDereference(node:Node) {\n    this.dereference.emit(node);\n  }\n  onRenameNode(node:any) {\n    this.renameNode.emit(node);\n  }\n}\n","<div class=\"treeview-base\">\n    <div class=\"treeview-header\">\n      <mat-form-field *ngIf=\"config.treeLevelConfig.search\">\n        <!-- <input #search matInput placeholder=\"Type at least 3 characters\" (keyup)=\"onSearch($event)\" (change)=\"$event.stopPropagation()\"> -->\n        <input #search [(ngModel)]=\"searchString\" matInput (keyup)=\"onSearch(searchString)\" placeholder=\"Type at least 2 characters\" (change)=\"$event.stopPropagation()\">\n        <button (click)=\"applySearch(searchString)\" type=\"button\" mat-button mat-icon-button matPrefix color=\"primary\">\n          <mat-icon>search</mat-icon>\n        </button>\n        <!-- <button type=\"button\" mat-button mat-icon-button matSuffix color=\"warn\" (click)=\"$event.stopPropagation();search.value=null;applySearch('')\">\n          <mat-icon>close</mat-icon>\n        </button> -->\n      </mat-form-field>\n      <mat-progress-bar *ngIf=\"config.treeLevelConfig.progress\" mode=\"indeterminate\"></mat-progress-bar>\n    </div>\n    <div class=\"treeview-content\" [style.height]=\"config.dropdownLevelConfig.height\">\n      <mat-radio-group>\n        <div class=\"treeview-all\" *ngIf=\"config.treeLevelConfig.allNode\">\n          <span>\n            <!-- radio button -->\n            <mat-radio-button *ngIf=\"config.treeLevelConfig.select===SELECT_RADIO\" [value]=\"all\" [checked]=\"all.nodeState.checked===CHECKED\"\n              (change)=\"onAllRadioChange($event)\">\n              &nbsp;{{all.name}}&nbsp;&nbsp;\n            </mat-radio-button>\n            <!-- checkbox -->\n            <mat-checkbox *ngIf=\"config.treeLevelConfig.select===SELECT_CHECKBOX\" [value]=\"all.value\" [checked]=\"all.nodeState.checked===CHECKED\"\n              (change)=\"onAllCheckChange($event)\">\n              &nbsp;{{all.name}}&nbsp;&nbsp;\n            </mat-checkbox>\n            <!-- node name -->\n            <label *ngIf=\"config.treeLevelConfig.select===SELECT_NONE\">\n              &nbsp;{{all.name}}&nbsp;&nbsp;\n            </label>\n          <!-- </span>\n          <span> -->\n            <button mat-icon-button class=\"btn-small\" *ngIf=\"config.treeLevelConfig.addChild\" (click)=\"onAddRoot()\" title=\"Add\">\n              <mat-icon class=\"icon-small\" color=\"primary\">add</mat-icon>\n            </button>\n          </span>\n          <mat-divider></mat-divider>\n        </div>\n        <sp-treeview-node #tree *ngFor=\"let node of nodes;let i = index\" [template]=\"template?template:nodeTemplate\" [contextPrototype]=\"contextPrototype\"\n          [node]=\"node\" [config]=\"config\" (radioSelect)=\"onChange($event)\" (checkboxSelect)=\"onChange($event)\" (delete)=\"onDelete($event)\"\n          (addChild)=\"onAddChild($event)\" (editNode)=\"onEditNode($event)\" (selectParent)=\"onSelectParent($event)\" (loadChildren)=\"onLoadChildren($event)\" (renameNode)=\"onRenameNode($event)\"></sp-treeview-node>\n      </mat-radio-group>\n    </div>\n  </div>\n  \n  <link href=\"https://fonts.googleapis.com/icon?family=Material+Icons\" rel=\"stylesheet\">\n  <ng-template #nodeTemplate let-node=\"node\" let-config=\"config\" let-onCollapseExpand=\"onCollapseExpand\" let-onCheckChange=\"onCheckChange\"\n    let-onRadioChange=\"onRadioChange\" let-onDelete=\"onDelete\" let-onAddChild=\"onAddChild\" let-onLoadChildren=\"onLoadChildren\">\n    <div class=\"tree-node\">\n      <!-- expand/collapse button -->\n      <button type=\"button\" mat-button mat-icon-button *ngIf=\"node.children\" (click)=\"onCollapseExpand(node)\" color=\"primary\">\n        <mat-icon *ngIf=\"node.nodeState.collapsed\">keyboard_arrow_right</mat-icon>\n        <mat-icon *ngIf=\"!node.nodeState.collapsed\">keyboard_arrow_down</mat-icon>\n      </button>\n      <!-- if no children then empty space in place of button -->\n      <div style=\"width: 40px;height: 40px;flex-shrink: 0;\" *ngIf=\"node.children==null\"></div>\n      <!-- <button style=\"cursor: default;\" type=\"button\" mat-button mat-icon-button *ngIf=\"node.children==null\"></button> -->\n  \n      <!-- radio button -->\n      <mat-radio-button *ngIf=\"config.treeLevelConfig.select===SELECT_RADIO\" [checked]=\"node.nodeState.checked===CHECKED\" [value]=\"node\"\n        [disabled]=\"node.nodeState.disabled\" (change)=\"onRadioChange($event)\">\n        &nbsp;{{node.name}}&nbsp;&nbsp;\n      </mat-radio-button>\n      <!-- checkbox -->\n      <mat-checkbox *ngIf=\"config.treeLevelConfig.select===SELECT_CHECKBOX\" [checked]=\"node.nodeState.checked===CHECKED\" [value]=\"node.value\"\n        [indeterminate]=\"node.nodeState.checked===INDETERMINATE\" [disabled]=\"node.nodeState.disabled\" (change)=\"onCheckChange($event)\">\n        &nbsp;{{node.name}}&nbsp;&nbsp;\n      </mat-checkbox>\n  \n      <!-- node name -->\n      <label *ngIf=\"config.treeLevelConfig.select===SELECT_NONE\">\n        &nbsp;{{node.name}}&nbsp;&nbsp;\n      </label>\n  \n      <!-- add child -->\n      <button mat-icon-button class=\"btn-small\" *ngIf=\"((node.nodeLevelConfig.addChild!=null || node.nodeLevelConfig.addChild!=undefined) && node.nodeLevelConfig.addChild)\n       || ((node.nodeLevelConfig.addChild==null || node.nodeLevelConfig.addChild==undefined) && config.treeLevelConfig.addChild)\"\n        (click)=\"onAddChild(node)\" title=\"Add\">\n        <mat-icon class=\"icon-small\" color=\"primary\">add</mat-icon>\n      </button>\n  \n      <!-- edit node -->\n      <button mat-icon-button class=\"btn-small\" *ngIf=\"((node.nodeLevelConfig.editNode!=null || \n                                                          node.nodeLevelConfig.editNode!=undefined) && \n                                                          node.nodeLevelConfig.editNode)\"\n        (click)=\"onEditNode(node)\" title=\"Edit\">\n        <mat-icon class=\"icon-small\" color=\"primary\">edit</mat-icon>\n      </button>\n      <!-- rename node -->\n      <button mat-icon-button class=\"btn-small\"   *ngIf=\"((node.nodeLevelConfig.renameNode!=null || \n                                                            node.nodeLevelConfig.renameNode!=undefined) && \n                                                            node.nodeLevelConfig.renameNode) && node.value.isUserGroup=='true'\"\n        (click)=\"onRenameNode(node)\" title=\"Rename\">\n        <mat-icon class=\"icon-small custom-icon-green\">edit_note</mat-icon>\n      </button>\n  \n      <!-- delete node -->\n      <button mat-icon-button class=\"btn-small\" *ngIf=\"((node.nodeLevelConfig.deleteNode!=null || \n                                                          node.nodeLevelConfig.deleteNode!=undefined) && \n                                                          node.nodeLevelConfig.deleteNode) || \n                                                          ((node.nodeLevelConfig.deleteNode==null || \n                                                          node.nodeLevelConfig.deleteNode==undefined) && \n                                                          config.treeLevelConfig.deleteNode)\"\n        (click)=\"onDelete(node)\">\n        <!-- <mat-icon class=\"icon-small\" color=\"warn\">clear</mat-icon> -->\n        <mat-icon *ngIf=\"(node.value.isLeaf=='true') || (node.value.isLeaf=='false' && node.value.isUserGroup=='false')\" class=\"icon-small\" color=\"warn\" title=\"Unlink\">remove</mat-icon>  \n        <mat-icon *ngIf=\"node.value.isUserGroup=='true'\" class=\"icon-small\" color=\"warn\" title=\"remove\">clear</mat-icon> \n      </button>\n  \n      <!-- <button mat-icon-button class=\"btn-small red-color\" *ngIf=\"((node.nodeLevelConfig.deleteNode!=null || \n                                                                  node.nodeLevelConfig.deleteNode!=undefined) && \n                                                                  node.nodeLevelConfig.deleteNode) || \n                                                                  ((node.nodeLevelConfig.deleteNode==null \n                                                                  || node.nodeLevelConfig.deleteNode==undefined) && \n                                                                  config.treeLevelConfig.deleteNode) && \n                                                                  (node.value.isLeaf=='true') || \n                                                                  (node.value.isLeaf=='false' && \n                                                                  node.value.isUserGroup=='false')\" (click)=\"onDereference(node)\">\n        <i class=\"material-icons\">remove</i>\n      </button> -->\n  \n      <!-- progress bar -->\n      <mat-progress-bar *ngIf=\"node.progress\" mode=\"indeterminate\"></mat-progress-bar>\n    </div>\n  </ng-template>","import { Component, EventEmitter, Input, OnInit, Output, TemplateRef, ViewChild } from '@angular/core';\nimport { Config } from '../model/config';\nimport { Node } from '../model/node';\nimport { UNCHECKED } from '../model/node-state';\nimport { SpTreeviewNodeTemplate } from '../model/sp-treeview-node-template';\nimport { SpTreeviewNodeTemplateContext } from '../model/sp-treeview-node-template-context';\nimport { SpTreeviewComponent } from '../sp-treeview/sp-treeview.component';\n\n@Component({\n  selector: 'sp-treeview-dropdown',\n  templateUrl: './sp-treeview-dropdown.component.html',\n  styleUrls: ['./sp-treeview-dropdown.component.scss']\n})\nexport class SpTreeviewDropdownComponent implements OnInit {\n\n\n\n  @Input() placeholder: string;\n  @Input() customSearch: boolean;\n  @Input() customRootText: string;\n  @Input() required: boolean;\n\n  @Input() nodes: Node[];\n  @Input() config: Config = new Config();\n\n  @Input() template: TemplateRef<SpTreeviewNodeTemplate>;\n  @Input() contextPrototype = SpTreeviewNodeTemplateContext.prototype;\n\n  @Output() change: EventEmitter<Node[]> = new EventEmitter<Node[]>();\n\n  @Output() delete: EventEmitter<Node> = new EventEmitter<Node>();\n  @Output() addChild: EventEmitter<Node> = new EventEmitter<Node>();\n  @Output() loadChildren: EventEmitter<Node> = new EventEmitter<Node>();\n  @Output() search: EventEmitter<string> = new EventEmitter<string>();\n  @Output() searchTo: EventEmitter<string> = new EventEmitter<string>();\n  @Output() selectParent: EventEmitter<Node> = new EventEmitter<Node>();\n  @ViewChild(SpTreeviewComponent) tree: SpTreeviewComponent;\n\n  @ViewChild('chipList')\n  public chipList: any;\n  private chipsDiv: HTMLDivElement;\n\n  visible = true;\n  selectable = false;\n  removable = true;\n\n  @Input() selectedNodes: Node[] = [];\n\n  public dropDown = false;\n\n  @Output() renameNode: EventEmitter<Node> = new EventEmitter<Node>();\n  constructor() {\n\n  }\n\n  ngOnInit() {\n    this.nodes.forEach(n => {\n      n = Node.nodify(n);\n      n.verifyStateRecursive();\n      n.getCheckedValues().forEach(v => this.selectedNodes.push(v));\n    });\n    this.chipsDiv = this.chipList && this.chipList._elementRef.nativeElement.children[0];\n    this.dropDown = this.config.dropdownLevelConfig.showDropdownDefault;\n  }\n\n  scrollLeft(event: Event) {\n    event.stopPropagation();\n    this.chipsDiv.scrollLeft -= 50;\n  }\n\n  scrollRight(event: Event) {\n    event.stopPropagation();\n    this.chipsDiv.scrollLeft += 50;\n  }\n\n  remove(node: Node): void {\n      this.dropDown = !this.dropDown;\n      if(node?.value=='ALL'){\n        (this.nodes ?? []).forEach(n => n.setCheckedRecursively(false));\n        if (!this.selectedNodes) this.selectedNodes = [];\n      }\n     if (node?.nodeState) {\n      node.nodeState.checked = UNCHECKED;\n      (node.children ?? []).forEach(n => n.nodeState.checked = UNCHECKED);\n    }\n    \n    (this.nodes ?? []).forEach(n => n.checkImmediateChildren());\n    if (!this.selectedNodes) this.selectedNodes = [];\n    let index = this.selectedNodes.findIndex(n => n === node);\n    if (index !== -1) {\n        this.selectedNodes.splice(index, 1);\n    }\n    let values: Node[] = [];\n    (this.tree?.trees ?? []).forEach(t => {\n        (t.node?.getCheckedValues() ?? []).forEach((v: Node) => values.push(v));\n    });\n    \n    this.change?.emit(values);\n  }\n\n  onChange(nodes: Node[]) {\n    this.selectedNodes = nodes;\n    this.change.emit(nodes);\n  }\n\n  onDelete(value:Node) {\n    this.delete.emit(value);\n  }\n\n  onAddChild(node: Node) {\n    this.addChild.emit(node);\n  }\n\n  onLoadChildren(node: Node) {\n    this.loadChildren.emit(node);\n  }\n\n  test(event:any){\n    this.searchTo.emit(event);\n  }\n  testSearch(event:any){\n    this.search.emit(event)\n  }\n\n  onSelectParent(node:Node){\n    this.selectParent.emit(node);\n  }\n  onRenameNode(node:any) {\n    this.renameNode.emit(node);\n  }\n}\n","<link href=\"https://fonts.googleapis.com/icon?family=Material+Icons\" rel=\"stylesheet\">\n<div class=\"base\">\n  <!-- <mat-form-field class=\"full-width pointer\" [class.shrink]=\"selectedNodes==null || selectedNodes.length==0\" [class.liftup]=\"dropDown\" -->\n  <mat-form-field class=\"full-width pointer shrink\" [class.liftup]=\"dropDown\" (click)=\"dropDown=!dropDown\">\n\n    <button type=\"button\" matPrefix mat-icon-button (click)=\"scrollLeft($event)\" color=\"primary\">\n      <mat-icon>keyboard_arrow_left</mat-icon>\n    </button>\n\n    <mat-chip-list #chipList [required]=\"required\">\n      <mat-chip *ngFor=\"let node of selectedNodes\" [selectable]=\"selectable\" [removable]=\"removable\" (removed)=\"remove(node)\" (click)=\"$event.stopPropagation()\">\n        {{ node.name.replace(' ',\"&nbsp;\") }}\n        <mat-icon matChipRemove *ngIf=\"removable\">cancel</mat-icon>\n      </mat-chip>\n      <input mat-input [placeholder]=\"placeholder\" [matChipInputFor]=\"chipList\" [readonly]=true/>\n    </mat-chip-list>\n\n    <button type=\"button\" matSuffix mat-icon-button (click)=\"scrollRight($event)\" color=\"primary\">\n      <mat-icon>keyboard_arrow_right</mat-icon>\n    </button>\n    <button type=\"button\" matSuffix mat-icon-button color=\"primary\">\n      <mat-icon *ngIf=\"!dropDown\" matSuffix>arrow_drop_down</mat-icon>\n      <mat-icon *ngIf=\"dropDown\" matSuffix>arrow_drop_up</mat-icon>\n    </button>\n  </mat-form-field>\n  <!-- <div class=\"dropDown\" *ngIf=\"dropDown\" [style.height]=\"config.height\"> -->\n  <!-- <div class=\"dropDown\" [class.slideUp]=\"!dropDown\" [class.top-shrink]=\"selectedNodes==null || selectedNodes.length==0\"> -->\n  <div class=\"dropDown top-shrink\" [class.slideUp]=\"!dropDown\">\n    <sp-treeview [nodes]=\"nodes\" [config]=\"config\" (change)=\"onChange($event)\" (delete)=\"onDelete($event)\" (addChild)=\"onAddChild($event)\"\n      (loadChildren)=\"onLoadChildren($event)\" (search)= \"testSearch($event)\" (searchTo)=\"test($event)\" (selectParent)=\"onSelectParent($event)\"\n       [customSearch]=\"customSearch\" [customRootText]=\"customRootText\" (renameNode)=\"onRenameNode($event)\"></sp-treeview>\n\n    <div class=\"done\">\n      <button type=\"button\" matSuffix mat-raised-button color=\"primary\" (click)=\"dropDown=false\">\n        Done\n      </button>\n    </div>\n  </div>\n</div>\n\n<div class=\"cvr-screen\" *ngIf=\"dropDown\" (click)=\"$event.stopPropagation();dropDown=!dropDown;\"></div>\n\n","import { Component, EventEmitter, Input, OnInit, Output, TemplateRef, ViewChild } from '@angular/core';\nimport { Config } from '../model/config';\nimport { Node } from '../model/node';\nimport { UNCHECKED } from '../model/node-state';\nimport { SpTreeviewNodeTemplate } from '../model/sp-treeview-node-template';\nimport { SpTreeviewComponent } from '../sp-treeview/sp-treeview.component';\n\n@Component({\n  selector: 'sp-treeview-overlay',\n  templateUrl: './sp-treeview-overlay.component.html',\n  styleUrls: ['./sp-treeview-overlay.component.scss']\n})\nexport class SpTreeviewOverlayComponent implements OnInit {\n  @Input() placeholder: string;\n  @Input() required: boolean;\n  @Input() nodes: Node[];\n  @Input() config: Config = new Config();\n\n  @Input() template: TemplateRef<SpTreeviewNodeTemplate> ;\n  @Input() contextPrototype:any = null;\n\n  @Output() change: EventEmitter<Node[]> = new EventEmitter<Node[]>();\n\n  @Output() delete: EventEmitter<Node> = new EventEmitter<Node>();\n  @Output() addChild: EventEmitter<Node> = new EventEmitter<Node>();\n  @Output() loadChildren: EventEmitter<Node> = new EventEmitter<Node>();\n\n  @ViewChild(SpTreeviewComponent) tree: SpTreeviewComponent;\n\n  @ViewChild('chipList')\n  public chipList: any;\n  private chipsDiv: HTMLDivElement;\n\n  visible = true;\n  selectable = false;\n  removable = true;\n\n  selectedNodes: Node[] = [];\n\n  public dropDown = false;\n  @Output() renameNode: EventEmitter<Node> = new EventEmitter<Node>();\n\n  constructor() {\n  }\n\n  ngOnInit() {\n    this.nodes.forEach(n => {\n      n = Node.nodify(n);\n      n.verifyStateRecursive();\n      n.getCheckedValues().forEach(v => this.selectedNodes.push(v));\n    });\n    this.config.dropdownLevelConfig.height = 'calc(100vh - 125px)';\n    this.chipsDiv = this.chipList && this.chipList._elementRef.nativeElement.children[0];\n    this.dropDown = this.config.dropdownLevelConfig.showDropdownDefault;\n  }\n\n  scrollLeft(event: Event) {\n    event.stopPropagation();\n    this.chipsDiv.scrollLeft -= 50;\n  }\n\n  scrollRight(event: Event) {\n    event.stopPropagation();\n    this.chipsDiv.scrollLeft += 50;\n  }\n\n  remove(node: Node): void {\n    this.dropDown = !this.dropDown;\n    if(node?.value=='ALL'){\n      (this.nodes ?? []).forEach(n => n.setCheckedRecursively(false));\n      if (!this.selectedNodes) this.selectedNodes = [];\n    }\n   if (node?.nodeState) {\n    node.nodeState.checked = UNCHECKED;\n    (node.children ?? []).forEach(n => n.nodeState.checked = UNCHECKED);\n  }\n  \n  (this.nodes ?? []).forEach(n => n.checkImmediateChildren());\n  if (!this.selectedNodes) this.selectedNodes = [];\n  let index = this.selectedNodes.findIndex(n => n === node);\n  if (index !== -1) {\n      this.selectedNodes.splice(index, 1);\n  }\n  let values: Node[] = [];\n  (this.tree?.trees ?? []).forEach(t => {\n      (t.node?.getCheckedValues() ?? []).forEach((v: Node) => values.push(v));\n  });\n  \n  this.change?.emit(values);\n}\n\n  onChange(nodes: Node[]) {\n    this.selectedNodes = nodes;\n    this.change.emit(nodes);\n  }\n\n  onDelete(value:Node) {\n    this.delete.emit(value);\n  }\n\n  onAddChild(node: Node) {\n    this.addChild.emit(node);\n  }\n\n  onLoadChildren(node: Node) {\n    this.loadChildren.emit(node);\n  }\n\n  onRenameNode(node:any) {\n    this.renameNode.emit(node);\n  }\n}\n","<link href=\"https://fonts.googleapis.com/icon?family=Material+Icons\" rel=\"stylesheet\">\n<div class=\"base\">\n  <!-- <mat-form-field class=\"full-width pointer\" [class.shrink]=\"selectedNodes==null || selectedNodes.length==0\" [class.liftup]=\"dropDown\" -->\n  <mat-form-field class=\"full-width pointer shrink\" [class.liftup]=\"dropDown\" (click)=\"dropDown=!dropDown\">\n\n    <button type=\"button\" matPrefix mat-icon-button (click)=\"scrollLeft($event)\" color=\"primary\">\n      <mat-icon>keyboard_arrow_left</mat-icon>\n    </button>\n\n    <mat-chip-list #chipList [required]=\"required\">\n      <mat-chip *ngFor=\"let node of selectedNodes\" [selectable]=\"selectable\" [removable]=\"removable\" (removed)=\"remove(node)\" (click)=\"$event.stopPropagation()\">\n        {{ node.name.replace(' ',\"&nbsp;\") }}\n        <mat-icon matChipRemove *ngIf=\"removable\">cancel</mat-icon>\n      </mat-chip>\n      <input mat-input [placeholder]=\"placeholder\" [matChipInputFor]=\"chipList\" [readonly]=true/>\n    </mat-chip-list>\n\n    <button type=\"button\" matSuffix mat-icon-button (click)=\"scrollRight($event)\" color=\"primary\">\n      <mat-icon>keyboard_arrow_right</mat-icon>\n    </button>\n    <button type=\"button\" matSuffix mat-icon-button color=\"primary\">\n      <mat-icon *ngIf=\"!dropDown\" matSuffix>arrow_drop_down</mat-icon>\n      <mat-icon *ngIf=\"dropDown\" matSuffix>arrow_drop_up</mat-icon>\n    </button>\n  </mat-form-field>\n  <!-- <div class=\"dropDown\" *ngIf=\"dropDown\" [style.height]=\"config.height\"> -->\n  <div class=\"overlay\" [class.slideUp]=\"!dropDown\">\n    <div style=\"height: calc(100% - 40px);overflow: auto;\">\n      <sp-treeview [template]=\"template\" [contextPrototype]=\"contextPrototype\" [nodes]=\"nodes\" [config]=\"config\" (change)=\"onChange($event)\"\n        (delete)=\"onDelete($event)\" (addChild)=\"onAddChild($event)\" (loadChildren)=\"onLoadChildren($event)\" (renameNode)=\"onRenameNode($event)\"></sp-treeview>\n    </div>\n    <div class=\"done\">\n      <button type=\"button\" matSuffix mat-raised-button color=\"primary\" (click)=\"dropDown=false\">\n        Done\n      </button>\n    </div>\n  </div>\n</div>\n\n<div class=\"cvr-screen\" *ngIf=\"dropDown\" (click)=\"$event.stopPropagation();dropDown=!dropDown;\"></div>","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatRadioModule } from '@angular/material/radio';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatChipsModule } from '@angular/material/chips';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatTooltipModule } from '@angular/material/tooltip';\n\nconst modules = [\n  MatProgressBarModule,\n  MatCheckboxModule,\n  MatRadioModule,\n  MatButtonModule,\n  MatIconModule,\n  MatProgressBarModule,\n  MatProgressSpinnerModule,\n  MatDividerModule,\n  MatFormFieldModule,\n  MatChipsModule,\n  MatInputModule,\n  MatTooltipModule\n  // BrowserAnimationsModule\n];\n\n@NgModule({\n  declarations: [],\n  imports: [\n    CommonModule,\n    modules\n  ],\n  exports:[modules]\n})\nexport class MaterialModule { }\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SpTreeviewComponent } from './sp-treeview/sp-treeview.component';\nimport { SpTreeviewDropdownComponent } from './sp-treeview-dropdown/sp-treeview-dropdown.component';\nimport { SpTreeviewNodeComponent } from './sp-treeview-node/sp-treeview-node.component';\nimport { SpTreeviewOverlayComponent } from './sp-treeview-overlay/sp-treeview-overlay.component';\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatRadioModule } from '@angular/material/radio';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatChipsModule } from '@angular/material/chips';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { FormsModule } from '@angular/forms';\nimport { MaterialModule } from '../material/material.module';\n\n\n\n@NgModule({\n  declarations: [\n    SpTreeviewComponent,\n    SpTreeviewDropdownComponent,\n    SpTreeviewNodeComponent,\n    SpTreeviewOverlayComponent\n  ],\n  imports: [\n    CommonModule,\n    // BrowserAnimationsModule,\n    // MatProgressBarModule,\n    // MatCheckboxModule,\n    // MatRadioModule,\n    // MatButtonModule,\n    // MatIconModule,\n    // MatInputModule,\n    // MatFormFieldModule,\n    // MatChipsModule,\n    // MatDividerModule,\n    FormsModule,\n    MaterialModule\n  ],exports:[    SpTreeviewComponent,\n    SpTreeviewOverlayComponent,\n    SpTreeviewDropdownComponent]\n})\nexport class SpTreeviewModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i6","i8.SpTreeviewNodeComponent","i9","i4","i5.SpTreeviewComponent"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEO,MAAM,WAAW,GAAG,EAAE;AACtB,MAAM,eAAe,GAAG,EAAE;AAC1B,MAAM,YAAY,GAAG,EAAE;AAE9B;;AAEG;MACU,eAAe,CAAA;AASxB,IAAA,WAAA;;IAEY,SAAA,GAAY,IAAI,EAChB,QAAW,GAAA,IAAI,EACf,OAAU,GAAA,WAAW,EACrB,WAAA,GAAc,KAAK,EACnB,SAAA,GAAY,KAAK,EACjB,UAAU,IAAI,EAAA;AALd,QAAA,IAAS,CAAA,SAAA,GAAT,SAAS,CAAO;AAChB,QAAA,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAO;AACf,QAAA,IAAO,CAAA,OAAA,GAAP,OAAO,CAAc;AACrB,QAAA,IAAW,CAAA,WAAA,GAAX,WAAW,CAAQ;AACnB,QAAA,IAAS,CAAA,SAAA,GAAT,SAAS,CAAQ;AACjB,QAAA,IAAO,CAAA,OAAA,GAAP,OAAO,CAAO;AAZlB,QAAA,IAAiB,CAAA,iBAAA,GAAO,EAAE,CAAC;AAE3B,QAAA,IAAS,CAAA,SAAA,GAAG,KAAK,CAAC;AAClB,QAAA,IAAU,CAAA,UAAA,GAAG,EAAE,CAAC;KAUnB;AAEL,IAAA,IAAW,QAAQ,GAAA;QACf,OAAO,IAAI,CAAC,SAAS,CAAC;KACzB;IAED,IAAW,QAAQ,CAAC,QAA6B,EAAA;AAC7C,QAAA,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;KAC7B;AAED,IAAA,IAAW,QAAQ,GAAA;QACf,OAAO,IAAI,CAAC,SAAS,CAAC;KACzB;IAED,IAAW,QAAQ,CAAC,QAAiB,EAAA;AACjC,QAAA,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;KAC7B;AAED,IAAA,IAAW,OAAO,GAAA;QACd,OAAO,IAAI,CAAC,QAAQ,CAAC;KACxB;IAED,IAAW,OAAO,CAAC,OAAgB,EAAA;AAC/B,QAAA,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;KAC3B;AAED,IAAA,IAAW,MAAM,GAAA;QACb,OAAO,IAAI,CAAC,OAAO,CAAC;KACvB;IAED,IAAW,MAAM,CAAC,MAAc,EAAA;AAC5B,QAAA,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;KACzB;AAED,IAAA,IAAW,MAAM,GAAA;QACb,OAAO,IAAI,CAAC,OAAO,CAAC;KACvB;IAED,IAAW,MAAM,CAAC,MAAe,EAAA;AAC7B,QAAA,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;KACzB;AAED,IAAA,IAAW,SAAS,GAAA;QAChB,OAAO,IAAI,CAAC,UAAU,CAAC;KAC1B;IAED,IAAW,SAAS,CAAC,SAAiB,EAAA;AAClC,QAAA,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;KAC/B;AAED,IAAA,IAAW,QAAQ,GAAA;QACf,OAAO,IAAI,CAAC,SAAS,CAAC;KACzB;IAED,IAAW,QAAQ,CAAC,QAAiB,EAAA;AACjC,QAAA,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;KAC7B;AAED,IAAA,IAAW,UAAU,GAAA;QACjB,OAAO,IAAI,CAAC,WAAW,CAAC;KAC3B;IAED,IAAW,UAAU,CAAC,UAAmB,EAAA;AACrC,QAAA,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;KACjC;AAED,IAAA,IAAW,QAAQ,GAAA;QACf,OAAO,IAAI,CAAC,SAAS,CAAC;KACzB;IAED,IAAW,QAAQ,CAAC,QAAiB,EAAA;AACjC,QAAA,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;KAC7B;IAEM,YAAY,GAAA;AACf,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;;KAElC;IACM,cAAc,GAAA;AACjB,QAAA,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,CAAC;AAC7B,QAAA,IAAI,IAAI,CAAC,iBAAiB,CAAC,MAAM,IAAI,CAAC,EAAE;AACpC,YAAA,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;AACzB,SAAA;;KAEJ;IAEM,0BAA0B,GAAA;AAC7B,QAAA,IAAI,IAAI,CAAC,iBAAiB,CAAC,MAAM,IAAI,CAAC,EAAE;AACpC,YAAA,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;AACzB,SAAA;KACJ;AAEJ;;ACrHD;;AAEG;MACU,mBAAmB,CAAA;AAC5B,IAAA,WAAA,CACY,OAAU,GAAA,MAAM,EAChB,oBAAA,GAAuB,KAAK,EAAA;AAD5B,QAAA,IAAO,CAAA,OAAA,GAAP,OAAO,CAAS;AAChB,QAAA,IAAoB,CAAA,oBAAA,GAApB,oBAAoB,CAAQ;KACnC;AAEL,IAAA,IAAW,MAAM,GAAA;QACb,OAAO,IAAI,CAAC,OAAO,CAAC;KACvB;IAED,IAAW,MAAM,CAAC,MAAc,EAAA;AAC5B,QAAA,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;KACzB;AAED,IAAA,IAAW,mBAAmB,GAAA;QAC1B,OAAO,IAAI,CAAC,oBAAoB,CAAC;KACpC;IAED,IAAW,mBAAmB,CAAC,mBAA4B,EAAA;AACvD,QAAA,IAAI,CAAC,oBAAoB,GAAG,mBAAmB,CAAC;KACnD;AAEJ;;MCvBY,MAAM,CAAA;IACf,WACY,CAAA,gBAAA,GAAmB,IAAI,eAAe,EAAE,EACxC,oBAAuB,GAAA,IAAI,mBAAmB,EAAE,EAAA;AADhD,QAAA,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAwB;AACxC,QAAA,IAAoB,CAAA,oBAAA,GAApB,oBAAoB,CAA4B;KACvD;AAEL,IAAA,IAAW,eAAe,GAAA;QACtB,OAAO,IAAI,CAAC,gBAAgB,CAAC;KAChC;IAED,IAAW,eAAe,CAAC,eAAgC,EAAA;AACvD,QAAA,IAAI,CAAC,gBAAgB,GAAG,eAAe,CAAC;KAC3C;AAED,IAAA,IAAW,mBAAmB,GAAA;QAC1B,OAAO,IAAI,CAAC,oBAAoB,CAAC;KACpC;IAED,IAAW,mBAAmB,CAAC,mBAAwC,EAAA;AACnE,QAAA,IAAI,CAAC,oBAAoB,GAAG,mBAAmB,CAAC;KACnD;AACJ;;ACxBM,MAAM,OAAO,GAAG,EAAE;AAClB,MAAM,SAAS,GAAG,EAAE;AACd,MAAA,aAAa,GAAG,CAAC,EAAE;AAEhC;;AAEG;MACU,SAAS,CAAA;AAElB,IAAA,WAAA,CACY,QAAA,GAAW,SAAS,EACpB,UAAa,GAAA,IAAI,EACjB,SAAY,GAAA,KAAK,EACjB,OAAA,GAAU,KAAK,EAAA;AAHf,QAAA,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAY;AACpB,QAAA,IAAU,CAAA,UAAA,GAAV,UAAU,CAAO;AACjB,QAAA,IAAS,CAAA,SAAA,GAAT,SAAS,CAAQ;AACjB,QAAA,IAAO,CAAA,OAAA,GAAP,OAAO,CAAQ;KACtB;AAEL,IAAA,IAAW,OAAO,GAAA;QACd,OAAO,IAAI,CAAC,QAAQ,CAAC;KACxB;IAED,IAAW,OAAO,CAAC,OAAe,EAAA;AAC9B,QAAA,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;KAC3B;AAED,IAAA,IAAW,SAAS,GAAA;QAChB,OAAO,IAAI,CAAC,UAAU,CAAC;KAC1B;IAED,IAAW,SAAS,CAAC,SAAkB,EAAA;AACnC,QAAA,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;KAC/B;AAED,IAAA,IAAW,QAAQ,GAAA;QACf,OAAO,IAAI,CAAC,SAAS,CAAC;KACzB;IAED,IAAW,QAAQ,CAAC,QAAiB,EAAA;AACjC,QAAA,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;KAC7B;AAED,IAAA,IAAW,MAAM,GAAA;QACb,OAAO,IAAI,CAAC,OAAO,CAAC;KACvB;IAED,IAAW,MAAM,CAAC,MAAe,EAAA;AAC7B,QAAA,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;KACzB;AAGJ;;AC/CD;;AAEG;AACU,IAAA,eAAe,GAA5B,MAAa,eAAe,CAAA;AACxB,IAAA,WAAA,CACwB,WAAoB,EACpB,SAAkB,EAClB,SAAkB,EAClB,WAAoB,EAAA;AAHpB,QAAA,IAAW,CAAA,WAAA,GAAX,WAAW,CAAS;AACpB,QAAA,IAAS,CAAA,SAAA,GAAT,SAAS,CAAS;AAClB,QAAA,IAAS,CAAA,SAAA,GAAT,SAAS,CAAS;AAClB,QAAA,IAAW,CAAA,WAAA,GAAX,WAAW,CAAS;QAExC,IAAI,IAAI,CAAC,SAAS,IAAI,SAAS,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,EAAE;AAC7D,YAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;AAC1B,SAAA;QACD,IAAI,IAAI,CAAC,WAAW,IAAI,SAAS,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS,EAAE;AACjE,YAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;AAC5B,SAAA;QACD,IAAI,IAAI,CAAC,SAAS,IAAI,SAAS,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,EAAE;AAC7D,YAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;AAC1B,SAAA;QACD,IAAI,IAAI,CAAC,WAAW,IAAI,SAAS,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS,EAAE;AACjE,YAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;AAC5B,SAAA;KACJ;AAED,IAAA,IAAW,UAAU,GAAA;QACjB,OAAO,IAAI,CAAC,WAAW,CAAC;KAC3B;IACD,IAAW,UAAU,CAAC,UAAmB,EAAA;AACrC,QAAA,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;KACjC;AAED,IAAA,IAAW,QAAQ,GAAA;QACf,OAAO,IAAI,CAAC,SAAS,CAAC;KACzB;IACD,IAAW,QAAQ,CAAC,QAAiB,EAAA;AACjC,QAAA,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;KAC7B;AAED,IAAA,IAAW,QAAQ,GAAA;QACf,OAAO,IAAI,CAAC,SAAS,CAAC;KACzB;IACD,IAAW,QAAQ,CAAC,QAAiB,EAAA;AACjC,QAAA,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;KAC7B;AACD,IAAA,IAAW,UAAU,GAAA;QACjB,OAAO,IAAI,CAAC,SAAS,CAAC;KACzB;IACD,IAAW,UAAU,CAAC,UAAmB,EAAA;AACrC,QAAA,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;KACjC;EACJ;AA/CY,eAAe,GAAA,UAAA,CAAA;AAEnB,IAAA,OAAA,CAAA,CAAA,EAAA,QAAQ,EAAE,CAAA;AACV,IAAA,OAAA,CAAA,CAAA,EAAA,QAAQ,EAAE,CAAA;AACV,IAAA,OAAA,CAAA,CAAA,EAAA,QAAQ,EAAE,CAAA;AACV,IAAA,OAAA,CAAA,CAAA,EAAA,QAAQ,EAAE,CAAA;CALN,EAAA,eAAe,CA+C3B;;AC/CY,IAAA,IAAI,GAAjB,MAAa,IAAI,CAAA;AAmDb,IAAA,WAAA,CACY,KAAa,EACb,MAAW,EACC,SAAiB,EAC7B,SAAY,GAAA,KAAK,EACjB,UAAA,GAAa,IAAI,SAAS,EAAE,EAC5B,gBAAA,GAAmB,IAAI,eAAe,CAAC,KAAK,EAAC,KAAK,EAAE,KAAK,EAAC,KAAK,CAAC,EAAA;AALhE,QAAA,IAAK,CAAA,KAAA,GAAL,KAAK,CAAQ;AACb,QAAA,IAAM,CAAA,MAAA,GAAN,MAAM,CAAK;AACC,QAAA,IAAS,CAAA,SAAA,GAAT,SAAS,CAAQ;AAC7B,QAAA,IAAS,CAAA,SAAA,GAAT,SAAS,CAAQ;AACjB,QAAA,IAAU,CAAA,UAAA,GAAV,UAAU,CAAkB;AAC5B,QAAA,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAgD;QAExE,IAAI,IAAI,CAAC,SAAS,IAAI,SAAS,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,EAAE;YAC7D,IAAI,CAAC,SAAS,CAAE;AACnB,SAAA;KACJ;AAzDD;;;;AAIG;IACI,OAAO,MAAM,CAAC,GAAQ,EAAA;AACzB,QAAA,MAAM,IAAI,GAAS,MAAM,CAAC,cAAc,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;;QAE9D,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,IAAI,IAAI,CAAC,SAAS,IAAI,SAAS,EAAE;AACvD,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI,SAAS,EAAE,CAAC;AACpC,SAAA;AAAM,aAAA;AACH,YAAA,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;AAC/E,SAAA;;QAED,IAAI,IAAI,CAAC,eAAe,IAAI,IAAI,IAAI,IAAI,CAAC,eAAe,IAAI,SAAS,EAAE;AACnE,YAAA,IAAI,CAAC,eAAe,GAAG,IAAI,eAAe,CAAC,KAAK,EAAC,KAAK,EAAE,KAAK,EAAC,KAAK,CAAC,CAAC;AACxE,SAAA;AAAM,aAAA;AACH,YAAA,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,eAAe,EAAE,eAAe,CAAC,SAAS,CAAC,CAAC;AACjG,SAAA;;AAED,QAAA,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,EAAE;YACvB,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,IAAG,EAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;AAChF,SAAA;AACD,QAAA,OAAO,IAAI,CAAC;KACf;IAEM,OAAO,WAAW,CAAC,MAAa,EAAA;QACnC,IAAI,KAAK,GAAW,EAAE,CAAC;AACvB,QAAA,MAAM,CAAC,OAAO,CAAC,GAAG,IAAG;;;AAGjB,YAAA,IAAG,GAAG,CAAC,QAAQ,IAAE,IAAI,EAAC;AAClB,gBAAA,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC;AAG/H,aAAA;AAAI,iBAAA;AACD,gBAAA,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC;AAE7G,aAAA;AACI,SAAC,CAAC,CAAC;AAEZ,QAAA,OAAO,KAAK,CAAC;KAChB;AAiBD,IAAA,IAAW,IAAI,GAAA;QACX,OAAO,IAAI,CAAC,KAAK,CAAC;KACrB;IAED,IAAW,IAAI,CAAC,IAAY,EAAA;AACxB,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;KACrB;AAED,IAAA,IAAW,KAAK,GAAA;QACZ,OAAO,IAAI,CAAC,MAAM,CAAC;KACtB;IAED,IAAW,KAAK,CAAC,KAAU,EAAA;AACvB,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;KACvB;AAED,IAAA,IAAW,QAAQ,GAAA;QACf,OAAO,IAAI,CAAC,SAAS,CAAC;KACzB;IAED,IAAW,QAAQ,CAAC,QAAgB,EAAA;AAChC,QAAA,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;KAC7B;AAEM,IAAA,YAAY,CAAC,QAAe,EAAA;;AAE/B,QAAA,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;AAC1B,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAClB,QAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACvC,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;AACvB,QAAA,IAAI,CAAC,UAAU,CAAC,SAAS,GAAG,KAAK,CAAC;QAClC,IAAI,CAAC,oBAAoB,EAAE,CAAC;;AAE5B,QAAA,IAAI,IAAI,CAAC,MAAM,IAAE,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,eAAe,IAAE,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,SAAS,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,SAAS,IAAI,EAAE,EAAE;YACxJ,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,SAAS,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC;AAChH,SAAA;AACD,QAAA,IAAI,IAAI,CAAC,MAAM,IAAE,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,eAAe,IAAE,IAAI;AAC1D,YAAA,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,cAAc,EAAE,CAAC;KAChD;AAEM,IAAA,QAAQ,CAAC,KAAW,EAAA;QACvB,IAAI,IAAI,CAAC,SAAS,KAAK,IAAI,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,EAAE;AACzD,YAAA,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;AACvB,SAAA;AACD,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;AACxC,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;KACrB;AAED,IAAA,IAAW,QAAQ,GAAA;QACf,OAAO,IAAI,CAAC,SAAS,CAAC;KACzB;IAED,IAAW,QAAQ,CAAC,QAAiB,EAAA;AACjC,QAAA,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;KAC7B;AAED,IAAA,IAAW,SAAS,GAAA;QAChB,OAAO,IAAI,CAAC,UAAU,CAAC;KAC1B;IAED,IAAW,SAAS,CAAC,SAAoB,EAAA;AACrC,QAAA,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;KAC/B;AAED,IAAA,IAAW,eAAe,GAAA;QACtB,OAAO,IAAI,CAAC,gBAAgB,CAAC;KAChC;IAED,IAAW,eAAe,CAAC,eAAgC,EAAA;AACvD,QAAA,IAAI,CAAC,gBAAgB,GAAG,eAAe,CAAC;KAC3C;AAED,IAAA,IAAW,MAAM,GAAA;QACb,OAAO,IAAI,CAAC,OAAO,CAAC;KACvB;IAED,IAAW,MAAM,CAAC,IAAU,EAAA;AACxB,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;KACvB;AAEM,IAAA,oBAAoB,CAAC,MAAc,EAAA;AACtC,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AACrB,QAAA,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,EAAE;AACvB,YAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,IAAI,KAAK,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC;AACtE,SAAA;KACJ;IAEM,oBAAoB,GAAA;AACvB,QAAA,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,EAAE;YACvB,OAAO;AACV,SAAA;AAED,QAAA,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,KAAK,OAAO,EAAE;YACrC,IAAI,CAAC,uBAAuB,EAAE,CAAC;YAC/B,OAAO;AACV,SAAA;QAED,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,IAAI,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,oBAAoB,EAAE,CAAC,CAAC;QAErF,IAAI,CAAC,sBAAsB,EAAE,CAAC;KACjC;IAEM,uBAAuB,GAAA;AAC1B,QAAA,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,EAAE;YACvB,OAAO;AACV,SAAA;AACD,QAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAG;YACtB,CAAC,CAAC,SAAS,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;YAC7C,CAAC,CAAC,uBAAuB,EAAE,CAAC;AAChC,SAAC,CAAC,CAAC;KACN;IAEM,sBAAsB,GAAA;;QAEzB,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;AAC3C,YAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,sBAAsB,EAAE,CAAC,CAAC;YAEvD,IAAI,eAAe,GAAW,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,OAAO,KAAK,OAAO,CAAC,CAAC,MAAM,CAAC;YAEhG,IAAI,qBAAqB,GAAW,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,OAAO,KAAK,aAAa,CAAC,CAAC,MAAM,CAAC;YAE5G,IAAI,qBAAqB,GAAG,CAAC,EAAE;;AAE3B,gBAAA,IAAI,CAAC,SAAS,CAAC,OAAO,GAAG,aAAa,CAAC;AAC1C,aAAA;AAAM,iBAAA;;AAEH,gBAAA,IAAI,eAAe,KAAK,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;;oBAG1C,IAAG,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,IAAE,MAAM,EAAC;AAC/C,qBAAA;AAAI,yBAAA;AACD,wBAAA,IAAI,CAAC,SAAS,CAAC,OAAO,GAAG,OAAO,CAAC;AACpC,qBAAA;;AAEJ,iBAAA;qBAAM,IAAI,eAAe,KAAK,CAAC,EAAE;;AAE9B,oBAAA,IAAI,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,CAAC;AACtC,iBAAA;AAAM,qBAAA;;AAEH,oBAAA,IAAI,CAAC,SAAS,CAAC,OAAO,GAAG,aAAa,CAAC;AAC1C,iBAAA;AACJ,aAAA;AACJ,SAAA;KACJ;IAEM,gBAAgB,GAAA;AACnB,QAAA,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,KAAK,OAAO,EAAE;YACpC,OAAO,CAAC,IAAI,CAAC,CAAA;AAChB,SAAA;QACD,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,IAAI,MAAM,GAAO,EAAE,CAAC;AACpB,YAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAG;;AAEtB,gBAAA,CAAC,CAAC,gBAAgB,EAAE,CAAC,OAAO,CAAC,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AACtD,aAAC,CAAC,CAAC;AACH,YAAA,OAAO,MAAM,CAAC;AACjB,SAAA;AACD,QAAA,OAAO,EAAE,CAAC;KACb;IAEM,8BAA8B,GAAA;AACjC,QAAA,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,EAAE;YACrB,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,KAAK,CAAC;YACrC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,GAAG,KAAK,CAAC;AACxC,YAAA,IAAI,CAAC,MAAM,CAAC,8BAA8B,EAAE,CAAC;AAChD,SAAA;AACD,QAAA,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,0BAA0B,EAAE,CAAC;KAC5D;IAEM,MAAM,CAAC,IAAY,EAAE,YAAgC,EAAA;AACxD,QAAA,IAAI,CAAC,iBAAiB,GAAG,YAAY,CAAC;AAEtC,QAAA,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,EAAE;AACvB,YAAA,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,IAAE,CAAC,CAAC,EAAE;AACzD,gBAAA,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,KAAK,CAAC;gBAC9B,IAAI,CAAC,8BAA8B,EAAE,CAAC;AACtC,gBAAA,OAAO,IAAI,CAAC;AACf,aAAA;AAAM,iBAAA;AACH,gBAAA,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,IAAI,CAAC;AAC7B,gBAAA,OAAO,KAAK,CAAC;AAChB,aAAA;AACJ,SAAA;AAAM,aAAA;AACH,YAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;AAC5B,gBAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;AACrB,gBAAA,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC3B,aAAA;YACD,IAAI,UAAU,GAAG,KAAK,CAAC;AACvB,YAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,IAAG;gBAC1B,IAAI,eAAe,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;gBACvD,IAAI,CAAC,UAAU,EAAE;oBACb,UAAU,GAAG,eAAe,CAAC;AAChC,iBAAA;AACL,aAAC,CAAC,CAAC;AACH,YAAA,IAAI,UAAU,EAAE;AACZ,gBAAA,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,KAAK,CAAC;AAC9B,gBAAA,IAAI,CAAC,SAAS,CAAC,SAAS,GAAG,KAAK,CAAC;gBACjC,IAAI,CAAC,8BAA8B,EAAE,CAAC;AACtC,gBAAA,OAAO,IAAI,CAAC;AACf,aAAA;AAAM,iBAAA;AACH,gBAAA,IAAI,CAAC,SAAS,CAAC,SAAS,GAAG,IAAI,CAAC;AAChC,gBAAA,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,IAAE,CAAC,CAAC,EAAE;AACzD,oBAAA,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,KAAK,CAAC;oBAC9B,IAAI,CAAC,8BAA8B,EAAE,CAAC;AACtC,oBAAA,OAAO,IAAI,CAAC;AACf,iBAAA;AAAM,qBAAA;AACH,oBAAA,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,IAAI,CAAC;AAC7B,oBAAA,OAAO,KAAK,CAAC;AAChB,iBAAA;AACJ,aAAA;AACJ,SAAA;KACJ;IAEM,cAAc,GAAA;QACjB,IAAI,IAAI,CAAC,QAAQ,EAAE;AACf,YAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,IAAG;AAC1B,gBAAA,KAAK,CAAC,SAAS,CAAC,MAAM,GAAG,KAAK,CAAC;AACnC,aAAC,CAAC,CAAC;AACN,SAAA;KACJ;AAEM,IAAA,qBAAqB,CAAC,OAAgB,EAAA;AACzC,QAAA,IAAI,OAAO,EAAE;AACT,YAAA,IAAI,CAAC,SAAS,CAAC,OAAO,GAAG,OAAO,CAAC;AACpC,SAAA;AAAM,aAAA;AACH,YAAA,IAAI,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,CAAC;AACtC,SAAA;QACD,IAAI,IAAI,CAAC,QAAQ,EAAE;AACf,YAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,IAAG;AAC1B,gBAAA,KAAK,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC;AACzC,aAAC,CAAC,CAAC;AACN,SAAA;KACJ;IAEM,QAAQ,GAAA;AACX,QAAA,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,EAAE;AACrB,YAAA,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC;AACpI,SAAA;AAAM,aAAA;YACH,IAAI,CAAC,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC;AAC1F,SAAA;KACJ;IAEM,MAAM,GAAA;;KAEZ;EACJ;AApTY,IAAI,GAAA,UAAA,CAAA;AAsDR,IAAA,OAAA,CAAA,CAAA,EAAA,QAAQ,EAAE,CAAA;CAtDN,EAAA,IAAI,CAoThB;;MChTY,6BAA6B,CAAA;AAWtC,IAAA,WAAA,GAAA;AATA,QAAA,IAAI,CAAA,IAAA,GAAS,IAAI,IAAI,CAAC,EAAE,EAAC,EAAE,EAAC,EAAE,CAAC,CAAC;AAChC,QAAA,IAAA,CAAA,MAAM,GAAW,IAAI,MAAM,EAAE,CAAC;AAE9B,QAAA,IAAW,CAAA,WAAA,GAAyB,IAAI,YAAY,CAAC;AAGrD,QAAA,IAAQ,CAAA,QAAA,GAAuB,IAAI,YAAY,CAAC;AAOzC,QAAA,IAAA,CAAA,gBAAgB,GAAG,CAAC,IAAU,KAAI;YACrC,IAAI,CAAC,cAAc,EAAE,CAAC;AACtB,YAAA,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE;AAC1B,gBAAA,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,QAAQ,CAAC,EAAE;AACjH,oBAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;AACrB,oBAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBAC7B,OAAO;AACV,iBAAA;AACJ,aAAA;YACD,IAAI,CAAC,SAAS,CAAC,SAAS,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC;AACzD,SAAC,CAAA;AAEM,QAAA,IAAA,CAAA,QAAQ,GAAG,CAAC,IAAU,KAAI;AAC7B,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC3B,SAAC,CAAA;AAEM,QAAA,IAAA,CAAA,UAAU,GAAG,CAAC,IAAU,KAAI;AAC/B,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC7B,SAAC,CAAA;AAEM,QAAA,IAAA,CAAA,cAAc,GAAG,CAAC,IAAU,KAAI;AACnC,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACjC,SAAC,CAAA;AAEM,QAAA,IAAA,CAAA,aAAa,GAAG,CAAC,KAAqB,KAAI;YAC7C,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;AACzC,SAAC,CAAA;AAED;;;AAGG;AACI,QAAA,IAAA,CAAA,aAAa,GAAG,CAAC,KAAwB,KAAI;;;AAGhD,YAAA,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,GAAG,OAAO,GAAG,SAAS,CAAC;AAClE,YAAA,IAAI,CAAC,IAAI,CAAC,uBAAuB,EAAE,CAAC;;YAGpC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAClC,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;AAC/B,SAAC,CAAA;KA3CA;AA4CJ;;MCrDY,uBAAuB,CAAA;AA2BlC,IAAA,WAAA,GAAA;AAzBO,QAAA,IAAe,CAAA,eAAA,GAAG,eAAe,CAAC;AAClC,QAAA,IAAY,CAAA,YAAA,GAAG,YAAY,CAAC;AAC5B,QAAA,IAAW,CAAA,WAAA,GAAG,WAAW,CAAC;AAE1B,QAAA,IAAO,CAAA,OAAA,GAAG,OAAO,CAAC;AAClB,QAAA,IAAS,CAAA,SAAA,GAAG,SAAS,CAAC;AACtB,QAAA,IAAa,CAAA,aAAA,GAAG,aAAa,CAAC;AAMrB,QAAA,IAAA,CAAA,MAAM,GAAW,IAAI,MAAM,EAAE,CAAC;AAE7B,QAAA,IAAA,CAAA,WAAW,GAAyB,IAAI,YAAY,EAAU,CAAC;AAC/D,QAAA,IAAA,CAAA,cAAc,GAAuB,IAAI,YAAY,EAAQ,CAAC;AAE9D,QAAA,IAAA,CAAA,MAAM,GAAuB,IAAI,YAAY,EAAQ,CAAC;AACtD,QAAA,IAAA,CAAA,QAAQ,GAAuB,IAAI,YAAY,EAAQ,CAAC;AACxD,QAAA,IAAA,CAAA,YAAY,GAAuB,IAAI,YAAY,EAAQ,CAAC;AAC5D,QAAA,IAAA,CAAA,YAAY,GAAuB,IAAI,YAAY,EAAQ,CAAC;AACnE,QAAA,IAAA,CAAA,WAAW,GAAuB,IAAI,YAAY,EAAQ,CAAC;AAE9D,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,6BAA6B,EAAE,CAAC;AAC3C,QAAA,IAAA,CAAA,UAAU,GAAuB,IAAI,YAAY,EAAQ,CAAC;AAoBpE,QAAA,IAAA,CAAA,QAAQ,GAAG,CAAC,IAAU,KAAI;AACxB,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACzB,SAAC,CAAA;AAED,QAAA,IAAA,CAAA,UAAU,GAAG,CAAC,IAAU,KAAI;AAC1B,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC3B,SAAC,CAAA;AAED,QAAA,IAAA,CAAA,cAAc,GAAG,CAAC,IAAU,KAAI;AAC9B,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC/B,SAAC,CAAA;AAED,QAAA,IAAA,CAAA,cAAc,GAAG,CAAC,IAAU,KAAI;AAC9B,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC/B,SAAC,CAAA;KA/BA;IAED,QAAQ,GAAA;;AAEN,QAAA,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;;QAE1E,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QAC9B,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;;QAElC,IAAI,CAAC,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QACtC,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAClC,IAAI,CAAC,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;QAC9C,IAAI,CAAC,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC;QAClD,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;QAC5C,IAAI,CAAC,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;KAC/C;AAkBD,IAAA,aAAa,CAAC,KAAa,EAAA;AACzB,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC9B;AAED,IAAA,aAAa,CAAC,KAAa,EAAA;AAEzB,QAAA,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE,CAAC;AACnC,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;KAC5B;AAED,IAAA,MAAM,CAAC,IAAY,EAAA;AACjB,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;KAClD;AAED,IAAA,aAAa,CAAC,IAAS,EAAA;AACrB,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAC7B;AACD,IAAA,YAAY,CAAC,IAAQ,EAAA;AACnB,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAC5B;;oHAjFU,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;wGAAvB,uBAAuB,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,IAAA,EAAA,MAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,QAAA,EAAA,QAAA,EAAA,UAAA,EAAA,YAAA,EAAA,cAAA,EAAA,YAAA,EAAA,cAAA,EAAA,WAAA,EAAA,aAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECbpC,4zBAWQ,EAAA,MAAA,EAAA,CAAA,6dAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EDEK,uBAAuB,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,QAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,cAAA,EAAA,cAAA,EAAA,aAAA,EAAA,YAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FAAvB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBALnC,SAAS;+BACE,kBAAkB,EAAA,QAAA,EAAA,4zBAAA,EAAA,MAAA,EAAA,CAAA,6dAAA,CAAA,EAAA,CAAA;0EAcZ,QAAQ,EAAA,CAAA;sBAAvB,KAAK;gBACU,gBAAgB,EAAA,CAAA;sBAA/B,KAAK;gBAEU,IAAI,EAAA,CAAA;sBAAnB,KAAK;gBACU,MAAM,EAAA,CAAA;sBAArB,KAAK;gBAEW,WAAW,EAAA,CAAA;sBAA3B,MAAM;gBACU,cAAc,EAAA,CAAA;sBAA9B,MAAM;gBAEU,MAAM,EAAA,CAAA;sBAAtB,MAAM;gBACU,QAAQ,EAAA,CAAA;sBAAxB,MAAM;gBACU,YAAY,EAAA,CAAA;sBAA5B,MAAM;gBACU,YAAY,EAAA,CAAA;sBAA5B,MAAM;gBACG,WAAW,EAAA,CAAA;sBAApB,MAAM;gBAGG,UAAU,EAAA,CAAA;sBAAnB,MAAM;;;MEvBI,mBAAmB,CAAA;AAgC9B,IAAA,WAAA,GAAA;AA/BO,QAAA,IAAY,CAAA,YAAA,GAAU,EAAE,CAAC;AACzB,QAAA,IAAe,CAAA,eAAA,GAAG,eAAe,CAAC;AAClC,QAAA,IAAY,CAAA,YAAA,GAAG,YAAY,CAAC;AAC5B,QAAA,IAAW,CAAA,WAAA,GAAG,WAAW,CAAC;AAE1B,QAAA,IAAO,CAAA,OAAA,GAAG,OAAO,CAAC;AAClB,QAAA,IAAS,CAAA,SAAA,GAAG,SAAS,CAAC;AACtB,QAAA,IAAa,CAAA,aAAA,GAAG,aAAa,CAAC;AAO5B,QAAA,IAAA,CAAA,MAAM,GAAW,IAAI,MAAM,EAAE,CAAC;AAG9B,QAAA,IAAA,CAAA,gBAAgB,GAAG,6BAA6B,CAAC,SAAS,CAAC;AAE1D,QAAA,IAAA,CAAA,MAAM,GAAyB,IAAI,YAAY,EAAU,CAAC;AAE1D,QAAA,IAAA,CAAA,MAAM,GAAuB,IAAI,YAAY,EAAQ,CAAC;AACtD,QAAA,IAAA,CAAA,QAAQ,GAAuB,IAAI,YAAY,EAAQ,CAAC;AACxD,QAAA,IAAA,CAAA,YAAY,GAAuB,IAAI,YAAY,EAAQ,CAAC;AAC5D,QAAA,IAAA,CAAA,YAAY,GAAuB,IAAI,YAAY,EAAQ,CAAC;AAC5D,QAAA,IAAA,CAAA,MAAM,GAAyB,IAAI,YAAY,EAAU,CAAC;AAC1D,QAAA,IAAA,CAAA,QAAQ,GAAyB,IAAI,YAAY,EAAU,CAAC;AAC5D,QAAA,IAAA,CAAA,WAAW,GAAuB,IAAI,YAAY,EAAQ,CAAC;AAC3D,QAAA,IAAA,CAAA,QAAQ,GAAuB,IAAI,YAAY,EAAQ,CAAC;AAExD,QAAA,IAAA,CAAA,UAAU,GAAuB,IAAI,YAAY,EAAQ,CAAC;KAEnE;IAED,QAAQ,GAAA;AACN,QAAA,IAAG,IAAI,CAAC,cAAc,IAAE,SAAS,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,IAAE,CAAC,EAAC;AACjE,YAAA,IAAI,CAAC,GAAG,GAAG,IAAI,IAAI,CAAC,KAAK,EAAE,KAAK,EAAC,EAAE,CAAC,CAAC;AACtC,SAAA;AAAI,aAAA;AACH,YAAA,IAAI,CAAC,GAAG,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;AACrD,SAAA;QACD,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,QAAQ,GAAG,IAAI,CAAC;AAC5C,QAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAG;AACrB,YAAA,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACf,YAAA,CAAC,CAAC,oBAAoB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACtC,SAAC,CAAC,CAAC;KACJ;IAEM,iBAAiB,GAAA;QACtB,IAAI,MAAM,GAAW,EAAE,CAAC;AACxB,QAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,gBAAgB,EAAE,CAAC,OAAO,CAAC,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAG3E,QAAA,OAAO,MAAM,CAAC;KACf;AAED,IAAA,QAAQ,CAAC,KAAU,EAAA;QACjB,IAAG,IAAI,CAAC,YAAY,EAAC;AACnB,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC3B,SAAA;KACF;AAED,IAAA,WAAW,CAAC,KAAU,EAAA;QACpB,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,QAAQ,GAAG,IAAI,CAAC;QAC5C,IAAG,IAAI,CAAC,YAAY,EAAC;AACnB,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACzB,SAAA;AAAI,aAAA;AACH,YAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1C,SAAA;AAED,QAAA,UAAU,CAAC,QAAO,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,QAAQ,GAAG,KAAK,CAAC,EAAC,EAAE,IAAI,CAAC,CAAC;KAEzE;AAED,IAAA,QAAQ,CAAC,KAAa,EAAA;QACpB,IAAI,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,MAAM,KAAK,eAAe,EAAE;YAC1D,IAAI,MAAM,GAAQ,EAAE,CAAC;AACrB,YAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAG;gBACrB,CAAC,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,OAAO,CAAC,CAAC,CAAM,KAAM,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;AAChE,aAAC,CAAC,CAAC;YACH,IAAI,YAAY,GAAG,IAAI,CAAC;AACxB,YAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,IAAG;AACxB,gBAAA,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,IAAI,OAAO,EAAE;oBACrC,YAAY,GAAG,KAAK,CAAC;AACtB,iBAAA;AACH,aAAC,CAAC,CAAA;AACF,YAAA,IAAI,YAAY,EAAE;gBAChB,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,GAAG,OAAO,CAAC;gBACrC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAC9B,aAAA;AAAM,iBAAA;gBACL,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,CAAC;AACvC,gBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC1B,aAAA;AACF,SAAA;aAAM,IAAI,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,MAAM,KAAK,YAAY,EAAE;YAC9D,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,CAAC;AACvC,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACzB,SAAA;KACF;AAED,IAAA,QAAQ,CAAC,IAAS,EAAA;AAChB,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KACxB;AACD,IAAA,UAAU,CAAC,IAAQ,EAAA;AACjB,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAC1B;AACD,IAAA,UAAU,CAAC,IAAU,EAAA;AACnB,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAC1B;AAED,IAAA,cAAc,CAAC,IAAU,EAAA;AACvB,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC7B,QAAA,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,YAAY,EAAE,CAAC;KAC5C;AAED,IAAA,cAAc,CAAC,IAAU,EAAA;AACvB,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;KAC7B;AAED,IAAA,gBAAgB,CAAC,KAAqB,EAAA;QACpC,KAAK,CAAC,kBAAkB,CAAC,CAAC;QAC1B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAC7B,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;KAC/B;AAED,IAAA,gBAAgB,CAAC,KAAwB,EAAA;AACvC,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC9B,QAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,IAAG;AACxB,YAAA,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AAC5C,SAAC,CAAC,CAAC;QACH,IAAI,KAAK,CAAC,OAAO,EAAE;YACjB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAC9B,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACtB,SAAA;KACF;IAED,SAAS,GAAA;QACP,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;KAC9B;IACD,WAAW,GAAA;KACV;AAED,IAAA,aAAa,CAAC,IAAS,EAAA;AACrB,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAC7B;AACD,IAAA,YAAY,CAAC,IAAQ,EAAA;AACnB,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAC5B;;gHAnJU,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAnB,mBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mBAAmB,siBChBhC,kiRA8HgB,EAAA,MAAA,EAAA,CAAA,otBAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,YAAA,EAAA,oBAAA,EAAA,WAAA,EAAA,YAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,4LAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,OAAA,EAAA,aAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,WAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,OAAA,EAAA,UAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,eAAA,EAAA,MAAA,EAAA,OAAA,EAAA,SAAA,EAAA,UAAA,EAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,qBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAC,uBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,QAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,cAAA,EAAA,cAAA,EAAA,aAAA,EAAA,YAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,QAAA,EAAA,QAAA,EAAA,yHAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,IAAA,EAAA,aAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,aAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FD9GH,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAL/B,SAAS;+BACE,aAAa,EAAA,QAAA,EAAA,kiRAAA,EAAA,MAAA,EAAA,CAAA,otBAAA,CAAA,EAAA,CAAA;0EAgBd,KAAK,EAAA,CAAA;sBAAb,KAAK;gBACG,YAAY,EAAA,CAAA;sBAApB,KAAK;gBACG,cAAc,EAAA,CAAA;sBAAtB,KAAK;gBACG,MAAM,EAAA,CAAA;sBAAd,KAAK;gBAEG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBACG,gBAAgB,EAAA,CAAA;sBAAxB,KAAK;gBAEI,MAAM,EAAA,CAAA;sBAAf,MAAM;gBAEG,MAAM,EAAA,CAAA;sBAAf,MAAM;gBACG,QAAQ,EAAA,CAAA;sBAAjB,MAAM;gBACG,YAAY,EAAA,CAAA;sBAArB,MAAM;gBACG,YAAY,EAAA,CAAA;sBAArB,MAAM;gBACG,MAAM,EAAA,CAAA;sBAAf,MAAM;gBACG,QAAQ,EAAA,CAAA;sBAAjB,MAAM;gBACG,WAAW,EAAA,CAAA;sBAApB,MAAM;gBACG,QAAQ,EAAA,CAAA;sBAAjB,MAAM;gBACe,KAAK,EAAA,CAAA;sBAA1B,YAAY;uBAAC,MAAM,CAAA;gBACV,UAAU,EAAA,CAAA;sBAAnB,MAAM;;;MElCI,2BAA2B,CAAA;AAsCtC,IAAA,WAAA,GAAA;AA5BS,QAAA,IAAA,CAAA,MAAM,GAAW,IAAI,MAAM,EAAE,CAAC;AAG9B,QAAA,IAAA,CAAA,gBAAgB,GAAG,6BAA6B,CAAC,SAAS,CAAC;AAE1D,QAAA,IAAA,CAAA,MAAM,GAAyB,IAAI,YAAY,EAAU,CAAC;AAE1D,QAAA,IAAA,CAAA,MAAM,GAAuB,IAAI,YAAY,EAAQ,CAAC;AACtD,QAAA,IAAA,CAAA,QAAQ,GAAuB,IAAI,YAAY,EAAQ,CAAC;AACxD,QAAA,IAAA,CAAA,YAAY,GAAuB,IAAI,YAAY,EAAQ,CAAC;AAC5D,QAAA,IAAA,CAAA,MAAM,GAAyB,IAAI,YAAY,EAAU,CAAC;AAC1D,QAAA,IAAA,CAAA,QAAQ,GAAyB,IAAI,YAAY,EAAU,CAAC;AAC5D,QAAA,IAAA,CAAA,YAAY,GAAuB,IAAI,YAAY,EAAQ,CAAC;AAOtE,QAAA,IAAO,CAAA,OAAA,GAAG,IAAI,CAAC;AACf,QAAA,IAAU,CAAA,UAAA,GAAG,KAAK,CAAC;AACnB,QAAA,IAAS,CAAA,SAAA,GAAG,IAAI,CAAC;AAER,QAAA,IAAa,CAAA,aAAA,GAAW,EAAE,CAAC;AAE7B,QAAA,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAC;AAEd,QAAA,IAAA,CAAA,UAAU,GAAuB,IAAI,YAAY,EAAQ,CAAC;KAGnE;IAED,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAG;AACrB,YAAA,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACnB,CAAC,CAAC,oBAAoB,EAAE,CAAC;AACzB,YAAA,CAAC,CAAC,gBAAgB,EAAE,CAAC,OAAO,CAAC,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AAChE,SAAC,CAAC,CAAC;AACH,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QACrF,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,mBAAmB,CAAC;KACrE;AAED,IAAA,UAAU,CAAC,KAAY,EAAA;QACrB,KAAK,CAAC,eAAe,EAAE,CAAC;AACxB,QAAA,IAAI,CAAC,QAAQ,CAAC,UAAU,IAAI,EAAE,CAAC;KAChC;AAED,IAAA,WAAW,CAAC,KAAY,EAAA;QACtB,KAAK,CAAC,eAAe,EAAE,CAAC;AACxB,QAAA,IAAI,CAAC,QAAQ,CAAC,UAAU,IAAI,EAAE,CAAC;KAChC;AAED,IAAA,MAAM,CAAC,IAAU,EAAA;;AACb,QAAA,IAAI,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC;QAC/B,IAAG,CAAA,IAAI,KAAA,IAAA,IAAJ,IAAI,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAJ,IAAI,CAAE,KAAK,KAAE,KAAK,EAAC;YACpB,CAAC,CAAA,EAAA,GAAA,IAAI,CAAC,KAAK,mCAAI,EAAE,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC,CAAC;YAChE,IAAI,CAAC,IAAI,CAAC,aAAa;AAAE,gBAAA,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;AAClD,SAAA;AACF,QAAA,IAAI,IAAI,KAAJ,IAAA,IAAA,IAAI,uBAAJ,IAAI,CAAE,SAAS,EAAE;AACpB,YAAA,IAAI,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,CAAC;YACnC,CAAC,CAAA,EAAA,GAAA,IAAI,CAAC,QAAQ,mCAAI,EAAE,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,CAAC,CAAC;AACrE,SAAA;AAED,QAAA,CAAC,MAAA,IAAI,CAAC,KAAK,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,EAAE,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,sBAAsB,EAAE,CAAC,CAAC;QAC5D,IAAI,CAAC,IAAI,CAAC,aAAa;AAAE,YAAA,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;AACjD,QAAA,IAAI,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC;AAC1D,QAAA,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;YACd,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AACvC,SAAA;QACD,IAAI,MAAM,GAAW,EAAE,CAAC;AACxB,QAAA,CAAC,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,IAAI,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,KAAK,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,EAAE,EAAE,OAAO,CAAC,CAAC,IAAG;;YACjC,CAAC,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,CAAC,CAAC,IAAI,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,gBAAgB,EAAE,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,EAAE,EAAE,OAAO,CAAC,CAAC,CAAO,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5E,SAAC,CAAC,CAAC;QAEH,CAAA,EAAA,GAAA,IAAI,CAAC,MAAM,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,IAAI,CAAC,MAAM,CAAC,CAAC;KAC3B;AAED,IAAA,QAAQ,CAAC,KAAa,EAAA;AACpB,QAAA,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;AAC3B,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KACzB;AAED,IAAA,QAAQ,CAAC,KAAU,EAAA;AACjB,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KACzB;AAED,IAAA,UAAU,CAAC,IAAU,EAAA;AACnB,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAC1B;AAED,IAAA,cAAc,CAAC,IAAU,EAAA;AACvB,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAC9B;AAED,IAAA,IAAI,CAAC,KAAS,EAAA;AACZ,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC3B;AACD,IAAA,UAAU,CAAC,KAAS,EAAA;AAClB,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;KACxB;AAED,IAAA,cAAc,CAAC,IAAS,EAAA;AACtB,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAC9B;AACD,IAAA,YAAY,CAAC,IAAQ,EAAA;AACnB,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAC5B;;wHApHU,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;4GAA3B,2BAA2B,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,YAAA,EAAA,cAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,KAAA,EAAA,OAAA,EAAA,MAAA,EAAA,QAAA,EAAA,QAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,aAAA,EAAA,eAAA,EAAA,EAAA,OAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,MAAA,EAAA,QAAA,EAAA,QAAA,EAAA,UAAA,EAAA,YAAA,EAAA,cAAA,EAAA,MAAA,EAAA,QAAA,EAAA,QAAA,EAAA,UAAA,EAAA,YAAA,EAAA,cAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,MAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAuB3B,mBAAmB,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,UAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,UAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECpChC,28EA0CA,EAAA,MAAA,EAAA,CAAA,8wBAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,YAAA,EAAA,oBAAA,EAAA,WAAA,EAAA,YAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,4LAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,WAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,mBAAA,EAAA,UAAA,EAAA,aAAA,EAAA,OAAA,EAAA,UAAA,EAAA,aAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,aAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAC,mBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,kBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,UAAA,EAAA,cAAA,EAAA,cAAA,EAAA,QAAA,EAAA,UAAA,EAAA,aAAA,EAAA,UAAA,EAAA,YAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,aAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAD,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,wDAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,eAAA,EAAA,UAAA,EAAA,UAAA,EAAA,OAAA,EAAA,YAAA,EAAA,UAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,EAAA,WAAA,EAAA,SAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,uBAAA,EAAA,+BAAA,EAAA,aAAA,EAAA,IAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,sBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,aAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FD7Ba,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBALvC,SAAS;+BACE,sBAAsB,EAAA,QAAA,EAAA,28EAAA,EAAA,MAAA,EAAA,CAAA,8wBAAA,CAAA,EAAA,CAAA;0EAQvB,WAAW,EAAA,CAAA;sBAAnB,KAAK;gBACG,YAAY,EAAA,CAAA;sBAApB,KAAK;gBACG,cAAc,EAAA,CAAA;sBAAtB,KAAK;gBACG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBAEG,KAAK,EAAA,CAAA;sBAAb,KAAK;gBACG,MAAM,EAAA,CAAA;sBAAd,KAAK;gBAEG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBACG,gBAAgB,EAAA,CAAA;sBAAxB,KAAK;gBAEI,MAAM,EAAA,CAAA;sBAAf,MAAM;gBAEG,MAAM,EAAA,CAAA;sBAAf,MAAM;gBACG,QAAQ,EAAA,CAAA;sBAAjB,MAAM;gBACG,YAAY,EAAA,CAAA;sBAArB,MAAM;gBACG,MAAM,EAAA,CAAA;sBAAf,MAAM;gBACG,QAAQ,EAAA,CAAA;sBAAjB,MAAM;gBACG,YAAY,EAAA,CAAA;sBAArB,MAAM;gBACyB,IAAI,EAAA,CAAA;sBAAnC,SAAS;uBAAC,mBAAmB,CAAA;gBAGvB,QAAQ,EAAA,CAAA;sBADd,SAAS;uBAAC,UAAU,CAAA;gBAQZ,aAAa,EAAA,CAAA;sBAArB,KAAK;gBAII,UAAU,EAAA,CAAA;sBAAnB,MAAM;;;MEtCI,0BAA0B,CAAA;AA8BrC,IAAA,WAAA,GAAA;AA1BS,QAAA,IAAA,CAAA,MAAM,GAAW,IAAI,MAAM,EAAE,CAAC;AAG9B,QAAA,IAAgB,CAAA,gBAAA,GAAO,IAAI,CAAC;AAE3B,QAAA,IAAA,CAAA,MAAM,GAAyB,IAAI,YAAY,EAAU,CAAC;AAE1D,QAAA,IAAA,CAAA,MAAM,GAAuB,IAAI,YAAY,EAAQ,CAAC;AACtD,QAAA,IAAA,CAAA,QAAQ,GAAuB,IAAI,YAAY,EAAQ,CAAC;AACxD,QAAA,IAAA,CAAA,YAAY,GAAuB,IAAI,YAAY,EAAQ,CAAC;AAQtE,QAAA,IAAO,CAAA,OAAA,GAAG,IAAI,CAAC;AACf,QAAA,IAAU,CAAA,UAAA,GAAG,KAAK,CAAC;AACnB,QAAA,IAAS,CAAA,SAAA,GAAG,IAAI,CAAC;AAEjB,QAAA,IAAa,CAAA,aAAA,GAAW,EAAE,CAAC;AAEpB,QAAA,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAC;AACd,QAAA,IAAA,CAAA,UAAU,GAAuB,IAAI,YAAY,EAAQ,CAAC;KAGnE;IAED,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAG;AACrB,YAAA,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACnB,CAAC,CAAC,oBAAoB,EAAE,CAAC;AACzB,YAAA,CAAC,CAAC,gBAAgB,EAAE,CAAC,OAAO,CAAC,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AAChE,SAAC,CAAC,CAAC;QACH,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,MAAM,GAAG,qBAAqB,CAAC;AAC/D,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QACrF,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,mBAAmB,CAAC;KACrE;AAED,IAAA,UAAU,CAAC,KAAY,EAAA;QACrB,KAAK,CAAC,eAAe,EAAE,CAAC;AACxB,QAAA,IAAI,CAAC,QAAQ,CAAC,UAAU,IAAI,EAAE,CAAC;KAChC;AAED,IAAA,WAAW,CAAC,KAAY,EAAA;QACtB,KAAK,CAAC,eAAe,EAAE,CAAC;AACxB,QAAA,IAAI,CAAC,QAAQ,CAAC,UAAU,IAAI,EAAE,CAAC;KAChC;AAED,IAAA,MAAM,CAAC,IAAU,EAAA;;AACf,QAAA,IAAI,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC;QAC/B,IAAG,CAAA,IAAI,KAAA,IAAA,IAAJ,IAAI,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAJ,IAAI,CAAE,KAAK,KAAE,KAAK,EAAC;YACpB,CAAC,CAAA,EAAA,GAAA,IAAI,CAAC,KAAK,mCAAI,EAAE,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC,CAAC;YAChE,IAAI,CAAC,IAAI,CAAC,aAAa;AAAE,gBAAA,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;AAClD,SAAA;AACF,QAAA,IAAI,IAAI,KAAJ,IAAA,IAAA,IAAI,uBAAJ,IAAI,CAAE,SAAS,EAAE;AACpB,YAAA,IAAI,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,CAAC;YACnC,CAAC,CAAA,EAAA,GAAA,IAAI,CAAC,QAAQ,mCAAI,EAAE,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,CAAC,CAAC;AACrE,SAAA;AAED,QAAA,CAAC,MAAA,IAAI,CAAC,KAAK,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,EAAE,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,sBAAsB,EAAE,CAAC,CAAC;QAC5D,IAAI,CAAC,IAAI,CAAC,aAAa;AAAE,YAAA,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;AACjD,QAAA,IAAI,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC;AAC1D,QAAA,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;YACd,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AACvC,SAAA;QACD,IAAI,MAAM,GAAW,EAAE,CAAC;AACxB,QAAA,CAAC,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,IAAI,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,KAAK,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,EAAE,EAAE,OAAO,CAAC,CAAC,IAAG;;YACjC,CAAC,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,CAAC,CAAC,IAAI,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,gBAAgB,EAAE,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,EAAE,EAAE,OAAO,CAAC,CAAC,CAAO,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5E,SAAC,CAAC,CAAC;QAEH,CAAA,EAAA,GAAA,IAAI,CAAC,MAAM,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,IAAI,CAAC,MAAM,CAAC,CAAC;KAC3B;AAEC,IAAA,QAAQ,CAAC,KAAa,EAAA;AACpB,QAAA,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;AAC3B,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KACzB;AAED,IAAA,QAAQ,CAAC,KAAU,EAAA;AACjB,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KACzB;AAED,IAAA,UAAU,CAAC,IAAU,EAAA;AACnB,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAC1B;AAED,IAAA,cAAc,CAAC,IAAU,EAAA;AACvB,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAC9B;AAED,IAAA,YAAY,CAAC,IAAQ,EAAA;AACnB,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAC5B;;uHAlGU,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;2GAA1B,0BAA0B,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,QAAA,EAAA,UAAA,EAAA,KAAA,EAAA,OAAA,EAAA,MAAA,EAAA,QAAA,EAAA,QAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,MAAA,EAAA,QAAA,EAAA,QAAA,EAAA,UAAA,EAAA,YAAA,EAAA,cAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,MAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAe1B,mBAAmB,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,UAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,UAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC3BhC,4wEAuCsG,EAAA,MAAA,EAAA,CAAA,65BAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,YAAA,EAAA,oBAAA,EAAA,WAAA,EAAA,YAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,4LAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,WAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,mBAAA,EAAA,UAAA,EAAA,aAAA,EAAA,OAAA,EAAA,UAAA,EAAA,aAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,aAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAC,mBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,kBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,UAAA,EAAA,cAAA,EAAA,cAAA,EAAA,QAAA,EAAA,UAAA,EAAA,aAAA,EAAA,UAAA,EAAA,YAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,aAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAD,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,wDAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,eAAA,EAAA,UAAA,EAAA,UAAA,EAAA,OAAA,EAAA,YAAA,EAAA,UAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,EAAA,WAAA,EAAA,SAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,uBAAA,EAAA,+BAAA,EAAA,aAAA,EAAA,IAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,sBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,aAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FD3BzF,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBALtC,SAAS;+BACE,qBAAqB,EAAA,QAAA,EAAA,4wEAAA,EAAA,MAAA,EAAA,CAAA,65BAAA,CAAA,EAAA,CAAA;0EAKtB,WAAW,EAAA,CAAA;sBAAnB,KAAK;gBACG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBACG,KAAK,EAAA,CAAA;sBAAb,KAAK;gBACG,MAAM,EAAA,CAAA;sBAAd,KAAK;gBAEG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBACG,gBAAgB,EAAA,CAAA;sBAAxB,KAAK;gBAEI,MAAM,EAAA,CAAA;sBAAf,MAAM;gBAEG,MAAM,EAAA,CAAA;sBAAf,MAAM;gBACG,QAAQ,EAAA,CAAA;sBAAjB,MAAM;gBACG,YAAY,EAAA,CAAA;sBAArB,MAAM;gBAEyB,IAAI,EAAA,CAAA;sBAAnC,SAAS;uBAAC,mBAAmB,CAAA;gBAGvB,QAAQ,EAAA,CAAA;sBADd,SAAS;uBAAC,UAAU,CAAA;gBAWX,UAAU,EAAA,CAAA;sBAAnB,MAAM;;;AE1BT,MAAM,OAAO,GAAG;IACd,oBAAoB;IACpB,iBAAiB;IACjB,cAAc;IACd,eAAe;IACf,aAAa;IACb,oBAAoB;IACpB,wBAAwB;IACxB,gBAAgB;IAChB,kBAAkB;IAClB,cAAc;IACd,cAAc;IACd,gBAAgB;;CAEjB,CAAC;MAUW,cAAc,CAAA;;2GAAd,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;4GAAd,cAAc,EAAA,OAAA,EAAA,CALvB,YAAY,EAlBd,oBAAoB;QACpB,iBAAiB;QACjB,cAAc;QACd,eAAe;QACf,aAAa;QACb,oBAAoB;QACpB,wBAAwB;QACxB,gBAAgB;QAChB,kBAAkB;QAClB,cAAc;QACd,cAAc;QACd,gBAAgB;;iBAXhB,oBAAoB;QACpB,iBAAiB;QACjB,cAAc;QACd,eAAe;QACf,aAAa;QACb,oBAAoB;QACpB,wBAAwB;QACxB,gBAAgB;QAChB,kBAAkB;QAClB,cAAc;QACd,cAAc;QACd,gBAAgB;;;AAYL,cAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,EANhB,OAAA,EAAA,CAAA;YACP,YAAY;YACZ,OAAO;AACR,SAAA,EApBD,oBAAoB;QACpB,iBAAiB;QACjB,cAAc;QACd,eAAe;QACf,aAAa;QACb,oBAAoB;QACpB,wBAAwB;QACxB,gBAAgB;QAChB,kBAAkB;QAClB,cAAc;QACd,cAAc;QACd,gBAAgB;;;2FAYL,cAAc,EAAA,UAAA,EAAA,CAAA;kBAR1B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE,EAAE;AAChB,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,OAAO;AACR,qBAAA;oBACD,OAAO,EAAC,CAAC,OAAO,CAAC;iBAClB,CAAA;;;MCSY,gBAAgB,CAAA;;6GAAhB,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAhB,gBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,iBAvBzB,mBAAmB;QACnB,2BAA2B;QAC3B,uBAAuB;AACvB,QAAA,0BAA0B,aAG1B,YAAY;;;;;;;;;;;QAWZ,WAAW;AACX,QAAA,cAAc,aACD,mBAAmB;QAChC,0BAA0B;QAC1B,2BAA2B,CAAA,EAAA,CAAA,CAAA;AAElB,gBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,EAlBlB,OAAA,EAAA,CAAA;YACP,YAAY;;;;;;;;;;;YAWZ,WAAW;YACX,cAAc;SACf,CAAA,EAAA,CAAA,CAAA;2FAIU,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAzB5B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE;wBACZ,mBAAmB;wBACnB,2BAA2B;wBAC3B,uBAAuB;wBACvB,0BAA0B;AAC3B,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,YAAY;;;;;;;;;;;wBAWZ,WAAW;wBACX,cAAc;qBACf,EAAC,OAAO,EAAC,CAAK,mBAAmB;wBAChC,0BAA0B;AAC1B,wBAAA,2BAA2B,CAAC;iBAC/B,CAAA;;;AC7CD;;AAEG;;;;"}