@syncfusion/ej2-lists 25.2.3 → 26.1.35
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.eslintrc.json +3 -2
- package/dist/ej2-lists.min.js +2 -2
- package/dist/ej2-lists.umd.min.js +2 -2
- package/dist/ej2-lists.umd.min.js.map +1 -1
- package/dist/es6/ej2-lists.es2015.js +255 -279
- package/dist/es6/ej2-lists.es2015.js.map +1 -1
- package/dist/es6/ej2-lists.es5.js +241 -265
- package/dist/es6/ej2-lists.es5.js.map +1 -1
- package/dist/global/ej2-lists.min.js +2 -2
- package/dist/global/ej2-lists.min.js.map +1 -1
- package/dist/global/index.d.ts +1 -1
- package/package.json +10 -10
- package/src/common/list-base.d.ts +61 -30
- package/src/common/list-base.js +167 -94
- package/src/list-view/list-view.d.ts +7 -9
- package/src/list-view/list-view.js +42 -75
- package/src/list-view/virtualization.d.ts +0 -1
- package/src/list-view/virtualization.js +10 -66
- package/src/sortable/sortable.d.ts +5 -0
- package/src/sortable/sortable.js +14 -7
- package/styles/bootstrap-dark.css +100 -122
- package/styles/bootstrap-dark.scss +8 -2
- package/styles/bootstrap.css +100 -122
- package/styles/bootstrap.scss +8 -2
- package/styles/bootstrap4.css +139 -161
- package/styles/bootstrap4.scss +8 -2
- package/styles/bootstrap5-dark.css +101 -125
- package/styles/bootstrap5-dark.scss +8 -2
- package/styles/bootstrap5.css +101 -125
- package/styles/bootstrap5.scss +8 -2
- package/styles/fabric-dark.css +100 -122
- package/styles/fabric-dark.scss +8 -2
- package/styles/fabric.css +100 -122
- package/styles/fabric.scss +8 -2
- package/styles/fluent-dark.css +143 -165
- package/styles/fluent-dark.scss +8 -2
- package/styles/fluent.css +143 -165
- package/styles/fluent.scss +8 -2
- package/styles/fluent2.css +1485 -0
- package/styles/fluent2.scss +8 -0
- package/styles/highcontrast-light.css +100 -122
- package/styles/highcontrast-light.scss +8 -2
- package/styles/highcontrast.css +100 -122
- package/styles/highcontrast.scss +8 -2
- package/styles/list-view/_bootstrap4-definition.scss +5 -0
- package/styles/list-view/_bootstrap5.3-definition.scss +132 -0
- package/styles/list-view/_fluent2-definition.scss +132 -0
- package/styles/list-view/_layout.scss +377 -393
- package/styles/list-view/_material3-definition.scss +0 -7
- package/styles/list-view/_theme.scss +84 -95
- package/styles/list-view/bootstrap-dark.css +97 -121
- package/styles/list-view/bootstrap.css +97 -121
- package/styles/list-view/bootstrap4.css +136 -160
- package/styles/list-view/bootstrap5-dark.css +98 -124
- package/styles/list-view/bootstrap5.css +98 -124
- package/styles/list-view/fabric-dark.css +97 -121
- package/styles/list-view/fabric.css +97 -121
- package/styles/list-view/fluent-dark.css +140 -164
- package/styles/list-view/fluent.css +140 -164
- package/styles/list-view/fluent2.css +1455 -0
- package/styles/list-view/fluent2.scss +5 -0
- package/styles/list-view/highcontrast-light.css +97 -121
- package/styles/list-view/highcontrast.css +97 -121
- package/styles/list-view/icons/_bootstrap5.3.scss +8 -0
- package/styles/list-view/icons/_fluent2.scss +10 -0
- package/styles/list-view/material-dark.css +97 -121
- package/styles/list-view/material.css +97 -121
- package/styles/list-view/material3-dark.css +112 -136
- package/styles/list-view/material3.css +112 -136
- package/styles/list-view/tailwind-dark.css +207 -235
- package/styles/list-view/tailwind.css +207 -235
- package/styles/material-dark.css +100 -122
- package/styles/material-dark.scss +8 -2
- package/styles/material.css +100 -122
- package/styles/material.scss +8 -2
- package/styles/material3-dark.css +115 -137
- package/styles/material3-dark.scss +8 -2
- package/styles/material3.css +115 -137
- package/styles/material3.scss +8 -2
- package/styles/sortable/_bootstrap5.3-definition.scss +1 -0
- package/styles/sortable/_fluent2-definition.scss +1 -0
- package/styles/sortable/bootstrap-dark.css +3 -1
- package/styles/sortable/bootstrap.css +3 -1
- package/styles/sortable/bootstrap4.css +3 -1
- package/styles/sortable/bootstrap5-dark.css +3 -1
- package/styles/sortable/bootstrap5.css +3 -1
- package/styles/sortable/fabric-dark.css +3 -1
- package/styles/sortable/fabric.css +3 -1
- package/styles/sortable/fluent-dark.css +3 -1
- package/styles/sortable/fluent.css +3 -1
- package/styles/sortable/fluent2.css +1063 -0
- package/styles/sortable/fluent2.scss +3 -0
- package/styles/sortable/highcontrast-light.css +3 -1
- package/styles/sortable/highcontrast.css +3 -1
- package/styles/sortable/material-dark.css +3 -1
- package/styles/sortable/material.css +3 -1
- package/styles/sortable/material3-dark.css +4 -2
- package/styles/sortable/material3.css +4 -2
- package/styles/sortable/tailwind-dark.css +3 -1
- package/styles/sortable/tailwind.css +3 -1
- package/styles/tailwind-dark.css +210 -236
- package/styles/tailwind-dark.scss +8 -2
- package/styles/tailwind.css +210 -236
- package/styles/tailwind.scss +8 -2
- package/CHANGELOG.md +0 -544
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ej2-lists.es2015.js","sources":["../src/es6/common/list-base.js","../src/es6/list-view/list-view.js","../src/es6/list-view/virtualization.js","../src/es6/list-view/index.js","../src/es6/common/index.js","../src/es6/sortable/sortable.js","../src/es6/sortable/index.js","../src/es6/index.js"],"sourcesContent":["/* eslint-disable no-inner-declarations */\nimport { extend, merge, isNullOrUndefined, getValue, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { attributes, prepend, isVisible, append, addClass } from '@syncfusion/ej2-base';\nimport { compile } from '@syncfusion/ej2-base';\nimport { DataManager, Query } from '@syncfusion/ej2-data';\nexport let cssClass = {\n li: 'e-list-item',\n ul: 'e-list-parent e-ul',\n group: 'e-list-group-item',\n icon: 'e-list-icon',\n text: 'e-list-text',\n check: 'e-list-check',\n checked: 'e-checked',\n selected: 'e-selected',\n expanded: 'e-expanded',\n textContent: 'e-text-content',\n hasChild: 'e-has-child',\n level: 'e-level',\n url: 'e-list-url',\n collapsible: 'e-icon-collapsible',\n disabled: 'e-disabled',\n image: 'e-list-img',\n iconWrapper: 'e-icon-wrapper',\n anchorWrap: 'e-anchor-wrap',\n navigable: 'e-navigable'\n};\n/**\n * Base List Generator\n */\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport var ListBase;\n(function (ListBase) {\n /**\n *\n * Default mapped fields.\n */\n ListBase.defaultMappedFields = {\n id: 'id',\n text: 'text',\n url: 'url',\n value: 'value',\n isChecked: 'isChecked',\n enabled: 'enabled',\n expanded: 'expanded',\n selected: 'selected',\n iconCss: 'iconCss',\n child: 'child',\n isVisible: 'isVisible',\n hasChildren: 'hasChildren',\n tooltip: 'tooltip',\n htmlAttributes: 'htmlAttributes',\n urlAttributes: 'urlAttributes',\n imageAttributes: 'imageAttributes',\n imageUrl: 'imageUrl',\n groupBy: null,\n sortBy: null\n };\n const defaultAriaAttributes = {\n level: 1,\n listRole: 'presentation',\n itemRole: 'presentation',\n groupItemRole: 'group',\n itemText: 'list-item',\n wrapperRole: 'presentation'\n };\n const defaultListBaseOptions = {\n showCheckBox: false,\n showIcon: false,\n enableHtmlSanitizer: false,\n expandCollapse: false,\n fields: ListBase.defaultMappedFields,\n ariaAttributes: defaultAriaAttributes,\n listClass: '',\n itemClass: '',\n processSubChild: false,\n sortOrder: 'None',\n template: null,\n groupTemplate: null,\n headerTemplate: null,\n expandIconClass: 'e-icon-collapsible',\n moduleName: 'list',\n expandIconPosition: 'Right',\n itemNavigable: false\n };\n /**\n * Function helps to created and return the UL Li element based on your data.\n *\n * @param {createElementParams} createElement - Specifies an array of JSON data.\n *\n * @param {{Object}[]} dataSource - Specifies an array of JSON data.\n *\n * @param {ListBaseOptions} options? - Specifies the list options that need to provide.\n *\n * @param {boolean} isSingleLevel? - Specifies the list options that need to provide.\n *\n * @param {any} componentInstance? - Specifies the list options that need to provide.\n *\n * @returns {createElement} createListFromJson - Specifies the list options that need to provide.\n */\n function createList(createElement, dataSource, \n // eslint-disable-next-line\n options, isSingleLevel, componentInstance) {\n const curOpt = extend({}, defaultListBaseOptions, options);\n const ariaAttributes = extend({}, defaultAriaAttributes, curOpt.ariaAttributes);\n const type = typeofData(dataSource).typeof;\n if (type === 'string' || type === 'number') {\n return createListFromArray(createElement, dataSource, isSingleLevel, options, componentInstance);\n }\n else {\n return createListFromJson(createElement, dataSource, options, ariaAttributes.level, isSingleLevel, componentInstance);\n }\n }\n ListBase.createList = createList;\n /**\n * Function helps to created an element list based on string array input .\n *\n * @param {createElementParams} createElement - Specifies an array of JSON data.\n *\n * @param {{Object}[]} dataSource - Specifies an array of JSON data.\n *\n * @param {ListBaseOptions} options? - Specifies the list options that need to provide.\n *\n * @param {boolean} isSingleLevel? - Specifies the list options that need to provide.\n *\n * @param {any} componentInstance? - Specifies the list options that need to provide.\n *\n * @returns {createElement} generateUL - returns the list options that need to provide.\n */\n function createListFromArray(createElement, dataSource, \n // tslint:disable-next-line\n // eslint-disable-next-line\n isSingleLevel, options, componentInstance) {\n const subChild = createListItemFromArray(createElement, dataSource, isSingleLevel, options, componentInstance);\n return generateUL(createElement, subChild, null, options);\n }\n ListBase.createListFromArray = createListFromArray;\n /**\n * Function helps to created an element list based on string array input .\n *\n * @param {createElementParams} createElement - Specifies an array of JSON data.\n *\n * @param {{Object}[]} dataSource - Specifies an array of JSON data.\n *\n * @param {ListBaseOptions} options? - Specifies the list options that need to provide.\n *\n * @param {boolean} isSingleLevel? - Specifies the list options that need to provide.\n *\n * @param {any} componentInstance? - Specifies the list options that need to provide.\n *\n * @returns {HTMLElement[]} subChild - returns the list options that need to provide.\n */\n function createListItemFromArray(createElement, dataSource, \n // eslint-disable-next-line\n isSingleLevel, options, componentInstance) {\n const subChild = [];\n const curOpt = extend({}, defaultListBaseOptions, options);\n cssClass = getModuleClass(curOpt.moduleName);\n const id = generateId(); // generate id for drop-down-list option.\n for (let i = 0; i < dataSource.length; i++) {\n if (isNullOrUndefined(dataSource[i])) {\n continue;\n }\n let li;\n if (curOpt.itemCreating && typeof curOpt.itemCreating === 'function') {\n const curData = {\n dataSource: dataSource,\n curData: dataSource[i],\n text: dataSource[i],\n options: curOpt\n };\n curOpt.itemCreating(curData);\n }\n if (isSingleLevel) {\n li = generateSingleLevelLI(createElement, dataSource[i], undefined, null, null, [], null, id, i, options);\n }\n else {\n li = generateLI(createElement, dataSource[i], undefined, null, null, options, componentInstance);\n }\n if (curOpt.itemCreated && typeof curOpt.itemCreated === 'function') {\n const curData = {\n dataSource: dataSource,\n curData: dataSource[i],\n text: dataSource[i],\n item: li,\n options: curOpt\n };\n curOpt.itemCreated(curData);\n }\n subChild.push(li);\n }\n return subChild;\n }\n ListBase.createListItemFromArray = createListItemFromArray;\n /**\n * Function helps to created an element list based on array of JSON input .\n *\n * @param {createElementParams} createElement - Specifies an array of JSON data.\n *\n * @param {{Object}[]} dataSource - Specifies an array of JSON data.\n *\n * @param {ListBaseOptions} options? - Specifies the list options that need to provide.\n *\n * @param {boolean} isSingleLevel? - Specifies the list options that need to provide.\n *\n * @param {number} level? - Specifies the list options that need to provide.\n *\n * @param {any} componentInstance? - Specifies the list options that need to provide.\n *\n * @returns {HTMLElement[]} child - returns the list options that need to provide.\n */\n function createListItemFromJson(createElement, dataSource, \n // eslint-disable-next-line\n options, level, isSingleLevel, componentInstance) {\n const curOpt = extend({}, defaultListBaseOptions, options);\n cssClass = getModuleClass(curOpt.moduleName);\n const fields = (componentInstance &&\n (componentInstance.getModuleName() === 'listview' || componentInstance.getModuleName() === 'multiselect'))\n ? curOpt.fields : extend({}, ListBase.defaultMappedFields, curOpt.fields);\n const ariaAttributes = extend({}, defaultAriaAttributes, curOpt.ariaAttributes);\n let id;\n let checkboxElement = [];\n if (level) {\n ariaAttributes.level = level;\n }\n const child = [];\n let li;\n let anchorElement;\n if (dataSource && dataSource.length && !isNullOrUndefined(typeofData(dataSource).item) &&\n // eslint-disable-next-line no-prototype-builtins\n !typeofData(dataSource).item.hasOwnProperty(fields.id)) {\n id = generateId(); // generate id for drop-down-list option.\n }\n for (let i = 0; i < dataSource.length; i++) {\n let fieldData = getFieldValues(dataSource[i], fields);\n if (isNullOrUndefined(dataSource[i])) {\n continue;\n }\n if (curOpt.itemCreating && typeof curOpt.itemCreating === 'function') {\n const curData = {\n dataSource: dataSource,\n curData: dataSource[i],\n text: fieldData[fields.text],\n options: curOpt,\n fields: fields\n };\n curOpt.itemCreating(curData);\n }\n const curItem = dataSource[i];\n if (curOpt.itemCreating && typeof curOpt.itemCreating === 'function') {\n fieldData = getFieldValues(dataSource[i], fields);\n }\n // eslint-disable-next-line no-prototype-builtins\n if (fieldData.hasOwnProperty(fields.id) && !isNullOrUndefined(fieldData[fields.id])) {\n id = fieldData[fields.id];\n }\n const innerEle = [];\n if (curOpt.showCheckBox) {\n if (curOpt.itemNavigable && (fieldData[fields.url] || fieldData[fields.urlAttributes])) {\n checkboxElement.push(createElement('input', { className: cssClass.check, attrs: { type: 'checkbox' } }));\n }\n else {\n innerEle.push(createElement('input', { className: cssClass.check, attrs: { type: 'checkbox' } }));\n }\n }\n if (isSingleLevel === true) {\n // eslint-disable-next-line no-prototype-builtins\n if (curOpt.showIcon && fieldData.hasOwnProperty(fields.iconCss) && !isNullOrUndefined(fieldData[fields.iconCss])) {\n innerEle.push(createElement('span', { className: cssClass.icon + ' ' + fieldData[fields.iconCss] }));\n }\n li = generateSingleLevelLI(createElement, curItem, fieldData, fields, curOpt.itemClass, innerEle, \n // eslint-disable-next-line no-prototype-builtins\n (curItem.hasOwnProperty('isHeader') &&\n curItem.isHeader) ? true : false, id, i, options);\n anchorElement = li.querySelector('.' + cssClass.anchorWrap);\n if (curOpt.itemNavigable && checkboxElement.length) {\n prepend(checkboxElement, li.firstElementChild);\n }\n }\n else {\n li = generateLI(createElement, curItem, fieldData, fields, curOpt.itemClass, options, componentInstance);\n li.classList.add(cssClass.level + '-' + ariaAttributes.level);\n li.setAttribute('aria-level', ariaAttributes.level.toString());\n if (ariaAttributes.groupItemRole === 'presentation' || ariaAttributes.itemRole === 'presentation') {\n li.removeAttribute('aria-level');\n }\n anchorElement = li.querySelector('.' + cssClass.anchorWrap);\n // eslint-disable-next-line no-prototype-builtins\n if (fieldData.hasOwnProperty(fields.tooltip)) {\n let tooltipText = fieldData[fields.tooltip];\n if (options && options.enableHtmlSanitizer) {\n tooltipText = SanitizeHtmlHelper.sanitize(tooltipText);\n }\n else {\n let tooltipTextElement = createElement('span', { innerHTML: tooltipText });\n tooltipText = tooltipTextElement.innerText;\n tooltipTextElement = null;\n }\n li.setAttribute('title', tooltipText);\n }\n // eslint-disable-next-line no-prototype-builtins\n if (fieldData.hasOwnProperty(fields.htmlAttributes) && fieldData[fields.htmlAttributes]) {\n const htmlAttributes = fieldData[fields.htmlAttributes];\n // Check if 'class' attribute is present and not an empty string\n if ('class' in htmlAttributes && typeof htmlAttributes['class'] === 'string' && htmlAttributes['class'].trim() === '') {\n delete htmlAttributes['class'];\n }\n setAttribute(li, htmlAttributes);\n }\n // eslint-disable-next-line no-prototype-builtins\n if (fieldData.hasOwnProperty(fields.enabled) && fieldData[fields.enabled] === false) {\n li.classList.add(cssClass.disabled);\n }\n // eslint-disable-next-line no-prototype-builtins\n if (fieldData.hasOwnProperty(fields.isVisible) && fieldData[fields.isVisible] === false) {\n li.style.display = 'none';\n }\n // eslint-disable-next-line no-prototype-builtins\n if (fieldData.hasOwnProperty(fields.imageUrl) && !isNullOrUndefined(fieldData[fields.imageUrl])\n && !curOpt.template) {\n const attr = { src: fieldData[fields.imageUrl] };\n merge(attr, fieldData[fields.imageAttributes]);\n const imageElemnt = createElement('img', { className: cssClass.image, attrs: attr });\n if (anchorElement) {\n anchorElement.insertAdjacentElement('afterbegin', imageElemnt);\n }\n else {\n prepend([imageElemnt], li.firstElementChild);\n }\n }\n // eslint-disable-next-line no-prototype-builtins\n if (curOpt.showIcon && fieldData.hasOwnProperty(fields.iconCss) &&\n !isNullOrUndefined(fieldData[fields.iconCss]) && !curOpt.template) {\n const iconElement = createElement('div', { className: cssClass.icon + ' ' + fieldData[fields.iconCss] });\n if (anchorElement) {\n anchorElement.insertAdjacentElement('afterbegin', iconElement);\n }\n else {\n prepend([iconElement], li.firstElementChild);\n }\n }\n if (innerEle.length) {\n prepend(innerEle, li.firstElementChild);\n }\n if (curOpt.itemNavigable && checkboxElement.length) {\n prepend(checkboxElement, li.firstElementChild);\n }\n processSubChild(createElement, fieldData, fields, dataSource, curOpt, li, ariaAttributes.level);\n }\n if (anchorElement) {\n addClass([li], [cssClass.navigable]);\n }\n if (curOpt.itemCreated && typeof curOpt.itemCreated === 'function') {\n const curData = {\n dataSource: dataSource,\n curData: dataSource[i],\n text: fieldData[fields.text],\n item: li,\n options: curOpt,\n fields: fields\n };\n curOpt.itemCreated(curData);\n }\n checkboxElement = [];\n child.push(li);\n }\n return child;\n }\n ListBase.createListItemFromJson = createListItemFromJson;\n /**\n * Function helps to created an element list based on array of JSON input .\n *\n * @param {createElementParams} createElement - Specifies an array of JSON data.\n *\n * @param {{Object}[]} dataSource - Specifies an array of JSON data.\n *\n * @param {ListBaseOptions} options? - Specifies the list options that need to provide.\n *\n * @param {number} level? - Specifies the list options that need to provide.\n *\n * @param {boolean} isSingleLevel? - Specifies the list options that need to provide.\n *\n * @param {any} componentInstance? - Specifies the list options that need to provide.\n *\n * @returns {createElement} generateUL - Specifies the list options that need to provide.\n */\n function createListFromJson(createElement, dataSource, \n // eslint-disable-next-line\n options, level, isSingleLevel, componentInstance) {\n const curOpt = extend({}, defaultListBaseOptions, options);\n const li = createListItemFromJson(createElement, dataSource, options, level, isSingleLevel, componentInstance);\n return generateUL(createElement, li, curOpt.listClass, options);\n }\n ListBase.createListFromJson = createListFromJson;\n /**\n * Return the next or previous visible element.\n *\n * @param {Element[]|NodeList} elementArray - An element array to find next or previous element.\n * @param {Element} li - An element to find next or previous after this element.\n * @param {boolean} isPrevious? - Specify when the need get previous element from array.\n */\n function getSiblingLI(elementArray, element, isPrevious) {\n cssClass = getModuleClass(defaultListBaseOptions.moduleName);\n if (!elementArray || !elementArray.length) {\n return void 0;\n }\n let siblingLI;\n let liIndex;\n const liCollections = Array.prototype.slice.call(elementArray);\n if (element) {\n liIndex = indexOf(element, liCollections);\n }\n else {\n liIndex = (isPrevious === true ? liCollections.length : -1);\n }\n siblingLI = liCollections[liIndex + (isPrevious === true ? -1 : 1)];\n while (siblingLI && (!isVisible(siblingLI) || siblingLI.classList.contains(cssClass.disabled))) {\n liIndex = liIndex + (isPrevious === true ? -1 : 1);\n siblingLI = liCollections[liIndex];\n }\n return siblingLI;\n }\n ListBase.getSiblingLI = getSiblingLI;\n /**\n * Return the index of the li element\n *\n * @param {Element} item - An element to find next or previous after this element.\n * @param {Element[]} elementArray - An element array to find index of given li.\n */\n function indexOf(item, elementArray) {\n if (!elementArray || !item) {\n return void 0;\n }\n else {\n let liCollections = elementArray;\n liCollections = Array.prototype.slice.call(elementArray);\n return liCollections.indexOf(item);\n }\n }\n ListBase.indexOf = indexOf;\n /**\n * Returns the grouped data from given dataSource.\n *\n * @param {{Object}[]} dataSource - The JSON data which is necessary to process.\n * @param {FieldsMapping} fields - Fields that are mapped from the data source.\n * @param {SortOrder} sortOrder- Specifies final result sort order.\n */\n function groupDataSource(dataSource, fields, sortOrder = 'None') {\n const curFields = extend({}, ListBase.defaultMappedFields, fields);\n let cusQuery = new Query().group(curFields.groupBy);\n // need to remove once sorting issues fixed in DataManager\n cusQuery = addSorting(sortOrder, 'key', cusQuery);\n const ds = getDataSource(dataSource, cusQuery);\n dataSource = [];\n for (let j = 0; j < ds.length; j++) {\n const itemObj = ds[j].items;\n const grpItem = {};\n const hdr = 'isHeader';\n grpItem[curFields.text] = ds[j].key;\n grpItem[`${hdr}`] = true;\n let newtext = curFields.text;\n if (newtext === 'id') {\n newtext = 'text';\n grpItem[`${newtext}`] = ds[j].key;\n }\n grpItem._id = 'group-list-item-' + (ds[j].key ?\n ds[j].key.toString().trim() : 'undefined');\n grpItem.items = itemObj;\n dataSource.push(grpItem);\n for (let k = 0; k < itemObj.length; k++) {\n dataSource.push(itemObj[k]);\n }\n }\n return dataSource;\n }\n ListBase.groupDataSource = groupDataSource;\n /**\n * Returns a sorted query object.\n *\n * @param {SortOrder} sortOrder - Specifies that sort order.\n * @param {string} sortBy - Specifies sortBy fields.\n * @param {Query} query - Pass if any existing query.\n */\n function addSorting(sortOrder, sortBy, query = new Query()) {\n if (sortOrder === 'Ascending') {\n query.sortBy(sortBy, 'ascending', true);\n }\n else if (sortOrder === 'Descending') {\n query.sortBy(sortBy, 'descending', true);\n }\n else {\n for (let i = 0; i < query.queries.length; i++) {\n if (query.queries[i].fn === 'onSortBy') {\n query.queries.splice(i, 1);\n }\n }\n }\n return query;\n }\n ListBase.addSorting = addSorting;\n /**\n * Return an array of JSON Data that processed based on queries.\n *\n * @param {{Object}[]} dataSource - Specifies local JSON data source.\n *\n * @param {Query} query - Specifies query that need to process.\n */\n function getDataSource(dataSource, query) {\n // eslint-disable-next-line\n return new DataManager(dataSource)\n .executeLocal(query);\n }\n ListBase.getDataSource = getDataSource;\n /**\n * Created JSON data based the UL and LI element\n *\n * @param {HTMLElement|Element} element - UL element that need to convert as a JSON\n * @param {ListBaseOptions} options? - Specifies listbase option for fields.\n */\n function createJsonFromElement(element, options) {\n const curOpt = extend({}, defaultListBaseOptions, options);\n const fields = extend({}, ListBase.defaultMappedFields, curOpt.fields);\n const curEle = element.cloneNode(true);\n const jsonAr = [];\n curEle.classList.add('json-parent');\n const childs = curEle.querySelectorAll('.json-parent>li');\n curEle.classList.remove('json-parent');\n for (let i = 0; i < childs.length; i++) {\n const li = childs[i];\n const anchor = li.querySelector('a');\n const ul = li.querySelector('ul');\n const json = {};\n const childNodes = anchor ? anchor.childNodes : li.childNodes;\n const keys = Object.keys(childNodes);\n for (let i = 0; i < childNodes.length; i++) {\n if (!(childNodes[Number(keys[i])]).hasChildNodes()) {\n json[fields.text] = childNodes[Number(keys[i])].textContent;\n }\n }\n let attributes = getAllAttributes(li);\n if (attributes.id) {\n json[fields.id] = attributes.id;\n delete attributes.id;\n }\n else {\n json[fields.id] = generateId();\n }\n if (Object.keys(attributes).length) {\n json[fields.htmlAttributes] = attributes;\n }\n if (anchor) {\n attributes = getAllAttributes(anchor);\n if (Object.keys(attributes).length) {\n json[fields.urlAttributes] = attributes;\n }\n }\n if (ul) {\n json[fields.child] = createJsonFromElement(ul, options);\n }\n jsonAr.push(json);\n }\n return jsonAr;\n }\n ListBase.createJsonFromElement = createJsonFromElement;\n function typeofData(data) {\n let match = { typeof: null, item: null };\n for (let i = 0; i < data.length; i++) {\n if (!isNullOrUndefined(data[i])) {\n return match = { typeof: typeof data[i], item: data[i] };\n }\n }\n return match;\n }\n function setAttribute(element, elementAttributes) {\n const attr = {};\n merge(attr, elementAttributes);\n if (attr.class) {\n addClass([element], attr.class.split(' '));\n delete attr.class;\n }\n attributes(element, attr);\n }\n function getAllAttributes(element) {\n const attributes = {};\n const attr = element.attributes;\n for (let index = 0; index < attr.length; index++) {\n attributes[attr[index].nodeName] = attr[index].nodeValue;\n }\n return attributes;\n }\n /**\n * Created UL element from content template.\n *\n * @param {string} template - that need to convert and generate li element.\n * @param {{Object}[]} dataSource - Specifies local JSON data source.\n * @param {ListBaseOptions} options? - Specifies listbase option for fields.\n */\n function renderContentTemplate(createElement, template, dataSource, \n // eslint-disable-next-line\n fields, options, componentInstance) {\n cssClass = getModuleClass(defaultListBaseOptions.moduleName);\n const ulElement = createElement('ul', { className: cssClass.ul, attrs: { role: 'presentation' } });\n const curOpt = extend({}, defaultListBaseOptions, options);\n const curFields = extend({}, ListBase.defaultMappedFields, fields);\n const compiledString = compileTemplate(template);\n const liCollection = [];\n let value;\n const id = generateId(); // generate id for drop-down-list option.\n for (let i = 0; i < dataSource.length; i++) {\n let fieldData = getFieldValues(dataSource[i], curFields);\n const curItem = dataSource[i];\n const isHeader = curItem.isHeader;\n if (typeof dataSource[i] === 'string' || typeof dataSource[i] === 'number') {\n value = curItem;\n }\n else {\n value = fieldData[curFields.value];\n }\n if (curOpt.itemCreating && typeof curOpt.itemCreating === 'function') {\n const curData = {\n dataSource: dataSource,\n curData: curItem,\n text: value,\n options: curOpt,\n fields: curFields\n };\n curOpt.itemCreating(curData);\n }\n if (curOpt.itemCreating && typeof curOpt.itemCreating === 'function') {\n fieldData = getFieldValues(dataSource[i], curFields);\n if (typeof dataSource[i] === 'string' || typeof dataSource[i] === 'number') {\n value = curItem;\n }\n else {\n value = fieldData[curFields.value];\n }\n }\n const li = createElement('li', {\n id: id + '-' + i,\n className: isHeader ? cssClass.group : cssClass.li, attrs: { role: 'presentation' }\n });\n if (isHeader) {\n if (typeof dataSource[i] === 'string' || typeof dataSource[i] === 'number') {\n li.innerText = curItem;\n }\n else {\n li.innerText = fieldData[curFields.text];\n }\n }\n else {\n const currentID = isHeader ? curOpt.groupTemplateID : curOpt.templateID;\n if (isHeader) {\n if (componentInstance && componentInstance.getModuleName() !== 'listview') {\n // eslint-disable-next-line\n const compiledElement = compiledString(curItem, componentInstance, 'headerTemplate', currentID, !!curOpt.isStringTemplate, null, li);\n if (compiledElement) {\n append(compiledElement, li);\n }\n }\n else {\n append(compiledString(curItem, componentInstance, 'headerTemplate', currentID, !!curOpt.isStringTemplate), li);\n }\n }\n else {\n if (componentInstance && componentInstance.getModuleName() !== 'listview') {\n // eslint-disable-next-line\n const compiledElement = compiledString(curItem, componentInstance, 'template', currentID, !!curOpt.isStringTemplate, null, li);\n if (compiledElement) {\n append(compiledElement, li);\n }\n }\n else {\n append(compiledString(curItem, componentInstance, 'template', currentID, !!curOpt.isStringTemplate), li);\n }\n }\n li.setAttribute('data-value', isNullOrUndefined(value) ? 'null' : value);\n li.setAttribute('role', 'option');\n }\n if (curOpt.itemCreated && typeof curOpt.itemCreated === 'function') {\n const curData = {\n dataSource: dataSource,\n curData: curItem,\n text: value,\n item: li,\n options: curOpt,\n fields: curFields\n };\n curOpt.itemCreated(curData);\n }\n liCollection.push(li);\n }\n append(liCollection, ulElement);\n return ulElement;\n }\n ListBase.renderContentTemplate = renderContentTemplate;\n /**\n * Created header items from group template.\n *\n * @param {string} template - that need to convert and generate li element.\n *\n * @param {{Object}[]} dataSource - Specifies local JSON data source.\n *\n * @param {FieldsMapping} fields - Specifies fields for mapping the dataSource.\n *\n * @param {Element[]} headerItems? - Specifies listbase header items.\n */\n // tslint:disable-next-line\n function renderGroupTemplate(groupTemplate, groupDataSource, fields, \n // eslint-disable-next-line\n headerItems, options, componentInstance) {\n const compiledString = compileTemplate(groupTemplate);\n const curFields = extend({}, ListBase.defaultMappedFields, fields);\n const curOpt = extend({}, defaultListBaseOptions, options);\n const category = curFields.groupBy;\n for (const header of headerItems) {\n const headerData = {};\n headerData[`${category}`] = header.textContent;\n header.innerHTML = '';\n if (componentInstance && componentInstance.getModuleName() !== 'listview') {\n // eslint-disable-next-line\n const compiledElement = compiledString(headerData, componentInstance, 'groupTemplate', curOpt.groupTemplateID, !!curOpt.isStringTemplate, null, header);\n if (compiledElement) {\n append(compiledElement, header);\n }\n }\n else {\n append(compiledString(headerData, componentInstance, 'groupTemplate', curOpt.groupTemplateID, !!curOpt.isStringTemplate), header);\n }\n }\n return headerItems;\n }\n ListBase.renderGroupTemplate = renderGroupTemplate;\n function generateId() {\n return Math.floor((1 + Math.random()) * 0x10000)\n .toString(16)\n .substring(1);\n }\n ListBase.generateId = generateId;\n function processSubChild(createElement, fieldData, fields, ds, options, element, level) {\n // Get SubList\n const subDS = fieldData[fields.child] || [];\n let hasChildren = fieldData[fields.hasChildren];\n //Create Sub child\n if (subDS.length) {\n hasChildren = true;\n element.classList.add(cssClass.hasChild);\n if (options.processSubChild) {\n const subLi = createListFromJson(createElement, subDS, options, ++level);\n element.appendChild(subLi);\n }\n }\n // Create expand and collapse node\n if (!!options.expandCollapse && hasChildren && !options.template) {\n element.firstElementChild.classList.add(cssClass.iconWrapper);\n const expandElement = options.expandIconPosition === 'Left' ? prepend : append;\n expandElement([createElement('div', { className: 'e-icons ' + options.expandIconClass })], element.querySelector('.' + cssClass.textContent));\n }\n }\n function generateSingleLevelLI(createElement, item, fieldData, fields, className, innerElements, grpLI, id, index, options) {\n const curOpt = extend({}, defaultListBaseOptions, options);\n const ariaAttributes = extend({}, defaultAriaAttributes, curOpt.ariaAttributes);\n let text = item;\n let value = item;\n let dataSource;\n if (typeof item !== 'string' && typeof item !== 'number' && typeof item !== 'boolean') {\n dataSource = item;\n text = (typeof fieldData[fields.text] === 'boolean' || typeof fieldData[fields.text] === 'number') ?\n fieldData[fields.text] : (fieldData[fields.text] || '');\n value = fieldData[fields.value];\n }\n let elementID;\n if (!isNullOrUndefined(dataSource) && !isNullOrUndefined(fieldData[fields.id])\n && fieldData[fields.id] !== '') {\n elementID = id;\n }\n else {\n elementID = id + '-' + index;\n }\n const li = createElement('li', {\n className: (grpLI === true ? cssClass.group : cssClass.li) + ' ' + (isNullOrUndefined(className) ? '' : className),\n id: elementID, attrs: (ariaAttributes.groupItemRole !== '' && ariaAttributes.itemRole !== '' ?\n { role: (grpLI === true ? ariaAttributes.groupItemRole : ariaAttributes.itemRole) } : {})\n });\n // eslint-disable-next-line no-prototype-builtins\n if (dataSource && fieldData.hasOwnProperty(fields.enabled) && fieldData[fields.enabled].toString() === 'false') {\n li.classList.add(cssClass.disabled);\n }\n if (grpLI) {\n li.innerText = text;\n }\n else {\n li.setAttribute('data-value', isNullOrUndefined(value) ? 'null' : value);\n li.setAttribute('role', 'option');\n // eslint-disable-next-line no-prototype-builtins\n if (dataSource && fieldData.hasOwnProperty(fields.htmlAttributes) && fieldData[fields.htmlAttributes]) {\n setAttribute(li, fieldData[fields.htmlAttributes]);\n }\n if (innerElements.length && !curOpt.itemNavigable) {\n append(innerElements, li);\n }\n if (dataSource && (fieldData[fields.url] || (fieldData[fields.urlAttributes] &&\n fieldData[fields.urlAttributes].href))) {\n li.appendChild(anchorTag(createElement, dataSource, fields, text, innerElements, curOpt.itemNavigable));\n }\n else {\n if (innerElements.length && curOpt.itemNavigable) {\n append(innerElements, li);\n }\n li.appendChild(document.createTextNode(text));\n }\n }\n return li;\n }\n function getModuleClass(moduleName) {\n let moduleClass;\n // eslint-disable-next-line\n return moduleClass = {\n li: `e-${moduleName}-item`,\n ul: `e-${moduleName}-parent e-ul`,\n group: `e-${moduleName}-group-item`,\n icon: `e-${moduleName}-icon`,\n text: `e-${moduleName}-text`,\n check: `e-${moduleName}-check`,\n checked: 'e-checked',\n selected: 'e-selected',\n expanded: 'e-expanded',\n textContent: 'e-text-content',\n hasChild: 'e-has-child',\n level: 'e-level',\n url: `e-${moduleName}-url`,\n collapsible: 'e-icon-collapsible',\n disabled: 'e-disabled',\n image: `e-${moduleName}-img`,\n iconWrapper: 'e-icon-wrapper',\n anchorWrap: 'e-anchor-wrap',\n navigable: 'e-navigable'\n };\n }\n function anchorTag(createElement, dataSource, fields, text, innerElements, isFullNavigation) {\n const fieldData = getFieldValues(dataSource, fields);\n const attr = { href: fieldData[fields.url] };\n // eslint-disable-next-line no-prototype-builtins\n if (fieldData.hasOwnProperty(fields.urlAttributes) && fieldData[fields.urlAttributes]) {\n merge(attr, fieldData[fields.urlAttributes]);\n attr.href = fieldData[fields.url] ? fieldData[fields.url] :\n fieldData[fields.urlAttributes].href;\n }\n let anchorTag;\n if (!isFullNavigation) {\n anchorTag = createElement('a', { className: cssClass.text + ' ' + cssClass.url, innerHTML: text });\n }\n else {\n anchorTag = createElement('a', { className: cssClass.text + ' ' + cssClass.url });\n const anchorWrapper = createElement('div', { className: cssClass.anchorWrap });\n if (innerElements && innerElements.length) {\n append(innerElements, anchorWrapper);\n }\n anchorWrapper.appendChild(document.createTextNode(text));\n append([anchorWrapper], anchorTag);\n }\n setAttribute(anchorTag, attr);\n return anchorTag;\n }\n // tslint:disable-next-line\n /* tslint:disable:align */\n function generateLI(createElement, item, fieldData, \n // eslint-disable-next-line\n fields, className, options, componentInstance) {\n const curOpt = extend({}, defaultListBaseOptions, options);\n const ariaAttributes = extend({}, defaultAriaAttributes, curOpt.ariaAttributes);\n let text = item;\n let uID;\n let grpLI;\n let dataSource;\n if (typeof item !== 'string' && typeof item !== 'number') {\n dataSource = item;\n text = fieldData[fields.text] || '';\n // tslint:disable-next-line\n uID = (isNullOrUndefined(fieldData['_id'])) ? fieldData[fields.id] : fieldData['_id'];\n // eslint-disable-next-line no-prototype-builtins\n grpLI = (item.hasOwnProperty('isHeader') && item.isHeader)\n ? true : false;\n }\n if (options && options.enableHtmlSanitizer) {\n // eslint-disable-next-line no-self-assign\n text = text;\n }\n const li = createElement('li', {\n className: (grpLI === true ? cssClass.group : cssClass.li) + ' ' + (isNullOrUndefined(className) ? '' : className),\n attrs: (ariaAttributes.groupItemRole !== '' && ariaAttributes.itemRole !== '' ?\n { role: (grpLI === true ? ariaAttributes.groupItemRole : ariaAttributes.itemRole) } : {})\n });\n if (!isNullOrUndefined(uID) === true) {\n li.setAttribute('data-uid', uID);\n }\n else {\n li.setAttribute('data-uid', generateId());\n }\n if (grpLI && options && options.groupTemplate) {\n const compiledString = compileTemplate(options.groupTemplate);\n if (componentInstance && componentInstance.getModuleName() !== 'listview') {\n // eslint-disable-next-line\n const compiledElement = compiledString(item, componentInstance, 'groupTemplate', curOpt.groupTemplateID, !!curOpt.isStringTemplate, null, li);\n if (compiledElement) {\n append(compiledElement, li);\n }\n }\n else {\n append(compiledString(item, componentInstance, 'groupTemplate', curOpt.groupTemplateID, !!curOpt.isStringTemplate), li);\n }\n }\n else if (!grpLI && options && options.template) {\n const compiledString = compileTemplate(options.template);\n if (componentInstance && componentInstance.getModuleName() !== 'listview') {\n // eslint-disable-next-line\n const compiledElement = compiledString(item, componentInstance, 'template', curOpt.templateID, !!curOpt.isStringTemplate, null, li);\n if (compiledElement) {\n append(compiledElement, li);\n }\n }\n else {\n append(compiledString(item, componentInstance, 'template', curOpt.templateID, !!curOpt.isStringTemplate), li);\n }\n }\n else {\n const innerDiv = createElement('div', {\n className: cssClass.textContent,\n attrs: (ariaAttributes.wrapperRole !== '' ? { role: ariaAttributes.wrapperRole } : {})\n });\n if (dataSource && (fieldData[fields.url] || (fieldData[fields.urlAttributes] &&\n fieldData[fields.urlAttributes].href))) {\n innerDiv.appendChild(anchorTag(createElement, dataSource, fields, text, null, curOpt.itemNavigable));\n }\n else {\n const element = createElement('span', {\n className: cssClass.text,\n attrs: (ariaAttributes.itemText !== '' ? { role: ariaAttributes.itemText } : {})\n });\n if (options && options.enableHtmlSanitizer) {\n element.innerText = SanitizeHtmlHelper.sanitize(text);\n }\n else {\n element.innerHTML = text;\n }\n innerDiv.appendChild(element);\n }\n li.appendChild(innerDiv);\n }\n return li;\n }\n /**\n * Returns UL element based on the given LI element.\n *\n * @param {HTMLElement[]} liElement - Specifies array of LI element.\n *\n * @param {string} className? - Specifies class name that need to be added in UL element.\n *\n * @param {ListBaseOptions} options? - Specifies ListBase options.\n */\n function generateUL(createElement, liElement, className, options) {\n const curOpt = extend({}, defaultListBaseOptions, options);\n const ariaAttributes = extend({}, defaultAriaAttributes, curOpt.ariaAttributes);\n cssClass = getModuleClass(curOpt.moduleName);\n const ulElement = createElement('ul', {\n className: cssClass.ul + ' ' + (isNullOrUndefined(className) ? '' : className),\n attrs: (ariaAttributes.listRole !== '' ? { role: ariaAttributes.listRole } : {})\n });\n append(liElement, ulElement);\n return ulElement;\n }\n ListBase.generateUL = generateUL;\n /**\n * Returns LI element with additional DIV tag based on the given LI element.\n *\n * @param {liElement} liElement - Specifies LI element.\n *\n * @param {string} className? - Specifies class name that need to be added in created DIV element.\n *\n * @param {ListBaseOptions} options? - Specifies ListBase options.\n */\n function generateIcon(createElement, liElement, className, options) {\n const curOpt = extend({}, defaultListBaseOptions, options);\n cssClass = getModuleClass(curOpt.moduleName);\n const expandElement = curOpt.expandIconPosition === 'Left' ? prepend : append;\n expandElement([createElement('div', {\n className: 'e-icons ' + curOpt.expandIconClass + ' ' +\n (isNullOrUndefined(className) ? '' : className)\n })], liElement.querySelector('.' + cssClass.textContent));\n return liElement;\n }\n ListBase.generateIcon = generateIcon;\n})(ListBase || (ListBase = {}));\n/**\n * Used to get dataSource item from complex data using fields.\n *\n * @param {Object} dataSource - Specifies an JSON or String data.\n *\n * @param {FieldsMapping} fields - Fields that are mapped from the dataSource.\n */\nexport function getFieldValues(dataItem, fields) {\n const fieldData = {};\n if (isNullOrUndefined(dataItem) || typeof (dataItem) === 'string' || typeof (dataItem) === 'number'\n || !isNullOrUndefined(dataItem.isHeader)) {\n return dataItem;\n }\n else {\n for (const field of Object.keys(fields)) {\n const dataField = fields[`${field}`];\n const value = !isNullOrUndefined(dataField) &&\n typeof (dataField) === 'string' ? getValue(dataField, dataItem) : undefined;\n if (!isNullOrUndefined(value)) {\n fieldData[`${dataField}`] = value;\n }\n }\n }\n return fieldData;\n}\nfunction compileTemplate(template) {\n if (template) {\n try {\n if (typeof template !== 'function' && document.querySelector(template)) {\n return compile(document.querySelector(template).innerHTML.trim());\n }\n else {\n return compile(template);\n }\n }\n catch (e) {\n return compile(template);\n }\n }\n return undefined;\n}\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { merge, formatUnit, isNullOrUndefined, append, detach, extend } from '@syncfusion/ej2-base';\nimport { attributes, addClass, removeClass, prepend, closest, remove } from '@syncfusion/ej2-base';\nimport { Component, EventHandler, Property, Complex, Event } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, ChildProperty } from '@syncfusion/ej2-base';\nimport { compile, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { Animation, rippleEffect, Touch, animationMode } from '@syncfusion/ej2-base';\nimport { DataManager, Query } from '@syncfusion/ej2-data';\nimport { createCheckBox } from '@syncfusion/ej2-buttons';\nimport { ListBase, getFieldValues } from '../common/list-base';\n// Effect Configuration Effect[] = [fromViewBackward,fromViewForward,toViewBackward,toviewForward];\nconst effectsConfig = {\n 'None': [],\n 'SlideLeft': ['SlideRightOut', 'SlideLeftOut', 'SlideLeftIn', 'SlideRightIn'],\n 'SlideDown': ['SlideTopOut', 'SlideBottomOut', 'SlideBottomIn', 'SlideTopIn'],\n 'Zoom': ['FadeOut', 'FadeZoomOut', 'FadeZoomIn', 'FadeIn'],\n 'Fade': ['FadeOut', 'FadeOut', 'FadeIn', 'FadeIn']\n};\nconst effectsRTLConfig = {\n 'None': [],\n 'SlideLeft': ['SlideLeftOut', 'SlideRightOut', 'SlideRightIn', 'SlideLeftIn'],\n 'SlideDown': ['SlideBottomOut', 'SlideTopOut', 'SlideTopIn', 'SlideBottomIn'],\n 'Zoom': ['FadeZoomOut', 'FadeOut', 'FadeIn', 'FadeZoomIn'],\n 'Fade': ['FadeOut', 'FadeOut', 'FadeIn', 'FadeIn']\n};\n// don't use space in classnames.\nexport const classNames = {\n root: 'e-listview',\n hover: 'e-hover',\n selected: 'e-active',\n focused: 'e-focused',\n parentItem: 'e-list-parent',\n listItem: 'e-list-item',\n listIcon: 'e-list-icon',\n textContent: 'e-text-content',\n listItemText: 'e-list-text',\n groupListItem: 'e-list-group-item',\n hasChild: 'e-has-child',\n view: 'e-view',\n header: 'e-list-header',\n headerText: 'e-headertext',\n headerTemplateText: 'e-headertemplate-text',\n text: 'e-text',\n disable: 'e-disabled',\n container: 'e-list-container',\n icon: 'e-icons',\n backIcon: 'e-icon-back',\n backButton: 'e-back-button',\n checkboxWrapper: 'e-checkbox-wrapper',\n checkbox: 'e-checkbox',\n checked: 'e-check',\n checklist: 'e-checklist',\n checkboxIcon: 'e-frame',\n checkboxRight: 'e-checkbox-right',\n checkboxLeft: 'e-checkbox-left',\n listviewCheckbox: 'e-listview-checkbox',\n itemCheckList: 'e-checklist',\n virtualElementContainer: 'e-list-virtualcontainer'\n};\nconst LISTVIEW_TEMPLATE_PROPERTY = 'Template';\nconst LISTVIEW_GROUPTEMPLATE_PROPERTY = 'GroupTemplate';\nconst LISTVIEW_HEADERTEMPLATE_PROPERTY = 'HeaderTemplate';\nconst swipeVelocity = 0.5;\n/**\n * Represents the field settings of the ListView.\n */\nexport class FieldSettings extends ChildProperty {\n}\n__decorate([\n Property('id')\n], FieldSettings.prototype, \"id\", void 0);\n__decorate([\n Property('text')\n], FieldSettings.prototype, \"text\", void 0);\n__decorate([\n Property('isChecked')\n], FieldSettings.prototype, \"isChecked\", void 0);\n__decorate([\n Property('isVisible')\n], FieldSettings.prototype, \"isVisible\", void 0);\n__decorate([\n Property('enabled')\n], FieldSettings.prototype, \"enabled\", void 0);\n__decorate([\n Property('iconCss')\n], FieldSettings.prototype, \"iconCss\", void 0);\n__decorate([\n Property('child')\n], FieldSettings.prototype, \"child\", void 0);\n__decorate([\n Property('tooltip')\n], FieldSettings.prototype, \"tooltip\", void 0);\n__decorate([\n Property('groupBy')\n], FieldSettings.prototype, \"groupBy\", void 0);\n__decorate([\n Property('text')\n], FieldSettings.prototype, \"sortBy\", void 0);\n__decorate([\n Property('htmlAttributes')\n], FieldSettings.prototype, \"htmlAttributes\", void 0);\n__decorate([\n Property('tableName')\n], FieldSettings.prototype, \"tableName\", void 0);\n/**\n * Represents the EJ2 ListView control.\n * ```html\n * <div id=\"listview\">\n * <ul>\n * <li>Favorite</li>\n * <li>Documents</li>\n * <li>Downloads</li>\n * </ul>\n * </div>\n * ```\n * ```typescript\n * var listviewObject = new ListView({});\n * listviewObject.appendTo(\"#listview\");\n * ```\n */\nlet ListView = class ListView extends Component {\n /**\n * Constructor for creating the widget\n *\n * @param options\n *\n * @param element\n */\n constructor(options, element) {\n super(options, element);\n this.previousSelectedItems = [];\n this.hiddenItems = [];\n this.enabledItems = [];\n this.disabledItems = [];\n }\n /**\n * @param newProp\n *\n * @param oldProp\n *\n * @private\n */\n onPropertyChanged(newProp, oldProp) {\n for (const prop of Object.keys(newProp)) {\n switch (prop) {\n case 'htmlAttributes':\n this.setHTMLAttribute();\n break;\n case 'cssClass':\n this.setCSSClass(oldProp.cssClass);\n break;\n case 'enable':\n this.setEnable();\n break;\n case 'width':\n case 'height':\n this.setSize();\n break;\n case 'enableRtl':\n this.setEnableRTL();\n break;\n case 'fields':\n // eslint-disable-next-line\n this.listBaseOption.fields = this.fields.properties;\n if (this.enableVirtualization) {\n this.virtualizationModule.reRenderUiVirtualization();\n }\n else {\n this.reRender();\n }\n break;\n case 'headerTitle':\n if (!this.curDSLevel.length) {\n this.header(this.headerTitle, false, 'header');\n }\n break;\n case 'query':\n if (this.enableVirtualization) {\n this.virtualizationModule.reRenderUiVirtualization();\n }\n else {\n this.reRender();\n }\n break;\n case 'showHeader':\n this.header(this.headerTitle, false, 'header');\n break;\n case 'enableVirtualization':\n if (!isNullOrUndefined(this.contentContainer)) {\n detach(this.contentContainer);\n }\n this.refresh();\n break;\n case 'showCheckBox':\n case 'checkBoxPosition':\n if (this.enableVirtualization) {\n this.virtualizationModule.reRenderUiVirtualization();\n }\n else {\n this.setCheckbox();\n }\n break;\n case 'dataSource':\n if (this.enableVirtualization) {\n this.virtualizationModule.reRenderUiVirtualization();\n }\n else {\n this.reRender();\n }\n break;\n case 'sortOrder':\n case 'template':\n if (!this.enableVirtualization) {\n this.refresh();\n }\n break;\n case 'showIcon':\n if (this.enableVirtualization) {\n this.virtualizationModule.reRenderUiVirtualization();\n }\n else {\n this.listBaseOption.showIcon = this.showIcon;\n this.curViewDS = this.getSubDS();\n this.resetCurrentList();\n }\n break;\n default:\n break;\n }\n }\n }\n // Model Changes\n setHTMLAttribute() {\n if (Object.keys(this.htmlAttributes).length) {\n attributes(this.element, this.htmlAttributes);\n }\n }\n setCSSClass(oldCSSClass) {\n if (this.cssClass) {\n addClass([this.element], this.cssClass.split(' ').filter((css) => css));\n }\n if (oldCSSClass) {\n removeClass([this.element], oldCSSClass.split(' ').filter((css) => css));\n }\n }\n setSize() {\n this.element.style.height = formatUnit(this.height);\n this.element.style.width = formatUnit(this.width);\n this.isWindow = this.element.clientHeight ? false : true;\n }\n setEnable() {\n this.enableElement(this.element, this.enable);\n }\n setEnableRTL() {\n if (this.enableRtl) {\n this.element.classList.add('e-rtl');\n }\n else {\n this.element.classList.remove('e-rtl');\n }\n }\n enableElement(element, isEnabled) {\n if (isEnabled) {\n element.classList.remove(classNames.disable);\n }\n else {\n element.classList.add(classNames.disable);\n }\n }\n // Support Component Functions\n header(text, showBack, prop) {\n if (this.headerEle === undefined && this.showHeader) {\n this.headerEle = this.createElement('div', { className: classNames.header });\n const innerHeaderEle = this.createElement('span', { className: classNames.headerText });\n if (this.enableHtmlSanitizer) {\n this.setProperties({ headerTitle: SanitizeHtmlHelper.sanitize(this.headerTitle) }, true);\n innerHeaderEle.innerText = this.headerTitle;\n }\n else {\n innerHeaderEle.innerHTML = this.headerTitle;\n }\n const textEle = this.createElement('div', { className: classNames.text, innerHTML: innerHeaderEle.outerHTML });\n const hedBackButton = this.createElement('div', {\n className: classNames.icon + ' ' + classNames.backIcon + ' ' + classNames.backButton,\n attrs: { style: 'display:none;' }\n });\n this.headerEle.appendChild(hedBackButton);\n this.headerEle.appendChild(textEle);\n if (this.headerTemplate) {\n const compiledString = compile(this.headerTemplate);\n const headerTemplateEle = this.createElement('div', { className: classNames.headerTemplateText });\n // eslint-disable-next-line\n const compiledElement = compiledString({}, this, prop, this.LISTVIEW_HEADERTEMPLATE_ID, null, null, this.headerEle);\n if (compiledElement) {\n append(compiledElement, headerTemplateEle);\n }\n append([headerTemplateEle], this.headerEle);\n // eslint-disable-next-line\n if (this.isReact) {\n this.renderReactTemplates();\n }\n }\n if (this.headerTemplate && this.headerTitle) {\n textEle.classList.add('header');\n }\n this.element.classList.add('e-has-header');\n prepend([this.headerEle], this.element);\n }\n else if (this.headerEle) {\n if (this.showHeader) {\n this.headerEle.style.display = '';\n const textEle = this.headerEle.querySelector('.' + classNames.headerText);\n const hedBackButton = this.headerEle.querySelector('.' + classNames.backIcon);\n if (this.enableHtmlSanitizer) {\n text = SanitizeHtmlHelper.sanitize(text);\n }\n textEle.innerHTML = text;\n if (this.headerTemplate && showBack) {\n textEle.parentElement.classList.remove('header');\n this.headerEle.querySelector('.' + classNames.headerTemplateText).classList.add('nested-header');\n }\n if (this.headerTemplate && !showBack) {\n textEle.parentElement.classList.add('header');\n this.headerEle.querySelector('.' + classNames.headerTemplateText).classList.remove('nested-header');\n this.headerEle.querySelector('.' + classNames.headerTemplateText).classList.add('header');\n }\n if (showBack === true) {\n hedBackButton.style.display = '';\n }\n else {\n hedBackButton.style.display = 'none';\n }\n }\n else {\n this.headerEle.style.display = 'none';\n }\n }\n }\n // Animation Related Functions\n switchView(fromView, toView, reverse) {\n if (fromView && toView) {\n const fPos = fromView.style.position;\n const overflow = (this.element.style.overflow !== 'hidden') ? this.element.style.overflow : '';\n fromView.style.position = 'absolute';\n fromView.classList.add('e-view');\n let anim;\n let duration = this.animation.duration;\n if (this.animation.effect) {\n anim = (this.enableRtl ? effectsRTLConfig[this.animation.effect] : effectsConfig[this.animation.effect]);\n }\n else {\n const slideLeft = 'SlideLeft';\n anim = effectsConfig[`${slideLeft}`];\n reverse = this.enableRtl;\n duration = 0;\n }\n this.element.style.overflow = 'hidden';\n this.aniObj.animate(fromView, {\n name: (reverse === true ? anim[0] : anim[1]),\n duration: (duration === 0 && animationMode === 'Enable') ? 400 : duration,\n timingFunction: this.animation.easing,\n // eslint-disable-next-line\n end: (model) => {\n fromView.style.display = 'none';\n this.element.style.overflow = overflow;\n fromView.style.position = fPos;\n fromView.classList.remove('e-view');\n }\n });\n toView.style.display = '';\n this.aniObj.animate(toView, {\n name: (reverse === true ? anim[2] : anim[3]),\n duration: (duration === 0 && animationMode === 'Enable') ? 400 : duration,\n timingFunction: this.animation.easing,\n end: () => {\n this.trigger('actionComplete');\n }\n });\n this.curUL = toView;\n }\n }\n preRender() {\n if (this.template) {\n try {\n if (typeof this.template !== 'function' && document.querySelectorAll(this.template).length) {\n this.setProperties({ template: document.querySelector(this.template).innerHTML.trim() }, true);\n }\n }\n catch (e) {\n compile(this.template);\n }\n }\n this.listBaseOption = {\n template: this.template,\n headerTemplate: this.headerTemplate,\n groupTemplate: this.groupTemplate, expandCollapse: true, listClass: '',\n ariaAttributes: {\n itemRole: 'listitem', listRole: 'list', itemText: '',\n groupItemRole: 'presentation', wrapperRole: 'presentation'\n },\n // eslint-disable-next-line\n fields: (this.fields.properties),\n sortOrder: this.sortOrder,\n showIcon: this.showIcon,\n itemCreated: this.renderCheckbox.bind(this),\n templateID: `${this.element.id}${LISTVIEW_TEMPLATE_PROPERTY}`,\n groupTemplateID: `${this.element.id}${LISTVIEW_GROUPTEMPLATE_PROPERTY}`,\n enableHtmlSanitizer: this.enableHtmlSanitizer\n };\n this.initialization();\n }\n initialization() {\n this.curDSLevel = [];\n this.animateOptions = {};\n this.curViewDS = [];\n this.currentLiElements = [];\n this.isNestedList = false;\n this.selectedData = [];\n this.selectedId = this.enablePersistence ? this.selectedId : [];\n this.LISTVIEW_TEMPLATE_ID = `${this.element.id}${LISTVIEW_TEMPLATE_PROPERTY}`;\n this.LISTVIEW_GROUPTEMPLATE_ID = `${this.element.id}${LISTVIEW_GROUPTEMPLATE_PROPERTY}`;\n this.LISTVIEW_HEADERTEMPLATE_ID = `${this.element.id}${LISTVIEW_HEADERTEMPLATE_PROPERTY}`;\n this.aniObj = new Animation(this.animateOptions);\n this.removeElement(this.curUL);\n this.removeElement(this.ulElement);\n this.removeElement(this.headerEle);\n this.removeElement(this.contentContainer);\n this.curUL = this.ulElement = this.liCollection = this.headerEle = this.contentContainer = undefined;\n }\n renderCheckbox(args) {\n if (args.item.classList.contains(classNames.hasChild)) {\n this.isNestedList = true;\n }\n if (this.showCheckBox && args.item.classList.contains(classNames.listItem)) {\n let checkboxElement;\n let fieldData;\n // eslint-disable-next-line prefer-const\n checkboxElement = createCheckBox(this.createElement, false, {\n checked: false, enableRtl: this.enableRtl,\n cssClass: classNames.listviewCheckbox\n });\n checkboxElement.setAttribute('role', 'checkbox');\n const frameElement = checkboxElement.querySelector('.' + classNames.checkboxIcon);\n args.item.classList.add(classNames.itemCheckList);\n args.item.firstElementChild.classList.add(classNames.checkbox);\n if (typeof this.dataSource[0] !== 'string' && typeof this.dataSource[0] !== 'number') {\n fieldData = getFieldValues(args.curData, this.listBaseOption.fields);\n if (this.enablePersistence && !isNullOrUndefined(this.selectedId)) {\n const index = this.selectedId.findIndex((e) => e === fieldData[this.listBaseOption.fields.id].toString());\n if (index !== -1) {\n this.checkInternally(args, checkboxElement);\n }\n }\n else if (fieldData[this.listBaseOption.fields.isChecked]) {\n this.checkInternally(args, checkboxElement);\n }\n }\n else if (((typeof this.dataSource[0] === 'string' ||\n typeof this.dataSource[0] === 'number') && this.selectedData.indexOf(args.text) !== -1)) {\n this.checkInternally(args, checkboxElement);\n }\n checkboxElement.setAttribute('aria-checked', frameElement.classList.contains(classNames.checked) ? 'true' : 'false');\n checkboxElement.setAttribute('aria-label', args.text);\n if (this.checkBoxPosition === 'Left') {\n checkboxElement.classList.add(classNames.checkboxLeft);\n args.item.firstElementChild.classList.add(classNames.checkboxLeft);\n args.item.firstElementChild.insertBefore(checkboxElement, args.item.firstElementChild.childNodes[0]);\n }\n else {\n checkboxElement.classList.add(classNames.checkboxRight);\n args.item.firstElementChild.classList.add(classNames.checkboxRight);\n args.item.firstElementChild.appendChild(checkboxElement);\n }\n this.currentLiElements.push(args.item);\n if (this.checkBoxPosition === 'Left') {\n this.virtualCheckBox = args.item.firstElementChild.children[0];\n }\n else {\n this.virtualCheckBox = args.item.firstElementChild.lastElementChild;\n }\n }\n }\n checkInternally(args, checkboxElement) {\n args.item.classList.add(classNames.selected);\n checkboxElement.querySelector('.' + classNames.checkboxIcon).classList.add(classNames.checked);\n checkboxElement.setAttribute('aria-checked', 'true');\n }\n /**\n * Checks the specific list item by passing the unchecked fields as an argument to this method.\n *\n * @param {Fields | HTMLElement | Element} item - It accepts Fields or HTML list element as an argument.\n */\n checkItem(item) {\n this.toggleCheckBase(item, true);\n }\n toggleCheckBase(item, checked) {\n if (this.showCheckBox) {\n let liElement = item;\n if (item instanceof Object && item.constructor !== HTMLLIElement) {\n liElement = this.getLiFromObjOrElement(item);\n }\n if (!isNullOrUndefined(liElement)) {\n const checkboxIcon = liElement.querySelector('.' + classNames.checkboxIcon);\n if (checked === true) {\n liElement.classList.add(classNames.selected);\n }\n else {\n liElement.classList.remove(classNames.selected);\n }\n if (checked === true) {\n checkboxIcon.classList.add(classNames.checked);\n }\n else {\n checkboxIcon.classList.remove(classNames.checked);\n }\n checkboxIcon.parentElement.setAttribute('aria-checked', checked ? 'true' : 'false');\n }\n this.setSelectedItemData(liElement);\n this.updateSelectedId();\n }\n }\n /**\n * Uncheck the specific list item by passing the checked fields as an argument to this method.\n *\n * @param {Fields | HTMLElement | Element} item - It accepts Fields or HTML list element as an argument.\n */\n uncheckItem(item) {\n this.toggleCheckBase(item, false);\n }\n /**\n * Checks all the unchecked items in the ListView.\n */\n checkAllItems() {\n this.toggleAllCheckBase(true);\n }\n /**\n * Uncheck all the checked items in ListView.\n */\n uncheckAllItems() {\n this.toggleAllCheckBase(false);\n }\n toggleAllCheckBase(checked) {\n if (this.showCheckBox) {\n for (let i = 0; i < this.liCollection.length; i++) {\n const checkIcon = this.liCollection[i].querySelector('.' + classNames.checkboxIcon);\n if (checkIcon) {\n if (checked) {\n if (!checkIcon.classList.contains(classNames.checked)) {\n this.checkItem(this.liCollection[i]);\n }\n }\n else {\n if (checkIcon.classList.contains(classNames.checked)) {\n this.uncheckItem(this.liCollection[i]);\n }\n }\n }\n }\n if (this.enableVirtualization) {\n this.virtualizationModule.checkedItem(checked);\n }\n this.updateSelectedId();\n }\n }\n setCheckbox() {\n if (this.showCheckBox) {\n const liCollection = Array.prototype.slice.call(this.element.querySelectorAll('.' + classNames.listItem));\n const args = {\n item: undefined, curData: undefined, dataSource: undefined, fields: undefined,\n options: undefined, text: ''\n };\n for (let i = 0; i < liCollection.length; i++) {\n const element = liCollection[i];\n args.item = element;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n args.curData = this.getItemData(element);\n if (element.querySelector('.' + classNames.checkboxWrapper)) {\n this.removeElement(element.querySelector('.' + classNames.checkboxWrapper));\n }\n this.renderCheckbox(args);\n if (args.item.classList.contains(classNames.selected)) {\n this.checkInternally(args, args.item.querySelector('.' + classNames.checkboxWrapper));\n }\n }\n }\n else {\n const liCollection = Array.prototype.slice.call(this.element.querySelectorAll('.' + classNames.itemCheckList));\n for (let i = 0; i < liCollection.length; i++) {\n const element = liCollection[i];\n element.classList.remove(classNames.selected);\n element.firstElementChild.classList.remove(classNames.checkbox);\n this.removeElement(element.querySelector('.' + classNames.checkboxWrapper));\n }\n if (this.selectedItems) {\n this.selectedItems.item.classList.add(classNames.selected);\n }\n }\n }\n /**\n * Refresh the height of the list item only on enabling the virtualization property.\n */\n refreshItemHeight() {\n if (this.virtualizationModule) {\n this.virtualizationModule.refreshItemHeight();\n }\n }\n clickHandler(e) {\n if (Array.isArray(this.dataSource) && this.dataSource.length === 0) {\n return;\n }\n const target = e.target;\n this.targetElement = target;\n const classList = target.classList;\n let closestElement;\n if (classList.contains(classNames.backIcon) || classList.contains(classNames.headerText)) {\n if (this.showCheckBox && this.curDSLevel[this.curDSLevel.length - 1]) {\n this.uncheckAllItems();\n }\n this.back();\n }\n else {\n let li = closest(target.parentNode, '.' + classNames.listItem);\n if (li === null) {\n li = target;\n }\n this.removeFocus();\n if (this.enable && this.showCheckBox && this.isValidLI(li)) {\n if (e.target.classList.contains(classNames.checkboxIcon)) {\n li.classList.add(classNames.focused);\n if (isNullOrUndefined(li.querySelector('.' + classNames.checked))) {\n const args = {\n curData: undefined, dataSource: undefined, fields: undefined, options: undefined,\n text: undefined, item: li\n };\n this.checkInternally(args, args.item.querySelector('.' + classNames.checkboxWrapper));\n }\n else {\n this.uncheckItem(li);\n li.classList.add(classNames.focused);\n }\n if (this.enableVirtualization) {\n this.virtualizationModule.setCheckboxLI(li, e);\n }\n if (e) {\n const eventArgs = this.selectEventData(li, e);\n const checkIcon = li.querySelector('.' + classNames.checkboxIcon);\n merge(eventArgs, { isChecked: checkIcon.classList.contains(classNames.checked) });\n this.trigger('select', eventArgs);\n }\n }\n else if (li.classList.contains(classNames.hasChild)) {\n this.removeHover();\n this.removeSelect();\n this.removeSelect(li);\n this.setSelectLI(li, e);\n li.classList.remove(classNames.selected);\n }\n else {\n this.setCheckboxLI(li, e);\n if ((target.nodeName === 'INPUT') || (target.nodeName === 'TEXTAREA')) {\n target.classList.add('e-focused');\n this.targetElement = target;\n }\n }\n }\n else {\n this.setSelectLI(li, e);\n if ((target.nodeName === 'INPUT') || (target.nodeName === 'TEXTAREA')) {\n target.classList.add('e-focused');\n this.targetElement = target;\n }\n }\n closestElement = closest(e.target, 'li');\n if (!isNullOrUndefined(closestElement)) {\n if (closestElement.classList.contains('e-has-child') &&\n !e.target.parentElement.classList.contains('e-listview-checkbox')) {\n closestElement.classList.add(classNames.disable);\n }\n }\n }\n this.updateSelectedId();\n }\n removeElement(element) {\n return element && element.parentNode && element.parentNode.removeChild(element);\n }\n hoverHandler(e) {\n const curLi = closest(e.target.parentNode, '.' + classNames.listItem);\n this.setHoverLI(curLi);\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n leaveHandler(e) {\n this.removeHover();\n }\n homeKeyHandler(e, end) {\n e.preventDefault();\n if (Object.keys(this.dataSource).length && this.curUL) {\n const li = this.curUL.querySelectorAll('.' + classNames.listItem);\n const focusedElement = this.curUL.querySelector('.' + classNames.focused) ||\n this.curUL.querySelector('.' + classNames.selected);\n if (focusedElement) {\n focusedElement.classList.remove(classNames.focused);\n if (!this.showCheckBox) {\n focusedElement.classList.remove(classNames.selected);\n }\n }\n const index = !end ? 0 : li.length - 1;\n if (li[index].classList.contains(classNames.hasChild) || this.showCheckBox) {\n li[index].classList.add(classNames.focused);\n }\n else {\n this.setSelectLI(li[index], e);\n }\n if (li[index]) {\n this.element.setAttribute('aria-activedescendant', li[index].id.toString());\n }\n else {\n this.element.removeAttribute('aria-activedescendant');\n }\n }\n }\n onArrowKeyDown(e, prev) {\n let siblingLI;\n let li;\n const hasChild = !isNullOrUndefined(this.curUL.querySelector('.' + classNames.hasChild)) ? true : false;\n if (hasChild || this.showCheckBox) {\n li = this.curUL.querySelector('.' + classNames.focused) || this.curUL.querySelector('.' + classNames.selected);\n siblingLI = ListBase.getSiblingLI(this.curUL.querySelectorAll('.' + classNames.listItem), li, prev);\n if (!isNullOrUndefined(siblingLI)) {\n if (li) {\n li.classList.remove(classNames.focused);\n if (!this.showCheckBox) {\n li.classList.remove(classNames.selected);\n }\n }\n if (siblingLI.classList.contains(classNames.hasChild) || this.showCheckBox) {\n siblingLI.classList.add(classNames.focused);\n }\n else {\n this.setSelectLI(siblingLI, e);\n }\n }\n }\n else {\n li = this.curUL.querySelector('.' + classNames.selected);\n siblingLI = ListBase.getSiblingLI(this.curUL.querySelectorAll('.' + classNames.listItem), li, prev);\n this.setSelectLI(siblingLI, e);\n }\n if (siblingLI) {\n this.element.setAttribute('aria-activedescendant', siblingLI.id.toString());\n }\n else {\n this.element.removeAttribute('aria-activedescendant');\n }\n return siblingLI;\n }\n arrowKeyHandler(e, prev) {\n e.preventDefault();\n if (Object.keys(this.dataSource).length && this.curUL) {\n const siblingLI = this.onArrowKeyDown(e, prev);\n const elementTop = this.element.getBoundingClientRect().top;\n const elementHeight = this.element.getBoundingClientRect().height;\n const firstItemBounds = this.curUL.querySelector('.' + classNames.listItem).getBoundingClientRect();\n let heightDiff;\n let groupItemBounds;\n if (this.fields.groupBy) {\n groupItemBounds = this.curUL.querySelector('.' + classNames.groupListItem).getBoundingClientRect();\n }\n if (siblingLI) {\n const siblingTop = siblingLI.getBoundingClientRect().top;\n const siblingHeight = siblingLI.getBoundingClientRect().height;\n if (!prev) {\n const height = this.isWindow ? window.innerHeight : elementHeight;\n heightDiff = this.isWindow ? (siblingTop + siblingHeight) :\n ((siblingTop - elementTop) + siblingHeight);\n if (heightDiff > height) {\n if (this.isWindow === true) {\n window.scroll(0, pageYOffset + (heightDiff - height));\n }\n else {\n this.element.scrollTop = this.element.scrollTop + (heightDiff - height);\n }\n }\n }\n else {\n heightDiff = this.isWindow ? siblingTop : (siblingTop - elementTop);\n if (heightDiff < 0) {\n if (this.isWindow === true) {\n window.scroll(0, pageYOffset + heightDiff);\n }\n else {\n this.element.scrollTop = this.element.scrollTop + heightDiff;\n }\n }\n }\n }\n else if (this.enableVirtualization && prev && this.virtualizationModule.uiFirstIndex) {\n this.onUIScrolled = () => {\n this.onArrowKeyDown(e, prev);\n this.onUIScrolled = undefined;\n };\n heightDiff = this.virtualizationModule.listItemHeight;\n if (this.isWindow === true) {\n window.scroll(0, pageYOffset - heightDiff);\n }\n else {\n this.element.scrollTop = this.element.scrollTop - heightDiff;\n }\n }\n else if (prev) {\n if (this.showHeader && this.headerEle) {\n const topHeight = groupItemBounds ? groupItemBounds.top : firstItemBounds.top;\n const headerBounds = this.headerEle.getBoundingClientRect();\n heightDiff = headerBounds.top < 0 ? (headerBounds.height - topHeight) : 0;\n if (this.isWindow === true) {\n window.scroll(0, pageYOffset - heightDiff);\n }\n else {\n this.element.scrollTop = 0;\n }\n }\n else if (this.fields.groupBy) {\n heightDiff = this.isWindow ? (groupItemBounds.top < 0 ? groupItemBounds.top : 0) :\n (elementTop - firstItemBounds.top) + groupItemBounds.height;\n if (this.isWindow === true) {\n window.scroll(0, pageYOffset + heightDiff);\n }\n else {\n this.element.scrollTop = this.element.scrollTop - heightDiff;\n }\n }\n }\n }\n }\n enterKeyHandler(e) {\n if (Object.keys(this.dataSource).length && this.curUL) {\n const hasChild = !isNullOrUndefined(this.curUL.querySelector('.' + classNames.hasChild)) ? true : false;\n const li = this.curUL.querySelector('.' + classNames.focused);\n if (hasChild && li) {\n li.classList.remove(classNames.focused);\n if (this.showCheckBox) {\n this.removeSelect();\n this.removeSelect(li);\n this.removeHover();\n }\n this.setSelectLI(li, e);\n }\n }\n }\n spaceKeyHandler(e) {\n if (this.enable && this.showCheckBox && Object.keys(this.dataSource).length && this.curUL) {\n e.preventDefault();\n const li = this.curUL.querySelector('.' + classNames.focused);\n let checkboxElement;\n let checkIcon;\n if (!isNullOrUndefined(li) && isNullOrUndefined(li.querySelector('.' + classNames.checked))) {\n const args = {\n curData: undefined, dataSource: undefined, fields: undefined, options: undefined,\n text: undefined, item: li\n };\n checkboxElement = args.item.querySelector('.' + classNames.checkboxWrapper);\n this.checkInternally(args, checkboxElement);\n checkIcon = checkboxElement.querySelector('.' + classNames.checkboxIcon + '.' + classNames.icon);\n }\n else {\n this.uncheckItem(li);\n }\n const eventArgs = this.selectEventData(li, e);\n merge(eventArgs, { isChecked: checkIcon ? checkIcon.classList.contains(classNames.checked) : false });\n this.trigger('select', eventArgs);\n this.updateSelectedId();\n }\n }\n keyActionHandler(e) {\n switch (e.keyCode) {\n case 36:\n this.homeKeyHandler(e);\n break;\n case 35:\n this.homeKeyHandler(e, true);\n break;\n case 40:\n this.arrowKeyHandler(e);\n break;\n case 38:\n this.arrowKeyHandler(e, true);\n break;\n case 13:\n this.enterKeyHandler(e);\n break;\n case 8:\n if (this.showCheckBox && this.curDSLevel[this.curDSLevel.length - 1]) {\n this.uncheckAllItems();\n }\n this.back();\n break;\n case 32:\n if (isNullOrUndefined(this.targetElement) || !(this.targetElement.classList.contains('e-focused'))) {\n this.spaceKeyHandler(e);\n }\n break;\n }\n }\n swipeActionHandler(e) {\n if (e.swipeDirection === 'Right' && e.velocity > swipeVelocity && e.originalEvent.type === 'touchend') {\n if (this.showCheckBox && this.curDSLevel[this.curDSLevel.length - 1]) {\n this.uncheckAllItems();\n }\n this.back();\n }\n }\n focusout() {\n if (Object.keys(this.dataSource).length && this.curUL) {\n const focusedElement = this.curUL.querySelector('.' + classNames.focused);\n if (focusedElement) {\n focusedElement.classList.remove(classNames.focused);\n if (!this.showCheckBox && !isNullOrUndefined(this.selectedLI)) {\n this.selectedLI.classList.add(classNames.selected);\n }\n }\n }\n }\n wireEvents() {\n EventHandler.add(this.element, 'keydown', this.keyActionHandler, this);\n EventHandler.add(this.element, 'click', this.clickHandler, this);\n EventHandler.add(this.element, 'mouseover', this.hoverHandler, this);\n EventHandler.add(this.element, 'mouseout', this.leaveHandler, this);\n EventHandler.add(this.element, 'focusout', this.focusout, this);\n this.touchModule = new Touch(this.element, { swipe: this.swipeActionHandler.bind(this) });\n if (!isNullOrUndefined(this.scroll)) {\n EventHandler.add(this.element, 'scroll', this.onListScroll, this);\n }\n }\n unWireEvents() {\n EventHandler.remove(this.element, 'keydown', this.keyActionHandler);\n EventHandler.remove(this.element, 'click', this.clickHandler);\n EventHandler.remove(this.element, 'mouseover', this.hoverHandler);\n EventHandler.remove(this.element, 'mouseout', this.leaveHandler);\n EventHandler.remove(this.element, 'mouseover', this.hoverHandler);\n EventHandler.remove(this.element, 'mouseout', this.leaveHandler);\n EventHandler.remove(this.element, 'focusout', this.focusout);\n if (!isNullOrUndefined(this.scroll)) {\n EventHandler.remove(this.element, 'scroll', this.onListScroll);\n }\n this.touchModule.destroy();\n this.touchModule = null;\n }\n removeFocus() {\n const focusedLI = this.element.querySelectorAll('.' + classNames.focused);\n for (const ele of focusedLI) {\n ele.classList.remove(classNames.focused);\n }\n }\n removeHover() {\n const hoverLI = this.element.querySelector('.' + classNames.hover);\n if (hoverLI) {\n hoverLI.classList.remove(classNames.hover);\n }\n }\n removeSelect(li) {\n if (isNullOrUndefined(li)) {\n const selectedLI = this.element.querySelectorAll('.' + classNames.selected);\n for (const ele of selectedLI) {\n if (this.showCheckBox && ele.querySelector('.' + classNames.checked)) {\n continue;\n }\n else {\n ele.classList.remove(classNames.selected);\n }\n }\n }\n else {\n li.classList.remove(classNames.selected);\n }\n }\n isValidLI(li) {\n return (li && li.classList.contains(classNames.listItem)\n && !li.classList.contains(classNames.groupListItem)\n && !li.classList.contains(classNames.disable));\n }\n setCheckboxLI(li, e) {\n if (this.isValidLI(li) && this.enable && this.showCheckBox) {\n if (this.curUL.querySelector('.' + classNames.focused)) {\n this.curUL.querySelector('.' + classNames.focused).classList.remove(classNames.focused);\n }\n const textAreaFocus = li.querySelector('textarea') || li.querySelector('input');\n li.classList.add(classNames.focused);\n if (!isNullOrUndefined(e)) {\n if (e.target === textAreaFocus) {\n textAreaFocus.classList.add('e-focused');\n }\n }\n const checkboxElement = li.querySelector('.' + classNames.checkboxWrapper);\n const checkIcon = checkboxElement.querySelector('.' + classNames.checkboxIcon + '.' + classNames.icon);\n this.removeHover();\n if (!checkIcon.classList.contains(classNames.checked)) {\n checkIcon.classList.add(classNames.checked);\n li.classList.add(classNames.selected);\n }\n else {\n checkIcon.classList.remove(classNames.checked);\n li.classList.remove(classNames.selected);\n }\n checkboxElement.setAttribute('aria-checked', checkIcon.classList.contains(classNames.checked) ?\n 'true' : 'false');\n const eventArgs = this.selectEventData(li, e);\n merge(eventArgs, { isChecked: checkIcon.classList.contains(classNames.checked) });\n if (this.enableVirtualization) {\n this.virtualizationModule.setCheckboxLI(li, e);\n }\n this.trigger('select', eventArgs);\n this.setSelectedItemData(li);\n this.renderSubList(li);\n }\n }\n selectEventData(li, e) {\n const data = this.getItemData(li);\n const fieldData = getFieldValues(data, this.listBaseOption.fields);\n let selectedItem;\n if (!isNullOrUndefined(data)\n && typeof this.dataSource[0] === 'string' || typeof this.dataSource[0] === 'number') {\n selectedItem = { item: li, text: li && li.innerText.trim(), data: this.dataSource };\n }\n else {\n selectedItem =\n {\n item: li, text: fieldData && fieldData[this.listBaseOption.fields.text],\n // eslint-disable-next-line\n data: data\n };\n }\n const eventArgs = {};\n merge(eventArgs, selectedItem);\n if (e) {\n merge(eventArgs, {\n isInteracted: true,\n event: e,\n cancel: false,\n index: this.curUL && Array.prototype.indexOf.call(this.curUL.children, li)\n });\n }\n return eventArgs;\n }\n setSelectedItemData(li) {\n const data = this.getItemData(li);\n // eslint-disable-next-line\n const fieldData = getFieldValues(data, this.listBaseOption.fields);\n if (!isNullOrUndefined(data) && ((typeof this.dataSource[0] === 'string') ||\n (typeof this.dataSource[0] === 'number'))) {\n this.selectedItems = {\n item: li,\n text: li && li.innerText.trim(),\n data: this.dataSource\n };\n }\n else {\n this.selectedItems = {\n item: li,\n // eslint-disable-next-line\n text: fieldData && fieldData[this.listBaseOption.fields.text],\n // eslint-disable-next-line\n data: data\n };\n }\n }\n setSelectLI(li, e) {\n if (this.isValidLI(li) && !li.classList.contains(classNames.selected) && this.enable) {\n if (!this.showCheckBox) {\n this.removeSelect();\n }\n li.classList.add(classNames.selected);\n this.removeHover();\n this.setSelectedItemData(li);\n if (this.enableVirtualization) {\n this.virtualizationModule.setSelectLI(li, e);\n }\n const eventArgs = this.selectEventData(li, e);\n this.trigger('select', eventArgs, (observedArgs) => {\n if (!observedArgs.cancel) {\n this.selectedLI = li;\n this.renderSubList(li);\n }\n });\n }\n }\n setHoverLI(li) {\n if (this.isValidLI(li) && !li.classList.contains(classNames.hover) && this.enable) {\n const lastLi = this.element.querySelectorAll('.' + classNames.hover);\n if (lastLi && lastLi.length) {\n removeClass(lastLi, classNames.hover);\n }\n if (!li.classList.contains(classNames.selected) || this.showCheckBox) {\n li.classList.add(classNames.hover);\n }\n }\n }\n //Data Source Related Functions\n getSubDS() {\n const levelKeys = this.curDSLevel;\n if (levelKeys.length) {\n let ds = this.localData;\n for (const key of levelKeys) {\n const field = {};\n // eslint-disable-next-line\n field[this.fields.id] = key;\n this.curDSJSON = this.findItemFromDS(ds, field);\n const fieldData = getFieldValues(this.curDSJSON, this.listBaseOption.fields);\n ds = this.curDSJSON ? fieldData[this.fields.child] : ds;\n }\n return ds;\n }\n return this.localData;\n }\n getItemData(li) {\n const dataSource = this.dataSource instanceof DataManager ?\n this.localData : this.dataSource;\n const fields = this.getElementUID(li);\n let curDS;\n if (isNullOrUndefined(this.element.querySelector('.' + classNames.hasChild)) && this.fields.groupBy) {\n curDS = this.curViewDS;\n }\n else {\n curDS = dataSource;\n }\n return this.findItemFromDS(curDS, fields);\n }\n findItemFromDS(dataSource, fields, parent) {\n let resultJSON;\n if (dataSource && dataSource.length && fields) {\n dataSource.some((data) => {\n const fieldData = \n // eslint-disable-next-line\n getFieldValues(data, this.listBaseOption.fields);\n //(!(fid) || id === fid) && (!(ftext) || text === ftext) && (!!fid || !!ftext)\n if ((fields[this.fields.id] || fields[this.fields.text]) &&\n (!fields[this.fields.id] || (!isNullOrUndefined(fieldData[this.fields.id]) &&\n fieldData[this.fields.id].toString()) === fields[this.fields.id].toString()) &&\n (!fields[this.fields.text] || fieldData[this.fields.text] === fields[this.fields.text])) {\n resultJSON = (parent ? dataSource : data);\n }\n else if (typeof data !== 'object' && dataSource.indexOf(data) !== -1) {\n resultJSON = (parent ? dataSource : data);\n }\n else if (!isNullOrUndefined(fields[this.fields.id]) && isNullOrUndefined(fieldData[this.fields.id])) {\n const li = this.element.querySelector('[data-uid=\"'\n + fields[this.fields.id] + '\"]');\n // eslint-disable-next-line\n if (li && li.innerText.trim() === fieldData[this.fields.text]) {\n resultJSON = data;\n }\n // eslint-disable-next-line\n }\n else if (fieldData.hasOwnProperty(this.fields.child) && fieldData[this.fields.child].length) {\n resultJSON = this.findItemFromDS(fieldData[this.fields.child], fields, parent);\n }\n return !!resultJSON;\n });\n }\n else {\n resultJSON = dataSource;\n }\n return resultJSON;\n }\n getQuery() {\n const columns = [];\n const query = (this.query ? this.query : new Query());\n if (!this.query) {\n // eslint-disable-next-line\n for (const column of Object.keys(this.fields.properties)) {\n if (column !== 'tableName' && !!(this.fields[`${column}`]) &&\n this.fields[`${column}`] !==\n ListBase.defaultMappedFields[`${column}`]\n && columns.indexOf(this.fields[`${column}`]) === -1) {\n columns.push(this.fields[`${column}`]);\n }\n }\n query.select(columns);\n // eslint-disable-next-line\n if (this.fields.properties.hasOwnProperty('tableName')) {\n query.from(this.fields.tableName);\n }\n }\n return query;\n }\n setViewDataSource(dataSource = this.localData) {\n // eslint-disable-next-line\n let fieldValue = (isNullOrUndefined(this.fields.sortBy)) ? this.fields.text : this.fields.sortBy;\n const query = ListBase.addSorting(this.sortOrder, fieldValue);\n if (dataSource && this.fields.groupBy) {\n if (this.sortOrder !== 'None') {\n this.curViewDS = ListBase.groupDataSource(ListBase.getDataSource(dataSource, query), this.listBaseOption.fields, this.sortOrder);\n }\n else {\n this.curViewDS = ListBase.groupDataSource(dataSource, this.listBaseOption.fields, this.sortOrder);\n }\n }\n else if (dataSource && this.sortOrder !== 'None') {\n this.curViewDS = ListBase.getDataSource(dataSource, query);\n }\n else {\n this.curViewDS = dataSource;\n }\n }\n isInAnimation() {\n return this.curUL.classList.contains('.e-animate');\n }\n renderRemoteLists(e, listViewComponent) {\n if (this.isDestroyed) {\n return;\n }\n this.localData = e.result;\n listViewComponent.removeElement(listViewComponent.contentContainer);\n this.renderList();\n this.trigger('actionComplete', e);\n }\n triggerActionFailure(e) {\n if (this.isDestroyed) {\n return;\n }\n this.trigger('actionFailure', e);\n }\n setLocalData() {\n this.trigger('actionBegin');\n // eslint-disable-next-line\n const listViewComponent = this;\n if (this.dataSource instanceof DataManager) {\n if (this.dataSource.ready) {\n this.dataSource.ready.then((e) => {\n /* eslint-disable */\n this.isOffline = this.dataSource.dataSource.offline;\n if (this.dataSource instanceof DataManager && this.isOffline) {\n this.renderRemoteLists(e, listViewComponent);\n }\n }).catch((e) => {\n this.triggerActionFailure(e);\n });\n }\n else {\n this.dataSource.executeQuery(this.getQuery()).then((e) => {\n this.renderRemoteLists(e, listViewComponent);\n }).catch((e) => {\n this.triggerActionFailure(e);\n });\n }\n }\n else if (!this.dataSource || !this.dataSource.length) {\n const ul = this.element.querySelector('ul');\n if (ul) {\n remove(ul);\n this.setProperties({ dataSource: ListBase.createJsonFromElement(ul) }, true);\n this.localData = this.dataSource;\n this.renderList();\n this.trigger('actionComplete', { data: this.localData });\n }\n }\n else {\n this.localData = this.dataSource;\n this.renderList();\n this.trigger('actionComplete', { data: this.localData });\n }\n }\n reRender() {\n this.removeElement(this.headerEle);\n this.removeElement(this.ulElement);\n this.removeElement(this.contentContainer);\n if (this.isReact) {\n this.clearTemplate();\n }\n if (Object.keys(window).indexOf('ejsInterop') === -1) {\n this.element.innerHTML = '';\n }\n this.headerEle = this.ulElement = this.liCollection = undefined;\n this.header();\n this.setLocalData();\n }\n resetCurrentList() {\n this.setViewDataSource(this.curViewDS);\n this.contentContainer.innerHTML = '';\n this.createList();\n this.renderIntoDom(this.curUL);\n }\n setAttributes(liElements) {\n for (let i = 0; i < liElements.length; i++) {\n const element = liElements[i];\n if (element.classList.contains('e-list-item')) {\n element.setAttribute('id', this.element.id + '_' + element.getAttribute('data-uid'));\n element.setAttribute('tabindex', '-1');\n }\n }\n }\n createList() {\n this.currentLiElements = [];\n this.isNestedList = false;\n this.ulElement = this.curUL = ListBase.createList(this.createElement, this.curViewDS, this.listBaseOption, null, this);\n this.liCollection = this.curUL.querySelectorAll('.' + classNames.listItem);\n this.setAttributes(this.liCollection);\n }\n exceptionEvent(e) {\n this.trigger('actionFailure', e);\n }\n UpdateCurrentUL() {\n this.ulElement = this.curUL = this.element.querySelector('.' + classNames.parentItem);\n if (this.curUL) {\n this.liCollection = this.curUL.querySelectorAll('.' + classNames.listItem);\n }\n }\n renderSubList(li) {\n this.liElement = li;\n const uID = li.getAttribute('data-uid');\n if (li.classList.contains(classNames.hasChild) && uID) {\n const ul = closest(li.parentNode, '.' + classNames.parentItem);\n let ele = this.element.querySelector('[pid=\\'' + uID + '\\']');\n this.curDSLevel.push(uID);\n this.setViewDataSource(this.getSubDS());\n if (!ele) {\n const data = this.curViewDS;\n ele = ListBase.createListFromJson(this.createElement, data, this.listBaseOption, this.curDSLevel.length, null, this);\n if (this.isReact) {\n this.renderReactTemplates();\n }\n const lists = ele.querySelectorAll('.' + classNames.listItem);\n this.setAttributes(lists);\n ele.setAttribute('pID', uID);\n ele.style.display = 'none';\n this.renderIntoDom(ele);\n }\n this.switchView(ul, ele);\n this.liCollection = this.curUL.querySelectorAll('.' + classNames.listItem);\n if (this.selectedItems) {\n const fieldData = getFieldValues(this.selectedItems.data, this.listBaseOption.fields);\n this.header((fieldData[this.listBaseOption.fields.text]), true, 'header');\n }\n this.selectedLI = undefined;\n }\n }\n renderIntoDom(ele) {\n this.contentContainer.appendChild(ele);\n }\n renderList(data) {\n this.setViewDataSource(data);\n if (this.enableVirtualization) {\n if (Object.keys(this.dataSource).length) {\n if ((this.template || this.groupTemplate) && !this.virtualizationModule.isNgTemplate()) {\n this.listBaseOption.itemCreated = this.virtualizationModule.createUIItem.bind(this.virtualizationModule);\n }\n }\n this.virtualizationModule.uiVirtualization();\n }\n else {\n this.createList();\n this.contentContainer = this.createElement('div', { className: classNames.container });\n this.element.appendChild(this.contentContainer);\n this.renderIntoDom(this.ulElement);\n if (this.isReact) {\n this.renderReactTemplates();\n }\n }\n }\n getElementUID(obj) {\n let fields = {};\n if (obj instanceof Element) {\n fields[this.fields.id] = obj.getAttribute('data-uid');\n }\n else {\n fields = obj;\n }\n return fields;\n }\n /**\n * Initializes the ListView component rendering.\n */\n render() {\n this.element.classList.add(classNames.root);\n attributes(this.element, { tabindex: '0' });\n this.setCSSClass();\n this.setEnableRTL();\n this.setEnable();\n this.setSize();\n this.wireEvents();\n this.header();\n this.setLocalData();\n this.setHTMLAttribute();\n this.rippleFn = rippleEffect(this.element, {\n selector: '.' + classNames.listItem\n });\n this.renderComplete();\n this.previousScrollTop = this.element.scrollTop;\n }\n /**\n * It is used to destroy the ListView component.\n */\n destroy() {\n if (this.isReact) {\n this.clearTemplate();\n }\n this.unWireEvents();\n const classAr = [classNames.root, classNames.disable, 'e-rtl',\n 'e-has-header', 'e-lib'].concat(this.cssClass.split(' ').filter((css) => css));\n removeClass([this.element], classAr);\n this.element.removeAttribute('role');\n this.element.removeAttribute('tabindex');\n this.curUL = this.ulElement = this.liCollection = this.headerEle = undefined;\n this.element.innerHTML = '';\n this.contentContainer = null;\n this.selectedItems = null;\n this.selectedLI = null;\n this.liElement = null;\n this.targetElement = null;\n this.currentLiElements = null;\n this.virtualCheckBox = null;\n super.destroy();\n }\n /**\n * Switches back from the navigated sub list item.\n */\n back() {\n const pID = this.curDSLevel[this.curDSLevel.length - 1];\n if (pID === undefined || this.isInAnimation()) {\n return;\n }\n this.curDSLevel.pop();\n this.setViewDataSource(this.getSubDS());\n let toUL = this.element.querySelector('[data-uid=\\'' + pID + '\\']');\n const fromUL = this.curUL;\n if (!toUL) {\n this.createList();\n this.renderIntoDom(this.ulElement);\n toUL = this.curUL;\n }\n else {\n toUL = toUL.parentElement;\n }\n const fieldData = getFieldValues(this.curDSJSON, this.listBaseOption.fields);\n const text = fieldData[this.fields.text];\n this.switchView(fromUL, toUL, true);\n this.removeFocus();\n const li = this.element.querySelector('[data-uid=\\'' + pID + '\\']');\n li.classList.remove(classNames.disable);\n li.classList.add(classNames.focused);\n if (!(this.showCheckBox && li.querySelector('.' + classNames.checkboxIcon).classList.contains(classNames.checked))) {\n li.classList.remove(classNames.selected);\n }\n this.liCollection = this.curUL.querySelectorAll('.' + classNames.listItem);\n if (this.enableHtmlSanitizer) {\n this.setProperties({ headerTitle: SanitizeHtmlHelper.sanitize(this.headerTitle) }, true);\n }\n this.header((this.curDSLevel.length ? text : this.headerTitle), (this.curDSLevel.length ? true : false), 'header');\n }\n /**\n * Selects the list item from the ListView by passing the elements or field object.\n *\n * @param {Fields | HTMLElement | Element} item - We can pass element Object or Fields as Object with ID and Text fields.\n */\n selectItem(item) {\n if (this.enableVirtualization) {\n this.virtualizationModule.selectItem(item);\n }\n else if (this.showCheckBox) {\n this.setCheckboxLI(this.getLiFromObjOrElement(item));\n }\n else {\n if (isNullOrUndefined(item) === true) {\n this.removeSelect();\n }\n else {\n this.setSelectLI(this.getLiFromObjOrElement(item));\n }\n }\n }\n /**\n * This method allows for deselecting a list item within the ListView. The item to be deselected can be specified by passing the element or field object.\n *\n * @param {Fields | HTMLElement | Element} item - We can pass an element Object or Fields as an Object with ID and Text fields.\n */\n unselectItem(item) {\n if (isNullOrUndefined(item)) {\n this.removeSelect();\n }\n else {\n const li = this.getLiFromObjOrElement(item);\n if (!isNullOrUndefined(li)) {\n this.removeSelect(li);\n }\n }\n }\n getLiFromObjOrElement(obj) {\n let li;\n const dataSource = this.dataSource instanceof DataManager ?\n this.localData : this.dataSource;\n if (!isNullOrUndefined(obj)) {\n if (typeof dataSource[0] === 'string' || typeof dataSource[0] === 'number') {\n if (obj instanceof Element) {\n const uid = obj.getAttribute('data-uid').toString();\n for (let i = 0; i < this.liCollection.length; i++) {\n if (this.liCollection[i].getAttribute('data-uid').toString() === uid) {\n li = this.liCollection[i];\n break;\n }\n }\n }\n else {\n Array.prototype.some.call(this.curUL.querySelectorAll('.' + classNames.listItem), (item) => {\n if (item.innerText.trim() === obj.toString()) {\n li = item;\n return true;\n }\n else {\n return false;\n }\n });\n }\n }\n else {\n const resultJSON = this.getItemData(obj);\n const fieldData = getFieldValues(resultJSON, this.listBaseOption.fields);\n if (resultJSON) {\n li = this.element.querySelector('[data-uid=\"'\n + fieldData[this.fields.id] + '\"]');\n if (!this.enableVirtualization && isNullOrUndefined(li)) {\n const curLi = this.element.querySelectorAll('.' + classNames.listItem);\n for (let i = 0; i < curLi.length; i++) {\n if (curLi[i].innerText.trim() === fieldData[this.fields.text]) {\n li = curLi[i];\n }\n }\n }\n }\n }\n }\n return li;\n }\n /**\n * Selects multiple list items from the ListView.\n *\n * @param {Fields[] | HTMLElement[] | Element[]} item - We can pass array of\n * elements or array of fields Object with ID and Text fields.\n */\n selectMultipleItems(item) {\n if (!isNullOrUndefined(item)) {\n for (let i = 0; i < item.length; i++) {\n if (!isNullOrUndefined(item[i])) {\n this.selectItem(item[i]);\n }\n }\n }\n }\n getParentId() {\n const parentId = [];\n if (this.isNestedList) {\n for (let i = this.curDSLevel.length - 1; i >= 0; i--) {\n parentId.push(this.curDSLevel[i]);\n }\n }\n return parentId;\n }\n updateSelectedId() {\n this.selectedId = [];\n const liCollection = this.curUL.getElementsByClassName(classNames.selected);\n for (let i = 0; i < liCollection.length; i++) {\n const tempData = this.getItemData(liCollection[i]);\n if (!isNullOrUndefined(tempData) && tempData[this.listBaseOption.fields.id]) {\n this.selectedId.push(tempData[this.listBaseOption.fields.id]);\n }\n }\n }\n /**\n * Gets the details of the currently selected item from the list items.\n *\n */\n getSelectedItems() {\n let finalValue;\n let isCompleted = false;\n this.selectedId = [];\n const dataSource = this.dataSource instanceof DataManager ?\n this.localData : this.dataSource;\n if (this.enableVirtualization && !isCompleted) {\n finalValue = this.virtualizationModule.getSelectedItems();\n isCompleted = true;\n }\n else if (this.showCheckBox && !isCompleted) {\n const liCollection = this.curUL.getElementsByClassName(classNames.selected);\n const liTextCollection = [];\n const liDataCollection = [];\n this.selectedId = [];\n const dataParent = [];\n for (let i = 0; i < liCollection.length; i++) {\n if (typeof dataSource[0] === 'string' || typeof dataSource[0] === 'number') {\n liTextCollection.push(liCollection[i].innerText.trim());\n }\n else {\n const tempData = this.getItemData(liCollection[i]);\n const fieldData = getFieldValues(tempData, this.listBaseOption.fields);\n if (this.isNestedList) {\n dataParent.push({ data: tempData, parentId: this.getParentId() });\n }\n else {\n liDataCollection.push(tempData);\n }\n if (fieldData) {\n liTextCollection.push(fieldData[this.listBaseOption.fields.text]);\n this.selectedId.push(fieldData[this.listBaseOption.fields.id]);\n }\n else {\n liTextCollection.push(undefined);\n this.selectedId.push(undefined);\n }\n }\n }\n if ((typeof dataSource[0] === 'string'\n || typeof dataSource[0] === 'number')\n && !isCompleted) {\n finalValue = { item: liCollection, data: dataSource, text: liTextCollection };\n isCompleted = true;\n }\n if (this.isNestedList && !isCompleted) {\n finalValue = { item: liCollection, data: dataParent, text: liTextCollection };\n isCompleted = true;\n }\n else if (!isCompleted) {\n finalValue = { item: liCollection, data: liDataCollection, text: liTextCollection };\n isCompleted = true;\n }\n }\n else if (!isCompleted) {\n const liElement = this.element.getElementsByClassName(classNames.selected)[0];\n const fieldData = getFieldValues(this.getItemData(liElement), this.listBaseOption.fields);\n if ((typeof dataSource[0] === 'string'\n || typeof dataSource[0] === 'number')\n && !isCompleted) {\n finalValue = (!isNullOrUndefined(liElement)) ? {\n item: liElement, data: dataSource,\n text: liElement.innerText.trim()\n } : undefined;\n isCompleted = true;\n }\n else if (!isCompleted) {\n if (isNullOrUndefined(fieldData) || isNullOrUndefined(liElement)) {\n finalValue = undefined;\n isCompleted = true;\n }\n else {\n this.selectedId.push(fieldData[this.listBaseOption.fields.id]);\n finalValue = {\n text: fieldData[this.listBaseOption.fields.text], item: liElement,\n data: this.getItemData(liElement)\n };\n isCompleted = true;\n }\n }\n }\n return finalValue;\n }\n /**\n * Finds out an item details from the current list.\n *\n * @param {Fields | HTMLElement | Element} item - We can pass element Object or Fields as Object with ID and Text fields.\n */\n findItem(item) {\n return this.getItemData(item);\n }\n /**\n * Enables the disabled list items by passing the Id and text fields.\n *\n * @param {Fields | HTMLElement | Element} item - We can pass element Object or Fields as Object with ID and Text fields.\n */\n enableItem(item) {\n this.setItemState(item, true);\n if (this.enableVirtualization) {\n this.virtualizationModule.enableItem(item);\n }\n }\n /**\n * Disables the list items by passing the Id and text fields.\n *\n * @param {Fields | HTMLElement | Element} item - We can pass element Object or Fields as Object with ID and Text fields.\n */\n disableItem(item) {\n this.setItemState(item, false);\n if (this.enableVirtualization) {\n this.virtualizationModule.disableItem(item);\n }\n }\n //A function that used to set state of the list item like enable, disable.\n setItemState(item, isEnable) {\n const resultJSON = this.getItemData(item);\n const fieldData = getFieldValues(resultJSON, this.listBaseOption.fields);\n if (resultJSON) {\n const li = this.element.querySelector('[data-uid=\"' + fieldData[this.fields.id] + '\"]');\n if (isEnable) {\n if (li) {\n li.classList.remove(classNames.disable);\n }\n delete resultJSON[this.fields.enabled];\n }\n else if (!isEnable) {\n if (li) {\n li.classList.add(classNames.disable);\n }\n resultJSON[this.fields.enabled] = false;\n }\n }\n }\n /**\n * Shows the hide list item from the ListView.\n *\n * @param {Fields | HTMLElement | Element} item - We can pass element Object or Fields as Object with ID and Text fields.\n */\n showItem(item) {\n this.showHideItem(item, false, '');\n if (this.enableVirtualization) {\n this.virtualizationModule.showItem(item);\n }\n }\n /**\n * Hides an list item from the ListView.\n *\n * @param {Fields | HTMLElement | Element} item - We can pass element Object or Fields as Object with ID and Text fields.\n */\n hideItem(item) {\n this.showHideItem(item, true, 'none');\n if (this.enableVirtualization) {\n this.virtualizationModule.hideItem(item);\n }\n }\n showHideItem(obj, isHide, display) {\n const resultJSON = this.getItemData(obj);\n const fieldData = getFieldValues(resultJSON, this.listBaseOption.fields);\n if (resultJSON) {\n const li = this.element.querySelector('[data-uid=\"' + fieldData[this.fields.id] + '\"]');\n if (li) {\n li.style.display = display;\n }\n if (isHide) {\n resultJSON[this.fields.isVisible] = false;\n }\n else {\n delete resultJSON[this.fields.isVisible];\n }\n }\n }\n /**\n * Adds the new list item(s) to the current ListView.\n * To add a new list item(s) in the ListView, we need to pass the `data` as an array of items that need\n * to be added and `fields` as the target item to which we need to add the given item(s) as its children.\n * For example fields: { text: 'Name', tooltip: 'Name', id:'id'}\n *\n * @param {{Object}[]} data - JSON Array Data that need to add.\n *\n * @param {Fields} fields - Target item to add the given data as its children (can be null).\n *\n * @param {number} index - Indicates the index where the data to be added.\n */\n addItem(data, fields = undefined, index) {\n const dataSource = this.dataSource instanceof DataManager\n ? this.localData : this.dataSource;\n this.addItemInternally(data, fields, dataSource, index);\n }\n addItemInternally(data, fields, dataSource, index) {\n if (data instanceof Array) {\n if (this.enableVirtualization) {\n this.virtualizationModule.addItem(data, fields, dataSource, index);\n }\n else {\n const ds = this.findItemFromDS(dataSource, fields);\n let child;\n if (ds) {\n const fieldData = getFieldValues(ds, this.listBaseOption.fields);\n child = fieldData[this.fields.child];\n if (!child) {\n child = [];\n }\n child = child.concat(data);\n }\n // check for whether target is nested level or top level in list\n if (ds instanceof Array) {\n for (let i = 0; i < data.length; i++) {\n dataSource = this.addItemAtIndex(index, dataSource, data[i]);\n this.setViewDataSource(dataSource);\n // since it is top level target, get the content container's first child\n // as it is always the top level UL\n const targetUL = this.contentContainer\n ? this.contentContainer.children[0]\n : null;\n // check for whether the list was previously empty or not, if it is\n // proceed to call initial render\n if (this.contentContainer && targetUL) {\n this.addItemIntoDom(data[i], targetUL, this.curViewDS);\n }\n else {\n this.reRender();\n }\n }\n this.liCollection = this.curUL.querySelectorAll('.' + classNames.listItem);\n }\n else {\n // proceed as target item is in nested level, only if it is a valid target ds\n if (ds) {\n ds[this.fields.child] = child;\n this.addItemInNestedList(ds, data);\n }\n }\n }\n }\n }\n addItemAtIndex(index, newDataSource, itemData) {\n let isIndexValid = !(isNullOrUndefined(index)) && index >= 0 && index < newDataSource.length && isNullOrUndefined(this.listBaseOption.fields.groupBy);\n if (isIndexValid) {\n newDataSource.splice(index, 0, itemData);\n }\n else {\n newDataSource.push(itemData);\n }\n return newDataSource;\n }\n addItemInNestedList(targetItemData, itemQueue) {\n const targetItemId = targetItemData[this.fields.id];\n const targetChildDS = targetItemData[this.fields.child];\n const isAlreadyRenderedUL = this.element.querySelector('[pid=\\'' + targetItemId + '\\']');\n const targetLi = this.element.querySelector('[data-uid=\\'' + targetItemId + '\\']');\n const targetUL = isAlreadyRenderedUL\n ? isAlreadyRenderedUL\n : targetLi\n ? closest(targetLi, 'ul')\n : null;\n const targetDS = isAlreadyRenderedUL ? targetChildDS : [targetItemData];\n const isTargetEmptyChild = targetLi ? !targetLi.classList.contains(classNames.hasChild) : false;\n let isRefreshTemplateNeeded = false;\n // if li element is already rendered, that element needs to be refreshed so that\n // it becomes child viewable due to new child items are added now\n if (isTargetEmptyChild) {\n const targetRefreshedElement = ListBase.createListItemFromJson(this.createElement, targetDS, this.listBaseOption, null, null, this);\n this.setAttributes(targetRefreshedElement);\n targetUL.insertBefore(targetRefreshedElement[0], targetLi);\n detach(targetLi);\n isRefreshTemplateNeeded = true;\n }\n // if it is already rendered element, we need to create and append new elements\n if (isAlreadyRenderedUL && itemQueue) {\n for (let i = 0; i < itemQueue.length; i++) {\n targetDS.push(itemQueue[i]);\n this.addItemIntoDom(itemQueue[i], targetUL, targetDS);\n }\n isRefreshTemplateNeeded = true;\n }\n }\n addItemIntoDom(currentItem, targetUL, curViewDS) {\n const index = curViewDS.indexOf(currentItem);\n this.addListItem(currentItem, index, targetUL, curViewDS);\n const curItemDS = curViewDS[index - 1];\n if (curItemDS && curItemDS.isHeader && curItemDS.items.length === 1) {\n this.addListItem(curItemDS, (index - 1), targetUL, curViewDS);\n }\n }\n addListItem(dataSource, index, ulElement, curViewDS) {\n let target = this.getLiFromObjOrElement(curViewDS[index + 1]) ||\n this.getLiFromObjOrElement(curViewDS[index + 2]) || null;\n const li = ListBase.createListItemFromJson(this.createElement, [dataSource], this.listBaseOption, null, null, this);\n this.setAttributes(li);\n if (this.template && this.isReact) {\n this.renderReactTemplates();\n }\n if (this.fields.groupBy && curViewDS[index + 1] && curViewDS[index + 1].isHeader) {\n let targetEle = this.getLiFromObjOrElement(curViewDS[index - 1]);\n if (targetEle) {\n target = targetEle.nextElementSibling;\n }\n }\n ulElement.insertBefore(li[0], target);\n }\n /**\n * Removes the list item from the data source based on a passed\n * element like fields: { text: 'Name', tooltip: 'Name', id:'id'}\n *\n * @param {Fields | HTMLElement | Element} item - We can pass element Object or Fields as Object with ID and Text fields.\n */\n removeItem(item) {\n const listDataSource = this.dataSource instanceof DataManager\n ? this.localData : this.dataSource;\n if (this.enableVirtualization) {\n this.virtualizationModule.removeItem(item);\n }\n else {\n this.removeItemFromList(item, listDataSource);\n }\n }\n removeItemFromList(obj, listDataSource) {\n const curViewDS = this.curViewDS;\n const fields = obj instanceof Element ? this.getElementUID(obj) : obj;\n let dataSource;\n dataSource = this.findItemFromDS(listDataSource, fields, true);\n if (dataSource) {\n let data;\n data = this.findItemFromDS(dataSource, fields);\n const index = curViewDS.indexOf(data);\n const li = this.getLiFromObjOrElement(obj);\n let groupLi;\n this.validateNestedView(li);\n if (this.fields.groupBy && this.curViewDS[index - 1] &&\n curViewDS[index - 1].isHeader &&\n curViewDS[index - 1].items.length === 1) {\n if (li && li.previousElementSibling.classList.contains(classNames.groupListItem) &&\n (isNullOrUndefined(li.nextElementSibling) || (li.nextElementSibling &&\n li.nextElementSibling.classList.contains(classNames.groupListItem)))) {\n groupLi = li.previousElementSibling;\n }\n }\n if (li) {\n detach(li);\n }\n if (groupLi) {\n detach(groupLi);\n }\n const foundData = (dataSource.length - 1) <= 0\n ? this.findParent(this.localData, this.fields.id, (value) => value === data[this.fields.id], null) : null;\n const dsIndex = dataSource.indexOf(data);\n dataSource.splice(dsIndex, 1);\n this.setViewDataSource(listDataSource);\n if (foundData\n && foundData.parent\n && Array.isArray(foundData.parent[this.fields.child])\n && foundData.parent[this.fields.child].length <= 0) {\n const parentLi = this.getLiFromObjOrElement(foundData.parent);\n if (parentLi) {\n const li = ListBase.createListItemFromJson(this.createElement, [foundData.parent], this.listBaseOption, null, null, this);\n this.setAttributes(li);\n parentLi.parentElement.insertBefore(li[0], parentLi);\n parentLi.parentElement.removeChild(parentLi);\n }\n }\n if (dataSource.length <= 0) {\n this.back();\n }\n this.liCollection = Array.prototype.slice.call(this.element.querySelectorAll('.' + classNames.listItem));\n }\n }\n // validate before removing an element whether the current view is inside target element's child view\n validateNestedView(li) {\n const liID = li ? li.getAttribute('data-uid').toString().toLowerCase() : null;\n if (liID && this.curDSLevel && this.curDSLevel.length > 0) {\n while (this.curDSLevel.some((id) => id.toString().toLowerCase() === liID)) {\n this.back();\n }\n }\n }\n /**\n * Removes multiple items from the ListView by passing the array of elements or array of field objects.\n *\n * @param {Fields[] | HTMLElement[] | Element[]} item - We can pass array of elements or array of field Object with ID and Text fields.\n */\n removeMultipleItems(item) {\n if (item.length) {\n for (let i = 0; i < item.length; i++) {\n this.removeItem(item[i]);\n }\n }\n }\n findParent(dataSource, id, callback, parent) {\n if (dataSource.hasOwnProperty(id) && callback(dataSource[id]) === true) {\n return extend({}, dataSource);\n }\n for (let i = 0; i < Object.keys(dataSource).length; i++) {\n if (dataSource[Object.keys(dataSource)[i]]\n && typeof dataSource[Object.keys(dataSource)[i]] === 'object') {\n const result = this.findParent(dataSource[Object.keys(dataSource)[i]], id, callback, dataSource);\n if (result != null) {\n if (!result.parent) {\n result.parent = parent;\n }\n return result;\n }\n }\n }\n return null;\n }\n // Module Required function\n getModuleName() {\n return 'listview';\n }\n requiredModules() {\n const modules = [];\n if (this.enableVirtualization) {\n modules.push({ args: [this], member: 'virtualization', name: 'Virtualization' });\n }\n return modules;\n }\n onListScroll(e) {\n let args = { originalEvent: e, scrollDirection: \"Bottom\", distanceY: this.element.scrollHeight - this.element.scrollTop };\n let currentScrollTop = this.element.scrollTop;\n if (currentScrollTop > this.previousScrollTop) {\n args.scrollDirection = \"Bottom\";\n args.distanceY = this.element.scrollHeight - this.element.clientHeight - this.element.scrollTop;\n this.trigger('scroll', args);\n }\n else if (this.previousScrollTop > currentScrollTop) {\n args.scrollDirection = \"Top\";\n args.distanceY = this.element.scrollTop;\n this.trigger('scroll', args);\n }\n this.previousScrollTop = currentScrollTop;\n }\n /**\n * Get the properties to be maintained in the persisted state.\n */\n getPersistData() {\n return this.addOnPersist(['cssClass', 'enableRtl', 'htmlAttributes',\n 'enable', 'fields', 'animation', 'headerTitle',\n 'sortOrder', 'showIcon', 'height', 'width', 'showCheckBox', 'checkBoxPosition', 'selectedId']);\n }\n};\n__decorate([\n Property('')\n], ListView.prototype, \"cssClass\", void 0);\n__decorate([\n Property(false)\n], ListView.prototype, \"enableVirtualization\", void 0);\n__decorate([\n Property({})\n], ListView.prototype, \"htmlAttributes\", void 0);\n__decorate([\n Property(true)\n], ListView.prototype, \"enable\", void 0);\n__decorate([\n Property([])\n], ListView.prototype, \"dataSource\", void 0);\n__decorate([\n Property()\n], ListView.prototype, \"query\", void 0);\n__decorate([\n Complex(ListBase.defaultMappedFields, FieldSettings)\n], ListView.prototype, \"fields\", void 0);\n__decorate([\n Property({ effect: 'SlideLeft', duration: 400, easing: 'ease' })\n], ListView.prototype, \"animation\", void 0);\n__decorate([\n Property('None')\n], ListView.prototype, \"sortOrder\", void 0);\n__decorate([\n Property(false)\n], ListView.prototype, \"showIcon\", void 0);\n__decorate([\n Property(false)\n], ListView.prototype, \"showCheckBox\", void 0);\n__decorate([\n Property('Left')\n], ListView.prototype, \"checkBoxPosition\", void 0);\n__decorate([\n Property('')\n], ListView.prototype, \"headerTitle\", void 0);\n__decorate([\n Property(false)\n], ListView.prototype, \"showHeader\", void 0);\n__decorate([\n Property(true)\n], ListView.prototype, \"enableHtmlSanitizer\", void 0);\n__decorate([\n Property('')\n], ListView.prototype, \"height\", void 0);\n__decorate([\n Property('')\n], ListView.prototype, \"width\", void 0);\n__decorate([\n Property(null)\n], ListView.prototype, \"template\", void 0);\n__decorate([\n Property(null)\n], ListView.prototype, \"headerTemplate\", void 0);\n__decorate([\n Property(null)\n], ListView.prototype, \"groupTemplate\", void 0);\n__decorate([\n Event()\n], ListView.prototype, \"select\", void 0);\n__decorate([\n Event()\n], ListView.prototype, \"actionBegin\", void 0);\n__decorate([\n Event()\n], ListView.prototype, \"actionComplete\", void 0);\n__decorate([\n Event()\n], ListView.prototype, \"actionFailure\", void 0);\n__decorate([\n Event()\n], ListView.prototype, \"scroll\", void 0);\nListView = __decorate([\n NotifyPropertyChanges\n], ListView);\nexport { ListView };\n","import { classNames } from './list-view';\nimport { EventHandler, append, isNullOrUndefined, detach, compile, formatUnit, select } from '@syncfusion/ej2-base';\nimport { ListBase } from '../common/list-base';\nimport { DataManager } from '@syncfusion/ej2-data';\nconst listElementCount = 1.5;\nconst windowElementCount = 3;\nexport class Virtualization {\n constructor(instance) {\n this.elementDifference = 0;\n this.listViewInstance = instance;\n }\n /**\n * For internal use only.\n *\n * @private\n */\n isNgTemplate() {\n return !isNullOrUndefined(this.listViewInstance.templateRef) && typeof this.listViewInstance.templateRef !== 'string';\n }\n /**\n * Checks if the platform is a Vue and its template property is a function type.\n *\n * @returns {boolean} indicating the result of the check\n */\n isVueFunctionTemplate() {\n return this.listViewInstance.isVue && typeof this.listViewInstance.template === 'function';\n }\n /**\n * For internal use only.\n *\n * @private\n */\n uiVirtualization() {\n this.wireScrollEvent(false);\n const curViewDS = this.listViewInstance.curViewDS;\n const firstDs = curViewDS.slice(0, 1);\n this.listViewInstance.ulElement = this.listViewInstance.curUL = ListBase.createList(\n // eslint-disable-next-line\n this.listViewInstance.createElement, firstDs, this.listViewInstance.listBaseOption, null, this.listViewInstance);\n this.listViewInstance.contentContainer = this.listViewInstance.createElement('div', { className: classNames.container });\n this.listViewInstance.element.appendChild(this.listViewInstance.contentContainer);\n this.listViewInstance.contentContainer.appendChild(this.listViewInstance.ulElement);\n this.listItemHeight = this.listViewInstance.ulElement.firstElementChild.getBoundingClientRect().height;\n this.expectedDomItemCount = this.ValidateItemCount(10000);\n this.domItemCount = this.ValidateItemCount(Object.keys(this.listViewInstance.curViewDS).length);\n this.uiFirstIndex = 0;\n this.uiLastIndex = this.domItemCount - 1;\n const otherDs = curViewDS.slice(1, this.domItemCount);\n const listItems = ListBase.createListItemFromJson(\n // eslint-disable-next-line\n this.listViewInstance.createElement, otherDs, this.listViewInstance.listBaseOption, null, null, this.listViewInstance);\n append(listItems, this.listViewInstance.ulElement);\n this.listViewInstance.liCollection = this.listViewInstance.curUL.querySelectorAll('li');\n this.topElement = this.listViewInstance.createElement('div');\n this.listViewInstance.ulElement.insertBefore(this.topElement, this.listViewInstance.ulElement.firstElementChild);\n this.bottomElement = this.listViewInstance.createElement('div');\n this.listViewInstance.ulElement.insertBefore(this.bottomElement, null);\n this.totalHeight = (Object.keys(curViewDS).length * this.listItemHeight) - (this.domItemCount * this.listItemHeight);\n this.topElement.style.height = 0 + 'px';\n this.bottomElement.style.height = this.totalHeight + 'px';\n this.topElementHeight = 0;\n this.bottomElementHeight = this.totalHeight;\n this.listDiff = 0;\n this.uiIndicesInitialization();\n }\n wireScrollEvent(destroy) {\n if (!destroy) {\n if (this.listViewInstance.isWindow) {\n this.onVirtualScroll = this.onVirtualUiScroll.bind(this);\n window.addEventListener('scroll', this.onVirtualScroll);\n }\n else {\n EventHandler.add(this.listViewInstance.element, 'scroll', this.onVirtualUiScroll, this);\n }\n }\n else {\n if (this.listViewInstance.isWindow === true) {\n window.removeEventListener('scroll', this.onVirtualScroll);\n window.removeEventListener('scroll', this.updateUl);\n }\n else {\n EventHandler.remove(this.listViewInstance.element, 'scroll', this.onVirtualUiScroll);\n EventHandler.remove(this.listViewInstance.element, 'scroll', this.updateUlContainer);\n }\n }\n }\n updateUlContainer(e) {\n let listDiff;\n const virtualElementContainer = this.listViewInstance.ulElement.querySelector('.' + classNames.virtualElementContainer);\n if (isNullOrUndefined(this.listViewInstance.liElementHeight)) {\n this.listViewInstance.updateLiElementHeight();\n }\n if (this.listViewInstance.isWindow) {\n // eslint-disable-next-line\n listDiff = Math.round(e.target.documentElement.scrollTop / this.listViewInstance.liElementHeight) - 2;\n }\n else {\n // eslint-disable-next-line\n listDiff = Math.round(e.target.scrollTop / this.listViewInstance.liElementHeight) - 2;\n }\n if (((listDiff - 1) * this.listViewInstance.liElementHeight) < 0) {\n virtualElementContainer.style.top = '0px';\n }\n else {\n virtualElementContainer.style.top = (listDiff) * this.listViewInstance.liElementHeight + 'px';\n }\n }\n ValidateItemCount(dataSourceLength) {\n const height = parseFloat(formatUnit(this.listViewInstance.height));\n let itemCount;\n if (this.listViewInstance.isWindow) {\n itemCount = Math.round((window.innerHeight / this.listItemHeight) * windowElementCount);\n }\n else {\n if (typeof this.listViewInstance.height === 'string' && this.listViewInstance.height.indexOf('%') !== -1) {\n // eslint-disable-next-line max-len\n itemCount = Math.round((this.listViewInstance.element.getBoundingClientRect().height / this.listItemHeight) * listElementCount);\n }\n else {\n itemCount = Math.round((height / this.listItemHeight) * listElementCount);\n }\n }\n if (itemCount > dataSourceLength) {\n itemCount = dataSourceLength;\n }\n return itemCount;\n }\n uiIndicesInitialization() {\n this.uiIndices = { 'activeIndices': [], 'disabledItemIndices': [], 'hiddenItemIndices': [] };\n const data = this.listViewInstance.curViewDS;\n for (let i = 0; i < data.length; i++) {\n if (this.listViewInstance.showCheckBox && data[i][this.listViewInstance.fields.isChecked]) {\n this.uiIndices.activeIndices.push(i);\n }\n // eslint-disable-next-line\n if (!isNullOrUndefined(data[i][this.listViewInstance.fields.enabled]) &&\n !data[i][this.listViewInstance.fields.enabled]) {\n // eslint-disable-next-line\n (this.uiIndices.disabledItemIndices.push(i));\n }\n }\n if (this.isNgTemplate()) {\n const items = this.listViewInstance.element.querySelectorAll('.' + classNames.listItem);\n for (let index = 0; index < items.length; index++) {\n items[index].context = this.listViewInstance.viewContainerRef.get(index).context;\n }\n }\n }\n refreshItemHeight() {\n if (this.listViewInstance.curViewDS.length) {\n const curViewDS = this.listViewInstance.curViewDS;\n this.listItemHeight = this.topElement.nextSibling.getBoundingClientRect().height;\n this.totalHeight = (Object.keys(curViewDS).length * this.listItemHeight) - (this.domItemCount * this.listItemHeight);\n this.bottomElementHeight = this.totalHeight;\n this.bottomElement.style.height = this.totalHeight + 'px';\n }\n }\n getscrollerHeight(startingHeight) {\n return this.listViewInstance.isWindow ? (((pageYOffset - startingHeight) <= 0) ? 0 :\n (pageYOffset - startingHeight)) : ((this.listViewInstance.element.scrollTop - startingHeight) <= 0) ? 0 :\n (this.listViewInstance.element.scrollTop - startingHeight);\n }\n onVirtualUiScroll(e) {\n let startingHeight;\n const curViewDS = this.listViewInstance.curViewDS;\n this.listItemHeight = select('.e-list-item', this.listViewInstance.element).getBoundingClientRect().height;\n this.totalHeight = (Object.keys(curViewDS).length * this.listItemHeight) - (this.domItemCount * this.listItemHeight);\n if (this.listViewInstance.isWindow) {\n startingHeight = this.listViewInstance.ulElement.getBoundingClientRect().top -\n document.documentElement.getBoundingClientRect().top;\n }\n else {\n startingHeight = this.listViewInstance.headerEle ? this.listViewInstance.headerEle.getBoundingClientRect().height : 0;\n }\n this.scrollPosition = isNullOrUndefined(this.scrollPosition) ? 0 : this.scrollPosition;\n const scroll = this.getscrollerHeight(startingHeight);\n this.topElementHeight = this.listItemHeight * Math.floor(scroll / this.listItemHeight);\n this.bottomElementHeight = this.totalHeight - this.topElementHeight;\n [this.topElementHeight, this.bottomElementHeight] = scroll <= this.totalHeight ?\n [this.topElementHeight, this.bottomElementHeight] : [this.totalHeight, 0];\n if (this.topElementHeight !== parseFloat(this.topElement.style.height)) {\n this.topElement.style.height = this.topElementHeight + 'px';\n this.bottomElement.style.height = this.bottomElementHeight + 'px';\n if (scroll > this.scrollPosition) {\n const listDiff = Math.round(((this.topElementHeight / this.listItemHeight) - this.listDiff));\n if (listDiff > (this.expectedDomItemCount + 5)) {\n this.onLongScroll(listDiff, true);\n }\n else {\n this.onNormalScroll(listDiff, true);\n }\n }\n else {\n const listDiff = Math.round((this.listDiff - (this.topElementHeight / this.listItemHeight)));\n if (listDiff > (this.expectedDomItemCount + 5)) {\n this.onLongScroll(listDiff, false);\n }\n else {\n this.onNormalScroll(listDiff, false);\n }\n }\n }\n this.listDiff = Math.round(this.topElementHeight / this.listItemHeight);\n if (typeof this.listViewInstance.onUIScrolled === 'function') {\n this.listViewInstance.onUIScrolled();\n }\n this.scrollPosition = scroll;\n }\n onLongScroll(listDiff, isScrollingDown) {\n let index = isScrollingDown ? (this.uiFirstIndex + listDiff) : (this.uiFirstIndex - listDiff);\n const elements = this.listViewInstance.ulElement.querySelectorAll('li');\n for (let i = 0; i < elements.length; i++) {\n this.updateUI(elements[i], index);\n index++;\n }\n this.uiLastIndex = isScrollingDown ? (this.uiLastIndex + listDiff) : (this.uiLastIndex - listDiff);\n this.uiFirstIndex = isScrollingDown ? (this.uiFirstIndex + listDiff) : (this.uiFirstIndex - listDiff);\n }\n onNormalScroll(listDiff, isScrollingDown) {\n if (isScrollingDown) {\n for (let i = 0; i < listDiff; i++) {\n const index = ++this.uiLastIndex;\n this.updateUI(this.topElement.nextElementSibling, index, this.bottomElement);\n this.uiFirstIndex++;\n }\n }\n else {\n for (let i = 0; i < listDiff; i++) {\n const index = --this.uiFirstIndex;\n const target = this.topElement.nextSibling;\n this.updateUI(this.bottomElement.previousElementSibling, index, target);\n this.uiLastIndex--;\n }\n }\n }\n updateUiContent(element, index) {\n // eslint-disable-next-line\n const curViewDs = this.listViewInstance.curViewDS;\n if (typeof this.listViewInstance.dataSource[0] === 'string' ||\n typeof this.listViewInstance.dataSource[0] === 'number') {\n element.dataset.uid = ListBase.generateId();\n element.getElementsByClassName(classNames.listItemText)[0].innerHTML =\n this.listViewInstance.curViewDS[index].toString();\n }\n else {\n // eslint-disable-next-line\n element.dataset.uid = (curViewDs[index][this.listViewInstance.fields.id]) ?\n // eslint-disable-next-line\n (curViewDs[index][this.listViewInstance.fields.id]) : ListBase.generateId();\n element.getElementsByClassName(classNames.listItemText)[0].innerHTML =\n // eslint-disable-next-line\n (curViewDs[index][this.listViewInstance.fields.text]);\n }\n if (this.listViewInstance.showIcon) {\n if (element.querySelector('.' + classNames.listIcon)) {\n detach(element.querySelector('.' + classNames.listIcon));\n }\n if (this.listViewInstance.curViewDS[index][this.listViewInstance.fields.iconCss]) {\n const textContent = element.querySelector('.' + classNames.textContent);\n const curViewDS = this.listViewInstance.curViewDS[index];\n const iconCss = curViewDS[this.listViewInstance.fields.iconCss].toString();\n const target = this.listViewInstance.createElement('div', {\n className: classNames.listIcon + ' ' + iconCss\n });\n textContent.insertBefore(target, element.querySelector('.' + classNames.listItemText));\n }\n }\n if (this.listViewInstance.showCheckBox && this.listViewInstance.fields.groupBy) {\n if (!this.checkListWrapper) {\n this.checkListWrapper = this.listViewInstance.curUL.querySelector('.' + classNames.checkboxWrapper).cloneNode(true);\n }\n const textContent = element.querySelector('.' + classNames.textContent);\n if (this.listViewInstance.curViewDS[index].isHeader) {\n if (element.querySelector('.' + classNames.checkboxWrapper)) {\n element.classList.remove(classNames.checklist);\n textContent.classList.remove(classNames.checkbox);\n detach(element.querySelector('.' + classNames.checkboxWrapper));\n }\n }\n else {\n if (!element.querySelector('.' + classNames.checkboxWrapper)) {\n element.classList.add(classNames.checklist);\n textContent.classList.add(classNames.checkbox);\n if (this.listViewInstance.checkBoxPosition === 'Left') {\n textContent.classList.add('e-checkbox-left');\n }\n else {\n textContent.classList.add('e-checkbox-right');\n }\n textContent.append(this.checkListWrapper.cloneNode(true));\n }\n }\n }\n }\n changeElementAttributes(element, index) {\n element.classList.remove(classNames.disable);\n if (this.uiIndices.disabledItemIndices.length && this.uiIndices.disabledItemIndices.indexOf(index) !== -1) {\n element.classList.add(classNames.disable);\n }\n element.style.display = '';\n if (this.uiIndices.hiddenItemIndices.length && this.uiIndices.hiddenItemIndices.indexOf(index) !== -1) {\n element.style.display = 'none';\n }\n if (this.listViewInstance.showCheckBox) {\n const checklistElement = element.querySelector('.' + classNames.checkboxWrapper);\n element.classList.remove(classNames.selected);\n element.classList.remove(classNames.focused);\n if (checklistElement) {\n checklistElement.removeAttribute('aria-checked');\n checklistElement.firstElementChild.classList.remove(classNames.checked);\n }\n if (this.uiIndices.activeIndices.length && this.uiIndices.activeIndices.indexOf(index) !== -1 &&\n !this.listViewInstance.curUL.querySelector(classNames.selected)) {\n element.classList.add(classNames.selected);\n checklistElement.firstElementChild.classList.add(classNames.checked);\n checklistElement.setAttribute('aria-checked', 'true');\n if (this.activeIndex === index) {\n element.classList.add(classNames.focused);\n }\n }\n }\n else {\n element.classList.remove(classNames.selected);\n element.removeAttribute('aria-selected');\n if (!isNullOrUndefined(this.activeIndex) && this.activeIndex === index &&\n !this.listViewInstance.curUL.querySelector(classNames.selected)) {\n element.classList.add(classNames.selected);\n element.setAttribute('aria-selected', 'true');\n }\n }\n if (this.listViewInstance.fields.groupBy) {\n if (this.listViewInstance.curViewDS[index].isHeader) {\n if (element.classList.contains(classNames.listItem)) {\n element.classList.remove(classNames.listItem);\n element.setAttribute('role', 'group');\n element.classList.add(classNames.groupListItem);\n }\n }\n else {\n if (element.classList.contains(classNames.groupListItem)) {\n element.classList.remove(classNames.groupListItem);\n element.setAttribute('role', 'listitem');\n element.classList.add(classNames.listItem);\n }\n }\n }\n }\n findDSAndIndexFromId(ds, fields) {\n const resultJSON = {};\n fields = this.listViewInstance.getElementUID(fields);\n if (!isNullOrUndefined(fields)) {\n ds.some((data, index) => {\n if ((fields[this.listViewInstance.fields.id] &&\n // eslint-disable-next-line\n fields[this.listViewInstance.fields.id]\n // eslint-disable-next-line\n === (data[this.listViewInstance.fields.id] && data[this.listViewInstance.fields.id]) || fields === data)) {\n resultJSON.index = index;\n resultJSON.data = data;\n return true;\n }\n else {\n return false;\n }\n });\n }\n return resultJSON;\n }\n getSelectedItems() {\n if (!isNullOrUndefined(this.activeIndex) || (this.listViewInstance.showCheckBox && this.uiIndices.activeIndices.length)) {\n const dataCollection = [];\n const textCollection = [];\n if (typeof this.listViewInstance.dataSource[0] === 'string' ||\n typeof this.listViewInstance.dataSource[0] === 'number') {\n const curViewDS = this.listViewInstance.curViewDS;\n if (this.listViewInstance.showCheckBox) {\n const indices = this.uiIndices.activeIndices;\n for (let i = 0; i < indices.length; i++) {\n dataCollection.push(curViewDS[indices[i]]);\n }\n return {\n text: dataCollection,\n // eslint-disable-next-line\n data: dataCollection,\n index: this.uiIndices.activeIndices.map((index) => this.listViewInstance.dataSource.indexOf(curViewDS[index]))\n };\n }\n else {\n return {\n text: curViewDS[this.activeIndex],\n data: curViewDS[this.activeIndex],\n index: this.listViewInstance.dataSource.indexOf(curViewDS[this.activeIndex])\n };\n }\n }\n else {\n const curViewDS = this.listViewInstance.curViewDS;\n const text = this.listViewInstance.fields.text;\n if (this.listViewInstance.showCheckBox) {\n const indexArray = this.uiIndices.activeIndices;\n for (let i = 0; i < indexArray.length; i++) {\n textCollection.push(curViewDS[indexArray[i]][`${text}`]);\n // eslint-disable-next-line\n dataCollection.push(curViewDS[indexArray[i]]);\n }\n // eslint-disable-next-line\n const dataSource = this.listViewInstance.dataSource instanceof DataManager\n ? curViewDS : this.listViewInstance.dataSource;\n return {\n text: textCollection,\n // eslint-disable-next-line\n data: dataCollection,\n index: this.uiIndices.activeIndices.map((index) => dataSource.indexOf(curViewDS[index]))\n };\n }\n else {\n // eslint-disable-next-line\n const dataSource = this.listViewInstance.dataSource instanceof DataManager\n ? curViewDS : this.listViewInstance.dataSource;\n return {\n text: curViewDS[this.activeIndex][this.listViewInstance.fields.text],\n // eslint-disable-next-line\n data: curViewDS[this.activeIndex],\n index: dataSource.indexOf(curViewDS[this.activeIndex])\n };\n }\n }\n }\n else {\n return undefined;\n }\n }\n selectItem(obj) {\n // eslint-disable-next-line\n const resutJSON = this.findDSAndIndexFromId(this.listViewInstance.curViewDS, obj);\n if (Object.keys(resutJSON).length) {\n const isSelected = this.activeIndex === resutJSON.index;\n let isChecked;\n this.activeIndex = resutJSON.index;\n if (this.listViewInstance.showCheckBox) {\n if (this.uiIndices.activeIndices.indexOf(resutJSON.index) === -1) {\n isChecked = true;\n this.uiIndices.activeIndices.push(resutJSON.index);\n }\n else {\n isChecked = false;\n this.uiIndices.activeIndices.splice(this.uiIndices.activeIndices.indexOf(resutJSON.index), 1);\n }\n if (this.listViewInstance.curUL.querySelector('.' + classNames.focused)) {\n this.listViewInstance.curUL.querySelector('.' + classNames.focused).classList.remove(classNames.focused);\n }\n }\n if (this.listViewInstance.getLiFromObjOrElement(obj)) {\n if (this.listViewInstance.showCheckBox) {\n this.listViewInstance.setCheckboxLI(this.listViewInstance.getLiFromObjOrElement(obj));\n }\n else {\n this.listViewInstance.setSelectLI(this.listViewInstance.getLiFromObjOrElement(obj));\n }\n }\n else {\n // eslint-disable-next-line\n let eventArgs;\n if (typeof this.listViewInstance.dataSource[0] === 'string' ||\n typeof this.listViewInstance.dataSource[0] === 'number') {\n eventArgs = {\n text: this.listViewInstance.curViewDS[this.activeIndex],\n data: this.listViewInstance.curViewDS[this.activeIndex],\n index: this.activeIndex\n };\n }\n else {\n const curViewDS = this.listViewInstance.curViewDS;\n eventArgs = {\n text: curViewDS[this.activeIndex][this.listViewInstance.fields.text],\n data: curViewDS[this.activeIndex],\n index: this.activeIndex\n };\n }\n if (this.listViewInstance.showCheckBox) {\n eventArgs.isChecked = isChecked;\n this.listViewInstance.trigger('select', eventArgs);\n }\n else if (!isSelected) {\n this.listViewInstance.removeSelect();\n this.listViewInstance.trigger('select', eventArgs);\n }\n }\n }\n else if (isNullOrUndefined(obj) && !this.listViewInstance.showCheckBox) {\n this.listViewInstance.removeSelect();\n this.activeIndex = undefined;\n }\n }\n enableItem(obj) {\n // eslint-disable-next-line\n const resutJSON = this.findDSAndIndexFromId(this.listViewInstance.curViewDS, obj);\n if (Object.keys(resutJSON).length) {\n this.uiIndices.disabledItemIndices.splice(this.uiIndices.disabledItemIndices.indexOf(resutJSON.index), 1);\n }\n }\n disableItem(obj) {\n // eslint-disable-next-line\n const resutJSON = this.findDSAndIndexFromId(this.listViewInstance.curViewDS, obj);\n if (Object.keys(resutJSON).length && this.uiIndices.disabledItemIndices.indexOf(resutJSON.index) === -1) {\n this.uiIndices.disabledItemIndices.push(resutJSON.index);\n }\n }\n showItem(obj) {\n // eslint-disable-next-line\n const resutJSON = this.findDSAndIndexFromId(this.listViewInstance.curViewDS, obj);\n if (Object.keys(resutJSON).length) {\n this.uiIndices.hiddenItemIndices.splice(this.uiIndices.hiddenItemIndices.indexOf(resutJSON.index), 1);\n }\n }\n hideItem(obj) {\n // eslint-disable-next-line\n const resutJSON = this.findDSAndIndexFromId(this.listViewInstance.curViewDS, obj);\n if (Object.keys(resutJSON).length && this.uiIndices.hiddenItemIndices.indexOf(resutJSON.index) === -1) {\n this.uiIndices.hiddenItemIndices.push(resutJSON.index);\n }\n }\n removeItem(obj) {\n let dataSource;\n const curViewDS = this.listViewInstance.curViewDS;\n // eslint-disable-next-line\n const resutJSON = this.findDSAndIndexFromId(curViewDS, obj);\n if (Object.keys(resutJSON).length) {\n dataSource = resutJSON.data;\n if (curViewDS[resutJSON.index - 1] &&\n curViewDS[resutJSON.index - 1].isHeader &&\n (curViewDS[resutJSON.index - 1])\n .items.length === 1) {\n this.removeUiItem(resutJSON.index - 1);\n this.removeUiItem(resutJSON.index - 1);\n }\n else {\n this.removeUiItem(resutJSON.index);\n }\n }\n const listDataSource = this.listViewInstance.dataSource instanceof DataManager\n ? this.listViewInstance.localData : this.listViewInstance.dataSource;\n const index = listDataSource.indexOf(dataSource);\n if (index !== -1) {\n listDataSource.splice(index, 1);\n this.listViewInstance.setViewDataSource(listDataSource);\n }\n // recollect all the list item into collection\n this.listViewInstance.liCollection =\n this.listViewInstance.curUL.querySelectorAll('li');\n }\n // eslint-disable-next-line\n setCheckboxLI(li, e) {\n const index = Array.prototype.indexOf.call(this.listViewInstance.curUL.querySelectorAll('li'), li) + this.uiFirstIndex;\n this.activeIndex = Array.prototype.indexOf.call(this.listViewInstance.curUL.querySelectorAll('li'), li) + this.uiFirstIndex;\n if (li.classList.contains(classNames.selected)) {\n if (this.uiIndices.activeIndices.indexOf(index) === -1) {\n this.uiIndices.activeIndices.push(index);\n }\n }\n else {\n this.uiIndices.activeIndices.splice(this.uiIndices.activeIndices.indexOf(index), 1);\n }\n }\n // eslint-disable-next-line\n setSelectLI(li, e) {\n this.activeIndex = Array.prototype.indexOf.call(this.listViewInstance.curUL.querySelectorAll('li'), li) + this.uiFirstIndex;\n }\n checkedItem(checked) {\n if (checked) {\n this.uiIndices.activeIndices = [];\n this.activeIndex = undefined;\n const data = this.listViewInstance.curViewDS;\n for (let index = 0; index < data.length; index++) {\n if (!data[index].isHeader) {\n this.uiIndices.activeIndices.push(index);\n }\n }\n }\n else {\n this.activeIndex = undefined;\n this.uiIndices.activeIndices = [];\n }\n }\n addUiItem(index) {\n // virtually new add list item based on the scollbar position\n // if the scroll bar is at the top, just pretend the new item has been added since no UI\n // change is required for the item that has been added at last but when scroll bar is at the bottom\n // just detach top and inject into bottom to mimic new item is added\n const curViewDs = this.listViewInstance.curViewDS;\n this.changeUiIndices(index, true);\n if (this.activeIndex && this.activeIndex >= index) {\n this.activeIndex++;\n }\n if (this.listViewInstance.showCheckBox &&\n curViewDs[index][this.listViewInstance.fields.isChecked]) {\n this.uiIndices.activeIndices.push(index);\n }\n if (!parseFloat(this.bottomElement.style.height) && !parseFloat(this.topElement.style.height)) {\n this.bottomElement.style.height = parseFloat(this.bottomElement.style.height) + this.listItemHeight + 'px';\n }\n if (parseFloat(this.bottomElement.style.height)) {\n const liItem = this.listViewInstance.curUL.lastElementChild.previousSibling;\n const target = this.listViewInstance.getLiFromObjOrElement(curViewDs[index + 1]) ||\n this.listViewInstance.getLiFromObjOrElement(curViewDs[index + 2]);\n if (target) {\n this.bottomElement.style.height = parseFloat(this.bottomElement.style.height) + this.listItemHeight + 'px';\n this.updateUI(liItem, index, target);\n }\n }\n else {\n const liItem = this.listViewInstance.curUL.firstElementChild.nextSibling;\n let target;\n if ((Object.keys(this.listViewInstance.curViewDS).length - 1) === index) {\n target = this.listViewInstance.curUL.lastElementChild;\n }\n else {\n target = this.listViewInstance.getLiFromObjOrElement(curViewDs[index + 1]) ||\n this.listViewInstance.getLiFromObjOrElement(curViewDs[index + 2]);\n }\n this.topElement.style.height = parseFloat(this.topElement.style.height) + this.listItemHeight + 'px';\n this.uiFirstIndex++;\n this.uiLastIndex++;\n if (target) {\n this.updateUI(liItem, index, target);\n if (this.listViewInstance.isWindow === true) {\n window.scrollTo(0, (pageYOffset + this.listItemHeight));\n }\n else {\n this.listViewInstance.element.scrollTop += this.listItemHeight;\n }\n }\n }\n this.totalHeight += this.listItemHeight;\n this.listDiff = Math.round(parseFloat(this.topElement.style.height) / this.listItemHeight);\n }\n removeUiItem(index) {\n this.totalHeight -= this.listItemHeight;\n const curViewDS = this.listViewInstance.curViewDS[index];\n const liItem = this.listViewInstance.getLiFromObjOrElement(curViewDS);\n this.listViewInstance.curViewDS.splice(index, 1);\n if (this.activeIndex && this.activeIndex >= index) {\n this.activeIndex--;\n }\n if (liItem) {\n if (this.domItemCount > Object.keys(this.listViewInstance.curViewDS).length) {\n detach(liItem);\n this.domItemCount--;\n this.uiLastIndex--;\n this.totalHeight = 0;\n }\n else {\n if (liItem.classList.contains(classNames.disable)) {\n liItem.classList.remove(classNames.disable);\n this.uiIndices.disabledItemIndices.splice(this.uiIndices.disabledItemIndices.indexOf(index), 1);\n }\n if (liItem.style.display === 'none') {\n liItem.style.display = '';\n this.uiIndices.hiddenItemIndices.splice(this.uiIndices.hiddenItemIndices.indexOf(index), 1);\n }\n if (this.listViewInstance.showCheckBox && liItem.classList.contains(classNames.selected)) {\n this.listViewInstance.removeSelect();\n this.uiIndices.activeIndices.splice(this.uiIndices.activeIndices.indexOf(index), 1);\n const checklistElement = liItem.querySelector('.' + classNames.checkboxWrapper);\n checklistElement.removeAttribute('aria-checked');\n checklistElement.firstElementChild.classList.remove(classNames.checked);\n if (liItem.classList.contains(classNames.focused)) {\n liItem.classList.remove(classNames.focused);\n this.activeIndex = undefined;\n }\n }\n else if (liItem.classList.contains(classNames.selected)) {\n this.listViewInstance.removeSelect();\n this.activeIndex = undefined;\n }\n if (!parseFloat(this.bottomElement.style.height) && !parseFloat(this.topElement.style.height)) {\n this.updateUI(liItem, this.uiLastIndex, this.bottomElement);\n }\n else if (parseFloat(this.bottomElement.style.height)) {\n this.bottomElement.style.height = parseFloat(this.bottomElement.style.height) - this.listItemHeight + 'px';\n this.updateUI(liItem, this.uiLastIndex, this.bottomElement);\n }\n else {\n this.topElement.style.height = parseFloat(this.topElement.style.height) - this.listItemHeight + 'px';\n this.updateUI(liItem, (this.uiFirstIndex - 1), this.topElement.nextSibling);\n this.uiLastIndex--;\n this.uiFirstIndex--;\n }\n }\n }\n this.changeUiIndices(index, false);\n this.listDiff = Math.round(parseFloat(this.topElement.style.height) / this.listItemHeight);\n }\n changeUiIndices(index, increment) {\n const keys = Object.keys(this.uiIndices);\n for (let ind = 0; ind < keys.length; ind++) {\n this.uiIndices[keys[ind]] = this.uiIndices[keys[ind]].map((i) => {\n if (i >= index) {\n return increment ? ++i : --i;\n }\n else {\n return i;\n }\n });\n }\n }\n addItem(data, fields, dataSource, index) {\n for (let i = 0; i < data.length; i++) {\n const currentItem = data[i];\n // push the given data to main data array\n dataSource = this.listViewInstance.addItemAtIndex(index, dataSource, currentItem);\n // recalculate all the group data or other datasource related things\n this.listViewInstance.setViewDataSource(dataSource);\n // render list items for first time due to no datasource present earlier\n if (!this.domItemCount) {\n // fresh rendering for first time\n if ((this.listViewInstance.template || this.listViewInstance.groupTemplate) && !this.isNgTemplate()) {\n this.listViewInstance.listBaseOption.template = null;\n this.listViewInstance.listBaseOption.groupTemplate = null;\n this.listViewInstance.listBaseOption.itemCreated = this.createUIItem.bind(this);\n }\n this.uiVirtualization();\n // when expected expected DOM count doesn't meet the condition we need to create and inject new item into DOM\n }\n else if (this.domItemCount < this.expectedDomItemCount) {\n const ds = this.listViewInstance.findItemFromDS(dataSource, fields);\n if (ds instanceof Array) {\n if (this.listViewInstance.ulElement) {\n let index = this.listViewInstance.curViewDS.indexOf(currentItem);\n // inject new list item into DOM\n this.createAndInjectNewItem(currentItem, index);\n // check for group header item\n const curViewDS = this.listViewInstance.curViewDS[index - 1];\n if (curViewDS && curViewDS.isHeader && curViewDS.items.length === 1) {\n // target group item index in datasource\n --index;\n // inject new group header into DOM for previously created list item\n this.createAndInjectNewItem(curViewDS, index);\n }\n }\n // recollect all the list item into collection\n this.listViewInstance.liCollection =\n this.listViewInstance.curUL.querySelectorAll('li');\n }\n }\n else {\n // eslint-disable-next-line\n const index = this.listViewInstance.curViewDS.indexOf(currentItem);\n // virtually new add list item based on the scollbar position\n this.addUiItem(index);\n // check for group header item needs to be added\n const curViewDS = this.listViewInstance.curViewDS[index - 1];\n if (curViewDS && curViewDS.isHeader && curViewDS.items.length === 1) {\n this.addUiItem(index - 1);\n }\n }\n }\n }\n createAndInjectNewItem(itemData, index) {\n // generate li item for given datasource\n let target;\n const li = ListBase.createListItemFromJson(this.listViewInstance.createElement, \n // eslint-disable-next-line\n [itemData], this.listViewInstance.listBaseOption, null, null, this.listViewInstance);\n // check for target element whether to insert before last item or group item\n if ((Object.keys(this.listViewInstance.curViewDS).length - 1) === index) {\n target = this.listViewInstance.curUL.lastElementChild;\n }\n else {\n // target group header's first child item to append its header\n target = this.listViewInstance.getLiFromObjOrElement(this.listViewInstance.curViewDS[index + 1]) ||\n this.listViewInstance.getLiFromObjOrElement(this.listViewInstance.curViewDS[index + 2]);\n }\n if (this.listViewInstance.fields.groupBy\n && this.listViewInstance.curViewDS[index + 1]\n && this.listViewInstance.curViewDS[index + 1].isHeader) {\n const targetEle = this.listViewInstance.getLiFromObjOrElement(this.listViewInstance.curViewDS[index - 1]);\n if (targetEle) {\n target = targetEle.nextElementSibling;\n }\n }\n // insert before the target element\n this.listViewInstance.ulElement.insertBefore(li[0], target);\n // increment internal DOM count, last index count for new element\n this.domItemCount++;\n if (this.bottomElementHeight <= 0) {\n this.uiLastIndex++;\n }\n // recalculate the current item height, to avoid jumpy scroller\n this.refreshItemHeight();\n }\n createUIItem(args) {\n if (!args.item.classList.contains('e-list-group-item')) {\n this.templateData = args.curData.isHeader ? args.curData.items[0] :\n args.curData;\n if (this.listViewInstance.showCheckBox) {\n // eslint-disable-next-line\n this.listViewInstance.renderCheckbox(args);\n if ((!isNullOrUndefined(this.listViewInstance.virtualCheckBox)) &&\n (!isNullOrUndefined(this.listViewInstance.virtualCheckBox.outerHTML))) {\n const div = document.createElement('div');\n const commonTemplate = '<div class=\"e-text-content\" role=\"presentation\"> ' +\n '<span class=\"e-list-text\"> ${' + this.listViewInstance.fields.text + '} </span></div>';\n const templateFunction = compile(this.listViewInstance.template || commonTemplate, this.listViewInstance);\n const nodes = templateFunction(this.templateData, this.listViewInstance);\n if (this.listViewInstance.template && this.listViewInstance.isReact) {\n this.listViewInstance.renderReactTemplates();\n }\n [].slice.call(nodes).forEach((ele) => {\n div.appendChild(ele);\n });\n if (div.children && div.children[0]) {\n div.children[0].classList.add('e-checkbox');\n if (this.listViewInstance.checkBoxPosition === 'Left') {\n div.children[0].classList.add('e-checkbox-left');\n }\n else {\n div.children[0].classList.add('e-checkbox-right');\n }\n if (this.listViewInstance.checkBoxPosition === 'Left') {\n div.children[0].insertBefore(this.listViewInstance.virtualCheckBox, div.childNodes[0].children[0]);\n }\n else {\n div.children[0].appendChild(this.listViewInstance.virtualCheckBox);\n }\n while (args.item.lastChild) {\n args.item.removeChild(args.item.lastChild);\n }\n [].slice.call(div.children).forEach((ele) => {\n args.item.appendChild(ele);\n });\n }\n }\n }\n }\n }\n reRenderUiVirtualization() {\n this.wireScrollEvent(true);\n if (this.listViewInstance.contentContainer) {\n detach(this.listViewInstance.contentContainer);\n }\n this.listViewInstance.preRender();\n // resetting the dom count to 0, to avoid edge case of dataSource suddenly becoming zero\n // and then manually adding item using addItem API\n this.domItemCount = 0;\n this.listViewInstance.header();\n this.listViewInstance.setLocalData();\n }\n updateUI(element, index, targetElement) {\n const onChange = this.isNgTemplate() ? this.onNgChange : this.onChange;\n if (this.listViewInstance.template || this.listViewInstance.groupTemplate) {\n const curViewDS = this.listViewInstance.curViewDS[index];\n // eslint-disable-next-line\n element.dataset.uid = (curViewDS[this.listViewInstance.fields.id]) ?\n // eslint-disable-next-line\n (curViewDS[this.listViewInstance.fields.id]) : ListBase.generateId();\n onChange(curViewDS, element, this);\n }\n else {\n this.updateUiContent(element, index);\n }\n this.changeElementAttributes(element, index);\n if (targetElement) {\n this.listViewInstance.ulElement.insertBefore(element, targetElement);\n }\n }\n /**\n * Handles the UI change in vue for the list view.\n *\n * @param {DataSource} newData - The new data source for the list view.\n * @param {ElementContext} listElement - The HTML element context for the list view.\n * @param {Virtualization} virtualThis - The virtualization context for the list view.\n * @returns {void}\n */\n onChange(newData, listElement, virtualThis) {\n const liItem = ListBase.createListItemFromJson(virtualThis.listViewInstance.createElement, \n // eslint-disable-next-line\n [newData], virtualThis.listViewInstance.listBaseOption, null, null, virtualThis.listViewInstance);\n if (virtualThis.listViewInstance.isReact) {\n virtualThis.listViewInstance.renderReactTemplates();\n }\n while (listElement.lastChild) {\n listElement.removeChild(listElement.lastChild);\n }\n [].slice.call(liItem[0].children).forEach((ele) => {\n listElement.appendChild(ele);\n });\n }\n onNgChange(newData, listElement, virtualThis) {\n // compile given target element with template for new data\n const templateCompiler = compile(virtualThis.listViewInstance.template);\n const resultElement = templateCompiler(newData);\n while (listElement.lastChild) {\n listElement.removeChild(listElement.lastChild);\n }\n listElement.appendChild(resultElement[0]);\n }\n getModuleName() {\n return 'virtualization';\n }\n destroy() {\n this.wireScrollEvent(true);\n this.topElement = null;\n this.bottomElement = null;\n }\n}\n","/**\n * Listview Component\n */\nexport * from './list-view';\nexport * from './virtualization';\n","/**\n * Listview Component\n */\nexport * from './list-base';\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar Sortable_1;\nimport { Base, Event, getUniqueID, NotifyPropertyChanges, Property } from '@syncfusion/ej2-base';\nimport { closest, Draggable, remove, compareElementParent } from '@syncfusion/ej2-base';\nimport { addClass, isNullOrUndefined, getComponent, isBlazor, EventHandler } from '@syncfusion/ej2-base';\n/**\n * Sortable Module provides support to enable sortable functionality in Dom Elements.\n * ```html\n * <div id=\"sortable\">\n * <div>Item 1</div>\n * <div>Item 2</div>\n * <div>Item 3</div>\n * <div>Item 4</div>\n * <div>Item 5</div>\n * </div>\n * ```\n * ```typescript\n * let ele: HTMLElement = document.getElementById('sortable');\n * let sortObj: Sortable = new Sortable(ele, {});\n * ```\n */\nlet Sortable = Sortable_1 = class Sortable extends Base {\n constructor(element, options) {\n super(options, element);\n this.getHelper = (e) => {\n // eslint-disable-next-line prefer-const\n let target = this.getSortableElement(e.sender.target);\n if (!this.isValidTarget(target, this)) {\n return false;\n }\n let element;\n if (this.helper) {\n element = this.helper({ sender: target, element: e.element });\n }\n else {\n element = target.cloneNode(true);\n element.style.width = `${target.offsetWidth}px`;\n element.style.height = `${target.offsetHeight}px`;\n }\n addClass([element], ['e-sortableclone']);\n document.body.appendChild(element);\n return element;\n };\n // eslint-disable-next-line\n this.onDrag = (e) => {\n if (!e.target) {\n return;\n }\n this.trigger('drag', { event: e.event, element: this.element, target: e.target });\n let newInst = this.getSortableInstance(e.target);\n let target = this.getSortableElement(e.target, newInst);\n if ((this.isValidTarget(target, newInst) || (e.target && typeof e.target.className === 'string' && e.target.className.indexOf('e-list-group-item') > -1)) && (this.curTarget !== target ||\n !isNullOrUndefined(newInst.placeHolder)) && (newInst.placeHolderElement ? newInst.placeHolderElement !== e.target : true)) {\n if (e.target.classList.contains('e-list-group-item')) {\n target = e.target;\n }\n this.curTarget = target;\n if (this.target === target) {\n return;\n }\n let oldIdx = this.getIndex(newInst.placeHolderElement, newInst);\n const placeHolder = this.getPlaceHolder(target, newInst);\n let newIdx;\n if (placeHolder) {\n oldIdx = isNullOrUndefined(oldIdx) ? this.getIndex(this.target) : oldIdx;\n newIdx = this.getIndex(target, newInst, e.event);\n const isPlaceHolderPresent = this.isPlaceHolderPresent(newInst);\n if (isPlaceHolderPresent && oldIdx === newIdx) {\n return;\n }\n if (isPlaceHolderPresent) {\n remove(newInst.placeHolderElement);\n }\n newInst.placeHolderElement = placeHolder;\n if (e.target && typeof e.target.className === 'string' && e.target.className.indexOf('e-list-group-item') > -1) {\n newInst.element.insertBefore(newInst.placeHolderElement, newInst.element.children[newIdx]);\n }\n else if (newInst.element !== this.element && newIdx === newInst.element.childElementCount) {\n newInst.element.appendChild(newInst.placeHolderElement);\n }\n else {\n newInst.element.insertBefore(newInst.placeHolderElement, newInst.element.children[newIdx]);\n }\n this.refreshDisabled(oldIdx, newIdx, newInst);\n }\n else {\n oldIdx = isNullOrUndefined(oldIdx) ? this.getIndex(this.target) :\n this.getIndex(target, newInst) < oldIdx || !oldIdx ? oldIdx : oldIdx - 1;\n newIdx = this.getIndex(target, newInst);\n const idx = newInst.element !== this.element ? newIdx : oldIdx < newIdx ? newIdx + 1 : newIdx;\n this.updateItemClass(newInst);\n newInst.element.insertBefore(this.target, newInst.element.children[idx]);\n this.refreshDisabled(oldIdx, newIdx, newInst);\n this.curTarget = this.target;\n this.trigger('drop', {\n droppedElement: this.target, element: newInst.element, previousIndex: oldIdx, currentIndex: newIdx,\n target: e.target, helper: document.getElementsByClassName('e-sortableclone')[0], event: e.event, scope: this.scope\n });\n }\n }\n else if (this.curTarget !== this.target && this.scope && this.curTarget !== target && !isNullOrUndefined(newInst.placeHolder)) {\n remove(this.getSortableInstance(this.curTarget).placeHolderElement);\n this.curTarget = this.target;\n }\n newInst = this.getSortableInstance(this.curTarget);\n if (isNullOrUndefined(target) && e.target !== newInst.placeHolderElement) {\n if (this.isPlaceHolderPresent(newInst)) {\n this.removePlaceHolder(newInst);\n }\n }\n else {\n const placeHolders = [].slice.call(document.getElementsByClassName('e-sortable-placeholder'));\n let inst;\n placeHolders.forEach((placeHolder) => {\n inst = this.getSortableInstance(placeHolder);\n if (inst.element && inst !== newInst) {\n this.removePlaceHolder(inst);\n }\n });\n }\n };\n // eslint-disable-next-line\n this.onDragStart = (e) => {\n this.target = this.getSortableElement(e.target);\n let cancelDrag = false;\n this.target.classList.add('e-grabbed');\n this.curTarget = this.target;\n e.helper = document.getElementsByClassName('e-sortableclone')[0];\n const args = { cancel: false, element: this.element, target: this.target };\n this.trigger('beforeDragStart', args, (observedArgs) => {\n if (observedArgs.cancel) {\n cancelDrag = observedArgs.cancel;\n this.onDragStop(e);\n }\n });\n if (cancelDrag) {\n return;\n }\n if (isBlazor) {\n this.trigger('dragStart', {\n event: e.event, element: this.element, target: this.target,\n bindEvents: e.bindEvents, dragElement: e.dragElement\n });\n }\n else {\n this.trigger('dragStart', { event: e.event, element: this.element, target: this.target });\n }\n };\n // eslint-disable-next-line\n this.onDragStop = (e) => {\n let dropInst = this.getSortableInstance(this.curTarget);\n let prevIdx;\n let curIdx;\n let handled;\n prevIdx = this.getIndex(this.target);\n const isPlaceHolderPresent = this.isPlaceHolderPresent(dropInst);\n if (isPlaceHolderPresent) {\n const curIdx = this.getIndex(dropInst.placeHolderElement, dropInst);\n const args = {\n previousIndex: prevIdx, currentIndex: curIdx, target: e.target, droppedElement: this.target,\n helper: e.helper, cancel: false, handled: false\n };\n this.trigger('beforeDrop', args, (observedArgs) => {\n if (!observedArgs.cancel) {\n handled = observedArgs.handled;\n this.updateItemClass(dropInst);\n if (observedArgs.handled) {\n const ele = this.target.cloneNode(true);\n this.target.classList.remove('e-grabbed');\n this.target = ele;\n }\n dropInst.element.insertBefore(this.target, dropInst.placeHolderElement);\n const curIdx = this.getIndex(this.target, dropInst);\n prevIdx = this === dropInst && (prevIdx - curIdx) > 1 ? prevIdx - 1 : prevIdx;\n this.trigger('drop', {\n event: e.event, element: dropInst.element, previousIndex: prevIdx, currentIndex: curIdx,\n target: e.target, helper: e.helper, droppedElement: this.target, scopeName: this.scope, handled: handled\n });\n }\n remove(dropInst.placeHolderElement);\n });\n }\n dropInst = this.getSortableInstance(e.target);\n // eslint-disable-next-line prefer-const\n curIdx = dropInst.element.childElementCount;\n prevIdx = this.getIndex(this.target);\n if (dropInst.element === e.target || (!isPlaceHolderPresent && this.curTarget === this.target)) {\n const beforeDropArgs = {\n previousIndex: prevIdx, currentIndex: this.curTarget === this.target ? prevIdx : curIdx,\n target: e.target, droppedElement: this.target, helper: e.helper, cancel: false\n };\n this.trigger('beforeDrop', beforeDropArgs, (observedArgs) => {\n if ((dropInst.element === e.target || (typeof e.target.className === 'string' && e.target.className.indexOf('e-list-nrt') > -1) || (typeof e.target.className === 'string' && e.target.className.indexOf('e-list-nr-template') > -1)\n || e.target.closest('.e-list-nr-template')) && !observedArgs.cancel) {\n this.updateItemClass(dropInst);\n dropInst.element.appendChild(this.target);\n this.trigger('drop', {\n event: e.event, element: dropInst.element, previousIndex: prevIdx, currentIndex: curIdx,\n target: e.target, helper: e.helper, droppedElement: this.target, scopeName: this.scope\n });\n }\n });\n }\n this.target.classList.remove('e-grabbed');\n this.target = null;\n this.curTarget = null;\n remove(e.helper);\n getComponent(this.element, 'draggable').intDestroy(e.event);\n };\n this.bind();\n }\n bind() {\n if (!this.element.id) {\n this.element.id = getUniqueID('sortable');\n }\n if (!this.itemClass) {\n this.itemClass = 'e-sort-item';\n this.dataBind();\n }\n this.initializeDraggable();\n }\n initializeDraggable() {\n new Draggable(this.element, {\n helper: this.getHelper,\n dragStart: this.onDragStart,\n drag: this.onDrag,\n dragStop: this.onDragStop,\n dragTarget: `.${this.itemClass}`,\n enableTapHold: true,\n tapHoldThreshold: 200,\n queryPositionInfo: this.queryPositionInfo,\n distance: 1\n });\n this.wireEvents();\n }\n wireEvents() {\n const wrapper = this.element;\n EventHandler.add(wrapper, 'keydown', this.keyDownHandler, this);\n }\n unwireEvents() {\n const wrapper = this.element;\n EventHandler.remove(wrapper, 'keydown', this.keyDownHandler);\n }\n keyDownHandler(e) {\n if (e.keyCode === 27) {\n let dragStop = getComponent(this.element, 'draggable');\n if (dragStop) {\n dragStop.intDestroy(null);\n }\n const dragWrapper = document.getElementsByClassName('e-sortableclone')[0];\n if (dragWrapper) {\n dragWrapper.remove();\n }\n const dragPlaceholder = document.getElementsByClassName('e-sortable-placeholder')[0];\n if (dragPlaceholder) {\n dragPlaceholder.remove();\n }\n }\n }\n getPlaceHolder(target, instance) {\n if (instance.placeHolder) {\n const placeHolderElement = instance.placeHolder({ element: instance.element, grabbedElement: this.target, target: target });\n placeHolderElement.classList.add('e-sortable-placeholder');\n return placeHolderElement;\n }\n return null;\n }\n isValidTarget(target, instance) {\n return target && compareElementParent(target, instance.element) && target.classList.contains(instance.itemClass) &&\n !target.classList.contains('e-disabled');\n }\n removePlaceHolder(instance) {\n remove(instance.placeHolderElement);\n instance.placeHolderElement = null;\n }\n updateItemClass(instance) {\n if (this !== instance) {\n this.target.classList.remove(this.itemClass);\n this.target.classList.add(instance.itemClass);\n }\n }\n getSortableInstance(element) {\n element = closest(element, `.e-${this.getModuleName()}`);\n if (element) {\n const inst = getComponent(element, Sortable_1);\n return inst.scope && this.scope && inst.scope === this.scope ? inst : this;\n }\n else {\n return this;\n }\n }\n refreshDisabled(oldIdx, newIdx, instance) {\n if (instance === this) {\n let element;\n const increased = oldIdx < newIdx;\n let disabledIdx;\n let start = increased ? oldIdx : newIdx;\n const end = increased ? newIdx : oldIdx;\n while (start <= end) {\n element = this.element.children[start];\n if (element.classList.contains('e-disabled')) {\n disabledIdx = this.getIndex(element);\n this.element.insertBefore(element, this.element.children[increased ? disabledIdx + 2 : disabledIdx - 1]);\n start = increased ? disabledIdx + 2 : disabledIdx + 1;\n }\n else {\n start++;\n }\n }\n }\n }\n getIndex(target, instance = this, e) {\n let idx;\n let placeHolderPresent;\n [].slice.call(instance.element.children).forEach((element, index) => {\n if (element.classList.contains('e-sortable-placeholder')) {\n placeHolderPresent = true;\n }\n if (element === target) {\n idx = index;\n if (!isNullOrUndefined(e)) {\n if (placeHolderPresent) {\n idx -= 1;\n }\n const offset = target.getBoundingClientRect();\n const clientY = offset.bottom - ((offset.bottom - offset.top) / 2);\n const cltY = e.changedTouches ? e.changedTouches[0].clientY : e.clientY;\n idx = cltY <= clientY ? idx : idx + 1;\n }\n return;\n }\n });\n return idx;\n }\n getSortableElement(element, instance = this) {\n return closest(element, `.${instance.itemClass}`);\n }\n queryPositionInfo(value) {\n value.left = pageXOffset ? `${parseFloat(value.left) - pageXOffset}px` : value.left;\n value.top = pageYOffset ? `${parseFloat(value.top) - pageYOffset}px` : value.top;\n return value;\n }\n isPlaceHolderPresent(instance) {\n return instance.placeHolderElement && !!closest(instance.placeHolderElement, `#${instance.element.id}`);\n }\n /**\n * It is used to sort array of elements from source element to destination element.\n *\n * @param destination - Defines the destination element to which the sortable elements needs to be appended.\n *\n * If it is null, then the Sortable library element will be considered as destination.\n * @param targetIndexes - Specifies the sortable elements indexes which needs to be sorted.\n * @param insertBefore - Specifies the index before which the sortable elements needs to be appended.\n * If it is null, elements will be appended as last child.\n * @function moveTo\n * @returns {void}\n */\n moveTo(destination, targetIndexes, insertBefore) {\n moveTo(this.element, destination, targetIndexes, insertBefore);\n }\n /**\n * It is used to destroy the Sortable library.\n */\n destroy() {\n this.unwireEvents();\n if (this.itemClass === 'e-sort-item') {\n this.itemClass = null;\n this.dataBind();\n }\n getComponent(this.element, Draggable).destroy();\n super.destroy();\n }\n getModuleName() {\n return 'sortable';\n }\n onPropertyChanged(newProp, oldProp) {\n for (const prop of Object.keys(newProp)) {\n switch (prop) {\n case 'itemClass':\n [].slice.call(this.element.children).forEach((element) => {\n if (element.classList.contains(oldProp.itemClass)) {\n element.classList.remove(oldProp.itemClass);\n }\n if (newProp.itemClass) {\n element.classList.add(newProp.itemClass);\n }\n });\n break;\n }\n }\n }\n};\n__decorate([\n Property(false)\n], Sortable.prototype, \"enableAnimation\", void 0);\n__decorate([\n Property(null)\n], Sortable.prototype, \"itemClass\", void 0);\n__decorate([\n Property(null)\n], Sortable.prototype, \"scope\", void 0);\n__decorate([\n Property()\n], Sortable.prototype, \"helper\", void 0);\n__decorate([\n Property()\n], Sortable.prototype, \"placeHolder\", void 0);\n__decorate([\n Event()\n], Sortable.prototype, \"drag\", void 0);\n__decorate([\n Event()\n], Sortable.prototype, \"beforeDragStart\", void 0);\n__decorate([\n Event()\n], Sortable.prototype, \"dragStart\", void 0);\n__decorate([\n Event()\n], Sortable.prototype, \"beforeDrop\", void 0);\n__decorate([\n Event()\n], Sortable.prototype, \"drop\", void 0);\nSortable = Sortable_1 = __decorate([\n NotifyPropertyChanges\n], Sortable);\nexport { Sortable };\n/**\n * It is used to sort array of elements from source element to destination element.\n *\n * @private\n */\nexport function moveTo(from, to, targetIndexes, insertBefore) {\n let targetElements = [];\n if (!to) {\n to = from;\n }\n if (targetIndexes && targetIndexes.length) {\n targetIndexes.forEach((index) => {\n targetElements.push(from.children[index]);\n });\n }\n else {\n targetElements = [].slice.call(from.children);\n }\n if (isNullOrUndefined(insertBefore)) {\n targetElements.forEach((target) => {\n to.appendChild(target);\n });\n }\n else {\n const insertElement = to.children[insertBefore];\n targetElements.forEach((target) => {\n to.insertBefore(target, insertElement);\n });\n }\n}\n","/**\n * Sortable Module\n */\nexport * from './sortable';\n","/**\n * List Components\n */\nexport * from './list-view/index';\nexport * from './common/index';\nexport * from './sortable';\n"],"names":["attributes","this","__decorate"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ej2-lists.es2015.js","sources":["../src/es6/common/list-base.js","../src/es6/list-view/list-view.js","../src/es6/list-view/virtualization.js","../src/es6/sortable/sortable.js"],"sourcesContent":["/* eslint-disable no-inner-declarations */\nimport { extend, merge, isNullOrUndefined, getValue, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { attributes, prepend, isVisible, append, addClass } from '@syncfusion/ej2-base';\nimport { compile } from '@syncfusion/ej2-base';\nimport { DataManager, Query } from '@syncfusion/ej2-data';\nexport let cssClass = {\n li: 'e-list-item',\n ul: 'e-list-parent e-ul',\n group: 'e-list-group-item',\n icon: 'e-list-icon',\n text: 'e-list-text',\n check: 'e-list-check',\n checked: 'e-checked',\n selected: 'e-selected',\n expanded: 'e-expanded',\n textContent: 'e-text-content',\n hasChild: 'e-has-child',\n level: 'e-level',\n url: 'e-list-url',\n collapsible: 'e-icon-collapsible',\n disabled: 'e-disabled',\n image: 'e-list-img',\n iconWrapper: 'e-icon-wrapper',\n anchorWrap: 'e-anchor-wrap',\n navigable: 'e-navigable'\n};\n/**\n * Base List Generator\n */\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport var ListBase;\n(function (ListBase) {\n /**\n *\n * Default mapped fields.\n */\n ListBase.defaultMappedFields = {\n id: 'id',\n text: 'text',\n url: 'url',\n value: 'value',\n isChecked: 'isChecked',\n enabled: 'enabled',\n expanded: 'expanded',\n selected: 'selected',\n iconCss: 'iconCss',\n child: 'child',\n isVisible: 'isVisible',\n hasChildren: 'hasChildren',\n tooltip: 'tooltip',\n htmlAttributes: 'htmlAttributes',\n urlAttributes: 'urlAttributes',\n imageAttributes: 'imageAttributes',\n imageUrl: 'imageUrl',\n groupBy: null,\n sortBy: null\n };\n const defaultAriaAttributes = {\n level: 1,\n listRole: 'presentation',\n itemRole: 'presentation',\n groupItemRole: 'group',\n itemText: 'list-item',\n wrapperRole: 'presentation'\n };\n const defaultListBaseOptions = {\n showCheckBox: false,\n showIcon: false,\n enableHtmlSanitizer: false,\n expandCollapse: false,\n fields: ListBase.defaultMappedFields,\n ariaAttributes: defaultAriaAttributes,\n listClass: '',\n itemClass: '',\n processSubChild: false,\n sortOrder: 'None',\n template: null,\n groupTemplate: null,\n headerTemplate: null,\n expandIconClass: 'e-icon-collapsible',\n moduleName: 'list',\n expandIconPosition: 'Right',\n itemNavigable: false\n };\n /**\n * Function helps to created and return the UL Li element based on your data.\n *\n * @param {createElementParams} createElement - Specifies an array of JSON data.\n *\n * @param {{Object}[]} dataSource - Specifies an array of JSON data.\n *\n * @param {ListBaseOptions} [options] - Specifies the list options that need to provide.\n *\n * @param {boolean} [isSingleLevel] - Specifies the list options that need to provide.\n *\n * @param {any} [componentInstance] - Specifies the list options that need to provide.\n *\n * @returns {createElement} createListFromJson - Specifies the list options that need to provide.\n */\n function createList(createElement, dataSource, options, isSingleLevel, componentInstance) {\n const curOpt = extend({}, defaultListBaseOptions, options);\n const ariaAttributes = extend({}, defaultAriaAttributes, curOpt.ariaAttributes);\n const type = typeofData(dataSource).typeof;\n if (type === 'string' || type === 'number') {\n return createListFromArray(createElement, dataSource, isSingleLevel, options, componentInstance);\n }\n else {\n return createListFromJson(createElement, dataSource, options, ariaAttributes.level, isSingleLevel, componentInstance);\n }\n }\n ListBase.createList = createList;\n /**\n * Function helps to created an element list based on string array input .\n *\n * @param {createElementParams} createElement - Specifies an array of JSON data.\n *\n * @param {{Object}[]} dataSource - Specifies an array of JSON data.\n *\n * @param {boolean} [isSingleLevel] - Specifies the list options that need to provide.\n *\n * @param {ListBaseOptions} [options] - Specifies the list options that need to provide.\n *\n * @param {any} [componentInstance] - Specifies the list options that need to provide.\n *\n * @returns {createElement} generateUL - returns the list options that need to provide.\n */\n function createListFromArray(createElement, dataSource, isSingleLevel, options, componentInstance) {\n const subChild = createListItemFromArray(createElement, dataSource, isSingleLevel, options, componentInstance);\n return generateUL(createElement, subChild, null, options);\n }\n ListBase.createListFromArray = createListFromArray;\n /**\n * Function helps to created an element list based on string array input .\n *\n * @param {createElementParams} createElement - Specifies an array of JSON data.\n *\n * @param {{Object}[]} dataSource - Specifies an array of JSON data.\n *\n * @param {boolean} [isSingleLevel] - Specifies the list options that need to provide.\n *\n * @param {ListBaseOptions} [options] - Specifies the list options that need to provide.\n *\n * @param {any} [componentInstance] - Specifies the list options that need to provide.\n *\n * @returns {HTMLElement[]} subChild - returns the list options that need to provide.\n */\n function createListItemFromArray(createElement, dataSource, isSingleLevel, options, componentInstance) {\n const subChild = [];\n const curOpt = extend({}, defaultListBaseOptions, options);\n cssClass = getModuleClass(curOpt.moduleName);\n const id = generateId(); // generate id for drop-down-list option.\n for (let i = 0; i < dataSource.length; i++) {\n if (isNullOrUndefined(dataSource[i])) {\n continue;\n }\n let li;\n if (curOpt.itemCreating && typeof curOpt.itemCreating === 'function') {\n const curData = {\n dataSource: dataSource,\n curData: dataSource[i],\n text: dataSource[i],\n options: curOpt\n };\n curOpt.itemCreating(curData);\n }\n if (isSingleLevel) {\n li = generateSingleLevelLI(createElement, dataSource[i], undefined, null, null, [], null, id, i, options);\n }\n else {\n li = generateLI(createElement, dataSource[i], undefined, null, null, options, componentInstance);\n }\n if (curOpt.itemCreated && typeof curOpt.itemCreated === 'function') {\n const curData = {\n dataSource: dataSource,\n curData: dataSource[i],\n text: dataSource[i],\n item: li,\n options: curOpt\n };\n curOpt.itemCreated(curData);\n }\n subChild.push(li);\n }\n return subChild;\n }\n ListBase.createListItemFromArray = createListItemFromArray;\n /**\n * Function helps to created an element list based on array of JSON input .\n *\n * @param {createElementParams} createElement - Specifies an array of JSON data.\n *\n * @param {{Object}[]} dataSource - Specifies an array of JSON data.\n *\n * @param {ListBaseOptions} [options] - Specifies the list options that need to provide.\n *\n * @param {number} [level] - Specifies the list options that need to provide.\n *\n * @param {boolean} [isSingleLevel] - Specifies the list options that need to provide.\n *\n * @param {any} [componentInstance] - Specifies the list options that need to provide.\n *\n * @returns {HTMLElement[]} child - returns the list options that need to provide.\n */\n function createListItemFromJson(createElement, dataSource, options, level, isSingleLevel, componentInstance) {\n const curOpt = extend({}, defaultListBaseOptions, options);\n cssClass = getModuleClass(curOpt.moduleName);\n const fields = (componentInstance &&\n (componentInstance.getModuleName() === 'listview' || componentInstance.getModuleName() === 'multiselect'))\n ? curOpt.fields : extend({}, ListBase.defaultMappedFields, curOpt.fields);\n const ariaAttributes = extend({}, defaultAriaAttributes, curOpt.ariaAttributes);\n let id;\n let checkboxElement = [];\n if (level) {\n ariaAttributes.level = level;\n }\n const child = [];\n let li;\n let anchorElement;\n if (dataSource && dataSource.length && !isNullOrUndefined(typeofData(dataSource).item) &&\n !Object.prototype.hasOwnProperty.call(typeofData(dataSource).item, fields.id)) {\n id = generateId(); // generate id for drop-down-list option.\n }\n for (let i = 0; i < dataSource.length; i++) {\n let fieldData = getFieldValues(dataSource[i], fields);\n if (isNullOrUndefined(dataSource[i])) {\n continue;\n }\n if (curOpt.itemCreating && typeof curOpt.itemCreating === 'function') {\n const curData = {\n dataSource: dataSource,\n curData: dataSource[i],\n text: fieldData[fields.text],\n options: curOpt,\n fields: fields\n };\n curOpt.itemCreating(curData);\n }\n const curItem = dataSource[i];\n if (curOpt.itemCreating && typeof curOpt.itemCreating === 'function') {\n fieldData = getFieldValues(dataSource[i], fields);\n }\n if (Object.prototype.hasOwnProperty.call(fieldData, fields.id) && !isNullOrUndefined(fieldData[fields.id])) {\n id = fieldData[fields.id];\n }\n const innerEle = [];\n if (curOpt.showCheckBox) {\n if (curOpt.itemNavigable && (fieldData[fields.url] || fieldData[fields.urlAttributes])) {\n checkboxElement.push(createElement('input', { className: cssClass.check, attrs: { type: 'checkbox' } }));\n }\n else {\n innerEle.push(createElement('input', { className: cssClass.check, attrs: { type: 'checkbox' } }));\n }\n }\n if (isSingleLevel === true) {\n if (curOpt.showIcon && Object.prototype.hasOwnProperty.call(fieldData, fields.iconCss)\n && !isNullOrUndefined(fieldData[fields.iconCss])) {\n innerEle.push(createElement('span', { className: cssClass.icon + ' ' + fieldData[fields.iconCss] }));\n }\n li = generateSingleLevelLI(createElement, curItem, fieldData, fields, curOpt.itemClass, innerEle, (Object.prototype.hasOwnProperty.call(curItem, 'isHeader') &&\n curItem.isHeader) ? true : false, id, i, options);\n anchorElement = li.querySelector('.' + cssClass.anchorWrap);\n if (curOpt.itemNavigable && checkboxElement.length) {\n prepend(checkboxElement, li.firstElementChild);\n }\n }\n else {\n li = generateLI(createElement, curItem, fieldData, fields, curOpt.itemClass, options, componentInstance);\n li.classList.add(cssClass.level + '-' + ariaAttributes.level);\n li.setAttribute('aria-level', ariaAttributes.level.toString());\n if (ariaAttributes.groupItemRole === 'presentation' || ariaAttributes.itemRole === 'presentation') {\n li.removeAttribute('aria-level');\n }\n anchorElement = li.querySelector('.' + cssClass.anchorWrap);\n if (Object.prototype.hasOwnProperty.call(fieldData, fields.tooltip)) {\n let tooltipText = fieldData[fields.tooltip];\n if (options && options.enableHtmlSanitizer) {\n tooltipText = SanitizeHtmlHelper.sanitize(tooltipText);\n }\n else {\n let tooltipTextElement = createElement('span', { innerHTML: tooltipText });\n tooltipText = tooltipTextElement.innerText;\n tooltipTextElement = null;\n }\n li.setAttribute('title', tooltipText);\n }\n if (Object.prototype.hasOwnProperty.call(fieldData, fields.htmlAttributes) && fieldData[fields.htmlAttributes]) {\n const htmlAttributes = fieldData[fields.htmlAttributes];\n // Check if 'class' attribute is present and not an empty string\n if ('class' in htmlAttributes && typeof htmlAttributes['class'] === 'string' && htmlAttributes['class'].trim() === '') {\n delete htmlAttributes['class'];\n }\n setAttribute(li, htmlAttributes);\n }\n if (Object.prototype.hasOwnProperty.call(fieldData, fields.enabled) && fieldData[fields.enabled] === false) {\n li.classList.add(cssClass.disabled);\n }\n if (Object.prototype.hasOwnProperty.call(fieldData, fields.isVisible) && fieldData[fields.isVisible] === false) {\n li.style.display = 'none';\n }\n if (Object.prototype.hasOwnProperty.call(fieldData, fields.imageUrl) && !isNullOrUndefined(fieldData[fields.imageUrl])\n && !curOpt.template) {\n const attr = { src: fieldData[fields.imageUrl], alt: !isNullOrUndefined(fieldData.name) ? ('Displaying ' + fieldData.name + ' Image') : 'Displaying Image' };\n merge(attr, fieldData[fields.imageAttributes]);\n const imageElemnt = createElement('img', { className: cssClass.image, attrs: attr });\n if (anchorElement) {\n anchorElement.insertAdjacentElement('afterbegin', imageElemnt);\n }\n else {\n prepend([imageElemnt], li.firstElementChild);\n }\n }\n if (curOpt.showIcon && Object.prototype.hasOwnProperty.call(fieldData, fields.iconCss) &&\n !isNullOrUndefined(fieldData[fields.iconCss]) && !curOpt.template) {\n const iconElement = createElement('div', { className: cssClass.icon + ' ' + fieldData[fields.iconCss] });\n if (anchorElement) {\n anchorElement.insertAdjacentElement('afterbegin', iconElement);\n }\n else {\n prepend([iconElement], li.firstElementChild);\n }\n }\n if (innerEle.length) {\n prepend(innerEle, li.firstElementChild);\n }\n if (curOpt.itemNavigable && checkboxElement.length) {\n prepend(checkboxElement, li.firstElementChild);\n }\n processSubChild(createElement, fieldData, fields, dataSource, curOpt, li, ariaAttributes.level);\n }\n if (anchorElement) {\n addClass([li], [cssClass.navigable]);\n }\n if (curOpt.itemCreated && typeof curOpt.itemCreated === 'function') {\n const curData = {\n dataSource: dataSource,\n curData: dataSource[i],\n text: fieldData[fields.text],\n item: li,\n options: curOpt,\n fields: fields\n };\n curOpt.itemCreated(curData);\n }\n checkboxElement = [];\n child.push(li);\n }\n return child;\n }\n ListBase.createListItemFromJson = createListItemFromJson;\n /**\n * Function helps to created an element list based on array of JSON input .\n *\n * @param {createElementParams} createElement - Specifies an array of JSON data.\n *\n * @param {{Object}[]} dataSource - Specifies an array of JSON data.\n *\n * @param {ListBaseOptions} [options] - Specifies the list options that need to provide.\n *\n * @param {number} [level] - Specifies the list options that need to provide.\n *\n * @param {boolean} [isSingleLevel] - Specifies the list options that need to provide.\n *\n * @param {any} [componentInstance] - Specifies the list options that need to provide.\n *\n * @returns {createElement} generateUL - Specifies the list options that need to provide.\n */\n function createListFromJson(createElement, dataSource, options, level, isSingleLevel, componentInstance) {\n const curOpt = extend({}, defaultListBaseOptions, options);\n const li = createListItemFromJson(createElement, dataSource, options, level, isSingleLevel, componentInstance);\n return generateUL(createElement, li, curOpt.listClass, options);\n }\n ListBase.createListFromJson = createListFromJson;\n /**\n * Return the next or previous visible element.\n *\n * @param {Element[]|NodeList} elementArray - An element array to find next or previous element.\n * @param {Element} element - An element to find next or previous after this element.\n * @param {boolean} [isPrevious] - Specify when the need get previous element from array.\n * @returns {Element|undefined} The next or previous visible element, or undefined if the element array is empty.\n */\n function getSiblingLI(elementArray, element, isPrevious) {\n cssClass = getModuleClass(defaultListBaseOptions.moduleName);\n if (!elementArray || !elementArray.length) {\n return void 0;\n }\n let siblingLI;\n let liIndex;\n const liCollections = Array.prototype.slice.call(elementArray);\n if (element) {\n liIndex = indexOf(element, liCollections);\n }\n else {\n liIndex = (isPrevious === true ? liCollections.length : -1);\n }\n siblingLI = liCollections[liIndex + (isPrevious === true ? -1 : 1)];\n while (siblingLI && (!isVisible(siblingLI) || siblingLI.classList.contains(cssClass.disabled))) {\n liIndex = liIndex + (isPrevious === true ? -1 : 1);\n siblingLI = liCollections[liIndex];\n }\n return siblingLI;\n }\n ListBase.getSiblingLI = getSiblingLI;\n /**\n * Return the index of the li element\n *\n * @param {Element} item - An element to find next or previous after this element.\n * @param {Element[]} elementArray - An element array to find index of given li.\n * @returns {number} - The index of the item in the element array, or undefined if either parameter is false.\n */\n function indexOf(item, elementArray) {\n if (!elementArray || !item) {\n return void 0;\n }\n else {\n let liCollections = elementArray;\n liCollections = Array.prototype.slice.call(elementArray);\n return liCollections.indexOf(item);\n }\n }\n ListBase.indexOf = indexOf;\n /**\n * Returns the grouped data from given dataSource.\n *\n * @param {{Object}[]} dataSource - The JSON data which is necessary to process.\n * @param {FieldsMapping} fields - Fields that are mapped from the data source.\n * @param {SortOrder} [sortOrder='None'] - Specifies final result sort order. Defaults to 'None'.\n * @returns {Object[]} - The grouped data.\n */\n function groupDataSource(dataSource, fields, sortOrder = 'None') {\n const curFields = extend({}, ListBase.defaultMappedFields, fields);\n let cusQuery = new Query().group(curFields.groupBy);\n // need to remove once sorting issues fixed in DataManager\n cusQuery = addSorting(sortOrder, 'key', cusQuery);\n const ds = getDataSource(dataSource, cusQuery);\n dataSource = [];\n for (let j = 0; j < ds.length; j++) {\n const itemObj = ds[j].items;\n const grpItem = {};\n const hdr = 'isHeader';\n grpItem[curFields.text] = ds[j].key;\n grpItem[`${hdr}`] = true;\n let newtext = curFields.text;\n if (newtext === 'id') {\n newtext = 'text';\n grpItem[`${newtext}`] = ds[j].key;\n }\n grpItem._id = 'group-list-item-' + (ds[j].key ?\n ds[j].key.toString().trim() : 'undefined');\n grpItem.items = itemObj;\n dataSource.push(grpItem);\n for (let k = 0; k < itemObj.length; k++) {\n dataSource.push(itemObj[k]);\n }\n }\n return dataSource;\n }\n ListBase.groupDataSource = groupDataSource;\n /**\n * Returns a sorted query object.\n *\n * @param {SortOrder} sortOrder - Specifies that sort order.\n * @param {string} sortBy - Specifies sortBy fields.\n * @param {Query} query - Pass if any existing query.\n * @returns {Query} - The updated query object with sorting applied.\n */\n function addSorting(sortOrder, sortBy, query = new Query()) {\n if (sortOrder === 'Ascending') {\n query.sortBy(sortBy, 'ascending', true);\n }\n else if (sortOrder === 'Descending') {\n query.sortBy(sortBy, 'descending', true);\n }\n else {\n for (let i = 0; i < query.queries.length; i++) {\n if (query.queries[i].fn === 'onSortBy') {\n query.queries.splice(i, 1);\n }\n }\n }\n return query;\n }\n ListBase.addSorting = addSorting;\n /**\n * Return an array of JSON Data that processed based on queries.\n *\n * @param {{Object}[]} dataSource - Specifies local JSON data source.\n *\n * @param {Query} query - Specifies query that need to process.\n *\n * @returns {Object[]} - An array of objects representing the retrieved data.\n */\n function getDataSource(dataSource, query) {\n return new DataManager(dataSource)\n .executeLocal(query);\n }\n ListBase.getDataSource = getDataSource;\n /**\n * Created JSON data based the UL and LI element\n *\n * @param {HTMLElement|Element} element - UL element that need to convert as a JSON\n * @param {ListBaseOptions} [options] - Specifies ListBase option for fields.\n * @returns {Object[]} - An array of objects representing the JSON data.\n */\n function createJsonFromElement(element, options) {\n const curOpt = extend({}, defaultListBaseOptions, options);\n const fields = extend({}, ListBase.defaultMappedFields, curOpt.fields);\n const curEle = element.cloneNode(true);\n const jsonAr = [];\n curEle.classList.add('json-parent');\n const childs = curEle.querySelectorAll('.json-parent>li');\n curEle.classList.remove('json-parent');\n for (let i = 0; i < childs.length; i++) {\n const li = childs[i];\n const anchor = li.querySelector('a');\n const ul = li.querySelector('ul');\n const json = {};\n const childNodes = anchor ? anchor.childNodes : li.childNodes;\n const keys = Object.keys(childNodes);\n for (let i = 0; i < childNodes.length; i++) {\n if (!(childNodes[Number(keys[i])]).hasChildNodes()) {\n json[fields.text] = childNodes[Number(keys[i])].textContent;\n }\n }\n let attributes = getAllAttributes(li);\n if (attributes.id) {\n json[fields.id] = attributes.id;\n delete attributes.id;\n }\n else {\n json[fields.id] = generateId();\n }\n if (Object.keys(attributes).length) {\n json[fields.htmlAttributes] = attributes;\n }\n if (anchor) {\n attributes = getAllAttributes(anchor);\n if (Object.keys(attributes).length) {\n json[fields.urlAttributes] = attributes;\n }\n }\n if (ul) {\n json[fields.child] = createJsonFromElement(ul, options);\n }\n jsonAr.push(json);\n }\n return jsonAr;\n }\n ListBase.createJsonFromElement = createJsonFromElement;\n /**\n * Determines the type of data in an array of objects, strings, or numbers.\n *\n * @param {Object[] | string[] | number[]} data - The array containing objects, strings, or numbers.\n * @returns {{typeof: (string | null), item: (Object | string | number)}} - An object containing the type of data and the corresponding item.\n */\n function typeofData(data) {\n let match = { typeof: null, item: null };\n for (let i = 0; i < data.length; i++) {\n if (!isNullOrUndefined(data[i])) {\n return match = { typeof: typeof data[i], item: data[i] };\n }\n }\n return match;\n }\n /**\n * Sets attributes on an HTML element.\n *\n * @param {HTMLElement} element - The HTML element to set attributes on.\n * @param {Object.<string, string>} elementAttributes - An object containing attribute names and their corresponding values.\n * @returns {void}\n */\n function setAttribute(element, elementAttributes) {\n const attr = {};\n merge(attr, elementAttributes);\n if (attr.class) {\n addClass([element], attr.class.split(' '));\n delete attr.class;\n }\n attributes(element, attr);\n }\n /**\n * Retrieves all attributes of an HTML element.\n *\n * @param {HTMLElement} element - The HTML element to retrieve attributes from.\n * @returns {Object.<string, string>} - An object containing attribute names as keys and their corresponding values as values.\n */\n function getAllAttributes(element) {\n const attributes = {};\n const attr = element.attributes;\n for (let index = 0; index < attr.length; index++) {\n attributes[attr[index].nodeName] = attr[index].nodeValue;\n }\n return attributes;\n }\n /**\n * Created UL element from content template.\n *\n * @param {createElementParams} createElement - Specifies an array of JSON data.\n * @param {string} template - that need to convert and generate li element.\n * @param {{Object}[]} dataSource - Specifies local JSON data source.\n * @param {FieldsMapping} [fields] - Specifies fields for mapping the dataSource.\n * @param {ListBaseOptions} [options] - Specifies ListBase option for fields.\n * @param {any} [componentInstance] - Specifies component instance.\n * @returns {HTMLElement} - The generated LI element.\n */\n function renderContentTemplate(createElement, template, dataSource, fields, options, componentInstance) {\n cssClass = getModuleClass(defaultListBaseOptions.moduleName);\n const ulElement = createElement('ul', { className: cssClass.ul, attrs: { role: 'presentation' } });\n const curOpt = extend({}, defaultListBaseOptions, options);\n const curFields = extend({}, ListBase.defaultMappedFields, fields);\n const compiledString = compileTemplate(template);\n const liCollection = [];\n let value;\n const id = generateId(); // generate id for drop-down-list option.\n for (let i = 0; i < dataSource.length; i++) {\n let fieldData = getFieldValues(dataSource[i], curFields);\n const curItem = dataSource[i];\n const isHeader = curItem.isHeader;\n if (typeof dataSource[i] === 'string' || typeof dataSource[i] === 'number') {\n value = curItem;\n }\n else {\n value = fieldData[curFields.value];\n }\n if (curOpt.itemCreating && typeof curOpt.itemCreating === 'function') {\n const curData = {\n dataSource: dataSource,\n curData: curItem,\n text: value,\n options: curOpt,\n fields: curFields\n };\n curOpt.itemCreating(curData);\n }\n if (curOpt.itemCreating && typeof curOpt.itemCreating === 'function') {\n fieldData = getFieldValues(dataSource[i], curFields);\n if (typeof dataSource[i] === 'string' || typeof dataSource[i] === 'number') {\n value = curItem;\n }\n else {\n value = fieldData[curFields.value];\n }\n }\n const li = createElement('li', {\n id: id + '-' + i,\n className: isHeader ? cssClass.group : cssClass.li, attrs: { role: 'presentation' }\n });\n if (isHeader) {\n if (typeof dataSource[i] === 'string' || typeof dataSource[i] === 'number') {\n li.innerText = curItem;\n }\n else {\n li.innerText = fieldData[curFields.text];\n }\n }\n else {\n const currentID = isHeader ? curOpt.groupTemplateID : curOpt.templateID;\n if (isHeader) {\n if (componentInstance && componentInstance.getModuleName() !== 'listview') {\n const compiledElement = compiledString(curItem, componentInstance, 'headerTemplate', currentID, !!curOpt.isStringTemplate, null, li);\n if (compiledElement) {\n append(compiledElement, li);\n }\n }\n else {\n append(compiledString(curItem, componentInstance, 'headerTemplate', currentID, !!curOpt.isStringTemplate), li);\n }\n }\n else {\n if (componentInstance && componentInstance.getModuleName() !== 'listview') {\n const compiledElement = compiledString(curItem, componentInstance, 'template', currentID, !!curOpt.isStringTemplate, null, li);\n if (compiledElement) {\n append(compiledElement, li);\n }\n }\n else {\n append(compiledString(curItem, componentInstance, 'template', currentID, !!curOpt.isStringTemplate), li);\n }\n }\n li.setAttribute('data-value', isNullOrUndefined(value) ? 'null' : value);\n li.setAttribute('role', 'option');\n }\n if (curOpt.itemCreated && typeof curOpt.itemCreated === 'function') {\n const curData = {\n dataSource: dataSource,\n curData: curItem,\n text: value,\n item: li,\n options: curOpt,\n fields: curFields\n };\n curOpt.itemCreated(curData);\n }\n liCollection.push(li);\n }\n append(liCollection, ulElement);\n return ulElement;\n }\n ListBase.renderContentTemplate = renderContentTemplate;\n /**\n * Created header items from group template.\n *\n * @param {string | Function} groupTemplate - that need to convert and generate li element.\n *\n * @param {{Object}[]} groupDataSource - Specifies local JSON data source.\n *\n * @param {FieldsMapping} fields - Specifies fields for mapping the dataSource.\n *\n * @param {Element[]} headerItems - Specifies ListBase header items.\n *\n * @param {ListBaseOptions} [options] - Optional ListBase options.\n *\n * @param {*} [componentInstance] - Optional component instance.\n *\n * @returns {Element[]} - An array of header elements with the rendered group template content.\n */\n function renderGroupTemplate(groupTemplate, \n // tslint:disable-next-line\n groupDataSource, fields, headerItems, options, componentInstance) {\n const compiledString = compileTemplate(groupTemplate);\n const curFields = extend({}, ListBase.defaultMappedFields, fields);\n const curOpt = extend({}, defaultListBaseOptions, options);\n const category = curFields.groupBy;\n for (const header of headerItems) {\n const headerData = {};\n headerData[`${category}`] = header.textContent;\n header.innerHTML = '';\n if (componentInstance && componentInstance.getModuleName() !== 'listview') {\n const compiledElement = compiledString(headerData, componentInstance, 'groupTemplate', curOpt.groupTemplateID, !!curOpt.isStringTemplate, null, header);\n if (compiledElement) {\n append(compiledElement, header);\n }\n }\n else {\n append(compiledString(headerData, componentInstance, 'groupTemplate', curOpt.groupTemplateID, !!curOpt.isStringTemplate), header);\n }\n }\n return headerItems;\n }\n ListBase.renderGroupTemplate = renderGroupTemplate;\n /**\n * Generates a random hexadecimal ID string.\n *\n * @returns {string} - The generated ID string.\n */\n function generateId() {\n return Math.floor((1 + Math.random()) * 0x10000)\n .toString(16)\n .substring(1);\n }\n ListBase.generateId = generateId;\n /**\n * Processes the sub-child elements and creates corresponding elements based on the provided field data and options.\n *\n * @param {Function} createElement - Function for creating elements.\n * @param {Object} fieldData - Field data containing sub-child information.\n * @param {FieldsMapping} fields - Field mappings.\n * @param {Object[]} ds - The data source array containing sub-child elements.\n * @param {ListBaseOptions} options - ListBase options.\n * @param {HTMLElement} element - The parent HTML element to append sub-child elements to.\n * @param {number} level - The level of the sub-child elements.\n * @returns {void}\n */\n function processSubChild(createElement, fieldData, fields, ds, options, element, level) {\n // Get SubList\n const subDS = fieldData[fields.child] || [];\n let hasChildren = fieldData[fields.hasChildren];\n //Create Sub child\n if (subDS.length) {\n hasChildren = true;\n element.classList.add(cssClass.hasChild);\n if (options.processSubChild) {\n const subLi = createListFromJson(createElement, subDS, options, ++level);\n element.appendChild(subLi);\n }\n }\n // Create expand and collapse node\n if (!!options.expandCollapse && hasChildren && !options.template) {\n element.firstElementChild.classList.add(cssClass.iconWrapper);\n const expandElement = options.expandIconPosition === 'Left' ? prepend : append;\n expandElement([createElement('div', { className: 'e-icons ' + options.expandIconClass })], element.querySelector('.' + cssClass.textContent));\n }\n }\n /**\n * Generates a single-level LI (list item) element based on the provided item and field data.\n *\n * @param {Function} createElement - Function for creating elements.\n * @param {string | Object | number} item - The item data.\n * @param {Object} fieldData - Field data mapped from the item.\n * @param {FieldsMapping} [fields] - Field mappings.\n * @param {string} [className] - Optional class name to add to the created LI element.\n * @param {HTMLElement[]} [innerElements] - Optional array of inner elements to append to the LI element.\n * @param {boolean} [grpLI] - Indicates if the LI element is a group item.\n * @param {string} [id] - The ID of the LI element.\n * @param {number} [index] - The index of the LI element.\n * @param {ListBaseOptions} [options] - Optional ListBase options.\n * @returns {HTMLElement} - The generated LI element.\n */\n function generateSingleLevelLI(createElement, item, fieldData, fields, className, innerElements, grpLI, id, index, options) {\n const curOpt = extend({}, defaultListBaseOptions, options);\n const ariaAttributes = extend({}, defaultAriaAttributes, curOpt.ariaAttributes);\n let text = item;\n let value = item;\n let dataSource;\n if (typeof item !== 'string' && typeof item !== 'number' && typeof item !== 'boolean') {\n dataSource = item;\n text = (typeof fieldData[fields.text] === 'boolean' || typeof fieldData[fields.text] === 'number') ?\n fieldData[fields.text] : (fieldData[fields.text] || '');\n value = fieldData[fields.value];\n }\n let elementID;\n if (!isNullOrUndefined(dataSource) && !isNullOrUndefined(fieldData[fields.id])\n && fieldData[fields.id] !== '') {\n elementID = id;\n }\n else {\n elementID = id + '-' + index;\n }\n const li = createElement('li', {\n className: (grpLI === true ? cssClass.group : cssClass.li) + ' ' + (isNullOrUndefined(className) ? '' : className),\n id: elementID, attrs: (ariaAttributes.groupItemRole !== '' && ariaAttributes.itemRole !== '' ?\n { role: (grpLI === true ? ariaAttributes.groupItemRole : ariaAttributes.itemRole) } : {})\n });\n if (dataSource && Object.prototype.hasOwnProperty.call(fieldData, fields.enabled) && fieldData[fields.enabled].toString() === 'false') {\n li.classList.add(cssClass.disabled);\n }\n if (grpLI) {\n li.innerText = text;\n }\n else {\n li.setAttribute('data-value', isNullOrUndefined(value) ? 'null' : value);\n li.setAttribute('role', 'option');\n if (dataSource && Object.prototype.hasOwnProperty.call(fieldData, fields.htmlAttributes) && fieldData[fields.htmlAttributes]) {\n setAttribute(li, fieldData[fields.htmlAttributes]);\n }\n if (innerElements.length && !curOpt.itemNavigable) {\n append(innerElements, li);\n }\n if (dataSource && (fieldData[fields.url] || (fieldData[fields.urlAttributes] &&\n fieldData[fields.urlAttributes].href))) {\n li.appendChild(anchorTag(createElement, dataSource, fields, text, innerElements, curOpt.itemNavigable));\n }\n else {\n if (innerElements.length && curOpt.itemNavigable) {\n append(innerElements, li);\n }\n li.appendChild(document.createTextNode(text));\n }\n }\n return li;\n }\n /**\n * Returns a set of CSS class names based on the provided module name.\n *\n * @param {string} moduleName - The name of the module.\n * @returns {ClassList} - The CSS class names associated with the module.\n */\n function getModuleClass(moduleName) {\n let moduleClass;\n // eslint-disable-next-line\n return moduleClass = {\n li: `e-${moduleName}-item`,\n ul: `e-${moduleName}-parent e-ul`,\n group: `e-${moduleName}-group-item`,\n icon: `e-${moduleName}-icon`,\n text: `e-${moduleName}-text`,\n check: `e-${moduleName}-check`,\n checked: 'e-checked',\n selected: 'e-selected',\n expanded: 'e-expanded',\n textContent: 'e-text-content',\n hasChild: 'e-has-child',\n level: 'e-level',\n url: `e-${moduleName}-url`,\n collapsible: 'e-icon-collapsible',\n disabled: 'e-disabled',\n image: `e-${moduleName}-img`,\n iconWrapper: 'e-icon-wrapper',\n anchorWrap: 'e-anchor-wrap',\n navigable: 'e-navigable'\n };\n }\n /**\n * Creates an anchor tag (<a>) element based on the provided data source, fields, and text.\n *\n * @param {Function} createElement - Function for creating elements.\n * @param {object} dataSource - The data source containing URL-related fields.\n * @param {FieldsMapping} fields - Field mappings for the data source.\n * @param {string} text - The text content of the anchor tag.\n * @param {HTMLElement[]} innerElements - Optional array of inner elements to append to the anchor tag.\n * @param {boolean} isFullNavigation - Indicates whether the anchor tag should be for full navigation.\n * @returns {HTMLElement} The created anchor tag element.\n */\n function anchorTag(createElement, dataSource, fields, text, innerElements, isFullNavigation) {\n const fieldData = getFieldValues(dataSource, fields);\n const attr = { href: fieldData[fields.url] };\n if (Object.prototype.hasOwnProperty.call(fieldData, fields.urlAttributes) && fieldData[fields.urlAttributes]) {\n merge(attr, fieldData[fields.urlAttributes]);\n attr.href = fieldData[fields.url] ? fieldData[fields.url] :\n fieldData[fields.urlAttributes].href;\n }\n let anchorTag;\n if (!isFullNavigation) {\n anchorTag = createElement('a', { className: cssClass.text + ' ' + cssClass.url, innerHTML: text });\n }\n else {\n anchorTag = createElement('a', { className: cssClass.text + ' ' + cssClass.url });\n const anchorWrapper = createElement('div', { className: cssClass.anchorWrap });\n if (innerElements && innerElements.length) {\n append(innerElements, anchorWrapper);\n }\n anchorWrapper.appendChild(document.createTextNode(text));\n append([anchorWrapper], anchorTag);\n }\n setAttribute(anchorTag, attr);\n return anchorTag;\n }\n /**\n * Generates an LI element based on the provided item and field data.\n *\n * @param {Function} createElement - Function for creating elements.\n * @param {string | Object | number} item - The item data.\n * @param {Object} fieldData - Field data mapped from the item.\n * @param {FieldsMapping} fields - Field mappings.\n * @param {string} [className] - Optional class name to add to the created LI element.\n * @param {ListBaseOptions} [options] - Optional ListBase options.\n * @param {*} [componentInstance] - Optional component instance.\n * @returns {HTMLElement} - The generated LI element.\n */\n function generateLI(createElement, item, fieldData, fields, className, options, componentInstance) {\n const curOpt = extend({}, defaultListBaseOptions, options);\n const ariaAttributes = extend({}, defaultAriaAttributes, curOpt.ariaAttributes);\n let text = item;\n let uID;\n let grpLI;\n let dataSource;\n if (typeof item !== 'string' && typeof item !== 'number') {\n dataSource = item;\n text = fieldData[fields.text] || '';\n uID = (isNullOrUndefined(fieldData['_id'])) ? fieldData[fields.id] : fieldData['_id'];\n grpLI = (Object.prototype.hasOwnProperty.call(item, 'isHeader') && item.isHeader)\n ? true : false;\n }\n if (options && options.enableHtmlSanitizer) {\n // eslint-disable-next-line no-self-assign\n text = text;\n }\n const li = createElement('li', {\n className: (grpLI === true ? cssClass.group : cssClass.li) + ' ' + (isNullOrUndefined(className) ? '' : className),\n attrs: (ariaAttributes.groupItemRole !== '' && ariaAttributes.itemRole !== '' ?\n { role: (grpLI === true ? ariaAttributes.groupItemRole : ariaAttributes.itemRole) } : {})\n });\n if (!isNullOrUndefined(uID) === true) {\n li.setAttribute('data-uid', uID);\n }\n else {\n li.setAttribute('data-uid', generateId());\n }\n if (grpLI && options && options.groupTemplate) {\n const compiledString = compileTemplate(options.groupTemplate);\n if (componentInstance && componentInstance.getModuleName() !== 'listview') {\n const compiledElement = compiledString(item, componentInstance, 'groupTemplate', curOpt.groupTemplateID, !!curOpt.isStringTemplate, null, li);\n if (compiledElement) {\n append(compiledElement, li);\n }\n }\n else {\n append(compiledString(item, componentInstance, 'groupTemplate', curOpt.groupTemplateID, !!curOpt.isStringTemplate), li);\n }\n }\n else if (!grpLI && options && options.template) {\n const compiledString = compileTemplate(options.template);\n if (componentInstance && componentInstance.getModuleName() !== 'listview') {\n const compiledElement = compiledString(item, componentInstance, 'template', curOpt.templateID, !!curOpt.isStringTemplate, null, li);\n if (compiledElement) {\n append(compiledElement, li);\n }\n }\n else {\n append(compiledString(item, componentInstance, 'template', curOpt.templateID, !!curOpt.isStringTemplate), li);\n }\n }\n else {\n const innerDiv = createElement('div', {\n className: cssClass.textContent,\n attrs: (ariaAttributes.wrapperRole !== '' ? { role: ariaAttributes.wrapperRole } : {})\n });\n if (dataSource && (fieldData[fields.url] || (fieldData[fields.urlAttributes] &&\n fieldData[fields.urlAttributes].href))) {\n innerDiv.appendChild(anchorTag(createElement, dataSource, fields, text, null, curOpt.itemNavigable));\n }\n else {\n const element = createElement('span', {\n className: cssClass.text,\n attrs: (ariaAttributes.itemText !== '' ? { role: ariaAttributes.itemText } : {})\n });\n if (options && options.enableHtmlSanitizer) {\n element.innerText = SanitizeHtmlHelper.sanitize(text);\n }\n else {\n element.innerHTML = text;\n }\n innerDiv.appendChild(element);\n }\n li.appendChild(innerDiv);\n }\n return li;\n }\n /**\n * Returns UL element based on the given LI element.\n *\n * @param {Function} createElement - Function for creating elements.\n *\n * @param {HTMLElement[]} liElement - Specifies array of LI element.\n *\n * @param {string} [className] - Specifies class name that need to be added in UL element.\n *\n * @param {ListBaseOptions} [options] - Specifies ListBase options.\n *\n * @returns {HTMLElement} - The created UL element.\n */\n function generateUL(createElement, liElement, className, options) {\n const curOpt = extend({}, defaultListBaseOptions, options);\n const ariaAttributes = extend({}, defaultAriaAttributes, curOpt.ariaAttributes);\n cssClass = getModuleClass(curOpt.moduleName);\n const ulElement = createElement('ul', {\n className: cssClass.ul + ' ' + (isNullOrUndefined(className) ? '' : className),\n attrs: (ariaAttributes.listRole !== '' ? { role: ariaAttributes.listRole } : {})\n });\n append(liElement, ulElement);\n return ulElement;\n }\n ListBase.generateUL = generateUL;\n /**\n * Returns LI element with additional DIV tag based on the given LI element.\n *\n * @param {Function} createElement - Function for creating elements.\n *\n * @param {liElement} liElement - Specifies LI element.\n *\n * @param {string} [className] - Specifies class name that need to be added in created DIV element.\n *\n * @param {ListBaseOptions} [options] - Specifies ListBase options.\n *\n * @returns {HTMLElement} - The modified LI element.\n */\n function generateIcon(createElement, liElement, className, options) {\n const curOpt = extend({}, defaultListBaseOptions, options);\n cssClass = getModuleClass(curOpt.moduleName);\n const expandElement = curOpt.expandIconPosition === 'Left' ? prepend : append;\n expandElement([createElement('div', {\n className: 'e-icons ' + curOpt.expandIconClass + ' ' +\n (isNullOrUndefined(className) ? '' : className)\n })], liElement.querySelector('.' + cssClass.textContent));\n return liElement;\n }\n ListBase.generateIcon = generateIcon;\n})(ListBase || (ListBase = {}));\n/**\n * Used to get dataSource item from complex data using fields.\n *\n * @param {Object} dataItem - Specifies an JSON or String data.\n *\n * @param {FieldsMapping} fields - Fields that are mapped from the dataSource.\n * @returns {Object|string|number} - The retrieved field values.\n */\nexport function getFieldValues(dataItem, fields) {\n const fieldData = {};\n if (isNullOrUndefined(dataItem) || typeof (dataItem) === 'string' || typeof (dataItem) === 'number'\n || !isNullOrUndefined(dataItem.isHeader)) {\n return dataItem;\n }\n else {\n for (const field of Object.keys(fields)) {\n const dataField = fields[`${field}`];\n const value = !isNullOrUndefined(dataField) &&\n typeof (dataField) === 'string' ? getValue(dataField, dataItem) : undefined;\n if (!isNullOrUndefined(value)) {\n fieldData[`${dataField}`] = value;\n }\n }\n }\n return fieldData;\n}\n/**\n * Compiles a template string or function into a compiled function.\n *\n * @param {string | Function} template - The template string or function to compile.\n * @returns {Function | undefined} - The compiled function, or undefined if the input is false.\n */\nfunction compileTemplate(template) {\n if (template) {\n try {\n if (typeof template !== 'function' && document.querySelector(template)) {\n return compile(document.querySelector(template).innerHTML.trim());\n }\n else {\n return compile(template);\n }\n }\n catch (e) {\n return compile(template);\n }\n }\n return undefined;\n}\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { merge, formatUnit, isNullOrUndefined, append, detach, extend } from '@syncfusion/ej2-base';\nimport { attributes, addClass, removeClass, prepend, closest, remove } from '@syncfusion/ej2-base';\nimport { Component, EventHandler, Property, Complex, Event } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, ChildProperty } from '@syncfusion/ej2-base';\nimport { compile, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { Animation, rippleEffect, Touch, animationMode } from '@syncfusion/ej2-base';\nimport { DataManager, Query } from '@syncfusion/ej2-data';\nimport { createCheckBox } from '@syncfusion/ej2-buttons';\nimport { ListBase, getFieldValues } from '../common/list-base';\n/* eslint-disable @typescript-eslint/no-explicit-any */\n// Effect Configuration Effect[] = [fromViewBackward,fromViewForward,toViewBackward,toviewForward];\nconst effectsConfig = {\n 'None': [],\n 'SlideLeft': ['SlideRightOut', 'SlideLeftOut', 'SlideLeftIn', 'SlideRightIn'],\n 'SlideDown': ['SlideTopOut', 'SlideBottomOut', 'SlideBottomIn', 'SlideTopIn'],\n 'Zoom': ['FadeOut', 'FadeZoomOut', 'FadeZoomIn', 'FadeIn'],\n 'Fade': ['FadeOut', 'FadeOut', 'FadeIn', 'FadeIn']\n};\nconst effectsRTLConfig = {\n 'None': [],\n 'SlideLeft': ['SlideLeftOut', 'SlideRightOut', 'SlideRightIn', 'SlideLeftIn'],\n 'SlideDown': ['SlideBottomOut', 'SlideTopOut', 'SlideTopIn', 'SlideBottomIn'],\n 'Zoom': ['FadeZoomOut', 'FadeOut', 'FadeIn', 'FadeZoomIn'],\n 'Fade': ['FadeOut', 'FadeOut', 'FadeIn', 'FadeIn']\n};\n// don't use space in classnames.\nexport const classNames = {\n root: 'e-listview',\n hover: 'e-hover',\n selected: 'e-active',\n focused: 'e-focused',\n parentItem: 'e-list-parent',\n listItem: 'e-list-item',\n listIcon: 'e-list-icon',\n textContent: 'e-text-content',\n listItemText: 'e-list-text',\n groupListItem: 'e-list-group-item',\n hasChild: 'e-has-child',\n view: 'e-view',\n header: 'e-list-header',\n headerText: 'e-headertext',\n headerTemplateText: 'e-headertemplate-text',\n text: 'e-text',\n disable: 'e-disabled',\n container: 'e-list-container',\n icon: 'e-icons',\n backIcon: 'e-icon-back',\n backButton: 'e-back-button',\n checkboxWrapper: 'e-checkbox-wrapper',\n checkbox: 'e-checkbox',\n checked: 'e-check',\n checklist: 'e-checklist',\n checkboxIcon: 'e-frame',\n checkboxRight: 'e-checkbox-right',\n checkboxLeft: 'e-checkbox-left',\n listviewCheckbox: 'e-listview-checkbox',\n itemCheckList: 'e-checklist',\n virtualElementContainer: 'e-list-virtualcontainer'\n};\nconst LISTVIEW_TEMPLATE_PROPERTY = 'Template';\nconst LISTVIEW_GROUPTEMPLATE_PROPERTY = 'GroupTemplate';\nconst LISTVIEW_HEADERTEMPLATE_PROPERTY = 'HeaderTemplate';\nconst swipeVelocity = 0.5;\n/**\n * Represents the field settings of the ListView.\n */\nexport class FieldSettings extends ChildProperty {\n}\n__decorate([\n Property('id')\n], FieldSettings.prototype, \"id\", void 0);\n__decorate([\n Property('text')\n], FieldSettings.prototype, \"text\", void 0);\n__decorate([\n Property('isChecked')\n], FieldSettings.prototype, \"isChecked\", void 0);\n__decorate([\n Property('isVisible')\n], FieldSettings.prototype, \"isVisible\", void 0);\n__decorate([\n Property('enabled')\n], FieldSettings.prototype, \"enabled\", void 0);\n__decorate([\n Property('iconCss')\n], FieldSettings.prototype, \"iconCss\", void 0);\n__decorate([\n Property('child')\n], FieldSettings.prototype, \"child\", void 0);\n__decorate([\n Property('tooltip')\n], FieldSettings.prototype, \"tooltip\", void 0);\n__decorate([\n Property('groupBy')\n], FieldSettings.prototype, \"groupBy\", void 0);\n__decorate([\n Property('text')\n], FieldSettings.prototype, \"sortBy\", void 0);\n__decorate([\n Property('htmlAttributes')\n], FieldSettings.prototype, \"htmlAttributes\", void 0);\n__decorate([\n Property('tableName')\n], FieldSettings.prototype, \"tableName\", void 0);\n/**\n * Represents the EJ2 ListView control.\n * ```html\n * <div id=\"listview\">\n * <ul>\n * <li>Favorite</li>\n * <li>Documents</li>\n * <li>Downloads</li>\n * </ul>\n * </div>\n * ```\n * ```typescript\n * var listviewObject = new ListView({});\n * listviewObject.appendTo(\"#listview\");\n * ```\n */\nlet ListView = class ListView extends Component {\n /**\n * Constructor for creating the widget\n *\n * @param options\n *\n * @param element\n */\n constructor(options, element) {\n super(options, element);\n this.previousSelectedItems = [];\n this.hiddenItems = [];\n this.enabledItems = [];\n this.disabledItems = [];\n }\n /**\n * @param newProp\n *\n * @param oldProp\n *\n * @private\n */\n onPropertyChanged(newProp, oldProp) {\n for (const prop of Object.keys(newProp)) {\n switch (prop) {\n case 'htmlAttributes':\n this.setHTMLAttribute();\n break;\n case 'cssClass':\n this.setCSSClass(oldProp.cssClass);\n break;\n case 'enable':\n this.setEnable();\n break;\n case 'width':\n case 'height':\n this.setSize();\n break;\n case 'enableRtl':\n this.setEnableRTL();\n break;\n case 'fields':\n this.listBaseOption.fields = this.fields.properties;\n if (this.enableVirtualization) {\n this.virtualizationModule.reRenderUiVirtualization();\n }\n else {\n this.reRender();\n }\n break;\n case 'headerTitle':\n if (!this.curDSLevel.length) {\n this.header(this.headerTitle, false, 'header');\n }\n break;\n case 'query':\n if (this.enableVirtualization) {\n this.virtualizationModule.reRenderUiVirtualization();\n }\n else {\n this.reRender();\n }\n break;\n case 'showHeader':\n this.header(this.headerTitle, false, 'header');\n break;\n case 'enableVirtualization':\n if (!isNullOrUndefined(this.contentContainer)) {\n detach(this.contentContainer);\n }\n this.refresh();\n break;\n case 'showCheckBox':\n case 'checkBoxPosition':\n if (this.enableVirtualization) {\n this.virtualizationModule.reRenderUiVirtualization();\n }\n else {\n this.setCheckbox();\n }\n break;\n case 'dataSource':\n if (this.enableVirtualization) {\n this.virtualizationModule.reRenderUiVirtualization();\n }\n else {\n this.reRender();\n }\n break;\n case 'sortOrder':\n case 'template':\n if (!this.enableVirtualization) {\n this.refresh();\n }\n break;\n case 'showIcon':\n if (this.enableVirtualization) {\n this.virtualizationModule.reRenderUiVirtualization();\n }\n else {\n this.listBaseOption.showIcon = this.showIcon;\n this.curViewDS = this.getSubDS();\n this.resetCurrentList();\n }\n break;\n default:\n break;\n }\n }\n }\n // Model Changes\n setHTMLAttribute() {\n if (!isNullOrUndefined(this.htmlAttributes) && Object.keys(this.htmlAttributes).length) {\n attributes(this.element, this.htmlAttributes);\n }\n }\n setCSSClass(oldCSSClass) {\n if (this.cssClass) {\n addClass([this.element], this.cssClass.split(' ').filter((css) => css));\n }\n if (oldCSSClass) {\n removeClass([this.element], oldCSSClass.split(' ').filter((css) => css));\n }\n }\n setSize() {\n this.element.style.height = formatUnit(this.height);\n this.element.style.width = formatUnit(this.width);\n this.isWindow = this.element.clientHeight ? false : true;\n }\n setEnable() {\n this.enableElement(this.element, this.enable);\n }\n setEnableRTL() {\n if (this.enableRtl) {\n this.element.classList.add('e-rtl');\n }\n else {\n this.element.classList.remove('e-rtl');\n }\n }\n enableElement(element, isEnabled) {\n if (isEnabled) {\n element.classList.remove(classNames.disable);\n }\n else {\n element.classList.add(classNames.disable);\n }\n }\n // Support Component Functions\n header(text, showBack, prop) {\n if (this.headerEle === undefined && this.showHeader) {\n this.headerEle = this.createElement('div', { className: classNames.header });\n const innerHeaderEle = this.createElement('span', { className: classNames.headerText });\n if (this.enableHtmlSanitizer) {\n this.setProperties({ headerTitle: SanitizeHtmlHelper.sanitize(this.headerTitle) }, true);\n innerHeaderEle.innerText = this.headerTitle;\n }\n else {\n innerHeaderEle.innerHTML = this.headerTitle;\n }\n const textEle = this.createElement('div', { className: classNames.text, innerHTML: innerHeaderEle.outerHTML });\n const hedBackButton = this.createElement('div', {\n className: classNames.icon + ' ' + classNames.backIcon + ' ' + classNames.backButton,\n attrs: { style: 'display:none;' }\n });\n this.headerEle.appendChild(hedBackButton);\n this.headerEle.appendChild(textEle);\n if (this.headerTemplate) {\n const compiledString = compile(this.headerTemplate);\n const headerTemplateEle = this.createElement('div', { className: classNames.headerTemplateText });\n const compiledElement = compiledString({}, this, prop, this.LISTVIEW_HEADERTEMPLATE_ID, null, null, this.headerEle);\n if (compiledElement) {\n append(compiledElement, headerTemplateEle);\n }\n append([headerTemplateEle], this.headerEle);\n if (this.isReact) {\n this.renderReactTemplates();\n }\n }\n if (this.headerTemplate && this.headerTitle) {\n textEle.classList.add('header');\n }\n this.element.classList.add('e-has-header');\n prepend([this.headerEle], this.element);\n }\n else if (this.headerEle) {\n if (this.showHeader) {\n this.headerEle.style.display = '';\n const textEle = this.headerEle.querySelector('.' + classNames.headerText);\n const hedBackButton = this.headerEle.querySelector('.' + classNames.backIcon);\n if (this.enableHtmlSanitizer) {\n text = SanitizeHtmlHelper.sanitize(text);\n }\n textEle.innerHTML = text;\n if (this.headerTemplate && showBack) {\n textEle.parentElement.classList.remove('header');\n this.headerEle.querySelector('.' + classNames.headerTemplateText).classList.add('nested-header');\n }\n if (this.headerTemplate && !showBack) {\n textEle.parentElement.classList.add('header');\n this.headerEle.querySelector('.' + classNames.headerTemplateText).classList.remove('nested-header');\n this.headerEle.querySelector('.' + classNames.headerTemplateText).classList.add('header');\n }\n if (showBack === true) {\n hedBackButton.style.display = '';\n }\n else {\n hedBackButton.style.display = 'none';\n }\n }\n else {\n this.headerEle.style.display = 'none';\n }\n }\n }\n // Animation Related Functions\n switchView(fromView, toView, reverse) {\n if (fromView && toView) {\n const fPos = fromView.style.position;\n const overflow = (this.element.style.overflow !== 'hidden') ? this.element.style.overflow : '';\n fromView.style.position = 'absolute';\n fromView.classList.add('e-view');\n let anim;\n let duration = this.animation.duration;\n if (this.animation.effect) {\n anim = (this.enableRtl ? effectsRTLConfig[this.animation.effect] : effectsConfig[this.animation.effect]);\n }\n else {\n const slideLeft = 'SlideLeft';\n anim = effectsConfig[`${slideLeft}`];\n reverse = this.enableRtl;\n duration = 0;\n }\n this.element.style.overflow = 'hidden';\n this.aniObj.animate(fromView, {\n name: (reverse === true ? anim[0] : anim[1]),\n duration: (duration === 0 && animationMode === 'Enable') ? 400 : duration,\n timingFunction: this.animation.easing,\n end: () => {\n fromView.style.display = 'none';\n this.element.style.overflow = overflow;\n fromView.style.position = fPos;\n fromView.classList.remove('e-view');\n }\n });\n toView.style.display = '';\n this.aniObj.animate(toView, {\n name: (reverse === true ? anim[2] : anim[3]),\n duration: (duration === 0 && animationMode === 'Enable') ? 400 : duration,\n timingFunction: this.animation.easing,\n end: () => {\n this.trigger('actionComplete');\n }\n });\n this.curUL = toView;\n }\n }\n preRender() {\n if (this.template) {\n try {\n if (typeof this.template !== 'function' && document.querySelectorAll(this.template).length) {\n this.setProperties({ template: document.querySelector(this.template).innerHTML.trim() }, true);\n }\n }\n catch (e) {\n compile(this.template);\n }\n }\n this.listBaseOption = {\n template: this.template,\n headerTemplate: this.headerTemplate,\n groupTemplate: this.groupTemplate, expandCollapse: true, listClass: '',\n ariaAttributes: {\n itemRole: 'listitem', listRole: 'list', itemText: '',\n groupItemRole: 'presentation', wrapperRole: 'presentation'\n },\n fields: (this.fields.properties),\n sortOrder: this.sortOrder,\n showIcon: this.showIcon,\n itemCreated: this.renderCheckbox.bind(this),\n templateID: `${this.element.id}${LISTVIEW_TEMPLATE_PROPERTY}`,\n groupTemplateID: `${this.element.id}${LISTVIEW_GROUPTEMPLATE_PROPERTY}`,\n enableHtmlSanitizer: this.enableHtmlSanitizer\n };\n this.initialization();\n }\n initialization() {\n this.curDSLevel = [];\n this.animateOptions = {};\n this.curViewDS = [];\n this.currentLiElements = [];\n this.isNestedList = false;\n this.selectedData = [];\n this.selectedId = this.enablePersistence ? this.selectedId : [];\n this.LISTVIEW_TEMPLATE_ID = `${this.element.id}${LISTVIEW_TEMPLATE_PROPERTY}`;\n this.LISTVIEW_GROUPTEMPLATE_ID = `${this.element.id}${LISTVIEW_GROUPTEMPLATE_PROPERTY}`;\n this.LISTVIEW_HEADERTEMPLATE_ID = `${this.element.id}${LISTVIEW_HEADERTEMPLATE_PROPERTY}`;\n this.aniObj = new Animation(this.animateOptions);\n this.removeElement(this.curUL);\n this.removeElement(this.ulElement);\n this.removeElement(this.headerEle);\n this.removeElement(this.contentContainer);\n this.curUL = this.ulElement = this.liCollection = this.headerEle = this.contentContainer = undefined;\n }\n renderCheckbox(args) {\n if (args.item.classList.contains(classNames.hasChild)) {\n this.isNestedList = true;\n }\n if (this.showCheckBox && args.item.classList.contains(classNames.listItem)) {\n let fieldData;\n const checkboxElement = createCheckBox(this.createElement, false, {\n checked: false, enableRtl: this.enableRtl,\n cssClass: classNames.listviewCheckbox\n });\n checkboxElement.setAttribute('role', 'checkbox');\n const frameElement = checkboxElement.querySelector('.' + classNames.checkboxIcon);\n args.item.classList.add(classNames.itemCheckList);\n args.item.firstElementChild.classList.add(classNames.checkbox);\n if (typeof this.dataSource[0] !== 'string' && typeof this.dataSource[0] !== 'number') {\n fieldData = getFieldValues(args.curData, this.listBaseOption.fields);\n if (this.enablePersistence && !isNullOrUndefined(this.selectedId)) {\n const index = this.selectedId.findIndex((e) => e === fieldData[this.listBaseOption.fields.id].toString());\n if (index !== -1) {\n this.checkInternally(args, checkboxElement);\n }\n }\n else if (fieldData[this.listBaseOption.fields.isChecked]) {\n this.checkInternally(args, checkboxElement);\n }\n }\n else if (((typeof this.dataSource[0] === 'string' ||\n typeof this.dataSource[0] === 'number') && this.selectedData.indexOf(args.text) !== -1)) {\n this.checkInternally(args, checkboxElement);\n }\n checkboxElement.setAttribute('aria-checked', frameElement.classList.contains(classNames.checked) ? 'true' : 'false');\n checkboxElement.setAttribute('aria-label', args.text);\n if (this.checkBoxPosition === 'Left') {\n checkboxElement.classList.add(classNames.checkboxLeft);\n args.item.firstElementChild.classList.add(classNames.checkboxLeft);\n args.item.firstElementChild.insertBefore(checkboxElement, args.item.firstElementChild.childNodes[0]);\n }\n else {\n checkboxElement.classList.add(classNames.checkboxRight);\n args.item.firstElementChild.classList.add(classNames.checkboxRight);\n args.item.firstElementChild.appendChild(checkboxElement);\n }\n this.currentLiElements.push(args.item);\n if (this.checkBoxPosition === 'Left') {\n this.virtualCheckBox = args.item.firstElementChild.children[0];\n }\n else {\n this.virtualCheckBox = args.item.firstElementChild.lastElementChild;\n }\n }\n }\n checkInternally(args, checkboxElement) {\n args.item.classList.add(classNames.selected);\n checkboxElement.querySelector('.' + classNames.checkboxIcon).classList.add(classNames.checked);\n checkboxElement.setAttribute('aria-checked', 'true');\n }\n /**\n * Checks the specific list item by passing the unchecked fields as an argument to this method.\n *\n * @param {Fields | HTMLElement | Element} item - It accepts Fields or HTML list element as an argument.\n */\n checkItem(item) {\n this.toggleCheckBase(item, true);\n }\n toggleCheckBase(item, checked) {\n if (this.showCheckBox) {\n let liElement = item;\n if (item instanceof Object && item.constructor !== HTMLLIElement) {\n liElement = this.getLiFromObjOrElement(item);\n }\n if (!isNullOrUndefined(liElement)) {\n const checkboxIcon = liElement.querySelector('.' + classNames.checkboxIcon);\n if (checked === true) {\n liElement.classList.add(classNames.selected);\n }\n else {\n liElement.classList.remove(classNames.selected);\n }\n if (checked === true) {\n checkboxIcon.classList.add(classNames.checked);\n }\n else {\n checkboxIcon.classList.remove(classNames.checked);\n }\n checkboxIcon.parentElement.setAttribute('aria-checked', checked ? 'true' : 'false');\n }\n this.setSelectedItemData(liElement);\n this.updateSelectedId();\n }\n }\n /**\n * Uncheck the specific list item by passing the checked fields as an argument to this method.\n *\n * @param {Fields | HTMLElement | Element} item - It accepts Fields or HTML list element as an argument.\n */\n uncheckItem(item) {\n this.toggleCheckBase(item, false);\n }\n /**\n * Checks all the unchecked items in the ListView.\n */\n checkAllItems() {\n this.toggleAllCheckBase(true);\n }\n /**\n * Uncheck all the checked items in ListView.\n */\n uncheckAllItems() {\n this.toggleAllCheckBase(false);\n }\n toggleAllCheckBase(checked) {\n if (this.showCheckBox) {\n for (let i = 0; i < this.liCollection.length; i++) {\n const checkIcon = this.liCollection[i].querySelector('.' + classNames.checkboxIcon);\n if (checkIcon) {\n if (checked) {\n if (!checkIcon.classList.contains(classNames.checked)) {\n this.checkItem(this.liCollection[i]);\n }\n }\n else {\n if (checkIcon.classList.contains(classNames.checked)) {\n this.uncheckItem(this.liCollection[i]);\n }\n }\n }\n }\n if (this.enableVirtualization) {\n this.virtualizationModule.checkedItem(checked);\n }\n this.updateSelectedId();\n }\n }\n setCheckbox() {\n if (this.showCheckBox) {\n const liCollection = Array.prototype.slice.call(this.element.querySelectorAll('.' + classNames.listItem));\n const args = {\n item: undefined, curData: undefined, dataSource: undefined, fields: undefined,\n options: undefined, text: ''\n };\n for (let i = 0; i < liCollection.length; i++) {\n const element = liCollection[i];\n args.item = element;\n args.curData = this.getItemData(element);\n if (element.querySelector('.' + classNames.checkboxWrapper)) {\n this.removeElement(element.querySelector('.' + classNames.checkboxWrapper));\n }\n this.renderCheckbox(args);\n if (args.item.classList.contains(classNames.selected)) {\n this.checkInternally(args, args.item.querySelector('.' + classNames.checkboxWrapper));\n }\n }\n }\n else {\n const liCollection = Array.prototype.slice.call(this.element.querySelectorAll('.' + classNames.itemCheckList));\n for (let i = 0; i < liCollection.length; i++) {\n const element = liCollection[i];\n element.classList.remove(classNames.selected);\n element.firstElementChild.classList.remove(classNames.checkbox);\n this.removeElement(element.querySelector('.' + classNames.checkboxWrapper));\n }\n if (this.selectedItems) {\n this.selectedItems.item.classList.add(classNames.selected);\n }\n }\n }\n /**\n * Refresh the height of the list item only on enabling the virtualization property.\n */\n refreshItemHeight() {\n if (this.virtualizationModule) {\n this.virtualizationModule.refreshItemHeight();\n }\n }\n clickHandler(e) {\n if (Array.isArray(this.dataSource) && this.dataSource.length === 0) {\n return;\n }\n const target = e.target;\n this.targetElement = target;\n const classList = target.classList;\n let closestElement;\n if (classList.contains(classNames.backIcon) || classList.contains(classNames.headerText)) {\n if (this.showCheckBox && this.curDSLevel[this.curDSLevel.length - 1]) {\n this.uncheckAllItems();\n }\n this.back();\n }\n else {\n let li = closest(target.parentNode, '.' + classNames.listItem);\n if (li === null) {\n li = target;\n }\n this.removeFocus();\n if (this.enable && this.showCheckBox && this.isValidLI(li)) {\n if (e.target.classList.contains(classNames.checkboxIcon)) {\n li.classList.add(classNames.focused);\n if (isNullOrUndefined(li.querySelector('.' + classNames.checked))) {\n const args = {\n curData: undefined, dataSource: undefined, fields: undefined, options: undefined,\n text: undefined, item: li\n };\n this.checkInternally(args, args.item.querySelector('.' + classNames.checkboxWrapper));\n }\n else {\n this.uncheckItem(li);\n li.classList.add(classNames.focused);\n }\n if (this.enableVirtualization) {\n this.virtualizationModule.setCheckboxLI(li, e);\n }\n if (e) {\n const eventArgs = this.selectEventData(li, e);\n const checkIcon = li.querySelector('.' + classNames.checkboxIcon);\n merge(eventArgs, { isChecked: checkIcon.classList.contains(classNames.checked) });\n this.trigger('select', eventArgs);\n }\n }\n else if (li.classList.contains(classNames.hasChild)) {\n this.removeHover();\n this.removeSelect();\n this.removeSelect(li);\n this.setSelectLI(li, e);\n li.classList.remove(classNames.selected);\n }\n else {\n this.setCheckboxLI(li, e);\n if ((target.nodeName === 'INPUT') || (target.nodeName === 'TEXTAREA')) {\n target.classList.add('e-focused');\n this.targetElement = target;\n }\n }\n }\n else {\n this.setSelectLI(li, e);\n if ((target.nodeName === 'INPUT') || (target.nodeName === 'TEXTAREA')) {\n target.classList.add('e-focused');\n this.targetElement = target;\n }\n }\n closestElement = closest(e.target, 'li');\n if (!isNullOrUndefined(closestElement)) {\n if (closestElement.classList.contains('e-has-child') &&\n !e.target.parentElement.classList.contains('e-listview-checkbox')) {\n closestElement.classList.add(classNames.disable);\n }\n }\n }\n this.updateSelectedId();\n }\n removeElement(element) {\n return element && element.parentNode && element.parentNode.removeChild(element);\n }\n hoverHandler(e) {\n const curLi = closest(e.target.parentNode, '.' + classNames.listItem);\n this.setHoverLI(curLi);\n }\n leaveHandler() {\n this.removeHover();\n }\n homeKeyHandler(e, end) {\n e.preventDefault();\n if (Object.keys(this.dataSource).length && this.curUL) {\n const li = this.curUL.querySelectorAll('.' + classNames.listItem);\n const focusedElement = this.curUL.querySelector('.' + classNames.focused) ||\n this.curUL.querySelector('.' + classNames.selected);\n if (focusedElement) {\n focusedElement.classList.remove(classNames.focused);\n if (!this.showCheckBox) {\n focusedElement.classList.remove(classNames.selected);\n }\n }\n const index = !end ? 0 : li.length - 1;\n if (li[index].classList.contains(classNames.hasChild) || this.showCheckBox) {\n li[index].classList.add(classNames.focused);\n }\n else {\n this.setSelectLI(li[index], e);\n }\n if (li[index]) {\n this.element.setAttribute('aria-activedescendant', li[index].id.toString());\n }\n else {\n this.element.removeAttribute('aria-activedescendant');\n }\n }\n }\n onArrowKeyDown(e, prev) {\n let siblingLI;\n let li;\n const hasChild = !isNullOrUndefined(this.curUL.querySelector('.' + classNames.hasChild)) ? true : false;\n if (hasChild || this.showCheckBox) {\n li = this.curUL.querySelector('.' + classNames.focused) || this.curUL.querySelector('.' + classNames.selected);\n siblingLI = ListBase.getSiblingLI(this.curUL.querySelectorAll('.' + classNames.listItem), li, prev);\n if (!isNullOrUndefined(siblingLI)) {\n if (li) {\n li.classList.remove(classNames.focused);\n if (!this.showCheckBox) {\n li.classList.remove(classNames.selected);\n }\n }\n if (siblingLI.classList.contains(classNames.hasChild) || this.showCheckBox) {\n siblingLI.classList.add(classNames.focused);\n }\n else {\n this.setSelectLI(siblingLI, e);\n }\n }\n }\n else {\n li = this.curUL.querySelector('.' + classNames.selected);\n siblingLI = ListBase.getSiblingLI(this.curUL.querySelectorAll('.' + classNames.listItem), li, prev);\n this.setSelectLI(siblingLI, e);\n }\n if (siblingLI) {\n this.element.setAttribute('aria-activedescendant', siblingLI.id.toString());\n }\n else {\n this.element.removeAttribute('aria-activedescendant');\n }\n return siblingLI;\n }\n arrowKeyHandler(e, prev) {\n e.preventDefault();\n if (Object.keys(this.dataSource).length && this.curUL) {\n const siblingLI = this.onArrowKeyDown(e, prev);\n const elementTop = this.element.getBoundingClientRect().top;\n const elementHeight = this.element.getBoundingClientRect().height;\n const firstItemBounds = this.curUL.querySelector('.' + classNames.listItem).getBoundingClientRect();\n let heightDiff;\n let groupItemBounds;\n if (this.fields.groupBy) {\n groupItemBounds = this.curUL.querySelector('.' + classNames.groupListItem).getBoundingClientRect();\n }\n if (siblingLI) {\n const siblingTop = siblingLI.getBoundingClientRect().top;\n const siblingHeight = siblingLI.getBoundingClientRect().height;\n if (!prev) {\n const height = this.isWindow ? window.innerHeight : elementHeight;\n heightDiff = this.isWindow ? (siblingTop + siblingHeight) :\n ((siblingTop - elementTop) + siblingHeight);\n if (heightDiff > height) {\n if (this.isWindow === true) {\n window.scroll(0, pageYOffset + (heightDiff - height));\n }\n else {\n this.element.scrollTop = this.element.scrollTop + (heightDiff - height);\n }\n }\n }\n else {\n heightDiff = this.isWindow ? siblingTop : (siblingTop - elementTop);\n if (heightDiff < 0) {\n if (this.isWindow === true) {\n window.scroll(0, pageYOffset + heightDiff);\n }\n else {\n this.element.scrollTop = this.element.scrollTop + heightDiff;\n }\n }\n }\n }\n else if (this.enableVirtualization && prev && this.virtualizationModule.uiFirstIndex) {\n this.onUIScrolled = () => {\n this.onArrowKeyDown(e, prev);\n this.onUIScrolled = undefined;\n };\n heightDiff = this.virtualizationModule.listItemHeight;\n if (this.isWindow === true) {\n window.scroll(0, pageYOffset - heightDiff);\n }\n else {\n this.element.scrollTop = this.element.scrollTop - heightDiff;\n }\n }\n else if (prev) {\n if (this.showHeader && this.headerEle) {\n const topHeight = groupItemBounds ? groupItemBounds.top : firstItemBounds.top;\n const headerBounds = this.headerEle.getBoundingClientRect();\n heightDiff = headerBounds.top < 0 ? (headerBounds.height - topHeight) : 0;\n if (this.isWindow === true) {\n window.scroll(0, pageYOffset - heightDiff);\n }\n else {\n this.element.scrollTop = 0;\n }\n }\n else if (this.fields.groupBy) {\n heightDiff = this.isWindow ? (groupItemBounds.top < 0 ? groupItemBounds.top : 0) :\n (elementTop - firstItemBounds.top) + groupItemBounds.height;\n if (this.isWindow === true) {\n window.scroll(0, pageYOffset + heightDiff);\n }\n else {\n this.element.scrollTop = this.element.scrollTop - heightDiff;\n }\n }\n }\n }\n }\n enterKeyHandler(e) {\n if (Object.keys(this.dataSource).length && this.curUL) {\n const hasChild = !isNullOrUndefined(this.curUL.querySelector('.' + classNames.hasChild)) ? true : false;\n const li = this.curUL.querySelector('.' + classNames.focused);\n if (hasChild && li) {\n li.classList.remove(classNames.focused);\n if (this.showCheckBox) {\n this.removeSelect();\n this.removeSelect(li);\n this.removeHover();\n }\n this.setSelectLI(li, e);\n }\n }\n }\n spaceKeyHandler(e) {\n if (this.enable && this.showCheckBox && Object.keys(this.dataSource).length && this.curUL) {\n e.preventDefault();\n const li = this.curUL.querySelector('.' + classNames.focused);\n let checkboxElement;\n let checkIcon;\n if (!isNullOrUndefined(li) && isNullOrUndefined(li.querySelector('.' + classNames.checked))) {\n const args = {\n curData: undefined, dataSource: undefined, fields: undefined, options: undefined,\n text: undefined, item: li\n };\n checkboxElement = args.item.querySelector('.' + classNames.checkboxWrapper);\n this.checkInternally(args, checkboxElement);\n checkIcon = checkboxElement.querySelector('.' + classNames.checkboxIcon + '.' + classNames.icon);\n }\n else {\n this.uncheckItem(li);\n }\n const eventArgs = this.selectEventData(li, e);\n merge(eventArgs, { isChecked: checkIcon ? checkIcon.classList.contains(classNames.checked) : false });\n this.trigger('select', eventArgs);\n this.updateSelectedId();\n }\n }\n keyActionHandler(e) {\n switch (e.keyCode) {\n case 36:\n this.homeKeyHandler(e);\n break;\n case 35:\n this.homeKeyHandler(e, true);\n break;\n case 40:\n this.arrowKeyHandler(e);\n break;\n case 38:\n this.arrowKeyHandler(e, true);\n break;\n case 13:\n this.enterKeyHandler(e);\n break;\n case 8:\n if (this.showCheckBox && this.curDSLevel[this.curDSLevel.length - 1]) {\n this.uncheckAllItems();\n }\n this.back();\n break;\n case 32:\n if (isNullOrUndefined(this.targetElement) || !(this.targetElement.classList.contains('e-focused'))) {\n this.spaceKeyHandler(e);\n }\n break;\n }\n }\n swipeActionHandler(e) {\n if (e.swipeDirection === 'Right' && e.velocity > swipeVelocity && e.originalEvent.type === 'touchend') {\n if (this.showCheckBox && this.curDSLevel[this.curDSLevel.length - 1]) {\n this.uncheckAllItems();\n }\n this.back();\n }\n }\n focusout() {\n if (Object.keys(this.dataSource).length && this.curUL) {\n const focusedElement = this.curUL.querySelector('.' + classNames.focused);\n if (focusedElement) {\n focusedElement.classList.remove(classNames.focused);\n if (!this.showCheckBox && !isNullOrUndefined(this.selectedLI)) {\n this.selectedLI.classList.add(classNames.selected);\n }\n }\n }\n }\n wireEvents() {\n EventHandler.add(this.element, 'keydown', this.keyActionHandler, this);\n EventHandler.add(this.element, 'click', this.clickHandler, this);\n EventHandler.add(this.element, 'mouseover', this.hoverHandler, this);\n EventHandler.add(this.element, 'mouseout', this.leaveHandler, this);\n EventHandler.add(this.element, 'focusout', this.focusout, this);\n this.touchModule = new Touch(this.element, { swipe: this.swipeActionHandler.bind(this) });\n if (!isNullOrUndefined(this.scroll)) {\n EventHandler.add(this.element, 'scroll', this.onListScroll, this);\n }\n }\n unWireEvents() {\n EventHandler.remove(this.element, 'keydown', this.keyActionHandler);\n EventHandler.remove(this.element, 'click', this.clickHandler);\n EventHandler.remove(this.element, 'mouseover', this.hoverHandler);\n EventHandler.remove(this.element, 'mouseout', this.leaveHandler);\n EventHandler.remove(this.element, 'mouseover', this.hoverHandler);\n EventHandler.remove(this.element, 'mouseout', this.leaveHandler);\n EventHandler.remove(this.element, 'focusout', this.focusout);\n if (!isNullOrUndefined(this.scroll)) {\n EventHandler.remove(this.element, 'scroll', this.onListScroll);\n }\n if (this.touchModule)\n this.touchModule.destroy();\n this.touchModule = null;\n }\n removeFocus() {\n const focusedLI = this.element.querySelectorAll('.' + classNames.focused);\n for (const ele of focusedLI) {\n ele.classList.remove(classNames.focused);\n }\n }\n removeHover() {\n const hoverLI = this.element.querySelector('.' + classNames.hover);\n if (hoverLI) {\n hoverLI.classList.remove(classNames.hover);\n }\n }\n removeSelect(li) {\n if (isNullOrUndefined(li)) {\n const selectedLI = this.element.querySelectorAll('.' + classNames.selected);\n for (const ele of selectedLI) {\n if (this.showCheckBox && ele.querySelector('.' + classNames.checked)) {\n continue;\n }\n else {\n ele.classList.remove(classNames.selected);\n }\n }\n }\n else {\n li.classList.remove(classNames.selected);\n }\n }\n isValidLI(li) {\n return (li && li.classList.contains(classNames.listItem)\n && !li.classList.contains(classNames.groupListItem)\n && !li.classList.contains(classNames.disable));\n }\n setCheckboxLI(li, e) {\n if (this.isValidLI(li) && this.enable && this.showCheckBox) {\n if (this.curUL.querySelector('.' + classNames.focused)) {\n this.curUL.querySelector('.' + classNames.focused).classList.remove(classNames.focused);\n }\n const textAreaFocus = li.querySelector('textarea') || li.querySelector('input');\n li.classList.add(classNames.focused);\n if (!isNullOrUndefined(e)) {\n if (e.target === textAreaFocus) {\n textAreaFocus.classList.add('e-focused');\n }\n }\n const checkboxElement = li.querySelector('.' + classNames.checkboxWrapper);\n const checkIcon = checkboxElement.querySelector('.' + classNames.checkboxIcon + '.' + classNames.icon);\n this.removeHover();\n if (!checkIcon.classList.contains(classNames.checked)) {\n checkIcon.classList.add(classNames.checked);\n li.classList.add(classNames.selected);\n }\n else {\n checkIcon.classList.remove(classNames.checked);\n li.classList.remove(classNames.selected);\n }\n checkboxElement.setAttribute('aria-checked', checkIcon.classList.contains(classNames.checked) ?\n 'true' : 'false');\n const eventArgs = this.selectEventData(li, e);\n merge(eventArgs, { isChecked: checkIcon.classList.contains(classNames.checked) });\n if (this.enableVirtualization) {\n this.virtualizationModule.setCheckboxLI(li, e);\n }\n this.trigger('select', eventArgs);\n this.setSelectedItemData(li);\n this.renderSubList(li);\n }\n }\n selectEventData(li, e) {\n const data = this.getItemData(li);\n const fieldData = getFieldValues(data, this.listBaseOption.fields);\n let selectedItem;\n if (!isNullOrUndefined(data)\n && typeof this.dataSource[0] === 'string' || typeof this.dataSource[0] === 'number') {\n selectedItem = { item: li, text: li && li.innerText.trim(), data: this.dataSource };\n }\n else {\n selectedItem =\n {\n item: li, text: fieldData && fieldData[this.listBaseOption.fields.text],\n data: data\n };\n }\n const eventArgs = {};\n merge(eventArgs, selectedItem);\n if (e) {\n merge(eventArgs, {\n isInteracted: true,\n event: e,\n cancel: false,\n index: this.curUL && Array.prototype.indexOf.call(this.curUL.children, li)\n });\n }\n return eventArgs;\n }\n setSelectedItemData(li) {\n const data = this.getItemData(li);\n const fieldData = getFieldValues(data, this.listBaseOption.fields);\n if (!isNullOrUndefined(data) && ((typeof this.dataSource[0] === 'string') ||\n (typeof this.dataSource[0] === 'number'))) {\n this.selectedItems = {\n item: li,\n text: li && li.innerText.trim(),\n data: this.dataSource\n };\n }\n else {\n this.selectedItems = {\n item: li,\n text: fieldData && fieldData[this.listBaseOption.fields.text],\n data: data\n };\n }\n }\n setSelectLI(li, e) {\n if (this.isValidLI(li) && !li.classList.contains(classNames.selected) && this.enable) {\n if (!this.showCheckBox) {\n this.removeSelect();\n }\n li.classList.add(classNames.selected);\n this.removeHover();\n this.setSelectedItemData(li);\n if (this.enableVirtualization) {\n this.virtualizationModule.setSelectLI(li, e);\n }\n const eventArgs = this.selectEventData(li, e);\n this.trigger('select', eventArgs, (observedArgs) => {\n if (!observedArgs.cancel) {\n this.selectedLI = li;\n this.renderSubList(li);\n }\n });\n }\n }\n setHoverLI(li) {\n if (this.isValidLI(li) && !li.classList.contains(classNames.hover) && this.enable) {\n const lastLi = this.element.querySelectorAll('.' + classNames.hover);\n if (lastLi && lastLi.length) {\n removeClass(lastLi, classNames.hover);\n }\n if (!li.classList.contains(classNames.selected) || this.showCheckBox) {\n li.classList.add(classNames.hover);\n }\n }\n }\n //Data Source Related Functions\n getSubDS() {\n const levelKeys = this.curDSLevel;\n if (levelKeys.length) {\n let ds = this.localData;\n for (const key of levelKeys) {\n const field = {};\n field[this.fields.id] = key;\n this.curDSJSON = this.findItemFromDS(ds, field);\n const fieldData = getFieldValues(this.curDSJSON, this.listBaseOption.fields);\n ds = this.curDSJSON ? fieldData[this.fields.child] : ds;\n }\n return ds;\n }\n return this.localData;\n }\n getItemData(li) {\n const dataSource = this.dataSource instanceof DataManager ?\n this.localData : this.dataSource;\n const fields = this.getElementUID(li);\n let curDS;\n if (isNullOrUndefined(this.element.querySelector('.' + classNames.hasChild)) && this.fields.groupBy) {\n curDS = this.curViewDS;\n }\n else {\n curDS = dataSource;\n }\n return this.findItemFromDS(curDS, fields);\n }\n findItemFromDS(dataSource, fields, parent) {\n let resultJSON;\n if (dataSource && dataSource.length && fields) {\n dataSource.some((data) => {\n const fieldData = getFieldValues(data, this.listBaseOption.fields);\n //(!(fid) || id === fid) && (!(ftext) || text === ftext) && (!!fid || !!ftext)\n if ((fields[this.fields.id] || fields[this.fields.text]) &&\n (!fields[this.fields.id] || (!isNullOrUndefined(fieldData[this.fields.id]) &&\n fieldData[this.fields.id].toString()) === fields[this.fields.id].toString()) &&\n (!fields[this.fields.text] || fieldData[this.fields.text] === fields[this.fields.text])) {\n resultJSON = (parent ? dataSource : data);\n }\n else if (typeof data !== 'object' && dataSource.indexOf(data) !== -1) {\n resultJSON = (parent ? dataSource : data);\n }\n else if (!isNullOrUndefined(fields[this.fields.id]) && isNullOrUndefined(fieldData[this.fields.id])) {\n const li = this.element.querySelector('[data-uid=\"'\n + fields[this.fields.id] + '\"]');\n if (li && li.innerText.trim() === fieldData[this.fields.text]) {\n resultJSON = data;\n }\n }\n else if (Object.prototype.hasOwnProperty.call(fieldData, this.fields.child) &&\n fieldData[this.fields.child].length) {\n resultJSON = this.findItemFromDS(fieldData[this.fields.child], fields, parent);\n }\n return !!resultJSON;\n });\n }\n else {\n resultJSON = dataSource;\n }\n return resultJSON;\n }\n getQuery() {\n const columns = [];\n const query = (this.query ? this.query : new Query());\n if (!this.query) {\n for (const column of Object.keys(this.fields.properties)) {\n if (column !== 'tableName' && !!(this.fields[`${column}`]) &&\n this.fields[`${column}`] !==\n ListBase.defaultMappedFields[`${column}`]\n && columns.indexOf(this.fields[`${column}`]) === -1) {\n columns.push(this.fields[`${column}`]);\n }\n }\n query.select(columns);\n if (Object.prototype.hasOwnProperty.call(this.fields.properties, 'tableName')) {\n query.from(this.fields.tableName);\n }\n }\n return query;\n }\n setViewDataSource(dataSource = this.localData) {\n const fieldValue = (isNullOrUndefined(this.fields.sortBy)) ? this.fields.text : this.fields.sortBy;\n const query = ListBase.addSorting(this.sortOrder, fieldValue);\n if (dataSource && this.fields.groupBy) {\n if (this.sortOrder !== 'None') {\n this.curViewDS = ListBase.groupDataSource(ListBase.getDataSource(dataSource, query), this.listBaseOption.fields, this.sortOrder);\n }\n else {\n this.curViewDS = ListBase.groupDataSource(dataSource, this.listBaseOption.fields, this.sortOrder);\n }\n }\n else if (dataSource && this.sortOrder !== 'None') {\n this.curViewDS = ListBase.getDataSource(dataSource, query);\n }\n else {\n this.curViewDS = dataSource;\n }\n }\n isInAnimation() {\n return this.curUL.classList.contains('.e-animate');\n }\n renderRemoteLists(e, listViewComponent) {\n if (this.isDestroyed) {\n return;\n }\n this.localData = e.result;\n listViewComponent.removeElement(listViewComponent.contentContainer);\n this.renderList();\n this.trigger('actionComplete', e);\n }\n triggerActionFailure(e) {\n if (this.isDestroyed) {\n return;\n }\n this.trigger('actionFailure', e);\n }\n setLocalData() {\n this.trigger('actionBegin');\n if (this.dataSource instanceof DataManager) {\n if (this.dataSource.ready) {\n this.dataSource.ready.then((e) => {\n this.isOffline = this.dataSource.dataSource.offline;\n if (this.dataSource instanceof DataManager && this.isOffline) {\n this.renderRemoteLists(e, this);\n }\n }).catch((e) => {\n this.triggerActionFailure(e);\n });\n }\n else {\n this.dataSource.executeQuery(this.getQuery()).then((e) => {\n this.renderRemoteLists(e, this);\n }).catch((e) => {\n this.triggerActionFailure(e);\n });\n }\n }\n else if (!this.dataSource || !this.dataSource.length) {\n const ul = this.element.querySelector('ul');\n if (ul) {\n remove(ul);\n this.setProperties({ dataSource: ListBase.createJsonFromElement(ul) }, true);\n this.localData = this.dataSource;\n this.renderList();\n this.trigger('actionComplete', { data: this.localData });\n }\n }\n else {\n this.localData = this.dataSource;\n this.renderList();\n this.trigger('actionComplete', { data: this.localData });\n }\n }\n reRender() {\n this.removeElement(this.headerEle);\n this.removeElement(this.ulElement);\n this.removeElement(this.contentContainer);\n if (this.isReact) {\n this.clearTemplate();\n }\n if (Object.keys(window).indexOf('ejsInterop') === -1) {\n this.element.innerHTML = '';\n }\n this.headerEle = this.ulElement = this.liCollection = undefined;\n this.header();\n this.setLocalData();\n }\n resetCurrentList() {\n this.setViewDataSource(this.curViewDS);\n this.contentContainer.innerHTML = '';\n this.createList();\n this.renderIntoDom(this.curUL);\n }\n setAttributes(liElements) {\n for (let i = 0; i < liElements.length; i++) {\n const element = liElements[parseInt(i.toString(), 10)];\n if (element.classList.contains('e-list-item')) {\n element.setAttribute('id', this.element.id + '_' + element.getAttribute('data-uid'));\n element.setAttribute('tabindex', '-1');\n }\n }\n }\n createList() {\n this.currentLiElements = [];\n this.isNestedList = false;\n this.ulElement = this.curUL = ListBase.createList(this.createElement, this.curViewDS, this.listBaseOption, null, this);\n this.liCollection = this.curUL.querySelectorAll('.' + classNames.listItem);\n this.setAttributes(this.liCollection);\n }\n renderSubList(li) {\n this.liElement = li;\n const uID = li.getAttribute('data-uid');\n if (li.classList.contains(classNames.hasChild) && uID) {\n const ul = closest(li.parentNode, '.' + classNames.parentItem);\n let ele = this.element.querySelector('[pid=\\'' + uID + '\\']');\n this.curDSLevel.push(uID);\n this.setViewDataSource(this.getSubDS());\n if (!ele) {\n const data = this.curViewDS;\n ele = ListBase.createListFromJson(this.createElement, data, this.listBaseOption, this.curDSLevel.length, null, this);\n if (this.isReact) {\n this.renderReactTemplates();\n }\n const lists = ele.querySelectorAll('.' + classNames.listItem);\n this.setAttributes(lists);\n ele.setAttribute('pID', uID);\n ele.style.display = 'none';\n this.renderIntoDom(ele);\n }\n this.switchView(ul, ele);\n this.liCollection = this.curUL.querySelectorAll('.' + classNames.listItem);\n if (this.selectedItems) {\n const fieldData = getFieldValues(this.selectedItems.data, this.listBaseOption.fields);\n this.header((fieldData[this.listBaseOption.fields.text]), true, 'header');\n }\n this.selectedLI = undefined;\n }\n }\n renderIntoDom(ele) {\n this.contentContainer.appendChild(ele);\n }\n renderList(data) {\n this.setViewDataSource(data);\n if (this.enableVirtualization) {\n if (Object.keys(this.dataSource).length) {\n if ((this.template || this.groupTemplate) && !this.virtualizationModule.isNgTemplate()) {\n this.listBaseOption.itemCreated = this.virtualizationModule.createUIItem.bind(this.virtualizationModule);\n }\n }\n this.virtualizationModule.uiVirtualization();\n }\n else {\n this.createList();\n this.contentContainer = this.createElement('div', { className: classNames.container });\n this.element.appendChild(this.contentContainer);\n this.renderIntoDom(this.ulElement);\n if (this.isReact) {\n this.renderReactTemplates();\n }\n }\n }\n getElementUID(obj) {\n let fields = {};\n if (obj instanceof Element) {\n fields[this.fields.id] = obj.getAttribute('data-uid');\n }\n else {\n fields = obj;\n }\n return fields;\n }\n /**\n * Initializes the ListView component rendering.\n */\n render() {\n this.element.classList.add(classNames.root);\n attributes(this.element, { tabindex: '0' });\n this.setCSSClass();\n this.setEnableRTL();\n this.setEnable();\n this.setSize();\n this.wireEvents();\n this.header();\n this.setLocalData();\n this.setHTMLAttribute();\n this.rippleFn = rippleEffect(this.element, {\n selector: '.' + classNames.listItem\n });\n this.renderComplete();\n this.previousScrollTop = this.element.scrollTop;\n }\n /**\n * It is used to destroy the ListView component.\n */\n destroy() {\n if (this.isReact) {\n this.clearTemplate();\n }\n this.unWireEvents();\n const classAr = [classNames.root, classNames.disable, 'e-rtl',\n 'e-has-header', 'e-lib'].concat(this.cssClass ? this.cssClass.split(' ').filter((css) => css) : []);\n removeClass([this.element], classAr);\n this.element.removeAttribute('role');\n this.element.removeAttribute('tabindex');\n this.curUL = this.ulElement = this.liCollection = this.headerEle = undefined;\n this.element.innerHTML = '';\n this.contentContainer = null;\n this.selectedItems = null;\n this.selectedLI = null;\n this.liElement = null;\n this.targetElement = null;\n this.currentLiElements = null;\n this.virtualCheckBox = null;\n super.destroy();\n }\n /**\n * Switches back from the navigated sub list item.\n */\n back() {\n const pID = this.curDSLevel[this.curDSLevel.length - 1];\n if (pID === undefined || this.isInAnimation()) {\n return;\n }\n this.curDSLevel.pop();\n this.setViewDataSource(this.getSubDS());\n let toUL = this.element.querySelector('[data-uid=\\'' + pID + '\\']');\n const fromUL = this.curUL;\n if (!toUL) {\n this.createList();\n this.renderIntoDom(this.ulElement);\n toUL = this.curUL;\n }\n else {\n toUL = toUL.parentElement;\n }\n const fieldData = getFieldValues(this.curDSJSON, this.listBaseOption.fields);\n const text = fieldData[this.fields.text];\n this.switchView(fromUL, toUL, true);\n this.removeFocus();\n const li = this.element.querySelector('[data-uid=\\'' + pID + '\\']');\n li.classList.remove(classNames.disable);\n li.classList.add(classNames.focused);\n if (!(this.showCheckBox && li.querySelector('.' + classNames.checkboxIcon).classList.contains(classNames.checked))) {\n li.classList.remove(classNames.selected);\n }\n this.liCollection = this.curUL.querySelectorAll('.' + classNames.listItem);\n if (this.enableHtmlSanitizer) {\n this.setProperties({ headerTitle: SanitizeHtmlHelper.sanitize(this.headerTitle) }, true);\n }\n this.header((this.curDSLevel.length ? text : this.headerTitle), (this.curDSLevel.length ? true : false), 'header');\n }\n /**\n * Selects the list item from the ListView by passing the elements or field object.\n *\n * @param {Fields | HTMLElement | Element} item - We can pass element Object or Fields as Object with ID and Text fields.\n */\n selectItem(item) {\n if (this.enableVirtualization) {\n this.virtualizationModule.selectItem(item);\n }\n else if (this.showCheckBox) {\n this.setCheckboxLI(this.getLiFromObjOrElement(item));\n }\n else {\n if (isNullOrUndefined(item) === true) {\n this.removeSelect();\n }\n else {\n this.setSelectLI(this.getLiFromObjOrElement(item));\n }\n }\n }\n /**\n * This method allows for deselecting a list item within the ListView. The item to be deselected can be specified by passing the element or field object.\n *\n * @param {Fields | HTMLElement | Element} item - We can pass an element Object or Fields as an Object with ID and Text fields.\n */\n unselectItem(item) {\n if (isNullOrUndefined(item)) {\n this.removeSelect();\n }\n else {\n const li = this.getLiFromObjOrElement(item);\n if (!isNullOrUndefined(li)) {\n this.removeSelect(li);\n }\n }\n }\n getLiFromObjOrElement(obj) {\n let li;\n const dataSource = this.dataSource instanceof DataManager ?\n this.localData : this.dataSource;\n if (!isNullOrUndefined(obj)) {\n if (typeof dataSource[0] === 'string' || typeof dataSource[0] === 'number') {\n if (obj instanceof Element) {\n const uid = obj.getAttribute('data-uid').toString();\n for (let i = 0; i < this.liCollection.length; i++) {\n if (this.liCollection[parseInt(i.toString(), 10)].getAttribute('data-uid').toString() === uid) {\n li = this.liCollection[parseInt(i.toString(), 10)];\n break;\n }\n }\n }\n else {\n Array.prototype.some.call(this.curUL.querySelectorAll('.' + classNames.listItem), (item) => {\n if (item.innerText.trim() === obj.toString()) {\n li = item;\n return true;\n }\n else {\n return false;\n }\n });\n }\n }\n else {\n const resultJSON = this.getItemData(obj);\n const fieldData = getFieldValues(resultJSON, this.listBaseOption.fields);\n if (resultJSON) {\n li = this.element.querySelector('[data-uid=\"'\n + fieldData[this.fields.id] + '\"]');\n if (!this.enableVirtualization && isNullOrUndefined(li)) {\n const curLi = this.element.querySelectorAll('.' + classNames.listItem);\n for (let i = 0; i < curLi.length; i++) {\n if (curLi[parseInt(i.toString(), 10)].innerText.trim() ===\n fieldData[this.fields.text]) {\n li = curLi[parseInt(i.toString(), 10)];\n }\n }\n }\n }\n }\n }\n return li;\n }\n /**\n * Selects multiple list items from the ListView.\n *\n * @param {Fields[] | HTMLElement[] | Element[]} item - We can pass array of\n * elements or array of fields Object with ID and Text fields.\n */\n selectMultipleItems(item) {\n if (!isNullOrUndefined(item)) {\n for (let i = 0; i < item.length; i++) {\n if (!isNullOrUndefined(item[parseInt(i.toString(), 10)])) {\n this.selectItem(item[parseInt(i.toString(), 10)]);\n }\n }\n }\n }\n getParentId() {\n const parentId = [];\n if (this.isNestedList) {\n for (let i = this.curDSLevel.length - 1; i >= 0; i--) {\n parentId.push(this.curDSLevel[parseInt(i.toString(), 10)]);\n }\n }\n return parentId;\n }\n updateSelectedId() {\n this.selectedId = [];\n const liCollection = this.curUL.getElementsByClassName(classNames.selected);\n for (let i = 0; i < liCollection.length; i++) {\n const tempData = this.getItemData(liCollection[parseInt(i.toString(), 10)]);\n if (!isNullOrUndefined(tempData) && tempData[this.listBaseOption.fields.id]) {\n this.selectedId.push(tempData[this.listBaseOption.fields.id]);\n }\n }\n }\n /**\n * Gets the details of the currently selected item from the list items.\n *\n */\n getSelectedItems() {\n let finalValue;\n let isCompleted = false;\n this.selectedId = [];\n const dataSource = this.dataSource instanceof DataManager ?\n this.localData : this.dataSource;\n if (this.enableVirtualization && !isCompleted) {\n finalValue = this.virtualizationModule.getSelectedItems();\n isCompleted = true;\n }\n else if (this.showCheckBox && !isCompleted) {\n const liCollection = this.curUL.getElementsByClassName(classNames.selected);\n const liTextCollection = [];\n const liDataCollection = [];\n this.selectedId = [];\n const dataParent = [];\n for (let i = 0; i < liCollection.length; i++) {\n if (typeof dataSource[0] === 'string' || typeof dataSource[0] === 'number') {\n liTextCollection.push(liCollection[parseInt(i.toString(), 10)].innerText.trim());\n }\n else {\n const tempData = this.getItemData(liCollection[parseInt(i.toString(), 10)]);\n const fieldData = getFieldValues(tempData, this.listBaseOption.fields);\n if (this.isNestedList) {\n dataParent.push({ data: tempData, parentId: this.getParentId() });\n }\n else {\n liDataCollection.push(tempData);\n }\n if (fieldData) {\n liTextCollection.push(fieldData[this.listBaseOption.fields.text]);\n this.selectedId.push(fieldData[this.listBaseOption.fields.id]);\n }\n else {\n liTextCollection.push(undefined);\n this.selectedId.push(undefined);\n }\n }\n }\n if ((typeof dataSource[0] === 'string'\n || typeof dataSource[0] === 'number')\n && !isCompleted) {\n finalValue = { item: liCollection, data: dataSource, text: liTextCollection };\n isCompleted = true;\n }\n if (this.isNestedList && !isCompleted) {\n finalValue = { item: liCollection, data: dataParent, text: liTextCollection };\n isCompleted = true;\n }\n else if (!isCompleted) {\n finalValue = { item: liCollection, data: liDataCollection, text: liTextCollection };\n isCompleted = true;\n }\n }\n else if (!isCompleted) {\n const liElement = this.element.getElementsByClassName(classNames.selected)[0];\n const fieldData = getFieldValues(this.getItemData(liElement), this.listBaseOption.fields);\n if ((typeof dataSource[0] === 'string'\n || typeof dataSource[0] === 'number')\n && !isCompleted) {\n finalValue = (!isNullOrUndefined(liElement)) ? {\n item: liElement, data: dataSource,\n text: liElement.innerText.trim()\n } : undefined;\n isCompleted = true;\n }\n else if (!isCompleted) {\n if (isNullOrUndefined(fieldData) || isNullOrUndefined(liElement)) {\n finalValue = undefined;\n isCompleted = true;\n }\n else {\n this.selectedId.push(fieldData[this.listBaseOption.fields.id]);\n finalValue = {\n text: fieldData[this.listBaseOption.fields.text], item: liElement,\n data: this.getItemData(liElement)\n };\n isCompleted = true;\n }\n }\n }\n return finalValue;\n }\n /**\n * Finds out an item details from the current list.\n *\n * @param {Fields | HTMLElement | Element} item - We can pass element Object or Fields as Object with ID and Text fields.\n */\n findItem(item) {\n return this.getItemData(item);\n }\n /**\n * Enables the disabled list items by passing the Id and text fields.\n *\n * @param {Fields | HTMLElement | Element} item - We can pass element Object or Fields as Object with ID and Text fields.\n */\n enableItem(item) {\n this.setItemState(item, true);\n if (this.enableVirtualization) {\n this.virtualizationModule.enableItem(item);\n }\n }\n /**\n * Disables the list items by passing the Id and text fields.\n *\n * @param {Fields | HTMLElement | Element} item - We can pass element Object or Fields as Object with ID and Text fields.\n */\n disableItem(item) {\n this.setItemState(item, false);\n if (this.enableVirtualization) {\n this.virtualizationModule.disableItem(item);\n }\n }\n //A function that used to set state of the list item like enable, disable.\n setItemState(item, isEnable) {\n const resultJSON = this.getItemData(item);\n const fieldData = getFieldValues(resultJSON, this.listBaseOption.fields);\n if (resultJSON) {\n const li = this.element.querySelector('[data-uid=\"' + fieldData[this.fields.id] + '\"]');\n if (isEnable) {\n if (li) {\n li.classList.remove(classNames.disable);\n }\n delete resultJSON[this.fields.enabled];\n }\n else if (!isEnable) {\n if (li) {\n li.classList.add(classNames.disable);\n }\n resultJSON[this.fields.enabled] = false;\n }\n }\n }\n /**\n * Shows the hide list item from the ListView.\n *\n * @param {Fields | HTMLElement | Element} item - We can pass element Object or Fields as Object with ID and Text fields.\n */\n showItem(item) {\n this.showHideItem(item, false, '');\n if (this.enableVirtualization) {\n this.virtualizationModule.showItem(item);\n }\n }\n /**\n * Hides an list item from the ListView.\n *\n * @param {Fields | HTMLElement | Element} item - We can pass element Object or Fields as Object with ID and Text fields.\n */\n hideItem(item) {\n this.showHideItem(item, true, 'none');\n if (this.enableVirtualization) {\n this.virtualizationModule.hideItem(item);\n }\n }\n showHideItem(obj, isHide, display) {\n const resultJSON = this.getItemData(obj);\n const fieldData = getFieldValues(resultJSON, this.listBaseOption.fields);\n if (resultJSON) {\n const li = this.element.querySelector('[data-uid=\"' + fieldData[this.fields.id] + '\"]');\n if (li) {\n li.style.display = display;\n }\n if (isHide) {\n resultJSON[this.fields.isVisible] = false;\n }\n else {\n delete resultJSON[this.fields.isVisible];\n }\n }\n }\n /**\n * Adds the new list item(s) to the current ListView.\n * To add a new list item(s) in the ListView, we need to pass the `data` as an array of items that need\n * to be added and `fields` as the target item to which we need to add the given item(s) as its children.\n * For example fields: { text: 'Name', tooltip: 'Name', id:'id'}\n *\n * @param {{Object}[]} data - JSON Array Data that need to add.\n *\n * @param {Fields} fields - Target item to add the given data as its children (can be null).\n *\n * @param {number} index - Indicates the index where the data to be added.\n */\n addItem(data, fields = undefined, index) {\n const dataSource = this.dataSource instanceof DataManager\n ? this.localData : this.dataSource;\n this.addItemInternally(data, fields, dataSource, index);\n }\n addItemInternally(data, fields, dataSource, index) {\n if (data instanceof Array) {\n if (this.enableVirtualization) {\n this.virtualizationModule.addItem(data, fields, dataSource, index);\n }\n else {\n const ds = this.findItemFromDS(dataSource, fields);\n let child;\n if (ds) {\n const fieldData = getFieldValues(ds, this.listBaseOption.fields);\n child = fieldData[this.fields.child];\n if (!child) {\n child = [];\n }\n child = child.concat(data);\n }\n // check for whether target is nested level or top level in list\n if (ds instanceof Array) {\n for (let i = 0; i < data.length; i++) {\n dataSource = this.addItemAtIndex(index, dataSource, data[parseInt(i.toString(), 10)]);\n this.setViewDataSource(dataSource);\n // since it is top level target, get the content container's first child\n // as it is always the top level UL\n const targetUL = this.contentContainer\n ? this.contentContainer.children[0]\n : null;\n // check for whether the list was previously empty or not, if it is\n // proceed to call initial render\n if (this.contentContainer && targetUL) {\n this.addItemIntoDom(data[parseInt(i.toString(), 10)], targetUL, this.curViewDS);\n }\n else {\n this.reRender();\n }\n }\n this.liCollection = this.curUL.querySelectorAll('.' + classNames.listItem);\n }\n else {\n // proceed as target item is in nested level, only if it is a valid target ds\n if (ds) {\n ds[this.fields.child] = child;\n this.addItemInNestedList(ds, data);\n }\n }\n }\n }\n }\n addItemAtIndex(index, newDataSource, itemData) {\n const isIndexValid = !(isNullOrUndefined(index)) && index >= 0 &&\n index < newDataSource.length && isNullOrUndefined(this.listBaseOption.fields.groupBy);\n if (isIndexValid) {\n newDataSource.splice(index, 0, itemData);\n }\n else {\n newDataSource.push(itemData);\n }\n return newDataSource;\n }\n addItemInNestedList(targetItemData, itemQueue) {\n const targetItemId = targetItemData[this.fields.id];\n const targetChildDS = targetItemData[this.fields.child];\n const isAlreadyRenderedUL = this.element.querySelector('[pid=\\'' + targetItemId + '\\']');\n const targetLi = this.element.querySelector('[data-uid=\\'' + targetItemId + '\\']');\n const targetUL = isAlreadyRenderedUL\n ? isAlreadyRenderedUL\n : targetLi\n ? closest(targetLi, 'ul')\n : null;\n const targetDS = isAlreadyRenderedUL ? targetChildDS : [targetItemData];\n const isTargetEmptyChild = targetLi ? !targetLi.classList.contains(classNames.hasChild) : false;\n // if li element is already rendered, that element needs to be refreshed so that\n // it becomes child viewable due to new child items are added now\n if (isTargetEmptyChild) {\n const targetRefreshedElement = ListBase.createListItemFromJson(this.createElement, targetDS, this.listBaseOption, null, null, this);\n this.setAttributes(targetRefreshedElement);\n targetUL.insertBefore(targetRefreshedElement[0], targetLi);\n detach(targetLi);\n }\n // if it is already rendered element, we need to create and append new elements\n if (isAlreadyRenderedUL && itemQueue) {\n for (let i = 0; i < itemQueue.length; i++) {\n targetDS.push(itemQueue[parseInt(i.toString(), 10)]);\n this.addItemIntoDom(itemQueue[parseInt(i.toString(), 10)], targetUL, targetDS);\n }\n }\n }\n addItemIntoDom(currentItem, targetUL, curViewDS) {\n const index = curViewDS.indexOf(currentItem);\n this.addListItem(currentItem, index, targetUL, curViewDS);\n const curItemDS = curViewDS[index - 1];\n if (curItemDS && curItemDS.isHeader && curItemDS.items.length === 1) {\n this.addListItem(curItemDS, (index - 1), targetUL, curViewDS);\n }\n }\n addListItem(dataSource, index, ulElement, curViewDS) {\n let target = this.getLiFromObjOrElement(curViewDS[index + 1]) ||\n this.getLiFromObjOrElement(curViewDS[index + 2]) || null;\n const li = ListBase.createListItemFromJson(this.createElement, [dataSource], this.listBaseOption, null, null, this);\n this.setAttributes(li);\n if (this.template && this.isReact) {\n this.renderReactTemplates();\n }\n if (this.fields.groupBy && curViewDS[index + 1] && curViewDS[index + 1].isHeader) {\n const targetEle = this.getLiFromObjOrElement(curViewDS[index - 1]);\n if (targetEle) {\n target = targetEle.nextElementSibling;\n }\n }\n ulElement.insertBefore(li[0], target);\n }\n /**\n * Removes the list item from the data source based on a passed\n * element like fields: { text: 'Name', tooltip: 'Name', id:'id'}\n *\n * @param {Fields | HTMLElement | Element} item - We can pass element Object or Fields as Object with ID and Text fields.\n */\n removeItem(item) {\n const listDataSource = this.dataSource instanceof DataManager\n ? this.localData : this.dataSource;\n if (this.enableVirtualization) {\n this.virtualizationModule.removeItem(item);\n }\n else {\n this.removeItemFromList(item, listDataSource);\n }\n }\n removeItemFromList(obj, listDataSource) {\n const curViewDS = this.curViewDS;\n const fields = obj instanceof Element ? this.getElementUID(obj) : obj;\n const dataSource = this.findItemFromDS(listDataSource, fields, true);\n if (dataSource) {\n const data = this.findItemFromDS(dataSource, fields);\n const index = curViewDS.indexOf(data);\n const li = this.getLiFromObjOrElement(obj);\n let groupLi;\n this.validateNestedView(li);\n if (this.fields.groupBy && this.curViewDS[index - 1] &&\n curViewDS[index - 1].isHeader &&\n curViewDS[index - 1].items.length === 1) {\n if (li && li.previousElementSibling.classList.contains(classNames.groupListItem) &&\n (isNullOrUndefined(li.nextElementSibling) || (li.nextElementSibling &&\n li.nextElementSibling.classList.contains(classNames.groupListItem)))) {\n groupLi = li.previousElementSibling;\n }\n }\n if (li) {\n detach(li);\n }\n if (groupLi) {\n detach(groupLi);\n }\n const foundData = (dataSource.length - 1) <= 0\n ? this.findParent(this.localData, this.fields.id, (value) => value === data[this.fields.id], null) : null;\n const dsIndex = dataSource.indexOf(data);\n dataSource.splice(dsIndex, 1);\n this.setViewDataSource(listDataSource);\n if (foundData\n && foundData.parent\n && Array.isArray(foundData.parent[this.fields.child])\n && foundData.parent[this.fields.child].length <= 0) {\n const parentLi = this.getLiFromObjOrElement(foundData.parent);\n if (parentLi) {\n const li = ListBase.createListItemFromJson(this.createElement, [foundData.parent], this.listBaseOption, null, null, this);\n this.setAttributes(li);\n parentLi.parentElement.insertBefore(li[0], parentLi);\n parentLi.parentElement.removeChild(parentLi);\n }\n }\n if (dataSource.length <= 0) {\n this.back();\n }\n this.liCollection = Array.prototype.slice.call(this.element.querySelectorAll('.' + classNames.listItem));\n }\n }\n // validate before removing an element whether the current view is inside target element's child view\n validateNestedView(li) {\n const liID = li ? li.getAttribute('data-uid').toString().toLowerCase() : null;\n if (liID && this.curDSLevel && this.curDSLevel.length > 0) {\n while (this.curDSLevel.some((id) => id.toString().toLowerCase() === liID)) {\n this.back();\n }\n }\n }\n /**\n * Removes multiple items from the ListView by passing the array of elements or array of field objects.\n *\n * @param {Fields[] | HTMLElement[] | Element[]} item - We can pass array of elements or array of field Object with ID and Text fields.\n */\n removeMultipleItems(item) {\n if (item.length) {\n for (let i = 0; i < item.length; i++) {\n this.removeItem(item[parseInt(i.toString(), 10)]);\n }\n }\n }\n findParent(dataSource, id, callback, parent) {\n if (Object.prototype.hasOwnProperty.call(dataSource, id) && callback(dataSource[id]) === true) {\n return extend({}, dataSource);\n }\n for (let i = 0; i < Object.keys(dataSource).length; i++) {\n if (dataSource[Object.keys(dataSource)[parseInt(i.toString(), 10)]]\n && typeof dataSource[Object.keys(dataSource)[parseInt(i.toString(), 10)]] === 'object') {\n const result = this.findParent(dataSource[Object.keys(dataSource)[parseInt(i.toString(), 10)]], id, callback, dataSource);\n if (result != null) {\n if (!result.parent) {\n result.parent = parent;\n }\n return result;\n }\n }\n }\n return null;\n }\n // Module Required function\n getModuleName() {\n return 'listview';\n }\n requiredModules() {\n const modules = [];\n if (this.enableVirtualization) {\n modules.push({ args: [this], member: 'virtualization', name: 'Virtualization' });\n }\n return modules;\n }\n onListScroll(e) {\n const args = { originalEvent: e, scrollDirection: 'Bottom', distanceY: this.element.scrollHeight - this.element.scrollTop };\n const currentScrollTop = this.element.scrollTop;\n if (currentScrollTop > this.previousScrollTop) {\n args.scrollDirection = 'Bottom';\n args.distanceY = this.element.scrollHeight - this.element.clientHeight - this.element.scrollTop;\n this.trigger('scroll', args);\n }\n else if (this.previousScrollTop > currentScrollTop) {\n args.scrollDirection = 'Top';\n args.distanceY = this.element.scrollTop;\n this.trigger('scroll', args);\n }\n this.previousScrollTop = currentScrollTop;\n }\n /**\n * Get the properties to be maintained in the persisted state.\n */\n getPersistData() {\n return this.addOnPersist(['cssClass', 'enableRtl', 'htmlAttributes',\n 'enable', 'fields', 'animation', 'headerTitle',\n 'sortOrder', 'showIcon', 'height', 'width', 'showCheckBox', 'checkBoxPosition', 'selectedId']);\n }\n};\n__decorate([\n Property('')\n], ListView.prototype, \"cssClass\", void 0);\n__decorate([\n Property(false)\n], ListView.prototype, \"enableVirtualization\", void 0);\n__decorate([\n Property({})\n], ListView.prototype, \"htmlAttributes\", void 0);\n__decorate([\n Property(true)\n], ListView.prototype, \"enable\", void 0);\n__decorate([\n Property([])\n], ListView.prototype, \"dataSource\", void 0);\n__decorate([\n Property()\n], ListView.prototype, \"query\", void 0);\n__decorate([\n Complex(ListBase.defaultMappedFields, FieldSettings)\n], ListView.prototype, \"fields\", void 0);\n__decorate([\n Property({ effect: 'SlideLeft', duration: 400, easing: 'ease' })\n], ListView.prototype, \"animation\", void 0);\n__decorate([\n Property('None')\n], ListView.prototype, \"sortOrder\", void 0);\n__decorate([\n Property(false)\n], ListView.prototype, \"showIcon\", void 0);\n__decorate([\n Property(false)\n], ListView.prototype, \"showCheckBox\", void 0);\n__decorate([\n Property('Left')\n], ListView.prototype, \"checkBoxPosition\", void 0);\n__decorate([\n Property('')\n], ListView.prototype, \"headerTitle\", void 0);\n__decorate([\n Property(false)\n], ListView.prototype, \"showHeader\", void 0);\n__decorate([\n Property(true)\n], ListView.prototype, \"enableHtmlSanitizer\", void 0);\n__decorate([\n Property('')\n], ListView.prototype, \"height\", void 0);\n__decorate([\n Property('')\n], ListView.prototype, \"width\", void 0);\n__decorate([\n Property(null)\n], ListView.prototype, \"template\", void 0);\n__decorate([\n Property(null)\n], ListView.prototype, \"headerTemplate\", void 0);\n__decorate([\n Property(null)\n], ListView.prototype, \"groupTemplate\", void 0);\n__decorate([\n Event()\n], ListView.prototype, \"select\", void 0);\n__decorate([\n Event()\n], ListView.prototype, \"actionBegin\", void 0);\n__decorate([\n Event()\n], ListView.prototype, \"actionComplete\", void 0);\n__decorate([\n Event()\n], ListView.prototype, \"actionFailure\", void 0);\n__decorate([\n Event()\n], ListView.prototype, \"scroll\", void 0);\nListView = __decorate([\n NotifyPropertyChanges\n], ListView);\nexport { ListView };\n","import { classNames } from './list-view';\nimport { EventHandler, append, isNullOrUndefined, detach, compile, formatUnit, select } from '@syncfusion/ej2-base';\nimport { ListBase } from '../common/list-base';\nimport { DataManager } from '@syncfusion/ej2-data';\nconst listElementCount = 1.5;\nconst windowElementCount = 3;\nexport class Virtualization {\n constructor(instance) {\n this.elementDifference = 0;\n this.listViewInstance = instance;\n }\n /**\n * For internal use only.\n *\n * @private\n */\n isNgTemplate() {\n return !isNullOrUndefined(this.listViewInstance.templateRef) && typeof this.listViewInstance.templateRef !== 'string';\n }\n /**\n * Checks if the platform is a Vue and its template property is a function type.\n *\n * @returns {boolean} indicating the result of the check\n */\n isVueFunctionTemplate() {\n return this.listViewInstance.isVue && typeof this.listViewInstance.template === 'function';\n }\n /**\n * For internal use only.\n *\n * @private\n */\n uiVirtualization() {\n this.wireScrollEvent(false);\n const curViewDS = this.listViewInstance.curViewDS;\n const firstDs = curViewDS.slice(0, 1);\n this.listViewInstance.ulElement = this.listViewInstance.curUL = ListBase.createList(this.listViewInstance.createElement, firstDs, this.listViewInstance.listBaseOption, null, this.listViewInstance);\n this.listViewInstance.contentContainer = this.listViewInstance.createElement('div', { className: classNames.container });\n this.listViewInstance.element.appendChild(this.listViewInstance.contentContainer);\n this.listViewInstance.contentContainer.appendChild(this.listViewInstance.ulElement);\n this.listItemHeight = this.listViewInstance.ulElement.firstElementChild.getBoundingClientRect().height;\n this.expectedDomItemCount = this.ValidateItemCount(10000);\n this.domItemCount = this.ValidateItemCount(Object.keys(this.listViewInstance.curViewDS).length);\n this.uiFirstIndex = 0;\n this.uiLastIndex = this.domItemCount - 1;\n const otherDs = curViewDS.slice(1, this.domItemCount);\n const listItems = ListBase.createListItemFromJson(this.listViewInstance.createElement, otherDs, this.listViewInstance.listBaseOption, null, null, this.listViewInstance);\n append(listItems, this.listViewInstance.ulElement);\n this.listViewInstance.liCollection = this.listViewInstance.curUL.querySelectorAll('li');\n this.topElement = this.listViewInstance.createElement('div');\n this.listViewInstance.ulElement.insertBefore(this.topElement, this.listViewInstance.ulElement.firstElementChild);\n this.bottomElement = this.listViewInstance.createElement('div');\n this.listViewInstance.ulElement.insertBefore(this.bottomElement, null);\n this.totalHeight = (Object.keys(curViewDS).length * this.listItemHeight) - (this.domItemCount * this.listItemHeight);\n this.topElement.style.height = 0 + 'px';\n this.bottomElement.style.height = this.totalHeight + 'px';\n this.topElementHeight = 0;\n this.bottomElementHeight = this.totalHeight;\n this.listDiff = 0;\n this.uiIndicesInitialization();\n }\n wireScrollEvent(destroy) {\n if (!destroy) {\n if (this.listViewInstance.isWindow) {\n this.onVirtualScroll = this.onVirtualUiScroll.bind(this);\n window.addEventListener('scroll', this.onVirtualScroll);\n }\n else {\n EventHandler.add(this.listViewInstance.element, 'scroll', this.onVirtualUiScroll, this);\n }\n }\n else {\n if (this.listViewInstance.isWindow === true) {\n window.removeEventListener('scroll', this.onVirtualScroll);\n window.removeEventListener('scroll', this.updateUl);\n }\n else {\n EventHandler.remove(this.listViewInstance.element, 'scroll', this.onVirtualUiScroll);\n }\n }\n }\n ValidateItemCount(dataSourceLength) {\n const height = parseFloat(formatUnit(this.listViewInstance.height));\n let itemCount;\n if (this.listViewInstance.isWindow) {\n itemCount = Math.round((window.innerHeight / this.listItemHeight) * windowElementCount);\n }\n else {\n if (typeof this.listViewInstance.height === 'string' && this.listViewInstance.height.indexOf('%') !== -1) {\n itemCount = Math.round((this.listViewInstance.element.getBoundingClientRect().height / this.listItemHeight) * listElementCount);\n }\n else {\n itemCount = Math.round((height / this.listItemHeight) * listElementCount);\n }\n }\n if (itemCount > dataSourceLength) {\n itemCount = dataSourceLength;\n }\n return itemCount;\n }\n uiIndicesInitialization() {\n this.uiIndices = { 'activeIndices': [], 'disabledItemIndices': [], 'hiddenItemIndices': [] };\n const data = this.listViewInstance.curViewDS;\n for (let i = 0; i < data.length; i++) {\n if (this.listViewInstance.showCheckBox && data[i][this.listViewInstance.fields.isChecked]) {\n this.uiIndices.activeIndices.push(i);\n }\n if (!isNullOrUndefined(data[parseInt(i.toString(), 10)][this.listViewInstance.fields.enabled]) &&\n !data[i][this.listViewInstance.fields.enabled]) {\n (this.uiIndices.disabledItemIndices.push(i));\n }\n }\n if (this.isNgTemplate()) {\n const items = this.listViewInstance.element.querySelectorAll('.' + classNames.listItem);\n for (let index = 0; index < items.length; index++) {\n items[index].context = this.listViewInstance.viewContainerRef.get(index).context;\n }\n }\n }\n refreshItemHeight() {\n if (this.listViewInstance.curViewDS.length) {\n const curViewDS = this.listViewInstance.curViewDS;\n this.listItemHeight = this.topElement.nextSibling.getBoundingClientRect().height;\n this.totalHeight = (Object.keys(curViewDS).length * this.listItemHeight) - (this.domItemCount * this.listItemHeight);\n this.bottomElementHeight = this.totalHeight;\n this.bottomElement.style.height = this.totalHeight + 'px';\n }\n }\n getscrollerHeight(startingHeight) {\n return this.listViewInstance.isWindow ? (((pageYOffset - startingHeight) <= 0) ? 0 :\n (pageYOffset - startingHeight)) : ((this.listViewInstance.element.scrollTop - startingHeight) <= 0) ? 0 :\n (this.listViewInstance.element.scrollTop - startingHeight);\n }\n onVirtualUiScroll() {\n let startingHeight;\n const curViewDS = this.listViewInstance.curViewDS;\n this.listItemHeight = select('.e-list-item', this.listViewInstance.element).getBoundingClientRect().height;\n this.totalHeight = (Object.keys(curViewDS).length * this.listItemHeight) - (this.domItemCount * this.listItemHeight);\n if (this.listViewInstance.isWindow) {\n startingHeight = this.listViewInstance.ulElement.getBoundingClientRect().top -\n document.documentElement.getBoundingClientRect().top;\n }\n else {\n startingHeight = this.listViewInstance.headerEle ? this.listViewInstance.headerEle.getBoundingClientRect().height : 0;\n }\n this.scrollPosition = isNullOrUndefined(this.scrollPosition) ? 0 : this.scrollPosition;\n const scroll = this.getscrollerHeight(startingHeight);\n this.topElementHeight = this.listItemHeight * Math.floor(scroll / this.listItemHeight);\n this.bottomElementHeight = this.totalHeight - this.topElementHeight;\n [this.topElementHeight, this.bottomElementHeight] = scroll <= this.totalHeight ?\n [this.topElementHeight, this.bottomElementHeight] : [this.totalHeight, 0];\n if (this.topElementHeight !== parseFloat(this.topElement.style.height)) {\n this.topElement.style.height = this.topElementHeight + 'px';\n this.bottomElement.style.height = this.bottomElementHeight + 'px';\n if (scroll > this.scrollPosition) {\n const listDiff = Math.round(((this.topElementHeight / this.listItemHeight) - this.listDiff));\n if (listDiff > (this.expectedDomItemCount + 5)) {\n this.onLongScroll(listDiff, true);\n }\n else {\n this.onNormalScroll(listDiff, true);\n }\n }\n else {\n const listDiff = Math.round((this.listDiff - (this.topElementHeight / this.listItemHeight)));\n if (listDiff > (this.expectedDomItemCount + 5)) {\n this.onLongScroll(listDiff, false);\n }\n else {\n this.onNormalScroll(listDiff, false);\n }\n }\n }\n this.listDiff = Math.round(this.topElementHeight / this.listItemHeight);\n if (typeof this.listViewInstance.onUIScrolled === 'function') {\n this.listViewInstance.onUIScrolled();\n }\n this.scrollPosition = scroll;\n }\n onLongScroll(listDiff, isScrollingDown) {\n let index = isScrollingDown ? (this.uiFirstIndex + listDiff) : (this.uiFirstIndex - listDiff);\n const elements = this.listViewInstance.ulElement.querySelectorAll('li');\n for (let i = 0; i < elements.length; i++) {\n this.updateUI(elements[i], index);\n index++;\n }\n this.uiLastIndex = isScrollingDown ? (this.uiLastIndex + listDiff) : (this.uiLastIndex - listDiff);\n this.uiFirstIndex = isScrollingDown ? (this.uiFirstIndex + listDiff) : (this.uiFirstIndex - listDiff);\n }\n onNormalScroll(listDiff, isScrollingDown) {\n if (isScrollingDown) {\n for (let i = 0; i < listDiff; i++) {\n const index = ++this.uiLastIndex;\n this.updateUI(this.topElement.nextElementSibling, index, this.bottomElement);\n this.uiFirstIndex++;\n }\n }\n else {\n for (let i = 0; i < listDiff; i++) {\n const index = --this.uiFirstIndex;\n const target = this.topElement.nextSibling;\n this.updateUI(this.bottomElement.previousElementSibling, index, target);\n this.uiLastIndex--;\n }\n }\n }\n updateUiContent(element, index) {\n const curViewDs = this.listViewInstance.curViewDS;\n if (typeof this.listViewInstance.dataSource[0] === 'string' ||\n typeof this.listViewInstance.dataSource[0] === 'number') {\n element.dataset.uid = ListBase.generateId();\n element.getElementsByClassName(classNames.listItemText)[0].innerHTML =\n this.listViewInstance.curViewDS[index].toString();\n }\n else {\n element.dataset.uid = (curViewDs[parseInt(index.toString(), 10)][this.listViewInstance.fields.id]) ?\n (curViewDs[parseInt(index.toString(), 10)][this.listViewInstance.fields.id]) : ListBase.generateId();\n element.getElementsByClassName(classNames.listItemText)[0].innerHTML =\n (curViewDs[parseInt(index.toString(), 10)][this.listViewInstance.fields.text]);\n }\n if (this.listViewInstance.showIcon) {\n if (element.querySelector('.' + classNames.listIcon)) {\n detach(element.querySelector('.' + classNames.listIcon));\n }\n if (this.listViewInstance.curViewDS[index][this.listViewInstance.fields.iconCss]) {\n const textContent = element.querySelector('.' + classNames.textContent);\n const curViewDS = this.listViewInstance.curViewDS[index];\n const iconCss = curViewDS[this.listViewInstance.fields.iconCss].toString();\n const target = this.listViewInstance.createElement('div', {\n className: classNames.listIcon + ' ' + iconCss\n });\n textContent.insertBefore(target, element.querySelector('.' + classNames.listItemText));\n }\n }\n if (this.listViewInstance.showCheckBox && this.listViewInstance.fields.groupBy) {\n if (!this.checkListWrapper) {\n this.checkListWrapper = this.listViewInstance.curUL.querySelector('.' + classNames.checkboxWrapper).cloneNode(true);\n }\n const textContent = element.querySelector('.' + classNames.textContent);\n if (this.listViewInstance.curViewDS[index].isHeader) {\n if (element.querySelector('.' + classNames.checkboxWrapper)) {\n element.classList.remove(classNames.checklist);\n textContent.classList.remove(classNames.checkbox);\n detach(element.querySelector('.' + classNames.checkboxWrapper));\n }\n }\n else {\n if (!element.querySelector('.' + classNames.checkboxWrapper)) {\n element.classList.add(classNames.checklist);\n textContent.classList.add(classNames.checkbox);\n if (this.listViewInstance.checkBoxPosition === 'Left') {\n textContent.classList.add('e-checkbox-left');\n }\n else {\n textContent.classList.add('e-checkbox-right');\n }\n textContent.append(this.checkListWrapper.cloneNode(true));\n }\n }\n }\n }\n changeElementAttributes(element, index) {\n element.classList.remove(classNames.disable);\n if (this.uiIndices.disabledItemIndices.length && this.uiIndices.disabledItemIndices.indexOf(index) !== -1) {\n element.classList.add(classNames.disable);\n }\n element.style.display = '';\n if (this.uiIndices.hiddenItemIndices.length && this.uiIndices.hiddenItemIndices.indexOf(index) !== -1) {\n element.style.display = 'none';\n }\n if (this.listViewInstance.showCheckBox) {\n const checklistElement = element.querySelector('.' + classNames.checkboxWrapper);\n element.classList.remove(classNames.selected);\n element.classList.remove(classNames.focused);\n if (checklistElement) {\n checklistElement.removeAttribute('aria-checked');\n checklistElement.firstElementChild.classList.remove(classNames.checked);\n }\n if (this.uiIndices.activeIndices.length && this.uiIndices.activeIndices.indexOf(index) !== -1 &&\n !this.listViewInstance.curUL.querySelector(classNames.selected)) {\n element.classList.add(classNames.selected);\n checklistElement.firstElementChild.classList.add(classNames.checked);\n checklistElement.setAttribute('aria-checked', 'true');\n if (this.activeIndex === index) {\n element.classList.add(classNames.focused);\n }\n }\n }\n else {\n element.classList.remove(classNames.selected);\n element.removeAttribute('aria-selected');\n if (!isNullOrUndefined(this.activeIndex) && this.activeIndex === index &&\n !this.listViewInstance.curUL.querySelector(classNames.selected)) {\n element.classList.add(classNames.selected);\n element.setAttribute('aria-selected', 'true');\n }\n }\n if (this.listViewInstance.fields.groupBy) {\n if (this.listViewInstance.curViewDS[index].isHeader) {\n if (element.classList.contains(classNames.listItem)) {\n element.classList.remove(classNames.listItem);\n element.setAttribute('role', 'group');\n element.classList.add(classNames.groupListItem);\n }\n }\n else {\n if (element.classList.contains(classNames.groupListItem)) {\n element.classList.remove(classNames.groupListItem);\n element.setAttribute('role', 'listitem');\n element.classList.add(classNames.listItem);\n }\n }\n }\n }\n findDSAndIndexFromId(ds, fields) {\n const resultJSON = {};\n fields = this.listViewInstance.getElementUID(fields);\n if (!isNullOrUndefined(fields)) {\n ds.some((data, index) => {\n if ((fields[this.listViewInstance.fields.id] &&\n fields[this.listViewInstance.fields.id]\n === (data[this.listViewInstance.fields.id] && data[this.listViewInstance.fields.id]) || fields === data)) {\n resultJSON.index = index;\n resultJSON.data = data;\n return true;\n }\n else {\n return false;\n }\n });\n }\n return resultJSON;\n }\n getSelectedItems() {\n if (!isNullOrUndefined(this.activeIndex) || (this.listViewInstance.showCheckBox && this.uiIndices.activeIndices.length)) {\n const dataCollection = [];\n const textCollection = [];\n if (typeof this.listViewInstance.dataSource[0] === 'string' ||\n typeof this.listViewInstance.dataSource[0] === 'number') {\n const curViewDS = this.listViewInstance.curViewDS;\n if (this.listViewInstance.showCheckBox) {\n const indices = this.uiIndices.activeIndices;\n for (let i = 0; i < indices.length; i++) {\n dataCollection.push(curViewDS[indices[i]]);\n }\n return {\n text: dataCollection,\n data: dataCollection,\n index: this.uiIndices.activeIndices.map((index) => this.listViewInstance.dataSource.indexOf(curViewDS[index]))\n };\n }\n else {\n return {\n text: curViewDS[this.activeIndex],\n data: curViewDS[this.activeIndex],\n index: this.listViewInstance.dataSource.indexOf(curViewDS[this.activeIndex])\n };\n }\n }\n else {\n const curViewDS = this.listViewInstance.curViewDS;\n const text = this.listViewInstance.fields.text;\n if (this.listViewInstance.showCheckBox) {\n const indexArray = this.uiIndices.activeIndices;\n for (let i = 0; i < indexArray.length; i++) {\n textCollection.push(curViewDS[indexArray[i]][`${text}`]);\n dataCollection.push(curViewDS[indexArray[parseInt(i.toString(), 10)]]);\n }\n const dataSource = this.listViewInstance.dataSource instanceof DataManager\n ? curViewDS : this.listViewInstance.dataSource;\n return {\n text: textCollection,\n data: dataCollection,\n index: this.uiIndices.activeIndices.map((index) => dataSource.indexOf(curViewDS[index]))\n };\n }\n else {\n const dataSource = this.listViewInstance.dataSource instanceof DataManager\n ? curViewDS : this.listViewInstance.dataSource;\n return {\n text: curViewDS[this.activeIndex][this.listViewInstance.fields.text],\n data: curViewDS[this.activeIndex],\n index: dataSource.indexOf(curViewDS[this.activeIndex])\n };\n }\n }\n }\n else {\n return undefined;\n }\n }\n selectItem(obj) {\n const resutJSON = this.findDSAndIndexFromId(this.listViewInstance.curViewDS, obj);\n if (Object.keys(resutJSON).length) {\n const isSelected = this.activeIndex === resutJSON.index;\n let isChecked;\n this.activeIndex = resutJSON.index;\n if (this.listViewInstance.showCheckBox) {\n if (this.uiIndices.activeIndices.indexOf(resutJSON.index) === -1) {\n isChecked = true;\n this.uiIndices.activeIndices.push(resutJSON.index);\n }\n else {\n isChecked = false;\n this.uiIndices.activeIndices.splice(this.uiIndices.activeIndices.indexOf(resutJSON.index), 1);\n }\n if (this.listViewInstance.curUL.querySelector('.' + classNames.focused)) {\n this.listViewInstance.curUL.querySelector('.' + classNames.focused).classList.remove(classNames.focused);\n }\n }\n if (this.listViewInstance.getLiFromObjOrElement(obj)) {\n if (this.listViewInstance.showCheckBox) {\n this.listViewInstance.setCheckboxLI(this.listViewInstance.getLiFromObjOrElement(obj));\n }\n else {\n this.listViewInstance.setSelectLI(this.listViewInstance.getLiFromObjOrElement(obj));\n }\n }\n else {\n let eventArgs;\n if (typeof this.listViewInstance.dataSource[0] === 'string' ||\n typeof this.listViewInstance.dataSource[0] === 'number') {\n eventArgs = {\n text: this.listViewInstance.curViewDS[this.activeIndex],\n data: this.listViewInstance.curViewDS[this.activeIndex],\n index: this.activeIndex\n };\n }\n else {\n const curViewDS = this.listViewInstance.curViewDS;\n eventArgs = {\n text: curViewDS[this.activeIndex][this.listViewInstance.fields.text],\n data: curViewDS[this.activeIndex],\n index: this.activeIndex\n };\n }\n if (this.listViewInstance.showCheckBox) {\n eventArgs.isChecked = isChecked;\n this.listViewInstance.trigger('select', eventArgs);\n }\n else if (!isSelected) {\n this.listViewInstance.removeSelect();\n this.listViewInstance.trigger('select', eventArgs);\n }\n }\n }\n else if (isNullOrUndefined(obj) && !this.listViewInstance.showCheckBox) {\n this.listViewInstance.removeSelect();\n this.activeIndex = undefined;\n }\n }\n enableItem(obj) {\n const resutJSON = this.findDSAndIndexFromId(this.listViewInstance.curViewDS, obj);\n if (Object.keys(resutJSON).length) {\n this.uiIndices.disabledItemIndices.splice(this.uiIndices.disabledItemIndices.indexOf(resutJSON.index), 1);\n }\n }\n disableItem(obj) {\n const resutJSON = this.findDSAndIndexFromId(this.listViewInstance.curViewDS, obj);\n if (Object.keys(resutJSON).length && this.uiIndices.disabledItemIndices.indexOf(resutJSON.index) === -1) {\n this.uiIndices.disabledItemIndices.push(resutJSON.index);\n }\n }\n showItem(obj) {\n const resutJSON = this.findDSAndIndexFromId(this.listViewInstance.curViewDS, obj);\n if (Object.keys(resutJSON).length) {\n this.uiIndices.hiddenItemIndices.splice(this.uiIndices.hiddenItemIndices.indexOf(resutJSON.index), 1);\n }\n }\n hideItem(obj) {\n const resutJSON = this.findDSAndIndexFromId(this.listViewInstance.curViewDS, obj);\n if (Object.keys(resutJSON).length && this.uiIndices.hiddenItemIndices.indexOf(resutJSON.index) === -1) {\n this.uiIndices.hiddenItemIndices.push(resutJSON.index);\n }\n }\n removeItem(obj) {\n let dataSource;\n const curViewDS = this.listViewInstance.curViewDS;\n const resutJSON = this.findDSAndIndexFromId(curViewDS, obj);\n if (Object.keys(resutJSON).length) {\n dataSource = resutJSON.data;\n if (curViewDS[resutJSON.index - 1] &&\n curViewDS[resutJSON.index - 1].isHeader &&\n (curViewDS[resutJSON.index - 1])\n .items.length === 1) {\n this.removeUiItem(resutJSON.index - 1);\n this.removeUiItem(resutJSON.index - 1);\n }\n else {\n this.removeUiItem(resutJSON.index);\n }\n }\n const listDataSource = this.listViewInstance.dataSource instanceof DataManager\n ? this.listViewInstance.localData : this.listViewInstance.dataSource;\n const index = listDataSource.indexOf(dataSource);\n if (index !== -1) {\n listDataSource.splice(index, 1);\n this.listViewInstance.setViewDataSource(listDataSource);\n }\n // recollect all the list item into collection\n this.listViewInstance.liCollection =\n this.listViewInstance.curUL.querySelectorAll('li');\n }\n // eslint-disable-next-line\n setCheckboxLI(li, e) {\n const index = Array.prototype.indexOf.call(this.listViewInstance.curUL.querySelectorAll('li'), li) + this.uiFirstIndex;\n this.activeIndex = Array.prototype.indexOf.call(this.listViewInstance.curUL.querySelectorAll('li'), li) + this.uiFirstIndex;\n if (li.classList.contains(classNames.selected)) {\n if (this.uiIndices.activeIndices.indexOf(index) === -1) {\n this.uiIndices.activeIndices.push(index);\n }\n }\n else {\n this.uiIndices.activeIndices.splice(this.uiIndices.activeIndices.indexOf(index), 1);\n }\n }\n // eslint-disable-next-line\n setSelectLI(li, e) {\n this.activeIndex = Array.prototype.indexOf.call(this.listViewInstance.curUL.querySelectorAll('li'), li) + this.uiFirstIndex;\n }\n checkedItem(checked) {\n if (checked) {\n this.uiIndices.activeIndices = [];\n this.activeIndex = undefined;\n const data = this.listViewInstance.curViewDS;\n for (let index = 0; index < data.length; index++) {\n if (!data[index].isHeader) {\n this.uiIndices.activeIndices.push(index);\n }\n }\n }\n else {\n this.activeIndex = undefined;\n this.uiIndices.activeIndices = [];\n }\n }\n addUiItem(index) {\n // virtually new add list item based on the scollbar position\n // if the scroll bar is at the top, just pretend the new item has been added since no UI\n // change is required for the item that has been added at last but when scroll bar is at the bottom\n // just detach top and inject into bottom to mimic new item is added\n const curViewDs = this.listViewInstance.curViewDS;\n this.changeUiIndices(index, true);\n if (this.activeIndex && this.activeIndex >= index) {\n this.activeIndex++;\n }\n if (this.listViewInstance.showCheckBox &&\n curViewDs[index][this.listViewInstance.fields.isChecked]) {\n this.uiIndices.activeIndices.push(index);\n }\n if (!parseFloat(this.bottomElement.style.height) && !parseFloat(this.topElement.style.height)) {\n this.bottomElement.style.height = parseFloat(this.bottomElement.style.height) + this.listItemHeight + 'px';\n }\n if (parseFloat(this.bottomElement.style.height)) {\n const liItem = this.listViewInstance.curUL.lastElementChild.previousSibling;\n const target = this.listViewInstance.getLiFromObjOrElement(curViewDs[index + 1]) ||\n this.listViewInstance.getLiFromObjOrElement(curViewDs[index + 2]);\n if (target) {\n this.bottomElement.style.height = parseFloat(this.bottomElement.style.height) + this.listItemHeight + 'px';\n this.updateUI(liItem, index, target);\n }\n }\n else {\n const liItem = this.listViewInstance.curUL.firstElementChild.nextSibling;\n let target;\n if ((Object.keys(this.listViewInstance.curViewDS).length - 1) === index) {\n target = this.listViewInstance.curUL.lastElementChild;\n }\n else {\n target = this.listViewInstance.getLiFromObjOrElement(curViewDs[index + 1]) ||\n this.listViewInstance.getLiFromObjOrElement(curViewDs[index + 2]);\n }\n this.topElement.style.height = parseFloat(this.topElement.style.height) + this.listItemHeight + 'px';\n this.uiFirstIndex++;\n this.uiLastIndex++;\n if (target) {\n this.updateUI(liItem, index, target);\n if (this.listViewInstance.isWindow === true) {\n window.scrollTo(0, (pageYOffset + this.listItemHeight));\n }\n else {\n this.listViewInstance.element.scrollTop += this.listItemHeight;\n }\n }\n }\n this.totalHeight += this.listItemHeight;\n this.listDiff = Math.round(parseFloat(this.topElement.style.height) / this.listItemHeight);\n }\n removeUiItem(index) {\n this.totalHeight -= this.listItemHeight;\n const curViewDS = this.listViewInstance.curViewDS[index];\n const liItem = this.listViewInstance.getLiFromObjOrElement(curViewDS);\n this.listViewInstance.curViewDS.splice(index, 1);\n if (this.activeIndex && this.activeIndex >= index) {\n this.activeIndex--;\n }\n if (liItem) {\n if (this.domItemCount > Object.keys(this.listViewInstance.curViewDS).length) {\n detach(liItem);\n this.domItemCount--;\n this.uiLastIndex--;\n this.totalHeight = 0;\n }\n else {\n if (liItem.classList.contains(classNames.disable)) {\n liItem.classList.remove(classNames.disable);\n this.uiIndices.disabledItemIndices.splice(this.uiIndices.disabledItemIndices.indexOf(index), 1);\n }\n if (liItem.style.display === 'none') {\n liItem.style.display = '';\n this.uiIndices.hiddenItemIndices.splice(this.uiIndices.hiddenItemIndices.indexOf(index), 1);\n }\n if (this.listViewInstance.showCheckBox && liItem.classList.contains(classNames.selected)) {\n this.listViewInstance.removeSelect();\n this.uiIndices.activeIndices.splice(this.uiIndices.activeIndices.indexOf(index), 1);\n const checklistElement = liItem.querySelector('.' + classNames.checkboxWrapper);\n checklistElement.removeAttribute('aria-checked');\n checklistElement.firstElementChild.classList.remove(classNames.checked);\n if (liItem.classList.contains(classNames.focused)) {\n liItem.classList.remove(classNames.focused);\n this.activeIndex = undefined;\n }\n }\n else if (liItem.classList.contains(classNames.selected)) {\n this.listViewInstance.removeSelect();\n this.activeIndex = undefined;\n }\n if (!parseFloat(this.bottomElement.style.height) && !parseFloat(this.topElement.style.height)) {\n this.updateUI(liItem, this.uiLastIndex, this.bottomElement);\n }\n else if (parseFloat(this.bottomElement.style.height)) {\n this.bottomElement.style.height = parseFloat(this.bottomElement.style.height) - this.listItemHeight + 'px';\n this.updateUI(liItem, this.uiLastIndex, this.bottomElement);\n }\n else {\n this.topElement.style.height = parseFloat(this.topElement.style.height) - this.listItemHeight + 'px';\n this.updateUI(liItem, (this.uiFirstIndex - 1), this.topElement.nextSibling);\n this.uiLastIndex--;\n this.uiFirstIndex--;\n }\n }\n }\n this.changeUiIndices(index, false);\n this.listDiff = Math.round(parseFloat(this.topElement.style.height) / this.listItemHeight);\n }\n changeUiIndices(index, increment) {\n const keys = Object.keys(this.uiIndices);\n for (let ind = 0; ind < keys.length; ind++) {\n this.uiIndices[keys[ind]] = this.uiIndices[keys[ind]].map((i) => {\n if (i >= index) {\n return increment ? ++i : --i;\n }\n else {\n return i;\n }\n });\n }\n }\n addItem(data, fields, dataSource, index) {\n for (let i = 0; i < data.length; i++) {\n const currentItem = data[i];\n // push the given data to main data array\n dataSource = this.listViewInstance.addItemAtIndex(index, dataSource, currentItem);\n // recalculate all the group data or other datasource related things\n this.listViewInstance.setViewDataSource(dataSource);\n // render list items for first time due to no datasource present earlier\n if (!this.domItemCount) {\n // fresh rendering for first time\n if ((this.listViewInstance.template || this.listViewInstance.groupTemplate) && !this.isNgTemplate()) {\n this.listViewInstance.listBaseOption.template = null;\n this.listViewInstance.listBaseOption.groupTemplate = null;\n this.listViewInstance.listBaseOption.itemCreated = this.createUIItem.bind(this);\n }\n this.uiVirtualization();\n // when expected expected DOM count doesn't meet the condition we need to create and inject new item into DOM\n }\n else if (this.domItemCount < this.expectedDomItemCount) {\n const ds = this.listViewInstance.findItemFromDS(dataSource, fields);\n if (ds instanceof Array) {\n if (this.listViewInstance.ulElement) {\n let index = this.listViewInstance.curViewDS.indexOf(currentItem);\n // inject new list item into DOM\n this.createAndInjectNewItem(currentItem, index);\n // check for group header item\n const curViewDS = this.listViewInstance.curViewDS[index - 1];\n if (curViewDS && curViewDS.isHeader && curViewDS.items.length === 1) {\n // target group item index in datasource\n --index;\n // inject new group header into DOM for previously created list item\n this.createAndInjectNewItem(curViewDS, index);\n }\n }\n // recollect all the list item into collection\n this.listViewInstance.liCollection =\n this.listViewInstance.curUL.querySelectorAll('li');\n }\n }\n else {\n const index = this.listViewInstance.curViewDS.indexOf(currentItem);\n // virtually new add list item based on the scollbar position\n this.addUiItem(index);\n // check for group header item needs to be added\n const curViewDS = this.listViewInstance.curViewDS[index - 1];\n if (curViewDS && curViewDS.isHeader && curViewDS.items.length === 1) {\n this.addUiItem(index - 1);\n }\n }\n }\n }\n createAndInjectNewItem(itemData, index) {\n // generate li item for given datasource\n let target;\n const li = ListBase.createListItemFromJson(this.listViewInstance.createElement, [itemData], this.listViewInstance.listBaseOption, null, null, this.listViewInstance);\n // check for target element whether to insert before last item or group item\n if ((Object.keys(this.listViewInstance.curViewDS).length - 1) === index) {\n target = this.listViewInstance.curUL.lastElementChild;\n }\n else {\n // target group header's first child item to append its header\n target = this.listViewInstance.getLiFromObjOrElement(this.listViewInstance.curViewDS[index + 1]) ||\n this.listViewInstance.getLiFromObjOrElement(this.listViewInstance.curViewDS[index + 2]);\n }\n if (this.listViewInstance.fields.groupBy\n && this.listViewInstance.curViewDS[index + 1]\n && this.listViewInstance.curViewDS[index + 1].isHeader) {\n const targetEle = this.listViewInstance.getLiFromObjOrElement(this.listViewInstance.curViewDS[index - 1]);\n if (targetEle) {\n target = targetEle.nextElementSibling;\n }\n }\n // insert before the target element\n this.listViewInstance.ulElement.insertBefore(li[0], target);\n // increment internal DOM count, last index count for new element\n this.domItemCount++;\n if (this.bottomElementHeight <= 0) {\n this.uiLastIndex++;\n }\n // recalculate the current item height, to avoid jumpy scroller\n this.refreshItemHeight();\n }\n createUIItem(args) {\n if (!args.item.classList.contains('e-list-group-item')) {\n this.templateData = args.curData.isHeader ? args.curData.items[0] :\n args.curData;\n if (this.listViewInstance.showCheckBox) {\n this.listViewInstance.renderCheckbox(args);\n if ((!isNullOrUndefined(this.listViewInstance.virtualCheckBox)) &&\n (!isNullOrUndefined(this.listViewInstance.virtualCheckBox.outerHTML))) {\n const div = document.createElement('div');\n const commonTemplate = '<div class=\"e-text-content\" role=\"presentation\"> ' +\n '<span class=\"e-list-text\"> ${' + this.listViewInstance.fields.text + '} </span></div>';\n const templateFunction = compile(this.listViewInstance.template || commonTemplate, this.listViewInstance);\n const nodes = templateFunction(this.templateData, this.listViewInstance);\n if (this.listViewInstance.template && this.listViewInstance.isReact) {\n this.listViewInstance.renderReactTemplates();\n }\n [].slice.call(nodes).forEach((ele) => {\n div.appendChild(ele);\n });\n if (div.children && div.children[0]) {\n div.children[0].classList.add('e-checkbox');\n if (this.listViewInstance.checkBoxPosition === 'Left') {\n div.children[0].classList.add('e-checkbox-left');\n }\n else {\n div.children[0].classList.add('e-checkbox-right');\n }\n if (this.listViewInstance.checkBoxPosition === 'Left') {\n div.children[0].insertBefore(this.listViewInstance.virtualCheckBox, div.childNodes[0].children[0]);\n }\n else {\n div.children[0].appendChild(this.listViewInstance.virtualCheckBox);\n }\n while (args.item.lastChild) {\n args.item.removeChild(args.item.lastChild);\n }\n [].slice.call(div.children).forEach((ele) => {\n args.item.appendChild(ele);\n });\n }\n }\n }\n }\n }\n reRenderUiVirtualization() {\n this.wireScrollEvent(true);\n if (this.listViewInstance.contentContainer) {\n detach(this.listViewInstance.contentContainer);\n }\n this.listViewInstance.preRender();\n // resetting the dom count to 0, to avoid edge case of dataSource suddenly becoming zero\n // and then manually adding item using addItem API\n this.domItemCount = 0;\n this.listViewInstance.header();\n this.listViewInstance.setLocalData();\n }\n updateUI(element, index, targetElement) {\n const onChange = this.isNgTemplate() ? this.onNgChange : this.onChange;\n if (this.listViewInstance.template || this.listViewInstance.groupTemplate) {\n const curViewDS = this.listViewInstance.curViewDS[index];\n element.dataset.uid = (curViewDS[this.listViewInstance.fields.id]) ?\n (curViewDS[this.listViewInstance.fields.id]) : ListBase.generateId();\n onChange(curViewDS, element, this);\n }\n else {\n this.updateUiContent(element, index);\n }\n this.changeElementAttributes(element, index);\n if (targetElement) {\n this.listViewInstance.ulElement.insertBefore(element, targetElement);\n }\n }\n /**\n * Handles the UI change in vue for the list view.\n *\n * @param {DataSource} newData - The new data source for the list view.\n * @param {ElementContext} listElement - The HTML element context for the list view.\n * @param {Virtualization} virtualThis - The virtualization context for the list view.\n * @returns {void}\n */\n onChange(newData, listElement, virtualThis) {\n const liItem = ListBase.createListItemFromJson(virtualThis.listViewInstance.createElement, [newData], virtualThis.listViewInstance.listBaseOption, null, null, virtualThis.listViewInstance);\n if (virtualThis.listViewInstance.isReact) {\n virtualThis.listViewInstance.renderReactTemplates();\n }\n while (listElement.lastChild) {\n listElement.removeChild(listElement.lastChild);\n }\n [].slice.call(liItem[0].children).forEach((ele) => {\n listElement.appendChild(ele);\n });\n }\n onNgChange(newData, listElement, virtualThis) {\n // compile given target element with template for new data\n const templateCompiler = compile(virtualThis.listViewInstance.template);\n const resultElement = templateCompiler(newData);\n while (listElement.lastChild) {\n listElement.removeChild(listElement.lastChild);\n }\n listElement.appendChild(resultElement[0]);\n }\n getModuleName() {\n return 'virtualization';\n }\n destroy() {\n this.wireScrollEvent(true);\n this.topElement = null;\n this.bottomElement = null;\n }\n}\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar Sortable_1;\nimport { Base, Event, getUniqueID, NotifyPropertyChanges, Property } from '@syncfusion/ej2-base';\nimport { closest, Draggable, remove, compareElementParent } from '@syncfusion/ej2-base';\nimport { addClass, isNullOrUndefined, getComponent, isBlazor, EventHandler } from '@syncfusion/ej2-base';\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/**\n * Sortable Module provides support to enable sortable functionality in Dom Elements.\n * ```html\n * <div id=\"sortable\">\n * <div>Item 1</div>\n * <div>Item 2</div>\n * <div>Item 3</div>\n * <div>Item 4</div>\n * <div>Item 5</div>\n * </div>\n * ```\n * ```typescript\n * let ele: HTMLElement = document.getElementById('sortable');\n * let sortObj: Sortable = new Sortable(ele, {});\n * ```\n */\nlet Sortable = Sortable_1 = class Sortable extends Base {\n constructor(element, options) {\n super(options, element);\n this.getHelper = (e) => {\n const target = this.getSortableElement(e.sender.target);\n if (!this.isValidTarget(target, this)) {\n return false;\n }\n let element;\n if (this.helper) {\n element = this.helper({ sender: target, element: e.element });\n }\n else {\n element = target.cloneNode(true);\n element.style.width = `${target.offsetWidth}px`;\n element.style.height = `${target.offsetHeight}px`;\n }\n addClass([element], ['e-sortableclone']);\n document.body.appendChild(element);\n return element;\n };\n this.onDrag = (e) => {\n if (!e.target) {\n return;\n }\n this.trigger('drag', { event: e.event, element: this.element, target: e.target });\n let newInst = this.getSortableInstance(e.target);\n let target = this.getSortableElement(e.target, newInst);\n if ((this.isValidTarget(target, newInst) || (e.target && typeof e.target.className === 'string' && e.target.className.indexOf('e-list-group-item') > -1)) && (this.curTarget !== target ||\n !isNullOrUndefined(newInst.placeHolder)) && (newInst.placeHolderElement ? newInst.placeHolderElement !== e.target : true)) {\n if (e.target.classList.contains('e-list-group-item')) {\n target = e.target;\n }\n this.curTarget = target;\n if (this.target === target) {\n return;\n }\n let oldIdx = this.getIndex(newInst.placeHolderElement, newInst);\n const placeHolder = this.getPlaceHolder(target, newInst);\n let newIdx;\n if (placeHolder) {\n oldIdx = isNullOrUndefined(oldIdx) ? this.getIndex(this.target) : oldIdx;\n newIdx = this.getIndex(target, newInst, e.event);\n const isPlaceHolderPresent = this.isPlaceHolderPresent(newInst);\n if (isPlaceHolderPresent && oldIdx === newIdx) {\n return;\n }\n if (isPlaceHolderPresent) {\n remove(newInst.placeHolderElement);\n }\n newInst.placeHolderElement = placeHolder;\n if (e.target && typeof e.target.className === 'string' && e.target.className.indexOf('e-list-group-item') > -1) {\n newInst.element.insertBefore(newInst.placeHolderElement, newInst.element.children[newIdx]);\n }\n else if (newInst.element !== this.element && newIdx === newInst.element.childElementCount) {\n newInst.element.appendChild(newInst.placeHolderElement);\n }\n else {\n newInst.element.insertBefore(newInst.placeHolderElement, newInst.element.children[newIdx]);\n }\n this.refreshDisabled(oldIdx, newIdx, newInst);\n }\n else {\n oldIdx = isNullOrUndefined(oldIdx) ? this.getIndex(this.target) :\n this.getIndex(target, newInst) < oldIdx || !oldIdx ? oldIdx : oldIdx - 1;\n newIdx = this.getIndex(target, newInst);\n const idx = newInst.element !== this.element ? newIdx : oldIdx < newIdx ? newIdx + 1 : newIdx;\n this.updateItemClass(newInst);\n newInst.element.insertBefore(this.target, newInst.element.children[idx]);\n this.refreshDisabled(oldIdx, newIdx, newInst);\n this.curTarget = this.target;\n this.trigger('drop', {\n droppedElement: this.target, element: newInst.element, previousIndex: oldIdx, currentIndex: newIdx,\n target: e.target, helper: document.getElementsByClassName('e-sortableclone')[0], event: e.event, scope: this.scope\n });\n }\n }\n else if (this.curTarget !== this.target && this.scope && this.curTarget !== target && !isNullOrUndefined(newInst.placeHolder)) {\n remove(this.getSortableInstance(this.curTarget).placeHolderElement);\n this.curTarget = this.target;\n }\n newInst = this.getSortableInstance(this.curTarget);\n if (isNullOrUndefined(target) && e.target !== newInst.placeHolderElement) {\n if (this.isPlaceHolderPresent(newInst)) {\n this.removePlaceHolder(newInst);\n }\n }\n else {\n const placeHolders = [].slice.call(document.getElementsByClassName('e-sortable-placeholder'));\n let inst;\n placeHolders.forEach((placeHolder) => {\n inst = this.getSortableInstance(placeHolder);\n if (inst.element && inst !== newInst) {\n this.removePlaceHolder(inst);\n }\n });\n }\n };\n this.onDragStart = (e) => {\n this.target = this.getSortableElement(e.target);\n let cancelDrag = false;\n this.target.classList.add('e-grabbed');\n this.curTarget = this.target;\n e.helper = document.getElementsByClassName('e-sortableclone')[0];\n const args = { cancel: false, element: this.element, target: this.target };\n this.trigger('beforeDragStart', args, (observedArgs) => {\n if (observedArgs.cancel) {\n cancelDrag = observedArgs.cancel;\n this.onDragStop(e);\n }\n });\n if (cancelDrag) {\n return;\n }\n if (isBlazor) {\n this.trigger('dragStart', {\n event: e.event, element: this.element, target: this.target,\n bindEvents: e.bindEvents, dragElement: e.dragElement\n });\n }\n else {\n this.trigger('dragStart', { event: e.event, element: this.element, target: this.target });\n }\n };\n this.onDragStop = (e) => {\n let dropInst = this.getSortableInstance(this.curTarget);\n let curIdx;\n let prevIdx;\n let handled;\n prevIdx = this.getIndex(this.target);\n const isPlaceHolderPresent = this.isPlaceHolderPresent(dropInst);\n if (isPlaceHolderPresent) {\n const curIdx = this.getIndex(dropInst.placeHolderElement, dropInst);\n const args = {\n previousIndex: prevIdx, currentIndex: curIdx, target: e.target, droppedElement: this.target,\n helper: e.helper, cancel: false, handled: false\n };\n this.trigger('beforeDrop', args, (observedArgs) => {\n if (!observedArgs.cancel) {\n handled = observedArgs.handled;\n this.updateItemClass(dropInst);\n if (observedArgs.handled) {\n const ele = this.target.cloneNode(true);\n this.target.classList.remove('e-grabbed');\n this.target = ele;\n }\n dropInst.element.insertBefore(this.target, dropInst.placeHolderElement);\n const curIdx = this.getIndex(this.target, dropInst);\n prevIdx = this === dropInst && (prevIdx - curIdx) > 1 ? prevIdx - 1 : prevIdx;\n this.trigger('drop', {\n event: e.event, element: dropInst.element, previousIndex: prevIdx, currentIndex: curIdx,\n target: e.target, helper: e.helper, droppedElement: this.target, scopeName: this.scope, handled: handled\n });\n }\n remove(dropInst.placeHolderElement);\n });\n }\n dropInst = this.getSortableInstance(e.target);\n curIdx = dropInst.element.childElementCount;\n prevIdx = this.getIndex(this.target);\n if (dropInst.element.querySelector('.e-list-nrt')) {\n curIdx = curIdx - 1;\n }\n if (this.curTarget === this.target && e.target === this.curTarget) {\n curIdx = prevIdx;\n }\n if (dropInst.element === e.target || (!isPlaceHolderPresent && this.curTarget === this.target)) {\n const beforeDropArgs = {\n previousIndex: prevIdx, currentIndex: curIdx,\n target: e.target, droppedElement: this.target, helper: e.helper, cancel: false\n };\n this.trigger('beforeDrop', beforeDropArgs, (observedArgs) => {\n if ((dropInst.element === e.target || (typeof e.target.className === 'string' && e.target.className.indexOf('e-list-nrt') > -1) || (typeof e.target.className === 'string' && e.target.className.indexOf('e-list-nr-template') > -1)\n || e.target.closest('.e-list-nr-template')) && !observedArgs.cancel) {\n this.updateItemClass(dropInst);\n dropInst.element.appendChild(this.target);\n this.trigger('drop', {\n event: e.event, element: dropInst.element, previousIndex: prevIdx, currentIndex: curIdx,\n target: e.target, helper: e.helper, droppedElement: this.target, scopeName: this.scope\n });\n }\n });\n }\n this.target.classList.remove('e-grabbed');\n this.target = null;\n this.curTarget = null;\n remove(e.helper);\n getComponent(this.element, 'draggable').intDestroy(e.event);\n };\n this.bind();\n }\n bind() {\n if (!this.element.id) {\n this.element.id = getUniqueID('sortable');\n }\n if (!this.itemClass) {\n this.itemClass = 'e-sort-item';\n this.dataBind();\n }\n this.initializeDraggable();\n }\n initializeDraggable() {\n new Draggable(this.element, {\n helper: this.getHelper,\n dragStart: this.onDragStart,\n drag: this.onDrag,\n dragStop: this.onDragStop,\n dragTarget: `.${this.itemClass}`,\n enableTapHold: true,\n tapHoldThreshold: 200,\n queryPositionInfo: this.queryPositionInfo,\n distance: 1\n });\n this.wireEvents();\n }\n wireEvents() {\n const wrapper = this.element;\n EventHandler.add(wrapper, 'keydown', this.keyDownHandler, this);\n }\n unwireEvents() {\n const wrapper = this.element;\n EventHandler.remove(wrapper, 'keydown', this.keyDownHandler);\n }\n keyDownHandler(e) {\n if (e.keyCode === 27) {\n const dragStop = getComponent(this.element, 'draggable');\n if (dragStop) {\n dragStop.intDestroy(null);\n }\n const dragWrapper = document.getElementsByClassName('e-sortableclone')[0];\n if (dragWrapper) {\n dragWrapper.remove();\n }\n const dragPlaceholder = document.getElementsByClassName('e-sortable-placeholder')[0];\n if (dragPlaceholder) {\n dragPlaceholder.remove();\n }\n }\n }\n getPlaceHolder(target, instance) {\n if (instance.placeHolder) {\n const placeHolderElement = instance.placeHolder({ element: instance.element, grabbedElement: this.target, target: target });\n placeHolderElement.classList.add('e-sortable-placeholder');\n return placeHolderElement;\n }\n return null;\n }\n isValidTarget(target, instance) {\n return target && compareElementParent(target, instance.element) && target.classList.contains(instance.itemClass) &&\n !target.classList.contains('e-disabled');\n }\n removePlaceHolder(instance) {\n remove(instance.placeHolderElement);\n instance.placeHolderElement = null;\n }\n updateItemClass(instance) {\n if (this !== instance) {\n this.target.classList.remove(this.itemClass);\n this.target.classList.add(instance.itemClass);\n }\n }\n getSortableInstance(element) {\n element = closest(element, `.e-${this.getModuleName()}`);\n if (element) {\n const inst = getComponent(element, Sortable_1);\n return inst.scope && this.scope && inst.scope === this.scope ? inst : this;\n }\n else {\n return this;\n }\n }\n refreshDisabled(oldIdx, newIdx, instance) {\n if (instance === this) {\n let element;\n const increased = oldIdx < newIdx;\n let disabledIdx;\n let start = increased ? oldIdx : newIdx;\n const end = increased ? newIdx : oldIdx;\n while (start <= end) {\n element = this.element.children[start];\n if (element.classList.contains('e-disabled')) {\n disabledIdx = this.getIndex(element);\n this.element.insertBefore(element, this.element.children[increased ? disabledIdx + 2 : disabledIdx - 1]);\n start = increased ? disabledIdx + 2 : disabledIdx + 1;\n }\n else {\n start++;\n }\n }\n }\n }\n getIndex(target, instance = this, e) {\n let idx;\n let placeHolderPresent;\n [].slice.call(instance.element.children).forEach((element, index) => {\n if (element.classList.contains('e-sortable-placeholder')) {\n placeHolderPresent = true;\n }\n if (element === target) {\n idx = index;\n if (!isNullOrUndefined(e)) {\n if (placeHolderPresent) {\n idx -= 1;\n }\n const offset = target.getBoundingClientRect();\n const clientY = offset.bottom - ((offset.bottom - offset.top) / 2);\n const cltY = e.changedTouches ? e.changedTouches[0].clientY : e.clientY;\n idx = cltY <= clientY ? idx : idx + 1;\n }\n return;\n }\n });\n return idx;\n }\n getSortableElement(element, instance = this) {\n return closest(element, `.${instance.itemClass}`);\n }\n queryPositionInfo(value) {\n value.left = pageXOffset ? `${parseFloat(value.left) - pageXOffset}px` : value.left;\n value.top = pageYOffset ? `${parseFloat(value.top) - pageYOffset}px` : value.top;\n return value;\n }\n isPlaceHolderPresent(instance) {\n return instance.placeHolderElement && !!closest(instance.placeHolderElement, `#${instance.element.id}`);\n }\n /**\n * It is used to sort array of elements from source element to destination element.\n *\n * @param destination - Defines the destination element to which the sortable elements needs to be appended.\n *\n * If it is null, then the Sortable library element will be considered as destination.\n * @param targetIndexes - Specifies the sortable elements indexes which needs to be sorted.\n * @param insertBefore - Specifies the index before which the sortable elements needs to be appended.\n * If it is null, elements will be appended as last child.\n * @function moveTo\n * @returns {void}\n */\n moveTo(destination, targetIndexes, insertBefore) {\n moveTo(this.element, destination, targetIndexes, insertBefore);\n }\n /**\n * It is used to destroy the Sortable library.\n */\n destroy() {\n this.unwireEvents();\n if (this.itemClass === 'e-sort-item') {\n this.itemClass = null;\n this.dataBind();\n }\n getComponent(this.element, Draggable).destroy();\n super.destroy();\n }\n getModuleName() {\n return 'sortable';\n }\n onPropertyChanged(newProp, oldProp) {\n for (const prop of Object.keys(newProp)) {\n switch (prop) {\n case 'itemClass':\n [].slice.call(this.element.children).forEach((element) => {\n if (element.classList.contains(oldProp.itemClass)) {\n element.classList.remove(oldProp.itemClass);\n }\n if (newProp.itemClass) {\n element.classList.add(newProp.itemClass);\n }\n });\n break;\n }\n }\n }\n};\n__decorate([\n Property(false)\n], Sortable.prototype, \"enableAnimation\", void 0);\n__decorate([\n Property(null)\n], Sortable.prototype, \"itemClass\", void 0);\n__decorate([\n Property(null)\n], Sortable.prototype, \"scope\", void 0);\n__decorate([\n Property()\n], Sortable.prototype, \"helper\", void 0);\n__decorate([\n Property()\n], Sortable.prototype, \"placeHolder\", void 0);\n__decorate([\n Event()\n], Sortable.prototype, \"drag\", void 0);\n__decorate([\n Event()\n], Sortable.prototype, \"beforeDragStart\", void 0);\n__decorate([\n Event()\n], Sortable.prototype, \"dragStart\", void 0);\n__decorate([\n Event()\n], Sortable.prototype, \"beforeDrop\", void 0);\n__decorate([\n Event()\n], Sortable.prototype, \"drop\", void 0);\nSortable = Sortable_1 = __decorate([\n NotifyPropertyChanges\n], Sortable);\nexport { Sortable };\n/**\n * It is used to sort array of elements from source element to destination element.\n *\n * @param {HTMLElement} from - The source element from which to move elements.\n * @param {HTMLElement} [to=from] - The destination element to which to move elements. Defaults to the source element.\n * @param {number[]} [targetIndexes] - The indexes of elements to move. If not provided, all children of the source element will be moved.\n * @param {number} [insertBefore] - The index before which to insert the moved elements in the destination element. If not provided, elements will be appended to the end of the destination element.\n * @returns {void}\n * @private\n */\nexport function moveTo(from, to, targetIndexes, insertBefore) {\n let targetElements = [];\n if (!to) {\n to = from;\n }\n if (targetIndexes && targetIndexes.length) {\n targetIndexes.forEach((index) => {\n targetElements.push(from.children[index]);\n });\n }\n else {\n targetElements = [].slice.call(from.children);\n }\n if (isNullOrUndefined(insertBefore)) {\n targetElements.forEach((target) => {\n to.appendChild(target);\n });\n }\n else {\n const insertElement = to.children[insertBefore];\n targetElements.forEach((target) => {\n to.insertBefore(target, insertElement);\n });\n }\n}\n"],"names":["this","__decorate"],"mappings":";;;;AAAA;AAKU,IAAC,QAAQ,GAAG;AACtB,IAAI,EAAE,EAAE,aAAa;AACrB,IAAI,EAAE,EAAE,oBAAoB;AAC5B,IAAI,KAAK,EAAE,mBAAmB;AAC9B,IAAI,IAAI,EAAE,aAAa;AACvB,IAAI,IAAI,EAAE,aAAa;AACvB,IAAI,KAAK,EAAE,cAAc;AACzB,IAAI,OAAO,EAAE,WAAW;AACxB,IAAI,QAAQ,EAAE,YAAY;AAC1B,IAAI,QAAQ,EAAE,YAAY;AAC1B,IAAI,WAAW,EAAE,gBAAgB;AACjC,IAAI,QAAQ,EAAE,aAAa;AAC3B,IAAI,KAAK,EAAE,SAAS;AACpB,IAAI,GAAG,EAAE,YAAY;AACrB,IAAI,WAAW,EAAE,oBAAoB;AACrC,IAAI,QAAQ,EAAE,YAAY;AAC1B,IAAI,KAAK,EAAE,YAAY;AACvB,IAAI,WAAW,EAAE,gBAAgB;AACjC,IAAI,UAAU,EAAE,eAAe;AAC/B,IAAI,SAAS,EAAE,aAAa;AAC5B,EAAE;AACF;AACA;AACA;AACA;AACU,IAAC,SAAS;AACpB,CAAC,UAAU,QAAQ,EAAE;AACrB;AACA;AACA;AACA;AACA,IAAI,QAAQ,CAAC,mBAAmB,GAAG;AACnC,QAAQ,EAAE,EAAE,IAAI;AAChB,QAAQ,IAAI,EAAE,MAAM;AACpB,QAAQ,GAAG,EAAE,KAAK;AAClB,QAAQ,KAAK,EAAE,OAAO;AACtB,QAAQ,SAAS,EAAE,WAAW;AAC9B,QAAQ,OAAO,EAAE,SAAS;AAC1B,QAAQ,QAAQ,EAAE,UAAU;AAC5B,QAAQ,QAAQ,EAAE,UAAU;AAC5B,QAAQ,OAAO,EAAE,SAAS;AAC1B,QAAQ,KAAK,EAAE,OAAO;AACtB,QAAQ,SAAS,EAAE,WAAW;AAC9B,QAAQ,WAAW,EAAE,aAAa;AAClC,QAAQ,OAAO,EAAE,SAAS;AAC1B,QAAQ,cAAc,EAAE,gBAAgB;AACxC,QAAQ,aAAa,EAAE,eAAe;AACtC,QAAQ,eAAe,EAAE,iBAAiB;AAC1C,QAAQ,QAAQ,EAAE,UAAU;AAC5B,QAAQ,OAAO,EAAE,IAAI;AACrB,QAAQ,MAAM,EAAE,IAAI;AACpB,KAAK,CAAC;AACN,IAAI,MAAM,qBAAqB,GAAG;AAClC,QAAQ,KAAK,EAAE,CAAC;AAChB,QAAQ,QAAQ,EAAE,cAAc;AAChC,QAAQ,QAAQ,EAAE,cAAc;AAChC,QAAQ,aAAa,EAAE,OAAO;AAC9B,QAAQ,QAAQ,EAAE,WAAW;AAC7B,QAAQ,WAAW,EAAE,cAAc;AACnC,KAAK,CAAC;AACN,IAAI,MAAM,sBAAsB,GAAG;AACnC,QAAQ,YAAY,EAAE,KAAK;AAC3B,QAAQ,QAAQ,EAAE,KAAK;AACvB,QAAQ,mBAAmB,EAAE,KAAK;AAClC,QAAQ,cAAc,EAAE,KAAK;AAC7B,QAAQ,MAAM,EAAE,QAAQ,CAAC,mBAAmB;AAC5C,QAAQ,cAAc,EAAE,qBAAqB;AAC7C,QAAQ,SAAS,EAAE,EAAE;AACrB,QAAQ,SAAS,EAAE,EAAE;AACrB,QAAQ,eAAe,EAAE,KAAK;AAC9B,QAAQ,SAAS,EAAE,MAAM;AACzB,QAAQ,QAAQ,EAAE,IAAI;AACtB,QAAQ,aAAa,EAAE,IAAI;AAC3B,QAAQ,cAAc,EAAE,IAAI;AAC5B,QAAQ,eAAe,EAAE,oBAAoB;AAC7C,QAAQ,UAAU,EAAE,MAAM;AAC1B,QAAQ,kBAAkB,EAAE,OAAO;AACnC,QAAQ,aAAa,EAAE,KAAK;AAC5B,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,SAAS,UAAU,CAAC,aAAa,EAAE,UAAU,EAAE,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE;AAC9F,QAAQ,MAAM,MAAM,GAAG,MAAM,CAAC,EAAE,EAAE,sBAAsB,EAAE,OAAO,CAAC,CAAC;AACnE,QAAQ,MAAM,cAAc,GAAG,MAAM,CAAC,EAAE,EAAE,qBAAqB,EAAE,MAAM,CAAC,cAAc,CAAC,CAAC;AACxF,QAAQ,MAAM,IAAI,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC;AACnD,QAAQ,IAAI,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,QAAQ,EAAE;AACpD,YAAY,OAAO,mBAAmB,CAAC,aAAa,EAAE,UAAU,EAAE,aAAa,EAAE,OAAO,EAAE,iBAAiB,CAAC,CAAC;AAC7G,SAAS;AACT,aAAa;AACb,YAAY,OAAO,kBAAkB,CAAC,aAAa,EAAE,UAAU,EAAE,OAAO,EAAE,cAAc,CAAC,KAAK,EAAE,aAAa,EAAE,iBAAiB,CAAC,CAAC;AAClI,SAAS;AACT,KAAK;AACL,IAAI,QAAQ,CAAC,UAAU,GAAG,UAAU,CAAC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,SAAS,mBAAmB,CAAC,aAAa,EAAE,UAAU,EAAE,aAAa,EAAE,OAAO,EAAE,iBAAiB,EAAE;AACvG,QAAQ,MAAM,QAAQ,GAAG,uBAAuB,CAAC,aAAa,EAAE,UAAU,EAAE,aAAa,EAAE,OAAO,EAAE,iBAAiB,CAAC,CAAC;AACvH,QAAQ,OAAO,UAAU,CAAC,aAAa,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;AAClE,KAAK;AACL,IAAI,QAAQ,CAAC,mBAAmB,GAAG,mBAAmB,CAAC;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,SAAS,uBAAuB,CAAC,aAAa,EAAE,UAAU,EAAE,aAAa,EAAE,OAAO,EAAE,iBAAiB,EAAE;AAC3G,QAAQ,MAAM,QAAQ,GAAG,EAAE,CAAC;AAC5B,QAAQ,MAAM,MAAM,GAAG,MAAM,CAAC,EAAE,EAAE,sBAAsB,EAAE,OAAO,CAAC,CAAC;AACnE,QAAQ,QAAQ,GAAG,cAAc,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;AACrD,QAAQ,MAAM,EAAE,GAAG,UAAU,EAAE,CAAC;AAChC,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACpD,YAAY,IAAI,iBAAiB,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE;AAClD,gBAAgB,SAAS;AACzB,aAAa;AACb,YAAY,IAAI,EAAE,CAAC;AACnB,YAAY,IAAI,MAAM,CAAC,YAAY,IAAI,OAAO,MAAM,CAAC,YAAY,KAAK,UAAU,EAAE;AAClF,gBAAgB,MAAM,OAAO,GAAG;AAChC,oBAAoB,UAAU,EAAE,UAAU;AAC1C,oBAAoB,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC;AAC1C,oBAAoB,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC;AACvC,oBAAoB,OAAO,EAAE,MAAM;AACnC,iBAAiB,CAAC;AAClB,gBAAgB,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;AAC7C,aAAa;AACb,YAAY,IAAI,aAAa,EAAE;AAC/B,gBAAgB,EAAE,GAAG,qBAAqB,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;AAC1H,aAAa;AACb,iBAAiB;AACjB,gBAAgB,EAAE,GAAG,UAAU,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,iBAAiB,CAAC,CAAC;AACjH,aAAa;AACb,YAAY,IAAI,MAAM,CAAC,WAAW,IAAI,OAAO,MAAM,CAAC,WAAW,KAAK,UAAU,EAAE;AAChF,gBAAgB,MAAM,OAAO,GAAG;AAChC,oBAAoB,UAAU,EAAE,UAAU;AAC1C,oBAAoB,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC;AAC1C,oBAAoB,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC;AACvC,oBAAoB,IAAI,EAAE,EAAE;AAC5B,oBAAoB,OAAO,EAAE,MAAM;AACnC,iBAAiB,CAAC;AAClB,gBAAgB,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;AAC5C,aAAa;AACb,YAAY,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC9B,SAAS;AACT,QAAQ,OAAO,QAAQ,CAAC;AACxB,KAAK;AACL,IAAI,QAAQ,CAAC,uBAAuB,GAAG,uBAAuB,CAAC;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,SAAS,sBAAsB,CAAC,aAAa,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,iBAAiB,EAAE;AACjH,QAAQ,MAAM,MAAM,GAAG,MAAM,CAAC,EAAE,EAAE,sBAAsB,EAAE,OAAO,CAAC,CAAC;AACnE,QAAQ,QAAQ,GAAG,cAAc,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;AACrD,QAAQ,MAAM,MAAM,GAAG,CAAC,iBAAiB;AACzC,aAAa,iBAAiB,CAAC,aAAa,EAAE,KAAK,UAAU,IAAI,iBAAiB,CAAC,aAAa,EAAE,KAAK,aAAa,CAAC;AACrH,cAAc,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,EAAE,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;AACtF,QAAQ,MAAM,cAAc,GAAG,MAAM,CAAC,EAAE,EAAE,qBAAqB,EAAE,MAAM,CAAC,cAAc,CAAC,CAAC;AACxF,QAAQ,IAAI,EAAE,CAAC;AACf,QAAQ,IAAI,eAAe,GAAG,EAAE,CAAC;AACjC,QAAQ,IAAI,KAAK,EAAE;AACnB,YAAY,cAAc,CAAC,KAAK,GAAG,KAAK,CAAC;AACzC,SAAS;AACT,QAAQ,MAAM,KAAK,GAAG,EAAE,CAAC;AACzB,QAAQ,IAAI,EAAE,CAAC;AACf,QAAQ,IAAI,aAAa,CAAC;AAC1B,QAAQ,IAAI,UAAU,IAAI,UAAU,CAAC,MAAM,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC;AAC9F,YAAY,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC,EAAE;AAC3F,YAAY,EAAE,GAAG,UAAU,EAAE,CAAC;AAC9B,SAAS;AACT,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACpD,YAAY,IAAI,SAAS,GAAG,cAAc,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;AAClE,YAAY,IAAI,iBAAiB,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE;AAClD,gBAAgB,SAAS;AACzB,aAAa;AACb,YAAY,IAAI,MAAM,CAAC,YAAY,IAAI,OAAO,MAAM,CAAC,YAAY,KAAK,UAAU,EAAE;AAClF,gBAAgB,MAAM,OAAO,GAAG;AAChC,oBAAoB,UAAU,EAAE,UAAU;AAC1C,oBAAoB,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC;AAC1C,oBAAoB,IAAI,EAAE,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC;AAChD,oBAAoB,OAAO,EAAE,MAAM;AACnC,oBAAoB,MAAM,EAAE,MAAM;AAClC,iBAAiB,CAAC;AAClB,gBAAgB,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;AAC7C,aAAa;AACb,YAAY,MAAM,OAAO,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;AAC1C,YAAY,IAAI,MAAM,CAAC,YAAY,IAAI,OAAO,MAAM,CAAC,YAAY,KAAK,UAAU,EAAE;AAClF,gBAAgB,SAAS,GAAG,cAAc,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;AAClE,aAAa;AACb,YAAY,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE;AACxH,gBAAgB,EAAE,GAAG,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AAC1C,aAAa;AACb,YAAY,MAAM,QAAQ,GAAG,EAAE,CAAC;AAChC,YAAY,IAAI,MAAM,CAAC,YAAY,EAAE;AACrC,gBAAgB,IAAI,MAAM,CAAC,aAAa,KAAK,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,SAAS,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,EAAE;AACxG,oBAAoB,eAAe,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,QAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,CAAC,CAAC,CAAC;AAC7H,iBAAiB;AACjB,qBAAqB;AACrB,oBAAoB,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,QAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,CAAC,CAAC,CAAC;AACtH,iBAAiB;AACjB,aAAa;AACb,YAAY,IAAI,aAAa,KAAK,IAAI,EAAE;AACxC,gBAAgB,IAAI,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,OAAO,CAAC;AACtG,uBAAuB,CAAC,iBAAiB,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE;AACtE,oBAAoB,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,QAAQ,CAAC,IAAI,GAAG,GAAG,GAAG,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;AACzH,iBAAiB;AACjB,gBAAgB,EAAE,GAAG,qBAAqB,CAAC,aAAa,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,SAAS,EAAE,QAAQ,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC;AAC5K,oBAAoB,OAAO,CAAC,QAAQ,IAAI,IAAI,GAAG,KAAK,EAAE,EAAE,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;AACtE,gBAAgB,aAAa,GAAG,EAAE,CAAC,aAAa,CAAC,GAAG,GAAG,QAAQ,CAAC,UAAU,CAAC,CAAC;AAC5E,gBAAgB,IAAI,MAAM,CAAC,aAAa,IAAI,eAAe,CAAC,MAAM,EAAE;AACpE,oBAAoB,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC,iBAAiB,CAAC,CAAC;AACnE,iBAAiB;AACjB,aAAa;AACb,iBAAiB;AACjB,gBAAgB,EAAE,GAAG,UAAU,CAAC,aAAa,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,SAAS,EAAE,OAAO,EAAE,iBAAiB,CAAC,CAAC;AACzH,gBAAgB,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,GAAG,GAAG,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;AAC9E,gBAAgB,EAAE,CAAC,YAAY,CAAC,YAAY,EAAE,cAAc,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC/E,gBAAgB,IAAI,cAAc,CAAC,aAAa,KAAK,cAAc,IAAI,cAAc,CAAC,QAAQ,KAAK,cAAc,EAAE;AACnH,oBAAoB,EAAE,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC;AACrD,iBAAiB;AACjB,gBAAgB,aAAa,GAAG,EAAE,CAAC,aAAa,CAAC,GAAG,GAAG,QAAQ,CAAC,UAAU,CAAC,CAAC;AAC5E,gBAAgB,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,OAAO,CAAC,EAAE;AACrF,oBAAoB,IAAI,WAAW,GAAG,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAChE,oBAAoB,IAAI,OAAO,IAAI,OAAO,CAAC,mBAAmB,EAAE;AAChE,wBAAwB,WAAW,GAAG,kBAAkB,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;AAC/E,qBAAqB;AACrB,yBAAyB;AACzB,wBAAwB,IAAI,kBAAkB,GAAG,aAAa,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,WAAW,EAAE,CAAC,CAAC;AACnG,wBAAwB,WAAW,GAAG,kBAAkB,CAAC,SAAS,CAAC;AACnE,wBAAwB,kBAAkB,GAAG,IAAI,CAAC;AAClD,qBAAqB;AACrB,oBAAoB,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;AAC1D,iBAAiB;AACjB,gBAAgB,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,cAAc,CAAC,IAAI,SAAS,CAAC,MAAM,CAAC,cAAc,CAAC,EAAE;AAChI,oBAAoB,MAAM,cAAc,GAAG,SAAS,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;AAC5E;AACA,oBAAoB,IAAI,OAAO,IAAI,cAAc,IAAI,OAAO,cAAc,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,cAAc,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;AAC3I,wBAAwB,OAAO,cAAc,CAAC,OAAO,CAAC,CAAC;AACvD,qBAAqB;AACrB,oBAAoB,YAAY,CAAC,EAAE,EAAE,cAAc,CAAC,CAAC;AACrD,iBAAiB;AACjB,gBAAgB,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,OAAO,CAAC,IAAI,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,KAAK,EAAE;AAC5H,oBAAoB,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AACxD,iBAAiB;AACjB,gBAAgB,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,SAAS,CAAC,IAAI,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,EAAE;AAChI,oBAAoB,EAAE,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;AAC9C,iBAAiB;AACjB,gBAAgB,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AACtI,uBAAuB,CAAC,MAAM,CAAC,QAAQ,EAAE;AACzC,oBAAoB,MAAM,IAAI,GAAG,EAAE,GAAG,EAAE,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,GAAG,EAAE,CAAC,iBAAiB,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,aAAa,GAAG,SAAS,CAAC,IAAI,GAAG,QAAQ,IAAI,kBAAkB,EAAE,CAAC;AACjL,oBAAoB,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC;AACnE,oBAAoB,MAAM,WAAW,GAAG,aAAa,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,QAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;AACzG,oBAAoB,IAAI,aAAa,EAAE;AACvC,wBAAwB,aAAa,CAAC,qBAAqB,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;AACvF,qBAAqB;AACrB,yBAAyB;AACzB,wBAAwB,OAAO,CAAC,CAAC,WAAW,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,CAAC;AACrE,qBAAqB;AACrB,iBAAiB;AACjB,gBAAgB,IAAI,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,OAAO,CAAC;AACtG,oBAAoB,CAAC,iBAAiB,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE;AACvF,oBAAoB,MAAM,WAAW,GAAG,aAAa,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,QAAQ,CAAC,IAAI,GAAG,GAAG,GAAG,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;AAC7H,oBAAoB,IAAI,aAAa,EAAE;AACvC,wBAAwB,aAAa,CAAC,qBAAqB,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;AACvF,qBAAqB;AACrB,yBAAyB;AACzB,wBAAwB,OAAO,CAAC,CAAC,WAAW,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,CAAC;AACrE,qBAAqB;AACrB,iBAAiB;AACjB,gBAAgB,IAAI,QAAQ,CAAC,MAAM,EAAE;AACrC,oBAAoB,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,iBAAiB,CAAC,CAAC;AAC5D,iBAAiB;AACjB,gBAAgB,IAAI,MAAM,CAAC,aAAa,IAAI,eAAe,CAAC,MAAM,EAAE;AACpE,oBAAoB,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC,iBAAiB,CAAC,CAAC;AACnE,iBAAiB;AACjB,gBAAgB,eAAe,CAAC,aAAa,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,cAAc,CAAC,KAAK,CAAC,CAAC;AAChH,aAAa;AACb,YAAY,IAAI,aAAa,EAAE;AAC/B,gBAAgB,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;AACrD,aAAa;AACb,YAAY,IAAI,MAAM,CAAC,WAAW,IAAI,OAAO,MAAM,CAAC,WAAW,KAAK,UAAU,EAAE;AAChF,gBAAgB,MAAM,OAAO,GAAG;AAChC,oBAAoB,UAAU,EAAE,UAAU;AAC1C,oBAAoB,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC;AAC1C,oBAAoB,IAAI,EAAE,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC;AAChD,oBAAoB,IAAI,EAAE,EAAE;AAC5B,oBAAoB,OAAO,EAAE,MAAM;AACnC,oBAAoB,MAAM,EAAE,MAAM;AAClC,iBAAiB,CAAC;AAClB,gBAAgB,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;AAC5C,aAAa;AACb,YAAY,eAAe,GAAG,EAAE,CAAC;AACjC,YAAY,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC3B,SAAS;AACT,QAAQ,OAAO,KAAK,CAAC;AACrB,KAAK;AACL,IAAI,QAAQ,CAAC,sBAAsB,GAAG,sBAAsB,CAAC;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,SAAS,kBAAkB,CAAC,aAAa,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,iBAAiB,EAAE;AAC7G,QAAQ,MAAM,MAAM,GAAG,MAAM,CAAC,EAAE,EAAE,sBAAsB,EAAE,OAAO,CAAC,CAAC;AACnE,QAAQ,MAAM,EAAE,GAAG,sBAAsB,CAAC,aAAa,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,iBAAiB,CAAC,CAAC;AACvH,QAAQ,OAAO,UAAU,CAAC,aAAa,EAAE,EAAE,EAAE,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;AACxE,KAAK;AACL,IAAI,QAAQ,CAAC,kBAAkB,GAAG,kBAAkB,CAAC;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,SAAS,YAAY,CAAC,YAAY,EAAE,OAAO,EAAE,UAAU,EAAE;AAC7D,QAAQ,QAAQ,GAAG,cAAc,CAAC,sBAAsB,CAAC,UAAU,CAAC,CAAC;AACrE,QAAQ,IAAI,CAAC,YAAY,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE;AACnD,YAAY,OAAO,KAAK,CAAC,CAAC;AAC1B,SAAS;AACT,QAAQ,IAAI,SAAS,CAAC;AACtB,QAAQ,IAAI,OAAO,CAAC;AACpB,QAAQ,MAAM,aAAa,GAAG,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AACvE,QAAQ,IAAI,OAAO,EAAE;AACrB,YAAY,OAAO,GAAG,OAAO,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;AACtD,SAAS;AACT,aAAa;AACb,YAAY,OAAO,IAAI,UAAU,KAAK,IAAI,GAAG,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;AACxE,SAAS;AACT,QAAQ,SAAS,GAAG,aAAa,CAAC,OAAO,IAAI,UAAU,KAAK,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAC5E,QAAQ,OAAO,SAAS,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,SAAS,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,EAAE;AACxG,YAAY,OAAO,GAAG,OAAO,IAAI,UAAU,KAAK,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAC/D,YAAY,SAAS,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;AAC/C,SAAS;AACT,QAAQ,OAAO,SAAS,CAAC;AACzB,KAAK;AACL,IAAI,QAAQ,CAAC,YAAY,GAAG,YAAY,CAAC;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,SAAS,OAAO,CAAC,IAAI,EAAE,YAAY,EAAE;AACzC,QAAQ,IAAI,CAAC,YAAY,IAAI,CAAC,IAAI,EAAE;AACpC,YAAY,OAAO,KAAK,CAAC,CAAC;AAC1B,SAAS;AACT,aAAa;AACb,YAAY,IAAI,aAAa,GAAG,YAAY,CAAC;AAC7C,YAAY,aAAa,GAAG,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AACrE,YAAY,OAAO,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAC/C,SAAS;AACT,KAAK;AACL,IAAI,QAAQ,CAAC,OAAO,GAAG,OAAO,CAAC;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,SAAS,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,GAAG,MAAM,EAAE;AACrE,QAAQ,MAAM,SAAS,GAAG,MAAM,CAAC,EAAE,EAAE,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC,CAAC;AAC3E,QAAQ,IAAI,QAAQ,GAAG,IAAI,KAAK,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;AAC5D;AACA,QAAQ,QAAQ,GAAG,UAAU,CAAC,SAAS,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;AAC1D,QAAQ,MAAM,EAAE,GAAG,aAAa,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;AACvD,QAAQ,UAAU,GAAG,EAAE,CAAC;AACxB,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC5C,YAAY,MAAM,OAAO,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AACxC,YAAY,MAAM,OAAO,GAAG,EAAE,CAAC;AAC/B,YAAY,MAAM,GAAG,GAAG,UAAU,CAAC;AACnC,YAAY,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;AAChD,YAAY,OAAO,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;AACrC,YAAY,IAAI,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC;AACzC,YAAY,IAAI,OAAO,KAAK,IAAI,EAAE;AAClC,gBAAgB,OAAO,GAAG,MAAM,CAAC;AACjC,gBAAgB,OAAO,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;AAClD,aAAa;AACb,YAAY,OAAO,CAAC,GAAG,GAAG,kBAAkB,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG;AACzD,gBAAgB,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,GAAG,WAAW,CAAC,CAAC;AAC3D,YAAY,OAAO,CAAC,KAAK,GAAG,OAAO,CAAC;AACpC,YAAY,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACrC,YAAY,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACrD,gBAAgB,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5C,aAAa;AACb,SAAS;AACT,QAAQ,OAAO,UAAU,CAAC;AAC1B,KAAK;AACL,IAAI,QAAQ,CAAC,eAAe,GAAG,eAAe,CAAC;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,SAAS,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,GAAG,IAAI,KAAK,EAAE,EAAE;AAChE,QAAQ,IAAI,SAAS,KAAK,WAAW,EAAE;AACvC,YAAY,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,WAAW,EAAE,IAAI,CAAC,CAAC;AACpD,SAAS;AACT,aAAa,IAAI,SAAS,KAAK,YAAY,EAAE;AAC7C,YAAY,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,YAAY,EAAE,IAAI,CAAC,CAAC;AACrD,SAAS;AACT,aAAa;AACb,YAAY,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC3D,gBAAgB,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,UAAU,EAAE;AACxD,oBAAoB,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC/C,iBAAiB;AACjB,aAAa;AACb,SAAS;AACT,QAAQ,OAAO,KAAK,CAAC;AACrB,KAAK;AACL,IAAI,QAAQ,CAAC,UAAU,GAAG,UAAU,CAAC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,SAAS,aAAa,CAAC,UAAU,EAAE,KAAK,EAAE;AAC9C,QAAQ,OAAO,IAAI,WAAW,CAAC,UAAU,CAAC;AAC1C,aAAa,YAAY,CAAC,KAAK,CAAC,CAAC;AACjC,KAAK;AACL,IAAI,QAAQ,CAAC,aAAa,GAAG,aAAa,CAAC;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,SAAS,qBAAqB,CAAC,OAAO,EAAE,OAAO,EAAE;AACrD,QAAQ,MAAM,MAAM,GAAG,MAAM,CAAC,EAAE,EAAE,sBAAsB,EAAE,OAAO,CAAC,CAAC;AACnE,QAAQ,MAAM,MAAM,GAAG,MAAM,CAAC,EAAE,EAAE,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;AAC/E,QAAQ,MAAM,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AAC/C,QAAQ,MAAM,MAAM,GAAG,EAAE,CAAC;AAC1B,QAAQ,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;AAC5C,QAAQ,MAAM,MAAM,GAAG,MAAM,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,CAAC;AAClE,QAAQ,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;AAC/C,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAChD,YAAY,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;AACjC,YAAY,MAAM,MAAM,GAAG,EAAE,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;AACjD,YAAY,MAAM,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;AAC9C,YAAY,MAAM,IAAI,GAAG,EAAE,CAAC;AAC5B,YAAY,MAAM,UAAU,GAAG,MAAM,GAAG,MAAM,CAAC,UAAU,GAAG,EAAE,CAAC,UAAU,CAAC;AAC1E,YAAY,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AACjD,YAAY,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACxD,gBAAgB,IAAI,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,EAAE;AACpE,oBAAoB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;AAChF,iBAAiB;AACjB,aAAa;AACb,YAAY,IAAI,UAAU,GAAG,gBAAgB,CAAC,EAAE,CAAC,CAAC;AAClD,YAAY,IAAI,UAAU,CAAC,EAAE,EAAE;AAC/B,gBAAgB,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,EAAE,CAAC;AAChD,gBAAgB,OAAO,UAAU,CAAC,EAAE,CAAC;AACrC,aAAa;AACb,iBAAiB;AACjB,gBAAgB,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC;AAC/C,aAAa;AACb,YAAY,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,EAAE;AAChD,gBAAgB,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,GAAG,UAAU,CAAC;AACzD,aAAa;AACb,YAAY,IAAI,MAAM,EAAE;AACxB,gBAAgB,UAAU,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;AACtD,gBAAgB,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,EAAE;AACpD,oBAAoB,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,UAAU,CAAC;AAC5D,iBAAiB;AACjB,aAAa;AACb,YAAY,IAAI,EAAE,EAAE;AACpB,gBAAgB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,qBAAqB,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;AACxE,aAAa;AACb,YAAY,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC9B,SAAS;AACT,QAAQ,OAAO,MAAM,CAAC;AACtB,KAAK;AACL,IAAI,QAAQ,CAAC,qBAAqB,GAAG,qBAAqB,CAAC;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,SAAS,UAAU,CAAC,IAAI,EAAE;AAC9B,QAAQ,IAAI,KAAK,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AACjD,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC9C,YAAY,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE;AAC7C,gBAAgB,OAAO,KAAK,GAAG,EAAE,MAAM,EAAE,OAAO,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;AACzE,aAAa;AACb,SAAS;AACT,QAAQ,OAAO,KAAK,CAAC;AACrB,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,SAAS,YAAY,CAAC,OAAO,EAAE,iBAAiB,EAAE;AACtD,QAAQ,MAAM,IAAI,GAAG,EAAE,CAAC;AACxB,QAAQ,KAAK,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC;AACvC,QAAQ,IAAI,IAAI,CAAC,KAAK,EAAE;AACxB,YAAY,QAAQ,CAAC,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;AACvD,YAAY,OAAO,IAAI,CAAC,KAAK,CAAC;AAC9B,SAAS;AACT,QAAQ,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AAClC,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,SAAS,gBAAgB,CAAC,OAAO,EAAE;AACvC,QAAQ,MAAM,UAAU,GAAG,EAAE,CAAC;AAC9B,QAAQ,MAAM,IAAI,GAAG,OAAO,CAAC,UAAU,CAAC;AACxC,QAAQ,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;AAC1D,YAAY,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC;AACrE,SAAS;AACT,QAAQ,OAAO,UAAU,CAAC;AAC1B,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,SAAS,qBAAqB,CAAC,aAAa,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,EAAE;AAC5G,QAAQ,QAAQ,GAAG,cAAc,CAAC,sBAAsB,CAAC,UAAU,CAAC,CAAC;AACrE,QAAQ,MAAM,SAAS,GAAG,aAAa,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,EAAE,CAAC,CAAC;AAC3G,QAAQ,MAAM,MAAM,GAAG,MAAM,CAAC,EAAE,EAAE,sBAAsB,EAAE,OAAO,CAAC,CAAC;AACnE,QAAQ,MAAM,SAAS,GAAG,MAAM,CAAC,EAAE,EAAE,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC,CAAC;AAC3E,QAAQ,MAAM,cAAc,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAC;AACzD,QAAQ,MAAM,YAAY,GAAG,EAAE,CAAC;AAChC,QAAQ,IAAI,KAAK,CAAC;AAClB,QAAQ,MAAM,EAAE,GAAG,UAAU,EAAE,CAAC;AAChC,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACpD,YAAY,IAAI,SAAS,GAAG,cAAc,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;AACrE,YAAY,MAAM,OAAO,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;AAC1C,YAAY,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;AAC9C,YAAY,IAAI,OAAO,UAAU,CAAC,CAAC,CAAC,KAAK,QAAQ,IAAI,OAAO,UAAU,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE;AACxF,gBAAgB,KAAK,GAAG,OAAO,CAAC;AAChC,aAAa;AACb,iBAAiB;AACjB,gBAAgB,KAAK,GAAG,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AACnD,aAAa;AACb,YAAY,IAAI,MAAM,CAAC,YAAY,IAAI,OAAO,MAAM,CAAC,YAAY,KAAK,UAAU,EAAE;AAClF,gBAAgB,MAAM,OAAO,GAAG;AAChC,oBAAoB,UAAU,EAAE,UAAU;AAC1C,oBAAoB,OAAO,EAAE,OAAO;AACpC,oBAAoB,IAAI,EAAE,KAAK;AAC/B,oBAAoB,OAAO,EAAE,MAAM;AACnC,oBAAoB,MAAM,EAAE,SAAS;AACrC,iBAAiB,CAAC;AAClB,gBAAgB,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;AAC7C,aAAa;AACb,YAAY,IAAI,MAAM,CAAC,YAAY,IAAI,OAAO,MAAM,CAAC,YAAY,KAAK,UAAU,EAAE;AAClF,gBAAgB,SAAS,GAAG,cAAc,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;AACrE,gBAAgB,IAAI,OAAO,UAAU,CAAC,CAAC,CAAC,KAAK,QAAQ,IAAI,OAAO,UAAU,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE;AAC5F,oBAAoB,KAAK,GAAG,OAAO,CAAC;AACpC,iBAAiB;AACjB,qBAAqB;AACrB,oBAAoB,KAAK,GAAG,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AACvD,iBAAiB;AACjB,aAAa;AACb,YAAY,MAAM,EAAE,GAAG,aAAa,CAAC,IAAI,EAAE;AAC3C,gBAAgB,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,CAAC;AAChC,gBAAgB,SAAS,EAAE,QAAQ,GAAG,QAAQ,CAAC,KAAK,GAAG,QAAQ,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE;AACnG,aAAa,CAAC,CAAC;AACf,YAAY,IAAI,QAAQ,EAAE;AAC1B,gBAAgB,IAAI,OAAO,UAAU,CAAC,CAAC,CAAC,KAAK,QAAQ,IAAI,OAAO,UAAU,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE;AAC5F,oBAAoB,EAAE,CAAC,SAAS,GAAG,OAAO,CAAC;AAC3C,iBAAiB;AACjB,qBAAqB;AACrB,oBAAoB,EAAE,CAAC,SAAS,GAAG,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AAC7D,iBAAiB;AACjB,aAAa;AACb,iBAAiB;AACjB,gBAAgB,MAAM,SAAS,GAAG,QAAQ,GAAG,MAAM,CAAC,eAAe,GAAG,MAAM,CAAC,UAAU,CAAC;AACxF,gBAAgB,IAAI,QAAQ,EAAE;AAC9B,oBAAoB,IAAI,iBAAiB,IAAI,iBAAiB,CAAC,aAAa,EAAE,KAAK,UAAU,EAAE;AAC/F,wBAAwB,MAAM,eAAe,GAAG,cAAc,CAAC,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,gBAAgB,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;AAC7J,wBAAwB,IAAI,eAAe,EAAE;AAC7C,4BAA4B,MAAM,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC;AACxD,yBAAyB;AACzB,qBAAqB;AACrB,yBAAyB;AACzB,wBAAwB,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,gBAAgB,CAAC,EAAE,EAAE,CAAC,CAAC;AACvI,qBAAqB;AACrB,iBAAiB;AACjB,qBAAqB;AACrB,oBAAoB,IAAI,iBAAiB,IAAI,iBAAiB,CAAC,aAAa,EAAE,KAAK,UAAU,EAAE;AAC/F,wBAAwB,MAAM,eAAe,GAAG,cAAc,CAAC,OAAO,EAAE,iBAAiB,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,gBAAgB,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;AACvJ,wBAAwB,IAAI,eAAe,EAAE;AAC7C,4BAA4B,MAAM,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC;AACxD,yBAAyB;AACzB,qBAAqB;AACrB,yBAAyB;AACzB,wBAAwB,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,iBAAiB,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,gBAAgB,CAAC,EAAE,EAAE,CAAC,CAAC;AACjI,qBAAqB;AACrB,iBAAiB;AACjB,gBAAgB,EAAE,CAAC,YAAY,CAAC,YAAY,EAAE,iBAAiB,CAAC,KAAK,CAAC,GAAG,MAAM,GAAG,KAAK,CAAC,CAAC;AACzF,gBAAgB,EAAE,CAAC,YAAY,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;AAClD,aAAa;AACb,YAAY,IAAI,MAAM,CAAC,WAAW,IAAI,OAAO,MAAM,CAAC,WAAW,KAAK,UAAU,EAAE;AAChF,gBAAgB,MAAM,OAAO,GAAG;AAChC,oBAAoB,UAAU,EAAE,UAAU;AAC1C,oBAAoB,OAAO,EAAE,OAAO;AACpC,oBAAoB,IAAI,EAAE,KAAK;AAC/B,oBAAoB,IAAI,EAAE,EAAE;AAC5B,oBAAoB,OAAO,EAAE,MAAM;AACnC,oBAAoB,MAAM,EAAE,SAAS;AACrC,iBAAiB,CAAC;AAClB,gBAAgB,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;AAC5C,aAAa;AACb,YAAY,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAClC,SAAS;AACT,QAAQ,MAAM,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;AACxC,QAAQ,OAAO,SAAS,CAAC;AACzB,KAAK;AACL,IAAI,QAAQ,CAAC,qBAAqB,GAAG,qBAAqB,CAAC;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,SAAS,mBAAmB,CAAC,aAAa;AAC9C;AACA,IAAI,eAAe,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,iBAAiB,EAAE;AACtE,QAAQ,MAAM,cAAc,GAAG,eAAe,CAAC,aAAa,CAAC,CAAC;AAC9D,QAAQ,MAAM,SAAS,GAAG,MAAM,CAAC,EAAE,EAAE,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC,CAAC;AAC3E,QAAQ,MAAM,MAAM,GAAG,MAAM,CAAC,EAAE,EAAE,sBAAsB,EAAE,OAAO,CAAC,CAAC;AACnE,QAAQ,MAAM,QAAQ,GAAG,SAAS,CAAC,OAAO,CAAC;AAC3C,QAAQ,KAAK,MAAM,MAAM,IAAI,WAAW,EAAE;AAC1C,YAAY,MAAM,UAAU,GAAG,EAAE,CAAC;AAClC,YAAY,UAAU,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,WAAW,CAAC;AAC3D,YAAY,MAAM,CAAC,SAAS,GAAG,EAAE,CAAC;AAClC,YAAY,IAAI,iBAAiB,IAAI,iBAAiB,CAAC,aAAa,EAAE,KAAK,UAAU,EAAE;AACvF,gBAAgB,MAAM,eAAe,GAAG,cAAc,CAAC,UAAU,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,CAAC,eAAe,EAAE,CAAC,CAAC,MAAM,CAAC,gBAAgB,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;AACxK,gBAAgB,IAAI,eAAe,EAAE;AACrC,oBAAoB,MAAM,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;AACpD,iBAAiB;AACjB,aAAa;AACb,iBAAiB;AACjB,gBAAgB,MAAM,CAAC,cAAc,CAAC,UAAU,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,CAAC,eAAe,EAAE,CAAC,CAAC,MAAM,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC,CAAC;AAClJ,aAAa;AACb,SAAS;AACT,QAAQ,OAAO,WAAW,CAAC;AAC3B,KAAK;AACL,IAAI,QAAQ,CAAC,mBAAmB,GAAG,mBAAmB,CAAC;AACvD;AACA;AACA;AACA;AACA;AACA,IAAI,SAAS,UAAU,GAAG;AAC1B,QAAQ,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,IAAI,OAAO,CAAC;AACxD,aAAa,QAAQ,CAAC,EAAE,CAAC;AACzB,aAAa,SAAS,CAAC,CAAC,CAAC,CAAC;AAC1B,KAAK;AACL,IAAI,QAAQ,CAAC,UAAU,GAAG,UAAU,CAAC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,SAAS,eAAe,CAAC,aAAa,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE;AAC5F;AACA,QAAQ,MAAM,KAAK,GAAG,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;AACpD,QAAQ,IAAI,WAAW,GAAG,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;AACxD;AACA,QAAQ,IAAI,KAAK,CAAC,MAAM,EAAE;AAC1B,YAAY,WAAW,GAAG,IAAI,CAAC;AAC/B,YAAY,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AACrD,YAAY,IAAI,OAAO,CAAC,eAAe,EAAE;AACzC,gBAAgB,MAAM,KAAK,GAAG,kBAAkB,CAAC,aAAa,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,KAAK,CAAC,CAAC;AACzF,gBAAgB,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;AAC3C,aAAa;AACb,SAAS;AACT;AACA,QAAQ,IAAI,CAAC,CAAC,OAAO,CAAC,cAAc,IAAI,WAAW,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE;AAC1E,YAAY,OAAO,CAAC,iBAAiB,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;AAC1E,YAAY,MAAM,aAAa,GAAG,OAAO,CAAC,kBAAkB,KAAK,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;AAC3F,YAAY,aAAa,CAAC,CAAC,aAAa,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,UAAU,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,GAAG,GAAG,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC;AAC1J,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,SAAS,qBAAqB,CAAC,aAAa,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,aAAa,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE;AAChI,QAAQ,MAAM,MAAM,GAAG,MAAM,CAAC,EAAE,EAAE,sBAAsB,EAAE,OAAO,CAAC,CAAC;AACnE,QAAQ,MAAM,cAAc,GAAG,MAAM,CAAC,EAAE,EAAE,qBAAqB,EAAE,MAAM,CAAC,cAAc,CAAC,CAAC;AACxF,QAAQ,IAAI,IAAI,GAAG,IAAI,CAAC;AACxB,QAAQ,IAAI,KAAK,GAAG,IAAI,CAAC;AACzB,QAAQ,IAAI,UAAU,CAAC;AACvB,QAAQ,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,OAAO,IAAI,KAAK,SAAS,EAAE;AAC/F,YAAY,UAAU,GAAG,IAAI,CAAC;AAC9B,YAAY,IAAI,GAAG,CAAC,OAAO,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,SAAS,IAAI,OAAO,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,QAAQ;AAC7G,gBAAgB,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;AACxE,YAAY,KAAK,GAAG,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC5C,SAAS;AACT,QAAQ,IAAI,SAAS,CAAC;AACtB,QAAQ,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AACtF,eAAe,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,EAAE;AAC5C,YAAY,SAAS,GAAG,EAAE,CAAC;AAC3B,SAAS;AACT,aAAa;AACb,YAAY,SAAS,GAAG,EAAE,GAAG,GAAG,GAAG,KAAK,CAAC;AACzC,SAAS;AACT,QAAQ,MAAM,EAAE,GAAG,aAAa,CAAC,IAAI,EAAE;AACvC,YAAY,SAAS,EAAE,CAAC,KAAK,KAAK,IAAI,GAAG,QAAQ,CAAC,KAAK,GAAG,QAAQ,CAAC,EAAE,IAAI,GAAG,IAAI,iBAAiB,CAAC,SAAS,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;AAC9H,YAAY,EAAE,EAAE,SAAS,EAAE,KAAK,GAAG,cAAc,CAAC,aAAa,KAAK,EAAE,IAAI,cAAc,CAAC,QAAQ,KAAK,EAAE;AACxG,gBAAgB,EAAE,IAAI,GAAG,KAAK,KAAK,IAAI,GAAG,cAAc,CAAC,aAAa,GAAG,cAAc,CAAC,QAAQ,CAAC,EAAE,GAAG,EAAE,CAAC;AACzG,SAAS,CAAC,CAAC;AACX,QAAQ,IAAI,UAAU,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,OAAO,CAAC,IAAI,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,KAAK,OAAO,EAAE;AAC/I,YAAY,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AAChD,SAAS;AACT,QAAQ,IAAI,KAAK,EAAE;AACnB,YAAY,EAAE,CAAC,SAAS,GAAG,IAAI,CAAC;AAChC,SAAS;AACT,aAAa;AACb,YAAY,EAAE,CAAC,YAAY,CAAC,YAAY,EAAE,iBAAiB,CAAC,KAAK,CAAC,GAAG,MAAM,GAAG,KAAK,CAAC,CAAC;AACrF,YAAY,EAAE,CAAC,YAAY,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;AAC9C,YAAY,IAAI,UAAU,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,cAAc,CAAC,IAAI,SAAS,CAAC,MAAM,CAAC,cAAc,CAAC,EAAE;AAC1I,gBAAgB,YAAY,CAAC,EAAE,EAAE,SAAS,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC;AACnE,aAAa;AACb,YAAY,IAAI,aAAa,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE;AAC/D,gBAAgB,MAAM,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;AAC1C,aAAa;AACb,YAAY,IAAI,UAAU,KAAK,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,SAAS,CAAC,MAAM,CAAC,aAAa,CAAC;AACxF,gBAAgB,SAAS,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE;AACxD,gBAAgB,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,aAAa,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC;AACxH,aAAa;AACb,iBAAiB;AACjB,gBAAgB,IAAI,aAAa,CAAC,MAAM,IAAI,MAAM,CAAC,aAAa,EAAE;AAClE,oBAAoB,MAAM,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;AAC9C,iBAAiB;AACjB,gBAAgB,EAAE,CAAC,WAAW,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC;AAC9D,aAAa;AACb,SAAS;AACT,QAAQ,OAAO,EAAE,CAAC;AAClB,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,SAAS,cAAc,CAAC,UAAU,EAAE;AACxC,QAAQ,IAAI,WAAW,CAAC;AACxB;AACA,QAAQ,OAAO,WAAW,GAAG;AAC7B,YAAY,EAAE,EAAE,CAAC,EAAE,EAAE,UAAU,CAAC,KAAK,CAAC;AACtC,YAAY,EAAE,EAAE,CAAC,EAAE,EAAE,UAAU,CAAC,YAAY,CAAC;AAC7C,YAAY,KAAK,EAAE,CAAC,EAAE,EAAE,UAAU,CAAC,WAAW,CAAC;AAC/C,YAAY,IAAI,EAAE,CAAC,EAAE,EAAE,UAAU,CAAC,KAAK,CAAC;AACxC,YAAY,IAAI,EAAE,CAAC,EAAE,EAAE,UAAU,CAAC,KAAK,CAAC;AACxC,YAAY,KAAK,EAAE,CAAC,EAAE,EAAE,UAAU,CAAC,MAAM,CAAC;AAC1C,YAAY,OAAO,EAAE,WAAW;AAChC,YAAY,QAAQ,EAAE,YAAY;AAClC,YAAY,QAAQ,EAAE,YAAY;AAClC,YAAY,WAAW,EAAE,gBAAgB;AACzC,YAAY,QAAQ,EAAE,aAAa;AACnC,YAAY,KAAK,EAAE,SAAS;AAC5B,YAAY,GAAG,EAAE,CAAC,EAAE,EAAE,UAAU,CAAC,IAAI,CAAC;AACtC,YAAY,WAAW,EAAE,oBAAoB;AAC7C,YAAY,QAAQ,EAAE,YAAY;AAClC,YAAY,KAAK,EAAE,CAAC,EAAE,EAAE,UAAU,CAAC,IAAI,CAAC;AACxC,YAAY,WAAW,EAAE,gBAAgB;AACzC,YAAY,UAAU,EAAE,eAAe;AACvC,YAAY,SAAS,EAAE,aAAa;AACpC,SAAS,CAAC;AACV,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,SAAS,SAAS,CAAC,aAAa,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE,gBAAgB,EAAE;AACjG,QAAQ,MAAM,SAAS,GAAG,cAAc,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;AAC7D,QAAQ,MAAM,IAAI,GAAG,EAAE,IAAI,EAAE,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;AACrD,QAAQ,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,aAAa,CAAC,IAAI,SAAS,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE;AACtH,YAAY,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC;AACzD,YAAY,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC;AACrE,gBAAgB,SAAS,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC;AACrD,SAAS;AACT,QAAQ,IAAI,SAAS,CAAC;AACtB,QAAQ,IAAI,CAAC,gBAAgB,EAAE;AAC/B,YAAY,SAAS,GAAG,aAAa,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,QAAQ,CAAC,IAAI,GAAG,GAAG,GAAG,QAAQ,CAAC,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;AAC/G,SAAS;AACT,aAAa;AACb,YAAY,SAAS,GAAG,aAAa,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,QAAQ,CAAC,IAAI,GAAG,GAAG,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC;AAC9F,YAAY,MAAM,aAAa,GAAG,aAAa,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;AAC3F,YAAY,IAAI,aAAa,IAAI,aAAa,CAAC,MAAM,EAAE;AACvD,gBAAgB,MAAM,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC;AACrD,aAAa;AACb,YAAY,aAAa,CAAC,WAAW,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC;AACrE,YAAY,MAAM,CAAC,CAAC,aAAa,CAAC,EAAE,SAAS,CAAC,CAAC;AAC/C,SAAS;AACT,QAAQ,YAAY,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;AACtC,QAAQ,OAAO,SAAS,CAAC;AACzB,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,SAAS,UAAU,CAAC,aAAa,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,iBAAiB,EAAE;AACvG,QAAQ,MAAM,MAAM,GAAG,MAAM,CAAC,EAAE,EAAE,sBAAsB,EAAE,OAAO,CAAC,CAAC;AACnE,QAAQ,MAAM,cAAc,GAAG,MAAM,CAAC,EAAE,EAAE,qBAAqB,EAAE,MAAM,CAAC,cAAc,CAAC,CAAC;AACxF,QAAQ,IAAI,IAAI,GAAG,IAAI,CAAC;AACxB,QAAQ,IAAI,GAAG,CAAC;AAChB,QAAQ,IAAI,KAAK,CAAC;AAClB,QAAQ,IAAI,UAAU,CAAC;AACvB,QAAQ,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;AAClE,YAAY,UAAU,GAAG,IAAI,CAAC;AAC9B,YAAY,IAAI,GAAG,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;AAChD,YAAY,GAAG,GAAG,CAAC,iBAAiB,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,IAAI,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;AAClG,YAAY,KAAK,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,IAAI,IAAI,CAAC,QAAQ;AAC5F,kBAAkB,IAAI,GAAG,KAAK,CAAC;AAC/B,SAAS;AACT,QAAQ,IAAI,OAAO,IAAI,OAAO,CAAC,mBAAmB,EAAE;AACpD;AACA,YAAY,IAAI,GAAG,IAAI,CAAC;AACxB,SAAS;AACT,QAAQ,MAAM,EAAE,GAAG,aAAa,CAAC,IAAI,EAAE;AACvC,YAAY,SAAS,EAAE,CAAC,KAAK,KAAK,IAAI,GAAG,QAAQ,CAAC,KAAK,GAAG,QAAQ,CAAC,EAAE,IAAI,GAAG,IAAI,iBAAiB,CAAC,SAAS,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;AAC9H,YAAY,KAAK,GAAG,cAAc,CAAC,aAAa,KAAK,EAAE,IAAI,cAAc,CAAC,QAAQ,KAAK,EAAE;AACzF,gBAAgB,EAAE,IAAI,GAAG,KAAK,KAAK,IAAI,GAAG,cAAc,CAAC,aAAa,GAAG,cAAc,CAAC,QAAQ,CAAC,EAAE,GAAG,EAAE,CAAC;AACzG,SAAS,CAAC,CAAC;AACX,QAAQ,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE;AAC9C,YAAY,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;AAC7C,SAAS;AACT,aAAa;AACb,YAAY,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,UAAU,EAAE,CAAC,CAAC;AACtD,SAAS;AACT,QAAQ,IAAI,KAAK,IAAI,OAAO,IAAI,OAAO,CAAC,aAAa,EAAE;AACvD,YAAY,MAAM,cAAc,GAAG,eAAe,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;AAC1E,YAAY,IAAI,iBAAiB,IAAI,iBAAiB,CAAC,aAAa,EAAE,KAAK,UAAU,EAAE;AACvF,gBAAgB,MAAM,eAAe,GAAG,cAAc,CAAC,IAAI,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,CAAC,eAAe,EAAE,CAAC,CAAC,MAAM,CAAC,gBAAgB,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;AAC9J,gBAAgB,IAAI,eAAe,EAAE;AACrC,oBAAoB,MAAM,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC;AAChD,iBAAiB;AACjB,aAAa;AACb,iBAAiB;AACjB,gBAAgB,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,CAAC,eAAe,EAAE,CAAC,CAAC,MAAM,CAAC,gBAAgB,CAAC,EAAE,EAAE,CAAC,CAAC;AACxI,aAAa;AACb,SAAS;AACT,aAAa,IAAI,CAAC,KAAK,IAAI,OAAO,IAAI,OAAO,CAAC,QAAQ,EAAE;AACxD,YAAY,MAAM,cAAc,GAAG,eAAe,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;AACrE,YAAY,IAAI,iBAAiB,IAAI,iBAAiB,CAAC,aAAa,EAAE,KAAK,UAAU,EAAE;AACvF,gBAAgB,MAAM,eAAe,GAAG,cAAc,CAAC,IAAI,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC,gBAAgB,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;AACpJ,gBAAgB,IAAI,eAAe,EAAE;AACrC,oBAAoB,MAAM,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC;AAChD,iBAAiB;AACjB,aAAa;AACb,iBAAiB;AACjB,gBAAgB,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC,gBAAgB,CAAC,EAAE,EAAE,CAAC,CAAC;AAC9H,aAAa;AACb,SAAS;AACT,aAAa;AACb,YAAY,MAAM,QAAQ,GAAG,aAAa,CAAC,KAAK,EAAE;AAClD,gBAAgB,SAAS,EAAE,QAAQ,CAAC,WAAW;AAC/C,gBAAgB,KAAK,GAAG,cAAc,CAAC,WAAW,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,cAAc,CAAC,WAAW,EAAE,GAAG,EAAE,CAAC;AACtG,aAAa,CAAC,CAAC;AACf,YAAY,IAAI,UAAU,KAAK,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,SAAS,CAAC,MAAM,CAAC,aAAa,CAAC;AACxF,gBAAgB,SAAS,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE;AACxD,gBAAgB,QAAQ,CAAC,WAAW,CAAC,SAAS,CAAC,aAAa,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC;AACrH,aAAa;AACb,iBAAiB;AACjB,gBAAgB,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,EAAE;AACtD,oBAAoB,SAAS,EAAE,QAAQ,CAAC,IAAI;AAC5C,oBAAoB,KAAK,GAAG,cAAc,CAAC,QAAQ,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,cAAc,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC;AACpG,iBAAiB,CAAC,CAAC;AACnB,gBAAgB,IAAI,OAAO,IAAI,OAAO,CAAC,mBAAmB,EAAE;AAC5D,oBAAoB,OAAO,CAAC,SAAS,GAAG,kBAAkB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AAC1E,iBAAiB;AACjB,qBAAqB;AACrB,oBAAoB,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;AAC7C,iBAAiB;AACjB,gBAAgB,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;AAC9C,aAAa;AACb,YAAY,EAAE,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;AACrC,SAAS;AACT,QAAQ,OAAO,EAAE,CAAC;AAClB,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,SAAS,UAAU,CAAC,aAAa,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE;AACtE,QAAQ,MAAM,MAAM,GAAG,MAAM,CAAC,EAAE,EAAE,sBAAsB,EAAE,OAAO,CAAC,CAAC;AACnE,QAAQ,MAAM,cAAc,GAAG,MAAM,CAAC,EAAE,EAAE,qBAAqB,EAAE,MAAM,CAAC,cAAc,CAAC,CAAC;AACxF,QAAQ,QAAQ,GAAG,cAAc,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;AACrD,QAAQ,MAAM,SAAS,GAAG,aAAa,CAAC,IAAI,EAAE;AAC9C,YAAY,SAAS,EAAE,QAAQ,CAAC,EAAE,GAAG,GAAG,IAAI,iBAAiB,CAAC,SAAS,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;AAC1F,YAAY,KAAK,GAAG,cAAc,CAAC,QAAQ,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,cAAc,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC;AAC5F,SAAS,CAAC,CAAC;AACX,QAAQ,MAAM,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;AACrC,QAAQ,OAAO,SAAS,CAAC;AACzB,KAAK;AACL,IAAI,QAAQ,CAAC,UAAU,GAAG,UAAU,CAAC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,SAAS,YAAY,CAAC,aAAa,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE;AACxE,QAAQ,MAAM,MAAM,GAAG,MAAM,CAAC,EAAE,EAAE,sBAAsB,EAAE,OAAO,CAAC,CAAC;AACnE,QAAQ,QAAQ,GAAG,cAAc,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;AACrD,QAAQ,MAAM,aAAa,GAAG,MAAM,CAAC,kBAAkB,KAAK,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;AACtF,QAAQ,aAAa,CAAC,CAAC,aAAa,CAAC,KAAK,EAAE;AAC5C,gBAAgB,SAAS,EAAE,UAAU,GAAG,MAAM,CAAC,eAAe,GAAG,GAAG;AACpE,qBAAqB,iBAAiB,CAAC,SAAS,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;AACnE,aAAa,CAAC,CAAC,EAAE,SAAS,CAAC,aAAa,CAAC,GAAG,GAAG,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC;AACtE,QAAQ,OAAO,SAAS,CAAC;AACzB,KAAK;AACL,IAAI,QAAQ,CAAC,YAAY,GAAG,YAAY,CAAC;AACzC,CAAC,EAAE,QAAQ,KAAK,QAAQ,GAAG,EAAE,CAAC,CAAC,CAAC;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE;AACjD,IAAI,MAAM,SAAS,GAAG,EAAE,CAAC;AACzB,IAAI,IAAI,iBAAiB,CAAC,QAAQ,CAAC,IAAI,QAAQ,QAAQ,CAAC,KAAK,QAAQ,IAAI,QAAQ,QAAQ,CAAC,KAAK,QAAQ;AACvG,WAAW,CAAC,iBAAiB,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;AAClD,QAAQ,OAAO,QAAQ,CAAC;AACxB,KAAK;AACL,SAAS;AACT,QAAQ,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;AACjD,YAAY,MAAM,SAAS,GAAG,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;AACjD,YAAY,MAAM,KAAK,GAAG,CAAC,iBAAiB,CAAC,SAAS,CAAC;AACvD,gBAAgB,QAAQ,SAAS,CAAC,KAAK,QAAQ,GAAG,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,GAAG,SAAS,CAAC;AAC5F,YAAY,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,EAAE;AAC3C,gBAAgB,SAAS,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;AAClD,aAAa;AACb,SAAS;AACT,KAAK;AACL,IAAI,OAAO,SAAS,CAAC;AACrB,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,eAAe,CAAC,QAAQ,EAAE;AACnC,IAAI,IAAI,QAAQ,EAAE;AAClB,QAAQ,IAAI;AACZ,YAAY,IAAI,OAAO,QAAQ,KAAK,UAAU,IAAI,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE;AACpF,gBAAgB,OAAO,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;AAClF,aAAa;AACb,iBAAiB;AACjB,gBAAgB,OAAO,OAAO,CAAC,QAAQ,CAAC,CAAC;AACzC,aAAa;AACb,SAAS;AACT,QAAQ,OAAO,CAAC,EAAE;AAClB,YAAY,OAAO,OAAO,CAAC,QAAQ,CAAC,CAAC;AACrC,SAAS;AACT,KAAK;AACL,IAAI,OAAO,SAAS,CAAC;AACrB;;AChlCA,IAAI,UAAU,GAAG,CAACA,SAAI,IAAIA,SAAI,CAAC,UAAU,KAAK,UAAU,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE;AACvF,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,GAAG,IAAI,KAAK,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC,wBAAwB,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC;AACjI,IAAI,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,OAAO,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;AACnI,SAAS,KAAK,IAAI,CAAC,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;AACtJ,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;AAClE,CAAC,CAAC;AACF,AASA;AACA;AACA,MAAM,aAAa,GAAG;AACtB,IAAI,MAAM,EAAE,EAAE;AACd,IAAI,WAAW,EAAE,CAAC,eAAe,EAAE,cAAc,EAAE,aAAa,EAAE,cAAc,CAAC;AACjF,IAAI,WAAW,EAAE,CAAC,aAAa,EAAE,gBAAgB,EAAE,eAAe,EAAE,YAAY,CAAC;AACjF,IAAI,MAAM,EAAE,CAAC,SAAS,EAAE,aAAa,EAAE,YAAY,EAAE,QAAQ,CAAC;AAC9D,IAAI,MAAM,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,CAAC;AACtD,CAAC,CAAC;AACF,MAAM,gBAAgB,GAAG;AACzB,IAAI,MAAM,EAAE,EAAE;AACd,IAAI,WAAW,EAAE,CAAC,cAAc,EAAE,eAAe,EAAE,cAAc,EAAE,aAAa,CAAC;AACjF,IAAI,WAAW,EAAE,CAAC,gBAAgB,EAAE,aAAa,EAAE,YAAY,EAAE,eAAe,CAAC;AACjF,IAAI,MAAM,EAAE,CAAC,aAAa,EAAE,SAAS,EAAE,QAAQ,EAAE,YAAY,CAAC;AAC9D,IAAI,MAAM,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,CAAC;AACtD,CAAC,CAAC;AACF;AACA,AAAY,MAAC,UAAU,GAAG;AAC1B,IAAI,IAAI,EAAE,YAAY;AACtB,IAAI,KAAK,EAAE,SAAS;AACpB,IAAI,QAAQ,EAAE,UAAU;AACxB,IAAI,OAAO,EAAE,WAAW;AACxB,IAAI,UAAU,EAAE,eAAe;AAC/B,IAAI,QAAQ,EAAE,aAAa;AAC3B,IAAI,QAAQ,EAAE,aAAa;AAC3B,IAAI,WAAW,EAAE,gBAAgB;AACjC,IAAI,YAAY,EAAE,aAAa;AAC/B,IAAI,aAAa,EAAE,mBAAmB;AACtC,IAAI,QAAQ,EAAE,aAAa;AAC3B,IAAI,IAAI,EAAE,QAAQ;AAClB,IAAI,MAAM,EAAE,eAAe;AAC3B,IAAI,UAAU,EAAE,cAAc;AAC9B,IAAI,kBAAkB,EAAE,uBAAuB;AAC/C,IAAI,IAAI,EAAE,QAAQ;AAClB,IAAI,OAAO,EAAE,YAAY;AACzB,IAAI,SAAS,EAAE,kBAAkB;AACjC,IAAI,IAAI,EAAE,SAAS;AACnB,IAAI,QAAQ,EAAE,aAAa;AAC3B,IAAI,UAAU,EAAE,eAAe;AAC/B,IAAI,eAAe,EAAE,oBAAoB;AACzC,IAAI,QAAQ,EAAE,YAAY;AAC1B,IAAI,OAAO,EAAE,SAAS;AACtB,IAAI,SAAS,EAAE,aAAa;AAC5B,IAAI,YAAY,EAAE,SAAS;AAC3B,IAAI,aAAa,EAAE,kBAAkB;AACrC,IAAI,YAAY,EAAE,iBAAiB;AACnC,IAAI,gBAAgB,EAAE,qBAAqB;AAC3C,IAAI,aAAa,EAAE,aAAa;AAChC,IAAI,uBAAuB,EAAE,yBAAyB;AACtD,CAAC,CAAC;AACF,MAAM,0BAA0B,GAAG,UAAU,CAAC;AAC9C,MAAM,+BAA+B,GAAG,eAAe,CAAC;AACxD,MAAM,gCAAgC,GAAG,gBAAgB,CAAC;AAC1D,MAAM,aAAa,GAAG,GAAG,CAAC;AAC1B;AACA;AACA;AACA,AAAO,MAAM,aAAa,SAAS,aAAa,CAAC;AACjD,CAAC;AACD,UAAU,CAAC;AACX,IAAI,QAAQ,CAAC,IAAI,CAAC;AAClB,CAAC,EAAE,aAAa,CAAC,SAAS,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;AAC1C,UAAU,CAAC;AACX,IAAI,QAAQ,CAAC,MAAM,CAAC;AACpB,CAAC,EAAE,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;AAC5C,UAAU,CAAC;AACX,IAAI,QAAQ,CAAC,WAAW,CAAC;AACzB,CAAC,EAAE,aAAa,CAAC,SAAS,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC;AACjD,UAAU,CAAC;AACX,IAAI,QAAQ,CAAC,WAAW,CAAC;AACzB,CAAC,EAAE,aAAa,CAAC,SAAS,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC;AACjD,UAAU,CAAC;AACX,IAAI,QAAQ,CAAC,SAAS,CAAC;AACvB,CAAC,EAAE,aAAa,CAAC,SAAS,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC;AAC/C,UAAU,CAAC;AACX,IAAI,QAAQ,CAAC,SAAS,CAAC;AACvB,CAAC,EAAE,aAAa,CAAC,SAAS,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC;AAC/C,UAAU,CAAC;AACX,IAAI,QAAQ,CAAC,OAAO,CAAC;AACrB,CAAC,EAAE,aAAa,CAAC,SAAS,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;AAC7C,UAAU,CAAC;AACX,IAAI,QAAQ,CAAC,SAAS,CAAC;AACvB,CAAC,EAAE,aAAa,CAAC,SAAS,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC;AAC/C,UAAU,CAAC;AACX,IAAI,QAAQ,CAAC,SAAS,CAAC;AACvB,CAAC,EAAE,aAAa,CAAC,SAAS,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC;AAC/C,UAAU,CAAC;AACX,IAAI,QAAQ,CAAC,MAAM,CAAC;AACpB,CAAC,EAAE,aAAa,CAAC,SAAS,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC;AAC9C,UAAU,CAAC;AACX,IAAI,QAAQ,CAAC,gBAAgB,CAAC;AAC9B,CAAC,EAAE,aAAa,CAAC,SAAS,EAAE,gBAAgB,EAAE,KAAK,CAAC,CAAC,CAAC;AACtD,UAAU,CAAC;AACX,IAAI,QAAQ,CAAC,WAAW,CAAC;AACzB,CAAC,EAAE,aAAa,CAAC,SAAS,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AAAG,IAAC,QAAQ,GAAG,MAAM,QAAQ,SAAS,SAAS,CAAC;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE;AAClC,QAAQ,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AAChC,QAAQ,IAAI,CAAC,qBAAqB,GAAG,EAAE,CAAC;AACxC,QAAQ,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;AAC9B,QAAQ,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;AAC/B,QAAQ,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;AAChC,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,iBAAiB,CAAC,OAAO,EAAE,OAAO,EAAE;AACxC,QAAQ,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;AACjD,YAAY,QAAQ,IAAI;AACxB,gBAAgB,KAAK,gBAAgB;AACrC,oBAAoB,IAAI,CAAC,gBAAgB,EAAE,CAAC;AAC5C,oBAAoB,MAAM;AAC1B,gBAAgB,KAAK,UAAU;AAC/B,oBAAoB,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;AACvD,oBAAoB,MAAM;AAC1B,gBAAgB,KAAK,QAAQ;AAC7B,oBAAoB,IAAI,CAAC,SAAS,EAAE,CAAC;AACrC,oBAAoB,MAAM;AAC1B,gBAAgB,KAAK,OAAO,CAAC;AAC7B,gBAAgB,KAAK,QAAQ;AAC7B,oBAAoB,IAAI,CAAC,OAAO,EAAE,CAAC;AACnC,oBAAoB,MAAM;AAC1B,gBAAgB,KAAK,WAAW;AAChC,oBAAoB,IAAI,CAAC,YAAY,EAAE,CAAC;AACxC,oBAAoB,MAAM;AAC1B,gBAAgB,KAAK,QAAQ;AAC7B,oBAAoB,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC;AACxE,oBAAoB,IAAI,IAAI,CAAC,oBAAoB,EAAE;AACnD,wBAAwB,IAAI,CAAC,oBAAoB,CAAC,wBAAwB,EAAE,CAAC;AAC7E,qBAAqB;AACrB,yBAAyB;AACzB,wBAAwB,IAAI,CAAC,QAAQ,EAAE,CAAC;AACxC,qBAAqB;AACrB,oBAAoB,MAAM;AAC1B,gBAAgB,KAAK,aAAa;AAClC,oBAAoB,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE;AACjD,wBAAwB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;AACvE,qBAAqB;AACrB,oBAAoB,MAAM;AAC1B,gBAAgB,KAAK,OAAO;AAC5B,oBAAoB,IAAI,IAAI,CAAC,oBAAoB,EAAE;AACnD,wBAAwB,IAAI,CAAC,oBAAoB,CAAC,wBAAwB,EAAE,CAAC;AAC7E,qBAAqB;AACrB,yBAAyB;AACzB,wBAAwB,IAAI,CAAC,QAAQ,EAAE,CAAC;AACxC,qBAAqB;AACrB,oBAAoB,MAAM;AAC1B,gBAAgB,KAAK,YAAY;AACjC,oBAAoB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;AACnE,oBAAoB,MAAM;AAC1B,gBAAgB,KAAK,sBAAsB;AAC3C,oBAAoB,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE;AACnE,wBAAwB,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;AACtD,qBAAqB;AACrB,oBAAoB,IAAI,CAAC,OAAO,EAAE,CAAC;AACnC,oBAAoB,MAAM;AAC1B,gBAAgB,KAAK,cAAc,CAAC;AACpC,gBAAgB,KAAK,kBAAkB;AACvC,oBAAoB,IAAI,IAAI,CAAC,oBAAoB,EAAE;AACnD,wBAAwB,IAAI,CAAC,oBAAoB,CAAC,wBAAwB,EAAE,CAAC;AAC7E,qBAAqB;AACrB,yBAAyB;AACzB,wBAAwB,IAAI,CAAC,WAAW,EAAE,CAAC;AAC3C,qBAAqB;AACrB,oBAAoB,MAAM;AAC1B,gBAAgB,KAAK,YAAY;AACjC,oBAAoB,IAAI,IAAI,CAAC,oBAAoB,EAAE;AACnD,wBAAwB,IAAI,CAAC,oBAAoB,CAAC,wBAAwB,EAAE,CAAC;AAC7E,qBAAqB;AACrB,yBAAyB;AACzB,wBAAwB,IAAI,CAAC,QAAQ,EAAE,CAAC;AACxC,qBAAqB;AACrB,oBAAoB,MAAM;AAC1B,gBAAgB,KAAK,WAAW,CAAC;AACjC,gBAAgB,KAAK,UAAU;AAC/B,oBAAoB,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE;AACpD,wBAAwB,IAAI,CAAC,OAAO,EAAE,CAAC;AACvC,qBAAqB;AACrB,oBAAoB,MAAM;AAC1B,gBAAgB,KAAK,UAAU;AAC/B,oBAAoB,IAAI,IAAI,CAAC,oBAAoB,EAAE;AACnD,wBAAwB,IAAI,CAAC,oBAAoB,CAAC,wBAAwB,EAAE,CAAC;AAC7E,qBAAqB;AACrB,yBAAyB;AACzB,wBAAwB,IAAI,CAAC,cAAc,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;AACrE,wBAAwB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;AACzD,wBAAwB,IAAI,CAAC,gBAAgB,EAAE,CAAC;AAChD,qBAAqB;AACrB,oBAAoB,MAAM;AAC1B,AAEA,aAAa;AACb,SAAS;AACT,KAAK;AACL;AACA,IAAI,gBAAgB,GAAG;AACvB,QAAQ,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,MAAM,EAAE;AAChG,YAAY,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;AAC1D,SAAS;AACT,KAAK;AACL,IAAI,WAAW,CAAC,WAAW,EAAE;AAC7B,QAAQ,IAAI,IAAI,CAAC,QAAQ,EAAE;AAC3B,YAAY,QAAQ,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC;AACpF,SAAS;AACT,QAAQ,IAAI,WAAW,EAAE;AACzB,YAAY,WAAW,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC;AACrF,SAAS;AACT,KAAK;AACL,IAAI,OAAO,GAAG;AACd,QAAQ,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC5D,QAAQ,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC1D,QAAQ,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,GAAG,KAAK,GAAG,IAAI,CAAC;AACjE,KAAK;AACL,IAAI,SAAS,GAAG;AAChB,QAAQ,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;AACtD,KAAK;AACL,IAAI,YAAY,GAAG;AACnB,QAAQ,IAAI,IAAI,CAAC,SAAS,EAAE;AAC5B,YAAY,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AAChD,SAAS;AACT,aAAa;AACb,YAAY,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AACnD,SAAS;AACT,KAAK;AACL,IAAI,aAAa,CAAC,OAAO,EAAE,SAAS,EAAE;AACtC,QAAQ,IAAI,SAAS,EAAE;AACvB,YAAY,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;AACzD,SAAS;AACT,aAAa;AACb,YAAY,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;AACtD,SAAS;AACT,KAAK;AACL;AACA,IAAI,MAAM,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE;AACjC,QAAQ,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,IAAI,IAAI,CAAC,UAAU,EAAE;AAC7D,YAAY,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC;AACzF,YAAY,MAAM,cAAc,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,UAAU,CAAC,UAAU,EAAE,CAAC,CAAC;AACpG,YAAY,IAAI,IAAI,CAAC,mBAAmB,EAAE;AAC1C,gBAAgB,IAAI,CAAC,aAAa,CAAC,EAAE,WAAW,EAAE,kBAAkB,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;AACzG,gBAAgB,cAAc,CAAC,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC;AAC5D,aAAa;AACb,iBAAiB;AACjB,gBAAgB,cAAc,CAAC,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC;AAC5D,aAAa;AACb,YAAY,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,UAAU,CAAC,IAAI,EAAE,SAAS,EAAE,cAAc,CAAC,SAAS,EAAE,CAAC,CAAC;AAC3H,YAAY,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE;AAC5D,gBAAgB,SAAS,EAAE,UAAU,CAAC,IAAI,GAAG,GAAG,GAAG,UAAU,CAAC,QAAQ,GAAG,GAAG,GAAG,UAAU,CAAC,UAAU;AACpG,gBAAgB,KAAK,EAAE,EAAE,KAAK,EAAE,eAAe,EAAE;AACjD,aAAa,CAAC,CAAC;AACf,YAAY,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;AACtD,YAAY,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;AAChD,YAAY,IAAI,IAAI,CAAC,cAAc,EAAE;AACrC,gBAAgB,MAAM,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;AACpE,gBAAgB,MAAM,iBAAiB,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,UAAU,CAAC,kBAAkB,EAAE,CAAC,CAAC;AAClH,gBAAgB,MAAM,eAAe,GAAG,cAAc,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,0BAA0B,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;AACpI,gBAAgB,IAAI,eAAe,EAAE;AACrC,oBAAoB,MAAM,CAAC,eAAe,EAAE,iBAAiB,CAAC,CAAC;AAC/D,iBAAiB;AACjB,gBAAgB,MAAM,CAAC,CAAC,iBAAiB,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;AAC5D,gBAAgB,IAAI,IAAI,CAAC,OAAO,EAAE;AAClC,oBAAoB,IAAI,CAAC,oBAAoB,EAAE,CAAC;AAChD,iBAAiB;AACjB,aAAa;AACb,YAAY,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,WAAW,EAAE;AACzD,gBAAgB,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AAChD,aAAa;AACb,YAAY,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;AACvD,YAAY,OAAO,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;AACpD,SAAS;AACT,aAAa,IAAI,IAAI,CAAC,SAAS,EAAE;AACjC,YAAY,IAAI,IAAI,CAAC,UAAU,EAAE;AACjC,gBAAgB,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC;AAClD,gBAAgB,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,GAAG,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC;AAC1F,gBAAgB,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,GAAG,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;AAC9F,gBAAgB,IAAI,IAAI,CAAC,mBAAmB,EAAE;AAC9C,oBAAoB,IAAI,GAAG,kBAAkB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AAC7D,iBAAiB;AACjB,gBAAgB,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;AACzC,gBAAgB,IAAI,IAAI,CAAC,cAAc,IAAI,QAAQ,EAAE;AACrD,oBAAoB,OAAO,CAAC,aAAa,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AACrE,oBAAoB,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,GAAG,GAAG,UAAU,CAAC,kBAAkB,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;AACrH,iBAAiB;AACjB,gBAAgB,IAAI,IAAI,CAAC,cAAc,IAAI,CAAC,QAAQ,EAAE;AACtD,oBAAoB,OAAO,CAAC,aAAa,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AAClE,oBAAoB,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,GAAG,GAAG,UAAU,CAAC,kBAAkB,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;AACxH,oBAAoB,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,GAAG,GAAG,UAAU,CAAC,kBAAkB,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AAC9G,iBAAiB;AACjB,gBAAgB,IAAI,QAAQ,KAAK,IAAI,EAAE;AACvC,oBAAoB,aAAa,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC;AACrD,iBAAiB;AACjB,qBAAqB;AACrB,oBAAoB,aAAa,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;AACzD,iBAAiB;AACjB,aAAa;AACb,iBAAiB;AACjB,gBAAgB,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;AACtD,aAAa;AACb,SAAS;AACT,KAAK;AACL;AACA,IAAI,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE;AAC1C,QAAQ,IAAI,QAAQ,IAAI,MAAM,EAAE;AAChC,YAAY,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC;AACjD,YAAY,MAAM,QAAQ,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,KAAK,QAAQ,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,GAAG,EAAE,CAAC;AAC3G,YAAY,QAAQ,CAAC,KAAK,CAAC,QAAQ,GAAG,UAAU,CAAC;AACjD,YAAY,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AAC7C,YAAY,IAAI,IAAI,CAAC;AACrB,YAAY,IAAI,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;AACnD,YAAY,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE;AACvC,gBAAgB,IAAI,IAAI,IAAI,CAAC,SAAS,GAAG,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;AACzH,aAAa;AACb,iBAAiB;AACjB,gBAAgB,MAAM,SAAS,GAAG,WAAW,CAAC;AAC9C,gBAAgB,IAAI,GAAG,aAAa,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;AACrD,gBAAgB,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC;AACzC,gBAAgB,QAAQ,GAAG,CAAC,CAAC;AAC7B,aAAa;AACb,YAAY,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,GAAG,QAAQ,CAAC;AACnD,YAAY,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE;AAC1C,gBAAgB,IAAI,GAAG,OAAO,KAAK,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AAC5D,gBAAgB,QAAQ,EAAE,CAAC,QAAQ,KAAK,CAAC,IAAI,aAAa,KAAK,QAAQ,IAAI,GAAG,GAAG,QAAQ;AACzF,gBAAgB,cAAc,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM;AACrD,gBAAgB,GAAG,EAAE,MAAM;AAC3B,oBAAoB,QAAQ,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;AACpD,oBAAoB,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,GAAG,QAAQ,CAAC;AAC3D,oBAAoB,QAAQ,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC;AACnD,oBAAoB,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AACxD,iBAAiB;AACjB,aAAa,CAAC,CAAC;AACf,YAAY,MAAM,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC;AACtC,YAAY,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE;AACxC,gBAAgB,IAAI,GAAG,OAAO,KAAK,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AAC5D,gBAAgB,QAAQ,EAAE,CAAC,QAAQ,KAAK,CAAC,IAAI,aAAa,KAAK,QAAQ,IAAI,GAAG,GAAG,QAAQ;AACzF,gBAAgB,cAAc,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM;AACrD,gBAAgB,GAAG,EAAE,MAAM;AAC3B,oBAAoB,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;AACnD,iBAAiB;AACjB,aAAa,CAAC,CAAC;AACf,YAAY,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC;AAChC,SAAS;AACT,KAAK;AACL,IAAI,SAAS,GAAG;AAChB,QAAQ,IAAI,IAAI,CAAC,QAAQ,EAAE;AAC3B,YAAY,IAAI;AAChB,gBAAgB,IAAI,OAAO,IAAI,CAAC,QAAQ,KAAK,UAAU,IAAI,QAAQ,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE;AAC5G,oBAAoB,IAAI,CAAC,aAAa,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;AACnH,iBAAiB;AACjB,aAAa;AACb,YAAY,OAAO,CAAC,EAAE;AACtB,gBAAgB,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACvC,aAAa;AACb,SAAS;AACT,QAAQ,IAAI,CAAC,cAAc,GAAG;AAC9B,YAAY,QAAQ,EAAE,IAAI,CAAC,QAAQ;AACnC,YAAY,cAAc,EAAE,IAAI,CAAC,cAAc;AAC/C,YAAY,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,cAAc,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE;AAClF,YAAY,cAAc,EAAE;AAC5B,gBAAgB,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE;AACpE,gBAAgB,aAAa,EAAE,cAAc,EAAE,WAAW,EAAE,cAAc;AAC1E,aAAa;AACb,YAAY,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC;AAC5C,YAAY,SAAS,EAAE,IAAI,CAAC,SAAS;AACrC,YAAY,QAAQ,EAAE,IAAI,CAAC,QAAQ;AACnC,YAAY,WAAW,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;AACvD,YAAY,UAAU,EAAE,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,0BAA0B,CAAC,CAAC;AACzE,YAAY,eAAe,EAAE,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,+BAA+B,CAAC,CAAC;AACnF,YAAY,mBAAmB,EAAE,IAAI,CAAC,mBAAmB;AACzD,SAAS,CAAC;AACV,QAAQ,IAAI,CAAC,cAAc,EAAE,CAAC;AAC9B,KAAK;AACL,IAAI,cAAc,GAAG;AACrB,QAAQ,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;AAC7B,QAAQ,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;AACjC,QAAQ,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;AAC5B,QAAQ,IAAI,CAAC,iBAAiB,GAAG,EAAE,CAAC;AACpC,QAAQ,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;AAClC,QAAQ,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;AAC/B,QAAQ,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;AACxE,QAAQ,IAAI,CAAC,oBAAoB,GAAG,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,0BAA0B,CAAC,CAAC,CAAC;AACtF,QAAQ,IAAI,CAAC,yBAAyB,GAAG,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,+BAA+B,CAAC,CAAC,CAAC;AAChG,QAAQ,IAAI,CAAC,0BAA0B,GAAG,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,gCAAgC,CAAC,CAAC,CAAC;AAClG,QAAQ,IAAI,CAAC,MAAM,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;AACzD,QAAQ,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACvC,QAAQ,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAC3C,QAAQ,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAC3C,QAAQ,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;AAClD,QAAQ,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,gBAAgB,GAAG,SAAS,CAAC;AAC7G,KAAK;AACL,IAAI,cAAc,CAAC,IAAI,EAAE;AACzB,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE;AAC/D,YAAY,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;AACrC,SAAS;AACT,QAAQ,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE;AACpF,YAAY,IAAI,SAAS,CAAC;AAC1B,YAAY,MAAM,eAAe,GAAG,cAAc,CAAC,IAAI,CAAC,aAAa,EAAE,KAAK,EAAE;AAC9E,gBAAgB,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS;AACzD,gBAAgB,QAAQ,EAAE,UAAU,CAAC,gBAAgB;AACrD,aAAa,CAAC,CAAC;AACf,YAAY,eAAe,CAAC,YAAY,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;AAC7D,YAAY,MAAM,YAAY,GAAG,eAAe,CAAC,aAAa,CAAC,GAAG,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC;AAC9F,YAAY,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;AAC9D,YAAY,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;AAC3E,YAAY,IAAI,OAAO,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,QAAQ,IAAI,OAAO,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE;AAClG,gBAAgB,SAAS,GAAG,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;AACrF,gBAAgB,IAAI,IAAI,CAAC,iBAAiB,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;AACnF,oBAAoB,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC9H,oBAAoB,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;AACtC,wBAAwB,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC;AACpE,qBAAqB;AACrB,iBAAiB;AACjB,qBAAqB,IAAI,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE;AAC1E,oBAAoB,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC;AAChE,iBAAiB;AACjB,aAAa;AACb,iBAAiB,KAAK,CAAC,OAAO,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,QAAQ;AAC7D,gBAAgB,OAAO,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,QAAQ,KAAK,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG;AACzG,gBAAgB,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC;AAC5D,aAAa;AACb,YAAY,eAAe,CAAC,YAAY,CAAC,cAAc,EAAE,YAAY,CAAC,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC;AACjI,YAAY,eAAe,CAAC,YAAY,CAAC,YAAY,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;AAClE,YAAY,IAAI,IAAI,CAAC,gBAAgB,KAAK,MAAM,EAAE;AAClD,gBAAgB,eAAe,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;AACvE,gBAAgB,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;AACnF,gBAAgB,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC,eAAe,EAAE,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;AACrH,aAAa;AACb,iBAAiB;AACjB,gBAAgB,eAAe,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;AACxE,gBAAgB,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;AACpF,gBAAgB,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC;AACzE,aAAa;AACb,YAAY,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACnD,YAAY,IAAI,IAAI,CAAC,gBAAgB,KAAK,MAAM,EAAE;AAClD,gBAAgB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AAC/E,aAAa;AACb,iBAAiB;AACjB,gBAAgB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,CAAC;AACpF,aAAa;AACb,SAAS;AACT,KAAK;AACL,IAAI,eAAe,CAAC,IAAI,EAAE,eAAe,EAAE;AAC3C,QAAQ,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;AACrD,QAAQ,eAAe,CAAC,aAAa,CAAC,GAAG,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;AACvG,QAAQ,eAAe,CAAC,YAAY,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;AAC7D,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,IAAI,SAAS,CAAC,IAAI,EAAE;AACpB,QAAQ,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AACzC,KAAK;AACL,IAAI,eAAe,CAAC,IAAI,EAAE,OAAO,EAAE;AACnC,QAAQ,IAAI,IAAI,CAAC,YAAY,EAAE;AAC/B,YAAY,IAAI,SAAS,GAAG,IAAI,CAAC;AACjC,YAAY,IAAI,IAAI,YAAY,MAAM,IAAI,IAAI,CAAC,WAAW,KAAK,aAAa,EAAE;AAC9E,gBAAgB,SAAS,GAAG,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC;AAC7D,aAAa;AACb,YAAY,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,EAAE;AAC/C,gBAAgB,MAAM,YAAY,GAAG,SAAS,CAAC,aAAa,CAAC,GAAG,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC;AAC5F,gBAAgB,IAAI,OAAO,KAAK,IAAI,EAAE;AACtC,oBAAoB,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;AACjE,iBAAiB;AACjB,qBAAqB;AACrB,oBAAoB,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;AACpE,iBAAiB;AACjB,gBAAgB,IAAI,OAAO,KAAK,IAAI,EAAE;AACtC,oBAAoB,YAAY,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;AACnE,iBAAiB;AACjB,qBAAqB;AACrB,oBAAoB,YAAY,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;AACtE,iBAAiB;AACjB,gBAAgB,YAAY,CAAC,aAAa,CAAC,YAAY,CAAC,cAAc,EAAE,OAAO,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC;AACpG,aAAa;AACb,YAAY,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC;AAChD,YAAY,IAAI,CAAC,gBAAgB,EAAE,CAAC;AACpC,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,IAAI,WAAW,CAAC,IAAI,EAAE;AACtB,QAAQ,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AAC1C,KAAK;AACL;AACA;AACA;AACA,IAAI,aAAa,GAAG;AACpB,QAAQ,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;AACtC,KAAK;AACL;AACA;AACA;AACA,IAAI,eAAe,GAAG;AACtB,QAAQ,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;AACvC,KAAK;AACL,IAAI,kBAAkB,CAAC,OAAO,EAAE;AAChC,QAAQ,IAAI,IAAI,CAAC,YAAY,EAAE;AAC/B,YAAY,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC/D,gBAAgB,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,GAAG,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC;AACpG,gBAAgB,IAAI,SAAS,EAAE;AAC/B,oBAAoB,IAAI,OAAO,EAAE;AACjC,wBAAwB,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE;AAC/E,4BAA4B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;AACjE,yBAAyB;AACzB,qBAAqB;AACrB,yBAAyB;AACzB,wBAAwB,IAAI,SAAS,CAAC,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE;AAC9E,4BAA4B,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;AACnE,yBAAyB;AACzB,qBAAqB;AACrB,iBAAiB;AACjB,aAAa;AACb,YAAY,IAAI,IAAI,CAAC,oBAAoB,EAAE;AAC3C,gBAAgB,IAAI,CAAC,oBAAoB,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;AAC/D,aAAa;AACb,YAAY,IAAI,CAAC,gBAAgB,EAAE,CAAC;AACpC,SAAS;AACT,KAAK;AACL,IAAI,WAAW,GAAG;AAClB,QAAQ,IAAI,IAAI,CAAC,YAAY,EAAE;AAC/B,YAAY,MAAM,YAAY,GAAG,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,GAAG,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC;AACtH,YAAY,MAAM,IAAI,GAAG;AACzB,gBAAgB,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS;AAC7F,gBAAgB,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE;AAC5C,aAAa,CAAC;AACd,YAAY,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC1D,gBAAgB,MAAM,OAAO,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;AAChD,gBAAgB,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC;AACpC,gBAAgB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;AACzD,gBAAgB,IAAI,OAAO,CAAC,aAAa,CAAC,GAAG,GAAG,UAAU,CAAC,eAAe,CAAC,EAAE;AAC7E,oBAAoB,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,aAAa,CAAC,GAAG,GAAG,UAAU,CAAC,eAAe,CAAC,CAAC,CAAC;AAChG,iBAAiB;AACjB,gBAAgB,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;AAC1C,gBAAgB,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE;AACvE,oBAAoB,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,GAAG,UAAU,CAAC,eAAe,CAAC,CAAC,CAAC;AAC1G,iBAAiB;AACjB,aAAa;AACb,SAAS;AACT,aAAa;AACb,YAAY,MAAM,YAAY,GAAG,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,GAAG,GAAG,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC;AAC3H,YAAY,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC1D,gBAAgB,MAAM,OAAO,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;AAChD,gBAAgB,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;AAC9D,gBAAgB,OAAO,CAAC,iBAAiB,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;AAChF,gBAAgB,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,aAAa,CAAC,GAAG,GAAG,UAAU,CAAC,eAAe,CAAC,CAAC,CAAC;AAC5F,aAAa;AACb,YAAY,IAAI,IAAI,CAAC,aAAa,EAAE;AACpC,gBAAgB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;AAC3E,aAAa;AACb,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA,IAAI,iBAAiB,GAAG;AACxB,QAAQ,IAAI,IAAI,CAAC,oBAAoB,EAAE;AACvC,YAAY,IAAI,CAAC,oBAAoB,CAAC,iBAAiB,EAAE,CAAC;AAC1D,SAAS;AACT,KAAK;AACL,IAAI,YAAY,CAAC,CAAC,EAAE;AACpB,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE;AAC5E,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;AAChC,QAAQ,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC;AACpC,QAAQ,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;AAC3C,QAAQ,IAAI,cAAc,CAAC;AAC3B,QAAQ,IAAI,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE;AAClG,YAAY,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE;AAClF,gBAAgB,IAAI,CAAC,eAAe,EAAE,CAAC;AACvC,aAAa;AACb,YAAY,IAAI,CAAC,IAAI,EAAE,CAAC;AACxB,SAAS;AACT,aAAa;AACb,YAAY,IAAI,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,GAAG,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;AAC3E,YAAY,IAAI,EAAE,KAAK,IAAI,EAAE;AAC7B,gBAAgB,EAAE,GAAG,MAAM,CAAC;AAC5B,aAAa;AACb,YAAY,IAAI,CAAC,WAAW,EAAE,CAAC;AAC/B,YAAY,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE;AACxE,gBAAgB,IAAI,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE;AAC1E,oBAAoB,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;AACzD,oBAAoB,IAAI,iBAAiB,CAAC,EAAE,CAAC,aAAa,CAAC,GAAG,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC,EAAE;AACvF,wBAAwB,MAAM,IAAI,GAAG;AACrC,4BAA4B,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS;AAC5G,4BAA4B,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE;AACrD,yBAAyB,CAAC;AAC1B,wBAAwB,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,GAAG,UAAU,CAAC,eAAe,CAAC,CAAC,CAAC;AAC9G,qBAAqB;AACrB,yBAAyB;AACzB,wBAAwB,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;AAC7C,wBAAwB,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;AAC7D,qBAAqB;AACrB,oBAAoB,IAAI,IAAI,CAAC,oBAAoB,EAAE;AACnD,wBAAwB,IAAI,CAAC,oBAAoB,CAAC,aAAa,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AACvE,qBAAqB;AACrB,oBAAoB,IAAI,CAAC,EAAE;AAC3B,wBAAwB,MAAM,SAAS,GAAG,IAAI,CAAC,eAAe,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AACtE,wBAAwB,MAAM,SAAS,GAAG,EAAE,CAAC,aAAa,CAAC,GAAG,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC;AAC1F,wBAAwB,KAAK,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,SAAS,CAAC,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;AAC1G,wBAAwB,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;AAC1D,qBAAqB;AACrB,iBAAiB;AACjB,qBAAqB,IAAI,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE;AACrE,oBAAoB,IAAI,CAAC,WAAW,EAAE,CAAC;AACvC,oBAAoB,IAAI,CAAC,YAAY,EAAE,CAAC;AACxC,oBAAoB,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;AAC1C,oBAAoB,IAAI,CAAC,WAAW,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AAC5C,oBAAoB,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;AAC7D,iBAAiB;AACjB,qBAAqB;AACrB,oBAAoB,IAAI,CAAC,aAAa,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AAC9C,oBAAoB,IAAI,CAAC,MAAM,CAAC,QAAQ,KAAK,OAAO,MAAM,MAAM,CAAC,QAAQ,KAAK,UAAU,CAAC,EAAE;AAC3F,wBAAwB,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;AAC1D,wBAAwB,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC;AACpD,qBAAqB;AACrB,iBAAiB;AACjB,aAAa;AACb,iBAAiB;AACjB,gBAAgB,IAAI,CAAC,WAAW,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AACxC,gBAAgB,IAAI,CAAC,MAAM,CAAC,QAAQ,KAAK,OAAO,MAAM,MAAM,CAAC,QAAQ,KAAK,UAAU,CAAC,EAAE;AACvF,oBAAoB,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;AACtD,oBAAoB,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC;AAChD,iBAAiB;AACjB,aAAa;AACb,YAAY,cAAc,GAAG,OAAO,CAAC,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;AACrD,YAAY,IAAI,CAAC,iBAAiB,CAAC,cAAc,CAAC,EAAE;AACpD,gBAAgB,IAAI,cAAc,CAAC,SAAS,CAAC,QAAQ,CAAC,aAAa,CAAC;AACpE,oBAAoB,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC,QAAQ,CAAC,qBAAqB,CAAC,EAAE;AACvF,oBAAoB,cAAc,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;AACrE,iBAAiB;AACjB,aAAa;AACb,SAAS;AACT,QAAQ,IAAI,CAAC,gBAAgB,EAAE,CAAC;AAChC,KAAK;AACL,IAAI,aAAa,CAAC,OAAO,EAAE;AAC3B,QAAQ,OAAO,OAAO,IAAI,OAAO,CAAC,UAAU,IAAI,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;AACxF,KAAK;AACL,IAAI,YAAY,CAAC,CAAC,EAAE;AACpB,QAAQ,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,EAAE,GAAG,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;AAC9E,QAAQ,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AAC/B,KAAK;AACL,IAAI,YAAY,GAAG;AACnB,QAAQ,IAAI,CAAC,WAAW,EAAE,CAAC;AAC3B,KAAK;AACL,IAAI,cAAc,CAAC,CAAC,EAAE,GAAG,EAAE;AAC3B,QAAQ,CAAC,CAAC,cAAc,EAAE,CAAC;AAC3B,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,EAAE;AAC/D,YAAY,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,GAAG,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;AAC9E,YAAY,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,GAAG,GAAG,UAAU,CAAC,OAAO,CAAC;AACrF,gBAAgB,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,GAAG,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;AACpE,YAAY,IAAI,cAAc,EAAE;AAChC,gBAAgB,cAAc,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;AACpE,gBAAgB,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;AACxC,oBAAoB,cAAc,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;AACzE,iBAAiB;AACjB,aAAa;AACb,YAAY,MAAM,KAAK,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;AACnD,YAAY,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,YAAY,EAAE;AACxF,gBAAgB,EAAE,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;AAC5D,aAAa;AACb,iBAAiB;AACjB,gBAAgB,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;AAC/C,aAAa;AACb,YAAY,IAAI,EAAE,CAAC,KAAK,CAAC,EAAE;AAC3B,gBAAgB,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,uBAAuB,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC5F,aAAa;AACb,iBAAiB;AACjB,gBAAgB,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,uBAAuB,CAAC,CAAC;AACtE,aAAa;AACb,SAAS;AACT,KAAK;AACL,IAAI,cAAc,CAAC,CAAC,EAAE,IAAI,EAAE;AAC5B,QAAQ,IAAI,SAAS,CAAC;AACtB,QAAQ,IAAI,EAAE,CAAC;AACf,QAAQ,MAAM,QAAQ,GAAG,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,GAAG,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,GAAG,IAAI,GAAG,KAAK,CAAC;AAChH,QAAQ,IAAI,QAAQ,IAAI,IAAI,CAAC,YAAY,EAAE;AAC3C,YAAY,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,GAAG,GAAG,UAAU,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,GAAG,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;AAC3H,YAAY,SAAS,GAAG,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,GAAG,GAAG,UAAU,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;AAChH,YAAY,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,EAAE;AAC/C,gBAAgB,IAAI,EAAE,EAAE;AACxB,oBAAoB,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;AAC5D,oBAAoB,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;AAC5C,wBAAwB,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;AACjE,qBAAqB;AACrB,iBAAiB;AACjB,gBAAgB,IAAI,SAAS,CAAC,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,YAAY,EAAE;AAC5F,oBAAoB,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;AAChE,iBAAiB;AACjB,qBAAqB;AACrB,oBAAoB,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;AACnD,iBAAiB;AACjB,aAAa;AACb,SAAS;AACT,aAAa;AACb,YAAY,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,GAAG,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;AACrE,YAAY,SAAS,GAAG,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,GAAG,GAAG,UAAU,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;AAChH,YAAY,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;AAC3C,SAAS;AACT,QAAQ,IAAI,SAAS,EAAE;AACvB,YAAY,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,uBAAuB,EAAE,SAAS,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;AACxF,SAAS;AACT,aAAa;AACb,YAAY,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,uBAAuB,CAAC,CAAC;AAClE,SAAS;AACT,QAAQ,OAAO,SAAS,CAAC;AACzB,KAAK;AACL,IAAI,eAAe,CAAC,CAAC,EAAE,IAAI,EAAE;AAC7B,QAAQ,CAAC,CAAC,cAAc,EAAE,CAAC;AAC3B,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,EAAE;AAC/D,YAAY,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;AAC3D,YAAY,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,qBAAqB,EAAE,CAAC,GAAG,CAAC;AACxE,YAAY,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,qBAAqB,EAAE,CAAC,MAAM,CAAC;AAC9E,YAAY,MAAM,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,GAAG,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,qBAAqB,EAAE,CAAC;AAChH,YAAY,IAAI,UAAU,CAAC;AAC3B,YAAY,IAAI,eAAe,CAAC;AAChC,YAAY,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE;AACrC,gBAAgB,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,GAAG,GAAG,UAAU,CAAC,aAAa,CAAC,CAAC,qBAAqB,EAAE,CAAC;AACnH,aAAa;AACb,YAAY,IAAI,SAAS,EAAE;AAC3B,gBAAgB,MAAM,UAAU,GAAG,SAAS,CAAC,qBAAqB,EAAE,CAAC,GAAG,CAAC;AACzE,gBAAgB,MAAM,aAAa,GAAG,SAAS,CAAC,qBAAqB,EAAE,CAAC,MAAM,CAAC;AAC/E,gBAAgB,IAAI,CAAC,IAAI,EAAE;AAC3B,oBAAoB,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,WAAW,GAAG,aAAa,CAAC;AACtF,oBAAoB,UAAU,GAAG,IAAI,CAAC,QAAQ,IAAI,UAAU,GAAG,aAAa;AAC5E,yBAAyB,CAAC,UAAU,GAAG,UAAU,IAAI,aAAa,CAAC,CAAC;AACpE,oBAAoB,IAAI,UAAU,GAAG,MAAM,EAAE;AAC7C,wBAAwB,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,EAAE;AACpD,4BAA4B,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,WAAW,IAAI,UAAU,GAAG,MAAM,CAAC,CAAC,CAAC;AAClF,yBAAyB;AACzB,6BAA6B;AAC7B,4BAA4B,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,UAAU,GAAG,MAAM,CAAC,CAAC;AACpG,yBAAyB;AACzB,qBAAqB;AACrB,iBAAiB;AACjB,qBAAqB;AACrB,oBAAoB,UAAU,GAAG,IAAI,CAAC,QAAQ,GAAG,UAAU,IAAI,UAAU,GAAG,UAAU,CAAC,CAAC;AACxF,oBAAoB,IAAI,UAAU,GAAG,CAAC,EAAE;AACxC,wBAAwB,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,EAAE;AACpD,4BAA4B,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,WAAW,GAAG,UAAU,CAAC,CAAC;AACvE,yBAAyB;AACzB,6BAA6B;AAC7B,4BAA4B,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,UAAU,CAAC;AACzF,yBAAyB;AACzB,qBAAqB;AACrB,iBAAiB;AACjB,aAAa;AACb,iBAAiB,IAAI,IAAI,CAAC,oBAAoB,IAAI,IAAI,IAAI,IAAI,CAAC,oBAAoB,CAAC,YAAY,EAAE;AAClG,gBAAgB,IAAI,CAAC,YAAY,GAAG,MAAM;AAC1C,oBAAoB,IAAI,CAAC,cAAc,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;AACjD,oBAAoB,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC;AAClD,iBAAiB,CAAC;AAClB,gBAAgB,UAAU,GAAG,IAAI,CAAC,oBAAoB,CAAC,cAAc,CAAC;AACtE,gBAAgB,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,EAAE;AAC5C,oBAAoB,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,WAAW,GAAG,UAAU,CAAC,CAAC;AAC/D,iBAAiB;AACjB,qBAAqB;AACrB,oBAAoB,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,UAAU,CAAC;AACjF,iBAAiB;AACjB,aAAa;AACb,iBAAiB,IAAI,IAAI,EAAE;AAC3B,gBAAgB,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,SAAS,EAAE;AACvD,oBAAoB,MAAM,SAAS,GAAG,eAAe,GAAG,eAAe,CAAC,GAAG,GAAG,eAAe,CAAC,GAAG,CAAC;AAClG,oBAAoB,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,qBAAqB,EAAE,CAAC;AAChF,oBAAoB,UAAU,GAAG,YAAY,CAAC,GAAG,GAAG,CAAC,IAAI,YAAY,CAAC,MAAM,GAAG,SAAS,IAAI,CAAC,CAAC;AAC9F,oBAAoB,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,EAAE;AAChD,wBAAwB,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,WAAW,GAAG,UAAU,CAAC,CAAC;AACnE,qBAAqB;AACrB,yBAAyB;AACzB,wBAAwB,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,CAAC,CAAC;AACnD,qBAAqB;AACrB,iBAAiB;AACjB,qBAAqB,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE;AAC9C,oBAAoB,UAAU,GAAG,IAAI,CAAC,QAAQ,IAAI,eAAe,CAAC,GAAG,GAAG,CAAC,GAAG,eAAe,CAAC,GAAG,GAAG,CAAC;AACnG,wBAAwB,CAAC,UAAU,GAAG,eAAe,CAAC,GAAG,IAAI,eAAe,CAAC,MAAM,CAAC;AACpF,oBAAoB,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,EAAE;AAChD,wBAAwB,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,WAAW,GAAG,UAAU,CAAC,CAAC;AACnE,qBAAqB;AACrB,yBAAyB;AACzB,wBAAwB,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,UAAU,CAAC;AACrF,qBAAqB;AACrB,iBAAiB;AACjB,aAAa;AACb,SAAS;AACT,KAAK;AACL,IAAI,eAAe,CAAC,CAAC,EAAE;AACvB,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,EAAE;AAC/D,YAAY,MAAM,QAAQ,GAAG,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,GAAG,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,GAAG,IAAI,GAAG,KAAK,CAAC;AACpH,YAAY,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,GAAG,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC;AAC1E,YAAY,IAAI,QAAQ,IAAI,EAAE,EAAE;AAChC,gBAAgB,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;AACxD,gBAAgB,IAAI,IAAI,CAAC,YAAY,EAAE;AACvC,oBAAoB,IAAI,CAAC,YAAY,EAAE,CAAC;AACxC,oBAAoB,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;AAC1C,oBAAoB,IAAI,CAAC,WAAW,EAAE,CAAC;AACvC,iBAAiB;AACjB,gBAAgB,IAAI,CAAC,WAAW,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AACxC,aAAa;AACb,SAAS;AACT,KAAK;AACL,IAAI,eAAe,CAAC,CAAC,EAAE;AACvB,QAAQ,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,YAAY,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,EAAE;AACnG,YAAY,CAAC,CAAC,cAAc,EAAE,CAAC;AAC/B,YAAY,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,GAAG,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC;AAC1E,YAAY,IAAI,eAAe,CAAC;AAChC,YAAY,IAAI,SAAS,CAAC;AAC1B,YAAY,IAAI,CAAC,iBAAiB,CAAC,EAAE,CAAC,IAAI,iBAAiB,CAAC,EAAE,CAAC,aAAa,CAAC,GAAG,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC,EAAE;AACzG,gBAAgB,MAAM,IAAI,GAAG;AAC7B,oBAAoB,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS;AACpG,oBAAoB,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE;AAC7C,iBAAiB,CAAC;AAClB,gBAAgB,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,GAAG,UAAU,CAAC,eAAe,CAAC,CAAC;AAC5F,gBAAgB,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC;AAC5D,gBAAgB,SAAS,GAAG,eAAe,CAAC,aAAa,CAAC,GAAG,GAAG,UAAU,CAAC,YAAY,GAAG,GAAG,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;AACjH,aAAa;AACb,iBAAiB;AACjB,gBAAgB,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;AACrC,aAAa;AACb,YAAY,MAAM,SAAS,GAAG,IAAI,CAAC,eAAe,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AAC1D,YAAY,KAAK,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,SAAS,GAAG,SAAS,CAAC,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,KAAK,EAAE,CAAC,CAAC;AAClH,YAAY,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;AAC9C,YAAY,IAAI,CAAC,gBAAgB,EAAE,CAAC;AACpC,SAAS;AACT,KAAK;AACL,IAAI,gBAAgB,CAAC,CAAC,EAAE;AACxB,QAAQ,QAAQ,CAAC,CAAC,OAAO;AACzB,YAAY,KAAK,EAAE;AACnB,gBAAgB,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;AACvC,gBAAgB,MAAM;AACtB,YAAY,KAAK,EAAE;AACnB,gBAAgB,IAAI,CAAC,cAAc,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;AAC7C,gBAAgB,MAAM;AACtB,YAAY,KAAK,EAAE;AACnB,gBAAgB,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;AACxC,gBAAgB,MAAM;AACtB,YAAY,KAAK,EAAE;AACnB,gBAAgB,IAAI,CAAC,eAAe,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;AAC9C,gBAAgB,MAAM;AACtB,YAAY,KAAK,EAAE;AACnB,gBAAgB,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;AACxC,gBAAgB,MAAM;AACtB,YAAY,KAAK,CAAC;AAClB,gBAAgB,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE;AACtF,oBAAoB,IAAI,CAAC,eAAe,EAAE,CAAC;AAC3C,iBAAiB;AACjB,gBAAgB,IAAI,CAAC,IAAI,EAAE,CAAC;AAC5B,gBAAgB,MAAM;AACtB,YAAY,KAAK,EAAE;AACnB,gBAAgB,IAAI,iBAAiB,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,EAAE;AACpH,oBAAoB,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;AAC5C,iBAAiB;AACjB,gBAAgB,MAAM;AACtB,SAAS;AACT,KAAK;AACL,IAAI,kBAAkB,CAAC,CAAC,EAAE;AAC1B,QAAQ,IAAI,CAAC,CAAC,cAAc,KAAK,OAAO,IAAI,CAAC,CAAC,QAAQ,GAAG,aAAa,IAAI,CAAC,CAAC,aAAa,CAAC,IAAI,KAAK,UAAU,EAAE;AAC/G,YAAY,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE;AAClF,gBAAgB,IAAI,CAAC,eAAe,EAAE,CAAC;AACvC,aAAa;AACb,YAAY,IAAI,CAAC,IAAI,EAAE,CAAC;AACxB,SAAS;AACT,KAAK;AACL,IAAI,QAAQ,GAAG;AACf,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,EAAE;AAC/D,YAAY,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,GAAG,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC;AACtF,YAAY,IAAI,cAAc,EAAE;AAChC,gBAAgB,cAAc,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;AACpE,gBAAgB,IAAI,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;AAC/E,oBAAoB,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;AACvE,iBAAiB;AACjB,aAAa;AACb,SAAS;AACT,KAAK;AACL,IAAI,UAAU,GAAG;AACjB,QAAQ,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC;AAC/E,QAAQ,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;AACzE,QAAQ,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;AAC7E,QAAQ,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;AAC5E,QAAQ,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;AACxE,QAAQ,IAAI,CAAC,WAAW,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAClG,QAAQ,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;AAC7C,YAAY,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;AAC9E,SAAS;AACT,KAAK;AACL,IAAI,YAAY,GAAG;AACnB,QAAQ,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;AAC5E,QAAQ,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;AACtE,QAAQ,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;AAC1E,QAAQ,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;AACzE,QAAQ,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;AAC1E,QAAQ,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;AACzE,QAAQ,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;AACrE,QAAQ,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;AAC7C,YAAY,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;AAC3E,SAAS;AACT,QAAQ,IAAI,IAAI,CAAC,WAAW;AAC5B,YAAY,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;AACvC,QAAQ,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AAChC,KAAK;AACL,IAAI,WAAW,GAAG;AAClB,QAAQ,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,GAAG,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC;AAClF,QAAQ,KAAK,MAAM,GAAG,IAAI,SAAS,EAAE;AACrC,YAAY,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;AACrD,SAAS;AACT,KAAK;AACL,IAAI,WAAW,GAAG;AAClB,QAAQ,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,GAAG,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;AAC3E,QAAQ,IAAI,OAAO,EAAE;AACrB,YAAY,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AACvD,SAAS;AACT,KAAK;AACL,IAAI,YAAY,CAAC,EAAE,EAAE;AACrB,QAAQ,IAAI,iBAAiB,CAAC,EAAE,CAAC,EAAE;AACnC,YAAY,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,GAAG,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;AACxF,YAAY,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE;AAC1C,gBAAgB,IAAI,IAAI,CAAC,YAAY,IAAI,GAAG,CAAC,aAAa,CAAC,GAAG,GAAG,UAAU,CAAC,OAAO,CAAC,EAAE;AACtF,oBAAoB,SAAS;AAC7B,iBAAiB;AACjB,qBAAqB;AACrB,oBAAoB,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;AAC9D,iBAAiB;AACjB,aAAa;AACb,SAAS;AACT,aAAa;AACb,YAAY,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;AACrD,SAAS;AACT,KAAK;AACL,IAAI,SAAS,CAAC,EAAE,EAAE;AAClB,QAAQ,QAAQ,EAAE,IAAI,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC;AAChE,eAAe,CAAC,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,aAAa,CAAC;AAC/D,eAAe,CAAC,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE;AAC3D,KAAK;AACL,IAAI,aAAa,CAAC,EAAE,EAAE,CAAC,EAAE;AACzB,QAAQ,IAAI,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,YAAY,EAAE;AACpE,YAAY,IAAI,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,GAAG,GAAG,UAAU,CAAC,OAAO,CAAC,EAAE;AACpE,gBAAgB,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,GAAG,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;AACxG,aAAa;AACb,YAAY,MAAM,aAAa,GAAG,EAAE,CAAC,aAAa,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;AAC5F,YAAY,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;AACjD,YAAY,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE;AACvC,gBAAgB,IAAI,CAAC,CAAC,MAAM,KAAK,aAAa,EAAE;AAChD,oBAAoB,aAAa,CAAC,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;AAC7D,iBAAiB;AACjB,aAAa;AACb,YAAY,MAAM,eAAe,GAAG,EAAE,CAAC,aAAa,CAAC,GAAG,GAAG,UAAU,CAAC,eAAe,CAAC,CAAC;AACvF,YAAY,MAAM,SAAS,GAAG,eAAe,CAAC,aAAa,CAAC,GAAG,GAAG,UAAU,CAAC,YAAY,GAAG,GAAG,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;AACnH,YAAY,IAAI,CAAC,WAAW,EAAE,CAAC;AAC/B,YAAY,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE;AACnE,gBAAgB,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;AAC5D,gBAAgB,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;AACtD,aAAa;AACb,iBAAiB;AACjB,gBAAgB,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;AAC/D,gBAAgB,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;AACzD,aAAa;AACb,YAAY,eAAe,CAAC,YAAY,CAAC,cAAc,EAAE,SAAS,CAAC,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC;AACzG,gBAAgB,MAAM,GAAG,OAAO,CAAC,CAAC;AAClC,YAAY,MAAM,SAAS,GAAG,IAAI,CAAC,eAAe,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AAC1D,YAAY,KAAK,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,SAAS,CAAC,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;AAC9F,YAAY,IAAI,IAAI,CAAC,oBAAoB,EAAE;AAC3C,gBAAgB,IAAI,CAAC,oBAAoB,CAAC,aAAa,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AAC/D,aAAa;AACb,YAAY,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;AAC9C,YAAY,IAAI,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC;AACzC,YAAY,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;AACnC,SAAS;AACT,KAAK;AACL,IAAI,eAAe,CAAC,EAAE,EAAE,CAAC,EAAE;AAC3B,QAAQ,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;AAC1C,QAAQ,MAAM,SAAS,GAAG,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;AAC3E,QAAQ,IAAI,YAAY,CAAC;AACzB,QAAQ,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC;AACpC,eAAe,OAAO,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,QAAQ,IAAI,OAAO,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE;AACjG,YAAY,YAAY,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC;AAChG,SAAS;AACT,aAAa;AACb,YAAY,YAAY;AACxB,gBAAgB;AAChB,oBAAoB,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,IAAI,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC;AAC3F,oBAAoB,IAAI,EAAE,IAAI;AAC9B,iBAAiB,CAAC;AAClB,SAAS;AACT,QAAQ,MAAM,SAAS,GAAG,EAAE,CAAC;AAC7B,QAAQ,KAAK,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;AACvC,QAAQ,IAAI,CAAC,EAAE;AACf,YAAY,KAAK,CAAC,SAAS,EAAE;AAC7B,gBAAgB,YAAY,EAAE,IAAI;AAClC,gBAAgB,KAAK,EAAE,CAAC;AACxB,gBAAgB,MAAM,EAAE,KAAK;AAC7B,gBAAgB,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,CAAC;AAC1F,aAAa,CAAC,CAAC;AACf,SAAS;AACT,QAAQ,OAAO,SAAS,CAAC;AACzB,KAAK;AACL,IAAI,mBAAmB,CAAC,EAAE,EAAE;AAC5B,QAAQ,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;AAC1C,QAAQ,MAAM,SAAS,GAAG,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;AAC3E,QAAQ,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,QAAQ;AAChF,aAAa,OAAO,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC,EAAE;AACvD,YAAY,IAAI,CAAC,aAAa,GAAG;AACjC,gBAAgB,IAAI,EAAE,EAAE;AACxB,gBAAgB,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE;AAC/C,gBAAgB,IAAI,EAAE,IAAI,CAAC,UAAU;AACrC,aAAa,CAAC;AACd,SAAS;AACT,aAAa;AACb,YAAY,IAAI,CAAC,aAAa,GAAG;AACjC,gBAAgB,IAAI,EAAE,EAAE;AACxB,gBAAgB,IAAI,EAAE,SAAS,IAAI,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC;AAC7E,gBAAgB,IAAI,EAAE,IAAI;AAC1B,aAAa,CAAC;AACd,SAAS;AACT,KAAK;AACL,IAAI,WAAW,CAAC,EAAE,EAAE,CAAC,EAAE;AACvB,QAAQ,IAAI,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE;AAC9F,YAAY,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;AACpC,gBAAgB,IAAI,CAAC,YAAY,EAAE,CAAC;AACpC,aAAa;AACb,YAAY,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;AAClD,YAAY,IAAI,CAAC,WAAW,EAAE,CAAC;AAC/B,YAAY,IAAI,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC;AACzC,YAAY,IAAI,IAAI,CAAC,oBAAoB,EAAE;AAC3C,gBAAgB,IAAI,CAAC,oBAAoB,CAAC,WAAW,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AAC7D,aAAa;AACb,YAAY,MAAM,SAAS,GAAG,IAAI,CAAC,eAAe,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AAC1D,YAAY,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,SAAS,EAAE,CAAC,YAAY,KAAK;AAChE,gBAAgB,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE;AAC1C,oBAAoB,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;AACzC,oBAAoB,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;AAC3C,iBAAiB;AACjB,aAAa,CAAC,CAAC;AACf,SAAS;AACT,KAAK;AACL,IAAI,UAAU,CAAC,EAAE,EAAE;AACnB,QAAQ,IAAI,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE;AAC3F,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,GAAG,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;AACjF,YAAY,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE;AACzC,gBAAgB,WAAW,CAAC,MAAM,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC;AACtD,aAAa;AACb,YAAY,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,YAAY,EAAE;AAClF,gBAAgB,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AACnD,aAAa;AACb,SAAS;AACT,KAAK;AACL;AACA,IAAI,QAAQ,GAAG;AACf,QAAQ,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC;AAC1C,QAAQ,IAAI,SAAS,CAAC,MAAM,EAAE;AAC9B,YAAY,IAAI,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC;AACpC,YAAY,KAAK,MAAM,GAAG,IAAI,SAAS,EAAE;AACzC,gBAAgB,MAAM,KAAK,GAAG,EAAE,CAAC;AACjC,gBAAgB,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;AAC5C,gBAAgB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;AAChE,gBAAgB,MAAM,SAAS,GAAG,cAAc,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;AAC7F,gBAAgB,EAAE,GAAG,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;AACxE,aAAa;AACb,YAAY,OAAO,EAAE,CAAC;AACtB,SAAS;AACT,QAAQ,OAAO,IAAI,CAAC,SAAS,CAAC;AAC9B,KAAK;AACL,IAAI,WAAW,CAAC,EAAE,EAAE;AACpB,QAAQ,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,YAAY,WAAW;AACjE,YAAY,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC;AAC7C,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;AAC9C,QAAQ,IAAI,KAAK,CAAC;AAClB,QAAQ,IAAI,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,GAAG,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE;AAC7G,YAAY,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC;AACnC,SAAS;AACT,aAAa;AACb,YAAY,KAAK,GAAG,UAAU,CAAC;AAC/B,SAAS;AACT,QAAQ,OAAO,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AAClD,KAAK;AACL,IAAI,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE;AAC/C,QAAQ,IAAI,UAAU,CAAC;AACvB,QAAQ,IAAI,UAAU,IAAI,UAAU,CAAC,MAAM,IAAI,MAAM,EAAE;AACvD,YAAY,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK;AACtC,gBAAgB,MAAM,SAAS,GAAG,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;AACnF;AACA,gBAAgB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;AACvE,qBAAqB,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,iBAAiB,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AAC9F,wBAAwB,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE,MAAM,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC;AACpG,qBAAqB,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE;AAC7G,oBAAoB,UAAU,IAAI,MAAM,GAAG,UAAU,GAAG,IAAI,CAAC,CAAC;AAC9D,iBAAiB;AACjB,qBAAqB,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE;AACtF,oBAAoB,UAAU,IAAI,MAAM,GAAG,UAAU,GAAG,IAAI,CAAC,CAAC;AAC9D,iBAAiB;AACjB,qBAAqB,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,iBAAiB,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE;AACrH,oBAAoB,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,aAAa;AACvE,0BAA0B,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;AACzD,oBAAoB,IAAI,EAAE,IAAI,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;AACnF,wBAAwB,UAAU,GAAG,IAAI,CAAC;AAC1C,qBAAqB;AACrB,iBAAiB;AACjB,qBAAqB,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;AAC3F,oBAAoB,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE;AACzD,oBAAoB,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AACnG,iBAAiB;AACjB,gBAAgB,OAAO,CAAC,CAAC,UAAU,CAAC;AACpC,aAAa,CAAC,CAAC;AACf,SAAS;AACT,aAAa;AACb,YAAY,UAAU,GAAG,UAAU,CAAC;AACpC,SAAS;AACT,QAAQ,OAAO,UAAU,CAAC;AAC1B,KAAK;AACL,IAAI,QAAQ,GAAG;AACf,QAAQ,MAAM,OAAO,GAAG,EAAE,CAAC;AAC3B,QAAQ,MAAM,KAAK,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,KAAK,EAAE,CAAC,CAAC;AAC9D,QAAQ,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;AACzB,YAAY,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE;AACtE,gBAAgB,IAAI,MAAM,KAAK,WAAW,IAAI,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;AAC1E,oBAAoB,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;AAC5C,wBAAwB,QAAQ,CAAC,mBAAmB,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;AACjE,uBAAuB,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE;AACzE,oBAAoB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3D,iBAAiB;AACjB,aAAa;AACb,YAAY,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAClC,YAAY,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,WAAW,CAAC,EAAE;AAC3F,gBAAgB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;AAClD,aAAa;AACb,SAAS;AACT,QAAQ,OAAO,KAAK,CAAC;AACrB,KAAK;AACL,IAAI,iBAAiB,CAAC,UAAU,GAAG,IAAI,CAAC,SAAS,EAAE;AACnD,QAAQ,MAAM,UAAU,GAAG,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;AAC3G,QAAQ,MAAM,KAAK,GAAG,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;AACtE,QAAQ,IAAI,UAAU,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE;AAC/C,YAAY,IAAI,IAAI,CAAC,SAAS,KAAK,MAAM,EAAE;AAC3C,gBAAgB,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC,eAAe,CAAC,QAAQ,CAAC,aAAa,CAAC,UAAU,EAAE,KAAK,CAAC,EAAE,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;AACjJ,aAAa;AACb,iBAAiB;AACjB,gBAAgB,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC,eAAe,CAAC,UAAU,EAAE,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;AAClH,aAAa;AACb,SAAS;AACT,aAAa,IAAI,UAAU,IAAI,IAAI,CAAC,SAAS,KAAK,MAAM,EAAE;AAC1D,YAAY,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;AACvE,SAAS;AACT,aAAa;AACb,YAAY,IAAI,CAAC,SAAS,GAAG,UAAU,CAAC;AACxC,SAAS;AACT,KAAK;AACL,IAAI,aAAa,GAAG;AACpB,QAAQ,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;AAC3D,KAAK;AACL,IAAI,iBAAiB,CAAC,CAAC,EAAE,iBAAiB,EAAE;AAC5C,QAAQ,IAAI,IAAI,CAAC,WAAW,EAAE;AAC9B,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,MAAM,CAAC;AAClC,QAAQ,iBAAiB,CAAC,aAAa,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,CAAC;AAC5E,QAAQ,IAAI,CAAC,UAAU,EAAE,CAAC;AAC1B,QAAQ,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC;AAC1C,KAAK;AACL,IAAI,oBAAoB,CAAC,CAAC,EAAE;AAC5B,QAAQ,IAAI,IAAI,CAAC,WAAW,EAAE;AAC9B,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC;AACzC,KAAK;AACL,IAAI,YAAY,GAAG;AACnB,QAAQ,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;AACpC,QAAQ,IAAI,IAAI,CAAC,UAAU,YAAY,WAAW,EAAE;AACpD,YAAY,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE;AACvC,gBAAgB,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK;AAClD,oBAAoB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,OAAO,CAAC;AACxE,oBAAoB,IAAI,IAAI,CAAC,UAAU,YAAY,WAAW,IAAI,IAAI,CAAC,SAAS,EAAE;AAClF,wBAAwB,IAAI,CAAC,iBAAiB,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;AACxD,qBAAqB;AACrB,iBAAiB,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK;AAChC,oBAAoB,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC;AACjD,iBAAiB,CAAC,CAAC;AACnB,aAAa;AACb,iBAAiB;AACjB,gBAAgB,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK;AAC1E,oBAAoB,IAAI,CAAC,iBAAiB,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;AACpD,iBAAiB,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK;AAChC,oBAAoB,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC;AACjD,iBAAiB,CAAC,CAAC;AACnB,aAAa;AACb,SAAS;AACT,aAAa,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE;AAC9D,YAAY,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;AACxD,YAAY,IAAI,EAAE,EAAE;AACpB,gBAAgB,MAAM,CAAC,EAAE,CAAC,CAAC;AAC3B,gBAAgB,IAAI,CAAC,aAAa,CAAC,EAAE,UAAU,EAAE,QAAQ,CAAC,qBAAqB,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;AAC7F,gBAAgB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC;AACjD,gBAAgB,IAAI,CAAC,UAAU,EAAE,CAAC;AAClC,gBAAgB,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;AACzE,aAAa;AACb,SAAS;AACT,aAAa;AACb,YAAY,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC;AAC7C,YAAY,IAAI,CAAC,UAAU,EAAE,CAAC;AAC9B,YAAY,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;AACrE,SAAS;AACT,KAAK;AACL,IAAI,QAAQ,GAAG;AACf,QAAQ,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAC3C,QAAQ,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAC3C,QAAQ,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;AAClD,QAAQ,IAAI,IAAI,CAAC,OAAO,EAAE;AAC1B,YAAY,IAAI,CAAC,aAAa,EAAE,CAAC;AACjC,SAAS;AACT,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE;AAC9D,YAAY,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,EAAE,CAAC;AACxC,SAAS;AACT,QAAQ,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC;AACxE,QAAQ,IAAI,CAAC,MAAM,EAAE,CAAC;AACtB,QAAQ,IAAI,CAAC,YAAY,EAAE,CAAC;AAC5B,KAAK;AACL,IAAI,gBAAgB,GAAG;AACvB,QAAQ,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAC/C,QAAQ,IAAI,CAAC,gBAAgB,CAAC,SAAS,GAAG,EAAE,CAAC;AAC7C,QAAQ,IAAI,CAAC,UAAU,EAAE,CAAC;AAC1B,QAAQ,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACvC,KAAK;AACL,IAAI,aAAa,CAAC,UAAU,EAAE;AAC9B,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACpD,YAAY,MAAM,OAAO,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AACnE,YAAY,IAAI,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE;AAC3D,gBAAgB,OAAO,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,GAAG,GAAG,GAAG,OAAO,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC;AACrG,gBAAgB,OAAO,CAAC,YAAY,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;AACvD,aAAa;AACb,SAAS;AACT,KAAK;AACL,IAAI,UAAU,GAAG;AACjB,QAAQ,IAAI,CAAC,iBAAiB,GAAG,EAAE,CAAC;AACpC,QAAQ,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;AAClC,QAAQ,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,cAAc,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AAC/H,QAAQ,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,GAAG,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;AACnF,QAAQ,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AAC9C,KAAK;AACL,IAAI,aAAa,CAAC,EAAE,EAAE;AACtB,QAAQ,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;AAC5B,QAAQ,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;AAChD,QAAQ,IAAI,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,GAAG,EAAE;AAC/D,YAAY,MAAM,EAAE,GAAG,OAAO,CAAC,EAAE,CAAC,UAAU,EAAE,GAAG,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC;AAC3E,YAAY,IAAI,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,SAAS,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC;AAC1E,YAAY,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACtC,YAAY,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;AACpD,YAAY,IAAI,CAAC,GAAG,EAAE;AACtB,gBAAgB,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC;AAC5C,gBAAgB,GAAG,GAAG,QAAQ,CAAC,kBAAkB,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,EAAE,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AACrI,gBAAgB,IAAI,IAAI,CAAC,OAAO,EAAE;AAClC,oBAAoB,IAAI,CAAC,oBAAoB,EAAE,CAAC;AAChD,iBAAiB;AACjB,gBAAgB,MAAM,KAAK,GAAG,GAAG,CAAC,gBAAgB,CAAC,GAAG,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;AAC9E,gBAAgB,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AAC1C,gBAAgB,GAAG,CAAC,YAAY,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AAC7C,gBAAgB,GAAG,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;AAC3C,gBAAgB,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;AACxC,aAAa;AACb,YAAY,IAAI,CAAC,UAAU,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;AACrC,YAAY,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,GAAG,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;AACvF,YAAY,IAAI,IAAI,CAAC,aAAa,EAAE;AACpC,gBAAgB,MAAM,SAAS,GAAG,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;AACtG,gBAAgB,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,EAAE,QAAQ,CAAC,CAAC;AAC1F,aAAa;AACb,YAAY,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;AACxC,SAAS;AACT,KAAK;AACL,IAAI,aAAa,CAAC,GAAG,EAAE;AACvB,QAAQ,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;AAC/C,KAAK;AACL,IAAI,UAAU,CAAC,IAAI,EAAE;AACrB,QAAQ,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;AACrC,QAAQ,IAAI,IAAI,CAAC,oBAAoB,EAAE;AACvC,YAAY,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,EAAE;AACrD,gBAAgB,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,aAAa,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,YAAY,EAAE,EAAE;AACxG,oBAAoB,IAAI,CAAC,cAAc,CAAC,WAAW,GAAG,IAAI,CAAC,oBAAoB,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;AAC7H,iBAAiB;AACjB,aAAa;AACb,YAAY,IAAI,CAAC,oBAAoB,CAAC,gBAAgB,EAAE,CAAC;AACzD,SAAS;AACT,aAAa;AACb,YAAY,IAAI,CAAC,UAAU,EAAE,CAAC;AAC9B,YAAY,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,UAAU,CAAC,SAAS,EAAE,CAAC,CAAC;AACnG,YAAY,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;AAC5D,YAAY,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAC/C,YAAY,IAAI,IAAI,CAAC,OAAO,EAAE;AAC9B,gBAAgB,IAAI,CAAC,oBAAoB,EAAE,CAAC;AAC5C,aAAa;AACb,SAAS;AACT,KAAK;AACL,IAAI,aAAa,CAAC,GAAG,EAAE;AACvB,QAAQ,IAAI,MAAM,GAAG,EAAE,CAAC;AACxB,QAAQ,IAAI,GAAG,YAAY,OAAO,EAAE;AACpC,YAAY,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;AAClE,SAAS;AACT,aAAa;AACb,YAAY,MAAM,GAAG,GAAG,CAAC;AACzB,SAAS;AACT,QAAQ,OAAO,MAAM,CAAC;AACtB,KAAK;AACL;AACA;AACA;AACA,IAAI,MAAM,GAAG;AACb,QAAQ,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AACpD,QAAQ,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC;AACpD,QAAQ,IAAI,CAAC,WAAW,EAAE,CAAC;AAC3B,QAAQ,IAAI,CAAC,YAAY,EAAE,CAAC;AAC5B,QAAQ,IAAI,CAAC,SAAS,EAAE,CAAC;AACzB,QAAQ,IAAI,CAAC,OAAO,EAAE,CAAC;AACvB,QAAQ,IAAI,CAAC,UAAU,EAAE,CAAC;AAC1B,QAAQ,IAAI,CAAC,MAAM,EAAE,CAAC;AACtB,QAAQ,IAAI,CAAC,YAAY,EAAE,CAAC;AAC5B,QAAQ,IAAI,CAAC,gBAAgB,EAAE,CAAC;AAChC,QAAQ,IAAI,CAAC,QAAQ,GAAG,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE;AACnD,YAAY,QAAQ,EAAE,GAAG,GAAG,UAAU,CAAC,QAAQ;AAC/C,SAAS,CAAC,CAAC;AACX,QAAQ,IAAI,CAAC,cAAc,EAAE,CAAC;AAC9B,QAAQ,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;AACxD,KAAK;AACL;AACA;AACA;AACA,IAAI,OAAO,GAAG;AACd,QAAQ,IAAI,IAAI,CAAC,OAAO,EAAE;AAC1B,YAAY,IAAI,CAAC,aAAa,EAAE,CAAC;AACjC,SAAS;AACT,QAAQ,IAAI,CAAC,YAAY,EAAE,CAAC;AAC5B,QAAQ,MAAM,OAAO,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC,OAAO,EAAE,OAAO;AACrE,YAAY,cAAc,EAAE,OAAO,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;AAChH,QAAQ,WAAW,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC;AAC7C,QAAQ,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;AAC7C,QAAQ,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;AACjD,QAAQ,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;AACrF,QAAQ,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,EAAE,CAAC;AACpC,QAAQ,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;AACrC,QAAQ,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;AAClC,QAAQ,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;AAC/B,QAAQ,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;AAC9B,QAAQ,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;AAClC,QAAQ,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;AACtC,QAAQ,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;AACpC,QAAQ,KAAK,CAAC,OAAO,EAAE,CAAC;AACxB,KAAK;AACL;AACA;AACA;AACA,IAAI,IAAI,GAAG;AACX,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAChE,QAAQ,IAAI,GAAG,KAAK,SAAS,IAAI,IAAI,CAAC,aAAa,EAAE,EAAE;AACvD,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC;AAC9B,QAAQ,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;AAChD,QAAQ,IAAI,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,cAAc,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC;AAC5E,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC;AAClC,QAAQ,IAAI,CAAC,IAAI,EAAE;AACnB,YAAY,IAAI,CAAC,UAAU,EAAE,CAAC;AAC9B,YAAY,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAC/C,YAAY,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC;AAC9B,SAAS;AACT,aAAa;AACb,YAAY,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC;AACtC,SAAS;AACT,QAAQ,MAAM,SAAS,GAAG,cAAc,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;AACrF,QAAQ,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACjD,QAAQ,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AAC5C,QAAQ,IAAI,CAAC,WAAW,EAAE,CAAC;AAC3B,QAAQ,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,cAAc,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC;AAC5E,QAAQ,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;AAChD,QAAQ,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;AAC7C,QAAQ,IAAI,EAAE,IAAI,CAAC,YAAY,IAAI,EAAE,CAAC,aAAa,CAAC,GAAG,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,EAAE;AAC5H,YAAY,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;AACrD,SAAS;AACT,QAAQ,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,GAAG,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;AACnF,QAAQ,IAAI,IAAI,CAAC,mBAAmB,EAAE;AACtC,YAAY,IAAI,CAAC,aAAa,CAAC,EAAE,WAAW,EAAE,kBAAkB,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;AACrG,SAAS;AACT,QAAQ,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,IAAI,GAAG,KAAK,GAAG,QAAQ,CAAC,CAAC;AAC3H,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,IAAI,UAAU,CAAC,IAAI,EAAE;AACrB,QAAQ,IAAI,IAAI,CAAC,oBAAoB,EAAE;AACvC,YAAY,IAAI,CAAC,oBAAoB,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AACvD,SAAS;AACT,aAAa,IAAI,IAAI,CAAC,YAAY,EAAE;AACpC,YAAY,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC,CAAC;AACjE,SAAS;AACT,aAAa;AACb,YAAY,IAAI,iBAAiB,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE;AAClD,gBAAgB,IAAI,CAAC,YAAY,EAAE,CAAC;AACpC,aAAa;AACb,iBAAiB;AACjB,gBAAgB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC,CAAC;AACnE,aAAa;AACb,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,IAAI,YAAY,CAAC,IAAI,EAAE;AACvB,QAAQ,IAAI,iBAAiB,CAAC,IAAI,CAAC,EAAE;AACrC,YAAY,IAAI,CAAC,YAAY,EAAE,CAAC;AAChC,SAAS;AACT,aAAa;AACb,YAAY,MAAM,EAAE,GAAG,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC;AACxD,YAAY,IAAI,CAAC,iBAAiB,CAAC,EAAE,CAAC,EAAE;AACxC,gBAAgB,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;AACtC,aAAa;AACb,SAAS;AACT,KAAK;AACL,IAAI,qBAAqB,CAAC,GAAG,EAAE;AAC/B,QAAQ,IAAI,EAAE,CAAC;AACf,QAAQ,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,YAAY,WAAW;AACjE,YAAY,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC;AAC7C,QAAQ,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,EAAE;AACrC,YAAY,IAAI,OAAO,UAAU,CAAC,CAAC,CAAC,KAAK,QAAQ,IAAI,OAAO,UAAU,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE;AACxF,gBAAgB,IAAI,GAAG,YAAY,OAAO,EAAE;AAC5C,oBAAoB,MAAM,GAAG,GAAG,GAAG,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,QAAQ,EAAE,CAAC;AACxE,oBAAoB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACvE,wBAAwB,IAAI,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,QAAQ,EAAE,KAAK,GAAG,EAAE;AACvH,4BAA4B,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AAC/E,4BAA4B,MAAM;AAClC,yBAAyB;AACzB,qBAAqB;AACrB,iBAAiB;AACjB,qBAAqB;AACrB,oBAAoB,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,GAAG,GAAG,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,KAAK;AAChH,wBAAwB,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,QAAQ,EAAE,EAAE;AACtE,4BAA4B,EAAE,GAAG,IAAI,CAAC;AACtC,4BAA4B,OAAO,IAAI,CAAC;AACxC,yBAAyB;AACzB,6BAA6B;AAC7B,4BAA4B,OAAO,KAAK,CAAC;AACzC,yBAAyB;AACzB,qBAAqB,CAAC,CAAC;AACvB,iBAAiB;AACjB,aAAa;AACb,iBAAiB;AACjB,gBAAgB,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;AACzD,gBAAgB,MAAM,SAAS,GAAG,cAAc,CAAC,UAAU,EAAE,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;AACzF,gBAAgB,IAAI,UAAU,EAAE;AAChC,oBAAoB,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,aAAa;AACjE,0BAA0B,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;AAC5D,oBAAoB,IAAI,CAAC,IAAI,CAAC,oBAAoB,IAAI,iBAAiB,CAAC,EAAE,CAAC,EAAE;AAC7E,wBAAwB,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,GAAG,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;AAC/F,wBAAwB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC/D,4BAA4B,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,EAAE;AAClF,gCAAgC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;AAC7D,gCAAgC,EAAE,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AACvE,6BAA6B;AAC7B,yBAAyB;AACzB,qBAAqB;AACrB,iBAAiB;AACjB,aAAa;AACb,SAAS;AACT,QAAQ,OAAO,EAAE,CAAC;AAClB,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,mBAAmB,CAAC,IAAI,EAAE;AAC9B,QAAQ,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE;AACtC,YAAY,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAClD,gBAAgB,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE;AAC1E,oBAAoB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;AACtE,iBAAiB;AACjB,aAAa;AACb,SAAS;AACT,KAAK;AACL,IAAI,WAAW,GAAG;AAClB,QAAQ,MAAM,QAAQ,GAAG,EAAE,CAAC;AAC5B,QAAQ,IAAI,IAAI,CAAC,YAAY,EAAE;AAC/B,YAAY,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;AAClE,gBAAgB,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;AAC3E,aAAa;AACb,SAAS;AACT,QAAQ,OAAO,QAAQ,CAAC;AACxB,KAAK;AACL,IAAI,gBAAgB,GAAG;AACvB,QAAQ,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;AAC7B,QAAQ,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,sBAAsB,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;AACpF,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACtD,YAAY,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;AACxF,YAAY,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE;AACzF,gBAAgB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;AAC9E,aAAa;AACb,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA,IAAI,gBAAgB,GAAG;AACvB,QAAQ,IAAI,UAAU,CAAC;AACvB,QAAQ,IAAI,WAAW,GAAG,KAAK,CAAC;AAChC,QAAQ,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;AAC7B,QAAQ,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,YAAY,WAAW;AACjE,YAAY,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC;AAC7C,QAAQ,IAAI,IAAI,CAAC,oBAAoB,IAAI,CAAC,WAAW,EAAE;AACvD,YAAY,UAAU,GAAG,IAAI,CAAC,oBAAoB,CAAC,gBAAgB,EAAE,CAAC;AACtE,YAAY,WAAW,GAAG,IAAI,CAAC;AAC/B,SAAS;AACT,aAAa,IAAI,IAAI,CAAC,YAAY,IAAI,CAAC,WAAW,EAAE;AACpD,YAAY,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,sBAAsB,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;AACxF,YAAY,MAAM,gBAAgB,GAAG,EAAE,CAAC;AACxC,YAAY,MAAM,gBAAgB,GAAG,EAAE,CAAC;AACxC,YAAY,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;AACjC,YAAY,MAAM,UAAU,GAAG,EAAE,CAAC;AAClC,YAAY,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC1D,gBAAgB,IAAI,OAAO,UAAU,CAAC,CAAC,CAAC,KAAK,QAAQ,IAAI,OAAO,UAAU,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE;AAC5F,oBAAoB,gBAAgB,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;AACrG,iBAAiB;AACjB,qBAAqB;AACrB,oBAAoB,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;AAChG,oBAAoB,MAAM,SAAS,GAAG,cAAc,CAAC,QAAQ,EAAE,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;AAC3F,oBAAoB,IAAI,IAAI,CAAC,YAAY,EAAE;AAC3C,wBAAwB,UAAU,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;AAC1F,qBAAqB;AACrB,yBAAyB;AACzB,wBAAwB,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACxD,qBAAqB;AACrB,oBAAoB,IAAI,SAAS,EAAE;AACnC,wBAAwB,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;AAC1F,wBAAwB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;AACvF,qBAAqB;AACrB,yBAAyB;AACzB,wBAAwB,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AACzD,wBAAwB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AACxD,qBAAqB;AACrB,iBAAiB;AACjB,aAAa;AACb,YAAY,IAAI,CAAC,OAAO,UAAU,CAAC,CAAC,CAAC,KAAK,QAAQ;AAClD,mBAAmB,OAAO,UAAU,CAAC,CAAC,CAAC,KAAK,QAAQ;AACpD,mBAAmB,CAAC,WAAW,EAAE;AACjC,gBAAgB,UAAU,GAAG,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAC;AAC9F,gBAAgB,WAAW,GAAG,IAAI,CAAC;AACnC,aAAa;AACb,YAAY,IAAI,IAAI,CAAC,YAAY,IAAI,CAAC,WAAW,EAAE;AACnD,gBAAgB,UAAU,GAAG,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAC;AAC9F,gBAAgB,WAAW,GAAG,IAAI,CAAC;AACnC,aAAa;AACb,iBAAiB,IAAI,CAAC,WAAW,EAAE;AACnC,gBAAgB,UAAU,GAAG,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAC;AACpG,gBAAgB,WAAW,GAAG,IAAI,CAAC;AACnC,aAAa;AACb,SAAS;AACT,aAAa,IAAI,CAAC,WAAW,EAAE;AAC/B,YAAY,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,sBAAsB,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1F,YAAY,MAAM,SAAS,GAAG,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;AACtG,YAAY,IAAI,CAAC,OAAO,UAAU,CAAC,CAAC,CAAC,KAAK,QAAQ;AAClD,mBAAmB,OAAO,UAAU,CAAC,CAAC,CAAC,KAAK,QAAQ;AACpD,mBAAmB,CAAC,WAAW,EAAE;AACjC,gBAAgB,UAAU,GAAG,CAAC,CAAC,iBAAiB,CAAC,SAAS,CAAC,IAAI;AAC/D,oBAAoB,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU;AACrD,oBAAoB,IAAI,EAAE,SAAS,CAAC,SAAS,CAAC,IAAI,EAAE;AACpD,iBAAiB,GAAG,SAAS,CAAC;AAC9B,gBAAgB,WAAW,GAAG,IAAI,CAAC;AACnC,aAAa;AACb,iBAAiB,IAAI,CAAC,WAAW,EAAE;AACnC,gBAAgB,IAAI,iBAAiB,CAAC,SAAS,CAAC,IAAI,iBAAiB,CAAC,SAAS,CAAC,EAAE;AAClF,oBAAoB,UAAU,GAAG,SAAS,CAAC;AAC3C,oBAAoB,WAAW,GAAG,IAAI,CAAC;AACvC,iBAAiB;AACjB,qBAAqB;AACrB,oBAAoB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;AACnF,oBAAoB,UAAU,GAAG;AACjC,wBAAwB,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS;AACzF,wBAAwB,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC;AACzD,qBAAqB,CAAC;AACtB,oBAAoB,WAAW,GAAG,IAAI,CAAC;AACvC,iBAAiB;AACjB,aAAa;AACb,SAAS;AACT,QAAQ,OAAO,UAAU,CAAC;AAC1B,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,IAAI,QAAQ,CAAC,IAAI,EAAE;AACnB,QAAQ,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AACtC,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,IAAI,UAAU,CAAC,IAAI,EAAE;AACrB,QAAQ,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AACtC,QAAQ,IAAI,IAAI,CAAC,oBAAoB,EAAE;AACvC,YAAY,IAAI,CAAC,oBAAoB,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AACvD,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,IAAI,WAAW,CAAC,IAAI,EAAE;AACtB,QAAQ,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AACvC,QAAQ,IAAI,IAAI,CAAC,oBAAoB,EAAE;AACvC,YAAY,IAAI,CAAC,oBAAoB,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AACxD,SAAS;AACT,KAAK;AACL;AACA,IAAI,YAAY,CAAC,IAAI,EAAE,QAAQ,EAAE;AACjC,QAAQ,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AAClD,QAAQ,MAAM,SAAS,GAAG,cAAc,CAAC,UAAU,EAAE,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;AACjF,QAAQ,IAAI,UAAU,EAAE;AACxB,YAAY,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,aAAa,GAAG,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;AACpG,YAAY,IAAI,QAAQ,EAAE;AAC1B,gBAAgB,IAAI,EAAE,EAAE;AACxB,oBAAoB,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;AAC5D,iBAAiB;AACjB,gBAAgB,OAAO,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AACvD,aAAa;AACb,iBAAiB,IAAI,CAAC,QAAQ,EAAE;AAChC,gBAAgB,IAAI,EAAE,EAAE;AACxB,oBAAoB,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;AACzD,iBAAiB;AACjB,gBAAgB,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC;AACxD,aAAa;AACb,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,IAAI,QAAQ,CAAC,IAAI,EAAE;AACnB,QAAQ,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;AAC3C,QAAQ,IAAI,IAAI,CAAC,oBAAoB,EAAE;AACvC,YAAY,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AACrD,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,IAAI,QAAQ,CAAC,IAAI,EAAE;AACnB,QAAQ,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;AAC9C,QAAQ,IAAI,IAAI,CAAC,oBAAoB,EAAE;AACvC,YAAY,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AACrD,SAAS;AACT,KAAK;AACL,IAAI,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE;AACvC,QAAQ,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;AACjD,QAAQ,MAAM,SAAS,GAAG,cAAc,CAAC,UAAU,EAAE,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;AACjF,QAAQ,IAAI,UAAU,EAAE;AACxB,YAAY,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,aAAa,GAAG,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;AACpG,YAAY,IAAI,EAAE,EAAE;AACpB,gBAAgB,EAAE,CAAC,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC;AAC3C,aAAa;AACb,YAAY,IAAI,MAAM,EAAE;AACxB,gBAAgB,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC;AAC1D,aAAa;AACb,iBAAiB;AACjB,gBAAgB,OAAO,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;AACzD,aAAa;AACb,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,EAAE,KAAK,EAAE;AAC7C,QAAQ,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,YAAY,WAAW;AACjE,cAAc,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC;AAC/C,QAAQ,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;AAChE,KAAK;AACL,IAAI,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE;AACvD,QAAQ,IAAI,IAAI,YAAY,KAAK,EAAE;AACnC,YAAY,IAAI,IAAI,CAAC,oBAAoB,EAAE;AAC3C,gBAAgB,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;AACnF,aAAa;AACb,iBAAiB;AACjB,gBAAgB,MAAM,EAAE,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;AACnE,gBAAgB,IAAI,KAAK,CAAC;AAC1B,gBAAgB,IAAI,EAAE,EAAE;AACxB,oBAAoB,MAAM,SAAS,GAAG,cAAc,CAAC,EAAE,EAAE,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;AACrF,oBAAoB,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACzD,oBAAoB,IAAI,CAAC,KAAK,EAAE;AAChC,wBAAwB,KAAK,GAAG,EAAE,CAAC;AACnC,qBAAqB;AACrB,oBAAoB,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAC/C,iBAAiB;AACjB;AACA,gBAAgB,IAAI,EAAE,YAAY,KAAK,EAAE;AACzC,oBAAoB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC1D,wBAAwB,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;AAC9G,wBAAwB,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;AAC3D;AACA;AACA,wBAAwB,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB;AAC9D,8BAA8B,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC/D,8BAA8B,IAAI,CAAC;AACnC;AACA;AACA,wBAAwB,IAAI,IAAI,CAAC,gBAAgB,IAAI,QAAQ,EAAE;AAC/D,4BAA4B,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;AAC5G,yBAAyB;AACzB,6BAA6B;AAC7B,4BAA4B,IAAI,CAAC,QAAQ,EAAE,CAAC;AAC5C,yBAAyB;AACzB,qBAAqB;AACrB,oBAAoB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,GAAG,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;AAC/F,iBAAiB;AACjB,qBAAqB;AACrB;AACA,oBAAoB,IAAI,EAAE,EAAE;AAC5B,wBAAwB,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC;AACtD,wBAAwB,IAAI,CAAC,mBAAmB,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;AAC3D,qBAAqB;AACrB,iBAAiB;AACjB,aAAa;AACb,SAAS;AACT,KAAK;AACL,IAAI,cAAc,CAAC,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE;AACnD,QAAQ,MAAM,YAAY,GAAG,EAAE,iBAAiB,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC;AACtE,YAAY,KAAK,GAAG,aAAa,CAAC,MAAM,IAAI,iBAAiB,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAClG,QAAQ,IAAI,YAAY,EAAE;AAC1B,YAAY,aAAa,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC;AACrD,SAAS;AACT,aAAa;AACb,YAAY,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACzC,SAAS;AACT,QAAQ,OAAO,aAAa,CAAC;AAC7B,KAAK;AACL,IAAI,mBAAmB,CAAC,cAAc,EAAE,SAAS,EAAE;AACnD,QAAQ,MAAM,YAAY,GAAG,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AAC5D,QAAQ,MAAM,aAAa,GAAG,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAChE,QAAQ,MAAM,mBAAmB,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,SAAS,GAAG,YAAY,GAAG,KAAK,CAAC,CAAC;AACjG,QAAQ,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,cAAc,GAAG,YAAY,GAAG,KAAK,CAAC,CAAC;AAC3F,QAAQ,MAAM,QAAQ,GAAG,mBAAmB;AAC5C,cAAc,mBAAmB;AACjC,cAAc,QAAQ;AACtB,kBAAkB,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC;AACzC,kBAAkB,IAAI,CAAC;AACvB,QAAQ,MAAM,QAAQ,GAAG,mBAAmB,GAAG,aAAa,GAAG,CAAC,cAAc,CAAC,CAAC;AAChF,QAAQ,MAAM,kBAAkB,GAAG,QAAQ,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC;AACxG;AACA;AACA,QAAQ,IAAI,kBAAkB,EAAE;AAChC,YAAY,MAAM,sBAAsB,GAAG,QAAQ,CAAC,sBAAsB,CAAC,IAAI,CAAC,aAAa,EAAE,QAAQ,EAAE,IAAI,CAAC,cAAc,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AAChJ,YAAY,IAAI,CAAC,aAAa,CAAC,sBAAsB,CAAC,CAAC;AACvD,YAAY,QAAQ,CAAC,YAAY,CAAC,sBAAsB,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;AACvE,YAAY,MAAM,CAAC,QAAQ,CAAC,CAAC;AAC7B,SAAS;AACT;AACA,QAAQ,IAAI,mBAAmB,IAAI,SAAS,EAAE;AAC9C,YAAY,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACvD,gBAAgB,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;AACrE,gBAAgB,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;AAC/F,aAAa;AACb,SAAS;AACT,KAAK;AACL,IAAI,cAAc,CAAC,WAAW,EAAE,QAAQ,EAAE,SAAS,EAAE;AACrD,QAAQ,MAAM,KAAK,GAAG,SAAS,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;AACrD,QAAQ,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;AAClE,QAAQ,MAAM,SAAS,GAAG,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;AAC/C,QAAQ,IAAI,SAAS,IAAI,SAAS,CAAC,QAAQ,IAAI,SAAS,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;AAC7E,YAAY,IAAI,CAAC,WAAW,CAAC,SAAS,GAAG,KAAK,GAAG,CAAC,GAAG,QAAQ,EAAE,SAAS,CAAC,CAAC;AAC1E,SAAS;AACT,KAAK;AACL,IAAI,WAAW,CAAC,UAAU,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE;AACzD,QAAQ,IAAI,MAAM,GAAG,IAAI,CAAC,qBAAqB,CAAC,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;AACrE,YAAY,IAAI,CAAC,qBAAqB,CAAC,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;AACrE,QAAQ,MAAM,EAAE,GAAG,QAAQ,CAAC,sBAAsB,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,UAAU,CAAC,EAAE,IAAI,CAAC,cAAc,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AAC5H,QAAQ,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;AAC/B,QAAQ,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,OAAO,EAAE;AAC3C,YAAY,IAAI,CAAC,oBAAoB,EAAE,CAAC;AACxC,SAAS;AACT,QAAQ,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC,IAAI,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE;AAC1F,YAAY,MAAM,SAAS,GAAG,IAAI,CAAC,qBAAqB,CAAC,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;AAC/E,YAAY,IAAI,SAAS,EAAE;AAC3B,gBAAgB,MAAM,GAAG,SAAS,CAAC,kBAAkB,CAAC;AACtD,aAAa;AACb,SAAS;AACT,QAAQ,SAAS,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;AAC9C,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,UAAU,CAAC,IAAI,EAAE;AACrB,QAAQ,MAAM,cAAc,GAAG,IAAI,CAAC,UAAU,YAAY,WAAW;AACrE,cAAc,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC;AAC/C,QAAQ,IAAI,IAAI,CAAC,oBAAoB,EAAE;AACvC,YAAY,IAAI,CAAC,oBAAoB,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AACvD,SAAS;AACT,aAAa;AACb,YAAY,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;AAC1D,SAAS;AACT,KAAK;AACL,IAAI,kBAAkB,CAAC,GAAG,EAAE,cAAc,EAAE;AAC5C,QAAQ,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;AACzC,QAAQ,MAAM,MAAM,GAAG,GAAG,YAAY,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;AAC9E,QAAQ,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,cAAc,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;AAC7E,QAAQ,IAAI,UAAU,EAAE;AACxB,YAAY,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;AACjE,YAAY,MAAM,KAAK,GAAG,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAClD,YAAY,MAAM,EAAE,GAAG,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC;AACvD,YAAY,IAAI,OAAO,CAAC;AACxB,YAAY,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC;AACxC,YAAY,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC;AAChE,gBAAgB,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,QAAQ;AAC7C,gBAAgB,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;AACzD,gBAAgB,IAAI,EAAE,IAAI,EAAE,CAAC,sBAAsB,CAAC,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,aAAa,CAAC;AAChG,qBAAqB,iBAAiB,CAAC,EAAE,CAAC,kBAAkB,CAAC,KAAK,EAAE,CAAC,kBAAkB;AACvF,wBAAwB,EAAE,CAAC,kBAAkB,CAAC,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE;AAC9F,oBAAoB,OAAO,GAAG,EAAE,CAAC,sBAAsB,CAAC;AACxD,iBAAiB;AACjB,aAAa;AACb,YAAY,IAAI,EAAE,EAAE;AACpB,gBAAgB,MAAM,CAAC,EAAE,CAAC,CAAC;AAC3B,aAAa;AACb,YAAY,IAAI,OAAO,EAAE;AACzB,gBAAgB,MAAM,CAAC,OAAO,CAAC,CAAC;AAChC,aAAa;AACb,YAAY,MAAM,SAAS,GAAG,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC;AAC1D,kBAAkB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,KAAK,KAAK,KAAK,KAAK,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC;AAC1H,YAAY,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AACrD,YAAY,UAAU,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;AAC1C,YAAY,IAAI,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAC;AACnD,YAAY,IAAI,SAAS;AACzB,mBAAmB,SAAS,CAAC,MAAM;AACnC,mBAAmB,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACrE,mBAAmB,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,IAAI,CAAC,EAAE;AACpE,gBAAgB,MAAM,QAAQ,GAAG,IAAI,CAAC,qBAAqB,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;AAC9E,gBAAgB,IAAI,QAAQ,EAAE;AAC9B,oBAAoB,MAAM,EAAE,GAAG,QAAQ,CAAC,sBAAsB,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,cAAc,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AAC9I,oBAAoB,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;AAC3C,oBAAoB,QAAQ,CAAC,aAAa,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;AACzE,oBAAoB,QAAQ,CAAC,aAAa,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;AACjE,iBAAiB;AACjB,aAAa;AACb,YAAY,IAAI,UAAU,CAAC,MAAM,IAAI,CAAC,EAAE;AACxC,gBAAgB,IAAI,CAAC,IAAI,EAAE,CAAC;AAC5B,aAAa;AACb,YAAY,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,GAAG,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC;AACrH,SAAS;AACT,KAAK;AACL;AACA,IAAI,kBAAkB,CAAC,EAAE,EAAE;AAC3B,QAAQ,MAAM,IAAI,GAAG,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,QAAQ,EAAE,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC;AACtF,QAAQ,IAAI,IAAI,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;AACnE,YAAY,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,QAAQ,EAAE,CAAC,WAAW,EAAE,KAAK,IAAI,CAAC,EAAE;AACvF,gBAAgB,IAAI,CAAC,IAAI,EAAE,CAAC;AAC5B,aAAa;AACb,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,IAAI,mBAAmB,CAAC,IAAI,EAAE;AAC9B,QAAQ,IAAI,IAAI,CAAC,MAAM,EAAE;AACzB,YAAY,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAClD,gBAAgB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;AAClE,aAAa;AACb,SAAS;AACT,KAAK;AACL,IAAI,UAAU,CAAC,UAAU,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE;AACjD,QAAQ,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC,IAAI,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE;AACvG,YAAY,OAAO,MAAM,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;AAC1C,SAAS;AACT,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACjE,YAAY,IAAI,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AAC/E,mBAAmB,OAAO,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE;AACxG,gBAAgB,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;AAC1I,gBAAgB,IAAI,MAAM,IAAI,IAAI,EAAE;AACpC,oBAAoB,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;AACxC,wBAAwB,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC;AAC/C,qBAAqB;AACrB,oBAAoB,OAAO,MAAM,CAAC;AAClC,iBAAiB;AACjB,aAAa;AACb,SAAS;AACT,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK;AACL;AACA,IAAI,aAAa,GAAG;AACpB,QAAQ,OAAO,UAAU,CAAC;AAC1B,KAAK;AACL,IAAI,eAAe,GAAG;AACtB,QAAQ,MAAM,OAAO,GAAG,EAAE,CAAC;AAC3B,QAAQ,IAAI,IAAI,CAAC,oBAAoB,EAAE;AACvC,YAAY,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,gBAAgB,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAC,CAAC;AAC7F,SAAS;AACT,QAAQ,OAAO,OAAO,CAAC;AACvB,KAAK;AACL,IAAI,YAAY,CAAC,CAAC,EAAE;AACpB,QAAQ,MAAM,IAAI,GAAG,EAAE,aAAa,EAAE,CAAC,EAAE,eAAe,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;AACpI,QAAQ,MAAM,gBAAgB,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;AACxD,QAAQ,IAAI,gBAAgB,GAAG,IAAI,CAAC,iBAAiB,EAAE;AACvD,YAAY,IAAI,CAAC,eAAe,GAAG,QAAQ,CAAC;AAC5C,YAAY,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;AAC5G,YAAY,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;AACzC,SAAS;AACT,aAAa,IAAI,IAAI,CAAC,iBAAiB,GAAG,gBAAgB,EAAE;AAC5D,YAAY,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;AACzC,YAAY,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;AACpD,YAAY,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;AACzC,SAAS;AACT,QAAQ,IAAI,CAAC,iBAAiB,GAAG,gBAAgB,CAAC;AAClD,KAAK;AACL;AACA;AACA;AACA,IAAI,cAAc,GAAG;AACrB,QAAQ,OAAO,IAAI,CAAC,YAAY,CAAC,CAAC,UAAU,EAAE,WAAW,EAAE,gBAAgB;AAC3E,YAAY,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,aAAa;AAC1D,YAAY,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,YAAY,CAAC,CAAC,CAAC;AAC3G,KAAK;AACL,CAAC,CAAC;AACF,UAAU,CAAC;AACX,IAAI,QAAQ,CAAC,EAAE,CAAC;AAChB,CAAC,EAAE,QAAQ,CAAC,SAAS,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC;AAC3C,UAAU,CAAC;AACX,IAAI,QAAQ,CAAC,KAAK,CAAC;AACnB,CAAC,EAAE,QAAQ,CAAC,SAAS,EAAE,sBAAsB,EAAE,KAAK,CAAC,CAAC,CAAC;AACvD,UAAU,CAAC;AACX,IAAI,QAAQ,CAAC,EAAE,CAAC;AAChB,CAAC,EAAE,QAAQ,CAAC,SAAS,EAAE,gBAAgB,EAAE,KAAK,CAAC,CAAC,CAAC;AACjD,UAAU,CAAC;AACX,IAAI,QAAQ,CAAC,IAAI,CAAC;AAClB,CAAC,EAAE,QAAQ,CAAC,SAAS,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC;AACzC,UAAU,CAAC;AACX,IAAI,QAAQ,CAAC,EAAE,CAAC;AAChB,CAAC,EAAE,QAAQ,CAAC,SAAS,EAAE,YAAY,EAAE,KAAK,CAAC,CAAC,CAAC;AAC7C,UAAU,CAAC;AACX,IAAI,QAAQ,EAAE;AACd,CAAC,EAAE,QAAQ,CAAC,SAAS,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;AACxC,UAAU,CAAC;AACX,IAAI,OAAO,CAAC,QAAQ,CAAC,mBAAmB,EAAE,aAAa,CAAC;AACxD,CAAC,EAAE,QAAQ,CAAC,SAAS,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC;AACzC,UAAU,CAAC;AACX,IAAI,QAAQ,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;AACpE,CAAC,EAAE,QAAQ,CAAC,SAAS,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC;AAC5C,UAAU,CAAC;AACX,IAAI,QAAQ,CAAC,MAAM,CAAC;AACpB,CAAC,EAAE,QAAQ,CAAC,SAAS,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC;AAC5C,UAAU,CAAC;AACX,IAAI,QAAQ,CAAC,KAAK,CAAC;AACnB,CAAC,EAAE,QAAQ,CAAC,SAAS,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC;AAC3C,UAAU,CAAC;AACX,IAAI,QAAQ,CAAC,KAAK,CAAC;AACnB,CAAC,EAAE,QAAQ,CAAC,SAAS,EAAE,cAAc,EAAE,KAAK,CAAC,CAAC,CAAC;AAC/C,UAAU,CAAC;AACX,IAAI,QAAQ,CAAC,MAAM,CAAC;AACpB,CAAC,EAAE,QAAQ,CAAC,SAAS,EAAE,kBAAkB,EAAE,KAAK,CAAC,CAAC,CAAC;AACnD,UAAU,CAAC;AACX,IAAI,QAAQ,CAAC,EAAE,CAAC;AAChB,CAAC,EAAE,QAAQ,CAAC,SAAS,EAAE,aAAa,EAAE,KAAK,CAAC,CAAC,CAAC;AAC9C,UAAU,CAAC;AACX,IAAI,QAAQ,CAAC,KAAK,CAAC;AACnB,CAAC,EAAE,QAAQ,CAAC,SAAS,EAAE,YAAY,EAAE,KAAK,CAAC,CAAC,CAAC;AAC7C,UAAU,CAAC;AACX,IAAI,QAAQ,CAAC,IAAI,CAAC;AAClB,CAAC,EAAE,QAAQ,CAAC,SAAS,EAAE,qBAAqB,EAAE,KAAK,CAAC,CAAC,CAAC;AACtD,UAAU,CAAC;AACX,IAAI,QAAQ,CAAC,EAAE,CAAC;AAChB,CAAC,EAAE,QAAQ,CAAC,SAAS,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC;AACzC,UAAU,CAAC;AACX,IAAI,QAAQ,CAAC,EAAE,CAAC;AAChB,CAAC,EAAE,QAAQ,CAAC,SAAS,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;AACxC,UAAU,CAAC;AACX,IAAI,QAAQ,CAAC,IAAI,CAAC;AAClB,CAAC,EAAE,QAAQ,CAAC,SAAS,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC;AAC3C,UAAU,CAAC;AACX,IAAI,QAAQ,CAAC,IAAI,CAAC;AAClB,CAAC,EAAE,QAAQ,CAAC,SAAS,EAAE,gBAAgB,EAAE,KAAK,CAAC,CAAC,CAAC;AACjD,UAAU,CAAC;AACX,IAAI,QAAQ,CAAC,IAAI,CAAC;AAClB,CAAC,EAAE,QAAQ,CAAC,SAAS,EAAE,eAAe,EAAE,KAAK,CAAC,CAAC,CAAC;AAChD,UAAU,CAAC;AACX,IAAI,KAAK,EAAE;AACX,CAAC,EAAE,QAAQ,CAAC,SAAS,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC;AACzC,UAAU,CAAC;AACX,IAAI,KAAK,EAAE;AACX,CAAC,EAAE,QAAQ,CAAC,SAAS,EAAE,aAAa,EAAE,KAAK,CAAC,CAAC,CAAC;AAC9C,UAAU,CAAC;AACX,IAAI,KAAK,EAAE;AACX,CAAC,EAAE,QAAQ,CAAC,SAAS,EAAE,gBAAgB,EAAE,KAAK,CAAC,CAAC,CAAC;AACjD,UAAU,CAAC;AACX,IAAI,KAAK,EAAE;AACX,CAAC,EAAE,QAAQ,CAAC,SAAS,EAAE,eAAe,EAAE,KAAK,CAAC,CAAC,CAAC;AAChD,UAAU,CAAC;AACX,IAAI,KAAK,EAAE;AACX,CAAC,EAAE,QAAQ,CAAC,SAAS,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC;AACzC,QAAQ,GAAG,UAAU,CAAC;AACtB,IAAI,qBAAqB;AACzB,CAAC,EAAE,QAAQ,CAAC,CAAC;;ACrgEb,MAAM,gBAAgB,GAAG,GAAG,CAAC;AAC7B,MAAM,kBAAkB,GAAG,CAAC,CAAC;AAC7B,AAAO,MAAM,cAAc,CAAC;AAC5B,IAAI,WAAW,CAAC,QAAQ,EAAE;AAC1B,QAAQ,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC;AACnC,QAAQ,IAAI,CAAC,gBAAgB,GAAG,QAAQ,CAAC;AACzC,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,IAAI,YAAY,GAAG;AACnB,QAAQ,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,IAAI,OAAO,IAAI,CAAC,gBAAgB,CAAC,WAAW,KAAK,QAAQ,CAAC;AAC9H,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,IAAI,qBAAqB,GAAG;AAC5B,QAAQ,OAAO,IAAI,CAAC,gBAAgB,CAAC,KAAK,IAAI,OAAO,IAAI,CAAC,gBAAgB,CAAC,QAAQ,KAAK,UAAU,CAAC;AACnG,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,IAAI,gBAAgB,GAAG;AACvB,QAAQ,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;AACpC,QAAQ,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC;AAC1D,QAAQ,MAAM,OAAO,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC9C,QAAQ,IAAI,CAAC,gBAAgB,CAAC,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,GAAG,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,gBAAgB,CAAC,aAAa,EAAE,OAAO,EAAE,IAAI,CAAC,gBAAgB,CAAC,cAAc,EAAE,IAAI,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;AAC7M,QAAQ,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,UAAU,CAAC,SAAS,EAAE,CAAC,CAAC;AACjI,QAAQ,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,CAAC;AAC1F,QAAQ,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,WAAW,CAAC,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;AAC5F,QAAQ,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,iBAAiB,CAAC,qBAAqB,EAAE,CAAC,MAAM,CAAC;AAC/G,QAAQ,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;AAClE,QAAQ,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC;AACxG,QAAQ,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;AAC9B,QAAQ,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;AACjD,QAAQ,MAAM,OAAO,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;AAC9D,QAAQ,MAAM,SAAS,GAAG,QAAQ,CAAC,sBAAsB,CAAC,IAAI,CAAC,gBAAgB,CAAC,aAAa,EAAE,OAAO,EAAE,IAAI,CAAC,gBAAgB,CAAC,cAAc,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;AACjL,QAAQ,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;AAC3D,QAAQ,IAAI,CAAC,gBAAgB,CAAC,YAAY,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;AAChG,QAAQ,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AACrE,QAAQ,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;AACzH,QAAQ,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AACxE,QAAQ,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;AAC/E,QAAQ,IAAI,CAAC,WAAW,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC,cAAc,KAAK,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC;AAC7H,QAAQ,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC;AAChD,QAAQ,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AAClE,QAAQ,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC;AAClC,QAAQ,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,WAAW,CAAC;AACpD,QAAQ,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;AAC1B,QAAQ,IAAI,CAAC,uBAAuB,EAAE,CAAC;AACvC,KAAK;AACL,IAAI,eAAe,CAAC,OAAO,EAAE;AAC7B,QAAQ,IAAI,CAAC,OAAO,EAAE;AACtB,YAAY,IAAI,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE;AAChD,gBAAgB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACzE,gBAAgB,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;AACxE,aAAa;AACb,iBAAiB;AACjB,gBAAgB,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,iBAAiB,EAAE,IAAI,CAAC,CAAC;AACxG,aAAa;AACb,SAAS;AACT,aAAa;AACb,YAAY,IAAI,IAAI,CAAC,gBAAgB,CAAC,QAAQ,KAAK,IAAI,EAAE;AACzD,gBAAgB,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;AAC3E,gBAAgB,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;AACpE,aAAa;AACb,iBAAiB;AACjB,gBAAgB,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;AACrG,aAAa;AACb,SAAS;AACT,KAAK;AACL,IAAI,iBAAiB,CAAC,gBAAgB,EAAE;AACxC,QAAQ,MAAM,MAAM,GAAG,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC;AAC5E,QAAQ,IAAI,SAAS,CAAC;AACtB,QAAQ,IAAI,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE;AAC5C,YAAY,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,WAAW,GAAG,IAAI,CAAC,cAAc,IAAI,kBAAkB,CAAC,CAAC;AACpG,SAAS;AACT,aAAa;AACb,YAAY,IAAI,OAAO,IAAI,CAAC,gBAAgB,CAAC,MAAM,KAAK,QAAQ,IAAI,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE;AACtH,gBAAgB,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,qBAAqB,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC,cAAc,IAAI,gBAAgB,CAAC,CAAC;AAChJ,aAAa;AACb,iBAAiB;AACjB,gBAAgB,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC,cAAc,IAAI,gBAAgB,CAAC,CAAC;AAC1F,aAAa;AACb,SAAS;AACT,QAAQ,IAAI,SAAS,GAAG,gBAAgB,EAAE;AAC1C,YAAY,SAAS,GAAG,gBAAgB,CAAC;AACzC,SAAS;AACT,QAAQ,OAAO,SAAS,CAAC;AACzB,KAAK;AACL,IAAI,uBAAuB,GAAG;AAC9B,QAAQ,IAAI,CAAC,SAAS,GAAG,EAAE,eAAe,EAAE,EAAE,EAAE,qBAAqB,EAAE,EAAE,EAAE,mBAAmB,EAAE,EAAE,EAAE,CAAC;AACrG,QAAQ,MAAM,IAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC;AACrD,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC9C,YAAY,IAAI,IAAI,CAAC,gBAAgB,CAAC,YAAY,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE;AACvG,gBAAgB,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACrD,aAAa;AACb,YAAY,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAC1G,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE;AAChE,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;AAC7D,aAAa;AACb,SAAS;AACT,QAAQ,IAAI,IAAI,CAAC,YAAY,EAAE,EAAE;AACjC,YAAY,MAAM,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,gBAAgB,CAAC,GAAG,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;AACpG,YAAY,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;AAC/D,gBAAgB,KAAK,CAAC,KAAK,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC;AACjG,aAAa;AACb,SAAS;AACT,KAAK;AACL,IAAI,iBAAiB,GAAG;AACxB,QAAQ,IAAI,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,MAAM,EAAE;AACpD,YAAY,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC;AAC9D,YAAY,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,qBAAqB,EAAE,CAAC,MAAM,CAAC;AAC7F,YAAY,IAAI,CAAC,WAAW,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC,cAAc,KAAK,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC;AACjI,YAAY,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,WAAW,CAAC;AACxD,YAAY,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AACtE,SAAS;AACT,KAAK;AACL,IAAI,iBAAiB,CAAC,cAAc,EAAE;AACtC,QAAQ,OAAO,IAAI,CAAC,gBAAgB,CAAC,QAAQ,IAAI,CAAC,CAAC,WAAW,GAAG,cAAc,KAAK,CAAC,IAAI,CAAC;AAC1F,aAAa,WAAW,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,SAAS,GAAG,cAAc,KAAK,CAAC,IAAI,CAAC;AACnH,aAAa,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,SAAS,GAAG,cAAc,CAAC,CAAC;AACvE,KAAK;AACL,IAAI,iBAAiB,GAAG;AACxB,QAAQ,IAAI,cAAc,CAAC;AAC3B,QAAQ,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC;AAC1D,QAAQ,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,cAAc,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,qBAAqB,EAAE,CAAC,MAAM,CAAC;AACnH,QAAQ,IAAI,CAAC,WAAW,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC,cAAc,KAAK,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC;AAC7H,QAAQ,IAAI,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE;AAC5C,YAAY,cAAc,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,qBAAqB,EAAE,CAAC,GAAG;AACxF,gBAAgB,QAAQ,CAAC,eAAe,CAAC,qBAAqB,EAAE,CAAC,GAAG,CAAC;AACrE,SAAS;AACT,aAAa;AACb,YAAY,cAAc,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,qBAAqB,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;AAClI,SAAS;AACT,QAAQ,IAAI,CAAC,cAAc,GAAG,iBAAiB,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC;AAC/F,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAC;AAC9D,QAAQ,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC;AAC/F,QAAQ,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,gBAAgB,CAAC;AAC5E,QAAQ,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,mBAAmB,CAAC,GAAG,MAAM,IAAI,IAAI,CAAC,WAAW;AACtF,YAAY,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;AACtF,QAAQ,IAAI,IAAI,CAAC,gBAAgB,KAAK,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;AAChF,YAAY,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;AACxE,YAAY,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;AAC9E,YAAY,IAAI,MAAM,GAAG,IAAI,CAAC,cAAc,EAAE;AAC9C,gBAAgB,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;AAC7G,gBAAgB,IAAI,QAAQ,IAAI,IAAI,CAAC,oBAAoB,GAAG,CAAC,CAAC,EAAE;AAChE,oBAAoB,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;AACtD,iBAAiB;AACjB,qBAAqB;AACrB,oBAAoB,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;AACxD,iBAAiB;AACjB,aAAa;AACb,iBAAiB;AACjB,gBAAgB,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC;AAC7G,gBAAgB,IAAI,QAAQ,IAAI,IAAI,CAAC,oBAAoB,GAAG,CAAC,CAAC,EAAE;AAChE,oBAAoB,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;AACvD,iBAAiB;AACjB,qBAAqB;AACrB,oBAAoB,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;AACzD,iBAAiB;AACjB,aAAa;AACb,SAAS;AACT,QAAQ,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC;AAChF,QAAQ,IAAI,OAAO,IAAI,CAAC,gBAAgB,CAAC,YAAY,KAAK,UAAU,EAAE;AACtE,YAAY,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE,CAAC;AACjD,SAAS;AACT,QAAQ,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC;AACrC,KAAK;AACL,IAAI,YAAY,CAAC,QAAQ,EAAE,eAAe,EAAE;AAC5C,QAAQ,IAAI,KAAK,GAAG,eAAe,IAAI,IAAI,CAAC,YAAY,GAAG,QAAQ,KAAK,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAC,CAAC;AACtG,QAAQ,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;AAChF,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAClD,YAAY,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;AAC9C,YAAY,KAAK,EAAE,CAAC;AACpB,SAAS;AACT,QAAQ,IAAI,CAAC,WAAW,GAAG,eAAe,IAAI,IAAI,CAAC,WAAW,GAAG,QAAQ,KAAK,IAAI,CAAC,WAAW,GAAG,QAAQ,CAAC,CAAC;AAC3G,QAAQ,IAAI,CAAC,YAAY,GAAG,eAAe,IAAI,IAAI,CAAC,YAAY,GAAG,QAAQ,KAAK,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAC,CAAC;AAC9G,KAAK;AACL,IAAI,cAAc,CAAC,QAAQ,EAAE,eAAe,EAAE;AAC9C,QAAQ,IAAI,eAAe,EAAE;AAC7B,YAAY,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,EAAE,CAAC,EAAE,EAAE;AAC/C,gBAAgB,MAAM,KAAK,GAAG,EAAE,IAAI,CAAC,WAAW,CAAC;AACjD,gBAAgB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,kBAAkB,EAAE,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;AAC7F,gBAAgB,IAAI,CAAC,YAAY,EAAE,CAAC;AACpC,aAAa;AACb,SAAS;AACT,aAAa;AACb,YAAY,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,EAAE,CAAC,EAAE,EAAE;AAC/C,gBAAgB,MAAM,KAAK,GAAG,EAAE,IAAI,CAAC,YAAY,CAAC;AAClD,gBAAgB,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC;AAC3D,gBAAgB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,sBAAsB,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;AACxF,gBAAgB,IAAI,CAAC,WAAW,EAAE,CAAC;AACnC,aAAa;AACb,SAAS;AACT,KAAK;AACL,IAAI,eAAe,CAAC,OAAO,EAAE,KAAK,EAAE;AACpC,QAAQ,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC;AAC1D,QAAQ,IAAI,OAAO,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,QAAQ;AACnE,YAAY,OAAO,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE;AACrE,YAAY,OAAO,CAAC,OAAO,CAAC,GAAG,GAAG,QAAQ,CAAC,UAAU,EAAE,CAAC;AACxD,YAAY,OAAO,CAAC,sBAAsB,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS;AAChF,gBAAgB,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC;AAClE,SAAS;AACT,aAAa;AACb,YAAY,OAAO,CAAC,OAAO,CAAC,GAAG,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAAE,CAAC;AAC7G,iBAAiB,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC;AACrH,YAAY,OAAO,CAAC,sBAAsB,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS;AAChF,iBAAiB,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;AAC/F,SAAS;AACT,QAAQ,IAAI,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE;AAC5C,YAAY,IAAI,OAAO,CAAC,aAAa,CAAC,GAAG,GAAG,UAAU,CAAC,QAAQ,CAAC,EAAE;AAClE,gBAAgB,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,GAAG,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC;AACzE,aAAa;AACb,YAAY,IAAI,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE;AAC9F,gBAAgB,MAAM,WAAW,GAAG,OAAO,CAAC,aAAa,CAAC,GAAG,GAAG,UAAU,CAAC,WAAW,CAAC,CAAC;AACxF,gBAAgB,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AACzE,gBAAgB,MAAM,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,CAAC;AAC3F,gBAAgB,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,KAAK,EAAE;AAC1E,oBAAoB,SAAS,EAAE,UAAU,CAAC,QAAQ,GAAG,GAAG,GAAG,OAAO;AAClE,iBAAiB,CAAC,CAAC;AACnB,gBAAgB,WAAW,CAAC,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,aAAa,CAAC,GAAG,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC;AACvG,aAAa;AACb,SAAS;AACT,QAAQ,IAAI,IAAI,CAAC,gBAAgB,CAAC,YAAY,IAAI,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,OAAO,EAAE;AACxF,YAAY,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;AACxC,gBAAgB,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,aAAa,CAAC,GAAG,GAAG,UAAU,CAAC,eAAe,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AACpI,aAAa;AACb,YAAY,MAAM,WAAW,GAAG,OAAO,CAAC,aAAa,CAAC,GAAG,GAAG,UAAU,CAAC,WAAW,CAAC,CAAC;AACpF,YAAY,IAAI,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE;AACjE,gBAAgB,IAAI,OAAO,CAAC,aAAa,CAAC,GAAG,GAAG,UAAU,CAAC,eAAe,CAAC,EAAE;AAC7E,oBAAoB,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;AACnE,oBAAoB,WAAW,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;AACtE,oBAAoB,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,GAAG,GAAG,UAAU,CAAC,eAAe,CAAC,CAAC,CAAC;AACpF,iBAAiB;AACjB,aAAa;AACb,iBAAiB;AACjB,gBAAgB,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,GAAG,GAAG,UAAU,CAAC,eAAe,CAAC,EAAE;AAC9E,oBAAoB,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;AAChE,oBAAoB,WAAW,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;AACnE,oBAAoB,IAAI,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,KAAK,MAAM,EAAE;AAC3E,wBAAwB,WAAW,CAAC,SAAS,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;AACrE,qBAAqB;AACrB,yBAAyB;AACzB,wBAAwB,WAAW,CAAC,SAAS,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;AACtE,qBAAqB;AACrB,oBAAoB,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;AAC9E,iBAAiB;AACjB,aAAa;AACb,SAAS;AACT,KAAK;AACL,IAAI,uBAAuB,CAAC,OAAO,EAAE,KAAK,EAAE;AAC5C,QAAQ,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;AACrD,QAAQ,IAAI,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC,MAAM,IAAI,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE;AACnH,YAAY,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;AACtD,SAAS;AACT,QAAQ,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC;AACnC,QAAQ,IAAI,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,MAAM,IAAI,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE;AAC/G,YAAY,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;AAC3C,SAAS;AACT,QAAQ,IAAI,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE;AAChD,YAAY,MAAM,gBAAgB,GAAG,OAAO,CAAC,aAAa,CAAC,GAAG,GAAG,UAAU,CAAC,eAAe,CAAC,CAAC;AAC7F,YAAY,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;AAC1D,YAAY,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;AACzD,YAAY,IAAI,gBAAgB,EAAE;AAClC,gBAAgB,gBAAgB,CAAC,eAAe,CAAC,cAAc,CAAC,CAAC;AACjE,gBAAgB,gBAAgB,CAAC,iBAAiB,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;AACxF,aAAa;AACb,YAAY,IAAI,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,MAAM,IAAI,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AACzG,gBAAgB,CAAC,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,aAAa,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE;AACjF,gBAAgB,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;AAC3D,gBAAgB,gBAAgB,CAAC,iBAAiB,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;AACrF,gBAAgB,gBAAgB,CAAC,YAAY,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;AACtE,gBAAgB,IAAI,IAAI,CAAC,WAAW,KAAK,KAAK,EAAE;AAChD,oBAAoB,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;AAC9D,iBAAiB;AACjB,aAAa;AACb,SAAS;AACT,aAAa;AACb,YAAY,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;AAC1D,YAAY,OAAO,CAAC,eAAe,CAAC,eAAe,CAAC,CAAC;AACrD,YAAY,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,WAAW,KAAK,KAAK;AAClF,gBAAgB,CAAC,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,aAAa,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE;AACjF,gBAAgB,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;AAC3D,gBAAgB,OAAO,CAAC,YAAY,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;AAC9D,aAAa;AACb,SAAS;AACT,QAAQ,IAAI,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,OAAO,EAAE;AAClD,YAAY,IAAI,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE;AACjE,gBAAgB,IAAI,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE;AACrE,oBAAoB,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;AAClE,oBAAoB,OAAO,CAAC,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAC1D,oBAAoB,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;AACpE,iBAAiB;AACjB,aAAa;AACb,iBAAiB;AACjB,gBAAgB,IAAI,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE;AAC1E,oBAAoB,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;AACvE,oBAAoB,OAAO,CAAC,YAAY,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;AAC7D,oBAAoB,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;AAC/D,iBAAiB;AACjB,aAAa;AACb,SAAS;AACT,KAAK;AACL,IAAI,oBAAoB,CAAC,EAAE,EAAE,MAAM,EAAE;AACrC,QAAQ,MAAM,UAAU,GAAG,EAAE,CAAC;AAC9B,QAAQ,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;AAC7D,QAAQ,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAAE;AACxC,YAAY,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,KAAK;AACrC,gBAAgB,KAAK,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAAE,CAAC;AAC5D,oBAAoB,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAAE,CAAC;AAC3D,6BAA6B,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,KAAK,IAAI,GAAG;AAClI,oBAAoB,UAAU,CAAC,KAAK,GAAG,KAAK,CAAC;AAC7C,oBAAoB,UAAU,CAAC,IAAI,GAAG,IAAI,CAAC;AAC3C,oBAAoB,OAAO,IAAI,CAAC;AAChC,iBAAiB;AACjB,qBAAqB;AACrB,oBAAoB,OAAO,KAAK,CAAC;AACjC,iBAAiB;AACjB,aAAa,CAAC,CAAC;AACf,SAAS;AACT,QAAQ,OAAO,UAAU,CAAC;AAC1B,KAAK;AACL,IAAI,gBAAgB,GAAG;AACvB,QAAQ,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,IAAI,CAAC,gBAAgB,CAAC,YAAY,IAAI,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE;AACjI,YAAY,MAAM,cAAc,GAAG,EAAE,CAAC;AACtC,YAAY,MAAM,cAAc,GAAG,EAAE,CAAC;AACtC,YAAY,IAAI,OAAO,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,QAAQ;AACvE,gBAAgB,OAAO,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE;AACzE,gBAAgB,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC;AAClE,gBAAgB,IAAI,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE;AACxD,oBAAoB,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC;AACjE,oBAAoB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC7D,wBAAwB,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACnE,qBAAqB;AACrB,oBAAoB,OAAO;AAC3B,wBAAwB,IAAI,EAAE,cAAc;AAC5C,wBAAwB,IAAI,EAAE,cAAc;AAC5C,wBAAwB,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;AACtI,qBAAqB,CAAC;AACtB,iBAAiB;AACjB,qBAAqB;AACrB,oBAAoB,OAAO;AAC3B,wBAAwB,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC;AACzD,wBAAwB,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC;AACzD,wBAAwB,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AACpG,qBAAqB,CAAC;AACtB,iBAAiB;AACjB,aAAa;AACb,iBAAiB;AACjB,gBAAgB,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC;AAClE,gBAAgB,MAAM,IAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC;AAC/D,gBAAgB,IAAI,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE;AACxD,oBAAoB,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC;AACpE,oBAAoB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAChE,wBAAwB,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AACjF,wBAAwB,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/F,qBAAqB;AACrB,oBAAoB,MAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC,UAAU,YAAY,WAAW;AAC9F,0BAA0B,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC;AACvE,oBAAoB,OAAO;AAC3B,wBAAwB,IAAI,EAAE,cAAc;AAC5C,wBAAwB,IAAI,EAAE,cAAc;AAC5C,wBAAwB,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;AAChH,qBAAqB,CAAC;AACtB,iBAAiB;AACjB,qBAAqB;AACrB,oBAAoB,MAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC,UAAU,YAAY,WAAW;AAC9F,0BAA0B,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC;AACvE,oBAAoB,OAAO;AAC3B,wBAAwB,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC;AAC5F,wBAAwB,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC;AACzD,wBAAwB,KAAK,EAAE,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AAC9E,qBAAqB,CAAC;AACtB,iBAAiB;AACjB,aAAa;AACb,SAAS;AACT,aAAa;AACb,YAAY,OAAO,SAAS,CAAC;AAC7B,SAAS;AACT,KAAK;AACL,IAAI,UAAU,CAAC,GAAG,EAAE;AACpB,QAAQ,MAAM,SAAS,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;AAC1F,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,EAAE;AAC3C,YAAY,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,KAAK,SAAS,CAAC,KAAK,CAAC;AACpE,YAAY,IAAI,SAAS,CAAC;AAC1B,YAAY,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC,KAAK,CAAC;AAC/C,YAAY,IAAI,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE;AACpD,gBAAgB,IAAI,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE;AAClF,oBAAoB,SAAS,GAAG,IAAI,CAAC;AACrC,oBAAoB,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AACvE,iBAAiB;AACjB,qBAAqB;AACrB,oBAAoB,SAAS,GAAG,KAAK,CAAC;AACtC,oBAAoB,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;AAClH,iBAAiB;AACjB,gBAAgB,IAAI,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,aAAa,CAAC,GAAG,GAAG,UAAU,CAAC,OAAO,CAAC,EAAE;AACzF,oBAAoB,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,aAAa,CAAC,GAAG,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;AAC7H,iBAAiB;AACjB,aAAa;AACb,YAAY,IAAI,IAAI,CAAC,gBAAgB,CAAC,qBAAqB,CAAC,GAAG,CAAC,EAAE;AAClE,gBAAgB,IAAI,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE;AACxD,oBAAoB,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,IAAI,CAAC,gBAAgB,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC,CAAC;AAC1G,iBAAiB;AACjB,qBAAqB;AACrB,oBAAoB,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,IAAI,CAAC,gBAAgB,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC,CAAC;AACxG,iBAAiB;AACjB,aAAa;AACb,iBAAiB;AACjB,gBAAgB,IAAI,SAAS,CAAC;AAC9B,gBAAgB,IAAI,OAAO,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,QAAQ;AAC3E,oBAAoB,OAAO,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE;AAC7E,oBAAoB,SAAS,GAAG;AAChC,wBAAwB,IAAI,EAAE,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC;AAC/E,wBAAwB,IAAI,EAAE,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC;AAC/E,wBAAwB,KAAK,EAAE,IAAI,CAAC,WAAW;AAC/C,qBAAqB,CAAC;AACtB,iBAAiB;AACjB,qBAAqB;AACrB,oBAAoB,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC;AACtE,oBAAoB,SAAS,GAAG;AAChC,wBAAwB,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC;AAC5F,wBAAwB,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC;AACzD,wBAAwB,KAAK,EAAE,IAAI,CAAC,WAAW;AAC/C,qBAAqB,CAAC;AACtB,iBAAiB;AACjB,gBAAgB,IAAI,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE;AACxD,oBAAoB,SAAS,CAAC,SAAS,GAAG,SAAS,CAAC;AACpD,oBAAoB,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;AACvE,iBAAiB;AACjB,qBAAqB,IAAI,CAAC,UAAU,EAAE;AACtC,oBAAoB,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE,CAAC;AACzD,oBAAoB,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;AACvE,iBAAiB;AACjB,aAAa;AACb,SAAS;AACT,aAAa,IAAI,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE;AAChF,YAAY,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE,CAAC;AACjD,YAAY,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC;AACzC,SAAS;AACT,KAAK;AACL,IAAI,UAAU,CAAC,GAAG,EAAE;AACpB,QAAQ,MAAM,SAAS,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;AAC1F,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,EAAE;AAC3C,YAAY,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;AACtH,SAAS;AACT,KAAK;AACL,IAAI,WAAW,CAAC,GAAG,EAAE;AACrB,QAAQ,MAAM,SAAS,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;AAC1F,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,IAAI,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE;AACjH,YAAY,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AACrE,SAAS;AACT,KAAK;AACL,IAAI,QAAQ,CAAC,GAAG,EAAE;AAClB,QAAQ,MAAM,SAAS,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;AAC1F,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,EAAE;AAC3C,YAAY,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;AAClH,SAAS;AACT,KAAK;AACL,IAAI,QAAQ,CAAC,GAAG,EAAE;AAClB,QAAQ,MAAM,SAAS,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;AAC1F,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,IAAI,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE;AAC/G,YAAY,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AACnE,SAAS;AACT,KAAK;AACL,IAAI,UAAU,CAAC,GAAG,EAAE;AACpB,QAAQ,IAAI,UAAU,CAAC;AACvB,QAAQ,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC;AAC1D,QAAQ,MAAM,SAAS,GAAG,IAAI,CAAC,oBAAoB,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;AACpE,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,EAAE;AAC3C,YAAY,UAAU,GAAG,SAAS,CAAC,IAAI,CAAC;AACxC,YAAY,IAAI,SAAS,CAAC,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC;AAC9C,gBAAgB,SAAS,CAAC,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,QAAQ;AACvD,gBAAgB,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC;AAC/C,qBAAqB,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;AACzC,gBAAgB,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;AACvD,gBAAgB,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;AACvD,aAAa;AACb,iBAAiB;AACjB,gBAAgB,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AACnD,aAAa;AACb,SAAS;AACT,QAAQ,MAAM,cAAc,GAAG,IAAI,CAAC,gBAAgB,CAAC,UAAU,YAAY,WAAW;AACtF,cAAc,IAAI,CAAC,gBAAgB,CAAC,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC;AACjF,QAAQ,MAAM,KAAK,GAAG,cAAc,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AACzD,QAAQ,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;AAC1B,YAAY,cAAc,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AAC5C,YAAY,IAAI,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAC;AACpE,SAAS;AACT;AACA,QAAQ,IAAI,CAAC,gBAAgB,CAAC,YAAY;AAC1C,YAAY,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;AAC/D,KAAK;AACL;AACA,IAAI,aAAa,CAAC,EAAE,EAAE,CAAC,EAAE;AACzB,QAAQ,MAAM,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC;AAC/H,QAAQ,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC;AACpI,QAAQ,IAAI,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE;AACxD,YAAY,IAAI,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE;AACpE,gBAAgB,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACzD,aAAa;AACb,SAAS;AACT,aAAa;AACb,YAAY,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;AAChG,SAAS;AACT,KAAK;AACL;AACA,IAAI,WAAW,CAAC,EAAE,EAAE,CAAC,EAAE;AACvB,QAAQ,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC;AACpI,KAAK;AACL,IAAI,WAAW,CAAC,OAAO,EAAE;AACzB,QAAQ,IAAI,OAAO,EAAE;AACrB,YAAY,IAAI,CAAC,SAAS,CAAC,aAAa,GAAG,EAAE,CAAC;AAC9C,YAAY,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC;AACzC,YAAY,MAAM,IAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC;AACzD,YAAY,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;AAC9D,gBAAgB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE;AAC3C,oBAAoB,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC7D,iBAAiB;AACjB,aAAa;AACb,SAAS;AACT,aAAa;AACb,YAAY,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC;AACzC,YAAY,IAAI,CAAC,SAAS,CAAC,aAAa,GAAG,EAAE,CAAC;AAC9C,SAAS;AACT,KAAK;AACL,IAAI,SAAS,CAAC,KAAK,EAAE;AACrB;AACA;AACA;AACA;AACA,QAAQ,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC;AAC1D,QAAQ,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AAC1C,QAAQ,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,IAAI,KAAK,EAAE;AAC3D,YAAY,IAAI,CAAC,WAAW,EAAE,CAAC;AAC/B,SAAS;AACT,QAAQ,IAAI,IAAI,CAAC,gBAAgB,CAAC,YAAY;AAC9C,YAAY,SAAS,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE;AACtE,YAAY,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACrD,SAAS;AACT,QAAQ,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;AACvG,YAAY,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;AACvH,SAAS;AACT,QAAQ,IAAI,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;AACzD,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,gBAAgB,CAAC,eAAe,CAAC;AACxF,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,qBAAqB,CAAC,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;AAC5F,gBAAgB,IAAI,CAAC,gBAAgB,CAAC,qBAAqB,CAAC,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;AAClF,YAAY,IAAI,MAAM,EAAE;AACxB,gBAAgB,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;AAC3H,gBAAgB,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;AACrD,aAAa;AACb,SAAS;AACT,aAAa;AACb,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,iBAAiB,CAAC,WAAW,CAAC;AACrF,YAAY,IAAI,MAAM,CAAC;AACvB,YAAY,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,MAAM,GAAG,CAAC,MAAM,KAAK,EAAE;AACrF,gBAAgB,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,gBAAgB,CAAC;AACtE,aAAa;AACb,iBAAiB;AACjB,gBAAgB,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,qBAAqB,CAAC,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;AAC1F,oBAAoB,IAAI,CAAC,gBAAgB,CAAC,qBAAqB,CAAC,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;AACtF,aAAa;AACb,YAAY,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;AACjH,YAAY,IAAI,CAAC,YAAY,EAAE,CAAC;AAChC,YAAY,IAAI,CAAC,WAAW,EAAE,CAAC;AAC/B,YAAY,IAAI,MAAM,EAAE;AACxB,gBAAgB,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;AACrD,gBAAgB,IAAI,IAAI,CAAC,gBAAgB,CAAC,QAAQ,KAAK,IAAI,EAAE;AAC7D,oBAAoB,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,WAAW,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;AAC5E,iBAAiB;AACjB,qBAAqB;AACrB,oBAAoB,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC,cAAc,CAAC;AACnF,iBAAiB;AACjB,aAAa;AACb,SAAS;AACT,QAAQ,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,cAAc,CAAC;AAChD,QAAQ,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC;AACnG,KAAK;AACL,IAAI,YAAY,CAAC,KAAK,EAAE;AACxB,QAAQ,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,cAAc,CAAC;AAChD,QAAQ,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AACjE,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,qBAAqB,CAAC,SAAS,CAAC,CAAC;AAC9E,QAAQ,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AACzD,QAAQ,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,IAAI,KAAK,EAAE;AAC3D,YAAY,IAAI,CAAC,WAAW,EAAE,CAAC;AAC/B,SAAS;AACT,QAAQ,IAAI,MAAM,EAAE;AACpB,YAAY,IAAI,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,MAAM,EAAE;AACzF,gBAAgB,MAAM,CAAC,MAAM,CAAC,CAAC;AAC/B,gBAAgB,IAAI,CAAC,YAAY,EAAE,CAAC;AACpC,gBAAgB,IAAI,CAAC,WAAW,EAAE,CAAC;AACnC,gBAAgB,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;AACrC,aAAa;AACb,iBAAiB;AACjB,gBAAgB,IAAI,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE;AACnE,oBAAoB,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;AAChE,oBAAoB,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;AACpH,iBAAiB;AACjB,gBAAgB,IAAI,MAAM,CAAC,KAAK,CAAC,OAAO,KAAK,MAAM,EAAE;AACrD,oBAAoB,MAAM,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC;AAC9C,oBAAoB,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;AAChH,iBAAiB;AACjB,gBAAgB,IAAI,IAAI,CAAC,gBAAgB,CAAC,YAAY,IAAI,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE;AAC1G,oBAAoB,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE,CAAC;AACzD,oBAAoB,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;AACxG,oBAAoB,MAAM,gBAAgB,GAAG,MAAM,CAAC,aAAa,CAAC,GAAG,GAAG,UAAU,CAAC,eAAe,CAAC,CAAC;AACpG,oBAAoB,gBAAgB,CAAC,eAAe,CAAC,cAAc,CAAC,CAAC;AACrE,oBAAoB,gBAAgB,CAAC,iBAAiB,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;AAC5F,oBAAoB,IAAI,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE;AACvE,wBAAwB,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;AACpE,wBAAwB,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC;AACrD,qBAAqB;AACrB,iBAAiB;AACjB,qBAAqB,IAAI,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE;AACzE,oBAAoB,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE,CAAC;AACzD,oBAAoB,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC;AACjD,iBAAiB;AACjB,gBAAgB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;AAC/G,oBAAoB,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;AAChF,iBAAiB;AACjB,qBAAqB,IAAI,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;AACtE,oBAAoB,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;AAC/H,oBAAoB,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;AAChF,iBAAiB;AACjB,qBAAqB;AACrB,oBAAoB,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;AACzH,oBAAoB,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC,YAAY,GAAG,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;AAChG,oBAAoB,IAAI,CAAC,WAAW,EAAE,CAAC;AACvC,oBAAoB,IAAI,CAAC,YAAY,EAAE,CAAC;AACxC,iBAAiB;AACjB,aAAa;AACb,SAAS;AACT,QAAQ,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AAC3C,QAAQ,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC;AACnG,KAAK;AACL,IAAI,eAAe,CAAC,KAAK,EAAE,SAAS,EAAE;AACtC,QAAQ,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AACjD,QAAQ,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE;AACpD,YAAY,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK;AAC7E,gBAAgB,IAAI,CAAC,IAAI,KAAK,EAAE;AAChC,oBAAoB,OAAO,SAAS,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AACjD,iBAAiB;AACjB,qBAAqB;AACrB,oBAAoB,OAAO,CAAC,CAAC;AAC7B,iBAAiB;AACjB,aAAa,CAAC,CAAC;AACf,SAAS;AACT,KAAK;AACL,IAAI,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE;AAC7C,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC9C,YAAY,MAAM,WAAW,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AACxC;AACA,YAAY,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,KAAK,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC;AAC9F;AACA,YAAY,IAAI,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;AAChE;AACA,YAAY,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;AACpC;AACA,gBAAgB,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,QAAQ,IAAI,IAAI,CAAC,gBAAgB,CAAC,aAAa,KAAK,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE;AACrH,oBAAoB,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,QAAQ,GAAG,IAAI,CAAC;AACzE,oBAAoB,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,aAAa,GAAG,IAAI,CAAC;AAC9E,oBAAoB,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACpG,iBAAiB;AACjB,gBAAgB,IAAI,CAAC,gBAAgB,EAAE,CAAC;AACxC;AACA,aAAa;AACb,iBAAiB,IAAI,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,oBAAoB,EAAE;AACpE,gBAAgB,MAAM,EAAE,GAAG,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;AACpF,gBAAgB,IAAI,EAAE,YAAY,KAAK,EAAE;AACzC,oBAAoB,IAAI,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE;AACzD,wBAAwB,IAAI,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;AACzF;AACA,wBAAwB,IAAI,CAAC,sBAAsB,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;AACxE;AACA,wBAAwB,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;AACrF,wBAAwB,IAAI,SAAS,IAAI,SAAS,CAAC,QAAQ,IAAI,SAAS,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;AAC7F;AACA,4BAA4B,EAAE,KAAK,CAAC;AACpC;AACA,4BAA4B,IAAI,CAAC,sBAAsB,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;AAC1E,yBAAyB;AACzB,qBAAqB;AACrB;AACA,oBAAoB,IAAI,CAAC,gBAAgB,CAAC,YAAY;AACtD,wBAAwB,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;AAC3E,iBAAiB;AACjB,aAAa;AACb,iBAAiB;AACjB,gBAAgB,MAAM,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;AACnF;AACA,gBAAgB,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AACtC;AACA,gBAAgB,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;AAC7E,gBAAgB,IAAI,SAAS,IAAI,SAAS,CAAC,QAAQ,IAAI,SAAS,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;AACrF,oBAAoB,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;AAC9C,iBAAiB;AACjB,aAAa;AACb,SAAS;AACT,KAAK;AACL,IAAI,sBAAsB,CAAC,QAAQ,EAAE,KAAK,EAAE;AAC5C;AACA,QAAQ,IAAI,MAAM,CAAC;AACnB,QAAQ,MAAM,EAAE,GAAG,QAAQ,CAAC,sBAAsB,CAAC,IAAI,CAAC,gBAAgB,CAAC,aAAa,EAAE,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,gBAAgB,CAAC,cAAc,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;AAC7K;AACA,QAAQ,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,MAAM,GAAG,CAAC,MAAM,KAAK,EAAE;AACjF,YAAY,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,gBAAgB,CAAC;AAClE,SAAS;AACT,aAAa;AACb;AACA,YAAY,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,qBAAqB,CAAC,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;AAC5G,gBAAgB,IAAI,CAAC,gBAAgB,CAAC,qBAAqB,CAAC,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;AACxG,SAAS;AACT,QAAQ,IAAI,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,OAAO;AAChD,eAAe,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC;AACzD,eAAe,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE;AACpE,YAAY,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,qBAAqB,CAAC,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;AACtH,YAAY,IAAI,SAAS,EAAE;AAC3B,gBAAgB,MAAM,GAAG,SAAS,CAAC,kBAAkB,CAAC;AACtD,aAAa;AACb,SAAS;AACT;AACA,QAAQ,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;AACpE;AACA,QAAQ,IAAI,CAAC,YAAY,EAAE,CAAC;AAC5B,QAAQ,IAAI,IAAI,CAAC,mBAAmB,IAAI,CAAC,EAAE;AAC3C,YAAY,IAAI,CAAC,WAAW,EAAE,CAAC;AAC/B,SAAS;AACT;AACA,QAAQ,IAAI,CAAC,iBAAiB,EAAE,CAAC;AACjC,KAAK;AACL,IAAI,YAAY,CAAC,IAAI,EAAE;AACvB,QAAQ,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,mBAAmB,CAAC,EAAE;AAChE,YAAY,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;AAC7E,gBAAgB,IAAI,CAAC,OAAO,CAAC;AAC7B,YAAY,IAAI,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE;AACpD,gBAAgB,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;AAC3D,gBAAgB,IAAI,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC,gBAAgB,CAAC,eAAe,CAAC;AAC9E,qBAAqB,CAAC,iBAAiB,CAAC,IAAI,CAAC,gBAAgB,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,EAAE;AAC3F,oBAAoB,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AAC9D,oBAAoB,MAAM,cAAc,GAAG,mDAAmD;AAC9F,wBAAwB,+BAA+B,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,IAAI,GAAG,iBAAiB,CAAC;AAChH,oBAAoB,MAAM,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,QAAQ,IAAI,cAAc,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;AAC9H,oBAAoB,MAAM,KAAK,GAAG,gBAAgB,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;AAC7F,oBAAoB,IAAI,IAAI,CAAC,gBAAgB,CAAC,QAAQ,IAAI,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE;AACzF,wBAAwB,IAAI,CAAC,gBAAgB,CAAC,oBAAoB,EAAE,CAAC;AACrE,qBAAqB;AACrB,oBAAoB,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK;AAC1D,wBAAwB,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;AAC7C,qBAAqB,CAAC,CAAC;AACvB,oBAAoB,IAAI,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE;AACzD,wBAAwB,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;AACpE,wBAAwB,IAAI,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,KAAK,MAAM,EAAE;AAC/E,4BAA4B,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;AAC7E,yBAAyB;AACzB,6BAA6B;AAC7B,4BAA4B,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;AAC9E,yBAAyB;AACzB,wBAAwB,IAAI,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,KAAK,MAAM,EAAE;AAC/E,4BAA4B,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,gBAAgB,CAAC,eAAe,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/H,yBAAyB;AACzB,6BAA6B;AAC7B,4BAA4B,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,gBAAgB,CAAC,eAAe,CAAC,CAAC;AAC/F,yBAAyB;AACzB,wBAAwB,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;AACpD,4BAA4B,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AACvE,yBAAyB;AACzB,wBAAwB,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK;AACrE,4BAA4B,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;AACvD,yBAAyB,CAAC,CAAC;AAC3B,qBAAqB;AACrB,iBAAiB;AACjB,aAAa;AACb,SAAS;AACT,KAAK;AACL,IAAI,wBAAwB,GAAG;AAC/B,QAAQ,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;AACnC,QAAQ,IAAI,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,EAAE;AACpD,YAAY,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,CAAC;AAC3D,SAAS;AACT,QAAQ,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,CAAC;AAC1C;AACA;AACA,QAAQ,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;AAC9B,QAAQ,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC;AACvC,QAAQ,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE,CAAC;AAC7C,KAAK;AACL,IAAI,QAAQ,CAAC,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE;AAC5C,QAAQ,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,EAAE,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC;AAC/E,QAAQ,IAAI,IAAI,CAAC,gBAAgB,CAAC,QAAQ,IAAI,IAAI,CAAC,gBAAgB,CAAC,aAAa,EAAE;AACnF,YAAY,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AACrE,YAAY,OAAO,CAAC,OAAO,CAAC,GAAG,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAAE,CAAC;AAC7E,iBAAiB,SAAS,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC;AACrF,YAAY,QAAQ,CAAC,SAAS,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;AAC/C,SAAS;AACT,aAAa;AACb,YAAY,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;AACjD,SAAS;AACT,QAAQ,IAAI,CAAC,uBAAuB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;AACrD,QAAQ,IAAI,aAAa,EAAE;AAC3B,YAAY,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,YAAY,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;AACjF,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,QAAQ,CAAC,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE;AAChD,QAAQ,MAAM,MAAM,GAAG,QAAQ,CAAC,sBAAsB,CAAC,WAAW,CAAC,gBAAgB,CAAC,aAAa,EAAE,CAAC,OAAO,CAAC,EAAE,WAAW,CAAC,gBAAgB,CAAC,cAAc,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,CAAC,gBAAgB,CAAC,CAAC;AACrM,QAAQ,IAAI,WAAW,CAAC,gBAAgB,CAAC,OAAO,EAAE;AAClD,YAAY,WAAW,CAAC,gBAAgB,CAAC,oBAAoB,EAAE,CAAC;AAChE,SAAS;AACT,QAAQ,OAAO,WAAW,CAAC,SAAS,EAAE;AACtC,YAAY,WAAW,CAAC,WAAW,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;AAC3D,SAAS;AACT,QAAQ,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK;AAC3D,YAAY,WAAW,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;AACzC,SAAS,CAAC,CAAC;AACX,KAAK;AACL,IAAI,UAAU,CAAC,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE;AAClD;AACA,QAAQ,MAAM,gBAAgB,GAAG,OAAO,CAAC,WAAW,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;AAChF,QAAQ,MAAM,aAAa,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;AACxD,QAAQ,OAAO,WAAW,CAAC,SAAS,EAAE;AACtC,YAAY,WAAW,CAAC,WAAW,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;AAC3D,SAAS;AACT,QAAQ,WAAW,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;AAClD,KAAK;AACL,IAAI,aAAa,GAAG;AACpB,QAAQ,OAAO,gBAAgB,CAAC;AAChC,KAAK;AACL,IAAI,OAAO,GAAG;AACd,QAAQ,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;AACnC,QAAQ,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;AAC/B,QAAQ,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;AAClC,KAAK;AACL,CAAC;;ACj1BD,IAAIC,YAAU,GAAG,CAACD,SAAI,IAAIA,SAAI,CAAC,UAAU,KAAK,UAAU,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE;AACvF,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,GAAG,IAAI,KAAK,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC,wBAAwB,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC;AACjI,IAAI,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,OAAO,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;AACnI,SAAS,KAAK,IAAI,CAAC,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;AACtJ,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;AAClE,CAAC,CAAC;AACF,IAAI,UAAU,CAAC;AACf,AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AAAG,IAAC,QAAQ,GAAG,UAAU,GAAG,MAAM,QAAQ,SAAS,IAAI,CAAC;AACxD,IAAI,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE;AAClC,QAAQ,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AAChC,QAAQ,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,KAAK;AAChC,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AACpE,YAAY,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE;AACnD,gBAAgB,OAAO,KAAK,CAAC;AAC7B,aAAa;AACb,YAAY,IAAI,OAAO,CAAC;AACxB,YAAY,IAAI,IAAI,CAAC,MAAM,EAAE;AAC7B,gBAAgB,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;AAC9E,aAAa;AACb,iBAAiB;AACjB,gBAAgB,OAAO,GAAG,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AACjD,gBAAgB,OAAO,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,EAAE,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;AAChE,gBAAgB,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;AAClE,aAAa;AACb,YAAY,QAAQ,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,iBAAiB,CAAC,CAAC,CAAC;AACrD,YAAY,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;AAC/C,YAAY,OAAO,OAAO,CAAC;AAC3B,SAAS,CAAC;AACV,QAAQ,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK;AAC7B,YAAY,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE;AAC3B,gBAAgB,OAAO;AACvB,aAAa;AACb,YAAY,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;AAC9F,YAAY,IAAI,OAAO,GAAG,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;AAC7D,YAAY,IAAI,MAAM,GAAG,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AACpE,YAAY,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,IAAI,OAAO,CAAC,CAAC,MAAM,CAAC,SAAS,KAAK,QAAQ,IAAI,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,SAAS,KAAK,MAAM;AACnM,gBAAgB,CAAC,iBAAiB,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,KAAK,OAAO,CAAC,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,KAAK,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE;AAC3I,gBAAgB,IAAI,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,mBAAmB,CAAC,EAAE;AACtE,oBAAoB,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;AACtC,iBAAiB;AACjB,gBAAgB,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC;AACxC,gBAAgB,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM,EAAE;AAC5C,oBAAoB,OAAO;AAC3B,iBAAiB;AACjB,gBAAgB,IAAI,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,kBAAkB,EAAE,OAAO,CAAC,CAAC;AAChF,gBAAgB,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AACzE,gBAAgB,IAAI,MAAM,CAAC;AAC3B,gBAAgB,IAAI,WAAW,EAAE;AACjC,oBAAoB,MAAM,GAAG,iBAAiB,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC;AAC7F,oBAAoB,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;AACrE,oBAAoB,MAAM,oBAAoB,GAAG,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC;AACpF,oBAAoB,IAAI,oBAAoB,IAAI,MAAM,KAAK,MAAM,EAAE;AACnE,wBAAwB,OAAO;AAC/B,qBAAqB;AACrB,oBAAoB,IAAI,oBAAoB,EAAE;AAC9C,wBAAwB,MAAM,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;AAC3D,qBAAqB;AACrB,oBAAoB,OAAO,CAAC,kBAAkB,GAAG,WAAW,CAAC;AAC7D,oBAAoB,IAAI,CAAC,CAAC,MAAM,IAAI,OAAO,CAAC,CAAC,MAAM,CAAC,SAAS,KAAK,QAAQ,IAAI,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,EAAE;AACpI,wBAAwB,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,kBAAkB,EAAE,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;AACnH,qBAAqB;AACrB,yBAAyB,IAAI,OAAO,CAAC,OAAO,KAAK,IAAI,CAAC,OAAO,IAAI,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,iBAAiB,EAAE;AAC/G,wBAAwB,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;AAChF,qBAAqB;AACrB,yBAAyB;AACzB,wBAAwB,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,kBAAkB,EAAE,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;AACnH,qBAAqB;AACrB,oBAAoB,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;AAClE,iBAAiB;AACjB,qBAAqB;AACrB,oBAAoB,MAAM,GAAG,iBAAiB,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC;AACnF,wBAAwB,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,IAAI,CAAC,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,CAAC,CAAC;AACjG,oBAAoB,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAC5D,oBAAoB,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,KAAK,IAAI,CAAC,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,CAAC,GAAG,MAAM,CAAC;AAClH,oBAAoB,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;AAClD,oBAAoB,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;AAC7F,oBAAoB,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;AAClE,oBAAoB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC;AACjD,oBAAoB,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;AACzC,wBAAwB,cAAc,EAAE,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM;AAC1H,wBAAwB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,sBAAsB,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK;AAC1I,qBAAqB,CAAC,CAAC;AACvB,iBAAiB;AACjB,aAAa;AACb,iBAAiB,IAAI,IAAI,CAAC,SAAS,KAAK,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,SAAS,KAAK,MAAM,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE;AAC3I,gBAAgB,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,kBAAkB,CAAC,CAAC;AACpF,gBAAgB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC;AAC7C,aAAa;AACb,YAAY,OAAO,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAC/D,YAAY,IAAI,iBAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,OAAO,CAAC,kBAAkB,EAAE;AACtF,gBAAgB,IAAI,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,EAAE;AACxD,oBAAoB,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;AACpD,iBAAiB;AACjB,aAAa;AACb,iBAAiB;AACjB,gBAAgB,MAAM,YAAY,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,sBAAsB,CAAC,wBAAwB,CAAC,CAAC,CAAC;AAC9G,gBAAgB,IAAI,IAAI,CAAC;AACzB,gBAAgB,YAAY,CAAC,OAAO,CAAC,CAAC,WAAW,KAAK;AACtD,oBAAoB,IAAI,GAAG,IAAI,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC;AACjE,oBAAoB,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,KAAK,OAAO,EAAE;AAC1D,wBAAwB,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;AACrD,qBAAqB;AACrB,iBAAiB,CAAC,CAAC;AACnB,aAAa;AACb,SAAS,CAAC;AACV,QAAQ,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,KAAK;AAClC,YAAY,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;AAC5D,YAAY,IAAI,UAAU,GAAG,KAAK,CAAC;AACnC,YAAY,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;AACnD,YAAY,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC;AACzC,YAAY,CAAC,CAAC,MAAM,GAAG,QAAQ,CAAC,sBAAsB,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7E,YAAY,MAAM,IAAI,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;AACvF,YAAY,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE,IAAI,EAAE,CAAC,YAAY,KAAK;AACpE,gBAAgB,IAAI,YAAY,CAAC,MAAM,EAAE;AACzC,oBAAoB,UAAU,GAAG,YAAY,CAAC,MAAM,CAAC;AACrD,oBAAoB,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AACvC,iBAAiB;AACjB,aAAa,CAAC,CAAC;AACf,YAAY,IAAI,UAAU,EAAE;AAC5B,gBAAgB,OAAO;AACvB,aAAa;AACb,YAAY,IAAI,QAAQ,EAAE;AAC1B,gBAAgB,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE;AAC1C,oBAAoB,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM;AAC9E,oBAAoB,UAAU,EAAE,CAAC,CAAC,UAAU,EAAE,WAAW,EAAE,CAAC,CAAC,WAAW;AACxE,iBAAiB,CAAC,CAAC;AACnB,aAAa;AACb,iBAAiB;AACjB,gBAAgB,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;AAC1G,aAAa;AACb,SAAS,CAAC;AACV,QAAQ,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,KAAK;AACjC,YAAY,IAAI,QAAQ,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AACpE,YAAY,IAAI,MAAM,CAAC;AACvB,YAAY,IAAI,OAAO,CAAC;AACxB,YAAY,IAAI,OAAO,CAAC;AACxB,YAAY,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACjD,YAAY,MAAM,oBAAoB,GAAG,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC;AAC7E,YAAY,IAAI,oBAAoB,EAAE;AACtC,gBAAgB,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,kBAAkB,EAAE,QAAQ,CAAC,CAAC;AACpF,gBAAgB,MAAM,IAAI,GAAG;AAC7B,oBAAoB,aAAa,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,cAAc,EAAE,IAAI,CAAC,MAAM;AAC/G,oBAAoB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK;AACnE,iBAAiB,CAAC;AAClB,gBAAgB,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,IAAI,EAAE,CAAC,YAAY,KAAK;AACnE,oBAAoB,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE;AAC9C,wBAAwB,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC;AACvD,wBAAwB,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;AACvD,wBAAwB,IAAI,YAAY,CAAC,OAAO,EAAE;AAClD,4BAA4B,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AACpE,4BAA4B,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;AACtE,4BAA4B,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC;AAC9C,yBAAyB;AACzB,wBAAwB,QAAQ,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,kBAAkB,CAAC,CAAC;AAChG,wBAAwB,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;AAC5E,wBAAwB,OAAO,GAAG,IAAI,KAAK,QAAQ,IAAI,CAAC,OAAO,GAAG,MAAM,IAAI,CAAC,GAAG,OAAO,GAAG,CAAC,GAAG,OAAO,CAAC;AACtG,wBAAwB,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;AAC7C,4BAA4B,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM;AACnH,4BAA4B,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,cAAc,EAAE,IAAI,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO;AACpI,yBAAyB,CAAC,CAAC;AAC3B,qBAAqB;AACrB,oBAAoB,MAAM,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC;AACxD,iBAAiB,CAAC,CAAC;AACnB,aAAa;AACb,YAAY,QAAQ,GAAG,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;AAC1D,YAAY,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC,iBAAiB,CAAC;AACxD,YAAY,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACjD,YAAY,IAAI,QAAQ,CAAC,OAAO,CAAC,aAAa,CAAC,aAAa,CAAC,EAAE;AAC/D,gBAAgB,MAAM,GAAG,MAAM,GAAG,CAAC,CAAC;AACpC,aAAa;AACb,YAAY,IAAI,IAAI,CAAC,SAAS,KAAK,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,SAAS,EAAE;AAC/E,gBAAgB,MAAM,GAAG,OAAO,CAAC;AACjC,aAAa;AACb,YAAY,IAAI,QAAQ,CAAC,OAAO,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC,oBAAoB,IAAI,IAAI,CAAC,SAAS,KAAK,IAAI,CAAC,MAAM,CAAC,EAAE;AAC5G,gBAAgB,MAAM,cAAc,GAAG;AACvC,oBAAoB,aAAa,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM;AAChE,oBAAoB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,cAAc,EAAE,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK;AAClG,iBAAiB,CAAC;AAClB,gBAAgB,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,cAAc,EAAE,CAAC,YAAY,KAAK;AAC7E,oBAAoB,IAAI,CAAC,QAAQ,CAAC,OAAO,KAAK,CAAC,CAAC,MAAM,KAAK,OAAO,CAAC,CAAC,MAAM,CAAC,SAAS,KAAK,QAAQ,IAAI,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,MAAM,CAAC,SAAS,KAAK,QAAQ,IAAI,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC,CAAC;AACxP,2BAA2B,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,qBAAqB,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,EAAE;AAC7F,wBAAwB,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;AACvD,wBAAwB,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAClE,wBAAwB,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;AAC7C,4BAA4B,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM;AACnH,4BAA4B,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,cAAc,EAAE,IAAI,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,CAAC,KAAK;AAClH,yBAAyB,CAAC,CAAC;AAC3B,qBAAqB;AACrB,iBAAiB,CAAC,CAAC;AACnB,aAAa;AACb,YAAY,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;AACtD,YAAY,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;AAC/B,YAAY,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;AAClC,YAAY,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;AAC7B,YAAY,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AACxE,SAAS,CAAC;AACV,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;AACpB,KAAK;AACL,IAAI,IAAI,GAAG;AACX,QAAQ,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE;AAC9B,YAAY,IAAI,CAAC,OAAO,CAAC,EAAE,GAAG,WAAW,CAAC,UAAU,CAAC,CAAC;AACtD,SAAS;AACT,QAAQ,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;AAC7B,YAAY,IAAI,CAAC,SAAS,GAAG,aAAa,CAAC;AAC3C,YAAY,IAAI,CAAC,QAAQ,EAAE,CAAC;AAC5B,SAAS;AACT,QAAQ,IAAI,CAAC,mBAAmB,EAAE,CAAC;AACnC,KAAK;AACL,IAAI,mBAAmB,GAAG;AAC1B,QAAQ,IAAI,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE;AACpC,YAAY,MAAM,EAAE,IAAI,CAAC,SAAS;AAClC,YAAY,SAAS,EAAE,IAAI,CAAC,WAAW;AACvC,YAAY,IAAI,EAAE,IAAI,CAAC,MAAM;AAC7B,YAAY,QAAQ,EAAE,IAAI,CAAC,UAAU;AACrC,YAAY,UAAU,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;AAC5C,YAAY,aAAa,EAAE,IAAI;AAC/B,YAAY,gBAAgB,EAAE,GAAG;AACjC,YAAY,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;AACrD,YAAY,QAAQ,EAAE,CAAC;AACvB,SAAS,CAAC,CAAC;AACX,QAAQ,IAAI,CAAC,UAAU,EAAE,CAAC;AAC1B,KAAK;AACL,IAAI,UAAU,GAAG;AACjB,QAAQ,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;AACrC,QAAQ,YAAY,CAAC,GAAG,CAAC,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;AACxE,KAAK;AACL,IAAI,YAAY,GAAG;AACnB,QAAQ,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;AACrC,QAAQ,YAAY,CAAC,MAAM,CAAC,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;AACrE,KAAK;AACL,IAAI,cAAc,CAAC,CAAC,EAAE;AACtB,QAAQ,IAAI,CAAC,CAAC,OAAO,KAAK,EAAE,EAAE;AAC9B,YAAY,MAAM,QAAQ,GAAG,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;AACrE,YAAY,IAAI,QAAQ,EAAE;AAC1B,gBAAgB,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AAC1C,aAAa;AACb,YAAY,MAAM,WAAW,GAAG,QAAQ,CAAC,sBAAsB,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC;AACtF,YAAY,IAAI,WAAW,EAAE;AAC7B,gBAAgB,WAAW,CAAC,MAAM,EAAE,CAAC;AACrC,aAAa;AACb,YAAY,MAAM,eAAe,GAAG,QAAQ,CAAC,sBAAsB,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAC;AACjG,YAAY,IAAI,eAAe,EAAE;AACjC,gBAAgB,eAAe,CAAC,MAAM,EAAE,CAAC;AACzC,aAAa;AACb,SAAS;AACT,KAAK;AACL,IAAI,cAAc,CAAC,MAAM,EAAE,QAAQ,EAAE;AACrC,QAAQ,IAAI,QAAQ,CAAC,WAAW,EAAE;AAClC,YAAY,MAAM,kBAAkB,GAAG,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE,cAAc,EAAE,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;AACxI,YAAY,kBAAkB,CAAC,SAAS,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;AACvE,YAAY,OAAO,kBAAkB,CAAC;AACtC,SAAS;AACT,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK;AACL,IAAI,aAAa,CAAC,MAAM,EAAE,QAAQ,EAAE;AACpC,QAAQ,OAAO,MAAM,IAAI,oBAAoB,CAAC,MAAM,EAAE,QAAQ,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC;AACxH,YAAY,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;AACrD,KAAK;AACL,IAAI,iBAAiB,CAAC,QAAQ,EAAE;AAChC,QAAQ,MAAM,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC;AAC5C,QAAQ,QAAQ,CAAC,kBAAkB,GAAG,IAAI,CAAC;AAC3C,KAAK;AACL,IAAI,eAAe,CAAC,QAAQ,EAAE;AAC9B,QAAQ,IAAI,IAAI,KAAK,QAAQ,EAAE;AAC/B,YAAY,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AACzD,YAAY,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;AAC1D,SAAS;AACT,KAAK;AACL,IAAI,mBAAmB,CAAC,OAAO,EAAE;AACjC,QAAQ,OAAO,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,CAAC;AACjE,QAAQ,IAAI,OAAO,EAAE;AACrB,YAAY,MAAM,IAAI,GAAG,YAAY,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;AAC3D,YAAY,OAAO,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,GAAG,IAAI,GAAG,IAAI,CAAC;AACvF,SAAS;AACT,aAAa;AACb,YAAY,OAAO,IAAI,CAAC;AACxB,SAAS;AACT,KAAK;AACL,IAAI,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE;AAC9C,QAAQ,IAAI,QAAQ,KAAK,IAAI,EAAE;AAC/B,YAAY,IAAI,OAAO,CAAC;AACxB,YAAY,MAAM,SAAS,GAAG,MAAM,GAAG,MAAM,CAAC;AAC9C,YAAY,IAAI,WAAW,CAAC;AAC5B,YAAY,IAAI,KAAK,GAAG,SAAS,GAAG,MAAM,GAAG,MAAM,CAAC;AACpD,YAAY,MAAM,GAAG,GAAG,SAAS,GAAG,MAAM,GAAG,MAAM,CAAC;AACpD,YAAY,OAAO,KAAK,IAAI,GAAG,EAAE;AACjC,gBAAgB,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AACvD,gBAAgB,IAAI,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE;AAC9D,oBAAoB,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AACzD,oBAAoB,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,GAAG,WAAW,GAAG,CAAC,GAAG,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7H,oBAAoB,KAAK,GAAG,SAAS,GAAG,WAAW,GAAG,CAAC,GAAG,WAAW,GAAG,CAAC,CAAC;AAC1E,iBAAiB;AACjB,qBAAqB;AACrB,oBAAoB,KAAK,EAAE,CAAC;AAC5B,iBAAiB;AACjB,aAAa;AACb,SAAS;AACT,KAAK;AACL,IAAI,QAAQ,CAAC,MAAM,EAAE,QAAQ,GAAG,IAAI,EAAE,CAAC,EAAE;AACzC,QAAQ,IAAI,GAAG,CAAC;AAChB,QAAQ,IAAI,kBAAkB,CAAC;AAC/B,QAAQ,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,KAAK,KAAK;AAC7E,YAAY,IAAI,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,wBAAwB,CAAC,EAAE;AACtE,gBAAgB,kBAAkB,GAAG,IAAI,CAAC;AAC1C,aAAa;AACb,YAAY,IAAI,OAAO,KAAK,MAAM,EAAE;AACpC,gBAAgB,GAAG,GAAG,KAAK,CAAC;AAC5B,gBAAgB,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE;AAC3C,oBAAoB,IAAI,kBAAkB,EAAE;AAC5C,wBAAwB,GAAG,IAAI,CAAC,CAAC;AACjC,qBAAqB;AACrB,oBAAoB,MAAM,MAAM,GAAG,MAAM,CAAC,qBAAqB,EAAE,CAAC;AAClE,oBAAoB,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;AACvF,oBAAoB,MAAM,IAAI,GAAG,CAAC,CAAC,cAAc,GAAG,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC;AAC5F,oBAAoB,GAAG,GAAG,IAAI,IAAI,OAAO,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;AAC1D,iBAAiB;AACjB,gBAAgB,OAAO;AACvB,aAAa;AACb,SAAS,CAAC,CAAC;AACX,QAAQ,OAAO,GAAG,CAAC;AACnB,KAAK;AACL,IAAI,kBAAkB,CAAC,OAAO,EAAE,QAAQ,GAAG,IAAI,EAAE;AACjD,QAAQ,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AAC1D,KAAK;AACL,IAAI,iBAAiB,CAAC,KAAK,EAAE;AAC7B,QAAQ,KAAK,CAAC,IAAI,GAAG,WAAW,GAAG,CAAC,EAAE,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC;AAC5F,QAAQ,KAAK,CAAC,GAAG,GAAG,WAAW,GAAG,CAAC,EAAE,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC;AACzF,QAAQ,OAAO,KAAK,CAAC;AACrB,KAAK;AACL,IAAI,oBAAoB,CAAC,QAAQ,EAAE;AACnC,QAAQ,OAAO,QAAQ,CAAC,kBAAkB,IAAI,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,kBAAkB,EAAE,CAAC,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAChH,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,CAAC,WAAW,EAAE,aAAa,EAAE,YAAY,EAAE;AACrD,QAAQ,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,YAAY,CAAC,CAAC;AACvE,KAAK;AACL;AACA;AACA;AACA,IAAI,OAAO,GAAG;AACd,QAAQ,IAAI,CAAC,YAAY,EAAE,CAAC;AAC5B,QAAQ,IAAI,IAAI,CAAC,SAAS,KAAK,aAAa,EAAE;AAC9C,YAAY,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;AAClC,YAAY,IAAI,CAAC,QAAQ,EAAE,CAAC;AAC5B,SAAS;AACT,QAAQ,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,OAAO,EAAE,CAAC;AACxD,QAAQ,KAAK,CAAC,OAAO,EAAE,CAAC;AACxB,KAAK;AACL,IAAI,aAAa,GAAG;AACpB,QAAQ,OAAO,UAAU,CAAC;AAC1B,KAAK;AACL,IAAI,iBAAiB,CAAC,OAAO,EAAE,OAAO,EAAE;AACxC,QAAQ,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;AACjD,YAAY,QAAQ,IAAI;AACxB,gBAAgB,KAAK,WAAW;AAChC,oBAAoB,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,KAAK;AAC9E,wBAAwB,IAAI,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE;AAC3E,4BAA4B,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AACxE,yBAAyB;AACzB,wBAAwB,IAAI,OAAO,CAAC,SAAS,EAAE;AAC/C,4BAA4B,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AACrE,yBAAyB;AACzB,qBAAqB,CAAC,CAAC;AACvB,oBAAoB,MAAM;AAC1B,aAAa;AACb,SAAS;AACT,KAAK;AACL,CAAC,CAAC;AACFC,YAAU,CAAC;AACX,IAAI,QAAQ,CAAC,KAAK,CAAC;AACnB,CAAC,EAAE,QAAQ,CAAC,SAAS,EAAE,iBAAiB,EAAE,KAAK,CAAC,CAAC,CAAC;AAClDA,YAAU,CAAC;AACX,IAAI,QAAQ,CAAC,IAAI,CAAC;AAClB,CAAC,EAAE,QAAQ,CAAC,SAAS,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC;AAC5CA,YAAU,CAAC;AACX,IAAI,QAAQ,CAAC,IAAI,CAAC;AAClB,CAAC,EAAE,QAAQ,CAAC,SAAS,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;AACxCA,YAAU,CAAC;AACX,IAAI,QAAQ,EAAE;AACd,CAAC,EAAE,QAAQ,CAAC,SAAS,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC;AACzCA,YAAU,CAAC;AACX,IAAI,QAAQ,EAAE;AACd,CAAC,EAAE,QAAQ,CAAC,SAAS,EAAE,aAAa,EAAE,KAAK,CAAC,CAAC,CAAC;AAC9CA,YAAU,CAAC;AACX,IAAI,KAAK,EAAE;AACX,CAAC,EAAE,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;AACvCA,YAAU,CAAC;AACX,IAAI,KAAK,EAAE;AACX,CAAC,EAAE,QAAQ,CAAC,SAAS,EAAE,iBAAiB,EAAE,KAAK,CAAC,CAAC,CAAC;AAClDA,YAAU,CAAC;AACX,IAAI,KAAK,EAAE;AACX,CAAC,EAAE,QAAQ,CAAC,SAAS,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC;AAC5CA,YAAU,CAAC;AACX,IAAI,KAAK,EAAE;AACX,CAAC,EAAE,QAAQ,CAAC,SAAS,EAAE,YAAY,EAAE,KAAK,CAAC,CAAC,CAAC;AAC7CA,YAAU,CAAC;AACX,IAAI,KAAK,EAAE;AACX,CAAC,EAAE,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;AACvC,QAAQ,GAAG,UAAU,GAAGA,YAAU,CAAC;AACnC,IAAI,qBAAqB;AACzB,CAAC,EAAE,QAAQ,CAAC,CAAC;AACb,AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AAAO,SAAS,MAAM,CAAC,IAAI,EAAE,EAAE,EAAE,aAAa,EAAE,YAAY,EAAE;AAC9D,IAAI,IAAI,cAAc,GAAG,EAAE,CAAC;AAC5B,IAAI,IAAI,CAAC,EAAE,EAAE;AACb,QAAQ,EAAE,GAAG,IAAI,CAAC;AAClB,KAAK;AACL,IAAI,IAAI,aAAa,IAAI,aAAa,CAAC,MAAM,EAAE;AAC/C,QAAQ,aAAa,CAAC,OAAO,CAAC,CAAC,KAAK,KAAK;AACzC,YAAY,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;AACtD,SAAS,CAAC,CAAC;AACX,KAAK;AACL,SAAS;AACT,QAAQ,cAAc,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACtD,KAAK;AACL,IAAI,IAAI,iBAAiB,CAAC,YAAY,CAAC,EAAE;AACzC,QAAQ,cAAc,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK;AAC3C,YAAY,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;AACnC,SAAS,CAAC,CAAC;AACX,KAAK;AACL,SAAS;AACT,QAAQ,MAAM,aAAa,GAAG,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;AACxD,QAAQ,cAAc,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK;AAC3C,YAAY,EAAE,CAAC,YAAY,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;AACnD,SAAS,CAAC,CAAC;AACX,KAAK;AACL,CAAC;;;;"}
|