{"version":3,"file":"ej2-popups.min.js","sources":["../../src/common/position.js","../../src/common/collision.js","../../src/popup/popup.js","../../src/common/resize.js","../../src/spinner/spinner.js","../../src/dialog/dialog.js","../../src/tooltip/tooltip.js"],"sourcesContent":["/**\n * Position library\n */\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nvar elementRect;\nvar popupRect;\nvar element;\nvar parentDocument;\nvar fixedParent = false;\n/**\n *\n * @param {HTMLElement} anchor - specifies the element\n * @param {HTMLElement} element - specifies the element\n * @returns {OffsetPosition} - returns the value\n */\nexport function calculateRelativeBasedPosition(anchor, element) {\n var fixedElement = false;\n var anchorPos = { left: 0, top: 0 };\n var tempAnchor = anchor;\n if (!anchor || !element) {\n return anchorPos;\n }\n if (isNullOrUndefined(element.offsetParent) && element.style.position === 'fixed') {\n fixedElement = true;\n }\n while ((element.offsetParent || fixedElement) && anchor && element.offsetParent !== anchor) {\n anchorPos.left += anchor.offsetLeft;\n anchorPos.top += anchor.offsetTop;\n anchor = anchor.offsetParent;\n }\n anchor = tempAnchor;\n while ((element.offsetParent || fixedElement) && anchor && element.offsetParent !== anchor) {\n anchorPos.left -= anchor.scrollLeft;\n anchorPos.top -= anchor.scrollTop;\n anchor = anchor.parentElement;\n }\n return anchorPos;\n}\n/**\n *\n * @param {Element} currentElement - specifies the element\n * @param {string} positionX - specifies the position\n * @param {string} positionY - specifies the position\n * @param {boolean} parentElement - specifies the boolean\n * @param {ClientRect} targetValues - specifies the client\n * @returns {OffsetPosition} - returns the position\n */\nexport function calculatePosition(currentElement, positionX, positionY, parentElement, targetValues) {\n popupRect = undefined;\n popupRect = targetValues;\n fixedParent = parentElement ? true : false;\n if (!currentElement) {\n return { left: 0, top: 0 };\n }\n if (!positionX) {\n positionX = 'left';\n }\n if (!positionY) {\n positionY = 'top';\n }\n parentDocument = currentElement.ownerDocument;\n element = currentElement;\n var pos = { left: 0, top: 0 };\n return updatePosition(positionX.toLowerCase(), positionY.toLowerCase(), pos);\n}\n/**\n *\n * @param {number} value - specifies the number\n * @param {OffsetPosition} pos - specifies the position\n * @returns {void}\n */\nfunction setPosx(value, pos) {\n pos.left = value;\n}\n/**\n *\n * @param {number} value - specifies the number\n * @param {OffsetPosition} pos - specifies the position\n * @returns {void}\n */\nfunction setPosy(value, pos) {\n pos.top = value;\n}\n/**\n *\n * @param {string} posX - specifies the position\n * @param {string} posY - specifies the position\n * @param {OffsetPosition} pos - specifies the position\n * @returns {OffsetPosition} - returns the postion\n */\nfunction updatePosition(posX, posY, pos) {\n elementRect = element.getBoundingClientRect();\n switch (posY + posX) {\n case 'topcenter':\n setPosx(getElementHCenter(), pos);\n setPosy(getElementTop(), pos);\n break;\n case 'topright':\n setPosx(getElementRight(), pos);\n setPosy(getElementTop(), pos);\n break;\n case 'centercenter':\n setPosx(getElementHCenter(), pos);\n setPosy(getElementVCenter(), pos);\n break;\n case 'centerright':\n setPosx(getElementRight(), pos);\n setPosy(getElementVCenter(), pos);\n break;\n case 'centerleft':\n setPosx(getElementLeft(), pos);\n setPosy(getElementVCenter(), pos);\n break;\n case 'bottomcenter':\n setPosx(getElementHCenter(), pos);\n setPosy(getElementBottom(), pos);\n break;\n case 'bottomright':\n setPosx(getElementRight(), pos);\n setPosy(getElementBottom(), pos);\n break;\n case 'bottomleft':\n setPosx(getElementLeft(), pos);\n setPosy(getElementBottom(), pos);\n break;\n default:\n case 'topleft':\n setPosx(getElementLeft(), pos);\n setPosy(getElementTop(), pos);\n break;\n }\n element = null;\n return pos;\n}\n/**\n * @returns {number} - specifies the number value\n */\nfunction getBodyScrollTop() {\n return parentDocument.documentElement.scrollTop || parentDocument.body.scrollTop;\n}\n/**\n * @returns {number} - specifies the number value\n */\nfunction getBodyScrollLeft() {\n return parentDocument.documentElement.scrollLeft || parentDocument.body.scrollLeft;\n}\n/**\n * @returns {number} - specifies the number value\n */\nfunction getElementBottom() {\n return fixedParent ? elementRect.bottom : elementRect.bottom + getBodyScrollTop();\n}\n/**\n * @returns {number} - specifies the number value\n */\nfunction getElementVCenter() {\n return getElementTop() + (elementRect.height / 2);\n}\n/**\n * @returns {number} - specifies the number value\n */\nfunction getElementTop() {\n return fixedParent ? elementRect.top : elementRect.top + getBodyScrollTop();\n}\n/**\n * @returns {number} - specifies the number value\n */\nfunction getElementLeft() {\n return elementRect.left + getBodyScrollLeft();\n}\n/**\n * @returns {number} - specifies the number value\n */\nfunction getElementRight() {\n var popupWidth = (element && (element.classList.contains('e-date-wrapper') || element.classList.contains('e-datetime-wrapper') || (element.classList.contains('e-ddl') && element.classList.contains('e-rtl')) || element.classList.contains('e-date-range-wrapper'))) ? (popupRect ? popupRect.width : 0) :\n (popupRect && (elementRect.width >= popupRect.width) ? popupRect.width : 0);\n return elementRect.right + getBodyScrollLeft() - popupWidth;\n}\n/**\n * @returns {number} - specifies the number value\n */\nfunction getElementHCenter() {\n return getElementLeft() + (elementRect.width / 2);\n}\n","/**\n * Collision module.\n */\nimport { calculatePosition } from './position';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nvar parentDocument;\nvar targetContainer;\n/**\n *\n * @param {HTMLElement} element - specifies the element\n * @param {HTMLElement} viewPortElement - specifies the element\n * @param {CollisionCoordinates} axis - specifies the collision coordinates\n * @param {OffsetPosition} position - specifies the position\n * @returns {void}\n */\nexport function fit(element, viewPortElement, axis, position) {\n if (viewPortElement === void 0) { viewPortElement = null; }\n if (axis === void 0) { axis = { X: false, Y: false }; }\n if (!axis.Y && !axis.X) {\n return { left: 0, top: 0 };\n }\n var elemData = element.getBoundingClientRect();\n targetContainer = viewPortElement;\n parentDocument = element.ownerDocument;\n if (!position) {\n position = calculatePosition(element, 'left', 'top');\n }\n if (axis.X) {\n var containerWidth = targetContainer ? getTargetContainerWidth() : getViewPortWidth();\n var containerLeft = ContainerLeft();\n var containerRight = ContainerRight();\n var overLeft = containerLeft - position.left;\n var overRight = position.left + elemData.width - containerRight;\n if (elemData.width > containerWidth) {\n if (overLeft > 0 && overRight <= 0) {\n position.left = containerRight - elemData.width;\n }\n else if (overRight > 0 && overLeft <= 0) {\n position.left = containerLeft;\n }\n else {\n position.left = overLeft > overRight ? (containerRight - elemData.width) : containerLeft;\n }\n }\n else if (overLeft > 0) {\n position.left += overLeft;\n }\n else if (overRight > 0) {\n position.left -= overRight;\n }\n }\n if (axis.Y) {\n var containerHeight = targetContainer ? getTargetContainerHeight() : getViewPortHeight();\n var containerTop = ContainerTop();\n var containerBottom = ContainerBottom();\n var overTop = containerTop - position.top;\n var overBottom = position.top + elemData.height - containerBottom;\n if (elemData.height > containerHeight) {\n if (overTop > 0 && overBottom <= 0) {\n position.top = containerBottom - elemData.height;\n }\n else if (overBottom > 0 && overTop <= 0) {\n position.top = containerTop;\n }\n else {\n position.top = overTop > overBottom ? (containerBottom - elemData.height) : containerTop;\n }\n }\n else if (overTop > 0) {\n position.top += overTop;\n }\n else if (overBottom > 0) {\n position.top -= overBottom;\n }\n }\n return position;\n}\n/**\n *\n * @param {HTMLElement} element - specifies the html element\n * @param {HTMLElement} viewPortElement - specifies the html element\n * @param {number} x - specifies the number\n * @param {number} y - specifies the number\n * @returns {string[]} - returns the string value\n */\nexport function isCollide(element, viewPortElement, x, y) {\n if (viewPortElement === void 0) { viewPortElement = null; }\n var elemOffset = calculatePosition(element, 'left', 'top');\n if (x) {\n elemOffset.left = x;\n }\n if (y) {\n elemOffset.top = y;\n }\n var data = [];\n targetContainer = viewPortElement;\n parentDocument = element.ownerDocument;\n var elementRect = element.getBoundingClientRect();\n var top = elemOffset.top;\n var left = elemOffset.left;\n var right = elemOffset.left + elementRect.width;\n var bottom = elemOffset.top + elementRect.height;\n var yAxis = topCollideCheck(top, bottom);\n var xAxis = leftCollideCheck(left, right);\n if (yAxis.topSide) {\n data.push('top');\n }\n if (xAxis.rightSide) {\n data.push('right');\n }\n if (xAxis.leftSide) {\n data.push('left');\n }\n if (yAxis.bottomSide) {\n data.push('bottom');\n }\n return data;\n}\n/**\n *\n * @param {HTMLElement} element - specifies the element\n * @param {HTMLElement} target - specifies the element\n * @param {number} offsetX - specifies the number\n * @param {number} offsetY - specifies the number\n * @param {string} positionX - specifies the string value\n * @param {string} positionY - specifies the string value\n * @param {HTMLElement} viewPortElement - specifies the element\n * @param {CollisionCoordinates} axis - specifies the collision axis\n * @param {boolean} fixedParent - specifies the boolean\n * @returns {void}\n */\nexport function flip(element, target, offsetX, offsetY, positionX, positionY, viewPortElement, \n/* eslint-disable */\naxis, fixedParent) {\n if (viewPortElement === void 0) { viewPortElement = null; }\n if (axis === void 0) { axis = { X: true, Y: true }; }\n if (!target || !element || !positionX || !positionY || (!axis.X && !axis.Y)) {\n return;\n }\n var tEdge = { TL: null,\n TR: null,\n BL: null,\n BR: null\n }, eEdge = {\n TL: null,\n TR: null,\n BL: null,\n BR: null\n /* eslint-enable */\n };\n var elementRect;\n if (window.getComputedStyle(element).display === 'none') {\n var oldVisibility = element.style.visibility;\n element.style.visibility = 'hidden';\n element.style.display = 'block';\n elementRect = element.getBoundingClientRect();\n element.style.removeProperty('display');\n element.style.visibility = oldVisibility;\n }\n else {\n elementRect = element.getBoundingClientRect();\n }\n var pos = {\n posX: positionX, posY: positionY, offsetX: offsetX, offsetY: offsetY, position: { left: 0, top: 0 }\n };\n targetContainer = viewPortElement;\n parentDocument = target.ownerDocument;\n updateElementData(target, tEdge, pos, fixedParent, elementRect);\n setPosition(eEdge, pos, elementRect);\n if (axis.X) {\n leftFlip(target, eEdge, tEdge, pos, elementRect, true);\n }\n if (axis.Y && tEdge.TL.top > -1) {\n topFlip(target, eEdge, tEdge, pos, elementRect, true);\n }\n setPopup(element, pos, elementRect);\n}\n/**\n *\n * @param {HTMLElement} element - specifies the element\n * @param {PositionLocation} pos - specifies the location\n * @param {ClientRect} elementRect - specifies the client rect\n * @returns {void}\n */\nfunction setPopup(element, pos, elementRect) {\n var left = 0;\n var top = 0;\n if (element.offsetParent != null\n && (getComputedStyle(element.offsetParent).position === 'absolute' ||\n getComputedStyle(element.offsetParent).position === 'relative')) {\n var data = calculatePosition(element.offsetParent, 'left', 'top', false, elementRect);\n left = data.left;\n top = data.top;\n }\n var scaleX = 1;\n var scaleY = 1;\n if (element.offsetParent) {\n var transformStyle = getComputedStyle(element.offsetParent).transform;\n if (transformStyle !== 'none') {\n var matrix = new DOMMatrix(transformStyle);\n scaleX = matrix.a;\n scaleY = matrix.d;\n }\n }\n element.style.top = ((pos.position.top / scaleY) + pos.offsetY - (top)) + 'px';\n element.style.left = ((pos.position.left / scaleX) + pos.offsetX - (left)) + 'px';\n}\n/**\n *\n * @param {HTMLElement} target - specifies the element\n * @param {EdgeOffset} edge - specifies the offset\n * @param {PositionLocation} pos - specifies theloaction\n * @param {boolean} fixedParent - specifies the boolean\n * @param {ClientRect} elementRect - specifies the client rect\n * @returns {void}\n */\nfunction updateElementData(target, edge, pos, fixedParent, elementRect) {\n pos.position = calculatePosition(target, pos.posX, pos.posY, fixedParent, elementRect);\n edge.TL = calculatePosition(target, 'left', 'top', fixedParent, elementRect);\n edge.TR = calculatePosition(target, 'right', 'top', fixedParent, elementRect);\n edge.BR = calculatePosition(target, 'left', 'bottom', fixedParent, elementRect);\n edge.BL = calculatePosition(target, 'right', 'bottom', fixedParent, elementRect);\n}\n/**\n *\n * @param {EdgeOffset} eStatus - specifies the status\n * @param {PositionLocation} pos - specifies the location\n * @param {ClientRect} elementRect - specifies the client\n * @returns {void}\n */\nfunction setPosition(eStatus, pos, elementRect) {\n eStatus.TL = { top: pos.position.top + pos.offsetY, left: pos.position.left + pos.offsetX };\n eStatus.TR = { top: eStatus.TL.top, left: eStatus.TL.left + elementRect.width };\n eStatus.BL = { top: eStatus.TL.top + elementRect.height,\n left: eStatus.TL.left };\n eStatus.BR = { top: eStatus.TL.top + elementRect.height,\n left: eStatus.TL.left + elementRect.width };\n}\n/**\n *\n * @param {number} left - specifies the number\n * @param {number} right - specifies the number\n * @returns {LeftCorners} - returns the value\n */\nfunction leftCollideCheck(left, right) {\n //eslint-disable-next-line\n var leftSide = false, rightSide = false;\n if (((left - getBodyScrollLeft()) < ContainerLeft())) {\n leftSide = true;\n }\n if (right > ContainerRight()) {\n rightSide = true;\n }\n return { leftSide: leftSide, rightSide: rightSide };\n}\n/**\n *\n * @param {HTMLElement} target - specifies the element\n * @param {EdgeOffset} edge - specifes the element\n * @param {EdgeOffset} tEdge - specifies the edge offset\n * @param {PositionLocation} pos - specifes the location\n * @param {ClientRect} elementRect - specifies the client\n * @param {boolean} deepCheck - specifies the boolean value\n * @returns {void}\n */\nfunction leftFlip(target, edge, tEdge, pos, elementRect, deepCheck) {\n var collideSide = leftCollideCheck(edge.TL.left, edge.TR.left);\n if ((tEdge.TL.left - getBodyScrollLeft()) <= ContainerLeft()) {\n collideSide.leftSide = false;\n }\n if (tEdge.TR.left > ContainerRight()) {\n collideSide.rightSide = false;\n }\n if ((collideSide.leftSide && !collideSide.rightSide) || (!collideSide.leftSide && collideSide.rightSide)) {\n if (pos.posX === 'right') {\n pos.posX = 'left';\n }\n else {\n pos.posX = 'right';\n }\n pos.offsetX = pos.offsetX + elementRect.width;\n pos.offsetX = -1 * pos.offsetX;\n pos.position = calculatePosition(target, pos.posX, pos.posY, false);\n setPosition(edge, pos, elementRect);\n if (deepCheck) {\n leftFlip(target, edge, tEdge, pos, elementRect, false);\n }\n }\n}\n/**\n *\n * @param {HTMLElement} target - specifies the element\n * @param {EdgeOffset} edge - specifies the offset\n * @param {EdgeOffset} tEdge - specifies the offset\n * @param {PositionLocation} pos - specifies the location\n * @param {ClientRect} elementRect - specifies the client rect\n * @param {boolean} deepCheck - specifies the boolean\n * @returns {void}\n */\nfunction topFlip(target, edge, tEdge, pos, elementRect, deepCheck) {\n var collideSide = topCollideCheck(edge.TL.top, edge.BL.top);\n if ((tEdge.TL.top - getBodyScrollTop()) <= ContainerTop()) {\n collideSide.topSide = false;\n }\n if (tEdge.BL.top >= ContainerBottom() && target.getBoundingClientRect().bottom < window.innerHeight) {\n collideSide.bottomSide = false;\n }\n if ((collideSide.topSide && !collideSide.bottomSide) || (!collideSide.topSide && collideSide.bottomSide)) {\n if (pos.posY === 'top') {\n pos.posY = 'bottom';\n }\n else {\n pos.posY = 'top';\n }\n pos.offsetY = pos.offsetY + elementRect.height;\n pos.offsetY = -1 * pos.offsetY;\n pos.position = calculatePosition(target, pos.posX, pos.posY, false, elementRect);\n setPosition(edge, pos, elementRect);\n if (deepCheck) {\n topFlip(target, edge, tEdge, pos, elementRect, false);\n }\n }\n}\n/**\n *\n * @param {number} top - specifies the number\n * @param {number} bottom - specifies the number\n * @returns {TopCorners} - retyrns the value\n */\nfunction topCollideCheck(top, bottom) {\n //eslint-disable-next-line\n var topSide = false, bottomSide = false;\n if ((top - getBodyScrollTop()) < ContainerTop()) {\n topSide = true;\n }\n if (bottom > ContainerBottom()) {\n bottomSide = true;\n }\n return { topSide: topSide, bottomSide: bottomSide };\n}\n/**\n * @returns {void}\n */\nfunction getTargetContainerWidth() {\n return targetContainer.getBoundingClientRect().width;\n}\n/**\n * @returns {void}\n */\nfunction getTargetContainerHeight() {\n return targetContainer.getBoundingClientRect().height;\n}\n/**\n * @returns {void}\n */\nfunction getTargetContainerLeft() {\n return targetContainer.getBoundingClientRect().left;\n}\n/**\n * @returns {void}\n */\nfunction getTargetContainerTop() {\n return targetContainer.getBoundingClientRect().top;\n}\n//eslint-disable-next-line\nfunction ContainerTop() {\n if (targetContainer) {\n return getTargetContainerTop();\n }\n return 0;\n}\n//eslint-disable-next-line\nfunction ContainerLeft() {\n if (targetContainer) {\n return getTargetContainerLeft();\n }\n return 0;\n}\n//eslint-disable-next-line\nfunction ContainerRight() {\n if (targetContainer) {\n return (getBodyScrollLeft() + getTargetContainerLeft() + getTargetContainerWidth());\n }\n return (getBodyScrollLeft() + getViewPortWidth());\n}\n//eslint-disable-next-line\nfunction ContainerBottom() {\n if (targetContainer) {\n return (getBodyScrollTop() + getTargetContainerTop() + getTargetContainerHeight());\n }\n return (getBodyScrollTop() + getViewPortHeight());\n}\n/**\n * @returns {number} - returns the scroll top value\n */\nfunction getBodyScrollTop() {\n // if(targetContainer)\n // return targetContainer.scrollTop;\n return parentDocument.documentElement.scrollTop || parentDocument.body.scrollTop;\n}\n/**\n * @returns {number} - returns the scroll left value\n */\nfunction getBodyScrollLeft() {\n // if(targetContainer)\n // return targetContainer.scrollLeft;\n return parentDocument.documentElement.scrollLeft || parentDocument.body.scrollLeft;\n}\n/**\n * @returns {number} - returns the viewport height\n */\nfunction getViewPortHeight() {\n return window.innerHeight;\n}\n/**\n * @returns {number} - returns the viewport width\n */\nfunction getViewPortWidth() {\n var windowWidth = window.innerWidth;\n var documentReact = document.documentElement.getBoundingClientRect();\n var offsetWidth = (isNullOrUndefined(document.documentElement)) ? 0 : documentReact.width;\n return windowWidth - (windowWidth - offsetWidth);\n}\n/**\n * @returns {void}\n */\nexport function destroy() {\n targetContainer = null;\n parentDocument = null;\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __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 { setStyleAttribute, addClass, removeClass, ChildProperty, Complex } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, formatUnit } from '@syncfusion/ej2-base';\nimport { Browser } from '@syncfusion/ej2-base';\nimport { calculatePosition, calculateRelativeBasedPosition } from '../common/position';\nimport { Animation, Property, Event, Component } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges } from '@syncfusion/ej2-base';\nimport { EventHandler } from '@syncfusion/ej2-base';\nimport { flip, fit, isCollide, destroy as collisionDestroy } from '../common/collision';\n/**\n * Specifies the offset position values.\n */\nvar PositionData = /** @class */ (function (_super) {\n __extends(PositionData, _super);\n function PositionData() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('left')\n ], PositionData.prototype, \"X\", void 0);\n __decorate([\n Property('top')\n ], PositionData.prototype, \"Y\", void 0);\n return PositionData;\n}(ChildProperty));\nexport { PositionData };\n// don't use space in classNames\nvar CLASSNAMES = {\n ROOT: 'e-popup',\n RTL: 'e-rtl',\n OPEN: 'e-popup-open',\n CLOSE: 'e-popup-close'\n};\n/**\n * Represents the Popup Component\n * ```html\n *
\n *
Popup Content
\n * ```\n * ```typescript\n * \n * ```\n */\nvar Popup = /** @class */ (function (_super) {\n __extends(Popup, _super);\n function Popup(element, options) {\n return _super.call(this, options, element) || this;\n }\n /**\n * Called internally if any of the property value changed.\n *\n * @param {PopupModel} newProp - specifies the new property\n * @param {PopupModel} oldProp - specifies the old property\n * @private\n * @returns {void}\n */\n Popup.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'width':\n setStyleAttribute(this.element, { 'width': formatUnit(newProp.width) });\n break;\n case 'height':\n setStyleAttribute(this.element, { 'height': formatUnit(newProp.height) });\n break;\n case 'zIndex':\n setStyleAttribute(this.element, { 'zIndex': newProp.zIndex });\n break;\n case 'enableRtl':\n this.setEnableRtl();\n break;\n case 'position':\n case 'relateTo':\n this.refreshPosition();\n break;\n case 'offsetX': {\n var x = newProp.offsetX - oldProp.offsetX;\n this.element.style.left = (parseInt(this.element.style.left, 10) + (x)).toString() + 'px';\n break;\n }\n case 'offsetY': {\n var y = newProp.offsetY - oldProp.offsetY;\n this.element.style.top = (parseInt(this.element.style.top, 10) + (y)).toString() + 'px';\n break;\n }\n case 'content':\n this.setContent();\n break;\n case 'actionOnScroll':\n if (newProp.actionOnScroll !== 'none') {\n this.wireScrollEvents();\n }\n else {\n this.unwireScrollEvents();\n }\n break;\n }\n }\n };\n /**\n * gets the Component module name.\n *\n * @returns {void}\n * @private\n */\n Popup.prototype.getModuleName = function () {\n return 'popup';\n };\n /**\n * To resolve if any collision occurs.\n *\n * @returns {void}\n */\n Popup.prototype.resolveCollision = function () {\n this.checkCollision();\n };\n /**\n * gets the persisted state properties of the Component.\n *\n * @returns {void}\n */\n Popup.prototype.getPersistData = function () {\n return this.addOnPersist([]);\n };\n /**\n * To destroy the control.\n *\n * @returns {void}\n */\n Popup.prototype.destroy = function () {\n if (this.element.classList.contains('e-popup-open')) {\n this.unwireEvents();\n }\n this.element.classList.remove(CLASSNAMES.ROOT, CLASSNAMES.RTL, CLASSNAMES.OPEN, CLASSNAMES.CLOSE);\n this.content = null;\n this.relateTo = null;\n collisionDestroy();\n _super.prototype.destroy.call(this);\n };\n /**\n * To Initialize the control rendering\n *\n * @returns {void}\n * @private\n */\n Popup.prototype.render = function () {\n this.element.classList.add(CLASSNAMES.ROOT);\n var styles = {};\n if (this.zIndex !== 1000) {\n styles.zIndex = this.zIndex;\n }\n if (this.width !== 'auto') {\n styles.width = formatUnit(this.width);\n }\n if (this.height !== 'auto') {\n styles.height = formatUnit(this.height);\n }\n setStyleAttribute(this.element, styles);\n this.fixedParent = false;\n this.setEnableRtl();\n this.setContent();\n };\n Popup.prototype.wireEvents = function () {\n if (Browser.isDevice) {\n EventHandler.add(window, 'orientationchange', this.orientationOnChange, this);\n }\n if (this.actionOnScroll !== 'none') {\n this.wireScrollEvents();\n }\n };\n Popup.prototype.wireScrollEvents = function () {\n if (this.getRelateToElement()) {\n for (var _i = 0, _a = this.getScrollableParent(this.getRelateToElement()); _i < _a.length; _i++) {\n var parent_1 = _a[_i];\n EventHandler.add(parent_1, 'scroll', this.scrollRefresh, this);\n }\n }\n };\n Popup.prototype.unwireEvents = function () {\n if (Browser.isDevice) {\n EventHandler.remove(window, 'orientationchange', this.orientationOnChange);\n }\n if (this.actionOnScroll !== 'none') {\n this.unwireScrollEvents();\n }\n };\n Popup.prototype.unwireScrollEvents = function () {\n if (this.getRelateToElement()) {\n for (var _i = 0, _a = this.getScrollableParent(this.getRelateToElement()); _i < _a.length; _i++) {\n var parent_2 = _a[_i];\n EventHandler.remove(parent_2, 'scroll', this.scrollRefresh);\n }\n }\n };\n Popup.prototype.getRelateToElement = function () {\n var relateToElement = this.relateTo === '' || isNullOrUndefined(this.relateTo) ?\n document.body : this.relateTo;\n this.setProperties({ relateTo: relateToElement }, true);\n return ((typeof this.relateTo) === 'string') ?\n document.querySelector(this.relateTo) : this.relateTo;\n };\n Popup.prototype.scrollRefresh = function (e) {\n if (this.actionOnScroll === 'reposition') {\n if (!isNullOrUndefined(this.element) && !(this.element.offsetParent === e.target ||\n (this.element.offsetParent && this.element.offsetParent.tagName === 'BODY' &&\n e.target.parentElement == null))) {\n this.refreshPosition();\n }\n }\n else if (this.actionOnScroll === 'hide') {\n this.hide();\n }\n if (this.actionOnScroll !== 'none') {\n if (this.getRelateToElement()) {\n var targetVisible = this.isElementOnViewport(this.getRelateToElement(), e.target);\n if (!targetVisible && !this.targetInvisibleStatus) {\n this.trigger('targetExitViewport');\n this.targetInvisibleStatus = true;\n }\n else if (targetVisible) {\n this.targetInvisibleStatus = false;\n }\n }\n }\n };\n /**\n * This method is to get the element visibility on viewport when scroll\n * the page. This method will returns true even though 1 px of element\n * part is in visible.\n *\n * @param {HTMLElement} relateToElement - specifies the element\n * @param {HTMLElement} scrollElement - specifies the scroll element\n * @returns {boolean} - retruns the boolean\n */\n // eslint-disable-next-line\n Popup.prototype.isElementOnViewport = function (relateToElement, scrollElement) {\n var scrollParents = this.getScrollableParent(relateToElement);\n for (var parent_3 = 0; parent_3 < scrollParents.length; parent_3++) {\n if (this.isElementVisible(relateToElement, scrollParents[parent_3])) {\n continue;\n }\n else {\n return false;\n }\n }\n return true;\n };\n Popup.prototype.isElementVisible = function (relateToElement, scrollElement) {\n var rect = this.checkGetBoundingClientRect(relateToElement);\n if (!rect.height || !rect.width) {\n return false;\n }\n if (!isNullOrUndefined(this.checkGetBoundingClientRect(scrollElement))) {\n var parent_4 = scrollElement.getBoundingClientRect();\n return !(rect.bottom < parent_4.top) &&\n (!(rect.bottom > parent_4.bottom) &&\n (!(rect.right > parent_4.right) &&\n !(rect.left < parent_4.left)));\n }\n else {\n var win = window;\n var windowView = {\n top: win.scrollY,\n left: win.scrollX,\n right: win.scrollX + win.outerWidth,\n bottom: win.scrollY + win.outerHeight\n };\n var off = calculatePosition(relateToElement);\n var ele = {\n top: off.top,\n left: off.left,\n right: off.left + rect.width,\n bottom: off.top + rect.height\n };\n var elementView = {\n top: windowView.bottom - ele.top,\n left: windowView.right - ele.left,\n bottom: ele.bottom - windowView.top,\n right: ele.right - windowView.left\n };\n return elementView.top > 0\n && elementView.left > 0\n && elementView.right > 0\n && elementView.bottom > 0;\n }\n };\n /**\n * Initialize the event handler\n *\n * @returns {void}\n * @private\n */\n Popup.prototype.preRender = function () {\n //There is no event handler\n };\n Popup.prototype.setEnableRtl = function () {\n this.reposition();\n if (this.enableRtl) {\n this.element.classList.add(CLASSNAMES.RTL);\n }\n else {\n this.element.classList.remove(CLASSNAMES.RTL);\n }\n };\n Popup.prototype.setContent = function () {\n if (!isNullOrUndefined(this.content)) {\n this.element.innerHTML = '';\n if (typeof (this.content) === 'string') {\n this.element.textContent = this.content;\n }\n else {\n var relateToElem = this.getRelateToElement();\n // eslint-disable-next-line\n var props = this.content.props;\n if (!relateToElem.classList.contains('e-dropdown-btn') || isNullOrUndefined(props)) {\n this.element.appendChild(this.content);\n }\n }\n }\n };\n Popup.prototype.orientationOnChange = function () {\n var _this = this;\n setTimeout(function () {\n _this.refreshPosition();\n }, 200);\n };\n /**\n * Based on the `relative` element and `offset` values, `Popup` element position will refreshed.\n *\n * @param {HTMLElement} target - The target element.\n * @param {boolean} collision - Specifies whether to check for collision.\n * @returns {void}\n */\n Popup.prototype.refreshPosition = function (target, collision) {\n if (!isNullOrUndefined(target)) {\n this.checkFixedParent(target);\n }\n this.reposition();\n if (!collision) {\n this.checkCollision();\n }\n };\n Popup.prototype.reposition = function () {\n var pos;\n var position;\n var relateToElement = this.getRelateToElement();\n if (typeof this.position.X === 'number' && typeof this.position.Y === 'number') {\n pos = { left: this.position.X, top: this.position.Y };\n }\n else if ((typeof this.position.X === 'string' && typeof this.position.Y === 'number') ||\n (typeof this.position.X === 'number' && typeof this.position.Y === 'string')) {\n var parentDisplay = void 0;\n var display = this.element.style.display;\n this.element.style.display = 'block';\n if (this.element.classList.contains('e-dlg-modal')) {\n parentDisplay = this.element.parentElement.style.display;\n this.element.parentElement.style.display = 'block';\n }\n position = this.getAnchorPosition(relateToElement, this.element, this.position, this.offsetX, this.offsetY);\n if (typeof this.position.X === 'string') {\n pos = { left: position.left, top: this.position.Y };\n }\n else {\n pos = { left: this.position.X, top: position.top };\n }\n this.element.style.display = display;\n if (this.element.classList.contains('e-dlg-modal')) {\n this.element.parentElement.style.display = parentDisplay;\n }\n }\n else if (relateToElement) {\n var height = this.element.clientHeight;\n var display = this.element.style.display;\n this.element.style.display = 'block';\n pos = this.getAnchorPosition(relateToElement, this.element, this.position, this.offsetX, this.offsetY, height);\n this.element.style.display = display;\n }\n else {\n pos = { left: 0, top: 0 };\n }\n if (!isNullOrUndefined(pos)) {\n this.element.style.left = pos.left + 'px';\n this.element.style.top = pos.top + 'px';\n }\n };\n Popup.prototype.checkGetBoundingClientRect = function (ele) {\n var eleRect;\n try {\n eleRect = ele.getBoundingClientRect();\n return eleRect;\n }\n catch (error) {\n return null;\n }\n };\n Popup.prototype.getAnchorPosition = function (anchorEle, ele, position, offsetX, offsetY, height) {\n if (height === void 0) { height = 0; }\n var eleRect = this.checkGetBoundingClientRect(ele);\n var anchorRect = this.checkGetBoundingClientRect(anchorEle);\n if (isNullOrUndefined(eleRect) || isNullOrUndefined(anchorRect)) {\n return null;\n }\n var anchor = anchorEle;\n var anchorPos = { left: 0, top: 0 };\n if (ele.offsetParent && ele.offsetParent.tagName === 'BODY' && anchorEle.tagName === 'BODY') {\n anchorPos = calculatePosition(anchorEle);\n }\n else {\n if ((ele.classList.contains('e-dlg-modal') && anchor.tagName !== 'BODY')) {\n ele = ele.parentElement;\n }\n anchorPos = calculateRelativeBasedPosition(anchor, ele);\n }\n switch (position.X) {\n default:\n case 'left':\n break;\n case 'center':\n if ((ele.classList.contains('e-dlg-modal') && anchor.tagName === 'BODY' && this.targetType === 'container')) {\n anchorPos.left += (window.innerWidth / 2 - eleRect.width / 2);\n }\n else if (this.targetType === 'container') {\n anchorPos.left += (anchorRect.width / 2 - eleRect.width / 2);\n }\n else {\n anchorPos.left += (anchorRect.width / 2);\n }\n break;\n case 'right':\n if ((ele.classList.contains('e-dlg-modal') && anchor.tagName === 'BODY' && this.targetType === 'container')) {\n anchorPos.left += (window.innerWidth - eleRect.width);\n }\n else if (this.targetType === 'container') {\n anchorPos.left += (anchorRect.width - eleRect.width);\n }\n else {\n anchorPos.left += (anchorRect.width);\n }\n break;\n }\n switch (position.Y) {\n default:\n case 'top':\n break;\n case 'center':\n if ((ele.classList.contains('e-dlg-modal') && anchor.tagName === 'BODY' && this.targetType === 'container')) {\n anchorPos.top += (window.innerHeight / 2 - eleRect.height / 2);\n }\n else if (this.targetType === 'container') {\n anchorPos.top += (anchorRect.height / 2 - eleRect.height / 2);\n }\n else {\n anchorPos.top += (anchorRect.height / 2);\n }\n break;\n case 'bottom':\n if ((ele.classList.contains('e-dlg-modal') && anchor.tagName === 'BODY' && this.targetType === 'container')) {\n anchorPos.top += (window.innerHeight - eleRect.height);\n }\n else if (this.targetType === 'container' && !ele.classList.contains('e-dialog')) {\n anchorPos.top += (anchorRect.height - eleRect.height);\n }\n else if (this.targetType === 'container' && ele.classList.contains('e-dialog')) {\n anchorPos.top += (anchorRect.height - height);\n }\n else {\n anchorPos.top += (anchorRect.height);\n }\n break;\n }\n anchorPos.left += offsetX;\n anchorPos.top += offsetY;\n return anchorPos;\n };\n Popup.prototype.callFlip = function (param) {\n var relateToElement = this.getRelateToElement();\n flip(this.element, relateToElement, this.offsetX, this.offsetY, this.position.X, this.position.Y, this.viewPortElement, param, this.fixedParent);\n };\n Popup.prototype.callFit = function (param) {\n if (isCollide(this.element, this.viewPortElement).length !== 0) {\n if (isNullOrUndefined(this.viewPortElement)) {\n var data = fit(this.element, this.viewPortElement, param);\n if (param.X) {\n this.element.style.left = data.left + 'px';\n }\n if (param.Y) {\n this.element.style.top = data.top + 'px';\n }\n }\n else {\n var elementRect = this.checkGetBoundingClientRect(this.element);\n var viewPortRect = this.checkGetBoundingClientRect(this.viewPortElement);\n if (isNullOrUndefined(elementRect) || isNullOrUndefined(viewPortRect)) {\n return null;\n }\n if (param && param.Y === true) {\n if (viewPortRect.top > elementRect.top) {\n this.element.style.top = '0px';\n }\n else if (viewPortRect.bottom < elementRect.bottom) {\n this.element.style.top = parseInt(this.element.style.top, 10) - (elementRect.bottom - viewPortRect.bottom) + 'px';\n }\n }\n if (param && param.X === true) {\n if (viewPortRect.right < elementRect.right) {\n this.element.style.left = parseInt(this.element.style.left, 10) - (elementRect.right - viewPortRect.right) + 'px';\n }\n else if (viewPortRect.left > elementRect.left) {\n this.element.style.left = parseInt(this.element.style.left, 10) + (viewPortRect.left - elementRect.left) + 'px';\n }\n }\n }\n }\n };\n Popup.prototype.checkCollision = function () {\n var horz = this.collision.X;\n var vert = this.collision.Y;\n if (horz === 'none' && vert === 'none') {\n return;\n }\n if (horz === 'flip' && vert === 'flip') {\n this.callFlip({ X: true, Y: true });\n }\n else if (horz === 'fit' && vert === 'fit') {\n this.callFit({ X: true, Y: true });\n }\n else {\n if (horz === 'flip') {\n this.callFlip({ X: true, Y: false });\n }\n else if (vert === 'flip') {\n this.callFlip({ Y: true, X: false });\n }\n if (horz === 'fit') {\n this.callFit({ X: true, Y: false });\n }\n else if (vert === 'fit') {\n this.callFit({ X: false, Y: true });\n }\n }\n };\n /**\n * Shows the popup element from screen.\n *\n * @returns {void}\n * @param {AnimationModel} animationOptions - specifies the model\n * @param { HTMLElement } relativeElement - To calculate the zIndex value dynamically.\n */\n Popup.prototype.show = function (animationOptions, relativeElement) {\n var _this = this;\n var relateToElement = this.getRelateToElement();\n if (relateToElement.classList.contains('e-filemanager')) {\n this.fmDialogContainer = this.element.getElementsByClassName('e-file-select-wrap')[0];\n }\n this.wireEvents();\n if (!isNullOrUndefined(this.fmDialogContainer) && Browser.isIos) {\n this.fmDialogContainer.style.display = 'block';\n }\n if (this.zIndex === 1000 || !isNullOrUndefined(relativeElement)) {\n var zIndexElement = (isNullOrUndefined(relativeElement)) ? this.element : relativeElement;\n this.zIndex = getZindexPartial(zIndexElement);\n setStyleAttribute(this.element, { 'zIndex': this.zIndex });\n }\n animationOptions = (!isNullOrUndefined(animationOptions) && typeof animationOptions === 'object') ?\n animationOptions : this.showAnimation;\n if (this.collision.X !== 'none' || this.collision.Y !== 'none') {\n removeClass([this.element], CLASSNAMES.CLOSE);\n addClass([this.element], CLASSNAMES.OPEN);\n this.checkCollision();\n removeClass([this.element], CLASSNAMES.OPEN);\n addClass([this.element], CLASSNAMES.CLOSE);\n }\n if (!isNullOrUndefined(animationOptions)) {\n animationOptions.begin = function () {\n if (!_this.isDestroyed) {\n removeClass([_this.element], CLASSNAMES.CLOSE);\n addClass([_this.element], CLASSNAMES.OPEN);\n }\n };\n animationOptions.end = function () {\n if (!_this.isDestroyed) {\n _this.trigger('open');\n }\n };\n new Animation(animationOptions).animate(this.element);\n }\n else {\n removeClass([this.element], CLASSNAMES.CLOSE);\n addClass([this.element], CLASSNAMES.OPEN);\n this.trigger('open');\n }\n };\n /**\n * Hides the popup element from screen.\n *\n * @param {AnimationModel} animationOptions - To give the animation options.\n * @returns {void}\n */\n Popup.prototype.hide = function (animationOptions) {\n var _this = this;\n animationOptions = (!isNullOrUndefined(animationOptions) && typeof animationOptions === 'object') ?\n animationOptions : this.hideAnimation;\n if (!isNullOrUndefined(animationOptions)) {\n animationOptions.end = function () {\n if (!_this.isDestroyed) {\n removeClass([_this.element], CLASSNAMES.OPEN);\n addClass([_this.element], CLASSNAMES.CLOSE);\n _this.trigger('close');\n }\n };\n new Animation(animationOptions).animate(this.element);\n }\n else {\n removeClass([this.element], CLASSNAMES.OPEN);\n addClass([this.element], CLASSNAMES.CLOSE);\n this.trigger('close');\n }\n this.unwireEvents();\n };\n /**\n * Gets scrollable parent elements for the given element.\n *\n * @returns {void}\n * @param { HTMLElement } element - Specify the element to get the scrollable parents of it.\n */\n Popup.prototype.getScrollableParent = function (element) {\n this.checkFixedParent(element);\n return getScrollableParent(element, this.fixedParent);\n };\n Popup.prototype.checkFixedParent = function (element) {\n var parent = element.parentElement;\n while (parent && parent.tagName !== 'HTML') {\n var parentStyle = getComputedStyle(parent);\n if ((parentStyle.position === 'fixed' || parentStyle.position === 'sticky') && !isNullOrUndefined(this.element) && this.element.offsetParent &&\n this.element.offsetParent.tagName === 'BODY' && getComputedStyle(this.element.offsetParent).overflow !== 'hidden') {\n this.element.style.top = window.scrollY > parseInt(this.element.style.top, 10) ?\n formatUnit(window.scrollY - parseInt(this.element.style.top, 10))\n : formatUnit(parseInt(this.element.style.top, 10) - window.scrollY);\n this.element.style.position = 'fixed';\n this.fixedParent = true;\n }\n parent = parent.parentElement;\n if (!isNullOrUndefined(this.element) && isNullOrUndefined(this.element.offsetParent) && parentStyle.position === 'fixed'\n && this.element.style.position === 'fixed') {\n this.fixedParent = true;\n }\n }\n };\n __decorate([\n Property('auto')\n ], Popup.prototype, \"height\", void 0);\n __decorate([\n Property('auto')\n ], Popup.prototype, \"width\", void 0);\n __decorate([\n Property(null)\n ], Popup.prototype, \"content\", void 0);\n __decorate([\n Property('container')\n ], Popup.prototype, \"targetType\", void 0);\n __decorate([\n Property(null)\n ], Popup.prototype, \"viewPortElement\", void 0);\n __decorate([\n Property({ X: 'none', Y: 'none' })\n ], Popup.prototype, \"collision\", void 0);\n __decorate([\n Property('')\n ], Popup.prototype, \"relateTo\", void 0);\n __decorate([\n Complex({}, PositionData)\n ], Popup.prototype, \"position\", void 0);\n __decorate([\n Property(0)\n ], Popup.prototype, \"offsetX\", void 0);\n __decorate([\n Property(0)\n ], Popup.prototype, \"offsetY\", void 0);\n __decorate([\n Property(1000)\n ], Popup.prototype, \"zIndex\", void 0);\n __decorate([\n Property(false)\n ], Popup.prototype, \"enableRtl\", void 0);\n __decorate([\n Property('reposition')\n ], Popup.prototype, \"actionOnScroll\", void 0);\n __decorate([\n Property(null)\n ], Popup.prototype, \"showAnimation\", void 0);\n __decorate([\n Property(null)\n ], Popup.prototype, \"hideAnimation\", void 0);\n __decorate([\n Event()\n ], Popup.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], Popup.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], Popup.prototype, \"targetExitViewport\", void 0);\n Popup = __decorate([\n NotifyPropertyChanges\n ], Popup);\n return Popup;\n}(Component));\nexport { Popup };\n/**\n * Gets scrollable parent elements for the given element.\n *\n * @param { HTMLElement } element - Specify the element to get the scrollable parents of it.\n * @param {boolean} fixedParent - specifies the parent element\n * @private\n * @returns {void}\n */\nexport function getScrollableParent(element, fixedParent) {\n var eleStyle = getComputedStyle(element);\n var scrollParents = [];\n var overflowRegex = /(auto|scroll)/;\n var parent = element.parentElement;\n while (parent && parent.tagName !== 'HTML') {\n var parentStyle = getComputedStyle(parent);\n if (!(eleStyle.position === 'absolute' && parentStyle.position === 'static')\n && overflowRegex.test(parentStyle.overflow + parentStyle.overflowY + parentStyle.overflowX)) {\n scrollParents.push(parent);\n }\n parent = parent.parentElement;\n }\n if (!fixedParent) {\n scrollParents.push(document);\n }\n return scrollParents;\n}\n/**\n * Gets the maximum z-index of the given element.\n *\n * @returns {void}\n * @param { HTMLElement } element - Specify the element to get the maximum z-index of it.\n * @private\n */\nexport function getZindexPartial(element) {\n // upto body traversal\n var parent = element.parentElement;\n var parentZindex = [];\n while (parent) {\n if (parent.tagName !== 'BODY') {\n var index = document.defaultView.getComputedStyle(parent, null).getPropertyValue('z-index');\n var position = document.defaultView.getComputedStyle(parent, null).getPropertyValue('position');\n if (index !== 'auto' && position !== 'static') {\n parentZindex.push(index);\n }\n parent = parent.parentElement;\n }\n else {\n break;\n }\n }\n var childrenZindex = [];\n for (var i = 0; i < document.body.children.length; i++) {\n if (!element.isEqualNode(document.body.children[i])) {\n var index = document.defaultView.getComputedStyle(document.body.children[i], null).getPropertyValue('z-index');\n var position = document.defaultView.getComputedStyle(document.body.children[i], null).getPropertyValue('position');\n if (index !== 'auto' && position !== 'static') {\n childrenZindex.push(index);\n }\n }\n }\n childrenZindex.push('999');\n var siblingsZindex = [];\n if (!isNullOrUndefined(element.parentElement) && element.parentElement.tagName !== 'BODY') {\n var childNodes = [].slice.call(element.parentElement.children);\n for (var i = 0; i < childNodes.length; i++) {\n if (!element.isEqualNode(childNodes[i])) {\n var index = document.defaultView.getComputedStyle(childNodes[i], null).getPropertyValue('z-index');\n var position = document.defaultView.getComputedStyle(childNodes[i], null).getPropertyValue('position');\n if (index !== 'auto' && position !== 'static') {\n siblingsZindex.push(index);\n }\n }\n }\n }\n var finalValue = parentZindex.concat(childrenZindex, siblingsZindex);\n // eslint-disable-next-line\n var currentZindexValue = Math.max.apply(Math, finalValue) + 1;\n return currentZindexValue > 2147483647 ? 2147483647 : currentZindexValue;\n}\n/**\n * Gets the maximum z-index of the page.\n *\n * @returns {void}\n * @param { HTMLElement } tagName - Specify the tagName to get the maximum z-index of it.\n * @private\n */\nexport function getMaxZindex(tagName) {\n if (tagName === void 0) { tagName = ['*']; }\n var maxZindex = [];\n for (var i = 0; i < tagName.length; i++) {\n var elements = document.getElementsByTagName(tagName[i]);\n for (var i_1 = 0; i_1 < elements.length; i_1++) {\n var index = document.defaultView.getComputedStyle(elements[i_1], null).getPropertyValue('z-index');\n var position = document.defaultView.getComputedStyle(elements[i_1], null).getPropertyValue('position');\n if (index !== 'auto' && position !== 'static') {\n maxZindex.push(index);\n }\n }\n }\n // eslint-disable-next-line\n var currentZindexValue = Math.max.apply(Math, maxZindex) + 1;\n return currentZindexValue > 2147483647 ? 2147483647 : currentZindexValue;\n}\n","/**\n * Resize library\n */\nimport { isNullOrUndefined as isNOU, createElement, EventHandler, detach, Browser } from '@syncfusion/ej2-base';\nvar elementClass = ['north-west', 'north', 'north-east', 'west', 'east', 'south-west', 'south', 'south-east'];\nvar RESIZE_HANDLER = 'e-resize-handle';\nvar FOCUSED_HANDLER = 'e-focused-handle';\nvar DIALOG_RESIZABLE = 'e-dlg-resizable';\nvar RESTRICT_LEFT = ['e-restrict-left'];\nvar RESIZE_WITHIN_VIEWPORT = 'e-resize-viewport';\nvar dialogBorderResize = ['north', 'west', 'east', 'south'];\nvar targetElement;\nvar selectedHandler;\nvar originalWidth = 0;\nvar originalHeight = 0;\nvar originalX = 0;\nvar originalY = 0;\nvar originalMouseX = 0;\nvar originalMouseY = 0;\nvar minHeight;\nvar maxHeight;\nvar minWidth;\nvar maxWidth;\nvar containerElement;\nvar resizeStart = null;\nvar resize = null;\nvar resizeEnd = null;\nvar resizeWestWidth;\nvar setLeft = true;\nvar previousWidth = 0;\nvar setWidth = true;\n// eslint-disable-next-line\nvar proxy;\n/**\n *\n * @param {ResizeArgs} args - specifies the resize args\n * @returns {void}\n */\nexport function createResize(args) {\n resizeStart = args.resizeBegin;\n resize = args.resizing;\n resizeEnd = args.resizeComplete;\n targetElement = getDOMElement(args.element);\n containerElement = getDOMElement(args.boundary);\n var directions = args.direction.split(' ');\n for (var i = 0; i < directions.length; i++) {\n if (dialogBorderResize.indexOf(directions[i]) >= 0 && directions[i]) {\n setBorderResizeElm(directions[i]);\n }\n else if (directions[i].trim() !== '') {\n var resizeHandler = createElement('div', { className: 'e-icons ' + RESIZE_HANDLER + ' ' + 'e-' + directions[i] });\n targetElement.appendChild(resizeHandler);\n }\n }\n minHeight = args.minHeight;\n minWidth = args.minWidth;\n maxWidth = args.maxWidth;\n maxHeight = args.maxHeight;\n if (args.proxy && args.proxy.element && args.proxy.element.classList.contains('e-dialog')) {\n wireEvents(args.proxy);\n }\n else {\n wireEvents();\n }\n}\n/**\n *\n * @param {string} direction - specifies the string\n * @returns {void}\n */\nfunction setBorderResizeElm(direction) {\n calculateValues();\n var borderBottom = createElement('span', {\n attrs: {\n 'unselectable': 'on', 'contenteditable': 'false'\n }\n });\n borderBottom.setAttribute('class', 'e-dialog-border-resize e-' + direction);\n if (direction === 'south') {\n borderBottom.style.height = '2px';\n borderBottom.style.width = '100%';\n borderBottom.style.bottom = '0px';\n borderBottom.style.left = '0px';\n }\n if (direction === 'north') {\n borderBottom.style.height = '2px';\n borderBottom.style.width = '100%';\n borderBottom.style.top = '0px';\n borderBottom.style.left = '0px';\n }\n if (direction === 'east') {\n borderBottom.style.height = '100%';\n borderBottom.style.width = '2px';\n borderBottom.style.right = '0px';\n borderBottom.style.top = '0px';\n }\n if (direction === 'west') {\n borderBottom.style.height = '100%';\n borderBottom.style.width = '2px';\n borderBottom.style.left = '0px';\n borderBottom.style.top = '0px';\n }\n targetElement.appendChild(borderBottom);\n}\n/**\n *\n * @param {string} element - specifies the element\n * @returns {HTMLElement} - returns the element\n */\nfunction getDOMElement(element) {\n var domElement;\n if (!isNOU(element)) {\n if (typeof (element) === 'string') {\n domElement = document.querySelector(element);\n }\n else {\n domElement = element;\n }\n }\n return domElement;\n}\nfunction wireEvents(args) {\n var context = args || this;\n var resizers = targetElement.querySelectorAll('.' + RESIZE_HANDLER);\n for (var i = 0; i < resizers.length; i++) {\n selectedHandler = resizers[i];\n EventHandler.add(selectedHandler, 'mousedown', onMouseDown, context);\n var eventName = (Browser.info.name === 'msie') ? 'pointerdown' : 'touchstart';\n EventHandler.add(selectedHandler, eventName, onTouchStart, context);\n }\n var borderResizers = targetElement.querySelectorAll('.e-dialog-border-resize');\n if (!isNOU(borderResizers)) {\n for (var i = 0; i < borderResizers.length; i++) {\n selectedHandler = borderResizers[i];\n EventHandler.add(selectedHandler, 'mousedown', onMouseDown, context);\n var eventName = (Browser.info.name === 'msie') ? 'pointerdown' : 'touchstart';\n EventHandler.add(selectedHandler, eventName, onTouchStart, context);\n }\n }\n}\n/* istanbul ignore next */\n/**\n *\n * @param {string} e - specifies the string\n * @returns {string} - returns the string\n */\nfunction getEventType(e) {\n return (e.indexOf('mouse') > -1) ? 'mouse' : 'touch';\n}\n/* istanbul ignore next */\n/**\n *\n * @param {MouseEvent} e - specifies the mouse event\n * @returns {void}\n */\nfunction onMouseDown(e) {\n e.preventDefault();\n targetElement = e.target.parentElement;\n calculateValues();\n originalMouseX = e.pageX;\n originalMouseY = e.pageY;\n e.target.classList.add(FOCUSED_HANDLER);\n if (!isNOU(resizeStart)) {\n var proxy_1 = null || this;\n if (resizeStart(e, proxy_1) === true) {\n return;\n }\n }\n if (this.targetEle && targetElement && targetElement.querySelector('.' + DIALOG_RESIZABLE)) {\n containerElement = this.target === ('body' || 'document.body' || document.body) ? null : this.targetEle;\n maxWidth = this.targetEle.clientWidth;\n maxHeight = this.targetEle.clientHeight;\n }\n var target = (isNOU(containerElement)) ? document : containerElement;\n EventHandler.add(target, 'mousemove', onMouseMove, this);\n EventHandler.add(document, 'mouseup', onMouseUp, this);\n for (var i = 0; i < RESTRICT_LEFT.length; i++) {\n if (targetElement.classList.contains(RESTRICT_LEFT[i])) {\n setLeft = false;\n }\n else {\n setLeft = true;\n }\n }\n}\n/* istanbul ignore next */\n/**\n *\n * @param {MouseEvent} e - specifies the event\n * @returns {void}\n */\nfunction onMouseUp(e) {\n var touchMoveEvent = (Browser.info.name === 'msie') ? 'pointermove' : 'touchmove';\n var touchEndEvent = (Browser.info.name === 'msie') ? 'pointerup' : 'touchend';\n var target = (isNOU(containerElement)) ? document : containerElement;\n var eventName = (Browser.info.name === 'msie') ? 'pointerdown' : 'touchstart';\n EventHandler.remove(target, 'mousemove', onMouseMove);\n EventHandler.remove(target, touchMoveEvent, onMouseMove);\n EventHandler.remove(target, eventName, onMouseMove);\n if (!isNOU(document.body.querySelector('.' + FOCUSED_HANDLER))) {\n document.body.querySelector('.' + FOCUSED_HANDLER).classList.remove(FOCUSED_HANDLER);\n }\n if (!isNOU(resizeEnd)) {\n var proxy_2 = null || this;\n resizeEnd(e, proxy_2);\n }\n EventHandler.remove(document, 'mouseup', onMouseUp);\n EventHandler.remove(document, touchEndEvent, onMouseUp);\n}\n/* istanbul ignore next */\n/**\n * @returns {void}\n */\nfunction calculateValues() {\n originalWidth = parseFloat(getComputedStyle(targetElement, null).getPropertyValue('width').replace('px', ''));\n originalHeight = parseFloat(getComputedStyle(targetElement, null).getPropertyValue('height').replace('px', ''));\n originalX = targetElement.getBoundingClientRect().left;\n originalY = targetElement.getBoundingClientRect().top;\n}\n/* istanbul ignore next */\n/**\n *\n * @param {MouseEvent} e - specifies the event\n * @returns {void}\n */\nfunction onTouchStart(e) {\n targetElement = e.target.parentElement;\n calculateValues();\n var dialogResizeElement = targetElement.classList.contains('e-dialog');\n if ((e.target.classList.contains(RESIZE_HANDLER) || e.target.classList.contains('e-dialog-border-resize')) && dialogResizeElement) {\n e.target.classList.add(FOCUSED_HANDLER);\n }\n var coordinates = e.touches ? e.changedTouches[0] : e;\n originalMouseX = coordinates.pageX;\n originalMouseY = coordinates.pageY;\n if (!isNOU(resizeStart)) {\n var proxy_3 = null || this;\n if (resizeStart(e, proxy_3) === true) {\n return;\n }\n }\n var touchMoveEvent = (Browser.info.name === 'msie') ? 'pointermove' : 'touchmove';\n var touchEndEvent = (Browser.info.name === 'msie') ? 'pointerup' : 'touchend';\n var target = (isNOU(containerElement)) ? document : containerElement;\n EventHandler.add(target, touchMoveEvent, onMouseMove, this);\n EventHandler.add(document, touchEndEvent, onMouseUp, this);\n}\n/* istanbul ignore next */\n/**\n *\n * @param {MouseEvent} e - specifies the event\n * @returns {void}\n */\nfunction onMouseMove(e) {\n if (e.target.classList.contains(RESIZE_HANDLER) && e.target.classList.contains(FOCUSED_HANDLER)) {\n selectedHandler = e.target;\n }\n else if (!isNOU(document.body.querySelector('.' + FOCUSED_HANDLER))) {\n selectedHandler = document.body.querySelector('.' + FOCUSED_HANDLER);\n }\n if (!isNOU(selectedHandler)) {\n var resizeTowards = '';\n for (var i = 0; i < elementClass.length; i++) {\n if (selectedHandler.classList.contains('e-' + elementClass[i])) {\n resizeTowards = elementClass[i];\n }\n }\n if (!isNOU(resize)) {\n var proxy_4 = null || this;\n resize(e, proxy_4);\n }\n switch (resizeTowards) {\n case 'south':\n resizeSouth(e);\n break;\n case 'north':\n resizeNorth(e);\n break;\n case 'west':\n resizeWest(e);\n break;\n case 'east':\n resizeEast(e);\n break;\n case 'south-east':\n resizeSouth(e);\n resizeEast(e);\n break;\n case 'south-west':\n resizeSouth(e);\n resizeWest(e);\n break;\n case 'north-east':\n resizeNorth(e);\n resizeEast(e);\n break;\n case 'north-west':\n resizeNorth(e);\n resizeWest(e);\n break;\n default: break;\n }\n }\n}\n/* istanbul ignore next */\n/**\n *\n * @param {HTMLElement} element - specifies the eleemnt\n * @returns {ClientRect} - returns the client\n */\nfunction getClientRectValues(element) {\n return element.getBoundingClientRect();\n}\n/**\n * @param {MouseEvent | TouchEvent} e - specifies the event\n * @returns {void}\n */\nfunction resizeSouth(e) {\n var documentHeight = document.documentElement.clientHeight;\n var calculateValue = false;\n var coordinates = e.touches ? e.changedTouches[0] : e;\n var currentpageY = coordinates.pageY;\n var targetRectValues = getClientRectValues(targetElement);\n var containerRectValues;\n if (!isNOU(containerElement)) {\n containerRectValues = getClientRectValues(containerElement);\n }\n if (!isNOU(containerElement)) {\n calculateValue = true;\n }\n else if (isNOU(containerElement) && ((documentHeight - currentpageY) >= 0 || (targetRectValues.top < 0))) {\n calculateValue = true;\n }\n var calculatedHeight = originalHeight + (currentpageY - originalMouseY);\n calculatedHeight = (calculatedHeight > minHeight) ? calculatedHeight : minHeight;\n var containerTop = 0;\n if (!isNOU(containerElement)) {\n containerTop = containerRectValues.top;\n }\n var borderValue = isNOU(containerElement) ? 0 : containerElement.offsetHeight - containerElement.clientHeight;\n var topWithoutborder = (targetRectValues.top - containerTop) - (borderValue / 2);\n topWithoutborder = (topWithoutborder < 0) ? 0 : topWithoutborder;\n if (targetRectValues.top > 0 && (topWithoutborder + calculatedHeight) > maxHeight) {\n calculateValue = false;\n if (targetElement.classList.contains(RESIZE_WITHIN_VIEWPORT)) {\n return;\n }\n targetElement.style.height = (maxHeight - parseInt(topWithoutborder.toString(), 10)) + 'px';\n return;\n }\n var targetTop = 0;\n if (calculateValue) {\n if (targetRectValues.top < 0 && (documentHeight + (targetRectValues.height + targetRectValues.top) > 0)) {\n targetTop = targetRectValues.top;\n if ((calculatedHeight + targetTop) <= 30) {\n calculatedHeight = (targetRectValues.height - (targetRectValues.height + targetRectValues.top)) + 30;\n }\n }\n if (((calculatedHeight + targetRectValues.top) >= maxHeight)) {\n targetElement.style.height = targetRectValues.height +\n (documentHeight - (targetRectValues.height + targetRectValues.top)) + 'px';\n }\n var calculatedTop = (isNOU(containerElement)) ? targetTop : topWithoutborder;\n if (calculatedHeight >= minHeight && ((calculatedHeight + calculatedTop) <= maxHeight)) {\n targetElement.style.height = calculatedHeight + 'px';\n }\n }\n}\n/**\n * Resizes the element towards the north direction.\n *\n * @param {MouseEvent | TouchEvent} e - The event object.\n * @returns {void}\n */\nfunction resizeNorth(e) {\n var calculateValue = false;\n var boundaryRectValues;\n var pageY = (getEventType(e.type) === 'mouse') ? e.pageY : e.touches[0].pageY;\n var targetRectValues = getClientRectValues(targetElement);\n if (!isNOU(containerElement)) {\n boundaryRectValues = getClientRectValues(containerElement);\n }\n if (!isNOU(containerElement) && (targetRectValues.top - boundaryRectValues.top) > 0) {\n calculateValue = true;\n }\n else if (isNOU(containerElement) && pageY > 0) {\n calculateValue = true;\n }\n var currentHeight = originalHeight - (pageY - originalMouseY);\n if (calculateValue) {\n if (currentHeight >= minHeight && currentHeight <= maxHeight) {\n var containerTop = 0;\n if (!isNOU(containerElement)) {\n containerTop = boundaryRectValues.top;\n }\n var top_1 = (originalY - containerTop) + (pageY - originalMouseY);\n top_1 = top_1 > 0 ? top_1 : 1;\n targetElement.style.height = currentHeight + 'px';\n targetElement.style.top = top_1 + 'px';\n }\n }\n}\n/**\n * Resizes the element towards the west direction.\n *\n * @param {MouseEvent | TouchEvent} e - The event object.\n * @returns {void}\n */\nfunction resizeWest(e) {\n var documentWidth = document.documentElement.clientWidth;\n var calculateValue = false;\n var rectValues;\n if (!isNOU(containerElement)) {\n rectValues = getClientRectValues(containerElement);\n }\n var pageX = (getEventType(e.type) === 'mouse') ? e.pageX : e.touches[0].pageX;\n var targetRectValues = getClientRectValues(targetElement);\n var borderValue = isNOU(containerElement) ? 0 : containerElement.offsetWidth - containerElement.clientWidth;\n /* eslint-disable */\n var left = isNOU(containerElement) ? 0 : rectValues.left;\n var containerWidth = isNOU(containerElement) ? 0 : rectValues.width;\n /* eslint-enable */\n if (isNOU(resizeWestWidth)) {\n if (!isNOU(containerElement)) {\n resizeWestWidth = (((targetRectValues.left - left) - borderValue / 2)) + targetRectValues.width;\n resizeWestWidth = resizeWestWidth + (containerWidth - borderValue - resizeWestWidth);\n }\n else {\n resizeWestWidth = documentWidth;\n }\n }\n if (!isNOU(containerElement) &&\n (Math.floor((targetRectValues.left - rectValues.left) + targetRectValues.width +\n (rectValues.right - targetRectValues.right)) - borderValue) <= maxWidth) {\n calculateValue = true;\n }\n else if (isNOU(containerElement) && pageX >= 0) {\n calculateValue = true;\n }\n var calculatedWidth = originalWidth - (pageX - originalMouseX);\n if (setLeft) {\n calculatedWidth = (calculatedWidth > resizeWestWidth) ? resizeWestWidth : calculatedWidth;\n }\n if (calculateValue) {\n if (calculatedWidth >= minWidth && calculatedWidth <= maxWidth) {\n var containerLeft = 0;\n if (!isNOU(containerElement)) {\n containerLeft = rectValues.left;\n }\n var left_1 = (originalX - containerLeft) + (pageX - originalMouseX);\n left_1 = (left_1 > 0) ? left_1 : 1;\n if (calculatedWidth !== previousWidth && setWidth) {\n targetElement.style.width = calculatedWidth + 'px';\n }\n if (setLeft) {\n targetElement.style.left = left_1 + 'px';\n if (left_1 === 1) {\n setWidth = false;\n }\n else {\n setWidth = true;\n }\n }\n }\n }\n previousWidth = calculatedWidth;\n}\n/**\n * Resizes the element towards the east direction.\n *\n * @param {MouseEvent | TouchEvent} e - The event object.\n * @returns {void}\n */\nfunction resizeEast(e) {\n var documentWidth = document.documentElement.clientWidth;\n var calculateValue = false;\n var containerRectValues;\n if (!isNOU(containerElement)) {\n containerRectValues = getClientRectValues(containerElement);\n }\n var coordinates = e.touches ? e.changedTouches[0] : e;\n var pageX = coordinates.pageX;\n var targetRectValues = getClientRectValues(targetElement);\n if (!isNOU(containerElement) && (((targetRectValues.left - containerRectValues.left) + targetRectValues.width) <= maxWidth\n || (targetRectValues.right - containerRectValues.left) >= targetRectValues.width)) {\n calculateValue = true;\n }\n else if (isNOU(containerElement) && (documentWidth - pageX) > 0) {\n calculateValue = true;\n }\n var calculatedWidth = originalWidth + (pageX - originalMouseX);\n var containerLeft = 0;\n if (!isNOU(containerElement)) {\n containerLeft = containerRectValues.left;\n }\n if (((targetRectValues.left - containerLeft) + calculatedWidth) > maxWidth) {\n calculateValue = false;\n if (targetElement.classList.contains(RESIZE_WITHIN_VIEWPORT)) {\n return;\n }\n targetElement.style.width = maxWidth - (targetRectValues.left - containerLeft) + 'px';\n }\n if (calculateValue) {\n if (calculatedWidth >= minWidth && calculatedWidth <= maxWidth) {\n targetElement.style.width = calculatedWidth + 'px';\n }\n }\n}\n/* istanbul ignore next */\n/**\n *\n * @param {number} minimumHeight - specifies the number\n * @returns {void}\n */\nexport function setMinHeight(minimumHeight) {\n minHeight = minimumHeight;\n}\n/**\n *\n * @param {number} value - specifies the number value\n * @returns {void}\n */\nexport function setMaxWidth(value) {\n maxWidth = value;\n}\n/**\n *\n * @param {number} value - specifies the number value\n * @returns {void}\n */\nexport function setMaxHeight(value) {\n maxHeight = value;\n}\n/**\n * @returns {void}\n */\nexport function removeResize() {\n var handlers = targetElement.querySelectorAll('.' + RESIZE_HANDLER);\n for (var i = 0; i < handlers.length; i++) {\n detach(handlers[i]);\n }\n var borderResizers = targetElement.querySelectorAll('.e-dialog-border-resize');\n if (!isNOU(borderResizers)) {\n for (var i = 0; i < borderResizers.length; i++) {\n detach(borderResizers[i]);\n }\n }\n}\n","import { isNullOrUndefined, classList, createElement, Browser } from '@syncfusion/ej2-base';\nvar globalTimeOut = {};\nvar DEFT_MAT_WIDTH = 30;\nvar DEFT_MAT3_WIDTH = 30;\nvar DEFT_FAB_WIDTH = 30;\nvar DEFT_FLUENT_WIDTH = 30;\nvar DEFT_FLUENT2_WIDTH = 30;\nvar DEFT_BOOT_WIDTH = 30;\nvar DEFT_BOOT4_WIDTH = 36;\nvar DEFT_BOOT5_WIDTH = 36;\nvar CLS_SHOWSPIN = 'e-spin-show';\nvar CLS_HIDESPIN = 'e-spin-hide';\nvar CLS_MATERIALSPIN = 'e-spin-material';\nvar CLS_MATERIAL3SPIN = 'e-spin-material3';\nvar CLS_FABRICSPIN = 'e-spin-fabric';\nvar CLS_FLUENTSPIN = 'e-spin-fluent';\nvar CLS_FLUENT2SPIN = 'e-spin-fluent2';\nvar CLS_TAILWINDSPIN = 'e-spin-tailwind';\nvar CLS_BOOTSPIN = 'e-spin-bootstrap';\nvar CLS_BOOT4SPIN = 'e-spin-bootstrap4';\nvar CLS_BOOT5SPIN = 'e-spin-bootstrap5';\nvar CLS_HIGHCONTRASTSPIN = 'e-spin-high-contrast';\nvar CLS_SPINWRAP = 'e-spinner-pane';\nvar CLS_SPININWRAP = 'e-spinner-inner';\nvar CLS_SPINCIRCLE = 'e-path-circle';\nvar CLS_SPINARC = 'e-path-arc';\nvar CLS_SPINLABEL = 'e-spin-label';\nvar CLS_SPINTEMPLATE = 'e-spin-template';\nvar spinTemplate = null;\nvar spinCSSClass = null;\n/**\n * Function to change the Spinners in a page globally from application end.\n * ```\n * E.g : blazorSpinner({ action: \"Create\", options: {target: targetElement}, type: \"\" });\n * ```\n *\n * @param {string} action - specifies the string\n * @param {CreateArgs} options - specifies the args\n * @param {string} target - specifies the target\n * @param {string} type - specifes the type\n * @returns {void}\n * @private\n */\nexport function Spinner(action, options, target, type) {\n switch (action) {\n case 'Create':\n /* eslint-disable */\n var element = document.querySelector(options.target);\n var args = {\n type: type, target: element, cssClass: options.cssClass,\n label: options.label, width: options.width\n };\n /* eslint-enable */\n createSpinner(args);\n break;\n case 'Show':\n showSpinner(document.querySelector(target));\n break;\n case 'Hide':\n hideSpinner(document.querySelector(target));\n break;\n case 'Set': {\n var setArgs = { cssClass: options.cssClass, type: type };\n setSpinner(setArgs);\n break;\n }\n }\n}\n/**\n * Create a spinner for the specified target element.\n * ```\n * E.g : createSpinner({ target: targetElement, width: '34px', label: 'Loading..' });\n * ```\n *\n * @param {SpinnerArgs} args - specifies the args\n * @param {CreateElementArgs} internalCreateElement - specifis the element args\n * @returns {void}\n * @private\n */\nexport function createSpinner(args, internalCreateElement) {\n var _a;\n if (!args.target) {\n return;\n }\n var radius;\n var makeElement = !isNullOrUndefined(internalCreateElement) ? internalCreateElement : createElement;\n // eslint-disable-next-line\n var container = create_spinner_container(args.target, makeElement);\n if (!isNullOrUndefined(args.cssClass)) {\n var classNames = args.cssClass.split(' ').filter(function (className) { return className.trim() !== ''; });\n (_a = container.wrap.classList).add.apply(_a, classNames);\n }\n if (!isNullOrUndefined(args.template) || !isNullOrUndefined(spinTemplate)) {\n var template = !isNullOrUndefined(args.template) ? args.template : spinTemplate;\n container.wrap.classList.add(CLS_SPINTEMPLATE);\n replaceContent(container.wrap, template, spinCSSClass);\n }\n else {\n var theme = !isNullOrUndefined(args.type) ? args.type : getTheme(container.wrap);\n var width = !isNullOrUndefined(args.width) ? args.width : undefined;\n radius = calculateRadius(width, theme);\n setTheme(theme, container.wrap, radius, makeElement);\n if (!isNullOrUndefined(args.label)) {\n createLabel(container.inner_wrap, args.label, makeElement);\n }\n }\n container.wrap.classList.add(CLS_HIDESPIN);\n container = null;\n}\n/**\n *\n * @param {HTMLElement} container - specifies the element\n * @param {string} label - specifies the string\n * @param {createElementParams} makeElement - specifies the element\n * @returns {HTMLElement} - returns the element\n */\nfunction createLabel(container, label, makeElement) {\n var labelEle = makeElement('div', {});\n labelEle.classList.add(CLS_SPINLABEL);\n labelEle.innerHTML = label;\n container.appendChild(labelEle);\n return labelEle;\n}\n/**\n *\n * @param {HTMLElement} container - specifies the element\n * @param {number} radius - specifies the radius\n * @param {createElementParams} makeElement - specifies the element\n * @returns {void}\n */\nfunction createMaterialSpinner(container, radius, makeElement) {\n var uniqueID = random_generator();\n globalTimeOut[\"\" + uniqueID] = { timeOut: 0, type: 'Material', radius: radius };\n create_material_element(container, uniqueID, makeElement, CLS_MATERIALSPIN);\n mat_calculate_attributes(radius, container, 'Material', CLS_MATERIALSPIN);\n}\n/**\n *\n * @param {HTMLElement} container - specifies the element\n * @param {number} radius - specifies the radius\n * @param {createElementParams} makeElement - specifies the element\n * @returns {void}\n */\nfunction createMaterial3Spinner(container, radius, makeElement) {\n var uniqueID = random_generator();\n globalTimeOut[\"\" + uniqueID] = { timeOut: 0, type: 'Material3', radius: radius };\n create_material_element(container, uniqueID, makeElement, CLS_MATERIAL3SPIN);\n mat_calculate_attributes(radius, container, 'Material3', CLS_MATERIAL3SPIN);\n}\n/**\n *\n * @param {HTMLElement} container - specifies the element\n * @param {number} radius - specifies the radius\n * @param {createElementParams} makeElement - specifies the element\n * @returns {void}\n */\nfunction createBootstrap4Spinner(container, radius, makeElement) {\n var uniqueID = random_generator();\n globalTimeOut[\"\" + uniqueID] = { timeOut: 0, type: 'Bootstrap4', radius: radius };\n create_material_element(container, uniqueID, makeElement, CLS_BOOT4SPIN);\n mat_calculate_attributes(radius, container, 'Bootstrap4', CLS_BOOT4SPIN);\n}\n/**\n *\n * @param {HTMLElement} container - specifies the element\n * @param {number} radius - specifies the radius\n * @param {createElementParams} makeElement - specifies the element\n * @returns {void}\n */\nfunction createBootstrap5Spinner(container, radius, makeElement) {\n var uniqueID = random_generator();\n globalTimeOut[\"\" + uniqueID] = { timeOut: 0, type: 'Bootstrap5', radius: radius };\n create_material_element(container, uniqueID, makeElement, CLS_BOOT5SPIN);\n mat_calculate_attributes(radius, container, 'Bootstrap5', CLS_BOOT5SPIN);\n}\n/**\n *\n * @param {HTMLElement} container - specifies the element\n * @param {string} uniqueID - specifies the id.\n * @param {number} radius - specifies the radius\n * @returns {void}\n */\nfunction startMatAnimate(container, uniqueID, radius) {\n var globalObject = {};\n var timeOutVar = 0;\n globalTimeOut[\"\" + uniqueID].timeOut = 0;\n globalObject[\"\" + uniqueID] = globalVariables(uniqueID, radius, 0, 0);\n var spinnerInfo = { uniqueID: uniqueID, container: container, globalInfo: globalObject, timeOutVar: timeOutVar };\n animateMaterial(spinnerInfo);\n}\n/**\n *\n * @param {HTMLElement} container - specifies the element\n * @param {number} radius - specifies the radius\n * @param {createElementParams} makeElement - specifies the element\n * @returns {void}\n */\nfunction createFabricSpinner(container, radius, makeElement) {\n var uniqueID = random_generator();\n globalTimeOut[\"\" + uniqueID] = { timeOut: 0, type: 'Fabric', radius: radius };\n create_fabric_element(container, uniqueID, CLS_FABRICSPIN, makeElement);\n fb_calculate_attributes(radius, container, CLS_FABRICSPIN);\n}\n/**\n *\n * @param {HTMLElement} container - specifies the element\n * @param {number} radius - specifies the radius\n * @param {createElementParams} makeElement - specifies the element\n * @returns {void}\n */\nfunction createFluentSpinner(container, radius, makeElement) {\n var uniqueID = random_generator();\n globalTimeOut[\"\" + uniqueID] = { timeOut: 0, type: 'Fluent', radius: radius };\n create_fabric_element(container, uniqueID, CLS_FLUENTSPIN, makeElement);\n fb_calculate_attributes(radius, container, CLS_FLUENTSPIN);\n}\n/**\n *\n * @param {HTMLElement} container - specifies the element\n * @param {number} radius - specifies the radius\n * @param {createElementParams} makeElement - specifies the element\n * @returns {void}\n */\nfunction createFluent2Spinner(container, radius, makeElement) {\n var uniqueID = random_generator();\n globalTimeOut[\"\" + uniqueID] = { timeOut: 0, type: 'Fluent2', radius: radius };\n create_fabric_element(container, uniqueID, CLS_FLUENT2SPIN, makeElement);\n fb_calculate_attributes(radius, container, CLS_FLUENT2SPIN);\n}\n/**\n *\n * @param {HTMLElement} container - specifies the element\n * @param {number} radius - specifies the radius\n * @param {createElementParams} makeElement - specifies the element\n * @returns {void}\n */\nfunction createTailwindSpinner(container, radius, makeElement) {\n var uniqueID = random_generator();\n globalTimeOut[\"\" + uniqueID] = { timeOut: 0, type: 'Tailwind', radius: radius };\n create_fabric_element(container, uniqueID, CLS_TAILWINDSPIN, makeElement);\n fb_calculate_attributes(radius, container, CLS_TAILWINDSPIN);\n}\n/**\n *\n * @param {HTMLElement} container - specifies the element\n * @param {number} radius - specifies the radius\n * @param {createElementParams} makeElement - specifies the element\n * @returns {void}\n */\nfunction createHighContrastSpinner(container, radius, makeElement) {\n var uniqueID = random_generator();\n globalTimeOut[\"\" + uniqueID] = { timeOut: 0, type: 'HighContrast', radius: radius };\n create_fabric_element(container, uniqueID, CLS_HIGHCONTRASTSPIN, makeElement);\n fb_calculate_attributes(radius, container, CLS_HIGHCONTRASTSPIN);\n}\n/**\n *\n * @param {HTMLElement} container - specifies the element\n * @returns {string} - returns the string\n */\nfunction getTheme(container) {\n var theme = window.getComputedStyle(container, ':after').getPropertyValue('content');\n return theme.replace(/['\"]+/g, '');\n}\n/**\n *\n * @param {string} theme - specifies the theme\n * @param {HTMLElement} container - specifies the element\n * @param {number} radius - specifies the radius\n * @param {createElementParams} makeElement - specifies the element\n * @returns {void}\n */\nfunction setTheme(theme, container, radius, makeElement) {\n var innerContainer = container.querySelector('.' + CLS_SPININWRAP);\n var svg = innerContainer.querySelector('svg');\n if (!isNullOrUndefined(svg)) {\n innerContainer.removeChild(svg);\n }\n switch (theme) {\n case 'Material':\n createMaterialSpinner(innerContainer, radius, makeElement);\n break;\n case 'Material3':\n createMaterial3Spinner(innerContainer, radius, makeElement);\n break;\n case 'Fabric':\n createFabricSpinner(innerContainer, radius, makeElement);\n break;\n case 'Fluent':\n createFluentSpinner(innerContainer, radius, makeElement);\n break;\n case 'Fluent2':\n createFluent2Spinner(innerContainer, radius, makeElement);\n break;\n case 'Bootstrap':\n createBootstrapSpinner(innerContainer, radius, makeElement);\n break;\n case 'HighContrast':\n createHighContrastSpinner(innerContainer, radius, makeElement);\n break;\n case 'Bootstrap4':\n createBootstrap4Spinner(innerContainer, radius, makeElement);\n break;\n case 'Bootstrap5':\n createBootstrap5Spinner(innerContainer, radius, makeElement);\n break;\n case 'Tailwind':\n case 'Tailwind-dark':\n createTailwindSpinner(innerContainer, radius, makeElement);\n break;\n }\n}\n/**\n *\n * @param {HTMLElement} innerContainer - specifies the element\n * @param {number} radius - specifies the radius\n * @param {createElementParams} makeElement - specifies the element\n * @returns {void}\n */\nfunction createBootstrapSpinner(innerContainer, radius, makeElement) {\n var uniqueID = random_generator();\n globalTimeOut[\"\" + uniqueID] = { timeOut: 0, type: 'Bootstrap', radius: radius };\n create_bootstrap_element(innerContainer, uniqueID, makeElement);\n boot_calculate_attributes(innerContainer, radius);\n}\n/**\n *\n * @param {HTMLElement} innerContainer - specifies the element\n * @param {string} uniqueID - specifies the id\n * @param {createElementParams} makeElement - specifies the element\n * @returns {void}\n */\n// eslint-disable-next-line\nfunction create_bootstrap_element(innerContainer, uniqueID, makeElement) {\n var svgBoot = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n var viewBoxValue = 64;\n var trans = 32;\n var defaultRadius = 2;\n svgBoot.setAttribute('id', uniqueID);\n svgBoot.setAttribute('class', CLS_BOOTSPIN);\n svgBoot.setAttribute('viewBox', '0 0 ' + viewBoxValue + ' ' + viewBoxValue);\n innerContainer.insertBefore(svgBoot, innerContainer.firstChild);\n for (var item = 0; item <= 7; item++) {\n var bootCircle = document.createElementNS('http://www.w3.org/2000/svg', 'circle');\n bootCircle.setAttribute('class', CLS_SPINCIRCLE + '_' + item);\n bootCircle.setAttribute('r', defaultRadius + '');\n bootCircle.setAttribute('transform', 'translate(' + trans + ',' + trans + ')');\n svgBoot.appendChild(bootCircle);\n }\n}\n/**\n *\n * @param {HTMLElement} innerContainer - specifies the element\n * @param {number} radius - specifies the radius\n * @returns {void}\n */\n// eslint-disable-next-line\nfunction boot_calculate_attributes(innerContainer, radius) {\n var svg = innerContainer.querySelector('svg.e-spin-bootstrap');\n var x = 0;\n var y = 0;\n var rad = 24;\n svg.style.width = svg.style.height = radius + 'px';\n var startArc = 90;\n for (var item = 0; item <= 7; item++) {\n var start = defineArcPoints(x, y, rad, startArc);\n var circleEle = svg.querySelector('.' + CLS_SPINCIRCLE + '_' + item);\n circleEle.setAttribute('cx', start.x + '');\n circleEle.setAttribute('cy', start.y + '');\n startArc = startArc >= 360 ? 0 : startArc;\n startArc = startArc + 45;\n }\n}\n/**\n *\n * @param {number} begin - specifies the number\n * @param {number} stop - specifirs the number\n * @returns {number[]} - returns the array of number\n */\nfunction generateSeries(begin, stop) {\n var series = [];\n var start = begin;\n var end = stop;\n var increment = false;\n var count = 1;\n formSeries(start);\n /**\n *\n * @param {number} i - specifies the number\n * @returns {void}\n */\n function formSeries(i) {\n series.push(i);\n if (i !== end || count === 1) {\n if (i <= start && i > 1 && !increment) {\n i = parseFloat((i - 0.2).toFixed(2));\n }\n else if (i === 1) {\n i = 7;\n i = parseFloat((i + 0.2).toFixed(2));\n increment = true;\n }\n else if (i < 8 && increment) {\n i = parseFloat((i + 0.2).toFixed(2));\n if (i === 8) {\n increment = false;\n }\n }\n else if (i <= 8 && !increment) {\n i = parseFloat((i - 0.2).toFixed(2));\n }\n ++count;\n formSeries(i);\n }\n }\n return series;\n}\n/**\n *\n * @param {HTMLElement} innerContainer - specifies the element\n * @returns {void}\n */\nfunction animateBootstrap(innerContainer) {\n var svg = innerContainer.querySelector('svg.e-spin-bootstrap');\n var id = svg.getAttribute('id');\n for (var i = 1; i <= 8; i++) {\n var circleEle = (innerContainer.getElementsByClassName('e-path-circle_' +\n (i === 8 ? 0 : i))[0]);\n rotation(circleEle, i, i, generateSeries(i, i), id);\n }\n /**\n *\n * @param {SVGCircleElement} circle - specifies the circl element\n * @param {number} start - specifies the number\n * @param {number} end - specifies the end number\n * @param {number} series - specifies the series\n * @param {string} id - specifies the id\n * @returns {void}\n */\n function rotation(circle, start, end, series, id) {\n var count = 0;\n boot_animate(start);\n // eslint-disable-next-line\n function boot_animate(radius) {\n if (globalTimeOut[\"\" + id].isAnimate) {\n ++count;\n circle.setAttribute('r', radius + '');\n if (count >= series.length) {\n count = 0;\n }\n // eslint-disable-next-line\n globalTimeOut[id].timeOut = setTimeout(boot_animate.bind(null, series[count]), 18);\n }\n }\n }\n}\n/**\n *\n * @param {HTMLElement} container - specifies the element\n * @param {string} template - specifies the template\n * @param {string} cssClass - specifies the css class.\n * @returns {void}\n */\nfunction replaceContent(container, template, cssClass) {\n if (!isNullOrUndefined(cssClass)) {\n container.classList.add(cssClass);\n }\n var inner = container.querySelector('.e-spinner-inner');\n inner.innerHTML = template;\n}\n/**\n *\n * @param {string} width - specifies the width\n * @param {string} theme - specifies the string\n * @returns {number} - returns the number\n */\nfunction calculateRadius(width, theme) {\n var defaultSize;\n switch (theme) {\n case 'Material':\n defaultSize = DEFT_MAT_WIDTH;\n break;\n case 'Material3':\n defaultSize = DEFT_MAT3_WIDTH;\n break;\n case 'Fabric':\n defaultSize = DEFT_FAB_WIDTH;\n break;\n case 'Tailwind':\n case 'Tailwind-dark':\n defaultSize = DEFT_FAB_WIDTH;\n break;\n case 'Fluent':\n defaultSize = DEFT_FLUENT_WIDTH;\n break;\n case 'Fluent2':\n defaultSize = DEFT_FLUENT2_WIDTH;\n break;\n case 'Bootstrap4':\n defaultSize = DEFT_BOOT4_WIDTH;\n break;\n case 'Bootstrap5':\n defaultSize = DEFT_BOOT5_WIDTH;\n break;\n default:\n defaultSize = DEFT_BOOT_WIDTH;\n }\n width = width ? parseFloat(width + '') : defaultSize;\n return theme === 'Bootstrap' ? width : width / 2;\n}\n/**\n *\n * @param {string} id - specifies the id\n * @param {number} radius - specifies the radius\n * @param {number} count - specifies the number count\n * @param {number} previousId - specifies the previous id\n * @returns {GlobalVariables} - returns the variables\n */\nfunction globalVariables(id, radius, count, previousId) {\n return {\n radius: radius,\n count: count,\n previousId: previousId\n };\n}\n/**\n * @returns {string} - returns the string\n */\n// eslint-disable-next-line\nfunction random_generator() {\n var random = '';\n var combine = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';\n for (var i = 0; i < 5; i++) {\n random += combine.charAt(Math.floor(Math.random() * combine.length));\n }\n return random;\n}\n/**\n *\n * @param {HTMLElement} innerCon - specifies the element\n * @param {string} uniqueID - specifies the unique id\n * @param {string} themeClass - specifies the string\n * @param {createElementParams} makeElement - specifies the element\n * @returns {void}\n */\n// eslint-disable-next-line\nfunction create_fabric_element(innerCon, uniqueID, themeClass, makeElement) {\n var svgFabric = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n svgFabric.setAttribute('id', uniqueID);\n svgFabric.setAttribute('class', themeClass);\n var fabricCirclePath = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n fabricCirclePath.setAttribute('class', CLS_SPINCIRCLE);\n var fabricCircleArc = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n fabricCircleArc.setAttribute('class', CLS_SPINARC);\n innerCon.insertBefore(svgFabric, innerCon.firstChild);\n svgFabric.appendChild(fabricCirclePath);\n svgFabric.appendChild(fabricCircleArc);\n}\n/**\n *\n * @param {HTMLElement} innerContainer - specifies the element\n * @param {string} uniqueID - specifies the unique id\n * @param {createElementParams} makeElement - specifies the element\n * @param {string} cls - specifies the string\n * @returns {void}\n */\n// eslint-disable-next-line\nfunction create_material_element(innerContainer, uniqueID, makeElement, cls) {\n var svgMaterial = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n var matCirclePath = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n svgMaterial.setAttribute('class', cls);\n svgMaterial.setAttribute('id', uniqueID);\n matCirclePath.setAttribute('class', CLS_SPINCIRCLE);\n innerContainer.insertBefore(svgMaterial, innerContainer.firstChild);\n svgMaterial.appendChild(matCirclePath);\n}\n/**\n *\n * @param {HTMLElement} target - specifies the element\n * @param {createElementParams} makeElement - specifies the element\n * @returns {void}\n */\n// eslint-disable-next-line\nfunction create_spinner_container(target, makeElement) {\n var spinnerContainer = makeElement('div', {});\n var spinnerInnerContainer = makeElement('div', {});\n spinnerContainer.classList.add(CLS_SPINWRAP);\n spinnerInnerContainer.classList.add(CLS_SPININWRAP);\n spinnerInnerContainer.setAttribute('aria-disabled', 'true');\n target.appendChild(spinnerContainer);\n spinnerContainer.appendChild(spinnerInnerContainer);\n // eslint-disable-next-line\n return { wrap: spinnerContainer, inner_wrap: spinnerInnerContainer };\n}\n/**\n *\n * @param {SpinnerInfo} spinnerInfo - specifies the spinner\n * @returns {void}\n */\nfunction animateMaterial(spinnerInfo) {\n var start = 1;\n var end = 149;\n var duration = 1333;\n var max = 75;\n createCircle(start, end, easeAnimation, duration, spinnerInfo.globalInfo[spinnerInfo.uniqueID].count, max, spinnerInfo);\n spinnerInfo.globalInfo[spinnerInfo.uniqueID].count = ++spinnerInfo.globalInfo[spinnerInfo.uniqueID].count % 4;\n}\n/**\n *\n * @param {number} start - specifies the number\n * @param {number} end - specifies the end number\n * @param {Function} easing - specifies the function\n * @param {number} duration - specifies the duration\n * @param {number} count - specifies the count\n * @param {number} max - specifies the max number\n * @param {SpinnerInfo} spinnerInfo - specifies the spinner info\n * @returns {void}\n */\nfunction createCircle(start, end, easing, duration, count, max, spinnerInfo) {\n var id = ++spinnerInfo.globalInfo[spinnerInfo.uniqueID].previousId;\n var startTime = new Date().getTime();\n var change = end - start;\n var diameter = getSize((spinnerInfo.globalInfo[spinnerInfo.uniqueID].radius * 2) + '');\n var strokeSize = getStrokeSize(diameter);\n var rotate = -90 * (spinnerInfo.globalInfo[spinnerInfo.uniqueID].count || 0);\n mat_animation(spinnerInfo);\n // eslint-disable-next-line\n function mat_animation(spinnerInfo) {\n var currentTime = Math.max(0, Math.min(new Date().getTime() - startTime, duration));\n updatePath(easing(currentTime, start, change, duration), spinnerInfo.container);\n if (id === spinnerInfo.globalInfo[spinnerInfo.uniqueID].previousId && currentTime < duration) {\n // eslint-disable-next-line\n globalTimeOut[spinnerInfo.uniqueID].timeOut = setTimeout(mat_animation.bind(null, spinnerInfo), 1);\n }\n else {\n animateMaterial(spinnerInfo);\n }\n }\n /**\n *\n * @param {number} value - specifies the number value\n * @param {HTMLElement} container - specifies the container\n * @returns {void}\n */\n function updatePath(value, container) {\n if (!isNullOrUndefined(container.querySelector('svg.e-spin-material')) || !isNullOrUndefined(container.querySelector('svg.e-spin-material3'))) {\n var svg = void 0;\n if (!isNullOrUndefined(container.querySelector('svg.e-spin-material')) &&\n !isNullOrUndefined(container.querySelector('svg.e-spin-material').querySelector('path.e-path-circle'))) {\n svg = container.querySelector('svg.e-spin-material');\n }\n else if (!isNullOrUndefined(container.querySelector('svg.e-spin-material3')) &&\n !isNullOrUndefined(container.querySelector('svg.e-spin-material3').querySelector('path.e-path-circle'))) {\n svg = container.querySelector('svg.e-spin-material3');\n }\n if (!isNullOrUndefined(svg)) {\n var path = svg.querySelector('path.e-path-circle');\n path.setAttribute('stroke-dashoffset', getDashOffset(diameter, strokeSize, value, max) + '');\n path.setAttribute('transform', 'rotate(' + (rotate) + ' ' + diameter / 2 + ' ' + diameter / 2 + ')');\n }\n }\n }\n}\n/**\n *\n * @param {number} radius - specifies the number\n * @param {HTMLElement} container - specifies the element\n * @param {string} type - specifies the string type\n * @param {string} cls - specifies the string\n * @returns {void}\n */\n// eslint-disable-next-line\nfunction mat_calculate_attributes(radius, container, type, cls) {\n var diameter = radius * 2;\n var svg = container.querySelector('svg.' + cls);\n var path = svg.querySelector('path.e-path-circle');\n var strokeSize = getStrokeSize(diameter);\n var transformOrigin = (diameter / 2) + 'px';\n svg.setAttribute('viewBox', '0 0 ' + diameter + ' ' + diameter);\n svg.style.width = svg.style.height = diameter + 'px';\n svg.style.transformOrigin = transformOrigin + ' ' + transformOrigin + ' ' + transformOrigin;\n path.setAttribute('d', drawArc(diameter, strokeSize));\n if (type === 'Material' || type === 'Material3' || type === 'Fluent2') {\n path.setAttribute('stroke-width', strokeSize + '');\n path.setAttribute('stroke-dasharray', ((diameter - strokeSize) * Math.PI * 0.75) + '');\n path.setAttribute('stroke-dashoffset', getDashOffset(diameter, strokeSize, 1, 75) + '');\n }\n}\n/**\n *\n * @param {string} value - specifies the value\n * @returns {number} - returns the number\n */\nfunction getSize(value) {\n var parsed = parseFloat(value);\n return parsed;\n}\n/**\n *\n * @param {number} diameter - specifies the diameter\n * @param {number} strokeSize - specifies the size\n * @returns {string} - returns the string\n */\nfunction drawArc(diameter, strokeSize) {\n var radius = diameter / 2;\n var offset = strokeSize / 2;\n return 'M' + radius + ',' + offset\n + 'A' + (radius - offset) + ',' + (radius - offset) + ' 0 1 1 ' + offset + ',' + radius;\n}\n/**\n *\n * @param {number} diameter - specifies the number\n * @returns {number} - returns the number\n */\nfunction getStrokeSize(diameter) {\n return 10 / 100 * diameter;\n}\n/**\n *\n * @param {number} diameter - specifies the number\n * @param {number} strokeSize - specifies the stroke size\n * @param {number} value - specifies the value\n * @param {number} max - specifies the max number\n * @returns {number} - returns the number\n */\nfunction getDashOffset(diameter, strokeSize, value, max) {\n return (diameter - strokeSize) * Math.PI * ((3 * (max) / 100) - (value / 100));\n}\n/**\n *\n * @param {number} current - specifies the number\n * @param {number} start - specifies the stroke size\n * @param {number} change - specifies the value\n * @param {number} duration - specifies the max number\n * @returns {number} - returns the number\n */\nfunction easeAnimation(current, start, change, duration) {\n var timestamp = (current /= duration) * current;\n var timecount = timestamp * current;\n return start + change * (6 * timecount * timestamp + -15 * timestamp * timestamp + 10 * timecount);\n}\n/**\n *\n * @param {number} radius - specifies the number\n * @param {HTMLElement} innerConainer - specifies the element\n * @param {string} trgClass - specifies the class\n * @returns {void}\n */\n// eslint-disable-next-line\nfunction fb_calculate_attributes(radius, innerConainer, trgClass) {\n var centerX = radius;\n var centerY = radius;\n var diameter = radius * 2;\n var startArc = 315;\n var endArc = 45;\n var svg = innerConainer.querySelector('.' + trgClass);\n var circle = svg.querySelector('.e-path-circle');\n var path = svg.querySelector('.e-path-arc');\n var transformOrigin = (diameter / 2) + 'px';\n circle.setAttribute('d', defineCircle(centerX, centerY, radius));\n path.setAttribute('d', defineArc(centerX, centerY, radius, startArc, endArc));\n svg.setAttribute('viewBox', '0 0 ' + diameter + ' ' + diameter);\n svg.style.transformOrigin = transformOrigin + ' ' + transformOrigin + ' ' + transformOrigin;\n svg.style.width = svg.style.height = diameter + 'px';\n}\n/**\n *\n * @param {number} centerX - specifies the number\n * @param {number} centerY - specifies the stroke size\n * @param {number} radius - specifies the value\n * @param {number} angle - specifies the max number\n * @returns {number} - returns the number\n */\nfunction defineArcPoints(centerX, centerY, radius, angle) {\n var radians = (angle - 90) * Math.PI / 180.0;\n return {\n x: centerX + (radius * Math.cos(radians)),\n y: centerY + (radius * Math.sin(radians))\n };\n}\n/**\n *\n * @param {number} x - specifies the number\n * @param {number} y - specifies the stroke size\n * @param {number} radius - specifies the radius\n * @param {number} startArc - specifies the value\n * @param {number} endArc - specifies the max number\n * @returns {number} - returns the number\n */\nfunction defineArc(x, y, radius, startArc, endArc) {\n var start = defineArcPoints(x, y, radius, endArc);\n var end = defineArcPoints(x, y, radius, startArc);\n var d = [\n 'M', start.x, start.y,\n 'A', radius, radius, 0, 0, 0, end.x, end.y\n ].join(' ');\n return d;\n}\n/**\n *\n * @param {number} x - specifies the number\n * @param {number} y - specifies the stroke size\n * @param {number} radius - specifies the value\n * @returns {string} - returns the string\n */\nfunction defineCircle(x, y, radius) {\n var d = [\n 'M', x, y,\n 'm', -radius, 0,\n 'a', radius, radius, 0, 1, 0, radius * 2, 0,\n 'a', radius, radius, 0, 1, 0, -radius * 2, 0\n ].join(' ');\n return d;\n}\n/**\n * Function to show the Spinner.\n *\n * @param {HTMLElement} container - Specify the target of the Spinner.\n * @returns {void}\n * @private\n */\nexport function showSpinner(container) {\n showHideSpinner(container, false);\n container = null;\n}\n/**\n *\n * @param {HTMLElement} container - specifies the element\n * @param {boolean} isHide - specifies the boolean\n * @returns {void}\n */\nfunction showHideSpinner(container, isHide) {\n var spinnerWrap;\n if (container) {\n if (container.classList.contains(CLS_SPINWRAP)) {\n spinnerWrap = container;\n }\n else {\n var spinWrapCollection = container.querySelectorAll('.' + CLS_SPINWRAP);\n if (Browser.isIE) {\n for (var i = 0; i < spinWrapCollection.length; i++) {\n if (spinWrapCollection[i].parentElement && spinWrapCollection[i].parentElement === container) {\n spinnerWrap = spinWrapCollection[i];\n break;\n }\n }\n }\n else {\n spinnerWrap = Array.from(spinWrapCollection).find(function (wrap) { return wrap.parentElement === container; }) || null;\n }\n }\n }\n if (container && spinnerWrap) {\n var inner = spinnerWrap.querySelector('.' + CLS_SPININWRAP);\n var spinCheck = isHide ? !spinnerWrap.classList.contains(CLS_SPINTEMPLATE) &&\n !spinnerWrap.classList.contains(CLS_HIDESPIN) :\n !spinnerWrap.classList.contains(CLS_SPINTEMPLATE) && !spinnerWrap.classList.contains(CLS_SHOWSPIN);\n if (spinCheck) {\n var svgEle = spinnerWrap.querySelector('svg');\n if (isNullOrUndefined(svgEle)) {\n return;\n }\n var id = svgEle.getAttribute('id');\n globalTimeOut[\"\" + id].isAnimate = !isHide;\n switch (globalTimeOut[\"\" + id].type) {\n case 'Material':\n case 'Material3':\n if (isHide) {\n clearTimeout(globalTimeOut[id].timeOut);\n }\n else {\n startMatAnimate(inner, id, globalTimeOut[id].radius);\n }\n break;\n case 'Bootstrap':\n if (isHide) {\n clearTimeout(globalTimeOut[id].timeOut);\n }\n else {\n animateBootstrap(inner);\n }\n break;\n }\n }\n if (isHide) {\n classList(spinnerWrap, [CLS_HIDESPIN], [CLS_SHOWSPIN]);\n }\n else {\n classList(spinnerWrap, [CLS_SHOWSPIN], [CLS_HIDESPIN]);\n }\n container = null;\n }\n}\n/**\n * Function to hide the Spinner.\n *\n * @param {HTMLElement} container - Specify the target of the Spinner.\n * @returns {void}\n * @private\n */\nexport function hideSpinner(container) {\n showHideSpinner(container, true);\n container = null;\n}\n/**\n * Function to change the Spinners in a page globally from application end.\n * ```\n * E.g : setSpinner({ cssClass: 'custom-css'; type: 'Material' });\n * ```\n *\n * @param {SetSpinnerArgs} args - specifies the args\n * @param {createElementParams} internalCreateElement - specifies the element params\n * @returns {void}\n * @private\n */\nexport function setSpinner(args, internalCreateElement) {\n var makeElement = !isNullOrUndefined(internalCreateElement) ? internalCreateElement : createElement;\n if (args.template !== undefined) {\n spinTemplate = args.template;\n if (args.template !== undefined) {\n spinCSSClass = args.cssClass;\n }\n }\n var container = document.querySelectorAll('.' + CLS_SPINWRAP);\n for (var index = 0; index < container.length; index++) {\n ensureTemplate(args.template, container[index], args.type, args.cssClass, makeElement);\n }\n}\n/**\n *\n * @param {string} template - specifies the string\n * @param {HTMLElement} container - specifies the container\n * @param {string} theme - specifies the theme\n * @param {string} cssClass - specifies the string class\n * @param {createElementParams} makeEle - specifies the params\n * @returns {void}\n */\nfunction ensureTemplate(template, container, theme, cssClass, makeEle) {\n if (isNullOrUndefined(template) && !container.classList.contains(CLS_SPINTEMPLATE)) {\n replaceTheme(container, theme, cssClass, makeEle);\n if (container.classList.contains(CLS_SHOWSPIN)) {\n container.classList.remove(CLS_SHOWSPIN);\n showSpinner(container);\n }\n else {\n container.classList.remove(CLS_HIDESPIN);\n hideSpinner(container);\n }\n }\n else {\n spinTemplate = template;\n if (!isNullOrUndefined(cssClass)) {\n spinCSSClass = cssClass;\n }\n if (!isNullOrUndefined(spinTemplate)) {\n replaceContent(container, spinTemplate, spinCSSClass);\n }\n }\n}\n/**\n *\n * @param {HTMLElement} container - specifies the container\n * @param {string} theme - specifies the theme\n * @param {string} cssClass - specifies the string class\n * @param {createElementParams} makeEle - specifies the params\n * @returns {void}\n */\nfunction replaceTheme(container, theme, cssClass, makeEle) {\n if (!isNullOrUndefined(cssClass)) {\n container.classList.add(cssClass);\n }\n var svgElement = container.querySelector('svg');\n if (!isNullOrUndefined(svgElement)) {\n var radius = theme === 'Bootstrap' ? parseFloat(svgElement.style.height) : parseFloat(svgElement.style.height) / 2;\n var classNames = svgElement.getAttribute('class');\n var svgClassList = classNames.split(/\\s/);\n if (svgClassList.indexOf('e-spin-material') >= 0) {\n var id = svgElement.getAttribute('id');\n clearTimeout(globalTimeOut[\"\" + id].timeOut);\n }\n setTheme(theme, container, radius, makeEle);\n }\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __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 { Component, Property, Event, Collection, L10n, Complex, compile, createElement, animationMode } from '@syncfusion/ej2-base';\nimport { addClass, removeClass, detach, attributes, prepend, setStyleAttribute } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, ChildProperty, isBlazor } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, formatUnit, append, EventHandler, Draggable, extend } from '@syncfusion/ej2-base';\nimport { SanitizeHtmlHelper, Browser } from '@syncfusion/ej2-base';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { Popup, PositionData, getZindexPartial } from '../popup/popup';\nimport { createResize, removeResize, setMinHeight, setMaxWidth, setMaxHeight } from '../common/resize';\nvar ButtonProps = /** @class */ (function (_super) {\n __extends(ButtonProps, _super);\n function ButtonProps() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(true)\n ], ButtonProps.prototype, \"isFlat\", void 0);\n __decorate([\n Property()\n ], ButtonProps.prototype, \"buttonModel\", void 0);\n __decorate([\n Property('Button')\n ], ButtonProps.prototype, \"type\", void 0);\n __decorate([\n Event()\n ], ButtonProps.prototype, \"click\", void 0);\n return ButtonProps;\n}(ChildProperty));\nexport { ButtonProps };\n/**\n * Configures the animation properties for both open and close the dialog.\n */\nvar AnimationSettings = /** @class */ (function (_super) {\n __extends(AnimationSettings, _super);\n function AnimationSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('Fade')\n ], AnimationSettings.prototype, \"effect\", void 0);\n __decorate([\n Property(400)\n ], AnimationSettings.prototype, \"duration\", void 0);\n __decorate([\n Property(0)\n ], AnimationSettings.prototype, \"delay\", void 0);\n return AnimationSettings;\n}(ChildProperty));\nexport { AnimationSettings };\nvar ROOT = 'e-dialog';\nvar RTL = 'e-rtl';\nvar DLG_HEADER_CONTENT = 'e-dlg-header-content';\nvar DLG_HEADER = 'e-dlg-header';\nvar DLG_FOOTER_CONTENT = 'e-footer-content';\nvar MODAL_DLG = 'e-dlg-modal';\nvar DLG_CONTENT = 'e-dlg-content';\nvar DLG_CLOSE_ICON = 'e-icon-dlg-close';\nvar DLG_OVERLAY = 'e-dlg-overlay';\nvar DLG_TARGET = 'e-dlg-target';\nvar DLG_CONTAINER = 'e-dlg-container';\nvar SCROLL_DISABLED = 'e-scroll-disabled';\nvar DLG_PRIMARY_BUTTON = 'e-primary';\nvar ICON = 'e-icons';\nvar POPUP_ROOT = 'e-popup';\nvar DEVICE = 'e-device';\nvar FULLSCREEN = 'e-dlg-fullscreen';\nvar DLG_CLOSE_ICON_BTN = 'e-dlg-closeicon-btn';\nvar DLG_HIDE = 'e-popup-close';\nvar DLG_SHOW = 'e-popup-open';\nvar DLG_UTIL_DEFAULT_TITLE = 'Information';\nvar DLG_UTIL_ROOT = 'e-scroll-disabled';\nvar DLG_UTIL_ALERT = 'e-alert-dialog';\nvar DLG_UTIL_CONFIRM = 'e-confirm-dialog';\nvar DLG_RESIZABLE = 'e-dlg-resizable';\nvar DLG_RESTRICT_LEFT_VALUE = 'e-restrict-left';\nvar DLG_RESTRICT_WIDTH_VALUE = 'e-resize-viewport';\nvar DLG_REF_ELEMENT = 'e-dlg-ref-element';\nvar DLG_USER_ACTION_CLOSED = 'user action';\nvar DLG_CLOSE_ICON_CLOSED = 'close icon';\nvar DLG_ESCAPE_CLOSED = 'escape';\nvar DLG_OVERLAYCLICK_CLOSED = 'overlayClick';\nvar DLG_DRAG = 'e-draggable';\n/**\n * Represents the dialog component that displays the information and get input from the user.\n * Two types of dialog components are `Modal and Modeless (non-modal)` depending on its interaction with parent application.\n * ```html\n *
\n * ```\n * ```typescript\n * \n * ```\n */\nvar Dialog = /** @class */ (function (_super) {\n __extends(Dialog, _super);\n /*\n * * Constructor for creating the widget\n *\n * @param\n * @param\n * @hidden\n */\n function Dialog(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.needsID = true;\n return _this;\n }\n /**\n *Initialize the control rendering\n *\n * @returns {void}\n * @private\n */\n Dialog.prototype.render = function () {\n this.initialize();\n this.initRender();\n this.wireEvents();\n if (this.width === '100%') {\n this.element.style.width = '';\n }\n if (this.minHeight !== '') {\n this.element.style.minHeight = formatUnit(this.minHeight);\n }\n if (this.enableResize) {\n this.setResize();\n if (this.animationSettings.effect === 'None') {\n this.getMinHeight();\n }\n }\n this.renderComplete();\n };\n Dialog.prototype.initializeValue = function () {\n this.dlgClosedBy = DLG_USER_ACTION_CLOSED;\n };\n /**\n *Initialize the event handler\n *\n * @returns {void}\n * @private\n */\n Dialog.prototype.preRender = function () {\n var _this = this;\n this.initializeValue();\n this.headerContent = null;\n this.allowMaxHeight = true;\n this.preventVisibility = true;\n this.clonedEle = this.element.cloneNode(true);\n this.closeIconClickEventHandler = function (event) {\n _this.dlgClosedBy = DLG_CLOSE_ICON_CLOSED;\n _this.hide(event);\n };\n this.dlgOverlayClickEventHandler = function (event) {\n _this.dlgClosedBy = DLG_OVERLAYCLICK_CLOSED;\n event.preventFocus = false;\n _this.trigger('overlayClick', event, function (overlayClickEventArgs) {\n if (!overlayClickEventArgs.preventFocus) {\n _this.focusContent();\n }\n _this.dlgClosedBy = DLG_USER_ACTION_CLOSED;\n });\n };\n var localeText = { close: 'Close' };\n this.l10n = new L10n('dialog', localeText, this.locale);\n this.checkPositionData();\n if (isNullOrUndefined(this.target)) {\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n this.target = document.body;\n this.isProtectedOnChange = prevOnChange;\n }\n };\n Dialog.prototype.updatePersistData = function () {\n if (this.enablePersistence) {\n this.setProperties({ width: parseFloat(this.element.style.width), height: parseFloat(this.element.style.height),\n position: { X: parseFloat(this.dragObj.element.style.left), Y: parseFloat(this.dragObj.element.style.top) } }, true);\n }\n };\n Dialog.prototype.isNumberValue = function (value) {\n var isNumber = /^[-+]?\\d*\\.?\\d+$/.test(value);\n return isNumber;\n };\n Dialog.prototype.checkPositionData = function () {\n if (!isNullOrUndefined(this.position)) {\n if (!isNullOrUndefined(this.position.X) && (typeof (this.position.X) !== 'number')) {\n var isNumber = this.isNumberValue(this.position.X);\n if (isNumber) {\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n this.position.X = parseFloat(this.position.X);\n this.isProtectedOnChange = prevOnChange;\n }\n }\n if (!isNullOrUndefined(this.position.Y) && (typeof (this.position.Y) !== 'number')) {\n var isNumber = this.isNumberValue(this.position.Y);\n if (isNumber) {\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n this.position.Y = parseFloat(this.position.Y);\n this.isProtectedOnChange = prevOnChange;\n }\n }\n }\n };\n Dialog.prototype.getEle = function (list, selector) {\n var element = undefined;\n for (var i = 0; i < list.length; i++) {\n if (list[i].classList.contains(selector)) {\n element = list[i];\n break;\n }\n }\n return element;\n };\n /* istanbul ignore next */\n Dialog.prototype.getMinHeight = function () {\n var computedHeaderHeight = '0px';\n var computedFooterHeight = '0px';\n if (!isNullOrUndefined(this.element.querySelector('.' + DLG_HEADER_CONTENT))) {\n computedHeaderHeight = getComputedStyle(this.headerContent).height;\n }\n var footerEle = this.getEle(this.element.children, DLG_FOOTER_CONTENT);\n if (!isNullOrUndefined(footerEle)) {\n computedFooterHeight = getComputedStyle(footerEle).height;\n }\n var headerHeight = parseInt(computedHeaderHeight.slice(0, computedHeaderHeight.indexOf('p')), 10);\n var footerHeight = parseInt(computedFooterHeight.slice(0, computedFooterHeight.indexOf('p')), 10);\n setMinHeight(headerHeight + 30 + (isNaN(footerHeight) ? 0 : footerHeight));\n return (headerHeight + 30 + footerHeight);\n };\n Dialog.prototype.onResizeStart = function (args, dialogObj) {\n dialogObj.trigger('resizeStart', args);\n return args.cancel;\n };\n Dialog.prototype.onResizing = function (args, dialogObj) {\n dialogObj.trigger('resizing', args);\n };\n Dialog.prototype.onResizeComplete = function (args, dialogObj) {\n dialogObj.trigger('resizeStop', args);\n this.updatePersistData();\n };\n Dialog.prototype.setResize = function () {\n if (this.enableResize) {\n if (this.isBlazorServerRender() && !isNullOrUndefined(this.element.querySelector('.e-icons.e-resize-handle'))) {\n return;\n }\n this.element.classList.add(DLG_RESIZABLE);\n var computedHeight = getComputedStyle(this.element).minHeight;\n var computedWidth = getComputedStyle(this.element).minWidth;\n var direction = '';\n for (var i = 0; i < this.resizeHandles.length; i++) {\n if (this.resizeHandles[i] === 'All') {\n direction = 'south north east west north-east north-west south-east south-west';\n break;\n }\n else {\n var directionValue = '';\n switch (this.resizeHandles[i].toString()) {\n case 'SouthEast':\n directionValue = 'south-east';\n break;\n case 'SouthWest':\n directionValue = 'south-west';\n break;\n case 'NorthEast':\n directionValue = 'north-east';\n break;\n case 'NorthWest':\n directionValue = 'north-west';\n break;\n default:\n directionValue = this.resizeHandles[i].toString();\n break;\n }\n direction += directionValue.toLocaleLowerCase() + ' ';\n }\n }\n if (this.enableRtl && direction.trim() === 'south-east') {\n direction = 'south-west';\n }\n else if (this.enableRtl && direction.trim() === 'south-west') {\n direction = 'south-east';\n }\n if (this.isModal && this.enableRtl) {\n this.element.classList.add(DLG_RESTRICT_LEFT_VALUE);\n }\n else if (this.isModal && this.target === document.body) {\n this.element.classList.add(DLG_RESTRICT_WIDTH_VALUE);\n }\n createResize({\n element: this.element,\n direction: direction,\n minHeight: parseInt(computedHeight.slice(0, computedWidth.indexOf('p')), 10),\n maxHeight: this.targetEle.clientHeight,\n minWidth: parseInt(computedWidth.slice(0, computedWidth.indexOf('p')), 10),\n maxWidth: this.targetEle.clientWidth,\n boundary: this.target === document.body ? null : this.targetEle,\n resizeBegin: this.onResizeStart.bind(this),\n resizeComplete: this.onResizeComplete.bind(this),\n resizing: this.onResizing.bind(this),\n proxy: this\n });\n this.wireWindowResizeEvent();\n }\n else {\n removeResize();\n this.unWireWindowResizeEvent();\n if (this.isModal) {\n this.element.classList.remove(DLG_RESTRICT_LEFT_VALUE);\n }\n else {\n this.element.classList.remove(DLG_RESTRICT_WIDTH_VALUE);\n }\n this.element.classList.remove(DLG_RESIZABLE);\n }\n };\n Dialog.prototype.getFocusElement = function (target) {\n var value = 'input,select,textarea,button:enabled,a,[contenteditable=\"true\"],[tabindex]';\n var items = target.querySelectorAll(value);\n return { element: items[items.length - 1] };\n };\n /* istanbul ignore next */\n Dialog.prototype.keyDown = function (event) {\n var _this = this;\n if (event.keyCode === 9) {\n if (this.isModal) {\n var buttonObj = void 0;\n if (!isNullOrUndefined(this.btnObj)) {\n buttonObj = this.btnObj[this.btnObj.length - 1];\n }\n if ((isNullOrUndefined(this.btnObj)) && (!isNullOrUndefined(this.ftrTemplateContent))) {\n buttonObj = this.getFocusElement(this.ftrTemplateContent);\n }\n if (isNullOrUndefined(this.btnObj) && isNullOrUndefined(this.ftrTemplateContent) && !isNullOrUndefined(this.contentEle)) {\n buttonObj = this.getFocusElement(this.contentEle);\n }\n if (!isNullOrUndefined(buttonObj) && document.activeElement === buttonObj.element && !event.shiftKey) {\n event.preventDefault();\n this.focusableElements(this.element).focus();\n }\n if (document.activeElement === this.focusableElements(this.element) && event.shiftKey) {\n event.preventDefault();\n if (!isNullOrUndefined(buttonObj)) {\n buttonObj.element.focus();\n }\n }\n }\n }\n var element = document.activeElement;\n var isTagName = (['input', 'textarea'].indexOf(element.tagName.toLowerCase()) > -1);\n var isContentEdit = false;\n if (!isTagName) {\n isContentEdit = element.hasAttribute('contenteditable') && element.getAttribute('contenteditable') === 'true';\n }\n if (event.keyCode === 27 && this.closeOnEscape) {\n this.dlgClosedBy = DLG_ESCAPE_CLOSED;\n var query = document.querySelector('.e-popup-open:not(.e-dialog)');\n // 'document.querySelector' is used to find the elements rendered based on body\n if (!(!isNullOrUndefined(query) && !query.classList.contains('e-toolbar-pop'))) {\n this.hide(event);\n }\n }\n if ((event.keyCode === 13 && !event.ctrlKey && element.tagName.toLowerCase() !== 'textarea' &&\n isTagName && !isNullOrUndefined(this.primaryButtonEle)) ||\n (event.keyCode === 13 && event.ctrlKey && (element.tagName.toLowerCase() === 'textarea' ||\n isContentEdit)) && !isNullOrUndefined(this.primaryButtonEle)) {\n var buttonIndex_1;\n var firstPrimary = this.buttons.some(function (data, index) {\n buttonIndex_1 = index;\n var buttonModel = data.buttonModel;\n return !isNullOrUndefined(buttonModel) && buttonModel.isPrimary === true;\n });\n if (firstPrimary && typeof (this.buttons[buttonIndex_1].click) === 'function') {\n setTimeout(function () {\n _this.buttons[buttonIndex_1].click.call(_this, event);\n });\n }\n }\n };\n /**\n * Initialize the control rendering\n *\n * @returns {void}\n * @private\n */\n Dialog.prototype.initialize = function () {\n if (!isNullOrUndefined(this.target)) {\n this.targetEle = ((typeof this.target) === 'string') ?\n document.querySelector(this.target) : this.target;\n }\n if (!this.isBlazorServerRender()) {\n addClass([this.element], ROOT);\n }\n if (Browser.isDevice) {\n addClass([this.element], DEVICE);\n }\n if (!this.isBlazorServerRender()) {\n this.setCSSClass();\n }\n this.setMaxHeight();\n };\n /**\n * Initialize the rendering\n *\n * @returns {void}\n * @private\n */\n Dialog.prototype.initRender = function () {\n var _this = this;\n this.initialRender = true;\n if (!this.isBlazorServerRender()) {\n attributes(this.element, { role: 'dialog' });\n }\n if (this.zIndex === 1000) {\n this.setzIndex(this.element, false);\n this.calculatezIndex = true;\n }\n else {\n this.calculatezIndex = false;\n }\n if (this.isBlazorServerRender() && isNullOrUndefined(this.headerContent)) {\n this.headerContent = this.element.getElementsByClassName('e-dlg-header-content')[0];\n }\n if (this.isBlazorServerRender() && isNullOrUndefined(this.contentEle)) {\n this.contentEle = this.element.querySelector('#' + this.element.id + '_dialog-content');\n }\n if (!this.isBlazorServerRender()) {\n this.setTargetContent();\n if (this.header !== '' && !isNullOrUndefined(this.header)) {\n this.setHeader();\n }\n this.renderCloseIcon();\n this.setContent();\n if (this.footerTemplate !== '' && !isNullOrUndefined(this.footerTemplate)) {\n this.setFooterTemplate();\n }\n else if (!isNullOrUndefined(this.buttons[0].buttonModel)) {\n this.setButton();\n }\n }\n if (this.isBlazorServerRender()) {\n if (!isNullOrUndefined(this.buttons[0].buttonModel) && this.footerTemplate === '') {\n this.setButton();\n }\n }\n if (this.allowDragging && (!isNullOrUndefined(this.headerContent))) {\n this.setAllowDragging();\n }\n if (!this.isBlazorServerRender()) {\n attributes(this.element, { 'aria-modal': (this.isModal ? 'true' : 'false') });\n if (this.isModal) {\n this.setIsModal();\n }\n }\n if (this.isBlazorServerRender() && isNullOrUndefined(this.dlgContainer)) {\n this.dlgContainer = this.element.parentElement;\n for (var i = 0, childNodes = this.dlgContainer.children; i < childNodes.length; i++) {\n if (childNodes[i].classList.contains('e-dlg-overlay')) {\n this.dlgOverlay = childNodes[i];\n }\n }\n }\n if (this.element.classList.contains(DLG_UTIL_ALERT) !== true && this.element.classList.contains(DLG_UTIL_CONFIRM) !== true\n && !isNullOrUndefined(this.element.parentElement)) {\n var parentEle = this.isModal ? this.dlgContainer.parentElement : this.element.parentElement;\n this.refElement = this.createElement('div', { className: DLG_REF_ELEMENT });\n parentEle.insertBefore(this.refElement, (this.isModal ? this.dlgContainer : this.element));\n }\n if (!isNullOrUndefined(this.targetEle)) {\n if (this.isModal) {\n this.targetEle.appendChild(this.dlgContainer);\n }\n else {\n this.targetEle.appendChild(this.element);\n }\n }\n this.popupObj = new Popup(this.element, {\n height: this.height,\n width: this.width,\n zIndex: this.zIndex,\n relateTo: this.target,\n actionOnScroll: 'none',\n enableRtl: this.enableRtl,\n // eslint-disable-next-line\n open: function (event) {\n var eventArgs = {\n container: _this.isModal ? _this.dlgContainer : _this.element,\n element: _this.element,\n target: _this.target,\n preventFocus: false\n };\n if (_this.enableResize) {\n _this.resetResizeIcon();\n }\n _this.trigger('open', eventArgs, function (openEventArgs) {\n if (!openEventArgs.preventFocus) {\n _this.focusContent();\n }\n });\n },\n // eslint-disable-next-line\n close: function (event) {\n if (_this.isModal) {\n addClass([_this.dlgOverlay], 'e-fade');\n }\n _this.unBindEvent(_this.element);\n if (_this.isModal) {\n _this.dlgContainer.style.display = 'none';\n }\n _this.trigger('close', _this.closeArgs);\n var activeEle = document.activeElement;\n if (!isNullOrUndefined(activeEle) && !isNullOrUndefined((activeEle).blur)) {\n activeEle.blur();\n }\n if (!isNullOrUndefined(_this.storeActiveElement) && !isNullOrUndefined(_this.storeActiveElement.focus)) {\n _this.storeActiveElement.focus();\n }\n }\n });\n this.positionChange();\n this.setEnableRTL();\n if (!this.isBlazorServerRender()) {\n addClass([this.element], DLG_HIDE);\n if (this.isModal) {\n this.setOverlayZindex();\n }\n }\n if (this.visible) {\n this.show();\n if (this.isModal) {\n var targetType = this.getTargetContainer(this.target);\n if (targetType instanceof Element) {\n var computedStyle = window.getComputedStyle(targetType);\n if (computedStyle.getPropertyValue('direction') === 'rtl') {\n this.setPopupPosition();\n }\n }\n }\n }\n else {\n if (this.isModal) {\n this.dlgOverlay.style.display = 'none';\n }\n }\n this.initialRender = false;\n };\n Dialog.prototype.getTargetContainer = function (targetValue) {\n var targetElement = null;\n if (typeof targetValue === 'string') {\n if (targetValue.startsWith('#')) {\n targetElement = document.getElementById(targetValue.substring(1));\n }\n else if (targetValue.startsWith('.')) {\n var elements = document.getElementsByClassName(targetValue.substring(1));\n targetElement = elements.length > 0 ? elements[0] : null;\n }\n else {\n if (!(targetValue instanceof HTMLElement) && targetValue !== document.body) {\n targetElement = document.querySelector(targetValue);\n }\n }\n }\n else if (targetValue instanceof HTMLElement) {\n targetElement = targetValue;\n }\n return targetElement;\n };\n Dialog.prototype.resetResizeIcon = function () {\n var dialogConHeight = this.getMinHeight();\n if (this.targetEle.offsetHeight < dialogConHeight) {\n var className = this.enableRtl ? 'e-south-west' : 'e-south-east';\n var resizeIcon = this.element.querySelector('.' + className);\n if (!isNullOrUndefined(resizeIcon)) {\n resizeIcon.style.bottom = '-' + dialogConHeight.toString() + 'px';\n }\n }\n };\n Dialog.prototype.setOverlayZindex = function (zIndexValue) {\n var zIndex;\n if (isNullOrUndefined(zIndexValue)) {\n zIndex = parseInt(this.element.style.zIndex, 10) ? parseInt(this.element.style.zIndex, 10) : this.zIndex;\n }\n else {\n zIndex = zIndexValue;\n }\n this.dlgOverlay.style.zIndex = (zIndex - 1).toString();\n this.dlgContainer.style.zIndex = zIndex.toString();\n };\n Dialog.prototype.positionChange = function () {\n if (this.isModal) {\n if (!isNaN(parseFloat(this.position.X)) && !isNaN(parseFloat(this.position.Y))) {\n this.setPopupPosition();\n }\n else if ((!isNaN(parseFloat(this.position.X)) && isNaN(parseFloat(this.position.Y)))\n || (isNaN(parseFloat(this.position.X)) && !isNaN(parseFloat(this.position.Y)))) {\n this.setPopupPosition();\n }\n else {\n this.element.style.top = '0px';\n this.element.style.left = '0px';\n this.dlgContainer.classList.add('e-dlg-' + this.position.X + '-' + this.position.Y);\n }\n }\n else {\n this.setPopupPosition();\n }\n };\n Dialog.prototype.setPopupPosition = function () {\n this.popupObj.setProperties({\n position: {\n X: this.position.X, Y: this.position.Y\n }\n });\n };\n Dialog.prototype.setAllowDragging = function () {\n var _this = this;\n var handleContent = '.' + DLG_HEADER_CONTENT;\n if (!this.element.classList.contains(DLG_DRAG)) {\n this.dragObj = new Draggable(this.element, {\n clone: false,\n isDragScroll: true,\n abort: '.e-dlg-closeicon-btn',\n handle: handleContent,\n dragStart: function (event) {\n _this.trigger('dragStart', event, function (dragEventArgs) {\n if (isBlazor()) {\n dragEventArgs.bindEvents(event.dragElement);\n }\n });\n },\n dragStop: function (event) {\n if (_this.isModal) {\n _this.IsDragStop = true;\n if (!isNullOrUndefined(_this.position)) {\n _this.dlgContainer.classList.remove('e-dlg-' + _this.position.X + '-' + _this.position.Y);\n }\n // Reset the dialog position after drag completion.\n var targetType = _this.getTargetContainer(_this.target);\n if (targetType instanceof Element) {\n var computedStyle = window.getComputedStyle(targetType);\n if (computedStyle.getPropertyValue('direction') === 'rtl') {\n _this.element.style.position = 'absolute';\n }\n else {\n _this.element.style.position = 'relative';\n }\n }\n else {\n _this.element.style.position = 'relative';\n }\n }\n _this.trigger('dragStop', event);\n _this.element.classList.remove(DLG_RESTRICT_LEFT_VALUE);\n _this.updatePersistData();\n },\n drag: function (event) {\n _this.trigger('drag', event);\n }\n });\n if (!isNullOrUndefined(this.targetEle)) {\n this.dragObj.dragArea = this.targetEle;\n }\n }\n };\n Dialog.prototype.setButton = function () {\n if (!this.isBlazorServerRender()) {\n this.buttonContent = [];\n this.btnObj = [];\n for (var i = 0; i < this.buttons.length; i++) {\n var buttonType = !isNullOrUndefined(this.buttons[i].type) ?\n this.buttons[i].type.toLowerCase() : 'button';\n var btn = this.createElement('button', { className: this.cssClass, attrs: { type: buttonType } });\n this.buttonContent.push(btn.outerHTML);\n }\n this.setFooterTemplate();\n }\n var footerBtn;\n for (var i = 0, childNodes = this.element.children; i < childNodes.length; i++) {\n if (childNodes[i].classList.contains(DLG_FOOTER_CONTENT)) {\n footerBtn = childNodes[i].querySelectorAll('button');\n }\n }\n for (var i = 0; i < this.buttons.length; i++) {\n if (!this.isBlazorServerRender()) {\n this.btnObj[i] = new Button(this.buttons[i].buttonModel);\n }\n if (this.isBlazorServerRender()) {\n this.ftrTemplateContent = this.element.querySelector('.' + DLG_FOOTER_CONTENT);\n }\n if (!isNullOrUndefined(this.ftrTemplateContent) && footerBtn.length > 0) {\n if (typeof (this.buttons[i].click) === 'function') {\n EventHandler.add(footerBtn[i], 'click', this.buttons[i].click, this);\n }\n if (typeof (this.buttons[i].click) === 'object') {\n EventHandler.add(footerBtn[i], 'click', this.buttonClickHandler.bind(this, i), this);\n }\n }\n if (!this.isBlazorServerRender() && !isNullOrUndefined(this.ftrTemplateContent)) {\n this.btnObj[i].appendTo(this.ftrTemplateContent.children[i]);\n if (this.buttons[i].isFlat) {\n this.btnObj[i].element.classList.add('e-flat');\n }\n this.primaryButtonEle = this.element.getElementsByClassName('e-primary')[0];\n }\n }\n };\n Dialog.prototype.buttonClickHandler = function (index) {\n this.trigger('buttons[' + index + '].click', {});\n };\n Dialog.prototype.setContent = function () {\n this.contentEle = this.createElement('div', { className: DLG_CONTENT, id: this.element.id + '_dialog-content' });\n if (this.headerEle) {\n attributes(this.element, { 'aria-describedby': this.element.id + '_title' + ' ' + this.element.id + '_dialog-content' });\n }\n else {\n attributes(this.element, { 'aria-describedby': this.element.id + '_dialog-content' });\n }\n if (this.innerContentElement) {\n this.contentEle.appendChild(this.innerContentElement);\n }\n else if (!isNullOrUndefined(this.content) && this.content !== '' || !this.initialRender) {\n if (typeof (this.content) === 'string' && !isBlazor()) {\n this.setTemplate(this.content, this.contentEle, 'content');\n }\n else if (this.content instanceof HTMLElement) {\n this.contentEle.appendChild(this.content);\n }\n else {\n this.setTemplate(this.content, this.contentEle, 'content');\n }\n }\n if (!isNullOrUndefined(this.headerContent)) {\n this.element.insertBefore(this.contentEle, this.element.children[1]);\n }\n else {\n this.element.insertBefore(this.contentEle, this.element.children[0]);\n }\n if (this.height === 'auto') {\n if (!this.isBlazorServerRender() && Browser.isIE && this.element.style.width === '' && !isNullOrUndefined(this.width)) {\n this.element.style.width = formatUnit(this.width);\n }\n this.setMaxHeight();\n }\n };\n Dialog.prototype.setTemplate = function (template, toElement, prop) {\n var templateFn;\n var templateProps;\n if (toElement.classList.contains(DLG_HEADER)) {\n templateProps = this.element.id + 'header';\n }\n else if (toElement.classList.contains(DLG_FOOTER_CONTENT)) {\n templateProps = this.element.id + 'footerTemplate';\n }\n else {\n templateProps = this.element.id + 'content';\n }\n var templateValue;\n if (!isNullOrUndefined(template.outerHTML)) {\n toElement.appendChild(template);\n }\n else if ((typeof template === 'string') || (typeof template !== 'string') || (isBlazor() && !this.isStringTemplate)) {\n if ((typeof template === 'string')) {\n template = this.sanitizeHelper(template);\n }\n if (this.isVue || typeof template !== 'string') {\n templateFn = compile(template);\n templateValue = template;\n }\n else {\n toElement.innerHTML = template;\n }\n }\n var fromElements = [];\n if (!isNullOrUndefined(templateFn)) {\n var isString = (isBlazor() &&\n !this.isStringTemplate && (templateValue).indexOf('
Blazor') === 0) ?\n this.isStringTemplate : true;\n for (var _i = 0, _a = templateFn({}, this, prop, templateProps, isString); _i < _a.length; _i++) {\n var item = _a[_i];\n fromElements.push(item);\n }\n append([].slice.call(fromElements), toElement);\n }\n };\n /*\n * @returns {void}\n * @hidden\n * @value\n */\n Dialog.prototype.sanitizeHelper = function (value) {\n if (this.enableHtmlSanitizer) {\n var dialogItem = SanitizeHtmlHelper.beforeSanitize();\n var beforeEvent = {\n cancel: false,\n helper: null\n };\n extend(dialogItem, dialogItem, beforeEvent);\n this.trigger('beforeSanitizeHtml', dialogItem);\n if (dialogItem.cancel && !isNullOrUndefined(dialogItem.helper)) {\n value = dialogItem.helper(value);\n }\n else if (!dialogItem.cancel) {\n value = SanitizeHtmlHelper.serializeValue(dialogItem, value);\n }\n }\n return value;\n };\n Dialog.prototype.setMaxHeight = function () {\n if (!this.allowMaxHeight) {\n return;\n }\n var display = this.element.style.display;\n this.element.style.display = 'none';\n this.element.style.maxHeight = (!isNullOrUndefined(this.target)) && (this.targetEle.offsetHeight < window.innerHeight) ?\n (this.targetEle.offsetHeight - 20) + 'px' : (window.innerHeight - 20) + 'px';\n this.element.style.display = display;\n if (Browser.isIE && this.height === 'auto' && !isNullOrUndefined(this.contentEle)\n && this.element.offsetHeight < this.contentEle.offsetHeight) {\n this.element.style.height = 'inherit';\n }\n };\n Dialog.prototype.setEnableRTL = function () {\n if (!this.isBlazorServerRender()) {\n if (this.enableRtl) {\n addClass([this.element], RTL);\n }\n else {\n removeClass([this.element], RTL);\n }\n }\n if (!isNullOrUndefined(this.element.querySelector('.e-resize-handle'))) {\n removeResize();\n this.setResize();\n }\n };\n Dialog.prototype.setTargetContent = function () {\n var _this = this;\n if (isNullOrUndefined(this.content) || this.content === '') {\n var isContent = this.element.innerHTML.replace(/\\s|<(\\/?|\\/?)(!--!--)>/g, '') !== '';\n if (this.element.children.length > 0 || isContent) {\n this.innerContentElement = document.createDocumentFragment();\n [].slice.call(this.element.childNodes).forEach(function (el) {\n if (el.nodeType !== 8) {\n _this.innerContentElement.appendChild(el);\n }\n });\n }\n }\n };\n Dialog.prototype.setHeader = function () {\n if (this.headerEle) {\n this.headerEle.innerHTML = '';\n }\n else {\n this.headerEle = this.createElement('div', { id: this.element.id + '_title', className: DLG_HEADER });\n }\n this.createHeaderContent();\n this.headerContent.appendChild(this.headerEle);\n this.setTemplate(this.header, this.headerEle, 'header');\n attributes(this.element, { 'aria-describedby': this.element.id + '_title' });\n attributes(this.element, { 'aria-label': 'dialog' });\n this.element.insertBefore(this.headerContent, this.element.children[0]);\n if (this.allowDragging && (!isNullOrUndefined(this.headerContent))) {\n this.setAllowDragging();\n }\n };\n Dialog.prototype.setFooterTemplate = function () {\n if (this.ftrTemplateContent) {\n this.ftrTemplateContent.innerHTML = '';\n }\n else {\n this.ftrTemplateContent = this.createElement('div', {\n className: DLG_FOOTER_CONTENT\n });\n }\n if (this.footerTemplate !== '' && !isNullOrUndefined(this.footerTemplate)) {\n this.setTemplate(this.footerTemplate, this.ftrTemplateContent, 'footerTemplate');\n }\n else {\n this.ftrTemplateContent.innerHTML = this.buttonContent.join('');\n }\n this.element.appendChild(this.ftrTemplateContent);\n };\n Dialog.prototype.createHeaderContent = function () {\n if (isNullOrUndefined(this.headerContent)) {\n this.headerContent = this.createElement('div', { id: this.element.id + '_dialog-header', className: DLG_HEADER_CONTENT });\n }\n };\n Dialog.prototype.renderCloseIcon = function () {\n if (this.showCloseIcon) {\n this.closeIcon = this.createElement('button', { className: DLG_CLOSE_ICON_BTN, attrs: { type: 'button' } });\n this.closeIconBtnObj = new Button({ cssClass: 'e-flat', iconCss: DLG_CLOSE_ICON + ' ' + ICON });\n this.closeIconTitle();\n if (!isNullOrUndefined(this.headerContent)) {\n prepend([this.closeIcon], this.headerContent);\n }\n else {\n this.createHeaderContent();\n prepend([this.closeIcon], this.headerContent);\n this.element.insertBefore(this.headerContent, this.element.children[0]);\n }\n this.closeIconBtnObj.appendTo(this.closeIcon);\n }\n };\n Dialog.prototype.closeIconTitle = function () {\n this.l10n.setLocale(this.locale);\n var closeIconTitle = this.l10n.getConstant('close');\n this.closeIcon.setAttribute('title', closeIconTitle);\n this.closeIcon.setAttribute('aria-label', closeIconTitle);\n };\n Dialog.prototype.setCSSClass = function (oldCSSClass) {\n if (oldCSSClass) {\n removeClass([this.element], oldCSSClass.split(' '));\n if (this.isModal && !isNullOrUndefined(this.dlgContainer)) {\n removeClass([this.dlgContainer], oldCSSClass.split(' '));\n }\n }\n if (this.cssClass) {\n addClass([this.element], this.cssClass.split(' '));\n if (this.isModal && !isNullOrUndefined(this.dlgContainer)) {\n addClass([this.dlgContainer], this.cssClass.split(' '));\n }\n }\n };\n Dialog.prototype.setIsModal = function () {\n this.dlgContainer = this.createElement('div', { className: DLG_CONTAINER });\n this.setCSSClass();\n this.element.classList.remove(DLG_SHOW);\n this.element.parentNode.insertBefore(this.dlgContainer, this.element);\n this.dlgContainer.appendChild(this.element);\n addClass([this.element], MODAL_DLG);\n this.dlgOverlay = this.createElement('div', { className: DLG_OVERLAY });\n this.dlgOverlay.style.zIndex = (this.zIndex - 1).toString();\n this.dlgContainer.appendChild(this.dlgOverlay);\n };\n Dialog.prototype.getValidFocusNode = function (items) {\n var node;\n for (var u = 0; u < items.length; u++) {\n node = items[u];\n if ((node.clientHeight > 0 || (node.tagName.toLowerCase() === 'a' && node.hasAttribute('href'))) && node.tabIndex > -1 &&\n !node.disabled && !this.disableElement(node, '[disabled],[aria-disabled=\"true\"],[type=\"hidden\"]')) {\n return node;\n }\n else {\n node = null;\n }\n }\n return node;\n };\n Dialog.prototype.focusableElements = function (content) {\n if (!isNullOrUndefined(content)) {\n var value = 'input,select,textarea,button,a,[contenteditable=\"true\"],[tabindex]';\n var items = content.querySelectorAll(value);\n return this.getValidFocusNode(items);\n }\n return null;\n };\n Dialog.prototype.getAutoFocusNode = function (container) {\n var node = container.querySelector('.' + DLG_CLOSE_ICON_BTN);\n var value = '[autofocus]';\n var items = container.querySelectorAll(value);\n var validNode = this.getValidFocusNode(items);\n if (isBlazor()) {\n this.primaryButtonEle = this.element.getElementsByClassName('e-primary')[0];\n }\n if (!isNullOrUndefined(validNode)) {\n node = validNode;\n }\n else {\n validNode = this.focusableElements(this.contentEle);\n if (!isNullOrUndefined(validNode)) {\n return node = validNode;\n }\n else if (!isNullOrUndefined(this.primaryButtonEle)) {\n return this.element.querySelector('.' + DLG_PRIMARY_BUTTON);\n }\n }\n return node;\n };\n Dialog.prototype.disableElement = function (element, t) {\n var elementMatch = element ? element.matches || element.webkitMatchesSelector || element.msGetRegionContent : null;\n if (elementMatch) {\n for (; element; element = element.parentNode) {\n if (element instanceof Element && elementMatch.call(element, t)) {\n /* istanbul ignore next */\n return element;\n }\n }\n }\n return null;\n };\n Dialog.prototype.focusContent = function () {\n var element = this.getAutoFocusNode(this.element);\n var node = !isNullOrUndefined(element) ? element : this.element;\n var userAgent = Browser.userAgent;\n if (userAgent.indexOf('MSIE ') > 0 || userAgent.indexOf('Trident/') > 0) {\n this.element.focus();\n }\n node.focus();\n this.unBindEvent(this.element);\n this.bindEvent(this.element);\n };\n Dialog.prototype.bindEvent = function (element) {\n EventHandler.add(element, 'keydown', this.keyDown, this);\n };\n Dialog.prototype.unBindEvent = function (element) {\n EventHandler.remove(element, 'keydown', this.keyDown);\n };\n Dialog.prototype.updateSanitizeContent = function () {\n if (!this.isBlazorServerRender()) {\n this.contentEle.innerHTML = this.sanitizeHelper(this.content);\n }\n };\n Dialog.prototype.isBlazorServerRender = function () {\n return isBlazor() && this.isServerRendered;\n };\n /**\n * Module required function\n *\n * @returns {void}\n * @private\n */\n Dialog.prototype.getModuleName = function () {\n return 'dialog';\n };\n /**\n * Called internally if any of the property value changed\n *\n * @param {DialogModel} newProp - specifies the new property\n * @param {DialogModel} oldProp - specifies the old property\n * @private\n * @returns {void}\n */\n Dialog.prototype.onPropertyChanged = function (newProp, oldProp) {\n if (!this.element.classList.contains(ROOT)) {\n return;\n }\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'content':\n if (!isNullOrUndefined(this.content) && this.content !== '') {\n if (this.isBlazorServerRender()) {\n this.contentEle = this.element.querySelector('.e-dlg-content');\n }\n if (!isNullOrUndefined(this.contentEle) && this.contentEle.getAttribute('role') !== 'dialog') {\n if (!this.isBlazorServerRender()) {\n this.contentEle.innerHTML = '';\n }\n if (typeof (this.content) === 'function') {\n this.clearTemplate(['content']);\n detach(this.contentEle);\n this.contentEle = null;\n this.setContent();\n }\n else {\n if (typeof (this.content) === 'string') {\n if (this.isBlazorServerRender() && (this.contentEle.innerText === '')) {\n this.contentEle.insertAdjacentHTML('beforeend', this.sanitizeHelper(this.content));\n }\n else {\n this.updateSanitizeContent();\n }\n }\n else {\n this.contentEle.appendChild(this.content);\n }\n }\n this.setMaxHeight();\n }\n else {\n if (!this.isBlazorServerRender() ||\n isNullOrUndefined(this.element.querySelector('.e-dlg-content'))) {\n this.setContent();\n }\n }\n }\n else if (!isNullOrUndefined(this.contentEle)) {\n detach(this.contentEle);\n this.contentEle = null;\n }\n break;\n case 'header':\n if (this.header === '' || isNullOrUndefined(this.header)) {\n if (this.headerEle) {\n detach(this.headerEle);\n this.headerEle = null;\n }\n }\n else {\n if (!this.isBlazorServerRender() ||\n isNullOrUndefined(this.element.querySelector('.e-dlg-header-content'))) {\n this.setHeader();\n }\n }\n break;\n case 'footerTemplate':\n if (this.footerTemplate === '' || isNullOrUndefined(this.footerTemplate)) {\n if (!this.ftrTemplateContent) {\n return;\n }\n detach(this.ftrTemplateContent);\n this.ftrTemplateContent = null;\n this.buttons = [{}];\n }\n else {\n if (!this.isBlazorServerRender() ||\n isNullOrUndefined(this.element.querySelector('.e-footer-content'))) {\n this.setFooterTemplate();\n }\n this.buttons = [{}];\n }\n break;\n case 'showCloseIcon':\n if (this.element.getElementsByClassName(DLG_CLOSE_ICON).length > 0) {\n if (!this.showCloseIcon && (this.header === '' || isNullOrUndefined(this.header))) {\n detach(this.headerContent);\n this.headerContent = null;\n }\n else if (!this.showCloseIcon) {\n detach(this.closeIcon);\n }\n else {\n if (this.isBlazorServerRender()) {\n this.wireEvents();\n }\n }\n }\n else {\n if (!this.isBlazorServerRender()) {\n this.renderCloseIcon();\n }\n this.wireEvents();\n }\n break;\n case 'locale':\n if (this.showCloseIcon) {\n this.closeIconTitle();\n }\n break;\n case 'visible':\n if (this.visible) {\n this.show();\n }\n else {\n this.hide();\n }\n break;\n case 'isModal':\n this.updateIsModal();\n break;\n case 'height':\n setStyleAttribute(this.element, { 'height': formatUnit(newProp.height) });\n this.updatePersistData();\n break;\n case 'width':\n setStyleAttribute(this.element, { 'width': formatUnit(newProp.width) });\n this.updatePersistData();\n break;\n case 'zIndex':\n this.popupObj.zIndex = this.zIndex;\n if (this.isModal) {\n this.setOverlayZindex(this.zIndex);\n }\n if (this.element.style.zIndex !== this.zIndex.toString()) {\n this.calculatezIndex = false;\n }\n break;\n case 'cssClass':\n this.setCSSClass(oldProp.cssClass);\n break;\n case 'buttons': {\n var buttonCount = this.buttons.length;\n if (!isNullOrUndefined(this.ftrTemplateContent) && !this.isBlazorServerRender()) {\n detach(this.ftrTemplateContent);\n this.ftrTemplateContent = null;\n }\n for (var i = 0; i < buttonCount; i++) {\n if (!isNullOrUndefined(this.buttons[i].buttonModel)) {\n this.footerTemplate = '';\n this.setButton();\n }\n }\n break;\n }\n case 'allowDragging':\n if (this.allowDragging && (!isNullOrUndefined(this.headerContent))) {\n this.setAllowDragging();\n }\n else {\n this.dragObj.destroy();\n }\n break;\n case 'target':\n this.setTarget(newProp.target);\n break;\n case 'position':\n this.checkPositionData();\n if (this.isModal) {\n var positionX = this.position.X;\n var positionY = this.position.Y;\n if (!isNullOrUndefined(oldProp.position)) {\n if (!isNullOrUndefined(oldProp.position.X)) {\n positionX = oldProp.position.X;\n }\n if (!isNullOrUndefined(oldProp.position.Y)) {\n positionY = oldProp.position.Y;\n }\n }\n if (this.dlgContainer.classList.contains('e-dlg-' + positionX + '-' + positionY)) {\n this.dlgContainer.classList.remove('e-dlg-' + positionX + '-' + positionY);\n }\n }\n this.positionChange();\n this.updatePersistData();\n break;\n case 'enableRtl':\n this.setEnableRTL();\n break;\n case 'enableResize':\n this.setResize();\n break;\n case 'minHeight':\n if (this.minHeight !== '') {\n this.element.style.minHeight = formatUnit(this.minHeight);\n }\n break;\n }\n }\n };\n Dialog.prototype.setTarget = function (target) {\n this.popupObj.relateTo = target;\n this.target = target;\n this.targetEle = ((typeof this.target) === 'string') ?\n document.querySelector(this.target) : this.target;\n if (this.dragObj) {\n this.dragObj.dragArea = this.targetEle;\n }\n this.setMaxHeight();\n if (this.isModal) {\n this.updateIsModal();\n }\n if (this.enableResize) {\n this.setResize();\n }\n };\n Dialog.prototype.updateIsModal = function () {\n this.element.setAttribute('aria-modal', this.isModal ? 'true' : 'false');\n if (this.isModal) {\n if (isNullOrUndefined(this.dlgOverlay)) {\n this.setIsModal();\n this.element.style.top = '0px';\n this.element.style.left = '0px';\n if (!isNullOrUndefined(this.targetEle)) {\n this.targetEle.appendChild(this.dlgContainer);\n }\n }\n }\n else {\n removeClass([this.element], MODAL_DLG);\n removeClass([document.body], [DLG_TARGET, SCROLL_DISABLED]);\n detach(this.dlgOverlay);\n while (this.dlgContainer.firstChild) {\n this.dlgContainer.parentElement.insertBefore(this.dlgContainer.firstChild, this.dlgContainer);\n }\n this.dlgContainer.parentElement.removeChild(this.dlgContainer);\n }\n if (this.visible) {\n this.show();\n }\n this.positionChange();\n if (this.isModal && this.dlgOverlay) {\n EventHandler.add(this.dlgOverlay, 'click', this.dlgOverlayClickEventHandler, this);\n }\n };\n Dialog.prototype.setzIndex = function (zIndexElement, setPopupZindex) {\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n var currentzIndex = getZindexPartial(zIndexElement);\n this.zIndex = currentzIndex > this.zIndex ? currentzIndex : this.zIndex;\n this.isProtectedOnChange = prevOnChange;\n if (setPopupZindex) {\n this.popupObj.zIndex = this.zIndex;\n }\n };\n Dialog.prototype.windowResizeHandler = function () {\n setMaxWidth(this.targetEle.clientWidth);\n setMaxHeight(this.targetEle.clientHeight);\n this.setMaxHeight();\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {void}\n * @private\n */\n Dialog.prototype.getPersistData = function () {\n return this.addOnPersist(['width', 'height', 'position']);\n };\n Dialog.prototype.removeAllChildren = function (element) {\n while (element.children[0]) {\n this.removeAllChildren(element.children[0]);\n element.removeChild(element.children[0]);\n }\n };\n /**\n * To destroy the widget\n *\n * @returns {void}\n */\n Dialog.prototype.destroy = function () {\n if (this.isDestroyed) {\n return;\n }\n var classArray = [RTL, MODAL_DLG, DLG_RESIZABLE, DLG_RESTRICT_LEFT_VALUE, FULLSCREEN, DEVICE];\n var attrs = ['role', 'aria-modal', 'aria-labelledby', 'aria-describedby', 'aria-grabbed', 'tabindex', 'style'];\n removeClass([this.targetEle], [DLG_TARGET, SCROLL_DISABLED]);\n if (!isNullOrUndefined(this.element) && this.element.classList.contains(FULLSCREEN)) {\n removeClass([document.body], [DLG_TARGET, SCROLL_DISABLED]);\n }\n if (this.isModal) {\n removeClass([(!isNullOrUndefined(this.targetEle) ? this.targetEle : document.body)], SCROLL_DISABLED);\n }\n this.unWireEvents();\n if (!isNullOrUndefined(this.btnObj)) {\n for (var i = 0; i < this.btnObj.length; i++) {\n this.btnObj[i].destroy();\n }\n }\n if (!isNullOrUndefined(this.closeIconBtnObj)) {\n this.closeIconBtnObj.destroy();\n }\n if (!isNullOrUndefined(this.dragObj)) {\n this.dragObj.destroy();\n }\n if (!isNullOrUndefined(this.popupObj.element) && this.popupObj.element.classList.contains(POPUP_ROOT)) {\n this.popupObj.destroy();\n }\n removeClass([this.element], classArray);\n if (!isNullOrUndefined(this.cssClass) && this.cssClass !== '') {\n removeClass([this.element], this.cssClass.split(' '));\n }\n if (!isNullOrUndefined(this.refElement) && !isNullOrUndefined(this.refElement.parentElement)) {\n this.refElement.parentElement.insertBefore((this.isModal ? this.dlgContainer : this.element), this.refElement);\n detach(this.refElement);\n this.refElement = undefined;\n }\n if (this.isModal && !this.isBlazorServerRender()) {\n detach(this.dlgOverlay);\n this.dlgContainer.parentNode.insertBefore(this.element, this.dlgContainer);\n detach(this.dlgContainer);\n }\n if (!this.isBlazorServerRender()) {\n this.element.innerHTML = this.clonedEle.innerHTML;\n }\n if (this.isBlazorServerRender()) {\n if (!isNullOrUndefined(this.element.children)) {\n for (var i = 0; i <= this.element.children.length; i++) {\n i = i - i;\n detach(this.element.children[i]);\n }\n }\n }\n for (var i = 0; i < attrs.length; i++) {\n this.element.removeAttribute(attrs[i]);\n }\n this.ftrTemplateContent = null;\n this.headerContent = null;\n if (!this.isReact && !this.isVue && !isNullOrUndefined(this.contentEle)) {\n this.removeAllChildren(this.contentEle);\n }\n this.contentEle = null;\n if (!this.isBlazorServerRender()) {\n _super.prototype.destroy.call(this);\n }\n else {\n this.isDestroyed = true;\n }\n // eslint-disable-next-line\n if (this.isReact) {\n this.clearTemplate();\n }\n };\n Dialog.prototype.wireWindowResizeEvent = function () {\n this.boundWindowResizeHandler = this.windowResizeHandler.bind(this);\n window.addEventListener('resize', this.boundWindowResizeHandler);\n };\n Dialog.prototype.unWireWindowResizeEvent = function () {\n window.removeEventListener('resize', this.boundWindowResizeHandler);\n this.boundWindowResizeHandler = null;\n };\n /**\n * Binding event to the element while widget creation\n *\n * @returns {void}\n * @hidden\n */\n Dialog.prototype.wireEvents = function () {\n if (this.isBlazorServerRender() && this.showCloseIcon) {\n this.closeIcon = this.element.getElementsByClassName('e-dlg-closeicon-btn')[0];\n }\n if (this.showCloseIcon) {\n EventHandler.add(this.closeIcon, 'click', this.closeIconClickEventHandler, this);\n }\n if (this.isModal && this.dlgOverlay) {\n EventHandler.add(this.dlgOverlay, 'click', this.dlgOverlayClickEventHandler, this);\n }\n };\n /**\n * Unbinding event to the element while widget destroy\n *\n * @returns {void}\n * @hidden\n */\n Dialog.prototype.unWireEvents = function () {\n if (this.showCloseIcon) {\n EventHandler.remove(this.closeIcon, 'click', this.closeIconClickEventHandler);\n }\n if (this.isModal) {\n EventHandler.remove(this.dlgOverlay, 'click', this.dlgOverlayClickEventHandler);\n }\n if (this.buttons.length > 0 && !isNullOrUndefined(this.buttons[0].buttonModel) && this.footerTemplate === '') {\n for (var i = 0; i < this.buttons.length; i++) {\n if (typeof (this.buttons[i].click) === 'function') {\n EventHandler.remove(this.ftrTemplateContent.children[i], 'click', this.buttons[i].click);\n }\n }\n }\n };\n /**\n * Refreshes the dialog's position when the user changes its header and footer height/width dynamically.\n *\n * @returns {void}\n */\n Dialog.prototype.refreshPosition = function () {\n this.popupObj.refreshPosition();\n if (this.element.classList.contains(MODAL_DLG)) {\n this.positionChange();\n }\n };\n /**\n * Returns the current width and height of the Dialog\n *\n * @returns {DialogDimension}- returns the dialog element Dimension.\n * @public\n */\n Dialog.prototype.getDimension = function () {\n var dialogWidth = this.element.offsetWidth;\n var dialogHeight = this.element.offsetHeight;\n return { width: dialogWidth, height: dialogHeight };\n };\n /**\n * Opens the dialog if it is in hidden state.\n * To open the dialog with full screen width, set the parameter to true.\n *\n * @param { boolean } isFullScreen - Enable the fullScreen Dialog.\n * @returns {void}\n */\n Dialog.prototype.show = function (isFullScreen) {\n var _this = this;\n if (!this.element.classList.contains(ROOT)) {\n return;\n }\n if (!this.element.classList.contains(DLG_SHOW) || (!isNullOrUndefined(isFullScreen))) {\n if (!isNullOrUndefined(isFullScreen)) {\n this.fullScreen(isFullScreen);\n }\n var eventArgs_1 = isBlazor() ? {\n cancel: false,\n element: this.element,\n container: this.isModal ? this.dlgContainer : this.element,\n maxHeight: this.element.style.maxHeight\n } : {\n cancel: false,\n element: this.element,\n container: this.isModal ? this.dlgContainer : this.element,\n target: this.target,\n maxHeight: this.element.style.maxHeight\n };\n this.trigger('beforeOpen', eventArgs_1, function (beforeOpenArgs) {\n if (!beforeOpenArgs.cancel) {\n if (_this.element.style.maxHeight !== eventArgs_1.maxHeight) {\n _this.allowMaxHeight = false;\n _this.element.style.maxHeight = eventArgs_1.maxHeight;\n }\n if (_this.enableResize && _this.boundWindowResizeHandler == null && !_this.initialRender) {\n _this.wireWindowResizeEvent();\n }\n _this.storeActiveElement = document.activeElement;\n _this.element.tabIndex = -1;\n if (_this.isModal && (!isNullOrUndefined(_this.dlgOverlay))) {\n _this.dlgOverlay.style.display = 'block';\n _this.dlgContainer.style.display = 'flex';\n removeClass([_this.dlgOverlay], 'e-fade');\n if (!isNullOrUndefined(_this.targetEle)) {\n if (_this.targetEle === document.body) {\n _this.dlgContainer.style.position = 'fixed';\n }\n else {\n _this.dlgContainer.style.position = 'absolute';\n }\n _this.dlgOverlay.style.position = 'absolute';\n var targetType = _this.getTargetContainer(_this.target);\n if (targetType instanceof Element) {\n var computedStyle = window.getComputedStyle(targetType);\n if (computedStyle.getPropertyValue('direction') === 'rtl') {\n _this.element.style.position = 'absolute';\n }\n else {\n _this.element.style.position = 'relative';\n }\n }\n else {\n _this.element.style.position = 'relative';\n }\n addClass([_this.targetEle], [DLG_TARGET, SCROLL_DISABLED]);\n }\n else {\n addClass([document.body], [DLG_TARGET, SCROLL_DISABLED]);\n }\n }\n var openAnimation = {\n name: (_this.animationSettings.effect === 'None' && animationMode === 'Enable') ? 'Zoom' + 'In' : _this.animationSettings.effect + 'In',\n duration: _this.animationSettings.duration,\n delay: _this.animationSettings.delay\n };\n var zIndexElement = (_this.isModal) ? _this.element.parentElement : _this.element;\n if (_this.calculatezIndex) {\n _this.setzIndex(zIndexElement, true);\n setStyleAttribute(_this.element, { 'zIndex': _this.zIndex });\n if (_this.isModal) {\n _this.setOverlayZindex(_this.zIndex);\n }\n }\n // eslint-disable-next-line\n (_this.animationSettings.effect === 'None' && animationMode === 'Enable') ? _this.popupObj.show(openAnimation) : ((_this.animationSettings.effect === 'None') ? _this.popupObj.show() : _this.popupObj.show(openAnimation));\n if (_this.isModal) {\n var targetType = _this.getTargetContainer(_this.target);\n if (targetType instanceof Element) {\n var computedStyle = window.getComputedStyle(targetType);\n if (computedStyle.getPropertyValue('direction') === 'rtl' && !_this.IsDragStop) {\n _this.setPopupPosition();\n }\n }\n }\n _this.dialogOpen = true;\n var prevOnChange = _this.isProtectedOnChange;\n _this.isProtectedOnChange = true;\n _this.visible = true;\n _this.preventVisibility = true;\n _this.isProtectedOnChange = prevOnChange;\n }\n });\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n /**\n * Closes the dialog if it is in visible state.\n *\n * @param { Event } event - specifies the event\n * @returns {void}\n */\n Dialog.prototype.hide = function (event) {\n var _this = this;\n if (!this.element.classList.contains(ROOT)) {\n return;\n }\n if (this.preventVisibility) {\n var eventArgs = isBlazor() ? {\n cancel: false,\n isInteracted: event ? true : false,\n element: this.element,\n container: this.isModal ? this.dlgContainer : this.element,\n event: event\n } : {\n cancel: false,\n isInteracted: event ? true : false,\n element: this.element,\n target: this.target,\n container: this.isModal ? this.dlgContainer : this.element,\n event: event,\n closedBy: this.dlgClosedBy\n };\n this.closeArgs = eventArgs;\n this.trigger('beforeClose', eventArgs, function (beforeCloseArgs) {\n if (!beforeCloseArgs.cancel) {\n if (_this.isModal) {\n if (!isNullOrUndefined(_this.targetEle)) {\n removeClass([_this.targetEle], [DLG_TARGET, SCROLL_DISABLED]);\n }\n }\n if (_this.enableResize) {\n _this.unWireWindowResizeEvent();\n }\n if (document.body.classList.contains(DLG_TARGET) &&\n document.body.classList.contains(SCROLL_DISABLED)) {\n removeClass([document.body], [DLG_TARGET, SCROLL_DISABLED]);\n }\n var closeAnimation = {\n name: (_this.animationSettings.effect === 'None' && animationMode === 'Enable') ? 'Zoom' + 'Out' : _this.animationSettings.effect + 'Out',\n duration: _this.animationSettings.duration,\n delay: _this.animationSettings.delay\n };\n if (_this.animationSettings.effect === 'None' && animationMode === 'Enable') {\n _this.popupObj.hide(closeAnimation);\n }\n else if (_this.animationSettings.effect === 'None') {\n _this.popupObj.hide();\n }\n else {\n _this.popupObj.hide(closeAnimation);\n }\n _this.dialogOpen = false;\n var prevOnChange = _this.isProtectedOnChange;\n _this.isProtectedOnChange = true;\n _this.visible = false;\n _this.preventVisibility = false;\n _this.isProtectedOnChange = prevOnChange;\n }\n _this.dlgClosedBy = DLG_USER_ACTION_CLOSED;\n });\n }\n };\n /**\n * Specifies to view the Full screen Dialog.\n *\n * @param {boolean} args - specifies the arguments\n * @returns {boolean} - returns the boolean value\n * @private\n */\n Dialog.prototype.fullScreen = function (args) {\n /* eslint-disable */\n var top = this.element.offsetTop;\n var left = this.element.offsetLeft;\n /* eslint-enable */\n if (args) {\n if (!this.isModal) {\n this.element.style.top = document.scrollingElement.scrollTop + 'px';\n }\n addClass([this.element], FULLSCREEN);\n var display = this.element.style.display;\n this.element.style.display = 'none';\n this.element.style.maxHeight = (!isNullOrUndefined(this.target)) ?\n (this.targetEle.offsetHeight) + 'px' : (window.innerHeight) + 'px';\n this.element.style.display = display;\n addClass([document.body], [DLG_TARGET, SCROLL_DISABLED]);\n if (this.allowDragging && !isNullOrUndefined(this.dragObj)) {\n this.dragObj.destroy();\n }\n }\n else {\n removeClass([this.element], FULLSCREEN);\n removeClass([document.body], [DLG_TARGET, SCROLL_DISABLED]);\n if (this.allowDragging && (!isNullOrUndefined(this.headerContent))) {\n this.setAllowDragging();\n }\n }\n return args;\n };\n /**\n * Returns the dialog button instances.\n * Based on that, you can dynamically change the button states.\n *\n * @param { number } index - Index of the button.\n * @returns {Button} - returns the button element\n */\n Dialog.prototype.getButtons = function (index) {\n if (!isNullOrUndefined(index)) {\n return this.btnObj[index];\n }\n return this.btnObj;\n };\n __decorate([\n Property('')\n ], Dialog.prototype, \"content\", void 0);\n __decorate([\n Property(true)\n ], Dialog.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property(false)\n ], Dialog.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property(false)\n ], Dialog.prototype, \"showCloseIcon\", void 0);\n __decorate([\n Property(false)\n ], Dialog.prototype, \"isModal\", void 0);\n __decorate([\n Property('')\n ], Dialog.prototype, \"header\", void 0);\n __decorate([\n Property(true)\n ], Dialog.prototype, \"visible\", void 0);\n __decorate([\n Property(false)\n ], Dialog.prototype, \"enableResize\", void 0);\n __decorate([\n Property(['South-East'])\n ], Dialog.prototype, \"resizeHandles\", void 0);\n __decorate([\n Property('auto')\n ], Dialog.prototype, \"height\", void 0);\n __decorate([\n Property('')\n ], Dialog.prototype, \"minHeight\", void 0);\n __decorate([\n Property('100%')\n ], Dialog.prototype, \"width\", void 0);\n __decorate([\n Property('')\n ], Dialog.prototype, \"cssClass\", void 0);\n __decorate([\n Property(1000)\n ], Dialog.prototype, \"zIndex\", void 0);\n __decorate([\n Property(null)\n ], Dialog.prototype, \"target\", void 0);\n __decorate([\n Property('')\n ], Dialog.prototype, \"footerTemplate\", void 0);\n __decorate([\n Property(false)\n ], Dialog.prototype, \"allowDragging\", void 0);\n __decorate([\n Collection([{}], ButtonProps)\n ], Dialog.prototype, \"buttons\", void 0);\n __decorate([\n Property(true)\n ], Dialog.prototype, \"closeOnEscape\", void 0);\n __decorate([\n Complex({}, AnimationSettings)\n ], Dialog.prototype, \"animationSettings\", void 0);\n __decorate([\n Complex({ X: 'center', Y: 'center' }, PositionData)\n ], Dialog.prototype, \"position\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"beforeSanitizeHtml\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"beforeClose\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"dragStart\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"dragStop\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"drag\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"overlayClick\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"resizeStart\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"resizing\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"resizeStop\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"destroyed\", void 0);\n Dialog = __decorate([\n NotifyPropertyChanges\n ], Dialog);\n return Dialog;\n}(Component));\nexport { Dialog };\n/**\n * Base for creating Alert and Confirmation Dialog through util method.\n */\n// eslint-disable-next-line\nexport var DialogUtility;\n(function (DialogUtility) {\n /**\n * An alert dialog box is used to display warning like messages to the users.\n * ```\n * Eg : DialogUtility.alert('Alert message');\n *\n * ```\n */\n /* istanbul ignore next */\n /**\n *\n * @param {AlertDialogArgs} args - specifies the string\n * @returns {Dialog} - returns the dialog element.\n */\n function alert(args) {\n var dialogElement = createElement('div', { 'className': DLG_UTIL_ALERT });\n document.body.appendChild(dialogElement);\n var alertDialogObj;\n var okButtonModel = [{\n buttonModel: { isPrimary: true, content: 'OK' },\n click: function () {\n this.hide();\n }\n }];\n if (typeof (args) === 'string') {\n alertDialogObj = createDialog({ content: args,\n position: { X: 'center', Y: 'top' },\n isModal: true, header: DLG_UTIL_DEFAULT_TITLE,\n buttons: okButtonModel }, dialogElement);\n }\n else {\n alertDialogObj = createDialog(alertOptions(args), dialogElement);\n }\n alertDialogObj.close = function () {\n if (args && args.close) {\n args.close.apply(alertDialogObj);\n }\n alertDialogObj.destroy();\n if (alertDialogObj.element.classList.contains('e-dlg-modal')) {\n alertDialogObj.element.parentElement.remove();\n alertDialogObj.target.classList.remove(DLG_UTIL_ROOT);\n }\n else {\n alertDialogObj.element.remove();\n }\n };\n return alertDialogObj;\n }\n DialogUtility.alert = alert;\n /**\n * A confirm dialog displays a specified message along with ‘OK’ and ‘Cancel’ button.\n * ```\n * Eg : DialogUtility.confirm('Confirm dialog message');\n *\n * ```\n */\n /* istanbul ignore next */\n /**\n *\n * @param {ConfirmDialogArgs} args - specifies the args\n * @returns {Dialog} - returns te element\n */\n function confirm(args) {\n var dialogElement = createElement('div', { 'className': DLG_UTIL_CONFIRM });\n document.body.appendChild(dialogElement);\n var confirmDialogObj;\n var okCancelButtonModel = [{\n buttonModel: { isPrimary: true, content: 'OK' },\n click: function () {\n this.hide();\n }\n }, {\n buttonModel: { content: 'Cancel' },\n click: function () {\n this.hide();\n }\n }];\n if (typeof (args) === 'string') {\n confirmDialogObj = createDialog({ position: { X: 'center', Y: 'top' }, content: args, isModal: true,\n header: DLG_UTIL_DEFAULT_TITLE, buttons: okCancelButtonModel\n }, dialogElement);\n }\n else {\n confirmDialogObj = createDialog(confirmOptions(args), dialogElement);\n }\n confirmDialogObj.close = function () {\n if (args && args.close) {\n args.close.apply(confirmDialogObj);\n }\n confirmDialogObj.destroy();\n if (confirmDialogObj.element.classList.contains('e-dlg-modal')) {\n confirmDialogObj.element.parentElement.remove();\n confirmDialogObj.target.classList.remove(DLG_UTIL_ROOT);\n }\n else {\n confirmDialogObj.element.remove();\n }\n };\n return confirmDialogObj;\n }\n DialogUtility.confirm = confirm;\n // eslint-disable-next-line\n function createDialog(options, element) {\n var dialogObject = new Dialog(options);\n dialogObject.appendTo(element);\n return dialogObject;\n }\n // eslint-disable-next-line\n function alertOptions(option) {\n var options = {};\n options.buttons = [];\n options = formOptions(options, option);\n options = setAlertButtonModel(options, option);\n return options;\n }\n // eslint-disable-next-line\n function confirmOptions(option) {\n var options = {};\n options.buttons = [];\n options = formOptions(options, option);\n options = setConfirmButtonModel(options, option);\n return options;\n }\n // eslint-disable-next-line\n function formOptions(options, option) {\n options.header = !isNullOrUndefined(option.title) ? option.title : null;\n options.content = !isNullOrUndefined(option.content) ? option.content : '';\n options.isModal = !isNullOrUndefined(option.isModal) ? option.isModal : true;\n options.showCloseIcon = !isNullOrUndefined(option.showCloseIcon) ? option.showCloseIcon : false;\n options.allowDragging = !isNullOrUndefined(option.isDraggable) ? option.isDraggable : false;\n options.closeOnEscape = !isNullOrUndefined(option.closeOnEscape) ? option.closeOnEscape : false;\n options.position = !isNullOrUndefined(option.position) ? option.position : { X: 'center', Y: 'top' };\n options.animationSettings = !isNullOrUndefined(option.animationSettings) ? option.animationSettings :\n { effect: 'Fade', duration: 400, delay: 0 };\n options.cssClass = !isNullOrUndefined(option.cssClass) ? option.cssClass : '';\n options.zIndex = !isNullOrUndefined(option.zIndex) ? option.zIndex : 1000;\n options.open = !isNullOrUndefined(option.open) ? option.open : null;\n options.width = !isNullOrUndefined(option.width) ? option.width : 'auto';\n options.height = !isNullOrUndefined(option.height) ? option.height : 'auto';\n return options;\n }\n // eslint-disable-next-line\n function setAlertButtonModel(options, option) {\n var alertButtonModel = [{\n buttonModel: { isPrimary: true, content: 'OK' },\n click: function () {\n this.hide();\n }\n }];\n if (!isNullOrUndefined(option.okButton)) {\n options.buttons[0] = formButtonModel(options.buttons[0], option.okButton, alertButtonModel[0]);\n }\n else {\n options.buttons = alertButtonModel;\n }\n return options;\n }\n // eslint-disable-next-line\n function setConfirmButtonModel(options, option) {\n var okButtonModel = {\n buttonModel: { isPrimary: true, content: 'OK' },\n click: function () {\n this.hide();\n }\n };\n var cancelButtonModel = {\n buttonModel: { content: 'Cancel' },\n click: function () {\n this.hide();\n }\n };\n if (!isNullOrUndefined(option.okButton)) {\n options.buttons[0] = formButtonModel(options.buttons[0], option.okButton, okButtonModel);\n }\n else {\n options.buttons[0] = okButtonModel;\n }\n if (!isNullOrUndefined(option.cancelButton)) {\n options.buttons[1] = formButtonModel(options.buttons[1], option.cancelButton, cancelButtonModel);\n }\n else {\n options.buttons[1] = cancelButtonModel;\n }\n return options;\n }\n // eslint-disable-next-line\n function formButtonModel(buttonModel, option, buttonPropModel) {\n var buttonProps = buttonPropModel;\n if (!isNullOrUndefined(option.text)) {\n buttonProps.buttonModel.content = option.text;\n }\n if (!isNullOrUndefined(option.icon)) {\n buttonProps.buttonModel.iconCss = option.icon;\n }\n if (!isNullOrUndefined(option.cssClass)) {\n buttonProps.buttonModel.cssClass = option.cssClass;\n }\n if (!isNullOrUndefined(option.click)) {\n buttonProps.click = option.click;\n }\n if (!isNullOrUndefined(option.isFlat)) {\n buttonProps.isFlat = option.isFlat;\n }\n return buttonProps;\n }\n})(DialogUtility || (DialogUtility = {}));\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __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 { Component, Property, ChildProperty, Event, append, compile } from '@syncfusion/ej2-base';\nimport { EventHandler, Touch, Browser, Animation as PopupAnimation, animationMode } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, getUniqueID, formatUnit, select, selectAll } from '@syncfusion/ej2-base';\nimport { attributes, closest, removeClass, addClass, remove } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, Complex, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { Popup } from '../popup/popup';\nimport { calculatePosition } from '../common/position';\nimport { isCollide, fit, destroy as collisionDestroy } from '../common/collision';\nvar TOUCHEND_HIDE_DELAY = 1500;\nvar TAPHOLD_THRESHOLD = 500;\nvar SHOW_POINTER_TIP_GAP = 0;\nvar HIDE_POINTER_TIP_GAP = 8;\nvar MOUSE_TRAIL_GAP = 2;\nvar POINTER_ADJUST = 2;\nvar ROOT = 'e-tooltip';\nvar RTL = 'e-rtl';\nvar DEVICE = 'e-bigger';\nvar ICON = 'e-icons';\nvar CLOSE = 'e-tooltip-close';\nvar TOOLTIP_WRAP = 'e-tooltip-wrap';\nvar CONTENT = 'e-tip-content';\nvar ARROW_TIP = 'e-arrow-tip';\nvar ARROW_TIP_OUTER = 'e-arrow-tip-outer';\nvar ARROW_TIP_INNER = 'e-arrow-tip-inner';\nvar TIP_BOTTOM = 'e-tip-bottom';\nvar TIP_TOP = 'e-tip-top';\nvar TIP_LEFT = 'e-tip-left';\nvar TIP_RIGHT = 'e-tip-right';\nvar POPUP_ROOT = 'e-popup';\nvar POPUP_OPEN = 'e-popup-open';\nvar POPUP_CLOSE = 'e-popup-close';\nvar POPUP_LIB = 'e-lib';\nvar HIDE_POPUP = 'e-hidden';\nvar POPUP_CONTAINER = 'e-tooltip-popup-container';\nvar Animation = /** @class */ (function (_super) {\n __extends(Animation, _super);\n function Animation() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property({ effect: 'FadeIn', duration: 150, delay: 0 })\n ], Animation.prototype, \"open\", void 0);\n __decorate([\n Property({ effect: 'FadeOut', duration: 150, delay: 0 })\n ], Animation.prototype, \"close\", void 0);\n return Animation;\n}(ChildProperty));\nexport { Animation };\n/**\n * Represents the Tooltip component that displays a piece of information about the target element on mouse hover.\n * ```html\n *
Show Tooltip
\n * ```\n * ```typescript\n * \n * ```\n */\nvar Tooltip = /** @class */ (function (_super) {\n __extends(Tooltip, _super);\n /**\n * Constructor for creating the Tooltip Component\n *\n * @param {TooltipModel} options - specifies the options for the constructor\n * @param {string| HTMLElement} element - specifies the element for the constructor\n *\n */\n function Tooltip(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.mouseMoveEvent = null;\n _this.mouseMoveTarget = null;\n _this.containerElement = null;\n _this.isBodyContainer = true;\n return _this;\n }\n Tooltip.prototype.initialize = function () {\n this.formatPosition();\n addClass([this.element], ROOT);\n };\n Tooltip.prototype.formatPosition = function () {\n var _a, _b;\n if (!this.position)\n return;\n if (this.position.indexOf('Top') === 0 || this.position.indexOf('Bottom') === 0) {\n _a = this.position.split(/(?=[A-Z])/), this.tooltipPositionY = _a[0], this.tooltipPositionX = _a[1];\n }\n else {\n _b = this.position.split(/(?=[A-Z])/), this.tooltipPositionX = _b[0], this.tooltipPositionY = _b[1];\n }\n };\n Tooltip.prototype.renderArrow = function () {\n this.setTipClass(this.position);\n var tip = this.createElement('div', { className: ARROW_TIP + ' ' + this.tipClass });\n tip.appendChild(this.createElement('div', { className: ARROW_TIP_OUTER + ' ' + this.tipClass }));\n tip.appendChild(this.createElement('div', { className: ARROW_TIP_INNER + ' ' + this.tipClass }));\n this.tooltipEle.appendChild(tip);\n };\n Tooltip.prototype.setTipClass = function (position) {\n if (position.indexOf('Right') === 0) {\n this.tipClass = TIP_LEFT;\n }\n else if (position.indexOf('Bottom') === 0) {\n this.tipClass = TIP_TOP;\n }\n else if (position.indexOf('Left') === 0) {\n this.tipClass = TIP_RIGHT;\n }\n else {\n this.tipClass = TIP_BOTTOM;\n }\n };\n Tooltip.prototype.renderPopup = function (target) {\n var elePos = this.mouseTrail ? { top: 0, left: 0 } : this.getTooltipPosition(target);\n this.tooltipEle.classList.remove(POPUP_LIB);\n this.popupObj = new Popup(this.tooltipEle, {\n height: this.height,\n width: this.width,\n position: { X: elePos.left, Y: elePos.top },\n enableRtl: this.enableRtl,\n open: this.openPopupHandler.bind(this),\n close: this.closePopupHandler.bind(this)\n });\n };\n Tooltip.prototype.getScalingFactor = function (target) {\n if (!target) {\n return { x: 1, y: 1 };\n }\n var scalingFactors = { x: 1, y: 1 };\n var elementsWithTransform = target.closest('[style*=\"transform: scale\"]');\n if (elementsWithTransform && elementsWithTransform !== this.tooltipEle && elementsWithTransform.contains(this.tooltipEle)) {\n var computedStyle = window.getComputedStyle(elementsWithTransform);\n var transformValue = computedStyle.getPropertyValue('transform');\n var matrixValues = transformValue.match(/matrix\\(([^)]+)\\)/)[1].split(',').map(parseFloat);\n scalingFactors.x = matrixValues[0];\n scalingFactors.y = matrixValues[3];\n }\n return scalingFactors;\n };\n Tooltip.prototype.getTooltipPosition = function (target) {\n this.tooltipEle.style.display = 'block';\n var parentWithZoomStyle = this.element.closest('[style*=\"zoom\"]');\n if (parentWithZoomStyle) {\n if (!parentWithZoomStyle.contains(this.tooltipEle)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.tooltipEle.style.zoom = getComputedStyle(parentWithZoomStyle).zoom;\n }\n }\n var pos = calculatePosition(target, this.tooltipPositionX, this.tooltipPositionY, !this.isBodyContainer, this.isBodyContainer ? null : this.containerElement.getBoundingClientRect());\n var scalingFactors = this.getScalingFactor(target);\n var offsetPos = this.calculateTooltipOffset(this.position, scalingFactors.x, scalingFactors.y);\n var collisionPosition = this.calculateElementPosition(pos, offsetPos);\n var collisionLeft = collisionPosition[0];\n var collisionTop = collisionPosition[1];\n var elePos = this.collisionFlipFit(target, collisionLeft, collisionTop);\n elePos.left = elePos.left / scalingFactors.x;\n elePos.top = elePos.top / scalingFactors.y;\n this.tooltipEle.style.display = '';\n return elePos;\n };\n Tooltip.prototype.windowResize = function () {\n this.reposition(this.findTarget());\n };\n Tooltip.prototype.reposition = function (target) {\n if (this.popupObj && target) {\n var elePos = this.getTooltipPosition(target);\n this.popupObj.position = { X: elePos.left, Y: elePos.top };\n this.popupObj.dataBind();\n }\n };\n Tooltip.prototype.openPopupHandler = function () {\n if (!this.mouseTrail && this.needTemplateReposition()) {\n this.reposition(this.findTarget());\n }\n this.trigger('afterOpen', this.tooltipEventArgs);\n this.tooltipEventArgs = null;\n };\n Tooltip.prototype.closePopupHandler = function () {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact && !(this.opensOn === 'Click' && typeof (this.content) === 'function')) {\n this.clearTemplate(['content']);\n }\n this.clear();\n this.trigger('afterClose', this.tooltipEventArgs);\n this.tooltipEventArgs = null;\n };\n Tooltip.prototype.calculateTooltipOffset = function (position, xScalingFactor, yScalingFactor) {\n if (xScalingFactor === void 0) { xScalingFactor = 1; }\n if (yScalingFactor === void 0) { yScalingFactor = 1; }\n var pos = { top: 0, left: 0 };\n var tipWidth;\n var tipHeight;\n var tooltipEleWidth;\n var tooltipEleHeight;\n var arrowEle;\n var tipAdjust;\n var tipHeightAdjust;\n var tipWidthAdjust;\n if (xScalingFactor !== 1 || yScalingFactor !== 1) {\n var tooltipEleRect = this.tooltipEle.getBoundingClientRect();\n var arrowEleRect = void 0;\n tooltipEleWidth = Math.round(tooltipEleRect.width);\n tooltipEleHeight = Math.round(tooltipEleRect.height);\n arrowEle = select('.' + ARROW_TIP, this.tooltipEle);\n if (arrowEle) {\n arrowEleRect = arrowEle.getBoundingClientRect();\n }\n tipWidth = arrowEle ? Math.round(arrowEleRect.width) : 0;\n tipHeight = arrowEle ? Math.round(arrowEleRect.height) : 0;\n tipAdjust = (this.showTipPointer ? SHOW_POINTER_TIP_GAP : HIDE_POINTER_TIP_GAP);\n tipHeightAdjust = (tipHeight / 2) + POINTER_ADJUST + (tooltipEleHeight - (this.tooltipEle.clientHeight * yScalingFactor));\n tipWidthAdjust = (tipWidth / 2) + POINTER_ADJUST + (tooltipEleWidth - (this.tooltipEle.clientWidth * xScalingFactor));\n }\n else {\n tooltipEleWidth = this.tooltipEle.offsetWidth;\n tooltipEleHeight = this.tooltipEle.offsetHeight;\n arrowEle = select('.' + ARROW_TIP, this.tooltipEle);\n tipWidth = arrowEle ? arrowEle.offsetWidth : 0;\n tipHeight = arrowEle ? arrowEle.offsetHeight : 0;\n tipAdjust = (this.showTipPointer ? SHOW_POINTER_TIP_GAP : HIDE_POINTER_TIP_GAP);\n tipHeightAdjust = (tipHeight / 2) + POINTER_ADJUST + (this.tooltipEle.offsetHeight - this.tooltipEle.clientHeight);\n tipWidthAdjust = (tipWidth / 2) + POINTER_ADJUST + (this.tooltipEle.offsetWidth - this.tooltipEle.clientWidth);\n }\n if (this.mouseTrail) {\n tipAdjust += MOUSE_TRAIL_GAP;\n }\n switch (position) {\n case 'RightTop':\n pos.left += tipWidth + tipAdjust;\n pos.top -= tooltipEleHeight - tipHeightAdjust;\n break;\n case 'RightCenter':\n pos.left += tipWidth + tipAdjust;\n pos.top -= (tooltipEleHeight / 2);\n break;\n case 'RightBottom':\n pos.left += tipWidth + tipAdjust;\n pos.top -= (tipHeightAdjust);\n break;\n case 'BottomRight':\n pos.top += (tipHeight + tipAdjust);\n pos.left -= (tipWidthAdjust);\n break;\n case 'BottomCenter':\n pos.top += (tipHeight + tipAdjust);\n pos.left -= (tooltipEleWidth / 2);\n break;\n case 'BottomLeft':\n pos.top += (tipHeight + tipAdjust);\n pos.left -= (tooltipEleWidth - tipWidthAdjust);\n break;\n case 'LeftBottom':\n pos.left -= (tipWidth + tooltipEleWidth + tipAdjust);\n pos.top -= (tipHeightAdjust);\n break;\n case 'LeftCenter':\n pos.left -= (tipWidth + tooltipEleWidth + tipAdjust);\n pos.top -= (tooltipEleHeight / 2);\n break;\n case 'LeftTop':\n pos.left -= (tipWidth + tooltipEleWidth + tipAdjust);\n pos.top -= (tooltipEleHeight - tipHeightAdjust);\n break;\n case 'TopLeft':\n pos.top -= (tooltipEleHeight + tipHeight + tipAdjust);\n pos.left -= (tooltipEleWidth - tipWidthAdjust);\n break;\n case 'TopRight':\n pos.top -= (tooltipEleHeight + tipHeight + tipAdjust);\n pos.left -= (tipWidthAdjust);\n break;\n default:\n pos.top -= (tooltipEleHeight + tipHeight + tipAdjust);\n pos.left -= (tooltipEleWidth / 2);\n break;\n }\n pos.left += this.offsetX;\n pos.top += this.offsetY;\n return pos;\n };\n Tooltip.prototype.updateTipPosition = function (position) {\n var selEle = selectAll('.' + ARROW_TIP + ',.' + ARROW_TIP_OUTER + ',.' + ARROW_TIP_INNER, this.tooltipEle);\n var removeList = [TIP_BOTTOM, TIP_TOP, TIP_LEFT, TIP_RIGHT];\n removeClass(selEle, removeList);\n this.setTipClass(position);\n addClass(selEle, this.tipClass);\n };\n Tooltip.prototype.adjustArrow = function (target, position, tooltipPositionX, tooltipPositionY) {\n var arrowEle = select('.' + ARROW_TIP, this.tooltipEle);\n if (this.showTipPointer === false || arrowEle === null) {\n return;\n }\n this.updateTipPosition(position);\n var leftValue;\n var topValue;\n this.tooltipEle.style.display = 'block';\n var tooltipWidth = this.tooltipEle.clientWidth;\n var tooltipHeight = this.tooltipEle.clientHeight;\n var arrowInnerELe = select('.' + ARROW_TIP_INNER, this.tooltipEle);\n var tipWidth = arrowEle.offsetWidth;\n var tipHeight = arrowEle.offsetHeight;\n this.tooltipEle.style.display = '';\n if (this.tipClass === TIP_BOTTOM || this.tipClass === TIP_TOP) {\n if (this.tipClass === TIP_BOTTOM) {\n topValue = '99.9%';\n // Arrow icon aligned -2px height from ArrowOuterTip div\n arrowInnerELe.style.top = '-' + (tipHeight - 2) + 'px';\n }\n else {\n topValue = -(tipHeight - 1) + 'px';\n // Arrow icon aligned -6px height from ArrowOuterTip div\n arrowInnerELe.style.top = '-' + (tipHeight - 6) + 'px';\n }\n if (target) {\n var tipPosExclude = tooltipPositionX !== 'Center' || (tooltipWidth > target.offsetWidth) || this.mouseTrail;\n if ((tipPosExclude && tooltipPositionX === 'Left') || (!tipPosExclude && this.tipPointerPosition === 'End')) {\n leftValue = (tooltipWidth - tipWidth - POINTER_ADJUST) + 'px';\n }\n else if ((tipPosExclude && tooltipPositionX === 'Right') || (!tipPosExclude && this.tipPointerPosition === 'Start')) {\n leftValue = POINTER_ADJUST + 'px';\n }\n else if ((tipPosExclude) && (this.tipPointerPosition === 'End' || this.tipPointerPosition === 'Start')) {\n leftValue = (this.tipPointerPosition === 'End') ? ((target.offsetWidth + ((this.tooltipEle.offsetWidth - target.offsetWidth) / 2)) - (tipWidth / 2)) - POINTER_ADJUST + 'px'\n : ((this.tooltipEle.offsetWidth - target.offsetWidth) / 2) - (tipWidth / 2) + POINTER_ADJUST + 'px';\n }\n else {\n leftValue = ((tooltipWidth / 2) - (tipWidth / 2)) + 'px';\n }\n }\n }\n else {\n if (this.tipClass === TIP_RIGHT) {\n leftValue = '99.9%';\n // Arrow icon aligned -2px left from ArrowOuterTip div\n arrowInnerELe.style.left = '-' + (tipWidth - 2) + 'px';\n }\n else {\n leftValue = -(tipWidth - 1) + 'px';\n // Arrow icon aligned -2px from ArrowOuterTip width\n arrowInnerELe.style.left = (-(tipWidth) + (tipWidth - 2)) + 'px';\n }\n var tipPosExclude = tooltipPositionY !== 'Center' || (tooltipHeight > target.offsetHeight) || this.mouseTrail;\n if ((tipPosExclude && tooltipPositionY === 'Top') || (!tipPosExclude && this.tipPointerPosition === 'End')) {\n topValue = (tooltipHeight - tipHeight - POINTER_ADJUST) + 'px';\n }\n else if ((tipPosExclude && tooltipPositionY === 'Bottom') || (!tipPosExclude && this.tipPointerPosition === 'Start')) {\n topValue = POINTER_ADJUST + 'px';\n }\n else {\n topValue = ((tooltipHeight / 2) - (tipHeight / 2)) + 'px';\n }\n }\n arrowEle.style.top = topValue;\n arrowEle.style.left = leftValue;\n };\n Tooltip.prototype.renderContent = function (target) {\n var tooltipContent = select('.' + CONTENT, this.tooltipEle);\n if (this.cssClass) {\n addClass([this.tooltipEle], this.cssClass.split(' '));\n }\n if (target && !isNullOrUndefined(target.getAttribute('title'))) {\n target.setAttribute('data-content', target.getAttribute('title'));\n target.removeAttribute('title');\n }\n if (!isNullOrUndefined(this.content)) {\n tooltipContent.innerHTML = '';\n if (this.content instanceof HTMLElement) {\n tooltipContent.appendChild(this.content);\n }\n else if (typeof this.content === 'string') {\n if (this.isAngular) {\n this.setProperties({ content: SanitizeHtmlHelper.sanitize(this.content) }, true);\n }\n else {\n this.content = (this.enableHtmlSanitizer) ? SanitizeHtmlHelper.sanitize(this.content) : this.content;\n }\n if (this.enableHtmlParse) {\n var tempFunction = compile(this.content);\n var tempArr = tempFunction({}, this, 'content', this.element.id + 'content', undefined, undefined, tooltipContent, this.root);\n if (tempArr) {\n append(tempArr, tooltipContent);\n }\n }\n else {\n tooltipContent['textContent'] = this.content;\n }\n }\n else {\n var templateFunction = compile(this.content);\n var tempArr = templateFunction({}, this, 'content', this.element.id + 'content', undefined, undefined, tooltipContent);\n if (tempArr) {\n append(tempArr, tooltipContent);\n }\n this.renderReactTemplates();\n }\n }\n else {\n if (target && !isNullOrUndefined(target.getAttribute('data-content'))) {\n tooltipContent.innerHTML = target.getAttribute('data-content');\n }\n }\n };\n Tooltip.prototype.renderCloseIcon = function () {\n if (!this.isSticky) {\n var existingCloseIcon = this.tooltipEle.querySelector('.' + ICON + '.' + CLOSE);\n if (existingCloseIcon) {\n remove(existingCloseIcon);\n }\n return;\n }\n var tipClose = this.createElement('div', { className: ICON + ' ' + CLOSE });\n this.tooltipEle.appendChild(tipClose);\n EventHandler.add(tipClose, Browser.touchStartEvent, this.onStickyClose, this);\n };\n Tooltip.prototype.addDescribedBy = function (target, id) {\n var describedby = (target.getAttribute('aria-describedby') || '').split(/\\s+/);\n if (describedby.indexOf(id) < 0) {\n describedby.push(id);\n }\n attributes(target, { 'aria-describedby': describedby.join(' ').trim(), 'data-tooltip-id': id });\n };\n Tooltip.prototype.removeDescribedBy = function (target) {\n var id = target.getAttribute('data-tooltip-id');\n var describedby = (target.getAttribute('aria-describedby') || '').split(/\\s+/);\n var index = describedby.indexOf(id);\n if (index !== -1) {\n describedby.splice(index, 1);\n }\n target.removeAttribute('data-tooltip-id');\n var orgdescribedby = describedby.join(' ').trim();\n if (orgdescribedby) {\n target.setAttribute('aria-describedby', orgdescribedby);\n }\n else {\n target.removeAttribute('aria-describedby');\n }\n };\n Tooltip.prototype.tapHoldHandler = function (evt) {\n clearTimeout(this.autoCloseTimer);\n this.targetHover(evt.originalEvent);\n };\n Tooltip.prototype.touchEndHandler = function () {\n var _this = this;\n if (this.isSticky) {\n return;\n }\n var close = function () {\n _this.close();\n };\n this.autoCloseTimer = setTimeout(close, TOUCHEND_HIDE_DELAY);\n };\n Tooltip.prototype.targetClick = function (e) {\n var target;\n if (this.target) {\n target = closest(e.target, this.target);\n }\n else {\n target = this.element;\n }\n if (isNullOrUndefined(target)) {\n return;\n }\n if (target.getAttribute('data-tooltip-id') === null) {\n this.targetHover(e);\n }\n else if (!this.isSticky) {\n this.hideTooltip(this.animation.close, e, target);\n }\n };\n Tooltip.prototype.targetHover = function (e) {\n var target;\n if (this.target) {\n target = closest(e.target, this.target);\n }\n else {\n target = this.element;\n }\n if (isNullOrUndefined(target) || (target.getAttribute('data-tooltip-id') !== null && this.closeDelay === 0)) {\n return;\n }\n var targetList = [].slice.call(selectAll('[data-tooltip-id= \"' + this.ctrlId + '_content\"]', document));\n for (var _i = 0, targetList_1 = targetList; _i < targetList_1.length; _i++) {\n var target_1 = targetList_1[_i];\n this.restoreElement(target_1);\n }\n this.showTooltip(target, this.animation.open, e);\n };\n Tooltip.prototype.mouseMoveBeforeOpen = function (e) {\n this.mouseMoveEvent = e;\n };\n Tooltip.prototype.mouseMoveBeforeRemove = function () {\n if (this.mouseMoveTarget) {\n EventHandler.remove(this.mouseMoveTarget, 'mousemove touchstart', this.mouseMoveBeforeOpen);\n }\n };\n Tooltip.prototype.showTooltip = function (target, showAnimation, e) {\n var _this = this;\n clearTimeout(this.showTimer);\n clearTimeout(this.hideTimer);\n if (this.openDelay && this.mouseTrail) {\n this.mouseMoveBeforeRemove();\n this.mouseMoveTarget = target;\n EventHandler.add(this.mouseMoveTarget, 'mousemove touchstart', this.mouseMoveBeforeOpen, this);\n }\n this.tooltipEventArgs = {\n type: e ? e.type : null, cancel: false, target: target, event: e ? e : null,\n element: this.tooltipEle, isInteracted: !isNullOrUndefined(e)\n };\n var observeCallback = function (beforeRenderArgs) {\n _this.beforeRenderCallback(beforeRenderArgs, target, e, showAnimation);\n };\n this.trigger('beforeRender', this.tooltipEventArgs, observeCallback.bind(this));\n };\n Tooltip.prototype.beforeRenderCallback = function (beforeRenderArgs, target, e, showAnimation) {\n if (beforeRenderArgs.cancel) {\n this.isHidden = true;\n this.clear();\n this.mouseMoveBeforeRemove();\n }\n else {\n this.isHidden = false;\n if (isNullOrUndefined(this.tooltipEle)) {\n this.ctrlId = this.element.getAttribute('id') ?\n getUniqueID(this.element.getAttribute('id')) : getUniqueID('tooltip');\n this.tooltipEle = this.createElement('div', {\n className: TOOLTIP_WRAP + ' ' + POPUP_ROOT + ' ' + POPUP_LIB, attrs: {\n role: 'tooltip', 'aria-hidden': 'false', 'id': this.ctrlId + '_content'\n }, styles: 'width:' +\n formatUnit(this.width) + ';height:' + formatUnit(this.height) + ';position:absolute;'\n });\n this.tooltipBeforeRender(target, this);\n this.tooltipAfterRender(target, e, showAnimation, this);\n }\n else {\n if (target) {\n this.adjustArrow(target, this.position, this.tooltipPositionX, this.tooltipPositionY);\n this.addDescribedBy(target, this.ctrlId + '_content');\n this.renderContent(target);\n PopupAnimation.stop(this.tooltipEle);\n this.reposition(target);\n this.tooltipAfterRender(target, e, showAnimation, this);\n }\n }\n }\n };\n Tooltip.prototype.appendContainer = function (ctrlObj) {\n if (typeof this.container == 'string') {\n if (this.container === 'body') {\n this.containerElement = document.body;\n }\n else {\n this.isBodyContainer = false;\n this.containerElement = select(this.container, document);\n }\n }\n else if (this.container instanceof HTMLElement) {\n this.containerElement = this.container;\n this.isBodyContainer = this.containerElement.tagName === 'BODY';\n }\n if (!this.isBodyContainer) {\n addClass([this.containerElement], POPUP_CONTAINER);\n }\n this.containerElement.appendChild(ctrlObj.tooltipEle);\n };\n Tooltip.prototype.tooltipBeforeRender = function (target, ctrlObj) {\n if (target) {\n if (Browser.isDevice) {\n addClass([ctrlObj.tooltipEle], DEVICE);\n }\n if (ctrlObj.width !== 'auto') {\n ctrlObj.tooltipEle.style.maxWidth = formatUnit(ctrlObj.width);\n }\n ctrlObj.tooltipEle.appendChild(ctrlObj.createElement('div', { className: CONTENT }));\n this.appendContainer(ctrlObj);\n removeClass([ctrlObj.tooltipEle], HIDE_POPUP);\n ctrlObj.addDescribedBy(target, ctrlObj.ctrlId + '_content');\n ctrlObj.renderContent(target);\n addClass([ctrlObj.tooltipEle], POPUP_OPEN);\n if (ctrlObj.showTipPointer) {\n ctrlObj.renderArrow();\n }\n ctrlObj.renderCloseIcon();\n ctrlObj.renderPopup(target);\n ctrlObj.adjustArrow(target, ctrlObj.position, ctrlObj.tooltipPositionX, ctrlObj.tooltipPositionY);\n PopupAnimation.stop(ctrlObj.tooltipEle);\n ctrlObj.reposition(target);\n }\n };\n Tooltip.prototype.tooltipAfterRender = function (target, e, showAnimation, ctrlObj) {\n if (target) {\n removeClass([ctrlObj.tooltipEle], POPUP_OPEN);\n addClass([ctrlObj.tooltipEle], POPUP_CLOSE);\n ctrlObj.tooltipEventArgs = {\n type: e ? e.type : null, cancel: false, target: target, event: e ? e : null,\n element: ctrlObj.tooltipEle, isInteracted: !isNullOrUndefined(e)\n };\n if (ctrlObj.needTemplateReposition() && !ctrlObj.mouseTrail && (showAnimation.effect === 'None' || showAnimation.effect == 'FadeIn' ||\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (this.isReact && typeof ctrlObj.content != 'string'))) {\n ctrlObj.tooltipEle.style.display = 'none';\n }\n var observeCallback = function (observedArgs) {\n ctrlObj.beforeOpenCallback(observedArgs, target, showAnimation, e);\n };\n ctrlObj.trigger('beforeOpen', ctrlObj.tooltipEventArgs, observeCallback.bind(ctrlObj));\n }\n };\n Tooltip.prototype.beforeOpenCallback = function (observedArgs, target, showAnimation, e) {\n var _this = this;\n if (observedArgs.cancel) {\n this.isHidden = true;\n this.clear();\n this.mouseMoveBeforeRemove();\n this.restoreElement(target);\n }\n else {\n var openAnimation_1 = {\n name: (showAnimation.effect === 'None' && animationMode === 'Enable') ? 'FadeIn' : this.animation.open.effect,\n duration: showAnimation.duration,\n delay: showAnimation.delay,\n timingFunction: 'easeOut'\n };\n if (showAnimation.effect === 'None') {\n openAnimation_1 = undefined;\n }\n if (this.openDelay > 0) {\n var show = function () {\n if (_this.mouseTrail) {\n EventHandler.add(target, 'mousemove touchstart mouseenter', _this.onMouseMove, _this);\n }\n if (_this.popupObj) {\n _this.popupObj.show(openAnimation_1, target);\n if (_this.mouseMoveEvent && _this.mouseTrail) {\n _this.onMouseMove(_this.mouseMoveEvent);\n }\n }\n };\n this.showTimer = setTimeout(show, this.openDelay);\n }\n else {\n if (this.popupObj) {\n this.popupObj.show(openAnimation_1, target);\n }\n }\n }\n if (e) {\n this.wireMouseEvents(e, target);\n }\n };\n Tooltip.prototype.needTemplateReposition = function () {\n // eslint-disable-next-line\n var tooltip = this;\n return !isNullOrUndefined(tooltip.viewContainerRef)\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n && typeof tooltip.viewContainerRef !== 'string' || this.isReact;\n };\n Tooltip.prototype.checkCollision = function (target, x, y) {\n var elePos = {\n left: x, top: y, position: this.position,\n horizontal: this.tooltipPositionX, vertical: this.tooltipPositionY\n };\n var affectedPos = isCollide(this.tooltipEle, this.checkCollideTarget(), x, y);\n if (affectedPos.length > 0) {\n elePos.horizontal = affectedPos.indexOf('left') >= 0 ? 'Right' : affectedPos.indexOf('right') >= 0 ? 'Left' :\n this.tooltipPositionX;\n elePos.vertical = affectedPos.indexOf('top') >= 0 ? 'Bottom' : affectedPos.indexOf('bottom') >= 0 ? 'Top' :\n this.tooltipPositionY;\n }\n return elePos;\n };\n Tooltip.prototype.calculateElementPosition = function (pos, offsetPos) {\n return [this.isBodyContainer ? pos.left + offsetPos.left :\n (pos.left - this.containerElement.getBoundingClientRect().left) + offsetPos.left + window.pageXOffset + this.containerElement.scrollLeft,\n this.isBodyContainer ? pos.top + offsetPos.top :\n (pos.top - this.containerElement.getBoundingClientRect().top) +\n offsetPos.top + window.pageYOffset + this.containerElement.scrollTop];\n };\n Tooltip.prototype.collisionFlipFit = function (target, x, y) {\n var elePos = this.checkCollision(target, x, y);\n var newpos = elePos.position;\n if (this.tooltipPositionY !== elePos.vertical) {\n newpos = ((this.position.indexOf('Bottom') === 0 || this.position.indexOf('Top') === 0) ?\n elePos.vertical + this.tooltipPositionX : this.tooltipPositionX + elePos.vertical);\n }\n if (this.tooltipPositionX !== elePos.horizontal) {\n if (newpos.indexOf('Left') === 0) {\n elePos.vertical = (newpos === 'LeftTop' || newpos === 'LeftCenter') ? 'Top' : 'Bottom';\n newpos = (elePos.vertical + 'Left');\n }\n if (newpos.indexOf('Right') === 0) {\n elePos.vertical = (newpos === 'RightTop' || newpos === 'RightCenter') ? 'Top' : 'Bottom';\n newpos = (elePos.vertical + 'Right');\n }\n elePos.horizontal = this.tooltipPositionX;\n }\n this.tooltipEventArgs = {\n type: null, cancel: false, target: target, event: null,\n element: this.tooltipEle, collidedPosition: newpos\n };\n this.trigger('beforeCollision', this.tooltipEventArgs);\n if (this.tooltipEventArgs.cancel) {\n newpos = this.position;\n }\n else {\n var elePosVertical = elePos.vertical;\n var elePosHorizontal = elePos.horizontal;\n if (elePos.position !== newpos) {\n var pos = calculatePosition(target, elePosHorizontal, elePosVertical, !this.isBodyContainer, this.isBodyContainer ? null : this.containerElement.getBoundingClientRect());\n this.adjustArrow(target, newpos, elePosHorizontal, elePosVertical);\n var scalingFactors = this.getScalingFactor(target);\n var offsetPos = this.calculateTooltipOffset(newpos, scalingFactors.x, scalingFactors.y);\n offsetPos.top -= this.getOffSetPosition('TopBottom', newpos, this.offsetY);\n offsetPos.left -= this.getOffSetPosition('RightLeft', newpos, this.offsetX);\n elePos.position = newpos;\n var elePosition = this.calculateElementPosition(pos, offsetPos);\n elePos.left = elePosition[0];\n elePos.top = elePosition[1];\n }\n else {\n this.adjustArrow(target, newpos, elePosHorizontal, elePosVertical);\n }\n }\n var eleOffset = { left: elePos.left, top: elePos.top };\n var position = this.isBodyContainer ?\n fit(this.tooltipEle, this.checkCollideTarget(), { X: true, Y: this.windowCollision }, eleOffset) : eleOffset;\n this.tooltipEle.style.display = 'block';\n var arrowEle = select('.' + ARROW_TIP, this.tooltipEle);\n if (this.showTipPointer && arrowEle != null && (newpos.indexOf('Bottom') === 0 || newpos.indexOf('Top') === 0)) {\n var arrowleft = parseInt(arrowEle.style.left, 10) - (position.left - elePos.left);\n if (arrowleft < 0) {\n arrowleft = 0;\n }\n else if ((arrowleft + arrowEle.offsetWidth) > this.tooltipEle.clientWidth) {\n arrowleft = this.tooltipEle.clientWidth - arrowEle.offsetWidth;\n }\n arrowEle.style.left = arrowleft.toString() + 'px';\n }\n this.tooltipEle.style.display = '';\n eleOffset.left = position.left;\n eleOffset.top = position.top;\n return eleOffset;\n };\n Tooltip.prototype.getOffSetPosition = function (positionString, newPos, offsetType) {\n return ((positionString.indexOf(this.position.split(/(?=[A-Z])/)[0]) !== -1) &&\n (positionString.indexOf(newPos.split(/(?=[A-Z])/)[0]) !== -1)) ? (2 * offsetType) : 0;\n };\n Tooltip.prototype.checkCollideTarget = function () {\n return !this.windowCollision && this.target ? this.element : null;\n };\n Tooltip.prototype.hideTooltip = function (hideAnimation, e, targetElement) {\n var _this = this;\n if (this.closeDelay > 0) {\n clearTimeout(this.hideTimer);\n clearTimeout(this.showTimer);\n var hide = function () {\n if (_this.closeDelay && _this.tooltipEle && _this.isTooltipOpen) {\n return;\n }\n _this.tooltipHide(hideAnimation, e, targetElement);\n };\n this.hideTimer = setTimeout(hide, this.closeDelay);\n }\n else {\n this.tooltipHide(hideAnimation, e, targetElement);\n }\n };\n Tooltip.prototype.tooltipHide = function (hideAnimation, e, targetElement) {\n var _this = this;\n var target;\n if (e) {\n target = this.target ? (targetElement || e.target) : this.element;\n }\n else {\n target = select('[data-tooltip-id= \"' + this.ctrlId + '_content\"]', document);\n }\n this.tooltipEventArgs = {\n type: e ? e.type : null, cancel: false, target: target, event: e ? e : null,\n element: this.tooltipEle, isInteracted: !isNullOrUndefined(e)\n };\n // this line commented for close the tooltip popup element even the target element destroyed in a page.\n //if (isNullOrUndefined(target)) { return; }\n this.trigger('beforeClose', this.tooltipEventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n _this.mouseMoveBeforeRemove();\n _this.popupHide(hideAnimation, target, e);\n }\n else {\n _this.isHidden = false;\n }\n });\n this.tooltipEventArgs = null;\n };\n Tooltip.prototype.popupHide = function (hideAnimation, target, e) {\n if (target && e) {\n this.restoreElement(target);\n }\n this.isHidden = true;\n var closeAnimation = {\n name: (hideAnimation.effect === 'None' && animationMode === 'Enable') ? 'FadeOut' : this.animation.close.effect,\n duration: hideAnimation.duration,\n delay: hideAnimation.delay,\n timingFunction: 'easeIn'\n };\n if (hideAnimation.effect === 'None') {\n closeAnimation = undefined;\n }\n if (this.popupObj) {\n this.popupObj.hide(closeAnimation);\n }\n };\n Tooltip.prototype.restoreElement = function (target) {\n this.unwireMouseEvents(target);\n if (!isNullOrUndefined(target.getAttribute('data-content'))) {\n target.setAttribute('title', target.getAttribute('data-content'));\n target.removeAttribute('data-content');\n }\n this.removeDescribedBy(target);\n };\n Tooltip.prototype.clear = function () {\n var target = this.findTarget();\n if (target) {\n this.restoreElement(target);\n }\n if (this.tooltipEle) {\n removeClass([this.tooltipEle], POPUP_CLOSE);\n addClass([this.tooltipEle], POPUP_OPEN);\n }\n if (this.isHidden) {\n if (this.popupObj) {\n this.popupObj.destroy();\n }\n if (this.tooltipEle) {\n remove(this.tooltipEle);\n }\n this.tooltipEle = null;\n this.popupObj = null;\n }\n };\n Tooltip.prototype.tooltipHover = function () {\n if (this.tooltipEle) {\n this.isTooltipOpen = true;\n }\n };\n Tooltip.prototype.tooltipMouseOut = function (e) {\n this.isTooltipOpen = false;\n this.hideTooltip(this.animation.close, e, this.findTarget());\n };\n Tooltip.prototype.onMouseOut = function (e) {\n var enteredElement = e.relatedTarget;\n // don't close the tooltip only if it is tooltip content element\n if (enteredElement && !this.mouseTrail) {\n var checkForTooltipElement = closest(enteredElement, \".\" + TOOLTIP_WRAP + \".\" + POPUP_LIB + \".\" + POPUP_ROOT);\n if (checkForTooltipElement) {\n EventHandler.add(checkForTooltipElement, 'mouseleave', this.tooltipElementMouseOut, this);\n }\n else {\n this.hideTooltip(this.animation.close, e, this.findTarget());\n if (this.closeDelay === 0 && this.animation.close.effect === 'None') {\n this.clear();\n }\n }\n }\n else {\n this.hideTooltip(this.animation.close, e, this.findTarget());\n this.clear();\n }\n };\n Tooltip.prototype.tooltipElementMouseOut = function (e) {\n this.hideTooltip(this.animation.close, e, this.findTarget());\n EventHandler.remove(this.element, 'mouseleave', this.tooltipElementMouseOut);\n this.clear();\n };\n Tooltip.prototype.onStickyClose = function () {\n this.close();\n };\n Tooltip.prototype.onMouseMove = function (event) {\n var eventPageX = 0;\n var eventPageY = 0;\n if (event.type.indexOf('touch') > -1) {\n event.preventDefault();\n eventPageX = event.touches[0].pageX;\n eventPageY = event.touches[0].pageY;\n }\n else {\n eventPageX = event.pageX;\n eventPageY = event.pageY;\n }\n PopupAnimation.stop(this.tooltipEle);\n removeClass([this.tooltipEle], POPUP_CLOSE);\n addClass([this.tooltipEle], POPUP_OPEN);\n this.adjustArrow(event.target, this.position, this.tooltipPositionX, this.tooltipPositionY);\n var scalingFactors = this.getScalingFactor(event.target);\n var pos = this.calculateTooltipOffset(this.position, scalingFactors.x, scalingFactors.y);\n var x = eventPageX + pos.left + this.offsetX;\n var y = eventPageY + pos.top + this.offsetY;\n var elePos = this.checkCollision(event.target, x, y);\n if (this.tooltipPositionX !== elePos.horizontal || this.tooltipPositionY !== elePos.vertical) {\n var newpos = (this.position.indexOf('Bottom') === 0 || this.position.indexOf('Top') === 0) ?\n elePos.vertical + elePos.horizontal : elePos.horizontal + elePos.vertical;\n elePos.position = newpos;\n this.adjustArrow(event.target, elePos.position, elePos.horizontal, elePos.vertical);\n var colpos = this.calculateTooltipOffset(elePos.position, scalingFactors.x, scalingFactors.y);\n elePos.left = eventPageX + colpos.left - this.offsetX;\n elePos.top = eventPageY + colpos.top - this.offsetY;\n }\n this.tooltipEle.style.left = elePos.left + 'px';\n this.tooltipEle.style.top = elePos.top + 'px';\n };\n Tooltip.prototype.keyDown = function (event) {\n if (this.tooltipEle && event.keyCode === 27) {\n this.close();\n }\n };\n Tooltip.prototype.touchEnd = function (e) {\n if (this.tooltipEle && closest(e.target, '.' + ROOT) === null && !this.isSticky) {\n this.close();\n }\n };\n Tooltip.prototype.scrollHandler = function (e) {\n if (this.tooltipEle && !this.isSticky) {\n if (!(closest(e.target, \".\" + TOOLTIP_WRAP + \".\" + POPUP_LIB + \".\" + POPUP_ROOT))\n && !this.isSticky) {\n this.close();\n }\n }\n };\n /**\n * Core method that initializes the control rendering.\n *\n * @private\n * @returns {void}\n */\n Tooltip.prototype.render = function () {\n this.initialize();\n this.wireEvents(this.opensOn);\n this.renderComplete();\n };\n /**\n * Initializes the values of private members.\n *\n * @private\n * @returns {void}\n */\n Tooltip.prototype.preRender = function () {\n this.tipClass = TIP_BOTTOM;\n this.tooltipPositionX = 'Center';\n this.tooltipPositionY = 'Top';\n this.isHidden = true;\n };\n /**\n * Binding events to the Tooltip element.\n *\n * @hidden\n * @param {string} trigger - specify the trigger string to the function\n * @returns {void}\n *\n */\n Tooltip.prototype.wireEvents = function (trigger) {\n var triggerList = this.getTriggerList(trigger);\n for (var _i = 0, triggerList_1 = triggerList; _i < triggerList_1.length; _i++) {\n var opensOn = triggerList_1[_i];\n if (opensOn === 'Custom') {\n return;\n }\n if (opensOn === 'Focus') {\n this.wireFocusEvents();\n }\n if (opensOn === 'Click') {\n EventHandler.add(this.element, Browser.touchStartEvent, this.targetClick, this);\n }\n if (opensOn === 'Hover') {\n if (Browser.isDevice) {\n this.touchModule = new Touch(this.element, {\n tapHoldThreshold: TAPHOLD_THRESHOLD,\n tapHold: this.tapHoldHandler.bind(this)\n });\n EventHandler.add(this.element, Browser.touchEndEvent, this.touchEndHandler, this);\n }\n else {\n EventHandler.add(this.element, 'mouseover', this.targetHover, this);\n }\n }\n }\n EventHandler.add(document, 'touchend', this.touchEnd, this);\n EventHandler.add(document, 'scroll wheel', this.scrollHandler, this);\n EventHandler.add(window, 'resize', this.windowResize, this);\n EventHandler.add(document, 'keydown', this.keyDown, this);\n };\n Tooltip.prototype.getTriggerList = function (trigger) {\n if (!trigger)\n return [];\n if (trigger === 'Auto') {\n trigger = (Browser.isDevice) ? 'Hover' : 'Hover Focus';\n }\n return trigger.split(' ');\n };\n Tooltip.prototype.wireFocusEvents = function () {\n if (!isNullOrUndefined(this.target)) {\n var targetList = [].slice.call(selectAll(this.target, this.element));\n this.targetsList = targetList;\n if (!isNullOrUndefined(this.targetsList) && this.targetsList.length > 0) {\n for (var _i = 0, targetList_2 = targetList; _i < targetList_2.length; _i++) {\n var target = targetList_2[_i];\n EventHandler.add(target, 'focus', this.targetHover, this);\n }\n }\n else {\n EventHandler.add(this.element, 'focusin', this.targetHover, this);\n }\n }\n else {\n EventHandler.add(this.element, 'focusin', this.targetHover, this);\n }\n };\n Tooltip.prototype.wireMouseEvents = function (e, target) {\n if (this.tooltipEle) {\n if (!this.isSticky) {\n if (e.type === 'focus') {\n EventHandler.add(target, 'blur', this.onMouseOut, this);\n }\n if (e.type === 'focusin') {\n EventHandler.add(target, 'focusout', this.onMouseOut, this);\n }\n if (e.type === 'mouseover') {\n EventHandler.add(target, 'mouseleave', this.onMouseOut, this);\n }\n if (this.closeDelay) {\n EventHandler.add(this.tooltipEle, 'mouseenter', this.tooltipHover, this);\n EventHandler.add(this.tooltipEle, 'mouseleave', this.tooltipMouseOut, this);\n }\n }\n if (this.mouseTrail && this.openDelay === 0) {\n EventHandler.add(target, 'mousemove touchstart mouseenter', this.onMouseMove, this);\n }\n }\n };\n /**\n * Unbinding events from the element on widget destroy.\n *\n * @hidden\n *\n * @param {string} trigger - specify the trigger string to the function\n * @returns {void}\n *\n */\n Tooltip.prototype.unwireEvents = function (trigger) {\n var triggerList = this.getTriggerList(trigger);\n for (var _i = 0, triggerList_2 = triggerList; _i < triggerList_2.length; _i++) {\n var opensOn = triggerList_2[_i];\n if (opensOn === 'Custom') {\n return;\n }\n if (opensOn === 'Focus') {\n this.unwireFocusEvents();\n }\n if (opensOn === 'Click') {\n EventHandler.remove(this.element, Browser.touchStartEvent, this.targetClick);\n }\n if (opensOn === 'Hover') {\n if (Browser.isDevice) {\n if (this.touchModule) {\n this.touchModule.destroy();\n }\n EventHandler.remove(this.element, Browser.touchEndEvent, this.touchEndHandler);\n }\n else {\n EventHandler.remove(this.element, 'mouseover', this.targetHover);\n }\n }\n }\n EventHandler.remove(document, 'touchend', this.touchEnd);\n EventHandler.remove(document, 'scroll wheel', this.scrollHandler);\n EventHandler.remove(window, 'resize', this.windowResize);\n EventHandler.remove(document, 'keydown', this.keyDown);\n };\n Tooltip.prototype.unwireFocusEvents = function () {\n if (!isNullOrUndefined(this.target)) {\n var targetList = [].slice.call(selectAll(this.target, this.element));\n if (!isNullOrUndefined(this.targetsList) && this.targetsList.length > 0) {\n for (var _i = 0, targetList_3 = targetList; _i < targetList_3.length; _i++) {\n var target = targetList_3[_i];\n EventHandler.remove(target, 'focus', this.targetHover);\n }\n }\n else {\n EventHandler.remove(this.element, 'focusin', this.targetHover);\n }\n }\n else {\n EventHandler.remove(this.element, 'focusin', this.targetHover);\n }\n };\n Tooltip.prototype.unwireMouseEvents = function (target) {\n if (!this.isSticky) {\n var triggerList = this.getTriggerList(this.opensOn);\n for (var _i = 0, triggerList_3 = triggerList; _i < triggerList_3.length; _i++) {\n var opensOn = triggerList_3[_i];\n if (opensOn === 'Focus') {\n EventHandler.remove(target, 'blur', this.onMouseOut);\n EventHandler.remove(target, 'focusout', this.onMouseOut);\n }\n if (opensOn === 'Hover' && !Browser.isDevice) {\n EventHandler.remove(target, 'mouseleave', this.onMouseOut);\n }\n }\n if (this.closeDelay) {\n EventHandler.remove(target, 'mouseenter', this.tooltipHover);\n EventHandler.remove(target, 'mouseleave', this.tooltipMouseOut);\n }\n }\n if (this.mouseTrail) {\n EventHandler.remove(target, 'mousemove touchstart mouseenter', this.onMouseMove);\n }\n };\n Tooltip.prototype.findTarget = function () {\n var target = select('[data-tooltip-id= \"' + this.ctrlId + '_content\"]', document);\n return target;\n };\n /**\n * Core method to return the component name.\n *\n * @private\n *\n * @returns {string} - this method returns module name.\n */\n Tooltip.prototype.getModuleName = function () {\n return 'tooltip';\n };\n /**\n * Returns the properties to be maintained in the persisted state.\n *\n * @private\n *\n * @returns {string} - this method returns persisted data.\n */\n Tooltip.prototype.getPersistData = function () {\n return this.addOnPersist([]);\n };\n /**\n * Called internally, if any of the property value changed.\n *\n * @private\n *\n * @param {TooltipModel} newProp - this param gives new property values to the method\n * @param {TooltipModel} oldProp - this param gives old property values to the method\n * @returns {void}\n *\n */\n Tooltip.prototype.onPropertyChanged = function (newProp, oldProp) {\n var targetElement = this.findTarget();\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'width':\n if (this.tooltipEle && targetElement) {\n this.tooltipEle.style.width = this.tooltipEle.style.maxWidth = formatUnit(newProp.width);\n this.reposition(targetElement);\n }\n break;\n case 'height':\n if (this.tooltipEle && targetElement) {\n this.tooltipEle.style.height = formatUnit(newProp.height);\n this.reposition(targetElement);\n }\n break;\n case 'content':\n if (this.tooltipEle) {\n this.renderContent();\n }\n break;\n case 'opensOn':\n this.unwireEvents(oldProp.opensOn);\n this.wireEvents(newProp.opensOn);\n break;\n case 'position':\n this.formatPosition();\n if (this.tooltipEle && targetElement) {\n var arrowInnerELe = select('.' + ARROW_TIP_INNER, this.tooltipEle);\n if (arrowInnerELe) {\n arrowInnerELe.style.top = arrowInnerELe.style.left = null;\n }\n this.reposition(targetElement);\n }\n break;\n case 'tipPointerPosition':\n if (this.tooltipEle && targetElement) {\n this.reposition(targetElement);\n }\n break;\n case 'offsetX':\n if (this.tooltipEle) {\n var x = newProp.offsetX - oldProp.offsetX;\n this.tooltipEle.style.left = (parseInt(this.tooltipEle.style.left, 10) + (x)).toString() + 'px';\n }\n break;\n case 'offsetY':\n if (this.tooltipEle) {\n var y = newProp.offsetY - oldProp.offsetY;\n this.tooltipEle.style.top = (parseInt(this.tooltipEle.style.top, 10) + (y)).toString() + 'px';\n }\n break;\n case 'cssClass':\n if (this.tooltipEle) {\n if (oldProp.cssClass) {\n removeClass([this.tooltipEle], oldProp.cssClass.split(' '));\n }\n if (newProp.cssClass) {\n addClass([this.tooltipEle], newProp.cssClass.split(' '));\n }\n }\n break;\n case 'enableRtl':\n if (this.tooltipEle) {\n if (this.enableRtl) {\n addClass([this.tooltipEle], RTL);\n }\n else {\n removeClass([this.tooltipEle], RTL);\n }\n }\n break;\n case 'isSticky':\n if (this.tooltipEle && targetElement) {\n this.renderCloseIcon();\n this.reposition(targetElement);\n }\n break;\n case 'container':\n if (!isNullOrUndefined(this.containerElement)) {\n removeClass([this.containerElement], POPUP_CONTAINER);\n }\n this.container = newProp.container;\n if (this.tooltipEle && targetElement) {\n this.appendContainer(this);\n this.reposition(targetElement);\n }\n }\n }\n };\n /**\n * It is used to show the Tooltip on the specified target with specific animation settings.\n *\n * @param {HTMLElement} element - Target element where the Tooltip is to be displayed. (It is an optional parameter)\n * @param {TooltipAnimationSettings} animation - Sets the specific animation, while showing the Tooltip on the screen. (It is an optional parameter)\n * @returns {void}\n */\n Tooltip.prototype.open = function (element, animation) {\n if (isNullOrUndefined(animation)) {\n animation = this.animation.open;\n }\n if (isNullOrUndefined(element)) {\n element = this.element;\n }\n if (element.style.display === 'none') {\n return;\n }\n this.showTooltip(element, animation);\n };\n /**\n * It is used to hide the Tooltip with specific animation effect.\n *\n * @param {TooltipAnimationSettings} animation - Sets the specific animation when hiding Tooltip from the screen. (It is an optional parameter)\n * @returns {void}\n */\n Tooltip.prototype.close = function (animation) {\n if (!animation) {\n animation = this.animation.close;\n }\n this.hideTooltip(animation);\n };\n /**\n * It is used to refresh the Tooltip content and its position.\n *\n * @param {HTMLElement} target - Target element where the Tooltip content or position needs to be refreshed.\n * @returns {void}\n */\n Tooltip.prototype.refresh = function (target) {\n if (this.tooltipEle) {\n this.renderContent(target);\n }\n if (this.popupObj && target) {\n this.reposition(target);\n }\n if (!isNullOrUndefined(this.targetsList) && !isNullOrUndefined(this.target)) {\n var target_2 = selectAll(this.target, this.element);\n if (target_2.length !== this.targetsList.length) {\n this.unwireEvents(this.opensOn);\n this.wireEvents(this.opensOn);\n }\n }\n };\n /**\n *\n * It is used to destroy the Tooltip component.\n *\n * @method destroy\n * @returns {void}\n * @memberof Tooltip\n */\n Tooltip.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n if (this.tooltipEle) {\n remove(this.tooltipEle);\n }\n if (this.popupObj) {\n this.popupObj.destroy();\n }\n collisionDestroy();\n removeClass([this.element], ROOT);\n this.unwireEvents(this.opensOn);\n this.unwireMouseEvents(this.element);\n this.tooltipEle = null;\n this.popupObj = null;\n var currentTarget = selectAll('[data-tooltip-id= \"' + this.ctrlId + '_content\"]', this.element);\n for (var _i = 0, currentTarget_1 = currentTarget; _i < currentTarget_1.length; _i++) {\n var target = currentTarget_1[_i];\n this.restoreElement(target);\n }\n this.containerElement = null;\n this.tipClass = null;\n this.tooltipPositionX = null;\n this.tooltipPositionY = null;\n this.ctrlId = null;\n this.tooltipEventArgs = null;\n this.touchModule = null;\n this.mouseMoveEvent = null;\n this.mouseMoveTarget = null;\n this.containerElement = null;\n this.targetsList = null;\n };\n __decorate([\n Property('auto')\n ], Tooltip.prototype, \"width\", void 0);\n __decorate([\n Property('auto')\n ], Tooltip.prototype, \"height\", void 0);\n __decorate([\n Property()\n ], Tooltip.prototype, \"content\", void 0);\n __decorate([\n Property('body')\n ], Tooltip.prototype, \"container\", void 0);\n __decorate([\n Property()\n ], Tooltip.prototype, \"target\", void 0);\n __decorate([\n Property('TopCenter')\n ], Tooltip.prototype, \"position\", void 0);\n __decorate([\n Property(0)\n ], Tooltip.prototype, \"offsetX\", void 0);\n __decorate([\n Property(0)\n ], Tooltip.prototype, \"offsetY\", void 0);\n __decorate([\n Property(true)\n ], Tooltip.prototype, \"showTipPointer\", void 0);\n __decorate([\n Property(true)\n ], Tooltip.prototype, \"enableHtmlParse\", void 0);\n __decorate([\n Property(false)\n ], Tooltip.prototype, \"windowCollision\", void 0);\n __decorate([\n Property('Auto')\n ], Tooltip.prototype, \"tipPointerPosition\", void 0);\n __decorate([\n Property('Auto')\n ], Tooltip.prototype, \"opensOn\", void 0);\n __decorate([\n Property(false)\n ], Tooltip.prototype, \"mouseTrail\", void 0);\n __decorate([\n Property(false)\n ], Tooltip.prototype, \"isSticky\", void 0);\n __decorate([\n Complex({}, Animation)\n ], Tooltip.prototype, \"animation\", void 0);\n __decorate([\n Property(0)\n ], Tooltip.prototype, \"openDelay\", void 0);\n __decorate([\n Property(0)\n ], Tooltip.prototype, \"closeDelay\", void 0);\n __decorate([\n Property()\n ], Tooltip.prototype, \"cssClass\", void 0);\n __decorate([\n Property(true)\n ], Tooltip.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property('')\n ], Tooltip.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"beforeRender\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"afterOpen\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"beforeClose\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"afterClose\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"beforeCollision\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"destroyed\", void 0);\n Tooltip = __decorate([\n NotifyPropertyChanges\n ], Tooltip);\n return Tooltip;\n}(Component));\nexport { Tooltip };\n"],"names":["calculateRelativeBasedPosition","anchor","element","fixedElement","anchorPos","left","top","tempAnchor","isNullOrUndefined","offsetParent","style","position","offsetLeft","offsetTop","scrollLeft","scrollTop","parentElement","calculatePosition","currentElement","positionX","positionY","targetValues","popupRect","undefined","fixedParent","parentDocument","ownerDocument","pos","updatePosition","toLowerCase","setPosx","value","setPosy","posX","posY","elementRect","getBoundingClientRect","getElementHCenter","getElementTop","getElementRight","getElementVCenter","getElementLeft","getElementBottom","getBodyScrollTop","documentElement","body","getBodyScrollLeft","bottom","height","popupWidth","classList","contains","width","right","fit","viewPortElement","axis","X","Y","elemData","targetContainer","containerWidth","getTargetContainerWidth","getViewPortWidth","containerLeft","ContainerLeft","containerRight","ContainerRight","overLeft","overRight","containerHeight","getTargetContainerHeight","getViewPortHeight","containerTop","ContainerTop","containerBottom","ContainerBottom","overTop","overBottom","isCollide","x","y","elemOffset","data","yAxis","topCollideCheck","xAxis","leftCollideCheck","topSide","push","rightSide","leftSide","bottomSide","flip","target","offsetX","offsetY","tEdge","TL","TR","BL","BR","eEdge","window","getComputedStyle","display","oldVisibility","visibility","removeProperty","updateElementData","setPosition","leftFlip","topFlip","setPopup","scaleX","scaleY","transformStyle","transform","matrix","DOMMatrix","a","d","edge","eStatus","deepCheck","collideSide","innerHeight","getTargetContainerLeft","getTargetContainerTop","windowWidth","innerWidth","documentReact","document","destroy","getScrollableParent","eleStyle","scrollParents","overflowRegex","parent","tagName","parentStyle","test","overflow","overflowY","overflowX","getZindexPartial","parentZindex","index","defaultView","getPropertyValue","childrenZindex","i","children","length","isEqualNode","siblingsZindex","childNodes","slice","call","finalValue","concat","currentZindexValue","Math","max","apply","getMaxZindex","maxZindex","elements","getElementsByTagName","i_1","createResize","args","resizeStart","resizeBegin","resize","resizing","resizeEnd","resizeComplete","targetElement","getDOMElement","containerElement","boundary","directions","direction","split","dialogBorderResize","indexOf","setBorderResizeElm","trim","resizeHandler","createElement","className","RESIZE_HANDLER","appendChild","minHeight","minWidth","maxWidth","maxHeight","proxy","wireEvents","calculateValues","borderBottom","attrs","unselectable","contenteditable","setAttribute","domElement","isNOU","querySelector","context","this","resizers","querySelectorAll","selectedHandler","EventHandler","add","onMouseDown","eventName","Browser","info","name","onTouchStart","borderResizers","getEventType","e","preventDefault","originalMouseX","pageX","originalMouseY","pageY","FOCUSED_HANDLER","targetEle","DIALOG_RESIZABLE","clientWidth","clientHeight","onMouseMove","onMouseUp","RESTRICT_LEFT","setLeft","touchMoveEvent","touchEndEvent","remove","originalWidth","parseFloat","replace","originalHeight","originalX","originalY","dialogResizeElement","coordinates","touches","changedTouches","resizeTowards","elementClass","resizeSouth","resizeNorth","resizeWest","resizeEast","getClientRectValues","containerRectValues","documentHeight","calculateValue","currentpageY","targetRectValues","calculatedHeight","borderValue","offsetHeight","topWithoutborder","RESIZE_WITHIN_VIEWPORT","parseInt","toString","targetTop","calculatedTop","boundaryRectValues","type","currentHeight","top_1","rectValues","documentWidth","offsetWidth","resizeWestWidth","floor","calculatedWidth","left_1","previousWidth","setWidth","setMinHeight","minimumHeight","setMaxWidth","setMaxHeight","removeResize","handlers","detach","Spinner","action","options","createSpinner","cssClass","label","showSpinner","hideSpinner","setSpinner","internalCreateElement","_a","radius","makeElement","container","create_spinner_container","classNames","filter","wrap","template","spinTemplate","theme","getTheme","calculateRadius","setTheme","createLabel","inner_wrap","CLS_SPINTEMPLATE","replaceContent","spinCSSClass","CLS_HIDESPIN","labelEle","CLS_SPINLABEL","innerHTML","createMaterialSpinner","uniqueID","random_generator","globalTimeOut","timeOut","create_material_element","CLS_MATERIALSPIN","mat_calculate_attributes","createMaterial3Spinner","CLS_MATERIAL3SPIN","createBootstrap4Spinner","CLS_BOOT4SPIN","createBootstrap5Spinner","CLS_BOOT5SPIN","startMatAnimate","globalObject","globalVariables","animateMaterial","globalInfo","timeOutVar","createFabricSpinner","create_fabric_element","CLS_FABRICSPIN","fb_calculate_attributes","createFluentSpinner","CLS_FLUENTSPIN","createFluent2Spinner","CLS_FLUENT2SPIN","createTailwindSpinner","CLS_TAILWINDSPIN","createHighContrastSpinner","CLS_HIGHCONTRASTSPIN","innerContainer","CLS_SPININWRAP","svg","removeChild","createBootstrapSpinner","create_bootstrap_element","boot_calculate_attributes","svgBoot","createElementNS","CLS_BOOTSPIN","insertBefore","firstChild","item","bootCircle","CLS_SPINCIRCLE","defaultRadius","startArc","start","defineArcPoints","circleEle","generateSeries","begin","stop","formSeries","series","end","count","increment","toFixed","animateBootstrap","id","getAttribute","circle","boot_animate","isAnimate","setTimeout","bind","getElementsByClassName","defaultSize","DEFT_MAT_WIDTH","DEFT_MAT3_WIDTH","DEFT_FAB_WIDTH","DEFT_FLUENT_WIDTH","DEFT_FLUENT2_WIDTH","DEFT_BOOT4_WIDTH","DEFT_BOOT5_WIDTH","DEFT_BOOT_WIDTH","previousId","random","combine","charAt","innerCon","themeClass","svgFabric","fabricCirclePath","fabricCircleArc","CLS_SPINARC","cls","svgMaterial","matCirclePath","spinnerContainer","spinnerInnerContainer","CLS_SPINWRAP","spinnerInfo","createCircle","easeAnimation","easing","duration","mat_animation","currentTime","min","Date","getTime","startTime","updatePath","change","path","getDashOffset","diameter","strokeSize","getSize","getStrokeSize","rotate","transformOrigin","drawArc","PI","offset","current","timestamp","timecount","innerConainer","trgClass","centerX","centerY","defineCircle","defineArc","angle","radians","cos","sin","endArc","join","showHideSpinner","isHide","spinnerWrap","spinWrapCollection","isIE","Array","from","find","inner","CLS_SHOWSPIN","svgEle","clearTimeout","ensureTemplate","makeEle","replaceTheme","svgElement","__extends","extendStatics","b","Object","setPrototypeOf","__proto__","p","hasOwnProperty","__","constructor","prototype","create","__decorate","decorators","key","desc","c","arguments","r","getOwnPropertyDescriptor","Reflect","decorate","defineProperty","PositionData","_super","Property","ChildProperty","CLASSNAMES","ROOT","RTL","OPEN","CLOSE","Popup","onPropertyChanged","newProp","oldProp","_i","keys","setStyleAttribute","formatUnit","zIndex","setEnableRtl","refreshPosition","setContent","actionOnScroll","wireScrollEvents","unwireScrollEvents","getModuleName","resolveCollision","checkCollision","getPersistData","addOnPersist","unwireEvents","content","relateTo","collisionDestroy","render","styles","isDevice","orientationOnChange","getRelateToElement","parent_1","scrollRefresh","parent_2","relateToElement","setProperties","hide","targetVisible","isElementOnViewport","targetInvisibleStatus","trigger","scrollElement","parent_3","isElementVisible","rect","checkGetBoundingClientRect","win","windowView","scrollY","scrollX","outerWidth","outerHeight","off","ele","elementView","parent_4","preRender","reposition","enableRtl","textContent","relateToElem","props","_this","collision","checkFixedParent","parentDisplay","getAnchorPosition","error","anchorEle","eleRect","anchorRect","targetType","callFlip","param","callFit","viewPortRect","horz","vert","show","animationOptions","relativeElement","fmDialogContainer","isIos","zIndexElement","showAnimation","removeClass","addClass","isDestroyed","Animation","animate","hideAnimation","Complex","Event","NotifyPropertyChanges","Component","ButtonProps","AnimationSettings","DLG_TARGET","SCROLL_DISABLED","FULLSCREEN","DLG_UTIL_DEFAULT_TITLE","DLG_UTIL_ROOT","DLG_UTIL_ALERT","DLG_UTIL_CONFIRM","Dialog","needsID","initialize","initRender","enableResize","setResize","animationSettings","effect","getMinHeight","renderComplete","initializeValue","dlgClosedBy","headerContent","allowMaxHeight","preventVisibility","clonedEle","cloneNode","closeIconClickEventHandler","event","dlgOverlayClickEventHandler","preventFocus","overlayClickEventArgs","focusContent","localeText","close","l10n","L10n","locale","checkPositionData","prevOnChange","isProtectedOnChange","updatePersistData","enablePersistence","dragObj","isNumberValue","isNumber","getEle","list","selector","computedHeaderHeight","computedFooterHeight","footerEle","headerHeight","footerHeight","isNaN","onResizeStart","dialogObj","cancel","onResizing","onResizeComplete","isBlazorServerRender","computedHeight","computedWidth","resizeHandles","directionValue","toLocaleLowerCase","isModal","wireWindowResizeEvent","unWireWindowResizeEvent","getFocusElement","items","keyDown","keyCode","buttonObj","btnObj","ftrTemplateContent","contentEle","activeElement","shiftKey","focusableElements","focus","isTagName","isContentEdit","hasAttribute","closeOnEscape","query","ctrlKey","primaryButtonEle","buttonIndex_1","buttons","some","buttonModel","isPrimary","click","setCSSClass","initialRender","attributes","role","setzIndex","calculatezIndex","setTargetContent","header","setHeader","renderCloseIcon","footerTemplate","setButton","setFooterTemplate","allowDragging","setAllowDragging","aria-modal","setIsModal","dlgContainer","dlgOverlay","parentEle","refElement","popupObj","open","eventArgs","resetResizeIcon","openEventArgs","unBindEvent","closeArgs","activeEle","blur","storeActiveElement","positionChange","setEnableRTL","setOverlayZindex","visible","getTargetContainer","Element","setPopupPosition","targetValue","startsWith","getElementById","substring","HTMLElement","dialogConHeight","resizeIcon","zIndexValue","Draggable","clone","isDragScroll","abort","handle","dragStart","dragEventArgs","isBlazor","bindEvents","dragElement","dragStop","IsDragStop","drag","dragArea","buttonContent","buttonType","btn","outerHTML","footerBtn","Button","buttonClickHandler","appendTo","isFlat","headerEle","aria-describedby","innerContentElement","setTemplate","toElement","prop","templateFn","templateProps","templateValue","isStringTemplate","sanitizeHelper","isVue","compile","fromElements","append","enableHtmlSanitizer","dialogItem","SanitizeHtmlHelper","beforeSanitize","beforeEvent","helper","extend","serializeValue","isContent","createDocumentFragment","forEach","el","nodeType","createHeaderContent","aria-label","showCloseIcon","closeIcon","closeIconBtnObj","iconCss","DLG_CLOSE_ICON","closeIconTitle","prepend","setLocale","getConstant","oldCSSClass","parentNode","getValidFocusNode","node","u","tabIndex","disabled","disableElement","getAutoFocusNode","validNode","t","elementMatch","matches","webkitMatchesSelector","msGetRegionContent","userAgent","bindEvent","updateSanitizeContent","isServerRendered","clearTemplate","innerText","insertAdjacentHTML","updateIsModal","buttonCount","setTarget","setPopupZindex","currentzIndex","windowResizeHandler","removeAllChildren","classArray","unWireEvents","removeAttribute","isReact","boundWindowResizeHandler","addEventListener","removeEventListener","getDimension","isFullScreen","fullScreen","eventArgs_1","beforeOpenArgs","computedStyle","openAnimation","animationMode","delay","dialogOpen","renderReactTemplates","isInteracted","closedBy","beforeCloseArgs","closeAnimation","scrollingElement","getButtons","Collection","DialogUtility","alert","dialogElement","alertDialogObj","okButtonModel","createDialog","alertOptions","confirm","confirmDialogObj","okCancelButtonModel","confirmOptions","dialogObject","option","formOptions","setAlertButtonModel","setConfirmButtonModel","title","isDraggable","alertButtonModel","okButton","formButtonModel","cancelButtonModel","cancelButton","buttonPropModel","buttonProps","text","icon","Tooltip","mouseMoveEvent","mouseMoveTarget","isBodyContainer","formatPosition","_b","tooltipPositionY","tooltipPositionX","renderArrow","setTipClass","tip","ARROW_TIP","tipClass","ARROW_TIP_OUTER","ARROW_TIP_INNER","tooltipEle","renderPopup","elePos","mouseTrail","getTooltipPosition","openPopupHandler","closePopupHandler","getScalingFactor","scalingFactors","elementsWithTransform","closest","matrixValues","match","map","parentWithZoomStyle","zoom","offsetPos","calculateTooltipOffset","collisionPosition","calculateElementPosition","collisionLeft","collisionTop","collisionFlipFit","windowResize","findTarget","dataBind","needTemplateReposition","tooltipEventArgs","opensOn","clear","xScalingFactor","yScalingFactor","tipWidth","tipHeight","tooltipEleWidth","tooltipEleHeight","arrowEle","tipAdjust","tipHeightAdjust","tipWidthAdjust","tooltipEleRect","arrowEleRect","round","select","showTipPointer","updateTipPosition","selEle","selectAll","removeList","adjustArrow","leftValue","topValue","tooltipWidth","tooltipHeight","arrowInnerELe","tipPosExclude","tipPointerPosition","POINTER_ADJUST","renderContent","tooltipContent","isAngular","sanitize","enableHtmlParse","tempArr","root","isSticky","existingCloseIcon","tipClose","ICON","touchStartEvent","onStickyClose","addDescribedBy","describedby","data-tooltip-id","removeDescribedBy","splice","orgdescribedby","tapHoldHandler","evt","autoCloseTimer","targetHover","originalEvent","touchEndHandler","targetClick","hideTooltip","animation","closeDelay","targetList_1","ctrlId","target_1","restoreElement","showTooltip","mouseMoveBeforeOpen","mouseMoveBeforeRemove","showTimer","hideTimer","openDelay","observeCallback","beforeRenderArgs","beforeRenderCallback","isHidden","getUniqueID","TOOLTIP_WRAP","aria-hidden","tooltipBeforeRender","tooltipAfterRender","PopupAnimation","appendContainer","ctrlObj","observedArgs","beforeOpenCallback","openAnimation_1","timingFunction","wireMouseEvents","tooltip","viewContainerRef","horizontal","vertical","affectedPos","checkCollideTarget","pageXOffset","pageYOffset","newpos","collidedPosition","elePosVertical","elePosHorizontal","getOffSetPosition","elePosition","eleOffset","windowCollision","arrowleft","positionString","newPos","offsetType","isTooltipOpen","tooltipHide","popupHide","unwireMouseEvents","tooltipHover","tooltipMouseOut","onMouseOut","enteredElement","relatedTarget","checkForTooltipElement","tooltipElementMouseOut","eventPageX","eventPageY","colpos","touchEnd","scrollHandler","triggerList_1","getTriggerList","wireFocusEvents","touchModule","Touch","tapHoldThreshold","tapHold","targetList","targetsList","targetList_2","triggerList_2","unwireFocusEvents","targetList_3","triggerList_3","refresh","currentTarget_1"],"mappings":"+DAeO,SAASA,GAA+BC,EAAQC,GACnD,GAAIC,IAAe,EACfC,GAAcC,KAAM,EAAGC,IAAK,GAC5BC,EAAaN,CACjB,KAAKA,IAAWC,EACZ,MAAOE,EAKX,KAHII,oBAAkBN,EAAQO,eAA4C,UAA3BP,EAAQQ,MAAMC,WACzDR,GAAe,IAEXD,EAAQO,cAAgBN,IAAiBF,GAAUC,EAAQO,eAAiBR,GAChFG,EAAUC,MAAQJ,EAAOW,WACzBR,EAAUE,KAAOL,EAAOY,UACxBZ,EAASA,EAAOQ,YAGpB,KADAR,EAASM,GACDL,EAAQO,cAAgBN,IAAiBF,GAAUC,EAAQO,eAAiBR,GAChFG,EAAUC,MAAQJ,EAAOa,WACzBV,EAAUE,KAAOL,EAAOc,UACxBd,EAASA,EAAOe,aAEpB,OAAOZ,GAWJ,QAASa,GAAkBC,EAAgBC,EAAWC,EAAWJ,EAAeK,GAInF,GAHAC,OAAYC,GACZD,GAAYD,EACZG,KAAcR,GACTE,EACD,OAASb,KAAM,EAAGC,IAAK,EAEtBa,KACDA,EAAY,QAEXC,IACDA,EAAY,OAEhBK,GAAiBP,EAAeQ,cAChCxB,GAAUgB,CACV,IAAIS,IAAQtB,KAAM,EAAGC,IAAK,EAC1B,OAAOsB,GAAeT,EAAUU,cAAeT,EAAUS,cAAeF,GAQ5E,QAASG,GAAQC,EAAOJ,GACpBA,EAAItB,KAAO0B,EAQf,QAASC,GAAQD,EAAOJ,GACpBA,EAAIrB,IAAMyB,EASd,QAASH,GAAeK,EAAMC,EAAMP,GAEhC,OADAQ,GAAcjC,GAAQkC,wBACdF,EAAOD,GACX,IAAK,YACDH,EAAQO,IAAqBV,GAC7BK,EAAQM,IAAiBX,EACzB,MACJ,KAAK,WACDG,EAAQS,IAAmBZ,GAC3BK,EAAQM,IAAiBX,EACzB,MACJ,KAAK,eACDG,EAAQO,IAAqBV,GAC7BK,EAAQQ,IAAqBb,EAC7B,MACJ,KAAK,cACDG,EAAQS,IAAmBZ,GAC3BK,EAAQQ,IAAqBb,EAC7B,MACJ,KAAK,aACDG,EAAQW,IAAkBd,GAC1BK,EAAQQ,IAAqBb,EAC7B,MACJ,KAAK,eACDG,EAAQO,IAAqBV,GAC7BK,EAAQU,IAAoBf,EAC5B,MACJ,KAAK,cACDG,EAAQS,IAAmBZ,GAC3BK,EAAQU,IAAoBf,EAC5B,MACJ,KAAK,aACDG,EAAQW,IAAkBd,GAC1BK,EAAQU,IAAoBf,EAC5B,MACJ,SACA,IAAK,UACDG,EAAQW,IAAkBd,GAC1BK,EAAQM,IAAiBX,GAIjC,MADAzB,IAAU,KACHyB,EAKX,QAASgB,KACL,MAAOlB,IAAemB,gBAAgB7B,WAAaU,GAAeoB,KAAK9B,UAK3E,QAAS+B,KACL,MAAOrB,IAAemB,gBAAgB9B,YAAcW,GAAeoB,KAAK/B,WAK5E,QAAS4B,KACL,MAAOlB,IAAcW,GAAYY,OAASZ,GAAYY,OAASJ,IAKnE,QAASH,KACL,MAAOF,KAAmBH,GAAYa,OAAS,EAKnD,QAASV,KACL,MAAOd,IAAcW,GAAY7B,IAAM6B,GAAY7B,IAAMqC,IAK7D,QAASF,KACL,MAAON,IAAY9B,KAAOyC,IAK9B,QAASP,KACL,GAAIU,GAAc/C,KAAYA,GAAQgD,UAAUC,SAAS,mBAAqBjD,GAAQgD,UAAUC,SAAS,uBAA0BjD,GAAQgD,UAAUC,SAAS,UAAYjD,GAAQgD,UAAUC,SAAS,UAAajD,GAAQgD,UAAUC,SAAS,yBAA6B7B,GAAYA,GAAU8B,MAAQ,EACnS9B,IAAca,GAAYiB,OAAS9B,GAAU8B,MAAS9B,GAAU8B,MAAQ,CAC7E,OAAOjB,IAAYkB,MAAQP,IAAsBG,EAKrD,QAASZ,KACL,MAAOI,KAAoBN,GAAYiB,MAAQ,ECvK5C,QAASE,GAAIpD,EAASqD,EAAiBC,EAAM7C,GAGhD,OAFwB,KAApB4C,IAA8BA,EAAkB,UACvC,KAATC,IAAmBA,GAASC,GAAG,EAAOC,GAAG,KACxCF,EAAKE,IAAMF,EAAKC,EACjB,OAASpD,KAAM,EAAGC,IAAK,EAE3B,IAAIqD,GAAWzD,EAAQkC,uBAMvB,IALAwB,GAAkBL,EAClB9B,GAAiBvB,EAAQwB,cACpBf,IACDA,EAAWM,EAAkBf,EAAS,OAAQ,QAE9CsD,EAAKC,EAAG,CACR,GAAII,GAAiBD,GAAkBE,IAA4BC,IAC/DC,EAAgBC,IAChBC,EAAiBC,IACjBC,EAAWJ,EAAgBrD,EAASN,KACpCgE,EAAY1D,EAASN,KAAOsD,EAASP,MAAQc,CAC7CP,GAASP,MAAQS,EAEblD,EAASN,KADT+D,EAAW,GAAKC,GAAa,EACbH,EAAiBP,EAASP,MAErCiB,EAAY,GAAKD,GAAY,EAClBJ,EAGAI,EAAWC,EAAaH,EAAiBP,EAASP,MAASY,EAG1EI,EAAW,EAChBzD,EAASN,MAAQ+D,EAEZC,EAAY,IACjB1D,EAASN,MAAQgE,GAGzB,GAAIb,EAAKE,EAAG,CACR,GAAIY,GAAkBV,GAAkBW,IAA6BC,IACjEC,EAAeC,IACfC,EAAkBC,IAClBC,EAAUJ,EAAe9D,EAASL,IAClCwE,EAAanE,EAASL,IAAMqD,EAASX,OAAS2B,CAC9ChB,GAASX,OAASsB,EAEd3D,EAASL,IADTuE,EAAU,GAAKC,GAAc,EACdH,EAAkBhB,EAASX,OAErC8B,EAAa,GAAKD,GAAW,EACnBJ,EAGAI,EAAUC,EAAcH,EAAkBhB,EAASX,OAAUyB,EAG3EI,EAAU,EACflE,EAASL,KAAOuE,EAEXC,EAAa,IAClBnE,EAASL,KAAOwE,GAGxB,MAAOnE,GAUJ,QAASoE,GAAU7E,EAASqD,EAAiByB,EAAGC,OAC3B,KAApB1B,IAA8BA,EAAkB,KACpD,IAAI2B,GAAajE,EAAkBf,EAAS,OAAQ,MAChD8E,KACAE,EAAW7E,KAAO2E,GAElBC,IACAC,EAAW5E,IAAM2E,EAErB,IAAIE,KACJvB,IAAkBL,EAClB9B,GAAiBvB,EAAQwB,aACzB,IAAIS,GAAcjC,EAAQkC,wBACtB9B,EAAM4E,EAAW5E,IACjBD,EAAO6E,EAAW7E,KAClBgD,EAAQ6B,EAAW7E,KAAO8B,EAAYiB,MAEtCgC,EAAQC,EAAgB/E,EADf4E,EAAW5E,IAAM6B,EAAYa,QAEtCsC,EAAQC,EAAiBlF,EAAMgD,EAanC,OAZI+B,GAAMI,SACNL,EAAKM,KAAK,OAEVH,EAAMI,WACNP,EAAKM,KAAK,SAEVH,EAAMK,UACNR,EAAKM,KAAK,QAEVL,EAAMQ,YACNT,EAAKM,KAAK,UAEPN,EAeJ,QAASU,GAAK3F,EAAS4F,EAAQC,EAASC,EAAS7E,EAAWC,EAAWmC,EAE9EC,EAAMhC,GAGF,OAFwB,KAApB+B,IAA8BA,EAAkB,UACvC,KAATC,IAAmBA,GAASC,GAAG,EAAMC,GAAG,IACvCoC,GAAW5F,GAAYiB,GAAcC,IAAeoC,EAAKC,GAAMD,EAAKE,GAAzE,CAGA,GAWIvB,GAXA8D,GAAUC,GAAI,KACdC,GAAI,KACJC,GAAI,KACJC,GAAI,MACLC,GACCJ,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KAIR,IAAiD,SAA7CE,OAAOC,iBAAiBtG,GAASuG,QAAoB,CACrD,GAAIC,GAAgBxG,EAAQQ,MAAMiG,UAClCzG,GAAQQ,MAAMiG,WAAa,SAC3BzG,EAAQQ,MAAM+F,QAAU,QACxBtE,EAAcjC,EAAQkC,wBACtBlC,EAAQQ,MAAMkG,eAAe,WAC7B1G,EAAQQ,MAAMiG,WAAaD,MAG3BvE,GAAcjC,EAAQkC,uBAE1B,IAAIT,IACAM,KAAMd,EAAWe,KAAMd,EAAW2E,QAASA,EAASC,QAASA,EAASrF,UAAYN,KAAM,EAAGC,IAAK,GAEpGsD,IAAkBL,EAClB9B,GAAiBqE,EAAOpE,cACxBmF,EAAkBf,EAAQG,EAAOtE,EAAKH,EAAaW,GACnD2E,EAAYR,EAAO3E,EAAKQ,GACpBqB,EAAKC,GACLsD,EAASjB,EAAQQ,EAAOL,EAAOtE,EAAKQ,GAAa,GAEjDqB,EAAKE,GAAKuC,EAAMC,GAAG5F,KAAO,GAC1B0G,EAAQlB,EAAQQ,EAAOL,EAAOtE,EAAKQ,GAAa,GAEpD8E,EAAS/G,EAASyB,EAAKQ,IAS3B,QAAS8E,GAAS/G,EAASyB,EAAKQ,GAC5B,GAAI9B,GAAO,EACPC,EAAM,CACV,IAA4B,MAAxBJ,EAAQO,eACgD,aAApD+F,iBAAiBtG,EAAQO,cAAcE,UACa,aAApD6F,iBAAiBtG,EAAQO,cAAcE,UAA0B,CACrE,GAAIwE,GAAOlE,EAAkBf,EAAQO,aAAc,OAAQ,OAAO,EAAO0B,EACzE9B,GAAO8E,EAAK9E,KACZC,EAAM6E,EAAK7E,IAEf,GAAI4G,GAAS,EACTC,EAAS,CACb,IAAIjH,EAAQO,aAAc,CACtB,GAAI2G,GAAiBZ,iBAAiBtG,EAAQO,cAAc4G,SAC5D,IAAuB,SAAnBD,EAA2B,CAC3B,GAAIE,GAAS,GAAIC,WAAUH,EAC3BF,GAASI,EAAOE,EAChBL,EAASG,EAAOG,GAGxBvH,EAAQQ,MAAMJ,IAAQqB,EAAIhB,SAASL,IAAM6G,EAAUxF,EAAIqE,UAAmB,KAC1E9F,EAAQQ,MAAML,KAASsB,EAAIhB,SAASN,KAAO6G,EAAUvF,EAAIoE,UAAoB,KAWjF,QAASc,GAAkBf,EAAQ4B,EAAM/F,EAAKH,EAAaW,GACvDR,EAAIhB,SAAWM,EAAkB6E,EAAQnE,EAAIM,KAAMN,EAAIO,KAAMV,EAAaW,GAC1EuF,EAAKxB,GAAKjF,EAAkB6E,EAAQ,OAAQ,MAAOtE,EAAaW,GAChEuF,EAAKvB,GAAKlF,EAAkB6E,EAAQ,QAAS,MAAOtE,EAAaW,GACjEuF,EAAKrB,GAAKpF,EAAkB6E,EAAQ,OAAQ,SAAUtE,EAAaW,GACnEuF,EAAKtB,GAAKnF,EAAkB6E,EAAQ,QAAS,SAAUtE,EAAaW,GASxE,QAAS2E,GAAYa,EAAShG,EAAKQ,GAC/BwF,EAAQzB,IAAO5F,IAAKqB,EAAIhB,SAASL,IAAMqB,EAAIqE,QAAS3F,KAAMsB,EAAIhB,SAASN,KAAOsB,EAAIoE,SAClF4B,EAAQxB,IAAO7F,IAAKqH,EAAQzB,GAAG5F,IAAKD,KAAMsH,EAAQzB,GAAG7F,KAAO8B,EAAYiB,OACxEuE,EAAQvB,IAAO9F,IAAKqH,EAAQzB,GAAG5F,IAAM6B,EAAYa,OAC7C3C,KAAMsH,EAAQzB,GAAG7F,MACrBsH,EAAQtB,IAAO/F,IAAKqH,EAAQzB,GAAG5F,IAAM6B,EAAYa,OAC7C3C,KAAMsH,EAAQzB,GAAG7F,KAAO8B,EAAYiB,OAQ5C,QAASmC,GAAiBlF,EAAMgD,GAE5B,GAAIsC,IAAW,EAAOD,GAAY,CAOlC,OANMrF,GAAOyC,IAAuBmB,MAChC0B,GAAW,GAEXtC,EAAQc,MACRuB,GAAY,IAEPC,SAAUA,EAAUD,UAAWA,GAY5C,QAASqB,GAASjB,EAAQ4B,EAAMzB,EAAOtE,EAAKQ,EAAayF,GACrD,GAAIC,GAActC,EAAiBmC,EAAKxB,GAAG7F,KAAMqH,EAAKvB,GAAG9F,KACpD4F,GAAMC,GAAG7F,KAAOyC,KAAwBmB,MACzC4D,EAAYlC,UAAW,GAEvBM,EAAME,GAAG9F,KAAO8D,MAChB0D,EAAYnC,WAAY,IAEvBmC,EAAYlC,WAAakC,EAAYnC,YAAgBmC,EAAYlC,UAAYkC,EAAYnC,aACzE,UAAb/D,EAAIM,KACJN,EAAIM,KAAO,OAGXN,EAAIM,KAAO,QAEfN,EAAIoE,QAAUpE,EAAIoE,QAAU5D,EAAYiB,MACxCzB,EAAIoE,SAAW,EAAIpE,EAAIoE,QACvBpE,EAAIhB,SAAWM,EAAkB6E,EAAQnE,EAAIM,KAAMN,EAAIO,MAAM,GAC7D4E,EAAYY,EAAM/F,EAAKQ,GACnByF,GACAb,EAASjB,EAAQ4B,EAAMzB,EAAOtE,EAAKQ,GAAa,IAc5D,QAAS6E,GAAQlB,EAAQ4B,EAAMzB,EAAOtE,EAAKQ,EAAayF,GACpD,GAAIC,GAAcxC,EAAgBqC,EAAKxB,GAAG5F,IAAKoH,EAAKtB,GAAG9F,IAClD2F,GAAMC,GAAG5F,IAAMqC,KAAuB+B,MACvCmD,EAAYrC,SAAU,GAEtBS,EAAMG,GAAG9F,KAAOsE,KAAqBkB,EAAO1D,wBAAwBW,OAASwD,OAAOuB,cACpFD,EAAYjC,YAAa,IAExBiC,EAAYrC,UAAYqC,EAAYjC,aAAiBiC,EAAYrC,SAAWqC,EAAYjC,cACxE,QAAbjE,EAAIO,KACJP,EAAIO,KAAO,SAGXP,EAAIO,KAAO,MAEfP,EAAIqE,QAAUrE,EAAIqE,QAAU7D,EAAYa,OACxCrB,EAAIqE,SAAW,EAAIrE,EAAIqE,QACvBrE,EAAIhB,SAAWM,EAAkB6E,EAAQnE,EAAIM,KAAMN,EAAIO,MAAM,EAAOC,GACpE2E,EAAYY,EAAM/F,EAAKQ,GACnByF,GACAZ,EAAQlB,EAAQ4B,EAAMzB,EAAOtE,EAAKQ,GAAa,IAU3D,QAASkD,GAAgB/E,EAAKyC,GAE1B,GAAIyC,IAAU,EAAOI,GAAa,CAOlC,OANKtF,GAAMqC,IAAsB+B,MAC7Bc,GAAU,GAEVzC,EAAS6B,MACTgB,GAAa,IAERJ,QAASA,EAASI,WAAYA,GAK3C,QAAS9B,KACL,MAAOF,IAAgBxB,wBAAwBgB,MAKnD,QAASmB,KACL,MAAOX,IAAgBxB,wBAAwBY,OAKnD,QAAS+E,KACL,MAAOnE,IAAgBxB,wBAAwB/B,KAKnD,QAAS2H,KACL,MAAOpE,IAAgBxB,wBAAwB9B,IAGnD,QAASoE,KACL,MAAId,IACOoE,IAEJ,EAGX,QAAS/D,KACL,MAAIL,IACOmE,IAEJ,EAGX,QAAS5D,KACL,MAAIP,IACQd,IAAsBiF,IAA2BjE,IAErDhB,IAAsBiB,IAGlC,QAASa,KACL,MAAIhB,IACQjB,IAAqBqF,IAA0BzD,IAEnD5B,IAAqB6B,IAKjC,QAAS7B,KAGL,MAAOlB,IAAemB,gBAAgB7B,WAAaU,GAAeoB,KAAK9B,UAK3E,QAAS+B,KAGL,MAAOrB,IAAemB,gBAAgB9B,YAAcW,GAAeoB,KAAK/B,WAK5E,QAAS0D,KACL,MAAO+B,QAAOuB,YAKlB,QAAS/D,KACL,GAAIkE,GAAc1B,OAAO2B,WACrBC,EAAgBC,SAASxF,gBAAgBR,uBAE7C,OAAO6F,IAAeA,GADHzH,oBAAkB4H,SAASxF,iBAAoB,EAAIuF,EAAc/E,QAMjF,QAASiF,KACZzE,GAAkB,KAClBnC,GAAiB,KCsTd,QAAS6G,GAAoBpI,EAASsB,GAKzC,IAJA,GAAI+G,GAAW/B,iBAAiBtG,GAC5BsI,KACAC,EAAgB,gBAChBC,EAASxI,EAAQc,cACd0H,GAA6B,SAAnBA,EAAOC,SAAoB,CACxC,GAAIC,GAAcpC,iBAAiBkC,EACP,cAAtBH,EAAS5H,UAAoD,WAAzBiI,EAAYjI,WAC/C8H,EAAcI,KAAKD,EAAYE,SAAWF,EAAYG,UAAYH,EAAYI,YACjFR,EAAc/C,KAAKiD,GAEvBA,EAASA,EAAO1H,cAKpB,MAHKQ,IACDgH,EAAc/C,KAAK2C,UAEhBI,EASJ,QAASS,GAAiB/I,GAI7B,IAFA,GAAIwI,GAASxI,EAAQc,cACjBkI,KACGR,GACoB,SAAnBA,EAAOC,SADA,CAEP,GAAIQ,GAAQf,SAASgB,YAAY5C,iBAAiBkC,EAAQ,MAAMW,iBAAiB,WAC7E1I,EAAWyH,SAASgB,YAAY5C,iBAAiBkC,EAAQ,MAAMW,iBAAiB,WACtE,UAAVF,GAAiC,WAAbxI,GACpBuI,EAAazD,KAAK0D,GAEtBT,EAASA,EAAO1H,cAOxB,IAAK,GADDsI,MACKC,EAAI,EAAGA,EAAInB,SAASvF,KAAK2G,SAASC,OAAQF,IAC/C,IAAKrJ,EAAQwJ,YAAYtB,SAASvF,KAAK2G,SAASD,IAAK,CACjD,GAAIJ,GAAQf,SAASgB,YAAY5C,iBAAiB4B,SAASvF,KAAK2G,SAASD,GAAI,MAAMF,iBAAiB,WAChG1I,EAAWyH,SAASgB,YAAY5C,iBAAiB4B,SAASvF,KAAK2G,SAASD,GAAI,MAAMF,iBAAiB,WACzF,UAAVF,GAAiC,WAAbxI,GACpB2I,EAAe7D,KAAK0D,GAIhCG,EAAe7D,KAAK,MACpB,IAAIkE,KACJ,KAAKnJ,oBAAkBN,EAAQc,gBAAoD,SAAlCd,EAAQc,cAAc2H,QAEnE,IAAK,GADDiB,MAAgBC,MAAMC,KAAK5J,EAAQc,cAAcwI,UAC5CD,EAAI,EAAGA,EAAIK,EAAWH,OAAQF,IACnC,IAAKrJ,EAAQwJ,YAAYE,EAAWL,IAAK,CACrC,GAAIJ,GAAQf,SAASgB,YAAY5C,iBAAiBoD,EAAWL,GAAI,MAAMF,iBAAiB,WACpF1I,EAAWyH,SAASgB,YAAY5C,iBAAiBoD,EAAWL,GAAI,MAAMF,iBAAiB,WAC7E,UAAVF,GAAiC,WAAbxI,GACpBgJ,EAAelE,KAAK0D,GAKpC,GAAIY,GAAab,EAAac,OAAOV,EAAgBK,GAEjDM,EAAqBC,KAAKC,IAAIC,MAAMF,KAAMH,GAAc,CAC5D,OAAOE,GAAqB,WAAa,WAAaA,EASnD,QAASI,GAAa1B,OACT,KAAZA,IAAsBA,GAAW,KAErC,KAAK,GADD2B,MACKf,EAAI,EAAGA,EAAIZ,EAAQc,OAAQF,IAEhC,IAAK,GADDgB,GAAWnC,SAASoC,qBAAqB7B,EAAQY,IAC5CkB,EAAM,EAAGA,EAAMF,EAASd,OAAQgB,IAAO,CAC5C,GAAItB,GAAQf,SAASgB,YAAY5C,iBAAiB+D,EAASE,GAAM,MAAMpB,iBAAiB,WACpF1I,EAAWyH,SAASgB,YAAY5C,iBAAiB+D,EAASE,GAAM,MAAMpB,iBAAiB,WAC7E,UAAVF,GAAiC,WAAbxI,GACpB2J,EAAU7E,KAAK0D,GAK3B,GAAIc,GAAqBC,KAAKC,IAAIC,MAAMF,KAAMI,GAAa,CAC3D,OAAOL,GAAqB,WAAa,WAAaA,ECzxBnD,QAASS,GAAaC,GACzBC,GAAcD,EAAKE,YACnBC,GAASH,EAAKI,SACdC,GAAYL,EAAKM,eACjBC,GAAgBC,EAAcR,EAAKzK,SACnCkL,GAAmBD,EAAcR,EAAKU,SAEtC,KAAK,GADDC,GAAaX,EAAKY,UAAUC,MAAM,KAC7BjC,EAAI,EAAGA,EAAI+B,EAAW7B,OAAQF,IACnC,GAAIkC,GAAmBC,QAAQJ,EAAW/B,KAAO,GAAK+B,EAAW/B,GAC7DoC,EAAmBL,EAAW/B,QAE7B,IAA6B,KAAzB+B,EAAW/B,GAAGqC,OAAe,CAClC,GAAIC,GAAgBC,gBAAc,OAASC,UAAW,WAAaC,GAAiB,MAAaV,EAAW/B,IAC5G2B,IAAce,YAAYJ,GAGlCK,GAAYvB,EAAKuB,UACjBC,GAAWxB,EAAKwB,SAChBC,GAAWzB,EAAKyB,SAChBC,GAAY1B,EAAK0B,UACb1B,EAAK2B,OAAS3B,EAAK2B,MAAMpM,SAAWyK,EAAK2B,MAAMpM,QAAQgD,UAAUC,SAAS,YAC1EoJ,EAAW5B,EAAK2B,OAGhBC,IAQR,QAASZ,GAAmBJ,GACxBiB,GACA,IAAIC,GAAeX,gBAAc,QAC7BY,OACIC,aAAgB,KAAMC,gBAAmB,UAGjDH,GAAaI,aAAa,QAAS,4BAA8BtB,GAC/C,UAAdA,IACAkB,EAAa/L,MAAMsC,OAAS,MAC5ByJ,EAAa/L,MAAM0C,MAAQ,OAC3BqJ,EAAa/L,MAAMqC,OAAS,MAC5B0J,EAAa/L,MAAML,KAAO,OAEZ,UAAdkL,IACAkB,EAAa/L,MAAMsC,OAAS,MAC5ByJ,EAAa/L,MAAM0C,MAAQ,OAC3BqJ,EAAa/L,MAAMJ,IAAM,MACzBmM,EAAa/L,MAAML,KAAO,OAEZ,SAAdkL,IACAkB,EAAa/L,MAAMsC,OAAS,OAC5ByJ,EAAa/L,MAAM0C,MAAQ,MAC3BqJ,EAAa/L,MAAM2C,MAAQ,MAC3BoJ,EAAa/L,MAAMJ,IAAM,OAEX,SAAdiL,IACAkB,EAAa/L,MAAMsC,OAAS,OAC5ByJ,EAAa/L,MAAM0C,MAAQ,MAC3BqJ,EAAa/L,MAAML,KAAO,MAC1BoM,EAAa/L,MAAMJ,IAAM,OAE7B4K,GAAce,YAAYQ,GAO9B,QAAStB,GAAcjL,GACnB,GAAI4M,EASJ,OARKC,qBAAM7M,KAEH4M,EADqB,mBACR1E,SAAS4E,cAAc9M,GAGvBA,GAGd4M,EAEX,QAASP,GAAW5B,GAGhB,IAAK,GAFDsC,GAAUtC,GAAQuC,KAClBC,EAAWjC,GAAckC,iBAAiB,IAAMpB,IAC3CzC,EAAI,EAAGA,EAAI4D,EAAS1D,OAAQF,IAAK,CACtC8D,GAAkBF,EAAS5D,GAC3B+D,eAAaC,IAAIF,GAAiB,YAAaG,EAAaP,EACxDQ,GAAmC,SAAtBC,UAAQC,KAAKC,KAAmB,cAAgB,YACjEN,gBAAaC,IAAIF,GAAiBI,EAAWI,EAAcZ,GAE/D,GAAIa,GAAiB5C,GAAckC,iBAAiB,0BACpD,KAAKL,oBAAMe,GACP,IAASvE,EAAI,EAAGA,EAAIuE,EAAerE,OAAQF,IAAK,CAC5C8D,GAAkBS,EAAevE,GACjC+D,eAAaC,IAAIF,GAAiB,YAAaG,EAAaP,EAC5D,IAAIQ,GAAmC,SAAtBC,UAAQC,KAAKC,KAAmB,cAAgB,YACjEN,gBAAaC,IAAIF,GAAiBI,EAAWI,EAAcZ,IAUvE,QAASc,GAAaC,GAClB,MAAQA,GAAEtC,QAAQ,UAAY,EAAK,QAAU,QAQjD,QAAS8B,GAAYQ,GAOjB,GANAA,EAAEC,iBACF/C,GAAgB8C,EAAElI,OAAO9E,cACzBwL,IACA0B,GAAiBF,EAAEG,MACnBC,GAAiBJ,EAAEK,MACnBL,EAAElI,OAAO5C,UAAUqK,IAAIe,IAClBvB,oBAAMnC,MAEyB,IAA5BA,GAAYoD,EADMd,MAD1B,CAMIA,KAAKqB,WAAarD,IAAiBA,GAAc8B,cAAc,IAAMwB,MACrEpD,YAAmB8B,KAAKpH,OAA0D,KAAOoH,KAAKqB,UAC9FnC,GAAWc,KAAKqB,UAAUE,YAC1BpC,GAAYa,KAAKqB,UAAUG,aAE/B,IAAI5I,GAAUiH,oBAAM3B,IAAqBhD,SAAWgD,EACpDkC,gBAAaC,IAAIzH,EAAQ,YAAa6I,EAAazB,MACnDI,eAAaC,IAAInF,SAAU,UAAWwG,EAAW1B,KACjD,KAAK,GAAI3D,GAAI,EAAGA,EAAIsF,GAAcpF,OAAQF,IAElCuF,IADA5D,GAAchI,UAAUC,SAAS0L,GAActF,KAc3D,QAASqF,GAAUZ,GACf,GAAIe,GAAwC,SAAtBrB,UAAQC,KAAKC,KAAmB,cAAgB,YAClEoB,EAAuC,SAAtBtB,UAAQC,KAAKC,KAAmB,YAAc,WAC/D9H,EAAUiH,oBAAM3B,IAAqBhD,SAAWgD,GAChDqC,EAAmC,SAAtBC,UAAQC,KAAKC,KAAmB,cAAgB,YACjEN,gBAAa2B,OAAOnJ,EAAQ,YAAa6I,GACzCrB,eAAa2B,OAAOnJ,EAAQiJ,EAAgBJ,GAC5CrB,eAAa2B,OAAOnJ,EAAQ2H,EAAWkB,GAClC5B,oBAAM3E,SAASvF,KAAKmK,cAAc,IAAMsB,MACzClG,SAASvF,KAAKmK,cAAc,IAAMsB,IAAiBpL,UAAU+L,OAAOX,IAEnEvB,oBAAM/B,KAEPA,GAAUgD,EADYd,MAG1BI,eAAa2B,OAAO7G,SAAU,UAAWwG,GACzCtB,eAAa2B,OAAO7G,SAAU4G,EAAeJ,GAMjD,QAASpC,KACL0C,GAAgBC,WAAW3I,iBAAiB0E,GAAe,MAAM7B,iBAAiB,SAAS+F,QAAQ,KAAM,KACzGC,GAAiBF,WAAW3I,iBAAiB0E,GAAe,MAAM7B,iBAAiB,UAAU+F,QAAQ,KAAM,KAC3GE,GAAYpE,GAAc9I,wBAAwB/B,KAClDkP,GAAYrE,GAAc9I,wBAAwB9B,IAQtD,QAASuN,GAAaG,GAClB9C,GAAgB8C,EAAElI,OAAO9E,cACzBwL,GACA,IAAIgD,GAAsBtE,GAAchI,UAAUC,SAAS,aACtD6K,EAAElI,OAAO5C,UAAUC,SAAS6I,KAAmBgC,EAAElI,OAAO5C,UAAUC,SAAS,4BAA8BqM,GAC1GxB,EAAElI,OAAO5C,UAAUqK,IAAIe,GAE3B,IAAImB,GAAczB,EAAE0B,QAAU1B,EAAE2B,eAAe,GAAK3B,CAGpD,IAFAE,GAAiBuB,EAAYtB,MAC7BC,GAAiBqB,EAAYpB,MACxBtB,oBAAMnC,MAEyB,IAA5BA,GAAYoD,EADMd,MAD1B,CAMA,GAAI6B,GAAwC,SAAtBrB,UAAQC,KAAKC,KAAmB,cAAgB,YAClEoB,EAAuC,SAAtBtB,UAAQC,KAAKC,KAAmB,YAAc,WAC/D9H,EAAUiH,oBAAM3B,IAAqBhD,SAAWgD,EACpDkC,gBAAaC,IAAIzH,EAAQiJ,EAAgBJ,EAAazB,MACtDI,eAAaC,IAAInF,SAAU4G,EAAeJ,EAAW1B,OAQzD,QAASyB,GAAYX,GAOjB,GANIA,EAAElI,OAAO5C,UAAUC,SAAS6I,KAAmBgC,EAAElI,OAAO5C,UAAUC,SAASmL,IAC3EjB,GAAkBW,EAAElI,OAEdiH,oBAAM3E,SAASvF,KAAKmK,cAAc,IAAMsB,OAC9CjB,GAAkBjF,SAASvF,KAAKmK,cAAc,IAAMsB,MAEnDvB,oBAAMM,IAAkB,CAEzB,IAAK,GADDuC,GAAgB,GACXrG,EAAI,EAAGA,EAAIsG,GAAapG,OAAQF,IACjC8D,GAAgBnK,UAAUC,SAAS,KAAO0M,GAAatG,MACvDqG,EAAgBC,GAAatG,GAOrC,QAJKwD,oBAAMjC,KAEPA,GAAOkD,EADed,MAGlB0C,GACJ,IAAK,QACDE,EAAY9B,EACZ,MACJ,KAAK,QACD+B,GAAY/B,EACZ,MACJ,KAAK,OACDgC,GAAWhC,EACX,MACJ,KAAK,OACDiC,GAAWjC,EACX,MACJ,KAAK,aACD8B,EAAY9B,GACZiC,GAAWjC,EACX,MACJ,KAAK,aACD8B,EAAY9B,GACZgC,GAAWhC,EACX,MACJ,KAAK,aACD+B,GAAY/B,GACZiC,GAAWjC,EACX,MACJ,KAAK,aACD+B,GAAY/B,GACZgC,GAAWhC,KAY3B,QAASkC,GAAoBhQ,GACzB,MAAOA,GAAQkC,wBAMnB,QAAS0N,GAAY9B,GACjB,GAKImC,GALAC,EAAiBhI,SAASxF,gBAAgB8L,aAC1C2B,GAAiB,EAEjBC,GADctC,EAAE0B,QAAU1B,EAAE2B,eAAe,GAAK3B,GACrBK,MAC3BkC,EAAmBL,EAAoBhF,GAEtC6B,qBAAM3B,MACP+E,EAAsBD,EAAoB9E,KAEzC2B,oBAAM3B,IAGF2B,oBAAM3B,MAAuBgF,EAAiBE,GAAiB,GAAMC,EAAiBjQ,IAAM,KACjG+P,GAAiB,GAHjBA,GAAiB,CAKrB,IAAIG,GAAmBnB,IAAkBiB,EAAelC,GACxDoC,GAAoBA,EAAmBtE,GAAasE,EAAmBtE,EACvE,IAAIzH,GAAe,CACdsI,qBAAM3B,MACP3G,EAAe0L,EAAoB7P,IAEvC,IAAImQ,GAAc1D,oBAAM3B,IAAoB,EAAIA,GAAiBsF,aAAetF,GAAiBsD,aAC7FiC,EAAoBJ,EAAiBjQ,IAAMmE,EAAiBgM,EAAc,CAE9E,IADAE,EAAoBA,EAAmB,EAAK,EAAIA,EAC5CJ,EAAiBjQ,IAAM,GAAMqQ,EAAmBH,EAAoBnE,GAAW,CAE/E,GADAgE,GAAiB,EACbnF,GAAchI,UAAUC,SAASyN,IACjC,MAGJ,aADA1F,GAAcxK,MAAMsC,OAAUqJ,GAAYwE,SAASF,EAAiBG,WAAY,IAAO,MAG3F,GAAIC,GAAY,CAChB,IAAIV,EAAgB,CACZE,EAAiBjQ,IAAM,GAAM8P,GAAkBG,EAAiBvN,OAASuN,EAAiBjQ,KAAO,GAE5FkQ,GADLO,EAAYR,EAAiBjQ,MACS,KAClCkQ,EAAoBD,EAAiBvN,QAAUuN,EAAiBvN,OAASuN,EAAiBjQ,KAAQ,IAGpGkQ,EAAmBD,EAAiBjQ,KAAQ+L,KAC9CnB,GAAcxK,MAAMsC,OAASuN,EAAiBvN,QACzCoN,GAAkBG,EAAiBvN,OAASuN,EAAiBjQ,MAAQ,KAE9E,IAAI0Q,GAAiBjE,oBAAM3B,IAAqB2F,EAAYJ,CACxDH,IAAoBtE,IAAesE,EAAmBQ,GAAkB3E,KACxEnB,GAAcxK,MAAMsC,OAASwN,EAAmB,OAU5D,QAAST,IAAY/B,GACjB,GACIiD,GADAZ,GAAiB,EAEjBhC,EAAkC,UAAzBN,EAAaC,EAAEkD,MAAqBlD,EAAEK,MAAQL,EAAE0B,QAAQ,GAAGrB,MACpEkC,EAAmBL,EAAoBhF,GACtC6B,qBAAM3B,MACP6F,EAAqBf,EAAoB9E,MAExC2B,oBAAM3B,KAAsBmF,EAAiBjQ,IAAM2Q,EAAmB3Q,IAAO,EAC9E+P,GAAiB,EAEZtD,oBAAM3B,KAAqBiD,EAAQ,IACxCgC,GAAiB,EAErB,IAAIc,GAAgB9B,IAAkBhB,EAAQD,GAC9C,IAAIiC,GACIc,GAAiBjF,IAAaiF,GAAiB9E,GAAW,CAC1D,GAAI5H,GAAe,CACdsI,qBAAM3B,MACP3G,EAAewM,EAAmB3Q,IAEtC,IAAI8Q,GAAS7B,GAAY9K,GAAiB4J,EAAQD,GAClDgD,GAAQA,EAAQ,EAAIA,EAAQ,EAC5BlG,GAAcxK,MAAMsC,OAASmO,EAAgB,KAC7CjG,GAAcxK,MAAMJ,IAAM8Q,EAAQ,MAU9C,QAASpB,IAAWhC,GAChB,GAEIqD,GAFAC,EAAgBlJ,SAASxF,gBAAgB6L,YACzC4B,GAAiB,CAEhBtD,qBAAM3B,MACPiG,EAAanB,EAAoB9E,IAErC,IAAI+C,GAAkC,UAAzBJ,EAAaC,EAAEkD,MAAqBlD,EAAEG,MAAQH,EAAE0B,QAAQ,GAAGvB,MACpEoC,EAAmBL,EAAoBhF,IACvCuF,EAAc1D,oBAAM3B,IAAoB,EAAIA,GAAiBmG,YAAcnG,GAAiBqD,YAE5FpO,EAAO0M,oBAAM3B,IAAoB,EAAIiG,EAAWhR,KAChDwD,EAAiBkJ,oBAAM3B,IAAoB,EAAIiG,EAAWjO,KAE1D2J,qBAAMyE,MACDzE,oBAAM3B,IAKPoG,GAAkBF,GAJlBE,GAAqBjB,EAAiBlQ,KAAOA,EAAQoQ,EAAc,EAAMF,EAAiBnN,MAC1FoO,IAAqC3N,EAAiB4M,EAAce,MAMvEzE,oBAAM3B,KACNlB,KAAKuH,MAAOlB,EAAiBlQ,KAAOgR,EAAWhR,KAAQkQ,EAAiBnN,OACpEiO,EAAWhO,MAAQkN,EAAiBlN,QAAUoN,GAAgBrE,GACnEiE,GAAiB,EAEZtD,oBAAM3B,KAAqB+C,GAAS,IACzCkC,GAAiB,EAErB,IAAIqB,GAAkBxC,IAAiBf,EAAQD,GAI/C,IAHIY,KACA4C,EAAmBA,EAAkBF,GAAmBA,GAAkBE,GAE1ErB,GACIqB,GAAmBvF,IAAYuF,GAAmBtF,GAAU,CAC5D,GAAIpI,GAAgB,CACf+I,qBAAM3B,MACPpH,EAAgBqN,EAAWhR,KAE/B,IAAIsR,GAAUrC,GAAYtL,GAAkBmK,EAAQD,GACpDyD,GAAUA,EAAS,EAAKA,EAAS,EAC7BD,IAAoBE,IAAiBC,KACrC3G,GAAcxK,MAAM0C,MAAQsO,EAAkB,MAE9C5C,KACA5D,GAAcxK,MAAML,KAAOsR,EAAS,KAEhCE,GADW,IAAXF,GAShBC,GAAgBF,EAQpB,QAASzB,IAAWjC,GAChB,GAEImC,GAFAmB,EAAgBlJ,SAASxF,gBAAgB6L,YACzC4B,GAAiB,CAEhBtD,qBAAM3B,MACP+E,EAAsBD,EAAoB9E,IAE9C,IACI+C,IADcH,EAAE0B,QAAU1B,EAAE2B,eAAe,GAAK3B,GAC5BG,MACpBoC,EAAmBL,EAAoBhF,KACtC6B,oBAAM3B,MAAwBmF,EAAiBlQ,KAAO8P,EAAoB9P,KAAQkQ,EAAiBnN,OAAUgJ,IAC1GmE,EAAiBlN,MAAQ8M,EAAoB9P,MAASkQ,EAAiBnN,OAC3EiN,GAAiB,EAEZtD,oBAAM3B,KAAsBkG,EAAgBnD,EAAS,IAC1DkC,GAAiB,EAErB,IAAIqB,GAAkBxC,IAAiBf,EAAQD,IAC3ClK,EAAgB,CAIpB,IAHK+I,oBAAM3B,MACPpH,EAAgBmM,EAAoB9P,MAElCkQ,EAAiBlQ,KAAO2D,EAAiB0N,EAAmBtF,GAAU,CAExE,GADAiE,GAAiB,EACbnF,GAAchI,UAAUC,SAASyN,IACjC,MAEJ1F,IAAcxK,MAAM0C,MAAQgJ,IAAYmE,EAAiBlQ,KAAO2D,GAAiB,KAEjFqM,GACIqB,GAAmBvF,IAAYuF,GAAmBtF,KAClDlB,GAAcxK,MAAM0C,MAAQsO,EAAkB,MAUnD,QAASI,IAAaC,GACzB7F,GAAY6F,EAOT,QAASC,IAAYjQ,GACxBqK,GAAWrK,EAOR,QAASkQ,IAAalQ,GACzBsK,GAAYtK,EAKT,QAASmQ,MAEZ,IAAK,GADDC,GAAWjH,GAAckC,iBAAiB,IAAMpB,IAC3CzC,EAAI,EAAGA,EAAI4I,EAAS1I,OAAQF,IACjC6I,SAAOD,EAAS5I,GAEpB,IAAIuE,GAAiB5C,GAAckC,iBAAiB,0BACpD,KAAKL,oBAAMe,GACP,IAASvE,EAAI,EAAGA,EAAIuE,EAAerE,OAAQF,IACvC6I,SAAOtE,EAAevE,ICrf3B,QAAS8I,IAAQC,EAAQC,EAASzM,EAAQoL,GAC7C,OAAQoB,GACJ,IAAK,SAQDE,IAJItB,KAAMA,EAAMpL,OAFFsC,SAAS4E,cAAcuF,EAAQzM,QAEZ2M,SAAUF,EAAQE,SAC/CC,MAAOH,EAAQG,MAAOtP,MAAOmP,EAAQnP,OAIzC,MACJ,KAAK,OACDuP,GAAYvK,SAAS4E,cAAclH,GACnC,MACJ,KAAK,OACD8M,GAAYxK,SAAS4E,cAAclH,GACnC,MACJ,KAAK,MAED+M,IADgBJ,SAAUF,EAAQE,SAAUvB,KAAMA,KAiBvD,QAASsB,IAAc7H,EAAMmI,GAChC,GAAIC,EACJ,IAAKpI,EAAK7E,OAAV,CAGA,GAAIkN,GACAC,EAAezS,oBAAkBsS,GAAiDhH,gBAAxBgH,EAE1DI,EAAYC,GAAyBxI,EAAK7E,OAAQmN,EACtD,KAAKzS,oBAAkBmK,EAAK8H,UAAW,CACnC,GAAIW,GAAazI,EAAK8H,SAASjH,MAAM,KAAK6H,OAAO,SAAUtH,GAAa,MAA4B,KAArBA,EAAUH,UACxFmH,EAAKG,EAAUI,KAAKpQ,WAAWqK,IAAInD,MAAM2I,EAAIK,GAElD,GAAK5S,oBAAkBmK,EAAK4I,WAAc/S,oBAAkBgT,IAKvD,CACD,GAAIC,GAASjT,oBAAkBmK,EAAKuG,MAAoBwC,GAASR,EAAUI,MAA/B3I,EAAKuG,IAEjD8B,GAASW,GADInT,oBAAkBmK,EAAKvH,WAAsB7B,GAAboJ,EAAKvH,MAClBqQ,GAChCG,GAASH,EAAOP,EAAUI,KAAMN,EAAQC,GACnCzS,oBAAkBmK,EAAK+H,QACxBmB,GAAYX,EAAUY,WAAYnJ,EAAK+H,MAAOO,OAXqB,CACvE,GAAIM,GAAY/S,oBAAkBmK,EAAK4I,UAA4BC,GAAhB7I,EAAK4I,QACxDL,GAAUI,KAAKpQ,UAAUqK,IAAIwG,IAC7BC,GAAed,EAAUI,KAAMC,EAAUU,IAW7Cf,EAAUI,KAAKpQ,UAAUqK,IAAI2G,IAC7BhB,EAAY,MAShB,QAASW,IAAYX,EAAWR,EAAOO,GACnC,GAAIkB,GAAWlB,EAAY,SAI3B,OAHAkB,GAASjR,UAAUqK,IAAI6G,IACvBD,EAASE,UAAY3B,EACrBQ,EAAUjH,YAAYkI,GACfA,EASX,QAASG,IAAsBpB,EAAWF,EAAQC,GAC9C,GAAIsB,GAAWC,IACfC,IAAc,GAAKF,IAAcG,QAAS,EAAGxD,KAAM,WAAY8B,OAAQA,GACvE2B,GAAwBzB,EAAWqB,EAAUtB,EAAa2B,IAC1DC,GAAyB7B,EAAQE,EAAW,WAAY0B,IAS5D,QAASE,IAAuB5B,EAAWF,EAAQC,GAC/C,GAAIsB,GAAWC,IACfC,IAAc,GAAKF,IAAcG,QAAS,EAAGxD,KAAM,YAAa8B,OAAQA,GACxE2B,GAAwBzB,EAAWqB,EAAUtB,EAAa8B,IAC1DF,GAAyB7B,EAAQE,EAAW,YAAa6B,IAS7D,QAASC,IAAwB9B,EAAWF,EAAQC,GAChD,GAAIsB,GAAWC,IACfC,IAAc,GAAKF,IAAcG,QAAS,EAAGxD,KAAM,aAAc8B,OAAQA,GACzE2B,GAAwBzB,EAAWqB,EAAUtB,EAAagC,IAC1DJ,GAAyB7B,EAAQE,EAAW,aAAc+B,IAS9D,QAASC,IAAwBhC,EAAWF,EAAQC,GAChD,GAAIsB,GAAWC,IACfC,IAAc,GAAKF,IAAcG,QAAS,EAAGxD,KAAM,aAAc8B,OAAQA,GACzE2B,GAAwBzB,EAAWqB,EAAUtB,EAAakC,IAC1DN,GAAyB7B,EAAQE,EAAW,aAAciC,IAS9D,QAASC,IAAgBlC,EAAWqB,EAAUvB,GAC1C,GAAIqC,KAEJZ,IAAc,GAAKF,GAAUG,QAAU,EACvCW,EAAa,GAAKd,GAAYe,GAAgBf,EAAUvB,EAAQ,EAAG,GAEnEuC,IADoBhB,SAAUA,EAAUrB,UAAWA,EAAWsC,WAAYH,EAAcI,WAHvE,IAarB,QAASC,IAAoBxC,EAAWF,EAAQC,GAC5C,GAAIsB,GAAWC,IACfC,IAAc,GAAKF,IAAcG,QAAS,EAAGxD,KAAM,SAAU8B,OAAQA,GACrE2C,GAAsBzC,EAAWqB,EAAUqB,IAC3CC,GAAwB7C,EAAQE,EAAW0C,IAS/C,QAASE,IAAoB5C,EAAWF,EAAQC,GAC5C,GAAIsB,GAAWC,IACfC,IAAc,GAAKF,IAAcG,QAAS,EAAGxD,KAAM,SAAU8B,OAAQA,GACrE2C,GAAsBzC,EAAWqB,EAAUwB,IAC3CF,GAAwB7C,EAAQE,EAAW6C,IAS/C,QAASC,IAAqB9C,EAAWF,EAAQC,GAC7C,GAAIsB,GAAWC,IACfC,IAAc,GAAKF,IAAcG,QAAS,EAAGxD,KAAM,UAAW8B,OAAQA,GACtE2C,GAAsBzC,EAAWqB,EAAU0B,IAC3CJ,GAAwB7C,EAAQE,EAAW+C,IAS/C,QAASC,IAAsBhD,EAAWF,EAAQC,GAC9C,GAAIsB,GAAWC,IACfC,IAAc,GAAKF,IAAcG,QAAS,EAAGxD,KAAM,WAAY8B,OAAQA,GACvE2C,GAAsBzC,EAAWqB,EAAU4B,IAC3CN,GAAwB7C,EAAQE,EAAWiD,IAS/C,QAASC,IAA0BlD,EAAWF,EAAQC,GAClD,GAAIsB,GAAWC,IACfC,IAAc,GAAKF,IAAcG,QAAS,EAAGxD,KAAM,eAAgB8B,OAAQA,GAC3E2C,GAAsBzC,EAAWqB,EAAU8B,IAC3CR,GAAwB7C,EAAQE,EAAWmD,IAO/C,QAAS3C,IAASR,GAEd,MADY3M,QAAOC,iBAAiB0M,EAAW,UAAU7J,iBAAiB,WAC7D+F,QAAQ,SAAU,IAUnC,QAASwE,IAASH,EAAOP,EAAWF,EAAQC,GACxC,GAAIqD,GAAiBpD,EAAUlG,cAAc,IAAMuJ,IAC/CC,EAAMF,EAAetJ,cAAc,MAIvC,QAHKxM,oBAAkBgW,IACnBF,EAAeG,YAAYD,GAEvB/C,GACJ,IAAK,WACDa,GAAsBgC,EAAgBtD,EAAQC,EAC9C,MACJ,KAAK,YACD6B,GAAuBwB,EAAgBtD,EAAQC,EAC/C,MACJ,KAAK,SACDyC,GAAoBY,EAAgBtD,EACpC,MACJ,KAAK,SACD8C,GAAoBQ,EAAgBtD,EACpC,MACJ,KAAK,UACDgD,GAAqBM,EAAgBtD,EACrC,MACJ,KAAK,YACD0D,GAAuBJ,EAAgBtD,EACvC,MACJ,KAAK,eACDoD,GAA0BE,EAAgBtD,EAC1C,MACJ,KAAK,aACDgC,GAAwBsB,EAAgBtD,EAAQC,EAChD,MACJ,KAAK,aACDiC,GAAwBoB,EAAgBtD,EAAQC,EAChD,MACJ,KAAK,WACL,IAAK,gBACDiD,GAAsBI,EAAgBtD,IAWlD,QAAS0D,IAAuBJ,EAAgBtD,EAAQC,GACpD,GAAIsB,GAAWC,IACfC,IAAc,GAAKF,IAAcG,QAAS,EAAGxD,KAAM,YAAa8B,OAAQA,GACxE2D,GAAyBL,EAAgB/B,GACzCqC,GAA0BN,EAAgBtD,GAU9C,QAAS2D,IAAyBL,EAAgB/B,EAAUtB,GACxD,GAAI4D,GAAUzO,SAAS0O,gBAAgB,6BAA8B,MAIrED,GAAQhK,aAAa,KAAM0H,GAC3BsC,EAAQhK,aAAa,QAASkK,IAC9BF,EAAQhK,aAAa,UAAW,aAChCyJ,EAAeU,aAAaH,EAASP,EAAeW,WACpD,KAAK,GAAIC,GAAO,EAAGA,GAAQ,EAAGA,IAAQ,CAClC,GAAIC,GAAa/O,SAAS0O,gBAAgB,6BAA8B,SACxEK,GAAWtK,aAAa,QAASuK,GAAiB,IAAMF,GACxDC,EAAWtK,aAAa,IAAKwK,KAC7BF,EAAWtK,aAAa,YAAa,oBACrCgK,EAAQ5K,YAAYkL,IAU5B,QAASP,IAA0BN,EAAgBtD,GAC/C,GAAIwD,GAAMF,EAAetJ,cAAc,uBAIvCwJ,GAAI9V,MAAM0C,MAAQoT,EAAI9V,MAAMsC,OAASgQ,EAAS,IAE9C,KAAK,GADDsE,GAAW,GACNJ,EAAO,EAAGA,GAAQ,EAAGA,IAAQ,CAClC,GAAIK,GAAQC,GANR,EACA,EACE,GAIiCF,GACnCG,EAAYjB,EAAIxJ,cAAc,IAAMoK,GAAiB,IAAMF,EAC/DO,GAAU5K,aAAa,KAAM0K,EAAMvS,EAAI,IACvCyS,EAAU5K,aAAa,KAAM0K,EAAMtS,EAAI,IACvCqS,EAAWA,GAAY,IAAM,EAAIA,EACjCA,GAAsB,IAS9B,QAASI,IAAeC,EAAOC,GAY3B,QAASC,GAAWtO,GAChBuO,EAAOrS,KAAK8D,GACRA,IAAMwO,GAAiB,IAAVC,IACTzO,GAAKgO,GAAShO,EAAI,IAAM0O,EACxB1O,EAAI4F,YAAY5F,EAAI,IAAK2O,QAAQ,IAEtB,IAAN3O,GACLA,EAAI,EACJA,EAAI4F,YAAY5F,EAAI,IAAK2O,QAAQ,IACjCD,GAAY,GAEP1O,EAAI,GAAK0O,EAEJ,KADV1O,EAAI4F,YAAY5F,EAAI,IAAK2O,QAAQ,OAE7BD,GAAY,GAGX1O,GAAK,IAAM0O,IAChB1O,EAAI4F,YAAY5F,EAAI,IAAK2O,QAAQ,OAEnCF,EACFH,EAAWtO,IAhCnB,GAAIuO,MACAP,EAAQI,EACRI,EAAMH,EACNK,GAAY,EACZD,EAAQ,CA+BZ,OA9BAH,GAAWN,GA8BJO,EAOX,QAASK,IAAiB7B,GAGtB,IAAK,GADD8B,GADM9B,EAAetJ,cAAc,wBAC1BqL,aAAa,MACjB9O,EAAI,EAAGA,GAAK,EAAGA,KAcxB,SAAkB+O,EAAQf,EAAOQ,EAAKD,EAAQM,GAI1C,QAASG,GAAavF,GACdyB,GAAc,GAAK2D,GAAII,cACrBR,EACFM,EAAOzL,aAAa,IAAKmG,EAAS,IAC9BgF,GAASF,EAAOrO,SAChBuO,EAAQ,GAGZvD,GAAc2D,GAAI1D,QAAU+D,WAAWF,EAAaG,KAAK,KAAMZ,EAAOE,IAAS,KAXvF,GAAIA,GAAQ,CACZO,GAAahB,IAfIjB,EAAeqC,uBAAuB,kBAC5C,IAANpP,EAAU,EAAIA,IAAI,GACHA,EAAGA,EAAGmO,GAAenO,EAAGA,GAAI6O,GAmCxD,QAASpE,IAAed,EAAWK,EAAUd,GACpCjS,oBAAkBiS,IACnBS,EAAUhQ,UAAUqK,IAAIkF,GAEhBS,EAAUlG,cAAc,oBAC9BqH,UAAYd,EAQtB,QAASI,IAAgBvQ,EAAOqQ,GAC5B,GAAImF,EACJ,QAAQnF,GACJ,IAAK,WACDmF,EAAcC,EACd,MACJ,KAAK,YACDD,EAAcE,EACd,MACJ,KAAK,SACDF,EAAcG,EACd,MACJ,KAAK,WACL,IAAK,gBACDH,EAAcG,EACd,MACJ,KAAK,SACDH,EAAcI,EACd,MACJ,KAAK,UACDJ,EAAcK,EACd,MACJ,KAAK,aACDL,EAAcM,EACd,MACJ,KAAK,aACDN,EAAcO,EACd,MACJ,SACIP,EAAcQ,GAGtB,MADAhW,GAAQA,EAAQ+L,WAAW/L,EAAQ,IAAMwV,EACxB,cAAVnF,EAAwBrQ,EAAQA,EAAQ,EAUnD,QAASkS,IAAgB8C,EAAIpF,EAAQgF,EAAOqB,GACxC,OACIrG,OAAQA,EACRgF,MAAOA,EACPqB,WAAYA,GAOpB,QAAS7E,MAGL,IAAK,GAFD8E,GAAS,GACTC,EAAU,iEACLhQ,EAAI,EAAGA,EAAI,EAAGA,IACnB+P,GAAUC,EAAQC,OAAOtP,KAAKuH,MAAMvH,KAAKoP,SAAWC,EAAQ9P,QAEhE,OAAO6P,GAWX,QAAS3D,IAAsB8D,EAAUlF,EAAUmF,EAAYzG,GAC3D,GAAI0G,GAAYvR,SAAS0O,gBAAgB,6BAA8B,MACvE6C,GAAU9M,aAAa,KAAM0H,GAC7BoF,EAAU9M,aAAa,QAAS6M,EAChC,IAAIE,GAAmBxR,SAAS0O,gBAAgB,6BAA8B,OAC9E8C,GAAiB/M,aAAa,QAASuK,GACvC,IAAIyC,GAAkBzR,SAAS0O,gBAAgB,6BAA8B,OAC7E+C,GAAgBhN,aAAa,QAASiN,IACtCL,EAASzC,aAAa2C,EAAWF,EAASxC,YAC1C0C,EAAU1N,YAAY2N,GACtBD,EAAU1N,YAAY4N,GAW1B,QAASlF,IAAwB2B,EAAgB/B,EAAUtB,EAAa8G,GACpE,GAAIC,GAAc5R,SAAS0O,gBAAgB,6BAA8B,OACrEmD,EAAgB7R,SAAS0O,gBAAgB,6BAA8B,OAC3EkD,GAAYnN,aAAa,QAASkN,GAClCC,EAAYnN,aAAa,KAAM0H,GAC/B0F,EAAcpN,aAAa,QAASuK,IACpCd,EAAeU,aAAagD,EAAa1D,EAAeW,YACxD+C,EAAY/N,YAAYgO,GAS5B,QAAS9G,IAAyBrN,EAAQmN,GACtC,GAAIiH,GAAmBjH,EAAY,UAC/BkH,EAAwBlH,EAAY,SAOxC,OANAiH,GAAiBhX,UAAUqK,IAAI6M,IAC/BD,EAAsBjX,UAAUqK,IAAIgJ,IACpC4D,EAAsBtN,aAAa,gBAAiB,QACpD/G,EAAOmG,YAAYiO,GACnBA,EAAiBjO,YAAYkO,IAEpB7G,KAAM4G,EAAkBpG,WAAYqG,GAOjD,QAAS5E,IAAgB8E,GAKrBC,GAJY,EACF,IAGeC,GAFV,KAEmCF,EAAY7E,WAAW6E,EAAY9F,UAAUyD,MADrF,GACiGqC,GAC3GA,EAAY7E,WAAW6E,EAAY9F,UAAUyD,QAAUqC,EAAY7E,WAAW6E,EAAY9F,UAAUyD,MAAQ,EAahH,QAASsC,IAAa/C,EAAOQ,EAAKyC,EAAQC,EAAUzC,EAAO7N,EAAKkQ,GAS5D,QAASK,GAAcL,GACnB,GAAIM,GAAczQ,KAAKC,IAAI,EAAGD,KAAK0Q,KAAI,GAAIC,OAAOC,UAAYC,EAAWN,GACzEO,GAAWR,EAAOG,EAAapD,EAAO0D,EAAQR,GAAWJ,EAAYnH,WACjEkF,IAAOiC,EAAY7E,WAAW6E,EAAY9F,UAAU8E,YAAcsB,EAAcF,EAEhFhG,GAAc4F,EAAY9F,UAAUG,QAAU+D,WAAWiC,EAAchC,KAAK,KAAM2B,GAAc,GAGhG9E,GAAgB8E,GASxB,QAASW,GAAWjZ,EAAOmR,GACvB,IAAK1S,oBAAkB0S,EAAUlG,cAAc,0BAA4BxM,oBAAkB0S,EAAUlG,cAAc,yBAA0B,CAC3I,GAAIwJ,OAAM,EASV,IARKhW,oBAAkB0S,EAAUlG,cAAc,yBAC1CxM,oBAAkB0S,EAAUlG,cAAc,uBAAuBA,cAAc,uBAG1ExM,oBAAkB0S,EAAUlG,cAAc,0BAC/CxM,oBAAkB0S,EAAUlG,cAAc,wBAAwBA,cAAc,yBACjFwJ,EAAMtD,EAAUlG,cAAc,yBAJ9BwJ,EAAMtD,EAAUlG,cAAc,wBAM7BxM,oBAAkBgW,GAAM,CACzB,GAAI0E,GAAO1E,EAAIxJ,cAAc,qBAC7BkO,GAAKrO,aAAa,oBAAqBsO,GAAcC,EAAUC,EAAYtZ,EAAOoI,GAAO,IACzF+Q,EAAKrO,aAAa,YAAa,YAAuB,IAAMuO,EAAW,EAAI,IAAMA,EAAW,EAAI,OAvC5G,GAAIhD,KAAOiC,EAAY7E,WAAW6E,EAAY9F,UAAU8E,WACpD0B,GAAY,GAAIF,OAAOC,UACvBG,EAASlD,EAAMR,EACf6D,EAAWE,GAA+D,EAAtDjB,EAAY7E,WAAW6E,EAAY9F,UAAUvB,OAAc,IAC/EqI,EAAaE,GAAcH,GAC3BI,GAAU,IAAMnB,EAAY7E,WAAW6E,EAAY9F,UAAUyD,OAAS,EAC1E0C,GAAcL,GA+ClB,QAASxF,IAAyB7B,EAAQE,EAAWhC,EAAM6I,GACvD,GAAIqB,GAAoB,EAATpI,EACXwD,EAAMtD,EAAUlG,cAAc,OAAS+M,GACvCmB,EAAO1E,EAAIxJ,cAAc,sBACzBqO,EAAaE,GAAcH,GAC3BK,EAAmBL,EAAW,EAAK,IACvC5E,GAAI3J,aAAa,UAAW,OAASuO,EAAW,IAAMA,GACtD5E,EAAI9V,MAAM0C,MAAQoT,EAAI9V,MAAMsC,OAASoY,EAAW,KAChD5E,EAAI9V,MAAM+a,gBAAkBA,EAAkB,IAAMA,EAAkB,IAAMA,EAC5EP,EAAKrO,aAAa,IAAK6O,GAAQN,EAAUC,IAC5B,aAATnK,GAAgC,cAATA,GAAiC,YAATA,IAC/CgK,EAAKrO,aAAa,eAAgBwO,EAAa,IAC/CH,EAAKrO,aAAa,oBAAsBuO,EAAWC,GAAcnR,KAAKyR,GAAK,IAAQ,IACnFT,EAAKrO,aAAa,oBAAqBsO,GAAcC,EAAUC,EAAY,EAAG,IAAM,KAQ5F,QAASC,IAAQvZ,GAEb,MADaoN,YAAWpN,GAS5B,QAAS2Z,IAAQN,EAAUC,GACvB,GAAIrI,GAASoI,EAAW,EACpBQ,EAASP,EAAa,CAC1B,OAAO,IAAMrI,EAAS,IAAM4I,EACtB,KAAO5I,EAAS4I,GAAU,KAAO5I,EAAS4I,GAAU,UAAYA,EAAS,IAAM5I,EAOzF,QAASuI,IAAcH,GACnB,MAAO,GAAWA,EAUtB,QAASD,IAAcC,EAAUC,EAAYtZ,EAAOoI,GAChD,OAAQiR,EAAWC,GAAcnR,KAAKyR,IAAO,IAAY,IAAQ5Z,EAAQ,KAU7E,QAASwY,IAAcsB,EAAStE,EAAO0D,EAAQR,GAC3C,GAAIqB,IAAaD,GAAWpB,GAAYoB,EACpCE,EAAYD,EAAYD,CAC5B,OAAOtE,GAAQ0D,GAAU,EAAIc,EAAYD,GAAa,GAAKA,EAAYA,EAAY,GAAKC,GAU5F,QAASlG,IAAwB7C,EAAQgJ,EAAeC,GACpD,GAAIC,GAAUlJ,EACVmJ,EAAUnJ,EACVoI,EAAoB,EAATpI,EAGXwD,EAAMwF,EAAchP,cAAc,IAAMiP,GACxC3D,EAAS9B,EAAIxJ,cAAc,kBAC3BkO,EAAO1E,EAAIxJ,cAAc,eACzByO,EAAmBL,EAAW,EAAK,IACvC9C,GAAOzL,aAAa,IAAKuP,GAAaF,EAASC,EAASnJ,IACxDkI,EAAKrO,aAAa,IAAKwP,GAAUH,EAASC,EAASnJ,EAPpC,IACF,KAObwD,EAAI3J,aAAa,UAAW,OAASuO,EAAW,IAAMA,GACtD5E,EAAI9V,MAAM+a,gBAAkBA,EAAkB,IAAMA,EAAkB,IAAMA,EAC5EjF,EAAI9V,MAAM0C,MAAQoT,EAAI9V,MAAMsC,OAASoY,EAAW,KAUpD,QAAS5D,IAAgB0E,EAASC,EAASnJ,EAAQsJ,GAC/C,GAAIC,IAAWD,EAAQ,IAAMpS,KAAKyR,GAAK,GACvC,QACI3W,EAAGkX,EAAWlJ,EAAS9I,KAAKsS,IAAID,GAChCtX,EAAGkX,EAAWnJ,EAAS9I,KAAKuS,IAAIF,IAYxC,QAASF,IAAUrX,EAAGC,EAAG+N,EAAQsE,EAAUoF,GACvC,GAAInF,GAAQC,GAAgBxS,EAAGC,EAAG+N,EAAQ0J,GACtC3E,EAAMP,GAAgBxS,EAAGC,EAAG+N,EAAQsE,EAKxC,QAHI,IAAKC,EAAMvS,EAAGuS,EAAMtS,EACpB,IAAK+N,EAAQA,EAAQ,EAAG,EAAG,EAAG+E,EAAI/S,EAAG+S,EAAI9S,GAC3C0X,KAAK,KAUX,QAASP,IAAapX,EAAGC,EAAG+N,GAOxB,OALI,IAAKhO,EAAGC,EACR,KAAM+N,EAAQ,EACd,IAAKA,EAAQA,EAAQ,EAAG,EAAG,EAAY,EAATA,EAAY,EAC1C,IAAKA,EAAQA,EAAQ,EAAG,EAAG,EAAa,GAATA,EAAY,GAC7C2J,KAAK,KAUJ,QAAShK,IAAYO,GACxB0J,GAAgB1J,GAAW,GAC3BA,EAAY,KAQhB,QAAS0J,IAAgB1J,EAAW2J,GAChC,GAAIC,EACJ,IAAI5J,EACA,GAAIA,EAAUhQ,UAAUC,SAASiX,IAC7B0C,EAAc5J,MAEb,CACD,GAAI6J,GAAqB7J,EAAU9F,iBAAiB,IAAMgN,GAC1D,IAAI1M,UAAQsP,MACR,IAAK,GAAIzT,GAAI,EAAGA,EAAIwT,EAAmBtT,OAAQF,IAC3C,GAAIwT,EAAmBxT,GAAGvI,eAAiB+b,EAAmBxT,GAAGvI,gBAAkBkS,EAAW,CAC1F4J,EAAcC,EAAmBxT,EACjC,YAKRuT,GAAcG,MAAMC,KAAKH,GAAoBI,KAAK,SAAU7J,GAAQ,MAAOA,GAAKtS,gBAAkBkS,KAAiB,KAI/H,GAAIA,GAAa4J,EAAa,CAC1B,GAAIM,GAAQN,EAAY9P,cAAc,IAAMuJ,GAI5C,IAHgBsG,GAAUC,EAAY5Z,UAAUC,SAAS4Q,MACpD+I,EAAY5Z,UAAUC,SAAS+Q,KAC/B4I,EAAY5Z,UAAUC,SAAS4Q,MAAsB+I,EAAY5Z,UAAUC,SAASka,IAC1E,CACX,GAAIC,GAASR,EAAY9P,cAAc,MACvC,IAAIxM,oBAAkB8c,GAClB,MAEJ,IAAIlF,GAAKkF,EAAOjF,aAAa,KAE7B,QADA5D,GAAc,GAAK2D,GAAII,WAAaqE,EAC5BpI,GAAc,GAAK2D,GAAIlH,MAC3B,IAAK,WACL,IAAK,YACG2L,EACAU,aAAa9I,GAAc2D,GAAI1D,SAG/BU,GAAgBgI,EAAOhF,EAAI3D,GAAc2D,GAAIpF,OAEjD,MACJ,KAAK,YACG6J,EACAU,aAAa9I,GAAc2D,GAAI1D,SAG/ByD,GAAiBiF,IAK7BP,EACA3Z,YAAU4Z,GAAc5I,KAAgBmJ,KAGxCna,YAAU4Z,GAAcO,KAAgBnJ,KAE5ChB,EAAY,MAUb,QAASN,IAAYM,GACxB0J,GAAgB1J,GAAW,GAC3BA,EAAY,KAaT,QAASL,IAAWlI,EAAMmI,GAC7B,GAAIG,GAAezS,oBAAkBsS,GAAiDhH,gBAAxBgH,MACxCvR,KAAlBoJ,EAAK4I,WACLC,GAAe7I,EAAK4I,aACEhS,KAAlBoJ,EAAK4I,WACLU,GAAetJ,EAAK8H,UAI5B,KAAK,GADDS,GAAY9K,SAASgF,iBAAiB,IAAMgN,IACvCjR,EAAQ,EAAGA,EAAQ+J,EAAUzJ,OAAQN,IAC1CqU,GAAe7S,EAAK4I,SAAUL,EAAU/J,GAAQwB,EAAKuG,KAAMvG,EAAK8H,SAAUQ,GAYlF,QAASuK,IAAejK,EAAUL,EAAWO,EAAOhB,EAAUgL,GACtDjd,oBAAkB+S,KAAcL,EAAUhQ,UAAUC,SAAS4Q,KAC7D2J,GAAaxK,EAAWO,EAAOhB,EAAUgL,GACrCvK,EAAUhQ,UAAUC,SAASka,KAC7BnK,EAAUhQ,UAAU+L,OAAOoO,IAC3B1K,GAAYO,KAGZA,EAAUhQ,UAAU+L,OAAOiF,IAC3BtB,GAAYM,MAIhBM,GAAeD,EACV/S,oBAAkBiS,KACnBwB,GAAexB,GAEdjS,oBAAkBgT,KACnBQ,GAAed,EAAWM,GAAcS,KAYpD,QAASyJ,IAAaxK,EAAWO,EAAOhB,EAAUgL,GACzCjd,oBAAkBiS,IACnBS,EAAUhQ,UAAUqK,IAAIkF,EAE5B,IAAIkL,GAAazK,EAAUlG,cAAc,MACzC,KAAKxM,oBAAkBmd,GAAa,CAChC,GAAI3K,GAAmB,cAAVS,EAAwBtE,WAAWwO,EAAWjd,MAAMsC,QAAUmM,WAAWwO,EAAWjd,MAAMsC,QAAU,CAGjH,IAFiB2a,EAAWtF,aAAa,SACX7M,MAAM,MACnBE,QAAQ,oBAAsB,EAAG,CAC9C,GAAI0M,GAAKuF,EAAWtF,aAAa,KACjCkF,cAAa9I,GAAc,GAAK2D,GAAI1D,SAExCd,GAASH,EAAOP,EAAWF,EAAQyK,IJh9B3C,GAAItb,IACAb,GACApB,GACAuB,GCFAA,GACAmC,GEKAsH,GACAmC,GAOAnB,GACAG,GACAF,GACAC,GACAhB,GAIAoG,GHnBAhQ,IAAc,EERdoc,GAAwC,WACxC,GAAIC,GAAgB,SAAUpW,EAAGqW,GAI7B,OAHAD,EAAgBE,OAAOC,iBAChBC,uBAA2BhB,QAAS,SAAUxV,EAAGqW,GAAKrW,EAAEwW,UAAYH,IACvE,SAAUrW,EAAGqW,GAAK,IAAK,GAAII,KAAKJ,GAAOA,EAAEK,eAAeD,KAAIzW,EAAEyW,GAAKJ,EAAEI,MACpDzW,EAAGqW,GAE5B,OAAO,UAAUrW,EAAGqW,GAEhB,QAASM,KAAOlR,KAAKmR,YAAc5W,EADnCoW,EAAcpW,EAAGqW,GAEjBrW,EAAE6W,UAAkB,OAANR,EAAaC,OAAOQ,OAAOT,IAAMM,EAAGE,UAAYR,EAAEQ,UAAW,GAAIF,QAGnFI,GAA0C,SAAUC,EAAY3Y,EAAQ4Y,EAAKC,GAC7E,GAA2HlX,GAAvHmX,EAAIC,UAAUpV,OAAQqV,EAAIF,EAAI,EAAI9Y,EAAkB,OAAT6Y,EAAgBA,EAAOZ,OAAOgB,yBAAyBjZ,EAAQ4Y,GAAOC,CACrH,IAAuB,gBAAZK,UAAoD,kBAArBA,SAAQC,SAAyBH,EAAIE,QAAQC,SAASR,EAAY3Y,EAAQ4Y,EAAKC,OACpH,KAAK,GAAIpV,GAAIkV,EAAWhV,OAAS,EAAGF,GAAK,EAAGA,KAAS9B,EAAIgX,EAAWlV,MAAIuV,GAAKF,EAAI,EAAInX,EAAEqX,GAAKF,EAAI,EAAInX,EAAE3B,EAAQ4Y,EAAKI,GAAKrX,EAAE3B,EAAQ4Y,KAASI,EAChJ,OAAOF,GAAI,GAAKE,GAAKf,OAAOmB,eAAepZ,EAAQ4Y,EAAKI,GAAIA,GAa5DK,GAA8B,SAAUC,GAExC,QAASD,KACL,MAAkB,QAAXC,GAAmBA,EAAOhV,MAAM8C,KAAM2R,YAAc3R,KAQ/D,MAVA0Q,IAAUuB,EAAcC,GAIxBZ,IACIa,WAAS,SACVF,EAAab,UAAW,QAAK,IAChCE,IACIa,WAAS,QACVF,EAAab,UAAW,QAAK,IACzBa,GACTG,iBAGEC,IACAC,KAAM,UACNC,IAAK,QACLC,KAAM,eACNC,MAAO,iBAePC,GAAuB,SAAUR,GAEjC,QAASQ,GAAM1f,EAASqS,GACpB,MAAO6M,GAAOtV,KAAKoD,KAAMqF,EAASrS,IAAYgN,KAopBlD,MAtpBA0Q,IAAUgC,EAAOR,GAYjBQ,EAAMtB,UAAUuB,kBAAoB,SAAUC,EAASC,GACnD,IAAK,GAAIC,GAAK,EAAGjN,EAAKgL,OAAOkC,KAAKH,GAAUE,EAAKjN,EAAGtJ,OAAQuW,IAExD,OADWjN,EAAGiN,IAEV,IAAK,QACDE,oBAAkBhT,KAAKhN,SAAWkD,MAAS+c,aAAWL,EAAQ1c,QAC9D,MACJ,KAAK,SACD8c,oBAAkBhT,KAAKhN,SAAW8C,OAAUmd,aAAWL,EAAQ9c,SAC/D,MACJ,KAAK,SACDkd,oBAAkBhT,KAAKhN,SAAWkgB,OAAUN,EAAQM,QACpD,MACJ,KAAK,YACDlT,KAAKmT,cACL,MACJ,KAAK,WACL,IAAK,WACDnT,KAAKoT,iBACL,MACJ,KAAK,UACD,GAAItb,GAAI8a,EAAQ/Z,QAAUga,EAAQha,OAClCmH,MAAKhN,QAAQQ,MAAML,MAAQwQ,SAAS3D,KAAKhN,QAAQQ,MAAML,KAAM,OAAWyQ,WAAa,IACrF,MAEJ,KAAK,UACD,GAAI7L,GAAI6a,EAAQ9Z,QAAU+Z,EAAQ/Z,OAClCkH,MAAKhN,QAAQQ,MAAMJ,KAAOuQ,SAAS3D,KAAKhN,QAAQQ,MAAMJ,IAAK,OAAWwQ,WAAa,IACnF,MAEJ,KAAK,UACD5D,KAAKqT,YACL,MACJ,KAAK,iBAC8B,SAA3BT,EAAQU,eACRtT,KAAKuT,mBAGLvT,KAAKwT,uBAYzBd,EAAMtB,UAAUqC,cAAgB,WAC5B,MAAO,SAOXf,EAAMtB,UAAUsC,iBAAmB,WAC/B1T,KAAK2T,kBAOTjB,EAAMtB,UAAUwC,eAAiB,WAC7B,MAAO5T,MAAK6T,kBAOhBnB,EAAMtB,UAAUjW,QAAU,WAClB6E,KAAKhN,QAAQgD,UAAUC,SAAS,iBAChC+J,KAAK8T,eAET9T,KAAKhN,QAAQgD,UAAU+L,OAAOsQ,GAAWC,KAAMD,GAAWE,IAAKF,GAAWG,KAAMH,GAAWI,OAC3FzS,KAAK+T,QAAU,KACf/T,KAAKgU,SAAW,KAChBC,IACA/B,EAAOd,UAAUjW,QAAQyB,KAAKoD,OAQlC0S,EAAMtB,UAAU8C,OAAS,WACrBlU,KAAKhN,QAAQgD,UAAUqK,IAAIgS,GAAWC,KACtC,IAAI6B,KACgB,OAAhBnU,KAAKkT,SACLiB,EAAOjB,OAASlT,KAAKkT,QAEN,SAAflT,KAAK9J,QACLie,EAAOje,MAAQ+c,aAAWjT,KAAK9J,QAEf,SAAhB8J,KAAKlK,SACLqe,EAAOre,OAASmd,aAAWjT,KAAKlK,SAEpCkd,oBAAkBhT,KAAKhN,QAASmhB,GAChCnU,KAAK1L,aAAc,EACnB0L,KAAKmT,eACLnT,KAAKqT,cAETX,EAAMtB,UAAU/R,WAAa,WACrBmB,UAAQ4T,UACRhU,eAAaC,IAAIhH,OAAQ,oBAAqB2G,KAAKqU,oBAAqBrU,MAEhD,SAAxBA,KAAKsT,gBACLtT,KAAKuT,oBAGbb,EAAMtB,UAAUmC,iBAAmB,WAC/B,GAAIvT,KAAKsU,qBACL,IAAK,GAAIxB,GAAK,EAAGjN,EAAK7F,KAAK5E,oBAAoB4E,KAAKsU,sBAAuBxB,EAAKjN,EAAGtJ,OAAQuW,IAAM,CAC7F,GAAIyB,GAAW1O,EAAGiN,EAClB1S,gBAAaC,IAAIkU,EAAU,SAAUvU,KAAKwU,cAAexU,QAIrE0S,EAAMtB,UAAU0C,aAAe,WACvBtT,UAAQ4T,UACRhU,eAAa2B,OAAO1I,OAAQ,oBAAqB2G,KAAKqU,qBAE9B,SAAxBrU,KAAKsT,gBACLtT,KAAKwT,sBAGbd,EAAMtB,UAAUoC,mBAAqB,WACjC,GAAIxT,KAAKsU,qBACL,IAAK,GAAIxB,GAAK,EAAGjN,EAAK7F,KAAK5E,oBAAoB4E,KAAKsU,sBAAuBxB,EAAKjN,EAAGtJ,OAAQuW,IAAM,CAC7F,GAAI2B,GAAW5O,EAAGiN,EAClB1S,gBAAa2B,OAAO0S,EAAU,SAAUzU,KAAKwU,iBAIzD9B,EAAMtB,UAAUkD,mBAAqB,WACjC,GAAII,GAAoC,KAAlB1U,KAAKgU,UAAmB1gB,oBAAkB0M,KAAKgU,UACjE9Y,SAASvF,KAAOqK,KAAKgU,QAEzB,OADAhU,MAAK2U,eAAgBX,SAAUU,IAAmB,GACf,gBAAnB1U,MAAKgU,SACjB9Y,SAAS4E,cAAcE,KAAKgU,UAAYhU,KAAKgU,UAErDtB,EAAMtB,UAAUoD,cAAgB,SAAU1T,GAWtC,GAV4B,eAAxBd,KAAKsT,eACAhgB,oBAAkB0M,KAAKhN,UAAcgN,KAAKhN,QAAQO,eAAiBuN,EAAElI,QACrEoH,KAAKhN,QAAQO,cAAsD,SAAtCyM,KAAKhN,QAAQO,aAAakI,SAC1B,MAA1BqF,EAAElI,OAAO9E,eACbkM,KAAKoT,kBAGoB,SAAxBpT,KAAKsT,gBACVtT,KAAK4U,OAEmB,SAAxB5U,KAAKsT,gBACDtT,KAAKsU,qBAAsB,CAC3B,GAAIO,GAAgB7U,KAAK8U,oBAAoB9U,KAAKsU,qBAAsBxT,EAAElI,OACrEic,IAAkB7U,KAAK+U,sBAInBF,IACL7U,KAAK+U,uBAAwB,IAJ7B/U,KAAKgV,QAAQ,sBACbhV,KAAK+U,uBAAwB,KAkB7CrC,EAAMtB,UAAU0D,oBAAsB,SAAUJ,EAAiBO,GAE7D,IAAK,GADD3Z,GAAgB0E,KAAK5E,oBAAoBsZ,GACpCQ,EAAW,EAAGA,EAAW5Z,EAAciB,OAAQ2Y,IACpD,IAAIlV,KAAKmV,iBAAiBT,EAAiBpZ,EAAc4Z,IAIrD,OAAO,CAGf,QAAO,GAEXxC,EAAMtB,UAAU+D,iBAAmB,SAAUT,EAAiBO,GAC1D,GAAIG,GAAOpV,KAAKqV,2BAA2BX,EAC3C,KAAKU,EAAKtf,SAAWsf,EAAKlf,MACtB,OAAO,CAEX,IAAK5C,oBAAkB0M,KAAKqV,2BAA2BJ,IAOlD,CACD,GAAIK,GAAMjc,OACNkc,GACAniB,IAAKkiB,EAAIE,QACTriB,KAAMmiB,EAAIG,QACVtf,MAAOmf,EAAIG,QAAUH,EAAII,WACzB7f,OAAQyf,EAAIE,QAAUF,EAAIK,aAE1BC,EAAM7hB,EAAkB2gB,GACxBmB,GACAziB,IAAKwiB,EAAIxiB,IACTD,KAAMyiB,EAAIziB,KACVgD,MAAOyf,EAAIziB,KAAOiiB,EAAKlf,MACvBL,OAAQ+f,EAAIxiB,IAAMgiB,EAAKtf,QAEvBggB,GACA1iB,IAAKmiB,EAAW1f,OAASggB,EAAIziB,IAC7BD,KAAMoiB,EAAWpf,MAAQ0f,EAAI1iB,KAC7B0C,OAAQggB,EAAIhgB,OAAS0f,EAAWniB,IAChC+C,MAAO0f,EAAI1f,MAAQof,EAAWpiB,KAElC,OAAO2iB,GAAY1iB,IAAM,GAClB0iB,EAAY3iB,KAAO,GACnB2iB,EAAY3f,MAAQ,GACpB2f,EAAYjgB,OAAS,EA9B5B,GAAIkgB,GAAWd,EAAc/f,uBAC7B,SAASkgB,EAAKvf,OAASkgB,EAAS3iB,KACzBgiB,EAAKvf,OAASkgB,EAASlgB,QACnBuf,EAAKjf,MAAQ4f,EAAS5f,OACnBif,EAAKjiB,KAAO4iB,EAAS5iB,OAmC3Cuf,EAAMtB,UAAU4E,UAAY,aAG5BtD,EAAMtB,UAAU+B,aAAe,WAC3BnT,KAAKiW,aACDjW,KAAKkW,UACLlW,KAAKhN,QAAQgD,UAAUqK,IAAIgS,GAAWE,KAGtCvS,KAAKhN,QAAQgD,UAAU+L,OAAOsQ,GAAWE,MAGjDG,EAAMtB,UAAUiC,WAAa,WACzB,IAAK/f,oBAAkB0M,KAAK+T,SAExB,GADA/T,KAAKhN,QAAQmU,UAAY,GACK,gBAAlBnH,cACRA,KAAKhN,QAAQmjB,YAAcnW,KAAK+T,YAE/B,CACD,GAAIqC,GAAepW,KAAKsU,qBAEpB+B,EAAQrW,KAAK+T,QAAQsC,KACpBD,GAAapgB,UAAUC,SAAS,oBAAqB3C,oBAAkB+iB,IACxErW,KAAKhN,QAAQ+L,YAAYiB,KAAK+T,WAK9CrB,EAAMtB,UAAUiD,oBAAsB,WAClC,GAAIiC,GAAQtW,IACZuL,YAAW,WACP+K,EAAMlD,mBACP,MASPV,EAAMtB,UAAUgC,gBAAkB,SAAUxa,EAAQ2d,GAC3CjjB,oBAAkBsF,IACnBoH,KAAKwW,iBAAiB5d,GAE1BoH,KAAKiW,aACAM,GACDvW,KAAK2T,kBAGbjB,EAAMtB,UAAU6E,WAAa,WACzB,GAAIxhB,GACAhB,EACAihB,EAAkB1U,KAAKsU,oBAC3B,IAA+B,gBAApBtU,MAAKvM,SAAS8C,GAA6C,gBAApByJ,MAAKvM,SAAS+C,EAC5D/B,GAAQtB,KAAM6M,KAAKvM,SAAS8C,EAAGnD,IAAK4M,KAAKvM,SAAS+C,OAEjD,IAAgC,gBAApBwJ,MAAKvM,SAAS8C,GAA6C,gBAApByJ,MAAKvM,SAAS+C,GACtC,gBAApBwJ,MAAKvM,SAAS8C,GAA6C,gBAApByJ,MAAKvM,SAAS+C,EAAiB,CAC9E,GAAIigB,OAAgB,GAChBld,EAAUyG,KAAKhN,QAAQQ,MAAM+F,OACjCyG,MAAKhN,QAAQQ,MAAM+F,QAAU,QACzByG,KAAKhN,QAAQgD,UAAUC,SAAS,iBAChCwgB,EAAgBzW,KAAKhN,QAAQc,cAAcN,MAAM+F,QACjDyG,KAAKhN,QAAQc,cAAcN,MAAM+F,QAAU,SAE/C9F,EAAWuM,KAAK0W,kBAAkBhC,EAAiB1U,KAAKhN,QAASgN,KAAKvM,SAAUuM,KAAKnH,QAASmH,KAAKlH,SAE/FrE,EAD2B,gBAApBuL,MAAKvM,SAAS8C,GACbpD,KAAMM,EAASN,KAAMC,IAAK4M,KAAKvM,SAAS+C,IAGxCrD,KAAM6M,KAAKvM,SAAS8C,EAAGnD,IAAKK,EAASL,KAEjD4M,KAAKhN,QAAQQ,MAAM+F,QAAUA,EACzByG,KAAKhN,QAAQgD,UAAUC,SAAS,iBAChC+J,KAAKhN,QAAQc,cAAcN,MAAM+F,QAAUkd,OAG9C,IAAI/B,EAAiB,CACtB,GAAI5e,GAASkK,KAAKhN,QAAQwO,aACtBjI,EAAUyG,KAAKhN,QAAQQ,MAAM+F,OACjCyG,MAAKhN,QAAQQ,MAAM+F,QAAU,QAC7B9E,EAAMuL,KAAK0W,kBAAkBhC,EAAiB1U,KAAKhN,QAASgN,KAAKvM,SAAUuM,KAAKnH,QAASmH,KAAKlH,QAAShD,GACvGkK,KAAKhN,QAAQQ,MAAM+F,QAAUA,MAG7B9E,IAAQtB,KAAM,EAAGC,IAAK,EAErBE,qBAAkBmB,KACnBuL,KAAKhN,QAAQQ,MAAML,KAAOsB,EAAItB,KAAO,KACrC6M,KAAKhN,QAAQQ,MAAMJ,IAAMqB,EAAIrB,IAAM,OAG3Csf,EAAMtB,UAAUiE,2BAA6B,SAAUQ,GAEnD,IAEI,MADUA,GAAI3gB,wBAGlB,MAAOyhB,GACH,MAAO,QAGfjE,EAAMtB,UAAUsF,kBAAoB,SAAUE,EAAWf,EAAKpiB,EAAUoF,EAASC,EAAShD,OACvE,KAAXA,IAAqBA,EAAS,EAClC,IAAI+gB,GAAU7W,KAAKqV,2BAA2BQ,GAC1CiB,EAAa9W,KAAKqV,2BAA2BuB,EACjD,IAAItjB,oBAAkBujB,IAAYvjB,oBAAkBwjB,GAChD,MAAO,KAEX,IAAI/jB,GAAS6jB,EACT1jB,GAAcC,KAAM,EAAGC,IAAK,EAUhC,QATIyiB,EAAItiB,cAA6C,SAA7BsiB,EAAItiB,aAAakI,SAA4C,SAAtBmb,EAAUnb,QACrEvI,EAAYa,EAAkB6iB,IAGzBf,EAAI7f,UAAUC,SAAS,gBAAqC,SAAnBlD,EAAO0I,UACjDoa,EAAMA,EAAI/hB,eAEdZ,EAAYJ,EAA+BC,EAAQ8iB,IAE/CpiB,EAAS8C,GACb,QACA,IAAK,OACD,KACJ,KAAK,SACIsf,EAAI7f,UAAUC,SAAS,gBAAqC,SAAnBlD,EAAO0I,SAA0C,cAApBuE,KAAK+W,WAC5E7jB,EAAUC,MAASkG,OAAO2B,WAAa,EAAI6b,EAAQ3gB,MAAQ,EAElC,cAApB8J,KAAK+W,WACV7jB,EAAUC,MAAS2jB,EAAW5gB,MAAQ,EAAI2gB,EAAQ3gB,MAAQ,EAG1DhD,EAAUC,MAAS2jB,EAAW5gB,MAAQ,CAE1C,MACJ,KAAK,QACI2f,EAAI7f,UAAUC,SAAS,gBAAqC,SAAnBlD,EAAO0I,SAA0C,cAApBuE,KAAK+W,WAC5E7jB,EAAUC,MAASkG,OAAO2B,WAAa6b,EAAQ3gB,MAEtB,cAApB8J,KAAK+W,WACV7jB,EAAUC,MAAS2jB,EAAW5gB,MAAQ2gB,EAAQ3gB,MAG9ChD,EAAUC,MAAS2jB,EAAiB,MAIhD,OAAQrjB,EAAS+C,GACb,QACA,IAAK,MACD,KACJ,KAAK,SACIqf,EAAI7f,UAAUC,SAAS,gBAAqC,SAAnBlD,EAAO0I,SAA0C,cAApBuE,KAAK+W,WAC5E7jB,EAAUE,KAAQiG,OAAOuB,YAAc,EAAIic,EAAQ/gB,OAAS,EAEnC,cAApBkK,KAAK+W,WACV7jB,EAAUE,KAAQ0jB,EAAWhhB,OAAS,EAAI+gB,EAAQ/gB,OAAS,EAG3D5C,EAAUE,KAAQ0jB,EAAWhhB,OAAS,CAE1C,MACJ,KAAK,SACI+f,EAAI7f,UAAUC,SAAS,gBAAqC,SAAnBlD,EAAO0I,SAA0C,cAApBuE,KAAK+W,WAC5E7jB,EAAUE,KAAQiG,OAAOuB,YAAcic,EAAQ/gB,OAEtB,cAApBkK,KAAK+W,YAA+BlB,EAAI7f,UAAUC,SAAS,YAGvC,cAApB+J,KAAK+W,YAA8BlB,EAAI7f,UAAUC,SAAS,YAC/D/C,EAAUE,KAAQ0jB,EAAWhhB,OAASA,EAGtC5C,EAAUE,KAAQ0jB,EAAkB,OANpC5jB,EAAUE,KAAQ0jB,EAAWhhB,OAAS+gB,EAAQ/gB,OAY1D,MAFA5C,GAAUC,MAAQ0F,EAClB3F,EAAUE,KAAO0F,EACV5F,GAEXwf,EAAMtB,UAAU4F,SAAW,SAAUC,GACjC,GAAIvC,GAAkB1U,KAAKsU,oBAC3B3b,GAAKqH,KAAKhN,QAAS0hB,EAAiB1U,KAAKnH,QAASmH,KAAKlH,QAASkH,KAAKvM,SAAS8C,EAAGyJ,KAAKvM,SAAS+C,EAAGwJ,KAAK3J,gBAAiB4gB,EAAOjX,KAAK1L,cAExIoe,EAAMtB,UAAU8F,QAAU,SAAUD,GAChC,GAA6D,IAAzDpf,EAAUmI,KAAKhN,QAASgN,KAAK3J,iBAAiBkG,OAC9C,GAAIjJ,oBAAkB0M,KAAK3J,iBAAkB,CACzC,GAAI4B,GAAO7B,EAAI4J,KAAKhN,QAASgN,KAAK3J,gBAAiB4gB,EAC/CA,GAAM1gB,IACNyJ,KAAKhN,QAAQQ,MAAML,KAAO8E,EAAK9E,KAAO,MAEtC8jB,EAAMzgB,IACNwJ,KAAKhN,QAAQQ,MAAMJ,IAAM6E,EAAK7E,IAAM,UAGvC,CACD,GAAI6B,GAAc+K,KAAKqV,2BAA2BrV,KAAKhN,SACnDmkB,EAAenX,KAAKqV,2BAA2BrV,KAAK3J,gBACxD,IAAI/C,oBAAkB2B,IAAgB3B,oBAAkB6jB,GACpD,MAAO,KAEPF,KAAqB,IAAZA,EAAMzgB,IACX2gB,EAAa/jB,IAAM6B,EAAY7B,IAC/B4M,KAAKhN,QAAQQ,MAAMJ,IAAM,MAEpB+jB,EAAathB,OAASZ,EAAYY,SACvCmK,KAAKhN,QAAQQ,MAAMJ,IAAMuQ,SAAS3D,KAAKhN,QAAQQ,MAAMJ,IAAK,KAAO6B,EAAYY,OAASshB,EAAathB,QAAU,OAGjHohB,IAAqB,IAAZA,EAAM1gB,IACX4gB,EAAahhB,MAAQlB,EAAYkB,MACjC6J,KAAKhN,QAAQQ,MAAML,KAAOwQ,SAAS3D,KAAKhN,QAAQQ,MAAML,KAAM,KAAO8B,EAAYkB,MAAQghB,EAAahhB,OAAS,KAExGghB,EAAahkB,KAAO8B,EAAY9B,OACrC6M,KAAKhN,QAAQQ,MAAML,KAAOwQ,SAAS3D,KAAKhN,QAAQQ,MAAML,KAAM,KAAOgkB,EAAahkB,KAAO8B,EAAY9B,MAAQ,SAM/Huf,EAAMtB,UAAUuC,eAAiB,WAC7B,GAAIyD,GAAOpX,KAAKuW,UAAUhgB,EACtB8gB,EAAOrX,KAAKuW,UAAU/f,CACb,UAAT4gB,GAA4B,SAATC,IAGV,SAATD,GAA4B,SAATC,EACnBrX,KAAKgX,UAAWzgB,GAAG,EAAMC,GAAG,IAEd,QAAT4gB,GAA2B,QAATC,EACvBrX,KAAKkX,SAAU3gB,GAAG,EAAMC,GAAG,KAGd,SAAT4gB,EACApX,KAAKgX,UAAWzgB,GAAG,EAAMC,GAAG,IAEd,SAAT6gB,GACLrX,KAAKgX,UAAWxgB,GAAG,EAAMD,GAAG,IAEnB,QAAT6gB,EACApX,KAAKkX,SAAU3gB,GAAG,EAAMC,GAAG,IAEb,QAAT6gB,GACLrX,KAAKkX,SAAU3gB,GAAG,EAAOC,GAAG,OAWxCkc,EAAMtB,UAAUkG,KAAO,SAAUC,EAAkBC,GAC/C,GAAIlB,GAAQtW,IASZ,IARsBA,KAAKsU,qBACPte,UAAUC,SAAS,mBACnC+J,KAAKyX,kBAAoBzX,KAAKhN,QAAQyY,uBAAuB,sBAAsB,IAEvFzL,KAAKX,cACA/L,oBAAkB0M,KAAKyX,oBAAsBjX,UAAQkX,QACtD1X,KAAKyX,kBAAkBjkB,MAAM+F,QAAU,SAEvB,MAAhByG,KAAKkT,SAAoB5f,oBAAkBkkB,GAAkB,CAC7D,GAAIG,GAAiBrkB,oBAAkBkkB,GAAoBxX,KAAKhN,QAAUwkB,CAC1ExX,MAAKkT,OAASnX,EAAiB4b,GAC/B3E,oBAAkBhT,KAAKhN,SAAWkgB,OAAUlT,KAAKkT,SAErDqE,EAAqBjkB,oBAAkBikB,IAAiD,gBAArBA,GAC5CvX,KAAK4X,cAAxBL,EACqB,SAArBvX,KAAKuW,UAAUhgB,GAAqC,SAArByJ,KAAKuW,UAAU/f,IAC9CqhB,eAAa7X,KAAKhN,SAAUqf,GAAWI,OACvCqF,YAAU9X,KAAKhN,SAAUqf,GAAWG,MACpCxS,KAAK2T,iBACLkE,eAAa7X,KAAKhN,SAAUqf,GAAWG,MACvCsF,YAAU9X,KAAKhN,SAAUqf,GAAWI,QAEnCnf,oBAAkBikB,IAenBM,eAAa7X,KAAKhN,SAAUqf,GAAWI,OACvCqF,YAAU9X,KAAKhN,SAAUqf,GAAWG,MACpCxS,KAAKgV,QAAQ,UAhBbuC,EAAiB9M,MAAQ,WAChB6L,EAAMyB,cACPF,eAAavB,EAAMtjB,SAAUqf,GAAWI,OACxCqF,YAAUxB,EAAMtjB,SAAUqf,GAAWG,QAG7C+E,EAAiB1M,IAAM,WACdyL,EAAMyB,aACPzB,EAAMtB,QAAQ,SAGtB,GAAIgD,aAAUT,GAAkBU,QAAQjY,KAAKhN,WAcrD0f,EAAMtB,UAAUwD,KAAO,SAAU2C,GAC7B,GAAIjB,GAAQtW,IACZuX,GAAqBjkB,oBAAkBikB,IAAiD,gBAArBA,GAC5CvX,KAAKkY,cAAxBX,EACCjkB,oBAAkBikB,IAWnBM,eAAa7X,KAAKhN,SAAUqf,GAAWG,MACvCsF,YAAU9X,KAAKhN,SAAUqf,GAAWI,OACpCzS,KAAKgV,QAAQ,WAZbuC,EAAiB1M,IAAM,WACdyL,EAAMyB,cACPF,eAAavB,EAAMtjB,SAAUqf,GAAWG,MACxCsF,YAAUxB,EAAMtjB,SAAUqf,GAAWI,OACrC6D,EAAMtB,QAAQ,WAGtB,GAAIgD,aAAUT,GAAkBU,QAAQjY,KAAKhN,UAOjDgN,KAAK8T,gBAQTpB,EAAMtB,UAAUhW,oBAAsB,SAAUpI,GAE5C,MADAgN,MAAKwW,iBAAiBxjB,GACfoI,EAAoBpI,EAASgN,KAAK1L,cAE7Coe,EAAMtB,UAAUoF,iBAAmB,SAAUxjB,GAEzC,IADA,GAAIwI,GAASxI,EAAQc,cACd0H,GAA6B,SAAnBA,EAAOC,SAAoB,CACxC,GAAIC,GAAcpC,iBAAiBkC,EACL,WAAzBE,EAAYjI,UAAiD,WAAzBiI,EAAYjI,UAA2BH,oBAAkB0M,KAAKhN,WAAYgN,KAAKhN,QAAQO,cACtF,SAAtCyM,KAAKhN,QAAQO,aAAakI,SAA+E,WAAzDnC,iBAAiB0G,KAAKhN,QAAQO,cAAcqI,WAC5FoE,KAAKhN,QAAQQ,MAAMJ,IAAMiG,OAAOmc,QAAU7R,SAAS3D,KAAKhN,QAAQQ,MAAMJ,IAAK,IACvE6f,aAAW5Z,OAAOmc,QAAU7R,SAAS3D,KAAKhN,QAAQQ,MAAMJ,IAAK,KAC3D6f,aAAWtP,SAAS3D,KAAKhN,QAAQQ,MAAMJ,IAAK,IAAMiG,OAAOmc,SAC/DxV,KAAKhN,QAAQQ,MAAMC,SAAW,QAC9BuM,KAAK1L,aAAc,GAEvBkH,EAASA,EAAO1H,eACXR,oBAAkB0M,KAAKhN,UAAYM,oBAAkB0M,KAAKhN,QAAQO,eAA0C,UAAzBmI,EAAYjI,UAC7D,UAAhCuM,KAAKhN,QAAQQ,MAAMC,WACtBuM,KAAK1L,aAAc,KAI/Bgd,IACIa,WAAS,SACVO,EAAMtB,UAAW,aAAU,IAC9BE,IACIa,WAAS,SACVO,EAAMtB,UAAW,YAAS,IAC7BE,IACIa,WAAS,OACVO,EAAMtB,UAAW,cAAW,IAC/BE,IACIa,WAAS,cACVO,EAAMtB,UAAW,iBAAc,IAClCE,IACIa,WAAS,OACVO,EAAMtB,UAAW,sBAAmB,IACvCE,IACIa,YAAW5b,EAAG,OAAQC,EAAG,UAC1Bkc,EAAMtB,UAAW,gBAAa,IACjCE,IACIa,WAAS,KACVO,EAAMtB,UAAW,eAAY,IAChCE,IACI6G,aAAYlG,KACbS,EAAMtB,UAAW,eAAY,IAChCE,IACIa,WAAS,IACVO,EAAMtB,UAAW,cAAW,IAC/BE,IACIa,WAAS,IACVO,EAAMtB,UAAW,cAAW,IAC/BE,IACIa,WAAS,MACVO,EAAMtB,UAAW,aAAU,IAC9BE,IACIa,YAAS,IACVO,EAAMtB,UAAW,gBAAa,IACjCE,IACIa,WAAS,eACVO,EAAMtB,UAAW,qBAAkB,IACtCE,IACIa,WAAS,OACVO,EAAMtB,UAAW,oBAAiB,IACrCE,IACIa,WAAS,OACVO,EAAMtB,UAAW,oBAAiB,IACrCE,IACI8G,WACD1F,EAAMtB,UAAW,WAAQ,IAC5BE,IACI8G,WACD1F,EAAMtB,UAAW,YAAS,IAC7BE,IACI8G,WACD1F,EAAMtB,UAAW,yBAAsB,IAC1CsB,EAAQpB,IACJ+G,yBACD3F,IAEL4F,aCptBE3V,IAAgB,aAAc,QAAS,aAAc,OAAQ,OAAQ,aAAc,QAAS,cAC5F7D,GAAiB,kBACjBsC,GAAkB,mBAClBE,GAAmB,kBACnBK,IAAiB,mBACjB+B,GAAyB,oBACzBnF,IAAsB,QAAS,OAAQ,OAAQ,SAG/CyD,GAAgB,EAChBG,GAAiB,EACjBC,GAAY,EACZC,GAAY,EACZrB,GAAiB,EACjBE,GAAiB,EAMjBxD,GAAc,KACdE,GAAS,KACTE,GAAY,KAEZ8D,IAAU,EACV8C,GAAgB,EAChBC,IAAW,EE9BX+L,GAAwC,WACxC,GAAIC,GAAgB,SAAUpW,EAAGqW,GAI7B,OAHAD,EAAgBE,OAAOC,iBAChBC,uBAA2BhB,QAAS,SAAUxV,EAAGqW,GAAKrW,EAAEwW,UAAYH,IACvE,SAAUrW,EAAGqW,GAAK,IAAK,GAAII,KAAKJ,GAAOA,EAAEK,eAAeD,KAAIzW,EAAEyW,GAAKJ,EAAEI,MACpDzW,EAAGqW,GAE5B,OAAO,UAAUrW,EAAGqW,GAEhB,QAASM,KAAOlR,KAAKmR,YAAc5W,EADnCoW,EAAcpW,EAAGqW,GAEjBrW,EAAE6W,UAAkB,OAANR,EAAaC,OAAOQ,OAAOT,IAAMM,EAAGE,UAAYR,EAAEQ,UAAW,GAAIF,QAGnFI,GAA0C,SAAUC,EAAY3Y,EAAQ4Y,EAAKC,GAC7E,GAA2HlX,GAAvHmX,EAAIC,UAAUpV,OAAQqV,EAAIF,EAAI,EAAI9Y,EAAkB,OAAT6Y,EAAgBA,EAAOZ,OAAOgB,yBAAyBjZ,EAAQ4Y,GAAOC,CACrH,IAAuB,gBAAZK,UAAoD,kBAArBA,SAAQC,SAAyBH,EAAIE,QAAQC,SAASR,EAAY3Y,EAAQ4Y,EAAKC,OACpH,KAAK,GAAIpV,GAAIkV,EAAWhV,OAAS,EAAGF,GAAK,EAAGA,KAAS9B,EAAIgX,EAAWlV,MAAIuV,GAAKF,EAAI,EAAInX,EAAEqX,GAAKF,EAAI,EAAInX,EAAE3B,EAAQ4Y,EAAKI,GAAKrX,EAAE3B,EAAQ4Y,KAASI,EAChJ,OAAOF,GAAI,GAAKE,GAAKf,OAAOmB,eAAepZ,EAAQ4Y,EAAKI,GAAIA,GAU5D2G,GAA6B,SAAUrG,GAEvC,QAASqG,KACL,MAAkB,QAAXrG,GAAmBA,EAAOhV,MAAM8C,KAAM2R,YAAc3R,KAc/D,MAhBA0Q,IAAU6H,EAAarG,GAIvBZ,IACIa,YAAS,IACVoG,EAAYnH,UAAW,aAAU,IACpCE,IACIa,cACDoG,EAAYnH,UAAW,kBAAe,IACzCE,IACIa,WAAS,WACVoG,EAAYnH,UAAW,WAAQ,IAClCE,IACI8G,WACDG,EAAYnH,UAAW,YAAS,IAC5BmH,GACTnG,iBAKEoG,GAAmC,SAAUtG,GAE7C,QAASsG,KACL,MAAkB,QAAXtG,GAAmBA,EAAOhV,MAAM8C,KAAM2R,YAAc3R,KAW/D,MAbA0Q,IAAU8H,EAAmBtG,GAI7BZ,IACIa,WAAS,SACVqG,EAAkBpH,UAAW,aAAU,IAC1CE,IACIa,WAAS,MACVqG,EAAkBpH,UAAW,eAAY,IAC5CE,IACIa,WAAS,IACVqG,EAAkBpH,UAAW,YAAS,IAClCoH,GACTpG,iBAEEE,GAAO,WASPmG,GAAa,eAEbC,GAAkB,oBAKlBC,GAAa,mBAIbC,GAAyB,cACzBC,GAAgB,oBAChBC,GAAiB,iBACjBC,GAAmB,mBAuBnBC,GAAwB,SAAU9G,GASlC,QAAS8G,GAAO3T,EAASrS,GACrB,GAAIsjB,GAAQpE,EAAOtV,KAAKoD,KAAMqF,EAASrS,IAAYgN,IAEnD,OADAsW,GAAM2C,SAAU,EACT3C,EA6oDX,MAxpDA5F,IAAUsI,EAAQ9G,GAmBlB8G,EAAO5H,UAAU8C,OAAS,WACtBlU,KAAKkZ,aACLlZ,KAAKmZ,aACLnZ,KAAKX,aACc,SAAfW,KAAK9J,QACL8J,KAAKhN,QAAQQ,MAAM0C,MAAQ,IAER,KAAnB8J,KAAKhB,YACLgB,KAAKhN,QAAQQ,MAAMwL,UAAYiU,aAAWjT,KAAKhB,YAE/CgB,KAAKoZ,eACLpZ,KAAKqZ,YACiC,SAAlCrZ,KAAKsZ,kBAAkBC,QACvBvZ,KAAKwZ,gBAGbxZ,KAAKyZ,kBAETT,EAAO5H,UAAUsI,gBAAkB,WAC/B1Z,KAAK2Z,YAzDgB,eAiEzBX,EAAO5H,UAAU4E,UAAY,WACzB,GAAIM,GAAQtW,IACZA,MAAK0Z,kBACL1Z,KAAK4Z,cAAgB,KACrB5Z,KAAK6Z,gBAAiB,EACtB7Z,KAAK8Z,mBAAoB,EACzB9Z,KAAK+Z,UAAY/Z,KAAKhN,QAAQgnB,WAAU,GACxCha,KAAKia,2BAA6B,SAAUC,GACxC5D,EAAMqD,YAxEU,aAyEhBrD,EAAM1B,KAAKsF,IAEfla,KAAKma,4BAA8B,SAAUD,GACzC5D,EAAMqD,YA1EY,eA2ElBO,EAAME,cAAe,EACrB9D,EAAMtB,QAAQ,eAAgBkF,EAAO,SAAUG,GACtCA,EAAsBD,cACvB9D,EAAMgE,eAEVhE,EAAMqD,YAnFO,gBAsFrB,IAAIY,IAAeC,MAAO,QAG1B,IAFAxa,KAAKya,KAAO,GAAIC,QAAK,SAAUH,EAAYva,KAAK2a,QAChD3a,KAAK4a,oBACDtnB,oBAAkB0M,KAAKpH,QAAS,CAChC,GAAIiiB,GAAe7a,KAAK8a,mBACxB9a,MAAK8a,qBAAsB,EAC3B9a,KAAKpH,OAASsC,SAASvF,KACvBqK,KAAK8a,oBAAsBD,IAGnC7B,EAAO5H,UAAU2J,kBAAoB,WAC7B/a,KAAKgb,mBACLhb,KAAK2U,eAAgBze,MAAO+L,WAAWjC,KAAKhN,QAAQQ,MAAM0C,OAAQJ,OAAQmM,WAAWjC,KAAKhN,QAAQQ,MAAMsC,QACpGrC,UAAY8C,EAAG0L,WAAWjC,KAAKib,QAAQjoB,QAAQQ,MAAML,MAAOqD,EAAGyL,WAAWjC,KAAKib,QAAQjoB,QAAQQ,MAAMJ,QAAU,IAG3H4lB,EAAO5H,UAAU8J,cAAgB,SAAUrmB,GAEvC,MADe,mBAAmB8G,KAAK9G,IAG3CmkB,EAAO5H,UAAUwJ,kBAAoB,WACjC,IAAKtnB,oBAAkB0M,KAAKvM,UAAW,CACnC,IAAKH,oBAAkB0M,KAAKvM,SAAS8C,IAAoC,gBAArByJ,MAAKvM,aACjD0nB,EAAWnb,KAAKkb,cAAclb,KAAKvM,SAAS8C,IAClC,CACNskB,EAAe7a,KAAK8a,mBACxB9a,MAAK8a,qBAAsB,EAC3B9a,KAAKvM,SAAS8C,EAAI0L,WAAWjC,KAAKvM,SAAS8C,GAC3CyJ,KAAK8a,oBAAsBD,EAGnC,IAAKvnB,oBAAkB0M,KAAKvM,SAAS+C,IAAoC,gBAArBwJ,MAAKvM,WAA2B,CAChF,GAAI0nB,GAAWnb,KAAKkb,cAAclb,KAAKvM,SAAS+C,EAChD,IAAI2kB,EAAU,CACV,GAAIN,GAAe7a,KAAK8a,mBACxB9a,MAAK8a,qBAAsB,EAC3B9a,KAAKvM,SAAS+C,EAAIyL,WAAWjC,KAAKvM,SAAS+C,GAC3CwJ,KAAK8a,oBAAsBD,MAK3C7B,EAAO5H,UAAUgK,OAAS,SAAUC,EAAMC,GAEtC,IAAK,GADDtoB,OAAUqB,GACLgI,EAAI,EAAGA,EAAIgf,EAAK9e,OAAQF,IAC7B,GAAIgf,EAAKhf,GAAGrG,UAAUC,SAASqlB,GAAW,CACtCtoB,EAAUqoB,EAAKhf,EACf,OAGR,MAAOrJ,IAGXgmB,EAAO5H,UAAUoI,aAAe,WAC5B,GAAI+B,GAAuB,MACvBC,EAAuB,KACtBloB,qBAAkB0M,KAAKhN,QAAQ8M,cAAc,4BAC9Cyb,EAAuBjiB,iBAAiB0G,KAAK4Z,eAAe9jB,OAEhE,IAAI2lB,GAAYzb,KAAKob,OAAOpb,KAAKhN,QAAQsJ,SAzKxB,mBA0KZhJ,qBAAkBmoB,KACnBD,EAAuBliB,iBAAiBmiB,GAAW3lB,OAEvD,IAAI4lB,GAAe/X,SAAS4X,EAAqB5e,MAAM,EAAG4e,EAAqB/c,QAAQ,MAAO,IAC1Fmd,EAAehY,SAAS6X,EAAqB7e,MAAM,EAAG6e,EAAqBhd,QAAQ,MAAO,GAE9F,OADAoG,IAAa8W,EAAe,IAAME,MAAMD,GAAgB,EAAIA,IACpDD,EAAe,GAAKC,GAEhC3C,EAAO5H,UAAUyK,cAAgB,SAAUpe,EAAMqe,GAE7C,MADAA,GAAU9G,QAAQ,cAAevX,GAC1BA,EAAKse,QAEhB/C,EAAO5H,UAAU4K,WAAa,SAAUve,EAAMqe,GAC1CA,EAAU9G,QAAQ,WAAYvX,IAElCub,EAAO5H,UAAU6K,iBAAmB,SAAUxe,EAAMqe,GAChDA,EAAU9G,QAAQ,aAAcvX,GAChCuC,KAAK+a,qBAET/B,EAAO5H,UAAUiI,UAAY,WACzB,GAAIrZ,KAAKoZ,aAAc,CACnB,GAAIpZ,KAAKkc,yBAA2B5oB,oBAAkB0M,KAAKhN,QAAQ8M,cAAc,6BAC7E,MAEJE,MAAKhN,QAAQgD,UAAUqK,IA9Kf,kBAkLR,KAAK,GAHD8b,GAAiB7iB,iBAAiB0G,KAAKhN,SAASgM,UAChDod,EAAgB9iB,iBAAiB0G,KAAKhN,SAASiM,SAC/CZ,EAAY,GACPhC,EAAI,EAAGA,EAAI2D,KAAKqc,cAAc9f,OAAQF,IAAK,CAChD,GAA8B,QAA1B2D,KAAKqc,cAAchgB,GAAc,CACjCgC,EAAY,mEACZ,OAGA,GAAIie,GAAiB,EACrB,QAAQtc,KAAKqc,cAAchgB,GAAGuH,YAC1B,IAAK,YACD0Y,EAAiB,YACjB,MACJ,KAAK,YACDA,EAAiB,YACjB,MACJ,KAAK,YACDA,EAAiB,YACjB,MACJ,KAAK,YACDA,EAAiB,YACjB,MACJ,SACIA,EAAiBtc,KAAKqc,cAAchgB,GAAGuH,WAG/CvF,GAAaie,EAAeC,oBAAsB,IAGtDvc,KAAKkW,WAAkC,eAArB7X,EAAUK,OAC5BL,EAAY,aAEP2B,KAAKkW,WAAkC,eAArB7X,EAAUK,SACjCL,EAAY,cAEZ2B,KAAKwc,SAAWxc,KAAKkW,UACrBlW,KAAKhN,QAAQgD,UAAUqK,IAnNT,mBAqNTL,KAAKwc,SAAWxc,KAAKpH,SAAWsC,SAASvF,MAC9CqK,KAAKhN,QAAQgD,UAAUqK,IArNR,qBAuNnB7C,GACIxK,QAASgN,KAAKhN,QACdqL,UAAWA,EACXW,UAAW2E,SAASwY,EAAexf,MAAM,EAAGyf,EAAc5d,QAAQ,MAAO,IACzEW,UAAWa,KAAKqB,UAAUG,aAC1BvC,SAAU0E,SAASyY,EAAczf,MAAM,EAAGyf,EAAc5d,QAAQ,MAAO,IACvEU,SAAUc,KAAKqB,UAAUE,YACzBpD,SAAU6B,KAAKpH,SAAWsC,SAASvF,KAAO,KAAOqK,KAAKqB,UACtD1D,YAAaqC,KAAK6b,cAAcrQ,KAAKxL,MACrCjC,eAAgBiC,KAAKic,iBAAiBzQ,KAAKxL,MAC3CnC,SAAUmC,KAAKgc,WAAWxQ,KAAKxL,MAC/BZ,MAAOY,OAEXA,KAAKyc,4BAGLzX,MACAhF,KAAK0c,0BACD1c,KAAKwc,QACLxc,KAAKhN,QAAQgD,UAAU+L,OA3OT,mBA8Od/B,KAAKhN,QAAQgD,UAAU+L,OA7OR,qBA+OnB/B,KAAKhN,QAAQgD,UAAU+L,OAjPf,oBAoPhBiX,EAAO5H,UAAUuL,gBAAkB,SAAU/jB,GACzC,GACIgkB,GAAQhkB,EAAOsH,iBADP,6EAEZ,QAASlN,QAAS4pB,EAAMA,EAAMrgB,OAAS,KAG3Cyc,EAAO5H,UAAUyL,QAAU,SAAU3C,GACjC,GAAI5D,GAAQtW,IACZ,IAAsB,IAAlBka,EAAM4C,SACF9c,KAAKwc,QAAS,CACd,GAAIO,OAAY,EACXzpB,qBAAkB0M,KAAKgd,UACxBD,EAAY/c,KAAKgd,OAAOhd,KAAKgd,OAAOzgB,OAAS,IAE5CjJ,oBAAkB0M,KAAKgd,UAAc1pB,oBAAkB0M,KAAKid,sBAC7DF,EAAY/c,KAAK2c,gBAAgB3c,KAAKid,qBAEtC3pB,oBAAkB0M,KAAKgd,SAAW1pB,oBAAkB0M,KAAKid,sBAAwB3pB,oBAAkB0M,KAAKkd,cACxGH,EAAY/c,KAAK2c,gBAAgB3c,KAAKkd,aAErC5pB,oBAAkBypB,IAAc7hB,SAASiiB,gBAAkBJ,EAAU/pB,SAAYknB,EAAMkD,WACxFlD,EAAMnZ,iBACNf,KAAKqd,kBAAkBrd,KAAKhN,SAASsqB,SAErCpiB,SAASiiB,gBAAkBnd,KAAKqd,kBAAkBrd,KAAKhN,UAAYknB,EAAMkD,WACzElD,EAAMnZ,iBACDzN,oBAAkBypB,IACnBA,EAAU/pB,QAAQsqB,SAKlC,GAAItqB,GAAUkI,SAASiiB,cACnBI,GAAc,QAAS,YAAY/e,QAAQxL,EAAQyI,QAAQ9G,gBAAkB,EAC7E6oB,GAAgB,CAIpB,IAHKD,IACDC,EAAgBxqB,EAAQyqB,aAAa,oBAAkE,SAA5CzqB,EAAQmY,aAAa,oBAE9D,KAAlB+O,EAAM4C,SAAkB9c,KAAK0d,cAAe,CAC5C1d,KAAK2Z,YArRO,QAsRZ,IAAIgE,GAAQziB,SAAS4E,cAAc,iCAE5BxM,oBAAkBqqB,IAAWA,EAAM3nB,UAAUC,SAAS,mBACzD+J,KAAK4U,KAAKsF,GAGlB,GAAuB,KAAlBA,EAAM4C,UAAmB5C,EAAM0D,SAA6C,aAAlC5qB,EAAQyI,QAAQ9G,eAC3D4oB,IAAcjqB,oBAAkB0M,KAAK6d,mBAClB,KAAlB3D,EAAM4C,SAAkB5C,EAAM0D,UAA8C,aAAlC5qB,EAAQyI,QAAQ9G,eACvD6oB,KAAoBlqB,oBAAkB0M,KAAK6d,kBAAmB,CAClE,GAAIC,EACe9d,MAAK+d,QAAQC,KAAK,SAAU/lB,EAAMgE,GACjD6hB,EAAgB7hB,CAChB,IAAIgiB,GAAchmB,EAAKgmB,WACvB,QAAQ3qB,oBAAkB2qB,KAA0C,IAA1BA,EAAYC,aAES,kBAAvCle,MAAK+d,QAAQD,UACrCvS,WAAW,WACP+K,EAAMyH,QAAQD,GAAeK,MAAMvhB,KAAK0Z,EAAO4D,OAW/DlB,EAAO5H,UAAU8H,WAAa,WACrB5lB,oBAAkB0M,KAAKpH,UACxBoH,KAAKqB,UAAsC,gBAAjBrB,MAAKpH,OAC3BsC,SAAS4E,cAAcE,KAAKpH,QAAUoH,KAAKpH,QAE9CoH,KAAKkc,wBACNpE,YAAU9X,KAAKhN,SAAUsf,IAEzB9R,UAAQ4T,UACR0D,YAAU9X,KAAKhN,SA3Ud,YA6UAgN,KAAKkc,wBACNlc,KAAKoe,cAETpe,KAAK+E,gBAQTiU,EAAO5H,UAAU+H,WAAa,WAC1B,GAAI7C,GAAQtW,IA8CZ,IA7CAA,KAAKqe,eAAgB,EAChBre,KAAKkc,wBACNoC,aAAWte,KAAKhN,SAAWurB,KAAM,WAEjB,MAAhBve,KAAKkT,QACLlT,KAAKwe,UAAUxe,KAAKhN,SAAS,GAC7BgN,KAAKye,iBAAkB,GAGvBze,KAAKye,iBAAkB,EAEvBze,KAAKkc,wBAA0B5oB,oBAAkB0M,KAAK4Z,iBACtD5Z,KAAK4Z,cAAgB5Z,KAAKhN,QAAQyY,uBAAuB,wBAAwB,IAEjFzL,KAAKkc,wBAA0B5oB,oBAAkB0M,KAAKkd,cACtDld,KAAKkd,WAAald,KAAKhN,QAAQ8M,cAAc,IAAME,KAAKhN,QAAQkY,GAAK,oBAEpElL,KAAKkc,yBACNlc,KAAK0e,mBACe,KAAhB1e,KAAK2e,QAAkBrrB,oBAAkB0M,KAAK2e,SAC9C3e,KAAK4e,YAET5e,KAAK6e,kBACL7e,KAAKqT,aACuB,KAAxBrT,KAAK8e,gBAA0BxrB,oBAAkB0M,KAAK8e,gBAGhDxrB,oBAAkB0M,KAAK+d,QAAQ,GAAGE,cACxCje,KAAK+e,YAHL/e,KAAKgf,qBAMThf,KAAKkc,yBACA5oB,oBAAkB0M,KAAK+d,QAAQ,GAAGE,cAAwC,KAAxBje,KAAK8e,gBACxD9e,KAAK+e,aAGT/e,KAAKif,gBAAmB3rB,oBAAkB0M,KAAK4Z,gBAC/C5Z,KAAKkf,mBAEJlf,KAAKkc,yBACNoC,aAAWte,KAAKhN,SAAWmsB,aAAenf,KAAKwc,QAAU,OAAS,UAC9Dxc,KAAKwc,SACLxc,KAAKof,cAGTpf,KAAKkc,wBAA0B5oB,oBAAkB0M,KAAKqf,cAAe,CACrErf,KAAKqf,aAAerf,KAAKhN,QAAQc,aACjC,KAAK,GAAIuI,GAAI,EAAGK,EAAasD,KAAKqf,aAAa/iB,SAAUD,EAAIK,EAAWH,OAAQF,IACxEK,EAAWL,GAAGrG,UAAUC,SAAS,mBACjC+J,KAAKsf,WAAa5iB,EAAWL,IAIzC,IAAwD,IAApD2D,KAAKhN,QAAQgD,UAAUC,SAAS6iB,MAAkF,IAAtD9Y,KAAKhN,QAAQgD,UAAUC,SAAS8iB,MACxFzlB,oBAAkB0M,KAAKhN,QAAQc,eAAgB,CACnD,GAAIyrB,GAAYvf,KAAKwc,QAAUxc,KAAKqf,aAAavrB,cAAgBkM,KAAKhN,QAAQc,aAC9EkM,MAAKwf,WAAaxf,KAAKpB,cAAc,OAASC,UAtYpC,sBAuYV0gB,EAAUzV,aAAa9J,KAAKwf,WAAaxf,KAAKwc,QAAUxc,KAAKqf,aAAerf,KAAKhN,SA6DrF,GA3DKM,oBAAkB0M,KAAKqB,aACpBrB,KAAKwc,QACLxc,KAAKqB,UAAUtC,YAAYiB,KAAKqf,cAGhCrf,KAAKqB,UAAUtC,YAAYiB,KAAKhN,UAGxCgN,KAAKyf,SAAW,GAAI/M,IAAM1S,KAAKhN,SAC3B8C,OAAQkK,KAAKlK,OACbI,MAAO8J,KAAK9J,MACZgd,OAAQlT,KAAKkT,OACbc,SAAUhU,KAAKpH,OACf0a,eAAgB,OAChB4C,UAAWlW,KAAKkW,UAEhBwJ,KAAM,SAAUxF,GACZ,GAAIyF,IACA3Z,UAAWsQ,EAAMkG,QAAUlG,EAAM+I,aAAe/I,EAAMtjB,QACtDA,QAASsjB,EAAMtjB,QACf4F,OAAQ0d,EAAM1d,OACdwhB,cAAc,EAEd9D,GAAM8C,cACN9C,EAAMsJ,kBAEVtJ,EAAMtB,QAAQ,OAAQ2K,EAAW,SAAUE,GAClCA,EAAczF,cACf9D,EAAMgE,kBAKlBE,MAAO,SAAUN,GACT5D,EAAMkG,SACN1E,YAAUxB,EAAMgJ,YAAa,UAEjChJ,EAAMwJ,YAAYxJ,EAAMtjB,SACpBsjB,EAAMkG,UACNlG,EAAM+I,aAAa7rB,MAAM+F,QAAU,QAEvC+c,EAAMtB,QAAQ,QAASsB,EAAMyJ,UAC7B,IAAIC,GAAY9kB,SAASiiB,aACpB7pB,qBAAkB0sB,IAAe1sB,oBAAkB,EAAY2sB,OAChED,EAAUC,OAET3sB,oBAAkBgjB,EAAM4J,qBAAwB5sB,oBAAkBgjB,EAAM4J,mBAAmB5C,QAC5FhH,EAAM4J,mBAAmB5C,WAIrCtd,KAAKmgB,iBACLngB,KAAKogB,eACApgB,KAAKkc,yBACNpE,YAAU9X,KAAKhN,SAxcZ,iBAycCgN,KAAKwc,SACLxc,KAAKqgB,oBAGTrgB,KAAKsgB,SAEL,GADAtgB,KAAKsX,OACDtX,KAAKwc,QAAS,CACd,GAAIzF,GAAa/W,KAAKugB,mBAAmBvgB,KAAKpH,OAC1Cme,aAAsByJ,UAE8B,QADhCnnB,OAAOC,iBAAiByd,GAC1B5a,iBAAiB,cAC/B6D,KAAKygB,wBAMbzgB,MAAKwc,UACLxc,KAAKsf,WAAW9rB,MAAM+F,QAAU,OAGxCyG,MAAKqe,eAAgB,GAEzBrF,EAAO5H,UAAUmP,mBAAqB,SAAUG,GAC5C,GAAI1iB,GAAgB,IACpB,IAA2B,gBAAhB0iB,GACP,GAAIA,EAAYC,WAAW,KACvB3iB,EAAgB9C,SAAS0lB,eAAeF,EAAYG,UAAU,QAE7D,IAAIH,EAAYC,WAAW,KAAM,CAClC,GAAItjB,GAAWnC,SAASuQ,uBAAuBiV,EAAYG,UAAU,GACrE7iB,GAAgBX,EAASd,OAAS,EAAIc,EAAS,GAAK,SAG9CqjB,aAAuBI,cAAgBJ,IAAgBxlB,SAASvF,OAClEqI,EAAgB9C,SAAS4E,cAAc4gB,QAI1CA,aAAuBI,eAC5B9iB,EAAgB0iB,EAEpB,OAAO1iB,IAEXgb,EAAO5H,UAAUwO,gBAAkB,WAC/B,GAAImB,GAAkB/gB,KAAKwZ,cAC3B,IAAIxZ,KAAKqB,UAAUmC,aAAeud,EAAiB,CAC/C,GAAIliB,GAAYmB,KAAKkW,UAAY,eAAiB,eAC9C8K,EAAahhB,KAAKhN,QAAQ8M,cAAc,IAAMjB,EAC7CvL,qBAAkB0tB,KACnBA,EAAWxtB,MAAMqC,OAAS,IAAMkrB,EAAgBnd,WAAa,QAIzEoV,EAAO5H,UAAUiP,iBAAmB,SAAUY,GAC1C,GAAI/N,EAEAA,GADA5f,oBAAkB2tB,GACTtd,SAAS3D,KAAKhN,QAAQQ,MAAM0f,OAAQ,IAAMvP,SAAS3D,KAAKhN,QAAQQ,MAAM0f,OAAQ,IAAMlT,KAAKkT,OAGzF+N,EAEbjhB,KAAKsf,WAAW9rB,MAAM0f,QAAUA,EAAS,GAAGtP,WAC5C5D,KAAKqf,aAAa7rB,MAAM0f,OAASA,EAAOtP,YAE5CoV,EAAO5H,UAAU+O,eAAiB,WAC1BngB,KAAKwc,UACAZ,MAAM3Z,WAAWjC,KAAKvM,SAAS8C,KAAQqlB,MAAM3Z,WAAWjC,KAAKvM,SAAS+C,MAGhEolB,MAAM3Z,WAAWjC,KAAKvM,SAAS8C,KAAOqlB,MAAM3Z,WAAWjC,KAAKvM,SAAS+C,KACxEolB,MAAM3Z,WAAWjC,KAAKvM,SAAS8C,MAAQqlB,MAAM3Z,WAAWjC,KAAKvM,SAAS+C,IAC1EwJ,KAAKygB,oBAGLzgB,KAAKhN,QAAQQ,MAAMJ,IAAM,MACzB4M,KAAKhN,QAAQQ,MAAML,KAAO,MAC1B6M,KAAKqf,aAAarpB,UAAUqK,IAAI,SAAWL,KAAKvM,SAAS8C,EAAI,IAAMyJ,KAAKvM,SAAS+C,IAIrFwJ,KAAKygB,oBAGbzH,EAAO5H,UAAUqP,iBAAmB,WAChCzgB,KAAKyf,SAAS9K,eACVlhB,UACI8C,EAAGyJ,KAAKvM,SAAS8C,EAAGC,EAAGwJ,KAAKvM,SAAS+C,MAIjDwiB,EAAO5H,UAAU8N,iBAAmB,WAChC,GAAI5I,GAAQtW,IAEPA,MAAKhN,QAAQgD,UAAUC,SAzhBrB,iBA0hBH+J,KAAKib,QAAU,GAAIiG,aAAUlhB,KAAKhN,SAC9BmuB,OAAO,EACPC,cAAc,EACdC,MAAO,uBACPC,OANY,wBAOZC,UAAW,SAAUrH,GACjB5D,EAAMtB,QAAQ,YAAakF,EAAO,SAAUsH,GACpCC,cACAD,EAAcE,WAAWxH,EAAMyH,gBAI3CC,SAAU,SAAU1H,GAChB,GAAI5D,EAAMkG,QAAS,CACflG,EAAMuL,YAAa,EACdvuB,oBAAkBgjB,EAAM7iB,WACzB6iB,EAAM+I,aAAarpB,UAAU+L,OAAO,SAAWuU,EAAM7iB,SAAS8C,EAAI,IAAM+f,EAAM7iB,SAAS+C,EAG3F,IAAIugB,GAAaT,EAAMiK,mBAAmBjK,EAAM1d,OAC5Cme,aAAsByJ,UAE8B,QADhCnnB,OAAOC,iBAAiByd,GAC1B5a,iBAAiB,aAC/Bma,EAAMtjB,QAAQQ,MAAMC,SAAW,WAOnC6iB,EAAMtjB,QAAQQ,MAAMC,SAAW,WAGvC6iB,EAAMtB,QAAQ,WAAYkF,GAC1B5D,EAAMtjB,QAAQgD,UAAU+L,OAnkBd,mBAokBVuU,EAAMyE,qBAEV+G,KAAM,SAAU5H,GACZ5D,EAAMtB,QAAQ,OAAQkF,MAGzB5mB,oBAAkB0M,KAAKqB,aACxBrB,KAAKib,QAAQ8G,SAAW/hB,KAAKqB,aAIzC2X,EAAO5H,UAAU2N,UAAY,WACzB,IAAK/e,KAAKkc,uBAAwB,CAC9Blc,KAAKgiB,iBACLhiB,KAAKgd,SACL,KAAS3gB,EAAI,EAAGA,EAAI2D,KAAK+d,QAAQxhB,OAAQF,IAAK,CAC1C,GAAI4lB,GAAc3uB,oBAAkB0M,KAAK+d,QAAQ1hB,GAAG2H,MACX,SAArChE,KAAK+d,QAAQ1hB,GAAG2H,KAAKrP,cACrButB,EAAMliB,KAAKpB,cAAc,UAAYC,UAAWmB,KAAKuF,SAAU/F,OAASwE,KAAMie,IAClFjiB,MAAKgiB,cAAczpB,KAAK2pB,EAAIC,WAEhCniB,KAAKgf,oBAGT,IAAK,GADDoD,GACK/lB,EAAI,EAAGK,EAAasD,KAAKhN,QAAQsJ,SAAUD,EAAIK,EAAWH,OAAQF,IACnEK,EAAWL,GAAGrG,UAAUC,SAlnBf,sBAmnBTmsB,EAAY1lB,EAAWL,GAAG6D,iBAAiB,UAGnD,KAAS7D,EAAI,EAAGA,EAAI2D,KAAK+d,QAAQxhB,OAAQF,IAChC2D,KAAKkc,yBACNlc,KAAKgd,OAAO3gB,GAAK,GAAIgmB,UAAOriB,KAAK+d,QAAQ1hB,GAAG4hB,cAE5Cje,KAAKkc,yBACLlc,KAAKid,mBAAqBjd,KAAKhN,QAAQ8M,cAAc,uBAEpDxM,oBAAkB0M,KAAKid,qBAAuBmF,EAAU7lB,OAAS,IAC3B,kBAA3ByD,MAAK+d,QAAQ1hB,UACrB+D,eAAaC,IAAI+hB,EAAU/lB,GAAI,QAAS2D,KAAK+d,QAAQ1hB,GAAG8hB,MAAOne,MAE5B,gBAA3BA,MAAK+d,QAAQ1hB,UACrB+D,eAAaC,IAAI+hB,EAAU/lB,GAAI,QAAS2D,KAAKsiB,mBAAmB9W,KAAKxL,KAAM3D,GAAI2D,OAGlFA,KAAKkc,wBAA2B5oB,oBAAkB0M,KAAKid,sBACxDjd,KAAKgd,OAAO3gB,GAAGkmB,SAASviB,KAAKid,mBAAmB3gB,SAASD,IACrD2D,KAAK+d,QAAQ1hB,GAAGmmB,QAChBxiB,KAAKgd,OAAO3gB,GAAGrJ,QAAQgD,UAAUqK,IAAI,UAEzCL,KAAK6d,iBAAmB7d,KAAKhN,QAAQyY,uBAAuB,aAAa,KAIrFuN,EAAO5H,UAAUkR,mBAAqB,SAAUrmB,GAC5C+D,KAAKgV,QAAQ,WAAa/Y,EAAQ,eAEtC+c,EAAO5H,UAAUiC,WAAa,WAC1BrT,KAAKkd,WAAald,KAAKpB,cAAc,OAASC,UAhpBpC,gBAgpB4DqM,GAAIlL,KAAKhN,QAAQkY,GAAK,oBACxFlL,KAAKyiB,UACLnE,aAAWte,KAAKhN,SAAW0vB,mBAAoB1iB,KAAKhN,QAAQkY,GAAK,UAAiBlL,KAAKhN,QAAQkY,GAAK,oBAGpGoT,aAAWte,KAAKhN,SAAW0vB,mBAAoB1iB,KAAKhN,QAAQkY,GAAK,oBAEjElL,KAAK2iB,oBACL3iB,KAAKkd,WAAWne,YAAYiB,KAAK2iB,sBAE3BrvB,oBAAkB0M,KAAK+T,UAA6B,KAAjB/T,KAAK+T,UAAmB/T,KAAKqe,iBACxC,gBAAlBre,eAA+ByhB,eAGlCzhB,KAAK+T,kBAAmB+M,aAC7B9gB,KAAKkd,WAAWne,YAAYiB,KAAK+T,SAHjC/T,KAAK4iB,YAAY5iB,KAAK+T,QAAS/T,KAAKkd,WAAY,YASnD5pB,oBAAkB0M,KAAK4Z,eAIxB5Z,KAAKhN,QAAQ8W,aAAa9J,KAAKkd,WAAYld,KAAKhN,QAAQsJ,SAAS,IAHjE0D,KAAKhN,QAAQ8W,aAAa9J,KAAKkd,WAAYld,KAAKhN,QAAQsJ,SAAS,IAKjD,SAAhB0D,KAAKlK,SACAkK,KAAKkc,yBAA0B1b,UAAQsP,MAAqC,KAA7B9P,KAAKhN,QAAQQ,MAAM0C,OAAiB5C,oBAAkB0M,KAAK9J,SAC3G8J,KAAKhN,QAAQQ,MAAM0C,MAAQ+c,aAAWjT,KAAK9J,QAE/C8J,KAAK+E,iBAGbiU,EAAO5H,UAAUwR,YAAc,SAAUvc,EAAUwc,EAAWC,GAC1D,GAAIC,GACAC,CAEAA,GADAH,EAAU7sB,UAAUC,SAxrBf,gBAyrBW+J,KAAKhN,QAAQkY,GAAK,SAE7B2X,EAAU7sB,UAAUC,SA1rBZ,oBA2rBG+J,KAAKhN,QAAQkY,GAAK,iBAGlBlL,KAAKhN,QAAQkY,GAAK,SAEtC,IAAI+X,EACC3vB,qBAAkB+S,EAAS8b,YAGF,gBAAb9b,IAA+C,gBAAbA,IAA2Bob,eAAezhB,KAAKkjB,oBACrE,gBAAb7c,KACRA,EAAWrG,KAAKmjB,eAAe9c,IAE/BrG,KAAKojB,OAA6B,gBAAb/c,IACrB0c,EAAaM,UAAQhd,GACrB4c,EAAgB5c,GAGhBwc,EAAU1b,UAAYd,GAX1Bwc,EAAU9jB,YAAYsH,EAc1B,IAAIid,KACJ,KAAKhwB,oBAAkByvB,GAAa,CAIhC,IAAK,GAAIjQ,GAAK,EAAGjN,EAAKkd,KAAe/iB,KAAM8iB,EAAME,IAHjCvB,eACXzhB,KAAKkjB,kBAA+D,IAA3C,EAAgB1kB,QAAQ,iBAClDwB,KAAKkjB,kBACkEpQ,EAAKjN,EAAGtJ,OAAQuW,IAAM,CAC7F,GAAI9I,GAAOnE,EAAGiN,EACdwQ,GAAa/qB,KAAKyR,GAEtBuZ,YAAU5mB,MAAMC,KAAK0mB,GAAeT,KAQ5C7J,EAAO5H,UAAU+R,eAAiB,SAAUtuB,GACxC,GAAImL,KAAKwjB,oBAAqB,CAC1B,GAAIC,GAAaC,qBAAmBC,iBAChCC,GACA7H,QAAQ,EACR8H,OAAQ,KAEZC,UAAOL,EAAYA,EAAYG,GAC/B5jB,KAAKgV,QAAQ,qBAAsByO,GAC/BA,EAAW1H,SAAWzoB,oBAAkBmwB,EAAWI,QACnDhvB,EAAQ4uB,EAAWI,OAAOhvB,GAEpB4uB,EAAW1H,SACjBlnB,EAAQ6uB,qBAAmBK,eAAeN,EAAY5uB,IAG9D,MAAOA,IAEXmkB,EAAO5H,UAAUrM,aAAe,WAC5B,GAAK/E,KAAK6Z,eAAV,CAGA,GAAItgB,GAAUyG,KAAKhN,QAAQQ,MAAM+F,OACjCyG,MAAKhN,QAAQQ,MAAM+F,QAAU,OAC7ByG,KAAKhN,QAAQQ,MAAM2L,WAAc7L,oBAAkB0M,KAAKpH,SAAaoH,KAAKqB,UAAUmC,aAAenK,OAAOuB,YACrGoF,KAAKqB,UAAUmC,aAAe,GAAM,KAAQnK,OAAOuB,YAAc,GAAM,KAC5EoF,KAAKhN,QAAQQ,MAAM+F,QAAUA,EACzBiH,UAAQsP,MAAwB,SAAhB9P,KAAKlK,SAAsBxC,oBAAkB0M,KAAKkd,aAC/Dld,KAAKhN,QAAQwQ,aAAexD,KAAKkd,WAAW1Z,eAC/CxD,KAAKhN,QAAQQ,MAAMsC,OAAS,aAGpCkjB,EAAO5H,UAAUgP,aAAe,WACvBpgB,KAAKkc,yBACFlc,KAAKkW,UACL4B,YAAU9X,KAAKhN,SAvwBrB,SA0wBM6kB,eAAa7X,KAAKhN,SA1wBxB,UA6wBGM,oBAAkB0M,KAAKhN,QAAQ8M,cAAc,uBAC9CkF,KACAhF,KAAKqZ,cAGbL,EAAO5H,UAAUsN,iBAAmB,WAChC,GAAIpI,GAAQtW,IACZ,IAAI1M,oBAAkB0M,KAAK+T,UAA6B,KAAjB/T,KAAK+T,QAAgB,CACxD,GAAIiQ,GAA8E,KAAlEhkB,KAAKhN,QAAQmU,UAAUjF,QAAQ,0BAA2B,KACtElC,KAAKhN,QAAQsJ,SAASC,OAAS,GAAKynB,KACpChkB,KAAK2iB,oBAAsBznB,SAAS+oB,4BACjCtnB,MAAMC,KAAKoD,KAAKhN,QAAQ0J,YAAYwnB,QAAQ,SAAUC,GACjC,IAAhBA,EAAGC,UACH9N,EAAMqM,oBAAoB5jB,YAAYolB,QAM1DnL,EAAO5H,UAAUwN,UAAY,WACrB5e,KAAKyiB,UACLziB,KAAKyiB,UAAUtb,UAAY,GAG3BnH,KAAKyiB,UAAYziB,KAAKpB,cAAc,OAASsM,GAAIlL,KAAKhN,QAAQkY,GAAK,SAAUrM,UAnyBxE,iBAqyBTmB,KAAKqkB,sBACLrkB,KAAK4Z,cAAc7a,YAAYiB,KAAKyiB,WACpCziB,KAAK4iB,YAAY5iB,KAAK2e,OAAQ3e,KAAKyiB,UAAW,UAC9CnE,aAAWte,KAAKhN,SAAW0vB,mBAAoB1iB,KAAKhN,QAAQkY,GAAK,WACjEoT,aAAWte,KAAKhN,SAAWsxB,aAAc,WACzCtkB,KAAKhN,QAAQ8W,aAAa9J,KAAK4Z,cAAe5Z,KAAKhN,QAAQsJ,SAAS,IAChE0D,KAAKif,gBAAmB3rB,oBAAkB0M,KAAK4Z,gBAC/C5Z,KAAKkf,oBAGblG,EAAO5H,UAAU4N,kBAAoB,WAC7Bhf,KAAKid,mBACLjd,KAAKid,mBAAmB9V,UAAY,GAGpCnH,KAAKid,mBAAqBjd,KAAKpB,cAAc,OACzCC,UApzBS,qBAuzBW,KAAxBmB,KAAK8e,gBAA0BxrB,oBAAkB0M,KAAK8e,gBAItD9e,KAAKid,mBAAmB9V,UAAYnH,KAAKgiB,cAAcvS,KAAK,IAH5DzP,KAAK4iB,YAAY5iB,KAAK8e,eAAgB9e,KAAKid,mBAAoB,kBAKnEjd,KAAKhN,QAAQ+L,YAAYiB,KAAKid,qBAElCjE,EAAO5H,UAAUiT,oBAAsB,WAC/B/wB,oBAAkB0M,KAAK4Z,iBACvB5Z,KAAK4Z,cAAgB5Z,KAAKpB,cAAc,OAASsM,GAAIlL,KAAKhN,QAAQkY,GAAK,iBAAkBrM,UAn0B5E,2BAs0BrBma,EAAO5H,UAAUyN,gBAAkB,WAC3B7e,KAAKukB,gBACLvkB,KAAKwkB,UAAYxkB,KAAKpB,cAAc,UAAYC,UAzzBnC,sBAyzBkEW,OAASwE,KAAM,YAC9FhE,KAAKykB,gBAAkB,GAAIpC,WAAS9c,SAAU,SAAUmf,QAASC,6BACjE3kB,KAAK4kB,iBACAtxB,oBAAkB0M,KAAK4Z,gBAIxB5Z,KAAKqkB,sBACLQ,WAAS7kB,KAAKwkB,WAAYxkB,KAAK4Z,eAC/B5Z,KAAKhN,QAAQ8W,aAAa9J,KAAK4Z,cAAe5Z,KAAKhN,QAAQsJ,SAAS,KALpEuoB,WAAS7kB,KAAKwkB,WAAYxkB,KAAK4Z,eAOnC5Z,KAAKykB,gBAAgBlC,SAASviB,KAAKwkB,aAG3CxL,EAAO5H,UAAUwT,eAAiB,WAC9B5kB,KAAKya,KAAKqK,UAAU9kB,KAAK2a,OACzB,IAAIiK,GAAiB5kB,KAAKya,KAAKsK,YAAY,QAC3C/kB,MAAKwkB,UAAU7kB,aAAa,QAASilB,GACrC5kB,KAAKwkB,UAAU7kB,aAAa,aAAcilB,IAE9C5L,EAAO5H,UAAUgN,YAAc,SAAU4G,GACjCA,IACAnN,eAAa7X,KAAKhN,SAAUgyB,EAAY1mB,MAAM,MAC1C0B,KAAKwc,UAAYlpB,oBAAkB0M,KAAKqf,eACxCxH,eAAa7X,KAAKqf,cAAe2F,EAAY1mB,MAAM,OAGvD0B,KAAKuF,WACLuS,YAAU9X,KAAKhN,SAAUgN,KAAKuF,SAASjH,MAAM,MACzC0B,KAAKwc,UAAYlpB,oBAAkB0M,KAAKqf,eACxCvH,YAAU9X,KAAKqf,cAAerf,KAAKuF,SAASjH,MAAM,QAI9D0a,EAAO5H,UAAUgO,WAAa,WAC1Bpf,KAAKqf,aAAerf,KAAKpB,cAAc,OAASC,UAn2BpC,oBAo2BZmB,KAAKoe,cACLpe,KAAKhN,QAAQgD,UAAU+L,OA51BhB,gBA61BP/B,KAAKhN,QAAQiyB,WAAWnb,aAAa9J,KAAKqf,aAAcrf,KAAKhN,SAC7DgN,KAAKqf,aAAatgB,YAAYiB,KAAKhN,SACnC8kB,YAAU9X,KAAKhN,SA72BP,eA82BRgN,KAAKsf,WAAatf,KAAKpB,cAAc,OAASC,UA32BpC,kBA42BVmB,KAAKsf,WAAW9rB,MAAM0f,QAAUlT,KAAKkT,OAAS,GAAGtP,WACjD5D,KAAKqf,aAAatgB,YAAYiB,KAAKsf,aAEvCtG,EAAO5H,UAAU8T,kBAAoB,SAAUtI,GAE3C,IAAK,GADDuI,GACKC,EAAI,EAAGA,EAAIxI,EAAMrgB,OAAQ6oB,IAAK,CAEnC,KADAD,EAAOvI,EAAMwI,IACH5jB,aAAe,GAAqC,MAA/B2jB,EAAK1pB,QAAQ9G,eAAyBwwB,EAAK1H,aAAa,UAAa0H,EAAKE,UAAY,IAChHF,EAAKG,WAAatlB,KAAKulB,eAAeJ,EAAM,qDAC7C,MAAOA,EAGPA,GAAO,KAGf,MAAOA,IAEXnM,EAAO5H,UAAUiM,kBAAoB,SAAUtJ,GAC3C,IAAKzgB,oBAAkBygB,GAAU,CAC7B,GACI6I,GAAQ7I,EAAQ7T,iBADR,qEAEZ,OAAOF,MAAKklB,kBAAkBtI,GAElC,MAAO,OAEX5D,EAAO5H,UAAUoU,iBAAmB,SAAUxf,GAC1C,GAAImf,GAAOnf,EAAUlG,cAAc,wBAE/B8c,EAAQ5W,EAAU9F,iBADV,eAERulB,EAAYzlB,KAAKklB,kBAAkBtI,EAIvC,IAHI6E,eACAzhB,KAAK6d,iBAAmB7d,KAAKhN,QAAQyY,uBAAuB,aAAa,IAExEnY,oBAAkBmyB,GAGlB,CAED,GADAA,EAAYzlB,KAAKqd,kBAAkBrd,KAAKkd,aACnC5pB,oBAAkBmyB,GACnB,MAAON,GAAOM,CAEb,KAAKnyB,oBAAkB0M,KAAK6d,kBAC7B,MAAO7d,MAAKhN,QAAQ8M,cAAc,kBARtCqlB,GAAOM,CAWX,OAAON,IAEXnM,EAAO5H,UAAUmU,eAAiB,SAAUvyB,EAAS0yB,GACjD,GAAIC,GAAe3yB,EAAUA,EAAQ4yB,SAAW5yB,EAAQ6yB,uBAAyB7yB,EAAQ8yB,mBAAqB,IAC9G,IAAIH,EACA,KAAO3yB,EAASA,EAAUA,EAAQiyB,WAC9B,GAAIjyB,YAAmBwtB,UAAWmF,EAAa/oB,KAAK5J,EAAS0yB,GAEzD,MAAO1yB,EAInB,OAAO,OAEXgmB,EAAO5H,UAAUkJ,aAAe,WAC5B,GAAItnB,GAAUgN,KAAKwlB,iBAAiBxlB,KAAKhN,SACrCmyB,EAAQ7xB,oBAAkBN,GAAqBgN,KAAKhN,QAAfA,EACrC+yB,EAAYvlB,UAAQulB,WACpBA,EAAUvnB,QAAQ,SAAW,GAAKunB,EAAUvnB,QAAQ,YAAc,IAClEwB,KAAKhN,QAAQsqB,QAEjB6H,EAAK7H,QACLtd,KAAK8f,YAAY9f,KAAKhN,SACtBgN,KAAKgmB,UAAUhmB,KAAKhN,UAExBgmB,EAAO5H,UAAU4U,UAAY,SAAUhzB,GACnCoN,eAAaC,IAAIrN,EAAS,UAAWgN,KAAK6c,QAAS7c,OAEvDgZ,EAAO5H,UAAU0O,YAAc,SAAU9sB,GACrCoN,eAAa2B,OAAO/O,EAAS,UAAWgN,KAAK6c,UAEjD7D,EAAO5H,UAAU6U,sBAAwB,WAChCjmB,KAAKkc,yBACNlc,KAAKkd,WAAW/V,UAAYnH,KAAKmjB,eAAenjB,KAAK+T,WAG7DiF,EAAO5H,UAAU8K,qBAAuB,WACpC,MAAOuF,eAAczhB,KAAKkmB,kBAQ9BlN,EAAO5H,UAAUqC,cAAgB,WAC7B,MAAO,UAUXuF,EAAO5H,UAAUuB,kBAAoB,SAAUC,EAASC,GACpD,GAAK7S,KAAKhN,QAAQgD,UAAUC,SAASqc,IAGrC,IAAK,GAAIQ,GAAK,EAAGjN,EAAKgL,OAAOkC,KAAKH,GAAUE,EAAKjN,EAAGtJ,OAAQuW,IAExD,OADWjN,EAAGiN,IAEV,IAAK,UACIxf,oBAAkB0M,KAAK+T,UAA6B,KAAjB/T,KAAK+T,QAoCnCzgB,oBAAkB0M,KAAKkd,cAC7BhY,SAAOlF,KAAKkd,YACZld,KAAKkd,WAAa,OArCdld,KAAKkc,yBACLlc,KAAKkd,WAAald,KAAKhN,QAAQ8M,cAAc,mBAE5CxM,oBAAkB0M,KAAKkd,aAAwD,WAAzCld,KAAKkd,WAAW/R,aAAa,QA0B/DnL,KAAKkc,yBACN5oB,oBAAkB0M,KAAKhN,QAAQ8M,cAAc,oBAC7CE,KAAKqT,cA3BJrT,KAAKkc,yBACNlc,KAAKkd,WAAW/V,UAAY,IAEF,kBAAlBnH,eACRA,KAAKmmB,eAAe,YACpBjhB,SAAOlF,KAAKkd,YACZld,KAAKkd,WAAa,KAClBld,KAAKqT,cAGyB,gBAAlBrT,cACJA,KAAKkc,wBAAyD,KAA9Blc,KAAKkd,WAAWkJ,UAChDpmB,KAAKkd,WAAWmJ,mBAAmB,YAAarmB,KAAKmjB,eAAenjB,KAAK+T,UAGzE/T,KAAKimB,wBAITjmB,KAAKkd,WAAWne,YAAYiB,KAAK+T,SAGzC/T,KAAK+E,gBAab,MACJ,KAAK,SACmB,KAAhB/E,KAAK2e,QAAiBrrB,oBAAkB0M,KAAK2e,QACzC3e,KAAKyiB,YACLvd,SAAOlF,KAAKyiB,WACZziB,KAAKyiB,UAAY,MAIhBziB,KAAKkc,yBACN5oB,oBAAkB0M,KAAKhN,QAAQ8M,cAAc,2BAC7CE,KAAK4e,WAGb,MACJ,KAAK,iBACD,GAA4B,KAAxB5e,KAAK8e,gBAAyBxrB,oBAAkB0M,KAAK8e,gBAAiB,CACtE,IAAK9e,KAAKid,mBACN,MAEJ/X,UAAOlF,KAAKid,oBACZjd,KAAKid,mBAAqB,KAC1Bjd,KAAK+d,iBAGA/d,MAAKkc,yBACN5oB,oBAAkB0M,KAAKhN,QAAQ8M,cAAc,uBAC7CE,KAAKgf,oBAEThf,KAAK+d,YAET,MACJ,KAAK,gBACG/d,KAAKhN,QAAQyY,uBAniChB,oBAmiCuDlP,OAAS,EACxDyD,KAAKukB,eAAkC,KAAhBvkB,KAAK2e,SAAiBrrB,oBAAkB0M,KAAK2e,QAI/D3e,KAAKukB,cAIPvkB,KAAKkc,wBACLlc,KAAKX,aAJT6F,SAAOlF,KAAKwkB,YAJZtf,SAAOlF,KAAK4Z,eACZ5Z,KAAK4Z,cAAgB,OAYpB5Z,KAAKkc,wBACNlc,KAAK6e,kBAET7e,KAAKX,aAET,MACJ,KAAK,SACGW,KAAKukB,eACLvkB,KAAK4kB,gBAET,MACJ,KAAK,UACG5kB,KAAKsgB,QACLtgB,KAAKsX,OAGLtX,KAAK4U,MAET,MACJ,KAAK,UACD5U,KAAKsmB,eACL,MACJ,KAAK,SACDtT,oBAAkBhT,KAAKhN,SAAW8C,OAAUmd,aAAWL,EAAQ9c,UAC/DkK,KAAK+a,mBACL,MACJ,KAAK,QACD/H,oBAAkBhT,KAAKhN,SAAWkD,MAAS+c,aAAWL,EAAQ1c,SAC9D8J,KAAK+a,mBACL,MACJ,KAAK,SACD/a,KAAKyf,SAASvM,OAASlT,KAAKkT,OACxBlT,KAAKwc,SACLxc,KAAKqgB,iBAAiBrgB,KAAKkT,QAE3BlT,KAAKhN,QAAQQ,MAAM0f,SAAWlT,KAAKkT,OAAOtP,aAC1C5D,KAAKye,iBAAkB,EAE3B,MACJ,KAAK,WACDze,KAAKoe,YAAYvL,EAAQtN,SACzB,MACJ,KAAK,UACD,GAAIghB,GAAcvmB,KAAK+d,QAAQxhB,MAC1BjJ,qBAAkB0M,KAAKid,qBAAwBjd,KAAKkc,yBACrDhX,SAAOlF,KAAKid,oBACZjd,KAAKid,mBAAqB,KAE9B,KAAK,GAAI5gB,GAAI,EAAGA,EAAIkqB,EAAalqB,IACxB/I,oBAAkB0M,KAAK+d,QAAQ1hB,GAAG4hB,eACnCje,KAAK8e,eAAiB,GACtB9e,KAAK+e,YAGb,MAEJ,KAAK,gBACG/e,KAAKif,gBAAmB3rB,oBAAkB0M,KAAK4Z,eAC/C5Z,KAAKkf,mBAGLlf,KAAKib,QAAQ9f,SAEjB,MACJ,KAAK,SACD6E,KAAKwmB,UAAU5T,EAAQha,OACvB,MACJ,KAAK,WAED,GADAoH,KAAK4a,oBACD5a,KAAKwc,QAAS,CACd,GAAIvoB,GAAY+L,KAAKvM,SAAS8C,EAC1BrC,EAAY8L,KAAKvM,SAAS+C,CACzBlD,qBAAkBuf,EAAQpf,YACtBH,oBAAkBuf,EAAQpf,SAAS8C,KACpCtC,EAAY4e,EAAQpf,SAAS8C,GAE5BjD,oBAAkBuf,EAAQpf,SAAS+C,KACpCtC,EAAY2e,EAAQpf,SAAS+C,IAGjCwJ,KAAKqf,aAAarpB,UAAUC,SAAS,SAAWhC,EAAY,IAAMC,IAClE8L,KAAKqf,aAAarpB,UAAU+L,OAAO,SAAW9N,EAAY,IAAMC,GAGxE8L,KAAKmgB,iBACLngB,KAAK+a,mBACL,MACJ,KAAK,YACD/a,KAAKogB,cACL,MACJ,KAAK,eACDpgB,KAAKqZ,WACL,MACJ,KAAK,YACsB,KAAnBrZ,KAAKhB,YACLgB,KAAKhN,QAAQQ,MAAMwL,UAAYiU,aAAWjT,KAAKhB,cAMnEga,EAAO5H,UAAUoV,UAAY,SAAU5tB,GACnCoH,KAAKyf,SAASzL,SAAWpb,EACzBoH,KAAKpH,OAASA,EACdoH,KAAKqB,UAAsC,gBAAjBrB,MAAKpH,OAC3BsC,SAAS4E,cAAcE,KAAKpH,QAAUoH,KAAKpH,OAC3CoH,KAAKib,UACLjb,KAAKib,QAAQ8G,SAAW/hB,KAAKqB,WAEjCrB,KAAK+E,eACD/E,KAAKwc,SACLxc,KAAKsmB,gBAELtmB,KAAKoZ,cACLpZ,KAAKqZ,aAGbL,EAAO5H,UAAUkV,cAAgB,WAE7B,GADAtmB,KAAKhN,QAAQ2M,aAAa,aAAcK,KAAKwc,QAAU,OAAS,SAC5Dxc,KAAKwc,QACDlpB,oBAAkB0M,KAAKsf,cACvBtf,KAAKof,aACLpf,KAAKhN,QAAQQ,MAAMJ,IAAM,MACzB4M,KAAKhN,QAAQQ,MAAML,KAAO,MACrBG,oBAAkB0M,KAAKqB,YACxBrB,KAAKqB,UAAUtC,YAAYiB,KAAKqf,mBAIvC,CAID,IAHAxH,eAAa7X,KAAKhN,SAtrCd,eAurCJ6kB,eAAa3c,SAASvF,OAAQ8iB,GAAYC,KAC1CxT,SAAOlF,KAAKsf,YACLtf,KAAKqf,aAAatV,YACrB/J,KAAKqf,aAAavrB,cAAcgW,aAAa9J,KAAKqf,aAAatV,WAAY/J,KAAKqf,aAEpFrf,MAAKqf,aAAavrB,cAAcyV,YAAYvJ,KAAKqf,cAEjDrf,KAAKsgB,SACLtgB,KAAKsX,OAETtX,KAAKmgB,iBACDngB,KAAKwc,SAAWxc,KAAKsf,YACrBlf,eAAaC,IAAIL,KAAKsf,WAAY,QAAStf,KAAKma,4BAA6Bna,OAGrFgZ,EAAO5H,UAAUoN,UAAY,SAAU7G,EAAe8O,GAClD,GAAI5L,GAAe7a,KAAK8a,mBACxB9a,MAAK8a,qBAAsB,CAC3B,IAAI4L,GAAgB3qB,EAAiB4b,EACrC3X,MAAKkT,OAASwT,EAAgB1mB,KAAKkT,OAASwT,EAAgB1mB,KAAKkT,OACjElT,KAAK8a,oBAAsBD,EACvB4L,IACAzmB,KAAKyf,SAASvM,OAASlT,KAAKkT,SAGpC8F,EAAO5H,UAAUuV,oBAAsB,WACnC7hB,GAAY9E,KAAKqB,UAAUE,aAC3BwD,GAAa/E,KAAKqB,UAAUG,cAC5BxB,KAAK+E,gBAQTiU,EAAO5H,UAAUwC,eAAiB,WAC9B,MAAO5T,MAAK6T,cAAc,QAAS,SAAU,cAEjDmF,EAAO5H,UAAUwV,kBAAoB,SAAU5zB,GAC3C,KAAOA,EAAQsJ,SAAS,IACpB0D,KAAK4mB,kBAAkB5zB,EAAQsJ,SAAS,IACxCtJ,EAAQuW,YAAYvW,EAAQsJ,SAAS,KAQ7C0c,EAAO5H,UAAUjW,QAAU,WACvB,IAAI6E,KAAK+X,YAAT,CAGA,GAAI8O,IAjvCF,QAIM,cAmBI,kBACU,kBAytCoDlO,GAnuCrE,YAouCDnZ,GAAS,OAAQ,aAAc,kBAAmB,mBAAoB,eAAgB,WAAY,QAStG,IARAqY,eAAa7X,KAAKqB,YAAaoX,GAAYC,MACtCplB,oBAAkB0M,KAAKhN,UAAYgN,KAAKhN,QAAQgD,UAAUC,SAAS0iB,KACpEd,eAAa3c,SAASvF,OAAQ8iB,GAAYC,KAE1C1Y,KAAKwc,SACL3E,eAAevkB,oBAAkB0M,KAAKqB,WAA8BnG,SAASvF,KAA1BqK,KAAKqB,WAA6BqX,IAEzF1Y,KAAK8mB,gBACAxzB,oBAAkB0M,KAAKgd,QACxB,IAAS3gB,EAAI,EAAGA,EAAI2D,KAAKgd,OAAOzgB,OAAQF,IACpC2D,KAAKgd,OAAO3gB,GAAGlB,SA6BvB,IA1BK7H,oBAAkB0M,KAAKykB,kBACxBzkB,KAAKykB,gBAAgBtpB,UAEpB7H,oBAAkB0M,KAAKib,UACxBjb,KAAKib,QAAQ9f,WAEZ7H,oBAAkB0M,KAAKyf,SAASzsB,UAAYgN,KAAKyf,SAASzsB,QAAQgD,UAAUC,SAzvCxE,YA0vCL+J,KAAKyf,SAAStkB,UAElB0c,eAAa7X,KAAKhN,SAAU6zB,GACvBvzB,oBAAkB0M,KAAKuF,WAA+B,KAAlBvF,KAAKuF,UAC1CsS,eAAa7X,KAAKhN,SAAUgN,KAAKuF,SAASjH,MAAM,MAE/ChL,oBAAkB0M,KAAKwf,aAAgBlsB,oBAAkB0M,KAAKwf,WAAW1rB,iBAC1EkM,KAAKwf,WAAW1rB,cAAcgW,aAAc9J,KAAKwc,QAAUxc,KAAKqf,aAAerf,KAAKhN,QAAUgN,KAAKwf,YACnGta,SAAOlF,KAAKwf,YACZxf,KAAKwf,eAAanrB,IAElB2L,KAAKwc,UAAYxc,KAAKkc,yBACtBhX,SAAOlF,KAAKsf,YACZtf,KAAKqf,aAAa4F,WAAWnb,aAAa9J,KAAKhN,QAASgN,KAAKqf,cAC7Dna,SAAOlF,KAAKqf,eAEXrf,KAAKkc,yBACNlc,KAAKhN,QAAQmU,UAAYnH,KAAK+Z,UAAU5S,WAExCnH,KAAKkc,yBACA5oB,oBAAkB0M,KAAKhN,QAAQsJ,UAChC,IAASD,EAAI,EAAGA,GAAK2D,KAAKhN,QAAQsJ,SAASC,OAAQF,IAC/CA,GAAQA,EACR6I,SAAOlF,KAAKhN,QAAQsJ,SAASD,GAIzC,KAAK,GAAIA,GAAI,EAAGA,EAAImD,EAAMjD,OAAQF,IAC9B2D,KAAKhN,QAAQ+zB,gBAAgBvnB,EAAMnD,GAEvC2D,MAAKid,mBAAqB,KAC1Bjd,KAAK4Z,cAAgB,KAChB5Z,KAAKgnB,SAAYhnB,KAAKojB,OAAU9vB,oBAAkB0M,KAAKkd,aACxDld,KAAK4mB,kBAAkB5mB,KAAKkd,YAEhCld,KAAKkd,WAAa,KACbld,KAAKkc,uBAINlc,KAAK+X,aAAc,EAHnB7F,EAAOd,UAAUjW,QAAQyB,KAAKoD,MAM9BA,KAAKgnB,SACLhnB,KAAKmmB,kBAGbnN,EAAO5H,UAAUqL,sBAAwB,WACrCzc,KAAKinB,yBAA2BjnB,KAAK2mB,oBAAoBnb,KAAKxL,MAC9D3G,OAAO6tB,iBAAiB,SAAUlnB,KAAKinB,2BAE3CjO,EAAO5H,UAAUsL,wBAA0B,WACvCrjB,OAAO8tB,oBAAoB,SAAUnnB,KAAKinB,0BAC1CjnB,KAAKinB,yBAA2B,MAQpCjO,EAAO5H,UAAU/R,WAAa,WACtBW,KAAKkc,wBAA0Blc,KAAKukB,gBACpCvkB,KAAKwkB,UAAYxkB,KAAKhN,QAAQyY,uBAAuB,uBAAuB,IAE5EzL,KAAKukB,eACLnkB,eAAaC,IAAIL,KAAKwkB,UAAW,QAASxkB,KAAKia,2BAA4Bja,MAE3EA,KAAKwc,SAAWxc,KAAKsf,YACrBlf,eAAaC,IAAIL,KAAKsf,WAAY,QAAStf,KAAKma,4BAA6Bna,OASrFgZ,EAAO5H,UAAU0V,aAAe,WAO5B,GANI9mB,KAAKukB,eACLnkB,eAAa2B,OAAO/B,KAAKwkB,UAAW,QAASxkB,KAAKia,4BAElDja,KAAKwc,SACLpc,eAAa2B,OAAO/B,KAAKsf,WAAY,QAAStf,KAAKma,6BAEnDna,KAAK+d,QAAQxhB,OAAS,IAAMjJ,oBAAkB0M,KAAK+d,QAAQ,GAAGE,cAAwC,KAAxBje,KAAK8e,eACnF,IAAK,GAAIziB,GAAI,EAAGA,EAAI2D,KAAK+d,QAAQxhB,OAAQF,IACE,kBAA3B2D,MAAK+d,QAAQ1hB,UACrB+D,eAAa2B,OAAO/B,KAAKid,mBAAmB3gB,SAASD,GAAI,QAAS2D,KAAK+d,QAAQ1hB,GAAG8hB,QAUlGnF,EAAO5H,UAAUgC,gBAAkB,WAC/BpT,KAAKyf,SAASrM,kBACVpT,KAAKhN,QAAQgD,UAAUC,SAv2CnB,gBAw2CJ+J,KAAKmgB,kBASbnH,EAAO5H,UAAUgW,aAAe,WAG5B,OAASlxB,MAFS8J,KAAKhN,QAAQqR,YAEFvO,OADVkK,KAAKhN,QAAQwQ,eAUpCwV,EAAO5H,UAAUkG,KAAO,SAAU+P,GAC9B,GAAI/Q,GAAQtW,IACZ,IAAKA,KAAKhN,QAAQgD,UAAUC,SAASqc,IAArC,CAGA,IAAKtS,KAAKhN,QAAQgD,UAAUC,SAp3CrB,kBAo3C6C3C,oBAAkB+zB,GAAgB,CAC7E/zB,oBAAkB+zB,IACnBrnB,KAAKsnB,WAAWD,EAEpB,IAAIE,GAAc9F,cACd1F,QAAQ,EACR/oB,QAASgN,KAAKhN,QACdgT,UAAWhG,KAAKwc,QAAUxc,KAAKqf,aAAerf,KAAKhN,QACnDmM,UAAWa,KAAKhN,QAAQQ,MAAM2L,YAE9B4c,QAAQ,EACR/oB,QAASgN,KAAKhN,QACdgT,UAAWhG,KAAKwc,QAAUxc,KAAKqf,aAAerf,KAAKhN,QACnD4F,OAAQoH,KAAKpH,OACbuG,UAAWa,KAAKhN,QAAQQ,MAAM2L,UAElCa,MAAKgV,QAAQ,aAAcuS,EAAa,SAAUC,GAC9C,IAAKA,EAAezL,OAAQ,CACpBzF,EAAMtjB,QAAQQ,MAAM2L,YAAcooB,EAAYpoB,YAC9CmX,EAAMuD,gBAAiB,EACvBvD,EAAMtjB,QAAQQ,MAAM2L,UAAYooB,EAAYpoB,WAE5CmX,EAAM8C,cAAkD,MAAlC9C,EAAM2Q,2BAAqC3Q,EAAM+H,eACvE/H,EAAMmG,wBAEVnG,EAAM4J,mBAAqBhlB,SAASiiB,cACpC7G,EAAMtjB,QAAQqyB,UAAY,EACtB/O,EAAMkG,UAAalpB,oBAAkBgjB,EAAMgJ,cAC3ChJ,EAAMgJ,WAAW9rB,MAAM+F,QAAU,QACjC+c,EAAM+I,aAAa7rB,MAAM+F,QAAU,OACnCse,eAAavB,EAAMgJ,YAAa,UAC3BhsB,oBAAkBgjB,EAAMjV,WAwBzByW,YAAU5c,SAASvF,OAAQ8iB,GAAYC,MAvBnCpC,EAAMjV,YAAcnG,SAASvF,KAC7B2gB,EAAM+I,aAAa7rB,MAAMC,SAAW,QAGpC6iB,EAAM+I,aAAa7rB,MAAMC,SAAW,WAExC6iB,EAAMgJ,WAAW9rB,MAAMC,SAAW,YAC9BsjB,EAAaT,EAAMiK,mBAAmBjK,EAAM1d,kBACtB4nB,UAE8B,SADhDiH,EAAgBpuB,OAAOC,iBAAiByd,IAC1B5a,iBAAiB,aAC/Bma,EAAMtjB,QAAQQ,MAAMC,SAAW,WAOnC6iB,EAAMtjB,QAAQQ,MAAMC,SAAW,WAEnCqkB,YAAUxB,EAAMjV,YAAaoX,GAAYC,MAMjD,IAAIgP,IACAhnB,KAA0C,SAAnC4V,EAAMgD,kBAAkBC,QAAuC,WAAlBoO,gBAA8B,SAAgBrR,EAAMgD,kBAAkBC,OAAS,KACnIhM,SAAU+I,EAAMgD,kBAAkB/L,SAClCqa,MAAOtR,EAAMgD,kBAAkBsO,OAE/BjQ,EAAiBrB,UAAiBA,EAAMtjB,QAAQc,cAAgBwiB,EAAMtjB,OAU1E,IATIsjB,EAAMmI,kBACNnI,EAAMkI,UAAU7G,GAAe,GAC/B3E,oBAAkBsD,EAAMtjB,SAAWkgB,OAAUoD,EAAMpD,SAC/CoD,EAAMkG,SACNlG,EAAM+J,iBAAiB/J,EAAMpD,SAID,SAAnCoD,EAAMgD,kBAAkBC,QAAuC,WAAlBoO,gBAA8BrR,EAAMmJ,SAASnI,KAAKoQ,GAAsD,SAAnCpR,EAAMgD,kBAAkBC,OAAqBjD,EAAMmJ,SAASnI,OAAShB,EAAMmJ,SAASnI,KAAKoQ,GACxMpR,EAAMkG,QAAS,CACf,GAAIzF,GAAaT,EAAMiK,mBAAmBjK,EAAM1d,OAChD,IAAIme,YAAsByJ,SAAS,CAC/B,GAAIiH,GAAgBpuB,OAAOC,iBAAiByd,EACQ,SAAhD0Q,EAActrB,iBAAiB,cAA2Bma,EAAMuL,YAChEvL,EAAMmK,oBAIlBnK,EAAMuR,YAAa,CACnB,IAAIhN,GAAevE,EAAMwE,mBACzBxE,GAAMwE,qBAAsB,EAC5BxE,EAAMgK,SAAU,EAChBhK,EAAMwD,mBAAoB,EAC1BxD,EAAMwE,oBAAsBD,KAKpC7a,KAAKgnB,SACLhnB,KAAK8nB,yBASb9O,EAAO5H,UAAUwD,KAAO,SAAUsF,GAC9B,GAAI5D,GAAQtW,IACZ,IAAKA,KAAKhN,QAAQgD,UAAUC,SAASqc,KAGjCtS,KAAK8Z,kBAAmB,CACxB,GAAI6F,GAAY8B,cACZ1F,QAAQ,EACRgM,eAAc7N,EACdlnB,QAASgN,KAAKhN,QACdgT,UAAWhG,KAAKwc,QAAUxc,KAAKqf,aAAerf,KAAKhN,QACnDknB,MAAOA,IAEP6B,QAAQ,EACRgM,eAAc7N,EACdlnB,QAASgN,KAAKhN,QACd4F,OAAQoH,KAAKpH,OACboN,UAAWhG,KAAKwc,QAAUxc,KAAKqf,aAAerf,KAAKhN,QACnDknB,MAAOA,EACP8N,SAAUhoB,KAAK2Z,YAEnB3Z,MAAK+f,UAAYJ,EACjB3f,KAAKgV,QAAQ,cAAe2K,EAAW,SAAUsI,GAC7C,IAAKA,EAAgBlM,OAAQ,CACrBzF,EAAMkG,UACDlpB,oBAAkBgjB,EAAMjV,YACzBwW,eAAavB,EAAMjV,YAAaoX,GAAYC,MAGhDpC,EAAM8C,cACN9C,EAAMoG,0BAENxhB,SAASvF,KAAKK,UAAUC,SAASwiB,KACjCvd,SAASvF,KAAKK,UAAUC,SAASyiB,KACjCb,eAAa3c,SAASvF,OAAQ8iB,GAAYC,IAE9C,IAAIwP,IACAxnB,KAA0C,SAAnC4V,EAAMgD,kBAAkBC,QAAuC,WAAlBoO,gBAA8B,UAAiBrR,EAAMgD,kBAAkBC,OAAS,MACpIhM,SAAU+I,EAAMgD,kBAAkB/L,SAClCqa,MAAOtR,EAAMgD,kBAAkBsO,MAEI,UAAnCtR,EAAMgD,kBAAkBC,QAAuC,WAAlBoO,gBAC7CrR,EAAMmJ,SAAS7K,KAAKsT,GAEoB,SAAnC5R,EAAMgD,kBAAkBC,OAC7BjD,EAAMmJ,SAAS7K,OAGf0B,EAAMmJ,SAAS7K,KAAKsT,GAExB5R,EAAMuR,YAAa,CACnB,IAAIhN,GAAevE,EAAMwE,mBACzBxE,GAAMwE,qBAAsB,EAC5BxE,EAAMgK,SAAU,EAChBhK,EAAMwD,mBAAoB,EAC1BxD,EAAMwE,oBAAsBD,EAEhCvE,EAAMqD,YA1gDO,kBAqhDzBX,EAAO5H,UAAUkW,WAAa,SAAU7pB,GAE1BuC,KAAKhN,QAAQW,UACZqM,KAAKhN,QAAQU,UAExB,IAAI+J,EAAM,CACDuC,KAAKwc,UACNxc,KAAKhN,QAAQQ,MAAMJ,IAAM8H,SAASitB,iBAAiBt0B,UAAY,MAEnEikB,YAAU9X,KAAKhN,SAAU2lB,GACzB,IAAIpf,GAAUyG,KAAKhN,QAAQQ,MAAM+F,OACjCyG,MAAKhN,QAAQQ,MAAM+F,QAAU,OAC7ByG,KAAKhN,QAAQQ,MAAM2L,UAAc7L,oBAAkB0M,KAAKpH,QACZS,mBAAsB,KAA7D2G,KAAKqB,uBAA0B,KACpCrB,KAAKhN,QAAQQ,MAAM+F,QAAUA,EAC7Bue,YAAU5c,SAASvF,OAAQ8iB,GAAYC,KACnC1Y,KAAKif,gBAAkB3rB,oBAAkB0M,KAAKib,UAC9Cjb,KAAKib,QAAQ9f,cAIjB0c,gBAAa7X,KAAKhN,SAAU2lB,IAC5Bd,eAAa3c,SAASvF,OAAQ8iB,GAAYC,KACtC1Y,KAAKif,gBAAmB3rB,oBAAkB0M,KAAK4Z,gBAC/C5Z,KAAKkf,kBAGb,OAAOzhB,IASXub,EAAO5H,UAAUgX,WAAa,SAAUnsB,GACpC,MAAK3I,qBAAkB2I,GAGhB+D,KAAKgd,OAFDhd,KAAKgd,OAAO/gB,IAI3BqV,IACIa,WAAS,KACV6G,EAAO5H,UAAW,cAAW,IAChCE,IACIa,YAAS,IACV6G,EAAO5H,UAAW,0BAAuB,IAC5CE,IACIa,YAAS,IACV6G,EAAO5H,UAAW,wBAAqB,IAC1CE,IACIa,YAAS,IACV6G,EAAO5H,UAAW,oBAAiB,IACtCE,IACIa,YAAS,IACV6G,EAAO5H,UAAW,cAAW,IAChCE,IACIa,WAAS,KACV6G,EAAO5H,UAAW,aAAU,IAC/BE,IACIa,YAAS,IACV6G,EAAO5H,UAAW,cAAW,IAChCE,IACIa,YAAS,IACV6G,EAAO5H,UAAW,mBAAgB,IACrCE,IACIa,YAAU,gBACX6G,EAAO5H,UAAW,oBAAiB,IACtCE,IACIa,WAAS,SACV6G,EAAO5H,UAAW,aAAU,IAC/BE,IACIa,WAAS,KACV6G,EAAO5H,UAAW,gBAAa,IAClCE,IACIa,WAAS,SACV6G,EAAO5H,UAAW,YAAS,IAC9BE,IACIa,WAAS,KACV6G,EAAO5H,UAAW,eAAY,IACjCE,IACIa,WAAS,MACV6G,EAAO5H,UAAW,aAAU,IAC/BE,IACIa,WAAS,OACV6G,EAAO5H,UAAW,aAAU,IAC/BE,IACIa,WAAS,KACV6G,EAAO5H,UAAW,qBAAkB,IACvCE,IACIa,YAAS,IACV6G,EAAO5H,UAAW,oBAAiB,IACtCE,IACI+W,kBAAiB9P,KAClBS,EAAO5H,UAAW,cAAW,IAChCE,IACIa,YAAS,IACV6G,EAAO5H,UAAW,oBAAiB,IACtCE,IACI6G,aAAYK,KACbQ,EAAO5H,UAAW,wBAAqB,IAC1CE,IACI6G,WAAU5hB,EAAG,SAAUC,EAAG,UAAYyb,KACvC+G,EAAO5H,UAAW,eAAY,IACjCE,IACI8G,WACDY,EAAO5H,UAAW,cAAW,IAChCE,IACI8G,WACDY,EAAO5H,UAAW,WAAQ,IAC7BE,IACI8G,WACDY,EAAO5H,UAAW,yBAAsB,IAC3CE,IACI8G,WACDY,EAAO5H,UAAW,iBAAc,IACnCE,IACI8G,WACDY,EAAO5H,UAAW,YAAS,IAC9BE,IACI8G,WACDY,EAAO5H,UAAW,kBAAe,IACpCE,IACI8G,WACDY,EAAO5H,UAAW,gBAAa,IAClCE,IACI8G,WACDY,EAAO5H,UAAW,eAAY,IACjCE,IACI8G,WACDY,EAAO5H,UAAW,WAAQ,IAC7BE,IACI8G,WACDY,EAAO5H,UAAW,mBAAgB,IACrCE,IACI8G,WACDY,EAAO5H,UAAW,kBAAe,IACpCE,IACI8G,WACDY,EAAO5H,UAAW,eAAY,IACjCE,IACI8G,WACDY,EAAO5H,UAAW,iBAAc,IACnCE,IACI8G,WACDY,EAAO5H,UAAW,gBAAa,IAClC4H,EAAS1H,IACL+G,yBACDW,IAELV,cAOF,SAAWgQ,GAcP,QAASC,GAAM9qB,GACX,GAAI+qB,GAAgB5pB,gBAAc,OAASC,UAAaia,IACxD5d,UAASvF,KAAKoJ,YAAYypB,EAC1B,IAAIC,GACAC,IACIzK,aAAeC,WAAW,EAAMnK,QAAS,MACzCoK,MAAO,WACHne,KAAK4U,SAyBjB,OArBI6T,GADkB,mBACDE,GAAe5U,QAAStW,EACrChK,UAAY8C,EAAG,SAAUC,EAAG,OAC5BgmB,SAAS,EAAMmC,OAAQ/F,GACvBmF,QAAS2K,GAAiBF,GAGbG,EAAaC,EAAanrB,GAAO+qB,GAEtDC,EAAejO,MAAQ,WACf/c,GAAQA,EAAK+c,OACb/c,EAAK+c,MAAMtd,MAAMurB,GAErBA,EAAettB,UACXstB,EAAez1B,QAAQgD,UAAUC,SAAS,gBAC1CwyB,EAAez1B,QAAQc,cAAciO,SACrC0mB,EAAe7vB,OAAO5C,UAAU+L,OAAO8W,KAGvC4P,EAAez1B,QAAQ+O,UAGxB0mB,EAgBX,QAASI,GAAQprB,GACb,GAAI+qB,GAAgB5pB,gBAAc,OAASC,UAAaka,IACxD7d,UAASvF,KAAKoJ,YAAYypB,EAC1B,IAAIM,GACAC,IACI9K,aAAeC,WAAW,EAAMnK,QAAS,MACzCoK,MAAO,WACHne,KAAK4U,UAGTqJ,aAAelK,QAAS,UACxBoK,MAAO,WACHne,KAAK4U,SAwBjB,OApBIkU,GADkB,mBACCH,GAAel1B,UAAY8C,EAAG,SAAUC,EAAG,OAASud,QAAStW,EAAM+e,SAAS,EAC3FmC,OAAQ/F,GAAwBmF,QAASgL,GAC1CP,GAGgBG,EAAaK,EAAevrB,GAAO+qB,GAE1DM,EAAiBtO,MAAQ,WACjB/c,GAAQA,EAAK+c,OACb/c,EAAK+c,MAAMtd,MAAM4rB,GAErBA,EAAiB3tB,UACb2tB,EAAiB91B,QAAQgD,UAAUC,SAAS,gBAC5C6yB,EAAiB91B,QAAQc,cAAciO,SACvC+mB,EAAiBlwB,OAAO5C,UAAU+L,OAAO8W,KAGzCiQ,EAAiB91B,QAAQ+O,UAG1B+mB,EAIX,QAASH,GAAatjB,EAASrS,GAC3B,GAAIi2B,GAAe,GAAIjQ,IAAO3T,EAE9B,OADA4jB,GAAa1G,SAASvvB,GACfi2B,EAGX,QAASL,GAAaM,GAClB,GAAI7jB,KAIJ,OAHAA,GAAQ0Y,WACR1Y,EAAU8jB,EAAY9jB,EAAS6jB,GAC/B7jB,EAAU+jB,EAAoB/jB,EAAS6jB,GAI3C,QAASF,GAAeE,GACpB,GAAI7jB,KAIJ,OAHAA,GAAQ0Y,WACR1Y,EAAU8jB,EAAY9jB,EAAS6jB,GAC/B7jB,EAAUgkB,EAAsBhkB,EAAS6jB,GAI7C,QAASC,GAAY9jB,EAAS6jB,GAe1B,MAdA7jB,GAAQsZ,OAAUrrB,oBAAkB41B,EAAOI,OAAwB,KAAfJ,EAAOI,MAC3DjkB,EAAQ0O,QAAWzgB,oBAAkB41B,EAAOnV,SAA4B,GAAjBmV,EAAOnV,QAC9D1O,EAAQmX,UAAWlpB,oBAAkB41B,EAAO1M,UAAW0M,EAAO1M,QAC9DnX,EAAQkf,eAAiBjxB,oBAAkB41B,EAAO3E,gBAAiB2E,EAAO3E,cAC1Elf,EAAQ4Z,eAAiB3rB,oBAAkB41B,EAAOK,cAAeL,EAAOK,YACxElkB,EAAQqY,eAAiBpqB,oBAAkB41B,EAAOxL,gBAAiBwL,EAAOxL,cAC1ErY,EAAQ5R,SAAYH,oBAAkB41B,EAAOz1B,WAAgC8C,EAAG,SAAUC,EAAG,OAApC0yB,EAAOz1B,SAChE4R,EAAQiU,kBAAqBhmB,oBAAkB41B,EAAO5P,oBAChDC,OAAQ,OAAQhM,SAAU,IAAKqa,MAAO,GAD+BsB,EAAO5P,kBAElFjU,EAAQE,SAAYjS,oBAAkB41B,EAAO3jB,UAA8B,GAAlB2jB,EAAO3jB,SAChEF,EAAQ6N,OAAU5f,oBAAkB41B,EAAOhW,QAA0B,IAAhBgW,EAAOhW,OAC5D7N,EAAQqa,KAAQpsB,oBAAkB41B,EAAOxJ,MAAsB,KAAdwJ,EAAOxJ,KACxDra,EAAQnP,MAAS5C,oBAAkB41B,EAAOhzB,OAAwB,OAAfgzB,EAAOhzB,MAC1DmP,EAAQvP,OAAUxC,oBAAkB41B,EAAOpzB,QAA0B,OAAhBozB,EAAOpzB,OACrDuP,EAGX,QAAS+jB,GAAoB/jB,EAAS6jB,GAClC,GAAIM,KACIvL,aAAeC,WAAW,EAAMnK,QAAS,MACzCoK,MAAO,WACHne,KAAK4U,SASjB,OANKthB,qBAAkB41B,EAAOO,UAI1BpkB,EAAQ0Y,QAAUyL,EAHlBnkB,EAAQ0Y,QAAQ,GAAK2L,EAAgBrkB,EAAQ0Y,QAAQ,GAAImL,EAAOO,SAAUD,EAAiB,IAKxFnkB,EAGX,QAASgkB,GAAsBhkB,EAAS6jB,GACpC,GAAIR,IACAzK,aAAeC,WAAW,EAAMnK,QAAS,MACzCoK,MAAO,WACHne,KAAK4U,SAGT+U,GACA1L,aAAelK,QAAS,UACxBoK,MAAO,WACHne,KAAK4U,QAeb,OAZKthB,qBAAkB41B,EAAOO,UAI1BpkB,EAAQ0Y,QAAQ,GAAK2K,EAHrBrjB,EAAQ0Y,QAAQ,GAAK2L,EAAgBrkB,EAAQ0Y,QAAQ,GAAImL,EAAOO,SAAUf,GAKzEp1B,oBAAkB41B,EAAOU,cAI1BvkB,EAAQ0Y,QAAQ,GAAK4L,EAHrBtkB,EAAQ0Y,QAAQ,GAAK2L,EAAgBrkB,EAAQ0Y,QAAQ,GAAImL,EAAOU,aAAcD,GAK3EtkB,EAGX,QAASqkB,GAAgBzL,EAAaiL,EAAQW,GAC1C,GAAIC,GAAcD,CAgBlB,OAfKv2B,qBAAkB41B,EAAOa,QAC1BD,EAAY7L,YAAYlK,QAAUmV,EAAOa,MAExCz2B,oBAAkB41B,EAAOc,QAC1BF,EAAY7L,YAAYyG,QAAUwE,EAAOc,MAExC12B,oBAAkB41B,EAAO3jB,YAC1BukB,EAAY7L,YAAY1Y,SAAW2jB,EAAO3jB,UAEzCjS,oBAAkB41B,EAAO/K,SAC1B2L,EAAY3L,MAAQ+K,EAAO/K,OAE1B7qB,oBAAkB41B,EAAO1G,UAC1BsH,EAAYtH,OAAS0G,EAAO1G,QAEzBsH,EA3JXxB,EAAcC,MAAQA,EAoDtBD,EAAcO,QAAUA,GAyGzBP,kBAAkBA,oBC/9DrB,IAAI5X,IAAwC,WACxC,GAAIC,GAAgB,SAAUpW,EAAGqW,GAI7B,OAHAD,EAAgBE,OAAOC,iBAChBC,uBAA2BhB,QAAS,SAAUxV,EAAGqW,GAAKrW,EAAEwW,UAAYH,IACvE,SAAUrW,EAAGqW,GAAK,IAAK,GAAII,KAAKJ,GAAOA,EAAEK,eAAeD,KAAIzW,EAAEyW,GAAKJ,EAAEI,MACpDzW,EAAGqW,GAE5B,OAAO,UAAUrW,EAAGqW,GAEhB,QAASM,KAAOlR,KAAKmR,YAAc5W,EADnCoW,EAAcpW,EAAGqW,GAEjBrW,EAAE6W,UAAkB,OAANR,EAAaC,OAAOQ,OAAOT,IAAMM,EAAGE,UAAYR,EAAEQ,UAAW,GAAIF,QAGnFI,GAA0C,SAAUC,EAAY3Y,EAAQ4Y,EAAKC,GAC7E,GAA2HlX,GAAvHmX,EAAIC,UAAUpV,OAAQqV,EAAIF,EAAI,EAAI9Y,EAAkB,OAAT6Y,EAAgBA,EAAOZ,OAAOgB,yBAAyBjZ,EAAQ4Y,GAAOC,CACrH,IAAuB,gBAAZK,UAAoD,kBAArBA,SAAQC,SAAyBH,EAAIE,QAAQC,SAASR,EAAY3Y,EAAQ4Y,EAAKC,OACpH,KAAK,GAAIpV,GAAIkV,EAAWhV,OAAS,EAAGF,GAAK,EAAGA,KAAS9B,EAAIgX,EAAWlV,MAAIuV,GAAKF,EAAI,EAAInX,EAAEqX,GAAKF,EAAI,EAAInX,EAAE3B,EAAQ4Y,EAAKI,GAAKrX,EAAE3B,EAAQ4Y,KAASI,EAChJ,OAAOF,GAAI,GAAKE,GAAKf,OAAOmB,eAAepZ,EAAQ4Y,EAAKI,GAAIA,GAoC5DoG,GAA2B,SAAU9F,GAErC,QAAS8F,KACL,MAAkB,QAAX9F,GAAmBA,EAAOhV,MAAM8C,KAAM2R,YAAc3R,KAQ/D,MAVA0Q,IAAUsH,EAAW9F,GAIrBZ,IACIa,YAAWoH,OAAQ,SAAUhM,SAAU,IAAKqa,MAAO,KACpD5P,EAAU5G,UAAW,WAAQ,IAChCE,IACIa,YAAWoH,OAAQ,UAAWhM,SAAU,IAAKqa,MAAO,KACrD5P,EAAU5G,UAAW,YAAS,IAC1B4G,GACT5F,iBAcE6X,GAAyB,SAAU/X,GASnC,QAAS+X,GAAQ5kB,EAASrS,GACtB,GAAIsjB,GAAQpE,EAAOtV,KAAKoD,KAAMqF,EAASrS,IAAYgN,IAKnD,OAJAsW,GAAM4T,eAAiB,KACvB5T,EAAM6T,gBAAkB,KACxB7T,EAAMpY,iBAAmB,KACzBoY,EAAM8T,iBAAkB,EACjB9T,EAk0CX,MAh1CA5F,IAAUuZ,EAAS/X,GAgBnB+X,EAAQ7Y,UAAU8H,WAAa,WAC3BlZ,KAAKqqB,iBACLvS,YAAU9X,KAAKhN,SAjEZ,cAmEPi3B,EAAQ7Y,UAAUiZ,eAAiB,WAC/B,GAAIxkB,GAAIykB,CACHtqB,MAAKvM,WAE2B,IAAjCuM,KAAKvM,SAAS+K,QAAQ,QAAoD,IAApCwB,KAAKvM,SAAS+K,QAAQ,WAC5DqH,EAAK7F,KAAKvM,SAAS6K,MAAM,aAAc0B,KAAKuqB,iBAAmB1kB,EAAG,GAAI7F,KAAKwqB,iBAAmB3kB,EAAG,KAGjGykB,EAAKtqB,KAAKvM,SAAS6K,MAAM,aAAc0B,KAAKwqB,iBAAmBF,EAAG,GAAItqB,KAAKuqB,iBAAmBD,EAAG,MAGzGL,EAAQ7Y,UAAUqZ,YAAc,WAC5BzqB,KAAK0qB,YAAY1qB,KAAKvM,SACtB,IAAIk3B,GAAM3qB,KAAKpB,cAAc,OAASC,UAAW+rB,eAAkB5qB,KAAK6qB,UACxEF,GAAI5rB,YAAYiB,KAAKpB,cAAc,OAASC,UAAWisB,qBAAwB9qB,KAAK6qB,YACpFF,EAAI5rB,YAAYiB,KAAKpB,cAAc,OAASC,UAAWksB,qBAAwB/qB,KAAK6qB,YACpF7qB,KAAKgrB,WAAWjsB,YAAY4rB,IAEhCV,EAAQ7Y,UAAUsZ,YAAc,SAAUj3B,GACJ,IAA9BA,EAAS+K,QAAQ,SACjBwB,KAAK6qB,SA3EF,aA6EiC,IAA/Bp3B,EAAS+K,QAAQ,UACtBwB,KAAK6qB,SA/EH,YAiFgC,IAA7Bp3B,EAAS+K,QAAQ,QACtBwB,KAAK6qB,SAhFD,cAmFJ7qB,KAAK6qB,SAtFA,gBAyFbZ,EAAQ7Y,UAAU6Z,YAAc,SAAUryB,GACtC,GAAIsyB,GAASlrB,KAAKmrB,YAAe/3B,IAAK,EAAGD,KAAM,GAAM6M,KAAKorB,mBAAmBxyB,EAC7EoH,MAAKgrB,WAAWh1B,UAAU+L,OApFlB,SAqFR/B,KAAKyf,SAAW,GAAI/M,IAAM1S,KAAKgrB,YAC3Bl1B,OAAQkK,KAAKlK,OACbI,MAAO8J,KAAK9J,MACZzC,UAAY8C,EAAG20B,EAAO/3B,KAAMqD,EAAG00B,EAAO93B,KACtC8iB,UAAWlW,KAAKkW,UAChBwJ,KAAM1f,KAAKqrB,iBAAiB7f,KAAKxL,MACjCwa,MAAOxa,KAAKsrB,kBAAkB9f,KAAKxL,SAG3CiqB,EAAQ7Y,UAAUma,iBAAmB,SAAU3yB,GAC3C,IAAKA,EACD,OAASd,EAAG,EAAGC,EAAG,EAEtB,IAAIyzB,IAAmB1zB,EAAG,EAAGC,EAAG,GAC5B0zB,EAAwB7yB,EAAO8yB,QAAQ,8BAC3C,IAAID,GAAyBA,IAA0BzrB,KAAKgrB,YAAcS,EAAsBx1B,SAAS+J,KAAKgrB,YAAa,CACvH,GAEIW,GAFgBtyB,OAAOC,iBAAiBmyB,GACTtvB,iBAAiB,aAClByvB,MAAM,qBAAqB,GAAGttB,MAAM,KAAKutB,IAAI5pB,WAC/EupB,GAAe1zB,EAAI6zB,EAAa,GAChCH,EAAezzB,EAAI4zB,EAAa,GAEpC,MAAOH,IAEXvB,EAAQ7Y,UAAUga,mBAAqB,SAAUxyB,GAC7CoH,KAAKgrB,WAAWx3B,MAAM+F,QAAU,OAChC,IAAIuyB,GAAsB9rB,KAAKhN,QAAQ04B,QAAQ,kBAC3CI,KACKA,EAAoB71B,SAAS+J,KAAKgrB,cAEnChrB,KAAKgrB,WAAWx3B,MAAMu4B,KAAOzyB,iBAAiBwyB,GAAqBC,MAG3E,IAAIt3B,GAAMV,EAAkB6E,EAAQoH,KAAKwqB,iBAAkBxqB,KAAKuqB,kBAAmBvqB,KAAKoqB,gBAAiBpqB,KAAKoqB,gBAAkB,KAAOpqB,KAAK9B,iBAAiBhJ,yBACzJs2B,EAAiBxrB,KAAKurB,iBAAiB3yB,GACvCozB,EAAYhsB,KAAKisB,uBAAuBjsB,KAAKvM,SAAU+3B,EAAe1zB,EAAG0zB,EAAezzB,GACxFm0B,EAAoBlsB,KAAKmsB,yBAAyB13B,EAAKu3B,GACvDI,EAAgBF,EAAkB,GAClCG,EAAeH,EAAkB,GACjChB,EAASlrB,KAAKssB,iBAAiB1zB,EAAQwzB,EAAeC,EAI1D,OAHAnB,GAAO/3B,KAAO+3B,EAAO/3B,KAAOq4B,EAAe1zB,EAC3CozB,EAAO93B,IAAM83B,EAAO93B,IAAMo4B,EAAezzB,EACzCiI,KAAKgrB,WAAWx3B,MAAM+F,QAAU,GACzB2xB,GAEXjB,EAAQ7Y,UAAUmb,aAAe,WAC7BvsB,KAAKiW,WAAWjW,KAAKwsB,eAEzBvC,EAAQ7Y,UAAU6E,WAAa,SAAUrd,GACrC,GAAIoH,KAAKyf,UAAY7mB,EAAQ,CACzB,GAAIsyB,GAASlrB,KAAKorB,mBAAmBxyB,EACrCoH,MAAKyf,SAAShsB,UAAa8C,EAAG20B,EAAO/3B,KAAMqD,EAAG00B,EAAO93B,KACrD4M,KAAKyf,SAASgN,aAGtBxC,EAAQ7Y,UAAUia,iBAAmB,YAC5BrrB,KAAKmrB,YAAcnrB,KAAK0sB,0BACzB1sB,KAAKiW,WAAWjW,KAAKwsB,cAEzBxsB,KAAKgV,QAAQ,YAAahV,KAAK2sB,kBAC/B3sB,KAAK2sB,iBAAmB,MAE5B1C,EAAQ7Y,UAAUka,kBAAoB,YAE9BtrB,KAAKgnB,SAA8B,UAAjBhnB,KAAK4sB,SAAiD,kBAAlB5sB,eACtDA,KAAKmmB,eAAe,YAExBnmB,KAAK6sB,QACL7sB,KAAKgV,QAAQ,aAAchV,KAAK2sB,kBAChC3sB,KAAK2sB,iBAAmB,MAE5B1C,EAAQ7Y,UAAU6a,uBAAyB,SAAUx4B,EAAUq5B,EAAgBC,OACpD,KAAnBD,IAA6BA,EAAiB,OAC3B,KAAnBC,IAA6BA,EAAiB,EAClD,IACIC,GACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EARA94B,GAAQrB,IAAK,EAAGD,KAAM,EAS1B,IAAuB,IAAnB25B,GAA2C,IAAnBC,EAAsB,CAC9C,GAAIS,GAAiBxtB,KAAKgrB,WAAW91B,wBACjCu4B,MAAe,EACnBP,GAAkBlwB,KAAK0wB,MAAMF,EAAet3B,OAC5Ci3B,EAAmBnwB,KAAK0wB,MAAMF,EAAe13B,SAC7Cs3B,EAAWO,SAAO,eAAiB3tB,KAAKgrB,eAEpCyC,EAAeL,EAASl4B,yBAE5B83B,EAAWI,EAAWpwB,KAAK0wB,MAAMD,EAAav3B,OAAS,EACvD+2B,EAAYG,EAAWpwB,KAAK0wB,MAAMD,EAAa33B,QAAU,EACzDu3B,EAAartB,KAAK4tB,eAxMH,EACA,EAwMfN,EAAmBL,EAAY,EAtMtB,GAsM6CE,EAAoBntB,KAAKgrB,WAAWxpB,aAAeurB,GACzGQ,EAAkBP,EAAW,EAvMpB,GAuM2CE,EAAmBltB,KAAKgrB,WAAWzpB,YAAcurB,OAGrGI,GAAkBltB,KAAKgrB,WAAW3mB,YAClC8oB,EAAmBntB,KAAKgrB,WAAWxnB,aAEnCwpB,GADAI,EAAWO,SAAO,eAAiB3tB,KAAKgrB,aAClBoC,EAAS/oB,YAAc,EAC7C4oB,EAAYG,EAAWA,EAAS5pB,aAAe,EAC/C6pB,EAAartB,KAAK4tB,eAlNH,EACA,EAkNfN,EAAmBL,EAAY,EAhNtB,GAgN6CjtB,KAAKgrB,WAAWxnB,aAAexD,KAAKgrB,WAAWxpB,cACrG+rB,EAAkBP,EAAW,EAjNpB,GAiN2ChtB,KAAKgrB,WAAW3mB,YAAcrE,KAAKgrB,WAAWzpB,YAKtG,QAHIvB,KAAKmrB,aACLkC,GArNU,GAuNN55B,GACJ,IAAK,WACDgB,EAAItB,MAAQ65B,EAAWK,EACvB54B,EAAIrB,KAAO+5B,EAAmBG,CAC9B,MACJ,KAAK,cACD74B,EAAItB,MAAQ65B,EAAWK,EACvB54B,EAAIrB,KAAQ+5B,EAAmB,CAC/B,MACJ,KAAK,cACD14B,EAAItB,MAAQ65B,EAAWK,EACvB54B,EAAIrB,MACJ,MACJ,KAAK,cACDqB,EAAIrB,KAAQ65B,EAAYI,EACxB54B,EAAItB,OACJ,MACJ,KAAK,eACDsB,EAAIrB,KAAQ65B,EAAYI,EACxB54B,EAAItB,MAAS+5B,EAAkB,CAC/B,MACJ,KAAK,aACDz4B,EAAIrB,KAAQ65B,EAAYI,EACxB54B,EAAItB,MAAS+5B,EAAkBK,CAC/B,MACJ,KAAK,aACD94B,EAAItB,MAAS65B,EAAWE,EAAkBG,EAC1C54B,EAAIrB,MACJ,MACJ,KAAK,aACDqB,EAAItB,MAAS65B,EAAWE,EAAkBG,EAC1C54B,EAAIrB,KAAQ+5B,EAAmB,CAC/B,MACJ,KAAK,UACD14B,EAAItB,MAAS65B,EAAWE,EAAkBG,EAC1C54B,EAAIrB,KAAQ+5B,EAAmBG,CAC/B,MACJ,KAAK,UACD74B,EAAIrB,KAAQ+5B,EAAmBF,EAAYI,EAC3C54B,EAAItB,MAAS+5B,EAAkBK,CAC/B,MACJ,KAAK,WACD94B,EAAIrB,KAAQ+5B,EAAmBF,EAAYI,EAC3C54B,EAAItB,OACJ,MACJ,SACIsB,EAAIrB,KAAQ+5B,EAAmBF,EAAYI,EAC3C54B,EAAItB,MAAS+5B,EAAkB,EAKvC,MAFAz4B,GAAItB,MAAQ6M,KAAKnH,QACjBpE,EAAIrB,KAAO4M,KAAKlH,QACTrE,GAEXw1B,EAAQ7Y,UAAUyc,kBAAoB,SAAUp6B,GAC5C,GAAIq6B,GAASC,YAAU,qDAAmE/tB,KAAKgrB,YAC3FgD,GAnQK,eACH,YACC,aACC,cAiQRnW,eAAYiW,EAAQE,GACpBhuB,KAAK0qB,YAAYj3B,GACjBqkB,WAASgW,EAAQ9tB,KAAK6qB,WAE1BZ,EAAQ7Y,UAAU6c,YAAc,SAAUr1B,EAAQnF,EAAU+2B,EAAkBD,GAC1E,GAAI6C,GAAWO,SAAO,eAAiB3tB,KAAKgrB,WAC5C,KAA4B,IAAxBhrB,KAAK4tB,gBAAyC,OAAbR,EAArC,CAGAptB,KAAK6tB,kBAAkBp6B,EACvB,IAAIy6B,GACAC,CACJnuB,MAAKgrB,WAAWx3B,MAAM+F,QAAU,OAChC,IAAI60B,GAAepuB,KAAKgrB,WAAWzpB,YAC/B8sB,EAAgBruB,KAAKgrB,WAAWxpB,aAChC8sB,EAAgBX,SAAO,qBAAuB3tB,KAAKgrB,YACnDgC,EAAWI,EAAS/oB,YACpB4oB,EAAYG,EAAS5pB,YAEzB,IADAxD,KAAKgrB,WAAWx3B,MAAM+F,QAAU,GAtRvB,iBAuRLyG,KAAK6qB,UAtRH,cAsR8B7qB,KAAK6qB,SAvRhC,iBAwRD7qB,KAAK6qB,UACLsD,EAAW,QAEXG,EAAc96B,MAAMJ,IAAM,KAAO65B,EAAY,GAAK,OAGlDkB,IAAalB,EAAY,GAAK,KAE9BqB,EAAc96B,MAAMJ,IAAM,KAAO65B,EAAY,GAAK,MAElDr0B,IAGIs1B,GAFAK,EAAqC,WAArB/D,GAAkC4D,EAAex1B,EAAOyL,aAAgBrE,KAAKmrB,aACtD,SAArBX,IAAkC+D,GAA6C,QAA5BvuB,KAAKwuB,mBAC7DJ,EAAepB,EAhT3B,EAgTwD,KAEnDuB,GAAsC,UAArB/D,IAAmC+D,GAA6C,UAA5BvuB,KAAKwuB,mBACpEC,OAEP,GAAgD,QAA5BzuB,KAAKwuB,oBAA4D,UAA5BxuB,KAAKwuB,mBAKrDJ,EAAe,EAAMpB,EAAW,EAAM,KAJX,QAA5BhtB,KAAKwuB,mBAAkC51B,EAAOyL,aAAgBrE,KAAKgrB,WAAW3mB,YAAczL,EAAOyL,aAAe,EAAO2oB,EAAW,EAtThJ,EAsTuK,MAChKhtB,KAAKgrB,WAAW3mB,YAAczL,EAAOyL,aAAe,EAAM2oB,EAAW,EAvT5E,EAuTkG,UAO1G,CAhTG,gBAiTAhtB,KAAK6qB,UACLqD,EAAY,QAEZI,EAAc96B,MAAML,KAAO,KAAO65B,EAAW,GAAK,OAGlDkB,IAAclB,EAAW,GAAK,KAE9BsB,EAAc96B,MAAML,KAAuB65B,EAAW,IAAM,KAEhE,IAAIuB,GAAqC,WAArBhE,GAAkC8D,EAAgBz1B,EAAO4K,cAAiBxD,KAAKmrB,UAE/FgD,GADCI,GAAsC,QAArBhE,IAAiCgE,GAA6C,QAA5BvuB,KAAKwuB,mBAC7DH,EAAgBpB,EA3UvB,EA2UqD,KAEpDsB,GAAsC,WAArBhE,IAAoCgE,GAA6C,UAA5BvuB,KAAKwuB,mBACtEC,MAGEJ,EAAgB,EAAMpB,EAAY,EAAM,KAG7DG,EAAS55B,MAAMJ,IAAM+6B,EACrBf,EAAS55B,MAAML,KAAO+6B,IAE1BjE,EAAQ7Y,UAAUsd,cAAgB,SAAU91B,GACxC,GAAI+1B,GAAiBhB,SAAO,iBAAe3tB,KAAKgrB,WAQhD,IAPIhrB,KAAKuF,UACLuS,YAAU9X,KAAKgrB,YAAahrB,KAAKuF,SAASjH,MAAM,MAEhD1F,IAAWtF,oBAAkBsF,EAAOuS,aAAa,YACjDvS,EAAO+G,aAAa,eAAgB/G,EAAOuS,aAAa,UACxDvS,EAAOmuB,gBAAgB,UAEtBzzB,oBAAkB0M,KAAK+T,SAiCpBnb,IAAWtF,oBAAkBsF,EAAOuS,aAAa,mBACjDwjB,EAAexnB,UAAYvO,EAAOuS,aAAa,qBAhCnD,IADAwjB,EAAexnB,UAAY,GACvBnH,KAAK+T,kBAAmB+M,aACxB6N,EAAe5vB,YAAYiB,KAAK+T,aAE/B,IAA4B,gBAAjB/T,MAAK+T,QACb/T,KAAK4uB,UACL5uB,KAAK2U,eAAgBZ,QAAS2P,qBAAmBmL,SAAS7uB,KAAK+T,WAAY,GAG3E/T,KAAK+T,QAAW/T,yBAA4B0jB,qBAAmBmL,SAAS7uB,KAAK+T,SAAW/T,KAAK+T,QAE7F/T,KAAK8uB,iBAEDC,EADe1L,UAAQrjB,KAAK+T,YACD/T,KAAM,UAAWA,KAAKhN,QAAQkY,GAAK,cAAW7W,OAAWA,GAAWs6B,EAAgB3uB,KAAKgvB,QAEpHzL,SAAOwL,EAASJ,GAIpBA,EAA4B,YAAI3uB,KAAK+T,YAGxC,CACD,GACIgb,GADmB1L,UAAQrjB,KAAK+T,YACD/T,KAAM,UAAWA,KAAKhN,QAAQkY,GAAK,cAAW7W,OAAWA,GAAWs6B,EACnGI,IACAxL,SAAOwL,EAASJ,GAEpB3uB,KAAK8nB,yBASjBmC,EAAQ7Y,UAAUyN,gBAAkB,WAChC,IAAK7e,KAAKivB,SAAU,CAChB,GAAIC,GAAoBlvB,KAAKgrB,WAAWlrB,cAAc,2BAItD,aAHIovB,GACAntB,SAAOmtB,IAIf,GAAIC,GAAWnvB,KAAKpB,cAAc,OAASC,UAAWuwB,2BACtDpvB,MAAKgrB,WAAWjsB,YAAYowB,GAC5B/uB,eAAaC,IAAI8uB,EAAU3uB,UAAQ6uB,gBAAiBrvB,KAAKsvB,cAAetvB,OAE5EiqB,EAAQ7Y,UAAUme,eAAiB,SAAU32B,EAAQsS,GACjD,GAAIskB,IAAe52B,EAAOuS,aAAa,qBAAuB,IAAI7M,MAAM,MACpEkxB,GAAYhxB,QAAQ0M,GAAM,GAC1BskB,EAAYj3B,KAAK2S,GAErBoT,aAAW1lB,GAAU8pB,mBAAoB8M,EAAY/f,KAAK,KAAK/Q,OAAQ+wB,kBAAmBvkB,KAE9F+e,EAAQ7Y,UAAUse,kBAAoB,SAAU92B,GAC5C,GAAIsS,GAAKtS,EAAOuS,aAAa,mBACzBqkB,GAAe52B,EAAOuS,aAAa,qBAAuB,IAAI7M,MAAM,OACpErC,EAAQuzB,EAAYhxB,QAAQ0M,IACjB,IAAXjP,GACAuzB,EAAYG,OAAO1zB,EAAO,GAE9BrD,EAAOmuB,gBAAgB,kBACvB,IAAI6I,GAAiBJ,EAAY/f,KAAK,KAAK/Q,MACvCkxB,GACAh3B,EAAO+G,aAAa,mBAAoBiwB,GAGxCh3B,EAAOmuB,gBAAgB,qBAG/BkD,EAAQ7Y,UAAUye,eAAiB,SAAUC,GACzCzf,aAAarQ,KAAK+vB,gBAClB/vB,KAAKgwB,YAAYF,EAAIG,gBAEzBhG,EAAQ7Y,UAAU8e,gBAAkB,WAChC,GAAI5Z,GAAQtW,IACZ,KAAIA,KAAKivB,SAAT,CAGA,GAAIzU,GAAQ,WACRlE,EAAMkE,QAEVxa,MAAK+vB,eAAiBxkB,WAAWiP,EA1bf,QA4btByP,EAAQ7Y,UAAU+e,YAAc,SAAUrvB,GACtC,GAAIlI,EAEAA,GADAoH,KAAKpH,OACI8yB,UAAQ5qB,EAAElI,OAAQoH,KAAKpH,QAGvBoH,KAAKhN,QAEdM,oBAAkBsF,KAGyB,OAA3CA,EAAOuS,aAAa,mBACpBnL,KAAKgwB,YAAYlvB,GAEXd,KAAKivB,UACXjvB,KAAKowB,YAAYpwB,KAAKqwB,UAAU7V,MAAO1Z,EAAGlI,KAGlDqxB,EAAQ7Y,UAAU4e,YAAc,SAAUlvB,GACtC,GAAIlI,EAOJ,IALIA,EADAoH,KAAKpH,OACI8yB,UAAQ5qB,EAAElI,OAAQoH,KAAKpH,QAGvBoH,KAAKhN,UAEdM,oBAAkBsF,IAAuD,OAA3CA,EAAOuS,aAAa,oBAAmD,IAApBnL,KAAKswB,YAA1F,CAIA,IAAK,GAAIxd,GAAK,EAAGyd,KADG5zB,MAAMC,KAAKmxB,YAAU,sBAAwB/tB,KAAKwwB,OAAS,aAAct1B,WACjD4X,EAAKyd,EAAah0B,OAAQuW,IAAM,CACxE,GAAI2d,GAAWF,EAAazd,EAC5B9S,MAAK0wB,eAAeD,GAExBzwB,KAAK2wB,YAAY/3B,EAAQoH,KAAKqwB,UAAU3Q,KAAM5e,KAElDmpB,EAAQ7Y,UAAUwf,oBAAsB,SAAU9vB,GAC9Cd,KAAKkqB,eAAiBppB,GAE1BmpB,EAAQ7Y,UAAUyf,sBAAwB,WAClC7wB,KAAKmqB,iBACL/pB,eAAa2B,OAAO/B,KAAKmqB,gBAAiB,uBAAwBnqB,KAAK4wB,sBAG/E3G,EAAQ7Y,UAAUuf,YAAc,SAAU/3B,EAAQgf,EAAe9W,GAC7D,GAAIwV,GAAQtW,IACZqQ,cAAarQ,KAAK8wB,WAClBzgB,aAAarQ,KAAK+wB,WACd/wB,KAAKgxB,WAAahxB,KAAKmrB,aACvBnrB,KAAK6wB,wBACL7wB,KAAKmqB,gBAAkBvxB,EACvBwH,eAAaC,IAAIL,KAAKmqB,gBAAiB,uBAAwBnqB,KAAK4wB,oBAAqB5wB,OAE7FA,KAAK2sB,kBACD3oB,KAAMlD,EAAIA,EAAEkD,KAAO,KAAM+X,QAAQ,EAAOnjB,OAAQA,EAAQshB,MAAOpZ,GAAQ,KACvE9N,QAASgN,KAAKgrB,WAAYjD,cAAez0B,oBAAkBwN,GAE/D,IAAImwB,GAAkB,SAAUC,GAC5B5a,EAAM6a,qBAAqBD,EAAkBt4B,EAAQkI,EAAG8W,GAE5D5X,MAAKgV,QAAQ,eAAgBhV,KAAK2sB,iBAAkBsE,EAAgBzlB,KAAKxL,QAE7EiqB,EAAQ7Y,UAAU+f,qBAAuB,SAAUD,EAAkBt4B,EAAQkI,EAAG8W,GACxEsZ,EAAiBnV,QACjB/b,KAAKoxB,UAAW,EAChBpxB,KAAK6sB,QACL7sB,KAAK6wB,0BAGL7wB,KAAKoxB,UAAW,EACZ99B,oBAAkB0M,KAAKgrB,aACvBhrB,KAAKwwB,OAASxwB,KAAKhN,QAAQmY,aAAa,MACpCkmB,cAAYrxB,KAAKhN,QAAQmY,aAAa,OAASkmB,cAAY,WAC/DrxB,KAAKgrB,WAAahrB,KAAKpB,cAAc,OACjCC,UAAWyyB,+BAAmD9xB,OAC1D+e,KAAM,UAAWgT,cAAe,QAASrmB,GAAMlL,KAAKwwB,OAAS,YAC9Drc,OAAQ,SACPlB,aAAWjT,KAAK9J,OAAS,WAAa+c,aAAWjT,KAAKlK,QAAU,wBAExEkK,KAAKwxB,oBAAoB54B,EAAQoH,MACjCA,KAAKyxB,mBAAmB74B,EAAQkI,EAAG8W,EAAe5X,OAG9CpH,IACAoH,KAAKiuB,YAAYr1B,EAAQoH,KAAKvM,SAAUuM,KAAKwqB,iBAAkBxqB,KAAKuqB,kBACpEvqB,KAAKuvB,eAAe32B,EAAQoH,KAAKwwB,OAAS,YAC1CxwB,KAAK0uB,cAAc91B,GACnB84B,YAAehnB,KAAK1K,KAAKgrB,YACzBhrB,KAAKiW,WAAWrd,GAChBoH,KAAKyxB,mBAAmB74B,EAAQkI,EAAG8W,EAAe5X,SAKlEiqB,EAAQ7Y,UAAUugB,gBAAkB,SAAUC,GACb,gBAAlB5xB,MAAKgG,UACW,SAAnBhG,KAAKgG,UACLhG,KAAK9B,iBAAmBhD,SAASvF,MAGjCqK,KAAKoqB,iBAAkB,EACvBpqB,KAAK9B,iBAAmByvB,SAAO3tB,KAAKgG,UAAW9K,WAG9C8E,KAAKgG,oBAAqB8a,eAC/B9gB,KAAK9B,iBAAmB8B,KAAKgG,UAC7BhG,KAAKoqB,gBAAoD,SAAlCpqB,KAAK9B,iBAAiBzC,SAE5CuE,KAAKoqB,iBACNtS,YAAU9X,KAAK9B,kBAhhBL,6BAkhBd8B,KAAK9B,iBAAiBa,YAAY6yB,EAAQ5G,aAE9Cf,EAAQ7Y,UAAUogB,oBAAsB,SAAU54B,EAAQg5B,GAClDh5B,IACI4H,UAAQ4T,UACR0D,YAAU8Z,EAAQ5G,YAxiBrB,YA0iBqB,SAAlB4G,EAAQ17B,QACR07B,EAAQ5G,WAAWx3B,MAAM0L,SAAW+T,aAAW2e,EAAQ17B,QAE3D07B,EAAQ5G,WAAWjsB,YAAY6yB,EAAQhzB,cAAc,OAASC,UAziB5D,mBA0iBFmB,KAAK2xB,gBAAgBC,GACrB/Z,eAAa+Z,EAAQ5G,YA/hBhB,YAgiBL4G,EAAQrC,eAAe32B,EAAQg5B,EAAQpB,OAAS,YAChDoB,EAAQlD,cAAc91B,GACtBkf,YAAU8Z,EAAQ5G,YAriBb,gBAsiBD4G,EAAQhE,gBACRgE,EAAQnH,cAEZmH,EAAQ/S,kBACR+S,EAAQ3G,YAAYryB,GACpBg5B,EAAQ3D,YAAYr1B,EAAQg5B,EAAQn+B,SAAUm+B,EAAQpH,iBAAkBoH,EAAQrH,kBAChFmH,YAAehnB,KAAKknB,EAAQ5G,YAC5B4G,EAAQ3b,WAAWrd,KAG3BqxB,EAAQ7Y,UAAUqgB,mBAAqB,SAAU74B,EAAQkI,EAAG8W,EAAega,GACvE,GAAIh5B,EAAQ,CACRif,eAAa+Z,EAAQ5G,YAljBhB,gBAmjBLlT,YAAU8Z,EAAQ5G,YAljBZ,iBAmjBN4G,EAAQjF,kBACJ3oB,KAAMlD,EAAIA,EAAEkD,KAAO,KAAM+X,QAAQ,EAAOnjB,OAAQA,EAAQshB,MAAOpZ,GAAQ,KACvE9N,QAAS4+B,EAAQ5G,WAAYjD,cAAez0B,oBAAkBwN,IAE9D8wB,EAAQlF,2BAA6BkF,EAAQzG,aAAwC,SAAzBvT,EAAc2B,QAA6C,UAAxB3B,EAAc2B,QAE5GvZ,KAAKgnB,SAAqC,gBAAnB4K,GAAQ7d,WAChC6d,EAAQ5G,WAAWx3B,MAAM+F,QAAU,OAEvC,IAAI03B,GAAkB,SAAUY,GAC5BD,EAAQE,mBAAmBD,EAAcj5B,EAAQgf,EAAe9W,GAEpE8wB,GAAQ5c,QAAQ,aAAc4c,EAAQjF,iBAAkBsE,EAAgBzlB,KAAKomB,MAGrF3H,EAAQ7Y,UAAU0gB,mBAAqB,SAAUD,EAAcj5B,EAAQgf,EAAe9W,GAClF,GAAIwV,GAAQtW,IACZ,IAAI6xB,EAAa9V,OACb/b,KAAKoxB,UAAW,EAChBpxB,KAAK6sB,QACL7sB,KAAK6wB,wBACL7wB,KAAK0wB,eAAe93B,OAEnB,CACD,GAAIm5B,IACArxB,KAAgC,SAAzBkX,EAAc2B,QAAuC,WAAlBoO,gBAA8B,SAAW3nB,KAAKqwB,UAAU3Q,KAAKnG,OACvGhM,SAAUqK,EAAcrK,SACxBqa,MAAOhQ,EAAcgQ,MACrBoK,eAAgB,UAKpB,IAH6B,SAAzBpa,EAAc2B,SACdwY,MAAkB19B,IAElB2L,KAAKgxB,UAAY,EAAG,CACpB,GAAI1Z,GAAO,WACHhB,EAAM6U,YACN/qB,eAAaC,IAAIzH,EAAQ,kCAAmC0d,EAAM7U,YAAa6U,GAE/EA,EAAMmJ,WACNnJ,EAAMmJ,SAASnI,KAAKya,EAAiBn5B,GACjC0d,EAAM4T,gBAAkB5T,EAAM6U,YAC9B7U,EAAM7U,YAAY6U,EAAM4T,iBAIpClqB,MAAK8wB,UAAYvlB,WAAW+L,EAAMtX,KAAKgxB,eAGnChxB,MAAKyf,UACLzf,KAAKyf,SAASnI,KAAKya,EAAiBn5B,GAI5CkI,GACAd,KAAKiyB,gBAAgBnxB,EAAGlI,IAGhCqxB,EAAQ7Y,UAAUsb,uBAAyB,WAEvC,GAAIwF,GAAUlyB,IACd,QAAQ1M,oBAAkB4+B,EAAQC,mBAES,gBAA7BD,GAAQC,kBAAiCnyB,KAAKgnB,SAEhEiD,EAAQ7Y,UAAUuC,eAAiB,SAAU/a,EAAQd,EAAGC,GACpD,GAAImzB,IACA/3B,KAAM2E,EAAG1E,IAAK2E,EAAGtE,SAAUuM,KAAKvM,SAChC2+B,WAAYpyB,KAAKwqB,iBAAkB6H,SAAUryB,KAAKuqB,kBAElD+H,EAAcz6B,EAAUmI,KAAKgrB,WAAYhrB,KAAKuyB,qBAAsBz6B,EAAGC,EAO3E,OANIu6B,GAAY/1B,OAAS,IACrB2uB,EAAOkH,WAAaE,EAAY9zB,QAAQ,SAAW,EAAI,QAAU8zB,EAAY9zB,QAAQ,UAAY,EAAI,OACjGwB,KAAKwqB,iBACTU,EAAOmH,SAAWC,EAAY9zB,QAAQ,QAAU,EAAI,SAAW8zB,EAAY9zB,QAAQ,WAAa,EAAI,MAChGwB,KAAKuqB,kBAENW,GAEXjB,EAAQ7Y,UAAU+a,yBAA2B,SAAU13B,EAAKu3B,GACxD,OAAQhsB,KAAKoqB,gBAAkB31B,EAAItB,KAAO64B,EAAU74B,KAC3CsB,EAAItB,KAAO6M,KAAK9B,iBAAiBhJ,wBAAwB/B,KAAQ64B,EAAU74B,KAAOkG,OAAOm5B,YAAcxyB,KAAK9B,iBAAiBtK,WAClIoM,KAAKoqB,gBAAkB31B,EAAIrB,IAAM44B,EAAU54B,IACtCqB,EAAIrB,IAAM4M,KAAK9B,iBAAiBhJ,wBAAwB9B,IACrD44B,EAAU54B,IAAMiG,OAAOo5B,YAAczyB,KAAK9B,iBAAiBrK,YAE3Eo2B,EAAQ7Y,UAAUkb,iBAAmB,SAAU1zB,EAAQd,EAAGC,GACtD,GAAImzB,GAASlrB,KAAK2T,eAAe/a,EAAQd,EAAGC,GACxC26B,EAASxH,EAAOz3B,QAqBpB,IApBIuM,KAAKuqB,mBAAqBW,EAAOmH,WACjCK,EAA+C,IAApC1yB,KAAKvM,SAAS+K,QAAQ,WAAoD,IAAjCwB,KAAKvM,SAAS+K,QAAQ,OACtE0sB,EAAOmH,SAAWryB,KAAKwqB,iBAAmBxqB,KAAKwqB,iBAAmBU,EAAOmH,UAE7EryB,KAAKwqB,mBAAqBU,EAAOkH,aACF,IAA3BM,EAAOl0B,QAAQ,UACf0sB,EAAOmH,SAAuB,YAAXK,GAAmC,eAAXA,EAA2B,MAAQ,SAC9EA,EAAUxH,EAAOmH,SAAW,QAEA,IAA5BK,EAAOl0B,QAAQ,WACf0sB,EAAOmH,SAAuB,aAAXK,GAAoC,gBAAXA,EAA4B,MAAQ,SAChFA,EAAUxH,EAAOmH,SAAW,SAEhCnH,EAAOkH,WAAapyB,KAAKwqB,kBAE7BxqB,KAAK2sB,kBACD3oB,KAAM,KAAM+X,QAAQ,EAAOnjB,OAAQA,EAAQshB,MAAO,KAClDlnB,QAASgN,KAAKgrB,WAAY2H,iBAAkBD,GAEhD1yB,KAAKgV,QAAQ,kBAAmBhV,KAAK2sB,kBACjC3sB,KAAK2sB,iBAAiB5Q,OACtB2W,EAAS1yB,KAAKvM,aAEb,CACD,GAAIm/B,GAAiB1H,EAAOmH,SACxBQ,EAAmB3H,EAAOkH,UAC9B,IAAIlH,EAAOz3B,WAAai/B,EAAQ,CAC5B,GAAIj+B,GAAMV,EAAkB6E,EAAQi6B,EAAkBD,GAAiB5yB,KAAKoqB,gBAAiBpqB,KAAKoqB,gBAAkB,KAAOpqB,KAAK9B,iBAAiBhJ,wBACjJ8K,MAAKiuB,YAAYr1B,EAAQ85B,EAAQG,EAAkBD,EACnD,IAAIpH,GAAiBxrB,KAAKurB,iBAAiB3yB,GACvCozB,EAAYhsB,KAAKisB,uBAAuByG,EAAQlH,EAAe1zB,EAAG0zB,EAAezzB,EACrFi0B,GAAU54B,KAAO4M,KAAK8yB,kBAAkB,YAAaJ,EAAQ1yB,KAAKlH,SAClEkzB,EAAU74B,MAAQ6M,KAAK8yB,kBAAkB,YAAaJ,EAAQ1yB,KAAKnH,SACnEqyB,EAAOz3B,SAAWi/B,CAClB,IAAIK,GAAc/yB,KAAKmsB,yBAAyB13B,EAAKu3B,EACrDd,GAAO/3B,KAAO4/B,EAAY,GAC1B7H,EAAO93B,IAAM2/B,EAAY,OAGzB/yB,MAAKiuB,YAAYr1B,EAAQ85B,EAAQG,EAAkBD,GAG3D,GAAII,IAAc7/B,KAAM+3B,EAAO/3B,KAAMC,IAAK83B,EAAO93B,KAC7CK,EAAWuM,KAAKoqB,gBAChBh0B,EAAI4J,KAAKgrB,WAAYhrB,KAAKuyB,sBAAwBh8B,GAAG,EAAMC,EAAGwJ,KAAKizB,iBAAmBD,GAAaA,CACvGhzB,MAAKgrB,WAAWx3B,MAAM+F,QAAU,OAChC,IAAI6zB,GAAWO,SAAO,eAAiB3tB,KAAKgrB,WAC5C,IAAIhrB,KAAK4tB,gBAA8B,MAAZR,IAAkD,IAA7BsF,EAAOl0B,QAAQ,WAA6C,IAA1Bk0B,EAAOl0B,QAAQ,QAAe,CAC5G,GAAI00B,GAAYvvB,SAASypB,EAAS55B,MAAML,KAAM,KAAOM,EAASN,KAAO+3B,EAAO/3B,KACxE+/B,GAAY,EACZA,EAAY,EAENA,EAAY9F,EAAS/oB,YAAerE,KAAKgrB,WAAWzpB,cAC1D2xB,EAAYlzB,KAAKgrB,WAAWzpB,YAAc6rB,EAAS/oB,aAEvD+oB,EAAS55B,MAAML,KAAO+/B,EAAUtvB,WAAa,KAKjD,MAHA5D,MAAKgrB,WAAWx3B,MAAM+F,QAAU,GAChCy5B,EAAU7/B,KAAOM,EAASN,KAC1B6/B,EAAU5/B,IAAMK,EAASL,IAClB4/B,GAEX/I,EAAQ7Y,UAAU0hB,kBAAoB,SAAUK,EAAgBC,EAAQC,GACpE,OAA0E,IAAjEF,EAAe30B,QAAQwB,KAAKvM,SAAS6K,MAAM,aAAa,MACF,IAA1D60B,EAAe30B,QAAQ40B,EAAO90B,MAAM,aAAa,IAAgB,EAAI+0B,EAAc,GAE5FpJ,EAAQ7Y,UAAUmhB,mBAAqB,WACnC,OAAQvyB,KAAKizB,iBAAmBjzB,KAAKpH,OAASoH,KAAKhN,QAAU,MAEjEi3B,EAAQ7Y,UAAUgf,YAAc,SAAUlY,EAAepX,EAAG9C,GACxD,GAAIsY,GAAQtW,IACZ,IAAIA,KAAKswB,WAAa,EAAG,CACrBjgB,aAAarQ,KAAK+wB,WAClB1gB,aAAarQ,KAAK8wB,UAClB,IAAIlc,GAAO,WACH0B,EAAMga,YAAcha,EAAM0U,YAAc1U,EAAMgd,eAGlDhd,EAAMid,YAAYrb,EAAepX,EAAG9C,GAExCgC,MAAK+wB,UAAYxlB,WAAWqJ,EAAM5U,KAAKswB,gBAGvCtwB,MAAKuzB,YAAYrb,EAAepX,EAAG9C,IAG3CisB,EAAQ7Y,UAAUmiB,YAAc,SAAUrb,EAAepX,EAAG9C,GACxD,GACIpF,GADA0d,EAAQtW,IAGRpH,GADAkI,EACSd,KAAKpH,OAAUoF,GAAiB8C,EAAElI,OAAUoH,KAAKhN,QAGjD26B,SAAO,sBAAwB3tB,KAAKwwB,OAAS,aAAct1B,UAExE8E,KAAK2sB,kBACD3oB,KAAMlD,EAAIA,EAAEkD,KAAO,KAAM+X,QAAQ,EAAOnjB,OAAQA,EAAQshB,MAAOpZ,GAAQ,KACvE9N,QAASgN,KAAKgrB,WAAYjD,cAAez0B,oBAAkBwN,IAI/Dd,KAAKgV,QAAQ,cAAehV,KAAK2sB,iBAAkB,SAAUkF,GACpDA,EAAa9V,OAKdzF,EAAM8a,UAAW,GAJjB9a,EAAMua,wBACNva,EAAMkd,UAAUtb,EAAetf,EAAQkI,MAM/Cd,KAAK2sB,iBAAmB,MAE5B1C,EAAQ7Y,UAAUoiB,UAAY,SAAUtb,EAAetf,EAAQkI,GACvDlI,GAAUkI,GACVd,KAAK0wB,eAAe93B,GAExBoH,KAAKoxB,UAAW,CAChB,IAAIlJ,IACAxnB,KAAgC,SAAzBwX,EAAcqB,QAAuC,WAAlBoO,gBAA8B,UAAY3nB,KAAKqwB,UAAU7V,MAAMjB,OACzGhM,SAAU2K,EAAc3K,SACxBqa,MAAO1P,EAAc0P,MACrBoK,eAAgB,SAES,UAAzB9Z,EAAcqB,SACd2O,MAAiB7zB,IAEjB2L,KAAKyf,UACLzf,KAAKyf,SAAS7K,KAAKsT,IAG3B+B,EAAQ7Y,UAAUsf,eAAiB,SAAU93B,GACzCoH,KAAKyzB,kBAAkB76B,GAClBtF,oBAAkBsF,EAAOuS,aAAa,mBACvCvS,EAAO+G,aAAa,QAAS/G,EAAOuS,aAAa,iBACjDvS,EAAOmuB,gBAAgB,iBAE3B/mB,KAAK0vB,kBAAkB92B,IAE3BqxB,EAAQ7Y,UAAUyb,MAAQ,WACtB,GAAIj0B,GAASoH,KAAKwsB,YACd5zB,IACAoH,KAAK0wB,eAAe93B,GAEpBoH,KAAKgrB,aACLnT,eAAa7X,KAAKgrB,YA3xBZ,iBA4xBNlT,YAAU9X,KAAKgrB,YA7xBV,iBA+xBLhrB,KAAKoxB,WACDpxB,KAAKyf,UACLzf,KAAKyf,SAAStkB,UAEd6E,KAAKgrB,YACLjpB,SAAO/B,KAAKgrB,YAEhBhrB,KAAKgrB,WAAa,KAClBhrB,KAAKyf,SAAW,OAGxBwK,EAAQ7Y,UAAUsiB,aAAe,WACzB1zB,KAAKgrB,aACLhrB,KAAKszB,eAAgB,IAG7BrJ,EAAQ7Y,UAAUuiB,gBAAkB,SAAU7yB,GAC1Cd,KAAKszB,eAAgB,EACrBtzB,KAAKowB,YAAYpwB,KAAKqwB,UAAU7V,MAAO1Z,EAAGd,KAAKwsB,eAEnDvC,EAAQ7Y,UAAUwiB,WAAa,SAAU9yB,GACrC,GAAI+yB,GAAiB/yB,EAAEgzB,aAEvB,IAAID,IAAmB7zB,KAAKmrB,WAAY,CACpC,GAAI4I,GAAyBrI,UAAQmI,EAAgB,gCACjDE,GACA3zB,eAAaC,IAAI0zB,EAAwB,aAAc/zB,KAAKg0B,uBAAwBh0B,OAGpFA,KAAKowB,YAAYpwB,KAAKqwB,UAAU7V,MAAO1Z,EAAGd,KAAKwsB,cACvB,IAApBxsB,KAAKswB,YAAoD,SAAhCtwB,KAAKqwB,UAAU7V,MAAMjB,QAC9CvZ,KAAK6sB,aAKb7sB,MAAKowB,YAAYpwB,KAAKqwB,UAAU7V,MAAO1Z,EAAGd,KAAKwsB,cAC/CxsB,KAAK6sB,SAGb5C,EAAQ7Y,UAAU4iB,uBAAyB,SAAUlzB,GACjDd,KAAKowB,YAAYpwB,KAAKqwB,UAAU7V,MAAO1Z,EAAGd,KAAKwsB,cAC/CpsB,eAAa2B,OAAO/B,KAAKhN,QAAS,aAAcgN,KAAKg0B,wBACrDh0B,KAAK6sB,SAET5C,EAAQ7Y,UAAUke,cAAgB,WAC9BtvB,KAAKwa,SAETyP,EAAQ7Y,UAAU3P,YAAc,SAAUyY,GACtC,GAAI+Z,GAAa,EACbC,EAAa,CACbha,GAAMlW,KAAKxF,QAAQ,UAAY,GAC/B0b,EAAMnZ,iBACNkzB,EAAa/Z,EAAM1X,QAAQ,GAAGvB,MAC9BizB,EAAaha,EAAM1X,QAAQ,GAAGrB,QAG9B8yB,EAAa/Z,EAAMjZ,MACnBizB,EAAaha,EAAM/Y,OAEvBuwB,YAAehnB,KAAK1K,KAAKgrB,YACzBnT,eAAa7X,KAAKgrB,YA31BR,iBA41BVlT,YAAU9X,KAAKgrB,YA71BN,gBA81BThrB,KAAKiuB,YAAY/T,EAAMthB,OAAQoH,KAAKvM,SAAUuM,KAAKwqB,iBAAkBxqB,KAAKuqB,iBAC1E,IAAIiB,GAAiBxrB,KAAKurB,iBAAiBrR,EAAMthB,QAC7CnE,EAAMuL,KAAKisB,uBAAuBjsB,KAAKvM,SAAU+3B,EAAe1zB,EAAG0zB,EAAezzB,GAClFD,EAAIm8B,EAAax/B,EAAItB,KAAO6M,KAAKnH,QACjCd,EAAIm8B,EAAaz/B,EAAIrB,IAAM4M,KAAKlH,QAChCoyB,EAASlrB,KAAK2T,eAAeuG,EAAMthB,OAAQd,EAAGC,EAClD,IAAIiI,KAAKwqB,mBAAqBU,EAAOkH,YAAcpyB,KAAKuqB,mBAAqBW,EAAOmH,SAAU,CAC1F,GAAIK,GAA8C,IAApC1yB,KAAKvM,SAAS+K,QAAQ,WAAoD,IAAjCwB,KAAKvM,SAAS+K,QAAQ,OACzE0sB,EAAOmH,SAAWnH,EAAOkH,WAAalH,EAAOkH,WAAalH,EAAOmH,QACrEnH,GAAOz3B,SAAWi/B,EAClB1yB,KAAKiuB,YAAY/T,EAAMthB,OAAQsyB,EAAOz3B,SAAUy3B,EAAOkH,WAAYlH,EAAOmH,SAC1E,IAAI8B,GAASn0B,KAAKisB,uBAAuBf,EAAOz3B,SAAU+3B,EAAe1zB,EAAG0zB,EAAezzB,EAC3FmzB,GAAO/3B,KAAO8gC,EAAaE,EAAOhhC,KAAO6M,KAAKnH,QAC9CqyB,EAAO93B,IAAM8gC,EAAaC,EAAO/gC,IAAM4M,KAAKlH,QAEhDkH,KAAKgrB,WAAWx3B,MAAML,KAAO+3B,EAAO/3B,KAAO,KAC3C6M,KAAKgrB,WAAWx3B,MAAMJ,IAAM83B,EAAO93B,IAAM,MAE7C62B,EAAQ7Y,UAAUyL,QAAU,SAAU3C,GAC9Bla,KAAKgrB,YAAgC,KAAlB9Q,EAAM4C,SACzB9c,KAAKwa,SAGbyP,EAAQ7Y,UAAUgjB,SAAW,SAAUtzB,GAC/Bd,KAAKgrB,YAAgD,OAAlCU,UAAQ5qB,EAAElI,OAAQ,gBAAyBoH,KAAKivB,UACnEjvB,KAAKwa,SAGbyP,EAAQ7Y,UAAUijB,cAAgB,SAAUvzB,GACpCd,KAAKgrB,aAAehrB,KAAKivB,WACnBvD,UAAQ5qB,EAAElI,OAAQ,kCAChBoH,KAAKivB,UACTjvB,KAAKwa,UAUjByP,EAAQ7Y,UAAU8C,OAAS,WACvBlU,KAAKkZ,aACLlZ,KAAKX,WAAWW,KAAK4sB,SACrB5sB,KAAKyZ,kBAQTwQ,EAAQ7Y,UAAU4E,UAAY,WAC1BhW,KAAK6qB,SAz5BI,eA05BT7qB,KAAKwqB,iBAAmB,SACxBxqB,KAAKuqB,iBAAmB,MACxBvqB,KAAKoxB,UAAW,GAUpBnH,EAAQ7Y,UAAU/R,WAAa,SAAU2V,GAErC,IAAK,GAAIlC,GAAK,EAAGwhB,EADCt0B,KAAKu0B,eAAevf,GACQlC,EAAKwhB,EAAc/3B,OAAQuW,IAAM,CAC3E,GAAI8Z,GAAU0H,EAAcxhB,EAC5B,IAAgB,WAAZ8Z,EACA,MAEY,WAAZA,GACA5sB,KAAKw0B,kBAEO,UAAZ5H,GACAxsB,eAAaC,IAAIL,KAAKhN,QAASwN,UAAQ6uB,gBAAiBrvB,KAAKmwB,YAAanwB,MAE9D,UAAZ4sB,IACIpsB,UAAQ4T,UACRpU,KAAKy0B,YAAc,GAAIC,SAAM10B,KAAKhN,SAC9B2hC,iBAr8BA,IAs8BAC,QAAS50B,KAAK6vB,eAAerkB,KAAKxL,QAEtCI,eAAaC,IAAIL,KAAKhN,QAASwN,UAAQsB,cAAe9B,KAAKkwB,gBAAiBlwB,OAG5EI,eAAaC,IAAIL,KAAKhN,QAAS,YAAagN,KAAKgwB,YAAahwB,OAI1EI,eAAaC,IAAInF,SAAU,WAAY8E,KAAKo0B,SAAUp0B,MACtDI,eAAaC,IAAInF,SAAU,eAAgB8E,KAAKq0B,cAAer0B,MAC/DI,eAAaC,IAAIhH,OAAQ,SAAU2G,KAAKusB,aAAcvsB,MACtDI,eAAaC,IAAInF,SAAU,UAAW8E,KAAK6c,QAAS7c,OAExDiqB,EAAQ7Y,UAAUmjB,eAAiB,SAAUvf,GACzC,MAAKA,IAEW,SAAZA,IACAA,EAAWxU,mBAAoB,QAAU,eAEtCwU,EAAQ1W,MAAM,UAEzB2rB,EAAQ7Y,UAAUojB,gBAAkB,WAChC,GAAKlhC,oBAAkB0M,KAAKpH,QAcxBwH,eAAaC,IAAIL,KAAKhN,QAAS,UAAWgN,KAAKgwB,YAAahwB,UAd3B,CACjC,GAAI60B,MAAgBl4B,MAAMC,KAAKmxB,YAAU/tB,KAAKpH,OAAQoH,KAAKhN,SAE3D,IADAgN,KAAK80B,YAAcD,GACdvhC,oBAAkB0M,KAAK80B,cAAgB90B,KAAK80B,YAAYv4B,OAAS,EAClE,IAAK,GAAIuW,GAAK,EAAGiiB,EAAeF,EAAY/hB,EAAKiiB,EAAax4B,OAAQuW,IAAM,CACxE,GAAIla,GAASm8B,EAAajiB,EAC1B1S,gBAAaC,IAAIzH,EAAQ,QAASoH,KAAKgwB,YAAahwB,UAIxDI,gBAAaC,IAAIL,KAAKhN,QAAS,UAAWgN,KAAKgwB,YAAahwB,QAOxEiqB,EAAQ7Y,UAAU6gB,gBAAkB,SAAUnxB,EAAGlI,GACzCoH,KAAKgrB,aACAhrB,KAAKivB,WACS,UAAXnuB,EAAEkD,MACF5D,eAAaC,IAAIzH,EAAQ,OAAQoH,KAAK4zB,WAAY5zB,MAEvC,YAAXc,EAAEkD,MACF5D,eAAaC,IAAIzH,EAAQ,WAAYoH,KAAK4zB,WAAY5zB,MAE3C,cAAXc,EAAEkD,MACF5D,eAAaC,IAAIzH,EAAQ,aAAcoH,KAAK4zB,WAAY5zB,MAExDA,KAAKswB,aACLlwB,eAAaC,IAAIL,KAAKgrB,WAAY,aAAchrB,KAAK0zB,aAAc1zB,MACnEI,eAAaC,IAAIL,KAAKgrB,WAAY,aAAchrB,KAAK2zB,gBAAiB3zB,QAG1EA,KAAKmrB,YAAiC,IAAnBnrB,KAAKgxB,WACxB5wB,eAAaC,IAAIzH,EAAQ,kCAAmCoH,KAAKyB,YAAazB,QAa1FiqB,EAAQ7Y,UAAU0C,aAAe,SAAUkB,GAEvC,IAAK,GAAIlC,GAAK,EAAGkiB,EADCh1B,KAAKu0B,eAAevf,GACQlC,EAAKkiB,EAAcz4B,OAAQuW,IAAM,CAC3E,GAAI8Z,GAAUoI,EAAcliB,EAC5B,IAAgB,WAAZ8Z,EACA,MAEY,WAAZA,GACA5sB,KAAKi1B,oBAEO,UAAZrI,GACAxsB,eAAa2B,OAAO/B,KAAKhN,QAASwN,UAAQ6uB,gBAAiBrvB,KAAKmwB,aAEpD,UAAZvD,IACIpsB,UAAQ4T,UACJpU,KAAKy0B,aACLz0B,KAAKy0B,YAAYt5B,UAErBiF,eAAa2B,OAAO/B,KAAKhN,QAASwN,UAAQsB,cAAe9B,KAAKkwB,kBAG9D9vB,eAAa2B,OAAO/B,KAAKhN,QAAS,YAAagN,KAAKgwB,cAIhE5vB,eAAa2B,OAAO7G,SAAU,WAAY8E,KAAKo0B,UAC/Ch0B,eAAa2B,OAAO7G,SAAU,eAAgB8E,KAAKq0B,eACnDj0B,eAAa2B,OAAO1I,OAAQ,SAAU2G,KAAKusB,cAC3CnsB,eAAa2B,OAAO7G,SAAU,UAAW8E,KAAK6c,UAElDoN,EAAQ7Y,UAAU6jB,kBAAoB,WAClC,GAAK3hC,oBAAkB0M,KAAKpH,QAaxBwH,eAAa2B,OAAO/B,KAAKhN,QAAS,UAAWgN,KAAKgwB,iBAbjB,CACjC,GAAI6E,MAAgBl4B,MAAMC,KAAKmxB,YAAU/tB,KAAKpH,OAAQoH,KAAKhN,SAC3D,KAAKM,oBAAkB0M,KAAK80B,cAAgB90B,KAAK80B,YAAYv4B,OAAS,EAClE,IAAK,GAAIuW,GAAK,EAAGoiB,EAAeL,EAAY/hB,EAAKoiB,EAAa34B,OAAQuW,IAAM,CACxE,GAAIla,GAASs8B,EAAapiB,EAC1B1S,gBAAa2B,OAAOnJ,EAAQ,QAASoH,KAAKgwB,iBAI9C5vB,gBAAa2B,OAAO/B,KAAKhN,QAAS,UAAWgN,KAAKgwB,eAO9D/F,EAAQ7Y,UAAUqiB,kBAAoB,SAAU76B,GAC5C,IAAKoH,KAAKivB,SAAU,CAEhB,IAAK,GAAInc,GAAK,EAAGqiB,EADCn1B,KAAKu0B,eAAev0B,KAAK4sB,SACG9Z,EAAKqiB,EAAc54B,OAAQuW,IAAM,CAC3E,GAAI8Z,GAAUuI,EAAcriB,EACZ,WAAZ8Z,IACAxsB,eAAa2B,OAAOnJ,EAAQ,OAAQoH,KAAK4zB,YACzCxzB,eAAa2B,OAAOnJ,EAAQ,WAAYoH,KAAK4zB,aAEjC,UAAZhH,GAAwBpsB,UAAQ4T,UAChChU,eAAa2B,OAAOnJ,EAAQ,aAAcoH,KAAK4zB,YAGnD5zB,KAAKswB,aACLlwB,eAAa2B,OAAOnJ,EAAQ,aAAcoH,KAAK0zB,cAC/CtzB,eAAa2B,OAAOnJ,EAAQ,aAAcoH,KAAK2zB,kBAGnD3zB,KAAKmrB,YACL/qB,eAAa2B,OAAOnJ,EAAQ,kCAAmCoH,KAAKyB,cAG5EwoB,EAAQ7Y,UAAUob,WAAa,WAE3B,MADamB,UAAO,sBAAwB3tB,KAAKwwB,OAAS,aAAct1B,WAU5E+uB,EAAQ7Y,UAAUqC,cAAgB,WAC9B,MAAO,WASXwW,EAAQ7Y,UAAUwC,eAAiB,WAC/B,MAAO5T,MAAK6T,kBAYhBoW,EAAQ7Y,UAAUuB,kBAAoB,SAAUC,EAASC,GAErD,IAAK,GADD7U,GAAgBgC,KAAKwsB,aAChB1Z,EAAK,EAAGjN,EAAKgL,OAAOkC,KAAKH,GAAUE,EAAKjN,EAAGtJ,OAAQuW,IAExD,OADWjN,EAAGiN,IAEV,IAAK,QACG9S,KAAKgrB,YAAchtB,IACnBgC,KAAKgrB,WAAWx3B,MAAM0C,MAAQ8J,KAAKgrB,WAAWx3B,MAAM0L,SAAW+T,aAAWL,EAAQ1c,OAClF8J,KAAKiW,WAAWjY,GAEpB,MACJ,KAAK,SACGgC,KAAKgrB,YAAchtB,IACnBgC,KAAKgrB,WAAWx3B,MAAMsC,OAASmd,aAAWL,EAAQ9c,QAClDkK,KAAKiW,WAAWjY,GAEpB,MACJ,KAAK,UACGgC,KAAKgrB,YACLhrB,KAAK0uB,eAET,MACJ,KAAK,UACD1uB,KAAK8T,aAAajB,EAAQ+Z,SAC1B5sB,KAAKX,WAAWuT,EAAQga,QACxB,MACJ,KAAK,WAED,GADA5sB,KAAKqqB,iBACDrqB,KAAKgrB,YAAchtB,EAAe,CAClC,GAAIswB,GAAgBX,SAAO,qBAAuB3tB,KAAKgrB,WACnDsD,KACAA,EAAc96B,MAAMJ,IAAMk7B,EAAc96B,MAAML,KAAO,MAEzD6M,KAAKiW,WAAWjY,GAEpB,KACJ,KAAK,qBACGgC,KAAKgrB,YAAchtB,GACnBgC,KAAKiW,WAAWjY,EAEpB,MACJ,KAAK,UACD,GAAIgC,KAAKgrB,WAAY,CACjB,GAAIlzB,GAAI8a,EAAQ/Z,QAAUga,EAAQha,OAClCmH,MAAKgrB,WAAWx3B,MAAML,MAAQwQ,SAAS3D,KAAKgrB,WAAWx3B,MAAML,KAAM,OAAWyQ,WAAa,KAE/F,KACJ,KAAK,UACD,GAAI5D,KAAKgrB,WAAY,CACjB,GAAIjzB,GAAI6a,EAAQ9Z,QAAU+Z,EAAQ/Z,OAClCkH,MAAKgrB,WAAWx3B,MAAMJ,KAAOuQ,SAAS3D,KAAKgrB,WAAWx3B,MAAMJ,IAAK,OAAWwQ,WAAa,KAE7F,KACJ,KAAK,WACG5D,KAAKgrB,aACDnY,EAAQtN,UACRsS,eAAa7X,KAAKgrB,YAAanY,EAAQtN,SAASjH,MAAM,MAEtDsU,EAAQrN,UACRuS,YAAU9X,KAAKgrB,YAAapY,EAAQrN,SAASjH,MAAM,MAG3D,MACJ,KAAK,YACG0B,KAAKgrB,aACDhrB,KAAKkW,UACL4B,YAAU9X,KAAKgrB,YAhrCjC,SAmrCkBnT,eAAa7X,KAAKgrB,YAnrCpC,SAsrCU,MACJ,KAAK,WACGhrB,KAAKgrB,YAAchtB,IACnBgC,KAAK6e,kBACL7e,KAAKiW,WAAWjY,GAEpB,MACJ,KAAK,YACI1K,oBAAkB0M,KAAK9B,mBACxB2Z,eAAa7X,KAAK9B,kBA7qCpB,6BA+qCF8B,KAAKgG,UAAY4M,EAAQ5M,UACrBhG,KAAKgrB,YAAchtB,IACnBgC,KAAK2xB,gBAAgB3xB,MACrBA,KAAKiW,WAAWjY,MAYpCisB,EAAQ7Y,UAAUsO,KAAO,SAAU1sB,EAASq9B,GACpC/8B,oBAAkB+8B,KAClBA,EAAYrwB,KAAKqwB,UAAU3Q,MAE3BpsB,oBAAkBN,KAClBA,EAAUgN,KAAKhN,SAEW,SAA1BA,EAAQQ,MAAM+F,SAGlByG,KAAK2wB,YAAY39B,EAASq9B,IAQ9BpG,EAAQ7Y,UAAUoJ,MAAQ,SAAU6V,GAC3BA,IACDA,EAAYrwB,KAAKqwB,UAAU7V,OAE/Bxa,KAAKowB,YAAYC,IAQrBpG,EAAQ7Y,UAAUgkB,QAAU,SAAUx8B,GAC9BoH,KAAKgrB,YACLhrB,KAAK0uB,cAAc91B,GAEnBoH,KAAKyf,UAAY7mB,GACjBoH,KAAKiW,WAAWrd,GAEftF,oBAAkB0M,KAAK80B,cAAiBxhC,oBAAkB0M,KAAKpH,SACjDm1B,YAAU/tB,KAAKpH,OAAQoH,KAAKhN,SAC9BuJ,SAAWyD,KAAK80B,YAAYv4B,SACrCyD,KAAK8T,aAAa9T,KAAK4sB,SACvB5sB,KAAKX,WAAWW,KAAK4sB,WAYjC3C,EAAQ7Y,UAAUjW,QAAU,WACxB+W,EAAOd,UAAUjW,QAAQyB,KAAKoD,MAC1BA,KAAKgrB,YACLjpB,SAAO/B,KAAKgrB,YAEZhrB,KAAKyf,UACLzf,KAAKyf,SAAStkB,UAElB8Y,IACA4D,eAAa7X,KAAKhN,SA/wCf,aAgxCHgN,KAAK8T,aAAa9T,KAAK4sB,SACvB5sB,KAAKyzB,kBAAkBzzB,KAAKhN,SAC5BgN,KAAKgrB,WAAa,KAClBhrB,KAAKyf,SAAW,IAEhB,KAAK,GAAI3M,GAAK,EAAGuiB,EADGtH,YAAU,sBAAwB/tB,KAAKwwB,OAAS,aAAcxwB,KAAKhN,SACrC8f,EAAKuiB,EAAgB94B,OAAQuW,IAAM,CACjF,GAAIla,GAASy8B,EAAgBviB,EAC7B9S,MAAK0wB,eAAe93B,GAExBoH,KAAK9B,iBAAmB,KACxB8B,KAAK6qB,SAAW,KAChB7qB,KAAKwqB,iBAAmB,KACxBxqB,KAAKuqB,iBAAmB,KACxBvqB,KAAKwwB,OAAS,KACdxwB,KAAK2sB,iBAAmB,KACxB3sB,KAAKy0B,YAAc,KACnBz0B,KAAKkqB,eAAiB,KACtBlqB,KAAKmqB,gBAAkB,KACvBnqB,KAAK9B,iBAAmB,KACxB8B,KAAK80B,YAAc,MAEvBxjB,IACIa,WAAS,SACV8X,EAAQ7Y,UAAW,YAAS,IAC/BE,IACIa,WAAS,SACV8X,EAAQ7Y,UAAW,aAAU,IAChCE,IACIa,cACD8X,EAAQ7Y,UAAW,cAAW,IACjCE,IACIa,WAAS,SACV8X,EAAQ7Y,UAAW,gBAAa,IACnCE,IACIa,cACD8X,EAAQ7Y,UAAW,aAAU,IAChCE,IACIa,WAAS,cACV8X,EAAQ7Y,UAAW,eAAY,IAClCE,IACIa,WAAS,IACV8X,EAAQ7Y,UAAW,cAAW,IACjCE,IACIa,WAAS,IACV8X,EAAQ7Y,UAAW,cAAW,IACjCE,IACIa,YAAS,IACV8X,EAAQ7Y,UAAW,qBAAkB,IACxCE,IACIa,YAAS,IACV8X,EAAQ7Y,UAAW,sBAAmB,IACzCE,IACIa,YAAS,IACV8X,EAAQ7Y,UAAW,sBAAmB,IACzCE,IACIa,WAAS,SACV8X,EAAQ7Y,UAAW,yBAAsB,IAC5CE,IACIa,WAAS,SACV8X,EAAQ7Y,UAAW,cAAW,IACjCE,IACIa,YAAS,IACV8X,EAAQ7Y,UAAW,iBAAc,IACpCE,IACIa,YAAS,IACV8X,EAAQ7Y,UAAW,eAAY,IAClCE,IACI6G,aAAYH,KACbiS,EAAQ7Y,UAAW,gBAAa,IACnCE,IACIa,WAAS,IACV8X,EAAQ7Y,UAAW,gBAAa,IACnCE,IACIa,WAAS,IACV8X,EAAQ7Y,UAAW,iBAAc,IACpCE,IACIa,cACD8X,EAAQ7Y,UAAW,eAAY,IAClCE,IACIa,YAAS,IACV8X,EAAQ7Y,UAAW,0BAAuB,IAC7CE,IACIa,WAAS,KACV8X,EAAQ7Y,UAAW,qBAAkB,IACxCE,IACI8G,WACD6R,EAAQ7Y,UAAW,mBAAgB,IACtCE,IACI8G,WACD6R,EAAQ7Y,UAAW,iBAAc,IACpCE,IACI8G,WACD6R,EAAQ7Y,UAAW,gBAAa,IACnCE,IACI8G,WACD6R,EAAQ7Y,UAAW,kBAAe,IACrCE,IACI8G,WACD6R,EAAQ7Y,UAAW,iBAAc,IACpCE,IACI8G,WACD6R,EAAQ7Y,UAAW,sBAAmB,IACzCE,IACI8G,WACD6R,EAAQ7Y,UAAW,cAAW,IACjCE,IACI8G,WACD6R,EAAQ7Y,UAAW,gBAAa,IACnC6Y,EAAU3Y,IACN+G,yBACD4R,IAEL3R,aFh6CE/Q,MACAoE,GAAiB,GACjBC,GAAkB,GAClBC,GAAiB,GACjBC,GAAoB,GACpBC,GAAqB,GACrBG,GAAkB,GAClBF,GAAmB,GACnBC,GAAmB,GACnBkE,GAAe,cACfnJ,GAAe,cACfU,GAAmB,kBACnBG,GAAoB,mBACpBa,GAAiB,gBACjBG,GAAiB,gBACjBE,GAAkB,iBAClBE,GAAmB,kBACnBY,GAAe,mBACf9B,GAAgB,oBAChBE,GAAgB,oBAChBkB,GAAuB,uBACvB+D,GAAe,iBACf7D,GAAiB,kBACjBa,GAAiB,gBACjB0C,GAAc,aACd1F,GAAgB,eAChBL,GAAmB,kBACnBP,GAAe,KACfS,GAAe"}