@syncfusion/ej2-ribbon 23.1.38 → 23.1.41

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"ej2-ribbon.es5.js","sources":["../../src/ribbon/base/interface.js","../../src/ribbon/models/ribbon-button-settings.js","../../src/ribbon/models/ribbon-checkbox-settings.js","../../src/ribbon/models/ribbon-colorpicker-settings.js","../../src/ribbon/models/ribbon-combobox-settings.js","../../src/ribbon/models/ribbon-dropdown-settings.js","../../src/ribbon/models/ribbon-splitbutton-settings.js","../../src/ribbon/models/ribbon-tooltip.js","../../src/ribbon/models/ribbon-group-button-item.js","../../src/ribbon/models/ribbon-group-button-settings.js","../../src/ribbon/models/ribbon-item.js","../../src/ribbon/models/ribbon-collection.js","../../src/ribbon/models/ribbon-group.js","../../src/ribbon/models/ribbon-tab.js","../../src/ribbon/models/ribbon-file-menu-settings.js","../../src/ribbon/models/ribbon-back-button.js","../../src/ribbon/models/ribbon-backstage-item.js","../../src/ribbon/models/ribbon-back-stage-settings.js","../../src/ribbon/models/index.js","../../src/ribbon/base/constant.js","../../src/ribbon/items/ribbon-button.js","../../src/ribbon/items/ribbon-checkbox.js","../../src/ribbon/items/ribbon-colorpicker.js","../../src/ribbon/items/ribbon-combobox.js","../../src/ribbon/items/ribbon-dropdown.js","../../src/ribbon/items/ribbon-splitbutton.js","../../src/ribbon/base/utils.js","../../src/ribbon/items/ribbon-groupbutton.js","../../src/ribbon/base/ribbon.js","../../src/ribbon/base/index.js","../../src/ribbon/modules/ribbon-filemenu.js","../../src/ribbon/modules/ribbon-backstage.js","../../src/ribbon/index.js","../../src/index.js"],"sourcesContent":["/**\n * Defines the layout types of ribbon.\n */\nexport var RibbonLayout;\n(function (RibbonLayout) {\n /**\n * Displays the ribbon tab content in classic layout.\n */\n RibbonLayout[\"Classic\"] = \"Classic\";\n /**\n * Displays the ribbon tab content in simplified layout.\n */\n RibbonLayout[\"Simplified\"] = \"Simplified\";\n})(RibbonLayout || (RibbonLayout = {}));\n/**\n * Defines the alignment of the items in the ribbon group.\n */\nexport var ItemOrientation;\n(function (ItemOrientation) {\n /**\n * Displays the collection of items in rows.\n */\n ItemOrientation[\"Row\"] = \"Row\";\n /**\n * Displays the collection of items in column.\n */\n ItemOrientation[\"Column\"] = \"Column\";\n})(ItemOrientation || (ItemOrientation = {}));\n/**\n * Defines the current size of the ribbon item in normal mode.\n *\n * @aspNumberEnum\n */\nexport var RibbonItemSize;\n(function (RibbonItemSize) {\n /**\n * The item appears with large icon and text at the bottom.\n */\n RibbonItemSize[RibbonItemSize[\"Large\"] = 4] = \"Large\";\n /**\n * The item appears with small icon and text at the right.\n */\n RibbonItemSize[RibbonItemSize[\"Medium\"] = 2] = \"Medium\";\n /**\n * The item appears with small icon only.\n */\n RibbonItemSize[RibbonItemSize[\"Small\"] = 1] = \"Small\";\n})(RibbonItemSize || (RibbonItemSize = {}));\n/**\n * Defines how to show an item in ribbon simplified layout.\n *\n * @aspNumberEnum\n */\nexport var DisplayMode;\n(function (DisplayMode) {\n /**\n * The item appears in the classic layout group.\n */\n DisplayMode[DisplayMode[\"Classic\"] = 4] = \"Classic\";\n /**\n * The item appears in the simplified layout group.\n */\n DisplayMode[DisplayMode[\"Simplified\"] = 2] = \"Simplified\";\n /**\n * The item appears in overflow popup.\n */\n DisplayMode[DisplayMode[\"Overflow\"] = 1] = \"Overflow\";\n /**\n * The item appears in classic layout group, simplified layout group, and overflow popup based on ribbon overflow state.\n */\n DisplayMode[DisplayMode[\"Auto\"] = 7] = \"Auto\";\n})(DisplayMode || (DisplayMode = {}));\n/**\n * Defines the type of the ribbon item.\n */\nexport var RibbonItemType;\n(function (RibbonItemType) {\n /**\n * Renders button as ribbon item.\n */\n RibbonItemType[\"Button\"] = \"Button\";\n /**\n * Renders checkbox as ribbon item.\n */\n RibbonItemType[\"CheckBox\"] = \"CheckBox\";\n /**\n * Renders color picker as ribbon item.\n */\n RibbonItemType[\"ColorPicker\"] = \"ColorPicker\";\n /**\n * Renders combobox as ribbon item.\n */\n RibbonItemType[\"ComboBox\"] = \"ComboBox\";\n /**\n * Renders dropdownbutton as ribbon item.\n */\n RibbonItemType[\"DropDown\"] = \"DropDown\";\n /**\n * Renders splitbutton as ribbon item.\n */\n RibbonItemType[\"SplitButton\"] = \"SplitButton\";\n /**\n * Renders the group button content as ribbon item.\n */\n RibbonItemType[\"GroupButton\"] = \"GroupButton\";\n /**\n * Renders the template content as ribbon item.\n */\n RibbonItemType[\"Template\"] = \"Template\";\n})(RibbonItemType || (RibbonItemType = {}));\n/**\n * Defines the alignment of the items in the ribbon group.\n */\nexport var RibbonGroupButtonSelection;\n(function (RibbonGroupButtonSelection) {\n /**\n * Allows selecting single button from button group.\n */\n RibbonGroupButtonSelection[\"Single\"] = \"Single\";\n /**\n * Allows selecting multiple buttons from button group.\n */\n RibbonGroupButtonSelection[\"Multiple\"] = \"Multiple\";\n})(RibbonGroupButtonSelection || (RibbonGroupButtonSelection = {}));\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 { ChildProperty, Event, Property } from '@syncfusion/ej2-base';\n/**\n * Defines the ribbon button item.\n */\nvar RibbonButtonSettings = /** @class */ (function (_super) {\n __extends(RibbonButtonSettings, _super);\n function RibbonButtonSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of button.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonButtonSettings.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property('')\n ], RibbonButtonSettings.prototype, \"content\", void 0);\n __decorate([\n Property('')\n ], RibbonButtonSettings.prototype, \"cssClass\", void 0);\n __decorate([\n Property('')\n ], RibbonButtonSettings.prototype, \"iconCss\", void 0);\n __decorate([\n Property(false)\n ], RibbonButtonSettings.prototype, \"isToggle\", void 0);\n __decorate([\n Property(false)\n ], RibbonButtonSettings.prototype, \"isPrimary\", void 0);\n __decorate([\n Event()\n ], RibbonButtonSettings.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], RibbonButtonSettings.prototype, \"clicked\", void 0);\n return RibbonButtonSettings;\n}(ChildProperty));\nexport { RibbonButtonSettings };\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 { ChildProperty, Event, Property } from '@syncfusion/ej2-base';\n/**\n * Defines the ribbon checkbox item.\n */\nvar RibbonCheckBoxSettings = /** @class */ (function (_super) {\n __extends(RibbonCheckBoxSettings, _super);\n function RibbonCheckBoxSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of checkbox.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonCheckBoxSettings.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property(false)\n ], RibbonCheckBoxSettings.prototype, \"checked\", void 0);\n __decorate([\n Property('')\n ], RibbonCheckBoxSettings.prototype, \"cssClass\", void 0);\n __decorate([\n Property('')\n ], RibbonCheckBoxSettings.prototype, \"label\", void 0);\n __decorate([\n Property('After')\n ], RibbonCheckBoxSettings.prototype, \"labelPosition\", void 0);\n __decorate([\n Event()\n ], RibbonCheckBoxSettings.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], RibbonCheckBoxSettings.prototype, \"change\", void 0);\n return RibbonCheckBoxSettings;\n}(ChildProperty));\nexport { RibbonCheckBoxSettings };\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 { ChildProperty, Event, Property } from '@syncfusion/ej2-base';\n/**\n * Defines the ribbon color picker.\n */\nvar RibbonColorPickerSettings = /** @class */ (function (_super) {\n __extends(RibbonColorPickerSettings, _super);\n function RibbonColorPickerSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of colorpicker.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonColorPickerSettings.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property(10)\n ], RibbonColorPickerSettings.prototype, \"columns\", void 0);\n __decorate([\n Property('')\n ], RibbonColorPickerSettings.prototype, \"cssClass\", void 0);\n __decorate([\n Property(true)\n ], RibbonColorPickerSettings.prototype, \"enableOpacity\", void 0);\n __decorate([\n Property('Picker')\n ], RibbonColorPickerSettings.prototype, \"mode\", void 0);\n __decorate([\n Property(true)\n ], RibbonColorPickerSettings.prototype, \"modeSwitcher\", void 0);\n __decorate([\n Property(false)\n ], RibbonColorPickerSettings.prototype, \"noColor\", void 0);\n __decorate([\n Property(null)\n ], RibbonColorPickerSettings.prototype, \"presetColors\", void 0);\n __decorate([\n Property(true)\n ], RibbonColorPickerSettings.prototype, \"showButtons\", void 0);\n __decorate([\n Property('#008000ff')\n ], RibbonColorPickerSettings.prototype, \"value\", void 0);\n __decorate([\n Event()\n ], RibbonColorPickerSettings.prototype, \"beforeClose\", void 0);\n __decorate([\n Event()\n ], RibbonColorPickerSettings.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], RibbonColorPickerSettings.prototype, \"beforeTileRender\", void 0);\n __decorate([\n Event()\n ], RibbonColorPickerSettings.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], RibbonColorPickerSettings.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], RibbonColorPickerSettings.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], RibbonColorPickerSettings.prototype, \"select\", void 0);\n return RibbonColorPickerSettings;\n}(ChildProperty));\nexport { RibbonColorPickerSettings };\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 { ChildProperty, Event, Property, Complex } from '@syncfusion/ej2-base';\nimport { FieldSettings } from '@syncfusion/ej2-dropdowns';\n/**\n * Defines the ribbon combobox item.\n */\nvar RibbonComboBoxSettings = /** @class */ (function (_super) {\n __extends(RibbonComboBoxSettings, _super);\n function RibbonComboBoxSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of combobox.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonComboBoxSettings.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property(false)\n ], RibbonComboBoxSettings.prototype, \"allowFiltering\", void 0);\n __decorate([\n Property(true)\n ], RibbonComboBoxSettings.prototype, \"autofill\", void 0);\n __decorate([\n Property('')\n ], RibbonComboBoxSettings.prototype, \"cssClass\", void 0);\n __decorate([\n Property([])\n ], RibbonComboBoxSettings.prototype, \"dataSource\", void 0);\n __decorate([\n Complex({ text: null, value: null, iconCss: null, groupBy: null }, FieldSettings)\n ], RibbonComboBoxSettings.prototype, \"fields\", void 0);\n __decorate([\n Property('Contains')\n ], RibbonComboBoxSettings.prototype, \"filterType\", void 0);\n __decorate([\n Property(null)\n ], RibbonComboBoxSettings.prototype, \"footerTemplate\", void 0);\n __decorate([\n Property(null)\n ], RibbonComboBoxSettings.prototype, \"groupTemplate\", void 0);\n __decorate([\n Property(null)\n ], RibbonComboBoxSettings.prototype, \"headerTemplate\", void 0);\n __decorate([\n Property(null)\n ], RibbonComboBoxSettings.prototype, \"index\", void 0);\n __decorate([\n Property(null)\n ], RibbonComboBoxSettings.prototype, \"itemTemplate\", void 0);\n __decorate([\n Property('No records found')\n ], RibbonComboBoxSettings.prototype, \"noRecordsTemplate\", void 0);\n __decorate([\n Property(null)\n ], RibbonComboBoxSettings.prototype, \"placeholder\", void 0);\n __decorate([\n Property('300px')\n ], RibbonComboBoxSettings.prototype, \"popupHeight\", void 0);\n __decorate([\n Property('100%')\n ], RibbonComboBoxSettings.prototype, \"popupWidth\", void 0);\n __decorate([\n Property(true)\n ], RibbonComboBoxSettings.prototype, \"showClearButton\", void 0);\n __decorate([\n Property('None')\n ], RibbonComboBoxSettings.prototype, \"sortOrder\", void 0);\n __decorate([\n Property(null)\n ], RibbonComboBoxSettings.prototype, \"text\", void 0);\n __decorate([\n Property(null)\n ], RibbonComboBoxSettings.prototype, \"value\", void 0);\n __decorate([\n Property('150px')\n ], RibbonComboBoxSettings.prototype, \"width\", void 0);\n __decorate([\n Event()\n ], RibbonComboBoxSettings.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], RibbonComboBoxSettings.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], RibbonComboBoxSettings.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], RibbonComboBoxSettings.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], RibbonComboBoxSettings.prototype, \"filtering\", void 0);\n __decorate([\n Event()\n ], RibbonComboBoxSettings.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], RibbonComboBoxSettings.prototype, \"select\", void 0);\n return RibbonComboBoxSettings;\n}(ChildProperty));\nexport { RibbonComboBoxSettings };\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 { ChildProperty, Collection, Event, Property } from '@syncfusion/ej2-base';\nimport { Item } from '@syncfusion/ej2-splitbuttons';\n/**\n * Defines the ribbon DropDownButton item.\n */\nvar RibbonDropDownSettings = /** @class */ (function (_super) {\n __extends(RibbonDropDownSettings, _super);\n function RibbonDropDownSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of DropDown.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonDropDownSettings.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property('')\n ], RibbonDropDownSettings.prototype, \"closeActionEvents\", void 0);\n __decorate([\n Property('')\n ], RibbonDropDownSettings.prototype, \"content\", void 0);\n __decorate([\n Property('')\n ], RibbonDropDownSettings.prototype, \"cssClass\", void 0);\n __decorate([\n Property('')\n ], RibbonDropDownSettings.prototype, \"iconCss\", void 0);\n __decorate([\n Collection([], Item)\n ], RibbonDropDownSettings.prototype, \"items\", void 0);\n __decorate([\n Property('')\n ], RibbonDropDownSettings.prototype, \"target\", void 0);\n __decorate([\n Property(false)\n ], RibbonDropDownSettings.prototype, \"createPopupOnClick\", void 0);\n __decorate([\n Event()\n ], RibbonDropDownSettings.prototype, \"beforeClose\", void 0);\n __decorate([\n Event()\n ], RibbonDropDownSettings.prototype, \"beforeItemRender\", void 0);\n __decorate([\n Event()\n ], RibbonDropDownSettings.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], RibbonDropDownSettings.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], RibbonDropDownSettings.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], RibbonDropDownSettings.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], RibbonDropDownSettings.prototype, \"select\", void 0);\n return RibbonDropDownSettings;\n}(ChildProperty));\nexport { RibbonDropDownSettings };\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 { ChildProperty, Collection, Event, Property } from '@syncfusion/ej2-base';\nimport { Item } from '@syncfusion/ej2-splitbuttons';\n/**\n * Defines the ribbon SplitButton item.\n */\nvar RibbonSplitButtonSettings = /** @class */ (function (_super) {\n __extends(RibbonSplitButtonSettings, _super);\n function RibbonSplitButtonSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of DropDown.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonSplitButtonSettings.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property('')\n ], RibbonSplitButtonSettings.prototype, \"closeActionEvents\", void 0);\n __decorate([\n Property('')\n ], RibbonSplitButtonSettings.prototype, \"content\", void 0);\n __decorate([\n Property('')\n ], RibbonSplitButtonSettings.prototype, \"cssClass\", void 0);\n __decorate([\n Property('')\n ], RibbonSplitButtonSettings.prototype, \"iconCss\", void 0);\n __decorate([\n Collection([], Item)\n ], RibbonSplitButtonSettings.prototype, \"items\", void 0);\n __decorate([\n Property('')\n ], RibbonSplitButtonSettings.prototype, \"target\", void 0);\n __decorate([\n Event()\n ], RibbonSplitButtonSettings.prototype, \"beforeClose\", void 0);\n __decorate([\n Event()\n ], RibbonSplitButtonSettings.prototype, \"beforeItemRender\", void 0);\n __decorate([\n Event()\n ], RibbonSplitButtonSettings.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], RibbonSplitButtonSettings.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], RibbonSplitButtonSettings.prototype, \"click\", void 0);\n __decorate([\n Event()\n ], RibbonSplitButtonSettings.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], RibbonSplitButtonSettings.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], RibbonSplitButtonSettings.prototype, \"select\", void 0);\n return RibbonSplitButtonSettings;\n}(ChildProperty));\nexport { RibbonSplitButtonSettings };\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 { ChildProperty, Property } from '@syncfusion/ej2-base';\n/**\n * Defines the ribbon tooltip.\n */\nvar RibbonTooltip = /** @class */ (function (_super) {\n __extends(RibbonTooltip, _super);\n function RibbonTooltip() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], RibbonTooltip.prototype, \"cssClass\", void 0);\n __decorate([\n Property('')\n ], RibbonTooltip.prototype, \"id\", void 0);\n __decorate([\n Property('')\n ], RibbonTooltip.prototype, \"title\", void 0);\n __decorate([\n Property('')\n ], RibbonTooltip.prototype, \"content\", void 0);\n __decorate([\n Property('')\n ], RibbonTooltip.prototype, \"iconCss\", void 0);\n return RibbonTooltip;\n}(ChildProperty));\nexport { RibbonTooltip };\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 { ChildProperty, Event, Property, Complex } from '@syncfusion/ej2-base';\nimport { RibbonTooltip } from './ribbon-tooltip';\n/**\n * Defines the ribbon group button settings.\n */\nvar RibbonGroupButtonItem = /** @class */ (function (_super) {\n __extends(RibbonGroupButtonItem, _super);\n function RibbonGroupButtonItem() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], RibbonGroupButtonItem.prototype, \"content\", void 0);\n __decorate([\n Property('')\n ], RibbonGroupButtonItem.prototype, \"iconCss\", void 0);\n __decorate([\n Complex({}, RibbonTooltip)\n ], RibbonGroupButtonItem.prototype, \"ribbonTooltipSettings\", void 0);\n __decorate([\n Property(false)\n ], RibbonGroupButtonItem.prototype, \"selected\", void 0);\n __decorate([\n Event()\n ], RibbonGroupButtonItem.prototype, \"beforeClick\", void 0);\n __decorate([\n Event()\n ], RibbonGroupButtonItem.prototype, \"click\", void 0);\n return RibbonGroupButtonItem;\n}(ChildProperty));\nexport { RibbonGroupButtonItem };\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 { ChildProperty, Collection, Property } from '@syncfusion/ej2-base';\nimport { RibbonGroupButtonItem } from './ribbon-group-button-item';\n/**\n * Defines the ribbon group button settings.\n */\nvar RibbonGroupButtonSettings = /** @class */ (function (_super) {\n __extends(RibbonGroupButtonSettings, _super);\n function RibbonGroupButtonSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('Single')\n ], RibbonGroupButtonSettings.prototype, \"selection\", void 0);\n __decorate([\n Collection([], RibbonGroupButtonItem)\n ], RibbonGroupButtonSettings.prototype, \"items\", void 0);\n return RibbonGroupButtonSettings;\n}(ChildProperty));\nexport { RibbonGroupButtonSettings };\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 { ChildProperty, Complex, Property } from '@syncfusion/ej2-base';\nimport { RibbonItemSize, DisplayMode } from '../base/interface';\nimport { RibbonButtonSettings } from './ribbon-button-settings';\nimport { RibbonCheckBoxSettings } from './ribbon-checkbox-settings';\nimport { RibbonColorPickerSettings } from './ribbon-colorpicker-settings';\nimport { RibbonComboBoxSettings } from './ribbon-combobox-settings';\nimport { RibbonDropDownSettings } from './ribbon-dropdown-settings';\nimport { RibbonSplitButtonSettings } from './ribbon-splitbutton-settings';\nimport { RibbonTooltip } from './ribbon-tooltip';\nimport { RibbonGroupButtonSettings } from './ribbon-group-button-settings';\n/**\n * Defines the ribbon item.\n */\nvar RibbonItem = /** @class */ (function (_super) {\n __extends(RibbonItem, _super);\n function RibbonItem() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of item.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonItem.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property(RibbonItemSize.Medium)\n ], RibbonItem.prototype, \"activeSize\", void 0);\n __decorate([\n Property(RibbonItemSize.Small | RibbonItemSize.Medium | RibbonItemSize.Large)\n ], RibbonItem.prototype, \"allowedSizes\", void 0);\n __decorate([\n Property('')\n ], RibbonItem.prototype, \"id\", void 0);\n __decorate([\n Property('')\n ], RibbonItem.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], RibbonItem.prototype, \"disabled\", void 0);\n __decorate([\n Property('')\n ], RibbonItem.prototype, \"itemTemplate\", void 0);\n __decorate([\n Property('Button')\n ], RibbonItem.prototype, \"type\", void 0);\n __decorate([\n Property(DisplayMode.Auto)\n ], RibbonItem.prototype, \"displayOptions\", void 0);\n __decorate([\n Complex({}, RibbonTooltip)\n ], RibbonItem.prototype, \"ribbonTooltipSettings\", void 0);\n __decorate([\n Complex({}, RibbonButtonSettings)\n ], RibbonItem.prototype, \"buttonSettings\", void 0);\n __decorate([\n Complex({}, RibbonDropDownSettings)\n ], RibbonItem.prototype, \"dropDownSettings\", void 0);\n __decorate([\n Complex({}, RibbonCheckBoxSettings)\n ], RibbonItem.prototype, \"checkBoxSettings\", void 0);\n __decorate([\n Complex({}, RibbonColorPickerSettings)\n ], RibbonItem.prototype, \"colorPickerSettings\", void 0);\n __decorate([\n Complex({}, RibbonComboBoxSettings)\n ], RibbonItem.prototype, \"comboBoxSettings\", void 0);\n __decorate([\n Complex({}, RibbonSplitButtonSettings)\n ], RibbonItem.prototype, \"splitButtonSettings\", void 0);\n __decorate([\n Complex({}, RibbonGroupButtonSettings)\n ], RibbonItem.prototype, \"groupButtonSettings\", void 0);\n return RibbonItem;\n}(ChildProperty));\nexport { RibbonItem };\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 { ChildProperty, Collection, Property } from '@syncfusion/ej2-base';\nimport { RibbonItem } from './ribbon-item';\n/**\n * Defines the items of Ribbon.\n */\nvar RibbonCollection = /** @class */ (function (_super) {\n __extends(RibbonCollection, _super);\n function RibbonCollection() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of collection.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonCollection.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property('')\n ], RibbonCollection.prototype, \"id\", void 0);\n __decorate([\n Property('')\n ], RibbonCollection.prototype, \"cssClass\", void 0);\n __decorate([\n Collection([], RibbonItem)\n ], RibbonCollection.prototype, \"items\", void 0);\n return RibbonCollection;\n}(ChildProperty));\nexport { RibbonCollection };\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 { ChildProperty, Collection, Property } from '@syncfusion/ej2-base';\nimport { RibbonCollection } from './ribbon-collection';\n/**\n * Defines the ribbon group.\n */\nvar RibbonGroup = /** @class */ (function (_super) {\n __extends(RibbonGroup, _super);\n function RibbonGroup() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of Group.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonGroup.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Collection([], RibbonCollection)\n ], RibbonGroup.prototype, \"collections\", void 0);\n __decorate([\n Property('')\n ], RibbonGroup.prototype, \"cssClass\", void 0);\n __decorate([\n Property('')\n ], RibbonGroup.prototype, \"id\", void 0);\n __decorate([\n Property(false)\n ], RibbonGroup.prototype, \"isCollapsed\", void 0);\n __decorate([\n Property(true)\n ], RibbonGroup.prototype, \"isCollapsible\", void 0);\n __decorate([\n Property(false)\n ], RibbonGroup.prototype, \"enableGroupOverflow\", void 0);\n __decorate([\n Property('')\n ], RibbonGroup.prototype, \"groupIconCss\", void 0);\n __decorate([\n Property('')\n ], RibbonGroup.prototype, \"header\", void 0);\n __decorate([\n Property('Column')\n ], RibbonGroup.prototype, \"orientation\", void 0);\n __decorate([\n Property(0)\n ], RibbonGroup.prototype, \"priority\", void 0);\n __decorate([\n Property(false)\n ], RibbonGroup.prototype, \"showLauncherIcon\", void 0);\n return RibbonGroup;\n}(ChildProperty));\nexport { RibbonGroup };\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 { ChildProperty, Collection, Property } from '@syncfusion/ej2-base';\nimport { RibbonGroup } from './ribbon-group';\n/**\n * Defines the ribbon tab.\n */\nvar RibbonTab = /** @class */ (function (_super) {\n __extends(RibbonTab, _super);\n function RibbonTab() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of tab.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonTab.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property('')\n ], RibbonTab.prototype, \"id\", void 0);\n __decorate([\n Property('')\n ], RibbonTab.prototype, \"cssClass\", void 0);\n __decorate([\n Collection([], RibbonGroup)\n ], RibbonTab.prototype, \"groups\", void 0);\n __decorate([\n Property('')\n ], RibbonTab.prototype, \"header\", void 0);\n return RibbonTab;\n}(ChildProperty));\nexport { RibbonTab };\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 { ChildProperty, Property, Event, Complex, Collection } from '@syncfusion/ej2-base';\nimport { MenuAnimationSettings, MenuItem } from '@syncfusion/ej2-navigations';\nimport { RibbonTooltip } from './ribbon-tooltip';\n/**\n * Defines the ribbon file menu settings.\n */\nvar FileMenuSettings = /** @class */ (function (_super) {\n __extends(FileMenuSettings, _super);\n function FileMenuSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of FileMenu.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n FileMenuSettings.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property('File')\n ], FileMenuSettings.prototype, \"text\", void 0);\n __decorate([\n Property(false)\n ], FileMenuSettings.prototype, \"visible\", void 0);\n __decorate([\n Collection([], MenuItem)\n ], FileMenuSettings.prototype, \"menuItems\", void 0);\n __decorate([\n Property(false)\n ], FileMenuSettings.prototype, \"showItemOnClick\", void 0);\n __decorate([\n Complex({}, MenuAnimationSettings)\n ], FileMenuSettings.prototype, \"animationSettings\", void 0);\n __decorate([\n Property('')\n ], FileMenuSettings.prototype, \"itemTemplate\", void 0);\n __decorate([\n Property('')\n ], FileMenuSettings.prototype, \"popupTemplate\", void 0);\n __decorate([\n Complex({}, RibbonTooltip)\n ], FileMenuSettings.prototype, \"ribbonTooltipSettings\", void 0);\n __decorate([\n Event()\n ], FileMenuSettings.prototype, \"beforeClose\", void 0);\n __decorate([\n Event()\n ], FileMenuSettings.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], FileMenuSettings.prototype, \"beforeItemRender\", void 0);\n __decorate([\n Event()\n ], FileMenuSettings.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], FileMenuSettings.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], FileMenuSettings.prototype, \"select\", void 0);\n return FileMenuSettings;\n}(ChildProperty));\nexport { FileMenuSettings };\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 { ChildProperty, Property } from '@syncfusion/ej2-base';\n/**\n * Defines the ribbon backstage back button.\n */\nvar BackstageBackButton = /** @class */ (function (_super) {\n __extends(BackstageBackButton, _super);\n function BackstageBackButton() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], BackstageBackButton.prototype, \"text\", void 0);\n __decorate([\n Property('')\n ], BackstageBackButton.prototype, \"iconCss\", void 0);\n __decorate([\n Property(true)\n ], BackstageBackButton.prototype, \"visible\", void 0);\n return BackstageBackButton;\n}(ChildProperty));\nexport { BackstageBackButton };\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 { ChildProperty, Property, Event } from '@syncfusion/ej2-base';\n/**\n * Defines the ribbon backstage back button.\n */\nvar BackstageItem = /** @class */ (function (_super) {\n __extends(BackstageItem, _super);\n function BackstageItem() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], BackstageItem.prototype, \"text\", void 0);\n __decorate([\n Property('')\n ], BackstageItem.prototype, \"id\", void 0);\n __decorate([\n Property('')\n ], BackstageItem.prototype, \"content\", void 0);\n __decorate([\n Property('')\n ], BackstageItem.prototype, \"iconCss\", void 0);\n __decorate([\n Property(false)\n ], BackstageItem.prototype, \"separator\", void 0);\n __decorate([\n Property(false)\n ], BackstageItem.prototype, \"isFooter\", void 0);\n __decorate([\n Event()\n ], BackstageItem.prototype, \"backStageItemClick\", void 0);\n return BackstageItem;\n}(ChildProperty));\nexport { BackstageItem };\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 { ChildProperty, Property, Complex, Collection } from '@syncfusion/ej2-base';\nimport { BackstageBackButton } from './ribbon-back-button';\nimport { BackstageItem } from './ribbon-backstage-item';\nimport { RibbonTooltip } from './ribbon-tooltip';\n/**\n * Defines the ribbon file menu settings.\n */\nvar BackStageMenu = /** @class */ (function (_super) {\n __extends(BackStageMenu, _super);\n function BackStageMenu() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of Backstage Menu.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n BackStageMenu.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property('File')\n ], BackStageMenu.prototype, \"text\", void 0);\n __decorate([\n Property(false)\n ], BackStageMenu.prototype, \"visible\", void 0);\n __decorate([\n Property('auto')\n ], BackStageMenu.prototype, \"height\", void 0);\n __decorate([\n Property('auto')\n ], BackStageMenu.prototype, \"width\", void 0);\n __decorate([\n Property(null)\n ], BackStageMenu.prototype, \"target\", void 0);\n __decorate([\n Complex({}, BackstageBackButton)\n ], BackStageMenu.prototype, \"backButton\", void 0);\n __decorate([\n Collection([], BackstageItem)\n ], BackStageMenu.prototype, \"items\", void 0);\n __decorate([\n Property('')\n ], BackStageMenu.prototype, \"template\", void 0);\n __decorate([\n Complex({}, RibbonTooltip)\n ], BackStageMenu.prototype, \"ribbonTooltipSettings\", void 0);\n return BackStageMenu;\n}(ChildProperty));\nexport { BackStageMenu };\n","// export * from './file-menu';\nexport * from './ribbon-tab';\nexport * from './ribbon-group';\nexport * from './ribbon-collection';\nexport * from './ribbon-item';\nexport * from './ribbon-button-settings';\nexport * from './ribbon-checkbox-settings';\nexport * from './ribbon-colorpicker-settings';\nexport * from './ribbon-combobox-settings';\nexport * from './ribbon-dropdown-settings';\nexport * from './ribbon-splitbutton-settings';\nexport * from './ribbon-file-menu-settings';\nexport * from './ribbon-back-stage-settings';\nexport * from './ribbon-back-button';\nexport * from './ribbon-backstage-item';\nexport * from './ribbon-tooltip';\nexport * from './ribbon-group-button-settings';\nexport * from './ribbon-group-button-item';\n","/**\n * Specifies the File Manager internal ID's\n */\n/** @hidden */\nexport var ITEM_VERTICAL_CENTER = 'e-ribbon-vertical-center';\n/** @hidden */\nexport var EXPAND_COLLAPSE_ICON = 'e-icons e-drop-icon';\n/** @hidden */\nexport var BACKSTAGE_CLOSE_ICON = 'e-icons e-arrow-left';\n/** @hidden */\nexport var OVERFLOW_ICON = 'e-icons e-more-horizontal-1';\n/** @hidden */\nexport var VERTICAL_DDB = 'e-vertical';\n/** @hidden */\nexport var DISABLED_CSS = 'e-disabled';\n/** @hidden */\nexport var RTL_CSS = 'e-rtl';\n/** @hidden */\nexport var RIBBON_HOVER = 'e-ribbon-hover';\n/** @hidden */\nexport var RIBBON_CONTROL = 'e-ribbon-control';\n/** @hidden */\nexport var RIBBON_POPUP_CONTROL = 'e-ribbon-popup-control';\n/** @hidden */\nexport var RIBBON_POPUP_OPEN = 'e-ribbon-open';\n/** @hidden */\nexport var SPACE = ' ';\n/** @hidden */\nexport var HORIZONTAL_SCROLLBAR = 'e-hscroll-bar';\n/** @hidden */\nexport var HIDE_CSS = 'e-ribbon-hide';\n/** @hidden */\nexport var RIBBON_TAB = 'e-ribbon-tab';\n/** @hidden */\nexport var RIBBON_TAB_ACTIVE = 'e-ribbon-active';\n/** @hidden */\nexport var RIBBON_TAB_ITEM = 'e-ribbon-tab-item';\n/** @hidden */\nexport var RIBBON_COLLAPSE_BUTTON = 'e-ribbon-collapse-btn';\n/** @hidden */\nexport var RIBBON_EXPAND_BUTTON = 'e-ribbon-expand-btn';\n/** @hidden */\nexport var RIBBON_COLLAPSIBLE = 'e-ribbon-collapsible';\n/** @hidden */\nexport var RIBBON_OVERALL_OF_BUTTON = 'e-ribbon-overall-of-btn';\n/** @hidden */\nexport var RIBBON_GROUP_OF_BUTTON = 'e-ribbon-group-of-btn';\n/** @hidden */\nexport var RIBBON_OVERFLOW_TARGET = 'e-ribbon-overflow-target';\n/** @hidden */\nexport var RIBBON_OVERFLOW = 'e-ribbon-overflow';\n/** @hidden */\nexport var TAB_CONTENT = 'e-content';\n/** @hidden */\nexport var RIBBON_MINIMIZE = 'e-ribbon-minimize';\n/** @hidden */\nexport var RIBBON_GROUP = 'e-ribbon-group';\n/** @hidden */\nexport var RIBBON_SINGLE_BUTTON_SELECTION = 'e-ribbon-single-selection';\n/** @hidden */\nexport var RIBBON_MULTIPLE_BUTTON_SELECTION = 'e-ribbon-multiple-selection';\n/** @hidden */\nexport var RIBBON_GROUP_BUTTON = 'e-ribbon-group-button';\n/** @hidden */\nexport var RIBBON_GROUP_BUTTON_OVERFLOW_POPUP = 'e-ribbon-group-button-overflow-popup';\n/** @hidden */\nexport var RIBBON_GROUP_CONTAINER = 'e-ribbon-group-container';\n/** @hidden */\nexport var RIBBON_OF_TAB_CONTAINER = 'e-ribbon-of-tab';\n/** @hidden */\nexport var RIBBON_OF_GROUP_CONTAINER = 'e-ribbon-of-group-container';\n/** @hidden */\nexport var RIBBON_GROUP_CONTENT = 'e-ribbon-group-content';\n/** @hidden */\nexport var RIBBON_GROUP_HEADER = 'e-ribbon-group-header';\n/** @hidden */\nexport var RIBBON_OVERFLOW_HEADER = 'e-ribbon-overflow-header';\n/** @hidden */\nexport var RIBBON_GROUP_OVERFLOW = 'e-ribbon-group-overflow';\n/** @hidden */\nexport var RIBBON_GROUP_OVERFLOW_DDB = 'e-ribbon-group-overflow-ddb';\n/** @hidden */\nexport var RIBBON_LAUNCHER = 'e-ribbon-launcher';\n/** @hidden */\nexport var RIBBON_LAUNCHER_ICON_ELE = 'e-ribbon-launcher-icon';\n/** @hidden */\nexport var RIBBON_LAUNCHER_ICON = 'e-icons e-launcher';\n/** @hidden */\nexport var RIBBON_COLLECTION = 'e-ribbon-collection';\n/** @hidden */\nexport var RIBBON_ITEM = 'e-ribbon-item';\n/** @hidden */\nexport var RIBBON_ROW = 'e-ribbon-row';\n/** @hidden */\nexport var RIBBON_COLUMN = 'e-ribbon-column';\n/** @hidden */\nexport var RIBBON_LARGE_ITEM = 'e-ribbon-large-item';\n/** @hidden */\nexport var RIBBON_MEDIUM_ITEM = 'e-ribbon-medium-item';\n/** @hidden */\nexport var RIBBON_SMALL_ITEM = 'e-ribbon-small-item';\n/** @hidden */\nexport var RIBBON_CONTENT_HEIGHT = 'e-ribbon-content-height';\n/** @hidden */\nexport var DROPDOWNBUTTON = 'e-dropdown-btn';\n/** @hidden */\nexport var DROPDOWNBUTTON_HIDE = 'e-caret-hide';\n/** @hidden */\nexport var RIBBON_TEMPLATE = 'e-ribbon-template';\n/** @hidden */\nexport var RIBBON_HELP_TEMPLATE = 'e-ribbon-help-template';\n/** @hidden */\nexport var RIBBON_TOOLTIP = 'e-ribbon-tooltip';\n/** @hidden */\nexport var RIBBON_TOOLTIP_TARGET = 'e-ribbon-tooltip-target';\n/** @hidden */\nexport var RIBBON_TOOLTIP_TITLE = 'e-ribbon-tooltip-title';\n/** @hidden */\nexport var RIBBON_TOOLTIP_CONTENT = 'e-ribbon-tooltip-content';\n/** @hidden */\nexport var RIBBON_TOOLTIP_ICON = 'e-ribbon-tooltip-icon';\n/** @hidden */\nexport var RIBBON_TOOLTIP_CONTAINER = 'e-ribbon-tooltip-container';\n/** @hidden */\nexport var RIBBON_TEXT_CONTAINER = 'e-ribbon-text-container';\n/** @hidden */\nexport var RIBBON_SIMPLIFIED_MODE = 'e-ribbon-simplified-mode';\n/** @hidden */\nexport var RIBBON_BACKSTAGE_POPUP = 'e-ribbon-backstage-popup';\n/** @hidden */\nexport var RIBBON_BACKSTAGE_OPEN = 'e-ribbon-backstage-open';\n/** @hidden */\nexport var RIBBON_BACKSTAGE_CONTENT = 'e-ribbon-backstage-content';\n/** @hidden */\nexport var RIBBON_SELECTED_CONTENT = 'e-ribbon-selected-content';\n/** @hidden */\nexport var RIBBON_BACKSTAGE = 'e-ribbon-backstage';\n/** @hidden */\nexport var RIBBON_BACKSTAGE_MENU = 'e-ribbon-backstage-menu';\n/** @hidden */\nexport var RIBBON_BACKSTAGE_TEMPLATE = 'e-ribbon-backstage-template';\n/** @hidden */\nexport var RIBBON_BACKSTAGE_MENU_WRAPPER = 'e-ribbon-backstage-wrapper';\n/** @hidden */\nexport var RIBBON_BACKSTAGE_ITEMS_WRAPPER = 'e-ribbon-backstage-items-wrapper';\n/** @hidden */\nexport var RIBBON_BACKSTAGE_TEXT_MENU = 'e-blankicon';\n/** @hidden */\nexport var TAB_ID = '_tab';\n/** @hidden */\nexport var GROUP_ID = '_group';\n/** @hidden */\nexport var COLLECTION_ID = '_collection';\n/** @hidden */\nexport var ITEM_ID = '_item';\n/** @hidden */\nexport var COLLAPSE_BUTTON_ID = '_collapsebutton';\n/** @hidden */\nexport var OVRLOF_BUTTON_ID = '_sim_ovrl_overflow';\n/** @hidden */\nexport var GROUPOF_BUTTON_ID = '_sim_grp_overflow';\n/** @hidden */\nexport var HEADER_ID = '_header';\n/** @hidden */\nexport var LAUNCHER_ID = '_launcher';\n/** @hidden */\nexport var CONTENT_ID = '_content';\n/** @hidden */\nexport var CONTAINER_ID = '_container';\n/** @hidden */\nexport var OVERFLOW_ID = '_overflow';\n/** @hidden */\nexport var DROPDOWN_ID = '_dropdown';\n/** @hidden */\nexport var RIBBON_FILE_MENU_ID = '_filemenu';\n/** @hidden */\nexport var RIBBON_BACKSTAGE_MENU_ID = '_backstage';\n/** @hidden */\nexport var RIBBON_BACKSTAGE_POPUP_ID = '_backstagepopup';\n/** @hidden */\nexport var RIBBON_FILE_MENU_LIST = '_filemenulist';\n/** @hidden */\nexport var RIBBON_MENU_LIST = '_menulist';\n/** @hidden */\nexport var RIBBON_FOOTER_MENU_LIST = '_footermenulist';\n/** @hidden */\nexport var RIBBON_HELP_PANE_TEMPLATE_ID = '_helppanetemplate';\n/** @hidden */\nexport var RIBBON_GROUP_BUTTON_ID = '_grpbtn';\n/** @hidden */\nexport var RIBBON_FILE_MENU_WIDTH = '--fileMenuWidth';\n/** @hidden */\nexport var RIBBON_HELP_PANE_TEMPLATE_WIDTH = '--helpTemplateWidth';\n","import { getComponent, merge } from '@syncfusion/ej2-base';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { getItem, getItemElement, RibbonItemSize } from '../base/index';\nimport { ITEM_VERTICAL_CENTER, RIBBON_CONTROL, RIBBON_POPUP_CONTROL, SPACE } from '../base/constant';\n/**\n * Defines the items of Ribbon.\n */\nvar RibbonButton = /** @class */ (function () {\n function RibbonButton(parent) {\n this.parent = parent;\n }\n RibbonButton.prototype.getModuleName = function () {\n return 'ribbonButton';\n };\n RibbonButton.prototype.destroy = function () {\n this.parent = null;\n };\n /**\n * Creates button.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonButton.prototype.createButton = function (item, itemEle) {\n var _this = this;\n var buttonEle = this.parent.createElement('button', {\n id: item.id\n });\n itemEle.appendChild(buttonEle);\n var btnSettings = item.buttonSettings;\n new Button({\n locale: this.parent.locale,\n enableRtl: this.parent.enableRtl,\n enablePersistence: this.parent.enablePersistence,\n iconPosition: item.activeSize === RibbonItemSize.Large ? 'Top' : 'Left',\n iconCss: btnSettings.iconCss,\n disabled: item.disabled,\n cssClass: (ITEM_VERTICAL_CENTER + SPACE + RIBBON_CONTROL + SPACE + (btnSettings.cssClass ? btnSettings.cssClass : '')).trim(),\n content: item.activeSize === RibbonItemSize.Small ? '' : btnSettings.content,\n isPrimary: btnSettings.isPrimary,\n isToggle: btnSettings.isToggle,\n created: btnSettings.created\n }, buttonEle);\n buttonEle.onclick = function (e) {\n if (btnSettings.clicked) {\n btnSettings.clicked.call(_this, e);\n }\n };\n buttonEle.setAttribute('aria-label', btnSettings.content);\n };\n /**\n * Adds the additional event handlers as the item moved into overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @param {DropDownButton} overflowButton - Gets the overflow button.\n * @returns {void}\n * @hidden\n */\n RibbonButton.prototype.addOverFlowEvents = function (item, itemEle, overflowButton) {\n var _this = this;\n var buttonEle = itemEle.querySelector('#' + item.id);\n buttonEle.setAttribute('data-control', item.type.toString());\n var buttonObj = getComponent(buttonEle, Button);\n buttonObj.setProperties({ cssClass: buttonObj.cssClass + SPACE + RIBBON_POPUP_CONTROL });\n buttonEle.onclick = function (e) {\n if (item.buttonSettings.clicked) {\n item.buttonSettings.clicked.call(_this, e);\n }\n overflowButton.toggle();\n };\n };\n /**\n * Removes the additional event handlers as the item moved from overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonButton.prototype.removeOverFlowEvents = function (item, itemEle) {\n var _this = this;\n var buttonEle = itemEle.querySelector('#' + item.id);\n var buttonObj = getComponent(buttonEle, Button);\n var cssClass = buttonObj.cssClass.split(SPACE);\n cssClass = cssClass.filter(function (value) { return value !== RIBBON_POPUP_CONTROL; });\n buttonObj.setProperties({ cssClass: cssClass.join(SPACE) });\n buttonEle.onclick = function (e) {\n if (item.buttonSettings.clicked) {\n item.buttonSettings.clicked.call(_this, e);\n }\n };\n };\n /**\n * Triggers the click action on the button.\n *\n * @param {string} controlId - Gets the control ID.\n * @returns {void}\n */\n RibbonButton.prototype.click = function (controlId) {\n var buttonEle = getItemElement(this.parent, controlId);\n if (!buttonEle) {\n return;\n }\n var buttonObj = getComponent(buttonEle, Button);\n buttonObj.click();\n };\n /**\n * Updates the button properties.\n *\n * @param {RibbonButtonSettingsModel} prop - Gets the button property.\n * @param {string} id - Gets the ID of button item.\n * @returns {void}\n */\n RibbonButton.prototype.updateButton = function (prop, id) {\n var itemProp = getItem(this.parent.tabs, id);\n if (!itemProp) {\n return;\n }\n merge(itemProp.item.buttonSettings, prop);\n var buttonEle = getItemElement(this.parent, id, itemProp);\n if (!buttonEle) {\n return;\n }\n var buttonObj = getComponent(buttonEle, Button);\n if (prop.isToggle) {\n buttonEle.classList.add('e-active');\n }\n if (prop.cssClass) {\n prop.cssClass = (ITEM_VERTICAL_CENTER + SPACE + RIBBON_CONTROL + SPACE + prop.cssClass).trim();\n }\n if (prop.content) {\n prop.content = itemProp.item.activeSize === RibbonItemSize.Small ? '' : prop.content;\n buttonEle.setAttribute('aria-label', prop.content);\n }\n delete prop.clicked;\n buttonObj.setProperties(prop);\n };\n /**\n * Updates the button size.\n *\n * @param {HTMLElement} element - Gets the button element.\n * @param {RibbonItemModel} item - Gets the ribbon item.\n * @returns {void}\n * @hidden\n */\n RibbonButton.prototype.updateButtonSize = function (element, item) {\n var buttonObj = getComponent(element, Button);\n buttonObj.setProperties({\n iconPosition: item.activeSize === RibbonItemSize.Large ? 'Top' : 'Left',\n content: item.activeSize === RibbonItemSize.Small ? '' : item.buttonSettings.content\n });\n };\n return RibbonButton;\n}());\nexport { RibbonButton };\n","import { getComponent, merge } from '@syncfusion/ej2-base';\nimport { CheckBox } from '@syncfusion/ej2-buttons';\nimport { getItem, getItemElement, RIBBON_CONTROL, SPACE, RIBBON_POPUP_CONTROL } from '../base/index';\n/**\n * Defines the items of Ribbon.\n */\nvar RibbonCheckBox = /** @class */ (function () {\n function RibbonCheckBox(parent) {\n this.parent = parent;\n }\n RibbonCheckBox.prototype.getModuleName = function () {\n return 'ribbonCheckBox';\n };\n RibbonCheckBox.prototype.destroy = function () {\n this.parent = null;\n };\n /**\n * Creates the check box.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonCheckBox.prototype.createCheckBox = function (item, itemEle) {\n var _this = this;\n var inputEle = this.parent.createElement('input', {\n id: item.id\n });\n itemEle.appendChild(inputEle);\n var checkBoxSettings = item.checkBoxSettings;\n new CheckBox({\n locale: this.parent.locale,\n enableRtl: this.parent.enableRtl,\n enablePersistence: this.parent.enablePersistence,\n checked: checkBoxSettings.checked,\n cssClass: (RIBBON_CONTROL + SPACE + (checkBoxSettings.cssClass ? checkBoxSettings.cssClass : '')).trim(),\n label: checkBoxSettings.label,\n labelPosition: checkBoxSettings.labelPosition,\n disabled: item.disabled,\n created: checkBoxSettings.created,\n change: function (e) {\n if (checkBoxSettings.change) {\n checkBoxSettings.change.call(_this, e);\n }\n }\n }, inputEle);\n };\n /**\n * Adds the additional event handlers as the item moved into overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @param {DropDownButton} overflowButton - Gets the overflow button.\n * @returns {void}\n * @hidden\n */\n RibbonCheckBox.prototype.addOverFlowEvents = function (item, itemEle, overflowButton) {\n var _this = this;\n var inputEle = itemEle.querySelector('#' + item.id);\n inputEle.setAttribute('data-control', item.type.toString());\n var checkBoxObj = getComponent(inputEle, CheckBox);\n checkBoxObj.cssClass = checkBoxObj.cssClass + SPACE + RIBBON_POPUP_CONTROL;\n checkBoxObj.dataBind();\n checkBoxObj.change = function (e) {\n if (item.checkBoxSettings.change) {\n item.checkBoxSettings.change.call(_this, e);\n }\n overflowButton.toggle();\n };\n };\n /**\n * Removes the additional event handlers as the item moved from overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonCheckBox.prototype.removeOverFlowEvents = function (item, itemEle) {\n var _this = this;\n var inputEle = itemEle.querySelector('#' + item.id);\n var checkBoxObj = getComponent(inputEle, CheckBox);\n var cssClass = checkBoxObj.cssClass.split(SPACE);\n cssClass = cssClass.filter(function (value) { return value !== RIBBON_POPUP_CONTROL; });\n checkBoxObj.cssClass = cssClass.join(SPACE);\n checkBoxObj.dataBind();\n checkBoxObj.change = function (e) {\n if (item.checkBoxSettings.change) {\n item.checkBoxSettings.change.call(_this, e);\n }\n };\n };\n /**\n * Triggers the click action on the Checkbox.\n *\n * @param {string} controlId - Gets the control ID.\n * @returns {void}\n */\n RibbonCheckBox.prototype.click = function (controlId) {\n var inputEle = getItemElement(this.parent, controlId);\n if (!inputEle) {\n return;\n }\n var checkBoxObj = getComponent(inputEle, CheckBox);\n checkBoxObj.click();\n };\n /**\n * Updates the checkbox.\n *\n * @param {RibbonCheckBoxSettingsModel} prop - Gets the checkbox property.\n * @param {string} id - Gets the ID of checkbox.\n * @returns {void}\n */\n RibbonCheckBox.prototype.updateCheckBox = function (prop, id) {\n var itemProp = getItem(this.parent.tabs, id);\n if (!itemProp) {\n return;\n }\n merge(itemProp.item.checkBoxSettings, prop);\n var inputEle = getItemElement(this.parent, id, itemProp);\n if (!inputEle) {\n return;\n }\n if (prop.cssClass) {\n prop.cssClass = (RIBBON_CONTROL + SPACE + prop.cssClass).trim();\n }\n delete prop.change;\n var checkBoxObj = getComponent(inputEle, CheckBox);\n checkBoxObj.setProperties(prop);\n };\n return RibbonCheckBox;\n}());\nexport { RibbonCheckBox };\n","import { EventHandler, getComponent, merge } from '@syncfusion/ej2-base';\nimport { ColorPicker } from '@syncfusion/ej2-inputs';\nimport { getItem, getItemElement } from '../base/index';\nimport { RIBBON_CONTROL, RIBBON_HOVER, RIBBON_POPUP_CONTROL, RIBBON_POPUP_OPEN, SPACE } from '../base/constant';\n/**\n * Defines the items of Ribbon.\n */\nvar RibbonColorPicker = /** @class */ (function () {\n function RibbonColorPicker(parent) {\n this.parent = parent;\n }\n RibbonColorPicker.prototype.getModuleName = function () {\n return 'ribbonColorPicker';\n };\n RibbonColorPicker.prototype.destroy = function () {\n this.parent = null;\n };\n /**\n * Creates the colorpicker.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonColorPicker.prototype.createColorPicker = function (item, itemEle) {\n var _this = this;\n var inputEle = this.parent.createElement('input', {\n id: item.id\n });\n itemEle.appendChild(inputEle);\n var colorPickerSettings = item.colorPickerSettings;\n var colorPicker = new ColorPicker({\n locale: this.parent.locale,\n enableRtl: this.parent.enableRtl,\n enablePersistence: this.parent.enablePersistence,\n columns: colorPickerSettings.columns,\n cssClass: (RIBBON_CONTROL + SPACE + (colorPickerSettings.cssClass ? colorPickerSettings.cssClass : '')).trim(),\n disabled: item.disabled,\n enableOpacity: colorPickerSettings.enableOpacity,\n mode: colorPickerSettings.mode,\n modeSwitcher: colorPickerSettings.modeSwitcher,\n noColor: colorPickerSettings.noColor,\n presetColors: colorPickerSettings.presetColors,\n showButtons: colorPickerSettings.showButtons,\n value: colorPickerSettings.value,\n beforeClose: function () {\n colorPicker.element.parentElement.classList.remove(RIBBON_POPUP_OPEN);\n if (colorPickerSettings.beforeClose) {\n colorPickerSettings.beforeClose.call(_this);\n }\n },\n beforeOpen: colorPickerSettings.beforeOpen,\n beforeTileRender: colorPickerSettings.beforeTileRender,\n created: colorPickerSettings.created,\n change: colorPickerSettings.change,\n open: function () {\n colorPicker.element.parentElement.classList.add(RIBBON_POPUP_OPEN);\n if (colorPickerSettings.open) {\n colorPickerSettings.open.call(_this);\n }\n },\n select: colorPickerSettings.select\n }, inputEle);\n var wrapper = colorPicker.element.parentElement;\n EventHandler.add(wrapper, 'mouseenter', this.toggleWrapperHover.bind(this, wrapper, true), this);\n EventHandler.add(wrapper, 'mouseleave', this.toggleWrapperHover.bind(this, wrapper, false), this);\n };\n RibbonColorPicker.prototype.toggleWrapperHover = function (wrapper, isAdd) {\n if (isAdd) {\n wrapper.classList.add(RIBBON_HOVER);\n }\n else {\n wrapper.classList.remove(RIBBON_HOVER);\n }\n };\n /**\n * Adds the additional event handlers as the item moved into overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @param {DropDownButton} overflowButton - Gets the overflow button.\n * @returns {void}\n * @hidden\n */\n RibbonColorPicker.prototype.addOverFlowEvents = function (item, itemEle, overflowButton) {\n var _this = this;\n var colorPickerEle = itemEle.querySelector('#' + item.id);\n colorPickerEle.setAttribute('data-control', item.type.toString());\n var colorPickerObj = getComponent(colorPickerEle, ColorPicker);\n colorPickerObj.setProperties({ cssClass: colorPickerObj.cssClass + SPACE + RIBBON_POPUP_CONTROL });\n //Accessing the private property 'splitBtn' of ColorPicker component to get the colorpicker instance as there is no close event in colorpicker.\n var splitBtn = colorPickerObj['splitBtn'];\n var target;\n colorPickerObj.beforeClose = function (e) {\n target = e.event ? e.event.target : null;\n colorPickerObj.element.parentElement.classList.remove(RIBBON_POPUP_OPEN);\n if (item.colorPickerSettings.beforeClose) {\n item.colorPickerSettings.beforeClose.call(_this);\n }\n };\n splitBtn.close = function () {\n if (target && !target.closest('.e-ribbon-group-overflow-ddb')) {\n overflowButton.toggle();\n }\n };\n };\n /**\n * Removes the additional event handlers as the item moved from overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonColorPicker.prototype.removeOverFlowEvents = function (item, itemEle) {\n var _this = this;\n var colorPickerEle = itemEle.querySelector('#' + item.id);\n var colorPickerObj = getComponent(colorPickerEle, ColorPicker);\n var cssClass = colorPickerObj.cssClass.split(SPACE);\n cssClass = cssClass.filter(function (value) { return value !== RIBBON_POPUP_CONTROL; });\n colorPickerObj.setProperties({ cssClass: cssClass.join(SPACE) });\n var splitBtn = colorPickerObj['splitBtn'];\n //Accessing the private property 'splitBtn' of ColorPicker component to get the colorpicker instance as there is no close event in colorpicker.\n splitBtn.close = null;\n colorPickerObj.beforeClose = function () {\n colorPickerObj.element.parentElement.classList.remove(RIBBON_POPUP_OPEN);\n if (item.colorPickerSettings.beforeClose) {\n item.colorPickerSettings.beforeClose.call(_this);\n }\n };\n };\n RibbonColorPicker.prototype.getColorPickerObj = function (controlId) {\n var inputEle = getItemElement(this.parent, controlId);\n return inputEle ? getComponent(inputEle, ColorPicker) : null;\n };\n /**\n * Gets color value in specified type.\n *\n * @param {string} controlId -Gets the control ID.\n * @param {string} value - Specify the color value.\n * @param {string} type - Specify the type to which the specified color needs to be converted.\n * @returns {string} - Returns string.\n */\n RibbonColorPicker.prototype.getValue = function (controlId, value, type) {\n var colorPickerObj = this.getColorPickerObj(controlId);\n return colorPickerObj ? colorPickerObj.getValue(value, type) : '';\n };\n /**\n * To show/hide ColorPicker popup based on current state of the SplitButton.\n *\n * @param {string} controlId - set the id of the control.\n * @returns {void} - Returns void.\n */\n RibbonColorPicker.prototype.toggle = function (controlId) {\n var colorPickerObj = this.getColorPickerObj(controlId);\n if (!colorPickerObj) {\n return;\n }\n colorPickerObj.toggle();\n };\n /**\n * Updates the colorpicker properties.\n *\n * @param {RibbonColorPickerSettingsModel} prop - Gets the colorpicker property.\n * @param {string} id - Gets the ID of colorpicker.\n * @returns {void}\n */\n RibbonColorPicker.prototype.updateColorPicker = function (prop, id) {\n var itemProp = getItem(this.parent.tabs, id);\n if (!itemProp) {\n return;\n }\n merge(itemProp.item.checkBoxSettings, prop);\n var inputEle = getItemElement(this.parent, id, itemProp);\n if (!inputEle) {\n return;\n }\n if (prop.cssClass) {\n prop.cssClass = (RIBBON_CONTROL + SPACE + prop.cssClass).trim();\n }\n delete prop.beforeClose;\n delete prop.open;\n var colorPickerObj = getComponent(inputEle, ColorPicker);\n colorPickerObj.setProperties(prop);\n };\n /**\n * @param {HTMLElement} element - Gets the colorpicker element to be destroyed.\n * @returns {void}\n * @hidden\n */\n RibbonColorPicker.prototype.unwireColorPickerEvents = function (element) {\n var colorPickerObj = getComponent(element, ColorPicker);\n var wrapper = colorPickerObj.element.parentElement;\n EventHandler.remove(wrapper, 'mouseenter', this.toggleWrapperHover);\n EventHandler.remove(wrapper, 'mouseleave', this.toggleWrapperHover);\n };\n return RibbonColorPicker;\n}());\nexport { RibbonColorPicker };\n","import { getComponent, merge } from '@syncfusion/ej2-base';\nimport { ComboBox } from '@syncfusion/ej2-dropdowns';\nimport { getItem, getItemElement, RIBBON_CONTROL, SPACE, RIBBON_POPUP_CONTROL } from '../base/index';\n/**\n * Defines the items of Ribbon.\n */\nvar RibbonComboBox = /** @class */ (function () {\n function RibbonComboBox(parent) {\n this.parent = parent;\n }\n RibbonComboBox.prototype.getModuleName = function () {\n return 'ribbonComboBox';\n };\n RibbonComboBox.prototype.destroy = function () {\n this.parent = null;\n };\n /**\n * Creates the combobox.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonComboBox.prototype.createComboBox = function (item, itemEle) {\n var _this = this;\n var inputEle = this.parent.createElement('input', {\n id: item.id\n });\n itemEle.appendChild(inputEle);\n var comboBoxSettings = item.comboBoxSettings;\n new ComboBox({\n locale: this.parent.locale,\n enableRtl: this.parent.enableRtl,\n enablePersistence: this.parent.enablePersistence,\n allowCustom: false,\n floatLabelType: 'Never',\n ignoreAccent: true,\n ignoreCase: true,\n allowFiltering: comboBoxSettings.allowFiltering,\n autofill: comboBoxSettings.autofill,\n cssClass: (RIBBON_CONTROL + SPACE + (comboBoxSettings.cssClass ? comboBoxSettings.cssClass : '')).trim(),\n dataSource: comboBoxSettings.dataSource,\n enabled: !item.disabled,\n fields: comboBoxSettings.fields,\n filterType: comboBoxSettings.filterType,\n footerTemplate: comboBoxSettings.footerTemplate,\n groupTemplate: comboBoxSettings.groupTemplate,\n headerTemplate: comboBoxSettings.headerTemplate,\n index: comboBoxSettings.index,\n itemTemplate: comboBoxSettings.itemTemplate,\n noRecordsTemplate: comboBoxSettings.noRecordsTemplate,\n placeholder: comboBoxSettings.placeholder,\n popupHeight: comboBoxSettings.popupHeight,\n popupWidth: comboBoxSettings.popupWidth,\n showClearButton: comboBoxSettings.showClearButton,\n sortOrder: comboBoxSettings.sortOrder,\n text: comboBoxSettings.text,\n value: comboBoxSettings.value,\n width: comboBoxSettings.width,\n beforeOpen: comboBoxSettings.beforeOpen,\n open: comboBoxSettings.open,\n close: function (e) {\n if (comboBoxSettings.close) {\n comboBoxSettings.close.call(_this, e);\n }\n },\n filtering: comboBoxSettings.filtering,\n change: comboBoxSettings.change,\n select: comboBoxSettings.select,\n created: comboBoxSettings.created\n }, inputEle);\n };\n /**\n * Adds the additional event handlers as the item moved into overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @param {DropDownButton} overflowButton - Gets the overflow button.\n * @returns {void}\n * @hidden\n */\n RibbonComboBox.prototype.addOverFlowEvents = function (item, itemEle, overflowButton) {\n var _this = this;\n var inputEle = itemEle.querySelector('#' + item.id);\n inputEle.setAttribute('data-control', item.type.toString());\n var comboBoxObj = getComponent(inputEle, ComboBox);\n comboBoxObj.setProperties({ cssClass: comboBoxObj.cssClass + SPACE + RIBBON_POPUP_CONTROL });\n comboBoxObj.close = function (e) {\n var target = e.event ? e.event.target : null;\n if (item.comboBoxSettings.close) {\n item.comboBoxSettings.close.call(_this, e);\n }\n if (target && !target.closest('.e-ribbon-group-overflow-ddb')) {\n overflowButton.toggle();\n }\n };\n };\n /**\n * Removes the additional event handlers as the item moved from overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonComboBox.prototype.removeOverFlowEvents = function (item, itemEle) {\n var _this = this;\n var inputEle = itemEle.querySelector('#' + item.id);\n var comboBoxObj = getComponent(inputEle, ComboBox);\n var cssClass = comboBoxObj.cssClass.split(SPACE);\n cssClass = cssClass.filter(function (value) { return value !== RIBBON_POPUP_CONTROL; });\n comboBoxObj.setProperties({ cssClass: cssClass.join(SPACE) });\n comboBoxObj.close = function (e) {\n if (item.comboBoxSettings.close) {\n item.comboBoxSettings.close.call(_this, e);\n }\n };\n };\n RibbonComboBox.prototype.getComboBoxObj = function (controlId) {\n var inputEle = getItemElement(this.parent, controlId);\n return inputEle ? getComponent(inputEle, ComboBox) : null;\n };\n /**\n * To filter the data from given data source by using query\n *\n * @param {string } controlId - set the id of the control in which methods needs to be called.\n * @param {Object[] } dataSource - Set the data source to filter.\n * @param {Query} query - Specify the query to filter the data.\n * @param {FieldSettingsModel} fields - Specify the fields to map the column in the data table.\n * @returns {void}\n */\n RibbonComboBox.prototype.filter = function (controlId, dataSource, query, fields) {\n this.getComboBoxObj(controlId).filter(dataSource, query, fields);\n };\n /**\n * To open/close DropDownButton popup based on current state of the combobox.\n *\n * @param {string} controlId - Gets the id of the control.\n * @returns {void}\n */\n RibbonComboBox.prototype.hidePopup = function (controlId) {\n var comboBoxObj = this.getComboBoxObj(controlId);\n if (!comboBoxObj) {\n return;\n }\n comboBoxObj.hidePopup();\n };\n /**\n * To open/close DropDownButton popup based on current state of the combobox.\n *\n * @param {string} controlId - Gets the id of the control.\n * @returns {void}\n */\n RibbonComboBox.prototype.showPopup = function (controlId) {\n var comboBoxObj = this.getComboBoxObj(controlId);\n if (!comboBoxObj) {\n return;\n }\n comboBoxObj.showPopup();\n };\n /**\n * Updates the combobox properties.\n *\n * @param {RibbonComboBoxSettingsModel} prop - Gets the combobox property.\n * @param {string} id - Gets the ID of combobox.\n * @returns {void}\n */\n RibbonComboBox.prototype.updateComboBox = function (prop, id) {\n var itemProp = getItem(this.parent.tabs, id);\n if (!itemProp) {\n return;\n }\n merge(itemProp.item.comboBoxSettings, prop);\n var inputEle = getItemElement(this.parent, id, itemProp);\n if (!inputEle) {\n return;\n }\n if (prop.cssClass) {\n prop.cssClass = (RIBBON_CONTROL + SPACE + prop.cssClass).trim();\n }\n delete prop.close;\n var comboBoxObj = getComponent(inputEle, ComboBox);\n comboBoxObj.setProperties(prop);\n };\n return RibbonComboBox;\n}());\nexport { RibbonComboBox };\n","import { closest, getComponent, isNullOrUndefined, merge, remove } from '@syncfusion/ej2-base';\nimport { DropDownButton } from '@syncfusion/ej2-splitbuttons';\nimport { Tooltip } from '@syncfusion/ej2-popups';\nimport { getItem, getItemElement, RibbonItemSize, createTooltip } from '../base/index';\nimport { DROPDOWN_ID, ITEM_VERTICAL_CENTER, OVERFLOW_ID, RIBBON_CONTROL, RIBBON_GROUP_OVERFLOW_DDB, RIBBON_POPUP_CONTROL, SPACE, VERTICAL_DDB } from '../base/constant';\n/**\n * Defines the items of Ribbon.\n */\nvar RibbonDropDown = /** @class */ (function () {\n function RibbonDropDown(parent) {\n this.parent = parent;\n }\n RibbonDropDown.prototype.getModuleName = function () {\n return 'ribbonDropDown';\n };\n RibbonDropDown.prototype.destroy = function () {\n this.parent = null;\n };\n /**\n * Creates DropDown.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonDropDown.prototype.createDropDown = function (item, itemEle) {\n var _this = this;\n var buttonEle = this.parent.createElement('button', {\n id: item.id\n });\n itemEle.appendChild(buttonEle);\n var dropDownSettings = item.dropDownSettings;\n var cssClass = (ITEM_VERTICAL_CENTER + SPACE + RIBBON_CONTROL + SPACE + (dropDownSettings.cssClass ?\n dropDownSettings.cssClass : '')).trim();\n new DropDownButton({\n locale: this.parent.locale,\n enableRtl: this.parent.enableRtl,\n enablePersistence: this.parent.enablePersistence,\n iconPosition: item.activeSize === RibbonItemSize.Large ? 'Top' : 'Left',\n closeActionEvents: dropDownSettings.closeActionEvents,\n content: item.activeSize === RibbonItemSize.Small ? '' : dropDownSettings.content,\n cssClass: cssClass + ((item.activeSize === RibbonItemSize.Large) ? (SPACE + VERTICAL_DDB) : ''),\n disabled: item.disabled,\n iconCss: dropDownSettings.iconCss,\n items: dropDownSettings.items,\n target: dropDownSettings.target,\n createPopupOnClick: dropDownSettings.createPopupOnClick,\n beforeClose: function (e) {\n if (dropDownSettings.beforeClose) {\n dropDownSettings.beforeClose.call(_this, e);\n }\n },\n beforeItemRender: dropDownSettings.beforeItemRender,\n beforeOpen: dropDownSettings.beforeOpen,\n close: function (e) {\n if (dropDownSettings.close) {\n dropDownSettings.close.call(_this, e);\n }\n },\n created: dropDownSettings.created,\n open: dropDownSettings.open,\n select: dropDownSettings.select\n }).appendTo(buttonEle);\n };\n /**\n * Adds the additional event handlers as the item moved into overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @param {DropDownButton} overflowButton - Gets the overflow button.\n * @returns {void}\n * @hidden\n */\n RibbonDropDown.prototype.addOverFlowEvents = function (item, itemEle, overflowButton) {\n var _this = this;\n var dropdownElement = itemEle.querySelector('#' + item.id);\n dropdownElement.setAttribute('data-control', item.type.toString());\n var dropdown = getComponent(dropdownElement, DropDownButton);\n dropdown.cssClass = dropdown.cssClass + SPACE + RIBBON_POPUP_CONTROL;\n dropdown.dataBind();\n var target;\n dropdown.beforeClose = function (e) {\n if (item.dropDownSettings.beforeClose) {\n item.dropDownSettings.beforeClose.call(_this, e);\n }\n target = e.event ? e.event.target : null;\n };\n dropdown.close = function (e) {\n if (item.dropDownSettings.close) {\n item.dropDownSettings.close.call(_this, e);\n }\n if (target && !target.closest('.e-ribbon-group-overflow-ddb')) {\n overflowButton.toggle();\n }\n };\n };\n /**\n * Removes the additional event handlers as the item moved from overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonDropDown.prototype.removeOverFlowEvents = function (item, itemEle) {\n var _this = this;\n var dropdownElement = itemEle.querySelector('#' + item.id);\n var dropdown = getComponent(dropdownElement, DropDownButton);\n var cssClass = dropdown.cssClass.split(SPACE);\n cssClass = cssClass.filter(function (value) { return value !== RIBBON_POPUP_CONTROL; });\n dropdown.cssClass = cssClass.join(SPACE);\n dropdown.dataBind();\n dropdown.close = function (e) {\n if (item.dropDownSettings.close) {\n item.dropDownSettings.close.call(_this, e);\n }\n };\n dropdown.beforeClose = function (e) {\n if (item.dropDownSettings.beforeClose) {\n item.dropDownSettings.beforeClose.call(_this, e);\n }\n };\n };\n /**\n * Creates Overflow DropDown.\n *\n * @param {string} id - Gets the ID of the dropdown item.\n * @param {string} name - Gets the name of the dropdown item.\n * @param {string} iconCss - Gets the icon of the dropdown item.\n * @param {HTMLElement} groupEle - Gets the overflow group element.\n * @param {HTMLElement} overflowEle - Gets the overflow element.\n * @returns {void}\n * @hidden\n */\n RibbonDropDown.prototype.createOverFlowDropDown = function (id, name, iconCss, groupEle, overflowEle, enableRtl) {\n var _this = this;\n this.enableRtl = enableRtl;\n var buttonEle = this.parent.createElement('button', {\n id: id + OVERFLOW_ID + DROPDOWN_ID\n });\n groupEle.setAttribute('tabindex', '0');\n overflowEle.appendChild(buttonEle);\n var dropdown = new DropDownButton({\n iconCss: iconCss,\n target: groupEle,\n locale: this.parent.locale,\n enableRtl: this.parent.enableRtl,\n enablePersistence: this.parent.enablePersistence,\n cssClass: VERTICAL_DDB + SPACE + RIBBON_GROUP_OVERFLOW_DDB,\n iconPosition: 'Top',\n content: name,\n beforeClose: function (args) {\n args.cancel = !isNullOrUndefined(args.event && closest(args.event.target, '.' + RIBBON_POPUP_CONTROL));\n }\n }, buttonEle);\n createTooltip(groupEle, this.parent);\n buttonEle.onclick = buttonEle.onkeydown = function () { _this.itemIndex = 0; };\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n groupEle.onkeydown = function (e) { _this.keyActionHandler(e, groupEle), _this; };\n return dropdown;\n };\n RibbonDropDown.prototype.keyActionHandler = function (e, target) {\n var items = target.querySelectorAll('.e-control');\n var comboBoxElements = target.querySelectorAll('.e-combobox');\n var comboBoxEle;\n if (comboBoxElements) {\n for (var i = 0; i < comboBoxElements.length; i++) {\n if (comboBoxElements[parseInt(i.toString(), 10)].closest('.e-input-focus')) {\n comboBoxEle = comboBoxElements[parseInt(i.toString(), 10)];\n }\n }\n }\n if (comboBoxEle) {\n for (var i = 0; i < items.length; i++) {\n if (items[parseInt(i.toString(), 10)].classList.contains('e-combobox')) {\n if (items[parseInt(i.toString(), 10)].closest('.e-input-focus')) {\n this.itemIndex = i;\n }\n }\n }\n }\n if (e.target.classList.contains('e-control') || e.target.classList.contains('e-ribbon-launcher-icon') ||\n e.target.classList.contains('e-ribbon-last-item') || e.target.classList.contains('e-ribbon-first-item')) {\n if (e.key === 'ArrowRight' || (!e.shiftKey && e.key === 'Tab')) {\n this.handleNavigation(e, !this.enableRtl, items);\n }\n if (e.key === 'ArrowLeft' || (e.shiftKey && e.key === 'Tab')) {\n this.handleNavigation(e, this.enableRtl, items);\n }\n }\n };\n RibbonDropDown.prototype.handleNavigation = function (e, enableRtl, items) {\n if (!(items[0].classList.contains('e-ribbon-first-item'))) {\n items[0].classList.add('e-ribbon-first-item');\n }\n if (!(items[items.length - 1].classList.contains('e-ribbon-last-item'))) {\n items[items.length - 1].classList.add('e-ribbon-last-item');\n }\n if (enableRtl) {\n if (this.itemIndex === 0 && items[parseInt(this.itemIndex.toString(), 10)].classList.contains('e-ribbon-first-item')) {\n this.updateItemIndex(e, items, true);\n }\n if (!e.target.classList.contains('e-combobox') && !e.target.classList.contains('e-ribbon-last-item') &&\n !e.target.classList.contains('e-ribbon-group-container') && (e.target.classList.contains('e-ribbon-first-item')\n || this.itemIndex !== 0) && e.target.classList.contains('e-control')) {\n this.itemIndex++;\n this.updateItemIndex(e, items, true);\n }\n if (e.target.classList.contains('e-ribbon-last-item')) {\n var launcherIcon = false;\n launcherIcon = this.focusLauncherIcon(e, items);\n if (!launcherIcon) {\n this.itemIndex = 0;\n this.updateItemIndex(e, items, true);\n }\n }\n if (e.target.classList.contains('e-ribbon-launcher-icon')) {\n this.itemIndex = 0;\n this.updateItemIndex(e, items, true);\n }\n }\n else {\n if (!e.target.classList.contains('e-combobox') && this.itemIndex !== 0) {\n this.itemIndex--;\n this.updateItemIndex(e, items, false);\n }\n if (e.target.classList.contains('e-ribbon-first-item')) {\n var launcherIcon = false;\n launcherIcon = this.focusLauncherIcon(e, items);\n if (!launcherIcon) {\n this.itemIndex = items.length - 1;\n this.updateItemIndex(e, items, false);\n }\n }\n if (e.target.classList.contains('e-ribbon-launcher-icon')) {\n this.itemIndex = items.length - 1;\n this.updateItemIndex(e, items, false);\n }\n }\n if (e.target.classList.contains('e-combobox') && (e.key === 'Tab')) {\n if (enableRtl) {\n if (this.itemIndex < items.length - 1) {\n this.itemIndex++;\n }\n }\n else {\n if (this.itemIndex > 0) {\n this.itemIndex--;\n }\n }\n }\n };\n RibbonDropDown.prototype.focusLauncherIcon = function (e, items) {\n var groupContainer = items[parseInt(this.itemIndex.toString(), 10)].closest('.e-ribbon-group-container');\n var launcherIconEle;\n if (groupContainer) {\n launcherIconEle = groupContainer.querySelector('.e-ribbon-launcher-icon');\n }\n if (launcherIconEle) {\n if (e.key === 'Tab') {\n e.preventDefault();\n }\n groupContainer.querySelector('.e-ribbon-launcher-icon').focus();\n return true;\n }\n else {\n return false;\n }\n };\n RibbonDropDown.prototype.updateItemIndex = function (e, items, enableRtl) {\n var ribbonItem = items[this.itemIndex].closest('.e-ribbon-item');\n while (ribbonItem && ribbonItem.classList.contains('e-disabled')) {\n if (enableRtl) {\n if (this.itemIndex < items.length - 1) {\n this.itemIndex++;\n }\n else {\n var launcherIcon = false;\n launcherIcon = this.focusLauncherIcon(e, items);\n if (launcherIcon) {\n break;\n }\n this.itemIndex = 0;\n }\n }\n else {\n if (this.itemIndex > 0) {\n this.itemIndex--;\n }\n else {\n var launcherIcon = false;\n launcherIcon = this.focusLauncherIcon(e, items);\n if (launcherIcon) {\n break;\n }\n this.itemIndex = items.length - 1;\n }\n }\n ribbonItem = items[this.itemIndex].closest('.e-ribbon-item');\n }\n if (e.key === 'Tab') {\n e.preventDefault();\n }\n items[parseInt(this.itemIndex.toString(), 10)].focus();\n };\n /**\n * Removes Overflow DropDown.\n *\n * @param {HTMLElement} dropdownElement - Gets the ribbon DropDown element.\n * @returns {void}\n * @hidden\n */\n RibbonDropDown.prototype.removeOverFlowDropDown = function (dropdownElement) {\n var dropdown = getComponent(dropdownElement, DropDownButton);\n var tooltip = getComponent(dropdown.target, Tooltip);\n tooltip.destroy();\n dropdownElement.parentElement.parentElement.insertBefore(dropdown.target, dropdownElement.parentElement);\n dropdown.destroy();\n remove(dropdownElement);\n };\n /**\n * Gets DropDown item element.\n *\n * @param {HTMLElement} dropdownElement - Gets the ribbon DropDown element.\n * @param {string} id - Gets the ID of ribbon DropDown element.\n * @returns {HTMLElement} - Returns the DropDown item element.\n * @hidden\n */\n RibbonDropDown.prototype.getDDBItemElement = function (dropdownElement, id) {\n var dropdown = getComponent(dropdownElement, DropDownButton);\n var dropDownPopup = dropdown.dropDown.element;\n return dropDownPopup.querySelector('#' + id);\n };\n /**\n * Gets Overflow DropDown Popup.\n *\n * @param {itemProps} itemProp - Gets the property of ribbon item.\n * @param {HTMLElement} contentEle - Gets the content element.\n * @returns {HTMLElement} - Returns the Overflow DropDown Popup.\n * @hidden\n */\n RibbonDropDown.prototype.getOverflowDropDownPopup = function (itemProp, contentEle) {\n var dropdownElement = contentEle.querySelector('#' + this.parent.tabs[itemProp.tabIndex].groups[itemProp.groupIndex].id + OVERFLOW_ID + DROPDOWN_ID);\n var dropdown = getComponent(dropdownElement, DropDownButton);\n return dropdown.dropDown.element;\n };\n RibbonDropDown.prototype.getDropDownObj = function (controlId) {\n var dropDownEle = getItemElement(this.parent, controlId);\n return dropDownEle ? getComponent(dropDownEle, DropDownButton) : null;\n };\n /**\n * Adds a new item to the menu. By default, new item appends to\n * the list as the last item, but you can insert based on the text parameter.\n *\n * @param {string} controlId - Gets the control ID.\n * @param {ItemModel[]} Items - Gets the DropDown items.\n * @param {string} text - Gets the text of the dropdown item where the new item needs to be inserted.\n * @returns {void}\n */\n RibbonDropDown.prototype.addItems = function (controlId, Items, text) {\n this.getDropDownObj(controlId).addItems(Items, text);\n };\n /**\n * Removes the items from the menu.\n *\n * @param {string} controlId - Gets the control ID.\n * @param {string[]} Items -\n * @param {string} isUniqueId -\n * @returns {void}\n */\n RibbonDropDown.prototype.removeItems = function (controlId, Items, isUniqueId) {\n this.getDropDownObj(controlId).removeItems(Items, isUniqueId);\n };\n /**\n * To open/close DropDownButton popup based on current state of the DropDownButton.\n *\n * @param {string} controlId - Gets the control ID.\n * @returns {void}\n */\n RibbonDropDown.prototype.toggle = function (controlId) {\n this.getDropDownObj(controlId).toggle();\n };\n /**\n * Updates the dropdown.\n *\n * @param {RibbonDropDownSettingsModel} prop - Gets the dropdown property.\n * @param {string} id - Gets the ID of dropdown.\n * @returns {void}\n */\n RibbonDropDown.prototype.updateDropDown = function (prop, id) {\n var itemProp = getItem(this.parent.tabs, id);\n if (!itemProp) {\n return;\n }\n merge(itemProp.item.dropDownSettings, prop);\n var btnEle = getItemElement(this.parent, id, itemProp);\n if (!btnEle) {\n return;\n }\n var control = getComponent(btnEle, DropDownButton);\n if (prop.cssClass) {\n prop.cssClass = (RIBBON_CONTROL + SPACE + ITEM_VERTICAL_CENTER + SPACE + prop.cssClass).trim();\n prop.cssClass = itemProp.item.activeSize === RibbonItemSize.Large ?\n (VERTICAL_DDB + SPACE + prop.cssClass).trim() : prop.cssClass;\n control.cssClass = prop.cssClass;\n }\n delete prop.close;\n delete prop.beforeClose;\n if (prop.content) {\n prop.content = itemProp.item.activeSize === RibbonItemSize.Small ? '' : prop.content;\n }\n control.setProperties(prop);\n };\n /**\n * Updated DropDown size\n *\n * @param {HTMLElement} element - Gets the dropdown element.\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @returns {void}\n * @hidden\n */\n RibbonDropDown.prototype.updateDropDownSize = function (element, item) {\n var control = getComponent(element, DropDownButton);\n var cssClass = control.cssClass.split(SPACE);\n if (item.activeSize === RibbonItemSize.Large) {\n cssClass.push(VERTICAL_DDB);\n }\n else {\n cssClass = cssClass.filter(function (value) { return value !== VERTICAL_DDB; });\n }\n control.cssClass = cssClass.join(SPACE);\n control.setProperties({ iconPosition: item.activeSize === RibbonItemSize.Large ? 'Top' : 'Left' });\n control.setProperties({ content: item.activeSize === RibbonItemSize.Small ? '' : item.dropDownSettings.content });\n };\n return RibbonDropDown;\n}());\nexport { RibbonDropDown };\n","import { EventHandler, getComponent, merge } from '@syncfusion/ej2-base';\nimport { SplitButton } from '@syncfusion/ej2-splitbuttons';\nimport { getItem, getItemElement, RibbonItemSize } from '../base/index';\nimport { ITEM_VERTICAL_CENTER, RIBBON_CONTROL, RIBBON_HOVER, RIBBON_POPUP_CONTROL, RIBBON_POPUP_OPEN, SPACE, VERTICAL_DDB } from '../base/constant';\n/**\n * Defines the items of Ribbon.\n */\nvar RibbonSplitButton = /** @class */ (function () {\n function RibbonSplitButton(parent) {\n this.parent = parent;\n }\n RibbonSplitButton.prototype.getModuleName = function () {\n return 'ribbonSplitButton';\n };\n RibbonSplitButton.prototype.destroy = function () {\n this.parent = null;\n };\n /**\n * Creates SplitButton.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonSplitButton.prototype.createSplitButton = function (item, itemEle) {\n var _this = this;\n var buttonEle = this.parent.createElement('button', {\n id: item.id\n });\n itemEle.appendChild(buttonEle);\n var splitButtonSettings = item.splitButtonSettings;\n var cssClass = (ITEM_VERTICAL_CENTER + SPACE + RIBBON_CONTROL + SPACE + (splitButtonSettings.cssClass ?\n splitButtonSettings.cssClass : '')).trim();\n var splitbutton = new SplitButton({\n locale: this.parent.locale,\n enableRtl: this.parent.enableRtl,\n enablePersistence: this.parent.enablePersistence,\n iconPosition: item.activeSize === RibbonItemSize.Large ? 'Top' : 'Left',\n closeActionEvents: splitButtonSettings.closeActionEvents,\n cssClass: cssClass + ((item.activeSize === RibbonItemSize.Large) ? (SPACE + VERTICAL_DDB) : ''),\n disabled: item.disabled,\n iconCss: splitButtonSettings.iconCss,\n items: splitButtonSettings.items,\n target: splitButtonSettings.target,\n beforeClose: function (e) {\n if (splitButtonSettings.beforeClose) {\n splitButtonSettings.beforeClose.call(_this, e);\n }\n },\n beforeItemRender: splitButtonSettings.beforeItemRender,\n beforeOpen: splitButtonSettings.beforeOpen,\n close: function () {\n splitbutton['wrapper'].classList.remove(RIBBON_POPUP_OPEN);\n if (splitButtonSettings.close) {\n splitButtonSettings.close.call(_this);\n }\n },\n created: splitButtonSettings.created,\n open: function () {\n splitbutton['wrapper'].classList.add(RIBBON_POPUP_OPEN);\n if (splitButtonSettings.open) {\n splitButtonSettings.open.call(_this);\n }\n },\n select: splitButtonSettings.select,\n click: function (e) {\n if (splitButtonSettings.click) {\n splitButtonSettings.click.call(_this, e);\n }\n }\n }, buttonEle);\n var dropdownEle = buttonEle.parentElement.querySelector('.e-dropdown-btn');\n dropdownEle.onkeydown = function (e) {\n if (e.key === 'Enter') {\n e.stopImmediatePropagation();\n dropdownEle.click();\n }\n };\n this.setContent(item, splitbutton);\n var wrapper = splitbutton['wrapper'];\n EventHandler.add(wrapper, 'mouseenter', function () { wrapper.classList.add(RIBBON_HOVER); }, this);\n EventHandler.add(wrapper, 'mouseleave', function () { wrapper.classList.remove(RIBBON_HOVER); }, this);\n };\n /**\n * Adds the additional event handlers as the item moved into overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @param {DropDownButton} overflowButton - Gets the overflow button.\n * @returns {void}\n * @hidden\n */\n RibbonSplitButton.prototype.addOverFlowEvents = function (item, itemEle, overflowButton) {\n var _this = this;\n var splitButtonEle = itemEle.querySelector('#' + item.id);\n splitButtonEle.setAttribute('data-control', item.type.toString());\n var splitbutton = getComponent(splitButtonEle, SplitButton);\n splitbutton.cssClass = splitbutton.cssClass + SPACE + RIBBON_POPUP_CONTROL;\n splitbutton.dataBind();\n var dropdownEle = splitButtonEle.parentElement.querySelector('.e-dropdown-btn');\n var ddbId = dropdownEle.getAttribute('id');\n var popupEle = document.querySelector('#' + ddbId + '-popup');\n dropdownEle.onkeydown = function (e) {\n if (e.key === 'Enter') {\n e.stopImmediatePropagation();\n dropdownEle.click();\n }\n };\n popupEle.onkeydown = function (e) {\n if (e.key === 'Enter') {\n e.preventDefault();\n splitbutton['wrapper'].classList.remove('e-ribbon-open');\n popupEle.querySelector('.e-focused').click();\n }\n };\n var target;\n splitbutton.beforeClose = function (e) {\n if (item.splitButtonSettings.beforeClose) {\n item.splitButtonSettings.beforeClose.call(_this, e);\n }\n target = e.event ? e.event.target : null;\n };\n splitbutton.click = function (e) {\n if (item.splitButtonSettings.click) {\n item.splitButtonSettings.click.call(_this, e);\n }\n overflowButton.toggle();\n };\n splitbutton.close = function (e) {\n if (item.splitButtonSettings.close) {\n item.splitButtonSettings.close.call(_this, e);\n }\n splitbutton['wrapper'].classList.remove(RIBBON_POPUP_OPEN);\n if (target && !target.closest('.e-ribbon-group-overflow-ddb')) {\n overflowButton.toggle();\n }\n };\n };\n /**\n * Removes the additional event handlers as the item moved from overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonSplitButton.prototype.removeOverFlowEvents = function (item, itemEle) {\n var _this = this;\n var splitButtonEle = itemEle.querySelector('#' + item.id);\n var splitbutton = getComponent(splitButtonEle, SplitButton);\n var cssClass = splitbutton.cssClass.split(SPACE);\n cssClass = cssClass.filter(function (value) { return value !== RIBBON_POPUP_CONTROL; });\n splitbutton.cssClass = cssClass.join(SPACE);\n splitbutton.dataBind();\n splitbutton.beforeClose = function (e) {\n if (item.splitButtonSettings.beforeClose) {\n item.splitButtonSettings.beforeClose.call(_this, e);\n }\n };\n splitbutton.click = function (e) {\n if (item.splitButtonSettings.click) {\n item.splitButtonSettings.click.call(_this, e);\n }\n };\n splitbutton.close = function (e) {\n if (item.splitButtonSettings.close) {\n item.splitButtonSettings.close.call(_this, e);\n }\n splitbutton['wrapper'].classList.remove(RIBBON_POPUP_OPEN);\n };\n };\n RibbonSplitButton.prototype.setContent = function (item, control) {\n control['primaryBtnObj'].setProperties({ content: (item.activeSize === RibbonItemSize.Medium) ? item.splitButtonSettings.content : '' });\n control['secondaryBtnObj'].setProperties({ content: (item.activeSize === RibbonItemSize.Large) ? item.splitButtonSettings.content : '' });\n };\n RibbonSplitButton.prototype.getSplitButtonObj = function (controlId) {\n var splitButtonEle = getItemElement(this.parent, controlId);\n return getComponent(splitButtonEle, SplitButton);\n };\n /**\n * Adds a new item to the menu. By default, new item appends to\n * the list as the last item, but you can insert based on the text parameter.\n *\n * @param {string} controlId - Gets the control ID.\n * @param {ItemModel[]} Items - Gets the SplitButton items.\n * @param {string} text - Gets the text of the splitbutton item where the new item needs to be inserted.\n * @returns {void}\n */\n RibbonSplitButton.prototype.addItems = function (controlId, Items, text) {\n this.getSplitButtonObj(controlId).addItems(Items, text);\n };\n /**\n * Removes the items from the menu.\n *\n * @param {string} controlId - Gets the control ID.\n * @param {string[]} Items -\n * @param {string} isUniqueId -\n * @returns {void}\n */\n RibbonSplitButton.prototype.removeItems = function (controlId, Items, isUniqueId) {\n this.getSplitButtonObj(controlId).removeItems(Items, isUniqueId);\n };\n /**\n * To open/close SplitButton popup based on current state of the SplitButton.\n *\n * @param {string} controlId - Gets the control ID.\n * @returns {void}\n */\n RibbonSplitButton.prototype.toggle = function (controlId) {\n this.getSplitButtonObj(controlId).toggle();\n };\n /**\n * Updates the splitbutton.\n *\n * @param {RibbonSplitButtonSettingsModel} prop - Gets the splitbutton property.\n * @param {string} id - Gets the ID of dropdown.\n * @returns {void}\n */\n RibbonSplitButton.prototype.updateSplitButton = function (prop, id) {\n var itemProp = getItem(this.parent.tabs, id);\n if (!itemProp) {\n return;\n }\n merge(itemProp.item.splitButtonSettings, prop);\n var btnEle = getItemElement(this.parent, id, itemProp);\n if (!btnEle) {\n return;\n }\n var control = getComponent(btnEle, SplitButton);\n if (prop.cssClass) {\n prop.cssClass = (RIBBON_CONTROL + SPACE + ITEM_VERTICAL_CENTER + SPACE + prop.cssClass).trim();\n prop.cssClass = itemProp.item.activeSize === RibbonItemSize.Large ?\n (VERTICAL_DDB + SPACE + prop.cssClass).trim() : prop.cssClass;\n control.cssClass = prop.cssClass;\n }\n delete prop.open;\n delete prop.click;\n delete prop.close;\n delete prop.beforeClose;\n control.setProperties(prop);\n if (prop.content) {\n this.setContent(itemProp.item, control);\n }\n };\n /**\n * Updated SplitButton size\n *\n * @param {HTMLElement} element - Gets the splibutton element.\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @returns {void}\n * @hidden\n */\n RibbonSplitButton.prototype.updateSplitButtonSize = function (element, item) {\n var control = getComponent(element, SplitButton);\n var cssClass = control.cssClass.split(SPACE);\n if (item.activeSize === RibbonItemSize.Large) {\n cssClass.push(VERTICAL_DDB);\n }\n else {\n cssClass = cssClass.filter(function (value) { return value !== VERTICAL_DDB; });\n }\n control.cssClass = cssClass.join(SPACE);\n control.setProperties({ iconPosition: item.activeSize === RibbonItemSize.Large ? 'Top' : 'Left' });\n this.setContent(item, control);\n };\n return RibbonSplitButton;\n}());\nexport { RibbonSplitButton };\n","import { compile, getComponent, select } from '@syncfusion/ej2-base';\nimport { Tooltip } from '@syncfusion/ej2-popups';\nimport { DisplayMode, RibbonLayout } from './interface';\nimport * as constants from './constant';\nimport { DropDownButton } from '@syncfusion/ej2-splitbuttons';\n/**\n * Gets index value.\n *\n * @param {Array} arr - Gets the array to find index.\n * @param {boolean} condition - Defines whether index matches with the value.\n * @returns {number} - Gets the index value.\n * @hidden\n */\nexport function getIndex(arr, condition) {\n for (var i = 0; i < arr.length; i++) {\n if (condition(arr[parseInt(i.toString(), 10)], i)) {\n return i;\n }\n }\n return -1;\n}\n/**\n * Gets template content based on the template property value.\n *\n * @param {string | HTMLElement| Function} template - Template property value.\n * @returns {Function} - Return template function.\n * @hidden\n */\nexport function getTemplateFunction(template) {\n if (typeof template === 'string') {\n var content = '';\n try {\n var tempEle = select(template);\n if (tempEle) {\n //Return innerHTML incase of jsrenderer script else outerHTML\n content = tempEle.tagName === 'SCRIPT' ? tempEle.innerHTML : tempEle.outerHTML;\n }\n else {\n content = template;\n }\n }\n catch (e) {\n content = template;\n }\n return compile(content);\n }\n else {\n /* eslint-disable-next-line @typescript-eslint/no-explicit-any */\n return compile(template);\n }\n}\n/**\n * Gets the ribbon item\n *\n * @param {RibbonTabModel} tabs - Gets the ribbon tab model.\n * @param {string} id - Gets the ID of the tab.\n * @returns {itemProps} - Gets the ribbon item.\n * @hidden\n */\nexport function getItem(tabs, id) {\n for (var i = 0; i < tabs.length; i++) {\n var tab = tabs[parseInt(i.toString(), 10)];\n for (var j = 0; j < tab.groups.length; j++) {\n var group = tab.groups[parseInt(j.toString(), 10)];\n for (var k = 0; k < group.collections.length; k++) {\n var collection = group.collections[parseInt(k.toString(), 10)];\n for (var l = 0; l < collection.items.length; l++) {\n var item = collection.items[parseInt(l.toString(), 10)];\n if (item.id === id) {\n return {\n item: item, collection: collection, group: group,\n tabIndex: i, groupIndex: j, collectionIndex: k, itemIndex: l\n };\n }\n }\n }\n }\n }\n return null;\n}\n/**\n * Gets the ribbon collection.\n *\n * @param {RibbonTabModel} tabs - Gets the ribbon tab model.\n * @param {string} id - Gets the ID of the tab.\n * @returns {itemProps} - Gets the ribbon collection.\n * @hidden\n */\nexport function getCollection(tabs, id) {\n for (var i = 0; i < tabs.length; i++) {\n var tab = tabs[parseInt(i.toString(), 10)];\n for (var j = 0; j < tab.groups.length; j++) {\n var group = tab.groups[parseInt(j.toString(), 10)];\n for (var k = 0; k < group.collections.length; k++) {\n var collection = group.collections[parseInt(k.toString(), 10)];\n if (collection.id === id) {\n return {\n collection: collection, group: group,\n tabIndex: i, groupIndex: j, collectionIndex: k\n };\n }\n }\n }\n }\n return null;\n}\n/**\n * Gets the ribbon group.\n *\n * @param {RibbonTabModel} tabs - Gets the ribbon tab model.\n * @param {string} id - Gets the ID of the tab.\n * @returns {itemProps} - Gets the ribbon group.\n * @hidden\n */\nexport function getGroup(tabs, id) {\n for (var i = 0; i < tabs.length; i++) {\n var tab = tabs[parseInt(i.toString(), 10)];\n for (var j = 0; j < tab.groups.length; j++) {\n var group = tab.groups[parseInt(j.toString(), 10)];\n if (group.id === id) {\n return {\n group: group, tabIndex: i, groupIndex: j\n };\n }\n }\n }\n return null;\n}\n/**\n * @param {HTMLElement} element - Gets the element to be destroyed.\n * @param {string} moduleName - Gets the module name.\n * @returns {void}\n * @hidden\n */\nexport function destroyControl(element, moduleName) {\n var control = getComponent(element, moduleName);\n control.destroy();\n}\n/**\n * Updates common properties.\n *\n * @param {HTMLElement} element - Gets the element to be updated.\n * @param {string} moduleName - Gets the module name.\n * @param {commonProperties} commonProp - Gets the common properties to be updated.\n * @returns {void}\n * @hidden\n */\nexport function updateCommonProperty(element, moduleName, commonProp) {\n var control = getComponent(element, moduleName);\n control.setProperties(commonProp);\n}\n/**\n * Updates disabled control.\n *\n * @param {HTMLElement} element - Gets the element to be disabled.\n * @param {string} moduleName - Gets the module name.\n * @param {boolean} disable - Defines whether the control to be disabled or not.\n * @returns {void}\n * @hidden\n */\nexport function updateControlDisabled(element, moduleName, disable) {\n var control = getComponent(element, moduleName);\n control.setProperties(moduleName === 'combobox' ? { enabled: !disable } : { disabled: disable });\n}\n/**\n * Gets the ribbon item element.\n *\n * @param {Ribbon} parent - Gets the parent element.\n * @param {string} id - Gets the ID of the item.\n * @param {itemProps} itemProp - Gets the ribbon item.\n * @returns {HTMLElement} - Gets the ribbon item element.\n * @hidden\n */\nexport function getItemElement(parent, id, itemProp) {\n if (!itemProp) {\n itemProp = getItem(parent.tabs, id);\n if (!itemProp) {\n return null;\n }\n }\n var contentEle = parent.tabObj.items[itemProp.tabIndex].content;\n if (contentEle.innerHTML === '') {\n return null;\n }\n if (parent.activeLayout === RibbonLayout.Classic) {\n if (itemProp.item.displayOptions & DisplayMode.Classic) {\n contentEle = (itemProp.group.isCollapsed) ? parent.ribbonDropDownModule.getOverflowDropDownPopup(itemProp, contentEle)\n : contentEle;\n return contentEle.querySelector('#' + id);\n }\n else {\n return null;\n }\n }\n else {\n //Checks for Simplified and Auto options (Auto = classic + simplified + popup)\n var ele = (itemProp.item.displayOptions & DisplayMode.Simplified) ?\n contentEle.querySelector('#' + itemProp.item.id) : null;\n // element will be null for \"Popup\" and if the item is moved to overflow in \"Auto\" mode\n if (!ele) {\n var dropdown = itemProp.group.enableGroupOverflow ?\n getComponent(contentEle.querySelector('#' + itemProp.group.id + constants.GROUPOF_BUTTON_ID), DropDownButton)\n : parent.overflowDDB;\n ele = dropdown.target.querySelector('#' + itemProp.item.id);\n }\n return ele;\n }\n}\n/**\n * @param {RibbonTooltipModel} tooltip - Gets the property of tooltip.\n * @returns {boolean} - Gets whether the tooltip is present or not.\n * @hidden\n */\nexport function isTooltipPresent(tooltip) {\n return (tooltip.content || tooltip.iconCss || tooltip.title || tooltip.id || tooltip.cssClass) ? true : false;\n}\n/**\n * Sets content for tooltip.\n *\n * @param {TooltipEventArgs} args - Gets the argument of tooltip.\n * @param {Tooltip} tooltip - Gets the tooltip to set the content.\n * @param {ribbonTooltipData} tooltipData - Gets the tooltip data.\n * @returns {void}\n * @hidden\n */\nexport function setToolTipContent(args, tooltip, tooltipData) {\n var targetId = args.target.getAttribute('id');\n var dataObj = tooltipData.filter(function (e) { return e.id === targetId; })[0];\n var data = dataObj.data;\n var content = tooltip.createElement('div', {\n id: data.id ? constants.RIBBON_TOOLTIP_CONTAINER + '_' + data.id : constants.RIBBON_TOOLTIP_CONTAINER\n });\n tooltip.element.append(content);\n if (data.title) {\n var header = tooltip.createElement('div', {\n innerHTML: data.title,\n className: constants.RIBBON_TOOLTIP_TITLE\n });\n content.appendChild(header);\n }\n var textContainer = tooltip.createElement('div', {\n className: constants.RIBBON_TEXT_CONTAINER\n });\n content.appendChild(textContainer);\n if (data.iconCss) {\n var customCss = tooltip.createElement('div', {\n className: data.iconCss + ' ' + constants.RIBBON_TOOLTIP_ICON\n });\n textContainer.appendChild(customCss);\n }\n if (data.content) {\n var tooltipContent = tooltip.createElement('div', {\n innerHTML: data.content,\n className: constants.RIBBON_TOOLTIP_CONTENT\n });\n textContainer.appendChild(tooltipContent);\n }\n tooltip.setProperties({\n content: content,\n cssClass: data.cssClass ? data.cssClass + ' ' + constants.RIBBON_TOOLTIP : constants.RIBBON_TOOLTIP\n });\n}\n/**\n * Creates tooltip.\n *\n * @param {HTMLElement} element - Gets the element to add tooltip.\n * @param {Ribbon} ribbon - Gets the ribbon.\n * @returns {void}\n * @hidden\n */\nexport function createTooltip(element, ribbon) {\n var ribbonTooltip = new Tooltip({\n target: '.' + constants.RIBBON_TOOLTIP_TARGET,\n beforeRender: beforeTooltipRender.bind(this),\n windowCollision: true\n });\n ribbonTooltip.appendTo(element);\n /**\n * @param {TooltipEventArgs} args - Gets the tooltip argument.\n * @returns {void}\n * @hidden\n */\n function beforeTooltipRender(args) {\n setToolTipContent(args, ribbonTooltip, ribbon.tooltipData);\n }\n}\n/**\n * Destroys tooltip\n *\n * @param {HTMLElement} element - Gets the element in which the tooltip needs to be destroyed.\n * @returns {void}\n * @hidden\n */\nexport function destroyTooltip(element) {\n var control = getComponent(element, Tooltip);\n control.destroy();\n}\n/**\n * Updates tooltip\n *\n * @param {HTMLElement} element - Gets the element in which the tooltip needs to be Updated.\n * @param {commonProperties} prop - Gets the property to be updated.\n * @returns {void}\n * @hidden\n */\nexport function updateTooltipProp(element, prop) {\n var control = getComponent(element, Tooltip);\n control.setProperties(prop);\n}\n","import { EventHandler, getComponent, remove } from '@syncfusion/ej2-base';\nimport * as constants from '../base/constant';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { RibbonGroupButtonSelection, RibbonItemSize } from '../base/interface';\nimport { DropDownButton } from '@syncfusion/ej2-splitbuttons';\nimport { createTooltip, isTooltipPresent } from '../base/utils';\nimport { Tooltip } from '@syncfusion/ej2-popups';\n/**\n * Defines the items of Ribbon.\n */\nvar RibbonGroupButton = /** @class */ (function () {\n function RibbonGroupButton(parent) {\n this.parent = parent;\n this.isSelected = false;\n }\n RibbonGroupButton.prototype.getModuleName = function () {\n return 'ribbonGroupButton';\n };\n RibbonGroupButton.prototype.destroy = function () {\n this.parent = null;\n };\n /**\n * Creates Group Button\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemElement - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonGroupButton.prototype.createGroupButton = function (item, itemElement) {\n var _this = this;\n var groupBtnSettings = item.groupButtonSettings;\n this.count = 0;\n var btnContainerEle = this.parent.createElement('div', {\n id: item.id + constants.RIBBON_GROUP_BUTTON_ID,\n className: 'e-btn-group'\n });\n itemElement.appendChild(btnContainerEle);\n for (var i = 0; i < groupBtnSettings.items.length; i++) {\n if ((groupBtnSettings.items[parseInt(i.toString(), 10)].iconCss)) {\n var groupButtonEle = this.parent.createElement('button', {\n id: item.id + constants.RIBBON_GROUP_BUTTON_ID + i,\n className: constants.RIBBON_GROUP_BUTTON\n });\n btnContainerEle.appendChild(groupButtonEle);\n new Button({\n iconCss: groupBtnSettings.items[parseInt(i.toString(), 10)].iconCss,\n disabled: item.disabled,\n enableRtl: this.parent.enableRtl,\n content: item.activeSize === RibbonItemSize.Small ? '' : groupBtnSettings.items[parseInt(i.toString(), 10)].content,\n iconPosition: item.activeSize === RibbonItemSize.Large ? 'Top' : 'Left'\n }, groupButtonEle);\n var buttonEle = itemElement.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + i);\n if (groupBtnSettings.selection === RibbonGroupButtonSelection.Single) {\n btnContainerEle.classList.add(constants.RIBBON_SINGLE_BUTTON_SELECTION);\n }\n else {\n btnContainerEle.classList.add(constants.RIBBON_MULTIPLE_BUTTON_SELECTION);\n }\n if (groupBtnSettings.items[parseInt(i.toString(), 10)].selected) {\n if (groupBtnSettings.selection === RibbonGroupButtonSelection.Multiple) {\n buttonEle.classList.add('e-active');\n }\n else {\n if (this.count < 1) {\n buttonEle.classList.add('e-active');\n this.count++;\n }\n }\n }\n if (groupBtnSettings.items[parseInt(i.toString(), 10)].ribbonTooltipSettings &&\n isTooltipPresent(groupBtnSettings.items[parseInt(i.toString(), 10)].ribbonTooltipSettings)) {\n groupButtonEle.classList.add(constants.RIBBON_TOOLTIP_TARGET);\n this.parent.tooltipData.push({\n id: groupButtonEle.id, data: groupBtnSettings.items[parseInt(i.toString(), 10)].ribbonTooltipSettings\n });\n }\n EventHandler.add(buttonEle, 'click', this.groupButtonClicked.bind(this, i, item, groupBtnSettings), this);\n }\n }\n if (this.parent.activeLayout === 'Simplified') {\n var dropdownIcon = void 0;\n var activeEleCount = 0;\n var count = 0;\n var buttonEle = this.parent.createElement('button', {\n id: item.id\n });\n itemElement.appendChild(buttonEle);\n for (var i = 0; i < groupBtnSettings.items.length; i++) {\n if (item.groupButtonSettings.items[parseInt(i.toString(), 10)].selected &&\n !this.isSelected && groupBtnSettings.selection === RibbonGroupButtonSelection.Single) {\n dropdownIcon = item.groupButtonSettings.items[parseInt(i.toString(), 10)].iconCss;\n this.isSelected = true;\n }\n else if (item.groupButtonSettings.items[parseInt(i.toString(), 10)].selected &&\n groupBtnSettings.selection === RibbonGroupButtonSelection.Multiple) {\n activeEleCount++;\n if (activeEleCount === 1) {\n dropdownIcon = item.groupButtonSettings.items[parseInt(i.toString(), 10)].iconCss;\n }\n else {\n dropdownIcon = null;\n }\n }\n }\n while (count < item.groupButtonSettings.items.length && !this.isSelected && !dropdownIcon) {\n if (item.groupButtonSettings.items[parseInt(count.toString(), 10)].iconCss) {\n dropdownIcon = item.groupButtonSettings.items[parseInt(count.toString(), 10)].iconCss;\n this.isSelected = true;\n }\n count++;\n }\n new DropDownButton({\n iconCss: dropdownIcon,\n target: btnContainerEle,\n enableRtl: this.parent.enableRtl,\n cssClass: 'e-ribbon-dropdown-group-button',\n disabled: item.disabled\n }, buttonEle);\n buttonEle.onclick = buttonEle.onkeydown = function () {\n if (itemElement.querySelector('#' + item.id).classList.contains('e-active')) {\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + 0).focus();\n _this.grpBtnIndex = 0;\n }\n };\n btnContainerEle.onkeydown = function (e) {\n if (_this.parent.activeLayout === 'Simplified') {\n _this.handleGroupButtonNavigation(e, item);\n }\n };\n createTooltip(btnContainerEle, this.parent);\n this.isSelected = false;\n }\n };\n RibbonGroupButton.prototype.groupButtonClicked = function (itemIndex, item, grpBtnSettings) {\n var previousItems = [], selectingItems = [], selectedItems = [];\n var groupButtonEle;\n var dropdown;\n for (var j = 0; j < grpBtnSettings.items.length; j++) {\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + j)) {\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + j).classList.contains('e-active')) {\n previousItems.push(grpBtnSettings.items[parseInt(j.toString(), 10)]);\n }\n }\n }\n if (!(document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + itemIndex).classList.contains('e-active'))) {\n selectingItems.push(grpBtnSettings.items[parseInt(itemIndex.toString(), 10)]);\n }\n var eventArgs = {\n cancel: false, previousItems: previousItems, selectingItems: selectingItems\n };\n if (grpBtnSettings.items[parseInt(itemIndex.toString(), 10)].beforeClick) {\n grpBtnSettings.items[parseInt(itemIndex.toString(), 10)].beforeClick.call(this, eventArgs);\n }\n if (eventArgs.cancel) {\n return;\n }\n else {\n if (grpBtnSettings.selection === RibbonGroupButtonSelection.Single) {\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID).classList.contains(constants.RIBBON_MULTIPLE_BUTTON_SELECTION)) {\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID).classList.remove(constants.RIBBON_MULTIPLE_BUTTON_SELECTION);\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID).classList.add(constants.RIBBON_SINGLE_BUTTON_SELECTION);\n }\n for (var j = 0; j < grpBtnSettings.items.length; j++) {\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + j) && document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + j).classList.contains('e-active')) {\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + j).classList.remove('e-active');\n }\n }\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + itemIndex).classList.toggle('e-active');\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + itemIndex).classList.contains('e-active') && this.parent.activeLayout === 'Simplified') {\n this.grpBtnIndex = itemIndex;\n groupButtonEle = document.querySelector('#' + item.id);\n dropdown = getComponent(groupButtonEle, DropDownButton);\n dropdown.setProperties({\n iconCss: grpBtnSettings.items[parseInt(itemIndex.toString(), 10)].iconCss\n });\n }\n }\n else {\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID).classList.contains(constants.RIBBON_SINGLE_BUTTON_SELECTION)) {\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID).classList.remove(constants.RIBBON_SINGLE_BUTTON_SELECTION);\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID).classList.add(constants.RIBBON_MULTIPLE_BUTTON_SELECTION);\n }\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + itemIndex).classList.toggle('e-active');\n var activeEleCount = 0;\n for (var n = 0; n < grpBtnSettings.items.length; n++) {\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + n) && document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + n).classList.contains('e-active') && this.parent.activeLayout === 'Simplified' && n !== itemIndex) {\n this.isSelected = true;\n activeEleCount++;\n }\n }\n if (this.parent.activeLayout === 'Simplified') {\n var dropdownIcon = null;\n var itemsCount = 0;\n groupButtonEle = document.querySelector('#' + item.id);\n dropdown = getComponent(groupButtonEle, DropDownButton);\n if (!this.isSelected) {\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + itemIndex).classList.contains('e-active')) {\n dropdownIcon = grpBtnSettings.items[parseInt(itemIndex.toString(), 10)].iconCss;\n }\n }\n else {\n if (activeEleCount === 1 && !(document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + itemIndex).classList.contains('e-active'))) {\n for (var n = 0; n < grpBtnSettings.items.length; n++) {\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + n) && document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + n).classList.contains('e-active')) {\n dropdownIcon = grpBtnSettings.items[parseInt(n.toString(), 10)].iconCss;\n }\n }\n }\n }\n while (itemsCount < grpBtnSettings.items.length && !dropdownIcon) {\n if (grpBtnSettings.items[parseInt(itemsCount.toString(), 10)].iconCss) {\n dropdownIcon = grpBtnSettings.items[parseInt(itemsCount.toString(), 10)].iconCss;\n }\n itemsCount++;\n }\n dropdown.setProperties({ iconCss: dropdownIcon });\n this.grpBtnIndex = itemIndex;\n }\n this.isSelected = false;\n }\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + itemIndex).classList.contains('e-active')) {\n selectedItems.push(grpBtnSettings.items[parseInt(itemIndex.toString(), 10)]);\n }\n var eventArgs_1 = { previousItems: previousItems, selectedItems: selectedItems };\n if (grpBtnSettings.items[parseInt(itemIndex.toString(), 10)].click) {\n grpBtnSettings.items[parseInt(itemIndex.toString(), 10)].click.call(this, eventArgs_1);\n }\n }\n };\n /**\n * updates group button in mode switching\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemElement - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonGroupButton.prototype.switchGroupButton = function (item, itemElement) {\n var _this = this;\n var groupBtnSettings = item.groupButtonSettings;\n var dropdownIcon = null;\n var activeEleCount = 0;\n var itemsCount = 0;\n if (this.parent.activeLayout === 'Simplified') {\n var containerEle = itemElement.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID);\n var buttonEle = this.parent.createElement('button', {\n id: item.id\n });\n itemElement.appendChild(buttonEle);\n for (var i = 0; i < groupBtnSettings.items.length; i++) {\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + i)) {\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + i).classList.contains('e-active') && groupBtnSettings.selection === RibbonGroupButtonSelection.Single) {\n dropdownIcon = groupBtnSettings.items[parseInt(i.toString(), 10)].iconCss;\n }\n else if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + i).classList.contains('e-active') && groupBtnSettings.selection === RibbonGroupButtonSelection.Multiple) {\n activeEleCount++;\n if (activeEleCount === 1) {\n dropdownIcon = groupBtnSettings.items[parseInt(i.toString(), 10)].iconCss;\n }\n else if (activeEleCount > 1) {\n dropdownIcon = null;\n }\n }\n }\n }\n while (itemsCount < groupBtnSettings.items.length && !dropdownIcon) {\n if (groupBtnSettings.items[parseInt(itemsCount.toString(), 10)].iconCss) {\n dropdownIcon = groupBtnSettings.items[parseInt(itemsCount.toString(), 10)].iconCss;\n }\n itemsCount++;\n }\n new DropDownButton({\n iconCss: dropdownIcon,\n target: containerEle,\n enableRtl: this.parent.enableRtl,\n cssClass: 'e-ribbon-dropdown-group-button',\n disabled: item.disabled\n }, buttonEle);\n buttonEle.onclick = buttonEle.onkeydown = function () {\n if (itemElement.querySelector('#' + item.id).classList.contains('e-active')) {\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + 0).focus();\n _this.grpBtnIndex = 0;\n }\n };\n containerEle.onkeydown = function (e) {\n if (_this.parent.activeLayout === 'Simplified') {\n _this.handleGroupButtonNavigation(e, item);\n }\n };\n createTooltip(containerEle, this.parent);\n }\n else {\n var groupButtonEle = itemElement.querySelector('#' + item.id);\n var dropdown = getComponent(groupButtonEle, DropDownButton);\n itemElement.appendChild(dropdown.target);\n if (groupButtonEle) {\n dropdown.destroy();\n remove(groupButtonEle);\n }\n }\n };\n RibbonGroupButton.prototype.handleGroupButtonNavigation = function (e, item) {\n var groupButtonEle = document.querySelector('#' + item.id);\n var dropdown = getComponent(groupButtonEle, DropDownButton);\n var targetEle = dropdown.target;\n var isOverflowPopup = false;\n if (this.parent.activeLayout === 'Simplified' && targetEle.closest('.e-ribbon-dropdown-group-button').classList.contains(constants.RIBBON_GROUP_BUTTON_OVERFLOW_POPUP)) {\n isOverflowPopup = true;\n }\n if (e.key === 'Tab') {\n e.preventDefault();\n }\n var groupBtnSettings = item.groupButtonSettings;\n if ((e.key === 'ArrowRight' && !isOverflowPopup) || (e.key === 'ArrowDown' && isOverflowPopup)) {\n if (!this.parent.enableRtl || (e.key === 'ArrowDown' && isOverflowPopup)) {\n this.grpBtnIndex++;\n if (this.grpBtnIndex < groupBtnSettings.items.length) {\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + (this.grpBtnIndex)).focus();\n }\n else {\n this.grpBtnIndex = 0;\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + (this.grpBtnIndex)).focus();\n }\n }\n else {\n if (this.grpBtnIndex === 0) {\n this.grpBtnIndex = groupBtnSettings.items.length - 1;\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + (this.grpBtnIndex)).focus();\n }\n else {\n this.grpBtnIndex--;\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + (this.grpBtnIndex)).focus();\n }\n }\n }\n else if ((e.key === 'ArrowLeft' && !isOverflowPopup) || (e.key === 'ArrowUp' && isOverflowPopup)) {\n if (!this.parent.enableRtl || (e.key === 'ArrowUp' && isOverflowPopup)) {\n if (this.grpBtnIndex === 0) {\n this.grpBtnIndex = groupBtnSettings.items.length - 1;\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + (this.grpBtnIndex)).focus();\n }\n else {\n this.grpBtnIndex--;\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + (this.grpBtnIndex)).focus();\n }\n }\n else {\n this.grpBtnIndex++;\n if (this.grpBtnIndex < groupBtnSettings.items.length) {\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + (this.grpBtnIndex)).focus();\n }\n else {\n this.grpBtnIndex = 0;\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + (this.grpBtnIndex)).focus();\n }\n }\n }\n };\n /**\n * Adds the additional event handlers as the item moved into overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonGroupButton.prototype.addOverFlowEvents = function (item, itemEle) {\n var _this = this;\n var groupButtonEle = itemEle.querySelector('#' + item.id);\n var dropdown = getComponent(groupButtonEle, DropDownButton);\n dropdown.setProperties({ cssClass: dropdown.cssClass + constants.SPACE + constants.RIBBON_GROUP_BUTTON_OVERFLOW_POPUP });\n var targetEle = dropdown.target;\n targetEle.onclick = function () {\n if (_this.parent.activeLayout === 'Simplified' && targetEle.closest('.e-ribbon-dropdown-group-button').classList.contains(constants.RIBBON_GROUP_BUTTON_OVERFLOW_POPUP)) {\n dropdown.element.focus();\n dropdown.toggle();\n }\n };\n };\n /**\n * Removes the additional event handlers as the item moved into overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonGroupButton.prototype.removeOverFlowEvents = function (item, itemEle) {\n var groupButtonEle = itemEle.querySelector('#' + item.id);\n if (groupButtonEle) {\n var dropdown = getComponent(groupButtonEle, DropDownButton);\n var cssClass = dropdown.cssClass.split(constants.SPACE);\n cssClass = cssClass.filter(function (value) { return value !== constants.RIBBON_GROUP_BUTTON_OVERFLOW_POPUP; });\n dropdown.setProperties({ cssClass: cssClass.join(constants.SPACE) });\n }\n };\n /**\n * Removes DropDown.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item.\n * @returns {void}\n * @hidden\n */\n RibbonGroupButton.prototype.destroyDropDown = function (item) {\n var groupButtonEle = document.querySelector('#' + item.id);\n if (groupButtonEle) {\n var dropdown = getComponent(groupButtonEle, DropDownButton);\n var tooltip = getComponent(dropdown.target, Tooltip);\n tooltip.destroy();\n dropdown.destroy();\n remove(groupButtonEle);\n }\n };\n /**\n * Updates the group button size.\n *\n * @param {HTMLElement} itemElement - Gets the group button container element.\n * @param {RibbonItemModel} item - Gets the ribbon item.\n * @returns {void}\n * @hidden\n */\n RibbonGroupButton.prototype.updateGroupButtonSize = function (itemElement, item) {\n var groupBtnSettings = item.groupButtonSettings;\n var buttonEle;\n for (var i = 0; i < groupBtnSettings.items.length; i++) {\n if (this.parent.activeLayout === 'Classic') {\n buttonEle = itemElement.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + i);\n }\n else {\n buttonEle = document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + i);\n }\n if (buttonEle) {\n var buttonObj = getComponent(buttonEle, Button);\n buttonObj.setProperties({\n iconPosition: item.activeSize === RibbonItemSize.Large ? 'Top' : 'Left',\n content: item.activeSize === RibbonItemSize.Small ? '' : groupBtnSettings.items[parseInt(i.toString(), 10)].content\n });\n }\n }\n };\n return RibbonGroupButton;\n}());\nexport { RibbonGroupButton };\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 { addClass, append, Event, Collection, Complex, Component, EventHandler, formatUnit, getInstance, getComponent, getUniqueID, closest, KeyboardEvents } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, isUndefined, NotifyPropertyChanges, Property, remove, removeClass } from '@syncfusion/ej2-base';\nimport { Tab, TabAnimationSettings, HScroll, Toolbar } from '@syncfusion/ej2-navigations';\nimport { RibbonTab, FileMenuSettings, BackStageMenu } from '../models/index';\nimport { DisplayMode, RibbonLayout } from './interface';\nimport { ItemOrientation, RibbonItemSize, RibbonItemType } from './interface';\nimport { RibbonButton, RibbonComboBox, RibbonCheckBox, RibbonDropDown, RibbonSplitButton, RibbonGroupButton } from '../items/index';\nimport { destroyControl, getCollection, getGroup, getIndex, getItem, getItemElement, updateCommonProperty, updateControlDisabled, isTooltipPresent, getTemplateFunction, createTooltip, destroyTooltip, updateTooltipProp } from './utils';\nimport * as constants from './constant';\nimport { DropDownButton, SplitButton } from '@syncfusion/ej2-splitbuttons';\nimport { CheckBox } from '@syncfusion/ej2-buttons';\n/**\n * The Ribbon Component is a structured layout to manage tools with tabs and groups.\n */\nvar Ribbon = /** @class */ (function (_super) {\n __extends(Ribbon, _super);\n /**\n * Constructor for creating the widget.\n *\n * @param {RibbonModel} options - Specifies the ribbon model\n * @param {string|HTMLDivElement} element - Specifies the target element\n */\n function Ribbon(options, element) {\n var _this = this;\n Ribbon_1.Inject(RibbonButton, RibbonCheckBox, RibbonDropDown, RibbonSplitButton, RibbonComboBox, RibbonGroupButton);\n _this = _super.call(this, options, element) || this;\n return _this;\n }\n Ribbon_1 = Ribbon;\n /**\n * Initialize the control rendering.\n *\n * @returns {void}\n * @private\n */\n Ribbon.prototype.render = function () {\n this.initialize();\n };\n Ribbon.prototype.preRender = function () {\n this.idIndex = 0;\n this.tooltipData = [];\n this.isAddRemove = false;\n this.keyConfigs = {\n leftarrow: 'leftarrow',\n rightarrow: 'rightarrow',\n tab: 'tab',\n shiftTab: 'shift+tab'\n };\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} - Persist data\n */\n Ribbon.prototype.getPersistData = function () {\n return this.addOnPersist(['activeLayout']);\n };\n /**\n * Get component name.\n *\n * @returns {string} - Module name\n * @private\n */\n Ribbon.prototype.getModuleName = function () {\n return 'ribbon';\n };\n /**\n * To provide the array of modules needed for component rendering\n *\n * @returns {ModuleDeclaration[]} - returns module declaration.\n * @hidden\n */\n Ribbon.prototype.requiredModules = function () {\n var modules = [];\n modules.push({ member: 'ribbonButton', args: [this] }, { member: 'ribbonDropDown', args: [this] }, { member: 'ribbonSplitButton', args: [this] }, { member: 'ribbonCheckBox', args: [this] }, { member: 'ribbonColorPicker', args: [this] }, { member: 'ribbonComboBox', args: [this] }, { member: 'ribbonGroupButton', args: [this] }, { member: 'ribbonFileMenu', args: [this] }, { member: 'ribbonBackstage', args: [this] });\n return modules;\n };\n Ribbon.prototype.initialize = function () {\n this.element.id = this.element.id || getUniqueID('e-' + this.getModuleName());\n addClass([this.element], ['e-rbn'].concat((this.cssClass ? this.cssClass.split(constants.SPACE) : [])));\n if (this.enableRtl) {\n this.element.classList.add(constants.RTL_CSS);\n }\n this.element.style.width = formatUnit(this.width);\n this.renderTabs();\n if (this.ribbonFileMenuModule) {\n this.ribbonFileMenuModule.createFileMenu(this.fileMenu);\n }\n if (this.ribbonBackstageModule) {\n this.ribbonBackstageModule.createBackStage(this.backStageMenu);\n }\n this.createHelpPaneTemplate();\n var toolbar = this.tabObj['tbObj'];\n toolbar.refreshOverflow();\n createTooltip(this.element, this);\n this.wireEvents();\n this.wireKeyboardEvent();\n this.currentControlIndex = 0;\n };\n Ribbon.prototype.wireEvents = function () {\n EventHandler.add(window, 'resize', this.resizeHandler, this);\n };\n Ribbon.prototype.wireKeyboardEvent = function () {\n this.keyboardModuleRibbon = new KeyboardEvents(this.element, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n };\n Ribbon.prototype.keyActionHandler = function (e) {\n if (((e.key === 'Tab') && (!(e.target.classList.contains('e-tab-wrap')) && !(e.target.classList.contains('e-combobox'))))) {\n e.preventDefault();\n }\n var activeContent = this.tabObj.element.querySelector('#' + this.tabs[this.selectedTab].id + constants.CONTENT_ID);\n var ribbonControls = activeContent.querySelectorAll('.e-control');\n var comboBoxElements = activeContent.querySelectorAll('.e-combobox');\n var comboBoxEle;\n if (comboBoxElements) {\n for (var i = 0; i < comboBoxElements.length; i++) {\n if (comboBoxElements[parseInt(i.toString(), 10)].closest('.e-input-focus')) {\n comboBoxEle = comboBoxElements[parseInt(i.toString(), 10)];\n }\n }\n }\n if (comboBoxEle) {\n for (var i = 0; i < ribbonControls.length; i++) {\n if (ribbonControls[parseInt(i.toString(), 10)].classList.contains('e-combobox')) {\n if (ribbonControls[parseInt(i.toString(), 10)].closest('.e-input-focus')) {\n this.currentControlIndex = i;\n }\n }\n }\n }\n if (this.currentControlIndex === 0) {\n var item = ribbonControls[this.currentControlIndex].closest('.e-ribbon-item');\n while (item && item.classList.contains('e-disabled')) {\n this.currentControlIndex++;\n item = ribbonControls[this.currentControlIndex].closest('.e-ribbon-item');\n }\n }\n if (e.target.classList.contains('e-control') || e.target.classList.contains('e-ribbon-launcher-icon') ||\n e.target.classList.contains('e-ribbon-collapse-btn') || e.target.classList.contains('e-ribbon-last-item') ||\n e.target.classList.contains('e-ribbon-first-item') || e.target.classList.contains('e-ribbon-group-of-btn') ||\n e.target.classList.contains('e-ribbon-overall-of-btn')) {\n switch (e.action) {\n case 'rightarrow':\n this.handleNavigation(e, !this.enableRtl, ribbonControls);\n break;\n case 'leftarrow':\n this.handleNavigation(e, this.enableRtl, ribbonControls);\n break;\n case 'tab':\n if (e.target.classList.contains('e-combobox')) {\n if (this.currentControlIndex < ribbonControls.length - 1) {\n this.currentControlIndex++;\n }\n }\n break;\n case 'shiftTab':\n if (e.target.classList.contains('e-combobox')) {\n if (this.currentControlIndex > 0) {\n this.currentControlIndex--;\n }\n }\n else {\n this.tabObj.element.querySelector('.e-toolbar-item.e-active').querySelector('.e-tab-wrap').focus();\n this.currentControlIndex = 0;\n }\n }\n }\n };\n Ribbon.prototype.handleNavigation = function (e, enableRtl, ribbonControls) {\n var groupContainer;\n var prevGroupId;\n if (enableRtl) {\n if (this.currentControlIndex < ribbonControls.length - 1 && ribbonControls[this.currentControlIndex + 1].classList.contains('e-colorpicker')) {\n this.currentControlIndex++;\n }\n }\n else {\n if (this.currentControlIndex > 0 && ribbonControls[this.currentControlIndex - 1].classList.contains('e-colorpicker')) {\n this.currentControlIndex--;\n }\n }\n if ((!enableRtl && (this.currentControlIndex > 0)) || (enableRtl && (this.currentControlIndex < ribbonControls.length - 1))) {\n if (!e.target.classList.contains('e-combobox') && e.target.classList.contains('e-control') && !e.target.classList.contains('e-ribbon-last-item')) {\n if (enableRtl) {\n this.currentControlIndex++;\n }\n else {\n var prevGroupContainer = ribbonControls[parseInt(this.currentControlIndex.toString(), 10)].closest('.' + constants.RIBBON_GROUP_CONTAINER);\n if (prevGroupContainer) {\n prevGroupId = prevGroupContainer.getAttribute('id');\n }\n this.currentControlIndex--;\n }\n var item = ribbonControls[this.currentControlIndex].closest('.e-ribbon-item');\n while (item && item.classList.contains('e-disabled')) {\n if (((enableRtl && this.currentControlIndex === ribbonControls.length - 1) ||\n (!enableRtl && this.currentControlIndex === 0))) {\n if (ribbonControls[this.currentControlIndex].closest('.e-ribbon-item').classList.contains('e-disabled')) {\n this.tabObj.element.querySelector('.e-ribbon-collapse-btn').focus();\n break;\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n enableRtl ? this.currentControlIndex++ : this.currentControlIndex--;\n item = ribbonControls[this.currentControlIndex].closest('.e-ribbon-item');\n }\n ribbonControls[parseInt(this.currentControlIndex.toString(), 10)].focus();\n if (this.activeLayout === 'Classic') {\n groupContainer = ribbonControls[parseInt(this.currentControlIndex.toString(), 10)].closest('.' + constants.RIBBON_GROUP_CONTAINER);\n if (enableRtl) {\n var launcherIconEle = void 0;\n if (groupContainer) {\n launcherIconEle = groupContainer.querySelector('.e-ribbon-launcher-icon');\n }\n if (launcherIconEle) {\n var items = groupContainer.querySelectorAll('.e-ribbon-item');\n items[items.length - 1].querySelector('.e-control').classList.add('e-ribbon-last-item');\n }\n }\n else {\n if (groupContainer) {\n var groupContainerId = groupContainer.getAttribute('id');\n if (prevGroupId !== groupContainerId) {\n var launcherIconEle = groupContainer.querySelector('.e-ribbon-launcher-icon');\n if (launcherIconEle) {\n ribbonControls[parseInt((this.currentControlIndex + 1).toString(), 10)].classList.add('e-ribbon-first-item');\n }\n }\n }\n }\n }\n else {\n if (ribbonControls[parseInt((this.currentControlIndex).toString(), 10)].classList.contains('e-ribbon-first-item')) {\n ribbonControls[parseInt((this.currentControlIndex).toString(), 10)].classList.remove('e-ribbon-first-item');\n }\n else if (ribbonControls[parseInt((this.currentControlIndex).toString(), 10)].classList.contains('e-ribbon-last-item')) {\n ribbonControls[parseInt((this.currentControlIndex).toString(), 10)].classList.remove('e-ribbon-last-item');\n }\n }\n }\n }\n else {\n if (this.activeLayout === 'Classic') {\n this.tabObj.element.querySelector('.e-ribbon-collapse-btn').focus();\n }\n if (this.activeLayout === 'Simplified') {\n var overflowButton = this.tabObj.element.querySelector('.e-ribbon-overall-of-btn');\n if (enableRtl && (overflowButton && !overflowButton.classList.contains('e-ribbon-hide'))) {\n overflowButton.focus();\n }\n else {\n this.tabObj.element.querySelector('.e-ribbon-collapse-btn').focus();\n }\n }\n }\n if (e.target.classList.contains('e-ribbon-last-item')) {\n if (enableRtl) {\n groupContainer = ribbonControls[parseInt(this.currentControlIndex.toString(), 10)].closest('.' + constants.RIBBON_GROUP_CONTAINER);\n groupContainer.querySelector('.e-ribbon-launcher-icon').focus();\n }\n else {\n this.currentControlIndex--;\n ribbonControls[parseInt(this.currentControlIndex.toString(), 10)].focus();\n }\n }\n if (!enableRtl && e.target.classList.contains('e-ribbon-first-item')) {\n groupContainer = ribbonControls[parseInt((this.currentControlIndex - 1).toString(), 10)].closest('.' + constants.RIBBON_GROUP_CONTAINER);\n var launcherIconEle = groupContainer.querySelector('.e-ribbon-launcher-icon');\n if (launcherIconEle) {\n groupContainer.querySelector('.e-ribbon-launcher-icon').focus();\n }\n }\n if (e.target.classList.contains('e-ribbon-launcher-icon')) {\n if (enableRtl) {\n this.currentControlIndex++;\n ribbonControls[parseInt(this.currentControlIndex.toString(), 10)].focus();\n if (ribbonControls[parseInt((this.currentControlIndex - 1).toString(), 10)].classList.contains('e-ribbon-last-item')) {\n ribbonControls[parseInt((this.currentControlIndex - 1).toString(), 10)].classList.remove('e-ribbon-last-item');\n }\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n this.currentControlIndex;\n ribbonControls[parseInt(this.currentControlIndex.toString(), 10)].focus();\n }\n }\n if (e.target.classList.contains('e-ribbon-collapse-btn')) {\n if (enableRtl) {\n this.currentControlIndex = 0;\n var ribbonItem = ribbonControls[this.currentControlIndex].closest('.e-ribbon-item');\n while (ribbonItem && ribbonItem.classList.contains('e-disabled')) {\n this.currentControlIndex++;\n ribbonItem = ribbonControls[this.currentControlIndex].closest('.e-ribbon-item');\n }\n ribbonControls[parseInt(this.currentControlIndex.toString(), 10)].focus();\n }\n else {\n var overflowButton = this.tabObj.element.querySelector('.e-ribbon-overall-of-btn');\n if ((overflowButton && !overflowButton.classList.contains('e-ribbon-hide'))) {\n overflowButton.focus();\n }\n else {\n this.currentControlIndex = ribbonControls.length - 1;\n var ribbonItem = ribbonControls[this.currentControlIndex].closest('.e-ribbon-item');\n while (ribbonItem && ribbonItem.classList.contains('e-disabled')) {\n this.currentControlIndex--;\n ribbonItem = ribbonControls[this.currentControlIndex].closest('.e-ribbon-item');\n }\n ribbonControls[parseInt(this.currentControlIndex.toString(), 10)].focus();\n }\n }\n }\n if (this.activeLayout === 'Simplified' && e.target.classList.contains('e-ribbon-overall-of-btn')) {\n if (enableRtl) {\n this.tabObj.element.querySelector('.e-ribbon-collapse-btn').focus();\n }\n else {\n this.currentControlIndex = ribbonControls.length - 1;\n ribbonControls[parseInt(this.currentControlIndex.toString(), 10)].focus();\n }\n }\n };\n Ribbon.prototype.resizeHandler = function () {\n var activeContent = this.tabObj.element.querySelector('#' + this.tabs[this.selectedTab].id + constants.CONTENT_ID);\n this.checkOverflow(this.selectedTab, activeContent);\n if (this.scrollModule) {\n var scrollEle = this.tabObj.element.querySelector('.' + constants.HORIZONTAL_SCROLLBAR);\n this.scrollModule.scrollStep = scrollEle.offsetWidth;\n }\n };\n Ribbon.prototype.renderTabs = function () {\n this.tabsInternal = this.tabs.slice();\n this.tabsInternal = this.checkID(this.tabsInternal, 'tab', this.element.id);\n this.setProperties({ tabs: this.tabsInternal }, true);\n var tabEle = this.createElement('div', {\n id: this.element.id + constants.TAB_ID\n });\n this.element.appendChild(tabEle);\n this.validateItemSize();\n var tabItems = this.createTabItems(this.tabs);\n this.tabObj = new Tab({\n cssClass: constants.RIBBON_TAB,\n selectedItem: this.selectedTab,\n overflowMode: 'Popup',\n width: this.width,\n items: tabItems,\n enableRtl: this.enableRtl,\n created: this.tabCreated.bind(this),\n selected: this.ribbonTabSelected.bind(this),\n selecting: this.ribbonTabSelecting.bind(this)\n });\n this.tabObj.appendTo(tabEle);\n //Set the width value as \"0px\" with unit for proper calculation.\n this.element.style.setProperty(constants.RIBBON_FILE_MENU_WIDTH, '0px');\n this.element.style.setProperty(constants.RIBBON_HELP_PANE_TEMPLATE_WIDTH, '0px');\n var toolbarEle = tabEle.querySelector('.e-toolbar');\n var toolbar = getComponent(toolbarEle, Toolbar);\n toolbar.setProperties({ width: 'calc(100% - var(--fileMenuWidth) - var(--helpTemplateWidth))' });\n this.element.classList[this.isMinimized ? 'add' : 'remove'](constants.RIBBON_MINIMIZE);\n };\n Ribbon.prototype.minimize = function (val) {\n var _this = this;\n if (val === this.isMinimized) {\n return;\n }\n var eventArgs = { cancel: false };\n this.trigger(val ? 'ribbonCollapsing' : 'ribbonExpanding', eventArgs, function (args) {\n if (args.cancel) {\n return;\n }\n _this.setProperties({ isMinimized: val }, true);\n _this.element.classList.toggle(constants.RIBBON_MINIMIZE, _this.isMinimized);\n //to overwrite inline styles from hscroll\n _this.tabObj.element.querySelector('.e-content').style.display = val ? 'none' : 'block';\n if (!val) {\n _this.refreshLayout();\n }\n });\n };\n Ribbon.prototype.toggleLayout = function () {\n this.setProperties({ activeLayout: this.activeLayout === 'Simplified' ? 'Classic' : 'Simplified' }, true);\n this.switchLayout();\n };\n Ribbon.prototype.tabCreated = function () {\n if (!this.hideLayoutSwitcher) {\n this.addExpandCollapse();\n }\n this.renderInitialTab(this.selectedTab);\n };\n Ribbon.prototype.ribbonTabSelected = function (e) {\n this.isAddRemove = false;\n var selectedTabId = e.selectedItem.getAttribute('data-id');\n var selectedIndex = getIndex(this.tabs, (function (tab) { return (tab.id === selectedTabId); }));\n selectedIndex = selectedIndex === -1 ? this.selectedTab : selectedIndex;\n var eventArgs = { previousIndex: this.selectedTab, selectedIndex: selectedIndex };\n this.setProperties({ selectedTab: selectedIndex }, true);\n this.checkOverflow(selectedIndex, e.selectedContent.firstChild);\n if (this.activeLayout === 'Simplified' && this.overflowDDB) {\n var overflowTarget = this.overflowDDB.target;\n var ofTabContainer = overflowTarget.querySelector('.' + constants.RIBBON_TAB_ACTIVE);\n if (ofTabContainer) {\n ofTabContainer.classList.remove(constants.RIBBON_TAB_ACTIVE);\n }\n var activeTab = overflowTarget.querySelector('#' + selectedTabId + constants.OVERFLOW_ID);\n if (activeTab) {\n activeTab.classList.add(constants.RIBBON_TAB_ACTIVE);\n this.overflowDDB.element.classList.remove(constants.HIDE_CSS);\n }\n else {\n this.overflowDDB.element.classList.add(constants.HIDE_CSS);\n }\n }\n this.trigger('tabSelected', eventArgs);\n };\n Ribbon.prototype.checkOverflow = function (tabIndex, activeContent) {\n var tabContent = activeContent.closest('.' + constants.TAB_CONTENT);\n var isOverFlow = tabContent.offsetWidth < activeContent.offsetWidth;\n if (isOverFlow && !this.scrollModule) {\n if (this.activeLayout === 'Classic') {\n // Defines whether the shrinking is breaked due to insufficient space.\n var isBreak = false;\n isBreak = this.checkGroupShrinking(tabIndex, tabContent, activeContent, true);\n if (!isBreak && (tabContent.offsetWidth < activeContent.offsetWidth)) {\n isBreak = this.checkGroupShrinking(tabIndex, tabContent, activeContent, false);\n }\n if (tabContent.offsetWidth < activeContent.offsetWidth) {\n this.createOverflowDropdown(tabIndex, tabContent, activeContent);\n }\n }\n else {\n this.checkSimplifiedItemShrinking(tabIndex, tabContent, activeContent);\n if (tabContent.offsetWidth < activeContent.offsetWidth) {\n this.createSimplfiedOverflow(tabContent, activeContent, tabIndex);\n }\n }\n //Adds Scroll if the tabwidth is less the content width even after adding overflow dropdown.\n if ((tabContent.offsetWidth < activeContent.offsetWidth) && (!this.scrollModule)) {\n this.scrollModule = new HScroll({\n enableRtl: this.enableRtl\n }, this.tabObj.element.querySelector('.' + constants.TAB_CONTENT));\n }\n }\n else if (!isOverFlow) {\n this.destroyScroll();\n if (this.activeLayout === 'Classic') {\n var isBreak = false;\n isBreak = this.removeOverflowDropdown(tabContent, activeContent, false, tabIndex);\n //Check for expanding small items to medium items.\n if (!isBreak && (tabContent.offsetWidth > activeContent.offsetWidth)) {\n isBreak = this.checkGroupExpanding(tabIndex, tabContent, activeContent, true);\n }\n //Check for expanding medium items to large items.\n if (!isBreak && (tabContent.offsetWidth > activeContent.offsetWidth)) {\n isBreak = this.checkGroupExpanding(tabIndex, tabContent, activeContent, false);\n }\n }\n else {\n this.removeSimplfiedOverflow(tabContent, activeContent, tabIndex);\n if (tabContent.offsetWidth > activeContent.offsetWidth) {\n this.checkSimplifiedItemExpanding(tabIndex, tabContent, activeContent);\n }\n }\n }\n };\n Ribbon.prototype.checkSimplifiedItemShrinking = function (tabIndex, tabContent, activeContent) {\n var tab = this.tabs[parseInt(tabIndex.toString(), 10)];\n for (var i = (tab.groups.length - 1); (i >= 0); i--) {\n var group = tab.groups[parseInt(i.toString(), 10)];\n var groupContainer = tabContent.querySelector('#' + group.id + constants.CONTAINER_ID);\n for (var j = 0; ((j < group.collections.length) && (tabContent.offsetWidth < activeContent.offsetWidth)); j++) {\n var collection = group.collections[parseInt(j.toString(), 10)];\n for (var k = collection.items.length; ((k >= 1) && (tabContent.offsetWidth < activeContent.offsetWidth)); k--) {\n var item = collection.items[k - 1];\n if (((item.allowedSizes & RibbonItemSize.Small) && (item.allowedSizes & RibbonItemSize.Medium))\n && (item.activeSize === RibbonItemSize.Medium) && (item.displayOptions & DisplayMode.Simplified)) {\n var itemContainer = groupContainer.querySelector('#' + item.id + constants.CONTAINER_ID);\n if (itemContainer) {\n var itemEle = itemContainer.querySelector('#' + item.id);\n itemContainer.setAttribute('data-medium-width', activeContent.offsetWidth.toString());\n item.setProperties({ activeSize: RibbonItemSize.Small }, true);\n this.setItemSize(itemEle, item);\n }\n }\n }\n }\n }\n };\n Ribbon.prototype.checkSimplifiedItemExpanding = function (tabIndex, tabContent, activeContent) {\n var tab = this.tabs[parseInt(tabIndex.toString(), 10)];\n for (var i = (tab.groups.length - 1); (i >= 0); i--) {\n var group = tab.groups[parseInt(i.toString(), 10)];\n var groupContainer = tabContent.querySelector('#' + group.id + constants.CONTAINER_ID);\n for (var j = 0; ((j < group.collections.length) && (tabContent.offsetWidth > activeContent.offsetWidth)); j++) {\n var collection = group.collections[parseInt(j.toString(), 10)];\n for (var k = collection.items.length; ((k >= 1) && (tabContent.offsetWidth > activeContent.offsetWidth)); k--) {\n var item = collection.items[k - 1];\n if (((item.allowedSizes & RibbonItemSize.Small) && (item.allowedSizes & RibbonItemSize.Medium))\n && (item.activeSize === RibbonItemSize.Small) && (item.displayOptions & DisplayMode.Simplified)) {\n var itemContainer = groupContainer.querySelector('#' + item.id + constants.CONTAINER_ID);\n if (itemContainer) {\n var valString = itemContainer.getAttribute('data-medium-width');\n var value = valString ? parseInt(valString, 10) : null;\n if (value && (tabContent.offsetWidth > value)) {\n itemContainer.removeAttribute('data-medium-width');\n var itemEle = itemContainer.querySelector('#' + item.id);\n item.setProperties({ activeSize: RibbonItemSize.Medium }, true);\n this.setItemSize(itemEle, item);\n }\n }\n }\n }\n }\n }\n };\n Ribbon.prototype.createSimplfiedOverflow = function (tabContent, activeContent, tabIndex) {\n var orderedGroups = this.getGroupResizeOrder(true, tabIndex);\n for (var i = 0; ((i < orderedGroups.length) && (tabContent.offsetWidth < activeContent.offsetWidth)); i++) {\n var group = orderedGroups[parseInt(i.toString(), 10)];\n var groupEle = tabContent.querySelector('#' + group.id);\n var groupContainer = groupEle.querySelector('#' + group.id + constants.CONTAINER_ID);\n for (var j = group.collections.length; ((j >= 1) && (tabContent.offsetWidth < activeContent.offsetWidth)); j--) {\n var collection = group.collections[parseInt((j - 1).toString(), 10)];\n var collectionEle = groupEle.querySelector('#' + collection.id);\n for (var k = collection.items.length; ((k >= 1) && (tabContent.offsetWidth < activeContent.offsetWidth)); k--) {\n var item = collection.items[k - 1];\n var itemContainer = collectionEle.querySelector('#' + item.id + constants.CONTAINER_ID);\n if (((item.displayOptions === DisplayMode.Auto) ||\n (item.displayOptions === (DisplayMode.Simplified | DisplayMode.Overflow))) && !isNullOrUndefined(itemContainer)) {\n itemContainer.setAttribute('data-simplified-width', activeContent.offsetWidth.toString());\n this.createOverflowPopup(item, tabIndex, group.enableGroupOverflow, group.id, group.header, itemContainer, groupContainer, true);\n if (item.activeSize === RibbonItemSize.Small) {\n var itemEle = itemContainer.querySelector('#' + item.id);\n item.setProperties({ activeSize: RibbonItemSize.Medium }, true);\n this.setItemSize(itemEle, item);\n }\n if ((item.type === RibbonItemType.DropDown) || (item.type === RibbonItemType.SplitButton) || (item.type === RibbonItemType.GroupButton)) {\n this.updatePopupItems(item, itemContainer, group.enableGroupOverflow, true);\n }\n }\n }\n }\n if (!(group.enableGroupOverflow || groupEle.querySelector('.' + constants.RIBBON_ITEM))) {\n groupEle.classList.add('e-ribbon-emptyCollection');\n }\n }\n };\n Ribbon.prototype.updatePopupItems = function (item, itemEle, isGroupOF, isMenu) {\n var dropdown = getComponent(itemEle.querySelector('#' + item.id), (item.type === RibbonItemType.DropDown || item.type === RibbonItemType.GroupButton) ? DropDownButton : SplitButton);\n var dropDownPopup = dropdown.dropDown;\n // popup is on right if (isGroupOF && isMenu)\n // The position is reversed if RTL is enabled.\n // isRight = ((isGroupOF && isMenu) && !this.enableRtl ) || (!(isGroupOF && isMenu) && this.enableRtl) ==> (isGroupOF && isMenu) !== this.enableRtl\n var isLeft = (isGroupOF && isMenu) === this.enableRtl;\n dropDownPopup.setProperties({ position: { X: isLeft ? 'left' : 'right', Y: isMenu ? 'top' : 'bottom' } }, true);\n if (isMenu) {\n dropdown.beforeOpen = function () {\n if (isLeft) {\n dropDownPopup.element.style.setProperty('visibility', 'hidden');\n dropDownPopup.element.style.setProperty('display', 'block');\n dropDownPopup.setProperties({ offsetX: -1 * dropDownPopup.element.offsetWidth });\n dropDownPopup.element.style.removeProperty('display');\n dropDownPopup.element.style.removeProperty('visibility');\n }\n };\n }\n else {\n dropDownPopup.setProperties({ offsetX: 0 }, true);\n dropdown.beforeOpen = null;\n }\n };\n Ribbon.prototype.removeSimplfiedOverflow = function (tabContent, activeContent, tabIndex, isClear) {\n if (isClear === void 0) { isClear = false; }\n var orderedGroups = this.getGroupResizeOrder(false, tabIndex);\n var flag = true;\n for (var i = 0; ((i < orderedGroups.length) && flag); i++) {\n var group = orderedGroups[parseInt(i.toString(), 10)];\n var overflowDDB = void 0;\n var overflowtarget = void 0;\n if (group.enableGroupOverflow) {\n var overflowDDBEle = tabContent.querySelector('#' + group.id + constants.GROUPOF_BUTTON_ID);\n if (overflowDDBEle) {\n overflowDDB = getInstance(overflowDDBEle, DropDownButton);\n overflowtarget = overflowDDB.target;\n }\n }\n else {\n overflowDDB = this.overflowDDB;\n overflowtarget = this.overflowDDB ? this.overflowDDB.target : null;\n }\n for (var j = 0; ((j < group.collections.length) && flag); j++) {\n var collection = group.collections[parseInt(j.toString(), 10)];\n // eslint-disable-next-line max-len\n for (var k = 0; ((k < collection.items.length) && flag && !isClear && (tabContent.offsetWidth > activeContent.offsetWidth)); k++) {\n var item = collection.items[parseInt(k.toString(), 10)];\n var itemContainer = void 0;\n if (overflowtarget) {\n itemContainer = overflowtarget.querySelector('#' + item.id + constants.CONTAINER_ID);\n }\n if (((item.displayOptions === DisplayMode.Auto) ||\n (item.displayOptions === (DisplayMode.Simplified | DisplayMode.Overflow))) && !isNullOrUndefined(itemContainer)) {\n var width = parseInt(itemContainer.getAttribute('data-simplified-width'), 10);\n if (!isClear && (tabContent.offsetWidth < width)) {\n flag = false;\n break;\n }\n var groupEle_1 = tabContent.querySelector('#' + collection.id);\n if ((item.type === RibbonItemType.DropDown) || (item.type === RibbonItemType.SplitButton) || (item.type === RibbonItemType.GroupButton)) {\n this.updatePopupItems(item, itemContainer, group.enableGroupOverflow, false);\n }\n groupEle_1.append(itemContainer);\n this.removeOverflowEvent(item, itemContainer);\n if (item.allowedSizes & RibbonItemSize.Small) {\n item.setProperties({ activeSize: RibbonItemSize.Small }, true);\n this.setItemSize(itemContainer.querySelector('#' + item.id), item);\n }\n }\n }\n }\n var groupEle = tabContent.querySelector('#' + group.id);\n var itemEle = groupEle.querySelector('.' + constants.RIBBON_ITEM);\n if (groupEle.classList.contains('e-ribbon-emptyCollection') && itemEle !== null) {\n groupEle.classList.remove('e-ribbon-emptyCollection');\n }\n if (overflowDDB) {\n if (group.enableGroupOverflow) {\n if (overflowtarget.childElementCount === 0) {\n this.removeOverflowButton(overflowDDB);\n }\n }\n else {\n var ofGroupContainer = overflowtarget.querySelector('#' + group.id + constants.CONTAINER_ID);\n if (ofGroupContainer && ofGroupContainer.childElementCount === 1) {\n ofGroupContainer.remove();\n }\n var ofTabContainer = overflowtarget.querySelector('#' + this.tabs[parseInt(tabIndex.toString(), 10)].id + constants.OVERFLOW_ID);\n if (ofTabContainer && ofTabContainer.childElementCount === 0) {\n ofTabContainer.remove();\n this.overflowDDB.element.classList.add(constants.HIDE_CSS);\n }\n }\n }\n }\n if (this.overflowDDB) {\n var overflowEle = this.overflowDDB.target;\n if (overflowEle.childElementCount === 0) {\n this.removeOverflowButton(this.overflowDDB);\n this.overflowDDB = null;\n }\n }\n };\n Ribbon.prototype.createOverflowPopup = function (item, tabIndex, isGroupOF, groupId, groupHeader, itemEle, groupContainer, isResize) {\n var overflowButton;\n var contentEle = this.tabObj.items[parseInt(tabIndex.toString(), 10)].content;\n var isDisabledGroup = contentEle.querySelector('#' + groupId);\n if (isGroupOF) {\n var overflowDDB = groupContainer.querySelector('#' + groupId + constants.GROUPOF_BUTTON_ID);\n if (!overflowDDB) {\n overflowButton = this.addOverflowButton(groupId + constants.GROUPOF_BUTTON_ID);\n overflowButton.element.classList.add(constants.RIBBON_GROUP_OF_BUTTON);\n groupContainer.appendChild(overflowButton.element);\n }\n else {\n overflowButton = getInstance(overflowDDB, DropDownButton);\n }\n var overflowBtnTarget = overflowButton.target;\n if (isDisabledGroup && isDisabledGroup.classList.contains('e-disabled')) {\n overflowBtnTarget.classList.add('e-disabled');\n }\n isResize ? overflowBtnTarget.insertBefore(itemEle, overflowBtnTarget.querySelector('.' + constants.RIBBON_ITEM))\n : overflowBtnTarget.append(itemEle);\n }\n else {\n if (!this.overflowDDB) {\n this.overflowDDB = this.addOverflowButton(this.tabObj.element.id + constants.OVRLOF_BUTTON_ID);\n this.tabObj.element.insertBefore(this.overflowDDB.element, this.collapseButton);\n this.overflowDDB.element.classList.add(constants.RIBBON_OVERALL_OF_BUTTON);\n this.createOfTabContainer(groupId, groupHeader, itemEle, tabIndex);\n }\n else {\n this.overflowDDB.element.classList.remove(constants.HIDE_CSS);\n var overflowEle = this.overflowDDB.target;\n var ofTabContainer = overflowEle.querySelector('#' + this.tabs[parseInt(tabIndex.toString(), 10)].id + constants.OVERFLOW_ID);\n if (ofTabContainer) {\n var ofGroupContainer = overflowEle.querySelector('#' + groupId + constants.CONTAINER_ID);\n if (!ofGroupContainer) {\n ofGroupContainer = this.createGroupContainer(groupId, groupHeader);\n if (isDisabledGroup && isDisabledGroup.classList.contains('e-disabled')) {\n ofGroupContainer.classList.add('e-disabled');\n }\n ofTabContainer.append(ofGroupContainer);\n }\n isResize ? ofGroupContainer.insertBefore(itemEle, ofGroupContainer.querySelector('.' + constants.RIBBON_ITEM)) : ofGroupContainer.append(itemEle);\n }\n else {\n this.createOfTabContainer(groupId, groupHeader, itemEle, tabIndex);\n }\n }\n overflowButton = this.overflowDDB;\n }\n if (itemEle !== null) {\n this.addOverflowEvents(item, itemEle, overflowButton);\n }\n };\n Ribbon.prototype.addOverflowEvents = function (item, itemEle, overflowButton) {\n switch (item.type) {\n case 'Button':\n this.ribbonButtonModule.addOverFlowEvents(item, itemEle, overflowButton);\n break;\n case 'DropDown':\n this.ribbonDropDownModule.addOverFlowEvents(item, itemEle, overflowButton);\n break;\n case 'SplitButton':\n this.ribbonSplitButtonModule.addOverFlowEvents(item, itemEle, overflowButton);\n break;\n case 'CheckBox':\n this.ribbonCheckBoxModule.addOverFlowEvents(item, itemEle, overflowButton);\n break;\n case 'ColorPicker':\n this.ribbonColorPickerModule.addOverFlowEvents(item, itemEle, overflowButton);\n break;\n case 'ComboBox':\n this.ribbonComboBoxModule.addOverFlowEvents(item, itemEle, overflowButton);\n break;\n case 'GroupButton':\n if (this.activeLayout === 'Simplified') {\n this.ribbonGroupButtonModule.addOverFlowEvents(item, itemEle);\n break;\n }\n }\n };\n Ribbon.prototype.createOfTabContainer = function (groupId, groupHeader, itemEle, tabIndex) {\n var ofTabContainer = this.createElement('div', {\n id: this.tabs[parseInt(tabIndex.toString(), 10)].id + constants.OVERFLOW_ID,\n className: constants.RIBBON_OF_TAB_CONTAINER\n });\n var overflowtarget = this.overflowDDB.target;\n overflowtarget.append(ofTabContainer);\n var ofGroupContainer = this.createGroupContainer(groupId, groupHeader);\n ofGroupContainer.append(itemEle);\n ofTabContainer.append(ofGroupContainer);\n if (tabIndex === this.selectedTab) {\n ofTabContainer.classList.add(constants.RIBBON_TAB_ACTIVE);\n }\n };\n Ribbon.prototype.checkGroupShrinking = function (tabIndex, tabContent, activeContent, isLarge) {\n var isOverFlow = true;\n var isBreak = false;\n var tab = this.tabs[parseInt(tabIndex.toString(), 10)];\n for (var j = (tab.groups.length - 1); (isOverFlow && (j >= 0)); j--) {\n // eslint-disable-next-line max-len\n isBreak = isLarge ? this.checkLargeToMedium(tabIndex, tab, j, tabContent, activeContent) : this.checkMediumToSmall(tabIndex, tab, j, tabContent, activeContent);\n isOverFlow = !isBreak && (tabContent.offsetWidth < activeContent.offsetWidth);\n }\n return isBreak;\n };\n Ribbon.prototype.checkValidCollectionLength = function (collections) {\n var count = 0;\n for (var i = 0; i < collections.length; i++) {\n var items = collections[parseInt(i.toString(), 10)].items;\n for (var ind = 0; ind < items.length; ind++) {\n if (items[parseInt(ind.toString(), 10)].displayOptions & DisplayMode.Classic) {\n count++;\n break;\n }\n }\n if (count > 1) {\n return false;\n }\n }\n return count === 1;\n };\n Ribbon.prototype.checkClassicCollection = function (collections, n, isIncrement) {\n var items = collections[parseInt(n.toString(), 10)].items;\n for (var ind = 0; ind < items.length; ind++) {\n if (items[parseInt(ind.toString(), 10)].displayOptions & DisplayMode.Classic) {\n return n;\n }\n }\n n = isIncrement ? n + 1 : n - 1;\n if (isIncrement) {\n return (n === collections.length) ? n : this.checkClassicCollection(collections, n, isIncrement);\n }\n else {\n return (n < 0) ? n : this.checkClassicCollection(collections, n, isIncrement);\n }\n };\n Ribbon.prototype.checkClassicItem = function (items, n, isIncrement) {\n var item = items[parseInt(n.toString(), 10)];\n if (item.displayOptions & DisplayMode.Classic) {\n return n;\n }\n n = isIncrement ? n + 1 : n - 1;\n if (isIncrement) {\n return (n === items.length) ? n : this.checkClassicItem(items, n, isIncrement);\n }\n else {\n return (n < 0) ? n : this.checkClassicItem(items, n, isIncrement);\n }\n };\n Ribbon.prototype.checkLargeToMedium = function (tabIndex, tab, groupIndex, tabContent, activeContent, shouldSkip) {\n var _this = this;\n if (shouldSkip === void 0) { shouldSkip = false; }\n var group = tab.groups[parseInt(groupIndex.toString(), 10)];\n if (group.isCollapsed && !shouldSkip) {\n return false;\n }\n var canReduceCollection = function (collection) {\n return (collection.items.length === 1) && canReduceItem(collection.items[0]);\n };\n var canReduceItem = function (item) {\n return (item.allowedSizes & RibbonItemSize.Medium) && (item.activeSize === RibbonItemSize.Large);\n };\n var createShrinkEle = function (id, firstItem, start, end) {\n var shrinkEle = _this.createElement('div', {\n className: 'e-ribbon-shrink' + constants.SPACE + constants.RIBBON_ROW,\n id: id + '_shrink_container' + start,\n attrs: { 'data-start': start.toString(), 'data-end': end.toString() }\n });\n firstItem.parentElement.insertBefore(shrinkEle, firstItem);\n if (!shouldSkip) {\n shrinkEle.setAttribute('data-large-width', activeContent.offsetWidth.toString());\n }\n return shrinkEle;\n };\n var moveItemToColumn = function (start, end) {\n var collection = _this.tabs[parseInt(tabIndex.toString(), 10)]\n .groups[parseInt(groupIndex.toString(), 10)].collections[0];\n var firstItem = activeContent.querySelector('#' + collection.items[parseInt(start.toString(), 10)].id + constants.CONTAINER_ID);\n var shrinkEle = shouldSkip ? activeContent.querySelector('#' + collection.id + '_shrink_container' + start) :\n createShrinkEle(collection.id, firstItem, start, end);\n for (var i = start; i <= end; i++) {\n var item = collection.items[parseInt(i.toString(), 10)];\n if (!(item.displayOptions & DisplayMode.Classic)) {\n continue;\n }\n var ele = activeContent.querySelector('#' + item.id + constants.CONTAINER_ID);\n shrinkEle.appendChild(ele);\n item.setProperties({ activeSize: RibbonItemSize.Medium }, true);\n if (item.type === RibbonItemType.GroupButton && _this.activeLayout === 'Classic') {\n _this.setItemSize(ele.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID), item);\n }\n else {\n _this.setItemSize(ele.querySelector('#' + item.id), item);\n }\n }\n };\n var moveCollectionToColumn = function (start, end) {\n var group = _this.tabs[parseInt(tabIndex.toString(), 10)]\n .groups[parseInt(groupIndex.toString(), 10)];\n var firstItem = activeContent.querySelector('#' + group.collections[parseInt(start.toString(), 10)].id);\n var shrinkEle = shouldSkip ? activeContent.querySelector('#' + group.id + '_shrink_container' + start) :\n createShrinkEle(group.id, firstItem, start, end);\n for (var i = start; i <= end; i++) {\n var collection = group.collections[parseInt(i.toString(), 10)];\n var ele = activeContent.querySelector('#' + collection.id);\n shrinkEle.appendChild(ele);\n collection.items[0].setProperties({ activeSize: RibbonItemSize.Medium }, true);\n if (collection.items[0].type === RibbonItemType.GroupButton && _this.activeLayout === 'Classic') {\n _this.setItemSize(ele.querySelector('#' + collection.items[0].id + constants.RIBBON_GROUP_BUTTON_ID), collection.items[0]);\n }\n else {\n _this.setItemSize(ele.querySelector('#' + collection.items[0].id), collection.items[0]);\n }\n }\n };\n var orientation = group.orientation;\n if (orientation === ItemOrientation.Column) {\n for (var k = (group.collections.length - 1); k > 0; k--) {\n //to avoid negative index while checking for the second collection\n k = this.checkClassicCollection(group.collections, k, false);\n var l = k - 1;\n //Checks the element rendered at position n\n if ((l >= 0) && canReduceCollection(group.collections[parseInt(k.toString(), 10)])) {\n l = this.checkClassicCollection(group.collections, l, false);\n //Checks the element rendered at position n-1\n if ((l >= 0) && canReduceCollection(group.collections[parseInt(l.toString(), 10)])) {\n var m = l - 1;\n if (m >= 0) {\n m = this.checkClassicCollection(group.collections, m, false);\n }\n //Checks the element rendered at position n-2\n if ((m >= 0) && canReduceCollection(group.collections[parseInt(m.toString(), 10)])) {\n moveCollectionToColumn(m, k);\n }\n else {\n moveCollectionToColumn(l, k);\n }\n k = m;\n if (!shouldSkip && (tabContent.offsetWidth > activeContent.offsetWidth)) {\n return true;\n }\n }\n else {\n k = l;\n }\n }\n }\n }\n else {\n if (this.checkValidCollectionLength(group.collections)) {\n var collection = group.collections[0];\n for (var k = (collection.items.length - 1); k > 0; k--) {\n //to avoid negative index while checking for the second item\n k = this.checkClassicItem(collection.items, k, false);\n var l = k - 1;\n //Checks the element rendered at position n\n if ((l >= 0) && canReduceItem(collection.items[parseInt(k.toString(), 10)])) {\n l = this.checkClassicItem(collection.items, l, false);\n //Checks the element rendered at position n-1\n if ((l >= 0) && canReduceItem(collection.items[parseInt(l.toString(), 10)])) {\n var m = l - 1;\n //Checks the element rendered at position n-2\n if (m >= 0) {\n m = this.checkClassicItem(collection.items, m, false);\n }\n if ((m >= 0) && canReduceItem(collection.items[parseInt(m.toString(), 10)])) {\n moveItemToColumn(m, k);\n }\n else {\n moveItemToColumn(l, k);\n }\n k = m;\n if (!shouldSkip && (tabContent.offsetWidth > activeContent.offsetWidth)) {\n return true;\n }\n }\n else {\n k = l;\n }\n }\n }\n }\n }\n return false;\n };\n Ribbon.prototype.checkMediumToSmall = function (tabIndex, tab, groupIndex, tabContent, activeContent, shouldSkip) {\n var _this = this;\n if (shouldSkip === void 0) { shouldSkip = false; }\n var group = tab.groups[parseInt(groupIndex.toString(), 10)];\n if (group.isCollapsed && !shouldSkip) {\n return false;\n }\n var orientation = group.orientation;\n var ele = activeContent.querySelector('#' + group.id);\n var shrinkColumns = ele.querySelectorAll('.' + 'e-ribbon-shrink');\n var canReduceItem = function (item) {\n return (item.allowedSizes & RibbonItemSize.Small) && (item.activeSize === RibbonItemSize.Medium);\n };\n var reduceItemsToSmall = function (collectionIndex, start, end, middle) {\n if (middle === void 0) { middle = null; }\n var collection = _this.tabs[parseInt(tabIndex.toString(), 10)]\n .groups[parseInt(groupIndex.toString(), 10)].collections[parseInt(collectionIndex.toString(), 10)];\n var reduce = function (i) {\n var item = collection.items[parseInt(i.toString(), 10)];\n if (item.displayOptions & DisplayMode.Classic) {\n var ele_1 = activeContent.querySelector('#' + item.id);\n item.setProperties({ activeSize: RibbonItemSize.Small }, true);\n if (item.type === RibbonItemType.GroupButton) {\n ele_1 = activeContent.querySelector('#' + item.id + '_grpbtn');\n }\n _this.setItemSize(ele_1, item);\n }\n };\n reduce(start);\n if (middle) {\n reduce(middle);\n }\n reduce(end);\n };\n var reduceCollectionsToSmall = function (index, start, end, middle) {\n if (middle === void 0) { middle = null; }\n var group = _this.tabs[parseInt(tabIndex.toString(), 10)]\n .groups[parseInt(groupIndex.toString(), 10)];\n if (!shouldSkip) {\n shrinkColumns[parseInt(index.toString(), 10)].setAttribute('data-medium-width', activeContent.offsetWidth.toString());\n }\n var reduce = function (i) {\n var collection = group.collections[parseInt(i.toString(), 10)];\n if (collection.items[0].displayOptions & DisplayMode.Classic) {\n var ele_2 = activeContent.querySelector('#' + collection.items[0].id);\n collection.items[0].setProperties({ activeSize: RibbonItemSize.Small }, true);\n if (collection.items[0].type === RibbonItemType.GroupButton) {\n ele_2 = activeContent.querySelector('#' + collection.items[0].id + constants.RIBBON_GROUP_BUTTON_ID);\n }\n _this.setItemSize(ele_2, collection.items[0]);\n }\n };\n reduce(start);\n if (middle) {\n reduce(middle);\n }\n reduce(end);\n };\n var setWidth = function (id) {\n if (!shouldSkip) {\n var ele_3 = activeContent.querySelector('#' + id);\n ele_3.setAttribute('data-medium-width', activeContent.offsetWidth.toString());\n }\n };\n if (orientation === ItemOrientation.Column) {\n if (shrinkColumns.length > 0) {\n for (var k = (shrinkColumns.length - 1); k >= 0; k--) {\n var start = parseInt(shrinkColumns[parseInt(k.toString(), 10)].getAttribute('data-start'), 10);\n var end = parseInt(shrinkColumns[parseInt(k.toString(), 10)].getAttribute('data-end'), 10);\n //only 2 or 3 itmes alone can be present in shrinked column\n var l = this.checkClassicCollection(group.collections, start + 1, false); //next valid item\n if (canReduceItem(group.collections[parseInt(start.toString(), 10)].items[0])\n && canReduceItem(group.collections[parseInt(l.toString(), 10)].items[0])) {\n if (end === l) { //if only 2 item, then next valid item will be the end item, else check for 3 rd item satus.\n reduceCollectionsToSmall(k, start, end);\n }\n else if (canReduceItem(group.collections[parseInt(end.toString(), 10)].items[0])) {\n reduceCollectionsToSmall(k, start, end, l);\n }\n if (!shouldSkip && (tabContent.offsetWidth > activeContent.offsetWidth)) {\n return true;\n }\n }\n }\n }\n for (var k = (group.collections.length - 1); k >= 0; k--) {\n var collection = group.collections[parseInt(k.toString(), 10)];\n var classicItems = [];\n for (var i = 0; i < collection.items.length; i++) {\n if (collection.items[parseInt(i.toString(), 10)].displayOptions & DisplayMode.Classic) {\n classicItems.push(i);\n }\n }\n //If items length is 1 then, it would have been already check for shrinked column\n if ((classicItems.length > 1)) {\n if (canReduceItem(collection.items[classicItems[0]]) && canReduceItem(collection.items[classicItems[1]])) {\n if (classicItems.length === 2) {\n setWidth(collection.id);\n reduceItemsToSmall(k, classicItems[0], classicItems[1]);\n }\n else if (canReduceItem(collection.items[classicItems[2]])) {\n setWidth(collection.id);\n reduceItemsToSmall(k, classicItems[0], classicItems[2], classicItems[1]);\n }\n if (!shouldSkip && (tabContent.offsetWidth > activeContent.offsetWidth)) {\n return true;\n }\n }\n }\n }\n }\n else {\n if (this.checkValidCollectionLength(group.collections)) {\n if (shrinkColumns.length > 0) {\n for (var k = (shrinkColumns.length - 1); k >= 0; k--) {\n var shrinkColumn = shrinkColumns[parseInt(k.toString(), 10)];\n var start = parseInt(shrinkColumn.getAttribute('data-start'), 10);\n var end = parseInt(shrinkColumn.getAttribute('data-end'), 10);\n //only 2 or 3 itmes alone can be present in shrinked column\n var collection = group.collections[0];\n var l = this.checkClassicItem(collection.items, start + 1, false); //next valid item\n if (canReduceItem(group.collections[0].items[parseInt(start.toString(), 10)])\n && canReduceItem(group.collections[0].items[parseInt(l.toString(), 10)])) {\n if (end === l) { //if only 2 item, then next valid item will be the end item, else check for 3 rd item satus.\n setWidth(shrinkColumn.id);\n reduceItemsToSmall(0, start, end);\n }\n else if (canReduceItem(group.collections[0].items[parseInt(end.toString(), 10)])) {\n setWidth(shrinkColumn.id);\n reduceItemsToSmall(0, start, end, l);\n }\n if (!shouldSkip && (tabContent.offsetWidth > activeContent.offsetWidth)) {\n return true;\n }\n }\n }\n }\n }\n else {\n for (var k = (group.collections.length - 1); k >= 0; k--) {\n var collection = group.collections[parseInt(k.toString(), 10)];\n for (var l = (collection.items.length - 1); l >= 0; l--) {\n l = this.checkClassicItem(collection.items, l, false);\n if (l < 0) {\n continue;\n }\n var item = collection.items[parseInt(l.toString(), 10)];\n if (canReduceItem(item)) {\n item.type !== RibbonItemType.GroupButton ? setWidth(item.id) : setWidth(item.id + constants.RIBBON_GROUP_BUTTON_ID);\n reduceItemsToSmall(k, l, l);\n if (!shouldSkip && (tabContent.offsetWidth > activeContent.offsetWidth)) {\n return true;\n }\n }\n }\n }\n }\n }\n return false;\n };\n Ribbon.prototype.checkGroupExpanding = function (tabIndex, tabContent, activeContent, isSmall) {\n var isBreak = false;\n var tab = this.tabs[parseInt(tabIndex.toString(), 10)];\n for (var j = 0; (!isBreak && (j < tab.groups.length)); j++) {\n isBreak = isSmall ? this.checkSmallToMedium(tabIndex, tab, j, tabContent, activeContent, false, true) :\n this.checkMediumToLarge(tabIndex, tab, j, tabContent, activeContent, false, true);\n }\n return isBreak;\n };\n // eslint-disable-next-line max-len\n Ribbon.prototype.checkSmallToMedium = function (tabIndex, tab, groupIndex, tabContent, activeContent, shouldSkip, shouldClear) {\n var _this = this;\n var group = tab.groups[parseInt(groupIndex.toString(), 10)];\n var orientation = group.orientation;\n var ele = activeContent.querySelector('#' + group.id);\n var shrinkColumns = ele.querySelectorAll('.' + 'e-ribbon-shrink');\n var canExpandItem = function (item) {\n return (item.allowedSizes & RibbonItemSize.Medium) && (item.activeSize === RibbonItemSize.Small);\n };\n var expandItemToMedium = function (collectionIndex, index, parentEle) {\n var collection = _this.tabs[parseInt(tabIndex.toString(), 10)]\n .groups[parseInt(groupIndex.toString(), 10)].collections[parseInt(collectionIndex.toString(), 10)];\n var item = collection.items[parseInt(index.toString(), 10)];\n if (item.displayOptions & DisplayMode.Classic) {\n var ele_4 = parentEle.id === item.id ? parentEle : parentEle.querySelector('#' + item.id);\n item.setProperties({ activeSize: RibbonItemSize.Medium }, true);\n if (item.type === RibbonItemType.GroupButton) {\n ele_4 = document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID);\n }\n _this.setItemSize(ele_4, item);\n }\n };\n var expandCollectionsToMedium = function (i) {\n var collections = _this.tabs[parseInt(tabIndex.toString(), 10)]\n .groups[parseInt(groupIndex.toString(), 10)].collections;\n var item = collections[parseInt(i.toString(), 10)].items[0];\n if (item.displayOptions & DisplayMode.Classic) {\n var ele_5 = activeContent.querySelector('#' + collections[parseInt(i.toString(), 10)].items[0].id);\n collections[parseInt(i.toString(), 10)].items[0].setProperties({ activeSize: RibbonItemSize.Medium }, true);\n if (item.type === RibbonItemType.GroupButton) {\n ele_5 = activeContent.querySelector('#' + collections[parseInt(i.toString(), 10)].items[0].id + constants.RIBBON_GROUP_BUTTON_ID);\n }\n _this.setItemSize(ele_5, collections[parseInt(i.toString(), 10)].items[0]);\n }\n };\n if (orientation === ItemOrientation.Row) {\n // collection length is 1, then the it wll be covered in shrinked columns\n if (!this.checkValidCollectionLength(group.collections)) {\n for (var k = 0; k < group.collections.length; k++) {\n var collection = group.collections[parseInt(k.toString(), 10)];\n for (var l = 0; l < collection.items.length; l++) {\n l = this.checkClassicItem(collection.items, l, true);\n if (l === collection.items.length) {\n continue;\n }\n var item = collection.items[parseInt(l.toString(), 10)];\n if (canExpandItem(item)) {\n var itemEle = activeContent.querySelector('#' + item.id);\n if (item.type === 'GroupButton') {\n itemEle = activeContent.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID);\n }\n var valString = itemEle.getAttribute('data-medium-width');\n var value = valString ? parseInt(valString, 10) : null;\n if (value && (shouldSkip || (tabContent.offsetWidth > value))) {\n expandItemToMedium(k, l, itemEle);\n if (!shouldSkip || shouldClear) {\n itemEle.removeAttribute('data-medium-width');\n }\n }\n else if (value) {\n return true;\n }\n }\n }\n }\n }\n }\n else {\n for (var k = 0; k < group.collections.length; k++) {\n //If items length is 1 then, it will be handled in shrinked column\n if ((group.collections[parseInt(k.toString(), 10)].items.length > 1)) {\n var collection = group.collections[parseInt(k.toString(), 10)];\n var itemEle = activeContent.querySelector('#' + collection.id);\n var valString = itemEle.getAttribute('data-medium-width');\n var value = valString ? parseInt(valString, 10) : null;\n var classicItems = [];\n for (var i = 0; i < collection.items.length; i++) {\n if (collection.items[parseInt(i.toString(), 10)].displayOptions & DisplayMode.Classic) {\n classicItems.push(i);\n }\n }\n if ((classicItems.length > 1) && value && (shouldSkip || (tabContent.offsetWidth > value))) {\n expandItemToMedium(k, classicItems[0], itemEle);\n expandItemToMedium(k, classicItems[1], itemEle);\n if (classicItems.length === 3) {\n expandItemToMedium(k, classicItems[2], itemEle);\n }\n if (!shouldSkip || shouldClear) {\n itemEle.removeAttribute('data-medium-width');\n }\n }\n else if (value) {\n return true;\n }\n }\n }\n }\n if (shrinkColumns.length > 0) {\n for (var k = 0; k < shrinkColumns.length; k++) {\n var shrinkColumn = shrinkColumns[parseInt(k.toString(), 10)];\n var valString = shrinkColumn.getAttribute('data-medium-width');\n var value = valString ? parseInt(valString, 10) : null;\n if (value && (shouldSkip || (tabContent.offsetWidth > value))) {\n var start = parseInt(shrinkColumn.getAttribute('data-start'), 10);\n var end = parseInt(shrinkColumn.getAttribute('data-end'), 10);\n if (orientation === ItemOrientation.Row) {\n var collection = group.collections[0];\n var l = this.checkClassicItem(collection.items, start + 1, true); //next valid item\n expandItemToMedium(0, start, shrinkColumn);\n expandItemToMedium(0, l, shrinkColumn);\n // if l == end, then l is the last item, else L is the middle item. If l is middle then call the method for end.\n if (l !== end) {\n expandItemToMedium(0, end, shrinkColumn);\n }\n }\n else {\n var m = this.checkClassicCollection(group.collections, start + 1, true); //next valid item\n expandCollectionsToMedium(start);\n expandCollectionsToMedium(m);\n if (m !== end) {\n expandCollectionsToMedium(end);\n }\n }\n if (!shouldSkip || shouldClear) {\n shrinkColumn.removeAttribute('data-medium-width');\n }\n }\n else if (value) {\n return true;\n }\n }\n }\n return false;\n };\n Ribbon.prototype.checkMediumToLarge = function (tabIndex, tab, groupIndex, tabContent, activeContent, shouldSkip, shouldClear) {\n var _this = this;\n var group = tab.groups[parseInt(groupIndex.toString(), 10)];\n var orientation = group.orientation;\n var ele = activeContent.querySelector('#' + group.id);\n var shrinkColumns = ele.querySelectorAll('.' + 'e-ribbon-shrink');\n if (shrinkColumns.length === 0) {\n return false;\n }\n var expandItemsToLarge = function (start, end, parentEle, middle) {\n var items = _this.tabs[parseInt(tabIndex.toString(), 10)].\n groups[parseInt(groupIndex.toString(), 10)].collections[0].items;\n var reduce = function (i) {\n var item = items[parseInt(i.toString(), 10)];\n if (item.displayOptions & DisplayMode.Classic) {\n var container = parentEle.querySelector('#' + item.id + constants.CONTAINER_ID);\n var ele_6 = container.querySelector('#' + item.id);\n item.setProperties({ activeSize: RibbonItemSize.Large }, true);\n if (item.type === RibbonItemType.GroupButton) {\n ele_6 = container.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID);\n }\n _this.setItemSize(ele_6, item);\n parentEle.insertAdjacentElement('beforebegin', container);\n }\n };\n reduce(start);\n if (middle) {\n reduce(middle);\n }\n reduce(end);\n if (!shouldSkip || shouldClear) {\n remove(parentEle);\n }\n };\n var expandCollectionsToLarge = function (start, end, parentEle, middle) {\n var collections = _this.tabs[parseInt(tabIndex.toString(), 10)].\n groups[parseInt(groupIndex.toString(), 10)].collections;\n var reduce = function (i) {\n var collection = collections[parseInt(i.toString(), 10)];\n if (collection.items[0].displayOptions & DisplayMode.Classic) {\n var collectionEle = parentEle.querySelector('#' + collection.id);\n var ele_7 = collectionEle.querySelector('#' + collection.items[0].id);\n collection.items[0].setProperties({ activeSize: RibbonItemSize.Large }, true);\n if (collection.items[0].type === RibbonItemType.GroupButton) {\n ele_7 = collectionEle.querySelector('#' + collection.items[0].id + constants.RIBBON_GROUP_BUTTON_ID);\n }\n _this.setItemSize(ele_7, collection.items[0]);\n parentEle.insertAdjacentElement('beforebegin', collectionEle);\n }\n };\n reduce(start);\n if (middle) {\n reduce(middle);\n }\n reduce(end);\n if (!shouldSkip || shouldClear) {\n remove(parentEle);\n }\n };\n for (var k = 0; k < shrinkColumns.length; k++) {\n var shrinkColumn = shrinkColumns[parseInt(k.toString(), 10)];\n var valString = shrinkColumn.getAttribute('data-large-width');\n var value = valString ? parseInt(valString, 10) : null;\n if (value && (shouldSkip || (tabContent.offsetWidth > value))) {\n var start = parseInt(shrinkColumn.getAttribute('data-start'), 10);\n var end = parseInt(shrinkColumn.getAttribute('data-end'), 10);\n if (orientation === ItemOrientation.Row) {\n var collection = group.collections[0];\n var l = this.checkClassicItem(collection.items, start + 1, true); //next valid item\n if (l === end) {\n expandItemsToLarge(start, end, shrinkColumn);\n }\n else {\n expandItemsToLarge(start, end, shrinkColumn, l);\n }\n }\n else {\n var m = this.checkClassicCollection(group.collections, start + 1, true); //next valid item\n if (m === end) {\n expandCollectionsToLarge(start, end, shrinkColumn);\n }\n else {\n expandCollectionsToLarge(start, end, shrinkColumn, m);\n }\n }\n if (!shouldSkip || shouldClear) {\n shrinkColumn.removeAttribute('data-large-width');\n }\n }\n else if (value) {\n return true;\n }\n }\n return false;\n };\n Ribbon.prototype.handleContentSize = function (itemEle, isRemoveOverflow) {\n var itemContainer = itemEle.closest('.' + constants.RIBBON_GROUP_CONTENT);\n (isRemoveOverflow ? (itemContainer.classList.add(constants.RIBBON_CONTENT_HEIGHT)) : (itemContainer.classList.remove(constants.RIBBON_CONTENT_HEIGHT)));\n };\n Ribbon.prototype.setItemSize = function (itemEle, item) {\n var itemContainer = itemEle.closest('.' + constants.RIBBON_ITEM);\n if (item.type === RibbonItemType.Button) {\n this.ribbonButtonModule.updateButtonSize(itemEle, item);\n }\n else if (item.type === RibbonItemType.DropDown) {\n this.ribbonDropDownModule.updateDropDownSize(itemEle, item);\n }\n else if (item.type === RibbonItemType.SplitButton) {\n this.ribbonSplitButtonModule.updateSplitButtonSize(itemEle, item);\n }\n else if (item.type === RibbonItemType.Template) {\n remove(itemEle);\n this.createTemplateContent(item, itemContainer);\n }\n else if (item.type === RibbonItemType.GroupButton) {\n this.ribbonGroupButtonModule.updateGroupButtonSize(itemEle, item);\n }\n itemContainer.classList.remove(constants.RIBBON_CONTENT_HEIGHT, constants.RIBBON_LARGE_ITEM, constants.RIBBON_MEDIUM_ITEM, constants.RIBBON_SMALL_ITEM);\n if (item.activeSize === RibbonItemSize.Large) {\n itemContainer.classList.add(constants.RIBBON_LARGE_ITEM, constants.RIBBON_CONTENT_HEIGHT);\n }\n else {\n itemContainer.classList.add((item.activeSize === RibbonItemSize.Medium) ?\n constants.RIBBON_MEDIUM_ITEM : constants.RIBBON_SMALL_ITEM);\n }\n };\n Ribbon.prototype.createOverflowDropdown = function (tabIndex, tabContent, activeContent) {\n var collapseOrder = this.getGroupResizeOrder(true, tabIndex);\n if (collapseOrder.length === 0) {\n return;\n }\n var _loop_1 = function (i) {\n var group = collapseOrder[parseInt(i.toString(), 10)];\n var groupEle = this_1.tabObj.element.querySelector('#' + group.id);\n groupEle.setAttribute('data-expanded-width', activeContent.offsetWidth.toString());\n var groupContainer = groupEle.querySelector('#' + group.id + constants.CONTAINER_ID);\n var groupOverFlow = this_1.createElement('div', {\n className: constants.RIBBON_GROUP_OVERFLOW + constants.SPACE + constants.RIBBON_LARGE_ITEM,\n id: group.id + constants.OVERFLOW_ID + constants.CONTAINER_ID\n });\n groupEle.insertBefore(groupOverFlow, groupContainer);\n var groupIndex = getIndex(this_1.tabs[parseInt(tabIndex.toString(), 10)].groups, function (e) { return e.id === group.id; });\n var tab = this_1.tabs[parseInt(tabIndex.toString(), 10)];\n //Expanding the items in the group to their original expanded state\n this_1.checkSmallToMedium(tabIndex, tab, groupIndex, tabContent, activeContent, true, false);\n this_1.checkMediumToLarge(tabIndex, tab, groupIndex, tabContent, activeContent, true, false);\n var dropdown = this_1.ribbonDropDownModule.createOverFlowDropDown(group.id, group.header, group.groupIconCss, groupContainer, groupOverFlow, this_1.enableRtl);\n this_1.tabs[parseInt(tabIndex.toString(), 10)].\n groups[parseInt(groupIndex.toString(), 10)].setProperties({ isCollapsed: true }, true);\n for (var j = 0; j < group.collections.length; j++) {\n var collection = group.collections[parseInt(j.toString(), 10)];\n var collectionEle = groupContainer.querySelector('#' + collection.id);\n for (var k = 0; k < collection.items.length; k++) {\n var item = collection.items[parseInt(k.toString(), 10)];\n var itemEle = collectionEle.querySelector('#' + item.id + constants.CONTAINER_ID);\n if (itemEle !== null) {\n this_1.handleContentSize(itemEle);\n this_1.addOverflowEvents(item, itemEle, dropdown);\n }\n }\n }\n };\n var this_1 = this;\n for (var i = 0; ((i < collapseOrder.length) && (tabContent.offsetWidth < activeContent.offsetWidth)); i++) {\n _loop_1(i);\n }\n };\n // eslint-disable-next-line max-len\n Ribbon.prototype.removeOverflowDropdown = function (tabContent, activeContent, isClear, tabIndex) {\n if (isClear === void 0) { isClear = false; }\n var expandOrder = this.getGroupResizeOrder(false, tabIndex);\n if (expandOrder.length === 0) {\n return false;\n }\n var _loop_2 = function (i) {\n var group = expandOrder[parseInt(i.toString(), 10)];\n var groupEle = this_2.tabObj.element.querySelector('#' + group.id);\n if (!groupEle) {\n return \"break\";\n } //to handle the rerendering of tabcontrol when a ribbon tab is added/removed\n var width = parseInt(groupEle.getAttribute('data-expanded-width'), 10);\n if (!isClear && (tabContent.offsetWidth < width)) {\n return { value: true };\n }\n this_2.removeDropdown(group.id);\n var groupIndex = getIndex(this_2.tabs[parseInt(tabIndex.toString(), 10)].groups, function (e) { return e.id === group.id; });\n this_2.tabs[parseInt(tabIndex.toString(), 10)].\n groups[parseInt(groupIndex.toString(), 10)].setProperties({ isCollapsed: false }, true);\n var tab = this_2.tabs[parseInt(tabIndex.toString(), 10)];\n //Shrinking the items in the group to their previous shrinked state (before moving to dropdown)\n this_2.checkLargeToMedium(tabIndex, tab, groupIndex, tabContent, activeContent, true);\n this_2.checkMediumToSmall(tabIndex, tab, groupIndex, tabContent, activeContent, true);\n for (var j = 0; j < group.collections.length; j++) {\n var collection = group.collections[parseInt(j.toString(), 10)];\n var collectionEle = groupEle.querySelector('#' + collection.id);\n for (var k = 0; k < collection.items.length; k++) {\n var item = collection.items[parseInt(k.toString(), 10)];\n var itemEle = collectionEle.querySelector('#' + item.id + constants.CONTAINER_ID);\n if (itemEle !== null) {\n this_2.handleContentSize(itemEle, true);\n this_2.removeOverflowEvent(item, itemEle);\n }\n }\n }\n };\n var this_2 = this;\n for (var i = 0; i < expandOrder.length; i++) {\n var state_1 = _loop_2(i);\n if (typeof state_1 === \"object\")\n return state_1.value;\n if (state_1 === \"break\")\n break;\n }\n return false;\n };\n Ribbon.prototype.removeDropdown = function (groupId) {\n var dropdownElement = this.tabObj.element.querySelector('#' + groupId + constants.OVERFLOW_ID + constants.DROPDOWN_ID);\n if (dropdownElement) {\n var groupOverFlow = dropdownElement.parentElement;\n this.ribbonDropDownModule.removeOverFlowDropDown(dropdownElement);\n remove(groupOverFlow);\n }\n };\n Ribbon.prototype.getGroupResizeOrder = function (isCollapse, tabIndex) {\n var _this = this;\n var groups = this.tabs[parseInt(tabIndex.toString(), 10)].groups;\n groups = groups.filter(function (e) {\n // (isUndefined(e.isCollapsible) || e.isCollapsible) => check whethe rhte item is collapsible\n // if a isCollapsed property is undefined, then it is considered collapsible and included in collapsible list\n // ((isCollapse && !e.isCollapsed)||(!isCollapse && e.isCollapsed)) => isCollapse !== e.isCollapsed\n return (_this.activeLayout === 'Classic') ? (isUndefined(e.isCollapsible) || e.isCollapsible) && ((isCollapse &&\n isUndefined(e.isCollapsed)) || (!isUndefined(e.isCollapsed) && (isCollapse !== e.isCollapsed))) : true;\n });\n //sort the collapsible groups based on the priority\n groups.sort(function (a, b) { return a.priority - b.priority; });\n //reverse the sorted array to return the array in descending order while collapsing.\n return isCollapse ? groups.reverse() : groups;\n };\n Ribbon.prototype.destroyScroll = function () {\n if (this.scrollModule) {\n this.scrollModule.destroy();\n this.scrollModule = null;\n }\n };\n Ribbon.prototype.clearOverflowDropDown = function (index) {\n var activeContent = this.tabObj.element.querySelector('#' + this.tabs[parseInt(index.toString(), 10)].id + constants.CONTENT_ID);\n if (!activeContent) {\n return;\n }\n var tabContent = activeContent.closest('.' + constants.TAB_CONTENT);\n if (this.activeLayout === 'Simplified') {\n this.removeSimplfiedOverflow(activeContent, tabContent, index, true);\n }\n else {\n this.removeOverflowDropdown(activeContent, tabContent, true, index);\n }\n };\n Ribbon.prototype.ribbonTabSelecting = function (e) {\n var _this = this;\n this.currentControlIndex = 0;\n var nextTabId = e.selectingItem.getAttribute('data-id');\n var previousTabId = e.previousItem.getAttribute('data-id');\n var nextIndex = getIndex(this.tabs, (function (tab) { return (tab.id === nextTabId); }));\n var previousIndex = getIndex(this.tabs, (function (tab) { return (tab.id === previousTabId); }));\n nextIndex = nextIndex === -1 ? this.selectedTab : nextIndex;\n var eventArgs = {\n cancel: e.cancel, isInteracted: e.isInteracted, previousIndex: previousIndex, selectedIndex: nextIndex\n };\n this.trigger('tabSelecting', eventArgs, function (args) {\n if (args.cancel) {\n return;\n }\n _this.destroyScroll();\n if (!_this.isAddRemove && (previousIndex !== -1)) {\n _this.clearOverflowDropDown(previousIndex);\n }\n var selectedTabContent = _this.tabObj.items[parseInt(nextIndex.toString(), 10)].content;\n if ((!selectedTabContent.querySelector('.' + constants.RIBBON_GROUP)) && (_this.tabs[parseInt(nextIndex.toString(), 10)].groups.length !== 0)) {\n var elements = _this.createGroups(_this.tabs[parseInt(nextIndex.toString(), 10)].groups, nextIndex);\n append(elements, selectedTabContent);\n }\n });\n };\n Ribbon.prototype.createTabItems = function (tabs) {\n var _this = this;\n var tabItems = [];\n for (var i = 0; i < tabs.length; i++) {\n var ribbonTab = tabs[parseInt(i.toString(), 10)];\n var header = this.createElement('span', {\n innerHTML: ribbonTab.header,\n id: ribbonTab.id + constants.HEADER_ID\n });\n header.onclick = function () { _this.minimize(false); };\n header.ondblclick = function () { _this.minimize(true); };\n var tab = { header: { text: header }, id: ribbonTab.id, cssClass: ribbonTab.cssClass };\n var content = this.createElement('div', {\n className: tab.cssClass,\n id: ribbonTab.id + constants.CONTENT_ID\n });\n content.classList.add(constants.RIBBON_TAB_ITEM);\n tab.content = content;\n tabItems.push(tab);\n }\n return tabItems;\n };\n Ribbon.prototype.renderInitialTab = function (index) {\n var elements = this.createGroups(this.tabs[parseInt(index.toString(), 10)].groups, index);\n var content = this.tabObj.items[parseInt(index.toString(), 10)].content;\n append(elements, content);\n if (this.activeLayout === 'Simplified') {\n this.element.classList.add(constants.RIBBON_SIMPLIFIED_MODE);\n }\n var activeContent = this.tabObj.element.querySelector('#' + this.tabs[this.selectedTab].id + constants.CONTENT_ID);\n this.checkOverflow(this.selectedTab, activeContent);\n };\n Ribbon.prototype.addOverflowButton = function (btnId) {\n var _this = this;\n var overflowButton = this.createElement('button', {\n id: btnId\n });\n var overflowTarget = this.createElement('div', {\n className: constants.RIBBON_OVERFLOW_TARGET,\n attrs: { 'tabindex': '0' }\n });\n var overflowDDB = new DropDownButton({\n iconCss: constants.OVERFLOW_ICON,\n cssClass: constants.DROPDOWNBUTTON_HIDE + constants.SPACE + constants.RIBBON_GROUP_OVERFLOW_DDB,\n target: overflowTarget,\n locale: this.locale,\n enableRtl: this.enableRtl,\n enablePersistence: this.enablePersistence,\n beforeClose: function (args) {\n var ele = args.event ? closest(args.event.target, '.' + constants.RIBBON_POPUP_CONTROL) : null;\n if (ele) {\n args.cancel = true;\n }\n }\n }, overflowButton);\n this.element.classList.add(constants.RIBBON_OVERFLOW);\n createTooltip(overflowTarget, this);\n var isGroupOf;\n overflowButton.onkeydown = overflowButton.onclick = function () { _this.itemIndex = -1; isGroupOf = overflowButton.classList.contains('e-ribbon-overall-of-btn') ? false : true; };\n overflowTarget.onkeydown = function (e) { return (_this.upDownKeyHandler(e, overflowTarget, isGroupOf), _this); };\n return overflowDDB;\n };\n Ribbon.prototype.upDownKeyHandler = function (e, target, isGroupOf) {\n var items;\n if (isGroupOf) {\n items = target.getElementsByClassName('e-ribbon-item');\n }\n else {\n var currentList = target.querySelector('.e-ribbon-of-tab.e-ribbon-active');\n items = currentList.getElementsByClassName('e-ribbon-item');\n }\n var comboBoxEle = items[(!this.itemIndex || this.itemIndex < 0) ? 0 : this.itemIndex].querySelector('.e-control').classList.contains('e-combobox') ? items[(!this.itemIndex || this.itemIndex < 0) ? 0 : this.itemIndex].querySelector('.e-combobox') : null;\n var ribbonItem;\n if (comboBoxEle === null || (e.key === 'Tab') || this.itemIndex < 0) {\n if (e.key === 'ArrowDown' || (!e.shiftKey && e.key === 'Tab')) {\n if ((!this.itemIndex && this.itemIndex !== 0) || this.itemIndex < 0 || this.itemIndex === items.length - 1) {\n this.itemIndex = 0;\n ribbonItem = items[this.itemIndex].closest('.e-ribbon-item');\n this.findDisabledItem(ribbonItem, items, true);\n if (comboBoxEle && e.key === 'Tab') {\n e.preventDefault();\n items[this.itemIndex].querySelector('.e-control').focus();\n }\n }\n else if (this.itemIndex < items.length - 1 && this.itemIndex >= 0) {\n this.itemIndex++;\n ribbonItem = items[this.itemIndex].closest('.e-ribbon-item');\n this.findDisabledItem(ribbonItem, items, true);\n }\n }\n else if (e.key === 'ArrowUp' || (e.shiftKey && e.key === 'Tab')) {\n if (comboBoxEle === null || (e.key === 'Tab')) {\n if (!this.itemIndex || this.itemIndex === -1) {\n this.itemIndex = items.length - 1;\n ribbonItem = items[this.itemIndex].closest('.e-ribbon-item');\n this.findDisabledItem(ribbonItem, items, false);\n if (comboBoxEle && (e.shiftKey && e.key === 'Tab')) {\n e.preventDefault();\n items[this.itemIndex].querySelector('.e-control').focus();\n }\n }\n else if (this.itemIndex <= items.length - 1 && this.itemIndex > 0) {\n this.itemIndex--;\n ribbonItem = items[this.itemIndex].closest('.e-ribbon-item');\n this.findDisabledItem(ribbonItem, items, false);\n }\n }\n }\n target.setAttribute('index', this.itemIndex.toString());\n }\n var currentItemIndex = parseInt(target.getAttribute('index'), 10);\n var itemType = items[parseInt(currentItemIndex.toString(), 10)] ? items[parseInt(currentItemIndex.toString(), 10)].querySelector('.e-control').getAttribute('data-control') : null;\n if (e.key === 'ArrowDown' || e.key === 'ArrowUp' || e.key === ' ' || e.key === 'Tab') {\n if (itemType === 'ColorPicker') {\n if (e.key === 'Tab') {\n e.preventDefault();\n }\n items[parseInt(currentItemIndex.toString(), 10)].querySelector('.e-split-colorpicker').focus();\n }\n else {\n if (e.key === 'Tab') {\n e.preventDefault();\n }\n items[parseInt(currentItemIndex.toString(), 10)].querySelector('.e-control').focus();\n }\n if (e.key === ' ' && (itemType === 'CheckBox')) {\n var checkBoxEle = items[parseInt(currentItemIndex.toString(), 10)].querySelector('.e-control');\n var checkBox = getComponent(checkBoxEle, CheckBox);\n this.itemIndex = -1;\n checkBox.click();\n }\n }\n if (((itemType === 'SplitButton') && (e.key === 'ArrowRight' || e.key === 'ArrowLeft'))) {\n if (e.key === 'ArrowRight') {\n this.enableRtl ? items[parseInt(currentItemIndex.toString(), 10)].querySelector('.e-control').focus() :\n items[parseInt(currentItemIndex.toString(), 10)].querySelector('.e-dropdown-btn').focus();\n }\n if (e.key === 'ArrowLeft') {\n this.enableRtl ? items[parseInt(currentItemIndex.toString(), 10)].querySelector('.e-dropdown-btn').focus() :\n items[parseInt(currentItemIndex.toString(), 10)].querySelector('.e-control').focus();\n }\n }\n if (e.key === 'Enter') {\n this.itemIndex = -1;\n }\n };\n Ribbon.prototype.findDisabledItem = function (ribbonItem, items, isIncrease) {\n while (ribbonItem && ribbonItem.classList.contains('e-disabled')) {\n if (isIncrease) {\n if (this.itemIndex === items.length - 1 && items[this.itemIndex].closest('.e-ribbon-item').classList.contains('e-disabled')) {\n this.itemIndex = -1;\n }\n }\n else {\n if (this.itemIndex === 0 && items[this.itemIndex].closest('.e-ribbon-item').classList.contains('e-disabled')) {\n this.itemIndex = items.length;\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n isIncrease ? this.itemIndex++ : this.itemIndex--;\n ribbonItem = items[this.itemIndex].closest('.e-ribbon-item');\n }\n };\n Ribbon.prototype.removeOverflowButton = function (overflowDDB) {\n if (overflowDDB) {\n var btnEle = overflowDDB.element;\n destroyTooltip(overflowDDB.target);\n overflowDDB.destroy();\n btnEle.remove();\n }\n };\n Ribbon.prototype.removeOverflowEvent = function (item, itemEle) {\n switch (item.type) {\n case 'Button':\n this.ribbonButtonModule.removeOverFlowEvents(item, itemEle);\n break;\n case 'DropDown':\n this.ribbonDropDownModule.removeOverFlowEvents(item, itemEle);\n break;\n case 'SplitButton':\n this.ribbonSplitButtonModule.removeOverFlowEvents(item, itemEle);\n break;\n case 'CheckBox':\n this.ribbonCheckBoxModule.removeOverFlowEvents(item, itemEle);\n break;\n case 'ColorPicker':\n this.ribbonColorPickerModule.removeOverFlowEvents(item, itemEle);\n break;\n case 'ComboBox':\n this.ribbonComboBoxModule.removeOverFlowEvents(item, itemEle);\n break;\n case 'GroupButton':\n this.ribbonGroupButtonModule.removeOverFlowEvents(item, itemEle);\n break;\n }\n };\n Ribbon.prototype.createGroupContainer = function (groupId, groupHeader) {\n var ofGroupContainer = this.createElement('div', {\n className: constants.RIBBON_OF_GROUP_CONTAINER,\n id: groupId + constants.CONTAINER_ID\n });\n var ofGroupHeader = this.createElement('div', {\n className: constants.RIBBON_OVERFLOW_HEADER,\n id: groupId + constants.HEADER_ID,\n innerHTML: groupHeader\n });\n ofGroupContainer.append(ofGroupHeader);\n return ofGroupContainer;\n };\n Ribbon.prototype.addExpandCollapse = function () {\n var _this = this;\n this.collapseButton = this.createElement('span', {\n className: constants.RIBBON_COLLAPSE_BUTTON + constants.SPACE + constants.EXPAND_COLLAPSE_ICON,\n id: this.tabObj.element.id + constants.COLLAPSE_BUTTON_ID,\n attrs: { 'tabindex': '0', 'type': 'button', 'aria-label': 'Layout Switcher', 'role': 'button' }\n });\n this.collapseButton.onclick = function () { _this.toggleLayout(); };\n this.collapseButton.onkeydown = function (e) {\n if (e.key === 'Enter') {\n _this.toggleLayout();\n }\n };\n this.element.classList.add(constants.RIBBON_COLLAPSIBLE);\n if (this.activeLayout === 'Simplified') {\n this.collapseButton.classList.add(constants.RIBBON_EXPAND_BUTTON);\n }\n this.tabObj.element.appendChild(this.collapseButton);\n };\n Ribbon.prototype.removeExpandCollapse = function () {\n var _this = this;\n var index = getIndex(this.tooltipData, function (e) { return e.id === _this.collapseButton.id; });\n if (index !== -1) {\n this.tooltipData.splice(index, 1);\n }\n this.element.classList.remove(constants.RIBBON_COLLAPSIBLE);\n remove(this.tabObj.element.querySelector('.' + constants.RIBBON_COLLAPSE_BUTTON));\n this.collapseButton = null;\n };\n Ribbon.prototype.reRenderTabs = function (tabs) {\n this.destroyScroll();\n this.checkID(this.tabs, 'tab', this.element.id);\n for (var key in tabs) {\n var index = parseInt(key, 10);\n var tab = tabs[parseInt(index.toString(), 10)];\n var isNewTab = false;\n for (var j = 0; j < (this.tabObj.items.length); j++) {\n if (this.tabs[parseInt(index.toString(), 10)].id === this.tabObj.items[parseInt(j.toString(), 10)].id) {\n isNewTab = true;\n break;\n }\n }\n if (!isNewTab) {\n this.destroyTabItems(this.tabsInternal);\n this.tabsInternal = this.tabs.slice();\n this.validateItemSize();\n var tabItems = this.createTabItems(this.tabs);\n if (this.selectedTab >= this.tabs.length) {\n this.selectedTab = this.tabs.length - 1;\n }\n this.tabObj.setProperties({ items: tabItems, selectedItem: this.selectedTab });\n break;\n }\n else {\n var groups = this.tabs[parseInt(index.toString(), 10)].groups;\n var tabEle = this.tabObj.element;\n var ribbonTab = this.tabs[parseInt(index.toString(), 10)];\n ribbonTab.setProperties(tab, true);\n this.setProperties({ groups: this.checkID(ribbonTab.groups, 'group', ribbonTab.id) }, true);\n this.validateItemSize();\n var contentEle = this.tabObj.items[parseInt(index.toString(), 10)].content;\n if (groups) {\n // Check whether header is passed by the user and sets the updated values.\n if (tab.header) {\n this.tabObj.items[parseInt(index.toString(), 10)].header.text.innerText = ribbonTab.header;\n }\n // Check whether cssClass is passed by the user, and if it is, then remove the old values.\n if (tab.cssClass) {\n if (this.tabObj.items[parseInt(index.toString(), 10)].cssClass) {\n contentEle.classList.remove(this.tabObj.items[parseInt(index.toString(), 10)].cssClass);\n tabEle.querySelector('.e-active').classList.remove(this.tabObj.items[parseInt(index.toString(), 10)].cssClass);\n }\n contentEle.classList.add(ribbonTab.cssClass);\n tabEle.querySelector('.e-active').classList.add(ribbonTab.cssClass);\n }\n // Check whether group is passed by the user, and if it is, then remove the old values.\n if (tab.groups) {\n for (var _i = 0, groups_1 = groups; _i < groups_1.length; _i++) {\n var group = groups_1[_i];\n var dropdownElement = group.isCollapsed ? contentEle.querySelector('#' + group.id + constants.OVERFLOW_ID + constants.DROPDOWN_ID) : null;\n for (var _a = 0, _b = group.collections; _a < _b.length; _a++) {\n var collection = _b[_a];\n for (var _c = 0, _d = collection.items; _c < _d.length; _c++) {\n var item = _d[_c];\n var ele = dropdownElement ? this.ribbonDropDownModule.getDDBItemElement(dropdownElement, item.id) : contentEle.querySelector('#' + item.id);\n if (ele) {\n this.destroyFunction(item, ele);\n }\n }\n }\n if (dropdownElement) {\n this.ribbonDropDownModule.removeOverFlowDropDown(dropdownElement);\n }\n }\n var groupElements = contentEle.querySelectorAll('.e-ribbon-group');\n // eslint-disable-next-line @typescript-eslint/tslint/config\n groupElements.forEach(function (groupEle) { groupEle.remove(); });\n var elements = this.createGroups(ribbonTab.groups, index);\n append(elements, contentEle);\n }\n }\n }\n }\n };\n Ribbon.prototype.switchLayout = function () {\n this.currentControlIndex = 0;\n this.destroyScroll();\n this.collapseButton.classList.toggle(constants.RIBBON_EXPAND_BUTTON, this.activeLayout === 'Simplified');\n this.element.classList.toggle(constants.RIBBON_SIMPLIFIED_MODE, this.activeLayout === 'Simplified');\n for (var i = 0; i <= (this.tabs.length - 1); i++) {\n var tabIndex = i;\n var contentEle = this.tabObj.items[parseInt(tabIndex.toString(), 10)].content;\n if (contentEle.innerHTML !== '') {\n var tab = this.tabs[parseInt(tabIndex.toString(), 10)];\n var groupList = this.tabs[parseInt(tabIndex.toString(), 10)].groups;\n var activeContent = this.tabObj.element.querySelector('#' + this.tabs[parseInt(tabIndex.toString(), 10)].id + constants.CONTENT_ID);\n var tabContent = activeContent.closest('.' + constants.TAB_CONTENT);\n if (this.activeLayout === 'Simplified') {\n for (var i_1 = 0; i_1 < groupList.length; i_1++) {\n var group = groupList[parseInt(i_1.toString(), 10)];\n var alignType = groupList[parseInt(i_1.toString(), 10)].orientation;\n if (group.isCollapsed) {\n group.setProperties({ isCollapsed: false }, true);\n this.removeDropdown(group.id);\n }\n else {\n this.checkSmallToMedium(tabIndex, tab, i_1, tabContent, activeContent, true, false);\n this.checkMediumToLarge(tabIndex, tab, i_1, tabContent, activeContent, true, false);\n }\n var groupEle = tabContent.querySelector('#' + group.id);\n var groupContainer = groupEle.querySelector('#' + group.id + constants.CONTAINER_ID);\n var shrinkColumns = groupContainer.querySelectorAll('.' + 'e-ribbon-shrink');\n for (var i_2 = 0; i_2 < shrinkColumns.length; i_2++) {\n shrinkColumns[parseInt(i_2.toString(), 10)].remove();\n }\n var groupHeader = groupContainer.querySelector('#' + group.id + constants.HEADER_ID);\n groupHeader.remove();\n var groupContent = groupContainer.querySelector('#' + group.id + constants.CONTENT_ID);\n groupContent.classList.replace(constants.RIBBON_ROW, constants.RIBBON_COLUMN);\n groupContent.classList.remove(constants.RIBBON_CONTENT_HEIGHT);\n for (var j = 0; j < group.collections.length; j++) {\n var collection = group.collections[parseInt(j.toString(), 10)];\n var groupCollection = groupContainer.querySelector('#' + collection.id);\n groupCollection.classList.replace(constants.RIBBON_ROW, constants.RIBBON_COLUMN);\n for (var k = 0; k < collection.items.length; k++) {\n var itemList = collection.items;\n var item = collection.items[parseInt(k.toString(), 10)];\n var flag = true;\n while ((flag) && (item.displayOptions === DisplayMode.Classic)) {\n k++;\n var itemEle_1 = groupContainer.querySelector('#' + item.id + constants.CONTAINER_ID);\n var ele = itemEle_1.querySelector('#' + item.id);\n this.destroyFunction(item, ele);\n itemEle_1.remove();\n if (k < itemList.length) {\n item = itemList[parseInt(k.toString(), 10)];\n }\n else {\n flag = false;\n }\n }\n if (!flag) {\n break;\n }\n var size = ((item.allowedSizes === RibbonItemSize.Large) ||\n (item.allowedSizes & RibbonItemSize.Medium)) ? RibbonItemSize.Medium : RibbonItemSize.Small;\n size = (!(item.displayOptions & DisplayMode.Simplified) && (item.displayOptions & DisplayMode.Overflow))\n ? RibbonItemSize.Medium : size;\n var itemEle = void 0;\n if (!(item.displayOptions & DisplayMode.Classic)) {\n itemEle = this.createItems([item], alignType, group.id, group.header, group.enableGroupOverflow, tabIndex, groupContainer)[0];\n if (item.displayOptions & DisplayMode.Simplified) {\n groupCollection.append(itemEle);\n }\n }\n else {\n itemEle = groupContainer.querySelector('#' + item.id + constants.CONTAINER_ID);\n if (item.displayOptions === (DisplayMode.Classic | DisplayMode.Overflow)) {\n this.createOverflowPopup(item, tabIndex, group.enableGroupOverflow, group.id, group.header, itemEle, groupContainer);\n if ((item.type === RibbonItemType.DropDown) || (item.type === RibbonItemType.SplitButton) || (item.type === RibbonItemType.GroupButton)) {\n this.updatePopupItems(item, itemEle, group.enableGroupOverflow, true);\n }\n }\n if (item.type === RibbonItemType.GroupButton) {\n this.ribbonGroupButtonModule.switchGroupButton(item, itemEle);\n }\n item.setProperties({ activeSize: size }, true);\n var ele = itemEle.querySelector('#' + item.id);\n this.setItemSize(ele, item);\n }\n }\n }\n if (!(group.enableGroupOverflow || groupEle.querySelector('.' + constants.RIBBON_ITEM))) {\n groupEle.classList.add('e-ribbon-emptyCollection');\n }\n }\n }\n else {\n this.element.classList.remove(constants.RIBBON_OVERFLOW);\n for (var i_3 = 0; i_3 < groupList.length; i_3++) {\n var group = groupList[parseInt(i_3.toString(), 10)];\n var alignType = groupList[parseInt(i_3.toString(), 10)].orientation;\n var groupContainer = tabContent.querySelector('#' + group.id + constants.CONTAINER_ID);\n var groupContent = groupContainer.querySelector('#' + group.id + constants.CONTENT_ID);\n var groupHeader = this.createElement('div', {\n className: constants.RIBBON_GROUP_HEADER,\n id: group.id + constants.HEADER_ID,\n innerHTML: group.header\n });\n groupContainer.appendChild(groupHeader);\n if (alignType === 'Row') {\n groupContent.classList.replace(constants.RIBBON_COLUMN, constants.RIBBON_ROW);\n }\n groupContent.classList.add(constants.RIBBON_CONTENT_HEIGHT);\n for (var j = 0; j < group.collections.length; j++) {\n var overflowDDB = void 0;\n var overflowtarget = void 0;\n if (!group.enableGroupOverflow) {\n overflowDDB = this.overflowDDB;\n if (overflowDDB) {\n overflowtarget = this.overflowDDB.target;\n }\n }\n else {\n var overflowDDBEle = groupContainer.querySelector('#' + group.id + constants.GROUPOF_BUTTON_ID);\n if (overflowDDBEle) {\n overflowDDB = getInstance(overflowDDBEle, DropDownButton);\n overflowtarget = overflowDDB.target;\n }\n }\n var collection = group.collections[parseInt(j.toString(), 10)];\n var groupCollection = groupContainer.querySelector('#' + collection.id);\n if (alignType === 'Column') {\n groupCollection.classList.replace(constants.RIBBON_COLUMN, constants.RIBBON_ROW);\n }\n for (var k = 0; k < collection.items.length; k++) {\n var itemList = collection.items;\n var item = collection.items[parseInt(k.toString(), 10)];\n var flag = true;\n while ((flag) && !(item.displayOptions & DisplayMode.Classic)) {\n k++;\n var itemEle = void 0;\n if ((item.displayOptions & DisplayMode.Simplified) || (item.displayOptions & DisplayMode.Overflow)) {\n if (item.displayOptions & DisplayMode.Simplified) {\n itemEle = groupContainer.querySelector('#' + item.id + constants.CONTAINER_ID);\n }\n else {\n itemEle = overflowtarget.querySelector('#' + item.id + constants.CONTAINER_ID);\n }\n if (itemEle !== null) {\n var ele_8 = itemEle.querySelector('#' + item.id);\n this.destroyFunction(item, ele_8);\n itemEle.remove();\n }\n }\n if (k < itemList.length) {\n item = itemList[parseInt(k.toString(), 10)];\n }\n else {\n flag = false;\n }\n }\n if (!flag) {\n break;\n }\n if (!(item.displayOptions & (DisplayMode.Simplified | DisplayMode.Overflow))) {\n var itemEle = this.createItems([item], alignType, group.id, group.header, group.enableGroupOverflow, tabIndex)[0];\n groupCollection.append(itemEle);\n }\n else {\n var itemEle = groupContainer.querySelector('#' + item.id + constants.CONTAINER_ID);\n if (!itemEle) {\n itemEle = overflowtarget.querySelector('#' + item.id + constants.CONTAINER_ID);\n if ((item.type === RibbonItemType.DropDown) || (item.type === RibbonItemType.SplitButton) || (item.type === RibbonItemType.GroupButton)) {\n this.updatePopupItems(item, itemEle, group.enableGroupOverflow, false);\n }\n this.removeOverflowEvent(item, itemEle);\n }\n if (item.type === RibbonItemType.GroupButton) {\n this.ribbonGroupButtonModule.switchGroupButton(item, itemEle);\n }\n groupCollection.append(itemEle);\n }\n var ele = groupContainer.querySelector('#' + item.id);\n if (item.type === RibbonItemType.GroupButton) {\n ele = groupContainer.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID);\n }\n var itemsize = (item.allowedSizes & RibbonItemSize.Large) ? RibbonItemSize.Large :\n (item.allowedSizes & RibbonItemSize.Medium) ? RibbonItemSize.Medium : RibbonItemSize.Small;\n item.setProperties({ activeSize: itemsize }, true);\n this.setItemSize(ele, item);\n }\n if (group.enableGroupOverflow && overflowDDB) {\n if (overflowtarget.childElementCount === 0) {\n this.removeOverflowButton(overflowDDB);\n }\n }\n }\n }\n }\n if (this.selectedTab === tabIndex) {\n this.checkOverflow(tabIndex, activeContent);\n }\n }\n }\n if (this.activeLayout === 'Classic') {\n this.removeOverflowButton(this.overflowDDB);\n this.overflowDDB = null;\n }\n };\n Ribbon.prototype.createLauncherIcon = function (groupId, groupContainer) {\n var _this = this;\n var launcherIcon = this.createElement('div', {\n className: constants.RIBBON_LAUNCHER_ICON_ELE + ' ' + (this.launcherIconCss ? this.launcherIconCss : constants.RIBBON_LAUNCHER_ICON),\n id: groupId + constants.LAUNCHER_ID,\n attrs: { 'tabindex': '0', 'type': 'button', 'aria-label': 'Launcher Icon', 'role': 'button' }\n });\n groupContainer.appendChild(launcherIcon);\n groupContainer.classList.add(constants.RIBBON_LAUNCHER);\n EventHandler.add(launcherIcon, 'click', this.launcherIconClicked.bind(this, groupId), this);\n EventHandler.add(launcherIcon, 'keydown', function (e) {\n if (e.key === 'Enter') {\n _this.launcherIconClicked(groupId);\n }\n }, this);\n };\n Ribbon.prototype.launcherIconClicked = function (id) {\n var eventArgs = { groupId: id };\n this.trigger('launcherIconClick', eventArgs);\n };\n Ribbon.prototype.createGroups = function (groupList, tabIndex) {\n var groupElements = [];\n for (var i = 0; i < groupList.length; i++) {\n var group = groupList[parseInt(i.toString(), 10)];\n var alignType = group.orientation;\n var groupEle = this.createElement('div', {\n className: group.cssClass,\n id: group.id\n });\n groupEle.classList.add(constants.RIBBON_GROUP);\n groupElements.push(groupEle);\n var groupContainer = this.createElement('div', {\n className: group.cssClass,\n id: group.id + constants.CONTAINER_ID\n });\n groupContainer.classList.add(constants.RIBBON_GROUP_CONTAINER);\n groupEle.appendChild(groupContainer);\n var groupContent = this.createElement('div', {\n className: this.activeLayout === 'Simplified' ? constants.RIBBON_GROUP_CONTENT : (constants.RIBBON_GROUP_CONTENT + constants.SPACE + constants.RIBBON_CONTENT_HEIGHT),\n id: group.id + constants.CONTENT_ID\n });\n groupContent.classList.add(((alignType === 'Column') || (this.activeLayout === 'Simplified')) ? constants.RIBBON_COLUMN : constants.RIBBON_ROW);\n groupContainer.appendChild(groupContent);\n if (this.activeLayout === 'Classic') {\n var groupHeader = this.createElement('div', {\n className: constants.RIBBON_GROUP_HEADER,\n id: group.id + constants.HEADER_ID,\n innerHTML: group.header\n });\n groupContainer.appendChild(groupHeader);\n }\n if (group.showLauncherIcon) {\n this.createLauncherIcon(group.id, groupContainer);\n }\n var elements = this.createCollection(group.collections, group.orientation, group.id, group.header, group.enableGroupOverflow, tabIndex, groupContainer);\n append(elements, groupContent);\n if ((this.activeLayout === 'Simplified') && !(group.enableGroupOverflow || groupEle.querySelector('.' + constants.RIBBON_ITEM))) {\n groupEle.classList.add('e-ribbon-emptyCollection');\n }\n }\n return groupElements;\n };\n Ribbon.prototype.validateItemSize = function () {\n for (var k = 0; k < this.tabs.length; k++) {\n var groupList = this.tabs[parseInt(k.toString(), 10)].groups;\n for (var l = 0; l < groupList.length; l++) {\n var collectionList = groupList[parseInt(l.toString(), 10)].collections;\n var alignType = groupList[parseInt(l.toString(), 10)].orientation;\n for (var i = 0; i < collectionList.length; i++) {\n var items = collectionList[parseInt(i.toString(), 10)].items;\n for (var j = 0; j < items.length; j++) {\n var ribbonitem = items[parseInt(j.toString(), 10)];\n if (!ribbonitem.allowedSizes || (ribbonitem.allowedSizes === 0)) {\n ribbonitem.setProperties({\n allowedSizes: (RibbonItemSize.Small | RibbonItemSize.Medium | RibbonItemSize.Large)\n }, true);\n }\n if ((ribbonitem.type === 'ColorPicker') && (ribbonitem.allowedSizes !== RibbonItemSize.Small)) {\n ribbonitem.setProperties({ allowedSizes: RibbonItemSize.Small }, true);\n }\n else if ((ribbonitem.type === 'ComboBox' || ribbonitem.type === 'CheckBox') &&\n (ribbonitem.allowedSizes !== RibbonItemSize.Medium)) {\n ribbonitem.setProperties({ allowedSizes: RibbonItemSize.Medium }, true);\n }\n else if (((alignType === 'Column') && (items.length > 1)) || ((alignType === 'Row') && (collectionList.length > 1))) {\n if (ribbonitem.allowedSizes & RibbonItemSize.Large) {\n // To remove large size, perform 'and' with 011(3).\n var sizeVal = ribbonitem.allowedSizes & (RibbonItemSize.Small | RibbonItemSize.Medium);\n sizeVal = sizeVal ? sizeVal : RibbonItemSize.Medium;\n ribbonitem.setProperties({ allowedSizes: sizeVal }, true);\n }\n }\n var itemsize = (ribbonitem.allowedSizes & RibbonItemSize.Large) ? RibbonItemSize.Large :\n (ribbonitem.allowedSizes & RibbonItemSize.Medium) ? RibbonItemSize.Medium : RibbonItemSize.Small;\n ribbonitem.setProperties({ activeSize: itemsize }, true);\n }\n }\n }\n }\n };\n Ribbon.prototype.createCollection = function (collectionList, alignType, groupId, groupHeader, isGroupOF, tabIndex, groupContainer) {\n var collectionElements = [];\n for (var i = 0; i < collectionList.length; i++) {\n var collection = collectionList[parseInt(i.toString(), 10)];\n var collectionEle = this.createElement('div', {\n className: collection.cssClass,\n id: collection.id\n });\n collectionEle.classList.add(constants.RIBBON_COLLECTION);\n collectionEle.classList.add(((alignType !== 'Column') || (this.activeLayout === 'Simplified')) ?\n constants.RIBBON_COLUMN : constants.RIBBON_ROW);\n collectionElements.push(collectionEle);\n var elements = this.createItems(collection.items, alignType, groupId, groupHeader, isGroupOF, tabIndex, groupContainer);\n append(elements, collectionEle);\n if ((alignType === 'Row') && (i === 2)) {\n break;\n }\n }\n return collectionElements;\n };\n Ribbon.prototype.createRibbonItem = function (item, itemEle) {\n switch (item.type) {\n case 'Button':\n this.ribbonButtonModule.createButton(item, itemEle);\n break;\n case 'DropDown':\n this.ribbonDropDownModule.createDropDown(item, itemEle);\n break;\n case 'SplitButton':\n this.ribbonSplitButtonModule.createSplitButton(item, itemEle);\n break;\n case 'CheckBox':\n this.ribbonCheckBoxModule.createCheckBox(item, itemEle);\n break;\n case 'ColorPicker':\n this.ribbonColorPickerModule.createColorPicker(item, itemEle);\n break;\n case 'ComboBox':\n this.ribbonComboBoxModule.createComboBox(item, itemEle);\n break;\n case 'Template':\n this.createTemplateContent(item, itemEle);\n break;\n case 'GroupButton':\n this.ribbonGroupButtonModule.createGroupButton(item, itemEle);\n break;\n }\n };\n Ribbon.prototype.createItems = function (itemList, alignType, groupId, groupHeader, isGroupOF, tabIndex, groupContainer) {\n var _a;\n var itemElements = [];\n for (var i = 0; i < itemList.length; i++) {\n var item = itemList[parseInt(i.toString(), 10)];\n //To stop rendering of items with simplified mode position type as none\n var flag = true;\n while (flag &&\n (((this.activeLayout === 'Simplified') && !(item.displayOptions & (DisplayMode.Simplified | DisplayMode.Overflow))) ||\n ((this.activeLayout === 'Classic') && !(item.displayOptions & DisplayMode.Classic)))) {\n i++;\n if (i < itemList.length) {\n item = itemList[parseInt(i.toString(), 10)];\n }\n else {\n flag = false;\n }\n }\n if (!flag) {\n break;\n }\n var itemEle = this.createElement('div', {\n className: item.cssClass,\n id: item.id + constants.CONTAINER_ID\n });\n (_a = itemEle.classList).add.apply(_a, [constants.RIBBON_ITEM].concat((item.disabled ? [constants.DISABLED_CSS] : [])));\n // To avoid undefined items condition is added\n if (item.ribbonTooltipSettings && isTooltipPresent(item.ribbonTooltipSettings)) {\n itemEle.classList.add(constants.RIBBON_TOOLTIP_TARGET);\n this.tooltipData.push({ id: itemEle.id, data: item.ribbonTooltipSettings });\n }\n var size = item.activeSize;\n if (this.activeLayout === 'Simplified') {\n size = ((item.allowedSizes === RibbonItemSize.Large) || (item.allowedSizes & RibbonItemSize.Medium) ||\n (item.displayOptions === DisplayMode.Overflow)) ? RibbonItemSize.Medium : RibbonItemSize.Small;\n item.setProperties({ activeSize: size }, true);\n }\n if (size & RibbonItemSize.Large) {\n itemEle.classList.add(constants.RIBBON_LARGE_ITEM, constants.RIBBON_CONTENT_HEIGHT);\n }\n else {\n itemEle.classList.add((size & RibbonItemSize.Medium) ? constants.RIBBON_MEDIUM_ITEM : constants.RIBBON_SMALL_ITEM);\n }\n this.createRibbonItem(item, itemEle);\n if ((this.activeLayout === 'Simplified') && ((item.displayOptions === DisplayMode.Overflow) || (item.displayOptions === (DisplayMode.Classic | DisplayMode.Overflow)))) {\n this.createOverflowPopup(item, tabIndex, isGroupOF, groupId, groupHeader, itemEle, groupContainer);\n if ((item.type === RibbonItemType.DropDown) || (item.type === RibbonItemType.SplitButton) || (item.type === RibbonItemType.GroupButton)) {\n this.updatePopupItems(item, itemEle, isGroupOF, true);\n }\n }\n else {\n // For normal mode and Simplified mode position type as Group and Auto\n itemElements.push(itemEle);\n }\n if ((alignType === 'Column') && (i === 2)) {\n break;\n }\n }\n return itemElements;\n };\n Ribbon.prototype.createHelpPaneTemplate = function () {\n if (this.helpPaneTemplate) {\n var templateName = 'helpPaneTemplate';\n this.clearTemplate([templateName]);\n this.ribbonTempEle = this.createElement('div', {\n className: constants.RIBBON_HELP_TEMPLATE,\n id: this.element.id + constants.RIBBON_HELP_PANE_TEMPLATE_ID\n });\n var templateFunction = getTemplateFunction(this.helpPaneTemplate);\n append(templateFunction({}, this, templateName, 'helpPaneTemplate', this.isStringTemplate), this.ribbonTempEle);\n var tabEle = this.tabObj.element;\n var toolbarEle = tabEle.querySelector('.e-toolbar');\n toolbarEle.after(this.ribbonTempEle);\n tabEle.style.setProperty(constants.RIBBON_HELP_PANE_TEMPLATE_WIDTH, this.ribbonTempEle.offsetWidth + 'px');\n this.renderReactTemplates();\n }\n };\n Ribbon.prototype.createTemplateContent = function (item, itemElement) {\n var itemEle = this.createElement('div', {\n className: item.cssClass ? (constants.RIBBON_TEMPLATE + constants.SPACE + item.cssClass) : constants.RIBBON_TEMPLATE,\n id: item.id\n });\n if (item.disabled) {\n itemEle.classList.add(constants.DISABLED_CSS);\n itemEle.setAttribute('disabled', '');\n }\n itemElement.appendChild(itemEle);\n this.renderItemTemplate(item, itemEle);\n };\n Ribbon.prototype.renderItemTemplate = function (item, itemElement) {\n var templateName = 'ribbon' + item.id + 'itemTemplate';\n this.clearTemplate([templateName]);\n var templateFunction = getTemplateFunction(item.itemTemplate);\n append(templateFunction({ activeSize: RibbonItemSize[item.activeSize] }, this, templateName, (item.id + 'itemTemplate'), this.isStringTemplate), itemElement);\n this.renderReactTemplates();\n };\n Ribbon.prototype.checkID = function (list, type, initId) {\n var key = type === 'tab' ? constants.TAB_ID : type === 'group' ? constants.GROUP_ID :\n type === 'collection' ? constants.COLLECTION_ID : constants.ITEM_ID;\n for (var i = 0; i < list.length; i++) {\n var listitem = list[parseInt(i.toString(), 10)];\n if (!listitem.id) {\n listitem.setProperties({ id: initId + key + (this.idIndex++) }, true);\n }\n switch (type) {\n case 'tab':\n listitem.setProperties({ groups: this.checkID(listitem.groups, 'group', listitem.id) }, true);\n break;\n case 'group':\n listitem.setProperties({ collections: this.checkID(listitem.collections, 'collection', listitem.id) }, true);\n break;\n case 'collection':\n listitem.setProperties({ items: this.checkID(listitem.items, 'item', listitem.id) }, true);\n break;\n default:\n break;\n }\n }\n return list;\n };\n Ribbon.prototype.updateCommonProperty = function (commonProp) {\n this.tabObj.setProperties(commonProp);\n if (this.ribbonFileMenuModule) {\n this.ribbonFileMenuModule.setCommonProperties(commonProp);\n }\n if (this.ribbonBackstageModule) {\n this.ribbonBackstageModule.setCommonProperties(commonProp);\n }\n for (var i = 0; i < this.tabs.length; i++) {\n var tab = this.tabs[parseInt(i.toString(), 10)];\n var contentEle = this.tabObj.items[parseInt(i.toString(), 10)].content;\n if (contentEle.querySelector('.' + constants.RIBBON_GROUP)) {\n for (var _i = 0, _a = tab.groups; _i < _a.length; _i++) {\n var group = _a[_i];\n var dropdownElement = void 0;\n var dropdown = void 0;\n if (this.activeLayout === RibbonLayout.Classic) {\n dropdownElement = group.isCollapsed ?\n contentEle.querySelector('#' + group.id + constants.OVERFLOW_ID + constants.DROPDOWN_ID) : null;\n }\n else {\n dropdownElement = group.enableGroupOverflow ?\n contentEle.querySelector('#' + group.id + constants.GROUPOF_BUTTON_ID) : null;\n dropdown = dropdownElement ? getComponent(dropdownElement, DropDownButton) : this.overflowDDB;\n if (dropdown) {\n updateTooltipProp(dropdown.target, commonProp);\n dropdown.setProperties(commonProp);\n }\n }\n for (var _b = 0, _c = group.collections; _b < _c.length; _b++) {\n var collection = _c[_b];\n for (var _d = 0, _e = collection.items; _d < _e.length; _d++) {\n var item = _e[_d];\n var ele = null;\n if (this.activeLayout === RibbonLayout.Classic) {\n if (item.displayOptions & DisplayMode.Classic) {\n ele = dropdownElement ? this.ribbonDropDownModule.getDDBItemElement(dropdownElement, item.id) : item.type === RibbonItemType.GroupButton ? contentEle.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID) : contentEle.querySelector('#' + item.id);\n }\n }\n else {\n //Checks for Simplified and Auto options (Auto = classic + simplified + popup)\n ele = (item.displayOptions & DisplayMode.Simplified) ? contentEle.querySelector('#' + item.id) : null;\n // element will be null for \"Popup\" and if the item is moved to overflow in \"Auto\" mode\n if (!ele) {\n ele = dropdown.target.querySelector('#' + item.id);\n if (item.type === 'DropDown') {\n this.updatePopupItems(item, dropdown.target, group.enableGroupOverflow, true);\n }\n }\n }\n if (ele) {\n var moduleName = this.getItemModuleName(item);\n if (moduleName !== 'template') {\n if (moduleName === 'group-btn' && this.activeLayout === 'Classic') {\n for (var i_4 = 0; i_4 < item.groupButtonSettings.items.length; i_4++) {\n var btnEle = ele.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + i_4);\n updateCommonProperty(btnEle, 'btn', commonProp);\n }\n }\n else if (moduleName === 'group-btn' && this.activeLayout === 'Simplified') {\n updateCommonProperty(ele, 'dropdown-btn', commonProp);\n for (var i_5 = 0; i_5 < item.groupButtonSettings.items.length; i_5++) {\n var btnEle = document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + i_5);\n updateCommonProperty(btnEle, 'btn', commonProp);\n }\n }\n else {\n updateCommonProperty(ele, moduleName, commonProp);\n }\n }\n else if (!isNullOrUndefined(commonProp.enableRtl)) {\n ele.classList.toggle(constants.RTL_CSS, commonProp.enableRtl);\n }\n }\n }\n }\n }\n }\n }\n };\n Ribbon.prototype.removeLauncherIcon = function (groupId, dropdownElement, contentEle) {\n var containerId = groupId + constants.CONTAINER_ID;\n var containerEle = dropdownElement ? this.ribbonDropDownModule.getDDBItemElement(dropdownElement, containerId) : contentEle.querySelector('#' + containerId);\n if (containerEle) {\n containerEle.classList.remove(constants.RIBBON_LAUNCHER);\n var launcherIcon = containerEle.querySelector('#' + groupId + constants.LAUNCHER_ID);\n remove(launcherIcon);\n }\n };\n Ribbon.prototype.destroyTabItems = function (tabs) {\n for (var i = 0; i < tabs.length; i++) {\n var tab = tabs[parseInt(i.toString(), 10)];\n var contentEle = this.tabObj.items[parseInt(i.toString(), 10)].content;\n for (var _i = 0, _a = tab.groups; _i < _a.length; _i++) {\n var group = _a[_i];\n var dropdownElement = void 0;\n var dropdown = void 0;\n if (this.activeLayout === RibbonLayout.Classic) {\n dropdownElement = group.isCollapsed ?\n contentEle.querySelector('#' + group.id + constants.OVERFLOW_ID + constants.DROPDOWN_ID) : null;\n if (group.showLauncherIcon) {\n this.removeLauncherIcon(group.id, dropdownElement, contentEle);\n }\n }\n else {\n dropdownElement = group.enableGroupOverflow ?\n contentEle.querySelector('#' + group.id + constants.GROUPOF_BUTTON_ID) : null;\n dropdown = dropdownElement ? getComponent(dropdownElement, DropDownButton) : this.overflowDDB;\n }\n for (var _b = 0, _c = group.collections; _b < _c.length; _b++) {\n var collection = _c[_b];\n for (var _d = 0, _e = collection.items; _d < _e.length; _d++) {\n var item = _e[_d];\n var ele = void 0;\n if (this.activeLayout === RibbonLayout.Classic) {\n if (item.displayOptions & DisplayMode.Classic) {\n ele = dropdownElement ? this.ribbonDropDownModule.getDDBItemElement(dropdownElement, item.id) :\n contentEle.querySelector('#' + item.id);\n if (item.type === RibbonItemType.GroupButton) {\n ele = dropdownElement ? this.ribbonDropDownModule.getDDBItemElement(dropdownElement, item.id + constants.RIBBON_GROUP_BUTTON_ID) :\n contentEle.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID);\n }\n }\n }\n else {\n //Checks for Simplified and Auto options (Auto = classic + simplified + popup)\n ele = (item.displayOptions & DisplayMode.Simplified) ?\n contentEle.querySelector('#' + item.id) : null;\n // element will be null for \"Popup\" and if the item is moved to overflow in \"Auto\" mode\n if (!ele) {\n ele = dropdown ? dropdown.target.querySelector('#' + item.id) : null;\n }\n }\n if (ele) {\n this.destroyFunction(item, ele);\n }\n }\n }\n if ((this.activeLayout === RibbonLayout.Classic) && dropdownElement) {\n this.ribbonDropDownModule.removeOverFlowDropDown(dropdownElement);\n }\n else if ((this.activeLayout === RibbonLayout.Simplified) && group.enableGroupOverflow && dropdownElement) {\n this.removeOverflowButton(dropdown);\n }\n }\n }\n if (this.overflowDDB) {\n this.removeOverflowButton(this.overflowDDB);\n this.overflowDDB = null;\n }\n };\n Ribbon.prototype.destroyFunction = function (item, ele) {\n var moduleName = this.getItemModuleName(item);\n if (moduleName === 'colorpicker') {\n this.ribbonColorPickerModule.unwireColorPickerEvents(ele);\n }\n else if (moduleName === 'group-btn') {\n if (this.activeLayout === 'Classic') {\n for (var i = 0; i < item.groupButtonSettings.items.length; i++) {\n var btnEle = ele.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + i);\n if (btnEle) {\n destroyControl(btnEle, 'btn');\n }\n }\n }\n else {\n this.ribbonGroupButtonModule.destroyDropDown(item);\n }\n var _loop_3 = function (i) {\n if (item.groupButtonSettings.items[parseInt(i.toString(), 10)].ribbonTooltipSettings) {\n var groupButtonID_1 = item.id + constants.RIBBON_GROUP_BUTTON_ID + i;\n var index = getIndex(this_3.tooltipData, function (e) { return e.id === groupButtonID_1; });\n if (index !== -1) {\n this_3.tooltipData.splice(index, 1);\n }\n }\n };\n var this_3 = this;\n for (var i = 0; i < item.groupButtonSettings.items.length; i++) {\n _loop_3(i);\n }\n }\n else if (moduleName !== 'template') {\n destroyControl(ele, moduleName);\n }\n if (item.ribbonTooltipSettings) {\n var index = getIndex(this.tooltipData, function (e) { return e.id === item.id + constants.CONTAINER_ID; });\n if (index !== -1) {\n this.tooltipData.splice(index, 1);\n }\n }\n if (item.type === 'GroupButton') {\n this.ribbonGroupButtonModule.destroyDropDown(item);\n }\n };\n Ribbon.prototype.getItemModuleName = function (item) {\n switch (item.type) {\n case 'Button':\n return 'btn';\n case 'DropDown':\n return 'dropdown-btn';\n case 'SplitButton':\n return 'split-btn';\n case 'CheckBox':\n return 'checkbox';\n case 'ColorPicker':\n return 'colorpicker';\n case 'ComboBox':\n return 'combobox';\n case 'GroupButton':\n return 'group-btn';\n default:\n return 'template';\n }\n };\n Ribbon.prototype.clearOverflowResize = function () {\n this.destroyScroll();\n this.clearOverflowDropDown(this.selectedTab);\n var tab = this.tabs[this.selectedTab];\n var activeContent = this.tabObj.element.querySelector('#' + this.tabs[this.selectedTab].id + constants.CONTENT_ID);\n var tabContent = activeContent.closest('.' + constants.TAB_CONTENT);\n for (var j = 0; (j < tab.groups.length); j++) {\n this.checkSmallToMedium(this.selectedTab, tab, j, tabContent, activeContent, true, true);\n this.checkMediumToLarge(this.selectedTab, tab, j, tabContent, activeContent, true, true);\n }\n };\n /**\n * Refreshes the layout.\n *\n * @returns {void}\n */\n Ribbon.prototype.refreshLayout = function () {\n this.resizeHandler();\n };\n /**\n * Selects the tab\n *\n * @param {string} tabId - Gets the tab ID\n * @returns {void}\n */\n Ribbon.prototype.selectTab = function (tabId) {\n var index = getIndex(this.tabs, function (e) { return e.id === tabId; });\n this.setProperties({ selectedTab: index });\n };\n /**\n * Shows a specific tab in the ribbon.\n *\n * @param {string} tabId - The ID of the tab to be shown.\n * @returns {void}\n */\n Ribbon.prototype.showTab = function (tabId) {\n this.showHideTab(tabId, false);\n };\n /**\n * Hides a specific tab in the ribbon.\n *\n * @param {string} tabId - The ID of the tab to be hidden.\n * @returns {void}\n */\n Ribbon.prototype.hideTab = function (tabId) {\n this.showHideTab(tabId, true);\n };\n Ribbon.prototype.showHideTab = function (tabId, value) {\n var index = getIndex(this.tabs, function (e) { return e.id === tabId; });\n if (index === -1) {\n return;\n }\n this.tabObj.hideTab(index, value);\n };\n /**\n * Enables a specific tab in the ribbon.\n *\n * @param {string} tabId - The ID of the tab to be enabled.\n * @returns {void}\n */\n Ribbon.prototype.enableTab = function (tabId) {\n this.enableDisableTab(tabId, true);\n };\n /**\n * Disables a specific tab in the ribbon.\n *\n * @param {string} tabId - The ID of the tab to be disabled.\n * @returns {void}\n */\n Ribbon.prototype.disableTab = function (tabId) {\n this.enableDisableTab(tabId, false);\n };\n Ribbon.prototype.enableDisableTab = function (tabId, value) {\n var index = getIndex(this.tabs, function (e) { return e.id === tabId; });\n if (index === -1) {\n return;\n }\n this.tabObj.enableTab(index, value);\n };\n /**\n * Adds the ribbon tab.\n *\n * @param {RibbonTabModel} tab - Gets the ribbon tab model\n * @param {string} targetId - Gets the ID of the target tab to add the new tab.\n * @param {boolean} isAfter - Defines whether the tab is added before or after the target.\n * @returns {void}\n */\n Ribbon.prototype.addTab = function (tab, targetId, isAfter) {\n var index = targetId ? getIndex(this.tabs, function (e) { return e.id === targetId; }) : -1;\n index = (index === -1) ? this.tabs.length : (index + (isAfter ? 1 : 0));\n this.tabsInternal = this.tabs.slice();\n this.tabsInternal.splice(index, 0, tab);\n this.setProperties({ tabs: this.tabsInternal }, true);\n this.checkID([this.tabs[parseInt(index.toString(), 10)]], 'tab', this.element.id);\n this.tabsInternal = this.tabs.slice();\n this.validateItemSize();\n var tabItem = this.createTabItems([tab]);\n this.tabObj.addTab(tabItem, index);\n };\n /**\n * Removes the ribbon tab.\n *\n * @param {string} tabId - Gets the tab ID\n * @returns {void}\n */\n Ribbon.prototype.removeTab = function (tabId) {\n var index = getIndex(this.tabs, function (e) { return e.id === tabId; });\n if (index === -1) {\n return;\n }\n var contentEle = this.tabObj.items[parseInt(index.toString(), 10)].content;\n var groups = this.tabs[parseInt(index.toString(), 10)].groups;\n if (groups && (contentEle.innerHTML !== '')) {\n for (var _i = 0, groups_2 = groups; _i < groups_2.length; _i++) {\n var group = groups_2[_i];\n var dropdownElement = group.isCollapsed ? contentEle.querySelector('#' + group.id + constants.OVERFLOW_ID + constants.DROPDOWN_ID) : null;\n for (var _a = 0, _b = group.collections; _a < _b.length; _a++) {\n var collection = _b[_a];\n for (var _c = 0, _d = collection.items; _c < _d.length; _c++) {\n var item = _d[_c];\n var ele = dropdownElement ? this.ribbonDropDownModule.getDDBItemElement(dropdownElement, item.id) : contentEle.querySelector('#' + item.id);\n if (item.type === RibbonItemType.GroupButton && this.activeLayout === 'Classic') {\n ele = dropdownElement ? this.ribbonDropDownModule.getDDBItemElement(dropdownElement, item.id + constants.RIBBON_GROUP_BUTTON_ID) :\n contentEle.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID);\n }\n if (ele) {\n this.destroyFunction(item, ele);\n }\n }\n }\n if (dropdownElement) {\n this.ribbonDropDownModule.removeOverFlowDropDown(dropdownElement);\n }\n }\n }\n if (index === this.selectedTab) {\n this.isAddRemove = true;\n }\n this.tabsInternal = this.tabs.slice();\n this.tabsInternal.splice(index, 1);\n this.setProperties({ tabs: this.tabsInternal }, true);\n this.tabObj.removeTab(index);\n };\n /**\n * Adds the ribbon group.\n *\n * @param {string} tabId - Gets the tab ID.\n * @param {RibbonGroupModel} group - Gets the ribbon group model.\n * @param {string} targetId - Gets the ID of the target group to add the new group.\n * @param {boolean} isAfter - Defines whether the group is added before or after the target.\n * @returns {void}\n */\n Ribbon.prototype.addGroup = function (tabId, group, targetId, isAfter) {\n var tabIndex = getIndex(this.tabs, function (e) { return e.id === tabId; });\n if (tabIndex === -1) {\n return;\n }\n if (this.selectedTab === tabIndex) {\n this.clearOverflowResize();\n }\n var tab = this.tabs[parseInt(tabIndex.toString(), 10)];\n var ribbonGroups = tab.groups.slice();\n var index = targetId ? getIndex(ribbonGroups, function (e) { return e.id === targetId; }) : -1;\n index = (index === -1) ? ribbonGroups.length : (index + (isAfter ? 1 : 0));\n ribbonGroups.splice(index, 0, group);\n tab.setProperties({ groups: ribbonGroups }, true);\n this.checkID([tab.groups[parseInt(index.toString(), 10)]], 'group', tabId);\n this.validateItemSize();\n //Check whether the tab items are rendered\n var contentEle = this.tabObj.items[parseInt(tabIndex.toString(), 10)].content;\n if (contentEle.innerHTML !== '') {\n var element = this.createGroups([tab.groups[parseInt(index.toString(), 10)]], tabIndex)[0];\n //insert the element in tab items property.\n var targetEle = targetId ? contentEle.querySelector('#' + targetId) : null;\n if (targetEle) {\n targetEle.insertAdjacentElement(isAfter ? 'afterend' : 'beforebegin', element);\n }\n else {\n contentEle.append(element);\n }\n }\n if (this.selectedTab === tabIndex) {\n this.refreshLayout();\n }\n };\n /**\n * Removes the ribbon group.\n *\n * @param {string} groupId -Gets the group ID.\n * @returns {void}\n */\n Ribbon.prototype.removeGroup = function (groupId) {\n var itemProp = getGroup(this.tabs, groupId);\n if (!itemProp) {\n return;\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.clearOverflowResize();\n }\n //Check whether the tab items are rendered\n var contentEle = this.tabObj.items[itemProp.tabIndex].content;\n if (contentEle.innerHTML !== '') {\n var dropdownElement = void 0;\n var dropdown = void 0;\n if (itemProp.group.showLauncherIcon) {\n this.removeLauncherIcon(itemProp.group.id, null, contentEle);\n }\n if (this.activeLayout === RibbonLayout.Simplified) {\n dropdownElement = itemProp.group.enableGroupOverflow ?\n contentEle.querySelector('#' + itemProp.group.id + constants.GROUPOF_BUTTON_ID) : null;\n dropdown = dropdownElement ? getComponent(dropdownElement, DropDownButton) : this.overflowDDB;\n }\n for (var _i = 0, _a = itemProp.group.collections; _i < _a.length; _i++) {\n var collection = _a[_i];\n for (var _b = 0, _c = collection.items; _b < _c.length; _b++) {\n var item = _c[_b];\n this.removeItemElement(contentEle, item, dropdown);\n }\n }\n if (this.activeLayout === RibbonLayout.Simplified) {\n if (itemProp.group.enableGroupOverflow) {\n if (dropdown.target.childElementCount === 0) {\n this.removeOverflowButton(dropdown);\n }\n }\n else {\n var ofGroupContainer = dropdown.target.querySelector('#' + itemProp.group.id + constants.CONTAINER_ID);\n if (ofGroupContainer && ofGroupContainer.childElementCount === 1) {\n ofGroupContainer.remove();\n }\n var ofTabContainer = dropdown.target.querySelector('#' + this.tabs[parseInt(itemProp.tabIndex.toString(), 10)].id + constants.OVERFLOW_ID);\n if (ofTabContainer && ofTabContainer.childElementCount === 0) {\n ofTabContainer.remove();\n }\n }\n }\n var groupEle = contentEle.querySelector('#' + groupId);\n if (groupEle) {\n groupEle.remove();\n }\n }\n var ribbonGroups = this.tabs[itemProp.tabIndex].groups.slice();\n ribbonGroups.splice(itemProp.groupIndex, 1);\n this.tabs[itemProp.tabIndex].setProperties({ groups: ribbonGroups }, true);\n if (this.selectedTab === itemProp.tabIndex) {\n this.refreshLayout();\n }\n };\n /**\n * Hides a specific group within a ribbon tab.\n *\n * @param {string} groupID - The ID of the group to be hidden.\n * @returns {void}\n */\n Ribbon.prototype.hideGroup = function (groupID) {\n this.showHideGroup(groupID, true);\n };\n /**\n * Shows a specific group within a ribbon tab.\n *\n * @param {string} groupID - The ID of the group to be shown.\n * @returns {void}\n */\n Ribbon.prototype.showGroup = function (groupID) {\n this.showHideGroup(groupID, false);\n };\n Ribbon.prototype.showHideGroup = function (groupID, isHidden) {\n var overflowDDB;\n var overflowtarget;\n var itemProp = getGroup(this.tabs, groupID);\n if (!itemProp) {\n return;\n }\n var contentEle = this.tabObj.items[itemProp.tabIndex].content;\n var groupEle = contentEle.querySelector('#' + groupID);\n isHidden ? groupEle.classList.add('e-hidden') : groupEle.classList.remove('e-hidden');\n if (this.overflowDDB) {\n var overflowEle = this.overflowDDB.target;\n var ofTabContainer = overflowEle.querySelector('#' + this.tabs[parseInt(itemProp.tabIndex.toString(), 10)].id + constants.OVERFLOW_ID);\n if (itemProp.group.enableGroupOverflow) {\n var overflowDDBEle = contentEle.querySelector('#' + groupID + constants.GROUPOF_BUTTON_ID);\n if (overflowDDBEle) {\n overflowDDB = getInstance(overflowDDBEle, DropDownButton);\n overflowtarget = overflowDDB.target;\n }\n if (overflowtarget) {\n isHidden ? overflowtarget.classList.add('e-hidden') : overflowtarget.classList.remove('e-hidden');\n }\n }\n else if (ofTabContainer) {\n var grpContainer = ofTabContainer.querySelector('#' + groupID + constants.CONTAINER_ID);\n if (grpContainer) {\n isHidden ? grpContainer.classList.add('e-hidden') : grpContainer.classList.remove('e-hidden');\n }\n }\n }\n this.refreshLayout();\n };\n /**\n * Disables a specific group within a ribbon tab.\n *\n * @param {string} groupID - The ID of the group to be disabled.\n * @returns {void}\n */\n Ribbon.prototype.disableGroup = function (groupID) {\n this.enableDisableGroup(groupID, true);\n };\n /**\n * Enables a specific group within a ribbon tab.\n *\n * @param {string} groupID - The ID of the group to be enabled.\n * @returns {void}\n */\n Ribbon.prototype.enableGroup = function (groupID) {\n this.enableDisableGroup(groupID, false);\n };\n Ribbon.prototype.enableDisableGroup = function (groupID, isDisabled) {\n var overflowDDB;\n var overflowtarget;\n var itemProp = getGroup(this.tabs, groupID);\n if (!itemProp) {\n return;\n }\n var contentEle = this.tabObj.items[itemProp.tabIndex].content;\n var groupEle = contentEle.querySelector('#' + groupID);\n isDisabled ? groupEle.classList.add('e-disabled') : groupEle.classList.remove('e-disabled');\n if (this.overflowDDB) {\n var overflowEle = this.overflowDDB.target;\n var ofTabContainer = overflowEle.querySelector('#' + this.tabs[parseInt(itemProp.tabIndex.toString(), 10)].id + constants.OVERFLOW_ID);\n if (itemProp.group.enableGroupOverflow) {\n var overflowDDBEle = contentEle.querySelector('#' + groupID + constants.GROUPOF_BUTTON_ID);\n if (overflowDDBEle) {\n overflowDDB = getInstance(overflowDDBEle, DropDownButton);\n overflowtarget = overflowDDB.target;\n }\n if (overflowtarget) {\n isDisabled ? overflowtarget.classList.add('e-disabled') : overflowtarget.classList.remove('e-disabled');\n }\n }\n else if (ofTabContainer) {\n var grpContainer = ofTabContainer.querySelector('#' + groupID + constants.CONTAINER_ID);\n if (grpContainer) {\n isDisabled ? grpContainer.classList.add('e-disabled') : grpContainer.classList.remove('e-disabled');\n }\n }\n }\n };\n /**\n * adds the ribbon collection.\n *\n * @param {string} groupId - Gets the ribbon group ID.\n * @param {RibbonCollectionModel} collection - Gets the ribbon collection model.\n * @param {string} targetId - Gets the ID of the target collection to add the new collection.\n * @param {boolean} isAfter - Defines whether the collection is added before or after the target.\n * @returns {void}\n */\n Ribbon.prototype.addCollection = function (groupId, collection, targetId, isAfter) {\n var itemProp = getGroup(this.tabs, groupId);\n if (!itemProp) {\n return;\n }\n if ((itemProp.group.orientation === 'Row') && (itemProp.group.collections.length === 3)) {\n return;\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.clearOverflowResize();\n }\n var ribbonCollections = itemProp.group.collections.slice();\n var index = targetId ? getIndex(ribbonCollections, function (e) { return e.id === targetId; }) : -1;\n index = (index === -1) ? ribbonCollections.length : (index + (isAfter ? 1 : 0));\n ribbonCollections.splice(index, 0, collection);\n itemProp.group.setProperties({ collections: ribbonCollections }, true);\n this.checkID([itemProp.group.collections[parseInt(index.toString(), 10)]], 'collection', groupId);\n this.validateItemSize();\n var contentEle = this.tabObj.items[itemProp.tabIndex].content;\n if (contentEle.innerHTML !== '') {\n var collection_1 = itemProp.group.collections[parseInt(index.toString(), 10)];\n var element = this.createCollection([collection_1], itemProp.group.orientation, itemProp.group.id, itemProp.group.header, itemProp.group.enableGroupOverflow, itemProp.tabIndex)[0];\n if (itemProp.group.isCollapsed) {\n contentEle = this.ribbonDropDownModule.getOverflowDropDownPopup(itemProp, contentEle);\n }\n //insert the element in tab items property.\n var targetEle = targetId ? contentEle.querySelector('#' + targetId) : null;\n if (targetEle) {\n targetEle.insertAdjacentElement(isAfter ? 'afterend' : 'beforebegin', element);\n }\n else {\n contentEle.querySelector('#' + groupId + constants.CONTENT_ID).append(element);\n }\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.refreshLayout();\n }\n };\n /**\n * Removes the ribbon collection.\n *\n * @param {string} collectionId - Gets the collection ID.\n * @returns {void}\n */\n Ribbon.prototype.removeCollection = function (collectionId) {\n var itemProp = getCollection(this.tabs, collectionId);\n if (!itemProp) {\n return;\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.clearOverflowResize();\n }\n //Check whether the tab items are rendered\n var contentEle = this.tabObj.items[itemProp.tabIndex].content;\n if (contentEle.innerHTML !== '') {\n var dropdownElement = void 0;\n var dropdown = void 0;\n if (this.activeLayout === RibbonLayout.Simplified) {\n dropdownElement = itemProp.group.enableGroupOverflow ?\n contentEle.querySelector('#' + itemProp.group.id + constants.GROUPOF_BUTTON_ID) : null;\n dropdown = dropdownElement ? getComponent(dropdownElement, DropDownButton) : this.overflowDDB;\n }\n for (var _i = 0, _a = itemProp.collection.items; _i < _a.length; _i++) {\n var item = _a[_i];\n this.removeItemElement(contentEle, item, dropdown);\n }\n var groupEle = contentEle.querySelector('#' + collectionId);\n if (groupEle) {\n groupEle.remove();\n }\n }\n var ribbonGroup = itemProp.group;\n var ribbonCollections = ribbonGroup.collections.slice();\n ribbonCollections.splice(itemProp.collectionIndex, 1);\n ribbonGroup.setProperties({ collections: ribbonCollections }, true);\n if (this.selectedTab === itemProp.tabIndex) {\n this.refreshLayout();\n }\n };\n /**\n * Adds ribbon item.\n *\n * @param {string} collectionId - Gets the collection ID.\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {string} targetId - Gets the ID of the target item to add the new item.\n * @param {boolean} isAfter - Defines whether the item is added before or after the target.\n * @returns {void}\n */\n Ribbon.prototype.addItem = function (collectionId, item, targetId, isAfter) {\n var itemProp = getCollection(this.tabs, collectionId);\n if (!itemProp) {\n return;\n }\n if ((itemProp.group.orientation === 'Column') && (itemProp.collection.items.length === 3)) {\n return;\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.clearOverflowResize();\n }\n var ribbonItems = itemProp.collection.items.slice();\n var index = targetId ? getIndex(ribbonItems, function (e) { return e.id === targetId; }) : -1;\n index = (index === -1) ? ribbonItems.length : (index + (isAfter ? 1 : 0));\n ribbonItems.splice(index, 0, item);\n itemProp.collection.setProperties({ items: ribbonItems }, true);\n this.checkID([itemProp.collection.items[parseInt(index.toString(), 10)]], 'item', collectionId);\n this.validateItemSize();\n var contentEle = this.tabObj.items[itemProp.tabIndex].content;\n var groupContainer = contentEle.querySelector('#' + itemProp.group.id + constants.CONTAINER_ID);\n if (contentEle.innerHTML !== '') {\n var item_1 = itemProp.collection.items[parseInt(index.toString(), 10)];\n var element = this.createItems([item_1], itemProp.group.orientation, itemProp.group.id, itemProp.group.header, itemProp.group.enableGroupOverflow, itemProp.tabIndex, groupContainer)[0];\n if (itemProp.group.isCollapsed) {\n contentEle = this.ribbonDropDownModule.getOverflowDropDownPopup(itemProp, contentEle);\n }\n //insert the element in tab items property.\n var targetEle = targetId ? contentEle.querySelector('#' + targetId) : null;\n if (targetEle) {\n targetEle.closest('.' + constants.RIBBON_ITEM).insertAdjacentElement(isAfter ? 'afterend' : 'beforebegin', element);\n }\n else {\n if (element) {\n contentEle.querySelector('#' + collectionId).append(element);\n }\n }\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.refreshLayout();\n }\n };\n /**\n * Removes ribbon item.\n *\n * @param {string} itemId - Gets the item ID.\n * @returns {void}\n */\n Ribbon.prototype.removeItem = function (itemId) {\n var itemProp = getItem(this.tabs, itemId);\n if (!itemProp) {\n return;\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.clearOverflowResize();\n }\n //Check whether the tab items are rendered\n var contentEle = this.tabObj.items[itemProp.tabIndex].content;\n if (contentEle.innerHTML !== '') {\n var dropdownElement = void 0;\n var dropdown = void 0;\n if (this.activeLayout === RibbonLayout.Simplified) {\n dropdownElement = itemProp.group.enableGroupOverflow ?\n contentEle.querySelector('#' + itemProp.group.id + constants.GROUPOF_BUTTON_ID) : null;\n dropdown = dropdownElement ? getComponent(dropdownElement, DropDownButton) : this.overflowDDB;\n }\n var item = itemProp.item;\n this.removeItemElement(contentEle, item, dropdown);\n }\n var ribbonCollection = itemProp.collection;\n var ribbonItems = ribbonCollection.items;\n ribbonItems.splice(itemProp.itemIndex, 1);\n ribbonCollection.setProperties({ items: ribbonItems }, true);\n if (this.selectedTab === itemProp.tabIndex) {\n this.refreshLayout();\n }\n };\n /**\n * Hides a specific ribbon item.\n *\n * @param {string} itemId - The ID of the item to be hidden.\n * @returns {void}\n */\n Ribbon.prototype.hideItem = function (itemId) {\n this.showHideItem(itemId, true);\n };\n /**\n * Shows a specific ribbon item.\n *\n * @param {string} itemId - The ID of the item to be shown.\n * @returns {void}\n */\n Ribbon.prototype.showItem = function (itemId) {\n this.showHideItem(itemId, false);\n };\n Ribbon.prototype.showHideItem = function (itemId, isHidden) {\n var itemProp = getItem(this.tabs, itemId);\n if (!itemProp) {\n return;\n }\n var ele;\n if (itemProp.item.type === 'GroupButton') {\n ele = getItemElement(this, itemId + constants.RIBBON_GROUP_BUTTON_ID, itemProp);\n }\n else {\n ele = getItemElement(this, itemId, itemProp);\n }\n if (ele) {\n var itemEle = closest(ele, '.e-ribbon-item');\n isHidden ? itemEle.classList.add('e-hidden') : itemEle.classList.remove('e-hidden');\n }\n };\n /**\n * tab - Gets the ribbon tab to be updated. The id of the tab is a required property. Other properties are optional.\n *\n * @param {RibbonTabModel} tab - Gets the ribbon tab model.\n * @returns {void}\n */\n Ribbon.prototype.updateTab = function (tab) {\n var tabId = tab.id;\n var index = getIndex(this.tabs, function (e) { return e.id === tabId; });\n if (index === -1) {\n return;\n }\n var contentEle = this.tabObj.items[parseInt(index.toString(), 10)].content;\n var groups = this.tabs[parseInt(index.toString(), 10)].groups;\n var tabEle = this.tabObj.element;\n if (groups && (contentEle.innerHTML !== '')) {\n // Check whether cssClass is passed by the user, and if it is, then remove the old values.\n if (tab.cssClass) {\n if (this.tabs[parseInt(index.toString(), 10)].cssClass) {\n contentEle.classList.remove(this.tabs[parseInt(index.toString(), 10)].cssClass);\n tabEle.querySelector('.e-active').classList.remove(this.tabs[parseInt(index.toString(), 10)].cssClass);\n }\n }\n // Check whether group is passed by the user, and if it is, then remove the old values.\n if (tab.groups) {\n for (var _i = 0, groups_3 = groups; _i < groups_3.length; _i++) {\n var group = groups_3[_i];\n var dropdownElement = group.isCollapsed ? contentEle.querySelector('#' + group.id + constants.OVERFLOW_ID + constants.DROPDOWN_ID) : null;\n for (var _a = 0, _b = group.collections; _a < _b.length; _a++) {\n var collection = _b[_a];\n for (var _c = 0, _d = collection.items; _c < _d.length; _c++) {\n var item = _d[_c];\n var ele = dropdownElement ? this.ribbonDropDownModule.getDDBItemElement(dropdownElement, item.id) : contentEle.querySelector('#' + item.id);\n if (item.type === RibbonItemType.GroupButton && this.activeLayout === 'Classic') {\n ele = dropdownElement ? this.ribbonDropDownModule.getDDBItemElement(dropdownElement, item.id + constants.RIBBON_GROUP_BUTTON_ID) :\n contentEle.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID);\n }\n if (ele) {\n this.destroyFunction(item, ele);\n }\n }\n }\n if (dropdownElement) {\n this.ribbonDropDownModule.removeOverFlowDropDown(dropdownElement);\n }\n }\n var groupElements = contentEle.querySelectorAll('.e-ribbon-group');\n // eslint-disable-next-line @typescript-eslint/tslint/config\n groupElements.forEach(function (groupEle) { groupEle.remove(); });\n }\n }\n if (index === this.selectedTab) {\n this.isAddRemove = true;\n }\n var ribbonTab = this.tabs[parseInt(index.toString(), 10)];\n ribbonTab.setProperties(tab, true);\n this.setProperties({ groups: this.checkID(ribbonTab.groups, 'group', ribbonTab.id) }, true);\n this.validateItemSize();\n if (contentEle.innerHTML === '') {\n // Check whether group is passed by the user and sets the updated values.\n if (tab.groups) {\n var elements = this.createGroups(ribbonTab.groups, index);\n append(elements, contentEle);\n }\n if (this.selectedTab === index) {\n this.refreshLayout();\n }\n // Check whether cssClass is passed by the user and sets the updated values.\n if (tab.cssClass) {\n contentEle.classList.add(ribbonTab.cssClass);\n tabEle.querySelector('.e-active').classList.add(ribbonTab.cssClass);\n }\n // Check whether header is passed by the user and sets the updated values.\n if (tab.header) {\n tabEle.querySelector('#' + tabId + constants.HEADER_ID).innerText = ribbonTab.header;\n }\n }\n };\n /**\n * group - Gets the ribbon group to be updated. The id of the group is a required property. Other properties are optional.\n *\n * @param {RibbonGroupModel} group - Gets the ribbon group model.\n * @returns {void}\n */\n Ribbon.prototype.updateGroup = function (group) {\n var groupId = group.id;\n var itemProp = getGroup(this.tabs, groupId);\n if (!itemProp) {\n return;\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.clearOverflowResize();\n }\n //Check whether the tab items are rendered\n var contentEle = this.tabObj.items[itemProp.tabIndex].content;\n var groupEle = contentEle.querySelector('#' + groupId);\n var groupContainer = groupEle.querySelector('#' + group.id + constants.CONTAINER_ID);\n var dropdownElement;\n var dropdown;\n if (contentEle.innerHTML !== '') {\n if (itemProp.group.showLauncherIcon) {\n this.removeLauncherIcon(itemProp.group.id, null, contentEle);\n }\n if (this.activeLayout === RibbonLayout.Simplified) {\n dropdownElement = itemProp.group.enableGroupOverflow ?\n contentEle.querySelector('#' + itemProp.group.id + constants.GROUPOF_BUTTON_ID) : null;\n dropdown = dropdownElement ? getComponent(dropdownElement, DropDownButton) : this.overflowDDB;\n }\n // Check whether cssClass is passed by the user, and if it is, then remove the old values.\n if (group.cssClass) {\n if (itemProp.group.cssClass) {\n groupEle.classList.remove(itemProp.group.cssClass);\n if (groupContainer) {\n groupContainer.classList.remove(itemProp.group.cssClass);\n }\n }\n }\n // Check whether collections or orientation is passed by the user, and if it is, then remove the old values.\n if (group.collections || group.orientation) {\n if (itemProp.group.collections || itemProp.group.orientation) {\n for (var _i = 0, _a = itemProp.group.collections; _i < _a.length; _i++) {\n var collection = _a[_i];\n for (var _b = 0, _c = collection.items; _b < _c.length; _b++) {\n var item = _c[_b];\n this.removeItemElement(contentEle, item, dropdown);\n }\n }\n var collectionElements = groupEle.querySelectorAll('.e-ribbon-collection');\n // eslint-disable-next-line @typescript-eslint/tslint/config\n collectionElements.forEach(function (collectionEle) { collectionEle.remove(); });\n if (group.orientation) {\n var groupContent = groupContainer.querySelector('.e-ribbon-group-content');\n var removeCss = groupContent.classList.value.match(/(e-ribbon-[column|row]+)/g);\n if (removeCss) {\n removeClass([groupContent], removeCss);\n }\n }\n }\n }\n if (this.activeLayout === RibbonLayout.Simplified) {\n if (itemProp.group.enableGroupOverflow) {\n if (dropdown.target.childElementCount === 0) {\n this.removeOverflowButton(dropdown);\n }\n }\n else {\n var ofGroupContainer = dropdown.target.querySelector('#' + itemProp.group.id + constants.CONTAINER_ID);\n if (ofGroupContainer && ofGroupContainer.childElementCount === 1) {\n ofGroupContainer.remove();\n }\n var ofTabContainer = dropdown.target.querySelector('#' + this.tabs[parseInt(itemProp.tabIndex.toString(), 10)].id + constants.OVERFLOW_ID);\n if (ofTabContainer && ofTabContainer.childElementCount === 0) {\n ofTabContainer.remove();\n }\n }\n }\n }\n var ribbongroup = itemProp.group;\n ribbongroup.setProperties(group, true);\n ribbongroup.setProperties({ collections: this.checkID(ribbongroup.collections, 'collection', ribbongroup.id) }, true);\n this.validateItemSize();\n if (contentEle.innerHTML !== '') {\n // Check whether showLauncherIcon or orientation is passed by the user and sets the updated values.\n if (group.showLauncherIcon) {\n this.createLauncherIcon(ribbongroup.id, groupContainer);\n }\n // Check whether collections or orientation is passed by the user and sets the updated values.\n if (group.collections || group.orientation) {\n var groupContent = groupContainer.querySelector('.e-ribbon-group-content');\n groupContent.classList.add(((ribbongroup.orientation === 'Column') || (this.activeLayout === 'Simplified')) ? constants.RIBBON_COLUMN : constants.RIBBON_ROW);\n var elements = this.createCollection(ribbongroup.collections, ribbongroup.orientation, ribbongroup.id, ribbongroup.header, ribbongroup.enableGroupOverflow, itemProp.tabIndex, groupContainer);\n append(elements, groupContent);\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.refreshLayout();\n }\n // Check whether cssClass is passed by the user and sets the updated values.\n if (group.cssClass) {\n groupEle.classList.add(ribbongroup.cssClass);\n if (groupContainer) {\n groupContainer.classList.add(ribbongroup.cssClass);\n }\n }\n // Check whether header is passed by the user and sets the updated values.\n if (group.header) {\n if (this.activeLayout === RibbonLayout.Simplified && !group.enableGroupOverflow) {\n var overflowHeader = dropdown.target.querySelector('#' + group.id + constants.HEADER_ID);\n if (overflowHeader) {\n overflowHeader.innerText = ribbongroup.header;\n }\n }\n else if (this.activeLayout === RibbonLayout.Classic && !ribbongroup.isCollapsed) {\n groupEle.querySelector('.e-ribbon-group-header').innerText = ribbongroup.header;\n }\n else if (this.activeLayout === RibbonLayout.Classic && ribbongroup.isCollapsed) {\n var overflowEle = groupEle.querySelector('#' + ribbongroup.id + constants.OVERFLOW_ID + constants.DROPDOWN_ID);\n // need to set instance for dropdown\n var dropDownBtn = getInstance(overflowEle, DropDownButton);\n var overflowHeader = dropDownBtn.target.querySelector('#' + group.id + constants.HEADER_ID);\n if (overflowHeader) {\n overflowHeader.innerText = ribbongroup.header;\n }\n }\n }\n }\n };\n /**\n * collection - Gets the ribbon collection to be updated. The id of the collection is a required property. Other properties are optional.\n *\n * @param {RibbonCollectionModel} collection - Gets the ribbon collection model.\n * @returns {void}\n */\n Ribbon.prototype.updateCollection = function (collection) {\n var collectionId = collection.id;\n var itemProp = getCollection(this.tabs, collectionId);\n if (!itemProp) {\n return;\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.clearOverflowResize();\n }\n //Check whether the tab items are rendered\n var contentEle = this.tabObj.items[itemProp.tabIndex].content;\n var collectionEle = contentEle.querySelector('#' + collectionId);\n if (contentEle.innerHTML !== '') {\n var dropdownElement = void 0;\n var dropdown = void 0;\n if (this.activeLayout === RibbonLayout.Simplified) {\n dropdownElement = itemProp.group.enableGroupOverflow ?\n contentEle.querySelector('#' + itemProp.group.id + constants.GROUPOF_BUTTON_ID) : null;\n dropdown = dropdownElement ? getComponent(dropdownElement, DropDownButton) : this.overflowDDB;\n }\n // Check whether cssClass is passed by the user, and if it is, then remove the old values.\n if (collection.cssClass) {\n if (itemProp.collection.cssClass) {\n collectionEle.classList.remove(itemProp.collection.cssClass);\n }\n }\n if (collection.items) {\n if (itemProp.collection.items) {\n for (var _i = 0, _a = itemProp.collection.items; _i < _a.length; _i++) {\n var item = _a[_i];\n this.removeItemElement(contentEle, item, dropdown);\n }\n }\n }\n }\n var ribboncollection = itemProp.collection;\n ribboncollection.setProperties(collection, true);\n ribboncollection.setProperties({ items: this.checkID(ribboncollection.items, 'item', ribboncollection.id) }, true);\n this.validateItemSize();\n if (contentEle.innerHTML !== '') {\n if (collection.items) {\n var groupContainer = contentEle.querySelector('#' + itemProp.group.id + constants.CONTAINER_ID);\n var elements = this.createItems(ribboncollection.items, itemProp.group.orientation, itemProp.group.id, itemProp.group.header, itemProp.group.enableGroupOverflow, itemProp.tabIndex, groupContainer);\n append(elements, collectionEle);\n }\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.refreshLayout();\n }\n // Check whether cssClass is passed by the user and sets the updated values.\n if (collection.cssClass) {\n collectionEle.classList.add(ribboncollection.cssClass);\n }\n };\n /**\n * item - Gets the ribbon item to be updated. The id of the item is a required property. Other properties are optional.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @returns {void}\n */\n Ribbon.prototype.updateItem = function (item) {\n var itemId = item.id;\n var itemProp = getItem(this.tabs, itemId);\n if (!itemProp) {\n return;\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.clearOverflowResize();\n }\n //Check whether the tab items are rendered\n var contentEle = this.tabObj.items[itemProp.tabIndex].content;\n var groupEle = contentEle.querySelector('#' + itemProp.group.id);\n var groupContainer = groupEle.querySelector('#' + itemProp.group.id + constants.CONTAINER_ID);\n var itemContainer = null;\n var itemEle = null;\n var dropdownElement;\n var dropdown;\n if (contentEle.innerHTML !== '') {\n if (this.activeLayout === RibbonLayout.Simplified) {\n dropdownElement = itemProp.group.enableGroupOverflow ?\n contentEle.querySelector('#' + itemProp.group.id + constants.GROUPOF_BUTTON_ID) : null;\n dropdown = dropdownElement ? getComponent(dropdownElement, DropDownButton) : this.overflowDDB;\n }\n if (this.activeLayout === RibbonLayout.Simplified && itemProp.item.displayOptions === DisplayMode.Overflow) {\n itemContainer = dropdown.target.querySelector('#' + itemId + constants.CONTAINER_ID);\n itemEle = dropdown.target.querySelector('#' + itemId);\n if (item.displayOptions && item.displayOptions !== DisplayMode.Overflow) {\n var collectionEle = groupContainer.querySelector('#' + itemProp.collection.id);\n if (collectionEle) {\n collectionEle.appendChild(itemContainer);\n }\n }\n }\n else {\n itemContainer = groupContainer.querySelector('#' + itemId + constants.CONTAINER_ID);\n itemEle = contentEle.querySelector('#' + itemId);\n if (itemProp.item.type === 'GroupButton' && this.activeLayout === RibbonLayout.Classic) {\n itemEle = contentEle.querySelector('#' + itemId + constants.RIBBON_GROUP_BUTTON_ID);\n }\n if (this.activeLayout === RibbonLayout.Simplified && item.displayOptions === DisplayMode.Overflow) {\n this.createOverflowPopup(itemProp.item, itemProp.tabIndex, itemProp.group.enableGroupOverflow, itemProp.group.id, itemProp.group.header, itemContainer, groupContainer);\n if ((itemProp.item.type === RibbonItemType.DropDown) || (itemProp.item.type === RibbonItemType.SplitButton) || (item.type === RibbonItemType.GroupButton)) {\n this.updatePopupItems(itemProp.item, itemContainer, itemProp.group.enableGroupOverflow, true);\n }\n }\n }\n // Check whether cssClass is passed by the user, and if it is, then remove the old values.\n if (item.cssClass) {\n if (itemProp.item.cssClass) {\n itemContainer.classList.remove(itemProp.item.cssClass);\n }\n }\n this.destroyFunction(itemProp.item, itemEle);\n itemEle.remove();\n var removeCss = itemContainer.classList.value.match(/(e-ribbon-[large|medium|small]+-item)/g);\n if (removeCss) {\n removeClass([itemContainer], removeCss);\n }\n }\n var ribbonItem = itemProp.item;\n ribbonItem.setProperties(item, true);\n this.validateItemSize();\n if (contentEle.innerHTML !== '') {\n if (!(this.activeLayout === RibbonLayout.Simplified && ribbonItem.displayOptions === DisplayMode.Overflow)) {\n itemContainer = groupContainer.querySelector('#' + itemId + constants.CONTAINER_ID);\n }\n else {\n itemContainer = dropdown.target.querySelector('#' + itemId + constants.CONTAINER_ID);\n }\n // To avoid undefined items condition is added\n if (ribbonItem.ribbonTooltipSettings && isTooltipPresent(ribbonItem.ribbonTooltipSettings)) {\n itemContainer.classList.add(constants.RIBBON_TOOLTIP_TARGET);\n this.tooltipData.push({ id: itemContainer.id, data: ribbonItem.ribbonTooltipSettings });\n }\n var size = ribbonItem.activeSize;\n if (this.activeLayout === 'Simplified') {\n size = ((ribbonItem.allowedSizes === RibbonItemSize.Large) || (ribbonItem.allowedSizes & RibbonItemSize.Medium) ||\n (ribbonItem.displayOptions === DisplayMode.Overflow)) ? RibbonItemSize.Medium : RibbonItemSize.Small;\n ribbonItem.setProperties({ activeSize: size }, true);\n }\n if (size & RibbonItemSize.Large) {\n itemContainer.classList.add(constants.RIBBON_LARGE_ITEM, constants.RIBBON_CONTENT_HEIGHT);\n }\n else {\n itemContainer.classList.add((size & RibbonItemSize.Medium) ? constants.RIBBON_MEDIUM_ITEM : constants.RIBBON_SMALL_ITEM);\n }\n this.createRibbonItem(ribbonItem, itemContainer);\n if (this.activeLayout === 'Simplified' && itemProp.group.enableGroupOverflow) {\n if (dropdown.target.childElementCount === 0) {\n this.removeOverflowButton(dropdown);\n }\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.refreshLayout();\n }\n if (item.cssClass) {\n itemContainer.classList.add(ribbonItem.cssClass);\n }\n this.enableDisableItem(ribbonItem.id, ribbonItem.disabled);\n }\n };\n Ribbon.prototype.removeItemElement = function (contentEle, item, dropdown) {\n var ele = null;\n if (this.activeLayout === RibbonLayout.Classic) {\n ele = (item.displayOptions & DisplayMode.Classic) ? contentEle.querySelector('#' + item.id) : null;\n if (item.type === 'GroupButton') {\n ele = (item.displayOptions & DisplayMode.Classic) ? contentEle.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID) : null;\n }\n }\n else {\n //Checks for Simplified and Auto options (Auto = classic + simplified + popup)\n ele = (item.displayOptions & DisplayMode.Simplified) ? contentEle.querySelector('#' + item.id) : null;\n // element will be null for \"Popup\" and if the item is moved to overflow in \"Auto\" mode\n if (!ele) {\n ele = dropdown.target.querySelector('#' + item.id);\n }\n }\n if (ele) {\n this.destroyFunction(item, ele);\n if (item.type === 'GroupButton' && this.activeLayout === RibbonLayout.Simplified) {\n document.getElementById(item.id + constants.CONTAINER_ID).remove();\n }\n else {\n ele.closest('#' + item.id + constants.CONTAINER_ID).remove();\n }\n }\n };\n /**\n * Enables ribbon item.\n *\n * @param {string} itemId - Gets the item ID.\n * @returns {void}\n */\n Ribbon.prototype.enableItem = function (itemId) {\n this.enableDisableItem(itemId, false);\n };\n /**\n * Disables ribbon item.\n *\n * @param {string} itemId - Gets the item ID.\n * @returns {void}\n */\n Ribbon.prototype.disableItem = function (itemId) {\n this.enableDisableItem(itemId, true);\n };\n Ribbon.prototype.enableDisableItem = function (itemId, isDisabled) {\n var itemProp = getItem(this.tabs, itemId);\n if (!itemProp) {\n return;\n }\n itemProp.item.setProperties({ disabled: isDisabled }, true);\n var ele;\n if (itemProp.item.type === 'GroupButton') {\n ele = getItemElement(this, itemId + constants.RIBBON_GROUP_BUTTON_ID, itemProp);\n }\n else {\n ele = getItemElement(this, itemId, itemProp);\n }\n if (ele) {\n var itemEle = closest(ele, '.e-ribbon-item');\n itemEle.classList.toggle(constants.DISABLED_CSS, itemProp.item.disabled);\n var moduleName = this.getItemModuleName(itemProp.item);\n if (moduleName !== 'template') {\n if (moduleName === 'group-btn' && this.activeLayout === 'Simplified') {\n updateControlDisabled(ele, 'dropdown-btn', isDisabled);\n for (var i = 0; i < itemProp.item.groupButtonSettings.items.length; i++) {\n var btnEle = document.querySelector('#' + itemId + constants.RIBBON_GROUP_BUTTON_ID + i);\n updateControlDisabled(btnEle, 'btn', isDisabled);\n }\n }\n else if (moduleName === 'group-btn' && this.activeLayout === 'Classic') {\n for (var i = 0; i < itemProp.item.groupButtonSettings.items.length; i++) {\n var btnEle = ele.querySelector('#' + itemId + constants.RIBBON_GROUP_BUTTON_ID + i);\n updateControlDisabled(btnEle, 'btn', isDisabled);\n }\n }\n else {\n updateControlDisabled(ele, moduleName, isDisabled);\n }\n }\n else {\n ele.classList.toggle(constants.DISABLED_CSS, isDisabled);\n ele.toggleAttribute('disabled', isDisabled);\n }\n }\n };\n Ribbon.prototype.unwireEvents = function () {\n EventHandler.remove(window, 'resize', this.resizeHandler);\n };\n Ribbon.prototype.destroy = function () {\n this.keyboardModuleRibbon.destroy();\n this.keyboardModuleRibbon = null;\n destroyTooltip(this.element);\n this.destroyTabItems(this.tabs);\n if (!this.hideLayoutSwitcher) {\n this.removeExpandCollapse();\n }\n this.collapseButton = undefined;\n if (this.scrollModule) {\n this.scrollModule.destroy();\n }\n if (this.ribbonTempEle) {\n remove(this.ribbonTempEle);\n this.ribbonTempEle = null;\n }\n _super.prototype.destroy.call(this);\n this.tabObj.destroy();\n this.tabObj = undefined;\n remove(this.element.querySelector('#' + this.element.id + constants.TAB_ID));\n this.element.style.removeProperty(constants.RIBBON_FILE_MENU_WIDTH);\n this.element.style.removeProperty(constants.RIBBON_HELP_PANE_TEMPLATE_WIDTH);\n this.element.style.removeProperty('width');\n if (this.cssClass) {\n removeClass([this.element], this.cssClass.split(constants.SPACE));\n }\n this.element.classList.remove(constants.RTL_CSS, constants.RIBBON_SIMPLIFIED_MODE, constants.RIBBON_OVERFLOW, constants.RIBBON_COLLAPSIBLE, constants.RIBBON_MINIMIZE, 'e-rbn');\n this.unwireEvents();\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {RibbonModel} newProp - Specifies new properties\n * @param {RibbonModel} oldProp - Specifies old properties\n * @returns {void}\n * @private\n */\n Ribbon.prototype.onPropertyChanged = function (newProp, oldProp) {\n var _a, _b;\n for (var _i = 0, _c = Object.keys(newProp); _i < _c.length; _i++) {\n var prop = _c[_i];\n switch (prop) {\n case 'activeLayout':\n this.switchLayout();\n break;\n case 'cssClass':\n if (oldProp.cssClass) {\n (_a = this.element.classList).remove.apply(_a, oldProp.cssClass.split(constants.SPACE));\n }\n if (newProp.cssClass) {\n (_b = this.element.classList).add.apply(_b, newProp.cssClass.split(constants.SPACE));\n }\n break;\n case 'isMinimized':\n this.element.classList.toggle(constants.RIBBON_MINIMIZE, this.isMinimized);\n this.tabObj.element.querySelector('.e-content').style.display = this.isMinimized ? 'none' : 'block';\n if (!this.isMinimized) {\n this.refreshLayout();\n }\n break;\n case 'locale':\n this.updateCommonProperty({ locale: this.locale });\n break;\n case 'enablePersistence':\n this.updateCommonProperty({ enablePersistence: this.enablePersistence });\n break;\n case 'enableRtl':\n this.element.classList.toggle(constants.RTL_CSS, this.enableRtl);\n this.updateCommonProperty({ enableRtl: newProp.enableRtl });\n if (this.scrollModule) {\n this.scrollModule.setProperties({ enableRtl: newProp.enableRtl });\n }\n break;\n case 'launcherIconCss':\n for (var i = 0; i < this.tabs.length; i++) {\n var tabContent = this.tabObj.items[parseInt(i.toString(), 10)].content;\n var tab = this.tabs[parseInt(i.toString(), 10)];\n if (tabContent.querySelector('.' + constants.RIBBON_GROUP)) {\n for (var _d = 0, _e = tab.groups; _d < _e.length; _d++) {\n var group = _e[_d];\n if (group.showLauncherIcon) {\n var className = constants.RIBBON_LAUNCHER_ICON_ELE + ' ' + (this.launcherIconCss || constants.RIBBON_LAUNCHER_ICON);\n if (group.isCollapsed) {\n var element = tabContent.querySelector('#' + group.id + constants.OVERFLOW_ID + constants.DROPDOWN_ID);\n var dropdown = getComponent(element, DropDownButton);\n var launcherIconEle = dropdown.target.querySelector('#' + group.id + constants.LAUNCHER_ID);\n launcherIconEle.className = className;\n }\n else {\n var element = tabContent.querySelector('#' + group.id + constants.LAUNCHER_ID);\n element.className = className;\n }\n }\n }\n }\n }\n break;\n case 'selectedTab':\n this.tabObj.setProperties({ selectedItem: newProp.selectedTab });\n break;\n case 'tabAnimation':\n this.tabObj.setProperties({ animation: newProp.tabAnimation });\n break;\n case 'tabs':\n this.reRenderTabs(newProp.tabs);\n break;\n case 'width':\n this.element.style.width = formatUnit(newProp.width);\n this.refreshLayout();\n break;\n case 'fileMenu':\n if (this.ribbonFileMenuModule) {\n this.ribbonFileMenuModule.updateFileMenu(this.fileMenu);\n }\n var toolbarEle = this.tabObj['tbObj'];\n toolbarEle.refreshOverflow();\n break;\n case 'backStageMenu':\n if (this.ribbonBackstageModule) {\n this.ribbonBackstageModule.updateBackStageMenu(this.backStageMenu);\n }\n var toolbarElement = this.tabObj['tbObj'];\n toolbarElement.refreshOverflow();\n break;\n case 'helpPaneTemplate':\n if (this.ribbonTempEle) {\n remove(this.ribbonTempEle);\n this.ribbonTempEle = null;\n this.tabObj.element.style.setProperty(constants.RIBBON_HELP_PANE_TEMPLATE_WIDTH, '0px');\n }\n if (this.helpPaneTemplate) {\n this.createHelpPaneTemplate();\n }\n var toolbar_1 = this.tabObj['tbObj'];\n toolbar_1.refreshOverflow();\n break;\n case 'hideLayoutSwitcher':\n this.hideLayoutSwitcher ? this.removeExpandCollapse() : this.addExpandCollapse();\n break;\n }\n }\n };\n var Ribbon_1;\n __decorate([\n Property('Classic')\n ], Ribbon.prototype, \"activeLayout\", void 0);\n __decorate([\n Property('')\n ], Ribbon.prototype, \"cssClass\", void 0);\n __decorate([\n Complex({}, FileMenuSettings)\n ], Ribbon.prototype, \"fileMenu\", void 0);\n __decorate([\n Complex({}, BackStageMenu)\n ], Ribbon.prototype, \"backStageMenu\", void 0);\n __decorate([\n Property('')\n ], Ribbon.prototype, \"launcherIconCss\", void 0);\n __decorate([\n Property(false)\n ], Ribbon.prototype, \"isMinimized\", void 0);\n __decorate([\n Property('en-us')\n ], Ribbon.prototype, \"locale\", void 0);\n __decorate([\n Property(0)\n ], Ribbon.prototype, \"selectedTab\", void 0);\n __decorate([\n Complex({}, TabAnimationSettings)\n ], Ribbon.prototype, \"tabAnimation\", void 0);\n __decorate([\n Collection([], RibbonTab)\n ], Ribbon.prototype, \"tabs\", void 0);\n __decorate([\n Property('100%')\n ], Ribbon.prototype, \"width\", void 0);\n __decorate([\n Property('')\n ], Ribbon.prototype, \"helpPaneTemplate\", void 0);\n __decorate([\n Property(false)\n ], Ribbon.prototype, \"hideLayoutSwitcher\", void 0);\n __decorate([\n Event()\n ], Ribbon.prototype, \"tabSelecting\", void 0);\n __decorate([\n Event()\n ], Ribbon.prototype, \"tabSelected\", void 0);\n __decorate([\n Event()\n ], Ribbon.prototype, \"ribbonExpanding\", void 0);\n __decorate([\n Event()\n ], Ribbon.prototype, \"ribbonCollapsing\", void 0);\n __decorate([\n Event()\n ], Ribbon.prototype, \"launcherIconClick\", void 0);\n __decorate([\n Event()\n ], Ribbon.prototype, \"created\", void 0);\n Ribbon = Ribbon_1 = __decorate([\n NotifyPropertyChanges\n ], Ribbon);\n return Ribbon;\n}(Component));\nexport { Ribbon };\n","/**\n * Ribbon modules\n */\nexport * from './ribbon';\nexport * from './interface';\nexport * from './constant';\nexport * from './utils';\n","import { EventHandler, remove } from '@syncfusion/ej2-base';\nimport { DropDownButton } from '@syncfusion/ej2-splitbuttons';\nimport { Menu } from '@syncfusion/ej2-navigations';\nimport { getIndex, isTooltipPresent } from '../base/index';\nimport * as constants from '../base/constant';\n/**\n * Defines the items of Ribbon.\n */\nvar RibbonFileMenu = /** @class */ (function () {\n function RibbonFileMenu(parent) {\n this.parent = parent;\n }\n RibbonFileMenu.prototype.getModuleName = function () {\n return 'ribbonFileMenu';\n };\n RibbonFileMenu.prototype.destroy = function () {\n if (this.fileMenuDDB) {\n this.destroyDDB();\n }\n this.parent = null;\n };\n /**\n * Creates File Menu\n *\n * @param {FileMenuSettingsModel} fileMenuOptions - Gets the property of filemenu.\n * @returns {void}\n * @hidden\n */\n RibbonFileMenu.prototype.createFileMenu = function (fileMenuOptions) {\n var _this = this;\n if (!fileMenuOptions.visible) {\n return;\n }\n this.ddbElement = this.parent.createElement('button', {\n id: this.parent.element.id + constants.RIBBON_FILE_MENU_ID\n });\n var tabEle = this.parent.tabObj.element;\n var toolbarEle = tabEle.querySelector('.e-toolbar');\n tabEle.insertBefore(this.ddbElement, toolbarEle);\n this.fileMenuDDB = new DropDownButton({\n content: fileMenuOptions.text,\n enableRtl: this.parent.enableRtl,\n cssClass: 'e-ribbon-file-menu e-caret-hide',\n created: function () {\n tabEle.style.setProperty(constants.RIBBON_FILE_MENU_WIDTH, _this.ddbElement.offsetWidth + 'px');\n },\n beforeClose: this.ddbBeforeEvent.bind(this, false),\n beforeOpen: this.ddbBeforeEvent.bind(this, true),\n close: this.ddbAfterEvent.bind(this, false),\n open: this.ddbAfterEvent.bind(this, true)\n }, this.ddbElement);\n if (this.parent.fileMenu.popupTemplate) {\n this.fileMenuDDB.setProperties({ target: this.parent.fileMenu.popupTemplate });\n }\n else {\n this.createRibbonMenu(fileMenuOptions);\n }\n this.parent.tabObj.refreshActiveTabBorder();\n this.addFileMenuTooltip(fileMenuOptions);\n };\n RibbonFileMenu.prototype.addFileMenuTooltip = function (fileMenuOptions) {\n if (isTooltipPresent(fileMenuOptions.ribbonTooltipSettings)) {\n this.ddbElement.classList.add(constants.RIBBON_TOOLTIP_TARGET);\n this.parent.tooltipData.push({ id: this.ddbElement.id, data: fileMenuOptions.ribbonTooltipSettings });\n }\n };\n RibbonFileMenu.prototype.ddbBeforeEvent = function (isOpen, args) {\n //args.event is null when dropdown button is closed using a method call\n if (!isOpen && args.event && args.event.target.closest('.e-ribbon-menu')) {\n args.cancel = true;\n }\n var event = isOpen ? this.parent.fileMenu.beforeOpen :\n this.parent.fileMenu.beforeClose;\n if (event) {\n var eventArgs = { cancel: args.cancel, element: args.element, event: args.event };\n event.call(this, eventArgs);\n args.cancel = eventArgs.cancel;\n }\n };\n RibbonFileMenu.prototype.ddbAfterEvent = function (isOpen, args) {\n var element = isOpen ? this.fileMenuDDB.target : this.fileMenuDDB.element;\n element.focus();\n var event = isOpen ? this.parent.fileMenu.open : this.parent.fileMenu.close;\n if (event) {\n var eventArgs = { element: args.element };\n event.call(this, eventArgs);\n }\n };\n //Clone RibbonMenuItems before assigning to avoid reference issues.\n RibbonFileMenu.prototype.cloneMenuItem = function (items) {\n var itemsList = [];\n for (var i = 0; i < items.length; i++) {\n var item = items[parseInt(i.toString(), 10)];\n itemsList.push({\n iconCss: item.iconCss,\n id: item.id,\n separator: item.separator,\n text: item.text,\n url: item.url,\n items: this.cloneMenuItem(item.items)\n });\n }\n return itemsList;\n };\n RibbonFileMenu.prototype.createRibbonMenu = function (menuOptions) {\n var _this = this;\n var ulElem = this.parent.createElement('ul', {\n id: this.parent.element.id + constants.RIBBON_FILE_MENU_LIST\n });\n this.fileMenuDDB.setProperties({ target: ulElem });\n this.menuctrl = new Menu({\n orientation: 'Vertical',\n enableRtl: this.parent.enableRtl,\n cssClass: 'e-ribbon-menu',\n animationSettings: menuOptions.animationSettings,\n items: this.cloneMenuItem(menuOptions.menuItems),\n showItemOnClick: menuOptions.showItemOnClick,\n template: menuOptions.itemTemplate,\n beforeClose: this.menuBeforeEvent.bind(this, false),\n beforeOpen: this.menuBeforeEvent.bind(this, true),\n beforeItemRender: this.beforeItemRender.bind(this),\n onClose: this.menuAfterEvent.bind(this, false),\n onOpen: this.menuAfterEvent.bind(this, true),\n select: this.menuSelect.bind(this)\n }, ulElem);\n EventHandler.add(ulElem, 'keydown', function (e) {\n if (e.key === 'Tab') {\n _this.fileMenuDDB.toggle();\n }\n }, this);\n };\n RibbonFileMenu.prototype.menuBeforeEvent = function (isOpen, args) {\n var event = isOpen ? this.parent.fileMenu.beforeOpen :\n this.parent.fileMenu.beforeClose;\n if (event) {\n var eventArgs = {\n cancel: args.cancel, element: args.element, event: args.event,\n items: args.items, parentItem: args.parentItem\n };\n event.call(this, eventArgs);\n args.cancel = eventArgs.cancel;\n }\n };\n RibbonFileMenu.prototype.menuAfterEvent = function (isOpen, args) {\n var event = isOpen ? this.parent.fileMenu.open : this.parent.fileMenu.close;\n if (event) {\n var eventArgs = { element: args.element, items: args.items, parentItem: args.parentItem };\n event.call(this, eventArgs);\n }\n };\n RibbonFileMenu.prototype.beforeItemRender = function (args) {\n var event = this.parent.fileMenu.beforeItemRender;\n if (event) {\n var eventArgs = { element: args.element, item: args.item };\n event.call(this, eventArgs);\n }\n };\n RibbonFileMenu.prototype.menuSelect = function (args) {\n var event = this.parent.fileMenu.select;\n if (event) {\n var eventArgs = { element: args.element, item: args.item, event: args.event };\n event.call(this, eventArgs);\n if (!args.element.classList.contains('e-menu-caret-icon')) {\n this.fileMenuDDB.toggle();\n }\n }\n };\n /**\n * setRtl\n *\n * @param {commonProperties} commonProp - Get the common property of ribbon.\n * @returns {void}\n * @hidden\n */\n RibbonFileMenu.prototype.setCommonProperties = function (commonProp) {\n if (this.fileMenuDDB) {\n this.fileMenuDDB.setProperties(commonProp);\n if (this.menuctrl) {\n this.menuctrl.setProperties(commonProp);\n }\n }\n };\n /**\n * Update FileMenu\n *\n * @param {FileMenuSettingsModel} fileMenuOptions - Gets the property of filemenu.\n * @returns {void}\n * @hidden\n */\n RibbonFileMenu.prototype.updateFileMenu = function (fileMenuOptions) {\n if (fileMenuOptions.visible) {\n if (this.fileMenuDDB) {\n if (fileMenuOptions.text) {\n this.fileMenuDDB.setProperties({\n content: fileMenuOptions.text\n });\n this.parent.tabObj.element.style.setProperty(constants.RIBBON_FILE_MENU_WIDTH, this.ddbElement.offsetWidth + 'px');\n }\n if (fileMenuOptions.popupTemplate) {\n if (this.menuctrl) {\n this.destroyMenu();\n }\n this.fileMenuDDB.setProperties({ target: fileMenuOptions.popupTemplate });\n }\n else {\n if (this.menuctrl) {\n this.menuctrl.setProperties({\n animationSettings: fileMenuOptions.animationSettings,\n items: this.cloneMenuItem(fileMenuOptions.menuItems),\n showItemOnClick: fileMenuOptions.showItemOnClick,\n template: fileMenuOptions.itemTemplate\n });\n }\n else {\n this.createRibbonMenu(fileMenuOptions);\n }\n }\n this.removeFileMenuTooltip();\n this.addFileMenuTooltip(fileMenuOptions);\n }\n else {\n this.createFileMenu(fileMenuOptions);\n }\n }\n else if (this.fileMenuDDB) {\n this.destroyDDB();\n }\n this.parent.tabObj.refreshActiveTabBorder();\n };\n RibbonFileMenu.prototype.destroyMenu = function () {\n if (this.menuctrl) {\n this.menuctrl.destroy();\n this.menuctrl = null;\n }\n };\n RibbonFileMenu.prototype.destroyDDB = function () {\n this.removeFileMenuTooltip();\n var tabEle = this.parent.tabObj.element;\n tabEle.style.removeProperty(constants.RIBBON_FILE_MENU_WIDTH);\n this.destroyMenu();\n this.fileMenuDDB.destroy();\n this.fileMenuDDB = null;\n remove(this.ddbElement);\n this.ddbElement = null;\n };\n RibbonFileMenu.prototype.removeFileMenuTooltip = function () {\n var _this = this;\n var index = getIndex(this.parent.tooltipData, function (e) { return e.id === _this.ddbElement.id; });\n if (index !== -1) {\n this.ddbElement.classList.remove(constants.RIBBON_TOOLTIP_TARGET);\n this.parent.tooltipData.splice(index, 1);\n }\n };\n /**\n * Add items to FileMenu.\n *\n * @param {MenuItemModel[]} items - Gets the items to be added.\n * @param {string} target - Gets the target item to add the items.\n * @param {boolean} isAfter - Gets the boolean value to add the items after or before the target item.\n * @param {boolean} isUniqueId - Gets whether the target provided is uniqueId or not.\n * @returns {void}\n */\n RibbonFileMenu.prototype.addItems = function (items, target, isAfter, isUniqueId) {\n if (isAfter) {\n this.menuctrl.insertAfter(items, target, isUniqueId);\n }\n else {\n this.menuctrl.insertBefore(items, target, isUniqueId);\n }\n this.parent.fileMenu.setProperties({ menuItems: this.menuctrl.items }, true);\n };\n /**\n * Remove items from FileMenu.\n *\n * @param {string[]} items - Gets the items to be removed.\n * @param {boolean} isUniqueId - Gets whether the target provided is uniqueId or not.\n * @returns {void}\n */\n RibbonFileMenu.prototype.removeItems = function (items, isUniqueId) {\n this.menuctrl.removeItems(items, isUniqueId);\n this.parent.fileMenu.setProperties({ menuItems: this.menuctrl.items }, true);\n };\n /**\n * Enable items in FileMenu.\n *\n * @param {string[]} items - Gets the items to be enabled.\n * @param {boolean} isUniqueId - Gets whether the target provided is uniqueId or not.\n * @returns {void}\n */\n RibbonFileMenu.prototype.enableItems = function (items, isUniqueId) {\n this.menuctrl.enableItems(items, true, isUniqueId);\n this.parent.fileMenu.setProperties({ menuItems: this.menuctrl.items }, true);\n };\n /**\n * Disable items in FileMenu.\n *\n * @param {string[]} items - Gets the items to be disabled.\n * @param {boolean} isUniqueId - Gets whether the target provided is uniqueId or not.\n * @returns {void}\n */\n RibbonFileMenu.prototype.disableItems = function (items, isUniqueId) {\n this.menuctrl.enableItems(items, false, isUniqueId);\n this.parent.fileMenu.setProperties({ menuItems: this.menuctrl.items }, true);\n };\n /**\n * Update items in FileMenu.\n *\n * @param {MenuItem} item - Gets the item to be updated.\n * @param {boolean} id - Gets the id of the item to be updated.\n * @param {boolean} isUniqueId - Gets whether the id provided is uniqueId or not.\n * @returns {void}\n */\n RibbonFileMenu.prototype.setItem = function (item, id, isUniqueId) {\n this.menuctrl.setItem(item, id, isUniqueId);\n this.menuctrl.refresh();\n this.parent.fileMenu.setProperties({ menuItems: this.menuctrl.items }, true);\n };\n return RibbonFileMenu;\n}());\nexport { RibbonFileMenu };\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})();\nimport { remove, append, Component, EventHandler } from '@syncfusion/ej2-base';\nimport { Menu } from '@syncfusion/ej2-navigations';\nimport { getIndex } from '../base/index';\nimport { getTemplateFunction, isTooltipPresent } from '../base/utils';\nimport * as constants from '../base/constant';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { Popup } from '@syncfusion/ej2-popups';\n/**\n * Defines the items of Ribbon.\n */\nvar RibbonBackstage = /** @class */ (function (_super) {\n __extends(RibbonBackstage, _super);\n function RibbonBackstage(parent) {\n var _this = _super.call(this) || this;\n _this.parent = parent;\n return _this;\n }\n /**\n * @private\n * @returns {void}\n */\n RibbonBackstage.prototype.render = function () {\n // render code\n };\n /**\n * @private\n * @returns {void}\n */\n RibbonBackstage.prototype.preRender = function () {\n // pre render code\n };\n RibbonBackstage.prototype.getPersistData = function () {\n return '';\n };\n /**\n * This method is abstract member of the Component<HTMLElement>.\n *\n * @private\n * @returns {void}\n */\n RibbonBackstage.prototype.onPropertyChanged = function () {\n // onProperty changes code\n };\n RibbonBackstage.prototype.getModuleName = function () {\n return 'ribbonBackstage';\n };\n RibbonBackstage.prototype.destroy = function () {\n if (this.backstageButton) {\n this.destroyDDB();\n }\n this.parent = null;\n };\n /**\n * Creates Backstage Menu\n *\n * @param {BackStageMenuModel} backStageOptions - Gets the property of backstage.\n * @returns {void}\n * @hidden\n */\n RibbonBackstage.prototype.createBackStage = function (backStageOptions) {\n var _this = this;\n if (!backStageOptions.visible) {\n return;\n }\n this.backstageButtonEle = this.parent.createElement('button', {\n id: this.parent.element.id + constants.RIBBON_BACKSTAGE_MENU_ID\n });\n var tabEle = this.parent.tabObj.element;\n var toolbarEle = tabEle.querySelector('.e-toolbar');\n tabEle.insertBefore(this.backstageButtonEle, toolbarEle);\n this.backstageButton = new Button({\n content: backStageOptions.text,\n enableRtl: this.parent.enableRtl,\n cssClass: constants.RIBBON_BACKSTAGE,\n created: function () {\n tabEle.style.setProperty(constants.RIBBON_FILE_MENU_WIDTH, _this.backstageButtonEle.offsetWidth + 'px');\n }\n }, this.backstageButtonEle);\n this.createBackStagePopup(backStageOptions);\n if (this.parent.backStageMenu.template) {\n this.createBackStageTemplate(this.parent.backStageMenu.template);\n }\n else {\n var footerItemCount = 0;\n var itemCount = 0;\n for (var i = 0; i < backStageOptions.items.length; i++) {\n var item = backStageOptions.items[parseInt(i.toString(), 10)];\n if (item.isFooter) {\n footerItemCount++;\n }\n else {\n itemCount++;\n }\n }\n if (itemCount > 0) {\n this.createBackstageMenu(backStageOptions, false);\n }\n if (footerItemCount > 0) {\n this.createBackstageMenu(backStageOptions, true);\n }\n if (this.menuCtrl) {\n this.checkMenuItems(this.menuCtrl.items);\n }\n if (this.footerMenuCtrl) {\n this.checkMenuItems(this.footerMenuCtrl.items);\n }\n }\n this.backstageButtonEle.onclick = function (e) {\n e.stopPropagation();\n _this.showBackstage();\n _this.popupHTMLElement.classList.add(constants.RIBBON_BACKSTAGE_OPEN);\n var menuItem = _this.menuWrapper.querySelector('.e-menu-item.e-selected');\n if (menuItem) {\n menuItem.classList.remove('e-selected');\n }\n for (var i = 0; i < backStageOptions.items.length; i++) {\n var item = backStageOptions.items[parseInt(i.toString(), 10)];\n if (!item.isFooter && _this.menuCtrl.items[0].text === item.text) {\n var firstMenuEle = _this.popupHTMLElement.querySelector('#' + _this.menuCtrl.items[0].id);\n if (firstMenuEle) {\n firstMenuEle.classList.add('e-selected');\n firstMenuEle.focus();\n }\n _this.createBackStageContent(_this.menuCtrl.items[0].id, item.content);\n break;\n }\n else {\n continue;\n }\n }\n };\n this.parent.tabObj.refreshActiveTabBorder();\n this.addBackStageMenuTooltip(backStageOptions);\n EventHandler.add(document, 'click', this.onClickEvent, this);\n };\n RibbonBackstage.prototype.onClickEvent = function (e) {\n var targetEle = e.target;\n if (this.popupHTMLElement.contains(targetEle)) {\n return;\n }\n else {\n this.hideBackstage();\n }\n };\n RibbonBackstage.prototype.addBackStageMenuTooltip = function (backStageOptions) {\n if (isTooltipPresent(backStageOptions.ribbonTooltipSettings)) {\n this.backstageButtonEle.classList.add(constants.RIBBON_TOOLTIP_TARGET);\n this.parent.tooltipData.push({ id: this.backstageButtonEle.id, data: backStageOptions.ribbonTooltipSettings });\n }\n };\n RibbonBackstage.prototype.checkMenuItems = function (backStageItems) {\n for (var i = 0; i < backStageItems.length; i++) {\n var item = backStageItems[parseInt(i.toString(), 10)];\n if (!item.iconCss) {\n var menuItemEle = this.popupHTMLElement.querySelector('#' + item.id);\n menuItemEle.classList.add(constants.RIBBON_BACKSTAGE_TEXT_MENU);\n }\n }\n };\n RibbonBackstage.prototype.createBackStagePopup = function (backStageOptions) {\n var _this = this;\n this.popupHTMLElement = this.parent.createElement('div', {\n id: this.parent.element.id + constants.RIBBON_BACKSTAGE_POPUP_ID,\n className: constants.RIBBON_BACKSTAGE_POPUP\n });\n var targetEle;\n if (backStageOptions.target) {\n targetEle = backStageOptions.target instanceof HTMLElement ? backStageOptions.target : document.querySelector(backStageOptions.target);\n targetEle.appendChild(this.popupHTMLElement);\n }\n else {\n this.parent.element.appendChild(this.popupHTMLElement);\n }\n this.popupEle = new Popup(this.popupHTMLElement, {\n height: backStageOptions.height,\n width: backStageOptions.width,\n relateTo: backStageOptions.target || this.parent.element,\n enableRtl: this.parent.enableRtl\n });\n if (this.parent.enableRtl) {\n this.updatePopupPositionOnRtl(this.parent.enableRtl);\n }\n this.popupHTMLElement.onkeydown = function (e) { if (e.code === 'Escape') {\n _this.hideBackstage();\n } };\n this.hideBackstage();\n };\n RibbonBackstage.prototype.updatePopupPositionOnRtl = function (enableRtl) {\n var popupStyle = this.popupHTMLElement.style;\n if (enableRtl) {\n popupStyle.right = popupStyle.left;\n popupStyle.left = 'unset';\n }\n else {\n popupStyle.left = popupStyle.right;\n popupStyle.right = 'unset';\n }\n };\n RibbonBackstage.prototype.createBackstageMenu = function (menuOptions, isFooter) {\n var _this = this;\n var wrapperEle = this.popupHTMLElement.querySelector('#' + this.parent.element.id + '_wrapper');\n if (!wrapperEle) {\n this.menuWrapper = this.parent.createElement('div', {\n id: this.parent.element.id + '_wrapper',\n className: constants.RIBBON_BACKSTAGE_MENU_WRAPPER\n });\n this.popupHTMLElement.appendChild(this.menuWrapper);\n }\n if (menuOptions.backButton.visible && !isFooter) {\n var closeBtnEle = this.parent.createElement('button', {\n id: this.parent.element.id + '_close',\n className: 'e-ribbon-close-btn'\n });\n this.closeBtn = new Button({\n content: menuOptions.backButton.text,\n iconCss: menuOptions.backButton.iconCss ? menuOptions.backButton.iconCss : constants.BACKSTAGE_CLOSE_ICON,\n enableRtl: this.parent.enableRtl\n }, closeBtnEle);\n this.menuWrapper.append(closeBtnEle);\n closeBtnEle.onclick = function () {\n _this.popupHTMLElement.classList.remove(constants.RIBBON_BACKSTAGE_OPEN);\n _this.hideBackstage();\n _this.isBackButtonClicked = true;\n };\n }\n var itemsWrapperEle = this.popupHTMLElement.querySelector('#' + this.parent.element.id + '_itemswrapper');\n if (!itemsWrapperEle) {\n this.itemsWrapperEle = this.parent.createElement('div', {\n id: this.parent.element.id + '_itemswrapper',\n className: constants.RIBBON_BACKSTAGE_ITEMS_WRAPPER\n });\n this.menuWrapper.append(this.itemsWrapperEle);\n }\n var ulFooterElem;\n if (isFooter) {\n ulFooterElem = this.parent.createElement('ul', {\n id: this.parent.element.id + constants.RIBBON_FOOTER_MENU_LIST\n });\n this.itemsWrapperEle.appendChild(ulFooterElem);\n }\n else {\n this.ulMenuElem = this.parent.createElement('ul', {\n id: this.parent.element.id + constants.RIBBON_MENU_LIST\n });\n this.itemsWrapperEle.appendChild(this.ulMenuElem);\n }\n if (!isFooter) {\n this.menuCtrl = new Menu({\n orientation: 'Vertical',\n enableRtl: this.parent.enableRtl,\n cssClass: constants.RIBBON_BACKSTAGE_MENU,\n items: this.cloneMenuItem(menuOptions.items),\n select: this.menuSelect.bind(this, menuOptions)\n }, this.ulMenuElem);\n }\n else {\n this.footerMenuCtrl = new Menu({\n orientation: 'Vertical',\n enableRtl: this.parent.enableRtl,\n cssClass: constants.RIBBON_BACKSTAGE_MENU,\n items: this.cloneFooterMenuItem(menuOptions.items),\n select: this.menuSelect.bind(this, menuOptions)\n }, ulFooterElem);\n }\n };\n RibbonBackstage.prototype.cloneMenuItem = function (items) {\n var itemsList = [];\n for (var i = 0; i < items.length; i++) {\n var item = items[parseInt(i.toString(), 10)];\n if (item.isFooter) {\n continue;\n }\n else {\n itemsList.push({\n id: item.id,\n iconCss: item.iconCss,\n separator: item.separator,\n text: item.text\n });\n }\n }\n return itemsList;\n };\n RibbonBackstage.prototype.cloneFooterMenuItem = function (items) {\n var itemsList = [];\n for (var i = 0; i < items.length; i++) {\n var item = items[parseInt(i.toString(), 10)];\n if (!item.isFooter) {\n continue;\n }\n else {\n itemsList.push({\n id: item.id,\n iconCss: item.iconCss,\n separator: item.separator,\n text: item.text\n });\n }\n }\n return itemsList;\n };\n RibbonBackstage.prototype.createBackStageContent = function (itemId, content) {\n var templateName = 'backstageContent';\n this.clearTemplate([templateName]);\n if (!this.backstageContentEle) {\n this.backstageContentEle = this.parent.createElement('div', {\n id: itemId + constants.CONTENT_ID,\n className: constants.RIBBON_BACKSTAGE_CONTENT\n });\n }\n else {\n this.backstageContentEle.innerHTML = '';\n this.backstageContentEle.id = itemId + constants.CONTENT_ID;\n }\n var templateFunction = getTemplateFunction(content);\n append(templateFunction({}, this, templateName, 'backstageContent', this.parent.isStringTemplate), this.backstageContentEle);\n if (content) {\n this.popupHTMLElement.append(this.backstageContentEle);\n }\n this.renderReactTemplates();\n return templateFunction;\n };\n RibbonBackstage.prototype.createBackStageTemplate = function (template) {\n var templateName = 'backstageTemplate';\n this.clearTemplate([templateName]);\n this.backstageTempEle = this.parent.createElement('div', {\n id: this.parent.element.id + constants.RIBBON_BACKSTAGE_MENU_ID + '_template',\n className: constants.RIBBON_BACKSTAGE_TEMPLATE\n });\n var templateFunction = getTemplateFunction(template);\n append(templateFunction({}, this, templateName, 'backstageTemplate', this.parent.isStringTemplate), this.backstageTempEle);\n this.popupHTMLElement.append(this.backstageTempEle);\n this.renderReactTemplates();\n return templateFunction;\n };\n RibbonBackstage.prototype.menuSelect = function (menuOptions, args) {\n for (var i = 0; i < menuOptions.items.length; i++) {\n var item = menuOptions.items[parseInt(i.toString(), 10)];\n if (item.text === args.item.text) {\n this.contentItem = item;\n break;\n }\n }\n this.createBackStageContent(args.item.id, this.contentItem.content);\n var eventArgs = { cancel: false, target: args.element, item: this.contentItem, isBackButton: this.isBackButtonClicked };\n if (this.contentItem.backStageItemClick) {\n this.contentItem.backStageItemClick.call(this, eventArgs);\n }\n if (eventArgs.cancel) {\n return;\n }\n };\n /**\n * setRtl\n *\n * @param {commonProperties} commonProp - Get the common property of ribbon.\n * @returns {void}\n * @hidden\n */\n RibbonBackstage.prototype.setCommonProperties = function (commonProp) {\n if (this.backstageButton) {\n this.backstageButton.setProperties(commonProp);\n if (this.popupEle) {\n this.popupEle.setProperties(commonProp);\n if (this.popupHTMLElement)\n this.updatePopupPositionOnRtl(commonProp.enableRtl);\n if (this.menuCtrl) {\n this.menuCtrl.setProperties(commonProp);\n if (this.closeBtn) {\n this.closeBtn.setProperties(commonProp);\n }\n }\n }\n }\n };\n /**\n * Update Backstage menu\n *\n * @param {BackStageMenuModel} backStageOptions - Gets the property of backstage menu.\n * @returns {void}\n * @hidden\n */\n RibbonBackstage.prototype.updateBackStageMenu = function (backStageOptions) {\n if (backStageOptions.visible) {\n if (this.backstageButton) {\n if (backStageOptions.text) {\n this.backstageButton.setProperties({\n content: backStageOptions.text\n });\n this.parent.tabObj.element.style.setProperty(constants.RIBBON_FILE_MENU_WIDTH, this.backstageButtonEle.offsetWidth + 'px');\n }\n if (this.popupEle) {\n this.popupEle.setProperties({\n height: backStageOptions.height,\n width: backStageOptions.width,\n target: backStageOptions.target || this.parent.element,\n });\n }\n if (backStageOptions.template) {\n if (this.backstageTempEle) {\n remove(this.backstageTempEle);\n this.backstageTempEle = null;\n }\n this.createBackStageTemplate(backStageOptions.template);\n }\n else {\n if (this.menuCtrl) {\n this.menuCtrl.setProperties({\n items: this.cloneMenuItem(backStageOptions.items)\n });\n }\n if (this.footerMenuCtrl) {\n this.footerMenuCtrl.setProperties({\n items: this.cloneFooterMenuItem(backStageOptions.items)\n });\n }\n else {\n var footerItemCount = 0;\n var itemCount = 0;\n for (var i = 0; i < backStageOptions.items.length; i++) {\n var item = backStageOptions.items[parseInt(i.toString(), 10)];\n if (item.isFooter) {\n footerItemCount++;\n }\n else {\n itemCount++;\n }\n }\n if (itemCount > 0) {\n this.createBackstageMenu(backStageOptions, false);\n }\n if (footerItemCount > 0) {\n this.createBackstageMenu(backStageOptions, true);\n }\n }\n }\n this.removeBackstageMenuTooltip();\n this.addBackStageMenuTooltip(backStageOptions);\n }\n else {\n this.createBackStage(backStageOptions);\n }\n }\n else if (this.backstageButton) {\n this.destroyDDB();\n }\n this.parent.tabObj.refreshActiveTabBorder();\n };\n RibbonBackstage.prototype.destroyMenu = function () {\n if (this.menuCtrl) {\n this.menuCtrl.destroy();\n this.menuCtrl = null;\n }\n };\n RibbonBackstage.prototype.destroyDDB = function () {\n this.removeBackstageMenuTooltip();\n var tabEle = this.parent.tabObj.element;\n tabEle.style.removeProperty(constants.RIBBON_FILE_MENU_WIDTH);\n this.destroyMenu();\n this.backstageButton.destroy();\n this.backstageButton = null;\n remove(this.backstageButtonEle);\n this.backstageButtonEle = null;\n EventHandler.remove(document, 'click', this.onClickEvent);\n };\n RibbonBackstage.prototype.removeBackstageMenuTooltip = function () {\n var _this = this;\n var index = getIndex(this.parent.tooltipData, function (e) { return e.id === _this.backstageButtonEle.id; });\n if (index !== -1) {\n this.backstageButtonEle.classList.remove(constants.RIBBON_TOOLTIP_TARGET);\n this.parent.tooltipData.splice(index, 1);\n }\n };\n /**\n * Add items to Backstage Menu.\n *\n * @param {BackstageItemModel[]} items - Gets the items to be added.\n * @param {string} target - Gets the target item to add the items.\n * @param {boolean} isAfter - Gets the boolean value to add the items after or before the target item.\n * @param {boolean} isUniqueId - Gets whether the target provided is uniqueId or not.\n * @returns {void}\n */\n RibbonBackstage.prototype.addBackstageItems = function (items, target, isAfter, isUniqueId) {\n for (var i = 0; i < items.length; i++) {\n var item = items[parseInt(i.toString(), 10)];\n if (item.isFooter) {\n isAfter ? this.footerMenuCtrl.insertAfter(items, target, isUniqueId) : this.footerMenuCtrl.insertBefore(items, target, isUniqueId);\n }\n else {\n isAfter ? this.menuCtrl.insertAfter(items, target, isUniqueId) : this.menuCtrl.insertBefore(items, target, isUniqueId);\n }\n }\n var backstageItems = [].concat(this.menuCtrl.items, this.footerMenuCtrl.items);\n var backStageOptions = this.parent.backStageMenu;\n for (var i = 0; i < backStageOptions.items.length; i++) {\n var item = backStageOptions.items[parseInt(i.toString(), 10)];\n for (var i_1 = 0; i_1 < backstageItems.length; i_1++) {\n var item1 = backstageItems[parseInt(i_1.toString(), 10)];\n if (item.text === item1.text) {\n item1.content = item.content;\n break;\n }\n }\n }\n this.parent.backStageMenu.setProperties({ items: backstageItems }, true);\n };\n /**\n * Remove items from Backstage Menu.\n *\n * @param {string[]} items - Gets the items to be removed.\n * @param {boolean} isUniqueId - Gets whether the target provided is uniqueId or not.\n * @returns {void}\n */\n RibbonBackstage.prototype.removeBackstageItems = function (items, isUniqueId) {\n this.menuCtrl.removeItems(items, isUniqueId);\n this.footerMenuCtrl.removeItems(items, isUniqueId);\n var backstageItems = [].concat(this.menuCtrl.items, this.footerMenuCtrl.items);\n this.parent.backStageMenu.setProperties({ items: backstageItems }, true);\n };\n /**\n * Renders the backstage dynamically.\n *\n * @returns {void}\n */\n RibbonBackstage.prototype.showBackstage = function () {\n this.popupEle.show();\n };\n /**\n * Hides the backstage dynamically.\n *\n * @returns {void}\n */\n RibbonBackstage.prototype.hideBackstage = function () {\n if (this.popupEle.element.classList.contains(constants.RIBBON_BACKSTAGE_OPEN)) {\n this.popupEle.element.classList.remove(constants.RIBBON_BACKSTAGE_OPEN);\n }\n this.popupEle.hide();\n };\n return RibbonBackstage;\n}(Component));\nexport { RibbonBackstage };\n","/**\n * Ribbon modules\n */\nexport * from './base/index';\nexport * from './models/index';\nexport * from './items/index';\nexport * from './modules/index';\n","// export all modules from current location\n// example: export * from './module'\nexport * from './ribbon/index';\n"],"names":["__extends","this","__decorate","constants.GROUPOF_BUTTON_ID","constants.RIBBON_TOOLTIP_CONTAINER","constants.RIBBON_TOOLTIP_TITLE","constants.RIBBON_TEXT_CONTAINER","constants.RIBBON_TOOLTIP_ICON","constants.RIBBON_TOOLTIP_CONTENT","constants.RIBBON_TOOLTIP","constants.RIBBON_TOOLTIP_TARGET","constants.RIBBON_GROUP_BUTTON_ID","constants.RIBBON_GROUP_BUTTON","constants.RIBBON_SINGLE_BUTTON_SELECTION","constants.RIBBON_MULTIPLE_BUTTON_SELECTION","constants.RIBBON_GROUP_BUTTON_OVERFLOW_POPUP","constants.SPACE","constants.RTL_CSS","constants.CONTENT_ID","constants.RIBBON_GROUP_CONTAINER","constants.HORIZONTAL_SCROLLBAR","constants.TAB_ID","constants.RIBBON_TAB","constants.RIBBON_FILE_MENU_WIDTH","constants.RIBBON_HELP_PANE_TEMPLATE_WIDTH","constants.RIBBON_MINIMIZE","constants.RIBBON_TAB_ACTIVE","constants.OVERFLOW_ID","constants.HIDE_CSS","constants.TAB_CONTENT","constants.CONTAINER_ID","constants.RIBBON_ITEM","constants.RIBBON_GROUP_OF_BUTTON","constants.OVRLOF_BUTTON_ID","constants.RIBBON_OVERALL_OF_BUTTON","constants.RIBBON_OF_TAB_CONTAINER","constants.RIBBON_ROW","constants.RIBBON_GROUP_CONTENT","constants.RIBBON_CONTENT_HEIGHT","constants.RIBBON_LARGE_ITEM","constants.RIBBON_MEDIUM_ITEM","constants.RIBBON_SMALL_ITEM","constants.RIBBON_GROUP_OVERFLOW","constants.DROPDOWN_ID","constants.RIBBON_GROUP","constants.HEADER_ID","constants.RIBBON_TAB_ITEM","constants.RIBBON_SIMPLIFIED_MODE","constants.RIBBON_OVERFLOW_TARGET","constants.OVERFLOW_ICON","constants.DROPDOWNBUTTON_HIDE","constants.RIBBON_GROUP_OVERFLOW_DDB","constants.RIBBON_POPUP_CONTROL","constants.RIBBON_OVERFLOW","constants.RIBBON_OF_GROUP_CONTAINER","constants.RIBBON_OVERFLOW_HEADER","constants.RIBBON_COLLAPSE_BUTTON","constants.EXPAND_COLLAPSE_ICON","constants.COLLAPSE_BUTTON_ID","constants.RIBBON_COLLAPSIBLE","constants.RIBBON_EXPAND_BUTTON","constants.RIBBON_COLUMN","constants.RIBBON_GROUP_HEADER","constants.RIBBON_LAUNCHER_ICON_ELE","constants.RIBBON_LAUNCHER_ICON","constants.LAUNCHER_ID","constants.RIBBON_LAUNCHER","constants.RIBBON_COLLECTION","constants.DISABLED_CSS","constants.RIBBON_HELP_TEMPLATE","constants.RIBBON_HELP_PANE_TEMPLATE_ID","constants.RIBBON_TEMPLATE","constants.GROUP_ID","constants.COLLECTION_ID","constants.ITEM_ID","constants.RIBBON_FILE_MENU_ID","constants.RIBBON_FILE_MENU_LIST","constants.RIBBON_BACKSTAGE_MENU_ID","constants.RIBBON_BACKSTAGE","constants.RIBBON_BACKSTAGE_OPEN","constants.RIBBON_BACKSTAGE_TEXT_MENU","constants.RIBBON_BACKSTAGE_POPUP_ID","constants.RIBBON_BACKSTAGE_POPUP","constants.RIBBON_BACKSTAGE_MENU_WRAPPER","constants.BACKSTAGE_CLOSE_ICON","constants.RIBBON_BACKSTAGE_ITEMS_WRAPPER","constants.RIBBON_FOOTER_MENU_LIST","constants.RIBBON_MENU_LIST","constants.RIBBON_BACKSTAGE_MENU","constants.RIBBON_BACKSTAGE_CONTENT","constants.RIBBON_BACKSTAGE_TEMPLATE"],"mappings":";;;;;;;;AAAA;;;AAGA,AAAO,IAAI,YAAY,CAAC;AACxB,CAAC,UAAU,YAAY,EAAE;;;;IAIrB,YAAY,CAAC,SAAS,CAAC,GAAG,SAAS,CAAC;;;;IAIpC,YAAY,CAAC,YAAY,CAAC,GAAG,YAAY,CAAC;CAC7C,EAAE,YAAY,KAAK,YAAY,GAAG,EAAE,CAAC,CAAC,CAAC;;;;AAIxC,AAAO,IAAI,eAAe,CAAC;AAC3B,CAAC,UAAU,eAAe,EAAE;;;;IAIxB,eAAe,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC;;;;IAI/B,eAAe,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAAC;CACxC,EAAE,eAAe,KAAK,eAAe,GAAG,EAAE,CAAC,CAAC,CAAC;;;;;;AAM9C,AAAO,IAAI,cAAc,CAAC;AAC1B,CAAC,UAAU,cAAc,EAAE;;;;IAIvB,cAAc,CAAC,cAAc,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC;;;;IAItD,cAAc,CAAC,cAAc,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC;;;;IAIxD,cAAc,CAAC,cAAc,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC;CACzD,EAAE,cAAc,KAAK,cAAc,GAAG,EAAE,CAAC,CAAC,CAAC;;;;;;AAM5C,AAAO,IAAI,WAAW,CAAC;AACvB,CAAC,UAAU,WAAW,EAAE;;;;IAIpB,WAAW,CAAC,WAAW,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC;;;;IAIpD,WAAW,CAAC,WAAW,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,GAAG,YAAY,CAAC;;;;IAI1D,WAAW,CAAC,WAAW,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,GAAG,UAAU,CAAC;;;;IAItD,WAAW,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC;CACjD,EAAE,WAAW,KAAK,WAAW,GAAG,EAAE,CAAC,CAAC,CAAC;;;;AAItC,AAAO,IAAI,cAAc,CAAC;AAC1B,CAAC,UAAU,cAAc,EAAE;;;;IAIvB,cAAc,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAAC;;;;IAIpC,cAAc,CAAC,UAAU,CAAC,GAAG,UAAU,CAAC;;;;IAIxC,cAAc,CAAC,aAAa,CAAC,GAAG,aAAa,CAAC;;;;IAI9C,cAAc,CAAC,UAAU,CAAC,GAAG,UAAU,CAAC;;;;IAIxC,cAAc,CAAC,UAAU,CAAC,GAAG,UAAU,CAAC;;;;IAIxC,cAAc,CAAC,aAAa,CAAC,GAAG,aAAa,CAAC;;;;IAI9C,cAAc,CAAC,aAAa,CAAC,GAAG,aAAa,CAAC;;;;IAI9C,cAAc,CAAC,UAAU,CAAC,GAAG,UAAU,CAAC;CAC3C,EAAE,cAAc,KAAK,cAAc,GAAG,EAAE,CAAC,CAAC,CAAC;;;;AAI5C,AAAO,IAAI,0BAA0B,CAAC;AACtC,CAAC,UAAU,0BAA0B,EAAE;;;;IAInC,0BAA0B,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAAC;;;;IAIhD,0BAA0B,CAAC,UAAU,CAAC,GAAG,UAAU,CAAC;CACvD,EAAE,0BAA0B,KAAK,0BAA0B,GAAG,EAAE,CAAC,CAAC,CAAC;;AC3HpE,IAAIA,WAAS,GAAG,CAACC,SAAI,IAAIA,SAAI,CAAC,SAAS,KAAK,CAAC,YAAY;IACrD,IAAI,aAAa,GAAG,UAAU,CAAC,EAAE,CAAC,EAAE;QAChC,aAAa,GAAG,MAAM,CAAC,cAAc;aAChC,EAAE,SAAS,EAAE,EAAE,EAAE,YAAY,KAAK,IAAI,UAAU,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,EAAE,CAAC;YAC5E,UAAU,CAAC,EAAE,CAAC,EAAE,EAAE,KAAK,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/E,OAAO,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;KAC9B,CAAC;IACF,OAAO,UAAU,CAAC,EAAE,CAAC,EAAE;QACnB,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACpB,SAAS,EAAE,GAAG,EAAE,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,EAAE;QACvC,CAAC,CAAC,SAAS,GAAG,CAAC,KAAK,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;KACxF,CAAC;CACL,GAAG,CAAC;AACL,IAAIC,YAAU,GAAG,CAACD,SAAI,IAAIA,SAAI,CAAC,UAAU,KAAK,UAAU,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE;IACnF,IAAI,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,GAAG,IAAI,KAAK,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC,wBAAwB,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC;IAC7H,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,OAAO,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;SAC1H,KAAK,IAAI,CAAC,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;IAClJ,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;CACjE,CAAC;AACF,AACA;;;AAGA,IAAI,oBAAoB,kBAAkB,UAAU,MAAM,EAAE;IACxDD,WAAS,CAAC,oBAAoB,EAAE,MAAM,CAAC,CAAC;IACxC,SAAS,oBAAoB,GAAG;QAC5B,OAAO,MAAM,KAAK,IAAI,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,IAAI,CAAC;KACnE;;;;;;;IAOD,oBAAoB,CAAC,SAAS,CAAC,aAAa,GAAG,UAAU,IAAI,EAAE,YAAY,EAAE;QACzE,MAAM,CAAC,SAAS,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC;KACjE,CAAC;IACFE,YAAU,CAAC;QACP,QAAQ,CAAC,EAAE,CAAC;KACf,EAAE,oBAAoB,CAAC,SAAS,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC;IACtDA,YAAU,CAAC;QACP,QAAQ,CAAC,EAAE,CAAC;KACf,EAAE,oBAAoB,CAAC,SAAS,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC;IACvDA,YAAU,CAAC;QACP,QAAQ,CAAC,EAAE,CAAC;KACf,EAAE,oBAAoB,CAAC,SAAS,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC;IACtDA,YAAU,CAAC;QACP,QAAQ,CAAC,KAAK,CAAC;KAClB,EAAE,oBAAoB,CAAC,SAAS,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC;IACvDA,YAAU,CAAC;QACP,QAAQ,CAAC,KAAK,CAAC;KAClB,EAAE,oBAAoB,CAAC,SAAS,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC;IACxDA,YAAU,CAAC;QACP,KAAK,EAAE;KACV,EAAE,oBAAoB,CAAC,SAAS,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC;IACtDA,YAAU,CAAC;QACP,KAAK,EAAE;KACV,EAAE,oBAAoB,CAAC,SAAS,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC;IACtD,OAAO,oBAAoB,CAAC;CAC/B,CAAC,aAAa,CAAC,CAAC;;AC3DjB,IAAIF,WAAS,GAAG,CAACC,SAAI,IAAIA,SAAI,CAAC,SAAS,KAAK,CAAC,YAAY;IACrD,IAAI,aAAa,GAAG,UAAU,CAAC,EAAE,CAAC,EAAE;QAChC,aAAa,GAAG,MAAM,CAAC,cAAc;aAChC,EAAE,SAAS,EAAE,EAAE,EAAE,YAAY,KAAK,IAAI,UAAU,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,EAAE,CAAC;YAC5E,UAAU,CAAC,EAAE,CAAC,EAAE,EAAE,KAAK,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/E,OAAO,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;KAC9B,CAAC;IACF,OAAO,UAAU,CAAC,EAAE,CAAC,EAAE;QACnB,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACpB,SAAS,EAAE,GAAG,EAAE,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,EAAE;QACvC,CAAC,CAAC,SAAS,GAAG,CAAC,KAAK,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;KACxF,CAAC;CACL,GAAG,CAAC;AACL,IAAIC,YAAU,GAAG,CAACD,SAAI,IAAIA,SAAI,CAAC,UAAU,KAAK,UAAU,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE;IACnF,IAAI,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,GAAG,IAAI,KAAK,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC,wBAAwB,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC;IAC7H,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,OAAO,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;SAC1H,KAAK,IAAI,CAAC,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;IAClJ,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;CACjE,CAAC;AACF,AACA;;;AAGA,IAAI,sBAAsB,kBAAkB,UAAU,MAAM,EAAE;IAC1DD,WAAS,CAAC,sBAAsB,EAAE,MAAM,CAAC,CAAC;IAC1C,SAAS,sBAAsB,GAAG;QAC9B,OAAO,MAAM,KAAK,IAAI,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,IAAI,CAAC;KACnE;;;;;;;IAOD,sBAAsB,CAAC,SAAS,CAAC,aAAa,GAAG,UAAU,IAAI,EAAE,YAAY,EAAE;QAC3E,MAAM,CAAC,SAAS,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC;KACjE,CAAC;IACFE,YAAU,CAAC;QACP,QAAQ,CAAC,KAAK,CAAC;KAClB,EAAE,sBAAsB,CAAC,SAAS,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC;IACxDA,YAAU,CAAC;QACP,QAAQ,CAAC,EAAE,CAAC;KACf,EAAE,sBAAsB,CAAC,SAAS,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC;IACzDA,YAAU,CAAC;QACP,QAAQ,CAAC,EAAE,CAAC;KACf,EAAE,sBAAsB,CAAC,SAAS,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;IACtDA,YAAU,CAAC;QACP,QAAQ,CAAC,OAAO,CAAC;KACpB,EAAE,sBAAsB,CAAC,SAAS,EAAE,eAAe,EAAE,KAAK,CAAC,CAAC,CAAC;IAC9DA,YAAU,CAAC;QACP,KAAK,EAAE;KACV,EAAE,sBAAsB,CAAC,SAAS,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC;IACxDA,YAAU,CAAC;QACP,KAAK,EAAE;KACV,EAAE,sBAAsB,CAAC,SAAS,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC;IACvD,OAAO,sBAAsB,CAAC;CACjC,CAAC,aAAa,CAAC,CAAC;;ACxDjB,IAAIF,WAAS,GAAG,CAACC,SAAI,IAAIA,SAAI,CAAC,SAAS,KAAK,CAAC,YAAY;IACrD,IAAI,aAAa,GAAG,UAAU,CAAC,EAAE,CAAC,EAAE;QAChC,aAAa,GAAG,MAAM,CAAC,cAAc;aAChC,EAAE,SAAS,EAAE,EAAE,EAAE,YAAY,KAAK,IAAI,UAAU,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,EAAE,CAAC;YAC5E,UAAU,CAAC,EAAE,CAAC,EAAE,EAAE,KAAK,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/E,OAAO,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;KAC9B,CAAC;IACF,OAAO,UAAU,CAAC,EAAE,CAAC,EAAE;QACnB,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACpB,SAAS,EAAE,GAAG,EAAE,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,EAAE;QACvC,CAAC,CAAC,SAAS,GAAG,CAAC,KAAK,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;KACxF,CAAC;CACL,GAAG,CAAC;AACL,IAAIC,YAAU,GAAG,CAACD,SAAI,IAAIA,SAAI,CAAC,UAAU,KAAK,UAAU,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE;IACnF,IAAI,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,GAAG,IAAI,KAAK,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC,wBAAwB,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC;IAC7H,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,OAAO,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;SAC1H,KAAK,IAAI,CAAC,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;IAClJ,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;CACjE,CAAC;AACF,AACA;;;AAGA,IAAI,yBAAyB,kBAAkB,UAAU,MAAM,EAAE;IAC7DD,WAAS,CAAC,yBAAyB,EAAE,MAAM,CAAC,CAAC;IAC7C,SAAS,yBAAyB,GAAG;QACjC,OAAO,MAAM,KAAK,IAAI,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,IAAI,CAAC;KACnE;;;;;;;IAOD,yBAAyB,CAAC,SAAS,CAAC,aAAa,GAAG,UAAU,IAAI,EAAE,YAAY,EAAE;QAC9E,MAAM,CAAC,SAAS,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC;KACjE,CAAC;IACFE,YAAU,CAAC;QACP,QAAQ,CAAC,EAAE,CAAC;KACf,EAAE,yBAAyB,CAAC,SAAS,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC;IAC3DA,YAAU,CAAC;QACP,QAAQ,CAAC,EAAE,CAAC;KACf,EAAE,yBAAyB,CAAC,SAAS,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC;IAC5DA,YAAU,CAAC;QACP,QAAQ,CAAC,IAAI,CAAC;KACjB,EAAE,yBAAyB,CAAC,SAAS,EAAE,eAAe,EAAE,KAAK,CAAC,CAAC,CAAC;IACjEA,YAAU,CAAC;QACP,QAAQ,CAAC,QAAQ,CAAC;KACrB,EAAE,yBAAyB,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;IACxDA,YAAU,CAAC;QACP,QAAQ,CAAC,IAAI,CAAC;KACjB,EAAE,yBAAyB,CAAC,SAAS,EAAE,cAAc,EAAE,KAAK,CAAC,CAAC,CAAC;IAChEA,YAAU,CAAC;QACP,QAAQ,CAAC,KAAK,CAAC;KAClB,EAAE,yBAAyB,CAAC,SAAS,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC;IAC3DA,YAAU,CAAC;QACP,QAAQ,CAAC,IAAI,CAAC;KACjB,EAAE,yBAAyB,CAAC,SAAS,EAAE,cAAc,EAAE,KAAK,CAAC,CAAC,CAAC;IAChEA,YAAU,CAAC;QACP,QAAQ,CAAC,IAAI,CAAC;KACjB,EAAE,yBAAyB,CAAC,SAAS,EAAE,aAAa,EAAE,KAAK,CAAC,CAAC,CAAC;IAC/DA,YAAU,CAAC;QACP,QAAQ,CAAC,WAAW,CAAC;KACxB,EAAE,yBAAyB,CAAC,SAAS,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;IACzDA,YAAU,CAAC;QACP,KAAK,EAAE;KACV,EAAE,yBAAyB,CAAC,SAAS,EAAE,aAAa,EAAE,KAAK,CAAC,CAAC,CAAC;IAC/DA,YAAU,CAAC;QACP,KAAK,EAAE;KACV,EAAE,yBAAyB,CAAC,SAAS,EAAE,YAAY,EAAE,KAAK,CAAC,CAAC,CAAC;IAC9DA,YAAU,CAAC;QACP,KAAK,EAAE;KACV,EAAE,yBAAyB,CAAC,SAAS,EAAE,kBAAkB,EAAE,KAAK,CAAC,CAAC,CAAC;IACpEA,YAAU,CAAC;QACP,KAAK,EAAE;KACV,EAAE,yBAAyB,CAAC,SAAS,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC;IAC3DA,YAAU,CAAC;QACP,KAAK,EAAE;KACV,EAAE,yBAAyB,CAAC,SAAS,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC;IAC1DA,YAAU,CAAC;QACP,KAAK,EAAE;KACV,EAAE,yBAAyB,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;IACxDA,YAAU,CAAC;QACP,KAAK,EAAE;KACV,EAAE,yBAAyB,CAAC,SAAS,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC;IAC1D,OAAO,yBAAyB,CAAC;CACpC,CAAC,aAAa,CAAC,CAAC;;ACtFjB,IAAIF,WAAS,GAAG,CAACC,SAAI,IAAIA,SAAI,CAAC,SAAS,KAAK,CAAC,YAAY;IACrD,IAAI,aAAa,GAAG,UAAU,CAAC,EAAE,CAAC,EAAE;QAChC,aAAa,GAAG,MAAM,CAAC,cAAc;aAChC,EAAE,SAAS,EAAE,EAAE,EAAE,YAAY,KAAK,IAAI,UAAU,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,EAAE,CAAC;YAC5E,UAAU,CAAC,EAAE,CAAC,EAAE,EAAE,KAAK,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/E,OAAO,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;KAC9B,CAAC;IACF,OAAO,UAAU,CAAC,EAAE,CAAC,EAAE;QACnB,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACpB,SAAS,EAAE,GAAG,EAAE,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,EAAE;QACvC,CAAC,CAAC,SAAS,GAAG,CAAC,KAAK,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;KACxF,CAAC;CACL,GAAG,CAAC;AACL,IAAIC,YAAU,GAAG,CAACD,SAAI,IAAIA,SAAI,CAAC,UAAU,KAAK,UAAU,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE;IACnF,IAAI,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,GAAG,IAAI,KAAK,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC,wBAAwB,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC;IAC7H,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,OAAO,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;SAC1H,KAAK,IAAI,CAAC,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;IAClJ,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;CACjE,CAAC;AACF,AAEA;;;AAGA,IAAI,sBAAsB,kBAAkB,UAAU,MAAM,EAAE;IAC1DD,WAAS,CAAC,sBAAsB,EAAE,MAAM,CAAC,CAAC;IAC1C,SAAS,sBAAsB,GAAG;QAC9B,OAAO,MAAM,KAAK,IAAI,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,IAAI,CAAC;KACnE;;;;;;;IAOD,sBAAsB,CAAC,SAAS,CAAC,aAAa,GAAG,UAAU,IAAI,EAAE,YAAY,EAAE;QAC3E,MAAM,CAAC,SAAS,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC;KACjE,CAAC;IACFE,YAAU,CAAC;QACP,QAAQ,CAAC,KAAK,CAAC;KAClB,EAAE,sBAAsB,CAAC,SAAS,EAAE,gBAAgB,EAAE,KAAK,CAAC,CAAC,CAAC;IAC/DA,YAAU,CAAC;QACP,QAAQ,CAAC,IAAI,CAAC;KACjB,EAAE,sBAAsB,CAAC,SAAS,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC;IACzDA,YAAU,CAAC;QACP,QAAQ,CAAC,EAAE,CAAC;KACf,EAAE,sBAAsB,CAAC,SAAS,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC;IACzDA,YAAU,CAAC;QACP,QAAQ,CAAC,EAAE,CAAC;KACf,EAAE,sBAAsB,CAAC,SAAS,EAAE,YAAY,EAAE,KAAK,CAAC,CAAC,CAAC;IAC3DA,YAAU,CAAC;QACP,OAAO,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,aAAa,CAAC;KACpF,EAAE,sBAAsB,CAAC,SAAS,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC;IACvDA,YAAU,CAAC;QACP,QAAQ,CAAC,UAAU,CAAC;KACvB,EAAE,sBAAsB,CAAC,SAAS,EAAE,YAAY,EAAE,KAAK,CAAC,CAAC,CAAC;IAC3DA,YAAU,CAAC;QACP,QAAQ,CAAC,IAAI,CAAC;KACjB,EAAE,sBAAsB,CAAC,SAAS,EAAE,gBAAgB,EAAE,KAAK,CAAC,CAAC,CAAC;IAC/DA,YAAU,CAAC;QACP,QAAQ,CAAC,IAAI,CAAC;KACjB,EAAE,sBAAsB,CAAC,SAAS,EAAE,eAAe,EAAE,KAAK,CAAC,CAAC,CAAC;IAC9DA,YAAU,CAAC;QACP,QAAQ,CAAC,IAAI,CAAC;KACjB,EAAE,sBAAsB,CAAC,SAAS,EAAE,gBAAgB,EAAE,KAAK,CAAC,CAAC,CAAC;IAC/DA,YAAU,CAAC;QACP,QAAQ,CAAC,IAAI,CAAC;KACjB,EAAE,sBAAsB,CAAC,SAAS,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;IACtDA,YAAU,CAAC;QACP,QAAQ,CAAC,IAAI,CAAC;KACjB,EAAE,sBAAsB,CAAC,SAAS,EAAE,cAAc,EAAE,KAAK,CAAC,CAAC,CAAC;IAC7DA,YAAU,CAAC;QACP,QAAQ,CAAC,kBAAkB,CAAC;KAC/B,EAAE,sBAAsB,CAAC,SAAS,EAAE,mBAAmB,EAAE,KAAK,CAAC,CAAC,CAAC;IAClEA,YAAU,CAAC;QACP,QAAQ,CAAC,IAAI,CAAC;KACjB,EAAE,sBAAsB,CAAC,SAAS,EAAE,aAAa,EAAE,KAAK,CAAC,CAAC,CAAC;IAC5DA,YAAU,CAAC;QACP,QAAQ,CAAC,OAAO,CAAC;KACpB,EAAE,sBAAsB,CAAC,SAAS,EAAE,aAAa,EAAE,KAAK,CAAC,CAAC,CAAC;IAC5DA,YAAU,CAAC;QACP,QAAQ,CAAC,MAAM,CAAC;KACnB,EAAE,sBAAsB,CAAC,SAAS,EAAE,YAAY,EAAE,KAAK,CAAC,CAAC,CAAC;IAC3DA,YAAU,CAAC;QACP,QAAQ,CAAC,IAAI,CAAC;KACjB,EAAE,sBAAsB,CAAC,SAAS,EAAE,iBAAiB,EAAE,KAAK,CAAC,CAAC,CAAC;IAChEA,YAAU,CAAC;QACP,QAAQ,CAAC,MAAM,CAAC;KACnB,EAAE,sBAAsB,CAAC,SAAS,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC;IAC1DA,YAAU,CAAC;QACP,QAAQ,CAAC,IAAI,CAAC;KACjB,EAAE,sBAAsB,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;IACrDA,YAAU,CAAC;QACP,QAAQ,CAAC,IAAI,CAAC;KACjB,EAAE,sBAAsB,CAAC,SAAS,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;IACtDA,YAAU,CAAC;QACP,QAAQ,CAAC,OAAO,CAAC;KACpB,EAAE,sBAAsB,CAAC,SAAS,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;IACtDA,YAAU,CAAC;QACP,KAAK,EAAE;KACV,EAAE,sBAAsB,CAAC,SAAS,EAAE,YAAY,EAAE,KAAK,CAAC,CAAC,CAAC;IAC3DA,YAAU,CAAC;QACP,KAAK,EAAE;KACV,EAAE,sBAAsB,CAAC,SAAS,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC;IACvDA,YAAU,CAAC;QACP,KAAK,EAAE;KACV,EAAE,sBAAsB,CAAC,SAAS,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;IACtDA,YAAU,CAAC;QACP,KAAK,EAAE;KACV,EAAE,sBAAsB,CAAC,SAAS,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC;IACxDA,YAAU,CAAC;QACP,KAAK,EAAE;KACV,EAAE,sBAAsB,CAAC,SAAS,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC;IAC1DA,YAAU,CAAC;QACP,KAAK,EAAE;KACV,EAAE,sBAAsB,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;IACrDA,YAAU,CAAC;QACP,KAAK,EAAE;KACV,EAAE,sBAAsB,CAAC,SAAS,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC;IACvD,OAAO,sBAAsB,CAAC;CACjC,CAAC,aAAa,CAAC,CAAC;;ACxHjB,IAAIF,WAAS,GAAG,CAACC,SAAI,IAAIA,SAAI,CAAC,SAAS,KAAK,CAAC,YAAY;IACrD,IAAI,aAAa,GAAG,UAAU,CAAC,EAAE,CAAC,EAAE;QAChC,aAAa,GAAG,MAAM,CAAC,cAAc;aAChC,EAAE,SAAS,EAAE,EAAE,EAAE,YAAY,KAAK,IAAI,UAAU,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,EAAE,CAAC;YAC5E,UAAU,CAAC,EAAE,CAAC,EAAE,EAAE,KAAK,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/E,OAAO,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;KAC9B,CAAC;IACF,OAAO,UAAU,CAAC,EAAE,CAAC,EAAE;QACnB,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACpB,SAAS,EAAE,GAAG,EAAE,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,EAAE;QACvC,CAAC,CAAC,SAAS,GAAG,CAAC,KAAK,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;KACxF,CAAC;CACL,GAAG,CAAC;AACL,IAAIC,YAAU,GAAG,CAACD,SAAI,IAAIA,SAAI,CAAC,UAAU,KAAK,UAAU,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE;IACnF,IAAI,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,GAAG,IAAI,KAAK,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC,wBAAwB,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC;IAC7H,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,OAAO,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;SAC1H,KAAK,IAAI,CAAC,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;IAClJ,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;CACjE,CAAC;AACF,AAEA;;;AAGA,IAAI,sBAAsB,kBAAkB,UAAU,MAAM,EAAE;IAC1DD,WAAS,CAAC,sBAAsB,EAAE,MAAM,CAAC,CAAC;IAC1C,SAAS,sBAAsB,GAAG;QAC9B,OAAO,MAAM,KAAK,IAAI,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,IAAI,CAAC;KACnE;;;;;;;IAOD,sBAAsB,CAAC,SAAS,CAAC,aAAa,GAAG,UAAU,IAAI,EAAE,YAAY,EAAE;QAC3E,MAAM,CAAC,SAAS,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC;KACjE,CAAC;IACFE,YAAU,CAAC;QACP,QAAQ,CAAC,EAAE,CAAC;KACf,EAAE,sBAAsB,CAAC,SAAS,EAAE,mBAAmB,EAAE,KAAK,CAAC,CAAC,CAAC;IAClEA,YAAU,CAAC;QACP,QAAQ,CAAC,EAAE,CAAC;KACf,EAAE,sBAAsB,CAAC,SAAS,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC;IACxDA,YAAU,CAAC;QACP,QAAQ,CAAC,EAAE,CAAC;KACf,EAAE,sBAAsB,CAAC,SAAS,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC;IACzDA,YAAU,CAAC;QACP,QAAQ,CAAC,EAAE,CAAC;KACf,EAAE,sBAAsB,CAAC,SAAS,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC;IACxDA,YAAU,CAAC;QACP,UAAU,CAAC,EAAE,EAAE,IAAI,CAAC;KACvB,EAAE,sBAAsB,CAAC,SAAS,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;IACtDA,YAAU,CAAC;QACP,QAAQ,CAAC,EAAE,CAAC;KACf,EAAE,sBAAsB,CAAC,SAAS,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC;IACvDA,YAAU,CAAC;QACP,QAAQ,CAAC,KAAK,CAAC;KAClB,EAAE,sBAAsB,CAAC,SAAS,EAAE,oBAAoB,EAAE,KAAK,CAAC,CAAC,CAAC;IACnEA,YAAU,CAAC;QACP,KAAK,EAAE;KACV,EAAE,sBAAsB,CAAC,SAAS,EAAE,aAAa,EAAE,KAAK,CAAC,CAAC,CAAC;IAC5DA,YAAU,CAAC;QACP,KAAK,EAAE;KACV,EAAE,sBAAsB,CAAC,SAAS,EAAE,kBAAkB,EAAE,KAAK,CAAC,CAAC,CAAC;IACjEA,YAAU,CAAC;QACP,KAAK,EAAE;KACV,EAAE,sBAAsB,CAAC,SAAS,EAAE,YAAY,EAAE,KAAK,CAAC,CAAC,CAAC;IAC3DA,YAAU,CAAC;QACP,KAAK,EAAE;KACV,EAAE,sBAAsB,CAAC,SAAS,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;IACtDA,YAAU,CAAC;QACP,KAAK,EAAE;KACV,EAAE,sBAAsB,CAAC,SAAS,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC;IACxDA,YAAU,CAAC;QACP,KAAK,EAAE;KACV,EAAE,sBAAsB,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;IACrDA,YAAU,CAAC;QACP,KAAK,EAAE;KACV,EAAE,sBAAsB,CAAC,SAAS,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC;IACvD,OAAO,sBAAsB,CAAC;CACjC,CAAC,aAAa,CAAC,CAAC;;ACjFjB,IAAIF,YAAS,GAAG,CAACC,SAAI,IAAIA,SAAI,CAAC,SAAS,KAAK,CAAC,YAAY;IACrD,IAAI,aAAa,GAAG,UAAU,CAAC,EAAE,CAAC,EAAE;QAChC,aAAa,GAAG,MAAM,CAAC,cAAc;aAChC,EAAE,SAAS,EAAE,EAAE,EAAE,YAAY,KAAK,IAAI,UAAU,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,EAAE,CAAC;YAC5E,UAAU,CAAC,EAAE,CAAC,EAAE,EAAE,KAAK,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/E,OAAO,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;KAC9B,CAAC;IACF,OAAO,UAAU,CAAC,EAAE,CAAC,EAAE;QACnB,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACpB,SAAS,EAAE,GAAG,EAAE,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,EAAE;QACvC,CAAC,CAAC,SAAS,GAAG,CAAC,KAAK,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;KACxF,CAAC;CACL,GAAG,CAAC;AACL,IAAIC,aAAU,GAAG,CAACD,SAAI,IAAIA,SAAI,CAAC,UAAU,KAAK,UAAU,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE;IACnF,IAAI,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,GAAG,IAAI,KAAK,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC,wBAAwB,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC;IAC7H,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,OAAO,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;SAC1H,KAAK,IAAI,CAAC,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;IAClJ,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;CACjE,CAAC;AACF,AAEA;;;AAGA,IAAI,yBAAyB,kBAAkB,UAAU,MAAM,EAAE;IAC7DD,YAAS,CAAC,yBAAyB,EAAE,MAAM,CAAC,CAAC;IAC7C,SAAS,yBAAyB,GAAG;QACjC,OAAO,MAAM,KAAK,IAAI,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,IAAI,CAAC;KACnE;;;;;;;IAOD,yBAAyB,CAAC,SAAS,CAAC,aAAa,GAAG,UAAU,IAAI,EAAE,YAAY,EAAE;QAC9E,MAAM,CAAC,SAAS,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC;KACjE,CAAC;IACFE,aAAU,CAAC;QACP,QAAQ,CAAC,EAAE,CAAC;KACf,EAAE,yBAAyB,CAAC,SAAS,EAAE,mBAAmB,EAAE,KAAK,CAAC,CAAC,CAAC;IACrEA,aAAU,CAAC;QACP,QAAQ,CAAC,EAAE,CAAC;KACf,EAAE,yBAAyB,CAAC,SAAS,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC;IAC3DA,aAAU,CAAC;QACP,QAAQ,CAAC,EAAE,CAAC;KACf,EAAE,yBAAyB,CAAC,SAAS,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC;IAC5DA,aAAU,CAAC;QACP,QAAQ,CAAC,EAAE,CAAC;KACf,EAAE,yBAAyB,CAAC,SAAS,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC;IAC3DA,aAAU,CAAC;QACP,UAAU,CAAC,EAAE,EAAE,IAAI,CAAC;KACvB,EAAE,yBAAyB,CAAC,SAAS,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;IACzDA,aAAU,CAAC;QACP,QAAQ,CAAC,EAAE,CAAC;KACf,EAAE,yBAAyB,CAAC,SAAS,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC;IAC1DA,aAAU,CAAC;QACP,KAAK,EAAE;KACV,EAAE,yBAAyB,CAAC,SAAS,EAAE,aAAa,EAAE,KAAK,CAAC,CAAC,CAAC;IAC/DA,aAAU,CAAC;QACP,KAAK,EAAE;KACV,EAAE,yBAAyB,CAAC,SAAS,EAAE,kBAAkB,EAAE,KAAK,CAAC,CAAC,CAAC;IACpEA,aAAU,CAAC;QACP,KAAK,EAAE;KACV,EAAE,yBAAyB,CAAC,SAAS,EAAE,YAAY,EAAE,KAAK,CAAC,CAAC,CAAC;IAC9DA,aAAU,CAAC;QACP,KAAK,EAAE;KACV,EAAE,yBAAyB,CAAC,SAAS,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;IACzDA,aAAU,CAAC;QACP,KAAK,EAAE;KACV,EAAE,yBAAyB,CAAC,SAAS,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;IACzDA,aAAU,CAAC;QACP,KAAK,EAAE;KACV,EAAE,yBAAyB,CAAC,SAAS,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC;IAC3DA,aAAU,CAAC;QACP,KAAK,EAAE;KACV,EAAE,yBAAyB,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;IACxDA,aAAU,CAAC;QACP,KAAK,EAAE;KACV,EAAE,yBAAyB,CAAC,SAAS,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC;IAC1D,OAAO,yBAAyB,CAAC;CACpC,CAAC,aAAa,CAAC,CAAC;;ACjFjB,IAAIF,YAAS,GAAG,CAACC,SAAI,IAAIA,SAAI,CAAC,SAAS,KAAK,CAAC,YAAY;IACrD,IAAI,aAAa,GAAG,UAAU,CAAC,EAAE,CAAC,EAAE;QAChC,aAAa,GAAG,MAAM,CAAC,cAAc;aAChC,EAAE,SAAS,EAAE,EAAE,EAAE,YAAY,KAAK,IAAI,UAAU,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,EAAE,CAAC;YAC5E,UAAU,CAAC,EAAE,CAAC,EAAE,EAAE,KAAK,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/E,OAAO,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;KAC9B,CAAC;IACF,OAAO,UAAU,CAAC,EAAE,CAAC,EAAE;QACnB,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACpB,SAAS,EAAE,GAAG,EAAE,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,EAAE;QACvC,CAAC,CAAC,SAAS,GAAG,CAAC,KAAK,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;KACxF,CAAC;CACL,GAAG,CAAC;AACL,IAAIC,aAAU,GAAG,CAACD,SAAI,IAAIA,SAAI,CAAC,UAAU,KAAK,UAAU,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE;IACnF,IAAI,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,GAAG,IAAI,KAAK,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC,wBAAwB,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC;IAC7H,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,OAAO,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;SAC1H,KAAK,IAAI,CAAC,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;IAClJ,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;CACjE,CAAC;AACF,AACA;;;AAGA,IAAI,aAAa,kBAAkB,UAAU,MAAM,EAAE;IACjDD,YAAS,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;IACjC,SAAS,aAAa,GAAG;QACrB,OAAO,MAAM,KAAK,IAAI,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,IAAI,CAAC;KACnE;IACDE,aAAU,CAAC;QACP,QAAQ,CAAC,EAAE,CAAC;KACf,EAAE,aAAa,CAAC,SAAS,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC;IAChDA,aAAU,CAAC;QACP,QAAQ,CAAC,EAAE,CAAC;KACf,EAAE,aAAa,CAAC,SAAS,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;IAC1CA,aAAU,CAAC;QACP,QAAQ,CAAC,EAAE,CAAC;KACf,EAAE,aAAa,CAAC,SAAS,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;IAC7CA,aAAU,CAAC;QACP,QAAQ,CAAC,EAAE,CAAC;KACf,EAAE,aAAa,CAAC,SAAS,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC;IAC/CA,aAAU,CAAC;QACP,QAAQ,CAAC,EAAE,CAAC;KACf,EAAE,aAAa,CAAC,SAAS,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC;IAC/C,OAAO,aAAa,CAAC;CACxB,CAAC,aAAa,CAAC,CAAC;;AC5CjB,IAAIF,YAAS,GAAG,CAACC,SAAI,IAAIA,SAAI,CAAC,SAAS,KAAK,CAAC,YAAY;IACrD,IAAI,aAAa,GAAG,UAAU,CAAC,EAAE,CAAC,EAAE;QAChC,aAAa,GAAG,MAAM,CAAC,cAAc;aAChC,EAAE,SAAS,EAAE,EAAE,EAAE,YAAY,KAAK,IAAI,UAAU,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,EAAE,CAAC;YAC5E,UAAU,CAAC,EAAE,CAAC,EAAE,EAAE,KAAK,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/E,OAAO,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;KAC9B,CAAC;IACF,OAAO,UAAU,CAAC,EAAE,CAAC,EAAE;QACnB,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACpB,SAAS,EAAE,GAAG,EAAE,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,EAAE;QACvC,CAAC,CAAC,SAAS,GAAG,CAAC,KAAK,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;KACxF,CAAC;CACL,GAAG,CAAC;AACL,IAAIC,aAAU,GAAG,CAACD,SAAI,IAAIA,SAAI,CAAC,UAAU,KAAK,UAAU,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE;IACnF,IAAI,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,GAAG,IAAI,KAAK,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC,wBAAwB,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC;IAC7H,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,OAAO,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;SAC1H,KAAK,IAAI,CAAC,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;IAClJ,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;CACjE,CAAC;AACF,AAEA;;;AAGA,IAAI,qBAAqB,kBAAkB,UAAU,MAAM,EAAE;IACzDD,YAAS,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;IACzC,SAAS,qBAAqB,GAAG;QAC7B,OAAO,MAAM,KAAK,IAAI,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,IAAI,CAAC;KACnE;IACDE,aAAU,CAAC;QACP,QAAQ,CAAC,EAAE,CAAC;KACf,EAAE,qBAAqB,CAAC,SAAS,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC;IACvDA,aAAU,CAAC;QACP,QAAQ,CAAC,EAAE,CAAC;KACf,EAAE,qBAAqB,CAAC,SAAS,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC;IACvDA,aAAU,CAAC;QACP,OAAO,CAAC,EAAE,EAAE,aAAa,CAAC;KAC7B,EAAE,qBAAqB,CAAC,SAAS,EAAE,uBAAuB,EAAE,KAAK,CAAC,CAAC,CAAC;IACrEA,aAAU,CAAC;QACP,QAAQ,CAAC,KAAK,CAAC;KAClB,EAAE,qBAAqB,CAAC,SAAS,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC;IACxDA,aAAU,CAAC;QACP,KAAK,EAAE;KACV,EAAE,qBAAqB,CAAC,SAAS,EAAE,aAAa,EAAE,KAAK,CAAC,CAAC,CAAC;IAC3DA,aAAU,CAAC;QACP,KAAK,EAAE;KACV,EAAE,qBAAqB,CAAC,SAAS,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;IACrD,OAAO,qBAAqB,CAAC;CAChC,CAAC,aAAa,CAAC,CAAC;;AChDjB,IAAIF,YAAS,GAAG,CAACC,SAAI,IAAIA,SAAI,CAAC,SAAS,KAAK,CAAC,YAAY;IACrD,IAAI,aAAa,GAAG,UAAU,CAAC,EAAE,CAAC,EAAE;QAChC,aAAa,GAAG,MAAM,CAAC,cAAc;aAChC,EAAE,SAAS,EAAE,EAAE,EAAE,YAAY,KAAK,IAAI,UAAU,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,EAAE,CAAC;YAC5E,UAAU,CAAC,EAAE,CAAC,EAAE,EAAE,KAAK,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/E,OAAO,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;KAC9B,CAAC;IACF,OAAO,UAAU,CAAC,EAAE,CAAC,EAAE;QACnB,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACpB,SAAS,EAAE,GAAG,EAAE,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,EAAE;QACvC,CAAC,CAAC,SAAS,GAAG,CAAC,KAAK,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;KACxF,CAAC;CACL,GAAG,CAAC;AACL,IAAIC,aAAU,GAAG,CAACD,SAAI,IAAIA,SAAI,CAAC,UAAU,KAAK,UAAU,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE;IACnF,IAAI,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,GAAG,IAAI,KAAK,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC,wBAAwB,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC;IAC7H,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,OAAO,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;SAC1H,KAAK,IAAI,CAAC,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;IAClJ,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;CACjE,CAAC;AACF,AAEA;;;AAGA,IAAI,yBAAyB,kBAAkB,UAAU,MAAM,EAAE;IAC7DD,YAAS,CAAC,yBAAyB,EAAE,MAAM,CAAC,CAAC;IAC7C,SAAS,yBAAyB,GAAG;QACjC,OAAO,MAAM,KAAK,IAAI,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,IAAI,CAAC;KACnE;IACDE,aAAU,CAAC;QACP,QAAQ,CAAC,QAAQ,CAAC;KACrB,EAAE,yBAAyB,CAAC,SAAS,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC;IAC7DA,aAAU,CAAC;QACP,UAAU,CAAC,EAAE,EAAE,qBAAqB,CAAC;KACxC,EAAE,yBAAyB,CAAC,SAAS,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;IACzD,OAAO,yBAAyB,CAAC;CACpC,CAAC,aAAa,CAAC,CAAC;;ACpCjB,IAAIF,WAAS,GAAG,CAACC,SAAI,IAAIA,SAAI,CAAC,SAAS,KAAK,CAAC,YAAY;IACrD,IAAI,aAAa,GAAG,UAAU,CAAC,EAAE,CAAC,EAAE;QAChC,aAAa,GAAG,MAAM,CAAC,cAAc;aAChC,EAAE,SAAS,EAAE,EAAE,EAAE,YAAY,KAAK,IAAI,UAAU,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,EAAE,CAAC;YAC5E,UAAU,CAAC,EAAE,CAAC,EAAE,EAAE,KAAK,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/E,OAAO,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;KAC9B,CAAC;IACF,OAAO,UAAU,CAAC,EAAE,CAAC,EAAE;QACnB,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACpB,SAAS,EAAE,GAAG,EAAE,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,EAAE;QACvC,CAAC,CAAC,SAAS,GAAG,CAAC,KAAK,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;KACxF,CAAC;CACL,GAAG,CAAC;AACL,IAAIC,YAAU,GAAG,CAACD,SAAI,IAAIA,SAAI,CAAC,UAAU,KAAK,UAAU,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE;IACnF,IAAI,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,GAAG,IAAI,KAAK,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC,wBAAwB,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC;IAC7H,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,OAAO,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;SAC1H,KAAK,IAAI,CAAC,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;IAClJ,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;CACjE,CAAC;AACF,AAUA;;;AAGA,IAAI,UAAU,kBAAkB,UAAU,MAAM,EAAE;IAC9CD,WAAS,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IAC9B,SAAS,UAAU,GAAG;QAClB,OAAO,MAAM,KAAK,IAAI,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,IAAI,CAAC;KACnE;;;;;;;IAOD,UAAU,CAAC,SAAS,CAAC,aAAa,GAAG,UAAU,IAAI,EAAE,YAAY,EAAE;QAC/D,MAAM,CAAC,SAAS,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC;KACjE,CAAC;IACFE,YAAU,CAAC;QACP,QAAQ,CAAC,cAAc,CAAC,MAAM,CAAC;KAClC,EAAE,UAAU,CAAC,SAAS,EAAE,YAAY,EAAE,KAAK,CAAC,CAAC,CAAC;IAC/CA,YAAU,CAAC;QACP,QAAQ,CAAC,cAAc,CAAC,KAAK,GAAG,cAAc,CAAC,MAAM,GAAG,cAAc,CAAC,KAAK,CAAC;KAChF,EAAE,UAAU,CAAC,SAAS,EAAE,cAAc,EAAE,KAAK,CAAC,CAAC,CAAC;IACjDA,YAAU,CAAC;QACP,QAAQ,CAAC,EAAE,CAAC;KACf,EAAE,UAAU,CAAC,SAAS,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;IACvCA,YAAU,CAAC;QACP,QAAQ,CAAC,EAAE,CAAC;KACf,EAAE,UAAU,CAAC,SAAS,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC;IAC7CA,YAAU,CAAC;QACP,QAAQ,CAAC,KAAK,CAAC;KAClB,EAAE,UAAU,CAAC,SAAS,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC;IAC7CA,YAAU,CAAC;QACP,QAAQ,CAAC,EAAE,CAAC;KACf,EAAE,UAAU,CAAC,SAAS,EAAE,cAAc,EAAE,KAAK,CAAC,CAAC,CAAC;IACjDA,YAAU,CAAC;QACP,QAAQ,CAAC,QAAQ,CAAC;KACrB,EAAE,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;IACzCA,YAAU,CAAC;QACP,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC;KAC7B,EAAE,UAAU,CAAC,SAAS,EAAE,gBAAgB,EAAE,KAAK,CAAC,CAAC,CAAC;IACnDA,YAAU,CAAC;QACP,OAAO,CAAC,EAAE,EAAE,aAAa,CAAC;KAC7B,EAAE,UAAU,CAAC,SAAS,EAAE,uBAAuB,EAAE,KAAK,CAAC,CAAC,CAAC;IAC1DA,YAAU,CAAC;QACP,OAAO,CAAC,EAAE,EAAE,oBAAoB,CAAC;KACpC,EAAE,UAAU,CAAC,SAAS,EAAE,gBAAgB,EAAE,KAAK,CAAC,CAAC,CAAC;IACnDA,YAAU,CAAC;QACP,OAAO,CAAC,EAAE,EAAE,sBAAsB,CAAC;KACtC,EAAE,UAAU,CAAC,SAAS,EAAE,kBAAkB,EAAE,KAAK,CAAC,CAAC,CAAC;IACrDA,YAAU,CAAC;QACP,OAAO,CAAC,EAAE,EAAE,sBAAsB,CAAC;KACtC,EAAE,UAAU,CAAC,SAAS,EAAE,kBAAkB,EAAE,KAAK,CAAC,CAAC,CAAC;IACrDA,YAAU,CAAC;QACP,OAAO,CAAC,EAAE,EAAE,yBAAyB,CAAC;KACzC,EAAE,UAAU,CAAC,SAAS,EAAE,qBAAqB,EAAE,KAAK,CAAC,CAAC,CAAC;IACxDA,YAAU,CAAC;QACP,OAAO,CAAC,EAAE,EAAE,sBAAsB,CAAC;KACtC,EAAE,UAAU,CAAC,SAAS,EAAE,kBAAkB,EAAE,KAAK,CAAC,CAAC,CAAC;IACrDA,YAAU,CAAC;QACP,OAAO,CAAC,EAAE,EAAE,yBAAyB,CAAC;KACzC,EAAE,UAAU,CAAC,SAAS,EAAE,qBAAqB,EAAE,KAAK,CAAC,CAAC,CAAC;IACxDA,YAAU,CAAC;QACP,OAAO,CAAC,EAAE,EAAE,yBAAyB,CAAC;KACzC,EAAE,UAAU,CAAC,SAAS,EAAE,qBAAqB,EAAE,KAAK,CAAC,CAAC,CAAC;IACxD,OAAO,UAAU,CAAC;CACrB,CAAC,aAAa,CAAC,CAAC;;AC/FjB,IAAIF,WAAS,GAAG,CAACC,SAAI,IAAIA,SAAI,CAAC,SAAS,KAAK,CAAC,YAAY;IACrD,IAAI,aAAa,GAAG,UAAU,CAAC,EAAE,CAAC,EAAE;QAChC,aAAa,GAAG,MAAM,CAAC,cAAc;aAChC,EAAE,SAAS,EAAE,EAAE,EAAE,YAAY,KAAK,IAAI,UAAU,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,EAAE,CAAC;YAC5E,UAAU,CAAC,EAAE,CAAC,EAAE,EAAE,KAAK,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/E,OAAO,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;KAC9B,CAAC;IACF,OAAO,UAAU,CAAC,EAAE,CAAC,EAAE;QACnB,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACpB,SAAS,EAAE,GAAG,EAAE,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,EAAE;QACvC,CAAC,CAAC,SAAS,GAAG,CAAC,KAAK,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;KACxF,CAAC;CACL,GAAG,CAAC;AACL,IAAIC,YAAU,GAAG,CAACD,SAAI,IAAIA,SAAI,CAAC,UAAU,KAAK,UAAU,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE;IACnF,IAAI,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,GAAG,IAAI,KAAK,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC,wBAAwB,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC;IAC7H,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,OAAO,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;SAC1H,KAAK,IAAI,CAAC,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;IAClJ,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;CACjE,CAAC;AACF,AAEA;;;AAGA,IAAI,gBAAgB,kBAAkB,UAAU,MAAM,EAAE;IACpDD,WAAS,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;IACpC,SAAS,gBAAgB,GAAG;QACxB,OAAO,MAAM,KAAK,IAAI,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,IAAI,CAAC;KACnE;;;;;;;IAOD,gBAAgB,CAAC,SAAS,CAAC,aAAa,GAAG,UAAU,IAAI,EAAE,YAAY,EAAE;QACrE,MAAM,CAAC,SAAS,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC;KACjE,CAAC;IACFE,YAAU,CAAC;QACP,QAAQ,CAAC,EAAE,CAAC;KACf,EAAE,gBAAgB,CAAC,SAAS,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;IAC7CA,YAAU,CAAC;QACP,QAAQ,CAAC,EAAE,CAAC;KACf,EAAE,gBAAgB,CAAC,SAAS,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC;IACnDA,YAAU,CAAC;QACP,UAAU,CAAC,EAAE,EAAE,UAAU,CAAC;KAC7B,EAAE,gBAAgB,CAAC,SAAS,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;IAChD,OAAO,gBAAgB,CAAC;CAC3B,CAAC,aAAa,CAAC,CAAC;;AChDjB,IAAIF,WAAS,GAAG,CAACC,SAAI,IAAIA,SAAI,CAAC,SAAS,KAAK,CAAC,YAAY;IACrD,IAAI,aAAa,GAAG,UAAU,CAAC,EAAE,CAAC,EAAE;QAChC,aAAa,GAAG,MAAM,CAAC,cAAc;aAChC,EAAE,SAAS,EAAE,EAAE,EAAE,YAAY,KAAK,IAAI,UAAU,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,EAAE,CAAC;YAC5E,UAAU,CAAC,EAAE,CAAC,EAAE,EAAE,KAAK,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/E,OAAO,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;KAC9B,CAAC;IACF,OAAO,UAAU,CAAC,EAAE,CAAC,EAAE;QACnB,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACpB,SAAS,EAAE,GAAG,EAAE,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,EAAE;QACvC,CAAC,CAAC,SAAS,GAAG,CAAC,KAAK,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;KACxF,CAAC;CACL,GAAG,CAAC;AACL,IAAIC,YAAU,GAAG,CAACD,SAAI,IAAIA,SAAI,CAAC,UAAU,KAAK,UAAU,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE;IACnF,IAAI,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,GAAG,IAAI,KAAK,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC,wBAAwB,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC;IAC7H,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,OAAO,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;SAC1H,KAAK,IAAI,CAAC,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;IAClJ,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;CACjE,CAAC;AACF,AAEA;;;AAGA,IAAI,WAAW,kBAAkB,UAAU,MAAM,EAAE;IAC/CD,WAAS,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IAC/B,SAAS,WAAW,GAAG;QACnB,OAAO,MAAM,KAAK,IAAI,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,IAAI,CAAC;KACnE;;;;;;;IAOD,WAAW,CAAC,SAAS,CAAC,aAAa,GAAG,UAAU,IAAI,EAAE,YAAY,EAAE;QAChE,MAAM,CAAC,SAAS,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC;KACjE,CAAC;IACFE,YAAU,CAAC;QACP,UAAU,CAAC,EAAE,EAAE,gBAAgB,CAAC;KACnC,EAAE,WAAW,CAAC,SAAS,EAAE,aAAa,EAAE,KAAK,CAAC,CAAC,CAAC;IACjDA,YAAU,CAAC;QACP,QAAQ,CAAC,EAAE,CAAC;KACf,EAAE,WAAW,CAAC,SAAS,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC;IAC9CA,YAAU,CAAC;QACP,QAAQ,CAAC,EAAE,CAAC;KACf,EAAE,WAAW,CAAC,SAAS,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;IACxCA,YAAU,CAAC;QACP,QAAQ,CAAC,KAAK,CAAC;KAClB,EAAE,WAAW,CAAC,SAAS,EAAE,aAAa,EAAE,KAAK,CAAC,CAAC,CAAC;IACjDA,YAAU,CAAC;QACP,QAAQ,CAAC,IAAI,CAAC;KACjB,EAAE,WAAW,CAAC,SAAS,EAAE,eAAe,EAAE,KAAK,CAAC,CAAC,CAAC;IACnDA,YAAU,CAAC;QACP,QAAQ,CAAC,KAAK,CAAC;KAClB,EAAE,WAAW,CAAC,SAAS,EAAE,qBAAqB,EAAE,KAAK,CAAC,CAAC,CAAC;IACzDA,YAAU,CAAC;QACP,QAAQ,CAAC,EAAE,CAAC;KACf,EAAE,WAAW,CAAC,SAAS,EAAE,cAAc,EAAE,KAAK,CAAC,CAAC,CAAC;IAClDA,YAAU,CAAC;QACP,QAAQ,CAAC,EAAE,CAAC;KACf,EAAE,WAAW,CAAC,SAAS,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC;IAC5CA,YAAU,CAAC;QACP,QAAQ,CAAC,QAAQ,CAAC;KACrB,EAAE,WAAW,CAAC,SAAS,EAAE,aAAa,EAAE,KAAK,CAAC,CAAC,CAAC;IACjDA,YAAU,CAAC;QACP,QAAQ,CAAC,CAAC,CAAC;KACd,EAAE,WAAW,CAAC,SAAS,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC;IAC9CA,YAAU,CAAC;QACP,QAAQ,CAAC,KAAK,CAAC;KAClB,EAAE,WAAW,CAAC,SAAS,EAAE,kBAAkB,EAAE,KAAK,CAAC,CAAC,CAAC;IACtD,OAAO,WAAW,CAAC;CACtB,CAAC,aAAa,CAAC,CAAC;;ACxEjB,IAAIF,WAAS,GAAG,CAACC,SAAI,IAAIA,SAAI,CAAC,SAAS,KAAK,CAAC,YAAY;IACrD,IAAI,aAAa,GAAG,UAAU,CAAC,EAAE,CAAC,EAAE;QAChC,aAAa,GAAG,MAAM,CAAC,cAAc;aAChC,EAAE,SAAS,EAAE,EAAE,EAAE,YAAY,KAAK,IAAI,UAAU,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,EAAE,CAAC;YAC5E,UAAU,CAAC,EAAE,CAAC,EAAE,EAAE,KAAK,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/E,OAAO,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;KAC9B,CAAC;IACF,OAAO,UAAU,CAAC,EAAE,CAAC,EAAE;QACnB,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACpB,SAAS,EAAE,GAAG,EAAE,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,EAAE;QACvC,CAAC,CAAC,SAAS,GAAG,CAAC,KAAK,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;KACxF,CAAC;CACL,GAAG,CAAC;AACL,IAAIC,YAAU,GAAG,CAACD,SAAI,IAAIA,SAAI,CAAC,UAAU,KAAK,UAAU,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE;IACnF,IAAI,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,GAAG,IAAI,KAAK,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC,wBAAwB,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC;IAC7H,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,OAAO,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;SAC1H,KAAK,IAAI,CAAC,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;IAClJ,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;CACjE,CAAC;AACF,AAEA;;;AAGA,IAAI,SAAS,kBAAkB,UAAU,MAAM,EAAE;IAC7CD,WAAS,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IAC7B,SAAS,SAAS,GAAG;QACjB,OAAO,MAAM,KAAK,IAAI,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,IAAI,CAAC;KACnE;;;;;;;IAOD,SAAS,CAAC,SAAS,CAAC,aAAa,GAAG,UAAU,IAAI,EAAE,YAAY,EAAE;QAC9D,MAAM,CAAC,SAAS,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC;KACjE,CAAC;IACFE,YAAU,CAAC;QACP,QAAQ,CAAC,EAAE,CAAC;KACf,EAAE,SAAS,CAAC,SAAS,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;IACtCA,YAAU,CAAC;QACP,QAAQ,CAAC,EAAE,CAAC;KACf,EAAE,SAAS,CAAC,SAAS,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC;IAC5CA,YAAU,CAAC;QACP,UAAU,CAAC,EAAE,EAAE,WAAW,CAAC;KAC9B,EAAE,SAAS,CAAC,SAAS,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC;IAC1CA,YAAU,CAAC;QACP,QAAQ,CAAC,EAAE,CAAC;KACf,EAAE,SAAS,CAAC,SAAS,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC;IAC1C,OAAO,SAAS,CAAC;CACpB,CAAC,aAAa,CAAC,CAAC;;ACnDjB,IAAIF,YAAS,GAAG,CAACC,SAAI,IAAIA,SAAI,CAAC,SAAS,KAAK,CAAC,YAAY;IACrD,IAAI,aAAa,GAAG,UAAU,CAAC,EAAE,CAAC,EAAE;QAChC,aAAa,GAAG,MAAM,CAAC,cAAc;aAChC,EAAE,SAAS,EAAE,EAAE,EAAE,YAAY,KAAK,IAAI,UAAU,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,EAAE,CAAC;YAC5E,UAAU,CAAC,EAAE,CAAC,EAAE,EAAE,KAAK,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/E,OAAO,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;KAC9B,CAAC;IACF,OAAO,UAAU,CAAC,EAAE,CAAC,EAAE;QACnB,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACpB,SAAS,EAAE,GAAG,EAAE,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,EAAE;QACvC,CAAC,CAAC,SAAS,GAAG,CAAC,KAAK,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;KACxF,CAAC;CACL,GAAG,CAAC;AACL,IAAIC,aAAU,GAAG,CAACD,SAAI,IAAIA,SAAI,CAAC,UAAU,KAAK,UAAU,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE;IACnF,IAAI,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,GAAG,IAAI,KAAK,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC,wBAAwB,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC;IAC7H,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,OAAO,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;SAC1H,KAAK,IAAI,CAAC,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;IAClJ,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;CACjE,CAAC;AACF,AAGA;;;AAGA,IAAI,gBAAgB,kBAAkB,UAAU,MAAM,EAAE;IACpDD,YAAS,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;IACpC,SAAS,gBAAgB,GAAG;QACxB,OAAO,MAAM,KAAK,IAAI,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,IAAI,CAAC;KACnE;;;;;;;IAOD,gBAAgB,CAAC,SAAS,CAAC,aAAa,GAAG,UAAU,IAAI,EAAE,YAAY,EAAE;QACrE,MAAM,CAAC,SAAS,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC;KACjE,CAAC;IACFE,aAAU,CAAC;QACP,QAAQ,CAAC,MAAM,CAAC;KACnB,EAAE,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;IAC/CA,aAAU,CAAC;QACP,QAAQ,CAAC,KAAK,CAAC;KAClB,EAAE,gBAAgB,CAAC,SAAS,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC;IAClDA,aAAU,CAAC;QACP,UAAU,CAAC,EAAE,EAAE,QAAQ,CAAC;KAC3B,EAAE,gBAAgB,CAAC,SAAS,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC;IACpDA,aAAU,CAAC;QACP,QAAQ,CAAC,KAAK,CAAC;KAClB,EAAE,gBAAgB,CAAC,SAAS,EAAE,iBAAiB,EAAE,KAAK,CAAC,CAAC,CAAC;IAC1DA,aAAU,CAAC;QACP,OAAO,CAAC,EAAE,EAAE,qBAAqB,CAAC;KACrC,EAAE,gBAAgB,CAAC,SAAS,EAAE,mBAAmB,EAAE,KAAK,CAAC,CAAC,CAAC;IAC5DA,aAAU,CAAC;QACP,QAAQ,CAAC,EAAE,CAAC;KACf,EAAE,gBAAgB,CAAC,SAAS,EAAE,cAAc,EAAE,KAAK,CAAC,CAAC,CAAC;IACvDA,aAAU,CAAC;QACP,QAAQ,CAAC,EAAE,CAAC;KACf,EAAE,gBAAgB,CAAC,SAAS,EAAE,eAAe,EAAE,KAAK,CAAC,CAAC,CAAC;IACxDA,aAAU,CAAC;QACP,OAAO,CAAC,EAAE,EAAE,aAAa,CAAC;KAC7B,EAAE,gBAAgB,CAAC,SAAS,EAAE,uBAAuB,EAAE,KAAK,CAAC,CAAC,CAAC;IAChEA,aAAU,CAAC;QACP,KAAK,EAAE;KACV,EAAE,gBAAgB,CAAC,SAAS,EAAE,aAAa,EAAE,KAAK,CAAC,CAAC,CAAC;IACtDA,aAAU,CAAC;QACP,KAAK,EAAE;KACV,EAAE,gBAAgB,CAAC,SAAS,EAAE,YAAY,EAAE,KAAK,CAAC,CAAC,CAAC;IACrDA,aAAU,CAAC;QACP,KAAK,EAAE;KACV,EAAE,gBAAgB,CAAC,SAAS,EAAE,kBAAkB,EAAE,KAAK,CAAC,CAAC,CAAC;IAC3DA,aAAU,CAAC;QACP,KAAK,EAAE;KACV,EAAE,gBAAgB,CAAC,SAAS,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;IAChDA,aAAU,CAAC;QACP,KAAK,EAAE;KACV,EAAE,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;IAC/CA,aAAU,CAAC;QACP,KAAK,EAAE;KACV,EAAE,gBAAgB,CAAC,SAAS,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC;IACjD,OAAO,gBAAgB,CAAC;CAC3B,CAAC,aAAa,CAAC,CAAC;;AClFjB,IAAIF,YAAS,GAAG,CAACC,SAAI,IAAIA,SAAI,CAAC,SAAS,KAAK,CAAC,YAAY;IACrD,IAAI,aAAa,GAAG,UAAU,CAAC,EAAE,CAAC,EAAE;QAChC,aAAa,GAAG,MAAM,CAAC,cAAc;aAChC,EAAE,SAAS,EAAE,EAAE,EAAE,YAAY,KAAK,IAAI,UAAU,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,EAAE,CAAC;YAC5E,UAAU,CAAC,EAAE,CAAC,EAAE,EAAE,KAAK,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/E,OAAO,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;KAC9B,CAAC;IACF,OAAO,UAAU,CAAC,EAAE,CAAC,EAAE;QACnB,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACpB,SAAS,EAAE,GAAG,EAAE,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,EAAE;QACvC,CAAC,CAAC,SAAS,GAAG,CAAC,KAAK,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;KACxF,CAAC;CACL,GAAG,CAAC;AACL,IAAIC,aAAU,GAAG,CAACD,SAAI,IAAIA,SAAI,CAAC,UAAU,KAAK,UAAU,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE;IACnF,IAAI,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,GAAG,IAAI,KAAK,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC,wBAAwB,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC;IAC7H,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,OAAO,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;SAC1H,KAAK,IAAI,CAAC,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;IAClJ,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;CACjE,CAAC;AACF,AACA;;;AAGA,IAAI,mBAAmB,kBAAkB,UAAU,MAAM,EAAE;IACvDD,YAAS,CAAC,mBAAmB,EAAE,MAAM,CAAC,CAAC;IACvC,SAAS,mBAAmB,GAAG;QAC3B,OAAO,MAAM,KAAK,IAAI,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,IAAI,CAAC;KACnE;IACDE,aAAU,CAAC;QACP,QAAQ,CAAC,EAAE,CAAC;KACf,EAAE,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;IAClDA,aAAU,CAAC;QACP,QAAQ,CAAC,EAAE,CAAC;KACf,EAAE,mBAAmB,CAAC,SAAS,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC;IACrDA,aAAU,CAAC;QACP,QAAQ,CAAC,IAAI,CAAC;KACjB,EAAE,mBAAmB,CAAC,SAAS,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC;IACrD,OAAO,mBAAmB,CAAC;CAC9B,CAAC,aAAa,CAAC,CAAC;;ACtCjB,IAAIF,YAAS,GAAG,CAACC,SAAI,IAAIA,SAAI,CAAC,SAAS,KAAK,CAAC,YAAY;IACrD,IAAI,aAAa,GAAG,UAAU,CAAC,EAAE,CAAC,EAAE;QAChC,aAAa,GAAG,MAAM,CAAC,cAAc;aAChC,EAAE,SAAS,EAAE,EAAE,EAAE,YAAY,KAAK,IAAI,UAAU,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,EAAE,CAAC;YAC5E,UAAU,CAAC,EAAE,CAAC,EAAE,EAAE,KAAK,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/E,OAAO,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;KAC9B,CAAC;IACF,OAAO,UAAU,CAAC,EAAE,CAAC,EAAE;QACnB,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACpB,SAAS,EAAE,GAAG,EAAE,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,EAAE;QACvC,CAAC,CAAC,SAAS,GAAG,CAAC,KAAK,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;KACxF,CAAC;CACL,GAAG,CAAC;AACL,IAAIC,aAAU,GAAG,CAACD,SAAI,IAAIA,SAAI,CAAC,UAAU,KAAK,UAAU,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE;IACnF,IAAI,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,GAAG,IAAI,KAAK,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC,wBAAwB,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC;IAC7H,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,OAAO,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;SAC1H,KAAK,IAAI,CAAC,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;IAClJ,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;CACjE,CAAC;AACF,AACA;;;AAGA,IAAI,aAAa,kBAAkB,UAAU,MAAM,EAAE;IACjDD,YAAS,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;IACjC,SAAS,aAAa,GAAG;QACrB,OAAO,MAAM,KAAK,IAAI,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,IAAI,CAAC;KACnE;IACDE,aAAU,CAAC;QACP,QAAQ,CAAC,EAAE,CAAC;KACf,EAAE,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;IAC5CA,aAAU,CAAC;QACP,QAAQ,CAAC,EAAE,CAAC;KACf,EAAE,aAAa,CAAC,SAAS,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;IAC1CA,aAAU,CAAC;QACP,QAAQ,CAAC,EAAE,CAAC;KACf,EAAE,aAAa,CAAC,SAAS,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC;IAC/CA,aAAU,CAAC;QACP,QAAQ,CAAC,EAAE,CAAC;KACf,EAAE,aAAa,CAAC,SAAS,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC;IAC/CA,aAAU,CAAC;QACP,QAAQ,CAAC,KAAK,CAAC;KAClB,EAAE,aAAa,CAAC,SAAS,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC;IACjDA,aAAU,CAAC;QACP,QAAQ,CAAC,KAAK,CAAC;KAClB,EAAE,aAAa,CAAC,SAAS,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC;IAChDA,aAAU,CAAC;QACP,KAAK,EAAE;KACV,EAAE,aAAa,CAAC,SAAS,EAAE,oBAAoB,EAAE,KAAK,CAAC,CAAC,CAAC;IAC1D,OAAO,aAAa,CAAC;CACxB,CAAC,aAAa,CAAC,CAAC;;AClDjB,IAAIF,YAAS,GAAG,CAACC,SAAI,IAAIA,SAAI,CAAC,SAAS,KAAK,CAAC,YAAY;IACrD,IAAI,aAAa,GAAG,UAAU,CAAC,EAAE,CAAC,EAAE;QAChC,aAAa,GAAG,MAAM,CAAC,cAAc;aAChC,EAAE,SAAS,EAAE,EAAE,EAAE,YAAY,KAAK,IAAI,UAAU,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,EAAE,CAAC;YAC5E,UAAU,CAAC,EAAE,CAAC,EAAE,EAAE,KAAK,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/E,OAAO,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;KAC9B,CAAC;IACF,OAAO,UAAU,CAAC,EAAE,CAAC,EAAE;QACnB,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACpB,SAAS,EAAE,GAAG,EAAE,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,EAAE;QACvC,CAAC,CAAC,SAAS,GAAG,CAAC,KAAK,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;KACxF,CAAC;CACL,GAAG,CAAC;AACL,IAAIC,aAAU,GAAG,CAACD,SAAI,IAAIA,SAAI,CAAC,UAAU,KAAK,UAAU,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE;IACnF,IAAI,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,GAAG,IAAI,KAAK,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC,wBAAwB,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC;IAC7H,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,OAAO,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;SAC1H,KAAK,IAAI,CAAC,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;IAClJ,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;CACjE,CAAC;AACF,AAIA;;;AAGA,IAAI,aAAa,kBAAkB,UAAU,MAAM,EAAE;IACjDD,YAAS,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;IACjC,SAAS,aAAa,GAAG;QACrB,OAAO,MAAM,KAAK,IAAI,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,IAAI,CAAC;KACnE;;;;;;;IAOD,aAAa,CAAC,SAAS,CAAC,aAAa,GAAG,UAAU,IAAI,EAAE,YAAY,EAAE;QAClE,MAAM,CAAC,SAAS,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC;KACjE,CAAC;IACFE,aAAU,CAAC;QACP,QAAQ,CAAC,MAAM,CAAC;KACnB,EAAE,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;IAC5CA,aAAU,CAAC;QACP,QAAQ,CAAC,KAAK,CAAC;KAClB,EAAE,aAAa,CAAC,SAAS,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC;IAC/CA,aAAU,CAAC;QACP,QAAQ,CAAC,MAAM,CAAC;KACnB,EAAE,aAAa,CAAC,SAAS,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC;IAC9CA,aAAU,CAAC;QACP,QAAQ,CAAC,MAAM,CAAC;KACnB,EAAE,aAAa,CAAC,SAAS,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;IAC7CA,aAAU,CAAC;QACP,QAAQ,CAAC,IAAI,CAAC;KACjB,EAAE,aAAa,CAAC,SAAS,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC;IAC9CA,aAAU,CAAC;QACP,OAAO,CAAC,EAAE,EAAE,mBAAmB,CAAC;KACnC,EAAE,aAAa,CAAC,SAAS,EAAE,YAAY,EAAE,KAAK,CAAC,CAAC,CAAC;IAClDA,aAAU,CAAC;QACP,UAAU,CAAC,EAAE,EAAE,aAAa,CAAC;KAChC,EAAE,aAAa,CAAC,SAAS,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;IAC7CA,aAAU,CAAC;QACP,QAAQ,CAAC,EAAE,CAAC;KACf,EAAE,aAAa,CAAC,SAAS,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC;IAChDA,aAAU,CAAC;QACP,OAAO,CAAC,EAAE,EAAE,aAAa,CAAC;KAC7B,EAAE,aAAa,CAAC,SAAS,EAAE,uBAAuB,EAAE,KAAK,CAAC,CAAC,CAAC;IAC7D,OAAO,aAAa,CAAC;CACxB,CAAC,aAAa,CAAC,CAAC;;ACpEjB,+BAA+B;;ACA/B;;;;AAIA,AAAO,IAAI,oBAAoB,GAAG,0BAA0B,CAAC;;AAE7D,AAAO,IAAI,oBAAoB,GAAG,qBAAqB,CAAC;;AAExD,AAAO,IAAI,oBAAoB,GAAG,sBAAsB,CAAC;;AAEzD,AAAO,IAAI,aAAa,GAAG,6BAA6B,CAAC;;AAEzD,AAAO,IAAI,YAAY,GAAG,YAAY,CAAC;;AAEvC,AAAO,IAAI,YAAY,GAAG,YAAY,CAAC;;AAEvC,AAAO,IAAI,OAAO,GAAG,OAAO,CAAC;;AAE7B,AAAO,IAAI,YAAY,GAAG,gBAAgB,CAAC;;AAE3C,AAAO,IAAI,cAAc,GAAG,kBAAkB,CAAC;;AAE/C,AAAO,IAAI,oBAAoB,GAAG,wBAAwB,CAAC;;AAE3D,AAAO,IAAI,iBAAiB,GAAG,eAAe,CAAC;;AAE/C,AAAO,IAAI,KAAK,GAAG,GAAG,CAAC;;AAEvB,AAAO,IAAI,oBAAoB,GAAG,eAAe,CAAC;;AAElD,AAAO,IAAI,QAAQ,GAAG,eAAe,CAAC;;AAEtC,AAAO,IAAI,UAAU,GAAG,cAAc,CAAC;;AAEvC,AAAO,IAAI,iBAAiB,GAAG,iBAAiB,CAAC;;AAEjD,AAAO,IAAI,eAAe,GAAG,mBAAmB,CAAC;;AAEjD,AAAO,IAAI,sBAAsB,GAAG,uBAAuB,CAAC;;AAE5D,AAAO,IAAI,oBAAoB,GAAG,qBAAqB,CAAC;;AAExD,AAAO,IAAI,kBAAkB,GAAG,sBAAsB,CAAC;;AAEvD,AAAO,IAAI,wBAAwB,GAAG,yBAAyB,CAAC;;AAEhE,AAAO,IAAI,sBAAsB,GAAG,uBAAuB,CAAC;;AAE5D,AAAO,IAAI,sBAAsB,GAAG,0BAA0B,CAAC;;AAE/D,AAAO,IAAI,eAAe,GAAG,mBAAmB,CAAC;;AAEjD,AAAO,IAAI,WAAW,GAAG,WAAW,CAAC;;AAErC,AAAO,IAAI,eAAe,GAAG,mBAAmB,CAAC;;AAEjD,AAAO,IAAI,YAAY,GAAG,gBAAgB,CAAC;;AAE3C,AAAO,IAAI,8BAA8B,GAAG,2BAA2B,CAAC;;AAExE,AAAO,IAAI,gCAAgC,GAAG,6BAA6B,CAAC;;AAE5E,AAAO,IAAI,mBAAmB,GAAG,uBAAuB,CAAC;;AAEzD,AAAO,IAAI,kCAAkC,GAAG,sCAAsC,CAAC;;AAEvF,AAAO,IAAI,sBAAsB,GAAG,0BAA0B,CAAC;;AAE/D,AAAO,IAAI,uBAAuB,GAAG,iBAAiB,CAAC;;AAEvD,AAAO,IAAI,yBAAyB,GAAG,6BAA6B,CAAC;;AAErE,AAAO,IAAI,oBAAoB,GAAG,wBAAwB,CAAC;;AAE3D,AAAO,IAAI,mBAAmB,GAAG,uBAAuB,CAAC;;AAEzD,AAAO,IAAI,sBAAsB,GAAG,0BAA0B,CAAC;;AAE/D,AAAO,IAAI,qBAAqB,GAAG,yBAAyB,CAAC;;AAE7D,AAAO,IAAI,yBAAyB,GAAG,6BAA6B,CAAC;;AAErE,AAAO,IAAI,eAAe,GAAG,mBAAmB,CAAC;;AAEjD,AAAO,IAAI,wBAAwB,GAAG,wBAAwB,CAAC;;AAE/D,AAAO,IAAI,oBAAoB,GAAG,oBAAoB,CAAC;;AAEvD,AAAO,IAAI,iBAAiB,GAAG,qBAAqB,CAAC;;AAErD,AAAO,IAAI,WAAW,GAAG,eAAe,CAAC;;AAEzC,AAAO,IAAI,UAAU,GAAG,cAAc,CAAC;;AAEvC,AAAO,IAAI,aAAa,GAAG,iBAAiB,CAAC;;AAE7C,AAAO,IAAI,iBAAiB,GAAG,qBAAqB,CAAC;;AAErD,AAAO,IAAI,kBAAkB,GAAG,sBAAsB,CAAC;;AAEvD,AAAO,IAAI,iBAAiB,GAAG,qBAAqB,CAAC;;AAErD,AAAO,IAAI,qBAAqB,GAAG,yBAAyB,CAAC;;AAE7D,AAAO,IAAI,cAAc,GAAG,gBAAgB,CAAC;;AAE7C,AAAO,IAAI,mBAAmB,GAAG,cAAc,CAAC;;AAEhD,AAAO,IAAI,eAAe,GAAG,mBAAmB,CAAC;;AAEjD,AAAO,IAAI,oBAAoB,GAAG,wBAAwB,CAAC;;AAE3D,AAAO,IAAI,cAAc,GAAG,kBAAkB,CAAC;;AAE/C,AAAO,IAAI,qBAAqB,GAAG,yBAAyB,CAAC;;AAE7D,AAAO,IAAI,oBAAoB,GAAG,wBAAwB,CAAC;;AAE3D,AAAO,IAAI,sBAAsB,GAAG,0BAA0B,CAAC;;AAE/D,AAAO,IAAI,mBAAmB,GAAG,uBAAuB,CAAC;;AAEzD,AAAO,IAAI,wBAAwB,GAAG,4BAA4B,CAAC;;AAEnE,AAAO,IAAI,qBAAqB,GAAG,yBAAyB,CAAC;;AAE7D,AAAO,IAAI,sBAAsB,GAAG,0BAA0B,CAAC;;AAE/D,AAAO,IAAI,sBAAsB,GAAG,0BAA0B,CAAC;;AAE/D,AAAO,IAAI,qBAAqB,GAAG,yBAAyB,CAAC;;AAE7D,AAAO,IAAI,wBAAwB,GAAG,4BAA4B,CAAC;;AAEnE,AAAO,IAAI,uBAAuB,GAAG,2BAA2B,CAAC;;AAEjE,AAAO,IAAI,gBAAgB,GAAG,oBAAoB,CAAC;;AAEnD,AAAO,IAAI,qBAAqB,GAAG,yBAAyB,CAAC;;AAE7D,AAAO,IAAI,yBAAyB,GAAG,6BAA6B,CAAC;;AAErE,AAAO,IAAI,6BAA6B,GAAG,4BAA4B,CAAC;;AAExE,AAAO,IAAI,8BAA8B,GAAG,kCAAkC,CAAC;;AAE/E,AAAO,IAAI,0BAA0B,GAAG,aAAa,CAAC;;AAEtD,AAAO,IAAI,MAAM,GAAG,MAAM,CAAC;;AAE3B,AAAO,IAAI,QAAQ,GAAG,QAAQ,CAAC;;AAE/B,AAAO,IAAI,aAAa,GAAG,aAAa,CAAC;;AAEzC,AAAO,IAAI,OAAO,GAAG,OAAO,CAAC;;AAE7B,AAAO,IAAI,kBAAkB,GAAG,iBAAiB,CAAC;;AAElD,AAAO,IAAI,gBAAgB,GAAG,oBAAoB,CAAC;;AAEnD,AAAO,IAAI,iBAAiB,GAAG,mBAAmB,CAAC;;AAEnD,AAAO,IAAI,SAAS,GAAG,SAAS,CAAC;;AAEjC,AAAO,IAAI,WAAW,GAAG,WAAW,CAAC;;AAErC,AAAO,IAAI,UAAU,GAAG,UAAU,CAAC;;AAEnC,AAAO,IAAI,YAAY,GAAG,YAAY,CAAC;;AAEvC,AAAO,IAAI,WAAW,GAAG,WAAW,CAAC;;AAErC,AAAO,IAAI,WAAW,GAAG,WAAW,CAAC;;AAErC,AAAO,IAAI,mBAAmB,GAAG,WAAW,CAAC;;AAE7C,AAAO,IAAI,wBAAwB,GAAG,YAAY,CAAC;;AAEnD,AAAO,IAAI,yBAAyB,GAAG,iBAAiB,CAAC;;AAEzD,AAAO,IAAI,qBAAqB,GAAG,eAAe,CAAC;;AAEnD,AAAO,IAAI,gBAAgB,GAAG,WAAW,CAAC;;AAE1C,AAAO,IAAI,uBAAuB,GAAG,iBAAiB,CAAC;;AAEvD,AAAO,IAAI,4BAA4B,GAAG,mBAAmB,CAAC;;AAE9D,AAAO,IAAI,sBAAsB,GAAG,SAAS,CAAC;;AAE9C,AAAO,IAAI,sBAAsB,GAAG,iBAAiB,CAAC;;AAEtD,AAAO,IAAI,+BAA+B,GAAG,qBAAqB;;AC5LlE;;;AAGA,IAAI,YAAY,kBAAkB,YAAY;IAC1C,SAAS,YAAY,CAAC,MAAM,EAAE;QAC1B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;KACxB;IACD,YAAY,CAAC,SAAS,CAAC,aAAa,GAAG,YAAY;QAC/C,OAAO,cAAc,CAAC;KACzB,CAAC;IACF,YAAY,CAAC,SAAS,CAAC,OAAO,GAAG,YAAY;QACzC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;KACtB,CAAC;;;;;;;;;IASF,YAAY,CAAC,SAAS,CAAC,YAAY,GAAG,UAAU,IAAI,EAAE,OAAO,EAAE;QAC3D,IAAI,KAAK,GAAG,IAAI,CAAC;QACjB,IAAI,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,QAAQ,EAAE;YAChD,EAAE,EAAE,IAAI,CAAC,EAAE;SACd,CAAC,CAAC;QACH,OAAO,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;QAC/B,IAAI,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC;QACtC,IAAI,MAAM,CAAC;YACP,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM;YAC1B,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS;YAChC,iBAAiB,EAAE,IAAI,CAAC,MAAM,CAAC,iBAAiB;YAChD,YAAY,EAAE,IAAI,CAAC,UAAU,KAAK,cAAc,CAAC,KAAK,GAAG,KAAK,GAAG,MAAM;YACvE,OAAO,EAAE,WAAW,CAAC,OAAO;YAC5B,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,QAAQ,EAAE,CAAC,oBAAoB,GAAG,KAAK,GAAG,cAAc,GAAG,KAAK,IAAI,WAAW,CAAC,QAAQ,GAAG,WAAW,CAAC,QAAQ,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE;YAC7H,OAAO,EAAE,IAAI,CAAC,UAAU,KAAK,cAAc,CAAC,KAAK,GAAG,EAAE,GAAG,WAAW,CAAC,OAAO;YAC5E,SAAS,EAAE,WAAW,CAAC,SAAS;YAChC,QAAQ,EAAE,WAAW,CAAC,QAAQ;YAC9B,OAAO,EAAE,WAAW,CAAC,OAAO;SAC/B,EAAE,SAAS,CAAC,CAAC;QACd,SAAS,CAAC,OAAO,GAAG,UAAU,CAAC,EAAE;YAC7B,IAAI,WAAW,CAAC,OAAO,EAAE;gBACrB,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;aACtC;SACJ,CAAC;QACF,SAAS,CAAC,YAAY,CAAC,YAAY,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;KAC7D,CAAC;;;;;;;;;;IAUF,YAAY,CAAC,SAAS,CAAC,iBAAiB,GAAG,UAAU,IAAI,EAAE,OAAO,EAAE,cAAc,EAAE;QAChF,IAAI,KAAK,GAAG,IAAI,CAAC;QACjB,IAAI,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;QACrD,SAAS,CAAC,YAAY,CAAC,cAAc,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC7D,IAAI,SAAS,GAAG,YAAY,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QAChD,SAAS,CAAC,aAAa,CAAC,EAAE,QAAQ,EAAE,SAAS,CAAC,QAAQ,GAAG,KAAK,GAAG,oBAAoB,EAAE,CAAC,CAAC;QACzF,SAAS,CAAC,OAAO,GAAG,UAAU,CAAC,EAAE;YAC7B,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE;gBAC7B,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;aAC9C;YACD,cAAc,CAAC,MAAM,EAAE,CAAC;SAC3B,CAAC;KACL,CAAC;;;;;;;;;IASF,YAAY,CAAC,SAAS,CAAC,oBAAoB,GAAG,UAAU,IAAI,EAAE,OAAO,EAAE;QACnE,IAAI,KAAK,GAAG,IAAI,CAAC;QACjB,IAAI,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;QACrD,IAAI,SAAS,GAAG,YAAY,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QAChD,IAAI,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC/C,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,UAAU,KAAK,EAAE,EAAE,OAAO,KAAK,KAAK,oBAAoB,CAAC,EAAE,CAAC,CAAC;QACxF,SAAS,CAAC,aAAa,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC5D,SAAS,CAAC,OAAO,GAAG,UAAU,CAAC,EAAE;YAC7B,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE;gBAC7B,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;aAC9C;SACJ,CAAC;KACL,CAAC;;;;;;;IAOF,YAAY,CAAC,SAAS,CAAC,KAAK,GAAG,UAAU,SAAS,EAAE;QAChD,IAAI,SAAS,GAAG,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QACvD,IAAI,CAAC,SAAS,EAAE;YACZ,OAAO;SACV;QACD,IAAI,SAAS,GAAG,YAAY,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QAChD,SAAS,CAAC,KAAK,EAAE,CAAC;KACrB,CAAC;;;;;;;;IAQF,YAAY,CAAC,SAAS,CAAC,YAAY,GAAG,UAAU,IAAI,EAAE,EAAE,EAAE;QACtD,IAAI,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAC7C,IAAI,CAAC,QAAQ,EAAE;YACX,OAAO;SACV;QACD,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;QAC1C,IAAI,SAAS,GAAG,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAC;QAC1D,IAAI,CAAC,SAAS,EAAE;YACZ,OAAO;SACV;QACD,IAAI,SAAS,GAAG,YAAY,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QAChD,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;SACvC;QACD,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,IAAI,CAAC,QAAQ,GAAG,CAAC,oBAAoB,GAAG,KAAK,GAAG,cAAc,GAAG,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC;SAClG;QACD,IAAI,IAAI,CAAC,OAAO,EAAE;YACd,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,KAAK,cAAc,CAAC,KAAK,GAAG,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC;YACrF,SAAS,CAAC,YAAY,CAAC,YAAY,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;SACtD;QACD,OAAO,IAAI,CAAC,OAAO,CAAC;QACpB,SAAS,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;KACjC,CAAC;;;;;;;;;IASF,YAAY,CAAC,SAAS,CAAC,gBAAgB,GAAG,UAAU,OAAO,EAAE,IAAI,EAAE;QAC/D,IAAI,SAAS,GAAG,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC9C,SAAS,CAAC,aAAa,CAAC;YACpB,YAAY,EAAE,IAAI,CAAC,UAAU,KAAK,cAAc,CAAC,KAAK,GAAG,KAAK,GAAG,MAAM;YACvE,OAAO,EAAE,IAAI,CAAC,UAAU,KAAK,cAAc,CAAC,KAAK,GAAG,EAAE,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO;SACvF,CAAC,CAAC;KACN,CAAC;IACF,OAAO,YAAY,CAAC;CACvB,EAAE,CAAC;;ACzJJ;;;AAGA,IAAI,cAAc,kBAAkB,YAAY;IAC5C,SAAS,cAAc,CAAC,MAAM,EAAE;QAC5B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;KACxB;IACD,cAAc,CAAC,SAAS,CAAC,aAAa,GAAG,YAAY;QACjD,OAAO,gBAAgB,CAAC;KAC3B,CAAC;IACF,cAAc,CAAC,SAAS,CAAC,OAAO,GAAG,YAAY;QAC3C,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;KACtB,CAAC;;;;;;;;;IASF,cAAc,CAAC,SAAS,CAAC,cAAc,GAAG,UAAU,IAAI,EAAE,OAAO,EAAE;QAC/D,IAAI,KAAK,GAAG,IAAI,CAAC;QACjB,IAAI,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,EAAE;YAC9C,EAAE,EAAE,IAAI,CAAC,EAAE;SACd,CAAC,CAAC;QACH,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;QAC9B,IAAI,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC;QAC7C,IAAI,QAAQ,CAAC;YACT,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM;YAC1B,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS;YAChC,iBAAiB,EAAE,IAAI,CAAC,MAAM,CAAC,iBAAiB;YAChD,OAAO,EAAE,gBAAgB,CAAC,OAAO;YACjC,QAAQ,EAAE,CAAC,cAAc,GAAG,KAAK,IAAI,gBAAgB,CAAC,QAAQ,GAAG,gBAAgB,CAAC,QAAQ,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE;YACxG,KAAK,EAAE,gBAAgB,CAAC,KAAK;YAC7B,aAAa,EAAE,gBAAgB,CAAC,aAAa;YAC7C,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,OAAO,EAAE,gBAAgB,CAAC,OAAO;YACjC,MAAM,EAAE,UAAU,CAAC,EAAE;gBACjB,IAAI,gBAAgB,CAAC,MAAM,EAAE;oBACzB,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;iBAC1C;aACJ;SACJ,EAAE,QAAQ,CAAC,CAAC;KAChB,CAAC;;;;;;;;;;IAUF,cAAc,CAAC,SAAS,CAAC,iBAAiB,GAAG,UAAU,IAAI,EAAE,OAAO,EAAE,cAAc,EAAE;QAClF,IAAI,KAAK,GAAG,IAAI,CAAC;QACjB,IAAI,QAAQ,GAAG,OAAO,CAAC,aAAa,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;QACpD,QAAQ,CAAC,YAAY,CAAC,cAAc,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC5D,IAAI,WAAW,GAAG,YAAY,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QACnD,WAAW,CAAC,QAAQ,GAAG,WAAW,CAAC,QAAQ,GAAG,KAAK,GAAG,oBAAoB,CAAC;QAC3E,WAAW,CAAC,QAAQ,EAAE,CAAC;QACvB,WAAW,CAAC,MAAM,GAAG,UAAU,CAAC,EAAE;YAC9B,IAAI,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE;gBAC9B,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;aAC/C;YACD,cAAc,CAAC,MAAM,EAAE,CAAC;SAC3B,CAAC;KACL,CAAC;;;;;;;;;IASF,cAAc,CAAC,SAAS,CAAC,oBAAoB,GAAG,UAAU,IAAI,EAAE,OAAO,EAAE;QACrE,IAAI,KAAK,GAAG,IAAI,CAAC;QACjB,IAAI,QAAQ,GAAG,OAAO,CAAC,aAAa,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;QACpD,IAAI,WAAW,GAAG,YAAY,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QACnD,IAAI,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACjD,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,UAAU,KAAK,EAAE,EAAE,OAAO,KAAK,KAAK,oBAAoB,CAAC,EAAE,CAAC,CAAC;QACxF,WAAW,CAAC,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC5C,WAAW,CAAC,QAAQ,EAAE,CAAC;QACvB,WAAW,CAAC,MAAM,GAAG,UAAU,CAAC,EAAE;YAC9B,IAAI,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE;gBAC9B,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;aAC/C;SACJ,CAAC;KACL,CAAC;;;;;;;IAOF,cAAc,CAAC,SAAS,CAAC,KAAK,GAAG,UAAU,SAAS,EAAE;QAClD,IAAI,QAAQ,GAAG,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QACtD,IAAI,CAAC,QAAQ,EAAE;YACX,OAAO;SACV;QACD,IAAI,WAAW,GAAG,YAAY,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QACnD,WAAW,CAAC,KAAK,EAAE,CAAC;KACvB,CAAC;;;;;;;;IAQF,cAAc,CAAC,SAAS,CAAC,cAAc,GAAG,UAAU,IAAI,EAAE,EAAE,EAAE;QAC1D,IAAI,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAC7C,IAAI,CAAC,QAAQ,EAAE;YACX,OAAO;SACV;QACD,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC;QAC5C,IAAI,QAAQ,GAAG,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAC;QACzD,IAAI,CAAC,QAAQ,EAAE;YACX,OAAO;SACV;QACD,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,IAAI,CAAC,QAAQ,GAAG,CAAC,cAAc,GAAG,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC;SACnE;QACD,OAAO,IAAI,CAAC,MAAM,CAAC;QACnB,IAAI,WAAW,GAAG,YAAY,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QACnD,WAAW,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;KACnC,CAAC;IACF,OAAO,cAAc,CAAC;CACzB,EAAE,CAAC;;AChIJ;;;AAGA,IAAI,iBAAiB,kBAAkB,YAAY;IAC/C,SAAS,iBAAiB,CAAC,MAAM,EAAE;QAC/B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;KACxB;IACD,iBAAiB,CAAC,SAAS,CAAC,aAAa,GAAG,YAAY;QACpD,OAAO,mBAAmB,CAAC;KAC9B,CAAC;IACF,iBAAiB,CAAC,SAAS,CAAC,OAAO,GAAG,YAAY;QAC9C,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;KACtB,CAAC;;;;;;;;;IASF,iBAAiB,CAAC,SAAS,CAAC,iBAAiB,GAAG,UAAU,IAAI,EAAE,OAAO,EAAE;QACrE,IAAI,KAAK,GAAG,IAAI,CAAC;QACjB,IAAI,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,EAAE;YAC9C,EAAE,EAAE,IAAI,CAAC,EAAE;SACd,CAAC,CAAC;QACH,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;QAC9B,IAAI,mBAAmB,GAAG,IAAI,CAAC,mBAAmB,CAAC;QACnD,IAAI,WAAW,GAAG,IAAI,WAAW,CAAC;YAC9B,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM;YAC1B,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS;YAChC,iBAAiB,EAAE,IAAI,CAAC,MAAM,CAAC,iBAAiB;YAChD,OAAO,EAAE,mBAAmB,CAAC,OAAO;YACpC,QAAQ,EAAE,CAAC,cAAc,GAAG,KAAK,IAAI,mBAAmB,CAAC,QAAQ,GAAG,mBAAmB,CAAC,QAAQ,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE;YAC9G,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,aAAa,EAAE,mBAAmB,CAAC,aAAa;YAChD,IAAI,EAAE,mBAAmB,CAAC,IAAI;YAC9B,YAAY,EAAE,mBAAmB,CAAC,YAAY;YAC9C,OAAO,EAAE,mBAAmB,CAAC,OAAO;YACpC,YAAY,EAAE,mBAAmB,CAAC,YAAY;YAC9C,WAAW,EAAE,mBAAmB,CAAC,WAAW;YAC5C,KAAK,EAAE,mBAAmB,CAAC,KAAK;YAChC,WAAW,EAAE,YAAY;gBACrB,WAAW,CAAC,OAAO,CAAC,aAAa,CAAC,SAAS,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;gBACtE,IAAI,mBAAmB,CAAC,WAAW,EAAE;oBACjC,mBAAmB,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;iBAC/C;aACJ;YACD,UAAU,EAAE,mBAAmB,CAAC,UAAU;YAC1C,gBAAgB,EAAE,mBAAmB,CAAC,gBAAgB;YACtD,OAAO,EAAE,mBAAmB,CAAC,OAAO;YACpC,MAAM,EAAE,mBAAmB,CAAC,MAAM;YAClC,IAAI,EAAE,YAAY;gBACd,WAAW,CAAC,OAAO,CAAC,aAAa,CAAC,SAAS,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;gBACnE,IAAI,mBAAmB,CAAC,IAAI,EAAE;oBAC1B,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;iBACxC;aACJ;YACD,MAAM,EAAE,mBAAmB,CAAC,MAAM;SACrC,EAAE,QAAQ,CAAC,CAAC;QACb,IAAI,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC,aAAa,CAAC;QAChD,YAAY,CAAC,GAAG,CAAC,OAAO,EAAE,YAAY,EAAE,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;QACjG,YAAY,CAAC,GAAG,CAAC,OAAO,EAAE,YAAY,EAAE,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,IAAI,CAAC,CAAC;KACrG,CAAC;IACF,iBAAiB,CAAC,SAAS,CAAC,kBAAkB,GAAG,UAAU,OAAO,EAAE,KAAK,EAAE;QACvE,IAAI,KAAK,EAAE;YACP,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;SACvC;aACI;YACD,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;SAC1C;KACJ,CAAC;;;;;;;;;;IAUF,iBAAiB,CAAC,SAAS,CAAC,iBAAiB,GAAG,UAAU,IAAI,EAAE,OAAO,EAAE,cAAc,EAAE;QACrF,IAAI,KAAK,GAAG,IAAI,CAAC;QACjB,IAAI,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;QAC1D,cAAc,CAAC,YAAY,CAAC,cAAc,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QAClE,IAAI,cAAc,GAAG,YAAY,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC;QAC/D,cAAc,CAAC,aAAa,CAAC,EAAE,QAAQ,EAAE,cAAc,CAAC,QAAQ,GAAG,KAAK,GAAG,oBAAoB,EAAE,CAAC,CAAC;;QAEnG,IAAI,QAAQ,GAAG,cAAc,CAAC,UAAU,CAAC,CAAC;QAC1C,IAAI,MAAM,CAAC;QACX,cAAc,CAAC,WAAW,GAAG,UAAU,CAAC,EAAE;YACtC,MAAM,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC;YACzC,cAAc,CAAC,OAAO,CAAC,aAAa,CAAC,SAAS,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;YACzE,IAAI,IAAI,CAAC,mBAAmB,CAAC,WAAW,EAAE;gBACtC,IAAI,CAAC,mBAAmB,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aACpD;SACJ,CAAC;QACF,QAAQ,CAAC,KAAK,GAAG,YAAY;YACzB,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,8BAA8B,CAAC,EAAE;gBAC3D,cAAc,CAAC,MAAM,EAAE,CAAC;aAC3B;SACJ,CAAC;KACL,CAAC;;;;;;;;;IASF,iBAAiB,CAAC,SAAS,CAAC,oBAAoB,GAAG,UAAU,IAAI,EAAE,OAAO,EAAE;QACxE,IAAI,KAAK,GAAG,IAAI,CAAC;QACjB,IAAI,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;QAC1D,IAAI,cAAc,GAAG,YAAY,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC;QAC/D,IAAI,QAAQ,GAAG,cAAc,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACpD,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,UAAU,KAAK,EAAE,EAAE,OAAO,KAAK,KAAK,oBAAoB,CAAC,EAAE,CAAC,CAAC;QACxF,cAAc,CAAC,aAAa,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACjE,IAAI,QAAQ,GAAG,cAAc,CAAC,UAAU,CAAC,CAAC;;QAE1C,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC;QACtB,cAAc,CAAC,WAAW,GAAG,YAAY;YACrC,cAAc,CAAC,OAAO,CAAC,aAAa,CAAC,SAAS,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;YACzE,IAAI,IAAI,CAAC,mBAAmB,CAAC,WAAW,EAAE;gBACtC,IAAI,CAAC,mBAAmB,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aACpD;SACJ,CAAC;KACL,CAAC;IACF,iBAAiB,CAAC,SAAS,CAAC,iBAAiB,GAAG,UAAU,SAAS,EAAE;QACjE,IAAI,QAAQ,GAAG,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QACtD,OAAO,QAAQ,GAAG,YAAY,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,IAAI,CAAC;KAChE,CAAC;;;;;;;;;IASF,iBAAiB,CAAC,SAAS,CAAC,QAAQ,GAAG,UAAU,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE;QACrE,IAAI,cAAc,GAAG,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;QACvD,OAAO,cAAc,GAAG,cAAc,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;KACrE,CAAC;;;;;;;IAOF,iBAAiB,CAAC,SAAS,CAAC,MAAM,GAAG,UAAU,SAAS,EAAE;QACtD,IAAI,cAAc,GAAG,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;QACvD,IAAI,CAAC,cAAc,EAAE;YACjB,OAAO;SACV;QACD,cAAc,CAAC,MAAM,EAAE,CAAC;KAC3B,CAAC;;;;;;;;IAQF,iBAAiB,CAAC,SAAS,CAAC,iBAAiB,GAAG,UAAU,IAAI,EAAE,EAAE,EAAE;QAChE,IAAI,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAC7C,IAAI,CAAC,QAAQ,EAAE;YACX,OAAO;SACV;QACD,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC;QAC5C,IAAI,QAAQ,GAAG,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAC;QACzD,IAAI,CAAC,QAAQ,EAAE;YACX,OAAO;SACV;QACD,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,IAAI,CAAC,QAAQ,GAAG,CAAC,cAAc,GAAG,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC;SACnE;QACD,OAAO,IAAI,CAAC,WAAW,CAAC;QACxB,OAAO,IAAI,CAAC,IAAI,CAAC;QACjB,IAAI,cAAc,GAAG,YAAY,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;QACzD,cAAc,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;KACtC,CAAC;;;;;;IAMF,iBAAiB,CAAC,SAAS,CAAC,uBAAuB,GAAG,UAAU,OAAO,EAAE;QACrE,IAAI,cAAc,GAAG,YAAY,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;QACxD,IAAI,OAAO,GAAG,cAAc,CAAC,OAAO,CAAC,aAAa,CAAC;QACnD,YAAY,CAAC,MAAM,CAAC,OAAO,EAAE,YAAY,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;QACpE,YAAY,CAAC,MAAM,CAAC,OAAO,EAAE,YAAY,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;KACvE,CAAC;IACF,OAAO,iBAAiB,CAAC;CAC5B,EAAE,CAAC;;ACnMJ;;;AAGA,IAAI,cAAc,kBAAkB,YAAY;IAC5C,SAAS,cAAc,CAAC,MAAM,EAAE;QAC5B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;KACxB;IACD,cAAc,CAAC,SAAS,CAAC,aAAa,GAAG,YAAY;QACjD,OAAO,gBAAgB,CAAC;KAC3B,CAAC;IACF,cAAc,CAAC,SAAS,CAAC,OAAO,GAAG,YAAY;QAC3C,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;KACtB,CAAC;;;;;;;;;IASF,cAAc,CAAC,SAAS,CAAC,cAAc,GAAG,UAAU,IAAI,EAAE,OAAO,EAAE;QAC/D,IAAI,KAAK,GAAG,IAAI,CAAC;QACjB,IAAI,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,EAAE;YAC9C,EAAE,EAAE,IAAI,CAAC,EAAE;SACd,CAAC,CAAC;QACH,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;QAC9B,IAAI,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC;QAC7C,IAAI,QAAQ,CAAC;YACT,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM;YAC1B,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS;YAChC,iBAAiB,EAAE,IAAI,CAAC,MAAM,CAAC,iBAAiB;YAChD,WAAW,EAAE,KAAK;YAClB,cAAc,EAAE,OAAO;YACvB,YAAY,EAAE,IAAI;YAClB,UAAU,EAAE,IAAI;YAChB,cAAc,EAAE,gBAAgB,CAAC,cAAc;YAC/C,QAAQ,EAAE,gBAAgB,CAAC,QAAQ;YACnC,QAAQ,EAAE,CAAC,cAAc,GAAG,KAAK,IAAI,gBAAgB,CAAC,QAAQ,GAAG,gBAAgB,CAAC,QAAQ,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE;YACxG,UAAU,EAAE,gBAAgB,CAAC,UAAU;YACvC,OAAO,EAAE,CAAC,IAAI,CAAC,QAAQ;YACvB,MAAM,EAAE,gBAAgB,CAAC,MAAM;YAC/B,UAAU,EAAE,gBAAgB,CAAC,UAAU;YACvC,cAAc,EAAE,gBAAgB,CAAC,cAAc;YAC/C,aAAa,EAAE,gBAAgB,CAAC,aAAa;YAC7C,cAAc,EAAE,gBAAgB,CAAC,cAAc;YAC/C,KAAK,EAAE,gBAAgB,CAAC,KAAK;YAC7B,YAAY,EAAE,gBAAgB,CAAC,YAAY;YAC3C,iBAAiB,EAAE,gBAAgB,CAAC,iBAAiB;YACrD,WAAW,EAAE,gBAAgB,CAAC,WAAW;YACzC,WAAW,EAAE,gBAAgB,CAAC,WAAW;YACzC,UAAU,EAAE,gBAAgB,CAAC,UAAU;YACvC,eAAe,EAAE,gBAAgB,CAAC,eAAe;YACjD,SAAS,EAAE,gBAAgB,CAAC,SAAS;YACrC,IAAI,EAAE,gBAAgB,CAAC,IAAI;YAC3B,KAAK,EAAE,gBAAgB,CAAC,KAAK;YAC7B,KAAK,EAAE,gBAAgB,CAAC,KAAK;YAC7B,UAAU,EAAE,gBAAgB,CAAC,UAAU;YACvC,IAAI,EAAE,gBAAgB,CAAC,IAAI;YAC3B,KAAK,EAAE,UAAU,CAAC,EAAE;gBAChB,IAAI,gBAAgB,CAAC,KAAK,EAAE;oBACxB,gBAAgB,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;iBACzC;aACJ;YACD,SAAS,EAAE,gBAAgB,CAAC,SAAS;YACrC,MAAM,EAAE,gBAAgB,CAAC,MAAM;YAC/B,MAAM,EAAE,gBAAgB,CAAC,MAAM;YAC/B,OAAO,EAAE,gBAAgB,CAAC,OAAO;SACpC,EAAE,QAAQ,CAAC,CAAC;KAChB,CAAC;;;;;;;;;;IAUF,cAAc,CAAC,SAAS,CAAC,iBAAiB,GAAG,UAAU,IAAI,EAAE,OAAO,EAAE,cAAc,EAAE;QAClF,IAAI,KAAK,GAAG,IAAI,CAAC;QACjB,IAAI,QAAQ,GAAG,OAAO,CAAC,aAAa,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;QACpD,QAAQ,CAAC,YAAY,CAAC,cAAc,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC5D,IAAI,WAAW,GAAG,YAAY,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QACnD,WAAW,CAAC,aAAa,CAAC,EAAE,QAAQ,EAAE,WAAW,CAAC,QAAQ,GAAG,KAAK,GAAG,oBAAoB,EAAE,CAAC,CAAC;QAC7F,WAAW,CAAC,KAAK,GAAG,UAAU,CAAC,EAAE;YAC7B,IAAI,MAAM,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC;YAC7C,IAAI,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE;gBAC7B,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;aAC9C;YACD,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,8BAA8B,CAAC,EAAE;gBAC3D,cAAc,CAAC,MAAM,EAAE,CAAC;aAC3B;SACJ,CAAC;KACL,CAAC;;;;;;;;;IASF,cAAc,CAAC,SAAS,CAAC,oBAAoB,GAAG,UAAU,IAAI,EAAE,OAAO,EAAE;QACrE,IAAI,KAAK,GAAG,IAAI,CAAC;QACjB,IAAI,QAAQ,GAAG,OAAO,CAAC,aAAa,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;QACpD,IAAI,WAAW,GAAG,YAAY,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QACnD,IAAI,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACjD,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,UAAU,KAAK,EAAE,EAAE,OAAO,KAAK,KAAK,oBAAoB,CAAC,EAAE,CAAC,CAAC;QACxF,WAAW,CAAC,aAAa,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC9D,WAAW,CAAC,KAAK,GAAG,UAAU,CAAC,EAAE;YAC7B,IAAI,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE;gBAC7B,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;aAC9C;SACJ,CAAC;KACL,CAAC;IACF,cAAc,CAAC,SAAS,CAAC,cAAc,GAAG,UAAU,SAAS,EAAE;QAC3D,IAAI,QAAQ,GAAG,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QACtD,OAAO,QAAQ,GAAG,YAAY,CAAC,QAAQ,EAAE,QAAQ,CAAC,GAAG,IAAI,CAAC;KAC7D,CAAC;;;;;;;;;;IAUF,cAAc,CAAC,SAAS,CAAC,MAAM,GAAG,UAAU,SAAS,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE;QAC9E,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,UAAU,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;KACpE,CAAC;;;;;;;IAOF,cAAc,CAAC,SAAS,CAAC,SAAS,GAAG,UAAU,SAAS,EAAE;QACtD,IAAI,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;QACjD,IAAI,CAAC,WAAW,EAAE;YACd,OAAO;SACV;QACD,WAAW,CAAC,SAAS,EAAE,CAAC;KAC3B,CAAC;;;;;;;IAOF,cAAc,CAAC,SAAS,CAAC,SAAS,GAAG,UAAU,SAAS,EAAE;QACtD,IAAI,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;QACjD,IAAI,CAAC,WAAW,EAAE;YACd,OAAO;SACV;QACD,WAAW,CAAC,SAAS,EAAE,CAAC;KAC3B,CAAC;;;;;;;;IAQF,cAAc,CAAC,SAAS,CAAC,cAAc,GAAG,UAAU,IAAI,EAAE,EAAE,EAAE;QAC1D,IAAI,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAC7C,IAAI,CAAC,QAAQ,EAAE;YACX,OAAO;SACV;QACD,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC;QAC5C,IAAI,QAAQ,GAAG,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAC;QACzD,IAAI,CAAC,QAAQ,EAAE;YACX,OAAO;SACV;QACD,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,IAAI,CAAC,QAAQ,GAAG,CAAC,cAAc,GAAG,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC;SACnE;QACD,OAAO,IAAI,CAAC,KAAK,CAAC;QAClB,IAAI,WAAW,GAAG,YAAY,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QACnD,WAAW,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;KACnC,CAAC;IACF,OAAO,cAAc,CAAC;CACzB,EAAE,CAAC;;ACrLJ;;;AAGA,IAAI,cAAc,kBAAkB,YAAY;IAC5C,SAAS,cAAc,CAAC,MAAM,EAAE;QAC5B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;KACxB;IACD,cAAc,CAAC,SAAS,CAAC,aAAa,GAAG,YAAY;QACjD,OAAO,gBAAgB,CAAC;KAC3B,CAAC;IACF,cAAc,CAAC,SAAS,CAAC,OAAO,GAAG,YAAY;QAC3C,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;KACtB,CAAC;;;;;;;;;IASF,cAAc,CAAC,SAAS,CAAC,cAAc,GAAG,UAAU,IAAI,EAAE,OAAO,EAAE;QAC/D,IAAI,KAAK,GAAG,IAAI,CAAC;QACjB,IAAI,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,QAAQ,EAAE;YAChD,EAAE,EAAE,IAAI,CAAC,EAAE;SACd,CAAC,CAAC;QACH,OAAO,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;QAC/B,IAAI,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC;QAC7C,IAAI,QAAQ,GAAG,CAAC,oBAAoB,GAAG,KAAK,GAAG,cAAc,GAAG,KAAK,IAAI,gBAAgB,CAAC,QAAQ;YAC9F,gBAAgB,CAAC,QAAQ,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC;QAC5C,IAAI,cAAc,CAAC;YACf,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM;YAC1B,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS;YAChC,iBAAiB,EAAE,IAAI,CAAC,MAAM,CAAC,iBAAiB;YAChD,YAAY,EAAE,IAAI,CAAC,UAAU,KAAK,cAAc,CAAC,KAAK,GAAG,KAAK,GAAG,MAAM;YACvE,iBAAiB,EAAE,gBAAgB,CAAC,iBAAiB;YACrD,OAAO,EAAE,IAAI,CAAC,UAAU,KAAK,cAAc,CAAC,KAAK,GAAG,EAAE,GAAG,gBAAgB,CAAC,OAAO;YACjF,QAAQ,EAAE,QAAQ,IAAI,CAAC,IAAI,CAAC,UAAU,KAAK,cAAc,CAAC,KAAK,KAAK,KAAK,GAAG,YAAY,IAAI,EAAE,CAAC;YAC/F,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,OAAO,EAAE,gBAAgB,CAAC,OAAO;YACjC,KAAK,EAAE,gBAAgB,CAAC,KAAK;YAC7B,MAAM,EAAE,gBAAgB,CAAC,MAAM;YAC/B,kBAAkB,EAAE,gBAAgB,CAAC,kBAAkB;YACvD,WAAW,EAAE,UAAU,CAAC,EAAE;gBACtB,IAAI,gBAAgB,CAAC,WAAW,EAAE;oBAC9B,gBAAgB,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;iBAC/C;aACJ;YACD,gBAAgB,EAAE,gBAAgB,CAAC,gBAAgB;YACnD,UAAU,EAAE,gBAAgB,CAAC,UAAU;YACvC,KAAK,EAAE,UAAU,CAAC,EAAE;gBAChB,IAAI,gBAAgB,CAAC,KAAK,EAAE;oBACxB,gBAAgB,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;iBACzC;aACJ;YACD,OAAO,EAAE,gBAAgB,CAAC,OAAO;YACjC,IAAI,EAAE,gBAAgB,CAAC,IAAI;YAC3B,MAAM,EAAE,gBAAgB,CAAC,MAAM;SAClC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;KAC1B,CAAC;;;;;;;;;;IAUF,cAAc,CAAC,SAAS,CAAC,iBAAiB,GAAG,UAAU,IAAI,EAAE,OAAO,EAAE,cAAc,EAAE;QAClF,IAAI,KAAK,GAAG,IAAI,CAAC;QACjB,IAAI,eAAe,GAAG,OAAO,CAAC,aAAa,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;QAC3D,eAAe,CAAC,YAAY,CAAC,cAAc,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QACnE,IAAI,QAAQ,GAAG,YAAY,CAAC,eAAe,EAAE,cAAc,CAAC,CAAC;QAC7D,QAAQ,CAAC,QAAQ,GAAG,QAAQ,CAAC,QAAQ,GAAG,KAAK,GAAG,oBAAoB,CAAC;QACrE,QAAQ,CAAC,QAAQ,EAAE,CAAC;QACpB,IAAI,MAAM,CAAC;QACX,QAAQ,CAAC,WAAW,GAAG,UAAU,CAAC,EAAE;YAChC,IAAI,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE;gBACnC,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;aACpD;YACD,MAAM,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC;SAC5C,CAAC;QACF,QAAQ,CAAC,KAAK,GAAG,UAAU,CAAC,EAAE;YAC1B,IAAI,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE;gBAC7B,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;aAC9C;YACD,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,8BAA8B,CAAC,EAAE;gBAC3D,cAAc,CAAC,MAAM,EAAE,CAAC;aAC3B;SACJ,CAAC;KACL,CAAC;;;;;;;;;IASF,cAAc,CAAC,SAAS,CAAC,oBAAoB,GAAG,UAAU,IAAI,EAAE,OAAO,EAAE;QACrE,IAAI,KAAK,GAAG,IAAI,CAAC;QACjB,IAAI,eAAe,GAAG,OAAO,CAAC,aAAa,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;QAC3D,IAAI,QAAQ,GAAG,YAAY,CAAC,eAAe,EAAE,cAAc,CAAC,CAAC;QAC7D,IAAI,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC9C,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,UAAU,KAAK,EAAE,EAAE,OAAO,KAAK,KAAK,oBAAoB,CAAC,EAAE,CAAC,CAAC;QACxF,QAAQ,CAAC,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACzC,QAAQ,CAAC,QAAQ,EAAE,CAAC;QACpB,QAAQ,CAAC,KAAK,GAAG,UAAU,CAAC,EAAE;YAC1B,IAAI,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE;gBAC7B,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;aAC9C;SACJ,CAAC;QACF,QAAQ,CAAC,WAAW,GAAG,UAAU,CAAC,EAAE;YAChC,IAAI,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE;gBACnC,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;aACpD;SACJ,CAAC;KACL,CAAC;;;;;;;;;;;;IAYF,cAAc,CAAC,SAAS,CAAC,sBAAsB,GAAG,UAAU,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,SAAS,EAAE;QAC7G,IAAI,KAAK,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,QAAQ,EAAE;YAChD,EAAE,EAAE,EAAE,GAAG,WAAW,GAAG,WAAW;SACrC,CAAC,CAAC;QACH,QAAQ,CAAC,YAAY,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;QACvC,WAAW,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;QACnC,IAAI,QAAQ,GAAG,IAAI,cAAc,CAAC;YAC9B,OAAO,EAAE,OAAO;YAChB,MAAM,EAAE,QAAQ;YAChB,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM;YAC1B,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS;YAChC,iBAAiB,EAAE,IAAI,CAAC,MAAM,CAAC,iBAAiB;YAChD,QAAQ,EAAE,YAAY,GAAG,KAAK,GAAG,yBAAyB;YAC1D,YAAY,EAAE,KAAK;YACnB,OAAO,EAAE,IAAI;YACb,WAAW,EAAE,UAAU,IAAI,EAAE;gBACzB,IAAI,CAAC,MAAM,GAAG,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,GAAG,oBAAoB,CAAC,CAAC,CAAC;aAC1G;SACJ,EAAE,SAAS,CAAC,CAAC;QACd,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QACrC,SAAS,CAAC,OAAO,GAAG,SAAS,CAAC,SAAS,GAAG,YAAY,EAAE,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC,EAAE,CAAC;;QAE/E,QAAQ,CAAC,SAAS,GAAG,UAAU,CAAC,EAAE,EAAE,KAAK,CAAC,gBAAgB,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC;QAClF,OAAO,QAAQ,CAAC;KACnB,CAAC;IACF,cAAc,CAAC,SAAS,CAAC,gBAAgB,GAAG,UAAU,CAAC,EAAE,MAAM,EAAE;QAC7D,IAAI,KAAK,GAAG,MAAM,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;QAClD,IAAI,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC;QAC9D,IAAI,WAAW,CAAC;QAChB,IAAI,gBAAgB,EAAE;YAClB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,gBAAgB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBAC9C,IAAI,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAAE;oBACxE,WAAW,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;iBAC9D;aACJ;SACJ;QACD,IAAI,WAAW,EAAE;YACb,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBACnC,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE;oBACpE,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAAE;wBAC7D,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;qBACtB;iBACJ;aACJ;SACJ;QACD,IAAI,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,wBAAwB,CAAC;YACjG,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,qBAAqB,CAAC,EAAE;YACzG,IAAI,CAAC,CAAC,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,GAAG,KAAK,KAAK,CAAC,EAAE;gBAC5D,IAAI,CAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;aACpD;YACD,IAAI,CAAC,CAAC,GAAG,KAAK,WAAW,KAAK,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,GAAG,KAAK,KAAK,CAAC,EAAE;gBAC1D,IAAI,CAAC,gBAAgB,CAAC,CAAC,EAAE,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;aACnD;SACJ;KACJ,CAAC;IACF,cAAc,CAAC,SAAS,CAAC,gBAAgB,GAAG,UAAU,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE;QACvE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAC,EAAE;YACvD,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;SACjD;QACD,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAC,EAAE;YACrE,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;SAC/D;QACD,IAAI,SAAS,EAAE;YACX,IAAI,IAAI,CAAC,SAAS,KAAK,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,qBAAqB,CAAC,EAAE;gBAClH,IAAI,CAAC,eAAe,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;aACxC;YACD,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,oBAAoB,CAAC;gBAChG,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,0BAA0B,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,qBAAqB,CAAC;mBAC5G,IAAI,CAAC,SAAS,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE;gBACtE,IAAI,CAAC,SAAS,EAAE,CAAC;gBACjB,IAAI,CAAC,eAAe,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;aACxC;YACD,IAAI,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,oBAAoB,CAAC,EAAE;gBACnD,IAAI,YAAY,GAAG,KAAK,CAAC;gBACzB,YAAY,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;gBAChD,IAAI,CAAC,YAAY,EAAE;oBACf,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;oBACnB,IAAI,CAAC,eAAe,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;iBACxC;aACJ;YACD,IAAI,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,wBAAwB,CAAC,EAAE;gBACvD,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;gBACnB,IAAI,CAAC,eAAe,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;aACxC;SACJ;aACI;YACD,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,IAAI,CAAC,SAAS,KAAK,CAAC,EAAE;gBACpE,IAAI,CAAC,SAAS,EAAE,CAAC;gBACjB,IAAI,CAAC,eAAe,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;aACzC;YACD,IAAI,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,qBAAqB,CAAC,EAAE;gBACpD,IAAI,YAAY,GAAG,KAAK,CAAC;gBACzB,YAAY,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;gBAChD,IAAI,CAAC,YAAY,EAAE;oBACf,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;oBAClC,IAAI,CAAC,eAAe,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;iBACzC;aACJ;YACD,IAAI,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,wBAAwB,CAAC,EAAE;gBACvD,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;gBAClC,IAAI,CAAC,eAAe,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;aACzC;SACJ;QACD,IAAI,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,KAAK,CAAC,EAAE;YAChE,IAAI,SAAS,EAAE;gBACX,IAAI,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;oBACnC,IAAI,CAAC,SAAS,EAAE,CAAC;iBACpB;aACJ;iBACI;gBACD,IAAI,IAAI,CAAC,SAAS,GAAG,CAAC,EAAE;oBACpB,IAAI,CAAC,SAAS,EAAE,CAAC;iBACpB;aACJ;SACJ;KACJ,CAAC;IACF,cAAc,CAAC,SAAS,CAAC,iBAAiB,GAAG,UAAU,CAAC,EAAE,KAAK,EAAE;QAC7D,IAAI,cAAc,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,2BAA2B,CAAC,CAAC;QACzG,IAAI,eAAe,CAAC;QACpB,IAAI,cAAc,EAAE;YAChB,eAAe,GAAG,cAAc,CAAC,aAAa,CAAC,yBAAyB,CAAC,CAAC;SAC7E;QACD,IAAI,eAAe,EAAE;YACjB,IAAI,CAAC,CAAC,GAAG,KAAK,KAAK,EAAE;gBACjB,CAAC,CAAC,cAAc,EAAE,CAAC;aACtB;YACD,cAAc,CAAC,aAAa,CAAC,yBAAyB,CAAC,CAAC,KAAK,EAAE,CAAC;YAChE,OAAO,IAAI,CAAC;SACf;aACI;YACD,OAAO,KAAK,CAAC;SAChB;KACJ,CAAC;IACF,cAAc,CAAC,SAAS,CAAC,eAAe,GAAG,UAAU,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE;QACtE,IAAI,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;QACjE,OAAO,UAAU,IAAI,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE;YAC9D,IAAI,SAAS,EAAE;gBACX,IAAI,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;oBACnC,IAAI,CAAC,SAAS,EAAE,CAAC;iBACpB;qBACI;oBACD,IAAI,YAAY,GAAG,KAAK,CAAC;oBACzB,YAAY,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;oBAChD,IAAI,YAAY,EAAE;wBACd,MAAM;qBACT;oBACD,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;iBACtB;aACJ;iBACI;gBACD,IAAI,IAAI,CAAC,SAAS,GAAG,CAAC,EAAE;oBACpB,IAAI,CAAC,SAAS,EAAE,CAAC;iBACpB;qBACI;oBACD,IAAI,YAAY,GAAG,KAAK,CAAC;oBACzB,YAAY,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;oBAChD,IAAI,YAAY,EAAE;wBACd,MAAM;qBACT;oBACD,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;iBACrC;aACJ;YACD,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;SAChE;QACD,IAAI,CAAC,CAAC,GAAG,KAAK,KAAK,EAAE;YACjB,CAAC,CAAC,cAAc,EAAE,CAAC;SACtB;QACD,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;KAC1D,CAAC;;;;;;;;IAQF,cAAc,CAAC,SAAS,CAAC,sBAAsB,GAAG,UAAU,eAAe,EAAE;QACzE,IAAI,QAAQ,GAAG,YAAY,CAAC,eAAe,EAAE,cAAc,CAAC,CAAC;QAC7D,IAAI,OAAO,GAAG,YAAY,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACrD,OAAO,CAAC,OAAO,EAAE,CAAC;QAClB,eAAe,CAAC,aAAa,CAAC,aAAa,CAAC,YAAY,CAAC,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC,aAAa,CAAC,CAAC;QACzG,QAAQ,CAAC,OAAO,EAAE,CAAC;QACnB,MAAM,CAAC,eAAe,CAAC,CAAC;KAC3B,CAAC;;;;;;;;;IASF,cAAc,CAAC,SAAS,CAAC,iBAAiB,GAAG,UAAU,eAAe,EAAE,EAAE,EAAE;QACxE,IAAI,QAAQ,GAAG,YAAY,CAAC,eAAe,EAAE,cAAc,CAAC,CAAC;QAC7D,IAAI,aAAa,GAAG,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC;QAC9C,OAAO,aAAa,CAAC,aAAa,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC;KAChD,CAAC;;;;;;;;;IASF,cAAc,CAAC,SAAS,CAAC,wBAAwB,GAAG,UAAU,QAAQ,EAAE,UAAU,EAAE;QAChF,IAAI,eAAe,GAAG,UAAU,CAAC,aAAa,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,EAAE,GAAG,WAAW,GAAG,WAAW,CAAC,CAAC;QACrJ,IAAI,QAAQ,GAAG,YAAY,CAAC,eAAe,EAAE,cAAc,CAAC,CAAC;QAC7D,OAAO,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC;KACpC,CAAC;IACF,cAAc,CAAC,SAAS,CAAC,cAAc,GAAG,UAAU,SAAS,EAAE;QAC3D,IAAI,WAAW,GAAG,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QACzD,OAAO,WAAW,GAAG,YAAY,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,IAAI,CAAC;KACzE,CAAC;;;;;;;;;;IAUF,cAAc,CAAC,SAAS,CAAC,QAAQ,GAAG,UAAU,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE;QAClE,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;KACxD,CAAC;;;;;;;;;IASF,cAAc,CAAC,SAAS,CAAC,WAAW,GAAG,UAAU,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE;QAC3E,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,WAAW,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;KACjE,CAAC;;;;;;;IAOF,cAAc,CAAC,SAAS,CAAC,MAAM,GAAG,UAAU,SAAS,EAAE;QACnD,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,MAAM,EAAE,CAAC;KAC3C,CAAC;;;;;;;;IAQF,cAAc,CAAC,SAAS,CAAC,cAAc,GAAG,UAAU,IAAI,EAAE,EAAE,EAAE;QAC1D,IAAI,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAC7C,IAAI,CAAC,QAAQ,EAAE;YACX,OAAO;SACV;QACD,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC;QAC5C,IAAI,MAAM,GAAG,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAC;QACvD,IAAI,CAAC,MAAM,EAAE;YACT,OAAO;SACV;QACD,IAAI,OAAO,GAAG,YAAY,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;QACnD,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,IAAI,CAAC,QAAQ,GAAG,CAAC,cAAc,GAAG,KAAK,GAAG,oBAAoB,GAAG,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC;YAC/F,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,KAAK,cAAc,CAAC,KAAK;gBAC7D,CAAC,YAAY,GAAG,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC;YAClE,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;SACpC;QACD,OAAO,IAAI,CAAC,KAAK,CAAC;QAClB,OAAO,IAAI,CAAC,WAAW,CAAC;QACxB,IAAI,IAAI,CAAC,OAAO,EAAE;YACd,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,KAAK,cAAc,CAAC,KAAK,GAAG,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC;SACxF;QACD,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;KAC/B,CAAC;;;;;;;;;IASF,cAAc,CAAC,SAAS,CAAC,kBAAkB,GAAG,UAAU,OAAO,EAAE,IAAI,EAAE;QACnE,IAAI,OAAO,GAAG,YAAY,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;QACpD,IAAI,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC7C,IAAI,IAAI,CAAC,UAAU,KAAK,cAAc,CAAC,KAAK,EAAE;YAC1C,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;SAC/B;aACI;YACD,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,UAAU,KAAK,EAAE,EAAE,OAAO,KAAK,KAAK,YAAY,CAAC,EAAE,CAAC,CAAC;SACnF;QACD,OAAO,CAAC,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACxC,OAAO,CAAC,aAAa,CAAC,EAAE,YAAY,EAAE,IAAI,CAAC,UAAU,KAAK,cAAc,CAAC,KAAK,GAAG,KAAK,GAAG,MAAM,EAAE,CAAC,CAAC;QACnG,OAAO,CAAC,aAAa,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,UAAU,KAAK,cAAc,CAAC,KAAK,GAAG,EAAE,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC,CAAC;KACrH,CAAC;IACF,OAAO,cAAc,CAAC;CACzB,EAAE,CAAC;;AChbJ;;;AAGA,IAAI,iBAAiB,kBAAkB,YAAY;IAC/C,SAAS,iBAAiB,CAAC,MAAM,EAAE;QAC/B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;KACxB;IACD,iBAAiB,CAAC,SAAS,CAAC,aAAa,GAAG,YAAY;QACpD,OAAO,mBAAmB,CAAC;KAC9B,CAAC;IACF,iBAAiB,CAAC,SAAS,CAAC,OAAO,GAAG,YAAY;QAC9C,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;KACtB,CAAC;;;;;;;;;IASF,iBAAiB,CAAC,SAAS,CAAC,iBAAiB,GAAG,UAAU,IAAI,EAAE,OAAO,EAAE;QACrE,IAAI,KAAK,GAAG,IAAI,CAAC;QACjB,IAAI,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,QAAQ,EAAE;YAChD,EAAE,EAAE,IAAI,CAAC,EAAE;SACd,CAAC,CAAC;QACH,OAAO,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;QAC/B,IAAI,mBAAmB,GAAG,IAAI,CAAC,mBAAmB,CAAC;QACnD,IAAI,QAAQ,GAAG,CAAC,oBAAoB,GAAG,KAAK,GAAG,cAAc,GAAG,KAAK,IAAI,mBAAmB,CAAC,QAAQ;YACjG,mBAAmB,CAAC,QAAQ,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC;QAC/C,IAAI,WAAW,GAAG,IAAI,WAAW,CAAC;YAC9B,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM;YAC1B,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS;YAChC,iBAAiB,EAAE,IAAI,CAAC,MAAM,CAAC,iBAAiB;YAChD,YAAY,EAAE,IAAI,CAAC,UAAU,KAAK,cAAc,CAAC,KAAK,GAAG,KAAK,GAAG,MAAM;YACvE,iBAAiB,EAAE,mBAAmB,CAAC,iBAAiB;YACxD,QAAQ,EAAE,QAAQ,IAAI,CAAC,IAAI,CAAC,UAAU,KAAK,cAAc,CAAC,KAAK,KAAK,KAAK,GAAG,YAAY,IAAI,EAAE,CAAC;YAC/F,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,OAAO,EAAE,mBAAmB,CAAC,OAAO;YACpC,KAAK,EAAE,mBAAmB,CAAC,KAAK;YAChC,MAAM,EAAE,mBAAmB,CAAC,MAAM;YAClC,WAAW,EAAE,UAAU,CAAC,EAAE;gBACtB,IAAI,mBAAmB,CAAC,WAAW,EAAE;oBACjC,mBAAmB,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;iBAClD;aACJ;YACD,gBAAgB,EAAE,mBAAmB,CAAC,gBAAgB;YACtD,UAAU,EAAE,mBAAmB,CAAC,UAAU;YAC1C,KAAK,EAAE,YAAY;gBACf,WAAW,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;gBAC3D,IAAI,mBAAmB,CAAC,KAAK,EAAE;oBAC3B,mBAAmB,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;iBACzC;aACJ;YACD,OAAO,EAAE,mBAAmB,CAAC,OAAO;YACpC,IAAI,EAAE,YAAY;gBACd,WAAW,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;gBACxD,IAAI,mBAAmB,CAAC,IAAI,EAAE;oBAC1B,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;iBACxC;aACJ;YACD,MAAM,EAAE,mBAAmB,CAAC,MAAM;YAClC,KAAK,EAAE,UAAU,CAAC,EAAE;gBAChB,IAAI,mBAAmB,CAAC,KAAK,EAAE;oBAC3B,mBAAmB,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;iBAC5C;aACJ;SACJ,EAAE,SAAS,CAAC,CAAC;QACd,IAAI,WAAW,GAAG,SAAS,CAAC,aAAa,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC;QAC3E,WAAW,CAAC,SAAS,GAAG,UAAU,CAAC,EAAE;YACjC,IAAI,CAAC,CAAC,GAAG,KAAK,OAAO,EAAE;gBACnB,CAAC,CAAC,wBAAwB,EAAE,CAAC;gBAC7B,WAAW,CAAC,KAAK,EAAE,CAAC;aACvB;SACJ,CAAC;QACF,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;QACnC,IAAI,OAAO,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC;QACrC,YAAY,CAAC,GAAG,CAAC,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;QACpG,YAAY,CAAC,GAAG,CAAC,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;KAC1G,CAAC;;;;;;;;;;IAUF,iBAAiB,CAAC,SAAS,CAAC,iBAAiB,GAAG,UAAU,IAAI,EAAE,OAAO,EAAE,cAAc,EAAE;QACrF,IAAI,KAAK,GAAG,IAAI,CAAC;QACjB,IAAI,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;QAC1D,cAAc,CAAC,YAAY,CAAC,cAAc,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QAClE,IAAI,WAAW,GAAG,YAAY,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC;QAC5D,WAAW,CAAC,QAAQ,GAAG,WAAW,CAAC,QAAQ,GAAG,KAAK,GAAG,oBAAoB,CAAC;QAC3E,WAAW,CAAC,QAAQ,EAAE,CAAC;QACvB,IAAI,WAAW,GAAG,cAAc,CAAC,aAAa,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC;QAChF,IAAI,KAAK,GAAG,WAAW,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QAC3C,IAAI,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,GAAG,KAAK,GAAG,QAAQ,CAAC,CAAC;QAC9D,WAAW,CAAC,SAAS,GAAG,UAAU,CAAC,EAAE;YACjC,IAAI,CAAC,CAAC,GAAG,KAAK,OAAO,EAAE;gBACnB,CAAC,CAAC,wBAAwB,EAAE,CAAC;gBAC7B,WAAW,CAAC,KAAK,EAAE,CAAC;aACvB;SACJ,CAAC;QACF,QAAQ,CAAC,SAAS,GAAG,UAAU,CAAC,EAAE;YAC9B,IAAI,CAAC,CAAC,GAAG,KAAK,OAAO,EAAE;gBACnB,CAAC,CAAC,cAAc,EAAE,CAAC;gBACnB,WAAW,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;gBACzD,QAAQ,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC,KAAK,EAAE,CAAC;aAChD;SACJ,CAAC;QACF,IAAI,MAAM,CAAC;QACX,WAAW,CAAC,WAAW,GAAG,UAAU,CAAC,EAAE;YACnC,IAAI,IAAI,CAAC,mBAAmB,CAAC,WAAW,EAAE;gBACtC,IAAI,CAAC,mBAAmB,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;aACvD;YACD,MAAM,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC;SAC5C,CAAC;QACF,WAAW,CAAC,KAAK,GAAG,UAAU,CAAC,EAAE;YAC7B,IAAI,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE;gBAChC,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;aACjD;YACD,cAAc,CAAC,MAAM,EAAE,CAAC;SAC3B,CAAC;QACF,WAAW,CAAC,KAAK,GAAG,UAAU,CAAC,EAAE;YAC7B,IAAI,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE;gBAChC,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;aACjD;YACD,WAAW,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;YAC3D,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,8BAA8B,CAAC,EAAE;gBAC3D,cAAc,CAAC,MAAM,EAAE,CAAC;aAC3B;SACJ,CAAC;KACL,CAAC;;;;;;;;;IASF,iBAAiB,CAAC,SAAS,CAAC,oBAAoB,GAAG,UAAU,IAAI,EAAE,OAAO,EAAE;QACxE,IAAI,KAAK,GAAG,IAAI,CAAC;QACjB,IAAI,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;QAC1D,IAAI,WAAW,GAAG,YAAY,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC;QAC5D,IAAI,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACjD,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,UAAU,KAAK,EAAE,EAAE,OAAO,KAAK,KAAK,oBAAoB,CAAC,EAAE,CAAC,CAAC;QACxF,WAAW,CAAC,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC5C,WAAW,CAAC,QAAQ,EAAE,CAAC;QACvB,WAAW,CAAC,WAAW,GAAG,UAAU,CAAC,EAAE;YACnC,IAAI,IAAI,CAAC,mBAAmB,CAAC,WAAW,EAAE;gBACtC,IAAI,CAAC,mBAAmB,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;aACvD;SACJ,CAAC;QACF,WAAW,CAAC,KAAK,GAAG,UAAU,CAAC,EAAE;YAC7B,IAAI,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE;gBAChC,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;aACjD;SACJ,CAAC;QACF,WAAW,CAAC,KAAK,GAAG,UAAU,CAAC,EAAE;YAC7B,IAAI,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE;gBAChC,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;aACjD;YACD,WAAW,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;SAC9D,CAAC;KACL,CAAC;IACF,iBAAiB,CAAC,SAAS,CAAC,UAAU,GAAG,UAAU,IAAI,EAAE,OAAO,EAAE;QAC9D,OAAO,CAAC,eAAe,CAAC,CAAC,aAAa,CAAC,EAAE,OAAO,EAAE,CAAC,IAAI,CAAC,UAAU,KAAK,cAAc,CAAC,MAAM,IAAI,IAAI,CAAC,mBAAmB,CAAC,OAAO,GAAG,EAAE,EAAE,CAAC,CAAC;QACzI,OAAO,CAAC,iBAAiB,CAAC,CAAC,aAAa,CAAC,EAAE,OAAO,EAAE,CAAC,IAAI,CAAC,UAAU,KAAK,cAAc,CAAC,KAAK,IAAI,IAAI,CAAC,mBAAmB,CAAC,OAAO,GAAG,EAAE,EAAE,CAAC,CAAC;KAC7I,CAAC;IACF,iBAAiB,CAAC,SAAS,CAAC,iBAAiB,GAAG,UAAU,SAAS,EAAE;QACjE,IAAI,cAAc,GAAG,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QAC5D,OAAO,YAAY,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC;KACpD,CAAC;;;;;;;;;;IAUF,iBAAiB,CAAC,SAAS,CAAC,QAAQ,GAAG,UAAU,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE;QACrE,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;KAC3D,CAAC;;;;;;;;;IASF,iBAAiB,CAAC,SAAS,CAAC,WAAW,GAAG,UAAU,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE;QAC9E,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC,WAAW,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;KACpE,CAAC;;;;;;;IAOF,iBAAiB,CAAC,SAAS,CAAC,MAAM,GAAG,UAAU,SAAS,EAAE;QACtD,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC,MAAM,EAAE,CAAC;KAC9C,CAAC;;;;;;;;IAQF,iBAAiB,CAAC,SAAS,CAAC,iBAAiB,GAAG,UAAU,IAAI,EAAE,EAAE,EAAE;QAChE,IAAI,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAC7C,IAAI,CAAC,QAAQ,EAAE;YACX,OAAO;SACV;QACD,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,mBAAmB,EAAE,IAAI,CAAC,CAAC;QAC/C,IAAI,MAAM,GAAG,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAC;QACvD,IAAI,CAAC,MAAM,EAAE;YACT,OAAO;SACV;QACD,IAAI,OAAO,GAAG,YAAY,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QAChD,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,IAAI,CAAC,QAAQ,GAAG,CAAC,cAAc,GAAG,KAAK,GAAG,oBAAoB,GAAG,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC;YAC/F,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,KAAK,cAAc,CAAC,KAAK;gBAC7D,CAAC,YAAY,GAAG,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC;YAClE,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;SACpC;QACD,OAAO,IAAI,CAAC,IAAI,CAAC;QACjB,OAAO,IAAI,CAAC,KAAK,CAAC;QAClB,OAAO,IAAI,CAAC,KAAK,CAAC;QAClB,OAAO,IAAI,CAAC,WAAW,CAAC;QACxB,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;QAC5B,IAAI,IAAI,CAAC,OAAO,EAAE;YACd,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;SAC3C;KACJ,CAAC;;;;;;;;;IASF,iBAAiB,CAAC,SAAS,CAAC,qBAAqB,GAAG,UAAU,OAAO,EAAE,IAAI,EAAE;QACzE,IAAI,OAAO,GAAG,YAAY,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;QACjD,IAAI,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC7C,IAAI,IAAI,CAAC,UAAU,KAAK,cAAc,CAAC,KAAK,EAAE;YAC1C,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;SAC/B;aACI;YACD,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,UAAU,KAAK,EAAE,EAAE,OAAO,KAAK,KAAK,YAAY,CAAC,EAAE,CAAC,CAAC;SACnF;QACD,OAAO,CAAC,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACxC,OAAO,CAAC,aAAa,CAAC,EAAE,YAAY,EAAE,IAAI,CAAC,UAAU,KAAK,cAAc,CAAC,KAAK,GAAG,KAAK,GAAG,MAAM,EAAE,CAAC,CAAC;QACnG,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;KAClC,CAAC;IACF,OAAO,iBAAiB,CAAC;CAC5B,EAAE,CAAC;;ACtQJ;;;;;;;;AAQA,AAAO,SAAS,QAAQ,CAAC,GAAG,EAAE,SAAS,EAAE;IACrC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACjC,IAAI,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;YAC/C,OAAO,CAAC,CAAC;SACZ;KACJ;IACD,OAAO,CAAC,CAAC,CAAC;CACb;;;;;;;;AAQD,AAAO,SAAS,mBAAmB,CAAC,QAAQ,EAAE;IAC1C,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE;QAC9B,IAAI,OAAO,GAAG,EAAE,CAAC;QACjB,IAAI;YACA,IAAI,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;YAC/B,IAAI,OAAO,EAAE;;gBAET,OAAO,GAAG,OAAO,CAAC,OAAO,KAAK,QAAQ,GAAG,OAAO,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;aAClF;iBACI;gBACD,OAAO,GAAG,QAAQ,CAAC;aACtB;SACJ;QACD,OAAO,CAAC,EAAE;YACN,OAAO,GAAG,QAAQ,CAAC;SACtB;QACD,OAAO,OAAO,CAAC,OAAO,CAAC,CAAC;KAC3B;SACI;;QAED,OAAO,OAAO,CAAC,QAAQ,CAAC,CAAC;KAC5B;CACJ;;;;;;;;;AASD,AAAO,SAAS,OAAO,CAAC,IAAI,EAAE,EAAE,EAAE;IAC9B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QAClC,IAAI,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;QAC3C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACxC,IAAI,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;YACnD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBAC/C,IAAI,UAAU,GAAG,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;gBAC/D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;oBAC9C,IAAI,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;oBACxD,IAAI,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE;wBAChB,OAAO;4BACH,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK;4BAChD,QAAQ,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,eAAe,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC;yBAC/D,CAAC;qBACL;iBACJ;aACJ;SACJ;KACJ;IACD,OAAO,IAAI,CAAC;CACf;;;;;;;;;AASD,AAAO,SAAS,aAAa,CAAC,IAAI,EAAE,EAAE,EAAE;IACpC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QAClC,IAAI,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;QAC3C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACxC,IAAI,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;YACnD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBAC/C,IAAI,UAAU,GAAG,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;gBAC/D,IAAI,UAAU,CAAC,EAAE,KAAK,EAAE,EAAE;oBACtB,OAAO;wBACH,UAAU,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK;wBACpC,QAAQ,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,eAAe,EAAE,CAAC;qBACjD,CAAC;iBACL;aACJ;SACJ;KACJ;IACD,OAAO,IAAI,CAAC;CACf;;;;;;;;;AASD,AAAO,SAAS,QAAQ,CAAC,IAAI,EAAE,EAAE,EAAE;IAC/B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QAClC,IAAI,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;QAC3C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACxC,IAAI,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;YACnD,IAAI,KAAK,CAAC,EAAE,KAAK,EAAE,EAAE;gBACjB,OAAO;oBACH,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC;iBAC3C,CAAC;aACL;SACJ;KACJ;IACD,OAAO,IAAI,CAAC;CACf;;;;;;;AAOD,AAAO,SAAS,cAAc,CAAC,OAAO,EAAE,UAAU,EAAE;IAChD,IAAI,OAAO,GAAG,YAAY,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;IAChD,OAAO,CAAC,OAAO,EAAE,CAAC;CACrB;;;;;;;;;;AAUD,AAAO,SAAS,oBAAoB,CAAC,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE;IAClE,IAAI,OAAO,GAAG,YAAY,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;IAChD,OAAO,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;CACrC;;;;;;;;;;AAUD,AAAO,SAAS,qBAAqB,CAAC,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE;IAChE,IAAI,OAAO,GAAG,YAAY,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;IAChD,OAAO,CAAC,aAAa,CAAC,UAAU,KAAK,UAAU,GAAG,EAAE,OAAO,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;CACpG;;;;;;;;;;AAUD,AAAO,SAAS,cAAc,CAAC,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE;IACjD,IAAI,CAAC,QAAQ,EAAE;QACX,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACpC,IAAI,CAAC,QAAQ,EAAE;YACX,OAAO,IAAI,CAAC;SACf;KACJ;IACD,IAAI,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC;IAChE,IAAI,UAAU,CAAC,SAAS,KAAK,EAAE,EAAE;QAC7B,OAAO,IAAI,CAAC;KACf;IACD,IAAI,MAAM,CAAC,YAAY,KAAK,YAAY,CAAC,OAAO,EAAE;QAC9C,IAAI,QAAQ,CAAC,IAAI,CAAC,cAAc,GAAG,WAAW,CAAC,OAAO,EAAE;YACpD,UAAU,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,IAAI,MAAM,CAAC,oBAAoB,CAAC,wBAAwB,CAAC,QAAQ,EAAE,UAAU,CAAC;kBAChH,UAAU,CAAC;YACjB,OAAO,UAAU,CAAC,aAAa,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC;SAC7C;aACI;YACD,OAAO,IAAI,CAAC;SACf;KACJ;SACI;;QAED,IAAI,GAAG,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,GAAG,WAAW,CAAC,UAAU;YAC5D,UAAU,CAAC,aAAa,CAAC,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC;;QAE5D,IAAI,CAAC,GAAG,EAAE;YACN,IAAI,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,mBAAmB;gBAC7C,YAAY,CAAC,UAAU,CAAC,aAAa,CAAC,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,EAAE,GAAGC,iBAA2B,CAAC,EAAE,cAAc,CAAC;kBAC3G,MAAM,CAAC,WAAW,CAAC;YACzB,GAAG,GAAG,QAAQ,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;SAC/D;QACD,OAAO,GAAG,CAAC;KACd;CACJ;;;;;;AAMD,AAAO,SAAS,gBAAgB,CAAC,OAAO,EAAE;IACtC,OAAO,CAAC,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,EAAE,IAAI,OAAO,CAAC,QAAQ,IAAI,IAAI,GAAG,KAAK,CAAC;CACjH;;;;;;;;;;AAUD,AAAO,SAAS,iBAAiB,CAAC,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE;IAC1D,IAAI,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IAC9C,IAAI,OAAO,GAAG,WAAW,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,EAAE,KAAK,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAChF,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IACxB,IAAI,OAAO,GAAG,OAAO,CAAC,aAAa,CAAC,KAAK,EAAE;QACvC,EAAE,EAAE,IAAI,CAAC,EAAE,GAAGC,wBAAkC,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,GAAGA,wBAAkC;KACxG,CAAC,CAAC;IACH,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAChC,IAAI,IAAI,CAAC,KAAK,EAAE;QACZ,IAAI,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,KAAK,EAAE;YACtC,SAAS,EAAE,IAAI,CAAC,KAAK;YACrB,SAAS,EAAEC,oBAA8B;SAC5C,CAAC,CAAC;QACH,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;KAC/B;IACD,IAAI,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC,KAAK,EAAE;QAC7C,SAAS,EAAEC,qBAA+B;KAC7C,CAAC,CAAC;IACH,OAAO,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;IACnC,IAAI,IAAI,CAAC,OAAO,EAAE;QACd,IAAI,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,KAAK,EAAE;YACzC,SAAS,EAAE,IAAI,CAAC,OAAO,GAAG,GAAG,GAAGC,mBAA6B;SAChE,CAAC,CAAC;QACH,aAAa,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;KACxC;IACD,IAAI,IAAI,CAAC,OAAO,EAAE;QACd,IAAI,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC,KAAK,EAAE;YAC9C,SAAS,EAAE,IAAI,CAAC,OAAO;YACvB,SAAS,EAAEC,sBAAgC;SAC9C,CAAC,CAAC;QACH,aAAa,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;KAC7C;IACD,OAAO,CAAC,aAAa,CAAC;QAClB,OAAO,EAAE,OAAO;QAChB,QAAQ,EAAE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,GAAG,GAAG,GAAGC,cAAwB,GAAGA,cAAwB;KACtG,CAAC,CAAC;CACN;;;;;;;;;AASD,AAAO,SAAS,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE;IAC3C,IAAI,aAAa,GAAG,IAAI,OAAO,CAAC;QAC5B,MAAM,EAAE,GAAG,GAAGC,qBAA+B;QAC7C,YAAY,EAAE,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC;QAC5C,eAAe,EAAE,IAAI;KACxB,CAAC,CAAC;IACH,aAAa,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;;;;;;IAMhC,SAAS,mBAAmB,CAAC,IAAI,EAAE;QAC/B,iBAAiB,CAAC,IAAI,EAAE,aAAa,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;KAC9D;CACJ;;;;;;;;AAQD,AAAO,SAAS,cAAc,CAAC,OAAO,EAAE;IACpC,IAAI,OAAO,GAAG,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC7C,OAAO,CAAC,OAAO,EAAE,CAAC;CACrB;;;;;;;;;AASD,AAAO,SAAS,iBAAiB,CAAC,OAAO,EAAE,IAAI,EAAE;IAC7C,IAAI,OAAO,GAAG,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC7C,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;CAC/B;;AC7SD;;;AAGA,IAAI,iBAAiB,kBAAkB,YAAY;IAC/C,SAAS,iBAAiB,CAAC,MAAM,EAAE;QAC/B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;KAC3B;IACD,iBAAiB,CAAC,SAAS,CAAC,aAAa,GAAG,YAAY;QACpD,OAAO,mBAAmB,CAAC;KAC9B,CAAC;IACF,iBAAiB,CAAC,SAAS,CAAC,OAAO,GAAG,YAAY;QAC9C,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;KACtB,CAAC;;;;;;;;;IASF,iBAAiB,CAAC,SAAS,CAAC,iBAAiB,GAAG,UAAU,IAAI,EAAE,WAAW,EAAE;QACzE,IAAI,KAAK,GAAG,IAAI,CAAC;QACjB,IAAI,gBAAgB,GAAG,IAAI,CAAC,mBAAmB,CAAC;QAChD,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;QACf,IAAI,eAAe,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,EAAE;YACnD,EAAE,EAAE,IAAI,CAAC,EAAE,GAAGC,sBAAgC;YAC9C,SAAS,EAAE,aAAa;SAC3B,CAAC,CAAC;QACH,WAAW,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC;QACzC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,gBAAgB,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACpD,KAAK,gBAAgB,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,GAAG;gBAC9D,IAAI,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,QAAQ,EAAE;oBACrD,EAAE,EAAE,IAAI,CAAC,EAAE,GAAGA,sBAAgC,GAAG,CAAC;oBAClD,SAAS,EAAEC,mBAA6B;iBAC3C,CAAC,CAAC;gBACH,eAAe,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;gBAC5C,IAAI,MAAM,CAAC;oBACP,OAAO,EAAE,gBAAgB,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO;oBACnE,QAAQ,EAAE,IAAI,CAAC,QAAQ;oBACvB,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS;oBAChC,OAAO,EAAE,IAAI,CAAC,UAAU,KAAK,cAAc,CAAC,KAAK,GAAG,EAAE,GAAG,gBAAgB,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO;oBACnH,YAAY,EAAE,IAAI,CAAC,UAAU,KAAK,cAAc,CAAC,KAAK,GAAG,KAAK,GAAG,MAAM;iBAC1E,EAAE,cAAc,CAAC,CAAC;gBACnB,IAAI,SAAS,GAAG,WAAW,CAAC,aAAa,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,GAAGD,sBAAgC,GAAG,CAAC,CAAC,CAAC;gBAChG,IAAI,gBAAgB,CAAC,SAAS,KAAK,0BAA0B,CAAC,MAAM,EAAE;oBAClE,eAAe,CAAC,SAAS,CAAC,GAAG,CAACE,8BAAwC,CAAC,CAAC;iBAC3E;qBACI;oBACD,eAAe,CAAC,SAAS,CAAC,GAAG,CAACC,gCAA0C,CAAC,CAAC;iBAC7E;gBACD,IAAI,gBAAgB,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE;oBAC7D,IAAI,gBAAgB,CAAC,SAAS,KAAK,0BAA0B,CAAC,QAAQ,EAAE;wBACpE,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;qBACvC;yBACI;wBACD,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,EAAE;4BAChB,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;4BACpC,IAAI,CAAC,KAAK,EAAE,CAAC;yBAChB;qBACJ;iBACJ;gBACD,IAAI,gBAAgB,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,qBAAqB;oBACxE,gBAAgB,CAAC,gBAAgB,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,qBAAqB,CAAC,EAAE;oBAC5F,cAAc,CAAC,SAAS,CAAC,GAAG,CAACJ,qBAA+B,CAAC,CAAC;oBAC9D,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC;wBACzB,EAAE,EAAE,cAAc,CAAC,EAAE,EAAE,IAAI,EAAE,gBAAgB,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,qBAAqB;qBACxG,CAAC,CAAC;iBACN;gBACD,YAAY,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,EAAE,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,gBAAgB,CAAC,EAAE,IAAI,CAAC,CAAC;aAC7G;SACJ;QACD,IAAI,IAAI,CAAC,MAAM,CAAC,YAAY,KAAK,YAAY,EAAE;YAC3C,IAAI,YAAY,GAAG,KAAK,CAAC,CAAC;YAC1B,IAAI,cAAc,GAAG,CAAC,CAAC;YACvB,IAAI,KAAK,GAAG,CAAC,CAAC;YACd,IAAI,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,QAAQ,EAAE;gBAChD,EAAE,EAAE,IAAI,CAAC,EAAE;aACd,CAAC,CAAC;YACH,WAAW,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;YACnC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,gBAAgB,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBACpD,IAAI,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ;oBACnE,CAAC,IAAI,CAAC,UAAU,IAAI,gBAAgB,CAAC,SAAS,KAAK,0BAA0B,CAAC,MAAM,EAAE;oBACtF,YAAY,GAAG,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;oBAClF,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;iBAC1B;qBACI,IAAI,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ;oBACxE,gBAAgB,CAAC,SAAS,KAAK,0BAA0B,CAAC,QAAQ,EAAE;oBACpE,cAAc,EAAE,CAAC;oBACjB,IAAI,cAAc,KAAK,CAAC,EAAE;wBACtB,YAAY,GAAG,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;qBACrF;yBACI;wBACD,YAAY,GAAG,IAAI,CAAC;qBACvB;iBACJ;aACJ;YACD,OAAO,KAAK,GAAG,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,YAAY,EAAE;gBACvF,IAAI,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE;oBACxE,YAAY,GAAG,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;oBACtF,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;iBAC1B;gBACD,KAAK,EAAE,CAAC;aACX;YACD,IAAI,cAAc,CAAC;gBACf,OAAO,EAAE,YAAY;gBACrB,MAAM,EAAE,eAAe;gBACvB,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS;gBAChC,QAAQ,EAAE,gCAAgC;gBAC1C,QAAQ,EAAE,IAAI,CAAC,QAAQ;aAC1B,EAAE,SAAS,CAAC,CAAC;YACd,SAAS,CAAC,OAAO,GAAG,SAAS,CAAC,SAAS,GAAG,YAAY;gBAClD,IAAI,WAAW,CAAC,aAAa,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE;oBACzE,QAAQ,CAAC,aAAa,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,GAAGC,sBAAgC,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;oBACrF,KAAK,CAAC,WAAW,GAAG,CAAC,CAAC;iBACzB;aACJ,CAAC;YACF,eAAe,CAAC,SAAS,GAAG,UAAU,CAAC,EAAE;gBACrC,IAAI,KAAK,CAAC,MAAM,CAAC,YAAY,KAAK,YAAY,EAAE;oBAC5C,KAAK,CAAC,2BAA2B,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;iBAC9C;aACJ,CAAC;YACF,aAAa,CAAC,eAAe,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;YAC5C,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;SAC3B;KACJ,CAAC;IACF,iBAAiB,CAAC,SAAS,CAAC,kBAAkB,GAAG,UAAU,SAAS,EAAE,IAAI,EAAE,cAAc,EAAE;QACxF,IAAI,aAAa,GAAG,EAAE,EAAE,cAAc,GAAG,EAAE,EAAE,aAAa,GAAG,EAAE,CAAC;QAChE,IAAI,cAAc,CAAC;QACnB,IAAI,QAAQ,CAAC;QACb,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,cAAc,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAClD,IAAI,QAAQ,CAAC,aAAa,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,GAAGA,sBAAgC,GAAG,CAAC,CAAC,EAAE;gBAC9E,IAAI,QAAQ,CAAC,aAAa,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,GAAGA,sBAAgC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE;oBAC7G,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;iBACxE;aACJ;SACJ;QACD,IAAI,EAAE,QAAQ,CAAC,aAAa,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,GAAGA,sBAAgC,GAAG,SAAS,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,EAAE;YACxH,cAAc,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;SACjF;QACD,IAAI,SAAS,GAAG;YACZ,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,cAAc,EAAE,cAAc;SAC9E,CAAC;QACF,IAAI,cAAc,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE;YACtE,cAAc,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;SAC9F;QACD,IAAI,SAAS,CAAC,MAAM,EAAE;YAClB,OAAO;SACV;aACI;YACD,IAAI,cAAc,CAAC,SAAS,KAAK,0BAA0B,CAAC,MAAM,EAAE;gBAChE,IAAI,QAAQ,CAAC,aAAa,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,GAAGA,sBAAgC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAACG,gCAA0C,CAAC,EAAE;oBACzI,QAAQ,CAAC,aAAa,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,GAAGH,sBAAgC,CAAC,CAAC,SAAS,CAAC,MAAM,CAACG,gCAA0C,CAAC,CAAC;oBACtI,QAAQ,CAAC,aAAa,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,GAAGH,sBAAgC,CAAC,CAAC,SAAS,CAAC,GAAG,CAACE,8BAAwC,CAAC,CAAC;iBACpI;gBACD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,cAAc,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;oBAClD,IAAI,QAAQ,CAAC,aAAa,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,GAAGF,sBAAgC,GAAG,CAAC,CAAC,IAAI,QAAQ,CAAC,aAAa,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,GAAGA,sBAAgC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE;wBAC7L,QAAQ,CAAC,aAAa,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,GAAGA,sBAAgC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;qBAC7G;iBACJ;gBACD,QAAQ,CAAC,aAAa,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,GAAGA,sBAAgC,GAAG,SAAS,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;gBAClH,IAAI,QAAQ,CAAC,aAAa,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,GAAGA,sBAAgC,GAAG,SAAS,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,YAAY,KAAK,YAAY,EAAE;oBAClK,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC;oBAC7B,cAAc,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;oBACvD,QAAQ,GAAG,YAAY,CAAC,cAAc,EAAE,cAAc,CAAC,CAAC;oBACxD,QAAQ,CAAC,aAAa,CAAC;wBACnB,OAAO,EAAE,cAAc,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO;qBAC5E,CAAC,CAAC;iBACN;aACJ;iBACI;gBACD,IAAI,QAAQ,CAAC,aAAa,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,GAAGA,sBAAgC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAACE,8BAAwC,CAAC,EAAE;oBACvI,QAAQ,CAAC,aAAa,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,GAAGF,sBAAgC,CAAC,CAAC,SAAS,CAAC,MAAM,CAACE,8BAAwC,CAAC,CAAC;oBACpI,QAAQ,CAAC,aAAa,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,GAAGF,sBAAgC,CAAC,CAAC,SAAS,CAAC,GAAG,CAACG,gCAA0C,CAAC,CAAC;iBACtI;gBACD,QAAQ,CAAC,aAAa,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,GAAGH,sBAAgC,GAAG,SAAS,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;gBAClH,IAAI,cAAc,GAAG,CAAC,CAAC;gBACvB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,cAAc,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;oBAClD,IAAI,QAAQ,CAAC,aAAa,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,GAAGA,sBAAgC,GAAG,CAAC,CAAC,IAAI,QAAQ,CAAC,aAAa,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,GAAGA,sBAAgC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,YAAY,KAAK,YAAY,IAAI,CAAC,KAAK,SAAS,EAAE;wBAC7P,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;wBACvB,cAAc,EAAE,CAAC;qBACpB;iBACJ;gBACD,IAAI,IAAI,CAAC,MAAM,CAAC,YAAY,KAAK,YAAY,EAAE;oBAC3C,IAAI,YAAY,GAAG,IAAI,CAAC;oBACxB,IAAI,UAAU,GAAG,CAAC,CAAC;oBACnB,cAAc,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;oBACvD,QAAQ,GAAG,YAAY,CAAC,cAAc,EAAE,cAAc,CAAC,CAAC;oBACxD,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;wBAClB,IAAI,QAAQ,CAAC,aAAa,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,GAAGA,sBAAgC,GAAG,SAAS,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE;4BACrH,YAAY,GAAG,cAAc,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;yBACnF;qBACJ;yBACI;wBACD,IAAI,cAAc,KAAK,CAAC,IAAI,EAAE,QAAQ,CAAC,aAAa,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,GAAGA,sBAAgC,GAAG,SAAS,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,EAAE;4BAChJ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,cAAc,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gCAClD,IAAI,QAAQ,CAAC,aAAa,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,GAAGA,sBAAgC,GAAG,CAAC,CAAC,IAAI,QAAQ,CAAC,aAAa,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,GAAGA,sBAAgC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE;oCAC7L,YAAY,GAAG,cAAc,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;iCAC3E;6BACJ;yBACJ;qBACJ;oBACD,OAAO,UAAU,GAAG,cAAc,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,YAAY,EAAE;wBAC9D,IAAI,cAAc,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE;4BACnE,YAAY,GAAG,cAAc,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;yBACpF;wBACD,UAAU,EAAE,CAAC;qBAChB;oBACD,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC,CAAC;oBAClD,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC;iBAChC;gBACD,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;aAC3B;YACD,IAAI,QAAQ,CAAC,aAAa,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,GAAGA,sBAAgC,GAAG,SAAS,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE;gBACrH,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;aAChF;YACD,IAAI,WAAW,GAAG,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,CAAC;YACjF,IAAI,cAAc,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE;gBAChE,cAAc,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;aAC1F;SACJ;KACJ,CAAC;;;;;;;;;IASF,iBAAiB,CAAC,SAAS,CAAC,iBAAiB,GAAG,UAAU,IAAI,EAAE,WAAW,EAAE;QACzE,IAAI,KAAK,GAAG,IAAI,CAAC;QACjB,IAAI,gBAAgB,GAAG,IAAI,CAAC,mBAAmB,CAAC;QAChD,IAAI,YAAY,GAAG,IAAI,CAAC;QACxB,IAAI,cAAc,GAAG,CAAC,CAAC;QACvB,IAAI,UAAU,GAAG,CAAC,CAAC;QACnB,IAAI,IAAI,CAAC,MAAM,CAAC,YAAY,KAAK,YAAY,EAAE;YAC3C,IAAI,YAAY,GAAG,WAAW,CAAC,aAAa,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,GAAGA,sBAAgC,CAAC,CAAC;YAC/F,IAAI,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,QAAQ,EAAE;gBAChD,EAAE,EAAE,IAAI,CAAC,EAAE;aACd,CAAC,CAAC;YACH,WAAW,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;YACnC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,gBAAgB,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBACpD,IAAI,QAAQ,CAAC,aAAa,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,GAAGA,sBAAgC,GAAG,CAAC,CAAC,EAAE;oBAC9E,IAAI,QAAQ,CAAC,aAAa,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,GAAGA,sBAAgC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,gBAAgB,CAAC,SAAS,KAAK,0BAA0B,CAAC,MAAM,EAAE;wBACjL,YAAY,GAAG,gBAAgB,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;qBAC7E;yBACI,IAAI,QAAQ,CAAC,aAAa,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,GAAGA,sBAAgC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,gBAAgB,CAAC,SAAS,KAAK,0BAA0B,CAAC,QAAQ,EAAE;wBACxL,cAAc,EAAE,CAAC;wBACjB,IAAI,cAAc,KAAK,CAAC,EAAE;4BACtB,YAAY,GAAG,gBAAgB,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;yBAC7E;6BACI,IAAI,cAAc,GAAG,CAAC,EAAE;4BACzB,YAAY,GAAG,IAAI,CAAC;yBACvB;qBACJ;iBACJ;aACJ;YACD,OAAO,UAAU,GAAG,gBAAgB,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,YAAY,EAAE;gBAChE,IAAI,gBAAgB,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE;oBACrE,YAAY,GAAG,gBAAgB,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;iBACtF;gBACD,UAAU,EAAE,CAAC;aAChB;YACD,IAAI,cAAc,CAAC;gBACf,OAAO,EAAE,YAAY;gBACrB,MAAM,EAAE,YAAY;gBACpB,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS;gBAChC,QAAQ,EAAE,gCAAgC;gBAC1C,QAAQ,EAAE,IAAI,CAAC,QAAQ;aAC1B,EAAE,SAAS,CAAC,CAAC;YACd,SAAS,CAAC,OAAO,GAAG,SAAS,CAAC,SAAS,GAAG,YAAY;gBAClD,IAAI,WAAW,CAAC,aAAa,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE;oBACzE,QAAQ,CAAC,aAAa,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,GAAGA,sBAAgC,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;oBACrF,KAAK,CAAC,WAAW,GAAG,CAAC,CAAC;iBACzB;aACJ,CAAC;YACF,YAAY,CAAC,SAAS,GAAG,UAAU,CAAC,EAAE;gBAClC,IAAI,KAAK,CAAC,MAAM,CAAC,YAAY,KAAK,YAAY,EAAE;oBAC5C,KAAK,CAAC,2BAA2B,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;iBAC9C;aACJ,CAAC;YACF,aAAa,CAAC,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;SAC5C;aACI;YACD,IAAI,cAAc,GAAG,WAAW,CAAC,aAAa,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;YAC9D,IAAI,QAAQ,GAAG,YAAY,CAAC,cAAc,EAAE,cAAc,CAAC,CAAC;YAC5D,WAAW,CAAC,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;YACzC,IAAI,cAAc,EAAE;gBAChB,QAAQ,CAAC,OAAO,EAAE,CAAC;gBACnB,MAAM,CAAC,cAAc,CAAC,CAAC;aAC1B;SACJ;KACJ,CAAC;IACF,iBAAiB,CAAC,SAAS,CAAC,2BAA2B,GAAG,UAAU,CAAC,EAAE,IAAI,EAAE;QACzE,IAAI,cAAc,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;QAC3D,IAAI,QAAQ,GAAG,YAAY,CAAC,cAAc,EAAE,cAAc,CAAC,CAAC;QAC5D,IAAI,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAC;QAChC,IAAI,eAAe,GAAG,KAAK,CAAC;QAC5B,IAAI,IAAI,CAAC,MAAM,CAAC,YAAY,KAAK,YAAY,IAAI,SAAS,CAAC,OAAO,CAAC,iCAAiC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAACI,kCAA4C,CAAC,EAAE;YACpK,eAAe,GAAG,IAAI,CAAC;SAC1B;QACD,IAAI,CAAC,CAAC,GAAG,KAAK,KAAK,EAAE;YACjB,CAAC,CAAC,cAAc,EAAE,CAAC;SACtB;QACD,IAAI,gBAAgB,GAAG,IAAI,CAAC,mBAAmB,CAAC;QAChD,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,YAAY,IAAI,CAAC,eAAe,MAAM,CAAC,CAAC,GAAG,KAAK,WAAW,IAAI,eAAe,CAAC,EAAE;YAC5F,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,KAAK,CAAC,CAAC,GAAG,KAAK,WAAW,IAAI,eAAe,CAAC,EAAE;gBACtE,IAAI,CAAC,WAAW,EAAE,CAAC;gBACnB,IAAI,IAAI,CAAC,WAAW,GAAG,gBAAgB,CAAC,KAAK,CAAC,MAAM,EAAE;oBAClD,QAAQ,CAAC,aAAa,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,GAAGJ,sBAAgC,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;iBACzG;qBACI;oBACD,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;oBACrB,QAAQ,CAAC,aAAa,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,GAAGA,sBAAgC,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;iBACzG;aACJ;iBACI;gBACD,IAAI,IAAI,CAAC,WAAW,KAAK,CAAC,EAAE;oBACxB,IAAI,CAAC,WAAW,GAAG,gBAAgB,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;oBACrD,QAAQ,CAAC,aAAa,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,GAAGA,sBAAgC,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;iBACzG;qBACI;oBACD,IAAI,CAAC,WAAW,EAAE,CAAC;oBACnB,QAAQ,CAAC,aAAa,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,GAAGA,sBAAgC,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;iBACzG;aACJ;SACJ;aACI,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,WAAW,IAAI,CAAC,eAAe,MAAM,CAAC,CAAC,GAAG,KAAK,SAAS,IAAI,eAAe,CAAC,EAAE;YAC9F,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,KAAK,CAAC,CAAC,GAAG,KAAK,SAAS,IAAI,eAAe,CAAC,EAAE;gBACpE,IAAI,IAAI,CAAC,WAAW,KAAK,CAAC,EAAE;oBACxB,IAAI,CAAC,WAAW,GAAG,gBAAgB,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;oBACrD,QAAQ,CAAC,aAAa,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,GAAGA,sBAAgC,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;iBACzG;qBACI;oBACD,IAAI,CAAC,WAAW,EAAE,CAAC;oBACnB,QAAQ,CAAC,aAAa,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,GAAGA,sBAAgC,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;iBACzG;aACJ;iBACI;gBACD,IAAI,CAAC,WAAW,EAAE,CAAC;gBACnB,IAAI,IAAI,CAAC,WAAW,GAAG,gBAAgB,CAAC,KAAK,CAAC,MAAM,EAAE;oBAClD,QAAQ,CAAC,aAAa,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,GAAGA,sBAAgC,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;iBACzG;qBACI;oBACD,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;oBACrB,QAAQ,CAAC,aAAa,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,GAAGA,sBAAgC,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;iBACzG;aACJ;SACJ;KACJ,CAAC;;;;;;;;;IASF,iBAAiB,CAAC,SAAS,CAAC,iBAAiB,GAAG,UAAU,IAAI,EAAE,OAAO,EAAE;QACrE,IAAI,KAAK,GAAG,IAAI,CAAC;QACjB,IAAI,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;QAC1D,IAAI,QAAQ,GAAG,YAAY,CAAC,cAAc,EAAE,cAAc,CAAC,CAAC;QAC5D,QAAQ,CAAC,aAAa,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,QAAQ,GAAGK,KAAe,GAAGD,kCAA4C,EAAE,CAAC,CAAC;QACzH,IAAI,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAC;QAChC,SAAS,CAAC,OAAO,GAAG,YAAY;YAC5B,IAAI,KAAK,CAAC,MAAM,CAAC,YAAY,KAAK,YAAY,IAAI,SAAS,CAAC,OAAO,CAAC,iCAAiC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAACA,kCAA4C,CAAC,EAAE;gBACrK,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;gBACzB,QAAQ,CAAC,MAAM,EAAE,CAAC;aACrB;SACJ,CAAC;KACL,CAAC;;;;;;;;;IASF,iBAAiB,CAAC,SAAS,CAAC,oBAAoB,GAAG,UAAU,IAAI,EAAE,OAAO,EAAE;QACxE,IAAI,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;QAC1D,IAAI,cAAc,EAAE;YAChB,IAAI,QAAQ,GAAG,YAAY,CAAC,cAAc,EAAE,cAAc,CAAC,CAAC;YAC5D,IAAI,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAACC,KAAe,CAAC,CAAC;YACxD,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,UAAU,KAAK,EAAE,EAAE,OAAO,KAAK,KAAKD,kCAA4C,CAAC,EAAE,CAAC,CAAC;YAChH,QAAQ,CAAC,aAAa,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAACC,KAAe,CAAC,EAAE,CAAC,CAAC;SACxE;KACJ,CAAC;;;;;;;;IAQF,iBAAiB,CAAC,SAAS,CAAC,eAAe,GAAG,UAAU,IAAI,EAAE;QAC1D,IAAI,cAAc,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;QAC3D,IAAI,cAAc,EAAE;YAChB,IAAI,QAAQ,GAAG,YAAY,CAAC,cAAc,EAAE,cAAc,CAAC,CAAC;YAC5D,IAAI,OAAO,GAAG,YAAY,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YACrD,OAAO,CAAC,OAAO,EAAE,CAAC;YAClB,QAAQ,CAAC,OAAO,EAAE,CAAC;YACnB,MAAM,CAAC,cAAc,CAAC,CAAC;SAC1B;KACJ,CAAC;;;;;;;;;IASF,iBAAiB,CAAC,SAAS,CAAC,qBAAqB,GAAG,UAAU,WAAW,EAAE,IAAI,EAAE;QAC7E,IAAI,gBAAgB,GAAG,IAAI,CAAC,mBAAmB,CAAC;QAChD,IAAI,SAAS,CAAC;QACd,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,gBAAgB,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACpD,IAAI,IAAI,CAAC,MAAM,CAAC,YAAY,KAAK,SAAS,EAAE;gBACxC,SAAS,GAAG,WAAW,CAAC,aAAa,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,GAAGL,sBAAgC,GAAG,CAAC,CAAC,CAAC;aAC/F;iBACI;gBACD,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,GAAGA,sBAAgC,GAAG,CAAC,CAAC,CAAC;aAC5F;YACD,IAAI,SAAS,EAAE;gBACX,IAAI,SAAS,GAAG,YAAY,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;gBAChD,SAAS,CAAC,aAAa,CAAC;oBACpB,YAAY,EAAE,IAAI,CAAC,UAAU,KAAK,cAAc,CAAC,KAAK,GAAG,KAAK,GAAG,MAAM;oBACvE,OAAO,EAAE,IAAI,CAAC,UAAU,KAAK,cAAc,CAAC,KAAK,GAAG,EAAE,GAAG,gBAAgB,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO;iBACtH,CAAC,CAAC;aACN;SACJ;KACJ,CAAC;IACF,OAAO,iBAAiB,CAAC;CAC5B,EAAE,CAAC;;AC1bJ,IAAI,SAAS,GAAG,CAACV,SAAI,IAAIA,SAAI,CAAC,SAAS,KAAK,CAAC,YAAY;IACrD,IAAI,aAAa,GAAG,UAAU,CAAC,EAAE,CAAC,EAAE;QAChC,aAAa,GAAG,MAAM,CAAC,cAAc;aAChC,EAAE,SAAS,EAAE,EAAE,EAAE,YAAY,KAAK,IAAI,UAAU,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,EAAE,CAAC;YAC5E,UAAU,CAAC,EAAE,CAAC,EAAE,EAAE,KAAK,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/E,OAAO,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;KAC9B,CAAC;IACF,OAAO,UAAU,CAAC,EAAE,CAAC,EAAE;QACnB,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACpB,SAAS,EAAE,GAAG,EAAE,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,EAAE;QACvC,CAAC,CAAC,SAAS,GAAG,CAAC,KAAK,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;KACxF,CAAC;CACL,GAAG,CAAC;AACL,IAAI,UAAU,GAAG,CAACA,SAAI,IAAIA,SAAI,CAAC,UAAU,KAAK,UAAU,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE;IACnF,IAAI,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,GAAG,IAAI,KAAK,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC,wBAAwB,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC;IAC7H,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,OAAO,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;SAC1H,KAAK,IAAI,CAAC,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;IAClJ,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;CACjE,CAAC;AACF,AAWA;;;AAGA,IAAI,MAAM,kBAAkB,UAAU,MAAM,EAAE;IAC1C,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;;;;;;;IAO1B,SAAS,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE;QAC9B,IAAI,KAAK,GAAG,IAAI,CAAC;QACjB,QAAQ,CAAC,MAAM,CAAC,YAAY,EAAE,cAAc,EAAE,cAAc,EAAE,iBAAiB,EAAE,cAAc,EAAE,iBAAiB,CAAC,CAAC;QACpH,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,IAAI,IAAI,CAAC;QACpD,OAAO,KAAK,CAAC;KAChB;IACD,QAAQ,GAAG,MAAM,CAAC;;;;;;;IAOlB,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,YAAY;QAClC,IAAI,CAAC,UAAU,EAAE,CAAC;KACrB,CAAC;IACF,MAAM,CAAC,SAAS,CAAC,SAAS,GAAG,YAAY;QACrC,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;QACjB,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;QACtB,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;QACzB,IAAI,CAAC,UAAU,GAAG;YACd,SAAS,EAAE,WAAW;YACtB,UAAU,EAAE,YAAY;YACxB,GAAG,EAAE,KAAK;YACV,QAAQ,EAAE,WAAW;SACxB,CAAC;KACL,CAAC;;;;;;IAMF,MAAM,CAAC,SAAS,CAAC,cAAc,GAAG,YAAY;QAC1C,OAAO,IAAI,CAAC,YAAY,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC;KAC9C,CAAC;;;;;;;IAOF,MAAM,CAAC,SAAS,CAAC,aAAa,GAAG,YAAY;QACzC,OAAO,QAAQ,CAAC;KACnB,CAAC;;;;;;;IAOF,MAAM,CAAC,SAAS,CAAC,eAAe,GAAG,YAAY;QAC3C,IAAI,OAAO,GAAG,EAAE,CAAC;QACjB,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,gBAAgB,EAAE,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,mBAAmB,EAAE,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,gBAAgB,EAAE,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,mBAAmB,EAAE,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,gBAAgB,EAAE,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,mBAAmB,EAAE,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,gBAAgB,EAAE,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACja,OAAO,OAAO,CAAC;KAClB,CAAC;IACF,MAAM,CAAC,SAAS,CAAC,UAAU,GAAG,YAAY;QACtC,IAAI,CAAC,OAAO,CAAC,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,IAAI,WAAW,CAAC,IAAI,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;QAC9E,QAAQ,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAACe,KAAe,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QACxG,IAAI,IAAI,CAAC,SAAS,EAAE;YAChB,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAACC,OAAiB,CAAC,CAAC;SACjD;QACD,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAClD,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,IAAI,CAAC,oBAAoB,EAAE;YAC3B,IAAI,CAAC,oBAAoB,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;SAC3D;QACD,IAAI,IAAI,CAAC,qBAAqB,EAAE;YAC5B,IAAI,CAAC,qBAAqB,CAAC,eAAe,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;SAClE;QACD,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAC9B,IAAI,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACnC,OAAO,CAAC,eAAe,EAAE,CAAC;QAC1B,aAAa,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAClC,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACzB,IAAI,CAAC,mBAAmB,GAAG,CAAC,CAAC;KAChC,CAAC;IACF,MAAM,CAAC,SAAS,CAAC,UAAU,GAAG,YAAY;QACtC,YAAY,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;KAChE,CAAC;IACF,MAAM,CAAC,SAAS,CAAC,iBAAiB,GAAG,YAAY;QAC7C,IAAI,CAAC,oBAAoB,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE;YACzD,SAAS,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC;YAC3C,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,SAAS,EAAE,SAAS;SACvB,CAAC,CAAC;KACN,CAAC;IACF,MAAM,CAAC,SAAS,CAAC,gBAAgB,GAAG,UAAU,CAAC,EAAE;QAC7C,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,KAAK,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG;YACvH,CAAC,CAAC,cAAc,EAAE,CAAC;SACtB;QACD,IAAI,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,EAAE,GAAGC,UAAoB,CAAC,CAAC;QACnH,IAAI,cAAc,GAAG,aAAa,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;QAClE,IAAI,gBAAgB,GAAG,aAAa,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC;QACrE,IAAI,WAAW,CAAC;QAChB,IAAI,gBAAgB,EAAE;YAClB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,gBAAgB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBAC9C,IAAI,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAAE;oBACxE,WAAW,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;iBAC9D;aACJ;SACJ;QACD,IAAI,WAAW,EAAE;YACb,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,cAAc,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBAC5C,IAAI,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE;oBAC7E,IAAI,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAAE;wBACtE,IAAI,CAAC,mBAAmB,GAAG,CAAC,CAAC;qBAChC;iBACJ;aACJ;SACJ;QACD,IAAI,IAAI,CAAC,mBAAmB,KAAK,CAAC,EAAE;YAChC,IAAI,IAAI,GAAG,cAAc,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;YAC9E,OAAO,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE;gBAClD,IAAI,CAAC,mBAAmB,EAAE,CAAC;gBAC3B,IAAI,GAAG,cAAc,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;aAC7E;SACJ;QACD,IAAI,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,wBAAwB,CAAC;YACjG,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,oBAAoB,CAAC;YACzG,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,uBAAuB,CAAC;YAC1G,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,yBAAyB,CAAC,EAAE;YACxD,QAAQ,CAAC,CAAC,MAAM;gBACZ,KAAK,YAAY;oBACb,IAAI,CAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;oBAC1D,MAAM;gBACV,KAAK,WAAW;oBACZ,IAAI,CAAC,gBAAgB,CAAC,CAAC,EAAE,IAAI,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;oBACzD,MAAM;gBACV,KAAK,KAAK;oBACN,IAAI,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE;wBAC3C,IAAI,IAAI,CAAC,mBAAmB,GAAG,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE;4BACtD,IAAI,CAAC,mBAAmB,EAAE,CAAC;yBAC9B;qBACJ;oBACD,MAAM;gBACV,KAAK,UAAU;oBACX,IAAI,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE;wBAC3C,IAAI,IAAI,CAAC,mBAAmB,GAAG,CAAC,EAAE;4BAC9B,IAAI,CAAC,mBAAmB,EAAE,CAAC;yBAC9B;qBACJ;yBACI;wBACD,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,0BAA0B,CAAC,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC,KAAK,EAAE,CAAC;wBACnG,IAAI,CAAC,mBAAmB,GAAG,CAAC,CAAC;qBAChC;aACR;SACJ;KACJ,CAAC;IACF,MAAM,CAAC,SAAS,CAAC,gBAAgB,GAAG,UAAU,CAAC,EAAE,SAAS,EAAE,cAAc,EAAE;QACxE,IAAI,cAAc,CAAC;QACnB,IAAI,WAAW,CAAC;QAChB,IAAI,SAAS,EAAE;YACX,IAAI,IAAI,CAAC,mBAAmB,GAAG,cAAc,CAAC,MAAM,GAAG,CAAC,IAAI,cAAc,CAAC,IAAI,CAAC,mBAAmB,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE;gBAC1I,IAAI,CAAC,mBAAmB,EAAE,CAAC;aAC9B;SACJ;aACI;YACD,IAAI,IAAI,CAAC,mBAAmB,GAAG,CAAC,IAAI,cAAc,CAAC,IAAI,CAAC,mBAAmB,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE;gBAClH,IAAI,CAAC,mBAAmB,EAAE,CAAC;aAC9B;SACJ;QACD,IAAI,CAAC,CAAC,SAAS,KAAK,IAAI,CAAC,mBAAmB,GAAG,CAAC,CAAC,MAAM,SAAS,KAAK,IAAI,CAAC,mBAAmB,GAAG,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE;YACzH,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,oBAAoB,CAAC,EAAE;gBAC9I,IAAI,SAAS,EAAE;oBACX,IAAI,CAAC,mBAAmB,EAAE,CAAC;iBAC9B;qBACI;oBACD,IAAI,kBAAkB,GAAG,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,GAAGC,sBAAgC,CAAC,CAAC;oBAC3I,IAAI,kBAAkB,EAAE;wBACpB,WAAW,GAAG,kBAAkB,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;qBACvD;oBACD,IAAI,CAAC,mBAAmB,EAAE,CAAC;iBAC9B;gBACD,IAAI,IAAI,GAAG,cAAc,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;gBAC9E,OAAO,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE;oBAClD,KAAK,CAAC,SAAS,IAAI,IAAI,CAAC,mBAAmB,KAAK,cAAc,CAAC,MAAM,GAAG,CAAC;yBACpE,CAAC,SAAS,IAAI,IAAI,CAAC,mBAAmB,KAAK,CAAC,CAAC,GAAG;wBACjD,IAAI,cAAc,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE;4BACrG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,wBAAwB,CAAC,CAAC,KAAK,EAAE,CAAC;4BACpE,MAAM;yBACT;qBACJ;;oBAED,SAAS,GAAG,IAAI,CAAC,mBAAmB,EAAE,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;oBACpE,IAAI,GAAG,cAAc,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;iBAC7E;gBACD,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;gBAC1E,IAAI,IAAI,CAAC,YAAY,KAAK,SAAS,EAAE;oBACjC,cAAc,GAAG,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,GAAGA,sBAAgC,CAAC,CAAC;oBACnI,IAAI,SAAS,EAAE;wBACX,IAAI,eAAe,GAAG,KAAK,CAAC,CAAC;wBAC7B,IAAI,cAAc,EAAE;4BAChB,eAAe,GAAG,cAAc,CAAC,aAAa,CAAC,yBAAyB,CAAC,CAAC;yBAC7E;wBACD,IAAI,eAAe,EAAE;4BACjB,IAAI,KAAK,GAAG,cAAc,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,CAAC;4BAC9D,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;yBAC3F;qBACJ;yBACI;wBACD,IAAI,cAAc,EAAE;4BAChB,IAAI,gBAAgB,GAAG,cAAc,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;4BACzD,IAAI,WAAW,KAAK,gBAAgB,EAAE;gCAClC,IAAI,eAAe,GAAG,cAAc,CAAC,aAAa,CAAC,yBAAyB,CAAC,CAAC;gCAC9E,IAAI,eAAe,EAAE;oCACjB,cAAc,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,mBAAmB,GAAG,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;iCAChH;6BACJ;yBACJ;qBACJ;iBACJ;qBACI;oBACD,IAAI,cAAc,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,mBAAmB,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,qBAAqB,CAAC,EAAE;wBAC/G,cAAc,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,mBAAmB,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC;qBAC/G;yBACI,IAAI,cAAc,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,mBAAmB,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,oBAAoB,CAAC,EAAE;wBACnH,cAAc,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,mBAAmB,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;qBAC9G;iBACJ;aACJ;SACJ;aACI;YACD,IAAI,IAAI,CAAC,YAAY,KAAK,SAAS,EAAE;gBACjC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,wBAAwB,CAAC,CAAC,KAAK,EAAE,CAAC;aACvE;YACD,IAAI,IAAI,CAAC,YAAY,KAAK,YAAY,EAAE;gBACpC,IAAI,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,0BAA0B,CAAC,CAAC;gBACnF,IAAI,SAAS,KAAK,cAAc,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,EAAE;oBACtF,cAAc,CAAC,KAAK,EAAE,CAAC;iBAC1B;qBACI;oBACD,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,wBAAwB,CAAC,CAAC,KAAK,EAAE,CAAC;iBACvE;aACJ;SACJ;QACD,IAAI,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,oBAAoB,CAAC,EAAE;YACnD,IAAI,SAAS,EAAE;gBACX,cAAc,GAAG,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,GAAGA,sBAAgC,CAAC,CAAC;gBACnI,cAAc,CAAC,aAAa,CAAC,yBAAyB,CAAC,CAAC,KAAK,EAAE,CAAC;aACnE;iBACI;gBACD,IAAI,CAAC,mBAAmB,EAAE,CAAC;gBAC3B,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;aAC7E;SACJ;QACD,IAAI,CAAC,SAAS,IAAI,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,qBAAqB,CAAC,EAAE;YAClE,cAAc,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,mBAAmB,GAAG,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,GAAGA,sBAAgC,CAAC,CAAC;YACzI,IAAI,eAAe,GAAG,cAAc,CAAC,aAAa,CAAC,yBAAyB,CAAC,CAAC;YAC9E,IAAI,eAAe,EAAE;gBACjB,cAAc,CAAC,aAAa,CAAC,yBAAyB,CAAC,CAAC,KAAK,EAAE,CAAC;aACnE;SACJ;QACD,IAAI,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,wBAAwB,CAAC,EAAE;YACvD,IAAI,SAAS,EAAE;gBACX,IAAI,CAAC,mBAAmB,EAAE,CAAC;gBAC3B,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;gBAC1E,IAAI,cAAc,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,mBAAmB,GAAG,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,oBAAoB,CAAC,EAAE;oBAClH,cAAc,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,mBAAmB,GAAG,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;iBAClH;aACJ;iBACI;;gBAED,IAAI,CAAC,mBAAmB,CAAC;gBACzB,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;aAC7E;SACJ;QACD,IAAI,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,uBAAuB,CAAC,EAAE;YACtD,IAAI,SAAS,EAAE;gBACX,IAAI,CAAC,mBAAmB,GAAG,CAAC,CAAC;gBAC7B,IAAI,UAAU,GAAG,cAAc,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;gBACpF,OAAO,UAAU,IAAI,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE;oBAC9D,IAAI,CAAC,mBAAmB,EAAE,CAAC;oBAC3B,UAAU,GAAG,cAAc,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;iBACnF;gBACD,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;aAC7E;iBACI;gBACD,IAAI,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,0BAA0B,CAAC,CAAC;gBACnF,KAAK,cAAc,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,QAAQ,CAAC,eAAe,CAAC,GAAG;oBACzE,cAAc,CAAC,KAAK,EAAE,CAAC;iBAC1B;qBACI;oBACD,IAAI,CAAC,mBAAmB,GAAG,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC;oBACrD,IAAI,UAAU,GAAG,cAAc,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;oBACpF,OAAO,UAAU,IAAI,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE;wBAC9D,IAAI,CAAC,mBAAmB,EAAE,CAAC;wBAC3B,UAAU,GAAG,cAAc,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;qBACnF;oBACD,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;iBAC7E;aACJ;SACJ;QACD,IAAI,IAAI,CAAC,YAAY,KAAK,YAAY,IAAI,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,yBAAyB,CAAC,EAAE;YAC9F,IAAI,SAAS,EAAE;gBACX,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,wBAAwB,CAAC,CAAC,KAAK,EAAE,CAAC;aACvE;iBACI;gBACD,IAAI,CAAC,mBAAmB,GAAG,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC;gBACrD,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;aAC7E;SACJ;KACJ,CAAC;IACF,MAAM,CAAC,SAAS,CAAC,aAAa,GAAG,YAAY;QACzC,IAAI,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,EAAE,GAAGD,UAAoB,CAAC,CAAC;QACnH,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;QACpD,IAAI,IAAI,CAAC,YAAY,EAAE;YACnB,IAAI,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,GAAG,GAAGE,oBAA8B,CAAC,CAAC;YACxF,IAAI,CAAC,YAAY,CAAC,UAAU,GAAG,SAAS,CAAC,WAAW,CAAC;SACxD;KACJ,CAAC;IACF,MAAM,CAAC,SAAS,CAAC,UAAU,GAAG,YAAY;QACtC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QACtC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAC5E,IAAI,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,YAAY,EAAE,EAAE,IAAI,CAAC,CAAC;QACtD,IAAI,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE;YACnC,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,GAAGC,MAAgB;SACzC,CAAC,CAAC;QACH,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QACjC,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,IAAI,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9C,IAAI,CAAC,MAAM,GAAG,IAAI,GAAG,CAAC;YAClB,QAAQ,EAAEC,UAAoB;YAC9B,YAAY,EAAE,IAAI,CAAC,WAAW;YAC9B,YAAY,EAAE,OAAO;YACrB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,KAAK,EAAE,QAAQ;YACf,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;YACnC,QAAQ,EAAE,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC;YAC3C,SAAS,EAAE,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC;SAChD,CAAC,CAAC;QACH,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;;QAE7B,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,CAACC,sBAAgC,EAAE,KAAK,CAAC,CAAC;QACxE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,CAACC,+BAAyC,EAAE,KAAK,CAAC,CAAC;QACjF,IAAI,UAAU,GAAG,MAAM,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;QACpD,IAAI,OAAO,GAAG,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAChD,OAAO,CAAC,aAAa,CAAC,EAAE,KAAK,EAAE,8DAA8D,EAAE,CAAC,CAAC;QACjG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,GAAG,KAAK,GAAG,QAAQ,CAAC,CAACC,eAAyB,CAAC,CAAC;KAC1F,CAAC;IACF,MAAM,CAAC,SAAS,CAAC,QAAQ,GAAG,UAAU,GAAG,EAAE;QACvC,IAAI,KAAK,GAAG,IAAI,CAAC;QACjB,IAAI,GAAG,KAAK,IAAI,CAAC,WAAW,EAAE;YAC1B,OAAO;SACV;QACD,IAAI,SAAS,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;QAClC,IAAI,CAAC,OAAO,CAAC,GAAG,GAAG,kBAAkB,GAAG,iBAAiB,EAAE,SAAS,EAAE,UAAU,IAAI,EAAE;YAClF,IAAI,IAAI,CAAC,MAAM,EAAE;gBACb,OAAO;aACV;YACD,KAAK,CAAC,aAAa,CAAC,EAAE,WAAW,EAAE,GAAG,EAAE,EAAE,IAAI,CAAC,CAAC;YAChD,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAACA,eAAyB,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC;;YAE7E,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,OAAO,GAAG,GAAG,GAAG,MAAM,GAAG,OAAO,CAAC;YACxF,IAAI,CAAC,GAAG,EAAE;gBACN,KAAK,CAAC,aAAa,EAAE,CAAC;aACzB;SACJ,CAAC,CAAC;KACN,CAAC;IACF,MAAM,CAAC,SAAS,CAAC,YAAY,GAAG,YAAY;QACxC,IAAI,CAAC,aAAa,CAAC,EAAE,YAAY,EAAE,IAAI,CAAC,YAAY,KAAK,YAAY,GAAG,SAAS,GAAG,YAAY,EAAE,EAAE,IAAI,CAAC,CAAC;QAC1G,IAAI,CAAC,YAAY,EAAE,CAAC;KACvB,CAAC;IACF,MAAM,CAAC,SAAS,CAAC,UAAU,GAAG,YAAY;QACtC,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE;YAC1B,IAAI,CAAC,iBAAiB,EAAE,CAAC;SAC5B;QACD,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;KAC3C,CAAC;IACF,MAAM,CAAC,SAAS,CAAC,iBAAiB,GAAG,UAAU,CAAC,EAAE;QAC9C,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;QACzB,IAAI,aAAa,GAAG,CAAC,CAAC,YAAY,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;QAC3D,IAAI,aAAa,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,GAAG,UAAU,GAAG,EAAE,EAAE,QAAQ,GAAG,CAAC,EAAE,KAAK,aAAa,EAAE,EAAE,EAAE,CAAC;QACjG,aAAa,GAAG,aAAa,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,WAAW,GAAG,aAAa,CAAC;QACxE,IAAI,SAAS,GAAG,EAAE,aAAa,EAAE,IAAI,CAAC,WAAW,EAAE,aAAa,EAAE,aAAa,EAAE,CAAC;QAClF,IAAI,CAAC,aAAa,CAAC,EAAE,WAAW,EAAE,aAAa,EAAE,EAAE,IAAI,CAAC,CAAC;QACzD,IAAI,CAAC,aAAa,CAAC,aAAa,EAAE,CAAC,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;QAChE,IAAI,IAAI,CAAC,YAAY,KAAK,YAAY,IAAI,IAAI,CAAC,WAAW,EAAE;YACxD,IAAI,cAAc,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;YAC7C,IAAI,cAAc,GAAG,cAAc,CAAC,aAAa,CAAC,GAAG,GAAGC,iBAA2B,CAAC,CAAC;YACrF,IAAI,cAAc,EAAE;gBAChB,cAAc,CAAC,SAAS,CAAC,MAAM,CAACA,iBAA2B,CAAC,CAAC;aAChE;YACD,IAAI,SAAS,GAAG,cAAc,CAAC,aAAa,CAAC,GAAG,GAAG,aAAa,GAAGC,WAAqB,CAAC,CAAC;YAC1F,IAAI,SAAS,EAAE;gBACX,SAAS,CAAC,SAAS,CAAC,GAAG,CAACD,iBAA2B,CAAC,CAAC;gBACrD,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAACE,QAAkB,CAAC,CAAC;aACjE;iBACI;gBACD,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAACA,QAAkB,CAAC,CAAC;aAC9D;SACJ;QACD,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;KAC1C,CAAC;IACF,MAAM,CAAC,SAAS,CAAC,aAAa,GAAG,UAAU,QAAQ,EAAE,aAAa,EAAE;QAChE,IAAI,UAAU,GAAG,aAAa,CAAC,OAAO,CAAC,GAAG,GAAGC,WAAqB,CAAC,CAAC;QACpE,IAAI,UAAU,GAAG,UAAU,CAAC,WAAW,GAAG,aAAa,CAAC,WAAW,CAAC;QACpE,IAAI,UAAU,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;YAClC,IAAI,IAAI,CAAC,YAAY,KAAK,SAAS,EAAE;;gBAEjC,IAAI,OAAO,GAAG,KAAK,CAAC;gBACpB,OAAO,GAAG,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE,UAAU,EAAE,aAAa,EAAE,IAAI,CAAC,CAAC;gBAC9E,IAAI,CAAC,OAAO,KAAK,UAAU,CAAC,WAAW,GAAG,aAAa,CAAC,WAAW,CAAC,EAAE;oBAClE,OAAO,GAAG,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE,UAAU,EAAE,aAAa,EAAE,KAAK,CAAC,CAAC;iBAClF;gBACD,IAAI,UAAU,CAAC,WAAW,GAAG,aAAa,CAAC,WAAW,EAAE;oBACpD,IAAI,CAAC,sBAAsB,CAAC,QAAQ,EAAE,UAAU,EAAE,aAAa,CAAC,CAAC;iBACpE;aACJ;iBACI;gBACD,IAAI,CAAC,4BAA4B,CAAC,QAAQ,EAAE,UAAU,EAAE,aAAa,CAAC,CAAC;gBACvE,IAAI,UAAU,CAAC,WAAW,GAAG,aAAa,CAAC,WAAW,EAAE;oBACpD,IAAI,CAAC,uBAAuB,CAAC,UAAU,EAAE,aAAa,EAAE,QAAQ,CAAC,CAAC;iBACrE;aACJ;;YAED,IAAI,CAAC,UAAU,CAAC,WAAW,GAAG,aAAa,CAAC,WAAW,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE;gBAC9E,IAAI,CAAC,YAAY,GAAG,IAAI,OAAO,CAAC;oBAC5B,SAAS,EAAE,IAAI,CAAC,SAAS;iBAC5B,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,GAAG,GAAGA,WAAqB,CAAC,CAAC,CAAC;aACtE;SACJ;aACI,IAAI,CAAC,UAAU,EAAE;YAClB,IAAI,CAAC,aAAa,EAAE,CAAC;YACrB,IAAI,IAAI,CAAC,YAAY,KAAK,SAAS,EAAE;gBACjC,IAAI,OAAO,GAAG,KAAK,CAAC;gBACpB,OAAO,GAAG,IAAI,CAAC,sBAAsB,CAAC,UAAU,EAAE,aAAa,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;;gBAElF,IAAI,CAAC,OAAO,KAAK,UAAU,CAAC,WAAW,GAAG,aAAa,CAAC,WAAW,CAAC,EAAE;oBAClE,OAAO,GAAG,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE,UAAU,EAAE,aAAa,EAAE,IAAI,CAAC,CAAC;iBACjF;;gBAED,IAAI,CAAC,OAAO,KAAK,UAAU,CAAC,WAAW,GAAG,aAAa,CAAC,WAAW,CAAC,EAAE;oBAClE,OAAO,GAAG,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE,UAAU,EAAE,aAAa,EAAE,KAAK,CAAC,CAAC;iBAClF;aACJ;iBACI;gBACD,IAAI,CAAC,uBAAuB,CAAC,UAAU,EAAE,aAAa,EAAE,QAAQ,CAAC,CAAC;gBAClE,IAAI,UAAU,CAAC,WAAW,GAAG,aAAa,CAAC,WAAW,EAAE;oBACpD,IAAI,CAAC,4BAA4B,CAAC,QAAQ,EAAE,UAAU,EAAE,aAAa,CAAC,CAAC;iBAC1E;aACJ;SACJ;KACJ,CAAC;IACF,MAAM,CAAC,SAAS,CAAC,4BAA4B,GAAG,UAAU,QAAQ,EAAE,UAAU,EAAE,aAAa,EAAE;QAC3F,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;QACvD,KAAK,IAAI,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE;YACjD,IAAI,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;YACnD,IAAI,cAAc,GAAG,UAAU,CAAC,aAAa,CAAC,GAAG,GAAG,KAAK,CAAC,EAAE,GAAGC,YAAsB,CAAC,CAAC;YACvF,KAAK,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,WAAW,CAAC,MAAM,MAAM,UAAU,CAAC,WAAW,GAAG,aAAa,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,EAAE;gBAC3G,IAAI,UAAU,GAAG,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;gBAC/D,KAAK,IAAI,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,UAAU,CAAC,WAAW,GAAG,aAAa,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,EAAE;oBAC3G,IAAI,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;oBACnC,IAAI,CAAC,CAAC,IAAI,CAAC,YAAY,GAAG,cAAc,CAAC,KAAK,MAAM,IAAI,CAAC,YAAY,GAAG,cAAc,CAAC,MAAM,CAAC;4BACtF,IAAI,CAAC,UAAU,KAAK,cAAc,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,cAAc,GAAG,WAAW,CAAC,UAAU,CAAC,EAAE;wBAClG,IAAI,aAAa,GAAG,cAAc,CAAC,aAAa,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,GAAGA,YAAsB,CAAC,CAAC;wBACzF,IAAI,aAAa,EAAE;4BACf,IAAI,OAAO,GAAG,aAAa,CAAC,aAAa,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;4BACzD,aAAa,CAAC,YAAY,CAAC,mBAAmB,EAAE,aAAa,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC,CAAC;4BACtF,IAAI,CAAC,aAAa,CAAC,EAAE,UAAU,EAAE,cAAc,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,CAAC;4BAC/D,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;yBACnC;qBACJ;iBACJ;aACJ;SACJ;KACJ,CAAC;IACF,MAAM,CAAC,SAAS,CAAC,4BAA4B,GAAG,UAAU,QAAQ,EAAE,UAAU,EAAE,aAAa,EAAE;QAC3F,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;QACvD,KAAK,IAAI,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE;YACjD,IAAI,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;YACnD,IAAI,cAAc,GAAG,UAAU,CAAC,aAAa,CAAC,GAAG,GAAG,KAAK,CAAC,EAAE,GAAGA,YAAsB,CAAC,CAAC;YACvF,KAAK,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,WAAW,CAAC,MAAM,MAAM,UAAU,CAAC,WAAW,GAAG,aAAa,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,EAAE;gBAC3G,IAAI,UAAU,GAAG,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;gBAC/D,KAAK,IAAI,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,UAAU,CAAC,WAAW,GAAG,aAAa,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,EAAE;oBAC3G,IAAI,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;oBACnC,IAAI,CAAC,CAAC,IAAI,CAAC,YAAY,GAAG,cAAc,CAAC,KAAK,MAAM,IAAI,CAAC,YAAY,GAAG,cAAc,CAAC,MAAM,CAAC;4BACtF,IAAI,CAAC,UAAU,KAAK,cAAc,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,cAAc,GAAG,WAAW,CAAC,UAAU,CAAC,EAAE;wBACjG,IAAI,aAAa,GAAG,cAAc,CAAC,aAAa,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,GAAGA,YAAsB,CAAC,CAAC;wBACzF,IAAI,aAAa,EAAE;4BACf,IAAI,SAAS,GAAG,aAAa,CAAC,YAAY,CAAC,mBAAmB,CAAC,CAAC;4BAChE,IAAI,KAAK,GAAG,SAAS,GAAG,QAAQ,CAAC,SAAS,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC;4BACvD,IAAI,KAAK,KAAK,UAAU,CAAC,WAAW,GAAG,KAAK,CAAC,EAAE;gCAC3C,aAAa,CAAC,eAAe,CAAC,mBAAmB,CAAC,CAAC;gCACnD,IAAI,OAAO,GAAG,aAAa,CAAC,aAAa,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;gCACzD,IAAI,CAAC,aAAa,CAAC,EAAE,UAAU,EAAE,cAAc,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,CAAC;gCAChE,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;6BACnC;yBACJ;qBACJ;iBACJ;aACJ;SACJ;KACJ,CAAC;IACF,MAAM,CAAC,SAAS,CAAC,uBAAuB,GAAG,UAAU,UAAU,EAAE,aAAa,EAAE,QAAQ,EAAE;QACtF,IAAI,aAAa,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAC7D,KAAK,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,aAAa,CAAC,MAAM,MAAM,UAAU,CAAC,WAAW,GAAG,aAAa,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,EAAE;YACvG,IAAI,KAAK,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;YACtD,IAAI,QAAQ,GAAG,UAAU,CAAC,aAAa,CAAC,GAAG,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC;YACxD,IAAI,cAAc,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,GAAG,KAAK,CAAC,EAAE,GAAGA,YAAsB,CAAC,CAAC;YACrF,KAAK,IAAI,CAAC,GAAG,KAAK,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,UAAU,CAAC,WAAW,GAAG,aAAa,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,EAAE;gBAC5G,IAAI,UAAU,GAAG,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;gBACrE,IAAI,aAAa,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,GAAG,UAAU,CAAC,EAAE,CAAC,CAAC;gBAChE,KAAK,IAAI,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,UAAU,CAAC,WAAW,GAAG,aAAa,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,EAAE;oBAC3G,IAAI,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;oBACnC,IAAI,aAAa,GAAG,aAAa,CAAC,aAAa,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,GAAGA,YAAsB,CAAC,CAAC;oBACxF,IAAI,CAAC,CAAC,IAAI,CAAC,cAAc,KAAK,WAAW,CAAC,IAAI;yBACzC,IAAI,CAAC,cAAc,MAAM,WAAW,CAAC,UAAU,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,iBAAiB,CAAC,aAAa,CAAC,EAAE;wBACjH,aAAa,CAAC,YAAY,CAAC,uBAAuB,EAAE,aAAa,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC,CAAC;wBAC1F,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,CAAC,mBAAmB,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,MAAM,EAAE,aAAa,EAAE,cAAc,EAAE,IAAI,CAAC,CAAC;wBACjI,IAAI,IAAI,CAAC,UAAU,KAAK,cAAc,CAAC,KAAK,EAAE;4BAC1C,IAAI,OAAO,GAAG,aAAa,CAAC,aAAa,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;4BACzD,IAAI,CAAC,aAAa,CAAC,EAAE,UAAU,EAAE,cAAc,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,CAAC;4BAChE,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;yBACnC;wBACD,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,cAAc,CAAC,QAAQ,MAAM,IAAI,CAAC,IAAI,KAAK,cAAc,CAAC,WAAW,CAAC,KAAK,IAAI,CAAC,IAAI,KAAK,cAAc,CAAC,WAAW,CAAC,EAAE;4BACrI,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,aAAa,EAAE,KAAK,CAAC,mBAAmB,EAAE,IAAI,CAAC,CAAC;yBAC/E;qBACJ;iBACJ;aACJ;YACD,IAAI,EAAE,KAAK,CAAC,mBAAmB,IAAI,QAAQ,CAAC,aAAa,CAAC,GAAG,GAAGC,WAAqB,CAAC,CAAC,EAAE;gBACrF,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;aACtD;SACJ;KACJ,CAAC;IACF,MAAM,CAAC,SAAS,CAAC,gBAAgB,GAAG,UAAU,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE;QAC5E,IAAI,QAAQ,GAAG,YAAY,CAAC,OAAO,CAAC,aAAa,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,cAAc,CAAC,QAAQ,IAAI,IAAI,CAAC,IAAI,KAAK,cAAc,CAAC,WAAW,IAAI,cAAc,GAAG,WAAW,CAAC,CAAC;QACtL,IAAI,aAAa,GAAG,QAAQ,CAAC,QAAQ,CAAC;;;;QAItC,IAAI,MAAM,GAAG,CAAC,SAAS,IAAI,MAAM,MAAM,IAAI,CAAC,SAAS,CAAC;QACtD,aAAa,CAAC,aAAa,CAAC,EAAE,QAAQ,EAAE,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,EAAE,CAAC,EAAE,MAAM,GAAG,KAAK,GAAG,QAAQ,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;QAChH,IAAI,MAAM,EAAE;YACR,QAAQ,CAAC,UAAU,GAAG,YAAY;gBAC9B,IAAI,MAAM,EAAE;oBACR,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;oBAChE,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;oBAC5D,aAAa,CAAC,aAAa,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,GAAG,aAAa,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;oBACjF,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;oBACtD,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;iBAC5D;aACJ,CAAC;SACL;aACI;YACD,aAAa,CAAC,aAAa,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;YAClD,QAAQ,CAAC,UAAU,GAAG,IAAI,CAAC;SAC9B;KACJ,CAAC;IACF,MAAM,CAAC,SAAS,CAAC,uBAAuB,GAAG,UAAU,UAAU,EAAE,aAAa,EAAE,QAAQ,EAAE,OAAO,EAAE;QAC/F,IAAI,OAAO,KAAK,KAAK,CAAC,EAAE,EAAE,OAAO,GAAG,KAAK,CAAC,EAAE;QAC5C,IAAI,aAAa,GAAG,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QAC9D,IAAI,IAAI,GAAG,IAAI,CAAC;QAChB,KAAK,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,aAAa,CAAC,MAAM,KAAK,IAAI,GAAG,CAAC,EAAE,EAAE;YACvD,IAAI,KAAK,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;YACtD,IAAI,WAAW,GAAG,KAAK,CAAC,CAAC;YACzB,IAAI,cAAc,GAAG,KAAK,CAAC,CAAC;YAC5B,IAAI,KAAK,CAAC,mBAAmB,EAAE;gBAC3B,IAAI,cAAc,GAAG,UAAU,CAAC,aAAa,CAAC,GAAG,GAAG,KAAK,CAAC,EAAE,GAAG5B,iBAA2B,CAAC,CAAC;gBAC5F,IAAI,cAAc,EAAE;oBAChB,WAAW,GAAG,WAAW,CAAC,cAAc,EAAE,cAAc,CAAC,CAAC;oBAC1D,cAAc,GAAG,WAAW,CAAC,MAAM,CAAC;iBACvC;aACJ;iBACI;gBACD,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;gBAC/B,cAAc,GAAG,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,IAAI,CAAC;aACtE;YACD,KAAK,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,WAAW,CAAC,MAAM,KAAK,IAAI,GAAG,CAAC,EAAE,EAAE;gBAC3D,IAAI,UAAU,GAAG,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;;gBAE/D,KAAK,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,MAAM,KAAK,IAAI,IAAI,CAAC,OAAO,KAAK,UAAU,CAAC,WAAW,GAAG,aAAa,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,EAAE;oBAC9H,IAAI,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;oBACxD,IAAI,aAAa,GAAG,KAAK,CAAC,CAAC;oBAC3B,IAAI,cAAc,EAAE;wBAChB,aAAa,GAAG,cAAc,CAAC,aAAa,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG2B,YAAsB,CAAC,CAAC;qBACxF;oBACD,IAAI,CAAC,CAAC,IAAI,CAAC,cAAc,KAAK,WAAW,CAAC,IAAI;yBACzC,IAAI,CAAC,cAAc,MAAM,WAAW,CAAC,UAAU,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,iBAAiB,CAAC,aAAa,CAAC,EAAE;wBACjH,IAAI,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,YAAY,CAAC,uBAAuB,CAAC,EAAE,EAAE,CAAC,CAAC;wBAC9E,IAAI,CAAC,OAAO,KAAK,UAAU,CAAC,WAAW,GAAG,KAAK,CAAC,EAAE;4BAC9C,IAAI,GAAG,KAAK,CAAC;4BACb,MAAM;yBACT;wBACD,IAAI,UAAU,GAAG,UAAU,CAAC,aAAa,CAAC,GAAG,GAAG,UAAU,CAAC,EAAE,CAAC,CAAC;wBAC/D,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,cAAc,CAAC,QAAQ,MAAM,IAAI,CAAC,IAAI,KAAK,cAAc,CAAC,WAAW,CAAC,KAAK,IAAI,CAAC,IAAI,KAAK,cAAc,CAAC,WAAW,CAAC,EAAE;4BACrI,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,aAAa,EAAE,KAAK,CAAC,mBAAmB,EAAE,KAAK,CAAC,CAAC;yBAChF;wBACD,UAAU,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;wBACjC,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;wBAC9C,IAAI,IAAI,CAAC,YAAY,GAAG,cAAc,CAAC,KAAK,EAAE;4BAC1C,IAAI,CAAC,aAAa,CAAC,EAAE,UAAU,EAAE,cAAc,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,CAAC;4BAC/D,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,aAAa,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;yBACtE;qBACJ;iBACJ;aACJ;YACD,IAAI,QAAQ,GAAG,UAAU,CAAC,aAAa,CAAC,GAAG,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC;YACxD,IAAI,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,GAAGC,WAAqB,CAAC,CAAC;YAClE,IAAI,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,0BAA0B,CAAC,IAAI,OAAO,KAAK,IAAI,EAAE;gBAC7E,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,0BAA0B,CAAC,CAAC;aACzD;YACD,IAAI,WAAW,EAAE;gBACb,IAAI,KAAK,CAAC,mBAAmB,EAAE;oBAC3B,IAAI,cAAc,CAAC,iBAAiB,KAAK,CAAC,EAAE;wBACxC,IAAI,CAAC,oBAAoB,CAAC,WAAW,CAAC,CAAC;qBAC1C;iBACJ;qBACI;oBACD,IAAI,gBAAgB,GAAG,cAAc,CAAC,aAAa,CAAC,GAAG,GAAG,KAAK,CAAC,EAAE,GAAGD,YAAsB,CAAC,CAAC;oBAC7F,IAAI,gBAAgB,IAAI,gBAAgB,CAAC,iBAAiB,KAAK,CAAC,EAAE;wBAC9D,gBAAgB,CAAC,MAAM,EAAE,CAAC;qBAC7B;oBACD,IAAI,cAAc,GAAG,cAAc,CAAC,aAAa,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,GAAGH,WAAqB,CAAC,CAAC;oBACjI,IAAI,cAAc,IAAI,cAAc,CAAC,iBAAiB,KAAK,CAAC,EAAE;wBAC1D,cAAc,CAAC,MAAM,EAAE,CAAC;wBACxB,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAACC,QAAkB,CAAC,CAAC;qBAC9D;iBACJ;aACJ;SACJ;QACD,IAAI,IAAI,CAAC,WAAW,EAAE;YAClB,IAAI,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;YAC1C,IAAI,WAAW,CAAC,iBAAiB,KAAK,CAAC,EAAE;gBACrC,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;gBAC5C,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;aAC3B;SACJ;KACJ,CAAC;IACF,MAAM,CAAC,SAAS,CAAC,mBAAmB,GAAG,UAAU,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE;QACjI,IAAI,cAAc,CAAC;QACnB,IAAI,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;QAC9E,IAAI,eAAe,GAAG,UAAU,CAAC,aAAa,CAAC,GAAG,GAAG,OAAO,CAAC,CAAC;QAC9D,IAAI,SAAS,EAAE;YACX,IAAI,WAAW,GAAG,cAAc,CAAC,aAAa,CAAC,GAAG,GAAG,OAAO,GAAGzB,iBAA2B,CAAC,CAAC;YAC5F,IAAI,CAAC,WAAW,EAAE;gBACd,cAAc,GAAG,IAAI,CAAC,iBAAiB,CAAC,OAAO,GAAGA,iBAA2B,CAAC,CAAC;gBAC/E,cAAc,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC6B,sBAAgC,CAAC,CAAC;gBACvE,cAAc,CAAC,WAAW,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;aACtD;iBACI;gBACD,cAAc,GAAG,WAAW,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;aAC7D;YACD,IAAI,iBAAiB,GAAG,cAAc,CAAC,MAAM,CAAC;YAC9C,IAAI,eAAe,IAAI,eAAe,CAAC,SAAS,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE;gBACrE,iBAAiB,CAAC,SAAS,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;aACjD;YACD,QAAQ,GAAG,iBAAiB,CAAC,YAAY,CAAC,OAAO,EAAE,iBAAiB,CAAC,aAAa,CAAC,GAAG,GAAGD,WAAqB,CAAC,CAAC;kBAC1G,iBAAiB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;SAC3C;aACI;YACD,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;gBACnB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,GAAGE,gBAA0B,CAAC,CAAC;gBAC/F,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;gBAChF,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAACC,wBAAkC,CAAC,CAAC;gBAC3E,IAAI,CAAC,oBAAoB,CAAC,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;aACtE;iBACI;gBACD,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAACN,QAAkB,CAAC,CAAC;gBAC9D,IAAI,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;gBAC1C,IAAI,cAAc,GAAG,WAAW,CAAC,aAAa,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,GAAGD,WAAqB,CAAC,CAAC;gBAC9H,IAAI,cAAc,EAAE;oBAChB,IAAI,gBAAgB,GAAG,WAAW,CAAC,aAAa,CAAC,GAAG,GAAG,OAAO,GAAGG,YAAsB,CAAC,CAAC;oBACzF,IAAI,CAAC,gBAAgB,EAAE;wBACnB,gBAAgB,GAAG,IAAI,CAAC,oBAAoB,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;wBACnE,IAAI,eAAe,IAAI,eAAe,CAAC,SAAS,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE;4BACrE,gBAAgB,CAAC,SAAS,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;yBAChD;wBACD,cAAc,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;qBAC3C;oBACD,QAAQ,GAAG,gBAAgB,CAAC,YAAY,CAAC,OAAO,EAAE,gBAAgB,CAAC,aAAa,CAAC,GAAG,GAAGC,WAAqB,CAAC,CAAC,GAAG,gBAAgB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;iBACrJ;qBACI;oBACD,IAAI,CAAC,oBAAoB,CAAC,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;iBACtE;aACJ;YACD,cAAc,GAAG,IAAI,CAAC,WAAW,CAAC;SACrC;QACD,IAAI,OAAO,KAAK,IAAI,EAAE;YAClB,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,OAAO,EAAE,cAAc,CAAC,CAAC;SACzD;KACJ,CAAC;IACF,MAAM,CAAC,SAAS,CAAC,iBAAiB,GAAG,UAAU,IAAI,EAAE,OAAO,EAAE,cAAc,EAAE;QAC1E,QAAQ,IAAI,CAAC,IAAI;YACb,KAAK,QAAQ;gBACT,IAAI,CAAC,kBAAkB,CAAC,iBAAiB,CAAC,IAAI,EAAE,OAAO,EAAE,cAAc,CAAC,CAAC;gBACzE,MAAM;YACV,KAAK,UAAU;gBACX,IAAI,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,IAAI,EAAE,OAAO,EAAE,cAAc,CAAC,CAAC;gBAC3E,MAAM;YACV,KAAK,aAAa;gBACd,IAAI,CAAC,uBAAuB,CAAC,iBAAiB,CAAC,IAAI,EAAE,OAAO,EAAE,cAAc,CAAC,CAAC;gBAC9E,MAAM;YACV,KAAK,UAAU;gBACX,IAAI,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,IAAI,EAAE,OAAO,EAAE,cAAc,CAAC,CAAC;gBAC3E,MAAM;YACV,KAAK,aAAa;gBACd,IAAI,CAAC,uBAAuB,CAAC,iBAAiB,CAAC,IAAI,EAAE,OAAO,EAAE,cAAc,CAAC,CAAC;gBAC9E,MAAM;YACV,KAAK,UAAU;gBACX,IAAI,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,IAAI,EAAE,OAAO,EAAE,cAAc,CAAC,CAAC;gBAC3E,MAAM;YACV,KAAK,aAAa;gBACd,IAAI,IAAI,CAAC,YAAY,KAAK,YAAY,EAAE;oBACpC,IAAI,CAAC,uBAAuB,CAAC,iBAAiB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;oBAC9D,MAAM;iBACT;SACR;KACJ,CAAC;IACF,MAAM,CAAC,SAAS,CAAC,oBAAoB,GAAG,UAAU,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,EAAE;QACvF,IAAI,cAAc,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE;YAC3C,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,GAAGJ,WAAqB;YAC3E,SAAS,EAAEQ,uBAAiC;SAC/C,CAAC,CAAC;QACH,IAAI,cAAc,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;QAC7C,cAAc,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;QACtC,IAAI,gBAAgB,GAAG,IAAI,CAAC,oBAAoB,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;QACvE,gBAAgB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACjC,cAAc,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;QACxC,IAAI,QAAQ,KAAK,IAAI,CAAC,WAAW,EAAE;YAC/B,cAAc,CAAC,SAAS,CAAC,GAAG,CAACT,iBAA2B,CAAC,CAAC;SAC7D;KACJ,CAAC;IACF,MAAM,CAAC,SAAS,CAAC,mBAAmB,GAAG,UAAU,QAAQ,EAAE,UAAU,EAAE,aAAa,EAAE,OAAO,EAAE;QAC3F,IAAI,UAAU,GAAG,IAAI,CAAC;QACtB,IAAI,OAAO,GAAG,KAAK,CAAC;QACpB,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;QACvD,KAAK,IAAI,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,UAAU,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE;;YAEjE,OAAO,GAAG,OAAO,GAAG,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,EAAE,UAAU,EAAE,aAAa,CAAC,GAAG,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,EAAE,UAAU,EAAE,aAAa,CAAC,CAAC;YAChK,UAAU,GAAG,CAAC,OAAO,KAAK,UAAU,CAAC,WAAW,GAAG,aAAa,CAAC,WAAW,CAAC,CAAC;SACjF;QACD,OAAO,OAAO,CAAC;KAClB,CAAC;IACF,MAAM,CAAC,SAAS,CAAC,0BAA0B,GAAG,UAAU,WAAW,EAAE;QACjE,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACzC,IAAI,KAAK,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;YAC1D,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,KAAK,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE;gBACzC,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,cAAc,GAAG,WAAW,CAAC,OAAO,EAAE;oBAC1E,KAAK,EAAE,CAAC;oBACR,MAAM;iBACT;aACJ;YACD,IAAI,KAAK,GAAG,CAAC,EAAE;gBACX,OAAO,KAAK,CAAC;aAChB;SACJ;QACD,OAAO,KAAK,KAAK,CAAC,CAAC;KACtB,CAAC;IACF,MAAM,CAAC,SAAS,CAAC,sBAAsB,GAAG,UAAU,WAAW,EAAE,CAAC,EAAE,WAAW,EAAE;QAC7E,IAAI,KAAK,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;QAC1D,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,KAAK,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE;YACzC,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,cAAc,GAAG,WAAW,CAAC,OAAO,EAAE;gBAC1E,OAAO,CAAC,CAAC;aACZ;SACJ;QACD,CAAC,GAAG,WAAW,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAChC,IAAI,WAAW,EAAE;YACb,OAAO,CAAC,CAAC,KAAK,WAAW,CAAC,MAAM,IAAI,CAAC,GAAG,IAAI,CAAC,sBAAsB,CAAC,WAAW,EAAE,CAAC,EAAE,WAAW,CAAC,CAAC;SACpG;aACI;YACD,OAAO,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,sBAAsB,CAAC,WAAW,EAAE,CAAC,EAAE,WAAW,CAAC,CAAC;SACjF;KACJ,CAAC;IACF,MAAM,CAAC,SAAS,CAAC,gBAAgB,GAAG,UAAU,KAAK,EAAE,CAAC,EAAE,WAAW,EAAE;QACjE,IAAI,IAAI,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;QAC7C,IAAI,IAAI,CAAC,cAAc,GAAG,WAAW,CAAC,OAAO,EAAE;YAC3C,OAAO,CAAC,CAAC;SACZ;QACD,CAAC,GAAG,WAAW,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAChC,IAAI,WAAW,EAAE;YACb,OAAO,CAAC,CAAC,KAAK,KAAK,CAAC,MAAM,IAAI,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC,EAAE,WAAW,CAAC,CAAC;SAClF;aACI;YACD,OAAO,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC,EAAE,WAAW,CAAC,CAAC;SACrE;KACJ,CAAC;IACF,MAAM,CAAC,SAAS,CAAC,kBAAkB,GAAG,UAAU,QAAQ,EAAE,GAAG,EAAE,UAAU,EAAE,UAAU,EAAE,aAAa,EAAE,UAAU,EAAE;QAC9G,IAAI,KAAK,GAAG,IAAI,CAAC;QACjB,IAAI,UAAU,KAAK,KAAK,CAAC,EAAE,EAAE,UAAU,GAAG,KAAK,CAAC,EAAE;QAClD,IAAI,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;QAC5D,IAAI,KAAK,CAAC,WAAW,IAAI,CAAC,UAAU,EAAE;YAClC,OAAO,KAAK,CAAC;SAChB;QACD,IAAI,mBAAmB,GAAG,UAAU,UAAU,EAAE;YAC5C,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,KAAK,aAAa,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;SAChF,CAAC;QACF,IAAI,aAAa,GAAG,UAAU,IAAI,EAAE;YAChC,OAAO,CAAC,IAAI,CAAC,YAAY,GAAG,cAAc,CAAC,MAAM,MAAM,IAAI,CAAC,UAAU,KAAK,cAAc,CAAC,KAAK,CAAC,CAAC;SACpG,CAAC;QACF,IAAI,eAAe,GAAG,UAAU,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE;YACvD,IAAI,SAAS,GAAG,KAAK,CAAC,aAAa,CAAC,KAAK,EAAE;gBACvC,SAAS,EAAE,iBAAiB,GAAGV,KAAe,GAAGoB,UAAoB;gBACrE,EAAE,EAAE,EAAE,GAAG,mBAAmB,GAAG,KAAK;gBACpC,KAAK,EAAE,EAAE,YAAY,EAAE,KAAK,CAAC,QAAQ,EAAE,EAAE,UAAU,EAAE,GAAG,CAAC,QAAQ,EAAE,EAAE;aACxE,CAAC,CAAC;YACH,SAAS,CAAC,aAAa,CAAC,YAAY,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;YAC3D,IAAI,CAAC,UAAU,EAAE;gBACb,SAAS,CAAC,YAAY,CAAC,kBAAkB,EAAE,aAAa,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC,CAAC;aACpF;YACD,OAAO,SAAS,CAAC;SACpB,CAAC;QACF,IAAI,gBAAgB,GAAG,UAAU,KAAK,EAAE,GAAG,EAAE;YACzC,IAAI,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC;iBACzD,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YAChE,IAAI,SAAS,GAAG,aAAa,CAAC,aAAa,CAAC,GAAG,GAAG,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,GAAGN,YAAsB,CAAC,CAAC;YAChI,IAAI,SAAS,GAAG,UAAU,GAAG,aAAa,CAAC,aAAa,CAAC,GAAG,GAAG,UAAU,CAAC,EAAE,GAAG,mBAAmB,GAAG,KAAK,CAAC;gBACvG,eAAe,CAAC,UAAU,CAAC,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;YAC1D,KAAK,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC,IAAI,GAAG,EAAE,CAAC,EAAE,EAAE;gBAC/B,IAAI,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;gBACxD,IAAI,EAAE,IAAI,CAAC,cAAc,GAAG,WAAW,CAAC,OAAO,CAAC,EAAE;oBAC9C,SAAS;iBACZ;gBACD,IAAI,GAAG,GAAG,aAAa,CAAC,aAAa,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,GAAGA,YAAsB,CAAC,CAAC;gBAC9E,SAAS,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;gBAC3B,IAAI,CAAC,aAAa,CAAC,EAAE,UAAU,EAAE,cAAc,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,CAAC;gBAChE,IAAI,IAAI,CAAC,IAAI,KAAK,cAAc,CAAC,WAAW,IAAI,KAAK,CAAC,YAAY,KAAK,SAAS,EAAE;oBAC9E,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,aAAa,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,GAAGnB,sBAAgC,CAAC,EAAE,IAAI,CAAC,CAAC;iBAChG;qBACI;oBACD,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,aAAa,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;iBAC7D;aACJ;SACJ,CAAC;QACF,IAAI,sBAAsB,GAAG,UAAU,KAAK,EAAE,GAAG,EAAE;YAC/C,IAAI,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC;iBACpD,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;YACjD,IAAI,SAAS,GAAG,aAAa,CAAC,aAAa,CAAC,GAAG,GAAG,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACxG,IAAI,SAAS,GAAG,UAAU,GAAG,aAAa,CAAC,aAAa,CAAC,GAAG,GAAG,KAAK,CAAC,EAAE,GAAG,mBAAmB,GAAG,KAAK,CAAC;gBAClG,eAAe,CAAC,KAAK,CAAC,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;YACrD,KAAK,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC,IAAI,GAAG,EAAE,CAAC,EAAE,EAAE;gBAC/B,IAAI,UAAU,GAAG,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;gBAC/D,IAAI,GAAG,GAAG,aAAa,CAAC,aAAa,CAAC,GAAG,GAAG,UAAU,CAAC,EAAE,CAAC,CAAC;gBAC3D,SAAS,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;gBAC3B,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,EAAE,UAAU,EAAE,cAAc,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,CAAC;gBAC/E,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,cAAc,CAAC,WAAW,IAAI,KAAK,CAAC,YAAY,KAAK,SAAS,EAAE;oBAC7F,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,aAAa,CAAC,GAAG,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,GAAGA,sBAAgC,CAAC,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;iBAC9H;qBACI;oBACD,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,aAAa,CAAC,GAAG,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;iBAC3F;aACJ;SACJ,CAAC;QACF,IAAI,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC;QACpC,IAAI,WAAW,KAAK,eAAe,CAAC,MAAM,EAAE;YACxC,KAAK,IAAI,CAAC,IAAI,KAAK,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;;gBAErD,CAAC,GAAG,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;gBAC7D,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;;gBAEd,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,mBAAmB,CAAC,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE;oBAChF,CAAC,GAAG,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;;oBAE7D,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,mBAAmB,CAAC,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE;wBAChF,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;wBACd,IAAI,CAAC,IAAI,CAAC,EAAE;4BACR,CAAC,GAAG,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;yBAChE;;wBAED,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,mBAAmB,CAAC,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE;4BAChF,sBAAsB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;yBAChC;6BACI;4BACD,sBAAsB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;yBAChC;wBACD,CAAC,GAAG,CAAC,CAAC;wBACN,IAAI,CAAC,UAAU,KAAK,UAAU,CAAC,WAAW,GAAG,aAAa,CAAC,WAAW,CAAC,EAAE;4BACrE,OAAO,IAAI,CAAC;yBACf;qBACJ;yBACI;wBACD,CAAC,GAAG,CAAC,CAAC;qBACT;iBACJ;aACJ;SACJ;aACI;YACD,IAAI,IAAI,CAAC,0BAA0B,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE;gBACpD,IAAI,UAAU,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;gBACtC,KAAK,IAAI,CAAC,IAAI,UAAU,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;;oBAEpD,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;oBACtD,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;;oBAEd,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,aAAa,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE;wBACzE,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;;wBAEtD,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,aAAa,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE;4BACzE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;;4BAEd,IAAI,CAAC,IAAI,CAAC,EAAE;gCACR,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;6BACzD;4BACD,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,aAAa,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE;gCACzE,gBAAgB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;6BAC1B;iCACI;gCACD,gBAAgB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;6BAC1B;4BACD,CAAC,GAAG,CAAC,CAAC;4BACN,IAAI,CAAC,UAAU,KAAK,UAAU,CAAC,WAAW,GAAG,aAAa,CAAC,WAAW,CAAC,EAAE;gCACrE,OAAO,IAAI,CAAC;6BACf;yBACJ;6BACI;4BACD,CAAC,GAAG,CAAC,CAAC;yBACT;qBACJ;iBACJ;aACJ;SACJ;QACD,OAAO,KAAK,CAAC;KAChB,CAAC;IACF,MAAM,CAAC,SAAS,CAAC,kBAAkB,GAAG,UAAU,QAAQ,EAAE,GAAG,EAAE,UAAU,EAAE,UAAU,EAAE,aAAa,EAAE,UAAU,EAAE;QAC9G,IAAI,KAAK,GAAG,IAAI,CAAC;QACjB,IAAI,UAAU,KAAK,KAAK,CAAC,EAAE,EAAE,UAAU,GAAG,KAAK,CAAC,EAAE;QAClD,IAAI,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;QAC5D,IAAI,KAAK,CAAC,WAAW,IAAI,CAAC,UAAU,EAAE;YAClC,OAAO,KAAK,CAAC;SAChB;QACD,IAAI,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC;QACpC,IAAI,GAAG,GAAG,aAAa,CAAC,aAAa,CAAC,GAAG,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC;QACtD,IAAI,aAAa,GAAG,GAAG,CAAC,gBAAgB,CAAC,GAAG,GAAG,iBAAiB,CAAC,CAAC;QAClE,IAAI,aAAa,GAAG,UAAU,IAAI,EAAE;YAChC,OAAO,CAAC,IAAI,CAAC,YAAY,GAAG,cAAc,CAAC,KAAK,MAAM,IAAI,CAAC,UAAU,KAAK,cAAc,CAAC,MAAM,CAAC,CAAC;SACpG,CAAC;QACF,IAAI,kBAAkB,GAAG,UAAU,eAAe,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE;YACpE,IAAI,MAAM,KAAK,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC,EAAE;YACzC,IAAI,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC;iBACzD,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,eAAe,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;YACvG,IAAI,MAAM,GAAG,UAAU,CAAC,EAAE;gBACtB,IAAI,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;gBACxD,IAAI,IAAI,CAAC,cAAc,GAAG,WAAW,CAAC,OAAO,EAAE;oBAC3C,IAAI,KAAK,GAAG,aAAa,CAAC,aAAa,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;oBACvD,IAAI,CAAC,aAAa,CAAC,EAAE,UAAU,EAAE,cAAc,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,CAAC;oBAC/D,IAAI,IAAI,CAAC,IAAI,KAAK,cAAc,CAAC,WAAW,EAAE;wBAC1C,KAAK,GAAG,aAAa,CAAC,aAAa,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,SAAS,CAAC,CAAC;qBAClE;oBACD,KAAK,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;iBAClC;aACJ,CAAC;YACF,MAAM,CAAC,KAAK,CAAC,CAAC;YACd,IAAI,MAAM,EAAE;gBACR,MAAM,CAAC,MAAM,CAAC,CAAC;aAClB;YACD,MAAM,CAAC,GAAG,CAAC,CAAC;SACf,CAAC;QACF,IAAI,wBAAwB,GAAG,UAAU,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE;YAChE,IAAI,MAAM,KAAK,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC,EAAE;YACzC,IAAI,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC;iBACpD,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;YACjD,IAAI,CAAC,UAAU,EAAE;gBACb,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,mBAAmB,EAAE,aAAa,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC,CAAC;aACzH;YACD,IAAI,MAAM,GAAG,UAAU,CAAC,EAAE;gBACtB,IAAI,UAAU,GAAG,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;gBAC/D,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,cAAc,GAAG,WAAW,CAAC,OAAO,EAAE;oBAC1D,IAAI,KAAK,GAAG,aAAa,CAAC,aAAa,CAAC,GAAG,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;oBACtE,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,EAAE,UAAU,EAAE,cAAc,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,CAAC;oBAC9E,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,cAAc,CAAC,WAAW,EAAE;wBACzD,KAAK,GAAG,aAAa,CAAC,aAAa,CAAC,GAAG,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,GAAGA,sBAAgC,CAAC,CAAC;qBACxG;oBACD,KAAK,CAAC,WAAW,CAAC,KAAK,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;iBACjD;aACJ,CAAC;YACF,MAAM,CAAC,KAAK,CAAC,CAAC;YACd,IAAI,MAAM,EAAE;gBACR,MAAM,CAAC,MAAM,CAAC,CAAC;aAClB;YACD,MAAM,CAAC,GAAG,CAAC,CAAC;SACf,CAAC;QACF,IAAI,QAAQ,GAAG,UAAU,EAAE,EAAE;YACzB,IAAI,CAAC,UAAU,EAAE;gBACb,IAAI,KAAK,GAAG,aAAa,CAAC,aAAa,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC;gBAClD,KAAK,CAAC,YAAY,CAAC,mBAAmB,EAAE,aAAa,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC,CAAC;aACjF;SACJ,CAAC;QACF,IAAI,WAAW,KAAK,eAAe,CAAC,MAAM,EAAE;YACxC,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC1B,KAAK,IAAI,CAAC,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;oBAClD,IAAI,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,YAAY,CAAC,EAAE,EAAE,CAAC,CAAC;oBAC/F,IAAI,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,UAAU,CAAC,EAAE,EAAE,CAAC,CAAC;;oBAE3F,IAAI,CAAC,GAAG,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC;oBACzE,IAAI,aAAa,CAAC,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;2BACtE,aAAa,CAAC,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;wBAC1E,IAAI,GAAG,KAAK,CAAC,EAAE;4BACX,wBAAwB,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;yBAC3C;6BACI,IAAI,aAAa,CAAC,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;4BAC9E,wBAAwB,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;yBAC9C;wBACD,IAAI,CAAC,UAAU,KAAK,UAAU,CAAC,WAAW,GAAG,aAAa,CAAC,WAAW,CAAC,EAAE;4BACrE,OAAO,IAAI,CAAC;yBACf;qBACJ;iBACJ;aACJ;YACD,KAAK,IAAI,CAAC,IAAI,KAAK,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;gBACtD,IAAI,UAAU,GAAG,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;gBAC/D,IAAI,YAAY,GAAG,EAAE,CAAC;gBACtB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;oBAC9C,IAAI,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,cAAc,GAAG,WAAW,CAAC,OAAO,EAAE;wBACnF,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;qBACxB;iBACJ;;gBAED,KAAK,YAAY,CAAC,MAAM,GAAG,CAAC,GAAG;oBAC3B,IAAI,aAAa,CAAC,UAAU,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,aAAa,CAAC,UAAU,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;wBACtG,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE;4BAC3B,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;4BACxB,kBAAkB,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;yBAC3D;6BACI,IAAI,aAAa,CAAC,UAAU,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;4BACvD,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;4BACxB,kBAAkB,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;yBAC5E;wBACD,IAAI,CAAC,UAAU,KAAK,UAAU,CAAC,WAAW,GAAG,aAAa,CAAC,WAAW,CAAC,EAAE;4BACrE,OAAO,IAAI,CAAC;yBACf;qBACJ;iBACJ;aACJ;SACJ;aACI;YACD,IAAI,IAAI,CAAC,0BAA0B,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE;gBACpD,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;oBAC1B,KAAK,IAAI,CAAC,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;wBAClD,IAAI,YAAY,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;wBAC7D,IAAI,KAAK,GAAG,QAAQ,CAAC,YAAY,CAAC,YAAY,CAAC,YAAY,CAAC,EAAE,EAAE,CAAC,CAAC;wBAClE,IAAI,GAAG,GAAG,QAAQ,CAAC,YAAY,CAAC,YAAY,CAAC,UAAU,CAAC,EAAE,EAAE,CAAC,CAAC;;wBAE9D,IAAI,UAAU,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;wBACtC,IAAI,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,KAAK,EAAE,KAAK,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC;wBAClE,IAAI,aAAa,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;+BACtE,aAAa,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE;4BAC1E,IAAI,GAAG,KAAK,CAAC,EAAE;gCACX,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;gCAC1B,kBAAkB,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;6BACrC;iCACI,IAAI,aAAa,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE;gCAC9E,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;gCAC1B,kBAAkB,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;6BACxC;4BACD,IAAI,CAAC,UAAU,KAAK,UAAU,CAAC,WAAW,GAAG,aAAa,CAAC,WAAW,CAAC,EAAE;gCACrE,OAAO,IAAI,CAAC;6BACf;yBACJ;qBACJ;iBACJ;aACJ;iBACI;gBACD,KAAK,IAAI,CAAC,IAAI,KAAK,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;oBACtD,IAAI,UAAU,GAAG,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;oBAC/D,KAAK,IAAI,CAAC,IAAI,UAAU,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;wBACrD,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;wBACtD,IAAI,CAAC,GAAG,CAAC,EAAE;4BACP,SAAS;yBACZ;wBACD,IAAI,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;wBACxD,IAAI,aAAa,CAAC,IAAI,CAAC,EAAE;4BACrB,IAAI,CAAC,IAAI,KAAK,cAAc,CAAC,WAAW,GAAG,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,EAAE,GAAGA,sBAAgC,CAAC,CAAC;4BACpH,kBAAkB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;4BAC5B,IAAI,CAAC,UAAU,KAAK,UAAU,CAAC,WAAW,GAAG,aAAa,CAAC,WAAW,CAAC,EAAE;gCACrE,OAAO,IAAI,CAAC;6BACf;yBACJ;qBACJ;iBACJ;aACJ;SACJ;QACD,OAAO,KAAK,CAAC;KAChB,CAAC;IACF,MAAM,CAAC,SAAS,CAAC,mBAAmB,GAAG,UAAU,QAAQ,EAAE,UAAU,EAAE,aAAa,EAAE,OAAO,EAAE;QAC3F,IAAI,OAAO,GAAG,KAAK,CAAC;QACpB,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;QACvD,KAAK,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,KAAK,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE;YACxD,OAAO,GAAG,OAAO,GAAG,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,EAAE,UAAU,EAAE,aAAa,EAAE,KAAK,EAAE,IAAI,CAAC;gBACjG,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,EAAE,UAAU,EAAE,aAAa,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;SACzF;QACD,OAAO,OAAO,CAAC;KAClB,CAAC;;IAEF,MAAM,CAAC,SAAS,CAAC,kBAAkB,GAAG,UAAU,QAAQ,EAAE,GAAG,EAAE,UAAU,EAAE,UAAU,EAAE,aAAa,EAAE,UAAU,EAAE,WAAW,EAAE;QAC3H,IAAI,KAAK,GAAG,IAAI,CAAC;QACjB,IAAI,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;QAC5D,IAAI,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC;QACpC,IAAI,GAAG,GAAG,aAAa,CAAC,aAAa,CAAC,GAAG,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC;QACtD,IAAI,aAAa,GAAG,GAAG,CAAC,gBAAgB,CAAC,GAAG,GAAG,iBAAiB,CAAC,CAAC;QAClE,IAAI,aAAa,GAAG,UAAU,IAAI,EAAE;YAChC,OAAO,CAAC,IAAI,CAAC,YAAY,GAAG,cAAc,CAAC,MAAM,MAAM,IAAI,CAAC,UAAU,KAAK,cAAc,CAAC,KAAK,CAAC,CAAC;SACpG,CAAC;QACF,IAAI,kBAAkB,GAAG,UAAU,eAAe,EAAE,KAAK,EAAE,SAAS,EAAE;YAClE,IAAI,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC;iBACzD,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,eAAe,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;YACvG,IAAI,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;YAC5D,IAAI,IAAI,CAAC,cAAc,GAAG,WAAW,CAAC,OAAO,EAAE;gBAC3C,IAAI,KAAK,GAAG,SAAS,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,GAAG,SAAS,GAAG,SAAS,CAAC,aAAa,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;gBAC1F,IAAI,CAAC,aAAa,CAAC,EAAE,UAAU,EAAE,cAAc,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,CAAC;gBAChE,IAAI,IAAI,CAAC,IAAI,KAAK,cAAc,CAAC,WAAW,EAAE;oBAC1C,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,GAAGA,sBAAgC,CAAC,CAAC;iBACpF;gBACD,KAAK,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;aAClC;SACJ,CAAC;QACF,IAAI,yBAAyB,GAAG,UAAU,CAAC,EAAE;YACzC,IAAI,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC;iBAC1D,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC;YAC7D,IAAI,IAAI,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAC5D,IAAI,IAAI,CAAC,cAAc,GAAG,WAAW,CAAC,OAAO,EAAE;gBAC3C,IAAI,KAAK,GAAG,aAAa,CAAC,aAAa,CAAC,GAAG,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;gBACnG,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,EAAE,UAAU,EAAE,cAAc,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,CAAC;gBAC5G,IAAI,IAAI,CAAC,IAAI,KAAK,cAAc,CAAC,WAAW,EAAE;oBAC1C,KAAK,GAAG,aAAa,CAAC,aAAa,CAAC,GAAG,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,GAAGA,sBAAgC,CAAC,CAAC;iBACrI;gBACD,KAAK,CAAC,WAAW,CAAC,KAAK,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;aAC9E;SACJ,CAAC;QACF,IAAI,WAAW,KAAK,eAAe,CAAC,GAAG,EAAE;;YAErC,IAAI,CAAC,IAAI,CAAC,0BAA0B,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE;gBACrD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;oBAC/C,IAAI,UAAU,GAAG,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;oBAC/D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;wBAC9C,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;wBACrD,IAAI,CAAC,KAAK,UAAU,CAAC,KAAK,CAAC,MAAM,EAAE;4BAC/B,SAAS;yBACZ;wBACD,IAAI,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;wBACxD,IAAI,aAAa,CAAC,IAAI,CAAC,EAAE;4BACrB,IAAI,OAAO,GAAG,aAAa,CAAC,aAAa,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;4BACzD,IAAI,IAAI,CAAC,IAAI,KAAK,aAAa,EAAE;gCAC7B,OAAO,GAAG,aAAa,CAAC,aAAa,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,GAAGA,sBAAgC,CAAC,CAAC;6BAC3F;4BACD,IAAI,SAAS,GAAG,OAAO,CAAC,YAAY,CAAC,mBAAmB,CAAC,CAAC;4BAC1D,IAAI,KAAK,GAAG,SAAS,GAAG,QAAQ,CAAC,SAAS,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC;4BACvD,IAAI,KAAK,KAAK,UAAU,KAAK,UAAU,CAAC,WAAW,GAAG,KAAK,CAAC,CAAC,EAAE;gCAC3D,kBAAkB,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;gCAClC,IAAI,CAAC,UAAU,IAAI,WAAW,EAAE;oCAC5B,OAAO,CAAC,eAAe,CAAC,mBAAmB,CAAC,CAAC;iCAChD;6BACJ;iCACI,IAAI,KAAK,EAAE;gCACZ,OAAO,IAAI,CAAC;6BACf;yBACJ;qBACJ;iBACJ;aACJ;SACJ;aACI;YACD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;;gBAE/C,KAAK,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,GAAG;oBAClE,IAAI,UAAU,GAAG,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;oBAC/D,IAAI,OAAO,GAAG,aAAa,CAAC,aAAa,CAAC,GAAG,GAAG,UAAU,CAAC,EAAE,CAAC,CAAC;oBAC/D,IAAI,SAAS,GAAG,OAAO,CAAC,YAAY,CAAC,mBAAmB,CAAC,CAAC;oBAC1D,IAAI,KAAK,GAAG,SAAS,GAAG,QAAQ,CAAC,SAAS,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC;oBACvD,IAAI,YAAY,GAAG,EAAE,CAAC;oBACtB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;wBAC9C,IAAI,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,cAAc,GAAG,WAAW,CAAC,OAAO,EAAE;4BACnF,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;yBACxB;qBACJ;oBACD,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,KAAK,KAAK,KAAK,UAAU,KAAK,UAAU,CAAC,WAAW,GAAG,KAAK,CAAC,CAAC,EAAE;wBACxF,kBAAkB,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;wBAChD,kBAAkB,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;wBAChD,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE;4BAC3B,kBAAkB,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;yBACnD;wBACD,IAAI,CAAC,UAAU,IAAI,WAAW,EAAE;4BAC5B,OAAO,CAAC,eAAe,CAAC,mBAAmB,CAAC,CAAC;yBAChD;qBACJ;yBACI,IAAI,KAAK,EAAE;wBACZ,OAAO,IAAI,CAAC;qBACf;iBACJ;aACJ;SACJ;QACD,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;YAC1B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBAC3C,IAAI,YAAY,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;gBAC7D,IAAI,SAAS,GAAG,YAAY,CAAC,YAAY,CAAC,mBAAmB,CAAC,CAAC;gBAC/D,IAAI,KAAK,GAAG,SAAS,GAAG,QAAQ,CAAC,SAAS,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC;gBACvD,IAAI,KAAK,KAAK,UAAU,KAAK,UAAU,CAAC,WAAW,GAAG,KAAK,CAAC,CAAC,EAAE;oBAC3D,IAAI,KAAK,GAAG,QAAQ,CAAC,YAAY,CAAC,YAAY,CAAC,YAAY,CAAC,EAAE,EAAE,CAAC,CAAC;oBAClE,IAAI,GAAG,GAAG,QAAQ,CAAC,YAAY,CAAC,YAAY,CAAC,UAAU,CAAC,EAAE,EAAE,CAAC,CAAC;oBAC9D,IAAI,WAAW,KAAK,eAAe,CAAC,GAAG,EAAE;wBACrC,IAAI,UAAU,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;wBACtC,IAAI,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,KAAK,EAAE,KAAK,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;wBACjE,kBAAkB,CAAC,CAAC,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC;wBAC3C,kBAAkB,CAAC,CAAC,EAAE,CAAC,EAAE,YAAY,CAAC,CAAC;;wBAEvC,IAAI,CAAC,KAAK,GAAG,EAAE;4BACX,kBAAkB,CAAC,CAAC,EAAE,GAAG,EAAE,YAAY,CAAC,CAAC;yBAC5C;qBACJ;yBACI;wBACD,IAAI,CAAC,GAAG,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;wBACxE,yBAAyB,CAAC,KAAK,CAAC,CAAC;wBACjC,yBAAyB,CAAC,CAAC,CAAC,CAAC;wBAC7B,IAAI,CAAC,KAAK,GAAG,EAAE;4BACX,yBAAyB,CAAC,GAAG,CAAC,CAAC;yBAClC;qBACJ;oBACD,IAAI,CAAC,UAAU,IAAI,WAAW,EAAE;wBAC5B,YAAY,CAAC,eAAe,CAAC,mBAAmB,CAAC,CAAC;qBACrD;iBACJ;qBACI,IAAI,KAAK,EAAE;oBACZ,OAAO,IAAI,CAAC;iBACf;aACJ;SACJ;QACD,OAAO,KAAK,CAAC;KAChB,CAAC;IACF,MAAM,CAAC,SAAS,CAAC,kBAAkB,GAAG,UAAU,QAAQ,EAAE,GAAG,EAAE,UAAU,EAAE,UAAU,EAAE,aAAa,EAAE,UAAU,EAAE,WAAW,EAAE;QAC3H,IAAI,KAAK,GAAG,IAAI,CAAC;QACjB,IAAI,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;QAC5D,IAAI,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC;QACpC,IAAI,GAAG,GAAG,aAAa,CAAC,aAAa,CAAC,GAAG,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC;QACtD,IAAI,aAAa,GAAG,GAAG,CAAC,gBAAgB,CAAC,GAAG,GAAG,iBAAiB,CAAC,CAAC;QAClE,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE;YAC5B,OAAO,KAAK,CAAC;SAChB;QACD,IAAI,kBAAkB,GAAG,UAAU,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE;YAC9D,IAAI,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC;gBACrD,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;YACrE,IAAI,MAAM,GAAG,UAAU,CAAC,EAAE;gBACtB,IAAI,IAAI,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;gBAC7C,IAAI,IAAI,CAAC,cAAc,GAAG,WAAW,CAAC,OAAO,EAAE;oBAC3C,IAAI,SAAS,GAAG,SAAS,CAAC,aAAa,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,GAAGmB,YAAsB,CAAC,CAAC;oBAChF,IAAI,KAAK,GAAG,SAAS,CAAC,aAAa,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;oBACnD,IAAI,CAAC,aAAa,CAAC,EAAE,UAAU,EAAE,cAAc,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,CAAC;oBAC/D,IAAI,IAAI,CAAC,IAAI,KAAK,cAAc,CAAC,WAAW,EAAE;wBAC1C,KAAK,GAAG,SAAS,CAAC,aAAa,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,GAAGnB,sBAAgC,CAAC,CAAC;qBACrF;oBACD,KAAK,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;oBAC/B,SAAS,CAAC,qBAAqB,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;iBAC7D;aACJ,CAAC;YACF,MAAM,CAAC,KAAK,CAAC,CAAC;YACd,IAAI,MAAM,EAAE;gBACR,MAAM,CAAC,MAAM,CAAC,CAAC;aAClB;YACD,MAAM,CAAC,GAAG,CAAC,CAAC;YACZ,IAAI,CAAC,UAAU,IAAI,WAAW,EAAE;gBAC5B,MAAM,CAAC,SAAS,CAAC,CAAC;aACrB;SACJ,CAAC;QACF,IAAI,wBAAwB,GAAG,UAAU,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE;YACpE,IAAI,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC;gBAC3D,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC;YAC5D,IAAI,MAAM,GAAG,UAAU,CAAC,EAAE;gBACtB,IAAI,UAAU,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;gBACzD,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,cAAc,GAAG,WAAW,CAAC,OAAO,EAAE;oBAC1D,IAAI,aAAa,GAAG,SAAS,CAAC,aAAa,CAAC,GAAG,GAAG,UAAU,CAAC,EAAE,CAAC,CAAC;oBACjE,IAAI,KAAK,GAAG,aAAa,CAAC,aAAa,CAAC,GAAG,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;oBACtE,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,EAAE,UAAU,EAAE,cAAc,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,CAAC;oBAC9E,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,cAAc,CAAC,WAAW,EAAE;wBACzD,KAAK,GAAG,aAAa,CAAC,aAAa,CAAC,GAAG,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,GAAGA,sBAAgC,CAAC,CAAC;qBACxG;oBACD,KAAK,CAAC,WAAW,CAAC,KAAK,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC9C,SAAS,CAAC,qBAAqB,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC;iBACjE;aACJ,CAAC;YACF,MAAM,CAAC,KAAK,CAAC,CAAC;YACd,IAAI,MAAM,EAAE;gBACR,MAAM,CAAC,MAAM,CAAC,CAAC;aAClB;YACD,MAAM,CAAC,GAAG,CAAC,CAAC;YACZ,IAAI,CAAC,UAAU,IAAI,WAAW,EAAE;gBAC5B,MAAM,CAAC,SAAS,CAAC,CAAC;aACrB;SACJ,CAAC;QACF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAC3C,IAAI,YAAY,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;YAC7D,IAAI,SAAS,GAAG,YAAY,CAAC,YAAY,CAAC,kBAAkB,CAAC,CAAC;YAC9D,IAAI,KAAK,GAAG,SAAS,GAAG,QAAQ,CAAC,SAAS,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC;YACvD,IAAI,KAAK,KAAK,UAAU,KAAK,UAAU,CAAC,WAAW,GAAG,KAAK,CAAC,CAAC,EAAE;gBAC3D,IAAI,KAAK,GAAG,QAAQ,CAAC,YAAY,CAAC,YAAY,CAAC,YAAY,CAAC,EAAE,EAAE,CAAC,CAAC;gBAClE,IAAI,GAAG,GAAG,QAAQ,CAAC,YAAY,CAAC,YAAY,CAAC,UAAU,CAAC,EAAE,EAAE,CAAC,CAAC;gBAC9D,IAAI,WAAW,KAAK,eAAe,CAAC,GAAG,EAAE;oBACrC,IAAI,UAAU,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;oBACtC,IAAI,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,KAAK,EAAE,KAAK,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;oBACjE,IAAI,CAAC,KAAK,GAAG,EAAE;wBACX,kBAAkB,CAAC,KAAK,EAAE,GAAG,EAAE,YAAY,CAAC,CAAC;qBAChD;yBACI;wBACD,kBAAkB,CAAC,KAAK,EAAE,GAAG,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC;qBACnD;iBACJ;qBACI;oBACD,IAAI,CAAC,GAAG,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;oBACxE,IAAI,CAAC,KAAK,GAAG,EAAE;wBACX,wBAAwB,CAAC,KAAK,EAAE,GAAG,EAAE,YAAY,CAAC,CAAC;qBACtD;yBACI;wBACD,wBAAwB,CAAC,KAAK,EAAE,GAAG,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC;qBACzD;iBACJ;gBACD,IAAI,CAAC,UAAU,IAAI,WAAW,EAAE;oBAC5B,YAAY,CAAC,eAAe,CAAC,kBAAkB,CAAC,CAAC;iBACpD;aACJ;iBACI,IAAI,KAAK,EAAE;gBACZ,OAAO,IAAI,CAAC;aACf;SACJ;QACD,OAAO,KAAK,CAAC;KAChB,CAAC;IACF,MAAM,CAAC,SAAS,CAAC,iBAAiB,GAAG,UAAU,OAAO,EAAE,gBAAgB,EAAE;QACtE,IAAI,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,GAAG0B,oBAA8B,CAAC,CAAC;QAC1E,CAAC,gBAAgB,IAAI,aAAa,CAAC,SAAS,CAAC,GAAG,CAACC,qBAA+B,CAAC,KAAK,aAAa,CAAC,SAAS,CAAC,MAAM,CAACA,qBAA+B,CAAC,CAAC,EAAE;KAC3J,CAAC;IACF,MAAM,CAAC,SAAS,CAAC,WAAW,GAAG,UAAU,OAAO,EAAE,IAAI,EAAE;QACpD,IAAI,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,GAAGP,WAAqB,CAAC,CAAC;QACjE,IAAI,IAAI,CAAC,IAAI,KAAK,cAAc,CAAC,MAAM,EAAE;YACrC,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;SAC3D;aACI,IAAI,IAAI,CAAC,IAAI,KAAK,cAAc,CAAC,QAAQ,EAAE;YAC5C,IAAI,CAAC,oBAAoB,CAAC,kBAAkB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;SAC/D;aACI,IAAI,IAAI,CAAC,IAAI,KAAK,cAAc,CAAC,WAAW,EAAE;YAC/C,IAAI,CAAC,uBAAuB,CAAC,qBAAqB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;SACrE;aACI,IAAI,IAAI,CAAC,IAAI,KAAK,cAAc,CAAC,QAAQ,EAAE;YAC5C,MAAM,CAAC,OAAO,CAAC,CAAC;YAChB,IAAI,CAAC,qBAAqB,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;SACnD;aACI,IAAI,IAAI,CAAC,IAAI,KAAK,cAAc,CAAC,WAAW,EAAE;YAC/C,IAAI,CAAC,uBAAuB,CAAC,qBAAqB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;SACrE;QACD,aAAa,CAAC,SAAS,CAAC,MAAM,CAACO,qBAA+B,EAAEC,iBAA2B,EAAEC,kBAA4B,EAAEC,iBAA2B,CAAC,CAAC;QACxJ,IAAI,IAAI,CAAC,UAAU,KAAK,cAAc,CAAC,KAAK,EAAE;YAC1C,aAAa,CAAC,SAAS,CAAC,GAAG,CAACF,iBAA2B,EAAED,qBAA+B,CAAC,CAAC;SAC7F;aACI;YACD,aAAa,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,UAAU,KAAK,cAAc,CAAC,MAAM;gBAClEE,kBAA4B,GAAGC,iBAA2B,CAAC,CAAC;SACnE;KACJ,CAAC;IACF,MAAM,CAAC,SAAS,CAAC,sBAAsB,GAAG,UAAU,QAAQ,EAAE,UAAU,EAAE,aAAa,EAAE;QACrF,IAAI,aAAa,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAC7D,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE;YAC5B,OAAO;SACV;QACD,IAAI,OAAO,GAAG,UAAU,CAAC,EAAE;YACvB,IAAI,KAAK,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;YACtD,IAAI,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,GAAG,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC;YACnE,QAAQ,CAAC,YAAY,CAAC,qBAAqB,EAAE,aAAa,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC,CAAC;YACnF,IAAI,cAAc,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,GAAG,KAAK,CAAC,EAAE,GAAGX,YAAsB,CAAC,CAAC;YACrF,IAAI,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC,KAAK,EAAE;gBAC5C,SAAS,EAAEY,qBAA+B,GAAG1B,KAAe,GAAGuB,iBAA2B;gBAC1F,EAAE,EAAE,KAAK,CAAC,EAAE,GAAGZ,WAAqB,GAAGG,YAAsB;aAChE,CAAC,CAAC;YACH,QAAQ,CAAC,YAAY,CAAC,aAAa,EAAE,cAAc,CAAC,CAAC;YACrD,IAAI,UAAU,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,UAAU,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,EAAE,KAAK,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YAC7H,IAAI,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;;YAEzD,MAAM,CAAC,kBAAkB,CAAC,QAAQ,EAAE,GAAG,EAAE,UAAU,EAAE,UAAU,EAAE,aAAa,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;YAC7F,MAAM,CAAC,kBAAkB,CAAC,QAAQ,EAAE,GAAG,EAAE,UAAU,EAAE,UAAU,EAAE,aAAa,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;YAC7F,IAAI,QAAQ,GAAG,MAAM,CAAC,oBAAoB,CAAC,sBAAsB,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,YAAY,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;YAC/J,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC;gBAC1C,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,CAAC;YAC3F,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBAC/C,IAAI,UAAU,GAAG,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;gBAC/D,IAAI,aAAa,GAAG,cAAc,CAAC,aAAa,CAAC,GAAG,GAAG,UAAU,CAAC,EAAE,CAAC,CAAC;gBACtE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;oBAC9C,IAAI,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;oBACxD,IAAI,OAAO,GAAG,aAAa,CAAC,aAAa,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,GAAGA,YAAsB,CAAC,CAAC;oBAClF,IAAI,OAAO,KAAK,IAAI,EAAE;wBAClB,MAAM,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;wBAClC,MAAM,CAAC,iBAAiB,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;qBACrD;iBACJ;aACJ;SACJ,CAAC;QACF,IAAI,MAAM,GAAG,IAAI,CAAC;QAClB,KAAK,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,aAAa,CAAC,MAAM,MAAM,UAAU,CAAC,WAAW,GAAG,aAAa,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,EAAE;YACvG,OAAO,CAAC,CAAC,CAAC,CAAC;SACd;KACJ,CAAC;;IAEF,MAAM,CAAC,SAAS,CAAC,sBAAsB,GAAG,UAAU,UAAU,EAAE,aAAa,EAAE,OAAO,EAAE,QAAQ,EAAE;QAC9F,IAAI,OAAO,KAAK,KAAK,CAAC,EAAE,EAAE,OAAO,GAAG,KAAK,CAAC,EAAE;QAC5C,IAAI,WAAW,GAAG,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QAC5D,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE;YAC1B,OAAO,KAAK,CAAC;SAChB;QACD,IAAI,OAAO,GAAG,UAAU,CAAC,EAAE;YACvB,IAAI,KAAK,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;YACpD,IAAI,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,GAAG,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC;YACnE,IAAI,CAAC,QAAQ,EAAE;gBACX,OAAO,OAAO,CAAC;aAClB;YACD,IAAI,KAAK,GAAG,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,qBAAqB,CAAC,EAAE,EAAE,CAAC,CAAC;YACvE,IAAI,CAAC,OAAO,KAAK,UAAU,CAAC,WAAW,GAAG,KAAK,CAAC,EAAE;gBAC9C,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;aAC1B;YACD,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAChC,IAAI,UAAU,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,UAAU,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,EAAE,KAAK,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YAC7H,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC;gBAC1C,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE,EAAE,IAAI,CAAC,CAAC;YAC5F,IAAI,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;;YAEzD,MAAM,CAAC,kBAAkB,CAAC,QAAQ,EAAE,GAAG,EAAE,UAAU,EAAE,UAAU,EAAE,aAAa,EAAE,IAAI,CAAC,CAAC;YACtF,MAAM,CAAC,kBAAkB,CAAC,QAAQ,EAAE,GAAG,EAAE,UAAU,EAAE,UAAU,EAAE,aAAa,EAAE,IAAI,CAAC,CAAC;YACtF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBAC/C,IAAI,UAAU,GAAG,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;gBAC/D,IAAI,aAAa,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,GAAG,UAAU,CAAC,EAAE,CAAC,CAAC;gBAChE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;oBAC9C,IAAI,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;oBACxD,IAAI,OAAO,GAAG,aAAa,CAAC,aAAa,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,GAAGA,YAAsB,CAAC,CAAC;oBAClF,IAAI,OAAO,KAAK,IAAI,EAAE;wBAClB,MAAM,CAAC,iBAAiB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;wBACxC,MAAM,CAAC,mBAAmB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;qBAC7C;iBACJ;aACJ;SACJ,CAAC;QACF,IAAI,MAAM,GAAG,IAAI,CAAC;QAClB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACzC,IAAI,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;YACzB,IAAI,OAAO,OAAO,KAAK,QAAQ;gBAC3B,OAAO,OAAO,CAAC,KAAK,CAAC;YACzB,IAAI,OAAO,KAAK,OAAO;gBACnB,MAAM;SACb;QACD,OAAO,KAAK,CAAC;KAChB,CAAC;IACF,MAAM,CAAC,SAAS,CAAC,cAAc,GAAG,UAAU,OAAO,EAAE;QACjD,IAAI,eAAe,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,GAAG,GAAG,OAAO,GAAGH,WAAqB,GAAGgB,WAAqB,CAAC,CAAC;QACvH,IAAI,eAAe,EAAE;YACjB,IAAI,aAAa,GAAG,eAAe,CAAC,aAAa,CAAC;YAClD,IAAI,CAAC,oBAAoB,CAAC,sBAAsB,CAAC,eAAe,CAAC,CAAC;YAClE,MAAM,CAAC,aAAa,CAAC,CAAC;SACzB;KACJ,CAAC;IACF,MAAM,CAAC,SAAS,CAAC,mBAAmB,GAAG,UAAU,UAAU,EAAE,QAAQ,EAAE;QACnE,IAAI,KAAK,GAAG,IAAI,CAAC;QACjB,IAAI,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;QACjE,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE;;;;YAIhC,OAAO,CAAC,KAAK,CAAC,YAAY,KAAK,SAAS,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,aAAa,MAAM,CAAC,UAAU;gBACzG,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK,UAAU,KAAK,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;SAC9G,CAAC,CAAC;;QAEH,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;;QAEjE,OAAO,UAAU,GAAG,MAAM,CAAC,OAAO,EAAE,GAAG,MAAM,CAAC;KACjD,CAAC;IACF,MAAM,CAAC,SAAS,CAAC,aAAa,GAAG,YAAY;QACzC,IAAI,IAAI,CAAC,YAAY,EAAE;YACnB,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;YAC5B,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;SAC5B;KACJ,CAAC;IACF,MAAM,CAAC,SAAS,CAAC,qBAAqB,GAAG,UAAU,KAAK,EAAE;QACtD,IAAI,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,GAAGzB,UAAoB,CAAC,CAAC;QACjI,IAAI,CAAC,aAAa,EAAE;YAChB,OAAO;SACV;QACD,IAAI,UAAU,GAAG,aAAa,CAAC,OAAO,CAAC,GAAG,GAAGW,WAAqB,CAAC,CAAC;QACpE,IAAI,IAAI,CAAC,YAAY,KAAK,YAAY,EAAE;YACpC,IAAI,CAAC,uBAAuB,CAAC,aAAa,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;SACxE;aACI;YACD,IAAI,CAAC,sBAAsB,CAAC,aAAa,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;SACvE;KACJ,CAAC;IACF,MAAM,CAAC,SAAS,CAAC,kBAAkB,GAAG,UAAU,CAAC,EAAE;QAC/C,IAAI,KAAK,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,mBAAmB,GAAG,CAAC,CAAC;QAC7B,IAAI,SAAS,GAAG,CAAC,CAAC,aAAa,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;QACxD,IAAI,aAAa,GAAG,CAAC,CAAC,YAAY,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;QAC3D,IAAI,SAAS,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,GAAG,UAAU,GAAG,EAAE,EAAE,QAAQ,GAAG,CAAC,EAAE,KAAK,SAAS,EAAE,EAAE,EAAE,CAAC;QACzF,IAAI,aAAa,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,GAAG,UAAU,GAAG,EAAE,EAAE,QAAQ,GAAG,CAAC,EAAE,KAAK,aAAa,EAAE,EAAE,EAAE,CAAC;QACjG,SAAS,GAAG,SAAS,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC;QAC5D,IAAI,SAAS,GAAG;YACZ,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,SAAS;SACzG,CAAC;QACF,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,SAAS,EAAE,UAAU,IAAI,EAAE;YACpD,IAAI,IAAI,CAAC,MAAM,EAAE;gBACb,OAAO;aACV;YACD,KAAK,CAAC,aAAa,EAAE,CAAC;YACtB,IAAI,CAAC,KAAK,CAAC,WAAW,KAAK,aAAa,KAAK,CAAC,CAAC,CAAC,EAAE;gBAC9C,KAAK,CAAC,qBAAqB,CAAC,aAAa,CAAC,CAAC;aAC9C;YACD,IAAI,kBAAkB,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;YACxF,IAAI,CAAC,CAAC,kBAAkB,CAAC,aAAa,CAAC,GAAG,GAAGe,YAAsB,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,EAAE;gBAC3I,IAAI,QAAQ,GAAG,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;gBACpG,MAAM,CAAC,QAAQ,EAAE,kBAAkB,CAAC,CAAC;aACxC;SACJ,CAAC,CAAC;KACN,CAAC;IACF,MAAM,CAAC,SAAS,CAAC,cAAc,GAAG,UAAU,IAAI,EAAE;QAC9C,IAAI,KAAK,GAAG,IAAI,CAAC;QACjB,IAAI,QAAQ,GAAG,EAAE,CAAC;QAClB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAClC,IAAI,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;YACjD,IAAI,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE;gBACpC,SAAS,EAAE,SAAS,CAAC,MAAM;gBAC3B,EAAE,EAAE,SAAS,CAAC,EAAE,GAAGC,SAAmB;aACzC,CAAC,CAAC;YACH,MAAM,CAAC,OAAO,GAAG,YAAY,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;YACxD,MAAM,CAAC,UAAU,GAAG,YAAY,EAAE,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;YAC1D,IAAI,GAAG,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,SAAS,CAAC,EAAE,EAAE,QAAQ,EAAE,SAAS,CAAC,QAAQ,EAAE,CAAC;YACvF,IAAI,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE;gBACpC,SAAS,EAAE,GAAG,CAAC,QAAQ;gBACvB,EAAE,EAAE,SAAS,CAAC,EAAE,GAAG3B,UAAoB;aAC1C,CAAC,CAAC;YACH,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC4B,eAAyB,CAAC,CAAC;YACjD,GAAG,CAAC,OAAO,GAAG,OAAO,CAAC;YACtB,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;SACtB;QACD,OAAO,QAAQ,CAAC;KACnB,CAAC;IACF,MAAM,CAAC,SAAS,CAAC,gBAAgB,GAAG,UAAU,KAAK,EAAE;QACjD,IAAI,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAC1F,IAAI,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;QACxE,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAC1B,IAAI,IAAI,CAAC,YAAY,KAAK,YAAY,EAAE;YACpC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAACC,sBAAgC,CAAC,CAAC;SAChE;QACD,IAAI,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,EAAE,GAAG7B,UAAoB,CAAC,CAAC;QACnH,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;KACvD,CAAC;IACF,MAAM,CAAC,SAAS,CAAC,iBAAiB,GAAG,UAAU,KAAK,EAAE;QAClD,IAAI,KAAK,GAAG,IAAI,CAAC;QACjB,IAAI,cAAc,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE;YAC9C,EAAE,EAAE,KAAK;SACZ,CAAC,CAAC;QACH,IAAI,cAAc,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE;YAC3C,SAAS,EAAE8B,sBAAgC;YAC3C,KAAK,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE;SAC7B,CAAC,CAAC;QACH,IAAI,WAAW,GAAG,IAAI,cAAc,CAAC;YACjC,OAAO,EAAEC,aAAuB;YAChC,QAAQ,EAAEC,mBAA6B,GAAGlC,KAAe,GAAGmC,yBAAmC;YAC/F,MAAM,EAAE,cAAc;YACtB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;YACzC,WAAW,EAAE,UAAU,IAAI,EAAE;gBACzB,IAAI,GAAG,GAAG,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,GAAGC,oBAA8B,CAAC,GAAG,IAAI,CAAC;gBAC/F,IAAI,GAAG,EAAE;oBACL,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;iBACtB;aACJ;SACJ,EAAE,cAAc,CAAC,CAAC;QACnB,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAACC,eAAyB,CAAC,CAAC;QACtD,aAAa,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;QACpC,IAAI,SAAS,CAAC;QACd,cAAc,CAAC,SAAS,GAAG,cAAc,CAAC,OAAO,GAAG,YAAY,EAAE,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,GAAG,cAAc,CAAC,SAAS,CAAC,QAAQ,CAAC,yBAAyB,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC;QACnL,cAAc,CAAC,SAAS,GAAG,UAAU,CAAC,EAAE,EAAE,QAAQ,KAAK,CAAC,gBAAgB,CAAC,CAAC,EAAE,cAAc,EAAE,SAAS,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC;QAClH,OAAO,WAAW,CAAC;KACtB,CAAC;IACF,MAAM,CAAC,SAAS,CAAC,gBAAgB,GAAG,UAAU,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE;QAChE,IAAI,KAAK,CAAC;QACV,IAAI,SAAS,EAAE;YACX,KAAK,GAAG,MAAM,CAAC,sBAAsB,CAAC,eAAe,CAAC,CAAC;SAC1D;aACI;YACD,IAAI,WAAW,GAAG,MAAM,CAAC,aAAa,CAAC,kCAAkC,CAAC,CAAC;YAC3E,KAAK,GAAG,WAAW,CAAC,sBAAsB,CAAC,eAAe,CAAC,CAAC;SAC/D;QACD,IAAI,WAAW,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,YAAY,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,aAAa,CAAC,aAAa,CAAC,GAAG,IAAI,CAAC;QAC7P,IAAI,UAAU,CAAC;QACf,IAAI,WAAW,KAAK,IAAI,KAAK,CAAC,CAAC,GAAG,KAAK,KAAK,CAAC,IAAI,IAAI,CAAC,SAAS,GAAG,CAAC,EAAE;YACjE,IAAI,CAAC,CAAC,GAAG,KAAK,WAAW,KAAK,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,GAAG,KAAK,KAAK,CAAC,EAAE;gBAC3D,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,KAAK,CAAC,KAAK,IAAI,CAAC,SAAS,GAAG,CAAC,IAAI,IAAI,CAAC,SAAS,KAAK,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;oBACxG,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;oBACnB,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;oBAC7D,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;oBAC/C,IAAI,WAAW,IAAI,CAAC,CAAC,GAAG,KAAK,KAAK,EAAE;wBAChC,CAAC,CAAC,cAAc,EAAE,CAAC;wBACnB,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC,KAAK,EAAE,CAAC;qBAC7D;iBACJ;qBACI,IAAI,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,SAAS,IAAI,CAAC,EAAE;oBAC/D,IAAI,CAAC,SAAS,EAAE,CAAC;oBACjB,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;oBAC7D,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;iBAClD;aACJ;iBACI,IAAI,CAAC,CAAC,GAAG,KAAK,SAAS,KAAK,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,GAAG,KAAK,KAAK,CAAC,EAAE;gBAC7D,IAAI,WAAW,KAAK,IAAI,KAAK,CAAC,CAAC,GAAG,KAAK,KAAK,CAAC,EAAE;oBAC3C,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,KAAK,CAAC,CAAC,EAAE;wBAC1C,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;wBAClC,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;wBAC7D,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;wBAChD,IAAI,WAAW,KAAK,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,GAAG,KAAK,KAAK,CAAC,EAAE;4BAChD,CAAC,CAAC,cAAc,EAAE,CAAC;4BACnB,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC,KAAK,EAAE,CAAC;yBAC7D;qBACJ;yBACI,IAAI,IAAI,CAAC,SAAS,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,SAAS,GAAG,CAAC,EAAE;wBAC/D,IAAI,CAAC,SAAS,EAAE,CAAC;wBACjB,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;wBAC7D,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;qBACnD;iBACJ;aACJ;YACD,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC;SAC3D;QACD,IAAI,gBAAgB,GAAG,QAAQ,CAAC,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;QAClE,IAAI,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC,gBAAgB,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,gBAAgB,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC,YAAY,CAAC,cAAc,CAAC,GAAG,IAAI,CAAC;QACnL,IAAI,CAAC,CAAC,GAAG,KAAK,WAAW,IAAI,CAAC,CAAC,GAAG,KAAK,SAAS,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,CAAC,GAAG,KAAK,KAAK,EAAE;YAClF,IAAI,QAAQ,KAAK,aAAa,EAAE;gBAC5B,IAAI,CAAC,CAAC,GAAG,KAAK,KAAK,EAAE;oBACjB,CAAC,CAAC,cAAc,EAAE,CAAC;iBACtB;gBACD,KAAK,CAAC,QAAQ,CAAC,gBAAgB,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,sBAAsB,CAAC,CAAC,KAAK,EAAE,CAAC;aAClG;iBACI;gBACD,IAAI,CAAC,CAAC,GAAG,KAAK,KAAK,EAAE;oBACjB,CAAC,CAAC,cAAc,EAAE,CAAC;iBACtB;gBACD,KAAK,CAAC,QAAQ,CAAC,gBAAgB,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC,KAAK,EAAE,CAAC;aACxF;YACD,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,KAAK,QAAQ,KAAK,UAAU,CAAC,EAAE;gBAC5C,IAAI,WAAW,GAAG,KAAK,CAAC,QAAQ,CAAC,gBAAgB,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;gBAC/F,IAAI,QAAQ,GAAG,YAAY,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;gBACnD,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;gBACpB,QAAQ,CAAC,KAAK,EAAE,CAAC;aACpB;SACJ;QACD,KAAK,CAAC,QAAQ,KAAK,aAAa,MAAM,CAAC,CAAC,GAAG,KAAK,YAAY,IAAI,CAAC,CAAC,GAAG,KAAK,WAAW,CAAC,GAAG;YACrF,IAAI,CAAC,CAAC,GAAG,KAAK,YAAY,EAAE;gBACxB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,QAAQ,CAAC,gBAAgB,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC,KAAK,EAAE;oBACjG,KAAK,CAAC,QAAQ,CAAC,gBAAgB,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC,KAAK,EAAE,CAAC;aACjG;YACD,IAAI,CAAC,CAAC,GAAG,KAAK,WAAW,EAAE;gBACvB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,QAAQ,CAAC,gBAAgB,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC,KAAK,EAAE;oBACtG,KAAK,CAAC,QAAQ,CAAC,gBAAgB,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC,KAAK,EAAE,CAAC;aAC5F;SACJ;QACD,IAAI,CAAC,CAAC,GAAG,KAAK,OAAO,EAAE;YACnB,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;SACvB;KACJ,CAAC;IACF,MAAM,CAAC,SAAS,CAAC,gBAAgB,GAAG,UAAU,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE;QACzE,OAAO,UAAU,IAAI,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE;YAC9D,IAAI,UAAU,EAAE;gBACZ,IAAI,IAAI,CAAC,SAAS,KAAK,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE;oBACzH,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;iBACvB;aACJ;iBACI;gBACD,IAAI,IAAI,CAAC,SAAS,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE;oBAC1G,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC;iBACjC;aACJ;;YAED,UAAU,GAAG,IAAI,CAAC,SAAS,EAAE,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;YACjD,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;SAChE;KACJ,CAAC;IACF,MAAM,CAAC,SAAS,CAAC,oBAAoB,GAAG,UAAU,WAAW,EAAE;QAC3D,IAAI,WAAW,EAAE;YACb,IAAI,MAAM,GAAG,WAAW,CAAC,OAAO,CAAC;YACjC,cAAc,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;YACnC,WAAW,CAAC,OAAO,EAAE,CAAC;YACtB,MAAM,CAAC,MAAM,EAAE,CAAC;SACnB;KACJ,CAAC;IACF,MAAM,CAAC,SAAS,CAAC,mBAAmB,GAAG,UAAU,IAAI,EAAE,OAAO,EAAE;QAC5D,QAAQ,IAAI,CAAC,IAAI;YACb,KAAK,QAAQ;gBACT,IAAI,CAAC,kBAAkB,CAAC,oBAAoB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;gBAC5D,MAAM;YACV,KAAK,UAAU;gBACX,IAAI,CAAC,oBAAoB,CAAC,oBAAoB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;gBAC9D,MAAM;YACV,KAAK,aAAa;gBACd,IAAI,CAAC,uBAAuB,CAAC,oBAAoB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;gBACjE,MAAM;YACV,KAAK,UAAU;gBACX,IAAI,CAAC,oBAAoB,CAAC,oBAAoB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;gBAC9D,MAAM;YACV,KAAK,aAAa;gBACd,IAAI,CAAC,uBAAuB,CAAC,oBAAoB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;gBACjE,MAAM;YACV,KAAK,UAAU;gBACX,IAAI,CAAC,oBAAoB,CAAC,oBAAoB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;gBAC9D,MAAM;YACV,KAAK,aAAa;gBACd,IAAI,CAAC,uBAAuB,CAAC,oBAAoB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;gBACjE,MAAM;SACb;KACJ,CAAC;IACF,MAAM,CAAC,SAAS,CAAC,oBAAoB,GAAG,UAAU,OAAO,EAAE,WAAW,EAAE;QACpE,IAAI,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE;YAC7C,SAAS,EAAEC,yBAAmC;YAC9C,EAAE,EAAE,OAAO,GAAGxB,YAAsB;SACvC,CAAC,CAAC;QACH,IAAI,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE;YAC1C,SAAS,EAAEyB,sBAAgC;YAC3C,EAAE,EAAE,OAAO,GAAGV,SAAmB;YACjC,SAAS,EAAE,WAAW;SACzB,CAAC,CAAC;QACH,gBAAgB,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;QACvC,OAAO,gBAAgB,CAAC;KAC3B,CAAC;IACF,MAAM,CAAC,SAAS,CAAC,iBAAiB,GAAG,YAAY;QAC7C,IAAI,KAAK,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE;YAC7C,SAAS,EAAEW,sBAAgC,GAAGxC,KAAe,GAAGyC,oBAA8B;YAC9F,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,GAAGC,kBAA4B;YACzD,KAAK,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,EAAE,QAAQ,EAAE;SAClG,CAAC,CAAC;QACH,IAAI,CAAC,cAAc,CAAC,OAAO,GAAG,YAAY,EAAE,KAAK,CAAC,YAAY,EAAE,CAAC,EAAE,CAAC;QACpE,IAAI,CAAC,cAAc,CAAC,SAAS,GAAG,UAAU,CAAC,EAAE;YACzC,IAAI,CAAC,CAAC,GAAG,KAAK,OAAO,EAAE;gBACnB,KAAK,CAAC,YAAY,EAAE,CAAC;aACxB;SACJ,CAAC;QACF,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAACC,kBAA4B,CAAC,CAAC;QACzD,IAAI,IAAI,CAAC,YAAY,KAAK,YAAY,EAAE;YACpC,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,GAAG,CAACC,oBAA8B,CAAC,CAAC;SACrE;QACD,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;KACxD,CAAC;IACF,MAAM,CAAC,SAAS,CAAC,oBAAoB,GAAG,YAAY;QAChD,IAAI,KAAK,GAAG,IAAI,CAAC;QACjB,IAAI,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,EAAE,KAAK,KAAK,CAAC,cAAc,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QAClG,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;YACd,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;SACrC;QACD,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAACD,kBAA4B,CAAC,CAAC;QAC5D,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,GAAG,GAAGH,sBAAgC,CAAC,CAAC,CAAC;QAClF,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;KAC9B,CAAC;IACF,MAAM,CAAC,SAAS,CAAC,YAAY,GAAG,UAAU,IAAI,EAAE;QAC5C,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAChD,KAAK,IAAI,GAAG,IAAI,IAAI,EAAE;YAClB,IAAI,KAAK,GAAG,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YAC9B,IAAI,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;YAC/C,IAAI,QAAQ,GAAG,KAAK,CAAC;YACrB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,EAAE;gBACjD,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE;oBACnG,QAAQ,GAAG,IAAI,CAAC;oBAChB,MAAM;iBACT;aACJ;YACD,IAAI,CAAC,QAAQ,EAAE;gBACX,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;gBACxC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;gBACtC,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBACxB,IAAI,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC9C,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;oBACtC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;iBAC3C;gBACD,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;gBAC/E,MAAM;aACT;iBACI;gBACD,IAAI,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;gBAC9D,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;gBACjC,IAAI,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;gBAC1D,SAAS,CAAC,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;gBACnC,IAAI,CAAC,aAAa,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;gBAC5F,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBACxB,IAAI,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;gBAC3E,IAAI,MAAM,EAAE;;oBAER,IAAI,GAAG,CAAC,MAAM,EAAE;wBACZ,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC;qBAC9F;;oBAED,IAAI,GAAG,CAAC,QAAQ,EAAE;wBACd,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE;4BAC5D,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;4BACxF,MAAM,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;yBAClH;wBACD,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;wBAC7C,MAAM,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;qBACvE;;oBAED,IAAI,GAAG,CAAC,MAAM,EAAE;wBACZ,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,QAAQ,GAAG,MAAM,EAAE,EAAE,GAAG,QAAQ,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE;4BAC5D,IAAI,KAAK,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;4BACzB,IAAI,eAAe,GAAG,KAAK,CAAC,WAAW,GAAG,UAAU,CAAC,aAAa,CAAC,GAAG,GAAG,KAAK,CAAC,EAAE,GAAG7B,WAAqB,GAAGgB,WAAqB,CAAC,GAAG,IAAI,CAAC;4BAC1I,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,KAAK,CAAC,WAAW,EAAE,EAAE,GAAG,EAAE,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE;gCAC3D,IAAI,UAAU,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;gCACxB,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,UAAU,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE;oCAC1D,IAAI,IAAI,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;oCAClB,IAAI,GAAG,GAAG,eAAe,GAAG,IAAI,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,eAAe,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,aAAa,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;oCAC5I,IAAI,GAAG,EAAE;wCACL,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;qCACnC;iCACJ;6BACJ;4BACD,IAAI,eAAe,EAAE;gCACjB,IAAI,CAAC,oBAAoB,CAAC,sBAAsB,CAAC,eAAe,CAAC,CAAC;6BACrE;yBACJ;wBACD,IAAI,aAAa,GAAG,UAAU,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,CAAC;;wBAEnE,aAAa,CAAC,OAAO,CAAC,UAAU,QAAQ,EAAE,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;wBAClE,IAAI,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;wBAC1D,MAAM,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;qBAChC;iBACJ;aACJ;SACJ;KACJ,CAAC;IACF,MAAM,CAAC,SAAS,CAAC,YAAY,GAAG,YAAY;QACxC,IAAI,CAAC,mBAAmB,GAAG,CAAC,CAAC;QAC7B,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,MAAM,CAACiB,oBAA8B,EAAE,IAAI,CAAC,YAAY,KAAK,YAAY,CAAC,CAAC;QACzG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAACb,sBAAgC,EAAE,IAAI,CAAC,YAAY,KAAK,YAAY,CAAC,CAAC;QACpG,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YAC9C,IAAI,QAAQ,GAAG,CAAC,CAAC;YACjB,IAAI,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;YAC9E,IAAI,UAAU,CAAC,SAAS,KAAK,EAAE,EAAE;gBAC7B,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;gBACvD,IAAI,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;gBACpE,IAAI,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG7B,UAAoB,CAAC,CAAC;gBACpI,IAAI,UAAU,GAAG,aAAa,CAAC,OAAO,CAAC,GAAG,GAAGW,WAAqB,CAAC,CAAC;gBACpE,IAAI,IAAI,CAAC,YAAY,KAAK,YAAY,EAAE;oBACpC,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,SAAS,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE;wBAC7C,IAAI,KAAK,GAAG,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;wBACpD,IAAI,SAAS,GAAG,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC;wBACpE,IAAI,KAAK,CAAC,WAAW,EAAE;4BACnB,KAAK,CAAC,aAAa,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE,EAAE,IAAI,CAAC,CAAC;4BAClD,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;yBACjC;6BACI;4BACD,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE,GAAG,EAAE,GAAG,EAAE,UAAU,EAAE,aAAa,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;4BACpF,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE,GAAG,EAAE,GAAG,EAAE,UAAU,EAAE,aAAa,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;yBACvF;wBACD,IAAI,QAAQ,GAAG,UAAU,CAAC,aAAa,CAAC,GAAG,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC;wBACxD,IAAI,cAAc,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,GAAG,KAAK,CAAC,EAAE,GAAGC,YAAsB,CAAC,CAAC;wBACrF,IAAI,aAAa,GAAG,cAAc,CAAC,gBAAgB,CAAC,GAAG,GAAG,iBAAiB,CAAC,CAAC;wBAC7E,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,aAAa,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE;4BACjD,aAAa,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;yBACxD;wBACD,IAAI,WAAW,GAAG,cAAc,CAAC,aAAa,CAAC,GAAG,GAAG,KAAK,CAAC,EAAE,GAAGe,SAAmB,CAAC,CAAC;wBACrF,WAAW,CAAC,MAAM,EAAE,CAAC;wBACrB,IAAI,YAAY,GAAG,cAAc,CAAC,aAAa,CAAC,GAAG,GAAG,KAAK,CAAC,EAAE,GAAG3B,UAAoB,CAAC,CAAC;wBACvF,YAAY,CAAC,SAAS,CAAC,OAAO,CAACkB,UAAoB,EAAEyB,aAAuB,CAAC,CAAC;wBAC9E,YAAY,CAAC,SAAS,CAAC,MAAM,CAACvB,qBAA+B,CAAC,CAAC;wBAC/D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;4BAC/C,IAAI,UAAU,GAAG,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;4BAC/D,IAAI,eAAe,GAAG,cAAc,CAAC,aAAa,CAAC,GAAG,GAAG,UAAU,CAAC,EAAE,CAAC,CAAC;4BACxE,eAAe,CAAC,SAAS,CAAC,OAAO,CAACF,UAAoB,EAAEyB,aAAuB,CAAC,CAAC;4BACjF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gCAC9C,IAAI,QAAQ,GAAG,UAAU,CAAC,KAAK,CAAC;gCAChC,IAAI,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;gCACxD,IAAI,IAAI,GAAG,IAAI,CAAC;gCAChB,OAAO,CAAC,IAAI,MAAM,IAAI,CAAC,cAAc,KAAK,WAAW,CAAC,OAAO,CAAC,EAAE;oCAC5D,CAAC,EAAE,CAAC;oCACJ,IAAI,SAAS,GAAG,cAAc,CAAC,aAAa,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG/B,YAAsB,CAAC,CAAC;oCACrF,IAAI,GAAG,GAAG,SAAS,CAAC,aAAa,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;oCACjD,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;oCAChC,SAAS,CAAC,MAAM,EAAE,CAAC;oCACnB,IAAI,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE;wCACrB,IAAI,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;qCAC/C;yCACI;wCACD,IAAI,GAAG,KAAK,CAAC;qCAChB;iCACJ;gCACD,IAAI,CAAC,IAAI,EAAE;oCACP,MAAM;iCACT;gCACD,IAAI,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,YAAY,KAAK,cAAc,CAAC,KAAK;qCAClD,IAAI,CAAC,YAAY,GAAG,cAAc,CAAC,MAAM,CAAC,IAAI,cAAc,CAAC,MAAM,GAAG,cAAc,CAAC,KAAK,CAAC;gCAChG,IAAI,GAAG,CAAC,EAAE,IAAI,CAAC,cAAc,GAAG,WAAW,CAAC,UAAU,CAAC,KAAK,IAAI,CAAC,cAAc,GAAG,WAAW,CAAC,QAAQ,CAAC;sCACjG,cAAc,CAAC,MAAM,GAAG,IAAI,CAAC;gCACnC,IAAI,OAAO,GAAG,KAAK,CAAC,CAAC;gCACrB,IAAI,EAAE,IAAI,CAAC,cAAc,GAAG,WAAW,CAAC,OAAO,CAAC,EAAE;oCAC9C,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,mBAAmB,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;oCAC9H,IAAI,IAAI,CAAC,cAAc,GAAG,WAAW,CAAC,UAAU,EAAE;wCAC9C,eAAe,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;qCACnC;iCACJ;qCACI;oCACD,OAAO,GAAG,cAAc,CAAC,aAAa,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,GAAGA,YAAsB,CAAC,CAAC;oCAC/E,IAAI,IAAI,CAAC,cAAc,MAAM,WAAW,CAAC,OAAO,GAAG,WAAW,CAAC,QAAQ,CAAC,EAAE;wCACtE,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,CAAC,mBAAmB,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,cAAc,CAAC,CAAC;wCACrH,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,cAAc,CAAC,QAAQ,MAAM,IAAI,CAAC,IAAI,KAAK,cAAc,CAAC,WAAW,CAAC,KAAK,IAAI,CAAC,IAAI,KAAK,cAAc,CAAC,WAAW,CAAC,EAAE;4CACrI,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,mBAAmB,EAAE,IAAI,CAAC,CAAC;yCACzE;qCACJ;oCACD,IAAI,IAAI,CAAC,IAAI,KAAK,cAAc,CAAC,WAAW,EAAE;wCAC1C,IAAI,CAAC,uBAAuB,CAAC,iBAAiB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;qCACjE;oCACD,IAAI,CAAC,aAAa,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,CAAC;oCAC/C,IAAI,GAAG,GAAG,OAAO,CAAC,aAAa,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;oCAC/C,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;iCAC/B;6BACJ;yBACJ;wBACD,IAAI,EAAE,KAAK,CAAC,mBAAmB,IAAI,QAAQ,CAAC,aAAa,CAAC,GAAG,GAAGC,WAAqB,CAAC,CAAC,EAAE;4BACrF,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;yBACtD;qBACJ;iBACJ;qBACI;oBACD,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAACsB,eAAyB,CAAC,CAAC;oBACzD,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,SAAS,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE;wBAC7C,IAAI,KAAK,GAAG,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;wBACpD,IAAI,SAAS,GAAG,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC;wBACpE,IAAI,cAAc,GAAG,UAAU,CAAC,aAAa,CAAC,GAAG,GAAG,KAAK,CAAC,EAAE,GAAGvB,YAAsB,CAAC,CAAC;wBACvF,IAAI,YAAY,GAAG,cAAc,CAAC,aAAa,CAAC,GAAG,GAAG,KAAK,CAAC,EAAE,GAAGZ,UAAoB,CAAC,CAAC;wBACvF,IAAI,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE;4BACxC,SAAS,EAAE4C,mBAA6B;4BACxC,EAAE,EAAE,KAAK,CAAC,EAAE,GAAGjB,SAAmB;4BAClC,SAAS,EAAE,KAAK,CAAC,MAAM;yBAC1B,CAAC,CAAC;wBACH,cAAc,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;wBACxC,IAAI,SAAS,KAAK,KAAK,EAAE;4BACrB,YAAY,CAAC,SAAS,CAAC,OAAO,CAACgB,aAAuB,EAAEzB,UAAoB,CAAC,CAAC;yBACjF;wBACD,YAAY,CAAC,SAAS,CAAC,GAAG,CAACE,qBAA+B,CAAC,CAAC;wBAC5D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;4BAC/C,IAAI,WAAW,GAAG,KAAK,CAAC,CAAC;4BACzB,IAAI,cAAc,GAAG,KAAK,CAAC,CAAC;4BAC5B,IAAI,CAAC,KAAK,CAAC,mBAAmB,EAAE;gCAC5B,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;gCAC/B,IAAI,WAAW,EAAE;oCACb,cAAc,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;iCAC5C;6BACJ;iCACI;gCACD,IAAI,cAAc,GAAG,cAAc,CAAC,aAAa,CAAC,GAAG,GAAG,KAAK,CAAC,EAAE,GAAGnC,iBAA2B,CAAC,CAAC;gCAChG,IAAI,cAAc,EAAE;oCAChB,WAAW,GAAG,WAAW,CAAC,cAAc,EAAE,cAAc,CAAC,CAAC;oCAC1D,cAAc,GAAG,WAAW,CAAC,MAAM,CAAC;iCACvC;6BACJ;4BACD,IAAI,UAAU,GAAG,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;4BAC/D,IAAI,eAAe,GAAG,cAAc,CAAC,aAAa,CAAC,GAAG,GAAG,UAAU,CAAC,EAAE,CAAC,CAAC;4BACxE,IAAI,SAAS,KAAK,QAAQ,EAAE;gCACxB,eAAe,CAAC,SAAS,CAAC,OAAO,CAAC0D,aAAuB,EAAEzB,UAAoB,CAAC,CAAC;6BACpF;4BACD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gCAC9C,IAAI,QAAQ,GAAG,UAAU,CAAC,KAAK,CAAC;gCAChC,IAAI,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;gCACxD,IAAI,IAAI,GAAG,IAAI,CAAC;gCAChB,OAAO,CAAC,IAAI,KAAK,EAAE,IAAI,CAAC,cAAc,GAAG,WAAW,CAAC,OAAO,CAAC,EAAE;oCAC3D,CAAC,EAAE,CAAC;oCACJ,IAAI,OAAO,GAAG,KAAK,CAAC,CAAC;oCACrB,IAAI,CAAC,IAAI,CAAC,cAAc,GAAG,WAAW,CAAC,UAAU,MAAM,IAAI,CAAC,cAAc,GAAG,WAAW,CAAC,QAAQ,CAAC,EAAE;wCAChG,IAAI,IAAI,CAAC,cAAc,GAAG,WAAW,CAAC,UAAU,EAAE;4CAC9C,OAAO,GAAG,cAAc,CAAC,aAAa,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,GAAGN,YAAsB,CAAC,CAAC;yCAClF;6CACI;4CACD,OAAO,GAAG,cAAc,CAAC,aAAa,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,GAAGA,YAAsB,CAAC,CAAC;yCAClF;wCACD,IAAI,OAAO,KAAK,IAAI,EAAE;4CAClB,IAAI,KAAK,GAAG,OAAO,CAAC,aAAa,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;4CACjD,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;4CAClC,OAAO,CAAC,MAAM,EAAE,CAAC;yCACpB;qCACJ;oCACD,IAAI,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE;wCACrB,IAAI,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;qCAC/C;yCACI;wCACD,IAAI,GAAG,KAAK,CAAC;qCAChB;iCACJ;gCACD,IAAI,CAAC,IAAI,EAAE;oCACP,MAAM;iCACT;gCACD,IAAI,EAAE,IAAI,CAAC,cAAc,IAAI,WAAW,CAAC,UAAU,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC,EAAE;oCAC1E,IAAI,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,mBAAmB,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;oCAClH,eAAe,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;iCACnC;qCACI;oCACD,IAAI,OAAO,GAAG,cAAc,CAAC,aAAa,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,GAAGA,YAAsB,CAAC,CAAC;oCACnF,IAAI,CAAC,OAAO,EAAE;wCACV,OAAO,GAAG,cAAc,CAAC,aAAa,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,GAAGA,YAAsB,CAAC,CAAC;wCAC/E,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,cAAc,CAAC,QAAQ,MAAM,IAAI,CAAC,IAAI,KAAK,cAAc,CAAC,WAAW,CAAC,KAAK,IAAI,CAAC,IAAI,KAAK,cAAc,CAAC,WAAW,CAAC,EAAE;4CACrI,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,mBAAmB,EAAE,KAAK,CAAC,CAAC;yCAC1E;wCACD,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;qCAC3C;oCACD,IAAI,IAAI,CAAC,IAAI,KAAK,cAAc,CAAC,WAAW,EAAE;wCAC1C,IAAI,CAAC,uBAAuB,CAAC,iBAAiB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;qCACjE;oCACD,eAAe,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;iCACnC;gCACD,IAAI,GAAG,GAAG,cAAc,CAAC,aAAa,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;gCACtD,IAAI,IAAI,CAAC,IAAI,KAAK,cAAc,CAAC,WAAW,EAAE;oCAC1C,GAAG,GAAG,cAAc,CAAC,aAAa,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,GAAGnB,sBAAgC,CAAC,CAAC;iCACxF;gCACD,IAAI,QAAQ,GAAG,CAAC,IAAI,CAAC,YAAY,GAAG,cAAc,CAAC,KAAK,IAAI,cAAc,CAAC,KAAK;oCAC5E,CAAC,IAAI,CAAC,YAAY,GAAG,cAAc,CAAC,MAAM,IAAI,cAAc,CAAC,MAAM,GAAG,cAAc,CAAC,KAAK,CAAC;gCAC/F,IAAI,CAAC,aAAa,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE,IAAI,CAAC,CAAC;gCACnD,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;6BAC/B;4BACD,IAAI,KAAK,CAAC,mBAAmB,IAAI,WAAW,EAAE;gCAC1C,IAAI,cAAc,CAAC,iBAAiB,KAAK,CAAC,EAAE;oCACxC,IAAI,CAAC,oBAAoB,CAAC,WAAW,CAAC,CAAC;iCAC1C;6BACJ;yBACJ;qBACJ;iBACJ;gBACD,IAAI,IAAI,CAAC,WAAW,KAAK,QAAQ,EAAE;oBAC/B,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;iBAC/C;aACJ;SACJ;QACD,IAAI,IAAI,CAAC,YAAY,KAAK,SAAS,EAAE;YACjC,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAC5C,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;SAC3B;KACJ,CAAC;IACF,MAAM,CAAC,SAAS,CAAC,kBAAkB,GAAG,UAAU,OAAO,EAAE,cAAc,EAAE;QACrE,IAAI,KAAK,GAAG,IAAI,CAAC;QACjB,IAAI,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE;YACzC,SAAS,EAAEoD,wBAAkC,GAAG,GAAG,IAAI,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,GAAGC,oBAA8B,CAAC;YACpI,EAAE,EAAE,OAAO,GAAGC,WAAqB;YACnC,KAAK,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,EAAE,QAAQ,EAAE;SAChG,CAAC,CAAC;QACH,cAAc,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;QACzC,cAAc,CAAC,SAAS,CAAC,GAAG,CAACC,eAAyB,CAAC,CAAC;QACxD,YAAY,CAAC,GAAG,CAAC,YAAY,EAAE,OAAO,EAAE,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,CAAC;QAC5F,YAAY,CAAC,GAAG,CAAC,YAAY,EAAE,SAAS,EAAE,UAAU,CAAC,EAAE;YACnD,IAAI,CAAC,CAAC,GAAG,KAAK,OAAO,EAAE;gBACnB,KAAK,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;aACtC;SACJ,EAAE,IAAI,CAAC,CAAC;KACZ,CAAC;IACF,MAAM,CAAC,SAAS,CAAC,mBAAmB,GAAG,UAAU,EAAE,EAAE;QACjD,IAAI,SAAS,GAAG,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;QAChC,IAAI,CAAC,OAAO,CAAC,mBAAmB,EAAE,SAAS,CAAC,CAAC;KAChD,CAAC;IACF,MAAM,CAAC,SAAS,CAAC,YAAY,GAAG,UAAU,SAAS,EAAE,QAAQ,EAAE;QAC3D,IAAI,aAAa,GAAG,EAAE,CAAC;QACvB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACvC,IAAI,KAAK,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;YAClD,IAAI,SAAS,GAAG,KAAK,CAAC,WAAW,CAAC;YAClC,IAAI,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE;gBACrC,SAAS,EAAE,KAAK,CAAC,QAAQ;gBACzB,EAAE,EAAE,KAAK,CAAC,EAAE;aACf,CAAC,CAAC;YACH,QAAQ,CAAC,SAAS,CAAC,GAAG,CAACtB,YAAsB,CAAC,CAAC;YAC/C,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC7B,IAAI,cAAc,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE;gBAC3C,SAAS,EAAE,KAAK,CAAC,QAAQ;gBACzB,EAAE,EAAE,KAAK,CAAC,EAAE,GAAGd,YAAsB;aACxC,CAAC,CAAC;YACH,cAAc,CAAC,SAAS,CAAC,GAAG,CAACX,sBAAgC,CAAC,CAAC;YAC/D,QAAQ,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;YACrC,IAAI,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE;gBACzC,SAAS,EAAE,IAAI,CAAC,YAAY,KAAK,YAAY,GAAGkB,oBAA8B,IAAIA,oBAA8B,GAAGrB,KAAe,GAAGsB,qBAA+B,CAAC;gBACrK,EAAE,EAAE,KAAK,CAAC,EAAE,GAAGpB,UAAoB;aACtC,CAAC,CAAC;YACH,YAAY,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,KAAK,QAAQ,MAAM,IAAI,CAAC,YAAY,KAAK,YAAY,CAAC,IAAI2C,aAAuB,GAAGzB,UAAoB,CAAC,CAAC;YAChJ,cAAc,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;YACzC,IAAI,IAAI,CAAC,YAAY,KAAK,SAAS,EAAE;gBACjC,IAAI,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE;oBACxC,SAAS,EAAE0B,mBAA6B;oBACxC,EAAE,EAAE,KAAK,CAAC,EAAE,GAAGjB,SAAmB;oBAClC,SAAS,EAAE,KAAK,CAAC,MAAM;iBAC1B,CAAC,CAAC;gBACH,cAAc,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;aAC3C;YACD,IAAI,KAAK,CAAC,gBAAgB,EAAE;gBACxB,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,EAAE,EAAE,cAAc,CAAC,CAAC;aACrD;YACD,IAAI,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,mBAAmB,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC;YACxJ,MAAM,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;YAC/B,IAAI,CAAC,IAAI,CAAC,YAAY,KAAK,YAAY,KAAK,EAAE,KAAK,CAAC,mBAAmB,IAAI,QAAQ,CAAC,aAAa,CAAC,GAAG,GAAGd,WAAqB,CAAC,CAAC,EAAE;gBAC7H,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;aACtD;SACJ;QACD,OAAO,aAAa,CAAC;KACxB,CAAC;IACF,MAAM,CAAC,SAAS,CAAC,gBAAgB,GAAG,YAAY;QAC5C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACvC,IAAI,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;YAC7D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBACvC,IAAI,cAAc,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC;gBACvE,IAAI,SAAS,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC;gBAClE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,cAAc,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;oBAC5C,IAAI,KAAK,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;oBAC7D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;wBACnC,IAAI,UAAU,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;wBACnD,IAAI,CAAC,UAAU,CAAC,YAAY,KAAK,UAAU,CAAC,YAAY,KAAK,CAAC,CAAC,EAAE;4BAC7D,UAAU,CAAC,aAAa,CAAC;gCACrB,YAAY,GAAG,cAAc,CAAC,KAAK,GAAG,cAAc,CAAC,MAAM,GAAG,cAAc,CAAC,KAAK,CAAC;6BACtF,EAAE,IAAI,CAAC,CAAC;yBACZ;wBACD,IAAI,CAAC,UAAU,CAAC,IAAI,KAAK,aAAa,MAAM,UAAU,CAAC,YAAY,KAAK,cAAc,CAAC,KAAK,CAAC,EAAE;4BAC3F,UAAU,CAAC,aAAa,CAAC,EAAE,YAAY,EAAE,cAAc,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,CAAC;yBAC1E;6BACI,IAAI,CAAC,UAAU,CAAC,IAAI,KAAK,UAAU,IAAI,UAAU,CAAC,IAAI,KAAK,UAAU;6BACrE,UAAU,CAAC,YAAY,KAAK,cAAc,CAAC,MAAM,CAAC,EAAE;4BACrD,UAAU,CAAC,aAAa,CAAC,EAAE,YAAY,EAAE,cAAc,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,CAAC;yBAC3E;6BACI,IAAI,CAAC,CAAC,SAAS,KAAK,QAAQ,MAAM,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,SAAS,KAAK,KAAK,MAAM,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE;4BACjH,IAAI,UAAU,CAAC,YAAY,GAAG,cAAc,CAAC,KAAK,EAAE;;gCAEhD,IAAI,OAAO,GAAG,UAAU,CAAC,YAAY,IAAI,cAAc,CAAC,KAAK,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;gCACvF,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,cAAc,CAAC,MAAM,CAAC;gCACpD,UAAU,CAAC,aAAa,CAAC,EAAE,YAAY,EAAE,OAAO,EAAE,EAAE,IAAI,CAAC,CAAC;6BAC7D;yBACJ;wBACD,IAAI,QAAQ,GAAG,CAAC,UAAU,CAAC,YAAY,GAAG,cAAc,CAAC,KAAK,IAAI,cAAc,CAAC,KAAK;4BAClF,CAAC,UAAU,CAAC,YAAY,GAAG,cAAc,CAAC,MAAM,IAAI,cAAc,CAAC,MAAM,GAAG,cAAc,CAAC,KAAK,CAAC;wBACrG,UAAU,CAAC,aAAa,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE,IAAI,CAAC,CAAC;qBAC5D;iBACJ;aACJ;SACJ;KACJ,CAAC;IACF,MAAM,CAAC,SAAS,CAAC,gBAAgB,GAAG,UAAU,cAAc,EAAE,SAAS,EAAE,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,cAAc,EAAE;QAChI,IAAI,kBAAkB,GAAG,EAAE,CAAC;QAC5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,cAAc,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAC5C,IAAI,UAAU,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;YAC5D,IAAI,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE;gBAC1C,SAAS,EAAE,UAAU,CAAC,QAAQ;gBAC9B,EAAE,EAAE,UAAU,CAAC,EAAE;aACpB,CAAC,CAAC;YACH,aAAa,CAAC,SAAS,CAAC,GAAG,CAACoC,iBAA2B,CAAC,CAAC;YACzD,aAAa,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,KAAK,QAAQ,MAAM,IAAI,CAAC,YAAY,KAAK,YAAY,CAAC;gBACzFN,aAAuB,GAAGzB,UAAoB,CAAC,CAAC;YACpD,kBAAkB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YACvC,IAAI,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC;YACxH,MAAM,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;YAChC,IAAI,CAAC,SAAS,KAAK,KAAK,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE;gBACpC,MAAM;aACT;SACJ;QACD,OAAO,kBAAkB,CAAC;KAC7B,CAAC;IACF,MAAM,CAAC,SAAS,CAAC,gBAAgB,GAAG,UAAU,IAAI,EAAE,OAAO,EAAE;QACzD,QAAQ,IAAI,CAAC,IAAI;YACb,KAAK,QAAQ;gBACT,IAAI,CAAC,kBAAkB,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;gBACpD,MAAM;YACV,KAAK,UAAU;gBACX,IAAI,CAAC,oBAAoB,CAAC,cAAc,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;gBACxD,MAAM;YACV,KAAK,aAAa;gBACd,IAAI,CAAC,uBAAuB,CAAC,iBAAiB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;gBAC9D,MAAM;YACV,KAAK,UAAU;gBACX,IAAI,CAAC,oBAAoB,CAAC,cAAc,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;gBACxD,MAAM;YACV,KAAK,aAAa;gBACd,IAAI,CAAC,uBAAuB,CAAC,iBAAiB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;gBAC9D,MAAM;YACV,KAAK,UAAU;gBACX,IAAI,CAAC,oBAAoB,CAAC,cAAc,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;gBACxD,MAAM;YACV,KAAK,UAAU;gBACX,IAAI,CAAC,qBAAqB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;gBAC1C,MAAM;YACV,KAAK,aAAa;gBACd,IAAI,CAAC,uBAAuB,CAAC,iBAAiB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;gBAC9D,MAAM;SACb;KACJ,CAAC;IACF,MAAM,CAAC,SAAS,CAAC,WAAW,GAAG,UAAU,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,cAAc,EAAE;QACrH,IAAI,EAAE,CAAC;QACP,IAAI,YAAY,GAAG,EAAE,CAAC;QACtB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACtC,IAAI,IAAI,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;;YAEhD,IAAI,IAAI,GAAG,IAAI,CAAC;YAChB,OAAO,IAAI;iBACN,CAAC,CAAC,IAAI,CAAC,YAAY,KAAK,YAAY,KAAK,EAAE,IAAI,CAAC,cAAc,IAAI,WAAW,CAAC,UAAU,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;qBAC7G,CAAC,IAAI,CAAC,YAAY,KAAK,SAAS,KAAK,EAAE,IAAI,CAAC,cAAc,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;gBAC1F,CAAC,EAAE,CAAC;gBACJ,IAAI,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE;oBACrB,IAAI,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;iBAC/C;qBACI;oBACD,IAAI,GAAG,KAAK,CAAC;iBAChB;aACJ;YACD,IAAI,CAAC,IAAI,EAAE;gBACP,MAAM;aACT;YACD,IAAI,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE;gBACpC,SAAS,EAAE,IAAI,CAAC,QAAQ;gBACxB,EAAE,EAAE,IAAI,CAAC,EAAE,GAAGN,YAAsB;aACvC,CAAC,CAAC;YACH,CAAC,EAAE,GAAG,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,CAACC,WAAqB,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,GAAG,CAACqC,YAAsB,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;;YAExH,IAAI,IAAI,CAAC,qBAAqB,IAAI,gBAAgB,CAAC,IAAI,CAAC,qBAAqB,CAAC,EAAE;gBAC5E,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC1D,qBAA+B,CAAC,CAAC;gBACvD,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,qBAAqB,EAAE,CAAC,CAAC;aAC/E;YACD,IAAI,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC;YAC3B,IAAI,IAAI,CAAC,YAAY,KAAK,YAAY,EAAE;gBACpC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,YAAY,KAAK,cAAc,CAAC,KAAK,MAAM,IAAI,CAAC,YAAY,GAAG,cAAc,CAAC,MAAM,CAAC;qBAC9F,IAAI,CAAC,cAAc,KAAK,WAAW,CAAC,QAAQ,CAAC,IAAI,cAAc,CAAC,MAAM,GAAG,cAAc,CAAC,KAAK,CAAC;gBACnG,IAAI,CAAC,aAAa,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,CAAC;aAClD;YACD,IAAI,IAAI,GAAG,cAAc,CAAC,KAAK,EAAE;gBAC7B,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC6B,iBAA2B,EAAED,qBAA+B,CAAC,CAAC;aACvF;iBACI;gBACD,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,cAAc,CAAC,MAAM,IAAIE,kBAA4B,GAAGC,iBAA2B,CAAC,CAAC;aACtH;YACD,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YACrC,IAAI,CAAC,IAAI,CAAC,YAAY,KAAK,YAAY,MAAM,CAAC,IAAI,CAAC,cAAc,KAAK,WAAW,CAAC,QAAQ,MAAM,IAAI,CAAC,cAAc,MAAM,WAAW,CAAC,OAAO,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE;gBACpK,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,cAAc,CAAC,CAAC;gBACnG,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,cAAc,CAAC,QAAQ,MAAM,IAAI,CAAC,IAAI,KAAK,cAAc,CAAC,WAAW,CAAC,KAAK,IAAI,CAAC,IAAI,KAAK,cAAc,CAAC,WAAW,CAAC,EAAE;oBACrI,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;iBACzD;aACJ;iBACI;;gBAED,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;aAC9B;YACD,IAAI,CAAC,SAAS,KAAK,QAAQ,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE;gBACvC,MAAM;aACT;SACJ;QACD,OAAO,YAAY,CAAC;KACvB,CAAC;IACF,MAAM,CAAC,SAAS,CAAC,sBAAsB,GAAG,YAAY;QAClD,IAAI,IAAI,CAAC,gBAAgB,EAAE;YACvB,IAAI,YAAY,GAAG,kBAAkB,CAAC;YACtC,IAAI,CAAC,aAAa,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC;YACnC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE;gBAC3C,SAAS,EAAE4B,oBAA8B;gBACzC,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,GAAGC,4BAAsC;aAC/D,CAAC,CAAC;YACH,IAAI,gBAAgB,GAAG,mBAAmB,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;YAClE,MAAM,CAAC,gBAAgB,CAAC,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,kBAAkB,EAAE,IAAI,CAAC,gBAAgB,CAAC,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;YAChH,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;YACjC,IAAI,UAAU,GAAG,MAAM,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;YACpD,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YACrC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC9C,+BAAyC,EAAE,IAAI,CAAC,aAAa,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;YAC3G,IAAI,CAAC,oBAAoB,EAAE,CAAC;SAC/B;KACJ,CAAC;IACF,MAAM,CAAC,SAAS,CAAC,qBAAqB,GAAG,UAAU,IAAI,EAAE,WAAW,EAAE;QAClE,IAAI,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE;YACpC,SAAS,EAAE,IAAI,CAAC,QAAQ,IAAI+C,eAAyB,GAAGvD,KAAe,GAAG,IAAI,CAAC,QAAQ,IAAIuD,eAAyB;YACpH,EAAE,EAAE,IAAI,CAAC,EAAE;SACd,CAAC,CAAC;QACH,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,OAAO,CAAC,SAAS,CAAC,GAAG,CAACH,YAAsB,CAAC,CAAC;YAC9C,OAAO,CAAC,YAAY,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;SACxC;QACD,WAAW,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QACjC,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;KAC1C,CAAC;IACF,MAAM,CAAC,SAAS,CAAC,kBAAkB,GAAG,UAAU,IAAI,EAAE,WAAW,EAAE;QAC/D,IAAI,YAAY,GAAG,QAAQ,GAAG,IAAI,CAAC,EAAE,GAAG,cAAc,CAAC;QACvD,IAAI,CAAC,aAAa,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC;QACnC,IAAI,gBAAgB,GAAG,mBAAmB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAC9D,MAAM,CAAC,gBAAgB,CAAC,EAAE,UAAU,EAAE,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,EAAE,IAAI,EAAE,YAAY,GAAG,IAAI,CAAC,EAAE,GAAG,cAAc,GAAG,IAAI,CAAC,gBAAgB,CAAC,EAAE,WAAW,CAAC,CAAC;QAC9J,IAAI,CAAC,oBAAoB,EAAE,CAAC;KAC/B,CAAC;IACF,MAAM,CAAC,SAAS,CAAC,OAAO,GAAG,UAAU,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE;QACrD,IAAI,GAAG,GAAG,IAAI,KAAK,KAAK,GAAG/C,MAAgB,GAAG,IAAI,KAAK,OAAO,GAAGmD,QAAkB;YAC/E,IAAI,KAAK,YAAY,GAAGC,aAAuB,GAAGC,OAAiB,CAAC;QACxE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAClC,IAAI,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;YAChD,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE;gBACd,QAAQ,CAAC,aAAa,CAAC,EAAE,EAAE,EAAE,MAAM,GAAG,GAAG,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;aACzE;YACD,QAAQ,IAAI;gBACR,KAAK,KAAK;oBACN,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;oBAC9F,MAAM;gBACV,KAAK,OAAO;oBACR,QAAQ,CAAC,aAAa,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,EAAE,YAAY,EAAE,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;oBAC7G,MAAM;gBACV,KAAK,YAAY;oBACb,QAAQ,CAAC,aAAa,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;oBAC3F,MAAM;gBACV;oBACI,MAAM;aACb;SACJ;QACD,OAAO,IAAI,CAAC;KACf,CAAC;IACF,MAAM,CAAC,SAAS,CAAC,oBAAoB,GAAG,UAAU,UAAU,EAAE;QAC1D,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;QACtC,IAAI,IAAI,CAAC,oBAAoB,EAAE;YAC3B,IAAI,CAAC,oBAAoB,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAC;SAC7D;QACD,IAAI,IAAI,CAAC,qBAAqB,EAAE;YAC5B,IAAI,CAAC,qBAAqB,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAC;SAC9D;QACD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACvC,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;YAChD,IAAI,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;YACvE,IAAI,UAAU,CAAC,aAAa,CAAC,GAAG,GAAG9B,YAAsB,CAAC,EAAE;gBACxD,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,GAAG,CAAC,MAAM,EAAE,EAAE,GAAG,EAAE,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE;oBACpD,IAAI,KAAK,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;oBACnB,IAAI,eAAe,GAAG,KAAK,CAAC,CAAC;oBAC7B,IAAI,QAAQ,GAAG,KAAK,CAAC,CAAC;oBACtB,IAAI,IAAI,CAAC,YAAY,KAAK,YAAY,CAAC,OAAO,EAAE;wBAC5C,eAAe,GAAG,KAAK,CAAC,WAAW;4BAC/B,UAAU,CAAC,aAAa,CAAC,GAAG,GAAG,KAAK,CAAC,EAAE,GAAGjB,WAAqB,GAAGgB,WAAqB,CAAC,GAAG,IAAI,CAAC;qBACvG;yBACI;wBACD,eAAe,GAAG,KAAK,CAAC,mBAAmB;4BACvC,UAAU,CAAC,aAAa,CAAC,GAAG,GAAG,KAAK,CAAC,EAAE,GAAGxC,iBAA2B,CAAC,GAAG,IAAI,CAAC;wBAClF,QAAQ,GAAG,eAAe,GAAG,YAAY,CAAC,eAAe,EAAE,cAAc,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC;wBAC9F,IAAI,QAAQ,EAAE;4BACV,iBAAiB,CAAC,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;4BAC/C,QAAQ,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;yBACtC;qBACJ;oBACD,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,KAAK,CAAC,WAAW,EAAE,EAAE,GAAG,EAAE,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE;wBAC3D,IAAI,UAAU,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;wBACxB,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,UAAU,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE;4BAC1D,IAAI,IAAI,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;4BAClB,IAAI,GAAG,GAAG,IAAI,CAAC;4BACf,IAAI,IAAI,CAAC,YAAY,KAAK,YAAY,CAAC,OAAO,EAAE;gCAC5C,IAAI,IAAI,CAAC,cAAc,GAAG,WAAW,CAAC,OAAO,EAAE;oCAC3C,GAAG,GAAG,eAAe,GAAG,IAAI,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,eAAe,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,KAAK,cAAc,CAAC,WAAW,GAAG,UAAU,CAAC,aAAa,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,GAAGQ,sBAAgC,CAAC,GAAG,UAAU,CAAC,aAAa,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;iCACnQ;6BACJ;iCACI;;gCAED,GAAG,GAAG,CAAC,IAAI,CAAC,cAAc,GAAG,WAAW,CAAC,UAAU,IAAI,UAAU,CAAC,aAAa,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC;;gCAEtG,IAAI,CAAC,GAAG,EAAE;oCACN,GAAG,GAAG,QAAQ,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;oCACnD,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU,EAAE;wCAC1B,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,mBAAmB,EAAE,IAAI,CAAC,CAAC;qCACjF;iCACJ;6BACJ;4BACD,IAAI,GAAG,EAAE;gCACL,IAAI,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;gCAC9C,IAAI,UAAU,KAAK,UAAU,EAAE;oCAC3B,IAAI,UAAU,KAAK,WAAW,IAAI,IAAI,CAAC,YAAY,KAAK,SAAS,EAAE;wCAC/D,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE;4CAClE,IAAI,MAAM,GAAG,GAAG,CAAC,aAAa,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,GAAGA,sBAAgC,GAAG,GAAG,CAAC,CAAC;4CACvF,oBAAoB,CAAC,MAAM,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC;yCACnD;qCACJ;yCACI,IAAI,UAAU,KAAK,WAAW,IAAI,IAAI,CAAC,YAAY,KAAK,YAAY,EAAE;wCACvE,oBAAoB,CAAC,GAAG,EAAE,cAAc,EAAE,UAAU,CAAC,CAAC;wCACtD,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE;4CAClE,IAAI,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,GAAGA,sBAAgC,GAAG,GAAG,CAAC,CAAC;4CAC5F,oBAAoB,CAAC,MAAM,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC;yCACnD;qCACJ;yCACI;wCACD,oBAAoB,CAAC,GAAG,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;qCACrD;iCACJ;qCACI,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE;oCAC/C,GAAG,CAAC,SAAS,CAAC,MAAM,CAACM,OAAiB,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC;iCACjE;6BACJ;yBACJ;qBACJ;iBACJ;aACJ;SACJ;KACJ,CAAC;IACF,MAAM,CAAC,SAAS,CAAC,kBAAkB,GAAG,UAAU,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE;QAClF,IAAI,WAAW,GAAG,OAAO,GAAGa,YAAsB,CAAC;QACnD,IAAI,YAAY,GAAG,eAAe,GAAG,IAAI,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,eAAe,EAAE,WAAW,CAAC,GAAG,UAAU,CAAC,aAAa,CAAC,GAAG,GAAG,WAAW,CAAC,CAAC;QAC7J,IAAI,YAAY,EAAE;YACd,YAAY,CAAC,SAAS,CAAC,MAAM,CAACoC,eAAyB,CAAC,CAAC;YACzD,IAAI,YAAY,GAAG,YAAY,CAAC,aAAa,CAAC,GAAG,GAAG,OAAO,GAAGD,WAAqB,CAAC,CAAC;YACrF,MAAM,CAAC,YAAY,CAAC,CAAC;SACxB;KACJ,CAAC;IACF,MAAM,CAAC,SAAS,CAAC,eAAe,GAAG,UAAU,IAAI,EAAE;QAC/C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAClC,IAAI,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;YAC3C,IAAI,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;YACvE,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,GAAG,CAAC,MAAM,EAAE,EAAE,GAAG,EAAE,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE;gBACpD,IAAI,KAAK,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;gBACnB,IAAI,eAAe,GAAG,KAAK,CAAC,CAAC;gBAC7B,IAAI,QAAQ,GAAG,KAAK,CAAC,CAAC;gBACtB,IAAI,IAAI,CAAC,YAAY,KAAK,YAAY,CAAC,OAAO,EAAE;oBAC5C,eAAe,GAAG,KAAK,CAAC,WAAW;wBAC/B,UAAU,CAAC,aAAa,CAAC,GAAG,GAAG,KAAK,CAAC,EAAE,GAAGtC,WAAqB,GAAGgB,WAAqB,CAAC,GAAG,IAAI,CAAC;oBACpG,IAAI,KAAK,CAAC,gBAAgB,EAAE;wBACxB,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,EAAE,EAAE,eAAe,EAAE,UAAU,CAAC,CAAC;qBAClE;iBACJ;qBACI;oBACD,eAAe,GAAG,KAAK,CAAC,mBAAmB;wBACvC,UAAU,CAAC,aAAa,CAAC,GAAG,GAAG,KAAK,CAAC,EAAE,GAAGxC,iBAA2B,CAAC,GAAG,IAAI,CAAC;oBAClF,QAAQ,GAAG,eAAe,GAAG,YAAY,CAAC,eAAe,EAAE,cAAc,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC;iBACjG;gBACD,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,KAAK,CAAC,WAAW,EAAE,EAAE,GAAG,EAAE,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE;oBAC3D,IAAI,UAAU,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;oBACxB,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,UAAU,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE;wBAC1D,IAAI,IAAI,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;wBAClB,IAAI,GAAG,GAAG,KAAK,CAAC,CAAC;wBACjB,IAAI,IAAI,CAAC,YAAY,KAAK,YAAY,CAAC,OAAO,EAAE;4BAC5C,IAAI,IAAI,CAAC,cAAc,GAAG,WAAW,CAAC,OAAO,EAAE;gCAC3C,GAAG,GAAG,eAAe,GAAG,IAAI,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,eAAe,EAAE,IAAI,CAAC,EAAE,CAAC;oCACzF,UAAU,CAAC,aAAa,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;gCAC5C,IAAI,IAAI,CAAC,IAAI,KAAK,cAAc,CAAC,WAAW,EAAE;oCAC1C,GAAG,GAAG,eAAe,GAAG,IAAI,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,eAAe,EAAE,IAAI,CAAC,EAAE,GAAGQ,sBAAgC,CAAC;wCAC5H,UAAU,CAAC,aAAa,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,GAAGA,sBAAgC,CAAC,CAAC;iCAClF;6BACJ;yBACJ;6BACI;;4BAED,GAAG,GAAG,CAAC,IAAI,CAAC,cAAc,GAAG,WAAW,CAAC,UAAU;gCAC/C,UAAU,CAAC,aAAa,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC;;4BAEnD,IAAI,CAAC,GAAG,EAAE;gCACN,GAAG,GAAG,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC;6BACxE;yBACJ;wBACD,IAAI,GAAG,EAAE;4BACL,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;yBACnC;qBACJ;iBACJ;gBACD,IAAI,CAAC,IAAI,CAAC,YAAY,KAAK,YAAY,CAAC,OAAO,KAAK,eAAe,EAAE;oBACjE,IAAI,CAAC,oBAAoB,CAAC,sBAAsB,CAAC,eAAe,CAAC,CAAC;iBACrE;qBACI,IAAI,CAAC,IAAI,CAAC,YAAY,KAAK,YAAY,CAAC,UAAU,KAAK,KAAK,CAAC,mBAAmB,IAAI,eAAe,EAAE;oBACtG,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC;iBACvC;aACJ;SACJ;QACD,IAAI,IAAI,CAAC,WAAW,EAAE;YAClB,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAC5C,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;SAC3B;KACJ,CAAC;IACF,MAAM,CAAC,SAAS,CAAC,eAAe,GAAG,UAAU,IAAI,EAAE,GAAG,EAAE;QACpD,IAAI,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;QAC9C,IAAI,UAAU,KAAK,aAAa,EAAE;YAC9B,IAAI,CAAC,uBAAuB,CAAC,uBAAuB,CAAC,GAAG,CAAC,CAAC;SAC7D;aACI,IAAI,UAAU,KAAK,WAAW,EAAE;YACjC,IAAI,IAAI,CAAC,YAAY,KAAK,SAAS,EAAE;gBACjC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;oBAC5D,IAAI,MAAM,GAAG,GAAG,CAAC,aAAa,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,GAAGA,sBAAgC,GAAG,CAAC,CAAC,CAAC;oBACrF,IAAI,MAAM,EAAE;wBACR,cAAc,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;qBACjC;iBACJ;aACJ;iBACI;gBACD,IAAI,CAAC,uBAAuB,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;aACtD;YACD,IAAI,OAAO,GAAG,UAAU,CAAC,EAAE;gBACvB,IAAI,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,qBAAqB,EAAE;oBAClF,IAAI,eAAe,GAAG,IAAI,CAAC,EAAE,GAAGA,sBAAgC,GAAG,CAAC,CAAC;oBACrE,IAAI,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,UAAU,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,EAAE,KAAK,eAAe,CAAC,EAAE,CAAC,CAAC;oBAC5F,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;wBACd,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;qBACvC;iBACJ;aACJ,CAAC;YACF,IAAI,MAAM,GAAG,IAAI,CAAC;YAClB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBAC5D,OAAO,CAAC,CAAC,CAAC,CAAC;aACd;SACJ;aACI,IAAI,UAAU,KAAK,UAAU,EAAE;YAChC,cAAc,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;SACnC;QACD,IAAI,IAAI,CAAC,qBAAqB,EAAE;YAC5B,IAAI,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,GAAGmB,YAAsB,CAAC,EAAE,CAAC,CAAC;YAC3G,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;gBACd,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;aACrC;SACJ;QACD,IAAI,IAAI,CAAC,IAAI,KAAK,aAAa,EAAE;YAC7B,IAAI,CAAC,uBAAuB,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;SACtD;KACJ,CAAC;IACF,MAAM,CAAC,SAAS,CAAC,iBAAiB,GAAG,UAAU,IAAI,EAAE;QACjD,QAAQ,IAAI,CAAC,IAAI;YACb,KAAK,QAAQ;gBACT,OAAO,KAAK,CAAC;YACjB,KAAK,UAAU;gBACX,OAAO,cAAc,CAAC;YAC1B,KAAK,aAAa;gBACd,OAAO,WAAW,CAAC;YACvB,KAAK,UAAU;gBACX,OAAO,UAAU,CAAC;YACtB,KAAK,aAAa;gBACd,OAAO,aAAa,CAAC;YACzB,KAAK,UAAU;gBACX,OAAO,UAAU,CAAC;YACtB,KAAK,aAAa;gBACd,OAAO,WAAW,CAAC;YACvB;gBACI,OAAO,UAAU,CAAC;SACzB;KACJ,CAAC;IACF,MAAM,CAAC,SAAS,CAAC,mBAAmB,GAAG,YAAY;QAC/C,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC7C,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACtC,IAAI,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,EAAE,GAAGZ,UAAoB,CAAC,CAAC;QACnH,IAAI,UAAU,GAAG,aAAa,CAAC,OAAO,CAAC,GAAG,GAAGW,WAAqB,CAAC,CAAC;QACpE,KAAK,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,EAAE;YAC1C,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,EAAE,CAAC,EAAE,UAAU,EAAE,aAAa,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;YACzF,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,EAAE,CAAC,EAAE,UAAU,EAAE,aAAa,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;SAC5F;KACJ,CAAC;;;;;;IAMF,MAAM,CAAC,SAAS,CAAC,aAAa,GAAG,YAAY;QACzC,IAAI,CAAC,aAAa,EAAE,CAAC;KACxB,CAAC;;;;;;;IAOF,MAAM,CAAC,SAAS,CAAC,SAAS,GAAG,UAAU,KAAK,EAAE;QAC1C,IAAI,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,EAAE,KAAK,KAAK,CAAC,EAAE,CAAC,CAAC;QACzE,IAAI,CAAC,aAAa,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,CAAC;KAC9C,CAAC;;;;;;;IAOF,MAAM,CAAC,SAAS,CAAC,OAAO,GAAG,UAAU,KAAK,EAAE;QACxC,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;KAClC,CAAC;;;;;;;IAOF,MAAM,CAAC,SAAS,CAAC,OAAO,GAAG,UAAU,KAAK,EAAE;QACxC,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;KACjC,CAAC;IACF,MAAM,CAAC,SAAS,CAAC,WAAW,GAAG,UAAU,KAAK,EAAE,KAAK,EAAE;QACnD,IAAI,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,EAAE,KAAK,KAAK,CAAC,EAAE,CAAC,CAAC;QACzE,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;YACd,OAAO;SACV;QACD,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;KACrC,CAAC;;;;;;;IAOF,MAAM,CAAC,SAAS,CAAC,SAAS,GAAG,UAAU,KAAK,EAAE;QAC1C,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;KACtC,CAAC;;;;;;;IAOF,MAAM,CAAC,SAAS,CAAC,UAAU,GAAG,UAAU,KAAK,EAAE;QAC3C,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;KACvC,CAAC;IACF,MAAM,CAAC,SAAS,CAAC,gBAAgB,GAAG,UAAU,KAAK,EAAE,KAAK,EAAE;QACxD,IAAI,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,EAAE,KAAK,KAAK,CAAC,EAAE,CAAC,CAAC;QACzE,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;YACd,OAAO;SACV;QACD,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;KACvC,CAAC;;;;;;;;;IASF,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,UAAU,GAAG,EAAE,QAAQ,EAAE,OAAO,EAAE;QACxD,IAAI,KAAK,GAAG,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,EAAE,KAAK,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QAC5F,KAAK,GAAG,CAAC,KAAK,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,KAAK,IAAI,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACxE,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QACtC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;QACxC,IAAI,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,YAAY,EAAE,EAAE,IAAI,CAAC,CAAC;QACtD,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAClF,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QACtC,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,IAAI,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QACzC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;KACtC,CAAC;;;;;;;IAOF,MAAM,CAAC,SAAS,CAAC,SAAS,GAAG,UAAU,KAAK,EAAE;QAC1C,IAAI,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,EAAE,KAAK,KAAK,CAAC,EAAE,CAAC,CAAC;QACzE,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;YACd,OAAO;SACV;QACD,IAAI,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;QAC3E,IAAI,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;QAC9D,IAAI,MAAM,KAAK,UAAU,CAAC,SAAS,KAAK,EAAE,CAAC,EAAE;YACzC,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,QAAQ,GAAG,MAAM,EAAE,EAAE,GAAG,QAAQ,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE;gBAC5D,IAAI,KAAK,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;gBACzB,IAAI,eAAe,GAAG,KAAK,CAAC,WAAW,GAAG,UAAU,CAAC,aAAa,CAAC,GAAG,GAAG,KAAK,CAAC,EAAE,GAAGF,WAAqB,GAAGgB,WAAqB,CAAC,GAAG,IAAI,CAAC;gBAC1I,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,KAAK,CAAC,WAAW,EAAE,EAAE,GAAG,EAAE,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE;oBAC3D,IAAI,UAAU,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;oBACxB,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,UAAU,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE;wBAC1D,IAAI,IAAI,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;wBAClB,IAAI,GAAG,GAAG,eAAe,GAAG,IAAI,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,eAAe,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,aAAa,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;wBAC5I,IAAI,IAAI,CAAC,IAAI,KAAK,cAAc,CAAC,WAAW,IAAI,IAAI,CAAC,YAAY,KAAK,SAAS,EAAE;4BAC7E,GAAG,GAAG,eAAe,GAAG,IAAI,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,eAAe,EAAE,IAAI,CAAC,EAAE,GAAGhC,sBAAgC,CAAC;gCAC5H,UAAU,CAAC,aAAa,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,GAAGA,sBAAgC,CAAC,CAAC;yBAClF;wBACD,IAAI,GAAG,EAAE;4BACL,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;yBACnC;qBACJ;iBACJ;gBACD,IAAI,eAAe,EAAE;oBACjB,IAAI,CAAC,oBAAoB,CAAC,sBAAsB,CAAC,eAAe,CAAC,CAAC;iBACrE;aACJ;SACJ;QACD,IAAI,KAAK,KAAK,IAAI,CAAC,WAAW,EAAE;YAC5B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;SAC3B;QACD,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QACtC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QACnC,IAAI,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,YAAY,EAAE,EAAE,IAAI,CAAC,CAAC;QACtD,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;KAChC,CAAC;;;;;;;;;;IAUF,MAAM,CAAC,SAAS,CAAC,QAAQ,GAAG,UAAU,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE;QACnE,IAAI,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,EAAE,KAAK,KAAK,CAAC,EAAE,CAAC,CAAC;QAC5E,IAAI,QAAQ,KAAK,CAAC,CAAC,EAAE;YACjB,OAAO;SACV;QACD,IAAI,IAAI,CAAC,WAAW,KAAK,QAAQ,EAAE;YAC/B,IAAI,CAAC,mBAAmB,EAAE,CAAC;SAC9B;QACD,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;QACvD,IAAI,YAAY,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QACtC,IAAI,KAAK,GAAG,QAAQ,GAAG,QAAQ,CAAC,YAAY,EAAE,UAAU,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,EAAE,KAAK,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QAC/F,KAAK,GAAG,CAAC,KAAK,KAAK,CAAC,CAAC,IAAI,YAAY,CAAC,MAAM,IAAI,KAAK,IAAI,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAC3E,YAAY,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;QACrC,GAAG,CAAC,aAAa,CAAC,EAAE,MAAM,EAAE,YAAY,EAAE,EAAE,IAAI,CAAC,CAAC;QAClD,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;QAC3E,IAAI,CAAC,gBAAgB,EAAE,CAAC;;QAExB,IAAI,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;QAC9E,IAAI,UAAU,CAAC,SAAS,KAAK,EAAE,EAAE;YAC7B,IAAI,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;;YAE3F,IAAI,SAAS,GAAG,QAAQ,GAAG,UAAU,CAAC,aAAa,CAAC,GAAG,GAAG,QAAQ,CAAC,GAAG,IAAI,CAAC;YAC3E,IAAI,SAAS,EAAE;gBACX,SAAS,CAAC,qBAAqB,CAAC,OAAO,GAAG,UAAU,GAAG,aAAa,EAAE,OAAO,CAAC,CAAC;aAClF;iBACI;gBACD,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;aAC9B;SACJ;QACD,IAAI,IAAI,CAAC,WAAW,KAAK,QAAQ,EAAE;YAC/B,IAAI,CAAC,aAAa,EAAE,CAAC;SACxB;KACJ,CAAC;;;;;;;IAOF,MAAM,CAAC,SAAS,CAAC,WAAW,GAAG,UAAU,OAAO,EAAE;QAC9C,IAAI,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAC5C,IAAI,CAAC,QAAQ,EAAE;YACX,OAAO;SACV;QACD,IAAI,IAAI,CAAC,WAAW,KAAK,QAAQ,CAAC,QAAQ,EAAE;YACxC,IAAI,CAAC,mBAAmB,EAAE,CAAC;SAC9B;;QAED,IAAI,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC;QAC9D,IAAI,UAAU,CAAC,SAAS,KAAK,EAAE,EAAE;YAC7B,IAAI,eAAe,GAAG,KAAK,CAAC,CAAC;YAC7B,IAAI,QAAQ,GAAG,KAAK,CAAC,CAAC;YACtB,IAAI,QAAQ,CAAC,KAAK,CAAC,gBAAgB,EAAE;gBACjC,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;aAChE;YACD,IAAI,IAAI,CAAC,YAAY,KAAK,YAAY,CAAC,UAAU,EAAE;gBAC/C,eAAe,GAAG,QAAQ,CAAC,KAAK,CAAC,mBAAmB;oBAChD,UAAU,CAAC,aAAa,CAAC,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,EAAE,GAAGR,iBAA2B,CAAC,GAAG,IAAI,CAAC;gBAC3F,QAAQ,GAAG,eAAe,GAAG,YAAY,CAAC,eAAe,EAAE,cAAc,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC;aACjG;YACD,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,GAAG,EAAE,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE;gBACpE,IAAI,UAAU,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;gBACxB,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,UAAU,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE;oBAC1D,IAAI,IAAI,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;oBAClB,IAAI,CAAC,iBAAiB,CAAC,UAAU,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;iBACtD;aACJ;YACD,IAAI,IAAI,CAAC,YAAY,KAAK,YAAY,CAAC,UAAU,EAAE;gBAC/C,IAAI,QAAQ,CAAC,KAAK,CAAC,mBAAmB,EAAE;oBACpC,IAAI,QAAQ,CAAC,MAAM,CAAC,iBAAiB,KAAK,CAAC,EAAE;wBACzC,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC;qBACvC;iBACJ;qBACI;oBACD,IAAI,gBAAgB,GAAG,QAAQ,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,EAAE,GAAG2B,YAAsB,CAAC,CAAC;oBACvG,IAAI,gBAAgB,IAAI,gBAAgB,CAAC,iBAAiB,KAAK,CAAC,EAAE;wBAC9D,gBAAgB,CAAC,MAAM,EAAE,CAAC;qBAC7B;oBACD,IAAI,cAAc,GAAG,QAAQ,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,GAAGH,WAAqB,CAAC,CAAC;oBAC3I,IAAI,cAAc,IAAI,cAAc,CAAC,iBAAiB,KAAK,CAAC,EAAE;wBAC1D,cAAc,CAAC,MAAM,EAAE,CAAC;qBAC3B;iBACJ;aACJ;YACD,IAAI,QAAQ,GAAG,UAAU,CAAC,aAAa,CAAC,GAAG,GAAG,OAAO,CAAC,CAAC;YACvD,IAAI,QAAQ,EAAE;gBACV,QAAQ,CAAC,MAAM,EAAE,CAAC;aACrB;SACJ;QACD,IAAI,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QAC/D,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;QAC5C,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,aAAa,CAAC,EAAE,MAAM,EAAE,YAAY,EAAE,EAAE,IAAI,CAAC,CAAC;QAC3E,IAAI,IAAI,CAAC,WAAW,KAAK,QAAQ,CAAC,QAAQ,EAAE;YACxC,IAAI,CAAC,aAAa,EAAE,CAAC;SACxB;KACJ,CAAC;;;;;;;IAOF,MAAM,CAAC,SAAS,CAAC,SAAS,GAAG,UAAU,OAAO,EAAE;QAC5C,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;KACrC,CAAC;;;;;;;IAOF,MAAM,CAAC,SAAS,CAAC,SAAS,GAAG,UAAU,OAAO,EAAE;QAC5C,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;KACtC,CAAC;IACF,MAAM,CAAC,SAAS,CAAC,aAAa,GAAG,UAAU,OAAO,EAAE,QAAQ,EAAE;QAC1D,IAAI,WAAW,CAAC;QAChB,IAAI,cAAc,CAAC;QACnB,IAAI,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAC5C,IAAI,CAAC,QAAQ,EAAE;YACX,OAAO;SACV;QACD,IAAI,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC;QAC9D,IAAI,QAAQ,GAAG,UAAU,CAAC,aAAa,CAAC,GAAG,GAAG,OAAO,CAAC,CAAC;QACvD,QAAQ,GAAG,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QACtF,IAAI,IAAI,CAAC,WAAW,EAAE;YAClB,IAAI,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;YAC1C,IAAI,cAAc,GAAG,WAAW,CAAC,aAAa,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,GAAGA,WAAqB,CAAC,CAAC;YACvI,IAAI,QAAQ,CAAC,KAAK,CAAC,mBAAmB,EAAE;gBACpC,IAAI,cAAc,GAAG,UAAU,CAAC,aAAa,CAAC,GAAG,GAAG,OAAO,GAAGxB,iBAA2B,CAAC,CAAC;gBAC3F,IAAI,cAAc,EAAE;oBAChB,WAAW,GAAG,WAAW,CAAC,cAAc,EAAE,cAAc,CAAC,CAAC;oBAC1D,cAAc,GAAG,WAAW,CAAC,MAAM,CAAC;iBACvC;gBACD,IAAI,cAAc,EAAE;oBAChB,QAAQ,GAAG,cAAc,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,cAAc,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;iBACrG;aACJ;iBACI,IAAI,cAAc,EAAE;gBACrB,IAAI,YAAY,GAAG,cAAc,CAAC,aAAa,CAAC,GAAG,GAAG,OAAO,GAAG2B,YAAsB,CAAC,CAAC;gBACxF,IAAI,YAAY,EAAE;oBACd,QAAQ,GAAG,YAAY,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,YAAY,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;iBACjG;aACJ;SACJ;QACD,IAAI,CAAC,aAAa,EAAE,CAAC;KACxB,CAAC;;;;;;;IAOF,MAAM,CAAC,SAAS,CAAC,YAAY,GAAG,UAAU,OAAO,EAAE;QAC/C,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;KAC1C,CAAC;;;;;;;IAOF,MAAM,CAAC,SAAS,CAAC,WAAW,GAAG,UAAU,OAAO,EAAE;QAC9C,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;KAC3C,CAAC;IACF,MAAM,CAAC,SAAS,CAAC,kBAAkB,GAAG,UAAU,OAAO,EAAE,UAAU,EAAE;QACjE,IAAI,WAAW,CAAC;QAChB,IAAI,cAAc,CAAC;QACnB,IAAI,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAC5C,IAAI,CAAC,QAAQ,EAAE;YACX,OAAO;SACV;QACD,IAAI,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC;QAC9D,IAAI,QAAQ,GAAG,UAAU,CAAC,aAAa,CAAC,GAAG,GAAG,OAAO,CAAC,CAAC;QACvD,UAAU,GAAG,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QAC5F,IAAI,IAAI,CAAC,WAAW,EAAE;YAClB,IAAI,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;YAC1C,IAAI,cAAc,GAAG,WAAW,CAAC,aAAa,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,GAAGH,WAAqB,CAAC,CAAC;YACvI,IAAI,QAAQ,CAAC,KAAK,CAAC,mBAAmB,EAAE;gBACpC,IAAI,cAAc,GAAG,UAAU,CAAC,aAAa,CAAC,GAAG,GAAG,OAAO,GAAGxB,iBAA2B,CAAC,CAAC;gBAC3F,IAAI,cAAc,EAAE;oBAChB,WAAW,GAAG,WAAW,CAAC,cAAc,EAAE,cAAc,CAAC,CAAC;oBAC1D,cAAc,GAAG,WAAW,CAAC,MAAM,CAAC;iBACvC;gBACD,IAAI,cAAc,EAAE;oBAChB,UAAU,GAAG,cAAc,CAAC,SAAS,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,cAAc,CAAC,SAAS,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;iBAC3G;aACJ;iBACI,IAAI,cAAc,EAAE;gBACrB,IAAI,YAAY,GAAG,cAAc,CAAC,aAAa,CAAC,GAAG,GAAG,OAAO,GAAG2B,YAAsB,CAAC,CAAC;gBACxF,IAAI,YAAY,EAAE;oBACd,UAAU,GAAG,YAAY,CAAC,SAAS,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,YAAY,CAAC,SAAS,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;iBACvG;aACJ;SACJ;KACJ,CAAC;;;;;;;;;;IAUF,MAAM,CAAC,SAAS,CAAC,aAAa,GAAG,UAAU,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE;QAC/E,IAAI,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAC5C,IAAI,CAAC,QAAQ,EAAE;YACX,OAAO;SACV;QACD,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,KAAK,KAAK,MAAM,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC,CAAC,EAAE;YACrF,OAAO;SACV;QACD,IAAI,IAAI,CAAC,WAAW,KAAK,QAAQ,CAAC,QAAQ,EAAE;YACxC,IAAI,CAAC,mBAAmB,EAAE,CAAC;SAC9B;QACD,IAAI,iBAAiB,GAAG,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;QAC3D,IAAI,KAAK,GAAG,QAAQ,GAAG,QAAQ,CAAC,iBAAiB,EAAE,UAAU,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,EAAE,KAAK,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QACpG,KAAK,GAAG,CAAC,KAAK,KAAK,CAAC,CAAC,IAAI,iBAAiB,CAAC,MAAM,IAAI,KAAK,IAAI,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAChF,iBAAiB,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;QAC/C,QAAQ,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE,WAAW,EAAE,iBAAiB,EAAE,EAAE,IAAI,CAAC,CAAC;QACvE,IAAI,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;QAClG,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,IAAI,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC;QAC9D,IAAI,UAAU,CAAC,SAAS,KAAK,EAAE,EAAE;YAC7B,IAAI,YAAY,GAAG,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;YAC9E,IAAI,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,CAAC,YAAY,CAAC,EAAE,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,QAAQ,CAAC,KAAK,CAAC,EAAE,EAAE,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,QAAQ,CAAC,KAAK,CAAC,mBAAmB,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;YACpL,IAAI,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE;gBAC5B,UAAU,GAAG,IAAI,CAAC,oBAAoB,CAAC,wBAAwB,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;aACzF;;YAED,IAAI,SAAS,GAAG,QAAQ,GAAG,UAAU,CAAC,aAAa,CAAC,GAAG,GAAG,QAAQ,CAAC,GAAG,IAAI,CAAC;YAC3E,IAAI,SAAS,EAAE;gBACX,SAAS,CAAC,qBAAqB,CAAC,OAAO,GAAG,UAAU,GAAG,aAAa,EAAE,OAAO,CAAC,CAAC;aAClF;iBACI;gBACD,UAAU,CAAC,aAAa,CAAC,GAAG,GAAG,OAAO,GAAGZ,UAAoB,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;aAClF;SACJ;QACD,IAAI,IAAI,CAAC,WAAW,KAAK,QAAQ,CAAC,QAAQ,EAAE;YACxC,IAAI,CAAC,aAAa,EAAE,CAAC;SACxB;KACJ,CAAC;;;;;;;IAOF,MAAM,CAAC,SAAS,CAAC,gBAAgB,GAAG,UAAU,YAAY,EAAE;QACxD,IAAI,QAAQ,GAAG,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;QACtD,IAAI,CAAC,QAAQ,EAAE;YACX,OAAO;SACV;QACD,IAAI,IAAI,CAAC,WAAW,KAAK,QAAQ,CAAC,QAAQ,EAAE;YACxC,IAAI,CAAC,mBAAmB,EAAE,CAAC;SAC9B;;QAED,IAAI,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC;QAC9D,IAAI,UAAU,CAAC,SAAS,KAAK,EAAE,EAAE;YAC7B,IAAI,eAAe,GAAG,KAAK,CAAC,CAAC;YAC7B,IAAI,QAAQ,GAAG,KAAK,CAAC,CAAC;YACtB,IAAI,IAAI,CAAC,YAAY,KAAK,YAAY,CAAC,UAAU,EAAE;gBAC/C,eAAe,GAAG,QAAQ,CAAC,KAAK,CAAC,mBAAmB;oBAChD,UAAU,CAAC,aAAa,CAAC,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,EAAE,GAAGf,iBAA2B,CAAC,GAAG,IAAI,CAAC;gBAC3F,QAAQ,GAAG,eAAe,GAAG,YAAY,CAAC,eAAe,EAAE,cAAc,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC;aACjG;YACD,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,QAAQ,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE;gBACnE,IAAI,IAAI,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;gBAClB,IAAI,CAAC,iBAAiB,CAAC,UAAU,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;aACtD;YACD,IAAI,QAAQ,GAAG,UAAU,CAAC,aAAa,CAAC,GAAG,GAAG,YAAY,CAAC,CAAC;YAC5D,IAAI,QAAQ,EAAE;gBACV,QAAQ,CAAC,MAAM,EAAE,CAAC;aACrB;SACJ;QACD,IAAI,WAAW,GAAG,QAAQ,CAAC,KAAK,CAAC;QACjC,IAAI,iBAAiB,GAAG,WAAW,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;QACxD,iBAAiB,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC;QACtD,WAAW,CAAC,aAAa,CAAC,EAAE,WAAW,EAAE,iBAAiB,EAAE,EAAE,IAAI,CAAC,CAAC;QACpE,IAAI,IAAI,CAAC,WAAW,KAAK,QAAQ,CAAC,QAAQ,EAAE;YACxC,IAAI,CAAC,aAAa,EAAE,CAAC;SACxB;KACJ,CAAC;;;;;;;;;;IAUF,MAAM,CAAC,SAAS,CAAC,OAAO,GAAG,UAAU,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE;QACxE,IAAI,QAAQ,GAAG,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;QACtD,IAAI,CAAC,QAAQ,EAAE;YACX,OAAO;SACV;QACD,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,KAAK,QAAQ,MAAM,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,EAAE;YACvF,OAAO;SACV;QACD,IAAI,IAAI,CAAC,WAAW,KAAK,QAAQ,CAAC,QAAQ,EAAE;YACxC,IAAI,CAAC,mBAAmB,EAAE,CAAC;SAC9B;QACD,IAAI,WAAW,GAAG,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACpD,IAAI,KAAK,GAAG,QAAQ,GAAG,QAAQ,CAAC,WAAW,EAAE,UAAU,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,EAAE,KAAK,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QAC9F,KAAK,GAAG,CAAC,KAAK,KAAK,CAAC,CAAC,IAAI,WAAW,CAAC,MAAM,IAAI,KAAK,IAAI,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAC1E,WAAW,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;QACnC,QAAQ,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE,IAAI,CAAC,CAAC;QAChE,IAAI,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC;QAChG,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,IAAI,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC;QAC9D,IAAI,cAAc,GAAG,UAAU,CAAC,aAAa,CAAC,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,EAAE,GAAG2B,YAAsB,CAAC,CAAC;QAChG,IAAI,UAAU,CAAC,SAAS,KAAK,EAAE,EAAE;YAC7B,IAAI,MAAM,GAAG,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;YACvE,IAAI,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,QAAQ,CAAC,KAAK,CAAC,EAAE,EAAE,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,QAAQ,CAAC,KAAK,CAAC,mBAAmB,EAAE,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;YACzL,IAAI,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE;gBAC5B,UAAU,GAAG,IAAI,CAAC,oBAAoB,CAAC,wBAAwB,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;aACzF;;YAED,IAAI,SAAS,GAAG,QAAQ,GAAG,UAAU,CAAC,aAAa,CAAC,GAAG,GAAG,QAAQ,CAAC,GAAG,IAAI,CAAC;YAC3E,IAAI,SAAS,EAAE;gBACX,SAAS,CAAC,OAAO,CAAC,GAAG,GAAGC,WAAqB,CAAC,CAAC,qBAAqB,CAAC,OAAO,GAAG,UAAU,GAAG,aAAa,EAAE,OAAO,CAAC,CAAC;aACvH;iBACI;gBACD,IAAI,OAAO,EAAE;oBACT,UAAU,CAAC,aAAa,CAAC,GAAG,GAAG,YAAY,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;iBAChE;aACJ;SACJ;QACD,IAAI,IAAI,CAAC,WAAW,KAAK,QAAQ,CAAC,QAAQ,EAAE;YACxC,IAAI,CAAC,aAAa,EAAE,CAAC;SACxB;KACJ,CAAC;;;;;;;IAOF,MAAM,CAAC,SAAS,CAAC,UAAU,GAAG,UAAU,MAAM,EAAE;QAC5C,IAAI,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAC1C,IAAI,CAAC,QAAQ,EAAE;YACX,OAAO;SACV;QACD,IAAI,IAAI,CAAC,WAAW,KAAK,QAAQ,CAAC,QAAQ,EAAE;YACxC,IAAI,CAAC,mBAAmB,EAAE,CAAC;SAC9B;;QAED,IAAI,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC;QAC9D,IAAI,UAAU,CAAC,SAAS,KAAK,EAAE,EAAE;YAC7B,IAAI,eAAe,GAAG,KAAK,CAAC,CAAC;YAC7B,IAAI,QAAQ,GAAG,KAAK,CAAC,CAAC;YACtB,IAAI,IAAI,CAAC,YAAY,KAAK,YAAY,CAAC,UAAU,EAAE;gBAC/C,eAAe,GAAG,QAAQ,CAAC,KAAK,CAAC,mBAAmB;oBAChD,UAAU,CAAC,aAAa,CAAC,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,EAAE,GAAG5B,iBAA2B,CAAC,GAAG,IAAI,CAAC;gBAC3F,QAAQ,GAAG,eAAe,GAAG,YAAY,CAAC,eAAe,EAAE,cAAc,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC;aACjG;YACD,IAAI,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC;YACzB,IAAI,CAAC,iBAAiB,CAAC,UAAU,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;SACtD;QACD,IAAI,gBAAgB,GAAG,QAAQ,CAAC,UAAU,CAAC;QAC3C,IAAI,WAAW,GAAG,gBAAgB,CAAC,KAAK,CAAC;QACzC,WAAW,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;QAC1C,gBAAgB,CAAC,aAAa,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE,IAAI,CAAC,CAAC;QAC7D,IAAI,IAAI,CAAC,WAAW,KAAK,QAAQ,CAAC,QAAQ,EAAE;YACxC,IAAI,CAAC,aAAa,EAAE,CAAC;SACxB;KACJ,CAAC;;;;;;;IAOF,MAAM,CAAC,SAAS,CAAC,QAAQ,GAAG,UAAU,MAAM,EAAE;QAC1C,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;KACnC,CAAC;;;;;;;IAOF,MAAM,CAAC,SAAS,CAAC,QAAQ,GAAG,UAAU,MAAM,EAAE;QAC1C,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;KACpC,CAAC;IACF,MAAM,CAAC,SAAS,CAAC,YAAY,GAAG,UAAU,MAAM,EAAE,QAAQ,EAAE;QACxD,IAAI,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAC1C,IAAI,CAAC,QAAQ,EAAE;YACX,OAAO;SACV;QACD,IAAI,GAAG,CAAC;QACR,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,KAAK,aAAa,EAAE;YACtC,GAAG,GAAG,cAAc,CAAC,IAAI,EAAE,MAAM,GAAGQ,sBAAgC,EAAE,QAAQ,CAAC,CAAC;SACnF;aACI;YACD,GAAG,GAAG,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;SAChD;QACD,IAAI,GAAG,EAAE;YACL,IAAI,OAAO,GAAG,OAAO,CAAC,GAAG,EAAE,gBAAgB,CAAC,CAAC;YAC7C,QAAQ,GAAG,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;SACvF;KACJ,CAAC;;;;;;;IAOF,MAAM,CAAC,SAAS,CAAC,SAAS,GAAG,UAAU,GAAG,EAAE;QACxC,IAAI,KAAK,GAAG,GAAG,CAAC,EAAE,CAAC;QACnB,IAAI,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,EAAE,KAAK,KAAK,CAAC,EAAE,CAAC,CAAC;QACzE,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;YACd,OAAO;SACV;QACD,IAAI,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;QAC3E,IAAI,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;QAC9D,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;QACjC,IAAI,MAAM,KAAK,UAAU,CAAC,SAAS,KAAK,EAAE,CAAC,EAAE;;YAEzC,IAAI,GAAG,CAAC,QAAQ,EAAE;gBACd,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE;oBACpD,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;oBAChF,MAAM,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;iBAC1G;aACJ;;YAED,IAAI,GAAG,CAAC,MAAM,EAAE;gBACZ,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,QAAQ,GAAG,MAAM,EAAE,EAAE,GAAG,QAAQ,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE;oBAC5D,IAAI,KAAK,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;oBACzB,IAAI,eAAe,GAAG,KAAK,CAAC,WAAW,GAAG,UAAU,CAAC,aAAa,CAAC,GAAG,GAAG,KAAK,CAAC,EAAE,GAAGgB,WAAqB,GAAGgB,WAAqB,CAAC,GAAG,IAAI,CAAC;oBAC1I,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,KAAK,CAAC,WAAW,EAAE,EAAE,GAAG,EAAE,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE;wBAC3D,IAAI,UAAU,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;wBACxB,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,UAAU,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE;4BAC1D,IAAI,IAAI,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;4BAClB,IAAI,GAAG,GAAG,eAAe,GAAG,IAAI,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,eAAe,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,aAAa,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;4BAC5I,IAAI,IAAI,CAAC,IAAI,KAAK,cAAc,CAAC,WAAW,IAAI,IAAI,CAAC,YAAY,KAAK,SAAS,EAAE;gCAC7E,GAAG,GAAG,eAAe,GAAG,IAAI,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,eAAe,EAAE,IAAI,CAAC,EAAE,GAAGhC,sBAAgC,CAAC;oCAC5H,UAAU,CAAC,aAAa,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,GAAGA,sBAAgC,CAAC,CAAC;6BAClF;4BACD,IAAI,GAAG,EAAE;gCACL,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;6BACnC;yBACJ;qBACJ;oBACD,IAAI,eAAe,EAAE;wBACjB,IAAI,CAAC,oBAAoB,CAAC,sBAAsB,CAAC,eAAe,CAAC,CAAC;qBACrE;iBACJ;gBACD,IAAI,aAAa,GAAG,UAAU,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,CAAC;;gBAEnE,aAAa,CAAC,OAAO,CAAC,UAAU,QAAQ,EAAE,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;aACrE;SACJ;QACD,IAAI,KAAK,KAAK,IAAI,CAAC,WAAW,EAAE;YAC5B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;SAC3B;QACD,IAAI,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;QAC1D,SAAS,CAAC,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QACnC,IAAI,CAAC,aAAa,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;QAC5F,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,IAAI,UAAU,CAAC,SAAS,KAAK,EAAE,EAAE;;YAE7B,IAAI,GAAG,CAAC,MAAM,EAAE;gBACZ,IAAI,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;gBAC1D,MAAM,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;aAChC;YACD,IAAI,IAAI,CAAC,WAAW,KAAK,KAAK,EAAE;gBAC5B,IAAI,CAAC,aAAa,EAAE,CAAC;aACxB;;YAED,IAAI,GAAG,CAAC,QAAQ,EAAE;gBACd,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;gBAC7C,MAAM,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;aACvE;;YAED,IAAI,GAAG,CAAC,MAAM,EAAE;gBACZ,MAAM,CAAC,aAAa,CAAC,GAAG,GAAG,KAAK,GAAGkC,SAAmB,CAAC,CAAC,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC;aACxF;SACJ;KACJ,CAAC;;;;;;;IAOF,MAAM,CAAC,SAAS,CAAC,WAAW,GAAG,UAAU,KAAK,EAAE;QAC5C,IAAI,OAAO,GAAG,KAAK,CAAC,EAAE,CAAC;QACvB,IAAI,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAC5C,IAAI,CAAC,QAAQ,EAAE;YACX,OAAO;SACV;QACD,IAAI,IAAI,CAAC,WAAW,KAAK,QAAQ,CAAC,QAAQ,EAAE;YACxC,IAAI,CAAC,mBAAmB,EAAE,CAAC;SAC9B;;QAED,IAAI,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC;QAC9D,IAAI,QAAQ,GAAG,UAAU,CAAC,aAAa,CAAC,GAAG,GAAG,OAAO,CAAC,CAAC;QACvD,IAAI,cAAc,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,GAAG,KAAK,CAAC,EAAE,GAAGf,YAAsB,CAAC,CAAC;QACrF,IAAI,eAAe,CAAC;QACpB,IAAI,QAAQ,CAAC;QACb,IAAI,UAAU,CAAC,SAAS,KAAK,EAAE,EAAE;YAC7B,IAAI,QAAQ,CAAC,KAAK,CAAC,gBAAgB,EAAE;gBACjC,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;aAChE;YACD,IAAI,IAAI,CAAC,YAAY,KAAK,YAAY,CAAC,UAAU,EAAE;gBAC/C,eAAe,GAAG,QAAQ,CAAC,KAAK,CAAC,mBAAmB;oBAChD,UAAU,CAAC,aAAa,CAAC,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,EAAE,GAAG3B,iBAA2B,CAAC,GAAG,IAAI,CAAC;gBAC3F,QAAQ,GAAG,eAAe,GAAG,YAAY,CAAC,eAAe,EAAE,cAAc,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC;aACjG;;YAED,IAAI,KAAK,CAAC,QAAQ,EAAE;gBAChB,IAAI,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE;oBACzB,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;oBACnD,IAAI,cAAc,EAAE;wBAChB,cAAc,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;qBAC5D;iBACJ;aACJ;;YAED,IAAI,KAAK,CAAC,WAAW,IAAI,KAAK,CAAC,WAAW,EAAE;gBACxC,IAAI,QAAQ,CAAC,KAAK,CAAC,WAAW,IAAI,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE;oBAC1D,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,GAAG,EAAE,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE;wBACpE,IAAI,UAAU,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;wBACxB,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,UAAU,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE;4BAC1D,IAAI,IAAI,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;4BAClB,IAAI,CAAC,iBAAiB,CAAC,UAAU,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;yBACtD;qBACJ;oBACD,IAAI,kBAAkB,GAAG,QAAQ,CAAC,gBAAgB,CAAC,sBAAsB,CAAC,CAAC;;oBAE3E,kBAAkB,CAAC,OAAO,CAAC,UAAU,aAAa,EAAE,EAAE,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;oBACjF,IAAI,KAAK,CAAC,WAAW,EAAE;wBACnB,IAAI,YAAY,GAAG,cAAc,CAAC,aAAa,CAAC,yBAAyB,CAAC,CAAC;wBAC3E,IAAI,SAAS,GAAG,YAAY,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC;wBAChF,IAAI,SAAS,EAAE;4BACX,WAAW,CAAC,CAAC,YAAY,CAAC,EAAE,SAAS,CAAC,CAAC;yBAC1C;qBACJ;iBACJ;aACJ;YACD,IAAI,IAAI,CAAC,YAAY,KAAK,YAAY,CAAC,UAAU,EAAE;gBAC/C,IAAI,QAAQ,CAAC,KAAK,CAAC,mBAAmB,EAAE;oBACpC,IAAI,QAAQ,CAAC,MAAM,CAAC,iBAAiB,KAAK,CAAC,EAAE;wBACzC,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC;qBACvC;iBACJ;qBACI;oBACD,IAAI,gBAAgB,GAAG,QAAQ,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,EAAE,GAAG2B,YAAsB,CAAC,CAAC;oBACvG,IAAI,gBAAgB,IAAI,gBAAgB,CAAC,iBAAiB,KAAK,CAAC,EAAE;wBAC9D,gBAAgB,CAAC,MAAM,EAAE,CAAC;qBAC7B;oBACD,IAAI,cAAc,GAAG,QAAQ,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,GAAGH,WAAqB,CAAC,CAAC;oBAC3I,IAAI,cAAc,IAAI,cAAc,CAAC,iBAAiB,KAAK,CAAC,EAAE;wBAC1D,cAAc,CAAC,MAAM,EAAE,CAAC;qBAC3B;iBACJ;aACJ;SACJ;QACD,IAAI,WAAW,GAAG,QAAQ,CAAC,KAAK,CAAC;QACjC,WAAW,CAAC,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QACvC,WAAW,CAAC,aAAa,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,WAAW,EAAE,YAAY,EAAE,WAAW,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;QACtH,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,IAAI,UAAU,CAAC,SAAS,KAAK,EAAE,EAAE;;YAE7B,IAAI,KAAK,CAAC,gBAAgB,EAAE;gBACxB,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,EAAE,EAAE,cAAc,CAAC,CAAC;aAC3D;;YAED,IAAI,KAAK,CAAC,WAAW,IAAI,KAAK,CAAC,WAAW,EAAE;gBACxC,IAAI,YAAY,GAAG,cAAc,CAAC,aAAa,CAAC,yBAAyB,CAAC,CAAC;gBAC3E,YAAY,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,WAAW,KAAK,QAAQ,MAAM,IAAI,CAAC,YAAY,KAAK,YAAY,CAAC,IAAIkC,aAAuB,GAAGzB,UAAoB,CAAC,CAAC;gBAC9J,IAAI,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,WAAW,EAAE,WAAW,CAAC,WAAW,EAAE,WAAW,CAAC,EAAE,EAAE,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,mBAAmB,EAAE,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;gBAC/L,MAAM,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;aAClC;YACD,IAAI,IAAI,CAAC,WAAW,KAAK,QAAQ,CAAC,QAAQ,EAAE;gBACxC,IAAI,CAAC,aAAa,EAAE,CAAC;aACxB;;YAED,IAAI,KAAK,CAAC,QAAQ,EAAE;gBAChB,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;gBAC7C,IAAI,cAAc,EAAE;oBAChB,cAAc,CAAC,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;iBACtD;aACJ;;YAED,IAAI,KAAK,CAAC,MAAM,EAAE;gBACd,IAAI,IAAI,CAAC,YAAY,KAAK,YAAY,CAAC,UAAU,IAAI,CAAC,KAAK,CAAC,mBAAmB,EAAE;oBAC7E,IAAI,cAAc,GAAG,QAAQ,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,GAAG,KAAK,CAAC,EAAE,GAAGS,SAAmB,CAAC,CAAC;oBACzF,IAAI,cAAc,EAAE;wBAChB,cAAc,CAAC,SAAS,GAAG,WAAW,CAAC,MAAM,CAAC;qBACjD;iBACJ;qBACI,IAAI,IAAI,CAAC,YAAY,KAAK,YAAY,CAAC,OAAO,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE;oBAC7E,QAAQ,CAAC,aAAa,CAAC,wBAAwB,CAAC,CAAC,SAAS,GAAG,WAAW,CAAC,MAAM,CAAC;iBACnF;qBACI,IAAI,IAAI,CAAC,YAAY,KAAK,YAAY,CAAC,OAAO,IAAI,WAAW,CAAC,WAAW,EAAE;oBAC5E,IAAI,WAAW,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,GAAG,WAAW,CAAC,EAAE,GAAGlB,WAAqB,GAAGgB,WAAqB,CAAC,CAAC;;oBAE/G,IAAI,WAAW,GAAG,WAAW,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;oBAC3D,IAAI,cAAc,GAAG,WAAW,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,GAAG,KAAK,CAAC,EAAE,GAAGE,SAAmB,CAAC,CAAC;oBAC5F,IAAI,cAAc,EAAE;wBAChB,cAAc,CAAC,SAAS,GAAG,WAAW,CAAC,MAAM,CAAC;qBACjD;iBACJ;aACJ;SACJ;KACJ,CAAC;;;;;;;IAOF,MAAM,CAAC,SAAS,CAAC,gBAAgB,GAAG,UAAU,UAAU,EAAE;QACtD,IAAI,YAAY,GAAG,UAAU,CAAC,EAAE,CAAC;QACjC,IAAI,QAAQ,GAAG,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;QACtD,IAAI,CAAC,QAAQ,EAAE;YACX,OAAO;SACV;QACD,IAAI,IAAI,CAAC,WAAW,KAAK,QAAQ,CAAC,QAAQ,EAAE;YACxC,IAAI,CAAC,mBAAmB,EAAE,CAAC;SAC9B;;QAED,IAAI,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC;QAC9D,IAAI,aAAa,GAAG,UAAU,CAAC,aAAa,CAAC,GAAG,GAAG,YAAY,CAAC,CAAC;QACjE,IAAI,UAAU,CAAC,SAAS,KAAK,EAAE,EAAE;YAC7B,IAAI,eAAe,GAAG,KAAK,CAAC,CAAC;YAC7B,IAAI,QAAQ,GAAG,KAAK,CAAC,CAAC;YACtB,IAAI,IAAI,CAAC,YAAY,KAAK,YAAY,CAAC,UAAU,EAAE;gBAC/C,eAAe,GAAG,QAAQ,CAAC,KAAK,CAAC,mBAAmB;oBAChD,UAAU,CAAC,aAAa,CAAC,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,EAAE,GAAG1C,iBAA2B,CAAC,GAAG,IAAI,CAAC;gBAC3F,QAAQ,GAAG,eAAe,GAAG,YAAY,CAAC,eAAe,EAAE,cAAc,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC;aACjG;;YAED,IAAI,UAAU,CAAC,QAAQ,EAAE;gBACrB,IAAI,QAAQ,CAAC,UAAU,CAAC,QAAQ,EAAE;oBAC9B,aAAa,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;iBAChE;aACJ;YACD,IAAI,UAAU,CAAC,KAAK,EAAE;gBAClB,IAAI,QAAQ,CAAC,UAAU,CAAC,KAAK,EAAE;oBAC3B,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,QAAQ,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE;wBACnE,IAAI,IAAI,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;wBAClB,IAAI,CAAC,iBAAiB,CAAC,UAAU,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;qBACtD;iBACJ;aACJ;SACJ;QACD,IAAI,gBAAgB,GAAG,QAAQ,CAAC,UAAU,CAAC;QAC3C,gBAAgB,CAAC,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QACjD,gBAAgB,CAAC,aAAa,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,gBAAgB,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;QACnH,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,IAAI,UAAU,CAAC,SAAS,KAAK,EAAE,EAAE;YAC7B,IAAI,UAAU,CAAC,KAAK,EAAE;gBAClB,IAAI,cAAc,GAAG,UAAU,CAAC,aAAa,CAAC,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,EAAE,GAAG2B,YAAsB,CAAC,CAAC;gBAChG,IAAI,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,QAAQ,CAAC,KAAK,CAAC,EAAE,EAAE,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,QAAQ,CAAC,KAAK,CAAC,mBAAmB,EAAE,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;gBACrM,MAAM,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;aACnC;SACJ;QACD,IAAI,IAAI,CAAC,WAAW,KAAK,QAAQ,CAAC,QAAQ,EAAE;YACxC,IAAI,CAAC,aAAa,EAAE,CAAC;SACxB;;QAED,IAAI,UAAU,CAAC,QAAQ,EAAE;YACrB,aAAa,CAAC,SAAS,CAAC,GAAG,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;SAC1D;KACJ,CAAC;;;;;;;IAOF,MAAM,CAAC,SAAS,CAAC,UAAU,GAAG,UAAU,IAAI,EAAE;QAC1C,IAAI,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC;QACrB,IAAI,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAC1C,IAAI,CAAC,QAAQ,EAAE;YACX,OAAO;SACV;QACD,IAAI,IAAI,CAAC,WAAW,KAAK,QAAQ,CAAC,QAAQ,EAAE;YACxC,IAAI,CAAC,mBAAmB,EAAE,CAAC;SAC9B;;QAED,IAAI,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC;QAC9D,IAAI,QAAQ,GAAG,UAAU,CAAC,aAAa,CAAC,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACjE,IAAI,cAAc,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,EAAE,GAAGA,YAAsB,CAAC,CAAC;QAC9F,IAAI,aAAa,GAAG,IAAI,CAAC;QACzB,IAAI,OAAO,GAAG,IAAI,CAAC;QACnB,IAAI,eAAe,CAAC;QACpB,IAAI,QAAQ,CAAC;QACb,IAAI,UAAU,CAAC,SAAS,KAAK,EAAE,EAAE;YAC7B,IAAI,IAAI,CAAC,YAAY,KAAK,YAAY,CAAC,UAAU,EAAE;gBAC/C,eAAe,GAAG,QAAQ,CAAC,KAAK,CAAC,mBAAmB;oBAChD,UAAU,CAAC,aAAa,CAAC,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,EAAE,GAAG3B,iBAA2B,CAAC,GAAG,IAAI,CAAC;gBAC3F,QAAQ,GAAG,eAAe,GAAG,YAAY,CAAC,eAAe,EAAE,cAAc,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC;aACjG;YACD,IAAI,IAAI,CAAC,YAAY,KAAK,YAAY,CAAC,UAAU,IAAI,QAAQ,CAAC,IAAI,CAAC,cAAc,KAAK,WAAW,CAAC,QAAQ,EAAE;gBACxG,aAAa,GAAG,QAAQ,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,GAAG,MAAM,GAAG2B,YAAsB,CAAC,CAAC;gBACrF,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,GAAG,MAAM,CAAC,CAAC;gBACtD,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc,KAAK,WAAW,CAAC,QAAQ,EAAE;oBACrE,IAAI,aAAa,GAAG,cAAc,CAAC,aAAa,CAAC,GAAG,GAAG,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;oBAC/E,IAAI,aAAa,EAAE;wBACf,aAAa,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;qBAC5C;iBACJ;aACJ;iBACI;gBACD,aAAa,GAAG,cAAc,CAAC,aAAa,CAAC,GAAG,GAAG,MAAM,GAAGA,YAAsB,CAAC,CAAC;gBACpF,OAAO,GAAG,UAAU,CAAC,aAAa,CAAC,GAAG,GAAG,MAAM,CAAC,CAAC;gBACjD,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,KAAK,aAAa,IAAI,IAAI,CAAC,YAAY,KAAK,YAAY,CAAC,OAAO,EAAE;oBACpF,OAAO,GAAG,UAAU,CAAC,aAAa,CAAC,GAAG,GAAG,MAAM,GAAGnB,sBAAgC,CAAC,CAAC;iBACvF;gBACD,IAAI,IAAI,CAAC,YAAY,KAAK,YAAY,CAAC,UAAU,IAAI,IAAI,CAAC,cAAc,KAAK,WAAW,CAAC,QAAQ,EAAE;oBAC/F,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,KAAK,CAAC,mBAAmB,EAAE,QAAQ,CAAC,KAAK,CAAC,EAAE,EAAE,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,aAAa,EAAE,cAAc,CAAC,CAAC;oBACxK,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,KAAK,cAAc,CAAC,QAAQ,MAAM,QAAQ,CAAC,IAAI,CAAC,IAAI,KAAK,cAAc,CAAC,WAAW,CAAC,KAAK,IAAI,CAAC,IAAI,KAAK,cAAc,CAAC,WAAW,CAAC,EAAE;wBACvJ,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,IAAI,EAAE,aAAa,EAAE,QAAQ,CAAC,KAAK,CAAC,mBAAmB,EAAE,IAAI,CAAC,CAAC;qBACjG;iBACJ;aACJ;;YAED,IAAI,IAAI,CAAC,QAAQ,EAAE;gBACf,IAAI,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE;oBACxB,aAAa,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;iBAC1D;aACJ;YACD,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YAC7C,OAAO,CAAC,MAAM,EAAE,CAAC;YACjB,IAAI,SAAS,GAAG,aAAa,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,wCAAwC,CAAC,CAAC;YAC9F,IAAI,SAAS,EAAE;gBACX,WAAW,CAAC,CAAC,aAAa,CAAC,EAAE,SAAS,CAAC,CAAC;aAC3C;SACJ;QACD,IAAI,UAAU,GAAG,QAAQ,CAAC,IAAI,CAAC;QAC/B,UAAU,CAAC,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACrC,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,IAAI,UAAU,CAAC,SAAS,KAAK,EAAE,EAAE;YAC7B,IAAI,EAAE,IAAI,CAAC,YAAY,KAAK,YAAY,CAAC,UAAU,IAAI,UAAU,CAAC,cAAc,KAAK,WAAW,CAAC,QAAQ,CAAC,EAAE;gBACxG,aAAa,GAAG,cAAc,CAAC,aAAa,CAAC,GAAG,GAAG,MAAM,GAAGmB,YAAsB,CAAC,CAAC;aACvF;iBACI;gBACD,aAAa,GAAG,QAAQ,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,GAAG,MAAM,GAAGA,YAAsB,CAAC,CAAC;aACxF;;YAED,IAAI,UAAU,CAAC,qBAAqB,IAAI,gBAAgB,CAAC,UAAU,CAAC,qBAAqB,CAAC,EAAE;gBACxF,aAAa,CAAC,SAAS,CAAC,GAAG,CAACpB,qBAA+B,CAAC,CAAC;gBAC7D,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,aAAa,CAAC,EAAE,EAAE,IAAI,EAAE,UAAU,CAAC,qBAAqB,EAAE,CAAC,CAAC;aAC3F;YACD,IAAI,IAAI,GAAG,UAAU,CAAC,UAAU,CAAC;YACjC,IAAI,IAAI,CAAC,YAAY,KAAK,YAAY,EAAE;gBACpC,IAAI,GAAG,CAAC,CAAC,UAAU,CAAC,YAAY,KAAK,cAAc,CAAC,KAAK,MAAM,UAAU,CAAC,YAAY,GAAG,cAAc,CAAC,MAAM,CAAC;qBAC1G,UAAU,CAAC,cAAc,KAAK,WAAW,CAAC,QAAQ,CAAC,IAAI,cAAc,CAAC,MAAM,GAAG,cAAc,CAAC,KAAK,CAAC;gBACzG,UAAU,CAAC,aAAa,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,CAAC;aACxD;YACD,IAAI,IAAI,GAAG,cAAc,CAAC,KAAK,EAAE;gBAC7B,aAAa,CAAC,SAAS,CAAC,GAAG,CAAC6B,iBAA2B,EAAED,qBAA+B,CAAC,CAAC;aAC7F;iBACI;gBACD,aAAa,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,cAAc,CAAC,MAAM,IAAIE,kBAA4B,GAAGC,iBAA2B,CAAC,CAAC;aAC5H;YACD,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;YACjD,IAAI,IAAI,CAAC,YAAY,KAAK,YAAY,IAAI,QAAQ,CAAC,KAAK,CAAC,mBAAmB,EAAE;gBAC1E,IAAI,QAAQ,CAAC,MAAM,CAAC,iBAAiB,KAAK,CAAC,EAAE;oBACzC,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC;iBACvC;aACJ;YACD,IAAI,IAAI,CAAC,WAAW,KAAK,QAAQ,CAAC,QAAQ,EAAE;gBACxC,IAAI,CAAC,aAAa,EAAE,CAAC;aACxB;YACD,IAAI,IAAI,CAAC,QAAQ,EAAE;gBACf,aAAa,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;aACpD;YACD,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,EAAE,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC;SAC9D;KACJ,CAAC;IACF,MAAM,CAAC,SAAS,CAAC,iBAAiB,GAAG,UAAU,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE;QACvE,IAAI,GAAG,GAAG,IAAI,CAAC;QACf,IAAI,IAAI,CAAC,YAAY,KAAK,YAAY,CAAC,OAAO,EAAE;YAC5C,GAAG,GAAG,CAAC,IAAI,CAAC,cAAc,GAAG,WAAW,CAAC,OAAO,IAAI,UAAU,CAAC,aAAa,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC;YACnG,IAAI,IAAI,CAAC,IAAI,KAAK,aAAa,EAAE;gBAC7B,GAAG,GAAG,CAAC,IAAI,CAAC,cAAc,GAAG,WAAW,CAAC,OAAO,IAAI,UAAU,CAAC,aAAa,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG9B,sBAAgC,CAAC,GAAG,IAAI,CAAC;aACzI;SACJ;aACI;;YAED,GAAG,GAAG,CAAC,IAAI,CAAC,cAAc,GAAG,WAAW,CAAC,UAAU,IAAI,UAAU,CAAC,aAAa,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC;;YAEtG,IAAI,CAAC,GAAG,EAAE;gBACN,GAAG,GAAG,QAAQ,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;aACtD;SACJ;QACD,IAAI,GAAG,EAAE;YACL,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;YAChC,IAAI,IAAI,CAAC,IAAI,KAAK,aAAa,IAAI,IAAI,CAAC,YAAY,KAAK,YAAY,CAAC,UAAU,EAAE;gBAC9E,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,GAAGmB,YAAsB,CAAC,CAAC,MAAM,EAAE,CAAC;aACtE;iBACI;gBACD,GAAG,CAAC,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,GAAGA,YAAsB,CAAC,CAAC,MAAM,EAAE,CAAC;aAChE;SACJ;KACJ,CAAC;;;;;;;IAOF,MAAM,CAAC,SAAS,CAAC,UAAU,GAAG,UAAU,MAAM,EAAE;QAC5C,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;KACzC,CAAC;;;;;;;IAOF,MAAM,CAAC,SAAS,CAAC,WAAW,GAAG,UAAU,MAAM,EAAE;QAC7C,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;KACxC,CAAC;IACF,MAAM,CAAC,SAAS,CAAC,iBAAiB,GAAG,UAAU,MAAM,EAAE,UAAU,EAAE;QAC/D,IAAI,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAC1C,IAAI,CAAC,QAAQ,EAAE;YACX,OAAO;SACV;QACD,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,IAAI,CAAC,CAAC;QAC5D,IAAI,GAAG,CAAC;QACR,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,KAAK,aAAa,EAAE;YACtC,GAAG,GAAG,cAAc,CAAC,IAAI,EAAE,MAAM,GAAGnB,sBAAgC,EAAE,QAAQ,CAAC,CAAC;SACnF;aACI;YACD,GAAG,GAAG,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;SAChD;QACD,IAAI,GAAG,EAAE;YACL,IAAI,OAAO,GAAG,OAAO,CAAC,GAAG,EAAE,gBAAgB,CAAC,CAAC;YAC7C,OAAO,CAAC,SAAS,CAAC,MAAM,CAACyD,YAAsB,EAAE,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACzE,IAAI,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YACvD,IAAI,UAAU,KAAK,UAAU,EAAE;gBAC3B,IAAI,UAAU,KAAK,WAAW,IAAI,IAAI,CAAC,YAAY,KAAK,YAAY,EAAE;oBAClE,qBAAqB,CAAC,GAAG,EAAE,cAAc,EAAE,UAAU,CAAC,CAAC;oBACvD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;wBACrE,IAAI,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,GAAG,MAAM,GAAGzD,sBAAgC,GAAG,CAAC,CAAC,CAAC;wBACzF,qBAAqB,CAAC,MAAM,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC;qBACpD;iBACJ;qBACI,IAAI,UAAU,KAAK,WAAW,IAAI,IAAI,CAAC,YAAY,KAAK,SAAS,EAAE;oBACpE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;wBACrE,IAAI,MAAM,GAAG,GAAG,CAAC,aAAa,CAAC,GAAG,GAAG,MAAM,GAAGA,sBAAgC,GAAG,CAAC,CAAC,CAAC;wBACpF,qBAAqB,CAAC,MAAM,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC;qBACpD;iBACJ;qBACI;oBACD,qBAAqB,CAAC,GAAG,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;iBACtD;aACJ;iBACI;gBACD,GAAG,CAAC,SAAS,CAAC,MAAM,CAACyD,YAAsB,EAAE,UAAU,CAAC,CAAC;gBACzD,GAAG,CAAC,eAAe,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;aAC/C;SACJ;KACJ,CAAC;IACF,MAAM,CAAC,SAAS,CAAC,YAAY,GAAG,YAAY;QACxC,YAAY,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;KAC7D,CAAC;IACF,MAAM,CAAC,SAAS,CAAC,OAAO,GAAG,YAAY;QACnC,IAAI,CAAC,oBAAoB,CAAC,OAAO,EAAE,CAAC;QACpC,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;QACjC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC7B,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAChC,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE;YAC1B,IAAI,CAAC,oBAAoB,EAAE,CAAC;SAC/B;QACD,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC;QAChC,IAAI,IAAI,CAAC,YAAY,EAAE;YACnB,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;SAC/B;QACD,IAAI,IAAI,CAAC,aAAa,EAAE;YACpB,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAC3B,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;SAC7B;QACD,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACtB,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;QACxB,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,GAAG/C,MAAgB,CAAC,CAAC,CAAC;QAC7E,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,cAAc,CAACE,sBAAgC,CAAC,CAAC;QACpE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,cAAc,CAACC,+BAAyC,CAAC,CAAC;QAC7E,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;QAC3C,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,WAAW,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,KAAK,CAACR,KAAe,CAAC,CAAC,CAAC;SACrE;QACD,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAACC,OAAiB,EAAE8B,sBAAgC,EAAEM,eAAyB,EAAEM,kBAA4B,EAAElC,eAAyB,EAAE,OAAO,CAAC,CAAC;QAChL,IAAI,CAAC,YAAY,EAAE,CAAC;KACvB,CAAC;;;;;;;;;IASF,MAAM,CAAC,SAAS,CAAC,iBAAiB,GAAG,UAAU,OAAO,EAAE,OAAO,EAAE;QAC7D,IAAI,EAAE,EAAE,EAAE,CAAC;QACX,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE;YAC9D,IAAI,IAAI,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;YAClB,QAAQ,IAAI;gBACR,KAAK,cAAc;oBACf,IAAI,CAAC,YAAY,EAAE,CAAC;oBACpB,MAAM;gBACV,KAAK,UAAU;oBACX,IAAI,OAAO,CAAC,QAAQ,EAAE;wBAClB,CAAC,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,OAAO,CAAC,QAAQ,CAAC,KAAK,CAACT,KAAe,CAAC,CAAC,CAAC;qBAC3F;oBACD,IAAI,OAAO,CAAC,QAAQ,EAAE;wBAClB,CAAC,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,OAAO,CAAC,QAAQ,CAAC,KAAK,CAACA,KAAe,CAAC,CAAC,CAAC;qBACxF;oBACD,MAAM;gBACV,KAAK,aAAa;oBACd,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAACS,eAAyB,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;oBAC3E,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,WAAW,GAAG,MAAM,GAAG,OAAO,CAAC;oBACpG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;wBACnB,IAAI,CAAC,aAAa,EAAE,CAAC;qBACxB;oBACD,MAAM;gBACV,KAAK,QAAQ;oBACT,IAAI,CAAC,oBAAoB,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;oBACnD,MAAM;gBACV,KAAK,mBAAmB;oBACpB,IAAI,CAAC,oBAAoB,CAAC,EAAE,iBAAiB,EAAE,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC;oBACzE,MAAM;gBACV,KAAK,WAAW;oBACZ,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAACR,OAAiB,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;oBACjE,IAAI,CAAC,oBAAoB,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;oBAC5D,IAAI,IAAI,CAAC,YAAY,EAAE;wBACnB,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;qBACrE;oBACD,MAAM;gBACV,KAAK,iBAAiB;oBAClB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;wBACvC,IAAI,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;wBACvE,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;wBAChD,IAAI,UAAU,CAAC,aAAa,CAAC,GAAG,GAAG2B,YAAsB,CAAC,EAAE;4BACxD,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,GAAG,CAAC,MAAM,EAAE,EAAE,GAAG,EAAE,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE;gCACpD,IAAI,KAAK,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;gCACnB,IAAI,KAAK,CAAC,gBAAgB,EAAE;oCACxB,IAAI,SAAS,GAAGmB,wBAAkC,GAAG,GAAG,IAAI,IAAI,CAAC,eAAe,IAAIC,oBAA8B,CAAC,CAAC;oCACpH,IAAI,KAAK,CAAC,WAAW,EAAE;wCACnB,IAAI,OAAO,GAAG,UAAU,CAAC,aAAa,CAAC,GAAG,GAAG,KAAK,CAAC,EAAE,GAAGrC,WAAqB,GAAGgB,WAAqB,CAAC,CAAC;wCACvG,IAAI,QAAQ,GAAG,YAAY,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;wCACrD,IAAI,eAAe,GAAG,QAAQ,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,GAAG,KAAK,CAAC,EAAE,GAAGsB,WAAqB,CAAC,CAAC;wCAC5F,eAAe,CAAC,SAAS,GAAG,SAAS,CAAC;qCACzC;yCACI;wCACD,IAAI,OAAO,GAAG,UAAU,CAAC,aAAa,CAAC,GAAG,GAAG,KAAK,CAAC,EAAE,GAAGA,WAAqB,CAAC,CAAC;wCAC/E,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC;qCACjC;iCACJ;6BACJ;yBACJ;qBACJ;oBACD,MAAM;gBACV,KAAK,aAAa;oBACd,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,YAAY,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;oBACjE,MAAM;gBACV,KAAK,cAAc;oBACf,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;oBAC/D,MAAM;gBACV,KAAK,MAAM;oBACP,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;oBAChC,MAAM;gBACV,KAAK,OAAO;oBACR,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,GAAG,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;oBACrD,IAAI,CAAC,aAAa,EAAE,CAAC;oBACrB,MAAM;gBACV,KAAK,UAAU;oBACX,IAAI,IAAI,CAAC,oBAAoB,EAAE;wBAC3B,IAAI,CAAC,oBAAoB,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;qBAC3D;oBACD,IAAI,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;oBACtC,UAAU,CAAC,eAAe,EAAE,CAAC;oBAC7B,MAAM;gBACV,KAAK,eAAe;oBAChB,IAAI,IAAI,CAAC,qBAAqB,EAAE;wBAC5B,IAAI,CAAC,qBAAqB,CAAC,mBAAmB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;qBACtE;oBACD,IAAI,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;oBAC1C,cAAc,CAAC,eAAe,EAAE,CAAC;oBACjC,MAAM;gBACV,KAAK,kBAAkB;oBACnB,IAAI,IAAI,CAAC,aAAa,EAAE;wBACpB,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;wBAC3B,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;wBAC1B,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,CAACzC,+BAAyC,EAAE,KAAK,CAAC,CAAC;qBAC3F;oBACD,IAAI,IAAI,CAAC,gBAAgB,EAAE;wBACvB,IAAI,CAAC,sBAAsB,EAAE,CAAC;qBACjC;oBACD,IAAI,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;oBACrC,SAAS,CAAC,eAAe,EAAE,CAAC;oBAC5B,MAAM;gBACV,KAAK,oBAAoB;oBACrB,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,oBAAoB,EAAE,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;oBACjF,MAAM;aACb;SACJ;KACJ,CAAC;IACF,IAAI,QAAQ,CAAC;IACb,UAAU,CAAC;QACP,QAAQ,CAAC,SAAS,CAAC;KACtB,EAAE,MAAM,CAAC,SAAS,EAAE,cAAc,EAAE,KAAK,CAAC,CAAC,CAAC;IAC7C,UAAU,CAAC;QACP,QAAQ,CAAC,EAAE,CAAC;KACf,EAAE,MAAM,CAAC,SAAS,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC;IACzC,UAAU,CAAC;QACP,OAAO,CAAC,EAAE,EAAE,gBAAgB,CAAC;KAChC,EAAE,MAAM,CAAC,SAAS,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC;IACzC,UAAU,CAAC;QACP,OAAO,CAAC,EAAE,EAAE,aAAa,CAAC;KAC7B,EAAE,MAAM,CAAC,SAAS,EAAE,eAAe,EAAE,KAAK,CAAC,CAAC,CAAC;IAC9C,UAAU,CAAC;QACP,QAAQ,CAAC,EAAE,CAAC;KACf,EAAE,MAAM,CAAC,SAAS,EAAE,iBAAiB,EAAE,KAAK,CAAC,CAAC,CAAC;IAChD,UAAU,CAAC;QACP,QAAQ,CAAC,KAAK,CAAC;KAClB,EAAE,MAAM,CAAC,SAAS,EAAE,aAAa,EAAE,KAAK,CAAC,CAAC,CAAC;IAC5C,UAAU,CAAC;QACP,QAAQ,CAAC,OAAO,CAAC;KACpB,EAAE,MAAM,CAAC,SAAS,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC;IACvC,UAAU,CAAC;QACP,QAAQ,CAAC,CAAC,CAAC;KACd,EAAE,MAAM,CAAC,SAAS,EAAE,aAAa,EAAE,KAAK,CAAC,CAAC,CAAC;IAC5C,UAAU,CAAC;QACP,OAAO,CAAC,EAAE,EAAE,oBAAoB,CAAC;KACpC,EAAE,MAAM,CAAC,SAAS,EAAE,cAAc,EAAE,KAAK,CAAC,CAAC,CAAC;IAC7C,UAAU,CAAC;QACP,UAAU,CAAC,EAAE,EAAE,SAAS,CAAC;KAC5B,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;IACrC,UAAU,CAAC;QACP,QAAQ,CAAC,MAAM,CAAC;KACnB,EAAE,MAAM,CAAC,SAAS,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;IACtC,UAAU,CAAC;QACP,QAAQ,CAAC,EAAE,CAAC;KACf,EAAE,MAAM,CAAC,SAAS,EAAE,kBAAkB,EAAE,KAAK,CAAC,CAAC,CAAC;IACjD,UAAU,CAAC;QACP,QAAQ,CAAC,KAAK,CAAC;KAClB,EAAE,MAAM,CAAC,SAAS,EAAE,oBAAoB,EAAE,KAAK,CAAC,CAAC,CAAC;IACnD,UAAU,CAAC;QACP,KAAK,EAAE;KACV,EAAE,MAAM,CAAC,SAAS,EAAE,cAAc,EAAE,KAAK,CAAC,CAAC,CAAC;IAC7C,UAAU,CAAC;QACP,KAAK,EAAE;KACV,EAAE,MAAM,CAAC,SAAS,EAAE,aAAa,EAAE,KAAK,CAAC,CAAC,CAAC;IAC5C,UAAU,CAAC;QACP,KAAK,EAAE;KACV,EAAE,MAAM,CAAC,SAAS,EAAE,iBAAiB,EAAE,KAAK,CAAC,CAAC,CAAC;IAChD,UAAU,CAAC;QACP,KAAK,EAAE;KACV,EAAE,MAAM,CAAC,SAAS,EAAE,kBAAkB,EAAE,KAAK,CAAC,CAAC,CAAC;IACjD,UAAU,CAAC;QACP,KAAK,EAAE;KACV,EAAE,MAAM,CAAC,SAAS,EAAE,mBAAmB,EAAE,KAAK,CAAC,CAAC,CAAC;IAClD,UAAU,CAAC;QACP,KAAK,EAAE;KACV,EAAE,MAAM,CAAC,SAAS,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC;IACxC,MAAM,GAAG,QAAQ,GAAG,UAAU,CAAC;QAC3B,qBAAqB;KACxB,EAAE,MAAM,CAAC,CAAC;IACX,OAAO,MAAM,CAAC;CACjB,CAAC,SAAS,CAAC,CAAC;;ACtrHb;;GAEG;;ACGH;;;AAGA,IAAI,cAAc,kBAAkB,YAAY;IAC5C,SAAS,cAAc,CAAC,MAAM,EAAE;QAC5B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;KACxB;IACD,cAAc,CAAC,SAAS,CAAC,aAAa,GAAG,YAAY;QACjD,OAAO,gBAAgB,CAAC;KAC3B,CAAC;IACF,cAAc,CAAC,SAAS,CAAC,OAAO,GAAG,YAAY;QAC3C,IAAI,IAAI,CAAC,WAAW,EAAE;YAClB,IAAI,CAAC,UAAU,EAAE,CAAC;SACrB;QACD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;KACtB,CAAC;;;;;;;;IAQF,cAAc,CAAC,SAAS,CAAC,cAAc,GAAG,UAAU,eAAe,EAAE;QACjE,IAAI,KAAK,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE;YAC1B,OAAO;SACV;QACD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,QAAQ,EAAE;YAClD,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,GAAGmD,mBAA6B;SAC7D,CAAC,CAAC;QACH,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC;QACxC,IAAI,UAAU,GAAG,MAAM,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;QACpD,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;QACjD,IAAI,CAAC,WAAW,GAAG,IAAI,cAAc,CAAC;YAClC,OAAO,EAAE,eAAe,CAAC,IAAI;YAC7B,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS;YAChC,QAAQ,EAAE,iCAAiC;YAC3C,OAAO,EAAE,YAAY;gBACjB,MAAM,CAAC,KAAK,CAAC,WAAW,CAACpD,sBAAgC,EAAE,KAAK,CAAC,UAAU,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;aACnG;YACD,WAAW,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC;YAClD,UAAU,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC;YAChD,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC;YAC3C,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC;SAC5C,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QACpB,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,EAAE;YACpC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,EAAE,CAAC,CAAC;SAClF;aACI;YACD,IAAI,CAAC,gBAAgB,CAAC,eAAe,CAAC,CAAC;SAC1C;QACD,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,sBAAsB,EAAE,CAAC;QAC5C,IAAI,CAAC,kBAAkB,CAAC,eAAe,CAAC,CAAC;KAC5C,CAAC;IACF,cAAc,CAAC,SAAS,CAAC,kBAAkB,GAAG,UAAU,eAAe,EAAE;QACrE,IAAI,gBAAgB,CAAC,eAAe,CAAC,qBAAqB,CAAC,EAAE;YACzD,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,CAACb,qBAA+B,CAAC,CAAC;YAC/D,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,UAAU,CAAC,EAAE,EAAE,IAAI,EAAE,eAAe,CAAC,qBAAqB,EAAE,CAAC,CAAC;SACzG;KACJ,CAAC;IACF,cAAc,CAAC,SAAS,CAAC,cAAc,GAAG,UAAU,MAAM,EAAE,IAAI,EAAE;;QAE9D,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAAE;YACtE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;SACtB;QACD,IAAI,KAAK,GAAG,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU;YAChD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC;QACrC,IAAI,KAAK,EAAE;YACP,IAAI,SAAS,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;YAClF,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;YAC5B,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;SAClC;KACJ,CAAC;IACF,cAAc,CAAC,SAAS,CAAC,aAAa,GAAG,UAAU,MAAM,EAAE,IAAI,EAAE;QAC7D,IAAI,OAAO,GAAG,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC;QAC1E,OAAO,CAAC,KAAK,EAAE,CAAC;QAChB,IAAI,KAAK,GAAG,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;QAC5E,IAAI,KAAK,EAAE;YACP,IAAI,SAAS,GAAG,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC;YAC1C,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;SAC/B;KACJ,CAAC;;IAEF,cAAc,CAAC,SAAS,CAAC,aAAa,GAAG,UAAU,KAAK,EAAE;QACtD,IAAI,SAAS,GAAG,EAAE,CAAC;QACnB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACnC,IAAI,IAAI,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;YAC7C,SAAS,CAAC,IAAI,CAAC;gBACX,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,EAAE,EAAE,IAAI,CAAC,EAAE;gBACX,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,GAAG,EAAE,IAAI,CAAC,GAAG;gBACb,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC;aACxC,CAAC,CAAC;SACN;QACD,OAAO,SAAS,CAAC;KACpB,CAAC;IACF,cAAc,CAAC,SAAS,CAAC,gBAAgB,GAAG,UAAU,WAAW,EAAE;QAC/D,IAAI,KAAK,GAAG,IAAI,CAAC;QACjB,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,EAAE;YACzC,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,GAAGkE,qBAA+B;SAC/D,CAAC,CAAC;QACH,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QACnD,IAAI,CAAC,QAAQ,GAAG,IAAI,IAAI,CAAC;YACrB,WAAW,EAAE,UAAU;YACvB,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS;YAChC,QAAQ,EAAE,eAAe;YACzB,iBAAiB,EAAE,WAAW,CAAC,iBAAiB;YAChD,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,SAAS,CAAC;YAChD,eAAe,EAAE,WAAW,CAAC,eAAe;YAC5C,QAAQ,EAAE,WAAW,CAAC,YAAY;YAClC,WAAW,EAAE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC;YACnD,UAAU,EAAE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC;YACjD,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC;YAClD,OAAO,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC;YAC9C,MAAM,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC;YAC5C,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;SACrC,EAAE,MAAM,CAAC,CAAC;QACX,YAAY,CAAC,GAAG,CAAC,MAAM,EAAE,SAAS,EAAE,UAAU,CAAC,EAAE;YAC7C,IAAI,CAAC,CAAC,GAAG,KAAK,KAAK,EAAE;gBACjB,KAAK,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC;aAC9B;SACJ,EAAE,IAAI,CAAC,CAAC;KACZ,CAAC;IACF,cAAc,CAAC,SAAS,CAAC,eAAe,GAAG,UAAU,MAAM,EAAE,IAAI,EAAE;QAC/D,IAAI,KAAK,GAAG,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU;YAChD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC;QACrC,IAAI,KAAK,EAAE;YACP,IAAI,SAAS,GAAG;gBACZ,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK;gBAC7D,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU;aACjD,CAAC;YACF,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;YAC5B,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;SAClC;KACJ,CAAC;IACF,cAAc,CAAC,SAAS,CAAC,cAAc,GAAG,UAAU,MAAM,EAAE,IAAI,EAAE;QAC9D,IAAI,KAAK,GAAG,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;QAC5E,IAAI,KAAK,EAAE;YACP,IAAI,SAAS,GAAG,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC;YAC1F,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;SAC/B;KACJ,CAAC;IACF,cAAc,CAAC,SAAS,CAAC,gBAAgB,GAAG,UAAU,IAAI,EAAE;QACxD,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAAC;QAClD,IAAI,KAAK,EAAE;YACP,IAAI,SAAS,GAAG,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;YAC3D,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;SAC/B;KACJ,CAAC;IACF,cAAc,CAAC,SAAS,CAAC,UAAU,GAAG,UAAU,IAAI,EAAE;QAClD,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;QACxC,IAAI,KAAK,EAAE;YACP,IAAI,SAAS,GAAG,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;YAC9E,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;YAC5B,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,mBAAmB,CAAC,EAAE;gBACvD,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC;aAC7B;SACJ;KACJ,CAAC;;;;;;;;IAQF,cAAc,CAAC,SAAS,CAAC,mBAAmB,GAAG,UAAU,UAAU,EAAE;QACjE,IAAI,IAAI,CAAC,WAAW,EAAE;YAClB,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;YAC3C,IAAI,IAAI,CAAC,QAAQ,EAAE;gBACf,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;aAC3C;SACJ;KACJ,CAAC;;;;;;;;IAQF,cAAc,CAAC,SAAS,CAAC,cAAc,GAAG,UAAU,eAAe,EAAE;QACjE,IAAI,eAAe,CAAC,OAAO,EAAE;YACzB,IAAI,IAAI,CAAC,WAAW,EAAE;gBAClB,IAAI,eAAe,CAAC,IAAI,EAAE;oBACtB,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC;wBAC3B,OAAO,EAAE,eAAe,CAAC,IAAI;qBAChC,CAAC,CAAC;oBACH,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,CAACrD,sBAAgC,EAAE,IAAI,CAAC,UAAU,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;iBACtH;gBACD,IAAI,eAAe,CAAC,aAAa,EAAE;oBAC/B,IAAI,IAAI,CAAC,QAAQ,EAAE;wBACf,IAAI,CAAC,WAAW,EAAE,CAAC;qBACtB;oBACD,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,EAAE,MAAM,EAAE,eAAe,CAAC,aAAa,EAAE,CAAC,CAAC;iBAC7E;qBACI;oBACD,IAAI,IAAI,CAAC,QAAQ,EAAE;wBACf,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC;4BACxB,iBAAiB,EAAE,eAAe,CAAC,iBAAiB;4BACpD,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,SAAS,CAAC;4BACpD,eAAe,EAAE,eAAe,CAAC,eAAe;4BAChD,QAAQ,EAAE,eAAe,CAAC,YAAY;yBACzC,CAAC,CAAC;qBACN;yBACI;wBACD,IAAI,CAAC,gBAAgB,CAAC,eAAe,CAAC,CAAC;qBAC1C;iBACJ;gBACD,IAAI,CAAC,qBAAqB,EAAE,CAAC;gBAC7B,IAAI,CAAC,kBAAkB,CAAC,eAAe,CAAC,CAAC;aAC5C;iBACI;gBACD,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC;aACxC;SACJ;aACI,IAAI,IAAI,CAAC,WAAW,EAAE;YACvB,IAAI,CAAC,UAAU,EAAE,CAAC;SACrB;QACD,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,sBAAsB,EAAE,CAAC;KAC/C,CAAC;IACF,cAAc,CAAC,SAAS,CAAC,WAAW,GAAG,YAAY;QAC/C,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;YACxB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;SACxB;KACJ,CAAC;IACF,cAAc,CAAC,SAAS,CAAC,UAAU,GAAG,YAAY;QAC9C,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC7B,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC;QACxC,MAAM,CAAC,KAAK,CAAC,cAAc,CAACA,sBAAgC,CAAC,CAAC;QAC9D,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;QAC3B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACxB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;KAC1B,CAAC;IACF,cAAc,CAAC,SAAS,CAAC,qBAAqB,GAAG,YAAY;QACzD,IAAI,KAAK,GAAG,IAAI,CAAC;QACjB,IAAI,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,UAAU,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,EAAE,KAAK,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QACrG,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;YACd,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,CAACb,qBAA+B,CAAC,CAAC;YAClE,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;SAC5C;KACJ,CAAC;;;;;;;;;;IAUF,cAAc,CAAC,SAAS,CAAC,QAAQ,GAAG,UAAU,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE;QAC9E,IAAI,OAAO,EAAE;YACT,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;SACxD;aACI;YACD,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;SACzD;QACD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,CAAC;KAChF,CAAC;;;;;;;;IAQF,cAAc,CAAC,SAAS,CAAC,WAAW,GAAG,UAAU,KAAK,EAAE,UAAU,EAAE;QAChE,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;QAC7C,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,CAAC;KAChF,CAAC;;;;;;;;IAQF,cAAc,CAAC,SAAS,CAAC,WAAW,GAAG,UAAU,KAAK,EAAE,UAAU,EAAE;QAChE,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;QACnD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,CAAC;KAChF,CAAC;;;;;;;;IAQF,cAAc,CAAC,SAAS,CAAC,YAAY,GAAG,UAAU,KAAK,EAAE,UAAU,EAAE;QACjE,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC;QACpD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,CAAC;KAChF,CAAC;;;;;;;;;IASF,cAAc,CAAC,SAAS,CAAC,OAAO,GAAG,UAAU,IAAI,EAAE,EAAE,EAAE,UAAU,EAAE;QAC/D,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,EAAE,UAAU,CAAC,CAAC;QAC5C,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;QACxB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,CAAC;KAChF,CAAC;IACF,OAAO,cAAc,CAAC;CACzB,EAAE,CAAC;;AC9TJ,IAAIV,YAAS,GAAG,CAACC,SAAI,IAAIA,SAAI,CAAC,SAAS,KAAK,CAAC,YAAY;IACrD,IAAI,aAAa,GAAG,UAAU,CAAC,EAAE,CAAC,EAAE;QAChC,aAAa,GAAG,MAAM,CAAC,cAAc;aAChC,EAAE,SAAS,EAAE,EAAE,EAAE,YAAY,KAAK,IAAI,UAAU,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,EAAE,CAAC;YAC5E,UAAU,CAAC,EAAE,CAAC,EAAE,EAAE,KAAK,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/E,OAAO,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;KAC9B,CAAC;IACF,OAAO,UAAU,CAAC,EAAE,CAAC,EAAE;QACnB,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACpB,SAAS,EAAE,GAAG,EAAE,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,EAAE;QACvC,CAAC,CAAC,SAAS,GAAG,CAAC,KAAK,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;KACxF,CAAC;CACL,GAAG,CAAC;AACL,AAOA;;;AAGA,IAAI,eAAe,kBAAkB,UAAU,MAAM,EAAE;IACnDD,YAAS,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;IACnC,SAAS,eAAe,CAAC,MAAM,EAAE;QAC7B,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;QACtC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;QACtB,OAAO,KAAK,CAAC;KAChB;;;;;IAKD,eAAe,CAAC,SAAS,CAAC,MAAM,GAAG,YAAY;;KAE9C,CAAC;;;;;IAKF,eAAe,CAAC,SAAS,CAAC,SAAS,GAAG,YAAY;;KAEjD,CAAC;IACF,eAAe,CAAC,SAAS,CAAC,cAAc,GAAG,YAAY;QACnD,OAAO,EAAE,CAAC;KACb,CAAC;;;;;;;IAOF,eAAe,CAAC,SAAS,CAAC,iBAAiB,GAAG,YAAY;;KAEzD,CAAC;IACF,eAAe,CAAC,SAAS,CAAC,aAAa,GAAG,YAAY;QAClD,OAAO,iBAAiB,CAAC;KAC5B,CAAC;IACF,eAAe,CAAC,SAAS,CAAC,OAAO,GAAG,YAAY;QAC5C,IAAI,IAAI,CAAC,eAAe,EAAE;YACtB,IAAI,CAAC,UAAU,EAAE,CAAC;SACrB;QACD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;KACtB,CAAC;;;;;;;;IAQF,eAAe,CAAC,SAAS,CAAC,eAAe,GAAG,UAAU,gBAAgB,EAAE;QACpE,IAAI,KAAK,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE;YAC3B,OAAO;SACV;QACD,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,QAAQ,EAAE;YAC1D,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,GAAG6E,wBAAkC;SAClE,CAAC,CAAC;QACH,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC;QACxC,IAAI,UAAU,GAAG,MAAM,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;QACpD,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,kBAAkB,EAAE,UAAU,CAAC,CAAC;QACzD,IAAI,CAAC,eAAe,GAAG,IAAI,MAAM,CAAC;YAC9B,OAAO,EAAE,gBAAgB,CAAC,IAAI;YAC9B,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS;YAChC,QAAQ,EAAEC,gBAA0B;YACpC,OAAO,EAAE,YAAY;gBACjB,MAAM,CAAC,KAAK,CAAC,WAAW,CAACvD,sBAAgC,EAAE,KAAK,CAAC,kBAAkB,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;aAC3G;SACJ,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAC5B,IAAI,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,CAAC;QAC5C,IAAI,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,QAAQ,EAAE;YACpC,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;SACpE;aACI;YACD,IAAI,eAAe,GAAG,CAAC,CAAC;YACxB,IAAI,SAAS,GAAG,CAAC,CAAC;YAClB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,gBAAgB,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBACpD,IAAI,IAAI,GAAG,gBAAgB,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;gBAC9D,IAAI,IAAI,CAAC,QAAQ,EAAE;oBACf,eAAe,EAAE,CAAC;iBACrB;qBACI;oBACD,SAAS,EAAE,CAAC;iBACf;aACJ;YACD,IAAI,SAAS,GAAG,CAAC,EAAE;gBACf,IAAI,CAAC,mBAAmB,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC;aACrD;YACD,IAAI,eAAe,GAAG,CAAC,EAAE;gBACrB,IAAI,CAAC,mBAAmB,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC;aACpD;YACD,IAAI,IAAI,CAAC,QAAQ,EAAE;gBACf,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;aAC5C;YACD,IAAI,IAAI,CAAC,cAAc,EAAE;gBACrB,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;aAClD;SACJ;QACD,IAAI,CAAC,kBAAkB,CAAC,OAAO,GAAG,UAAU,CAAC,EAAE;YAC3C,CAAC,CAAC,eAAe,EAAE,CAAC;YACpB,KAAK,CAAC,aAAa,EAAE,CAAC;YACtB,KAAK,CAAC,gBAAgB,CAAC,SAAS,CAAC,GAAG,CAACwD,qBAA+B,CAAC,CAAC;YACtE,IAAI,QAAQ,GAAG,KAAK,CAAC,WAAW,CAAC,aAAa,CAAC,yBAAyB,CAAC,CAAC;YAC1E,IAAI,QAAQ,EAAE;gBACV,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;aAC3C;YACD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,gBAAgB,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBACpD,IAAI,IAAI,GAAG,gBAAgB,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;gBAC9D,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,EAAE;oBAC9D,IAAI,YAAY,GAAG,KAAK,CAAC,gBAAgB,CAAC,aAAa,CAAC,GAAG,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;oBAC1F,IAAI,YAAY,EAAE;wBACd,YAAY,CAAC,SAAS,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;wBACzC,YAAY,CAAC,KAAK,EAAE,CAAC;qBACxB;oBACD,KAAK,CAAC,sBAAsB,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;oBACvE,MAAM;iBACT;qBACI;oBACD,SAAS;iBACZ;aACJ;SACJ,CAAC;QACF,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,sBAAsB,EAAE,CAAC;QAC5C,IAAI,CAAC,uBAAuB,CAAC,gBAAgB,CAAC,CAAC;QAC/C,YAAY,CAAC,GAAG,CAAC,QAAQ,EAAE,OAAO,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;KAChE,CAAC;IACF,eAAe,CAAC,SAAS,CAAC,YAAY,GAAG,UAAU,CAAC,EAAE;QAClD,IAAI,SAAS,GAAG,CAAC,CAAC,MAAM,CAAC;QACzB,IAAI,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE;YAC3C,OAAO;SACV;aACI;YACD,IAAI,CAAC,aAAa,EAAE,CAAC;SACxB;KACJ,CAAC;IACF,eAAe,CAAC,SAAS,CAAC,uBAAuB,GAAG,UAAU,gBAAgB,EAAE;QAC5E,IAAI,gBAAgB,CAAC,gBAAgB,CAAC,qBAAqB,CAAC,EAAE;YAC1D,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,GAAG,CAACrE,qBAA+B,CAAC,CAAC;YACvE,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,kBAAkB,CAAC,EAAE,EAAE,IAAI,EAAE,gBAAgB,CAAC,qBAAqB,EAAE,CAAC,CAAC;SAClH;KACJ,CAAC;IACF,eAAe,CAAC,SAAS,CAAC,cAAc,GAAG,UAAU,cAAc,EAAE;QACjE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,cAAc,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAC5C,IAAI,IAAI,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;YACtD,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;gBACf,IAAI,WAAW,GAAG,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;gBACrE,WAAW,CAAC,SAAS,CAAC,GAAG,CAACsE,0BAAoC,CAAC,CAAC;aACnE;SACJ;KACJ,CAAC;IACF,eAAe,CAAC,SAAS,CAAC,oBAAoB,GAAG,UAAU,gBAAgB,EAAE;QACzE,IAAI,KAAK,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,EAAE;YACrD,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,GAAGC,yBAAmC;YAChE,SAAS,EAAEC,sBAAgC;SAC9C,CAAC,CAAC;QACH,IAAI,SAAS,CAAC;QACd,IAAI,gBAAgB,CAAC,MAAM,EAAE;YACzB,SAAS,GAAG,gBAAgB,CAAC,MAAM,YAAY,WAAW,GAAG,gBAAgB,CAAC,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;YACvI,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;SAChD;aACI;YACD,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;SAC1D;QACD,IAAI,CAAC,QAAQ,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,gBAAgB,EAAE;YAC7C,MAAM,EAAE,gBAAgB,CAAC,MAAM;YAC/B,KAAK,EAAE,gBAAgB,CAAC,KAAK;YAC7B,QAAQ,EAAE,gBAAgB,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO;YACxD,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS;SACnC,CAAC,CAAC;QACH,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE;YACvB,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;SACxD;QACD,IAAI,CAAC,gBAAgB,CAAC,SAAS,GAAG,UAAU,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,EAAE;YACtE,KAAK,CAAC,aAAa,EAAE,CAAC;SACzB,EAAE,CAAC;QACJ,IAAI,CAAC,aAAa,EAAE,CAAC;KACxB,CAAC;IACF,eAAe,CAAC,SAAS,CAAC,wBAAwB,GAAG,UAAU,SAAS,EAAE;QACtE,IAAI,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC;QAC7C,IAAI,SAAS,EAAE;YACX,UAAU,CAAC,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC;YACnC,UAAU,CAAC,IAAI,GAAG,OAAO,CAAC;SAC7B;aACI;YACD,UAAU,CAAC,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC;YACnC,UAAU,CAAC,KAAK,GAAG,OAAO,CAAC;SAC9B;KACJ,CAAC;IACF,eAAe,CAAC,SAAS,CAAC,mBAAmB,GAAG,UAAU,WAAW,EAAE,QAAQ,EAAE;QAC7E,IAAI,KAAK,GAAG,IAAI,CAAC;QACjB,IAAI,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,GAAG,UAAU,CAAC,CAAC;QAChG,IAAI,CAAC,UAAU,EAAE;YACb,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,EAAE;gBAChD,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,GAAG,UAAU;gBACvC,SAAS,EAAEC,6BAAuC;aACrD,CAAC,CAAC;YACH,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;SACvD;QACD,IAAI,WAAW,CAAC,UAAU,CAAC,OAAO,IAAI,CAAC,QAAQ,EAAE;YAC7C,IAAI,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,QAAQ,EAAE;gBAClD,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,GAAG,QAAQ;gBACrC,SAAS,EAAE,oBAAoB;aAClC,CAAC,CAAC;YACH,IAAI,CAAC,QAAQ,GAAG,IAAI,MAAM,CAAC;gBACvB,OAAO,EAAE,WAAW,CAAC,UAAU,CAAC,IAAI;gBACpC,OAAO,EAAE,WAAW,CAAC,UAAU,CAAC,OAAO,GAAG,WAAW,CAAC,UAAU,CAAC,OAAO,GAAGC,oBAA8B;gBACzG,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS;aACnC,EAAE,WAAW,CAAC,CAAC;YAChB,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;YACrC,WAAW,CAAC,OAAO,GAAG,YAAY;gBAC9B,KAAK,CAAC,gBAAgB,CAAC,SAAS,CAAC,MAAM,CAACL,qBAA+B,CAAC,CAAC;gBACzE,KAAK,CAAC,aAAa,EAAE,CAAC;gBACtB,KAAK,CAAC,mBAAmB,GAAG,IAAI,CAAC;aACpC,CAAC;SACL;QACD,IAAI,eAAe,GAAG,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,GAAG,eAAe,CAAC,CAAC;QAC1G,IAAI,CAAC,eAAe,EAAE;YAClB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,EAAE;gBACpD,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,GAAG,eAAe;gBAC5C,SAAS,EAAEM,8BAAwC;aACtD,CAAC,CAAC;YACH,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;SACjD;QACD,IAAI,YAAY,CAAC;QACjB,IAAI,QAAQ,EAAE;YACV,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,EAAE;gBAC3C,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,GAAGC,uBAAiC;aACjE,CAAC,CAAC;YACH,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;SAClD;aACI;YACD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,EAAE;gBAC9C,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,GAAGC,gBAA0B;aAC1D,CAAC,CAAC;YACH,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;SACrD;QACD,IAAI,CAAC,QAAQ,EAAE;YACX,IAAI,CAAC,QAAQ,GAAG,IAAI,IAAI,CAAC;gBACrB,WAAW,EAAE,UAAU;gBACvB,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS;gBAChC,QAAQ,EAAEC,qBAA+B;gBACzC,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,KAAK,CAAC;gBAC5C,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC;aAClD,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;SACvB;aACI;YACD,IAAI,CAAC,cAAc,GAAG,IAAI,IAAI,CAAC;gBAC3B,WAAW,EAAE,UAAU;gBACvB,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS;gBAChC,QAAQ,EAAEA,qBAA+B;gBACzC,KAAK,EAAE,IAAI,CAAC,mBAAmB,CAAC,WAAW,CAAC,KAAK,CAAC;gBAClD,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC;aAClD,EAAE,YAAY,CAAC,CAAC;SACpB;KACJ,CAAC;IACF,eAAe,CAAC,SAAS,CAAC,aAAa,GAAG,UAAU,KAAK,EAAE;QACvD,IAAI,SAAS,GAAG,EAAE,CAAC;QACnB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACnC,IAAI,IAAI,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;YAC7C,IAAI,IAAI,CAAC,QAAQ,EAAE;gBACf,SAAS;aACZ;iBACI;gBACD,SAAS,CAAC,IAAI,CAAC;oBACX,EAAE,EAAE,IAAI,CAAC,EAAE;oBACX,OAAO,EAAE,IAAI,CAAC,OAAO;oBACrB,SAAS,EAAE,IAAI,CAAC,SAAS;oBACzB,IAAI,EAAE,IAAI,CAAC,IAAI;iBAClB,CAAC,CAAC;aACN;SACJ;QACD,OAAO,SAAS,CAAC;KACpB,CAAC;IACF,eAAe,CAAC,SAAS,CAAC,mBAAmB,GAAG,UAAU,KAAK,EAAE;QAC7D,IAAI,SAAS,GAAG,EAAE,CAAC;QACnB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACnC,IAAI,IAAI,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;YAC7C,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;gBAChB,SAAS;aACZ;iBACI;gBACD,SAAS,CAAC,IAAI,CAAC;oBACX,EAAE,EAAE,IAAI,CAAC,EAAE;oBACX,OAAO,EAAE,IAAI,CAAC,OAAO;oBACrB,SAAS,EAAE,IAAI,CAAC,SAAS;oBACzB,IAAI,EAAE,IAAI,CAAC,IAAI;iBAClB,CAAC,CAAC;aACN;SACJ;QACD,OAAO,SAAS,CAAC;KACpB,CAAC;IACF,eAAe,CAAC,SAAS,CAAC,sBAAsB,GAAG,UAAU,MAAM,EAAE,OAAO,EAAE;QAC1E,IAAI,YAAY,GAAG,kBAAkB,CAAC;QACtC,IAAI,CAAC,aAAa,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC;QACnC,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE;YAC3B,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,EAAE;gBACxD,EAAE,EAAE,MAAM,GAAGtE,UAAoB;gBACjC,SAAS,EAAEuE,wBAAkC;aAChD,CAAC,CAAC;SACN;aACI;YACD,IAAI,CAAC,mBAAmB,CAAC,SAAS,GAAG,EAAE,CAAC;YACxC,IAAI,CAAC,mBAAmB,CAAC,EAAE,GAAG,MAAM,GAAGvE,UAAoB,CAAC;SAC/D;QACD,IAAI,gBAAgB,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC;QACpD,MAAM,CAAC,gBAAgB,CAAC,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,kBAAkB,EAAE,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC;QAC7H,IAAI,OAAO,EAAE;YACT,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;SAC1D;QACD,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC5B,OAAO,gBAAgB,CAAC;KAC3B,CAAC;IACF,eAAe,CAAC,SAAS,CAAC,uBAAuB,GAAG,UAAU,QAAQ,EAAE;QACpE,IAAI,YAAY,GAAG,mBAAmB,CAAC;QACvC,IAAI,CAAC,aAAa,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC;QACnC,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,EAAE;YACrD,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,GAAG2D,wBAAkC,GAAG,WAAW;YAC7E,SAAS,EAAEa,yBAAmC;SACjD,CAAC,CAAC;QACH,IAAI,gBAAgB,GAAG,mBAAmB,CAAC,QAAQ,CAAC,CAAC;QACrD,MAAM,CAAC,gBAAgB,CAAC,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,mBAAmB,EAAE,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAC3H,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QACpD,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC5B,OAAO,gBAAgB,CAAC;KAC3B,CAAC;IACF,eAAe,CAAC,SAAS,CAAC,UAAU,GAAG,UAAU,WAAW,EAAE,IAAI,EAAE;QAChE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAC/C,IAAI,IAAI,GAAG,WAAW,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;YACzD,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;gBAC9B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;gBACxB,MAAM;aACT;SACJ;QACD,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QACpE,IAAI,SAAS,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE,YAAY,EAAE,IAAI,CAAC,mBAAmB,EAAE,CAAC;QACxH,IAAI,IAAI,CAAC,WAAW,CAAC,kBAAkB,EAAE;YACrC,IAAI,CAAC,WAAW,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;SAC7D;QACD,IAAI,SAAS,CAAC,MAAM,EAAE;YAClB,OAAO;SACV;KACJ,CAAC;;;;;;;;IAQF,eAAe,CAAC,SAAS,CAAC,mBAAmB,GAAG,UAAU,UAAU,EAAE;QAClE,IAAI,IAAI,CAAC,eAAe,EAAE;YACtB,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;YAC/C,IAAI,IAAI,CAAC,QAAQ,EAAE;gBACf,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;gBACxC,IAAI,IAAI,CAAC,gBAAgB;oBACrB,IAAI,CAAC,wBAAwB,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;gBACxD,IAAI,IAAI,CAAC,QAAQ,EAAE;oBACf,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;oBACxC,IAAI,IAAI,CAAC,QAAQ,EAAE;wBACf,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;qBAC3C;iBACJ;aACJ;SACJ;KACJ,CAAC;;;;;;;;IAQF,eAAe,CAAC,SAAS,CAAC,mBAAmB,GAAG,UAAU,gBAAgB,EAAE;QACxE,IAAI,gBAAgB,CAAC,OAAO,EAAE;YAC1B,IAAI,IAAI,CAAC,eAAe,EAAE;gBACtB,IAAI,gBAAgB,CAAC,IAAI,EAAE;oBACvB,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC;wBAC/B,OAAO,EAAE,gBAAgB,CAAC,IAAI;qBACjC,CAAC,CAAC;oBACH,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,CAACnE,sBAAgC,EAAE,IAAI,CAAC,kBAAkB,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;iBAC9H;gBACD,IAAI,IAAI,CAAC,QAAQ,EAAE;oBACf,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC;wBACxB,MAAM,EAAE,gBAAgB,CAAC,MAAM;wBAC/B,KAAK,EAAE,gBAAgB,CAAC,KAAK;wBAC7B,MAAM,EAAE,gBAAgB,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO;qBACzD,CAAC,CAAC;iBACN;gBACD,IAAI,gBAAgB,CAAC,QAAQ,EAAE;oBAC3B,IAAI,IAAI,CAAC,gBAAgB,EAAE;wBACvB,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;wBAC9B,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;qBAChC;oBACD,IAAI,CAAC,uBAAuB,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;iBAC3D;qBACI;oBACD,IAAI,IAAI,CAAC,QAAQ,EAAE;wBACf,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC;4BACxB,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,KAAK,CAAC;yBACpD,CAAC,CAAC;qBACN;oBACD,IAAI,IAAI,CAAC,cAAc,EAAE;wBACrB,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC;4BAC9B,KAAK,EAAE,IAAI,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,KAAK,CAAC;yBAC1D,CAAC,CAAC;qBACN;yBACI;wBACD,IAAI,eAAe,GAAG,CAAC,CAAC;wBACxB,IAAI,SAAS,GAAG,CAAC,CAAC;wBAClB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,gBAAgB,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;4BACpD,IAAI,IAAI,GAAG,gBAAgB,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;4BAC9D,IAAI,IAAI,CAAC,QAAQ,EAAE;gCACf,eAAe,EAAE,CAAC;6BACrB;iCACI;gCACD,SAAS,EAAE,CAAC;6BACf;yBACJ;wBACD,IAAI,SAAS,GAAG,CAAC,EAAE;4BACf,IAAI,CAAC,mBAAmB,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC;yBACrD;wBACD,IAAI,eAAe,GAAG,CAAC,EAAE;4BACrB,IAAI,CAAC,mBAAmB,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC;yBACpD;qBACJ;iBACJ;gBACD,IAAI,CAAC,0BAA0B,EAAE,CAAC;gBAClC,IAAI,CAAC,uBAAuB,CAAC,gBAAgB,CAAC,CAAC;aAClD;iBACI;gBACD,IAAI,CAAC,eAAe,CAAC,gBAAgB,CAAC,CAAC;aAC1C;SACJ;aACI,IAAI,IAAI,CAAC,eAAe,EAAE;YAC3B,IAAI,CAAC,UAAU,EAAE,CAAC;SACrB;QACD,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,sBAAsB,EAAE,CAAC;KAC/C,CAAC;IACF,eAAe,CAAC,SAAS,CAAC,WAAW,GAAG,YAAY;QAChD,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;YACxB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;SACxB;KACJ,CAAC;IACF,eAAe,CAAC,SAAS,CAAC,UAAU,GAAG,YAAY;QAC/C,IAAI,CAAC,0BAA0B,EAAE,CAAC;QAClC,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC;QACxC,MAAM,CAAC,KAAK,CAAC,cAAc,CAACA,sBAAgC,CAAC,CAAC;QAC9D,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,CAAC;QAC/B,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;QAC5B,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAChC,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;QAC/B,YAAY,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;KAC7D,CAAC;IACF,eAAe,CAAC,SAAS,CAAC,0BAA0B,GAAG,YAAY;QAC/D,IAAI,KAAK,GAAG,IAAI,CAAC;QACjB,IAAI,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,UAAU,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,EAAE,KAAK,KAAK,CAAC,kBAAkB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QAC7G,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;YACd,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,MAAM,CAACb,qBAA+B,CAAC,CAAC;YAC1E,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;SAC5C;KACJ,CAAC;;;;;;;;;;IAUF,eAAe,CAAC,SAAS,CAAC,iBAAiB,GAAG,UAAU,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE;QACxF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACnC,IAAI,IAAI,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;YAC7C,IAAI,IAAI,CAAC,QAAQ,EAAE;gBACf,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;aACtI;iBACI;gBACD,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;aAC1H;SACJ;QACD,IAAI,cAAc,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QAC/E,IAAI,gBAAgB,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC;QACjD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,gBAAgB,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACpD,IAAI,IAAI,GAAG,gBAAgB,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;YAC9D,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,cAAc,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE;gBAClD,IAAI,KAAK,GAAG,cAAc,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;gBACzD,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,EAAE;oBAC1B,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;oBAC7B,MAAM;iBACT;aACJ;SACJ;QACD,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,aAAa,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE,EAAE,IAAI,CAAC,CAAC;KAC5E,CAAC;;;;;;;;IAQF,eAAe,CAAC,SAAS,CAAC,oBAAoB,GAAG,UAAU,KAAK,EAAE,UAAU,EAAE;QAC1E,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;QAC7C,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;QACnD,IAAI,cAAc,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QAC/E,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,aAAa,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE,EAAE,IAAI,CAAC,CAAC;KAC5E,CAAC;;;;;;IAMF,eAAe,CAAC,SAAS,CAAC,aAAa,GAAG,YAAY;QAClD,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;KACxB,CAAC;;;;;;IAMF,eAAe,CAAC,SAAS,CAAC,aAAa,GAAG,YAAY;QAClD,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,QAAQ,CAACqE,qBAA+B,CAAC,EAAE;YAC3E,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAACA,qBAA+B,CAAC,CAAC;SAC3E;QACD,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;KACxB,CAAC;IACF,OAAO,eAAe,CAAC;CAC1B,CAAC,SAAS,CAAC,CAAC;;ACxiBb;;GAEG;;ACFH;oCACoC;;;;"}
1
+ {"version":3,"file":"ej2-ribbon.es5.js","sources":["../../src/ribbon/base/interface.js","../../src/ribbon/models/ribbon-button-settings.js","../../src/ribbon/models/ribbon-checkbox-settings.js","../../src/ribbon/models/ribbon-colorpicker-settings.js","../../src/ribbon/models/ribbon-combobox-settings.js","../../src/ribbon/models/ribbon-dropdown-settings.js","../../src/ribbon/models/ribbon-splitbutton-settings.js","../../src/ribbon/models/ribbon-tooltip.js","../../src/ribbon/models/ribbon-group-button-item.js","../../src/ribbon/models/ribbon-group-button-settings.js","../../src/ribbon/models/ribbon-item.js","../../src/ribbon/models/ribbon-collection.js","../../src/ribbon/models/ribbon-group.js","../../src/ribbon/models/ribbon-tab.js","../../src/ribbon/models/ribbon-file-menu-settings.js","../../src/ribbon/models/ribbon-back-button.js","../../src/ribbon/models/ribbon-backstage-item.js","../../src/ribbon/models/ribbon-back-stage-settings.js","../../src/ribbon/models/index.js","../../src/ribbon/base/constant.js","../../src/ribbon/items/ribbon-button.js","../../src/ribbon/items/ribbon-checkbox.js","../../src/ribbon/items/ribbon-colorpicker.js","../../src/ribbon/items/ribbon-combobox.js","../../src/ribbon/items/ribbon-dropdown.js","../../src/ribbon/items/ribbon-splitbutton.js","../../src/ribbon/base/utils.js","../../src/ribbon/items/ribbon-groupbutton.js","../../src/ribbon/base/ribbon.js","../../src/ribbon/base/index.js","../../src/ribbon/modules/ribbon-filemenu.js","../../src/ribbon/modules/ribbon-backstage.js","../../src/ribbon/index.js","../../src/index.js"],"sourcesContent":["/**\n * Defines the layout types of ribbon.\n */\nexport var RibbonLayout;\n(function (RibbonLayout) {\n /**\n * Displays the ribbon tab content in classic layout.\n */\n RibbonLayout[\"Classic\"] = \"Classic\";\n /**\n * Displays the ribbon tab content in simplified layout.\n */\n RibbonLayout[\"Simplified\"] = \"Simplified\";\n})(RibbonLayout || (RibbonLayout = {}));\n/**\n * Defines the alignment of the items in the ribbon group.\n */\nexport var ItemOrientation;\n(function (ItemOrientation) {\n /**\n * Displays the collection of items in rows.\n */\n ItemOrientation[\"Row\"] = \"Row\";\n /**\n * Displays the collection of items in column.\n */\n ItemOrientation[\"Column\"] = \"Column\";\n})(ItemOrientation || (ItemOrientation = {}));\n/**\n * Defines the current size of the ribbon item in normal mode.\n *\n * @aspNumberEnum\n */\nexport var RibbonItemSize;\n(function (RibbonItemSize) {\n /**\n * The item appears with large icon and text at the bottom.\n */\n RibbonItemSize[RibbonItemSize[\"Large\"] = 4] = \"Large\";\n /**\n * The item appears with small icon and text at the right.\n */\n RibbonItemSize[RibbonItemSize[\"Medium\"] = 2] = \"Medium\";\n /**\n * The item appears with small icon only.\n */\n RibbonItemSize[RibbonItemSize[\"Small\"] = 1] = \"Small\";\n})(RibbonItemSize || (RibbonItemSize = {}));\n/**\n * Defines how to show an item in ribbon simplified layout.\n *\n * @aspNumberEnum\n */\nexport var DisplayMode;\n(function (DisplayMode) {\n /**\n * The item appears in the classic layout group.\n */\n DisplayMode[DisplayMode[\"Classic\"] = 4] = \"Classic\";\n /**\n * The item appears in the simplified layout group.\n */\n DisplayMode[DisplayMode[\"Simplified\"] = 2] = \"Simplified\";\n /**\n * The item appears in overflow popup.\n */\n DisplayMode[DisplayMode[\"Overflow\"] = 1] = \"Overflow\";\n /**\n * The item appears in classic layout group, simplified layout group, and overflow popup based on ribbon overflow state.\n */\n DisplayMode[DisplayMode[\"Auto\"] = 7] = \"Auto\";\n})(DisplayMode || (DisplayMode = {}));\n/**\n * Defines the type of the ribbon item.\n */\nexport var RibbonItemType;\n(function (RibbonItemType) {\n /**\n * Renders button as ribbon item.\n */\n RibbonItemType[\"Button\"] = \"Button\";\n /**\n * Renders checkbox as ribbon item.\n */\n RibbonItemType[\"CheckBox\"] = \"CheckBox\";\n /**\n * Renders color picker as ribbon item.\n */\n RibbonItemType[\"ColorPicker\"] = \"ColorPicker\";\n /**\n * Renders combobox as ribbon item.\n */\n RibbonItemType[\"ComboBox\"] = \"ComboBox\";\n /**\n * Renders dropdownbutton as ribbon item.\n */\n RibbonItemType[\"DropDown\"] = \"DropDown\";\n /**\n * Renders splitbutton as ribbon item.\n */\n RibbonItemType[\"SplitButton\"] = \"SplitButton\";\n /**\n * Renders the group button content as ribbon item.\n */\n RibbonItemType[\"GroupButton\"] = \"GroupButton\";\n /**\n * Renders the template content as ribbon item.\n */\n RibbonItemType[\"Template\"] = \"Template\";\n})(RibbonItemType || (RibbonItemType = {}));\n/**\n * Defines the alignment of the items in the ribbon group.\n */\nexport var RibbonGroupButtonSelection;\n(function (RibbonGroupButtonSelection) {\n /**\n * Allows selecting single button from button group.\n */\n RibbonGroupButtonSelection[\"Single\"] = \"Single\";\n /**\n * Allows selecting multiple buttons from button group.\n */\n RibbonGroupButtonSelection[\"Multiple\"] = \"Multiple\";\n})(RibbonGroupButtonSelection || (RibbonGroupButtonSelection = {}));\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 { ChildProperty, Event, Property } from '@syncfusion/ej2-base';\n/**\n * Defines the ribbon button item.\n */\nvar RibbonButtonSettings = /** @class */ (function (_super) {\n __extends(RibbonButtonSettings, _super);\n function RibbonButtonSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of button.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonButtonSettings.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property('')\n ], RibbonButtonSettings.prototype, \"content\", void 0);\n __decorate([\n Property('')\n ], RibbonButtonSettings.prototype, \"cssClass\", void 0);\n __decorate([\n Property('')\n ], RibbonButtonSettings.prototype, \"iconCss\", void 0);\n __decorate([\n Property(false)\n ], RibbonButtonSettings.prototype, \"isToggle\", void 0);\n __decorate([\n Property(false)\n ], RibbonButtonSettings.prototype, \"isPrimary\", void 0);\n __decorate([\n Event()\n ], RibbonButtonSettings.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], RibbonButtonSettings.prototype, \"clicked\", void 0);\n return RibbonButtonSettings;\n}(ChildProperty));\nexport { RibbonButtonSettings };\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 { ChildProperty, Event, Property } from '@syncfusion/ej2-base';\n/**\n * Defines the ribbon checkbox item.\n */\nvar RibbonCheckBoxSettings = /** @class */ (function (_super) {\n __extends(RibbonCheckBoxSettings, _super);\n function RibbonCheckBoxSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of checkbox.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonCheckBoxSettings.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property(false)\n ], RibbonCheckBoxSettings.prototype, \"checked\", void 0);\n __decorate([\n Property('')\n ], RibbonCheckBoxSettings.prototype, \"cssClass\", void 0);\n __decorate([\n Property('')\n ], RibbonCheckBoxSettings.prototype, \"label\", void 0);\n __decorate([\n Property('After')\n ], RibbonCheckBoxSettings.prototype, \"labelPosition\", void 0);\n __decorate([\n Event()\n ], RibbonCheckBoxSettings.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], RibbonCheckBoxSettings.prototype, \"change\", void 0);\n return RibbonCheckBoxSettings;\n}(ChildProperty));\nexport { RibbonCheckBoxSettings };\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 { ChildProperty, Event, Property } from '@syncfusion/ej2-base';\n/**\n * Defines the ribbon color picker.\n */\nvar RibbonColorPickerSettings = /** @class */ (function (_super) {\n __extends(RibbonColorPickerSettings, _super);\n function RibbonColorPickerSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of colorpicker.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonColorPickerSettings.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property(10)\n ], RibbonColorPickerSettings.prototype, \"columns\", void 0);\n __decorate([\n Property('')\n ], RibbonColorPickerSettings.prototype, \"cssClass\", void 0);\n __decorate([\n Property(true)\n ], RibbonColorPickerSettings.prototype, \"enableOpacity\", void 0);\n __decorate([\n Property('Picker')\n ], RibbonColorPickerSettings.prototype, \"mode\", void 0);\n __decorate([\n Property(true)\n ], RibbonColorPickerSettings.prototype, \"modeSwitcher\", void 0);\n __decorate([\n Property(false)\n ], RibbonColorPickerSettings.prototype, \"noColor\", void 0);\n __decorate([\n Property(null)\n ], RibbonColorPickerSettings.prototype, \"presetColors\", void 0);\n __decorate([\n Property(true)\n ], RibbonColorPickerSettings.prototype, \"showButtons\", void 0);\n __decorate([\n Property('#008000ff')\n ], RibbonColorPickerSettings.prototype, \"value\", void 0);\n __decorate([\n Event()\n ], RibbonColorPickerSettings.prototype, \"beforeClose\", void 0);\n __decorate([\n Event()\n ], RibbonColorPickerSettings.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], RibbonColorPickerSettings.prototype, \"beforeTileRender\", void 0);\n __decorate([\n Event()\n ], RibbonColorPickerSettings.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], RibbonColorPickerSettings.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], RibbonColorPickerSettings.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], RibbonColorPickerSettings.prototype, \"select\", void 0);\n return RibbonColorPickerSettings;\n}(ChildProperty));\nexport { RibbonColorPickerSettings };\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 { ChildProperty, Event, Property, Complex } from '@syncfusion/ej2-base';\nimport { FieldSettings } from '@syncfusion/ej2-dropdowns';\n/**\n * Defines the ribbon combobox item.\n */\nvar RibbonComboBoxSettings = /** @class */ (function (_super) {\n __extends(RibbonComboBoxSettings, _super);\n function RibbonComboBoxSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of combobox.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonComboBoxSettings.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property(false)\n ], RibbonComboBoxSettings.prototype, \"allowFiltering\", void 0);\n __decorate([\n Property(true)\n ], RibbonComboBoxSettings.prototype, \"autofill\", void 0);\n __decorate([\n Property('')\n ], RibbonComboBoxSettings.prototype, \"cssClass\", void 0);\n __decorate([\n Property([])\n ], RibbonComboBoxSettings.prototype, \"dataSource\", void 0);\n __decorate([\n Complex({ text: null, value: null, iconCss: null, groupBy: null }, FieldSettings)\n ], RibbonComboBoxSettings.prototype, \"fields\", void 0);\n __decorate([\n Property('Contains')\n ], RibbonComboBoxSettings.prototype, \"filterType\", void 0);\n __decorate([\n Property(null)\n ], RibbonComboBoxSettings.prototype, \"footerTemplate\", void 0);\n __decorate([\n Property(null)\n ], RibbonComboBoxSettings.prototype, \"groupTemplate\", void 0);\n __decorate([\n Property(null)\n ], RibbonComboBoxSettings.prototype, \"headerTemplate\", void 0);\n __decorate([\n Property(null)\n ], RibbonComboBoxSettings.prototype, \"index\", void 0);\n __decorate([\n Property(null)\n ], RibbonComboBoxSettings.prototype, \"itemTemplate\", void 0);\n __decorate([\n Property('No records found')\n ], RibbonComboBoxSettings.prototype, \"noRecordsTemplate\", void 0);\n __decorate([\n Property(null)\n ], RibbonComboBoxSettings.prototype, \"placeholder\", void 0);\n __decorate([\n Property('300px')\n ], RibbonComboBoxSettings.prototype, \"popupHeight\", void 0);\n __decorate([\n Property('100%')\n ], RibbonComboBoxSettings.prototype, \"popupWidth\", void 0);\n __decorate([\n Property(true)\n ], RibbonComboBoxSettings.prototype, \"showClearButton\", void 0);\n __decorate([\n Property('None')\n ], RibbonComboBoxSettings.prototype, \"sortOrder\", void 0);\n __decorate([\n Property(null)\n ], RibbonComboBoxSettings.prototype, \"text\", void 0);\n __decorate([\n Property(null)\n ], RibbonComboBoxSettings.prototype, \"value\", void 0);\n __decorate([\n Property('150px')\n ], RibbonComboBoxSettings.prototype, \"width\", void 0);\n __decorate([\n Event()\n ], RibbonComboBoxSettings.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], RibbonComboBoxSettings.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], RibbonComboBoxSettings.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], RibbonComboBoxSettings.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], RibbonComboBoxSettings.prototype, \"filtering\", void 0);\n __decorate([\n Event()\n ], RibbonComboBoxSettings.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], RibbonComboBoxSettings.prototype, \"select\", void 0);\n return RibbonComboBoxSettings;\n}(ChildProperty));\nexport { RibbonComboBoxSettings };\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 { ChildProperty, Collection, Event, Property } from '@syncfusion/ej2-base';\nimport { Item } from '@syncfusion/ej2-splitbuttons';\n/**\n * Defines the ribbon DropDownButton item.\n */\nvar RibbonDropDownSettings = /** @class */ (function (_super) {\n __extends(RibbonDropDownSettings, _super);\n function RibbonDropDownSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of DropDown.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonDropDownSettings.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property('')\n ], RibbonDropDownSettings.prototype, \"closeActionEvents\", void 0);\n __decorate([\n Property('')\n ], RibbonDropDownSettings.prototype, \"content\", void 0);\n __decorate([\n Property('')\n ], RibbonDropDownSettings.prototype, \"cssClass\", void 0);\n __decorate([\n Property('')\n ], RibbonDropDownSettings.prototype, \"iconCss\", void 0);\n __decorate([\n Collection([], Item)\n ], RibbonDropDownSettings.prototype, \"items\", void 0);\n __decorate([\n Property('')\n ], RibbonDropDownSettings.prototype, \"target\", void 0);\n __decorate([\n Property(false)\n ], RibbonDropDownSettings.prototype, \"createPopupOnClick\", void 0);\n __decorate([\n Event()\n ], RibbonDropDownSettings.prototype, \"beforeClose\", void 0);\n __decorate([\n Event()\n ], RibbonDropDownSettings.prototype, \"beforeItemRender\", void 0);\n __decorate([\n Event()\n ], RibbonDropDownSettings.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], RibbonDropDownSettings.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], RibbonDropDownSettings.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], RibbonDropDownSettings.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], RibbonDropDownSettings.prototype, \"select\", void 0);\n return RibbonDropDownSettings;\n}(ChildProperty));\nexport { RibbonDropDownSettings };\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 { ChildProperty, Collection, Event, Property } from '@syncfusion/ej2-base';\nimport { Item } from '@syncfusion/ej2-splitbuttons';\n/**\n * Defines the ribbon SplitButton item.\n */\nvar RibbonSplitButtonSettings = /** @class */ (function (_super) {\n __extends(RibbonSplitButtonSettings, _super);\n function RibbonSplitButtonSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of DropDown.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonSplitButtonSettings.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property('')\n ], RibbonSplitButtonSettings.prototype, \"closeActionEvents\", void 0);\n __decorate([\n Property('')\n ], RibbonSplitButtonSettings.prototype, \"content\", void 0);\n __decorate([\n Property('')\n ], RibbonSplitButtonSettings.prototype, \"cssClass\", void 0);\n __decorate([\n Property('')\n ], RibbonSplitButtonSettings.prototype, \"iconCss\", void 0);\n __decorate([\n Collection([], Item)\n ], RibbonSplitButtonSettings.prototype, \"items\", void 0);\n __decorate([\n Property('')\n ], RibbonSplitButtonSettings.prototype, \"target\", void 0);\n __decorate([\n Event()\n ], RibbonSplitButtonSettings.prototype, \"beforeClose\", void 0);\n __decorate([\n Event()\n ], RibbonSplitButtonSettings.prototype, \"beforeItemRender\", void 0);\n __decorate([\n Event()\n ], RibbonSplitButtonSettings.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], RibbonSplitButtonSettings.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], RibbonSplitButtonSettings.prototype, \"click\", void 0);\n __decorate([\n Event()\n ], RibbonSplitButtonSettings.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], RibbonSplitButtonSettings.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], RibbonSplitButtonSettings.prototype, \"select\", void 0);\n return RibbonSplitButtonSettings;\n}(ChildProperty));\nexport { RibbonSplitButtonSettings };\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 { ChildProperty, Property } from '@syncfusion/ej2-base';\n/**\n * Defines the ribbon tooltip.\n */\nvar RibbonTooltip = /** @class */ (function (_super) {\n __extends(RibbonTooltip, _super);\n function RibbonTooltip() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], RibbonTooltip.prototype, \"cssClass\", void 0);\n __decorate([\n Property('')\n ], RibbonTooltip.prototype, \"id\", void 0);\n __decorate([\n Property('')\n ], RibbonTooltip.prototype, \"title\", void 0);\n __decorate([\n Property('')\n ], RibbonTooltip.prototype, \"content\", void 0);\n __decorate([\n Property('')\n ], RibbonTooltip.prototype, \"iconCss\", void 0);\n return RibbonTooltip;\n}(ChildProperty));\nexport { RibbonTooltip };\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 { ChildProperty, Event, Property, Complex } from '@syncfusion/ej2-base';\nimport { RibbonTooltip } from './ribbon-tooltip';\n/**\n * Defines the ribbon group button settings.\n */\nvar RibbonGroupButtonItem = /** @class */ (function (_super) {\n __extends(RibbonGroupButtonItem, _super);\n function RibbonGroupButtonItem() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], RibbonGroupButtonItem.prototype, \"content\", void 0);\n __decorate([\n Property('')\n ], RibbonGroupButtonItem.prototype, \"iconCss\", void 0);\n __decorate([\n Complex({}, RibbonTooltip)\n ], RibbonGroupButtonItem.prototype, \"ribbonTooltipSettings\", void 0);\n __decorate([\n Property(false)\n ], RibbonGroupButtonItem.prototype, \"selected\", void 0);\n __decorate([\n Event()\n ], RibbonGroupButtonItem.prototype, \"beforeClick\", void 0);\n __decorate([\n Event()\n ], RibbonGroupButtonItem.prototype, \"click\", void 0);\n return RibbonGroupButtonItem;\n}(ChildProperty));\nexport { RibbonGroupButtonItem };\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 { ChildProperty, Collection, Property } from '@syncfusion/ej2-base';\nimport { RibbonGroupButtonItem } from './ribbon-group-button-item';\n/**\n * Defines the ribbon group button settings.\n */\nvar RibbonGroupButtonSettings = /** @class */ (function (_super) {\n __extends(RibbonGroupButtonSettings, _super);\n function RibbonGroupButtonSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('Single')\n ], RibbonGroupButtonSettings.prototype, \"selection\", void 0);\n __decorate([\n Collection([], RibbonGroupButtonItem)\n ], RibbonGroupButtonSettings.prototype, \"items\", void 0);\n return RibbonGroupButtonSettings;\n}(ChildProperty));\nexport { RibbonGroupButtonSettings };\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 { ChildProperty, Complex, Property } from '@syncfusion/ej2-base';\nimport { RibbonItemSize, DisplayMode } from '../base/interface';\nimport { RibbonButtonSettings } from './ribbon-button-settings';\nimport { RibbonCheckBoxSettings } from './ribbon-checkbox-settings';\nimport { RibbonColorPickerSettings } from './ribbon-colorpicker-settings';\nimport { RibbonComboBoxSettings } from './ribbon-combobox-settings';\nimport { RibbonDropDownSettings } from './ribbon-dropdown-settings';\nimport { RibbonSplitButtonSettings } from './ribbon-splitbutton-settings';\nimport { RibbonTooltip } from './ribbon-tooltip';\nimport { RibbonGroupButtonSettings } from './ribbon-group-button-settings';\n/**\n * Defines the ribbon item.\n */\nvar RibbonItem = /** @class */ (function (_super) {\n __extends(RibbonItem, _super);\n function RibbonItem() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of item.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonItem.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property(RibbonItemSize.Medium)\n ], RibbonItem.prototype, \"activeSize\", void 0);\n __decorate([\n Property(RibbonItemSize.Small | RibbonItemSize.Medium | RibbonItemSize.Large)\n ], RibbonItem.prototype, \"allowedSizes\", void 0);\n __decorate([\n Property('')\n ], RibbonItem.prototype, \"id\", void 0);\n __decorate([\n Property('')\n ], RibbonItem.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], RibbonItem.prototype, \"disabled\", void 0);\n __decorate([\n Property('')\n ], RibbonItem.prototype, \"itemTemplate\", void 0);\n __decorate([\n Property('Button')\n ], RibbonItem.prototype, \"type\", void 0);\n __decorate([\n Property(DisplayMode.Auto)\n ], RibbonItem.prototype, \"displayOptions\", void 0);\n __decorate([\n Complex({}, RibbonTooltip)\n ], RibbonItem.prototype, \"ribbonTooltipSettings\", void 0);\n __decorate([\n Complex({}, RibbonButtonSettings)\n ], RibbonItem.prototype, \"buttonSettings\", void 0);\n __decorate([\n Complex({}, RibbonDropDownSettings)\n ], RibbonItem.prototype, \"dropDownSettings\", void 0);\n __decorate([\n Complex({}, RibbonCheckBoxSettings)\n ], RibbonItem.prototype, \"checkBoxSettings\", void 0);\n __decorate([\n Complex({}, RibbonColorPickerSettings)\n ], RibbonItem.prototype, \"colorPickerSettings\", void 0);\n __decorate([\n Complex({}, RibbonComboBoxSettings)\n ], RibbonItem.prototype, \"comboBoxSettings\", void 0);\n __decorate([\n Complex({}, RibbonSplitButtonSettings)\n ], RibbonItem.prototype, \"splitButtonSettings\", void 0);\n __decorate([\n Complex({}, RibbonGroupButtonSettings)\n ], RibbonItem.prototype, \"groupButtonSettings\", void 0);\n return RibbonItem;\n}(ChildProperty));\nexport { RibbonItem };\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 { ChildProperty, Collection, Property } from '@syncfusion/ej2-base';\nimport { RibbonItem } from './ribbon-item';\n/**\n * Defines the items of Ribbon.\n */\nvar RibbonCollection = /** @class */ (function (_super) {\n __extends(RibbonCollection, _super);\n function RibbonCollection() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of collection.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonCollection.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property('')\n ], RibbonCollection.prototype, \"id\", void 0);\n __decorate([\n Property('')\n ], RibbonCollection.prototype, \"cssClass\", void 0);\n __decorate([\n Collection([], RibbonItem)\n ], RibbonCollection.prototype, \"items\", void 0);\n return RibbonCollection;\n}(ChildProperty));\nexport { RibbonCollection };\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 { ChildProperty, Collection, Property } from '@syncfusion/ej2-base';\nimport { RibbonCollection } from './ribbon-collection';\n/**\n * Defines the ribbon group.\n */\nvar RibbonGroup = /** @class */ (function (_super) {\n __extends(RibbonGroup, _super);\n function RibbonGroup() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of Group.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonGroup.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Collection([], RibbonCollection)\n ], RibbonGroup.prototype, \"collections\", void 0);\n __decorate([\n Property('')\n ], RibbonGroup.prototype, \"cssClass\", void 0);\n __decorate([\n Property('')\n ], RibbonGroup.prototype, \"id\", void 0);\n __decorate([\n Property(false)\n ], RibbonGroup.prototype, \"isCollapsed\", void 0);\n __decorate([\n Property(true)\n ], RibbonGroup.prototype, \"isCollapsible\", void 0);\n __decorate([\n Property(false)\n ], RibbonGroup.prototype, \"enableGroupOverflow\", void 0);\n __decorate([\n Property('')\n ], RibbonGroup.prototype, \"groupIconCss\", void 0);\n __decorate([\n Property('')\n ], RibbonGroup.prototype, \"header\", void 0);\n __decorate([\n Property('Column')\n ], RibbonGroup.prototype, \"orientation\", void 0);\n __decorate([\n Property(0)\n ], RibbonGroup.prototype, \"priority\", void 0);\n __decorate([\n Property(false)\n ], RibbonGroup.prototype, \"showLauncherIcon\", void 0);\n return RibbonGroup;\n}(ChildProperty));\nexport { RibbonGroup };\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 { ChildProperty, Collection, Property } from '@syncfusion/ej2-base';\nimport { RibbonGroup } from './ribbon-group';\n/**\n * Defines the ribbon tab.\n */\nvar RibbonTab = /** @class */ (function (_super) {\n __extends(RibbonTab, _super);\n function RibbonTab() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of tab.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonTab.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property('')\n ], RibbonTab.prototype, \"id\", void 0);\n __decorate([\n Property('')\n ], RibbonTab.prototype, \"cssClass\", void 0);\n __decorate([\n Collection([], RibbonGroup)\n ], RibbonTab.prototype, \"groups\", void 0);\n __decorate([\n Property('')\n ], RibbonTab.prototype, \"header\", void 0);\n return RibbonTab;\n}(ChildProperty));\nexport { RibbonTab };\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 { ChildProperty, Property, Event, Complex, Collection } from '@syncfusion/ej2-base';\nimport { MenuAnimationSettings, MenuItem } from '@syncfusion/ej2-navigations';\nimport { RibbonTooltip } from './ribbon-tooltip';\n/**\n * Defines the ribbon file menu settings.\n */\nvar FileMenuSettings = /** @class */ (function (_super) {\n __extends(FileMenuSettings, _super);\n function FileMenuSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of FileMenu.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n FileMenuSettings.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property('File')\n ], FileMenuSettings.prototype, \"text\", void 0);\n __decorate([\n Property(false)\n ], FileMenuSettings.prototype, \"visible\", void 0);\n __decorate([\n Collection([], MenuItem)\n ], FileMenuSettings.prototype, \"menuItems\", void 0);\n __decorate([\n Property(false)\n ], FileMenuSettings.prototype, \"showItemOnClick\", void 0);\n __decorate([\n Complex({}, MenuAnimationSettings)\n ], FileMenuSettings.prototype, \"animationSettings\", void 0);\n __decorate([\n Property('')\n ], FileMenuSettings.prototype, \"itemTemplate\", void 0);\n __decorate([\n Property('')\n ], FileMenuSettings.prototype, \"popupTemplate\", void 0);\n __decorate([\n Complex({}, RibbonTooltip)\n ], FileMenuSettings.prototype, \"ribbonTooltipSettings\", void 0);\n __decorate([\n Event()\n ], FileMenuSettings.prototype, \"beforeClose\", void 0);\n __decorate([\n Event()\n ], FileMenuSettings.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], FileMenuSettings.prototype, \"beforeItemRender\", void 0);\n __decorate([\n Event()\n ], FileMenuSettings.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], FileMenuSettings.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], FileMenuSettings.prototype, \"select\", void 0);\n return FileMenuSettings;\n}(ChildProperty));\nexport { FileMenuSettings };\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 { ChildProperty, Property } from '@syncfusion/ej2-base';\n/**\n * Defines the ribbon backstage back button.\n */\nvar BackstageBackButton = /** @class */ (function (_super) {\n __extends(BackstageBackButton, _super);\n function BackstageBackButton() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], BackstageBackButton.prototype, \"text\", void 0);\n __decorate([\n Property('')\n ], BackstageBackButton.prototype, \"iconCss\", void 0);\n __decorate([\n Property(true)\n ], BackstageBackButton.prototype, \"visible\", void 0);\n return BackstageBackButton;\n}(ChildProperty));\nexport { BackstageBackButton };\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 { ChildProperty, Property, Event } from '@syncfusion/ej2-base';\n/**\n * Defines the ribbon backstage back button.\n */\nvar BackstageItem = /** @class */ (function (_super) {\n __extends(BackstageItem, _super);\n function BackstageItem() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], BackstageItem.prototype, \"text\", void 0);\n __decorate([\n Property('')\n ], BackstageItem.prototype, \"id\", void 0);\n __decorate([\n Property('')\n ], BackstageItem.prototype, \"content\", void 0);\n __decorate([\n Property('')\n ], BackstageItem.prototype, \"iconCss\", void 0);\n __decorate([\n Property(false)\n ], BackstageItem.prototype, \"separator\", void 0);\n __decorate([\n Property(false)\n ], BackstageItem.prototype, \"isFooter\", void 0);\n __decorate([\n Event()\n ], BackstageItem.prototype, \"backStageItemClick\", void 0);\n return BackstageItem;\n}(ChildProperty));\nexport { BackstageItem };\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 { ChildProperty, Property, Complex, Collection } from '@syncfusion/ej2-base';\nimport { BackstageBackButton } from './ribbon-back-button';\nimport { BackstageItem } from './ribbon-backstage-item';\nimport { RibbonTooltip } from './ribbon-tooltip';\n/**\n * Defines the ribbon file menu settings.\n */\nvar BackStageMenu = /** @class */ (function (_super) {\n __extends(BackStageMenu, _super);\n function BackStageMenu() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of Backstage Menu.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n BackStageMenu.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property('File')\n ], BackStageMenu.prototype, \"text\", void 0);\n __decorate([\n Property(false)\n ], BackStageMenu.prototype, \"visible\", void 0);\n __decorate([\n Property('auto')\n ], BackStageMenu.prototype, \"height\", void 0);\n __decorate([\n Property('auto')\n ], BackStageMenu.prototype, \"width\", void 0);\n __decorate([\n Property(null)\n ], BackStageMenu.prototype, \"target\", void 0);\n __decorate([\n Complex({}, BackstageBackButton)\n ], BackStageMenu.prototype, \"backButton\", void 0);\n __decorate([\n Collection([], BackstageItem)\n ], BackStageMenu.prototype, \"items\", void 0);\n __decorate([\n Property('')\n ], BackStageMenu.prototype, \"template\", void 0);\n __decorate([\n Complex({}, RibbonTooltip)\n ], BackStageMenu.prototype, \"ribbonTooltipSettings\", void 0);\n return BackStageMenu;\n}(ChildProperty));\nexport { BackStageMenu };\n","// export * from './file-menu';\nexport * from './ribbon-tab';\nexport * from './ribbon-group';\nexport * from './ribbon-collection';\nexport * from './ribbon-item';\nexport * from './ribbon-button-settings';\nexport * from './ribbon-checkbox-settings';\nexport * from './ribbon-colorpicker-settings';\nexport * from './ribbon-combobox-settings';\nexport * from './ribbon-dropdown-settings';\nexport * from './ribbon-splitbutton-settings';\nexport * from './ribbon-file-menu-settings';\nexport * from './ribbon-back-stage-settings';\nexport * from './ribbon-back-button';\nexport * from './ribbon-backstage-item';\nexport * from './ribbon-tooltip';\nexport * from './ribbon-group-button-settings';\nexport * from './ribbon-group-button-item';\n","/**\n * Specifies the File Manager internal ID's\n */\n/** @hidden */\nexport var ITEM_VERTICAL_CENTER = 'e-ribbon-vertical-center';\n/** @hidden */\nexport var EXPAND_COLLAPSE_ICON = 'e-icons e-drop-icon';\n/** @hidden */\nexport var BACKSTAGE_CLOSE_ICON = 'e-icons e-arrow-left';\n/** @hidden */\nexport var OVERFLOW_ICON = 'e-icons e-more-horizontal-1';\n/** @hidden */\nexport var VERTICAL_DDB = 'e-vertical';\n/** @hidden */\nexport var DISABLED_CSS = 'e-disabled';\n/** @hidden */\nexport var RTL_CSS = 'e-rtl';\n/** @hidden */\nexport var RIBBON_HOVER = 'e-ribbon-hover';\n/** @hidden */\nexport var RIBBON_CONTROL = 'e-ribbon-control';\n/** @hidden */\nexport var RIBBON_POPUP_CONTROL = 'e-ribbon-popup-control';\n/** @hidden */\nexport var RIBBON_POPUP_OPEN = 'e-ribbon-open';\n/** @hidden */\nexport var SPACE = ' ';\n/** @hidden */\nexport var HORIZONTAL_SCROLLBAR = 'e-hscroll-bar';\n/** @hidden */\nexport var HIDE_CSS = 'e-ribbon-hide';\n/** @hidden */\nexport var RIBBON_TAB = 'e-ribbon-tab';\n/** @hidden */\nexport var RIBBON_TAB_ACTIVE = 'e-ribbon-active';\n/** @hidden */\nexport var RIBBON_TAB_ITEM = 'e-ribbon-tab-item';\n/** @hidden */\nexport var RIBBON_COLLAPSE_BUTTON = 'e-ribbon-collapse-btn';\n/** @hidden */\nexport var RIBBON_EXPAND_BUTTON = 'e-ribbon-expand-btn';\n/** @hidden */\nexport var RIBBON_COLLAPSIBLE = 'e-ribbon-collapsible';\n/** @hidden */\nexport var RIBBON_OVERALL_OF_BUTTON = 'e-ribbon-overall-of-btn';\n/** @hidden */\nexport var RIBBON_GROUP_OF_BUTTON = 'e-ribbon-group-of-btn';\n/** @hidden */\nexport var RIBBON_OVERFLOW_TARGET = 'e-ribbon-overflow-target';\n/** @hidden */\nexport var RIBBON_OVERFLOW = 'e-ribbon-overflow';\n/** @hidden */\nexport var TAB_CONTENT = 'e-content';\n/** @hidden */\nexport var RIBBON_MINIMIZE = 'e-ribbon-minimize';\n/** @hidden */\nexport var RIBBON_GROUP = 'e-ribbon-group';\n/** @hidden */\nexport var RIBBON_SINGLE_BUTTON_SELECTION = 'e-ribbon-single-selection';\n/** @hidden */\nexport var RIBBON_MULTIPLE_BUTTON_SELECTION = 'e-ribbon-multiple-selection';\n/** @hidden */\nexport var RIBBON_GROUP_BUTTON = 'e-ribbon-group-button';\n/** @hidden */\nexport var RIBBON_GROUP_BUTTON_OVERFLOW_POPUP = 'e-ribbon-group-button-overflow-popup';\n/** @hidden */\nexport var RIBBON_GROUP_CONTAINER = 'e-ribbon-group-container';\n/** @hidden */\nexport var RIBBON_OF_TAB_CONTAINER = 'e-ribbon-of-tab';\n/** @hidden */\nexport var RIBBON_OF_GROUP_CONTAINER = 'e-ribbon-of-group-container';\n/** @hidden */\nexport var RIBBON_GROUP_CONTENT = 'e-ribbon-group-content';\n/** @hidden */\nexport var RIBBON_GROUP_HEADER = 'e-ribbon-group-header';\n/** @hidden */\nexport var RIBBON_OVERFLOW_HEADER = 'e-ribbon-overflow-header';\n/** @hidden */\nexport var RIBBON_GROUP_OVERFLOW = 'e-ribbon-group-overflow';\n/** @hidden */\nexport var RIBBON_GROUP_OVERFLOW_DDB = 'e-ribbon-group-overflow-ddb';\n/** @hidden */\nexport var RIBBON_LAUNCHER = 'e-ribbon-launcher';\n/** @hidden */\nexport var RIBBON_LAUNCHER_ICON_ELE = 'e-ribbon-launcher-icon';\n/** @hidden */\nexport var RIBBON_LAUNCHER_ICON = 'e-icons e-launcher';\n/** @hidden */\nexport var RIBBON_COLLECTION = 'e-ribbon-collection';\n/** @hidden */\nexport var RIBBON_ITEM = 'e-ribbon-item';\n/** @hidden */\nexport var RIBBON_ROW = 'e-ribbon-row';\n/** @hidden */\nexport var RIBBON_COLUMN = 'e-ribbon-column';\n/** @hidden */\nexport var RIBBON_LARGE_ITEM = 'e-ribbon-large-item';\n/** @hidden */\nexport var RIBBON_MEDIUM_ITEM = 'e-ribbon-medium-item';\n/** @hidden */\nexport var RIBBON_SMALL_ITEM = 'e-ribbon-small-item';\n/** @hidden */\nexport var RIBBON_CONTENT_HEIGHT = 'e-ribbon-content-height';\n/** @hidden */\nexport var DROPDOWNBUTTON = 'e-dropdown-btn';\n/** @hidden */\nexport var DROPDOWNBUTTON_HIDE = 'e-caret-hide';\n/** @hidden */\nexport var RIBBON_TEMPLATE = 'e-ribbon-template';\n/** @hidden */\nexport var RIBBON_HELP_TEMPLATE = 'e-ribbon-help-template';\n/** @hidden */\nexport var RIBBON_TOOLTIP = 'e-ribbon-tooltip';\n/** @hidden */\nexport var RIBBON_TOOLTIP_TARGET = 'e-ribbon-tooltip-target';\n/** @hidden */\nexport var RIBBON_TOOLTIP_TITLE = 'e-ribbon-tooltip-title';\n/** @hidden */\nexport var RIBBON_TOOLTIP_CONTENT = 'e-ribbon-tooltip-content';\n/** @hidden */\nexport var RIBBON_TOOLTIP_ICON = 'e-ribbon-tooltip-icon';\n/** @hidden */\nexport var RIBBON_TOOLTIP_CONTAINER = 'e-ribbon-tooltip-container';\n/** @hidden */\nexport var RIBBON_TEXT_CONTAINER = 'e-ribbon-text-container';\n/** @hidden */\nexport var RIBBON_SIMPLIFIED_MODE = 'e-ribbon-simplified-mode';\n/** @hidden */\nexport var RIBBON_BACKSTAGE_POPUP = 'e-ribbon-backstage-popup';\n/** @hidden */\nexport var RIBBON_BACKSTAGE_OPEN = 'e-ribbon-backstage-open';\n/** @hidden */\nexport var RIBBON_BACKSTAGE_CONTENT = 'e-ribbon-backstage-content';\n/** @hidden */\nexport var RIBBON_SELECTED_CONTENT = 'e-ribbon-selected-content';\n/** @hidden */\nexport var RIBBON_BACKSTAGE = 'e-ribbon-backstage';\n/** @hidden */\nexport var RIBBON_BACKSTAGE_MENU = 'e-ribbon-backstage-menu';\n/** @hidden */\nexport var RIBBON_BACKSTAGE_TEMPLATE = 'e-ribbon-backstage-template';\n/** @hidden */\nexport var RIBBON_BACKSTAGE_MENU_WRAPPER = 'e-ribbon-backstage-wrapper';\n/** @hidden */\nexport var RIBBON_BACKSTAGE_ITEMS_WRAPPER = 'e-ribbon-backstage-items-wrapper';\n/** @hidden */\nexport var RIBBON_BACKSTAGE_TEXT_MENU = 'e-blankicon';\n/** @hidden */\nexport var TAB_ID = '_tab';\n/** @hidden */\nexport var GROUP_ID = '_group';\n/** @hidden */\nexport var COLLECTION_ID = '_collection';\n/** @hidden */\nexport var ITEM_ID = '_item';\n/** @hidden */\nexport var COLLAPSE_BUTTON_ID = '_collapsebutton';\n/** @hidden */\nexport var OVRLOF_BUTTON_ID = '_sim_ovrl_overflow';\n/** @hidden */\nexport var GROUPOF_BUTTON_ID = '_sim_grp_overflow';\n/** @hidden */\nexport var HEADER_ID = '_header';\n/** @hidden */\nexport var LAUNCHER_ID = '_launcher';\n/** @hidden */\nexport var CONTENT_ID = '_content';\n/** @hidden */\nexport var CONTAINER_ID = '_container';\n/** @hidden */\nexport var OVERFLOW_ID = '_overflow';\n/** @hidden */\nexport var DROPDOWN_ID = '_dropdown';\n/** @hidden */\nexport var RIBBON_FILE_MENU_ID = '_filemenu';\n/** @hidden */\nexport var RIBBON_BACKSTAGE_MENU_ID = '_backstage';\n/** @hidden */\nexport var RIBBON_BACKSTAGE_POPUP_ID = '_backstagepopup';\n/** @hidden */\nexport var RIBBON_FILE_MENU_LIST = '_filemenulist';\n/** @hidden */\nexport var RIBBON_MENU_LIST = '_menulist';\n/** @hidden */\nexport var RIBBON_FOOTER_MENU_LIST = '_footermenulist';\n/** @hidden */\nexport var RIBBON_HELP_PANE_TEMPLATE_ID = '_helppanetemplate';\n/** @hidden */\nexport var RIBBON_GROUP_BUTTON_ID = '_grpbtn';\n/** @hidden */\nexport var RIBBON_FILE_MENU_WIDTH = '--fileMenuWidth';\n/** @hidden */\nexport var RIBBON_HELP_PANE_TEMPLATE_WIDTH = '--helpTemplateWidth';\n","import { getComponent, merge } from '@syncfusion/ej2-base';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { getItem, getItemElement, RibbonItemSize } from '../base/index';\nimport { ITEM_VERTICAL_CENTER, RIBBON_CONTROL, RIBBON_POPUP_CONTROL, SPACE } from '../base/constant';\n/**\n * Defines the items of Ribbon.\n */\nvar RibbonButton = /** @class */ (function () {\n function RibbonButton(parent) {\n this.parent = parent;\n }\n RibbonButton.prototype.getModuleName = function () {\n return 'ribbonButton';\n };\n RibbonButton.prototype.destroy = function () {\n this.parent = null;\n };\n /**\n * Creates button.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonButton.prototype.createButton = function (item, itemEle) {\n var _this = this;\n var buttonEle = this.parent.createElement('button', {\n id: item.id\n });\n itemEle.appendChild(buttonEle);\n var btnSettings = item.buttonSettings;\n new Button({\n locale: this.parent.locale,\n enableRtl: this.parent.enableRtl,\n enablePersistence: this.parent.enablePersistence,\n iconPosition: item.activeSize === RibbonItemSize.Large ? 'Top' : 'Left',\n iconCss: btnSettings.iconCss,\n disabled: item.disabled,\n cssClass: (ITEM_VERTICAL_CENTER + SPACE + RIBBON_CONTROL + SPACE + (btnSettings.cssClass ? btnSettings.cssClass : '')).trim(),\n content: item.activeSize === RibbonItemSize.Small ? '' : btnSettings.content,\n isPrimary: btnSettings.isPrimary,\n isToggle: btnSettings.isToggle,\n created: btnSettings.created\n }, buttonEle);\n buttonEle.onclick = function (e) {\n if (btnSettings.clicked) {\n btnSettings.clicked.call(_this, e);\n }\n };\n buttonEle.setAttribute('aria-label', btnSettings.content);\n };\n /**\n * Adds the additional event handlers as the item moved into overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @param {DropDownButton} overflowButton - Gets the overflow button.\n * @returns {void}\n * @hidden\n */\n RibbonButton.prototype.addOverFlowEvents = function (item, itemEle, overflowButton) {\n var _this = this;\n var buttonEle = itemEle.querySelector('#' + item.id);\n buttonEle.setAttribute('data-control', item.type.toString());\n var buttonObj = getComponent(buttonEle, Button);\n buttonObj.setProperties({ cssClass: buttonObj.cssClass + SPACE + RIBBON_POPUP_CONTROL });\n buttonEle.onclick = function (e) {\n if (item.buttonSettings.clicked) {\n item.buttonSettings.clicked.call(_this, e);\n }\n overflowButton.toggle();\n };\n };\n /**\n * Removes the additional event handlers as the item moved from overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonButton.prototype.removeOverFlowEvents = function (item, itemEle) {\n var _this = this;\n var buttonEle = itemEle.querySelector('#' + item.id);\n var buttonObj = getComponent(buttonEle, Button);\n var cssClass = buttonObj.cssClass.split(SPACE);\n cssClass = cssClass.filter(function (value) { return value !== RIBBON_POPUP_CONTROL; });\n buttonObj.setProperties({ cssClass: cssClass.join(SPACE) });\n buttonEle.onclick = function (e) {\n if (item.buttonSettings.clicked) {\n item.buttonSettings.clicked.call(_this, e);\n }\n };\n };\n /**\n * Triggers the click action on the button.\n *\n * @param {string} controlId - Gets the control ID.\n * @returns {void}\n */\n RibbonButton.prototype.click = function (controlId) {\n var buttonEle = getItemElement(this.parent, controlId);\n if (!buttonEle) {\n return;\n }\n var buttonObj = getComponent(buttonEle, Button);\n buttonObj.click();\n };\n /**\n * Updates the button properties.\n *\n * @param {RibbonButtonSettingsModel} prop - Gets the button property.\n * @param {string} id - Gets the ID of button item.\n * @returns {void}\n */\n RibbonButton.prototype.updateButton = function (prop, id) {\n var itemProp = getItem(this.parent.tabs, id);\n if (!itemProp) {\n return;\n }\n merge(itemProp.item.buttonSettings, prop);\n var buttonEle = getItemElement(this.parent, id, itemProp);\n if (!buttonEle) {\n return;\n }\n var buttonObj = getComponent(buttonEle, Button);\n if (prop.isToggle) {\n buttonEle.classList.add('e-active');\n }\n if (prop.cssClass) {\n prop.cssClass = (ITEM_VERTICAL_CENTER + SPACE + RIBBON_CONTROL + SPACE + prop.cssClass).trim();\n }\n if (prop.content) {\n prop.content = itemProp.item.activeSize === RibbonItemSize.Small ? '' : prop.content;\n buttonEle.setAttribute('aria-label', prop.content);\n }\n delete prop.clicked;\n buttonObj.setProperties(prop);\n };\n /**\n * Updates the button size.\n *\n * @param {HTMLElement} element - Gets the button element.\n * @param {RibbonItemModel} item - Gets the ribbon item.\n * @returns {void}\n * @hidden\n */\n RibbonButton.prototype.updateButtonSize = function (element, item) {\n var buttonObj = getComponent(element, Button);\n buttonObj.setProperties({\n iconPosition: item.activeSize === RibbonItemSize.Large ? 'Top' : 'Left',\n content: item.activeSize === RibbonItemSize.Small ? '' : item.buttonSettings.content\n });\n };\n return RibbonButton;\n}());\nexport { RibbonButton };\n","import { getComponent, merge } from '@syncfusion/ej2-base';\nimport { CheckBox } from '@syncfusion/ej2-buttons';\nimport { getItem, getItemElement, RIBBON_CONTROL, SPACE, RIBBON_POPUP_CONTROL } from '../base/index';\n/**\n * Defines the items of Ribbon.\n */\nvar RibbonCheckBox = /** @class */ (function () {\n function RibbonCheckBox(parent) {\n this.parent = parent;\n }\n RibbonCheckBox.prototype.getModuleName = function () {\n return 'ribbonCheckBox';\n };\n RibbonCheckBox.prototype.destroy = function () {\n this.parent = null;\n };\n /**\n * Creates the check box.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonCheckBox.prototype.createCheckBox = function (item, itemEle) {\n var _this = this;\n var inputEle = this.parent.createElement('input', {\n id: item.id\n });\n itemEle.appendChild(inputEle);\n var checkBoxSettings = item.checkBoxSettings;\n new CheckBox({\n locale: this.parent.locale,\n enableRtl: this.parent.enableRtl,\n enablePersistence: this.parent.enablePersistence,\n checked: checkBoxSettings.checked,\n cssClass: (RIBBON_CONTROL + SPACE + (checkBoxSettings.cssClass ? checkBoxSettings.cssClass : '')).trim(),\n label: checkBoxSettings.label,\n labelPosition: checkBoxSettings.labelPosition,\n disabled: item.disabled,\n created: checkBoxSettings.created,\n change: function (e) {\n if (checkBoxSettings.change) {\n checkBoxSettings.change.call(_this, e);\n }\n }\n }, inputEle);\n };\n /**\n * Adds the additional event handlers as the item moved into overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @param {DropDownButton} overflowButton - Gets the overflow button.\n * @returns {void}\n * @hidden\n */\n RibbonCheckBox.prototype.addOverFlowEvents = function (item, itemEle, overflowButton) {\n var _this = this;\n var inputEle = itemEle.querySelector('#' + item.id);\n inputEle.setAttribute('data-control', item.type.toString());\n var checkBoxObj = getComponent(inputEle, CheckBox);\n checkBoxObj.cssClass = checkBoxObj.cssClass + SPACE + RIBBON_POPUP_CONTROL;\n checkBoxObj.dataBind();\n checkBoxObj.change = function (e) {\n if (item.checkBoxSettings.change) {\n item.checkBoxSettings.change.call(_this, e);\n }\n overflowButton.toggle();\n };\n };\n /**\n * Removes the additional event handlers as the item moved from overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonCheckBox.prototype.removeOverFlowEvents = function (item, itemEle) {\n var _this = this;\n var inputEle = itemEle.querySelector('#' + item.id);\n var checkBoxObj = getComponent(inputEle, CheckBox);\n var cssClass = checkBoxObj.cssClass.split(SPACE);\n cssClass = cssClass.filter(function (value) { return value !== RIBBON_POPUP_CONTROL; });\n checkBoxObj.cssClass = cssClass.join(SPACE);\n checkBoxObj.dataBind();\n checkBoxObj.change = function (e) {\n if (item.checkBoxSettings.change) {\n item.checkBoxSettings.change.call(_this, e);\n }\n };\n };\n /**\n * Triggers the click action on the Checkbox.\n *\n * @param {string} controlId - Gets the control ID.\n * @returns {void}\n */\n RibbonCheckBox.prototype.click = function (controlId) {\n var inputEle = getItemElement(this.parent, controlId);\n if (!inputEle) {\n return;\n }\n var checkBoxObj = getComponent(inputEle, CheckBox);\n checkBoxObj.click();\n };\n /**\n * Updates the checkbox.\n *\n * @param {RibbonCheckBoxSettingsModel} prop - Gets the checkbox property.\n * @param {string} id - Gets the ID of checkbox.\n * @returns {void}\n */\n RibbonCheckBox.prototype.updateCheckBox = function (prop, id) {\n var itemProp = getItem(this.parent.tabs, id);\n if (!itemProp) {\n return;\n }\n merge(itemProp.item.checkBoxSettings, prop);\n var inputEle = getItemElement(this.parent, id, itemProp);\n if (!inputEle) {\n return;\n }\n if (prop.cssClass) {\n prop.cssClass = (RIBBON_CONTROL + SPACE + prop.cssClass).trim();\n }\n delete prop.change;\n var checkBoxObj = getComponent(inputEle, CheckBox);\n checkBoxObj.setProperties(prop);\n };\n return RibbonCheckBox;\n}());\nexport { RibbonCheckBox };\n","import { EventHandler, getComponent, merge } from '@syncfusion/ej2-base';\nimport { ColorPicker } from '@syncfusion/ej2-inputs';\nimport { getItem, getItemElement } from '../base/index';\nimport { RIBBON_CONTROL, RIBBON_HOVER, RIBBON_POPUP_CONTROL, RIBBON_POPUP_OPEN, SPACE } from '../base/constant';\n/**\n * Defines the items of Ribbon.\n */\nvar RibbonColorPicker = /** @class */ (function () {\n function RibbonColorPicker(parent) {\n this.parent = parent;\n }\n RibbonColorPicker.prototype.getModuleName = function () {\n return 'ribbonColorPicker';\n };\n RibbonColorPicker.prototype.destroy = function () {\n this.parent = null;\n };\n /**\n * Creates the colorpicker.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonColorPicker.prototype.createColorPicker = function (item, itemEle) {\n var _this = this;\n var inputEle = this.parent.createElement('input', {\n id: item.id\n });\n itemEle.appendChild(inputEle);\n var colorPickerSettings = item.colorPickerSettings;\n var colorPicker = new ColorPicker({\n locale: this.parent.locale,\n enableRtl: this.parent.enableRtl,\n enablePersistence: this.parent.enablePersistence,\n columns: colorPickerSettings.columns,\n cssClass: (RIBBON_CONTROL + SPACE + (colorPickerSettings.cssClass ? colorPickerSettings.cssClass : '')).trim(),\n disabled: item.disabled,\n enableOpacity: colorPickerSettings.enableOpacity,\n mode: colorPickerSettings.mode,\n modeSwitcher: colorPickerSettings.modeSwitcher,\n noColor: colorPickerSettings.noColor,\n presetColors: colorPickerSettings.presetColors,\n showButtons: colorPickerSettings.showButtons,\n value: colorPickerSettings.value,\n beforeClose: function () {\n colorPicker.element.parentElement.classList.remove(RIBBON_POPUP_OPEN);\n if (colorPickerSettings.beforeClose) {\n colorPickerSettings.beforeClose.call(_this);\n }\n },\n beforeOpen: colorPickerSettings.beforeOpen,\n beforeTileRender: colorPickerSettings.beforeTileRender,\n created: colorPickerSettings.created,\n change: colorPickerSettings.change,\n open: function () {\n colorPicker.element.parentElement.classList.add(RIBBON_POPUP_OPEN);\n if (colorPickerSettings.open) {\n colorPickerSettings.open.call(_this);\n }\n },\n select: colorPickerSettings.select\n }, inputEle);\n var wrapper = colorPicker.element.parentElement;\n EventHandler.add(wrapper, 'mouseenter', this.toggleWrapperHover.bind(this, wrapper, true), this);\n EventHandler.add(wrapper, 'mouseleave', this.toggleWrapperHover.bind(this, wrapper, false), this);\n };\n RibbonColorPicker.prototype.toggleWrapperHover = function (wrapper, isAdd) {\n if (isAdd) {\n wrapper.classList.add(RIBBON_HOVER);\n }\n else {\n wrapper.classList.remove(RIBBON_HOVER);\n }\n };\n /**\n * Adds the additional event handlers as the item moved into overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @param {DropDownButton} overflowButton - Gets the overflow button.\n * @returns {void}\n * @hidden\n */\n RibbonColorPicker.prototype.addOverFlowEvents = function (item, itemEle, overflowButton) {\n var _this = this;\n var colorPickerEle = itemEle.querySelector('#' + item.id);\n colorPickerEle.setAttribute('data-control', item.type.toString());\n var colorPickerObj = getComponent(colorPickerEle, ColorPicker);\n colorPickerObj.setProperties({ cssClass: colorPickerObj.cssClass + SPACE + RIBBON_POPUP_CONTROL });\n //Accessing the private property 'splitBtn' of ColorPicker component to get the colorpicker instance as there is no close event in colorpicker.\n var splitBtn = colorPickerObj['splitBtn'];\n var target;\n colorPickerObj.beforeClose = function (e) {\n target = e.event ? e.event.target : null;\n colorPickerObj.element.parentElement.classList.remove(RIBBON_POPUP_OPEN);\n if (item.colorPickerSettings.beforeClose) {\n item.colorPickerSettings.beforeClose.call(_this);\n }\n };\n splitBtn.close = function () {\n if (target && !target.closest('.e-ribbon-group-overflow-ddb')) {\n overflowButton.toggle();\n }\n };\n };\n /**\n * Removes the additional event handlers as the item moved from overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonColorPicker.prototype.removeOverFlowEvents = function (item, itemEle) {\n var _this = this;\n var colorPickerEle = itemEle.querySelector('#' + item.id);\n var colorPickerObj = getComponent(colorPickerEle, ColorPicker);\n var cssClass = colorPickerObj.cssClass.split(SPACE);\n cssClass = cssClass.filter(function (value) { return value !== RIBBON_POPUP_CONTROL; });\n colorPickerObj.setProperties({ cssClass: cssClass.join(SPACE) });\n var splitBtn = colorPickerObj['splitBtn'];\n //Accessing the private property 'splitBtn' of ColorPicker component to get the colorpicker instance as there is no close event in colorpicker.\n splitBtn.close = null;\n colorPickerObj.beforeClose = function () {\n colorPickerObj.element.parentElement.classList.remove(RIBBON_POPUP_OPEN);\n if (item.colorPickerSettings.beforeClose) {\n item.colorPickerSettings.beforeClose.call(_this);\n }\n };\n };\n RibbonColorPicker.prototype.getColorPickerObj = function (controlId) {\n var inputEle = getItemElement(this.parent, controlId);\n return inputEle ? getComponent(inputEle, ColorPicker) : null;\n };\n /**\n * Gets color value in specified type.\n *\n * @param {string} controlId -Gets the control ID.\n * @param {string} value - Specify the color value.\n * @param {string} type - Specify the type to which the specified color needs to be converted.\n * @returns {string} - Returns string.\n */\n RibbonColorPicker.prototype.getValue = function (controlId, value, type) {\n var colorPickerObj = this.getColorPickerObj(controlId);\n return colorPickerObj ? colorPickerObj.getValue(value, type) : '';\n };\n /**\n * To show/hide ColorPicker popup based on current state of the SplitButton.\n *\n * @param {string} controlId - set the id of the control.\n * @returns {void} - Returns void.\n */\n RibbonColorPicker.prototype.toggle = function (controlId) {\n var colorPickerObj = this.getColorPickerObj(controlId);\n if (!colorPickerObj) {\n return;\n }\n colorPickerObj.toggle();\n };\n /**\n * Updates the colorpicker properties.\n *\n * @param {RibbonColorPickerSettingsModel} prop - Gets the colorpicker property.\n * @param {string} id - Gets the ID of colorpicker.\n * @returns {void}\n */\n RibbonColorPicker.prototype.updateColorPicker = function (prop, id) {\n var itemProp = getItem(this.parent.tabs, id);\n if (!itemProp) {\n return;\n }\n merge(itemProp.item.checkBoxSettings, prop);\n var inputEle = getItemElement(this.parent, id, itemProp);\n if (!inputEle) {\n return;\n }\n if (prop.cssClass) {\n prop.cssClass = (RIBBON_CONTROL + SPACE + prop.cssClass).trim();\n }\n delete prop.beforeClose;\n delete prop.open;\n var colorPickerObj = getComponent(inputEle, ColorPicker);\n colorPickerObj.setProperties(prop);\n };\n /**\n * @param {HTMLElement} element - Gets the colorpicker element to be destroyed.\n * @returns {void}\n * @hidden\n */\n RibbonColorPicker.prototype.unwireColorPickerEvents = function (element) {\n var colorPickerObj = getComponent(element, ColorPicker);\n var wrapper = colorPickerObj.element.parentElement;\n EventHandler.remove(wrapper, 'mouseenter', this.toggleWrapperHover);\n EventHandler.remove(wrapper, 'mouseleave', this.toggleWrapperHover);\n };\n return RibbonColorPicker;\n}());\nexport { RibbonColorPicker };\n","import { getComponent, merge } from '@syncfusion/ej2-base';\nimport { ComboBox } from '@syncfusion/ej2-dropdowns';\nimport { getItem, getItemElement, RIBBON_CONTROL, SPACE, RIBBON_POPUP_CONTROL } from '../base/index';\n/**\n * Defines the items of Ribbon.\n */\nvar RibbonComboBox = /** @class */ (function () {\n function RibbonComboBox(parent) {\n this.parent = parent;\n }\n RibbonComboBox.prototype.getModuleName = function () {\n return 'ribbonComboBox';\n };\n RibbonComboBox.prototype.destroy = function () {\n this.parent = null;\n };\n /**\n * Creates the combobox.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonComboBox.prototype.createComboBox = function (item, itemEle) {\n var _this = this;\n var inputEle = this.parent.createElement('input', {\n id: item.id\n });\n itemEle.appendChild(inputEle);\n var comboBoxSettings = item.comboBoxSettings;\n new ComboBox({\n locale: this.parent.locale,\n enableRtl: this.parent.enableRtl,\n enablePersistence: this.parent.enablePersistence,\n allowCustom: false,\n floatLabelType: 'Never',\n ignoreAccent: true,\n ignoreCase: true,\n allowFiltering: comboBoxSettings.allowFiltering,\n autofill: comboBoxSettings.autofill,\n cssClass: (RIBBON_CONTROL + SPACE + (comboBoxSettings.cssClass ? comboBoxSettings.cssClass : '')).trim(),\n dataSource: comboBoxSettings.dataSource,\n enabled: !item.disabled,\n fields: comboBoxSettings.fields,\n filterType: comboBoxSettings.filterType,\n footerTemplate: comboBoxSettings.footerTemplate,\n groupTemplate: comboBoxSettings.groupTemplate,\n headerTemplate: comboBoxSettings.headerTemplate,\n index: comboBoxSettings.index,\n itemTemplate: comboBoxSettings.itemTemplate,\n noRecordsTemplate: comboBoxSettings.noRecordsTemplate,\n placeholder: comboBoxSettings.placeholder,\n popupHeight: comboBoxSettings.popupHeight,\n popupWidth: comboBoxSettings.popupWidth,\n showClearButton: comboBoxSettings.showClearButton,\n sortOrder: comboBoxSettings.sortOrder,\n text: comboBoxSettings.text,\n value: comboBoxSettings.value,\n width: comboBoxSettings.width,\n beforeOpen: comboBoxSettings.beforeOpen,\n open: comboBoxSettings.open,\n close: function (e) {\n if (comboBoxSettings.close) {\n comboBoxSettings.close.call(_this, e);\n }\n },\n filtering: comboBoxSettings.filtering,\n change: comboBoxSettings.change,\n select: comboBoxSettings.select,\n created: comboBoxSettings.created\n }, inputEle);\n };\n /**\n * Adds the additional event handlers as the item moved into overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @param {DropDownButton} overflowButton - Gets the overflow button.\n * @returns {void}\n * @hidden\n */\n RibbonComboBox.prototype.addOverFlowEvents = function (item, itemEle, overflowButton) {\n var _this = this;\n var inputEle = itemEle.querySelector('#' + item.id);\n inputEle.setAttribute('data-control', item.type.toString());\n var comboBoxObj = getComponent(inputEle, ComboBox);\n comboBoxObj.setProperties({ cssClass: comboBoxObj.cssClass + SPACE + RIBBON_POPUP_CONTROL });\n comboBoxObj.close = function (e) {\n var target = e.event ? e.event.target : null;\n if (item.comboBoxSettings.close) {\n item.comboBoxSettings.close.call(_this, e);\n }\n if (target && !target.closest('.e-ribbon-group-overflow-ddb')) {\n overflowButton.toggle();\n }\n };\n };\n /**\n * Removes the additional event handlers as the item moved from overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonComboBox.prototype.removeOverFlowEvents = function (item, itemEle) {\n var _this = this;\n var inputEle = itemEle.querySelector('#' + item.id);\n var comboBoxObj = getComponent(inputEle, ComboBox);\n var cssClass = comboBoxObj.cssClass.split(SPACE);\n cssClass = cssClass.filter(function (value) { return value !== RIBBON_POPUP_CONTROL; });\n comboBoxObj.setProperties({ cssClass: cssClass.join(SPACE) });\n comboBoxObj.close = function (e) {\n if (item.comboBoxSettings.close) {\n item.comboBoxSettings.close.call(_this, e);\n }\n };\n };\n RibbonComboBox.prototype.getComboBoxObj = function (controlId) {\n var inputEle = getItemElement(this.parent, controlId);\n return inputEle ? getComponent(inputEle, ComboBox) : null;\n };\n /**\n * To filter the data from given data source by using query\n *\n * @param {string } controlId - set the id of the control in which methods needs to be called.\n * @param {Object[] } dataSource - Set the data source to filter.\n * @param {Query} query - Specify the query to filter the data.\n * @param {FieldSettingsModel} fields - Specify the fields to map the column in the data table.\n * @returns {void}\n */\n RibbonComboBox.prototype.filter = function (controlId, dataSource, query, fields) {\n this.getComboBoxObj(controlId).filter(dataSource, query, fields);\n };\n /**\n * To open/close DropDownButton popup based on current state of the combobox.\n *\n * @param {string} controlId - Gets the id of the control.\n * @returns {void}\n */\n RibbonComboBox.prototype.hidePopup = function (controlId) {\n var comboBoxObj = this.getComboBoxObj(controlId);\n if (!comboBoxObj) {\n return;\n }\n comboBoxObj.hidePopup();\n };\n /**\n * To open/close DropDownButton popup based on current state of the combobox.\n *\n * @param {string} controlId - Gets the id of the control.\n * @returns {void}\n */\n RibbonComboBox.prototype.showPopup = function (controlId) {\n var comboBoxObj = this.getComboBoxObj(controlId);\n if (!comboBoxObj) {\n return;\n }\n comboBoxObj.showPopup();\n };\n /**\n * Updates the combobox properties.\n *\n * @param {RibbonComboBoxSettingsModel} prop - Gets the combobox property.\n * @param {string} id - Gets the ID of combobox.\n * @returns {void}\n */\n RibbonComboBox.prototype.updateComboBox = function (prop, id) {\n var itemProp = getItem(this.parent.tabs, id);\n if (!itemProp) {\n return;\n }\n merge(itemProp.item.comboBoxSettings, prop);\n var inputEle = getItemElement(this.parent, id, itemProp);\n if (!inputEle) {\n return;\n }\n if (prop.cssClass) {\n prop.cssClass = (RIBBON_CONTROL + SPACE + prop.cssClass).trim();\n }\n delete prop.close;\n var comboBoxObj = getComponent(inputEle, ComboBox);\n comboBoxObj.setProperties(prop);\n };\n return RibbonComboBox;\n}());\nexport { RibbonComboBox };\n","import { closest, getComponent, isNullOrUndefined, merge, remove } from '@syncfusion/ej2-base';\nimport { DropDownButton } from '@syncfusion/ej2-splitbuttons';\nimport { Tooltip } from '@syncfusion/ej2-popups';\nimport { getItem, getItemElement, RibbonItemSize, createTooltip } from '../base/index';\nimport { DROPDOWN_ID, ITEM_VERTICAL_CENTER, OVERFLOW_ID, RIBBON_CONTROL, RIBBON_GROUP_OVERFLOW_DDB, RIBBON_POPUP_CONTROL, SPACE, VERTICAL_DDB } from '../base/constant';\n/**\n * Defines the items of Ribbon.\n */\nvar RibbonDropDown = /** @class */ (function () {\n function RibbonDropDown(parent) {\n this.parent = parent;\n }\n RibbonDropDown.prototype.getModuleName = function () {\n return 'ribbonDropDown';\n };\n RibbonDropDown.prototype.destroy = function () {\n this.parent = null;\n };\n /**\n * Creates DropDown.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonDropDown.prototype.createDropDown = function (item, itemEle) {\n var _this = this;\n var buttonEle = this.parent.createElement('button', {\n id: item.id\n });\n itemEle.appendChild(buttonEle);\n var dropDownSettings = item.dropDownSettings;\n var cssClass = (ITEM_VERTICAL_CENTER + SPACE + RIBBON_CONTROL + SPACE + (dropDownSettings.cssClass ?\n dropDownSettings.cssClass : '')).trim();\n new DropDownButton({\n locale: this.parent.locale,\n enableRtl: this.parent.enableRtl,\n enablePersistence: this.parent.enablePersistence,\n iconPosition: item.activeSize === RibbonItemSize.Large ? 'Top' : 'Left',\n closeActionEvents: dropDownSettings.closeActionEvents,\n content: item.activeSize === RibbonItemSize.Small ? '' : dropDownSettings.content,\n cssClass: cssClass + ((item.activeSize === RibbonItemSize.Large) ? (SPACE + VERTICAL_DDB) : ''),\n disabled: item.disabled,\n iconCss: dropDownSettings.iconCss,\n items: dropDownSettings.items,\n target: dropDownSettings.target,\n createPopupOnClick: dropDownSettings.createPopupOnClick,\n beforeClose: function (e) {\n if (dropDownSettings.beforeClose) {\n dropDownSettings.beforeClose.call(_this, e);\n }\n },\n beforeItemRender: dropDownSettings.beforeItemRender,\n beforeOpen: dropDownSettings.beforeOpen,\n close: function (e) {\n if (dropDownSettings.close) {\n dropDownSettings.close.call(_this, e);\n }\n },\n created: dropDownSettings.created,\n open: dropDownSettings.open,\n select: dropDownSettings.select\n }).appendTo(buttonEle);\n };\n /**\n * Adds the additional event handlers as the item moved into overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @param {DropDownButton} overflowButton - Gets the overflow button.\n * @returns {void}\n * @hidden\n */\n RibbonDropDown.prototype.addOverFlowEvents = function (item, itemEle, overflowButton) {\n var _this = this;\n var dropdownElement = itemEle.querySelector('#' + item.id);\n dropdownElement.setAttribute('data-control', item.type.toString());\n var dropdown = getComponent(dropdownElement, DropDownButton);\n dropdown.cssClass = dropdown.cssClass + SPACE + RIBBON_POPUP_CONTROL;\n dropdown.dataBind();\n var target;\n dropdown.beforeClose = function (e) {\n if (item.dropDownSettings.beforeClose) {\n item.dropDownSettings.beforeClose.call(_this, e);\n }\n target = e.event ? e.event.target : null;\n };\n dropdown.close = function (e) {\n if (item.dropDownSettings.close) {\n item.dropDownSettings.close.call(_this, e);\n }\n if (target && !target.closest('.e-ribbon-group-overflow-ddb')) {\n overflowButton.toggle();\n }\n };\n };\n /**\n * Removes the additional event handlers as the item moved from overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonDropDown.prototype.removeOverFlowEvents = function (item, itemEle) {\n var _this = this;\n var dropdownElement = itemEle.querySelector('#' + item.id);\n var dropdown = getComponent(dropdownElement, DropDownButton);\n var cssClass = dropdown.cssClass.split(SPACE);\n cssClass = cssClass.filter(function (value) { return value !== RIBBON_POPUP_CONTROL; });\n dropdown.cssClass = cssClass.join(SPACE);\n dropdown.dataBind();\n dropdown.close = function (e) {\n if (item.dropDownSettings.close) {\n item.dropDownSettings.close.call(_this, e);\n }\n };\n dropdown.beforeClose = function (e) {\n if (item.dropDownSettings.beforeClose) {\n item.dropDownSettings.beforeClose.call(_this, e);\n }\n };\n };\n /**\n * Creates Overflow DropDown.\n *\n * @param {string} id - Gets the ID of the dropdown item.\n * @param {string} name - Gets the name of the dropdown item.\n * @param {string} iconCss - Gets the icon of the dropdown item.\n * @param {HTMLElement} groupEle - Gets the overflow group element.\n * @param {HTMLElement} overflowEle - Gets the overflow element.\n * @returns {void}\n * @hidden\n */\n RibbonDropDown.prototype.createOverFlowDropDown = function (id, name, iconCss, groupEle, overflowEle, enableRtl) {\n var _this = this;\n this.enableRtl = enableRtl;\n var buttonEle = this.parent.createElement('button', {\n id: id + OVERFLOW_ID + DROPDOWN_ID\n });\n groupEle.setAttribute('tabindex', '0');\n overflowEle.appendChild(buttonEle);\n var dropdown = new DropDownButton({\n iconCss: iconCss,\n target: groupEle,\n locale: this.parent.locale,\n enableRtl: this.parent.enableRtl,\n enablePersistence: this.parent.enablePersistence,\n cssClass: VERTICAL_DDB + SPACE + RIBBON_GROUP_OVERFLOW_DDB,\n iconPosition: 'Top',\n content: name,\n beforeClose: function (args) {\n args.cancel = !isNullOrUndefined(args.event && closest(args.event.target, '.' + RIBBON_POPUP_CONTROL));\n }\n }, buttonEle);\n createTooltip(groupEle, this.parent);\n buttonEle.onclick = buttonEle.onkeydown = function () { _this.itemIndex = 0; };\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n groupEle.onkeydown = function (e) { _this.keyActionHandler(e, groupEle), _this; };\n return dropdown;\n };\n RibbonDropDown.prototype.keyActionHandler = function (e, target) {\n var items = target.querySelectorAll('.e-control');\n var comboBoxElements = target.querySelectorAll('.e-combobox');\n var comboBoxEle;\n if (comboBoxElements) {\n for (var i = 0; i < comboBoxElements.length; i++) {\n if (comboBoxElements[parseInt(i.toString(), 10)].closest('.e-input-focus')) {\n comboBoxEle = comboBoxElements[parseInt(i.toString(), 10)];\n }\n }\n }\n if (comboBoxEle) {\n for (var i = 0; i < items.length; i++) {\n if (items[parseInt(i.toString(), 10)].classList.contains('e-combobox')) {\n if (items[parseInt(i.toString(), 10)].closest('.e-input-focus')) {\n this.itemIndex = i;\n }\n }\n }\n }\n if (e.target.classList.contains('e-control') || e.target.classList.contains('e-ribbon-launcher-icon') ||\n e.target.classList.contains('e-ribbon-last-item') || e.target.classList.contains('e-ribbon-first-item')) {\n if (e.key === 'ArrowRight' || (!e.shiftKey && e.key === 'Tab')) {\n this.handleNavigation(e, !this.enableRtl, items);\n }\n if (e.key === 'ArrowLeft' || (e.shiftKey && e.key === 'Tab')) {\n this.handleNavigation(e, this.enableRtl, items);\n }\n }\n };\n RibbonDropDown.prototype.handleNavigation = function (e, enableRtl, items) {\n if (!(items[0].classList.contains('e-ribbon-first-item'))) {\n items[0].classList.add('e-ribbon-first-item');\n }\n if (!(items[items.length - 1].classList.contains('e-ribbon-last-item'))) {\n items[items.length - 1].classList.add('e-ribbon-last-item');\n }\n if (enableRtl) {\n if (this.itemIndex === 0 && items[parseInt(this.itemIndex.toString(), 10)].classList.contains('e-ribbon-first-item')) {\n this.updateItemIndex(e, items, true);\n }\n if (!e.target.classList.contains('e-combobox') && !e.target.classList.contains('e-ribbon-last-item') &&\n !e.target.classList.contains('e-ribbon-group-container') && (e.target.classList.contains('e-ribbon-first-item')\n || this.itemIndex !== 0) && e.target.classList.contains('e-control')) {\n this.itemIndex++;\n this.updateItemIndex(e, items, true);\n }\n if (e.target.classList.contains('e-ribbon-last-item')) {\n var launcherIcon = false;\n launcherIcon = this.focusLauncherIcon(e, items);\n if (!launcherIcon) {\n this.itemIndex = 0;\n this.updateItemIndex(e, items, true);\n }\n }\n if (e.target.classList.contains('e-ribbon-launcher-icon')) {\n this.itemIndex = 0;\n this.updateItemIndex(e, items, true);\n }\n }\n else {\n if (!e.target.classList.contains('e-combobox') && this.itemIndex !== 0) {\n this.itemIndex--;\n this.updateItemIndex(e, items, false);\n }\n if (e.target.classList.contains('e-ribbon-first-item')) {\n var launcherIcon = false;\n launcherIcon = this.focusLauncherIcon(e, items);\n if (!launcherIcon) {\n this.itemIndex = items.length - 1;\n this.updateItemIndex(e, items, false);\n }\n }\n if (e.target.classList.contains('e-ribbon-launcher-icon')) {\n this.itemIndex = items.length - 1;\n this.updateItemIndex(e, items, false);\n }\n }\n if (e.target.classList.contains('e-combobox') && (e.key === 'Tab')) {\n if (enableRtl) {\n if (this.itemIndex < items.length - 1) {\n this.itemIndex++;\n }\n }\n else {\n if (this.itemIndex > 0) {\n this.itemIndex--;\n }\n }\n }\n };\n RibbonDropDown.prototype.focusLauncherIcon = function (e, items) {\n var groupContainer = items[parseInt(this.itemIndex.toString(), 10)].closest('.e-ribbon-group-container');\n var launcherIconEle;\n if (groupContainer) {\n launcherIconEle = groupContainer.querySelector('.e-ribbon-launcher-icon');\n }\n if (launcherIconEle) {\n if (e.key === 'Tab') {\n e.preventDefault();\n }\n groupContainer.querySelector('.e-ribbon-launcher-icon').focus();\n return true;\n }\n else {\n return false;\n }\n };\n RibbonDropDown.prototype.updateItemIndex = function (e, items, enableRtl) {\n var ribbonItem = items[this.itemIndex].closest('.e-ribbon-item');\n while (ribbonItem && ribbonItem.classList.contains('e-disabled')) {\n if (enableRtl) {\n if (this.itemIndex < items.length - 1) {\n this.itemIndex++;\n }\n else {\n var launcherIcon = false;\n launcherIcon = this.focusLauncherIcon(e, items);\n if (launcherIcon) {\n break;\n }\n this.itemIndex = 0;\n }\n }\n else {\n if (this.itemIndex > 0) {\n this.itemIndex--;\n }\n else {\n var launcherIcon = false;\n launcherIcon = this.focusLauncherIcon(e, items);\n if (launcherIcon) {\n break;\n }\n this.itemIndex = items.length - 1;\n }\n }\n ribbonItem = items[this.itemIndex].closest('.e-ribbon-item');\n }\n if (e.key === 'Tab') {\n e.preventDefault();\n }\n items[parseInt(this.itemIndex.toString(), 10)].focus();\n };\n /**\n * Removes Overflow DropDown.\n *\n * @param {HTMLElement} dropdownElement - Gets the ribbon DropDown element.\n * @returns {void}\n * @hidden\n */\n RibbonDropDown.prototype.removeOverFlowDropDown = function (dropdownElement) {\n var dropdown = getComponent(dropdownElement, DropDownButton);\n var tooltip = getComponent(dropdown.target, Tooltip);\n tooltip.destroy();\n dropdownElement.parentElement.parentElement.insertBefore(dropdown.target, dropdownElement.parentElement);\n dropdown.destroy();\n remove(dropdownElement);\n };\n /**\n * Gets DropDown item element.\n *\n * @param {HTMLElement} dropdownElement - Gets the ribbon DropDown element.\n * @param {string} id - Gets the ID of ribbon DropDown element.\n * @returns {HTMLElement} - Returns the DropDown item element.\n * @hidden\n */\n RibbonDropDown.prototype.getDDBItemElement = function (dropdownElement, id) {\n var dropdown = getComponent(dropdownElement, DropDownButton);\n var dropDownPopup = dropdown.dropDown.element;\n return dropDownPopup.querySelector('#' + id);\n };\n /**\n * Gets Overflow DropDown Popup.\n *\n * @param {itemProps} itemProp - Gets the property of ribbon item.\n * @param {HTMLElement} contentEle - Gets the content element.\n * @returns {HTMLElement} - Returns the Overflow DropDown Popup.\n * @hidden\n */\n RibbonDropDown.prototype.getOverflowDropDownPopup = function (itemProp, contentEle) {\n var dropdownElement = contentEle.querySelector('#' + this.parent.tabs[itemProp.tabIndex].groups[itemProp.groupIndex].id + OVERFLOW_ID + DROPDOWN_ID);\n var dropdown = getComponent(dropdownElement, DropDownButton);\n return dropdown.dropDown.element;\n };\n RibbonDropDown.prototype.getDropDownObj = function (controlId) {\n var dropDownEle = getItemElement(this.parent, controlId);\n return dropDownEle ? getComponent(dropDownEle, DropDownButton) : null;\n };\n /**\n * Adds a new item to the menu. By default, new item appends to\n * the list as the last item, but you can insert based on the text parameter.\n *\n * @param {string} controlId - Gets the control ID.\n * @param {ItemModel[]} Items - Gets the DropDown items.\n * @param {string} text - Gets the text of the dropdown item where the new item needs to be inserted.\n * @returns {void}\n */\n RibbonDropDown.prototype.addItems = function (controlId, Items, text) {\n this.getDropDownObj(controlId).addItems(Items, text);\n };\n /**\n * Removes the items from the menu.\n *\n * @param {string} controlId - Gets the control ID.\n * @param {string[]} Items -\n * @param {string} isUniqueId -\n * @returns {void}\n */\n RibbonDropDown.prototype.removeItems = function (controlId, Items, isUniqueId) {\n this.getDropDownObj(controlId).removeItems(Items, isUniqueId);\n };\n /**\n * To open/close DropDownButton popup based on current state of the DropDownButton.\n *\n * @param {string} controlId - Gets the control ID.\n * @returns {void}\n */\n RibbonDropDown.prototype.toggle = function (controlId) {\n this.getDropDownObj(controlId).toggle();\n };\n /**\n * Updates the dropdown.\n *\n * @param {RibbonDropDownSettingsModel} prop - Gets the dropdown property.\n * @param {string} id - Gets the ID of dropdown.\n * @returns {void}\n */\n RibbonDropDown.prototype.updateDropDown = function (prop, id) {\n var itemProp = getItem(this.parent.tabs, id);\n if (!itemProp) {\n return;\n }\n merge(itemProp.item.dropDownSettings, prop);\n var btnEle = getItemElement(this.parent, id, itemProp);\n if (!btnEle) {\n return;\n }\n var control = getComponent(btnEle, DropDownButton);\n if (prop.cssClass) {\n prop.cssClass = (RIBBON_CONTROL + SPACE + ITEM_VERTICAL_CENTER + SPACE + prop.cssClass).trim();\n prop.cssClass = itemProp.item.activeSize === RibbonItemSize.Large ?\n (VERTICAL_DDB + SPACE + prop.cssClass).trim() : prop.cssClass;\n control.cssClass = prop.cssClass;\n }\n delete prop.close;\n delete prop.beforeClose;\n if (prop.content) {\n prop.content = itemProp.item.activeSize === RibbonItemSize.Small ? '' : prop.content;\n }\n control.setProperties(prop);\n };\n /**\n * Updated DropDown size\n *\n * @param {HTMLElement} element - Gets the dropdown element.\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @returns {void}\n * @hidden\n */\n RibbonDropDown.prototype.updateDropDownSize = function (element, item) {\n var control = getComponent(element, DropDownButton);\n var cssClass = control.cssClass.split(SPACE);\n if (item.activeSize === RibbonItemSize.Large) {\n cssClass.push(VERTICAL_DDB);\n }\n else {\n cssClass = cssClass.filter(function (value) { return value !== VERTICAL_DDB; });\n }\n control.cssClass = cssClass.join(SPACE);\n control.setProperties({ iconPosition: item.activeSize === RibbonItemSize.Large ? 'Top' : 'Left' });\n control.setProperties({ content: item.activeSize === RibbonItemSize.Small ? '' : item.dropDownSettings.content });\n };\n return RibbonDropDown;\n}());\nexport { RibbonDropDown };\n","import { EventHandler, getComponent, merge } from '@syncfusion/ej2-base';\nimport { SplitButton } from '@syncfusion/ej2-splitbuttons';\nimport { getItem, getItemElement, RibbonItemSize } from '../base/index';\nimport { ITEM_VERTICAL_CENTER, RIBBON_CONTROL, RIBBON_HOVER, RIBBON_POPUP_CONTROL, RIBBON_POPUP_OPEN, SPACE, VERTICAL_DDB } from '../base/constant';\n/**\n * Defines the items of Ribbon.\n */\nvar RibbonSplitButton = /** @class */ (function () {\n function RibbonSplitButton(parent) {\n this.parent = parent;\n }\n RibbonSplitButton.prototype.getModuleName = function () {\n return 'ribbonSplitButton';\n };\n RibbonSplitButton.prototype.destroy = function () {\n this.parent = null;\n };\n /**\n * Creates SplitButton.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonSplitButton.prototype.createSplitButton = function (item, itemEle) {\n var _this = this;\n var buttonEle = this.parent.createElement('button', {\n id: item.id\n });\n itemEle.appendChild(buttonEle);\n var splitButtonSettings = item.splitButtonSettings;\n var cssClass = (ITEM_VERTICAL_CENTER + SPACE + RIBBON_CONTROL + SPACE + (splitButtonSettings.cssClass ?\n splitButtonSettings.cssClass : '')).trim();\n var splitbutton = new SplitButton({\n locale: this.parent.locale,\n enableRtl: this.parent.enableRtl,\n enablePersistence: this.parent.enablePersistence,\n iconPosition: item.activeSize === RibbonItemSize.Large ? 'Top' : 'Left',\n closeActionEvents: splitButtonSettings.closeActionEvents,\n cssClass: cssClass + ((item.activeSize === RibbonItemSize.Large) ? (SPACE + VERTICAL_DDB) : ''),\n disabled: item.disabled,\n iconCss: splitButtonSettings.iconCss,\n items: splitButtonSettings.items,\n target: splitButtonSettings.target,\n beforeClose: function (e) {\n if (splitButtonSettings.beforeClose) {\n splitButtonSettings.beforeClose.call(_this, e);\n }\n },\n beforeItemRender: splitButtonSettings.beforeItemRender,\n beforeOpen: splitButtonSettings.beforeOpen,\n close: function () {\n splitbutton['wrapper'].classList.remove(RIBBON_POPUP_OPEN);\n if (splitButtonSettings.close) {\n splitButtonSettings.close.call(_this);\n }\n },\n created: splitButtonSettings.created,\n open: function () {\n splitbutton['wrapper'].classList.add(RIBBON_POPUP_OPEN);\n if (splitButtonSettings.open) {\n splitButtonSettings.open.call(_this);\n }\n },\n select: splitButtonSettings.select,\n click: function (e) {\n if (splitButtonSettings.click) {\n splitButtonSettings.click.call(_this, e);\n }\n }\n }, buttonEle);\n var dropdownEle = buttonEle.parentElement.querySelector('.e-dropdown-btn');\n dropdownEle.onkeydown = function (e) {\n if (e.key === 'Enter') {\n e.stopImmediatePropagation();\n dropdownEle.click();\n }\n };\n this.setContent(item, splitbutton);\n var wrapper = splitbutton['wrapper'];\n EventHandler.add(wrapper, 'mouseenter', function () { wrapper.classList.add(RIBBON_HOVER); }, this);\n EventHandler.add(wrapper, 'mouseleave', function () { wrapper.classList.remove(RIBBON_HOVER); }, this);\n };\n /**\n * Adds the additional event handlers as the item moved into overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @param {DropDownButton} overflowButton - Gets the overflow button.\n * @returns {void}\n * @hidden\n */\n RibbonSplitButton.prototype.addOverFlowEvents = function (item, itemEle, overflowButton) {\n var _this = this;\n var splitButtonEle = itemEle.querySelector('#' + item.id);\n splitButtonEle.setAttribute('data-control', item.type.toString());\n var splitbutton = getComponent(splitButtonEle, SplitButton);\n splitbutton.cssClass = splitbutton.cssClass + SPACE + RIBBON_POPUP_CONTROL;\n splitbutton.dataBind();\n var dropdownEle = splitButtonEle.parentElement.querySelector('.e-dropdown-btn');\n var ddbId = dropdownEle.getAttribute('id');\n var popupEle = document.querySelector('#' + ddbId + '-popup');\n dropdownEle.onkeydown = function (e) {\n if (e.key === 'Enter') {\n e.stopImmediatePropagation();\n dropdownEle.click();\n }\n };\n popupEle.onkeydown = function (e) {\n if (e.key === 'Enter') {\n e.preventDefault();\n splitbutton['wrapper'].classList.remove('e-ribbon-open');\n popupEle.querySelector('.e-focused').click();\n }\n };\n var target;\n splitbutton.beforeClose = function (e) {\n if (item.splitButtonSettings.beforeClose) {\n item.splitButtonSettings.beforeClose.call(_this, e);\n }\n target = e.event ? e.event.target : null;\n };\n splitbutton.click = function (e) {\n if (item.splitButtonSettings.click) {\n item.splitButtonSettings.click.call(_this, e);\n }\n overflowButton.toggle();\n };\n splitbutton.close = function (e) {\n if (item.splitButtonSettings.close) {\n item.splitButtonSettings.close.call(_this, e);\n }\n splitbutton['wrapper'].classList.remove(RIBBON_POPUP_OPEN);\n if (target && !target.closest('.e-ribbon-group-overflow-ddb')) {\n overflowButton.toggle();\n }\n };\n };\n /**\n * Removes the additional event handlers as the item moved from overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonSplitButton.prototype.removeOverFlowEvents = function (item, itemEle) {\n var _this = this;\n var splitButtonEle = itemEle.querySelector('#' + item.id);\n var splitbutton = getComponent(splitButtonEle, SplitButton);\n var cssClass = splitbutton.cssClass.split(SPACE);\n cssClass = cssClass.filter(function (value) { return value !== RIBBON_POPUP_CONTROL; });\n splitbutton.cssClass = cssClass.join(SPACE);\n splitbutton.dataBind();\n splitbutton.beforeClose = function (e) {\n if (item.splitButtonSettings.beforeClose) {\n item.splitButtonSettings.beforeClose.call(_this, e);\n }\n };\n splitbutton.click = function (e) {\n if (item.splitButtonSettings.click) {\n item.splitButtonSettings.click.call(_this, e);\n }\n };\n splitbutton.close = function (e) {\n if (item.splitButtonSettings.close) {\n item.splitButtonSettings.close.call(_this, e);\n }\n splitbutton['wrapper'].classList.remove(RIBBON_POPUP_OPEN);\n };\n };\n RibbonSplitButton.prototype.setContent = function (item, control) {\n control['primaryBtnObj'].setProperties({ content: (item.activeSize === RibbonItemSize.Medium) ? item.splitButtonSettings.content : '' });\n control['secondaryBtnObj'].setProperties({ content: (item.activeSize === RibbonItemSize.Large) ? item.splitButtonSettings.content : '' });\n };\n RibbonSplitButton.prototype.getSplitButtonObj = function (controlId) {\n var splitButtonEle = getItemElement(this.parent, controlId);\n return getComponent(splitButtonEle, SplitButton);\n };\n /**\n * Adds a new item to the menu. By default, new item appends to\n * the list as the last item, but you can insert based on the text parameter.\n *\n * @param {string} controlId - Gets the control ID.\n * @param {ItemModel[]} Items - Gets the SplitButton items.\n * @param {string} text - Gets the text of the splitbutton item where the new item needs to be inserted.\n * @returns {void}\n */\n RibbonSplitButton.prototype.addItems = function (controlId, Items, text) {\n this.getSplitButtonObj(controlId).addItems(Items, text);\n };\n /**\n * Removes the items from the menu.\n *\n * @param {string} controlId - Gets the control ID.\n * @param {string[]} Items -\n * @param {string} isUniqueId -\n * @returns {void}\n */\n RibbonSplitButton.prototype.removeItems = function (controlId, Items, isUniqueId) {\n this.getSplitButtonObj(controlId).removeItems(Items, isUniqueId);\n };\n /**\n * To open/close SplitButton popup based on current state of the SplitButton.\n *\n * @param {string} controlId - Gets the control ID.\n * @returns {void}\n */\n RibbonSplitButton.prototype.toggle = function (controlId) {\n this.getSplitButtonObj(controlId).toggle();\n };\n /**\n * Updates the splitbutton.\n *\n * @param {RibbonSplitButtonSettingsModel} prop - Gets the splitbutton property.\n * @param {string} id - Gets the ID of dropdown.\n * @returns {void}\n */\n RibbonSplitButton.prototype.updateSplitButton = function (prop, id) {\n var itemProp = getItem(this.parent.tabs, id);\n if (!itemProp) {\n return;\n }\n merge(itemProp.item.splitButtonSettings, prop);\n var btnEle = getItemElement(this.parent, id, itemProp);\n if (!btnEle) {\n return;\n }\n var control = getComponent(btnEle, SplitButton);\n if (prop.cssClass) {\n prop.cssClass = (RIBBON_CONTROL + SPACE + ITEM_VERTICAL_CENTER + SPACE + prop.cssClass).trim();\n prop.cssClass = itemProp.item.activeSize === RibbonItemSize.Large ?\n (VERTICAL_DDB + SPACE + prop.cssClass).trim() : prop.cssClass;\n control.cssClass = prop.cssClass;\n }\n delete prop.open;\n delete prop.click;\n delete prop.close;\n delete prop.beforeClose;\n control.setProperties(prop);\n if (prop.content) {\n this.setContent(itemProp.item, control);\n }\n };\n /**\n * Updated SplitButton size\n *\n * @param {HTMLElement} element - Gets the splibutton element.\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @returns {void}\n * @hidden\n */\n RibbonSplitButton.prototype.updateSplitButtonSize = function (element, item) {\n var control = getComponent(element, SplitButton);\n var cssClass = control.cssClass.split(SPACE);\n if (item.activeSize === RibbonItemSize.Large) {\n cssClass.push(VERTICAL_DDB);\n }\n else {\n cssClass = cssClass.filter(function (value) { return value !== VERTICAL_DDB; });\n }\n control.cssClass = cssClass.join(SPACE);\n control.setProperties({ iconPosition: item.activeSize === RibbonItemSize.Large ? 'Top' : 'Left' });\n this.setContent(item, control);\n };\n return RibbonSplitButton;\n}());\nexport { RibbonSplitButton };\n","import { compile, getComponent, select } from '@syncfusion/ej2-base';\nimport { Tooltip } from '@syncfusion/ej2-popups';\nimport { DisplayMode, RibbonLayout } from './interface';\nimport * as constants from './constant';\nimport { DropDownButton } from '@syncfusion/ej2-splitbuttons';\n/**\n * Gets index value.\n *\n * @param {Array} arr - Gets the array to find index.\n * @param {boolean} condition - Defines whether index matches with the value.\n * @returns {number} - Gets the index value.\n * @hidden\n */\nexport function getIndex(arr, condition) {\n for (var i = 0; i < arr.length; i++) {\n if (condition(arr[parseInt(i.toString(), 10)], i)) {\n return i;\n }\n }\n return -1;\n}\n/**\n * Gets template content based on the template property value.\n *\n * @param {string | HTMLElement| Function} template - Template property value.\n * @returns {Function} - Return template function.\n * @hidden\n */\nexport function getTemplateFunction(template) {\n if (typeof template === 'string') {\n var content = '';\n try {\n var tempEle = select(template);\n if (tempEle) {\n //Return innerHTML incase of jsrenderer script else outerHTML\n content = tempEle.tagName === 'SCRIPT' ? tempEle.innerHTML : tempEle.outerHTML;\n }\n else {\n content = template;\n }\n }\n catch (e) {\n content = template;\n }\n return compile(content);\n }\n else {\n /* eslint-disable-next-line @typescript-eslint/no-explicit-any */\n return compile(template);\n }\n}\n/**\n * Gets the ribbon item\n *\n * @param {RibbonTabModel} tabs - Gets the ribbon tab model.\n * @param {string} id - Gets the ID of the tab.\n * @returns {itemProps} - Gets the ribbon item.\n * @hidden\n */\nexport function getItem(tabs, id) {\n for (var i = 0; i < tabs.length; i++) {\n var tab = tabs[parseInt(i.toString(), 10)];\n for (var j = 0; j < tab.groups.length; j++) {\n var group = tab.groups[parseInt(j.toString(), 10)];\n for (var k = 0; k < group.collections.length; k++) {\n var collection = group.collections[parseInt(k.toString(), 10)];\n for (var l = 0; l < collection.items.length; l++) {\n var item = collection.items[parseInt(l.toString(), 10)];\n if (item.id === id) {\n return {\n item: item, collection: collection, group: group,\n tabIndex: i, groupIndex: j, collectionIndex: k, itemIndex: l\n };\n }\n }\n }\n }\n }\n return null;\n}\n/**\n * Gets the ribbon collection.\n *\n * @param {RibbonTabModel} tabs - Gets the ribbon tab model.\n * @param {string} id - Gets the ID of the tab.\n * @returns {itemProps} - Gets the ribbon collection.\n * @hidden\n */\nexport function getCollection(tabs, id) {\n for (var i = 0; i < tabs.length; i++) {\n var tab = tabs[parseInt(i.toString(), 10)];\n for (var j = 0; j < tab.groups.length; j++) {\n var group = tab.groups[parseInt(j.toString(), 10)];\n for (var k = 0; k < group.collections.length; k++) {\n var collection = group.collections[parseInt(k.toString(), 10)];\n if (collection.id === id) {\n return {\n collection: collection, group: group,\n tabIndex: i, groupIndex: j, collectionIndex: k\n };\n }\n }\n }\n }\n return null;\n}\n/**\n * Gets the ribbon group.\n *\n * @param {RibbonTabModel} tabs - Gets the ribbon tab model.\n * @param {string} id - Gets the ID of the tab.\n * @returns {itemProps} - Gets the ribbon group.\n * @hidden\n */\nexport function getGroup(tabs, id) {\n for (var i = 0; i < tabs.length; i++) {\n var tab = tabs[parseInt(i.toString(), 10)];\n for (var j = 0; j < tab.groups.length; j++) {\n var group = tab.groups[parseInt(j.toString(), 10)];\n if (group.id === id) {\n return {\n group: group, tabIndex: i, groupIndex: j\n };\n }\n }\n }\n return null;\n}\n/**\n * @param {HTMLElement} element - Gets the element to be destroyed.\n * @param {string} moduleName - Gets the module name.\n * @returns {void}\n * @hidden\n */\nexport function destroyControl(element, moduleName) {\n var control = getComponent(element, moduleName);\n control.destroy();\n}\n/**\n * Updates common properties.\n *\n * @param {HTMLElement} element - Gets the element to be updated.\n * @param {string} moduleName - Gets the module name.\n * @param {commonProperties} commonProp - Gets the common properties to be updated.\n * @returns {void}\n * @hidden\n */\nexport function updateCommonProperty(element, moduleName, commonProp) {\n var control = getComponent(element, moduleName);\n control.setProperties(commonProp);\n}\n/**\n * Updates disabled control.\n *\n * @param {HTMLElement} element - Gets the element to be disabled.\n * @param {string} moduleName - Gets the module name.\n * @param {boolean} disable - Defines whether the control to be disabled or not.\n * @returns {void}\n * @hidden\n */\nexport function updateControlDisabled(element, moduleName, disable) {\n var control = getComponent(element, moduleName);\n control.setProperties(moduleName === 'combobox' ? { enabled: !disable } : { disabled: disable });\n}\n/**\n * Gets the ribbon item element.\n *\n * @param {Ribbon} parent - Gets the parent element.\n * @param {string} id - Gets the ID of the item.\n * @param {itemProps} itemProp - Gets the ribbon item.\n * @returns {HTMLElement} - Gets the ribbon item element.\n * @hidden\n */\nexport function getItemElement(parent, id, itemProp) {\n if (!itemProp) {\n itemProp = getItem(parent.tabs, id);\n if (!itemProp) {\n return null;\n }\n }\n var contentEle = parent.tabObj.items[itemProp.tabIndex].content;\n if (contentEle.innerHTML === '') {\n return null;\n }\n if (parent.activeLayout === RibbonLayout.Classic) {\n if (itemProp.item.displayOptions & DisplayMode.Classic) {\n contentEle = (itemProp.group.isCollapsed) ? parent.ribbonDropDownModule.getOverflowDropDownPopup(itemProp, contentEle)\n : contentEle;\n return contentEle.querySelector('#' + id);\n }\n else {\n return null;\n }\n }\n else {\n //Checks for Simplified and Auto options (Auto = classic + simplified + popup)\n var ele = (itemProp.item.displayOptions & DisplayMode.Simplified) ?\n contentEle.querySelector('#' + itemProp.item.id) : null;\n // element will be null for \"Popup\" and if the item is moved to overflow in \"Auto\" mode\n if (!ele) {\n var dropdown = itemProp.group.enableGroupOverflow ?\n getComponent(contentEle.querySelector('#' + itemProp.group.id + constants.GROUPOF_BUTTON_ID), DropDownButton)\n : parent.overflowDDB;\n ele = dropdown.target.querySelector('#' + itemProp.item.id);\n }\n return ele;\n }\n}\n/**\n * @param {RibbonTooltipModel} tooltip - Gets the property of tooltip.\n * @returns {boolean} - Gets whether the tooltip is present or not.\n * @hidden\n */\nexport function isTooltipPresent(tooltip) {\n return (tooltip.content || tooltip.iconCss || tooltip.title || tooltip.id || tooltip.cssClass) ? true : false;\n}\n/**\n * Sets content for tooltip.\n *\n * @param {TooltipEventArgs} args - Gets the argument of tooltip.\n * @param {Tooltip} tooltip - Gets the tooltip to set the content.\n * @param {ribbonTooltipData} tooltipData - Gets the tooltip data.\n * @returns {void}\n * @hidden\n */\nexport function setToolTipContent(args, tooltip, tooltipData) {\n var targetId = args.target.getAttribute('id');\n var dataObj = tooltipData.filter(function (e) { return e.id === targetId; })[0];\n var data = dataObj.data;\n var content = tooltip.createElement('div', {\n id: data.id ? constants.RIBBON_TOOLTIP_CONTAINER + '_' + data.id : constants.RIBBON_TOOLTIP_CONTAINER\n });\n tooltip.element.append(content);\n if (data.title) {\n var header = tooltip.createElement('div', {\n innerHTML: data.title,\n className: constants.RIBBON_TOOLTIP_TITLE\n });\n content.appendChild(header);\n }\n var textContainer = tooltip.createElement('div', {\n className: constants.RIBBON_TEXT_CONTAINER\n });\n content.appendChild(textContainer);\n if (data.iconCss) {\n var customCss = tooltip.createElement('div', {\n className: data.iconCss + ' ' + constants.RIBBON_TOOLTIP_ICON\n });\n textContainer.appendChild(customCss);\n }\n if (data.content) {\n var tooltipContent = tooltip.createElement('div', {\n innerHTML: data.content,\n className: constants.RIBBON_TOOLTIP_CONTENT\n });\n textContainer.appendChild(tooltipContent);\n }\n tooltip.setProperties({\n content: content,\n cssClass: data.cssClass ? data.cssClass + ' ' + constants.RIBBON_TOOLTIP : constants.RIBBON_TOOLTIP\n });\n}\n/**\n * Creates tooltip.\n *\n * @param {HTMLElement} element - Gets the element to add tooltip.\n * @param {Ribbon} ribbon - Gets the ribbon.\n * @returns {void}\n * @hidden\n */\nexport function createTooltip(element, ribbon) {\n var ribbonTooltip = new Tooltip({\n target: '.' + constants.RIBBON_TOOLTIP_TARGET,\n beforeRender: beforeTooltipRender.bind(this),\n windowCollision: true\n });\n ribbonTooltip.appendTo(element);\n /**\n * @param {TooltipEventArgs} args - Gets the tooltip argument.\n * @returns {void}\n * @hidden\n */\n function beforeTooltipRender(args) {\n setToolTipContent(args, ribbonTooltip, ribbon.tooltipData);\n }\n}\n/**\n * Destroys tooltip\n *\n * @param {HTMLElement} element - Gets the element in which the tooltip needs to be destroyed.\n * @returns {void}\n * @hidden\n */\nexport function destroyTooltip(element) {\n var control = getComponent(element, Tooltip);\n control.destroy();\n}\n/**\n * Updates tooltip\n *\n * @param {HTMLElement} element - Gets the element in which the tooltip needs to be Updated.\n * @param {commonProperties} prop - Gets the property to be updated.\n * @returns {void}\n * @hidden\n */\nexport function updateTooltipProp(element, prop) {\n var control = getComponent(element, Tooltip);\n control.setProperties(prop);\n}\n","import { EventHandler, getComponent, remove } from '@syncfusion/ej2-base';\nimport * as constants from '../base/constant';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { RibbonGroupButtonSelection, RibbonItemSize } from '../base/interface';\nimport { DropDownButton } from '@syncfusion/ej2-splitbuttons';\nimport { createTooltip, isTooltipPresent } from '../base/utils';\nimport { Tooltip } from '@syncfusion/ej2-popups';\n/**\n * Defines the items of Ribbon.\n */\nvar RibbonGroupButton = /** @class */ (function () {\n function RibbonGroupButton(parent) {\n this.parent = parent;\n this.isSelected = false;\n }\n RibbonGroupButton.prototype.getModuleName = function () {\n return 'ribbonGroupButton';\n };\n RibbonGroupButton.prototype.destroy = function () {\n this.parent = null;\n };\n /**\n * Creates Group Button\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemElement - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonGroupButton.prototype.createGroupButton = function (item, itemElement) {\n var _this = this;\n var groupBtnSettings = item.groupButtonSettings;\n this.count = 0;\n var btnContainerEle = this.parent.createElement('div', {\n id: item.id + constants.RIBBON_GROUP_BUTTON_ID,\n className: 'e-btn-group'\n });\n itemElement.appendChild(btnContainerEle);\n for (var i = 0; i < groupBtnSettings.items.length; i++) {\n if ((groupBtnSettings.items[parseInt(i.toString(), 10)].iconCss)) {\n var groupButtonEle = this.parent.createElement('button', {\n id: item.id + constants.RIBBON_GROUP_BUTTON_ID + i,\n className: constants.RIBBON_GROUP_BUTTON\n });\n btnContainerEle.appendChild(groupButtonEle);\n new Button({\n iconCss: groupBtnSettings.items[parseInt(i.toString(), 10)].iconCss,\n disabled: item.disabled,\n enableRtl: this.parent.enableRtl,\n content: item.activeSize === RibbonItemSize.Small ? '' : groupBtnSettings.items[parseInt(i.toString(), 10)].content,\n iconPosition: item.activeSize === RibbonItemSize.Large ? 'Top' : 'Left'\n }, groupButtonEle);\n var buttonEle = itemElement.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + i);\n if (groupBtnSettings.selection === RibbonGroupButtonSelection.Single) {\n btnContainerEle.classList.add(constants.RIBBON_SINGLE_BUTTON_SELECTION);\n }\n else {\n btnContainerEle.classList.add(constants.RIBBON_MULTIPLE_BUTTON_SELECTION);\n }\n if (groupBtnSettings.items[parseInt(i.toString(), 10)].selected) {\n if (groupBtnSettings.selection === RibbonGroupButtonSelection.Multiple) {\n buttonEle.classList.add('e-active');\n }\n else {\n if (this.count < 1) {\n buttonEle.classList.add('e-active');\n this.count++;\n }\n }\n }\n if (groupBtnSettings.items[parseInt(i.toString(), 10)].ribbonTooltipSettings &&\n isTooltipPresent(groupBtnSettings.items[parseInt(i.toString(), 10)].ribbonTooltipSettings)) {\n groupButtonEle.classList.add(constants.RIBBON_TOOLTIP_TARGET);\n this.parent.tooltipData.push({\n id: groupButtonEle.id, data: groupBtnSettings.items[parseInt(i.toString(), 10)].ribbonTooltipSettings\n });\n }\n EventHandler.add(buttonEle, 'click', this.groupButtonClicked.bind(this, i, item, groupBtnSettings), this);\n }\n }\n if (this.parent.activeLayout === 'Simplified') {\n var dropdownIcon = void 0;\n var activeEleCount = 0;\n var count = 0;\n var buttonEle = this.parent.createElement('button', {\n id: item.id\n });\n itemElement.appendChild(buttonEle);\n for (var i = 0; i < groupBtnSettings.items.length; i++) {\n if (item.groupButtonSettings.items[parseInt(i.toString(), 10)].selected &&\n !this.isSelected && groupBtnSettings.selection === RibbonGroupButtonSelection.Single) {\n dropdownIcon = item.groupButtonSettings.items[parseInt(i.toString(), 10)].iconCss;\n this.isSelected = true;\n }\n else if (item.groupButtonSettings.items[parseInt(i.toString(), 10)].selected &&\n groupBtnSettings.selection === RibbonGroupButtonSelection.Multiple) {\n activeEleCount++;\n if (activeEleCount === 1) {\n dropdownIcon = item.groupButtonSettings.items[parseInt(i.toString(), 10)].iconCss;\n }\n else {\n dropdownIcon = null;\n }\n }\n }\n while (count < item.groupButtonSettings.items.length && !this.isSelected && !dropdownIcon) {\n if (item.groupButtonSettings.items[parseInt(count.toString(), 10)].iconCss) {\n dropdownIcon = item.groupButtonSettings.items[parseInt(count.toString(), 10)].iconCss;\n this.isSelected = true;\n }\n count++;\n }\n new DropDownButton({\n iconCss: dropdownIcon,\n target: btnContainerEle,\n enableRtl: this.parent.enableRtl,\n cssClass: 'e-ribbon-dropdown-group-button',\n disabled: item.disabled\n }, buttonEle);\n buttonEle.onclick = buttonEle.onkeydown = function () {\n if (itemElement.querySelector('#' + item.id).classList.contains('e-active')) {\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + 0).focus();\n _this.grpBtnIndex = 0;\n }\n };\n btnContainerEle.onkeydown = function (e) {\n if (_this.parent.activeLayout === 'Simplified') {\n _this.handleGroupButtonNavigation(e, item);\n }\n };\n createTooltip(btnContainerEle, this.parent);\n this.isSelected = false;\n }\n };\n RibbonGroupButton.prototype.groupButtonClicked = function (itemIndex, item, grpBtnSettings) {\n var previousItems = [], selectingItems = [], selectedItems = [];\n var groupButtonEle;\n var dropdown;\n for (var j = 0; j < grpBtnSettings.items.length; j++) {\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + j)) {\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + j).classList.contains('e-active')) {\n previousItems.push(grpBtnSettings.items[parseInt(j.toString(), 10)]);\n }\n }\n }\n if (!(document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + itemIndex).classList.contains('e-active'))) {\n selectingItems.push(grpBtnSettings.items[parseInt(itemIndex.toString(), 10)]);\n }\n var eventArgs = {\n cancel: false, previousItems: previousItems, selectingItems: selectingItems\n };\n if (grpBtnSettings.items[parseInt(itemIndex.toString(), 10)].beforeClick) {\n grpBtnSettings.items[parseInt(itemIndex.toString(), 10)].beforeClick.call(this, eventArgs);\n }\n if (eventArgs.cancel) {\n return;\n }\n else {\n if (grpBtnSettings.selection === RibbonGroupButtonSelection.Single) {\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID).classList.contains(constants.RIBBON_MULTIPLE_BUTTON_SELECTION)) {\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID).classList.remove(constants.RIBBON_MULTIPLE_BUTTON_SELECTION);\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID).classList.add(constants.RIBBON_SINGLE_BUTTON_SELECTION);\n }\n for (var j = 0; j < grpBtnSettings.items.length; j++) {\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + j) && document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + j).classList.contains('e-active')) {\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + j).classList.remove('e-active');\n }\n }\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + itemIndex).classList.toggle('e-active');\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + itemIndex).classList.contains('e-active') && this.parent.activeLayout === 'Simplified') {\n this.grpBtnIndex = itemIndex;\n groupButtonEle = document.querySelector('#' + item.id);\n dropdown = getComponent(groupButtonEle, DropDownButton);\n dropdown.setProperties({\n iconCss: grpBtnSettings.items[parseInt(itemIndex.toString(), 10)].iconCss\n });\n }\n }\n else {\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID).classList.contains(constants.RIBBON_SINGLE_BUTTON_SELECTION)) {\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID).classList.remove(constants.RIBBON_SINGLE_BUTTON_SELECTION);\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID).classList.add(constants.RIBBON_MULTIPLE_BUTTON_SELECTION);\n }\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + itemIndex).classList.toggle('e-active');\n var activeEleCount = 0;\n for (var n = 0; n < grpBtnSettings.items.length; n++) {\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + n) && document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + n).classList.contains('e-active') && this.parent.activeLayout === 'Simplified' && n !== itemIndex) {\n this.isSelected = true;\n activeEleCount++;\n }\n }\n if (this.parent.activeLayout === 'Simplified') {\n var dropdownIcon = null;\n var itemsCount = 0;\n groupButtonEle = document.querySelector('#' + item.id);\n dropdown = getComponent(groupButtonEle, DropDownButton);\n if (!this.isSelected) {\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + itemIndex).classList.contains('e-active')) {\n dropdownIcon = grpBtnSettings.items[parseInt(itemIndex.toString(), 10)].iconCss;\n }\n }\n else {\n if (activeEleCount === 1 && !(document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + itemIndex).classList.contains('e-active'))) {\n for (var n = 0; n < grpBtnSettings.items.length; n++) {\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + n) && document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + n).classList.contains('e-active')) {\n dropdownIcon = grpBtnSettings.items[parseInt(n.toString(), 10)].iconCss;\n }\n }\n }\n }\n while (itemsCount < grpBtnSettings.items.length && !dropdownIcon) {\n if (grpBtnSettings.items[parseInt(itemsCount.toString(), 10)].iconCss) {\n dropdownIcon = grpBtnSettings.items[parseInt(itemsCount.toString(), 10)].iconCss;\n }\n itemsCount++;\n }\n dropdown.setProperties({ iconCss: dropdownIcon });\n this.grpBtnIndex = itemIndex;\n }\n this.isSelected = false;\n }\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + itemIndex).classList.contains('e-active')) {\n selectedItems.push(grpBtnSettings.items[parseInt(itemIndex.toString(), 10)]);\n }\n var eventArgs_1 = { previousItems: previousItems, selectedItems: selectedItems };\n if (grpBtnSettings.items[parseInt(itemIndex.toString(), 10)].click) {\n grpBtnSettings.items[parseInt(itemIndex.toString(), 10)].click.call(this, eventArgs_1);\n }\n }\n };\n /**\n * updates group button in mode switching\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemElement - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonGroupButton.prototype.switchGroupButton = function (item, itemElement) {\n var _this = this;\n var groupBtnSettings = item.groupButtonSettings;\n var dropdownIcon = null;\n var activeEleCount = 0;\n var itemsCount = 0;\n if (this.parent.activeLayout === 'Simplified') {\n var containerEle = itemElement.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID);\n var buttonEle = this.parent.createElement('button', {\n id: item.id\n });\n itemElement.appendChild(buttonEle);\n for (var i = 0; i < groupBtnSettings.items.length; i++) {\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + i)) {\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + i).classList.contains('e-active') && groupBtnSettings.selection === RibbonGroupButtonSelection.Single) {\n dropdownIcon = groupBtnSettings.items[parseInt(i.toString(), 10)].iconCss;\n }\n else if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + i).classList.contains('e-active') && groupBtnSettings.selection === RibbonGroupButtonSelection.Multiple) {\n activeEleCount++;\n if (activeEleCount === 1) {\n dropdownIcon = groupBtnSettings.items[parseInt(i.toString(), 10)].iconCss;\n }\n else if (activeEleCount > 1) {\n dropdownIcon = null;\n }\n }\n }\n }\n while (itemsCount < groupBtnSettings.items.length && !dropdownIcon) {\n if (groupBtnSettings.items[parseInt(itemsCount.toString(), 10)].iconCss) {\n dropdownIcon = groupBtnSettings.items[parseInt(itemsCount.toString(), 10)].iconCss;\n }\n itemsCount++;\n }\n new DropDownButton({\n iconCss: dropdownIcon,\n target: containerEle,\n enableRtl: this.parent.enableRtl,\n cssClass: 'e-ribbon-dropdown-group-button',\n disabled: item.disabled\n }, buttonEle);\n buttonEle.onclick = buttonEle.onkeydown = function () {\n if (itemElement.querySelector('#' + item.id).classList.contains('e-active')) {\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + 0).focus();\n _this.grpBtnIndex = 0;\n }\n };\n containerEle.onkeydown = function (e) {\n if (_this.parent.activeLayout === 'Simplified') {\n _this.handleGroupButtonNavigation(e, item);\n }\n };\n createTooltip(containerEle, this.parent);\n }\n else {\n var groupButtonEle = itemElement.querySelector('#' + item.id);\n var dropdown = getComponent(groupButtonEle, DropDownButton);\n itemElement.appendChild(dropdown.target);\n if (groupButtonEle) {\n dropdown.destroy();\n remove(groupButtonEle);\n }\n }\n };\n RibbonGroupButton.prototype.handleGroupButtonNavigation = function (e, item) {\n var groupButtonEle = document.querySelector('#' + item.id);\n var dropdown = getComponent(groupButtonEle, DropDownButton);\n var targetEle = dropdown.target;\n var isOverflowPopup = false;\n if (this.parent.activeLayout === 'Simplified' && targetEle.closest('.e-ribbon-dropdown-group-button').classList.contains(constants.RIBBON_GROUP_BUTTON_OVERFLOW_POPUP)) {\n isOverflowPopup = true;\n }\n if (e.key === 'Tab') {\n e.preventDefault();\n }\n var groupBtnSettings = item.groupButtonSettings;\n if ((e.key === 'ArrowRight' && !isOverflowPopup) || (e.key === 'ArrowDown' && isOverflowPopup)) {\n if (!this.parent.enableRtl || (e.key === 'ArrowDown' && isOverflowPopup)) {\n this.grpBtnIndex++;\n if (this.grpBtnIndex < groupBtnSettings.items.length) {\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + (this.grpBtnIndex)).focus();\n }\n else {\n this.grpBtnIndex = 0;\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + (this.grpBtnIndex)).focus();\n }\n }\n else {\n if (this.grpBtnIndex === 0) {\n this.grpBtnIndex = groupBtnSettings.items.length - 1;\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + (this.grpBtnIndex)).focus();\n }\n else {\n this.grpBtnIndex--;\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + (this.grpBtnIndex)).focus();\n }\n }\n }\n else if ((e.key === 'ArrowLeft' && !isOverflowPopup) || (e.key === 'ArrowUp' && isOverflowPopup)) {\n if (!this.parent.enableRtl || (e.key === 'ArrowUp' && isOverflowPopup)) {\n if (this.grpBtnIndex === 0) {\n this.grpBtnIndex = groupBtnSettings.items.length - 1;\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + (this.grpBtnIndex)).focus();\n }\n else {\n this.grpBtnIndex--;\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + (this.grpBtnIndex)).focus();\n }\n }\n else {\n this.grpBtnIndex++;\n if (this.grpBtnIndex < groupBtnSettings.items.length) {\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + (this.grpBtnIndex)).focus();\n }\n else {\n this.grpBtnIndex = 0;\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + (this.grpBtnIndex)).focus();\n }\n }\n }\n };\n /**\n * Adds the additional event handlers as the item moved into overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonGroupButton.prototype.addOverFlowEvents = function (item, itemEle) {\n var _this = this;\n var groupButtonEle = itemEle.querySelector('#' + item.id);\n var dropdown = getComponent(groupButtonEle, DropDownButton);\n dropdown.setProperties({ cssClass: dropdown.cssClass + constants.SPACE + constants.RIBBON_GROUP_BUTTON_OVERFLOW_POPUP });\n var targetEle = dropdown.target;\n targetEle.onclick = function () {\n if (_this.parent.activeLayout === 'Simplified' && targetEle.closest('.e-ribbon-dropdown-group-button').classList.contains(constants.RIBBON_GROUP_BUTTON_OVERFLOW_POPUP)) {\n dropdown.element.focus();\n dropdown.toggle();\n }\n };\n };\n /**\n * Removes the additional event handlers as the item moved into overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonGroupButton.prototype.removeOverFlowEvents = function (item, itemEle) {\n var groupButtonEle = itemEle.querySelector('#' + item.id);\n if (groupButtonEle) {\n var dropdown = getComponent(groupButtonEle, DropDownButton);\n var cssClass = dropdown.cssClass.split(constants.SPACE);\n cssClass = cssClass.filter(function (value) { return value !== constants.RIBBON_GROUP_BUTTON_OVERFLOW_POPUP; });\n dropdown.setProperties({ cssClass: cssClass.join(constants.SPACE) });\n }\n };\n /**\n * Removes DropDown.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item.\n * @returns {void}\n * @hidden\n */\n RibbonGroupButton.prototype.destroyDropDown = function (item) {\n var groupButtonEle = document.querySelector('#' + item.id);\n if (groupButtonEle) {\n var dropdown = getComponent(groupButtonEle, DropDownButton);\n var tooltip = getComponent(dropdown.target, Tooltip);\n tooltip.destroy();\n dropdown.destroy();\n remove(groupButtonEle);\n }\n };\n /**\n * Updates the group button size.\n *\n * @param {HTMLElement} itemElement - Gets the group button container element.\n * @param {RibbonItemModel} item - Gets the ribbon item.\n * @returns {void}\n * @hidden\n */\n RibbonGroupButton.prototype.updateGroupButtonSize = function (itemElement, item) {\n var groupBtnSettings = item.groupButtonSettings;\n var buttonEle;\n for (var i = 0; i < groupBtnSettings.items.length; i++) {\n if (this.parent.activeLayout === 'Classic') {\n buttonEle = itemElement.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + i);\n }\n else {\n buttonEle = document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + i);\n }\n if (buttonEle) {\n var buttonObj = getComponent(buttonEle, Button);\n buttonObj.setProperties({\n iconPosition: item.activeSize === RibbonItemSize.Large ? 'Top' : 'Left',\n content: item.activeSize === RibbonItemSize.Small ? '' : groupBtnSettings.items[parseInt(i.toString(), 10)].content\n });\n }\n }\n };\n return RibbonGroupButton;\n}());\nexport { RibbonGroupButton };\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 { addClass, append, Event, Collection, Complex, Component, EventHandler, formatUnit, getInstance, getComponent, getUniqueID, closest, KeyboardEvents } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, isUndefined, NotifyPropertyChanges, Property, remove, removeClass } from '@syncfusion/ej2-base';\nimport { Tab, TabAnimationSettings, HScroll, Toolbar } from '@syncfusion/ej2-navigations';\nimport { RibbonTab, FileMenuSettings, BackStageMenu } from '../models/index';\nimport { DisplayMode, RibbonLayout } from './interface';\nimport { ItemOrientation, RibbonItemSize, RibbonItemType } from './interface';\nimport { RibbonButton, RibbonComboBox, RibbonCheckBox, RibbonDropDown, RibbonSplitButton, RibbonGroupButton } from '../items/index';\nimport { destroyControl, getCollection, getGroup, getIndex, getItem, getItemElement, updateCommonProperty, updateControlDisabled, isTooltipPresent, getTemplateFunction, createTooltip, destroyTooltip, updateTooltipProp } from './utils';\nimport * as constants from './constant';\nimport { DropDownButton, SplitButton } from '@syncfusion/ej2-splitbuttons';\nimport { CheckBox } from '@syncfusion/ej2-buttons';\n/**\n * The Ribbon Component is a structured layout to manage tools with tabs and groups.\n */\nvar Ribbon = /** @class */ (function (_super) {\n __extends(Ribbon, _super);\n /**\n * Constructor for creating the widget.\n *\n * @param {RibbonModel} options - Specifies the ribbon model\n * @param {string|HTMLDivElement} element - Specifies the target element\n */\n function Ribbon(options, element) {\n var _this = this;\n Ribbon_1.Inject(RibbonButton, RibbonCheckBox, RibbonDropDown, RibbonSplitButton, RibbonComboBox, RibbonGroupButton);\n _this = _super.call(this, options, element) || this;\n return _this;\n }\n Ribbon_1 = Ribbon;\n /**\n * Initialize the control rendering.\n *\n * @returns {void}\n * @private\n */\n Ribbon.prototype.render = function () {\n this.initialize();\n };\n Ribbon.prototype.preRender = function () {\n this.idIndex = 0;\n this.tooltipData = [];\n this.isAddRemove = false;\n this.keyConfigs = {\n leftarrow: 'leftarrow',\n rightarrow: 'rightarrow',\n tab: 'tab',\n shiftTab: 'shift+tab'\n };\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} - Persist data\n */\n Ribbon.prototype.getPersistData = function () {\n return this.addOnPersist(['activeLayout']);\n };\n /**\n * Get component name.\n *\n * @returns {string} - Module name\n * @private\n */\n Ribbon.prototype.getModuleName = function () {\n return 'ribbon';\n };\n /**\n * To provide the array of modules needed for component rendering\n *\n * @returns {ModuleDeclaration[]} - returns module declaration.\n * @hidden\n */\n Ribbon.prototype.requiredModules = function () {\n var modules = [];\n modules.push({ member: 'ribbonButton', args: [this] }, { member: 'ribbonDropDown', args: [this] }, { member: 'ribbonSplitButton', args: [this] }, { member: 'ribbonCheckBox', args: [this] }, { member: 'ribbonColorPicker', args: [this] }, { member: 'ribbonComboBox', args: [this] }, { member: 'ribbonGroupButton', args: [this] }, { member: 'ribbonFileMenu', args: [this] }, { member: 'ribbonBackstage', args: [this] });\n return modules;\n };\n Ribbon.prototype.initialize = function () {\n this.element.id = this.element.id || getUniqueID('e-' + this.getModuleName());\n addClass([this.element], ['e-rbn'].concat((this.cssClass ? this.cssClass.split(constants.SPACE) : [])));\n if (this.enableRtl) {\n this.element.classList.add(constants.RTL_CSS);\n }\n this.element.style.width = formatUnit(this.width);\n this.renderTabs();\n if (this.ribbonFileMenuModule) {\n this.ribbonFileMenuModule.createFileMenu(this.fileMenu);\n }\n if (this.ribbonBackstageModule) {\n this.ribbonBackstageModule.createBackStage(this.backStageMenu);\n }\n this.createHelpPaneTemplate();\n var toolbar = this.tabObj['tbObj'];\n toolbar.refreshOverflow();\n createTooltip(this.element, this);\n this.wireEvents();\n this.wireKeyboardEvent();\n this.currentControlIndex = 0;\n };\n Ribbon.prototype.wireEvents = function () {\n EventHandler.add(window, 'resize', this.resizeHandler, this);\n };\n Ribbon.prototype.wireKeyboardEvent = function () {\n this.keyboardModuleRibbon = new KeyboardEvents(this.element, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n };\n Ribbon.prototype.keyActionHandler = function (e) {\n if (((e.key === 'Tab') && (!(e.target.classList.contains('e-tab-wrap')) && !(e.target.classList.contains('e-combobox'))))) {\n e.preventDefault();\n }\n var activeContent = this.tabObj.element.querySelector('#' + this.tabs[this.selectedTab].id + constants.CONTENT_ID);\n var ribbonControls = activeContent.querySelectorAll('.e-control');\n var comboBoxElements = activeContent.querySelectorAll('.e-combobox');\n var comboBoxEle;\n if (comboBoxElements) {\n for (var i = 0; i < comboBoxElements.length; i++) {\n if (comboBoxElements[parseInt(i.toString(), 10)].closest('.e-input-focus')) {\n comboBoxEle = comboBoxElements[parseInt(i.toString(), 10)];\n }\n }\n }\n if (comboBoxEle) {\n for (var i = 0; i < ribbonControls.length; i++) {\n if (ribbonControls[parseInt(i.toString(), 10)].classList.contains('e-combobox')) {\n if (ribbonControls[parseInt(i.toString(), 10)].closest('.e-input-focus')) {\n this.currentControlIndex = i;\n }\n }\n }\n }\n if (this.currentControlIndex === 0) {\n var item = ribbonControls[this.currentControlIndex].closest('.e-ribbon-item');\n while (item && item.classList.contains('e-disabled')) {\n this.currentControlIndex++;\n item = ribbonControls[this.currentControlIndex].closest('.e-ribbon-item');\n }\n }\n if (e.target.classList.contains('e-control') || e.target.classList.contains('e-ribbon-launcher-icon') ||\n e.target.classList.contains('e-ribbon-collapse-btn') || e.target.classList.contains('e-ribbon-last-item') ||\n e.target.classList.contains('e-ribbon-first-item') || e.target.classList.contains('e-ribbon-group-of-btn') ||\n e.target.classList.contains('e-ribbon-overall-of-btn')) {\n switch (e.action) {\n case 'rightarrow':\n this.handleNavigation(e, !this.enableRtl, ribbonControls);\n break;\n case 'leftarrow':\n this.handleNavigation(e, this.enableRtl, ribbonControls);\n break;\n case 'tab':\n if (e.target.classList.contains('e-combobox')) {\n if (this.currentControlIndex < ribbonControls.length - 1) {\n this.currentControlIndex++;\n }\n }\n break;\n case 'shiftTab':\n if (e.target.classList.contains('e-combobox')) {\n if (this.currentControlIndex > 0) {\n this.currentControlIndex--;\n }\n }\n else {\n this.tabObj.element.querySelector('.e-toolbar-item.e-active').querySelector('.e-tab-wrap').focus();\n this.currentControlIndex = 0;\n }\n }\n }\n };\n Ribbon.prototype.handleNavigation = function (e, enableRtl, ribbonControls) {\n var groupContainer;\n var prevGroupId;\n if (enableRtl) {\n if (this.currentControlIndex < ribbonControls.length - 1 && ribbonControls[this.currentControlIndex + 1].classList.contains('e-colorpicker')) {\n this.currentControlIndex++;\n }\n }\n else {\n if (this.currentControlIndex > 0 && ribbonControls[this.currentControlIndex - 1].classList.contains('e-colorpicker')) {\n this.currentControlIndex--;\n }\n }\n if ((!enableRtl && (this.currentControlIndex > 0)) || (enableRtl && (this.currentControlIndex < ribbonControls.length - 1))) {\n if (!e.target.classList.contains('e-combobox') && e.target.classList.contains('e-control') && !e.target.classList.contains('e-ribbon-last-item')) {\n if (enableRtl) {\n this.currentControlIndex++;\n }\n else {\n var prevGroupContainer = ribbonControls[parseInt(this.currentControlIndex.toString(), 10)].closest('.' + constants.RIBBON_GROUP_CONTAINER);\n if (prevGroupContainer) {\n prevGroupId = prevGroupContainer.getAttribute('id');\n }\n this.currentControlIndex--;\n }\n var item = ribbonControls[this.currentControlIndex].closest('.e-ribbon-item');\n while (item && item.classList.contains('e-disabled')) {\n if (((enableRtl && this.currentControlIndex === ribbonControls.length - 1) ||\n (!enableRtl && this.currentControlIndex === 0))) {\n if (ribbonControls[this.currentControlIndex].closest('.e-ribbon-item').classList.contains('e-disabled')) {\n this.tabObj.element.querySelector('.e-ribbon-collapse-btn').focus();\n break;\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n enableRtl ? this.currentControlIndex++ : this.currentControlIndex--;\n item = ribbonControls[this.currentControlIndex].closest('.e-ribbon-item');\n }\n ribbonControls[parseInt(this.currentControlIndex.toString(), 10)].focus();\n if (this.activeLayout === 'Classic') {\n groupContainer = ribbonControls[parseInt(this.currentControlIndex.toString(), 10)].closest('.' + constants.RIBBON_GROUP_CONTAINER);\n if (enableRtl) {\n var launcherIconEle = void 0;\n if (groupContainer) {\n launcherIconEle = groupContainer.querySelector('.e-ribbon-launcher-icon');\n }\n if (launcherIconEle) {\n var items = groupContainer.querySelectorAll('.e-ribbon-item');\n items[items.length - 1].querySelector('.e-control').classList.add('e-ribbon-last-item');\n }\n }\n else {\n if (groupContainer) {\n var groupContainerId = groupContainer.getAttribute('id');\n if (prevGroupId !== groupContainerId) {\n var launcherIconEle = groupContainer.querySelector('.e-ribbon-launcher-icon');\n if (launcherIconEle) {\n ribbonControls[parseInt((this.currentControlIndex + 1).toString(), 10)].classList.add('e-ribbon-first-item');\n }\n }\n }\n }\n }\n else {\n if (ribbonControls[parseInt((this.currentControlIndex).toString(), 10)].classList.contains('e-ribbon-first-item')) {\n ribbonControls[parseInt((this.currentControlIndex).toString(), 10)].classList.remove('e-ribbon-first-item');\n }\n else if (ribbonControls[parseInt((this.currentControlIndex).toString(), 10)].classList.contains('e-ribbon-last-item')) {\n ribbonControls[parseInt((this.currentControlIndex).toString(), 10)].classList.remove('e-ribbon-last-item');\n }\n }\n }\n }\n else {\n if (this.activeLayout === 'Classic') {\n this.tabObj.element.querySelector('.e-ribbon-collapse-btn').focus();\n }\n if (this.activeLayout === 'Simplified') {\n var overflowButton = this.tabObj.element.querySelector('.e-ribbon-overall-of-btn');\n if (enableRtl && (overflowButton && !overflowButton.classList.contains('e-ribbon-hide'))) {\n overflowButton.focus();\n }\n else {\n this.tabObj.element.querySelector('.e-ribbon-collapse-btn').focus();\n }\n }\n }\n if (e.target.classList.contains('e-ribbon-last-item')) {\n if (enableRtl) {\n groupContainer = ribbonControls[parseInt(this.currentControlIndex.toString(), 10)].closest('.' + constants.RIBBON_GROUP_CONTAINER);\n groupContainer.querySelector('.e-ribbon-launcher-icon').focus();\n }\n else {\n this.currentControlIndex--;\n ribbonControls[parseInt(this.currentControlIndex.toString(), 10)].focus();\n }\n }\n if (!enableRtl && e.target.classList.contains('e-ribbon-first-item')) {\n groupContainer = ribbonControls[parseInt((this.currentControlIndex - 1).toString(), 10)].closest('.' + constants.RIBBON_GROUP_CONTAINER);\n var launcherIconEle = groupContainer.querySelector('.e-ribbon-launcher-icon');\n if (launcherIconEle) {\n groupContainer.querySelector('.e-ribbon-launcher-icon').focus();\n }\n }\n if (e.target.classList.contains('e-ribbon-launcher-icon')) {\n if (enableRtl) {\n this.currentControlIndex++;\n ribbonControls[parseInt(this.currentControlIndex.toString(), 10)].focus();\n if (ribbonControls[parseInt((this.currentControlIndex - 1).toString(), 10)].classList.contains('e-ribbon-last-item')) {\n ribbonControls[parseInt((this.currentControlIndex - 1).toString(), 10)].classList.remove('e-ribbon-last-item');\n }\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n this.currentControlIndex;\n ribbonControls[parseInt(this.currentControlIndex.toString(), 10)].focus();\n }\n }\n if (e.target.classList.contains('e-ribbon-collapse-btn')) {\n if (enableRtl) {\n this.currentControlIndex = 0;\n var ribbonItem = ribbonControls[this.currentControlIndex].closest('.e-ribbon-item');\n while (ribbonItem && ribbonItem.classList.contains('e-disabled')) {\n this.currentControlIndex++;\n ribbonItem = ribbonControls[this.currentControlIndex].closest('.e-ribbon-item');\n }\n ribbonControls[parseInt(this.currentControlIndex.toString(), 10)].focus();\n }\n else {\n var overflowButton = this.tabObj.element.querySelector('.e-ribbon-overall-of-btn');\n if ((overflowButton && !overflowButton.classList.contains('e-ribbon-hide'))) {\n overflowButton.focus();\n }\n else {\n this.currentControlIndex = ribbonControls.length - 1;\n var ribbonItem = ribbonControls[this.currentControlIndex].closest('.e-ribbon-item');\n while (ribbonItem && ribbonItem.classList.contains('e-disabled')) {\n this.currentControlIndex--;\n ribbonItem = ribbonControls[this.currentControlIndex].closest('.e-ribbon-item');\n }\n ribbonControls[parseInt(this.currentControlIndex.toString(), 10)].focus();\n }\n }\n }\n if (this.activeLayout === 'Simplified' && e.target.classList.contains('e-ribbon-overall-of-btn')) {\n if (enableRtl) {\n this.tabObj.element.querySelector('.e-ribbon-collapse-btn').focus();\n }\n else {\n this.currentControlIndex = ribbonControls.length - 1;\n ribbonControls[parseInt(this.currentControlIndex.toString(), 10)].focus();\n }\n }\n };\n Ribbon.prototype.resizeHandler = function () {\n var activeContent = this.tabObj.element.querySelector('#' + this.tabs[this.selectedTab].id + constants.CONTENT_ID);\n this.checkOverflow(this.selectedTab, activeContent);\n if (this.scrollModule) {\n var scrollEle = this.tabObj.element.querySelector('.' + constants.HORIZONTAL_SCROLLBAR);\n this.scrollModule.scrollStep = scrollEle.offsetWidth;\n }\n };\n Ribbon.prototype.renderTabs = function () {\n this.tabsInternal = this.tabs.slice();\n this.tabsInternal = this.checkID(this.tabsInternal, 'tab', this.element.id);\n this.setProperties({ tabs: this.tabsInternal }, true);\n var tabEle = this.createElement('div', {\n id: this.element.id + constants.TAB_ID\n });\n this.element.appendChild(tabEle);\n this.validateItemSize();\n var tabItems = this.createTabItems(this.tabs);\n this.tabObj = new Tab({\n cssClass: constants.RIBBON_TAB,\n selectedItem: this.selectedTab,\n overflowMode: 'Popup',\n width: this.width,\n items: tabItems,\n enableRtl: this.enableRtl,\n created: this.tabCreated.bind(this),\n selected: this.ribbonTabSelected.bind(this),\n selecting: this.ribbonTabSelecting.bind(this)\n });\n this.tabObj.appendTo(tabEle);\n //Set the width value as \"0px\" with unit for proper calculation.\n this.element.style.setProperty(constants.RIBBON_FILE_MENU_WIDTH, '0px');\n this.element.style.setProperty(constants.RIBBON_HELP_PANE_TEMPLATE_WIDTH, '0px');\n var toolbarEle = tabEle.querySelector('.e-toolbar');\n var toolbar = getComponent(toolbarEle, Toolbar);\n toolbar.setProperties({ width: 'calc(100% - var(--fileMenuWidth) - var(--helpTemplateWidth))' });\n this.element.classList[this.isMinimized ? 'add' : 'remove'](constants.RIBBON_MINIMIZE);\n };\n Ribbon.prototype.minimize = function (val) {\n var _this = this;\n if (val === this.isMinimized) {\n return;\n }\n var eventArgs = { cancel: false };\n this.trigger(val ? 'ribbonCollapsing' : 'ribbonExpanding', eventArgs, function (args) {\n if (args.cancel) {\n return;\n }\n _this.setProperties({ isMinimized: val }, true);\n _this.element.classList.toggle(constants.RIBBON_MINIMIZE, _this.isMinimized);\n //to overwrite inline styles from hscroll\n _this.tabObj.element.querySelector('.e-content').style.display = val ? 'none' : 'block';\n if (!val) {\n _this.refreshLayout();\n }\n });\n };\n Ribbon.prototype.toggleLayout = function () {\n this.setProperties({ activeLayout: this.activeLayout === 'Simplified' ? 'Classic' : 'Simplified' }, true);\n this.switchLayout();\n };\n Ribbon.prototype.tabCreated = function () {\n if (!this.hideLayoutSwitcher) {\n this.addExpandCollapse();\n }\n this.renderInitialTab(this.selectedTab);\n };\n Ribbon.prototype.ribbonTabSelected = function (e) {\n this.isAddRemove = false;\n var selectedTabId = e.selectedItem.getAttribute('data-id');\n var selectedIndex = getIndex(this.tabs, (function (tab) { return (tab.id === selectedTabId); }));\n selectedIndex = selectedIndex === -1 ? this.selectedTab : selectedIndex;\n var eventArgs = { previousIndex: this.selectedTab, selectedIndex: selectedIndex };\n this.setProperties({ selectedTab: selectedIndex }, true);\n this.checkOverflow(selectedIndex, e.selectedContent.firstChild);\n if (this.activeLayout === 'Simplified' && this.overflowDDB) {\n var overflowTarget = this.overflowDDB.target;\n var ofTabContainer = overflowTarget.querySelector('.' + constants.RIBBON_TAB_ACTIVE);\n if (ofTabContainer) {\n ofTabContainer.classList.remove(constants.RIBBON_TAB_ACTIVE);\n }\n var activeTab = overflowTarget.querySelector('#' + selectedTabId + constants.OVERFLOW_ID);\n if (activeTab) {\n activeTab.classList.add(constants.RIBBON_TAB_ACTIVE);\n this.overflowDDB.element.classList.remove(constants.HIDE_CSS);\n }\n else {\n this.overflowDDB.element.classList.add(constants.HIDE_CSS);\n }\n }\n this.trigger('tabSelected', eventArgs);\n };\n Ribbon.prototype.checkOverflow = function (tabIndex, activeContent) {\n var tabContent = activeContent.closest('.' + constants.TAB_CONTENT);\n var isOverFlow = tabContent.offsetWidth < activeContent.offsetWidth;\n if (isOverFlow && !this.scrollModule) {\n if (this.activeLayout === 'Classic') {\n // Defines whether the shrinking is breaked due to insufficient space.\n var isBreak = false;\n isBreak = this.checkGroupShrinking(tabIndex, tabContent, activeContent, true);\n if (!isBreak && (tabContent.offsetWidth < activeContent.offsetWidth)) {\n isBreak = this.checkGroupShrinking(tabIndex, tabContent, activeContent, false);\n }\n if (tabContent.offsetWidth < activeContent.offsetWidth) {\n this.createOverflowDropdown(tabIndex, tabContent, activeContent);\n }\n }\n else {\n this.checkSimplifiedItemShrinking(tabIndex, tabContent, activeContent);\n if (tabContent.offsetWidth < activeContent.offsetWidth) {\n this.createSimplfiedOverflow(tabContent, activeContent, tabIndex);\n }\n }\n //Adds Scroll if the tabwidth is less the content width even after adding overflow dropdown.\n if ((tabContent.offsetWidth < activeContent.offsetWidth) && (!this.scrollModule)) {\n this.scrollModule = new HScroll({\n enableRtl: this.enableRtl\n }, this.tabObj.element.querySelector('.' + constants.TAB_CONTENT));\n }\n }\n else if (!isOverFlow) {\n this.destroyScroll();\n if (this.activeLayout === 'Classic') {\n var isBreak = false;\n isBreak = this.removeOverflowDropdown(tabContent, activeContent, false, tabIndex);\n //Check for expanding small items to medium items.\n if (!isBreak && (tabContent.offsetWidth > activeContent.offsetWidth)) {\n isBreak = this.checkGroupExpanding(tabIndex, tabContent, activeContent, true);\n }\n //Check for expanding medium items to large items.\n if (!isBreak && (tabContent.offsetWidth > activeContent.offsetWidth)) {\n isBreak = this.checkGroupExpanding(tabIndex, tabContent, activeContent, false);\n }\n }\n else {\n this.removeSimplfiedOverflow(tabContent, activeContent, tabIndex);\n if (tabContent.offsetWidth > activeContent.offsetWidth) {\n this.checkSimplifiedItemExpanding(tabIndex, tabContent, activeContent);\n }\n }\n }\n };\n Ribbon.prototype.checkSimplifiedItemShrinking = function (tabIndex, tabContent, activeContent) {\n var tab = this.tabs[parseInt(tabIndex.toString(), 10)];\n for (var i = (tab.groups.length - 1); (i >= 0); i--) {\n var group = tab.groups[parseInt(i.toString(), 10)];\n var groupContainer = tabContent.querySelector('#' + group.id + constants.CONTAINER_ID);\n for (var j = 0; ((j < group.collections.length) && (tabContent.offsetWidth < activeContent.offsetWidth)); j++) {\n var collection = group.collections[parseInt(j.toString(), 10)];\n for (var k = collection.items.length; ((k >= 1) && (tabContent.offsetWidth < activeContent.offsetWidth)); k--) {\n var item = collection.items[k - 1];\n if (((item.allowedSizes & RibbonItemSize.Small) && (item.allowedSizes & RibbonItemSize.Medium))\n && (item.activeSize === RibbonItemSize.Medium) && (item.displayOptions & DisplayMode.Simplified)) {\n var itemContainer = groupContainer.querySelector('#' + item.id + constants.CONTAINER_ID);\n if (itemContainer) {\n var itemEle = itemContainer.querySelector('#' + item.id);\n itemContainer.setAttribute('data-medium-width', activeContent.offsetWidth.toString());\n item.setProperties({ activeSize: RibbonItemSize.Small }, true);\n this.setItemSize(itemEle, item);\n }\n }\n }\n }\n }\n };\n Ribbon.prototype.checkSimplifiedItemExpanding = function (tabIndex, tabContent, activeContent) {\n var tab = this.tabs[parseInt(tabIndex.toString(), 10)];\n for (var i = (tab.groups.length - 1); (i >= 0); i--) {\n var group = tab.groups[parseInt(i.toString(), 10)];\n var groupContainer = tabContent.querySelector('#' + group.id + constants.CONTAINER_ID);\n for (var j = 0; ((j < group.collections.length) && (tabContent.offsetWidth > activeContent.offsetWidth)); j++) {\n var collection = group.collections[parseInt(j.toString(), 10)];\n for (var k = collection.items.length; ((k >= 1) && (tabContent.offsetWidth > activeContent.offsetWidth)); k--) {\n var item = collection.items[k - 1];\n if (((item.allowedSizes & RibbonItemSize.Small) && (item.allowedSizes & RibbonItemSize.Medium))\n && (item.activeSize === RibbonItemSize.Small) && (item.displayOptions & DisplayMode.Simplified)) {\n var itemContainer = groupContainer.querySelector('#' + item.id + constants.CONTAINER_ID);\n if (itemContainer) {\n var valString = itemContainer.getAttribute('data-medium-width');\n var value = valString ? parseInt(valString, 10) : null;\n if (value && (tabContent.offsetWidth > value)) {\n itemContainer.removeAttribute('data-medium-width');\n var itemEle = itemContainer.querySelector('#' + item.id);\n item.setProperties({ activeSize: RibbonItemSize.Medium }, true);\n this.setItemSize(itemEle, item);\n }\n }\n }\n }\n }\n }\n };\n Ribbon.prototype.createSimplfiedOverflow = function (tabContent, activeContent, tabIndex) {\n var orderedGroups = this.getGroupResizeOrder(true, tabIndex);\n for (var i = 0; ((i < orderedGroups.length) && (tabContent.offsetWidth < activeContent.offsetWidth)); i++) {\n var group = orderedGroups[parseInt(i.toString(), 10)];\n var groupEle = tabContent.querySelector('#' + group.id);\n var groupContainer = groupEle.querySelector('#' + group.id + constants.CONTAINER_ID);\n for (var j = group.collections.length; ((j >= 1) && (tabContent.offsetWidth < activeContent.offsetWidth)); j--) {\n var collection = group.collections[parseInt((j - 1).toString(), 10)];\n var collectionEle = groupEle.querySelector('#' + collection.id);\n for (var k = collection.items.length; ((k >= 1) && (tabContent.offsetWidth < activeContent.offsetWidth)); k--) {\n var item = collection.items[k - 1];\n var itemContainer = collectionEle.querySelector('#' + item.id + constants.CONTAINER_ID);\n if (((item.displayOptions === DisplayMode.Auto) ||\n (item.displayOptions === (DisplayMode.Simplified | DisplayMode.Overflow))) && !isNullOrUndefined(itemContainer)) {\n itemContainer.setAttribute('data-simplified-width', activeContent.offsetWidth.toString());\n this.createOverflowPopup(item, tabIndex, group.enableGroupOverflow, group.id, group.header, itemContainer, groupContainer, true);\n if (item.activeSize === RibbonItemSize.Small) {\n var itemEle = itemContainer.querySelector('#' + item.id);\n item.setProperties({ activeSize: RibbonItemSize.Medium }, true);\n this.setItemSize(itemEle, item);\n }\n if ((item.type === RibbonItemType.DropDown) || (item.type === RibbonItemType.SplitButton) || (item.type === RibbonItemType.GroupButton)) {\n this.updatePopupItems(item, itemContainer, group.enableGroupOverflow, true);\n }\n }\n }\n }\n if (!(group.enableGroupOverflow || groupEle.querySelector('.' + constants.RIBBON_ITEM))) {\n groupEle.classList.add('e-ribbon-emptyCollection');\n }\n }\n };\n Ribbon.prototype.updatePopupItems = function (item, itemEle, isGroupOF, isMenu) {\n var dropdown = getComponent(itemEle.querySelector('#' + item.id), (item.type === RibbonItemType.DropDown || item.type === RibbonItemType.GroupButton) ? DropDownButton : SplitButton);\n var dropDownPopup = dropdown.dropDown;\n // popup is on right if (isGroupOF && isMenu)\n // The position is reversed if RTL is enabled.\n // isRight = ((isGroupOF && isMenu) && !this.enableRtl ) || (!(isGroupOF && isMenu) && this.enableRtl) ==> (isGroupOF && isMenu) !== this.enableRtl\n var isLeft = (isGroupOF && isMenu) === this.enableRtl;\n dropDownPopup.setProperties({ position: { X: isLeft ? 'left' : 'right', Y: isMenu ? 'top' : 'bottom' } }, true);\n if (isMenu) {\n dropdown.beforeOpen = function () {\n if (isLeft) {\n dropDownPopup.element.style.setProperty('visibility', 'hidden');\n dropDownPopup.element.style.setProperty('display', 'block');\n dropDownPopup.setProperties({ offsetX: -1 * dropDownPopup.element.offsetWidth });\n dropDownPopup.element.style.removeProperty('display');\n dropDownPopup.element.style.removeProperty('visibility');\n }\n };\n }\n else {\n dropDownPopup.setProperties({ offsetX: 0 }, true);\n dropdown.beforeOpen = null;\n }\n };\n Ribbon.prototype.removeSimplfiedOverflow = function (tabContent, activeContent, tabIndex, isClear) {\n if (isClear === void 0) { isClear = false; }\n var orderedGroups = this.getGroupResizeOrder(false, tabIndex);\n var flag = true;\n for (var i = 0; ((i < orderedGroups.length) && flag); i++) {\n var group = orderedGroups[parseInt(i.toString(), 10)];\n var overflowDDB = void 0;\n var overflowtarget = void 0;\n if (group.enableGroupOverflow) {\n var overflowDDBEle = tabContent.querySelector('#' + group.id + constants.GROUPOF_BUTTON_ID);\n if (overflowDDBEle) {\n overflowDDB = getInstance(overflowDDBEle, DropDownButton);\n overflowtarget = overflowDDB.target;\n }\n }\n else {\n overflowDDB = this.overflowDDB;\n overflowtarget = this.overflowDDB ? this.overflowDDB.target : null;\n }\n for (var j = 0; ((j < group.collections.length) && flag); j++) {\n var collection = group.collections[parseInt(j.toString(), 10)];\n // eslint-disable-next-line max-len\n for (var k = 0; ((k < collection.items.length) && flag && !isClear && (tabContent.offsetWidth > activeContent.offsetWidth)); k++) {\n var item = collection.items[parseInt(k.toString(), 10)];\n var itemContainer = void 0;\n if (overflowtarget) {\n itemContainer = overflowtarget.querySelector('#' + item.id + constants.CONTAINER_ID);\n }\n if (((item.displayOptions === DisplayMode.Auto) ||\n (item.displayOptions === (DisplayMode.Simplified | DisplayMode.Overflow))) && !isNullOrUndefined(itemContainer)) {\n var width = parseInt(itemContainer.getAttribute('data-simplified-width'), 10);\n if (!isClear && (tabContent.offsetWidth < width)) {\n flag = false;\n break;\n }\n var groupEle_1 = tabContent.querySelector('#' + collection.id);\n if ((item.type === RibbonItemType.DropDown) || (item.type === RibbonItemType.SplitButton) || (item.type === RibbonItemType.GroupButton)) {\n this.updatePopupItems(item, itemContainer, group.enableGroupOverflow, false);\n }\n groupEle_1.append(itemContainer);\n this.removeOverflowEvent(item, itemContainer);\n if (item.allowedSizes & RibbonItemSize.Small) {\n item.setProperties({ activeSize: RibbonItemSize.Small }, true);\n this.setItemSize(itemContainer.querySelector('#' + item.id), item);\n }\n }\n }\n }\n var groupEle = tabContent.querySelector('#' + group.id);\n var itemEle = groupEle.querySelector('.' + constants.RIBBON_ITEM);\n if (groupEle.classList.contains('e-ribbon-emptyCollection') && itemEle !== null) {\n groupEle.classList.remove('e-ribbon-emptyCollection');\n }\n if (overflowDDB) {\n if (group.enableGroupOverflow) {\n if (overflowtarget.childElementCount === 0) {\n this.removeOverflowButton(overflowDDB);\n }\n }\n else {\n var ofGroupContainer = overflowtarget.querySelector('#' + group.id + constants.CONTAINER_ID);\n if (ofGroupContainer && ofGroupContainer.childElementCount === 1) {\n ofGroupContainer.remove();\n }\n var ofTabContainer = overflowtarget.querySelector('#' + this.tabs[parseInt(tabIndex.toString(), 10)].id + constants.OVERFLOW_ID);\n if (ofTabContainer && ofTabContainer.childElementCount === 0) {\n ofTabContainer.remove();\n this.overflowDDB.element.classList.add(constants.HIDE_CSS);\n }\n }\n }\n }\n if (this.overflowDDB) {\n var overflowEle = this.overflowDDB.target;\n if (overflowEle.childElementCount === 0) {\n this.removeOverflowButton(this.overflowDDB);\n this.overflowDDB = null;\n }\n }\n };\n Ribbon.prototype.createOverflowPopup = function (item, tabIndex, isGroupOF, groupId, groupHeader, itemEle, groupContainer, isResize) {\n var overflowButton;\n var contentEle = this.tabObj.items[parseInt(tabIndex.toString(), 10)].content;\n var isDisabledGroup = contentEle.querySelector('#' + groupId);\n if (isGroupOF) {\n var overflowDDB = groupContainer.querySelector('#' + groupId + constants.GROUPOF_BUTTON_ID);\n if (!overflowDDB) {\n overflowButton = this.addOverflowButton(groupId + constants.GROUPOF_BUTTON_ID);\n overflowButton.element.classList.add(constants.RIBBON_GROUP_OF_BUTTON);\n groupContainer.appendChild(overflowButton.element);\n }\n else {\n overflowButton = getInstance(overflowDDB, DropDownButton);\n }\n var overflowBtnTarget = overflowButton.target;\n if (isDisabledGroup && isDisabledGroup.classList.contains('e-disabled')) {\n overflowBtnTarget.classList.add('e-disabled');\n }\n isResize ? overflowBtnTarget.insertBefore(itemEle, overflowBtnTarget.querySelector('.' + constants.RIBBON_ITEM))\n : overflowBtnTarget.append(itemEle);\n }\n else {\n if (!this.overflowDDB) {\n this.overflowDDB = this.addOverflowButton(this.tabObj.element.id + constants.OVRLOF_BUTTON_ID);\n this.tabObj.element.insertBefore(this.overflowDDB.element, this.collapseButton);\n this.overflowDDB.element.classList.add(constants.RIBBON_OVERALL_OF_BUTTON);\n this.createOfTabContainer(groupId, groupHeader, itemEle, tabIndex);\n }\n else {\n this.overflowDDB.element.classList.remove(constants.HIDE_CSS);\n var overflowEle = this.overflowDDB.target;\n var ofTabContainer = overflowEle.querySelector('#' + this.tabs[parseInt(tabIndex.toString(), 10)].id + constants.OVERFLOW_ID);\n if (ofTabContainer) {\n var ofGroupContainer = overflowEle.querySelector('#' + groupId + constants.CONTAINER_ID);\n if (!ofGroupContainer) {\n ofGroupContainer = this.createGroupContainer(groupId, groupHeader);\n if (isDisabledGroup && isDisabledGroup.classList.contains('e-disabled')) {\n ofGroupContainer.classList.add('e-disabled');\n }\n ofTabContainer.append(ofGroupContainer);\n }\n isResize ? ofGroupContainer.insertBefore(itemEle, ofGroupContainer.querySelector('.' + constants.RIBBON_ITEM)) : ofGroupContainer.append(itemEle);\n }\n else {\n this.createOfTabContainer(groupId, groupHeader, itemEle, tabIndex);\n }\n }\n overflowButton = this.overflowDDB;\n }\n if (itemEle !== null) {\n this.addOverflowEvents(item, itemEle, overflowButton);\n }\n };\n Ribbon.prototype.addOverflowEvents = function (item, itemEle, overflowButton) {\n switch (item.type) {\n case 'Button':\n this.ribbonButtonModule.addOverFlowEvents(item, itemEle, overflowButton);\n break;\n case 'DropDown':\n this.ribbonDropDownModule.addOverFlowEvents(item, itemEle, overflowButton);\n break;\n case 'SplitButton':\n this.ribbonSplitButtonModule.addOverFlowEvents(item, itemEle, overflowButton);\n break;\n case 'CheckBox':\n this.ribbonCheckBoxModule.addOverFlowEvents(item, itemEle, overflowButton);\n break;\n case 'ColorPicker':\n this.ribbonColorPickerModule.addOverFlowEvents(item, itemEle, overflowButton);\n break;\n case 'ComboBox':\n this.ribbonComboBoxModule.addOverFlowEvents(item, itemEle, overflowButton);\n break;\n case 'GroupButton':\n if (this.activeLayout === 'Simplified') {\n this.ribbonGroupButtonModule.addOverFlowEvents(item, itemEle);\n break;\n }\n }\n };\n Ribbon.prototype.createOfTabContainer = function (groupId, groupHeader, itemEle, tabIndex) {\n var ofTabContainer = this.createElement('div', {\n id: this.tabs[parseInt(tabIndex.toString(), 10)].id + constants.OVERFLOW_ID,\n className: constants.RIBBON_OF_TAB_CONTAINER\n });\n var overflowtarget = this.overflowDDB.target;\n overflowtarget.append(ofTabContainer);\n var ofGroupContainer = this.createGroupContainer(groupId, groupHeader);\n ofGroupContainer.append(itemEle);\n ofTabContainer.append(ofGroupContainer);\n if (tabIndex === this.selectedTab) {\n ofTabContainer.classList.add(constants.RIBBON_TAB_ACTIVE);\n }\n };\n Ribbon.prototype.checkGroupShrinking = function (tabIndex, tabContent, activeContent, isLarge) {\n var isOverFlow = true;\n var isBreak = false;\n var tab = this.tabs[parseInt(tabIndex.toString(), 10)];\n for (var j = (tab.groups.length - 1); (isOverFlow && (j >= 0)); j--) {\n // eslint-disable-next-line max-len\n isBreak = isLarge ? this.checkLargeToMedium(tabIndex, tab, j, tabContent, activeContent) : this.checkMediumToSmall(tabIndex, tab, j, tabContent, activeContent);\n isOverFlow = !isBreak && (tabContent.offsetWidth < activeContent.offsetWidth);\n }\n return isBreak;\n };\n Ribbon.prototype.checkValidCollectionLength = function (collections) {\n var count = 0;\n for (var i = 0; i < collections.length; i++) {\n var items = collections[parseInt(i.toString(), 10)].items;\n for (var ind = 0; ind < items.length; ind++) {\n if (items[parseInt(ind.toString(), 10)].displayOptions & DisplayMode.Classic) {\n count++;\n break;\n }\n }\n if (count > 1) {\n return false;\n }\n }\n return count === 1;\n };\n Ribbon.prototype.checkClassicCollection = function (collections, n, isIncrement) {\n var items = collections[parseInt(n.toString(), 10)].items;\n for (var ind = 0; ind < items.length; ind++) {\n if (items[parseInt(ind.toString(), 10)].displayOptions & DisplayMode.Classic) {\n return n;\n }\n }\n n = isIncrement ? n + 1 : n - 1;\n if (isIncrement) {\n return (n === collections.length) ? n : this.checkClassicCollection(collections, n, isIncrement);\n }\n else {\n return (n < 0) ? n : this.checkClassicCollection(collections, n, isIncrement);\n }\n };\n Ribbon.prototype.checkClassicItem = function (items, n, isIncrement) {\n var item = items[parseInt(n.toString(), 10)];\n if (item.displayOptions & DisplayMode.Classic) {\n return n;\n }\n n = isIncrement ? n + 1 : n - 1;\n if (isIncrement) {\n return (n === items.length) ? n : this.checkClassicItem(items, n, isIncrement);\n }\n else {\n return (n < 0) ? n : this.checkClassicItem(items, n, isIncrement);\n }\n };\n Ribbon.prototype.checkLargeToMedium = function (tabIndex, tab, groupIndex, tabContent, activeContent, shouldSkip) {\n var _this = this;\n if (shouldSkip === void 0) { shouldSkip = false; }\n var group = tab.groups[parseInt(groupIndex.toString(), 10)];\n if (group.isCollapsed && !shouldSkip) {\n return false;\n }\n var canReduceCollection = function (collection) {\n return (collection.items.length === 1) && canReduceItem(collection.items[0]);\n };\n var canReduceItem = function (item) {\n return (item.allowedSizes & RibbonItemSize.Medium) && (item.activeSize === RibbonItemSize.Large);\n };\n var createShrinkEle = function (id, firstItem, start, end) {\n var shrinkEle = _this.createElement('div', {\n className: 'e-ribbon-shrink' + constants.SPACE + constants.RIBBON_ROW,\n id: id + '_shrink_container' + start,\n attrs: { 'data-start': start.toString(), 'data-end': end.toString() }\n });\n firstItem.parentElement.insertBefore(shrinkEle, firstItem);\n if (!shouldSkip) {\n shrinkEle.setAttribute('data-large-width', activeContent.offsetWidth.toString());\n }\n return shrinkEle;\n };\n var moveItemToColumn = function (start, end) {\n var collection = _this.tabs[parseInt(tabIndex.toString(), 10)]\n .groups[parseInt(groupIndex.toString(), 10)].collections[0];\n var firstItem = activeContent.querySelector('#' + collection.items[parseInt(start.toString(), 10)].id + constants.CONTAINER_ID);\n var shrinkEle = shouldSkip ? activeContent.querySelector('#' + collection.id + '_shrink_container' + start) :\n createShrinkEle(collection.id, firstItem, start, end);\n for (var i = start; i <= end; i++) {\n var item = collection.items[parseInt(i.toString(), 10)];\n if (!(item.displayOptions & DisplayMode.Classic)) {\n continue;\n }\n var ele = activeContent.querySelector('#' + item.id + constants.CONTAINER_ID);\n shrinkEle.appendChild(ele);\n item.setProperties({ activeSize: RibbonItemSize.Medium }, true);\n if (item.type === RibbonItemType.GroupButton && _this.activeLayout === 'Classic') {\n _this.setItemSize(ele.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID), item);\n }\n else {\n _this.setItemSize(ele.querySelector('#' + item.id), item);\n }\n }\n };\n var moveCollectionToColumn = function (start, end) {\n var group = _this.tabs[parseInt(tabIndex.toString(), 10)]\n .groups[parseInt(groupIndex.toString(), 10)];\n var firstItem = activeContent.querySelector('#' + group.collections[parseInt(start.toString(), 10)].id);\n var shrinkEle = shouldSkip ? activeContent.querySelector('#' + group.id + '_shrink_container' + start) :\n createShrinkEle(group.id, firstItem, start, end);\n for (var i = start; i <= end; i++) {\n var collection = group.collections[parseInt(i.toString(), 10)];\n var ele = activeContent.querySelector('#' + collection.id);\n shrinkEle.appendChild(ele);\n collection.items[0].setProperties({ activeSize: RibbonItemSize.Medium }, true);\n if (collection.items[0].type === RibbonItemType.GroupButton && _this.activeLayout === 'Classic') {\n _this.setItemSize(ele.querySelector('#' + collection.items[0].id + constants.RIBBON_GROUP_BUTTON_ID), collection.items[0]);\n }\n else {\n _this.setItemSize(ele.querySelector('#' + collection.items[0].id), collection.items[0]);\n }\n }\n };\n var orientation = group.orientation;\n if (orientation === ItemOrientation.Column) {\n for (var k = (group.collections.length - 1); k > 0; k--) {\n //to avoid negative index while checking for the second collection\n k = this.checkClassicCollection(group.collections, k, false);\n var l = k - 1;\n //Checks the element rendered at position n\n if ((l >= 0) && canReduceCollection(group.collections[parseInt(k.toString(), 10)])) {\n l = this.checkClassicCollection(group.collections, l, false);\n //Checks the element rendered at position n-1\n if ((l >= 0) && canReduceCollection(group.collections[parseInt(l.toString(), 10)])) {\n var m = l - 1;\n if (m >= 0) {\n m = this.checkClassicCollection(group.collections, m, false);\n }\n //Checks the element rendered at position n-2\n if ((m >= 0) && canReduceCollection(group.collections[parseInt(m.toString(), 10)])) {\n moveCollectionToColumn(m, k);\n }\n else {\n moveCollectionToColumn(l, k);\n }\n k = m;\n if (!shouldSkip && (tabContent.offsetWidth > activeContent.offsetWidth)) {\n return true;\n }\n }\n else {\n k = l;\n }\n }\n }\n }\n else {\n if (this.checkValidCollectionLength(group.collections)) {\n var collection = group.collections[0];\n for (var k = (collection.items.length - 1); k > 0; k--) {\n //to avoid negative index while checking for the second item\n k = this.checkClassicItem(collection.items, k, false);\n var l = k - 1;\n //Checks the element rendered at position n\n if ((l >= 0) && canReduceItem(collection.items[parseInt(k.toString(), 10)])) {\n l = this.checkClassicItem(collection.items, l, false);\n //Checks the element rendered at position n-1\n if ((l >= 0) && canReduceItem(collection.items[parseInt(l.toString(), 10)])) {\n var m = l - 1;\n //Checks the element rendered at position n-2\n if (m >= 0) {\n m = this.checkClassicItem(collection.items, m, false);\n }\n if ((m >= 0) && canReduceItem(collection.items[parseInt(m.toString(), 10)])) {\n moveItemToColumn(m, k);\n }\n else {\n moveItemToColumn(l, k);\n }\n k = m;\n if (!shouldSkip && (tabContent.offsetWidth > activeContent.offsetWidth)) {\n return true;\n }\n }\n else {\n k = l;\n }\n }\n }\n }\n }\n return false;\n };\n Ribbon.prototype.checkMediumToSmall = function (tabIndex, tab, groupIndex, tabContent, activeContent, shouldSkip) {\n var _this = this;\n if (shouldSkip === void 0) { shouldSkip = false; }\n var group = tab.groups[parseInt(groupIndex.toString(), 10)];\n if (group.isCollapsed && !shouldSkip) {\n return false;\n }\n var orientation = group.orientation;\n var ele = activeContent.querySelector('#' + group.id);\n var shrinkColumns = ele.querySelectorAll('.' + 'e-ribbon-shrink');\n var canReduceItem = function (item) {\n return (item.allowedSizes & RibbonItemSize.Small) && (item.activeSize === RibbonItemSize.Medium);\n };\n var reduceItemsToSmall = function (collectionIndex, start, end, middle) {\n if (middle === void 0) { middle = null; }\n var collection = _this.tabs[parseInt(tabIndex.toString(), 10)]\n .groups[parseInt(groupIndex.toString(), 10)].collections[parseInt(collectionIndex.toString(), 10)];\n var reduce = function (i) {\n var item = collection.items[parseInt(i.toString(), 10)];\n if (item.displayOptions & DisplayMode.Classic) {\n var ele_1 = activeContent.querySelector('#' + item.id);\n item.setProperties({ activeSize: RibbonItemSize.Small }, true);\n if (item.type === RibbonItemType.GroupButton) {\n ele_1 = activeContent.querySelector('#' + item.id + '_grpbtn');\n }\n _this.setItemSize(ele_1, item);\n }\n };\n reduce(start);\n if (middle) {\n reduce(middle);\n }\n reduce(end);\n };\n var reduceCollectionsToSmall = function (index, start, end, middle) {\n if (middle === void 0) { middle = null; }\n var group = _this.tabs[parseInt(tabIndex.toString(), 10)]\n .groups[parseInt(groupIndex.toString(), 10)];\n if (!shouldSkip) {\n shrinkColumns[parseInt(index.toString(), 10)].setAttribute('data-medium-width', activeContent.offsetWidth.toString());\n }\n var reduce = function (i) {\n var collection = group.collections[parseInt(i.toString(), 10)];\n if (collection.items[0].displayOptions & DisplayMode.Classic) {\n var ele_2 = activeContent.querySelector('#' + collection.items[0].id);\n collection.items[0].setProperties({ activeSize: RibbonItemSize.Small }, true);\n if (collection.items[0].type === RibbonItemType.GroupButton) {\n ele_2 = activeContent.querySelector('#' + collection.items[0].id + constants.RIBBON_GROUP_BUTTON_ID);\n }\n _this.setItemSize(ele_2, collection.items[0]);\n }\n };\n reduce(start);\n if (middle) {\n reduce(middle);\n }\n reduce(end);\n };\n var setWidth = function (id) {\n if (!shouldSkip) {\n var ele_3 = activeContent.querySelector('#' + id);\n ele_3.setAttribute('data-medium-width', activeContent.offsetWidth.toString());\n }\n };\n if (orientation === ItemOrientation.Column) {\n if (shrinkColumns.length > 0) {\n for (var k = (shrinkColumns.length - 1); k >= 0; k--) {\n var start = parseInt(shrinkColumns[parseInt(k.toString(), 10)].getAttribute('data-start'), 10);\n var end = parseInt(shrinkColumns[parseInt(k.toString(), 10)].getAttribute('data-end'), 10);\n //only 2 or 3 itmes alone can be present in shrinked column\n var l = this.checkClassicCollection(group.collections, start + 1, false); //next valid item\n if (canReduceItem(group.collections[parseInt(start.toString(), 10)].items[0])\n && canReduceItem(group.collections[parseInt(l.toString(), 10)].items[0])) {\n if (end === l) { //if only 2 item, then next valid item will be the end item, else check for 3 rd item satus.\n reduceCollectionsToSmall(k, start, end);\n }\n else if (canReduceItem(group.collections[parseInt(end.toString(), 10)].items[0])) {\n reduceCollectionsToSmall(k, start, end, l);\n }\n if (!shouldSkip && (tabContent.offsetWidth > activeContent.offsetWidth)) {\n return true;\n }\n }\n }\n }\n for (var k = (group.collections.length - 1); k >= 0; k--) {\n var collection = group.collections[parseInt(k.toString(), 10)];\n var classicItems = [];\n for (var i = 0; i < collection.items.length; i++) {\n if (collection.items[parseInt(i.toString(), 10)].displayOptions & DisplayMode.Classic) {\n classicItems.push(i);\n }\n }\n //If items length is 1 then, it would have been already check for shrinked column\n if ((classicItems.length > 1)) {\n if (canReduceItem(collection.items[classicItems[0]]) && canReduceItem(collection.items[classicItems[1]])) {\n if (classicItems.length === 2) {\n setWidth(collection.id);\n reduceItemsToSmall(k, classicItems[0], classicItems[1]);\n }\n else if (canReduceItem(collection.items[classicItems[2]])) {\n setWidth(collection.id);\n reduceItemsToSmall(k, classicItems[0], classicItems[2], classicItems[1]);\n }\n if (!shouldSkip && (tabContent.offsetWidth > activeContent.offsetWidth)) {\n return true;\n }\n }\n }\n }\n }\n else {\n if (this.checkValidCollectionLength(group.collections)) {\n if (shrinkColumns.length > 0) {\n for (var k = (shrinkColumns.length - 1); k >= 0; k--) {\n var shrinkColumn = shrinkColumns[parseInt(k.toString(), 10)];\n var start = parseInt(shrinkColumn.getAttribute('data-start'), 10);\n var end = parseInt(shrinkColumn.getAttribute('data-end'), 10);\n //only 2 or 3 itmes alone can be present in shrinked column\n var collection = group.collections[0];\n var l = this.checkClassicItem(collection.items, start + 1, false); //next valid item\n if (canReduceItem(group.collections[0].items[parseInt(start.toString(), 10)])\n && canReduceItem(group.collections[0].items[parseInt(l.toString(), 10)])) {\n if (end === l) { //if only 2 item, then next valid item will be the end item, else check for 3 rd item satus.\n setWidth(shrinkColumn.id);\n reduceItemsToSmall(0, start, end);\n }\n else if (canReduceItem(group.collections[0].items[parseInt(end.toString(), 10)])) {\n setWidth(shrinkColumn.id);\n reduceItemsToSmall(0, start, end, l);\n }\n if (!shouldSkip && (tabContent.offsetWidth > activeContent.offsetWidth)) {\n return true;\n }\n }\n }\n }\n }\n else {\n for (var k = (group.collections.length - 1); k >= 0; k--) {\n var collection = group.collections[parseInt(k.toString(), 10)];\n for (var l = (collection.items.length - 1); l >= 0; l--) {\n l = this.checkClassicItem(collection.items, l, false);\n if (l < 0) {\n continue;\n }\n var item = collection.items[parseInt(l.toString(), 10)];\n if (canReduceItem(item)) {\n item.type !== RibbonItemType.GroupButton ? setWidth(item.id) : setWidth(item.id + constants.RIBBON_GROUP_BUTTON_ID);\n reduceItemsToSmall(k, l, l);\n if (!shouldSkip && (tabContent.offsetWidth > activeContent.offsetWidth)) {\n return true;\n }\n }\n }\n }\n }\n }\n return false;\n };\n Ribbon.prototype.checkGroupExpanding = function (tabIndex, tabContent, activeContent, isSmall) {\n var isBreak = false;\n var tab = this.tabs[parseInt(tabIndex.toString(), 10)];\n for (var j = 0; (!isBreak && (j < tab.groups.length)); j++) {\n isBreak = isSmall ? this.checkSmallToMedium(tabIndex, tab, j, tabContent, activeContent, false, true) :\n this.checkMediumToLarge(tabIndex, tab, j, tabContent, activeContent, false, true);\n }\n return isBreak;\n };\n // eslint-disable-next-line max-len\n Ribbon.prototype.checkSmallToMedium = function (tabIndex, tab, groupIndex, tabContent, activeContent, shouldSkip, shouldClear) {\n var _this = this;\n var group = tab.groups[parseInt(groupIndex.toString(), 10)];\n var orientation = group.orientation;\n var ele = activeContent.querySelector('#' + group.id);\n var shrinkColumns = ele.querySelectorAll('.' + 'e-ribbon-shrink');\n var canExpandItem = function (item) {\n return (item.allowedSizes & RibbonItemSize.Medium) && (item.activeSize === RibbonItemSize.Small);\n };\n var expandItemToMedium = function (collectionIndex, index, parentEle) {\n var collection = _this.tabs[parseInt(tabIndex.toString(), 10)]\n .groups[parseInt(groupIndex.toString(), 10)].collections[parseInt(collectionIndex.toString(), 10)];\n var item = collection.items[parseInt(index.toString(), 10)];\n if (item.displayOptions & DisplayMode.Classic) {\n var ele_4 = parentEle.id === item.id ? parentEle : parentEle.querySelector('#' + item.id);\n item.setProperties({ activeSize: RibbonItemSize.Medium }, true);\n if (item.type === RibbonItemType.GroupButton) {\n ele_4 = document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID);\n }\n _this.setItemSize(ele_4, item);\n }\n };\n var expandCollectionsToMedium = function (i) {\n var collections = _this.tabs[parseInt(tabIndex.toString(), 10)]\n .groups[parseInt(groupIndex.toString(), 10)].collections;\n var item = collections[parseInt(i.toString(), 10)].items[0];\n if (item.displayOptions & DisplayMode.Classic) {\n var ele_5 = activeContent.querySelector('#' + collections[parseInt(i.toString(), 10)].items[0].id);\n collections[parseInt(i.toString(), 10)].items[0].setProperties({ activeSize: RibbonItemSize.Medium }, true);\n if (item.type === RibbonItemType.GroupButton) {\n ele_5 = activeContent.querySelector('#' + collections[parseInt(i.toString(), 10)].items[0].id + constants.RIBBON_GROUP_BUTTON_ID);\n }\n _this.setItemSize(ele_5, collections[parseInt(i.toString(), 10)].items[0]);\n }\n };\n if (orientation === ItemOrientation.Row) {\n // collection length is 1, then the it wll be covered in shrinked columns\n if (!this.checkValidCollectionLength(group.collections)) {\n for (var k = 0; k < group.collections.length; k++) {\n var collection = group.collections[parseInt(k.toString(), 10)];\n for (var l = 0; l < collection.items.length; l++) {\n l = this.checkClassicItem(collection.items, l, true);\n if (l === collection.items.length) {\n continue;\n }\n var item = collection.items[parseInt(l.toString(), 10)];\n if (canExpandItem(item)) {\n var itemEle = activeContent.querySelector('#' + item.id);\n if (item.type === 'GroupButton') {\n itemEle = activeContent.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID);\n }\n var valString = itemEle.getAttribute('data-medium-width');\n var value = valString ? parseInt(valString, 10) : null;\n if (value && (shouldSkip || (tabContent.offsetWidth > value))) {\n expandItemToMedium(k, l, itemEle);\n if (!shouldSkip || shouldClear) {\n itemEle.removeAttribute('data-medium-width');\n }\n }\n else if (value) {\n return true;\n }\n }\n }\n }\n }\n }\n else {\n for (var k = 0; k < group.collections.length; k++) {\n //If items length is 1 then, it will be handled in shrinked column\n if ((group.collections[parseInt(k.toString(), 10)].items.length > 1)) {\n var collection = group.collections[parseInt(k.toString(), 10)];\n var itemEle = activeContent.querySelector('#' + collection.id);\n var valString = itemEle.getAttribute('data-medium-width');\n var value = valString ? parseInt(valString, 10) : null;\n var classicItems = [];\n for (var i = 0; i < collection.items.length; i++) {\n if (collection.items[parseInt(i.toString(), 10)].displayOptions & DisplayMode.Classic) {\n classicItems.push(i);\n }\n }\n if ((classicItems.length > 1) && value && (shouldSkip || (tabContent.offsetWidth > value))) {\n expandItemToMedium(k, classicItems[0], itemEle);\n expandItemToMedium(k, classicItems[1], itemEle);\n if (classicItems.length === 3) {\n expandItemToMedium(k, classicItems[2], itemEle);\n }\n if (!shouldSkip || shouldClear) {\n itemEle.removeAttribute('data-medium-width');\n }\n }\n else if (value) {\n return true;\n }\n }\n }\n }\n if (shrinkColumns.length > 0) {\n for (var k = 0; k < shrinkColumns.length; k++) {\n var shrinkColumn = shrinkColumns[parseInt(k.toString(), 10)];\n var valString = shrinkColumn.getAttribute('data-medium-width');\n var value = valString ? parseInt(valString, 10) : null;\n if (value && (shouldSkip || (tabContent.offsetWidth > value))) {\n var start = parseInt(shrinkColumn.getAttribute('data-start'), 10);\n var end = parseInt(shrinkColumn.getAttribute('data-end'), 10);\n if (orientation === ItemOrientation.Row) {\n var collection = group.collections[0];\n var l = this.checkClassicItem(collection.items, start + 1, true); //next valid item\n expandItemToMedium(0, start, shrinkColumn);\n expandItemToMedium(0, l, shrinkColumn);\n // if l == end, then l is the last item, else L is the middle item. If l is middle then call the method for end.\n if (l !== end) {\n expandItemToMedium(0, end, shrinkColumn);\n }\n }\n else {\n var m = this.checkClassicCollection(group.collections, start + 1, true); //next valid item\n expandCollectionsToMedium(start);\n expandCollectionsToMedium(m);\n if (m !== end) {\n expandCollectionsToMedium(end);\n }\n }\n if (!shouldSkip || shouldClear) {\n shrinkColumn.removeAttribute('data-medium-width');\n }\n }\n else if (value) {\n return true;\n }\n }\n }\n return false;\n };\n Ribbon.prototype.checkMediumToLarge = function (tabIndex, tab, groupIndex, tabContent, activeContent, shouldSkip, shouldClear) {\n var _this = this;\n var group = tab.groups[parseInt(groupIndex.toString(), 10)];\n var orientation = group.orientation;\n var ele = activeContent.querySelector('#' + group.id);\n var shrinkColumns = ele.querySelectorAll('.' + 'e-ribbon-shrink');\n if (shrinkColumns.length === 0) {\n return false;\n }\n var expandItemsToLarge = function (start, end, parentEle, middle) {\n var items = _this.tabs[parseInt(tabIndex.toString(), 10)].\n groups[parseInt(groupIndex.toString(), 10)].collections[0].items;\n var reduce = function (i) {\n var item = items[parseInt(i.toString(), 10)];\n if (item.displayOptions & DisplayMode.Classic) {\n var container = parentEle.querySelector('#' + item.id + constants.CONTAINER_ID);\n var ele_6 = container.querySelector('#' + item.id);\n item.setProperties({ activeSize: RibbonItemSize.Large }, true);\n if (item.type === RibbonItemType.GroupButton) {\n ele_6 = container.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID);\n }\n _this.setItemSize(ele_6, item);\n parentEle.insertAdjacentElement('beforebegin', container);\n }\n };\n reduce(start);\n if (middle) {\n reduce(middle);\n }\n reduce(end);\n if (!shouldSkip || shouldClear) {\n remove(parentEle);\n }\n };\n var expandCollectionsToLarge = function (start, end, parentEle, middle) {\n var collections = _this.tabs[parseInt(tabIndex.toString(), 10)].\n groups[parseInt(groupIndex.toString(), 10)].collections;\n var reduce = function (i) {\n var collection = collections[parseInt(i.toString(), 10)];\n if (collection.items[0].displayOptions & DisplayMode.Classic) {\n var collectionEle = parentEle.querySelector('#' + collection.id);\n var ele_7 = collectionEle.querySelector('#' + collection.items[0].id);\n collection.items[0].setProperties({ activeSize: RibbonItemSize.Large }, true);\n if (collection.items[0].type === RibbonItemType.GroupButton) {\n ele_7 = collectionEle.querySelector('#' + collection.items[0].id + constants.RIBBON_GROUP_BUTTON_ID);\n }\n _this.setItemSize(ele_7, collection.items[0]);\n parentEle.insertAdjacentElement('beforebegin', collectionEle);\n }\n };\n reduce(start);\n if (middle) {\n reduce(middle);\n }\n reduce(end);\n if (!shouldSkip || shouldClear) {\n remove(parentEle);\n }\n };\n for (var k = 0; k < shrinkColumns.length; k++) {\n var shrinkColumn = shrinkColumns[parseInt(k.toString(), 10)];\n var valString = shrinkColumn.getAttribute('data-large-width');\n var value = valString ? parseInt(valString, 10) : null;\n if (value && (shouldSkip || (tabContent.offsetWidth > value))) {\n var start = parseInt(shrinkColumn.getAttribute('data-start'), 10);\n var end = parseInt(shrinkColumn.getAttribute('data-end'), 10);\n if (orientation === ItemOrientation.Row) {\n var collection = group.collections[0];\n var l = this.checkClassicItem(collection.items, start + 1, true); //next valid item\n if (l === end) {\n expandItemsToLarge(start, end, shrinkColumn);\n }\n else {\n expandItemsToLarge(start, end, shrinkColumn, l);\n }\n }\n else {\n var m = this.checkClassicCollection(group.collections, start + 1, true); //next valid item\n if (m === end) {\n expandCollectionsToLarge(start, end, shrinkColumn);\n }\n else {\n expandCollectionsToLarge(start, end, shrinkColumn, m);\n }\n }\n if (!shouldSkip || shouldClear) {\n shrinkColumn.removeAttribute('data-large-width');\n }\n }\n else if (value) {\n return true;\n }\n }\n return false;\n };\n Ribbon.prototype.handleContentSize = function (itemEle, isRemoveOverflow) {\n var itemContainer = itemEle.closest('.' + constants.RIBBON_GROUP_CONTENT);\n (isRemoveOverflow ? (itemContainer.classList.add(constants.RIBBON_CONTENT_HEIGHT)) : (itemContainer.classList.remove(constants.RIBBON_CONTENT_HEIGHT)));\n };\n Ribbon.prototype.setItemSize = function (itemEle, item) {\n var itemContainer = itemEle.closest('.' + constants.RIBBON_ITEM);\n if (item.type === RibbonItemType.Button) {\n this.ribbonButtonModule.updateButtonSize(itemEle, item);\n }\n else if (item.type === RibbonItemType.DropDown) {\n this.ribbonDropDownModule.updateDropDownSize(itemEle, item);\n }\n else if (item.type === RibbonItemType.SplitButton) {\n this.ribbonSplitButtonModule.updateSplitButtonSize(itemEle, item);\n }\n else if (item.type === RibbonItemType.Template) {\n remove(itemEle);\n this.createTemplateContent(item, itemContainer);\n }\n else if (item.type === RibbonItemType.GroupButton) {\n this.ribbonGroupButtonModule.updateGroupButtonSize(itemEle, item);\n }\n itemContainer.classList.remove(constants.RIBBON_CONTENT_HEIGHT, constants.RIBBON_LARGE_ITEM, constants.RIBBON_MEDIUM_ITEM, constants.RIBBON_SMALL_ITEM);\n if (item.activeSize === RibbonItemSize.Large) {\n itemContainer.classList.add(constants.RIBBON_LARGE_ITEM, constants.RIBBON_CONTENT_HEIGHT);\n }\n else {\n itemContainer.classList.add((item.activeSize === RibbonItemSize.Medium) ?\n constants.RIBBON_MEDIUM_ITEM : constants.RIBBON_SMALL_ITEM);\n }\n };\n Ribbon.prototype.createOverflowDropdown = function (tabIndex, tabContent, activeContent) {\n var collapseOrder = this.getGroupResizeOrder(true, tabIndex);\n if (collapseOrder.length === 0) {\n return;\n }\n var _loop_1 = function (i) {\n var group = collapseOrder[parseInt(i.toString(), 10)];\n var groupEle = this_1.tabObj.element.querySelector('#' + group.id);\n groupEle.setAttribute('data-expanded-width', activeContent.offsetWidth.toString());\n var groupContainer = groupEle.querySelector('#' + group.id + constants.CONTAINER_ID);\n var groupOverFlow = this_1.createElement('div', {\n className: constants.RIBBON_GROUP_OVERFLOW + constants.SPACE + constants.RIBBON_LARGE_ITEM,\n id: group.id + constants.OVERFLOW_ID + constants.CONTAINER_ID\n });\n groupEle.insertBefore(groupOverFlow, groupContainer);\n var groupIndex = getIndex(this_1.tabs[parseInt(tabIndex.toString(), 10)].groups, function (e) { return e.id === group.id; });\n var tab = this_1.tabs[parseInt(tabIndex.toString(), 10)];\n //Expanding the items in the group to their original expanded state\n this_1.checkSmallToMedium(tabIndex, tab, groupIndex, tabContent, activeContent, true, false);\n this_1.checkMediumToLarge(tabIndex, tab, groupIndex, tabContent, activeContent, true, false);\n var dropdown = this_1.ribbonDropDownModule.createOverFlowDropDown(group.id, group.header, group.groupIconCss, groupContainer, groupOverFlow, this_1.enableRtl);\n this_1.tabs[parseInt(tabIndex.toString(), 10)].\n groups[parseInt(groupIndex.toString(), 10)].setProperties({ isCollapsed: true }, true);\n for (var j = 0; j < group.collections.length; j++) {\n var collection = group.collections[parseInt(j.toString(), 10)];\n var collectionEle = groupContainer.querySelector('#' + collection.id);\n for (var k = 0; k < collection.items.length; k++) {\n var item = collection.items[parseInt(k.toString(), 10)];\n var itemEle = collectionEle.querySelector('#' + item.id + constants.CONTAINER_ID);\n if (itemEle !== null) {\n this_1.handleContentSize(itemEle);\n this_1.addOverflowEvents(item, itemEle, dropdown);\n }\n }\n }\n };\n var this_1 = this;\n for (var i = 0; ((i < collapseOrder.length) && (tabContent.offsetWidth < activeContent.offsetWidth)); i++) {\n _loop_1(i);\n }\n };\n // eslint-disable-next-line max-len\n Ribbon.prototype.removeOverflowDropdown = function (tabContent, activeContent, isClear, tabIndex) {\n if (isClear === void 0) { isClear = false; }\n var expandOrder = this.getGroupResizeOrder(false, tabIndex);\n if (expandOrder.length === 0) {\n return false;\n }\n var _loop_2 = function (i) {\n var group = expandOrder[parseInt(i.toString(), 10)];\n var groupEle = this_2.tabObj.element.querySelector('#' + group.id);\n if (!groupEle) {\n return \"break\";\n } //to handle the rerendering of tabcontrol when a ribbon tab is added/removed\n var width = parseInt(groupEle.getAttribute('data-expanded-width'), 10);\n if (!isClear && (tabContent.offsetWidth < width)) {\n return { value: true };\n }\n this_2.removeDropdown(group.id);\n var groupIndex = getIndex(this_2.tabs[parseInt(tabIndex.toString(), 10)].groups, function (e) { return e.id === group.id; });\n this_2.tabs[parseInt(tabIndex.toString(), 10)].\n groups[parseInt(groupIndex.toString(), 10)].setProperties({ isCollapsed: false }, true);\n var tab = this_2.tabs[parseInt(tabIndex.toString(), 10)];\n //Shrinking the items in the group to their previous shrinked state (before moving to dropdown)\n this_2.checkLargeToMedium(tabIndex, tab, groupIndex, tabContent, activeContent, true);\n this_2.checkMediumToSmall(tabIndex, tab, groupIndex, tabContent, activeContent, true);\n for (var j = 0; j < group.collections.length; j++) {\n var collection = group.collections[parseInt(j.toString(), 10)];\n var collectionEle = groupEle.querySelector('#' + collection.id);\n for (var k = 0; k < collection.items.length; k++) {\n var item = collection.items[parseInt(k.toString(), 10)];\n var itemEle = collectionEle.querySelector('#' + item.id + constants.CONTAINER_ID);\n if (itemEle !== null) {\n this_2.handleContentSize(itemEle, true);\n this_2.removeOverflowEvent(item, itemEle);\n }\n }\n }\n };\n var this_2 = this;\n for (var i = 0; i < expandOrder.length; i++) {\n var state_1 = _loop_2(i);\n if (typeof state_1 === \"object\")\n return state_1.value;\n if (state_1 === \"break\")\n break;\n }\n return false;\n };\n Ribbon.prototype.removeDropdown = function (groupId) {\n var dropdownElement = this.tabObj.element.querySelector('#' + groupId + constants.OVERFLOW_ID + constants.DROPDOWN_ID);\n if (dropdownElement) {\n var groupOverFlow = dropdownElement.parentElement;\n this.ribbonDropDownModule.removeOverFlowDropDown(dropdownElement);\n remove(groupOverFlow);\n }\n };\n Ribbon.prototype.getGroupResizeOrder = function (isCollapse, tabIndex) {\n var _this = this;\n var groups = this.tabs[parseInt(tabIndex.toString(), 10)].groups;\n groups = groups.filter(function (e) {\n // (isUndefined(e.isCollapsible) || e.isCollapsible) => check whethe rhte item is collapsible\n // if a isCollapsed property is undefined, then it is considered collapsible and included in collapsible list\n // ((isCollapse && !e.isCollapsed)||(!isCollapse && e.isCollapsed)) => isCollapse !== e.isCollapsed\n return (_this.activeLayout === 'Classic') ? (isUndefined(e.isCollapsible) || e.isCollapsible) && ((isCollapse &&\n isUndefined(e.isCollapsed)) || (!isUndefined(e.isCollapsed) && (isCollapse !== e.isCollapsed))) : true;\n });\n //sort the collapsible groups based on the priority\n groups.sort(function (a, b) { return a.priority - b.priority; });\n //reverse the sorted array to return the array in descending order while collapsing.\n return isCollapse ? groups.reverse() : groups;\n };\n Ribbon.prototype.destroyScroll = function () {\n if (this.scrollModule) {\n this.scrollModule.destroy();\n this.scrollModule = null;\n }\n };\n Ribbon.prototype.clearOverflowDropDown = function (index) {\n var activeContent = this.tabObj.element.querySelector('#' + this.tabs[parseInt(index.toString(), 10)].id + constants.CONTENT_ID);\n if (!activeContent) {\n return;\n }\n var tabContent = activeContent.closest('.' + constants.TAB_CONTENT);\n if (this.activeLayout === 'Simplified') {\n this.removeSimplfiedOverflow(activeContent, tabContent, index, true);\n }\n else {\n this.removeOverflowDropdown(activeContent, tabContent, true, index);\n }\n };\n Ribbon.prototype.ribbonTabSelecting = function (e) {\n var _this = this;\n this.currentControlIndex = 0;\n var nextTabId = e.selectingItem.getAttribute('data-id');\n var previousTabId = e.previousItem.getAttribute('data-id');\n var nextIndex = getIndex(this.tabs, (function (tab) { return (tab.id === nextTabId); }));\n var previousIndex = getIndex(this.tabs, (function (tab) { return (tab.id === previousTabId); }));\n nextIndex = nextIndex === -1 ? this.selectedTab : nextIndex;\n var eventArgs = {\n cancel: e.cancel, isInteracted: e.isInteracted, previousIndex: previousIndex, selectedIndex: nextIndex\n };\n this.trigger('tabSelecting', eventArgs, function (args) {\n if (args.cancel) {\n return;\n }\n _this.destroyScroll();\n if (!_this.isAddRemove && (previousIndex !== -1)) {\n _this.clearOverflowDropDown(previousIndex);\n }\n var selectedTabContent = _this.tabObj.items[parseInt(nextIndex.toString(), 10)].content;\n if ((!selectedTabContent.querySelector('.' + constants.RIBBON_GROUP)) && (_this.tabs[parseInt(nextIndex.toString(), 10)].groups.length !== 0)) {\n var elements = _this.createGroups(_this.tabs[parseInt(nextIndex.toString(), 10)].groups, nextIndex);\n append(elements, selectedTabContent);\n }\n });\n };\n Ribbon.prototype.createTabItems = function (tabs) {\n var _this = this;\n var tabItems = [];\n for (var i = 0; i < tabs.length; i++) {\n var ribbonTab = tabs[parseInt(i.toString(), 10)];\n var header = this.createElement('span', {\n innerHTML: ribbonTab.header,\n id: ribbonTab.id + constants.HEADER_ID\n });\n header.onclick = function () { _this.minimize(false); };\n header.ondblclick = function () { _this.minimize(true); };\n var tab = { header: { text: header }, id: ribbonTab.id, cssClass: ribbonTab.cssClass };\n var content = this.createElement('div', {\n className: tab.cssClass,\n id: ribbonTab.id + constants.CONTENT_ID\n });\n content.classList.add(constants.RIBBON_TAB_ITEM);\n tab.content = content;\n tabItems.push(tab);\n }\n return tabItems;\n };\n Ribbon.prototype.renderInitialTab = function (index) {\n var elements = this.createGroups(this.tabs[parseInt(index.toString(), 10)].groups, index);\n var content = this.tabObj.items[parseInt(index.toString(), 10)].content;\n append(elements, content);\n if (this.activeLayout === 'Simplified') {\n this.element.classList.add(constants.RIBBON_SIMPLIFIED_MODE);\n }\n var activeContent = this.tabObj.element.querySelector('#' + this.tabs[this.selectedTab].id + constants.CONTENT_ID);\n this.checkOverflow(this.selectedTab, activeContent);\n };\n Ribbon.prototype.addOverflowButton = function (btnId) {\n var _this = this;\n var overflowButton = this.createElement('button', {\n id: btnId\n });\n var overflowTarget = this.createElement('div', {\n className: constants.RIBBON_OVERFLOW_TARGET,\n attrs: { 'tabindex': '0' }\n });\n var overflowDDB = new DropDownButton({\n iconCss: constants.OVERFLOW_ICON,\n cssClass: constants.DROPDOWNBUTTON_HIDE + constants.SPACE + constants.RIBBON_GROUP_OVERFLOW_DDB,\n target: overflowTarget,\n locale: this.locale,\n enableRtl: this.enableRtl,\n enablePersistence: this.enablePersistence,\n beforeClose: function (args) {\n var ele = args.event ? closest(args.event.target, '.' + constants.RIBBON_POPUP_CONTROL) : null;\n if (ele) {\n args.cancel = true;\n }\n }\n }, overflowButton);\n this.element.classList.add(constants.RIBBON_OVERFLOW);\n createTooltip(overflowTarget, this);\n var isGroupOf;\n overflowButton.onkeydown = overflowButton.onclick = function () { _this.itemIndex = -1; isGroupOf = overflowButton.classList.contains('e-ribbon-overall-of-btn') ? false : true; };\n overflowTarget.onkeydown = function (e) { return (_this.upDownKeyHandler(e, overflowTarget, isGroupOf), _this); };\n return overflowDDB;\n };\n Ribbon.prototype.upDownKeyHandler = function (e, target, isGroupOf) {\n var items;\n if (isGroupOf) {\n items = target.getElementsByClassName('e-ribbon-item');\n }\n else {\n var currentList = target.querySelector('.e-ribbon-of-tab.e-ribbon-active');\n items = currentList.getElementsByClassName('e-ribbon-item');\n }\n var comboBoxEle = items[(!this.itemIndex || this.itemIndex < 0) ? 0 : this.itemIndex].querySelector('.e-control').classList.contains('e-combobox') ? items[(!this.itemIndex || this.itemIndex < 0) ? 0 : this.itemIndex].querySelector('.e-combobox') : null;\n var ribbonItem;\n if (comboBoxEle === null || (e.key === 'Tab') || this.itemIndex < 0) {\n if (e.key === 'ArrowDown' || (!e.shiftKey && e.key === 'Tab')) {\n if ((!this.itemIndex && this.itemIndex !== 0) || this.itemIndex < 0 || this.itemIndex === items.length - 1) {\n this.itemIndex = 0;\n ribbonItem = items[this.itemIndex].closest('.e-ribbon-item');\n this.findDisabledItem(ribbonItem, items, true);\n if (comboBoxEle && e.key === 'Tab') {\n e.preventDefault();\n items[this.itemIndex].querySelector('.e-control').focus();\n }\n }\n else if (this.itemIndex < items.length - 1 && this.itemIndex >= 0) {\n this.itemIndex++;\n ribbonItem = items[this.itemIndex].closest('.e-ribbon-item');\n this.findDisabledItem(ribbonItem, items, true);\n }\n }\n else if (e.key === 'ArrowUp' || (e.shiftKey && e.key === 'Tab')) {\n if (comboBoxEle === null || (e.key === 'Tab')) {\n if (!this.itemIndex || this.itemIndex === -1) {\n this.itemIndex = items.length - 1;\n ribbonItem = items[this.itemIndex].closest('.e-ribbon-item');\n this.findDisabledItem(ribbonItem, items, false);\n if (comboBoxEle && (e.shiftKey && e.key === 'Tab')) {\n e.preventDefault();\n items[this.itemIndex].querySelector('.e-control').focus();\n }\n }\n else if (this.itemIndex <= items.length - 1 && this.itemIndex > 0) {\n this.itemIndex--;\n ribbonItem = items[this.itemIndex].closest('.e-ribbon-item');\n this.findDisabledItem(ribbonItem, items, false);\n }\n }\n }\n target.setAttribute('index', this.itemIndex.toString());\n }\n var currentItemIndex = parseInt(target.getAttribute('index'), 10);\n var itemType = items[parseInt(currentItemIndex.toString(), 10)] ? items[parseInt(currentItemIndex.toString(), 10)].querySelector('.e-control').getAttribute('data-control') : null;\n if (e.key === 'ArrowDown' || e.key === 'ArrowUp' || e.key === ' ' || e.key === 'Tab') {\n if (itemType === 'ColorPicker') {\n if (e.key === 'Tab') {\n e.preventDefault();\n }\n items[parseInt(currentItemIndex.toString(), 10)].querySelector('.e-split-colorpicker').focus();\n }\n else {\n if (e.key === 'Tab') {\n e.preventDefault();\n }\n items[parseInt(currentItemIndex.toString(), 10)].querySelector('.e-control').focus();\n }\n if (e.key === ' ' && (itemType === 'CheckBox')) {\n var checkBoxEle = items[parseInt(currentItemIndex.toString(), 10)].querySelector('.e-control');\n var checkBox = getComponent(checkBoxEle, CheckBox);\n this.itemIndex = -1;\n checkBox.click();\n }\n }\n if (((itemType === 'SplitButton') && (e.key === 'ArrowRight' || e.key === 'ArrowLeft'))) {\n if (e.key === 'ArrowRight') {\n this.enableRtl ? items[parseInt(currentItemIndex.toString(), 10)].querySelector('.e-control').focus() :\n items[parseInt(currentItemIndex.toString(), 10)].querySelector('.e-dropdown-btn').focus();\n }\n if (e.key === 'ArrowLeft') {\n this.enableRtl ? items[parseInt(currentItemIndex.toString(), 10)].querySelector('.e-dropdown-btn').focus() :\n items[parseInt(currentItemIndex.toString(), 10)].querySelector('.e-control').focus();\n }\n }\n if (e.key === 'Enter') {\n this.itemIndex = -1;\n }\n };\n Ribbon.prototype.findDisabledItem = function (ribbonItem, items, isIncrease) {\n while (ribbonItem && ribbonItem.classList.contains('e-disabled')) {\n if (isIncrease) {\n if (this.itemIndex === items.length - 1 && items[this.itemIndex].closest('.e-ribbon-item').classList.contains('e-disabled')) {\n this.itemIndex = -1;\n }\n }\n else {\n if (this.itemIndex === 0 && items[this.itemIndex].closest('.e-ribbon-item').classList.contains('e-disabled')) {\n this.itemIndex = items.length;\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n isIncrease ? this.itemIndex++ : this.itemIndex--;\n ribbonItem = items[this.itemIndex].closest('.e-ribbon-item');\n }\n };\n Ribbon.prototype.removeOverflowButton = function (overflowDDB) {\n if (overflowDDB) {\n var btnEle = overflowDDB.element;\n destroyTooltip(overflowDDB.target);\n overflowDDB.destroy();\n btnEle.remove();\n }\n };\n Ribbon.prototype.removeOverflowEvent = function (item, itemEle) {\n switch (item.type) {\n case 'Button':\n this.ribbonButtonModule.removeOverFlowEvents(item, itemEle);\n break;\n case 'DropDown':\n this.ribbonDropDownModule.removeOverFlowEvents(item, itemEle);\n break;\n case 'SplitButton':\n this.ribbonSplitButtonModule.removeOverFlowEvents(item, itemEle);\n break;\n case 'CheckBox':\n this.ribbonCheckBoxModule.removeOverFlowEvents(item, itemEle);\n break;\n case 'ColorPicker':\n this.ribbonColorPickerModule.removeOverFlowEvents(item, itemEle);\n break;\n case 'ComboBox':\n this.ribbonComboBoxModule.removeOverFlowEvents(item, itemEle);\n break;\n case 'GroupButton':\n this.ribbonGroupButtonModule.removeOverFlowEvents(item, itemEle);\n break;\n }\n };\n Ribbon.prototype.createGroupContainer = function (groupId, groupHeader) {\n var ofGroupContainer = this.createElement('div', {\n className: constants.RIBBON_OF_GROUP_CONTAINER,\n id: groupId + constants.CONTAINER_ID\n });\n var ofGroupHeader = this.createElement('div', {\n className: constants.RIBBON_OVERFLOW_HEADER,\n id: groupId + constants.HEADER_ID,\n innerHTML: groupHeader\n });\n ofGroupContainer.append(ofGroupHeader);\n return ofGroupContainer;\n };\n Ribbon.prototype.addExpandCollapse = function () {\n var _this = this;\n this.collapseButton = this.createElement('span', {\n className: constants.RIBBON_COLLAPSE_BUTTON + constants.SPACE + constants.EXPAND_COLLAPSE_ICON,\n id: this.tabObj.element.id + constants.COLLAPSE_BUTTON_ID,\n attrs: { 'tabindex': '0', 'type': 'button', 'aria-label': 'Layout Switcher', 'role': 'button' }\n });\n this.collapseButton.onclick = function () { _this.toggleLayout(); };\n this.collapseButton.onkeydown = function (e) {\n if (e.key === 'Enter') {\n _this.toggleLayout();\n }\n };\n this.element.classList.add(constants.RIBBON_COLLAPSIBLE);\n if (this.activeLayout === 'Simplified') {\n this.collapseButton.classList.add(constants.RIBBON_EXPAND_BUTTON);\n }\n this.tabObj.element.appendChild(this.collapseButton);\n };\n Ribbon.prototype.removeExpandCollapse = function () {\n var _this = this;\n var index = getIndex(this.tooltipData, function (e) { return e.id === _this.collapseButton.id; });\n if (index !== -1) {\n this.tooltipData.splice(index, 1);\n }\n this.element.classList.remove(constants.RIBBON_COLLAPSIBLE);\n remove(this.tabObj.element.querySelector('.' + constants.RIBBON_COLLAPSE_BUTTON));\n this.collapseButton = null;\n };\n Ribbon.prototype.reRenderTabs = function (tabs) {\n this.destroyScroll();\n this.checkID(this.tabs, 'tab', this.element.id);\n for (var key in tabs) {\n var index = parseInt(key, 10);\n var tab = tabs[parseInt(index.toString(), 10)];\n var isNewTab = false;\n for (var j = 0; j < (this.tabObj.items.length); j++) {\n if (this.tabs[parseInt(index.toString(), 10)].id === this.tabObj.items[parseInt(j.toString(), 10)].id) {\n isNewTab = true;\n break;\n }\n }\n if (!isNewTab) {\n this.destroyTabItems(this.tabsInternal);\n this.tabsInternal = this.tabs.slice();\n this.validateItemSize();\n var tabItems = this.createTabItems(this.tabs);\n if (this.selectedTab >= this.tabs.length) {\n this.selectedTab = this.tabs.length - 1;\n }\n this.tabObj.setProperties({ items: tabItems, selectedItem: this.selectedTab });\n break;\n }\n else {\n var groups = this.tabs[parseInt(index.toString(), 10)].groups;\n var tabEle = this.tabObj.element;\n var ribbonTab = this.tabs[parseInt(index.toString(), 10)];\n ribbonTab.setProperties(tab, true);\n this.setProperties({ groups: this.checkID(ribbonTab.groups, 'group', ribbonTab.id) }, true);\n this.validateItemSize();\n var contentEle = this.tabObj.items[parseInt(index.toString(), 10)].content;\n if (groups) {\n // Check whether header is passed by the user and sets the updated values.\n if (tab.header) {\n this.tabObj.items[parseInt(index.toString(), 10)].header.text.innerText = ribbonTab.header;\n }\n // Check whether cssClass is passed by the user, and if it is, then remove the old values.\n if (tab.cssClass) {\n if (this.tabObj.items[parseInt(index.toString(), 10)].cssClass) {\n contentEle.classList.remove(this.tabObj.items[parseInt(index.toString(), 10)].cssClass);\n tabEle.querySelector('.e-active').classList.remove(this.tabObj.items[parseInt(index.toString(), 10)].cssClass);\n }\n contentEle.classList.add(ribbonTab.cssClass);\n tabEle.querySelector('.e-active').classList.add(ribbonTab.cssClass);\n }\n // Check whether group is passed by the user, and if it is, then remove the old values.\n if (tab.groups) {\n for (var _i = 0, groups_1 = groups; _i < groups_1.length; _i++) {\n var group = groups_1[_i];\n var dropdownElement = group.isCollapsed ? contentEle.querySelector('#' + group.id + constants.OVERFLOW_ID + constants.DROPDOWN_ID) : null;\n for (var _a = 0, _b = group.collections; _a < _b.length; _a++) {\n var collection = _b[_a];\n for (var _c = 0, _d = collection.items; _c < _d.length; _c++) {\n var item = _d[_c];\n var ele = dropdownElement ? this.ribbonDropDownModule.getDDBItemElement(dropdownElement, item.id) : contentEle.querySelector('#' + item.id);\n if (ele) {\n this.destroyFunction(item, ele);\n }\n }\n }\n if (dropdownElement) {\n this.ribbonDropDownModule.removeOverFlowDropDown(dropdownElement);\n }\n }\n var groupElements = contentEle.querySelectorAll('.e-ribbon-group');\n // eslint-disable-next-line @typescript-eslint/tslint/config\n groupElements.forEach(function (groupEle) { groupEle.remove(); });\n var elements = this.createGroups(ribbonTab.groups, index);\n append(elements, contentEle);\n }\n }\n }\n }\n var activeContent = this.tabObj.element.querySelector('#' + this.tabs[this.selectedTab].id + constants.CONTENT_ID);\n this.checkOverflow(this.selectedTab, activeContent);\n };\n Ribbon.prototype.switchLayout = function () {\n this.currentControlIndex = 0;\n this.destroyScroll();\n this.collapseButton.classList.toggle(constants.RIBBON_EXPAND_BUTTON, this.activeLayout === 'Simplified');\n this.element.classList.toggle(constants.RIBBON_SIMPLIFIED_MODE, this.activeLayout === 'Simplified');\n for (var i = 0; i <= (this.tabs.length - 1); i++) {\n var tabIndex = i;\n var contentEle = this.tabObj.items[parseInt(tabIndex.toString(), 10)].content;\n if (contentEle.innerHTML !== '') {\n var tab = this.tabs[parseInt(tabIndex.toString(), 10)];\n var groupList = this.tabs[parseInt(tabIndex.toString(), 10)].groups;\n var activeContent = this.tabObj.element.querySelector('#' + this.tabs[parseInt(tabIndex.toString(), 10)].id + constants.CONTENT_ID);\n var tabContent = activeContent.closest('.' + constants.TAB_CONTENT);\n if (this.activeLayout === 'Simplified') {\n for (var i_1 = 0; i_1 < groupList.length; i_1++) {\n var group = groupList[parseInt(i_1.toString(), 10)];\n var alignType = groupList[parseInt(i_1.toString(), 10)].orientation;\n if (group.isCollapsed) {\n group.setProperties({ isCollapsed: false }, true);\n this.removeDropdown(group.id);\n }\n else {\n this.checkSmallToMedium(tabIndex, tab, i_1, tabContent, activeContent, true, false);\n this.checkMediumToLarge(tabIndex, tab, i_1, tabContent, activeContent, true, false);\n }\n var groupEle = tabContent.querySelector('#' + group.id);\n var groupContainer = groupEle.querySelector('#' + group.id + constants.CONTAINER_ID);\n var shrinkColumns = groupContainer.querySelectorAll('.' + 'e-ribbon-shrink');\n for (var i_2 = 0; i_2 < shrinkColumns.length; i_2++) {\n shrinkColumns[parseInt(i_2.toString(), 10)].remove();\n }\n var groupHeader = groupContainer.querySelector('#' + group.id + constants.HEADER_ID);\n groupHeader.remove();\n var groupContent = groupContainer.querySelector('#' + group.id + constants.CONTENT_ID);\n groupContent.classList.replace(constants.RIBBON_ROW, constants.RIBBON_COLUMN);\n groupContent.classList.remove(constants.RIBBON_CONTENT_HEIGHT);\n for (var j = 0; j < group.collections.length; j++) {\n var collection = group.collections[parseInt(j.toString(), 10)];\n var groupCollection = groupContainer.querySelector('#' + collection.id);\n groupCollection.classList.replace(constants.RIBBON_ROW, constants.RIBBON_COLUMN);\n for (var k = 0; k < collection.items.length; k++) {\n var itemList = collection.items;\n var item = collection.items[parseInt(k.toString(), 10)];\n var flag = true;\n while ((flag) && (item.displayOptions === DisplayMode.Classic)) {\n k++;\n var itemEle_1 = groupContainer.querySelector('#' + item.id + constants.CONTAINER_ID);\n var ele = itemEle_1.querySelector('#' + item.id);\n this.destroyFunction(item, ele);\n itemEle_1.remove();\n if (k < itemList.length) {\n item = itemList[parseInt(k.toString(), 10)];\n }\n else {\n flag = false;\n }\n }\n if (!flag) {\n break;\n }\n var size = ((item.allowedSizes === RibbonItemSize.Large) ||\n (item.allowedSizes & RibbonItemSize.Medium)) ? RibbonItemSize.Medium : RibbonItemSize.Small;\n size = (!(item.displayOptions & DisplayMode.Simplified) && (item.displayOptions & DisplayMode.Overflow))\n ? RibbonItemSize.Medium : size;\n var itemEle = void 0;\n if (!(item.displayOptions & DisplayMode.Classic)) {\n itemEle = this.createItems([item], alignType, group.id, group.header, group.enableGroupOverflow, tabIndex, groupContainer)[0];\n if (item.displayOptions & DisplayMode.Simplified) {\n groupCollection.append(itemEle);\n }\n }\n else {\n itemEle = groupContainer.querySelector('#' + item.id + constants.CONTAINER_ID);\n if (item.displayOptions === (DisplayMode.Classic | DisplayMode.Overflow)) {\n this.createOverflowPopup(item, tabIndex, group.enableGroupOverflow, group.id, group.header, itemEle, groupContainer);\n if ((item.type === RibbonItemType.DropDown) || (item.type === RibbonItemType.SplitButton) || (item.type === RibbonItemType.GroupButton)) {\n this.updatePopupItems(item, itemEle, group.enableGroupOverflow, true);\n }\n }\n if (item.type === RibbonItemType.GroupButton) {\n this.ribbonGroupButtonModule.switchGroupButton(item, itemEle);\n }\n item.setProperties({ activeSize: size }, true);\n var ele = itemEle.querySelector('#' + item.id);\n this.setItemSize(ele, item);\n }\n }\n }\n if (!(group.enableGroupOverflow || groupEle.querySelector('.' + constants.RIBBON_ITEM))) {\n groupEle.classList.add('e-ribbon-emptyCollection');\n }\n }\n }\n else {\n this.element.classList.remove(constants.RIBBON_OVERFLOW);\n for (var i_3 = 0; i_3 < groupList.length; i_3++) {\n var group = groupList[parseInt(i_3.toString(), 10)];\n var alignType = groupList[parseInt(i_3.toString(), 10)].orientation;\n var groupContainer = tabContent.querySelector('#' + group.id + constants.CONTAINER_ID);\n var groupContent = groupContainer.querySelector('#' + group.id + constants.CONTENT_ID);\n var groupHeader = this.createElement('div', {\n className: constants.RIBBON_GROUP_HEADER,\n id: group.id + constants.HEADER_ID,\n innerHTML: group.header\n });\n groupContainer.appendChild(groupHeader);\n if (alignType === 'Row') {\n groupContent.classList.replace(constants.RIBBON_COLUMN, constants.RIBBON_ROW);\n }\n groupContent.classList.add(constants.RIBBON_CONTENT_HEIGHT);\n for (var j = 0; j < group.collections.length; j++) {\n var overflowDDB = void 0;\n var overflowtarget = void 0;\n if (!group.enableGroupOverflow) {\n overflowDDB = this.overflowDDB;\n if (overflowDDB) {\n overflowtarget = this.overflowDDB.target;\n }\n }\n else {\n var overflowDDBEle = groupContainer.querySelector('#' + group.id + constants.GROUPOF_BUTTON_ID);\n if (overflowDDBEle) {\n overflowDDB = getInstance(overflowDDBEle, DropDownButton);\n overflowtarget = overflowDDB.target;\n }\n }\n var collection = group.collections[parseInt(j.toString(), 10)];\n var groupCollection = groupContainer.querySelector('#' + collection.id);\n if (alignType === 'Column') {\n groupCollection.classList.replace(constants.RIBBON_COLUMN, constants.RIBBON_ROW);\n }\n for (var k = 0; k < collection.items.length; k++) {\n var itemList = collection.items;\n var item = collection.items[parseInt(k.toString(), 10)];\n var flag = true;\n while ((flag) && !(item.displayOptions & DisplayMode.Classic)) {\n k++;\n var itemEle = void 0;\n if ((item.displayOptions & DisplayMode.Simplified) || (item.displayOptions & DisplayMode.Overflow)) {\n if (item.displayOptions & DisplayMode.Simplified) {\n itemEle = groupContainer.querySelector('#' + item.id + constants.CONTAINER_ID);\n }\n else {\n itemEle = overflowtarget.querySelector('#' + item.id + constants.CONTAINER_ID);\n }\n if (itemEle !== null) {\n var ele_8 = itemEle.querySelector('#' + item.id);\n this.destroyFunction(item, ele_8);\n itemEle.remove();\n }\n }\n if (k < itemList.length) {\n item = itemList[parseInt(k.toString(), 10)];\n }\n else {\n flag = false;\n }\n }\n if (!flag) {\n break;\n }\n if (!(item.displayOptions & (DisplayMode.Simplified | DisplayMode.Overflow))) {\n var itemEle = this.createItems([item], alignType, group.id, group.header, group.enableGroupOverflow, tabIndex)[0];\n groupCollection.append(itemEle);\n }\n else {\n var itemEle = groupContainer.querySelector('#' + item.id + constants.CONTAINER_ID);\n if (!itemEle) {\n itemEle = overflowtarget.querySelector('#' + item.id + constants.CONTAINER_ID);\n if ((item.type === RibbonItemType.DropDown) || (item.type === RibbonItemType.SplitButton) || (item.type === RibbonItemType.GroupButton)) {\n this.updatePopupItems(item, itemEle, group.enableGroupOverflow, false);\n }\n this.removeOverflowEvent(item, itemEle);\n }\n if (item.type === RibbonItemType.GroupButton) {\n this.ribbonGroupButtonModule.switchGroupButton(item, itemEle);\n }\n groupCollection.append(itemEle);\n }\n var ele = groupContainer.querySelector('#' + item.id);\n if (item.type === RibbonItemType.GroupButton) {\n ele = groupContainer.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID);\n }\n var itemsize = (item.allowedSizes & RibbonItemSize.Large) ? RibbonItemSize.Large :\n (item.allowedSizes & RibbonItemSize.Medium) ? RibbonItemSize.Medium : RibbonItemSize.Small;\n item.setProperties({ activeSize: itemsize }, true);\n this.setItemSize(ele, item);\n }\n if (group.enableGroupOverflow && overflowDDB) {\n if (overflowtarget.childElementCount === 0) {\n this.removeOverflowButton(overflowDDB);\n }\n }\n }\n }\n }\n if (this.selectedTab === tabIndex) {\n this.checkOverflow(tabIndex, activeContent);\n }\n }\n }\n if (this.activeLayout === 'Classic') {\n this.removeOverflowButton(this.overflowDDB);\n this.overflowDDB = null;\n }\n };\n Ribbon.prototype.createLauncherIcon = function (groupId, groupContainer) {\n var _this = this;\n var launcherIcon = this.createElement('div', {\n className: constants.RIBBON_LAUNCHER_ICON_ELE + ' ' + (this.launcherIconCss ? this.launcherIconCss : constants.RIBBON_LAUNCHER_ICON),\n id: groupId + constants.LAUNCHER_ID,\n attrs: { 'tabindex': '0', 'type': 'button', 'aria-label': 'Launcher Icon', 'role': 'button' }\n });\n groupContainer.appendChild(launcherIcon);\n groupContainer.classList.add(constants.RIBBON_LAUNCHER);\n EventHandler.add(launcherIcon, 'click', this.launcherIconClicked.bind(this, groupId), this);\n EventHandler.add(launcherIcon, 'keydown', function (e) {\n if (e.key === 'Enter') {\n _this.launcherIconClicked(groupId);\n }\n }, this);\n };\n Ribbon.prototype.launcherIconClicked = function (id) {\n var eventArgs = { groupId: id };\n this.trigger('launcherIconClick', eventArgs);\n };\n Ribbon.prototype.createGroups = function (groupList, tabIndex) {\n var groupElements = [];\n for (var i = 0; i < groupList.length; i++) {\n var group = groupList[parseInt(i.toString(), 10)];\n var alignType = group.orientation;\n var groupEle = this.createElement('div', {\n className: group.cssClass,\n id: group.id\n });\n groupEle.classList.add(constants.RIBBON_GROUP);\n groupElements.push(groupEle);\n var groupContainer = this.createElement('div', {\n className: group.cssClass,\n id: group.id + constants.CONTAINER_ID\n });\n groupContainer.classList.add(constants.RIBBON_GROUP_CONTAINER);\n groupEle.appendChild(groupContainer);\n var groupContent = this.createElement('div', {\n className: this.activeLayout === 'Simplified' ? constants.RIBBON_GROUP_CONTENT : (constants.RIBBON_GROUP_CONTENT + constants.SPACE + constants.RIBBON_CONTENT_HEIGHT),\n id: group.id + constants.CONTENT_ID\n });\n groupContent.classList.add(((alignType === 'Column') || (this.activeLayout === 'Simplified')) ? constants.RIBBON_COLUMN : constants.RIBBON_ROW);\n groupContainer.appendChild(groupContent);\n if (this.activeLayout === 'Classic') {\n var groupHeader = this.createElement('div', {\n className: constants.RIBBON_GROUP_HEADER,\n id: group.id + constants.HEADER_ID,\n innerHTML: group.header\n });\n groupContainer.appendChild(groupHeader);\n }\n if (group.showLauncherIcon) {\n this.createLauncherIcon(group.id, groupContainer);\n }\n var elements = this.createCollection(group.collections, group.orientation, group.id, group.header, group.enableGroupOverflow, tabIndex, groupContainer);\n append(elements, groupContent);\n if ((this.activeLayout === 'Simplified') && !(group.enableGroupOverflow || groupEle.querySelector('.' + constants.RIBBON_ITEM))) {\n groupEle.classList.add('e-ribbon-emptyCollection');\n }\n }\n return groupElements;\n };\n Ribbon.prototype.validateItemSize = function () {\n for (var k = 0; k < this.tabs.length; k++) {\n var groupList = this.tabs[parseInt(k.toString(), 10)].groups;\n for (var l = 0; l < groupList.length; l++) {\n var collectionList = groupList[parseInt(l.toString(), 10)].collections;\n var alignType = groupList[parseInt(l.toString(), 10)].orientation;\n for (var i = 0; i < collectionList.length; i++) {\n var items = collectionList[parseInt(i.toString(), 10)].items;\n for (var j = 0; j < items.length; j++) {\n var ribbonitem = items[parseInt(j.toString(), 10)];\n if (!ribbonitem.allowedSizes || (ribbonitem.allowedSizes === 0)) {\n ribbonitem.setProperties({\n allowedSizes: (RibbonItemSize.Small | RibbonItemSize.Medium | RibbonItemSize.Large)\n }, true);\n }\n if ((ribbonitem.type === 'ColorPicker') && (ribbonitem.allowedSizes !== RibbonItemSize.Small)) {\n ribbonitem.setProperties({ allowedSizes: RibbonItemSize.Small }, true);\n }\n else if ((ribbonitem.type === 'ComboBox' || ribbonitem.type === 'CheckBox') &&\n (ribbonitem.allowedSizes !== RibbonItemSize.Medium)) {\n ribbonitem.setProperties({ allowedSizes: RibbonItemSize.Medium }, true);\n }\n else if (((alignType === 'Column') && (items.length > 1)) || ((alignType === 'Row') && (collectionList.length > 1))) {\n if (ribbonitem.allowedSizes & RibbonItemSize.Large) {\n // To remove large size, perform 'and' with 011(3).\n var sizeVal = ribbonitem.allowedSizes & (RibbonItemSize.Small | RibbonItemSize.Medium);\n sizeVal = sizeVal ? sizeVal : RibbonItemSize.Medium;\n ribbonitem.setProperties({ allowedSizes: sizeVal }, true);\n }\n }\n var itemsize = (ribbonitem.allowedSizes & RibbonItemSize.Large) ? RibbonItemSize.Large :\n (ribbonitem.allowedSizes & RibbonItemSize.Medium) ? RibbonItemSize.Medium : RibbonItemSize.Small;\n ribbonitem.setProperties({ activeSize: itemsize }, true);\n }\n }\n }\n }\n };\n Ribbon.prototype.createCollection = function (collectionList, alignType, groupId, groupHeader, isGroupOF, tabIndex, groupContainer) {\n var collectionElements = [];\n for (var i = 0; i < collectionList.length; i++) {\n var collection = collectionList[parseInt(i.toString(), 10)];\n var collectionEle = this.createElement('div', {\n className: collection.cssClass,\n id: collection.id\n });\n collectionEle.classList.add(constants.RIBBON_COLLECTION);\n collectionEle.classList.add(((alignType !== 'Column') || (this.activeLayout === 'Simplified')) ?\n constants.RIBBON_COLUMN : constants.RIBBON_ROW);\n collectionElements.push(collectionEle);\n var elements = this.createItems(collection.items, alignType, groupId, groupHeader, isGroupOF, tabIndex, groupContainer);\n append(elements, collectionEle);\n if ((alignType === 'Row') && (i === 2)) {\n break;\n }\n }\n return collectionElements;\n };\n Ribbon.prototype.createRibbonItem = function (item, itemEle) {\n switch (item.type) {\n case 'Button':\n this.ribbonButtonModule.createButton(item, itemEle);\n break;\n case 'DropDown':\n this.ribbonDropDownModule.createDropDown(item, itemEle);\n break;\n case 'SplitButton':\n this.ribbonSplitButtonModule.createSplitButton(item, itemEle);\n break;\n case 'CheckBox':\n this.ribbonCheckBoxModule.createCheckBox(item, itemEle);\n break;\n case 'ColorPicker':\n this.ribbonColorPickerModule.createColorPicker(item, itemEle);\n break;\n case 'ComboBox':\n this.ribbonComboBoxModule.createComboBox(item, itemEle);\n break;\n case 'Template':\n this.createTemplateContent(item, itemEle);\n break;\n case 'GroupButton':\n this.ribbonGroupButtonModule.createGroupButton(item, itemEle);\n break;\n }\n };\n Ribbon.prototype.createItems = function (itemList, alignType, groupId, groupHeader, isGroupOF, tabIndex, groupContainer) {\n var _a;\n var itemElements = [];\n for (var i = 0; i < itemList.length; i++) {\n var item = itemList[parseInt(i.toString(), 10)];\n //To stop rendering of items with simplified mode position type as none\n var flag = true;\n while (flag &&\n (((this.activeLayout === 'Simplified') && !(item.displayOptions & (DisplayMode.Simplified | DisplayMode.Overflow))) ||\n ((this.activeLayout === 'Classic') && !(item.displayOptions & DisplayMode.Classic)))) {\n i++;\n if (i < itemList.length) {\n item = itemList[parseInt(i.toString(), 10)];\n }\n else {\n flag = false;\n }\n }\n if (!flag) {\n break;\n }\n var itemEle = this.createElement('div', {\n className: item.cssClass,\n id: item.id + constants.CONTAINER_ID\n });\n (_a = itemEle.classList).add.apply(_a, [constants.RIBBON_ITEM].concat((item.disabled ? [constants.DISABLED_CSS] : [])));\n // To avoid undefined items condition is added\n if (item.ribbonTooltipSettings && isTooltipPresent(item.ribbonTooltipSettings)) {\n itemEle.classList.add(constants.RIBBON_TOOLTIP_TARGET);\n this.tooltipData.push({ id: itemEle.id, data: item.ribbonTooltipSettings });\n }\n var size = item.activeSize;\n if (this.activeLayout === 'Simplified') {\n size = ((item.allowedSizes === RibbonItemSize.Large) || (item.allowedSizes & RibbonItemSize.Medium) ||\n (item.displayOptions === DisplayMode.Overflow)) ? RibbonItemSize.Medium : RibbonItemSize.Small;\n item.setProperties({ activeSize: size }, true);\n }\n if (size & RibbonItemSize.Large) {\n itemEle.classList.add(constants.RIBBON_LARGE_ITEM, constants.RIBBON_CONTENT_HEIGHT);\n }\n else {\n itemEle.classList.add((size & RibbonItemSize.Medium) ? constants.RIBBON_MEDIUM_ITEM : constants.RIBBON_SMALL_ITEM);\n }\n this.createRibbonItem(item, itemEle);\n if ((this.activeLayout === 'Simplified') && ((item.displayOptions === DisplayMode.Overflow) || (item.displayOptions === (DisplayMode.Classic | DisplayMode.Overflow)))) {\n this.createOverflowPopup(item, tabIndex, isGroupOF, groupId, groupHeader, itemEle, groupContainer);\n if ((item.type === RibbonItemType.DropDown) || (item.type === RibbonItemType.SplitButton) || (item.type === RibbonItemType.GroupButton)) {\n this.updatePopupItems(item, itemEle, isGroupOF, true);\n }\n }\n else {\n // For normal mode and Simplified mode position type as Group and Auto\n itemElements.push(itemEle);\n }\n if ((alignType === 'Column') && (i === 2)) {\n break;\n }\n }\n return itemElements;\n };\n Ribbon.prototype.createHelpPaneTemplate = function () {\n if (this.helpPaneTemplate) {\n var templateName = 'helpPaneTemplate';\n this.clearTemplate([templateName]);\n this.ribbonTempEle = this.createElement('div', {\n className: constants.RIBBON_HELP_TEMPLATE,\n id: this.element.id + constants.RIBBON_HELP_PANE_TEMPLATE_ID\n });\n var templateFunction = getTemplateFunction(this.helpPaneTemplate);\n append(templateFunction({}, this, templateName, 'helpPaneTemplate', this.isStringTemplate), this.ribbonTempEle);\n var tabEle = this.tabObj.element;\n var toolbarEle = tabEle.querySelector('.e-toolbar');\n toolbarEle.after(this.ribbonTempEle);\n tabEle.style.setProperty(constants.RIBBON_HELP_PANE_TEMPLATE_WIDTH, this.ribbonTempEle.offsetWidth + 'px');\n this.renderReactTemplates();\n }\n };\n Ribbon.prototype.createTemplateContent = function (item, itemElement) {\n var itemEle = this.createElement('div', {\n className: item.cssClass ? (constants.RIBBON_TEMPLATE + constants.SPACE + item.cssClass) : constants.RIBBON_TEMPLATE,\n id: item.id\n });\n if (item.disabled) {\n itemEle.classList.add(constants.DISABLED_CSS);\n itemEle.setAttribute('disabled', '');\n }\n itemElement.appendChild(itemEle);\n this.renderItemTemplate(item, itemEle);\n };\n Ribbon.prototype.renderItemTemplate = function (item, itemElement) {\n var templateName = 'ribbon' + item.id + 'itemTemplate';\n this.clearTemplate([templateName]);\n var templateFunction = getTemplateFunction(item.itemTemplate);\n append(templateFunction({ activeSize: RibbonItemSize[item.activeSize] }, this, templateName, (item.id + 'itemTemplate'), this.isStringTemplate), itemElement);\n this.renderReactTemplates();\n };\n Ribbon.prototype.checkID = function (list, type, initId) {\n var key = type === 'tab' ? constants.TAB_ID : type === 'group' ? constants.GROUP_ID :\n type === 'collection' ? constants.COLLECTION_ID : constants.ITEM_ID;\n for (var i = 0; i < list.length; i++) {\n var listitem = list[parseInt(i.toString(), 10)];\n if (!listitem.id) {\n listitem.setProperties({ id: initId + key + (this.idIndex++) }, true);\n }\n switch (type) {\n case 'tab':\n listitem.setProperties({ groups: this.checkID(listitem.groups, 'group', listitem.id) }, true);\n break;\n case 'group':\n listitem.setProperties({ collections: this.checkID(listitem.collections, 'collection', listitem.id) }, true);\n break;\n case 'collection':\n listitem.setProperties({ items: this.checkID(listitem.items, 'item', listitem.id) }, true);\n break;\n default:\n break;\n }\n }\n return list;\n };\n Ribbon.prototype.updateCommonProperty = function (commonProp) {\n this.tabObj.setProperties(commonProp);\n if (this.ribbonFileMenuModule) {\n this.ribbonFileMenuModule.setCommonProperties(commonProp);\n }\n if (this.ribbonBackstageModule) {\n this.ribbonBackstageModule.setCommonProperties(commonProp);\n }\n for (var i = 0; i < this.tabs.length; i++) {\n var tab = this.tabs[parseInt(i.toString(), 10)];\n var contentEle = this.tabObj.items[parseInt(i.toString(), 10)].content;\n if (contentEle.querySelector('.' + constants.RIBBON_GROUP)) {\n for (var _i = 0, _a = tab.groups; _i < _a.length; _i++) {\n var group = _a[_i];\n var dropdownElement = void 0;\n var dropdown = void 0;\n if (this.activeLayout === RibbonLayout.Classic) {\n dropdownElement = group.isCollapsed ?\n contentEle.querySelector('#' + group.id + constants.OVERFLOW_ID + constants.DROPDOWN_ID) : null;\n }\n else {\n dropdownElement = group.enableGroupOverflow ?\n contentEle.querySelector('#' + group.id + constants.GROUPOF_BUTTON_ID) : null;\n dropdown = dropdownElement ? getComponent(dropdownElement, DropDownButton) : this.overflowDDB;\n if (dropdown) {\n updateTooltipProp(dropdown.target, commonProp);\n dropdown.setProperties(commonProp);\n }\n }\n for (var _b = 0, _c = group.collections; _b < _c.length; _b++) {\n var collection = _c[_b];\n for (var _d = 0, _e = collection.items; _d < _e.length; _d++) {\n var item = _e[_d];\n var ele = null;\n if (this.activeLayout === RibbonLayout.Classic) {\n if (item.displayOptions & DisplayMode.Classic) {\n ele = dropdownElement ? this.ribbonDropDownModule.getDDBItemElement(dropdownElement, item.id) : item.type === RibbonItemType.GroupButton ? contentEle.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID) : contentEle.querySelector('#' + item.id);\n }\n }\n else {\n //Checks for Simplified and Auto options (Auto = classic + simplified + popup)\n ele = (item.displayOptions & DisplayMode.Simplified) ? contentEle.querySelector('#' + item.id) : null;\n // element will be null for \"Popup\" and if the item is moved to overflow in \"Auto\" mode\n if (!ele) {\n ele = dropdown.target.querySelector('#' + item.id);\n if (item.type === 'DropDown') {\n this.updatePopupItems(item, dropdown.target, group.enableGroupOverflow, true);\n }\n }\n }\n if (ele) {\n var moduleName = this.getItemModuleName(item);\n if (moduleName !== 'template') {\n if (moduleName === 'group-btn' && this.activeLayout === 'Classic') {\n for (var i_4 = 0; i_4 < item.groupButtonSettings.items.length; i_4++) {\n var btnEle = ele.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + i_4);\n updateCommonProperty(btnEle, 'btn', commonProp);\n }\n }\n else if (moduleName === 'group-btn' && this.activeLayout === 'Simplified') {\n updateCommonProperty(ele, 'dropdown-btn', commonProp);\n for (var i_5 = 0; i_5 < item.groupButtonSettings.items.length; i_5++) {\n var btnEle = document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + i_5);\n updateCommonProperty(btnEle, 'btn', commonProp);\n }\n }\n else {\n updateCommonProperty(ele, moduleName, commonProp);\n }\n }\n else if (!isNullOrUndefined(commonProp.enableRtl)) {\n ele.classList.toggle(constants.RTL_CSS, commonProp.enableRtl);\n }\n }\n }\n }\n }\n }\n }\n };\n Ribbon.prototype.removeLauncherIcon = function (groupId, dropdownElement, contentEle) {\n var containerId = groupId + constants.CONTAINER_ID;\n var containerEle = dropdownElement ? this.ribbonDropDownModule.getDDBItemElement(dropdownElement, containerId) : contentEle.querySelector('#' + containerId);\n if (containerEle) {\n containerEle.classList.remove(constants.RIBBON_LAUNCHER);\n var launcherIcon = containerEle.querySelector('#' + groupId + constants.LAUNCHER_ID);\n remove(launcherIcon);\n }\n };\n Ribbon.prototype.destroyTabItems = function (tabs) {\n for (var i = 0; i < tabs.length; i++) {\n var tab = tabs[parseInt(i.toString(), 10)];\n var contentEle = this.tabObj.items[parseInt(i.toString(), 10)].content;\n for (var _i = 0, _a = tab.groups; _i < _a.length; _i++) {\n var group = _a[_i];\n var dropdownElement = void 0;\n var dropdown = void 0;\n if (this.activeLayout === RibbonLayout.Classic) {\n dropdownElement = group.isCollapsed ?\n contentEle.querySelector('#' + group.id + constants.OVERFLOW_ID + constants.DROPDOWN_ID) : null;\n if (group.showLauncherIcon) {\n this.removeLauncherIcon(group.id, dropdownElement, contentEle);\n }\n }\n else {\n dropdownElement = group.enableGroupOverflow ?\n contentEle.querySelector('#' + group.id + constants.GROUPOF_BUTTON_ID) : null;\n dropdown = dropdownElement ? getComponent(dropdownElement, DropDownButton) : this.overflowDDB;\n }\n for (var _b = 0, _c = group.collections; _b < _c.length; _b++) {\n var collection = _c[_b];\n for (var _d = 0, _e = collection.items; _d < _e.length; _d++) {\n var item = _e[_d];\n var ele = void 0;\n if (this.activeLayout === RibbonLayout.Classic) {\n if (item.displayOptions & DisplayMode.Classic) {\n ele = dropdownElement ? this.ribbonDropDownModule.getDDBItemElement(dropdownElement, item.id) :\n contentEle.querySelector('#' + item.id);\n if (item.type === RibbonItemType.GroupButton) {\n ele = dropdownElement ? this.ribbonDropDownModule.getDDBItemElement(dropdownElement, item.id + constants.RIBBON_GROUP_BUTTON_ID) :\n contentEle.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID);\n }\n }\n }\n else {\n //Checks for Simplified and Auto options (Auto = classic + simplified + popup)\n ele = (item.displayOptions & DisplayMode.Simplified) ?\n contentEle.querySelector('#' + item.id) : null;\n // element will be null for \"Popup\" and if the item is moved to overflow in \"Auto\" mode\n if (!ele) {\n ele = dropdown ? dropdown.target.querySelector('#' + item.id) : null;\n }\n }\n if (ele) {\n this.destroyFunction(item, ele);\n }\n }\n }\n if ((this.activeLayout === RibbonLayout.Classic) && dropdownElement) {\n this.ribbonDropDownModule.removeOverFlowDropDown(dropdownElement);\n }\n else if ((this.activeLayout === RibbonLayout.Simplified) && group.enableGroupOverflow && dropdownElement) {\n this.removeOverflowButton(dropdown);\n }\n }\n }\n if (this.overflowDDB) {\n this.removeOverflowButton(this.overflowDDB);\n this.overflowDDB = null;\n }\n };\n Ribbon.prototype.destroyFunction = function (item, ele) {\n var moduleName = this.getItemModuleName(item);\n if (moduleName === 'colorpicker') {\n this.ribbonColorPickerModule.unwireColorPickerEvents(ele);\n }\n else if (moduleName === 'group-btn') {\n if (this.activeLayout === 'Classic') {\n for (var i = 0; i < item.groupButtonSettings.items.length; i++) {\n var btnEle = ele.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + i);\n if (btnEle) {\n destroyControl(btnEle, 'btn');\n }\n }\n }\n else {\n this.ribbonGroupButtonModule.destroyDropDown(item);\n }\n var _loop_3 = function (i) {\n if (item.groupButtonSettings.items[parseInt(i.toString(), 10)].ribbonTooltipSettings) {\n var groupButtonID_1 = item.id + constants.RIBBON_GROUP_BUTTON_ID + i;\n var index = getIndex(this_3.tooltipData, function (e) { return e.id === groupButtonID_1; });\n if (index !== -1) {\n this_3.tooltipData.splice(index, 1);\n }\n }\n };\n var this_3 = this;\n for (var i = 0; i < item.groupButtonSettings.items.length; i++) {\n _loop_3(i);\n }\n }\n else if (moduleName !== 'template') {\n destroyControl(ele, moduleName);\n }\n if (item.ribbonTooltipSettings) {\n var index = getIndex(this.tooltipData, function (e) { return e.id === item.id + constants.CONTAINER_ID; });\n if (index !== -1) {\n this.tooltipData.splice(index, 1);\n }\n }\n if (item.type === 'GroupButton') {\n this.ribbonGroupButtonModule.destroyDropDown(item);\n }\n };\n Ribbon.prototype.getItemModuleName = function (item) {\n switch (item.type) {\n case 'Button':\n return 'btn';\n case 'DropDown':\n return 'dropdown-btn';\n case 'SplitButton':\n return 'split-btn';\n case 'CheckBox':\n return 'checkbox';\n case 'ColorPicker':\n return 'colorpicker';\n case 'ComboBox':\n return 'combobox';\n case 'GroupButton':\n return 'group-btn';\n default:\n return 'template';\n }\n };\n Ribbon.prototype.clearOverflowResize = function () {\n this.destroyScroll();\n this.clearOverflowDropDown(this.selectedTab);\n var tab = this.tabs[this.selectedTab];\n var activeContent = this.tabObj.element.querySelector('#' + this.tabs[this.selectedTab].id + constants.CONTENT_ID);\n var tabContent = activeContent.closest('.' + constants.TAB_CONTENT);\n for (var j = 0; (j < tab.groups.length); j++) {\n this.checkSmallToMedium(this.selectedTab, tab, j, tabContent, activeContent, true, true);\n this.checkMediumToLarge(this.selectedTab, tab, j, tabContent, activeContent, true, true);\n }\n };\n /**\n * Refreshes the layout.\n *\n * @returns {void}\n */\n Ribbon.prototype.refreshLayout = function () {\n this.resizeHandler();\n };\n /**\n * Selects the tab\n *\n * @param {string} tabId - Gets the tab ID\n * @returns {void}\n */\n Ribbon.prototype.selectTab = function (tabId) {\n var index = getIndex(this.tabs, function (e) { return e.id === tabId; });\n this.setProperties({ selectedTab: index });\n };\n /**\n * Shows a specific tab in the ribbon.\n *\n * @param {string} tabId - The ID of the tab to be shown.\n * @returns {void}\n */\n Ribbon.prototype.showTab = function (tabId) {\n this.showHideTab(tabId, false);\n };\n /**\n * Hides a specific tab in the ribbon.\n *\n * @param {string} tabId - The ID of the tab to be hidden.\n * @returns {void}\n */\n Ribbon.prototype.hideTab = function (tabId) {\n this.showHideTab(tabId, true);\n };\n Ribbon.prototype.showHideTab = function (tabId, value) {\n var index = getIndex(this.tabs, function (e) { return e.id === tabId; });\n if (index === -1) {\n return;\n }\n this.tabObj.hideTab(index, value);\n };\n /**\n * Enables a specific tab in the ribbon.\n *\n * @param {string} tabId - The ID of the tab to be enabled.\n * @returns {void}\n */\n Ribbon.prototype.enableTab = function (tabId) {\n this.enableDisableTab(tabId, true);\n };\n /**\n * Disables a specific tab in the ribbon.\n *\n * @param {string} tabId - The ID of the tab to be disabled.\n * @returns {void}\n */\n Ribbon.prototype.disableTab = function (tabId) {\n this.enableDisableTab(tabId, false);\n };\n Ribbon.prototype.enableDisableTab = function (tabId, value) {\n var index = getIndex(this.tabs, function (e) { return e.id === tabId; });\n if (index === -1) {\n return;\n }\n this.tabObj.enableTab(index, value);\n };\n /**\n * Adds the ribbon tab.\n *\n * @param {RibbonTabModel} tab - Gets the ribbon tab model\n * @param {string} targetId - Gets the ID of the target tab to add the new tab.\n * @param {boolean} isAfter - Defines whether the tab is added before or after the target.\n * @returns {void}\n */\n Ribbon.prototype.addTab = function (tab, targetId, isAfter) {\n var index = targetId ? getIndex(this.tabs, function (e) { return e.id === targetId; }) : -1;\n index = (index === -1) ? this.tabs.length : (index + (isAfter ? 1 : 0));\n this.tabsInternal = this.tabs.slice();\n this.tabsInternal.splice(index, 0, tab);\n this.setProperties({ tabs: this.tabsInternal }, true);\n this.checkID([this.tabs[parseInt(index.toString(), 10)]], 'tab', this.element.id);\n this.tabsInternal = this.tabs.slice();\n this.validateItemSize();\n var tabItem = this.createTabItems([tab]);\n this.tabObj.addTab(tabItem, index);\n };\n /**\n * Removes the ribbon tab.\n *\n * @param {string} tabId - Gets the tab ID\n * @returns {void}\n */\n Ribbon.prototype.removeTab = function (tabId) {\n var index = getIndex(this.tabs, function (e) { return e.id === tabId; });\n if (index === -1) {\n return;\n }\n var contentEle = this.tabObj.items[parseInt(index.toString(), 10)].content;\n var groups = this.tabs[parseInt(index.toString(), 10)].groups;\n if (groups && (contentEle.innerHTML !== '')) {\n for (var _i = 0, groups_2 = groups; _i < groups_2.length; _i++) {\n var group = groups_2[_i];\n var dropdownElement = group.isCollapsed ? contentEle.querySelector('#' + group.id + constants.OVERFLOW_ID + constants.DROPDOWN_ID) : null;\n for (var _a = 0, _b = group.collections; _a < _b.length; _a++) {\n var collection = _b[_a];\n for (var _c = 0, _d = collection.items; _c < _d.length; _c++) {\n var item = _d[_c];\n var ele = dropdownElement ? this.ribbonDropDownModule.getDDBItemElement(dropdownElement, item.id) : contentEle.querySelector('#' + item.id);\n if (item.type === RibbonItemType.GroupButton && this.activeLayout === 'Classic') {\n ele = dropdownElement ? this.ribbonDropDownModule.getDDBItemElement(dropdownElement, item.id + constants.RIBBON_GROUP_BUTTON_ID) :\n contentEle.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID);\n }\n if (ele) {\n this.destroyFunction(item, ele);\n }\n }\n }\n if (dropdownElement) {\n this.ribbonDropDownModule.removeOverFlowDropDown(dropdownElement);\n }\n }\n }\n if (index === this.selectedTab) {\n this.isAddRemove = true;\n }\n this.tabsInternal = this.tabs.slice();\n this.tabsInternal.splice(index, 1);\n this.setProperties({ tabs: this.tabsInternal }, true);\n this.tabObj.removeTab(index);\n };\n /**\n * Adds the ribbon group.\n *\n * @param {string} tabId - Gets the tab ID.\n * @param {RibbonGroupModel} group - Gets the ribbon group model.\n * @param {string} targetId - Gets the ID of the target group to add the new group.\n * @param {boolean} isAfter - Defines whether the group is added before or after the target.\n * @returns {void}\n */\n Ribbon.prototype.addGroup = function (tabId, group, targetId, isAfter) {\n var tabIndex = getIndex(this.tabs, function (e) { return e.id === tabId; });\n if (tabIndex === -1) {\n return;\n }\n if (this.selectedTab === tabIndex) {\n this.clearOverflowResize();\n }\n var tab = this.tabs[parseInt(tabIndex.toString(), 10)];\n var ribbonGroups = tab.groups.slice();\n var index = targetId ? getIndex(ribbonGroups, function (e) { return e.id === targetId; }) : -1;\n index = (index === -1) ? ribbonGroups.length : (index + (isAfter ? 1 : 0));\n ribbonGroups.splice(index, 0, group);\n tab.setProperties({ groups: ribbonGroups }, true);\n this.checkID([tab.groups[parseInt(index.toString(), 10)]], 'group', tabId);\n this.validateItemSize();\n //Check whether the tab items are rendered\n var contentEle = this.tabObj.items[parseInt(tabIndex.toString(), 10)].content;\n if (contentEle.innerHTML !== '') {\n var element = this.createGroups([tab.groups[parseInt(index.toString(), 10)]], tabIndex)[0];\n //insert the element in tab items property.\n var targetEle = targetId ? contentEle.querySelector('#' + targetId) : null;\n if (targetEle) {\n targetEle.insertAdjacentElement(isAfter ? 'afterend' : 'beforebegin', element);\n }\n else {\n contentEle.append(element);\n }\n }\n if (this.selectedTab === tabIndex) {\n this.refreshLayout();\n }\n };\n /**\n * Removes the ribbon group.\n *\n * @param {string} groupId -Gets the group ID.\n * @returns {void}\n */\n Ribbon.prototype.removeGroup = function (groupId) {\n var itemProp = getGroup(this.tabs, groupId);\n if (!itemProp) {\n return;\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.clearOverflowResize();\n }\n //Check whether the tab items are rendered\n var contentEle = this.tabObj.items[itemProp.tabIndex].content;\n if (contentEle.innerHTML !== '') {\n var dropdownElement = void 0;\n var dropdown = void 0;\n if (itemProp.group.showLauncherIcon) {\n this.removeLauncherIcon(itemProp.group.id, null, contentEle);\n }\n if (this.activeLayout === RibbonLayout.Simplified) {\n dropdownElement = itemProp.group.enableGroupOverflow ?\n contentEle.querySelector('#' + itemProp.group.id + constants.GROUPOF_BUTTON_ID) : null;\n dropdown = dropdownElement ? getComponent(dropdownElement, DropDownButton) : this.overflowDDB;\n }\n for (var _i = 0, _a = itemProp.group.collections; _i < _a.length; _i++) {\n var collection = _a[_i];\n for (var _b = 0, _c = collection.items; _b < _c.length; _b++) {\n var item = _c[_b];\n this.removeItemElement(contentEle, item, dropdown);\n }\n }\n if (this.activeLayout === RibbonLayout.Simplified) {\n if (itemProp.group.enableGroupOverflow) {\n if (dropdown.target.childElementCount === 0) {\n this.removeOverflowButton(dropdown);\n }\n }\n else {\n var ofGroupContainer = dropdown.target.querySelector('#' + itemProp.group.id + constants.CONTAINER_ID);\n if (ofGroupContainer && ofGroupContainer.childElementCount === 1) {\n ofGroupContainer.remove();\n }\n var ofTabContainer = dropdown.target.querySelector('#' + this.tabs[parseInt(itemProp.tabIndex.toString(), 10)].id + constants.OVERFLOW_ID);\n if (ofTabContainer && ofTabContainer.childElementCount === 0) {\n ofTabContainer.remove();\n }\n }\n }\n var groupEle = contentEle.querySelector('#' + groupId);\n if (groupEle) {\n groupEle.remove();\n }\n }\n var ribbonGroups = this.tabs[itemProp.tabIndex].groups.slice();\n ribbonGroups.splice(itemProp.groupIndex, 1);\n this.tabs[itemProp.tabIndex].setProperties({ groups: ribbonGroups }, true);\n if (this.selectedTab === itemProp.tabIndex) {\n this.refreshLayout();\n }\n };\n /**\n * Hides a specific group within a ribbon tab.\n *\n * @param {string} groupID - The ID of the group to be hidden.\n * @returns {void}\n */\n Ribbon.prototype.hideGroup = function (groupID) {\n this.showHideGroup(groupID, true);\n };\n /**\n * Shows a specific group within a ribbon tab.\n *\n * @param {string} groupID - The ID of the group to be shown.\n * @returns {void}\n */\n Ribbon.prototype.showGroup = function (groupID) {\n this.showHideGroup(groupID, false);\n };\n Ribbon.prototype.showHideGroup = function (groupID, isHidden) {\n var overflowDDB;\n var overflowtarget;\n var itemProp = getGroup(this.tabs, groupID);\n if (!itemProp) {\n return;\n }\n var contentEle = this.tabObj.items[itemProp.tabIndex].content;\n var groupEle = contentEle.querySelector('#' + groupID);\n isHidden ? groupEle.classList.add('e-hidden') : groupEle.classList.remove('e-hidden');\n if (this.overflowDDB) {\n var overflowEle = this.overflowDDB.target;\n var ofTabContainer = overflowEle.querySelector('#' + this.tabs[parseInt(itemProp.tabIndex.toString(), 10)].id + constants.OVERFLOW_ID);\n if (itemProp.group.enableGroupOverflow) {\n var overflowDDBEle = contentEle.querySelector('#' + groupID + constants.GROUPOF_BUTTON_ID);\n if (overflowDDBEle) {\n overflowDDB = getInstance(overflowDDBEle, DropDownButton);\n overflowtarget = overflowDDB.target;\n }\n if (overflowtarget) {\n isHidden ? overflowtarget.classList.add('e-hidden') : overflowtarget.classList.remove('e-hidden');\n }\n }\n else if (ofTabContainer) {\n var grpContainer = ofTabContainer.querySelector('#' + groupID + constants.CONTAINER_ID);\n if (grpContainer) {\n isHidden ? grpContainer.classList.add('e-hidden') : grpContainer.classList.remove('e-hidden');\n }\n }\n }\n this.refreshLayout();\n };\n /**\n * Disables a specific group within a ribbon tab.\n *\n * @param {string} groupID - The ID of the group to be disabled.\n * @returns {void}\n */\n Ribbon.prototype.disableGroup = function (groupID) {\n this.enableDisableGroup(groupID, true);\n };\n /**\n * Enables a specific group within a ribbon tab.\n *\n * @param {string} groupID - The ID of the group to be enabled.\n * @returns {void}\n */\n Ribbon.prototype.enableGroup = function (groupID) {\n this.enableDisableGroup(groupID, false);\n };\n Ribbon.prototype.enableDisableGroup = function (groupID, isDisabled) {\n var overflowDDB;\n var overflowtarget;\n var itemProp = getGroup(this.tabs, groupID);\n if (!itemProp) {\n return;\n }\n var contentEle = this.tabObj.items[itemProp.tabIndex].content;\n var groupEle = contentEle.querySelector('#' + groupID);\n isDisabled ? groupEle.classList.add('e-disabled') : groupEle.classList.remove('e-disabled');\n if (this.overflowDDB) {\n var overflowEle = this.overflowDDB.target;\n var ofTabContainer = overflowEle.querySelector('#' + this.tabs[parseInt(itemProp.tabIndex.toString(), 10)].id + constants.OVERFLOW_ID);\n if (itemProp.group.enableGroupOverflow) {\n var overflowDDBEle = contentEle.querySelector('#' + groupID + constants.GROUPOF_BUTTON_ID);\n if (overflowDDBEle) {\n overflowDDB = getInstance(overflowDDBEle, DropDownButton);\n overflowtarget = overflowDDB.target;\n }\n if (overflowtarget) {\n isDisabled ? overflowtarget.classList.add('e-disabled') : overflowtarget.classList.remove('e-disabled');\n }\n }\n else if (ofTabContainer) {\n var grpContainer = ofTabContainer.querySelector('#' + groupID + constants.CONTAINER_ID);\n if (grpContainer) {\n isDisabled ? grpContainer.classList.add('e-disabled') : grpContainer.classList.remove('e-disabled');\n }\n }\n }\n };\n /**\n * adds the ribbon collection.\n *\n * @param {string} groupId - Gets the ribbon group ID.\n * @param {RibbonCollectionModel} collection - Gets the ribbon collection model.\n * @param {string} targetId - Gets the ID of the target collection to add the new collection.\n * @param {boolean} isAfter - Defines whether the collection is added before or after the target.\n * @returns {void}\n */\n Ribbon.prototype.addCollection = function (groupId, collection, targetId, isAfter) {\n var itemProp = getGroup(this.tabs, groupId);\n if (!itemProp) {\n return;\n }\n if ((itemProp.group.orientation === 'Row') && (itemProp.group.collections.length === 3)) {\n return;\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.clearOverflowResize();\n }\n var ribbonCollections = itemProp.group.collections.slice();\n var index = targetId ? getIndex(ribbonCollections, function (e) { return e.id === targetId; }) : -1;\n index = (index === -1) ? ribbonCollections.length : (index + (isAfter ? 1 : 0));\n ribbonCollections.splice(index, 0, collection);\n itemProp.group.setProperties({ collections: ribbonCollections }, true);\n this.checkID([itemProp.group.collections[parseInt(index.toString(), 10)]], 'collection', groupId);\n this.validateItemSize();\n var contentEle = this.tabObj.items[itemProp.tabIndex].content;\n if (contentEle.innerHTML !== '') {\n var collection_1 = itemProp.group.collections[parseInt(index.toString(), 10)];\n var element = this.createCollection([collection_1], itemProp.group.orientation, itemProp.group.id, itemProp.group.header, itemProp.group.enableGroupOverflow, itemProp.tabIndex)[0];\n if (itemProp.group.isCollapsed) {\n contentEle = this.ribbonDropDownModule.getOverflowDropDownPopup(itemProp, contentEle);\n }\n //insert the element in tab items property.\n var targetEle = targetId ? contentEle.querySelector('#' + targetId) : null;\n if (targetEle) {\n targetEle.insertAdjacentElement(isAfter ? 'afterend' : 'beforebegin', element);\n }\n else {\n contentEle.querySelector('#' + groupId + constants.CONTENT_ID).append(element);\n }\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.refreshLayout();\n }\n };\n /**\n * Removes the ribbon collection.\n *\n * @param {string} collectionId - Gets the collection ID.\n * @returns {void}\n */\n Ribbon.prototype.removeCollection = function (collectionId) {\n var itemProp = getCollection(this.tabs, collectionId);\n if (!itemProp) {\n return;\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.clearOverflowResize();\n }\n //Check whether the tab items are rendered\n var contentEle = this.tabObj.items[itemProp.tabIndex].content;\n if (contentEle.innerHTML !== '') {\n var dropdownElement = void 0;\n var dropdown = void 0;\n if (this.activeLayout === RibbonLayout.Simplified) {\n dropdownElement = itemProp.group.enableGroupOverflow ?\n contentEle.querySelector('#' + itemProp.group.id + constants.GROUPOF_BUTTON_ID) : null;\n dropdown = dropdownElement ? getComponent(dropdownElement, DropDownButton) : this.overflowDDB;\n }\n for (var _i = 0, _a = itemProp.collection.items; _i < _a.length; _i++) {\n var item = _a[_i];\n this.removeItemElement(contentEle, item, dropdown);\n }\n var groupEle = contentEle.querySelector('#' + collectionId);\n if (groupEle) {\n groupEle.remove();\n }\n }\n var ribbonGroup = itemProp.group;\n var ribbonCollections = ribbonGroup.collections.slice();\n ribbonCollections.splice(itemProp.collectionIndex, 1);\n ribbonGroup.setProperties({ collections: ribbonCollections }, true);\n if (this.selectedTab === itemProp.tabIndex) {\n this.refreshLayout();\n }\n };\n /**\n * Adds ribbon item.\n *\n * @param {string} collectionId - Gets the collection ID.\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {string} targetId - Gets the ID of the target item to add the new item.\n * @param {boolean} isAfter - Defines whether the item is added before or after the target.\n * @returns {void}\n */\n Ribbon.prototype.addItem = function (collectionId, item, targetId, isAfter) {\n var itemProp = getCollection(this.tabs, collectionId);\n if (!itemProp) {\n return;\n }\n if ((itemProp.group.orientation === 'Column') && (itemProp.collection.items.length === 3)) {\n return;\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.clearOverflowResize();\n }\n var ribbonItems = itemProp.collection.items.slice();\n var index = targetId ? getIndex(ribbonItems, function (e) { return e.id === targetId; }) : -1;\n index = (index === -1) ? ribbonItems.length : (index + (isAfter ? 1 : 0));\n ribbonItems.splice(index, 0, item);\n itemProp.collection.setProperties({ items: ribbonItems }, true);\n this.checkID([itemProp.collection.items[parseInt(index.toString(), 10)]], 'item', collectionId);\n this.validateItemSize();\n var contentEle = this.tabObj.items[itemProp.tabIndex].content;\n var groupContainer = contentEle.querySelector('#' + itemProp.group.id + constants.CONTAINER_ID);\n if (contentEle.innerHTML !== '') {\n var item_1 = itemProp.collection.items[parseInt(index.toString(), 10)];\n var element = this.createItems([item_1], itemProp.group.orientation, itemProp.group.id, itemProp.group.header, itemProp.group.enableGroupOverflow, itemProp.tabIndex, groupContainer)[0];\n if (itemProp.group.isCollapsed) {\n contentEle = this.ribbonDropDownModule.getOverflowDropDownPopup(itemProp, contentEle);\n }\n //insert the element in tab items property.\n var targetEle = targetId ? contentEle.querySelector('#' + targetId) : null;\n if (targetEle) {\n targetEle.closest('.' + constants.RIBBON_ITEM).insertAdjacentElement(isAfter ? 'afterend' : 'beforebegin', element);\n }\n else {\n if (element) {\n contentEle.querySelector('#' + collectionId).append(element);\n }\n }\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.refreshLayout();\n }\n };\n /**\n * Removes ribbon item.\n *\n * @param {string} itemId - Gets the item ID.\n * @returns {void}\n */\n Ribbon.prototype.removeItem = function (itemId) {\n var itemProp = getItem(this.tabs, itemId);\n if (!itemProp) {\n return;\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.clearOverflowResize();\n }\n //Check whether the tab items are rendered\n var contentEle = this.tabObj.items[itemProp.tabIndex].content;\n if (contentEle.innerHTML !== '') {\n var dropdownElement = void 0;\n var dropdown = void 0;\n if (this.activeLayout === RibbonLayout.Simplified) {\n dropdownElement = itemProp.group.enableGroupOverflow ?\n contentEle.querySelector('#' + itemProp.group.id + constants.GROUPOF_BUTTON_ID) : null;\n dropdown = dropdownElement ? getComponent(dropdownElement, DropDownButton) : this.overflowDDB;\n }\n var item = itemProp.item;\n this.removeItemElement(contentEle, item, dropdown);\n }\n var ribbonCollection = itemProp.collection;\n var ribbonItems = ribbonCollection.items;\n ribbonItems.splice(itemProp.itemIndex, 1);\n ribbonCollection.setProperties({ items: ribbonItems }, true);\n if (this.selectedTab === itemProp.tabIndex) {\n this.refreshLayout();\n }\n };\n /**\n * Hides a specific ribbon item.\n *\n * @param {string} itemId - The ID of the item to be hidden.\n * @returns {void}\n */\n Ribbon.prototype.hideItem = function (itemId) {\n this.showHideItem(itemId, true);\n };\n /**\n * Shows a specific ribbon item.\n *\n * @param {string} itemId - The ID of the item to be shown.\n * @returns {void}\n */\n Ribbon.prototype.showItem = function (itemId) {\n this.showHideItem(itemId, false);\n };\n Ribbon.prototype.showHideItem = function (itemId, isHidden) {\n var itemProp = getItem(this.tabs, itemId);\n if (!itemProp) {\n return;\n }\n var ele;\n if (itemProp.item.type === 'GroupButton') {\n ele = getItemElement(this, itemId + constants.RIBBON_GROUP_BUTTON_ID, itemProp);\n }\n else {\n ele = getItemElement(this, itemId, itemProp);\n }\n if (ele) {\n var itemEle = closest(ele, '.e-ribbon-item');\n isHidden ? itemEle.classList.add('e-hidden') : itemEle.classList.remove('e-hidden');\n }\n };\n /**\n * tab - Gets the ribbon tab to be updated. The id of the tab is a required property. Other properties are optional.\n *\n * @param {RibbonTabModel} tab - Gets the ribbon tab model.\n * @returns {void}\n */\n Ribbon.prototype.updateTab = function (tab) {\n var tabId = tab.id;\n var index = getIndex(this.tabs, function (e) { return e.id === tabId; });\n if (index === -1) {\n return;\n }\n var contentEle = this.tabObj.items[parseInt(index.toString(), 10)].content;\n var groups = this.tabs[parseInt(index.toString(), 10)].groups;\n var tabEle = this.tabObj.element;\n if (groups && (contentEle.innerHTML !== '')) {\n // Check whether cssClass is passed by the user, and if it is, then remove the old values.\n if (tab.cssClass) {\n if (this.tabs[parseInt(index.toString(), 10)].cssClass) {\n contentEle.classList.remove(this.tabs[parseInt(index.toString(), 10)].cssClass);\n tabEle.querySelector('.e-active').classList.remove(this.tabs[parseInt(index.toString(), 10)].cssClass);\n }\n }\n // Check whether group is passed by the user, and if it is, then remove the old values.\n if (tab.groups) {\n for (var _i = 0, groups_3 = groups; _i < groups_3.length; _i++) {\n var group = groups_3[_i];\n var dropdownElement = group.isCollapsed ? contentEle.querySelector('#' + group.id + constants.OVERFLOW_ID + constants.DROPDOWN_ID) : null;\n for (var _a = 0, _b = group.collections; _a < _b.length; _a++) {\n var collection = _b[_a];\n for (var _c = 0, _d = collection.items; _c < _d.length; _c++) {\n var item = _d[_c];\n var ele = dropdownElement ? this.ribbonDropDownModule.getDDBItemElement(dropdownElement, item.id) : contentEle.querySelector('#' + item.id);\n if (item.type === RibbonItemType.GroupButton && this.activeLayout === 'Classic') {\n ele = dropdownElement ? this.ribbonDropDownModule.getDDBItemElement(dropdownElement, item.id + constants.RIBBON_GROUP_BUTTON_ID) :\n contentEle.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID);\n }\n if (ele) {\n this.destroyFunction(item, ele);\n }\n }\n }\n if (dropdownElement) {\n this.ribbonDropDownModule.removeOverFlowDropDown(dropdownElement);\n }\n }\n var groupElements = contentEle.querySelectorAll('.e-ribbon-group');\n // eslint-disable-next-line @typescript-eslint/tslint/config\n groupElements.forEach(function (groupEle) { groupEle.remove(); });\n }\n }\n if (index === this.selectedTab) {\n this.isAddRemove = true;\n }\n var ribbonTab = this.tabs[parseInt(index.toString(), 10)];\n ribbonTab.setProperties(tab, true);\n this.setProperties({ groups: this.checkID(ribbonTab.groups, 'group', ribbonTab.id) }, true);\n this.validateItemSize();\n if (contentEle.innerHTML === '') {\n // Check whether group is passed by the user and sets the updated values.\n if (tab.groups) {\n var elements = this.createGroups(ribbonTab.groups, index);\n append(elements, contentEle);\n }\n if (this.selectedTab === index) {\n this.refreshLayout();\n }\n // Check whether cssClass is passed by the user and sets the updated values.\n if (tab.cssClass) {\n contentEle.classList.add(ribbonTab.cssClass);\n tabEle.querySelector('.e-active').classList.add(ribbonTab.cssClass);\n }\n // Check whether header is passed by the user and sets the updated values.\n if (tab.header) {\n tabEle.querySelector('#' + tabId + constants.HEADER_ID).innerText = ribbonTab.header;\n }\n }\n };\n /**\n * group - Gets the ribbon group to be updated. The id of the group is a required property. Other properties are optional.\n *\n * @param {RibbonGroupModel} group - Gets the ribbon group model.\n * @returns {void}\n */\n Ribbon.prototype.updateGroup = function (group) {\n var groupId = group.id;\n var itemProp = getGroup(this.tabs, groupId);\n if (!itemProp) {\n return;\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.clearOverflowResize();\n }\n //Check whether the tab items are rendered\n var contentEle = this.tabObj.items[itemProp.tabIndex].content;\n var groupEle = contentEle.querySelector('#' + groupId);\n var groupContainer = groupEle.querySelector('#' + group.id + constants.CONTAINER_ID);\n var dropdownElement;\n var dropdown;\n if (contentEle.innerHTML !== '') {\n if (itemProp.group.showLauncherIcon) {\n this.removeLauncherIcon(itemProp.group.id, null, contentEle);\n }\n if (this.activeLayout === RibbonLayout.Simplified) {\n dropdownElement = itemProp.group.enableGroupOverflow ?\n contentEle.querySelector('#' + itemProp.group.id + constants.GROUPOF_BUTTON_ID) : null;\n dropdown = dropdownElement ? getComponent(dropdownElement, DropDownButton) : this.overflowDDB;\n }\n // Check whether cssClass is passed by the user, and if it is, then remove the old values.\n if (group.cssClass) {\n if (itemProp.group.cssClass) {\n groupEle.classList.remove(itemProp.group.cssClass);\n if (groupContainer) {\n groupContainer.classList.remove(itemProp.group.cssClass);\n }\n }\n }\n // Check whether collections or orientation is passed by the user, and if it is, then remove the old values.\n if (group.collections || group.orientation) {\n if (itemProp.group.collections || itemProp.group.orientation) {\n for (var _i = 0, _a = itemProp.group.collections; _i < _a.length; _i++) {\n var collection = _a[_i];\n for (var _b = 0, _c = collection.items; _b < _c.length; _b++) {\n var item = _c[_b];\n this.removeItemElement(contentEle, item, dropdown);\n }\n }\n var collectionElements = groupEle.querySelectorAll('.e-ribbon-collection');\n // eslint-disable-next-line @typescript-eslint/tslint/config\n collectionElements.forEach(function (collectionEle) { collectionEle.remove(); });\n if (group.orientation) {\n var groupContent = groupContainer.querySelector('.e-ribbon-group-content');\n var removeCss = groupContent.classList.value.match(/(e-ribbon-[column|row]+)/g);\n if (removeCss) {\n removeClass([groupContent], removeCss);\n }\n }\n }\n }\n if (this.activeLayout === RibbonLayout.Simplified) {\n if (itemProp.group.enableGroupOverflow) {\n if (dropdown.target.childElementCount === 0) {\n this.removeOverflowButton(dropdown);\n }\n }\n else {\n var ofGroupContainer = dropdown.target.querySelector('#' + itemProp.group.id + constants.CONTAINER_ID);\n if (ofGroupContainer && ofGroupContainer.childElementCount === 1) {\n ofGroupContainer.remove();\n }\n var ofTabContainer = dropdown.target.querySelector('#' + this.tabs[parseInt(itemProp.tabIndex.toString(), 10)].id + constants.OVERFLOW_ID);\n if (ofTabContainer && ofTabContainer.childElementCount === 0) {\n ofTabContainer.remove();\n }\n }\n }\n }\n var ribbongroup = itemProp.group;\n ribbongroup.setProperties(group, true);\n ribbongroup.setProperties({ collections: this.checkID(ribbongroup.collections, 'collection', ribbongroup.id) }, true);\n this.validateItemSize();\n if (contentEle.innerHTML !== '') {\n // Check whether showLauncherIcon or orientation is passed by the user and sets the updated values.\n if (group.showLauncherIcon) {\n this.createLauncherIcon(ribbongroup.id, groupContainer);\n }\n // Check whether collections or orientation is passed by the user and sets the updated values.\n if (group.collections || group.orientation) {\n var groupContent = groupContainer.querySelector('.e-ribbon-group-content');\n groupContent.classList.add(((ribbongroup.orientation === 'Column') || (this.activeLayout === 'Simplified')) ? constants.RIBBON_COLUMN : constants.RIBBON_ROW);\n var elements = this.createCollection(ribbongroup.collections, ribbongroup.orientation, ribbongroup.id, ribbongroup.header, ribbongroup.enableGroupOverflow, itemProp.tabIndex, groupContainer);\n append(elements, groupContent);\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.refreshLayout();\n }\n // Check whether cssClass is passed by the user and sets the updated values.\n if (group.cssClass) {\n groupEle.classList.add(ribbongroup.cssClass);\n if (groupContainer) {\n groupContainer.classList.add(ribbongroup.cssClass);\n }\n }\n // Check whether header is passed by the user and sets the updated values.\n if (group.header) {\n if (this.activeLayout === RibbonLayout.Simplified && !group.enableGroupOverflow) {\n var overflowHeader = dropdown.target.querySelector('#' + group.id + constants.HEADER_ID);\n if (overflowHeader) {\n overflowHeader.innerText = ribbongroup.header;\n }\n }\n else if (this.activeLayout === RibbonLayout.Classic && !ribbongroup.isCollapsed) {\n groupEle.querySelector('.e-ribbon-group-header').innerText = ribbongroup.header;\n }\n else if (this.activeLayout === RibbonLayout.Classic && ribbongroup.isCollapsed) {\n var overflowEle = groupEle.querySelector('#' + ribbongroup.id + constants.OVERFLOW_ID + constants.DROPDOWN_ID);\n // need to set instance for dropdown\n var dropDownBtn = getInstance(overflowEle, DropDownButton);\n var overflowHeader = dropDownBtn.target.querySelector('#' + group.id + constants.HEADER_ID);\n if (overflowHeader) {\n overflowHeader.innerText = ribbongroup.header;\n }\n }\n }\n }\n };\n /**\n * collection - Gets the ribbon collection to be updated. The id of the collection is a required property. Other properties are optional.\n *\n * @param {RibbonCollectionModel} collection - Gets the ribbon collection model.\n * @returns {void}\n */\n Ribbon.prototype.updateCollection = function (collection) {\n var collectionId = collection.id;\n var itemProp = getCollection(this.tabs, collectionId);\n if (!itemProp) {\n return;\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.clearOverflowResize();\n }\n //Check whether the tab items are rendered\n var contentEle = this.tabObj.items[itemProp.tabIndex].content;\n var collectionEle = contentEle.querySelector('#' + collectionId);\n if (contentEle.innerHTML !== '') {\n var dropdownElement = void 0;\n var dropdown = void 0;\n if (this.activeLayout === RibbonLayout.Simplified) {\n dropdownElement = itemProp.group.enableGroupOverflow ?\n contentEle.querySelector('#' + itemProp.group.id + constants.GROUPOF_BUTTON_ID) : null;\n dropdown = dropdownElement ? getComponent(dropdownElement, DropDownButton) : this.overflowDDB;\n }\n // Check whether cssClass is passed by the user, and if it is, then remove the old values.\n if (collection.cssClass) {\n if (itemProp.collection.cssClass) {\n collectionEle.classList.remove(itemProp.collection.cssClass);\n }\n }\n if (collection.items) {\n if (itemProp.collection.items) {\n for (var _i = 0, _a = itemProp.collection.items; _i < _a.length; _i++) {\n var item = _a[_i];\n this.removeItemElement(contentEle, item, dropdown);\n }\n }\n }\n }\n var ribboncollection = itemProp.collection;\n ribboncollection.setProperties(collection, true);\n ribboncollection.setProperties({ items: this.checkID(ribboncollection.items, 'item', ribboncollection.id) }, true);\n this.validateItemSize();\n if (contentEle.innerHTML !== '') {\n if (collection.items) {\n var groupContainer = contentEle.querySelector('#' + itemProp.group.id + constants.CONTAINER_ID);\n var elements = this.createItems(ribboncollection.items, itemProp.group.orientation, itemProp.group.id, itemProp.group.header, itemProp.group.enableGroupOverflow, itemProp.tabIndex, groupContainer);\n append(elements, collectionEle);\n }\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.refreshLayout();\n }\n // Check whether cssClass is passed by the user and sets the updated values.\n if (collection.cssClass) {\n collectionEle.classList.add(ribboncollection.cssClass);\n }\n };\n /**\n * item - Gets the ribbon item to be updated. The id of the item is a required property. Other properties are optional.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @returns {void}\n */\n Ribbon.prototype.updateItem = function (item) {\n var itemId = item.id;\n var itemProp = getItem(this.tabs, itemId);\n if (!itemProp) {\n return;\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.clearOverflowResize();\n }\n //Check whether the tab items are rendered\n var contentEle = this.tabObj.items[itemProp.tabIndex].content;\n var groupEle = contentEle.querySelector('#' + itemProp.group.id);\n var groupContainer = groupEle.querySelector('#' + itemProp.group.id + constants.CONTAINER_ID);\n var itemContainer = null;\n var itemEle = null;\n var dropdownElement;\n var dropdown;\n if (contentEle.innerHTML !== '') {\n if (this.activeLayout === RibbonLayout.Simplified) {\n dropdownElement = itemProp.group.enableGroupOverflow ?\n contentEle.querySelector('#' + itemProp.group.id + constants.GROUPOF_BUTTON_ID) : null;\n dropdown = dropdownElement ? getComponent(dropdownElement, DropDownButton) : this.overflowDDB;\n }\n if (this.activeLayout === RibbonLayout.Simplified && itemProp.item.displayOptions === DisplayMode.Overflow) {\n itemContainer = dropdown.target.querySelector('#' + itemId + constants.CONTAINER_ID);\n itemEle = dropdown.target.querySelector('#' + itemId);\n if (item.displayOptions && item.displayOptions !== DisplayMode.Overflow) {\n var collectionEle = groupContainer.querySelector('#' + itemProp.collection.id);\n if (collectionEle) {\n collectionEle.appendChild(itemContainer);\n }\n }\n }\n else {\n itemContainer = groupContainer.querySelector('#' + itemId + constants.CONTAINER_ID);\n itemEle = contentEle.querySelector('#' + itemId);\n if (itemProp.item.type === 'GroupButton' && this.activeLayout === RibbonLayout.Classic) {\n itemEle = contentEle.querySelector('#' + itemId + constants.RIBBON_GROUP_BUTTON_ID);\n }\n if (this.activeLayout === RibbonLayout.Simplified && item.displayOptions === DisplayMode.Overflow) {\n this.createOverflowPopup(itemProp.item, itemProp.tabIndex, itemProp.group.enableGroupOverflow, itemProp.group.id, itemProp.group.header, itemContainer, groupContainer);\n if ((itemProp.item.type === RibbonItemType.DropDown) || (itemProp.item.type === RibbonItemType.SplitButton) || (item.type === RibbonItemType.GroupButton)) {\n this.updatePopupItems(itemProp.item, itemContainer, itemProp.group.enableGroupOverflow, true);\n }\n }\n }\n // Check whether cssClass is passed by the user, and if it is, then remove the old values.\n if (item.cssClass) {\n if (itemProp.item.cssClass) {\n itemContainer.classList.remove(itemProp.item.cssClass);\n }\n }\n this.destroyFunction(itemProp.item, itemEle);\n itemEle.remove();\n var removeCss = itemContainer.classList.value.match(/(e-ribbon-[large|medium|small]+-item)/g);\n if (removeCss) {\n removeClass([itemContainer], removeCss);\n }\n }\n var ribbonItem = itemProp.item;\n ribbonItem.setProperties(item, true);\n this.validateItemSize();\n if (contentEle.innerHTML !== '') {\n if (!(this.activeLayout === RibbonLayout.Simplified && ribbonItem.displayOptions === DisplayMode.Overflow)) {\n itemContainer = groupContainer.querySelector('#' + itemId + constants.CONTAINER_ID);\n }\n else {\n itemContainer = dropdown.target.querySelector('#' + itemId + constants.CONTAINER_ID);\n }\n // To avoid undefined items condition is added\n if (ribbonItem.ribbonTooltipSettings && isTooltipPresent(ribbonItem.ribbonTooltipSettings)) {\n itemContainer.classList.add(constants.RIBBON_TOOLTIP_TARGET);\n this.tooltipData.push({ id: itemContainer.id, data: ribbonItem.ribbonTooltipSettings });\n }\n var size = ribbonItem.activeSize;\n if (this.activeLayout === 'Simplified') {\n size = ((ribbonItem.allowedSizes === RibbonItemSize.Large) || (ribbonItem.allowedSizes & RibbonItemSize.Medium) ||\n (ribbonItem.displayOptions === DisplayMode.Overflow)) ? RibbonItemSize.Medium : RibbonItemSize.Small;\n ribbonItem.setProperties({ activeSize: size }, true);\n }\n if (size & RibbonItemSize.Large) {\n itemContainer.classList.add(constants.RIBBON_LARGE_ITEM, constants.RIBBON_CONTENT_HEIGHT);\n }\n else {\n itemContainer.classList.add((size & RibbonItemSize.Medium) ? constants.RIBBON_MEDIUM_ITEM : constants.RIBBON_SMALL_ITEM);\n }\n this.createRibbonItem(ribbonItem, itemContainer);\n if (this.activeLayout === 'Simplified' && itemProp.group.enableGroupOverflow) {\n if (dropdown.target.childElementCount === 0) {\n this.removeOverflowButton(dropdown);\n }\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.refreshLayout();\n }\n if (item.cssClass) {\n itemContainer.classList.add(ribbonItem.cssClass);\n }\n this.enableDisableItem(ribbonItem.id, ribbonItem.disabled);\n }\n };\n Ribbon.prototype.removeItemElement = function (contentEle, item, dropdown) {\n var ele = null;\n if (this.activeLayout === RibbonLayout.Classic) {\n ele = (item.displayOptions & DisplayMode.Classic) ? contentEle.querySelector('#' + item.id) : null;\n if (item.type === 'GroupButton') {\n ele = (item.displayOptions & DisplayMode.Classic) ? contentEle.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID) : null;\n }\n }\n else {\n //Checks for Simplified and Auto options (Auto = classic + simplified + popup)\n ele = (item.displayOptions & DisplayMode.Simplified) ? contentEle.querySelector('#' + item.id) : null;\n // element will be null for \"Popup\" and if the item is moved to overflow in \"Auto\" mode\n if (!ele) {\n ele = dropdown.target.querySelector('#' + item.id);\n }\n }\n if (ele) {\n this.destroyFunction(item, ele);\n if (item.type === 'GroupButton' && this.activeLayout === RibbonLayout.Simplified) {\n document.getElementById(item.id + constants.CONTAINER_ID).remove();\n }\n else {\n ele.closest('#' + item.id + constants.CONTAINER_ID).remove();\n }\n }\n };\n /**\n * Enables ribbon item.\n *\n * @param {string} itemId - Gets the item ID.\n * @returns {void}\n */\n Ribbon.prototype.enableItem = function (itemId) {\n this.enableDisableItem(itemId, false);\n };\n /**\n * Disables ribbon item.\n *\n * @param {string} itemId - Gets the item ID.\n * @returns {void}\n */\n Ribbon.prototype.disableItem = function (itemId) {\n this.enableDisableItem(itemId, true);\n };\n Ribbon.prototype.enableDisableItem = function (itemId, isDisabled) {\n var itemProp = getItem(this.tabs, itemId);\n if (!itemProp) {\n return;\n }\n itemProp.item.setProperties({ disabled: isDisabled }, true);\n var ele;\n if (itemProp.item.type === 'GroupButton') {\n ele = getItemElement(this, itemId + constants.RIBBON_GROUP_BUTTON_ID, itemProp);\n }\n else {\n ele = getItemElement(this, itemId, itemProp);\n }\n if (ele) {\n var itemEle = closest(ele, '.e-ribbon-item');\n itemEle.classList.toggle(constants.DISABLED_CSS, itemProp.item.disabled);\n var moduleName = this.getItemModuleName(itemProp.item);\n if (moduleName !== 'template') {\n if (moduleName === 'group-btn' && this.activeLayout === 'Simplified') {\n updateControlDisabled(ele, 'dropdown-btn', isDisabled);\n for (var i = 0; i < itemProp.item.groupButtonSettings.items.length; i++) {\n var btnEle = document.querySelector('#' + itemId + constants.RIBBON_GROUP_BUTTON_ID + i);\n updateControlDisabled(btnEle, 'btn', isDisabled);\n }\n }\n else if (moduleName === 'group-btn' && this.activeLayout === 'Classic') {\n for (var i = 0; i < itemProp.item.groupButtonSettings.items.length; i++) {\n var btnEle = ele.querySelector('#' + itemId + constants.RIBBON_GROUP_BUTTON_ID + i);\n updateControlDisabled(btnEle, 'btn', isDisabled);\n }\n }\n else {\n updateControlDisabled(ele, moduleName, isDisabled);\n }\n }\n else {\n ele.classList.toggle(constants.DISABLED_CSS, isDisabled);\n ele.toggleAttribute('disabled', isDisabled);\n }\n }\n };\n Ribbon.prototype.unwireEvents = function () {\n EventHandler.remove(window, 'resize', this.resizeHandler);\n };\n Ribbon.prototype.destroy = function () {\n this.keyboardModuleRibbon.destroy();\n this.keyboardModuleRibbon = null;\n destroyTooltip(this.element);\n this.destroyTabItems(this.tabs);\n if (!this.hideLayoutSwitcher) {\n this.removeExpandCollapse();\n }\n this.collapseButton = undefined;\n if (this.scrollModule) {\n this.scrollModule.destroy();\n }\n if (this.ribbonTempEle) {\n remove(this.ribbonTempEle);\n this.ribbonTempEle = null;\n }\n _super.prototype.destroy.call(this);\n this.tabObj.destroy();\n this.tabObj = undefined;\n remove(this.element.querySelector('#' + this.element.id + constants.TAB_ID));\n this.element.style.removeProperty(constants.RIBBON_FILE_MENU_WIDTH);\n this.element.style.removeProperty(constants.RIBBON_HELP_PANE_TEMPLATE_WIDTH);\n this.element.style.removeProperty('width');\n if (this.cssClass) {\n removeClass([this.element], this.cssClass.split(constants.SPACE));\n }\n this.element.classList.remove(constants.RTL_CSS, constants.RIBBON_SIMPLIFIED_MODE, constants.RIBBON_OVERFLOW, constants.RIBBON_COLLAPSIBLE, constants.RIBBON_MINIMIZE, 'e-rbn');\n this.unwireEvents();\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {RibbonModel} newProp - Specifies new properties\n * @param {RibbonModel} oldProp - Specifies old properties\n * @returns {void}\n * @private\n */\n Ribbon.prototype.onPropertyChanged = function (newProp, oldProp) {\n var _a, _b;\n for (var _i = 0, _c = Object.keys(newProp); _i < _c.length; _i++) {\n var prop = _c[_i];\n switch (prop) {\n case 'activeLayout':\n this.switchLayout();\n break;\n case 'cssClass':\n if (oldProp.cssClass) {\n (_a = this.element.classList).remove.apply(_a, oldProp.cssClass.split(constants.SPACE));\n }\n if (newProp.cssClass) {\n (_b = this.element.classList).add.apply(_b, newProp.cssClass.split(constants.SPACE));\n }\n break;\n case 'isMinimized':\n this.element.classList.toggle(constants.RIBBON_MINIMIZE, this.isMinimized);\n this.tabObj.element.querySelector('.e-content').style.display = this.isMinimized ? 'none' : 'block';\n if (!this.isMinimized) {\n this.refreshLayout();\n }\n break;\n case 'locale':\n this.updateCommonProperty({ locale: this.locale });\n break;\n case 'enablePersistence':\n this.updateCommonProperty({ enablePersistence: this.enablePersistence });\n break;\n case 'enableRtl':\n this.element.classList.toggle(constants.RTL_CSS, this.enableRtl);\n this.updateCommonProperty({ enableRtl: newProp.enableRtl });\n if (this.scrollModule) {\n this.scrollModule.setProperties({ enableRtl: newProp.enableRtl });\n }\n break;\n case 'launcherIconCss':\n for (var i = 0; i < this.tabs.length; i++) {\n var tabContent = this.tabObj.items[parseInt(i.toString(), 10)].content;\n var tab = this.tabs[parseInt(i.toString(), 10)];\n if (tabContent.querySelector('.' + constants.RIBBON_GROUP)) {\n for (var _d = 0, _e = tab.groups; _d < _e.length; _d++) {\n var group = _e[_d];\n if (group.showLauncherIcon) {\n var className = constants.RIBBON_LAUNCHER_ICON_ELE + ' ' + (this.launcherIconCss || constants.RIBBON_LAUNCHER_ICON);\n if (group.isCollapsed) {\n var element = tabContent.querySelector('#' + group.id + constants.OVERFLOW_ID + constants.DROPDOWN_ID);\n var dropdown = getComponent(element, DropDownButton);\n var launcherIconEle = dropdown.target.querySelector('#' + group.id + constants.LAUNCHER_ID);\n launcherIconEle.className = className;\n }\n else {\n var element = tabContent.querySelector('#' + group.id + constants.LAUNCHER_ID);\n element.className = className;\n }\n }\n }\n }\n }\n break;\n case 'selectedTab':\n this.tabObj.setProperties({ selectedItem: newProp.selectedTab });\n break;\n case 'tabAnimation':\n this.tabObj.setProperties({ animation: newProp.tabAnimation });\n break;\n case 'tabs':\n this.reRenderTabs(newProp.tabs);\n break;\n case 'width':\n this.element.style.width = formatUnit(newProp.width);\n this.refreshLayout();\n break;\n case 'fileMenu':\n if (this.ribbonFileMenuModule) {\n this.ribbonFileMenuModule.updateFileMenu(this.fileMenu);\n }\n var toolbarEle = this.tabObj['tbObj'];\n toolbarEle.refreshOverflow();\n break;\n case 'backStageMenu':\n if (this.ribbonBackstageModule) {\n this.ribbonBackstageModule.updateBackStageMenu(this.backStageMenu);\n }\n var toolbarElement = this.tabObj['tbObj'];\n toolbarElement.refreshOverflow();\n break;\n case 'helpPaneTemplate':\n if (this.ribbonTempEle) {\n remove(this.ribbonTempEle);\n this.ribbonTempEle = null;\n this.tabObj.element.style.setProperty(constants.RIBBON_HELP_PANE_TEMPLATE_WIDTH, '0px');\n }\n if (this.helpPaneTemplate) {\n this.createHelpPaneTemplate();\n }\n var toolbar_1 = this.tabObj['tbObj'];\n toolbar_1.refreshOverflow();\n break;\n case 'hideLayoutSwitcher':\n this.hideLayoutSwitcher ? this.removeExpandCollapse() : this.addExpandCollapse();\n break;\n }\n }\n };\n var Ribbon_1;\n __decorate([\n Property('Classic')\n ], Ribbon.prototype, \"activeLayout\", void 0);\n __decorate([\n Property('')\n ], Ribbon.prototype, \"cssClass\", void 0);\n __decorate([\n Complex({}, FileMenuSettings)\n ], Ribbon.prototype, \"fileMenu\", void 0);\n __decorate([\n Complex({}, BackStageMenu)\n ], Ribbon.prototype, \"backStageMenu\", void 0);\n __decorate([\n Property('')\n ], Ribbon.prototype, \"launcherIconCss\", void 0);\n __decorate([\n Property(false)\n ], Ribbon.prototype, \"isMinimized\", void 0);\n __decorate([\n Property('en-us')\n ], Ribbon.prototype, \"locale\", void 0);\n __decorate([\n Property(0)\n ], Ribbon.prototype, \"selectedTab\", void 0);\n __decorate([\n Complex({}, TabAnimationSettings)\n ], Ribbon.prototype, \"tabAnimation\", void 0);\n __decorate([\n Collection([], RibbonTab)\n ], Ribbon.prototype, \"tabs\", void 0);\n __decorate([\n Property('100%')\n ], Ribbon.prototype, \"width\", void 0);\n __decorate([\n Property('')\n ], Ribbon.prototype, \"helpPaneTemplate\", void 0);\n __decorate([\n Property(false)\n ], Ribbon.prototype, \"hideLayoutSwitcher\", void 0);\n __decorate([\n Event()\n ], Ribbon.prototype, \"tabSelecting\", void 0);\n __decorate([\n Event()\n ], Ribbon.prototype, \"tabSelected\", void 0);\n __decorate([\n Event()\n ], Ribbon.prototype, \"ribbonExpanding\", void 0);\n __decorate([\n Event()\n ], Ribbon.prototype, \"ribbonCollapsing\", void 0);\n __decorate([\n Event()\n ], Ribbon.prototype, \"launcherIconClick\", void 0);\n __decorate([\n Event()\n ], Ribbon.prototype, \"created\", void 0);\n Ribbon = Ribbon_1 = __decorate([\n NotifyPropertyChanges\n ], Ribbon);\n return Ribbon;\n}(Component));\nexport { Ribbon };\n","/**\n * Ribbon modules\n */\nexport * from './ribbon';\nexport * from './interface';\nexport * from './constant';\nexport * from './utils';\n","import { EventHandler, remove } from '@syncfusion/ej2-base';\nimport { DropDownButton } from '@syncfusion/ej2-splitbuttons';\nimport { Menu } from '@syncfusion/ej2-navigations';\nimport { getIndex, isTooltipPresent } from '../base/index';\nimport * as constants from '../base/constant';\n/**\n * Defines the items of Ribbon.\n */\nvar RibbonFileMenu = /** @class */ (function () {\n function RibbonFileMenu(parent) {\n this.parent = parent;\n }\n RibbonFileMenu.prototype.getModuleName = function () {\n return 'ribbonFileMenu';\n };\n RibbonFileMenu.prototype.destroy = function () {\n if (this.fileMenuDDB) {\n this.destroyDDB();\n }\n this.parent = null;\n };\n /**\n * Creates File Menu\n *\n * @param {FileMenuSettingsModel} fileMenuOptions - Gets the property of filemenu.\n * @returns {void}\n * @hidden\n */\n RibbonFileMenu.prototype.createFileMenu = function (fileMenuOptions) {\n var _this = this;\n if (!fileMenuOptions.visible) {\n return;\n }\n this.ddbElement = this.parent.createElement('button', {\n id: this.parent.element.id + constants.RIBBON_FILE_MENU_ID\n });\n var tabEle = this.parent.tabObj.element;\n var toolbarEle = tabEle.querySelector('.e-toolbar');\n tabEle.insertBefore(this.ddbElement, toolbarEle);\n this.fileMenuDDB = new DropDownButton({\n content: fileMenuOptions.text,\n enableRtl: this.parent.enableRtl,\n cssClass: 'e-ribbon-file-menu e-caret-hide',\n created: function () {\n tabEle.style.setProperty(constants.RIBBON_FILE_MENU_WIDTH, _this.ddbElement.offsetWidth + 'px');\n },\n beforeClose: this.ddbBeforeEvent.bind(this, false),\n beforeOpen: this.ddbBeforeEvent.bind(this, true),\n close: this.ddbAfterEvent.bind(this, false),\n open: this.ddbAfterEvent.bind(this, true)\n }, this.ddbElement);\n if (this.parent.fileMenu.popupTemplate) {\n this.fileMenuDDB.setProperties({ target: this.parent.fileMenu.popupTemplate });\n }\n else {\n this.createRibbonMenu(fileMenuOptions);\n }\n this.parent.tabObj.refreshActiveTabBorder();\n this.addFileMenuTooltip(fileMenuOptions);\n };\n RibbonFileMenu.prototype.addFileMenuTooltip = function (fileMenuOptions) {\n if (isTooltipPresent(fileMenuOptions.ribbonTooltipSettings)) {\n this.ddbElement.classList.add(constants.RIBBON_TOOLTIP_TARGET);\n this.parent.tooltipData.push({ id: this.ddbElement.id, data: fileMenuOptions.ribbonTooltipSettings });\n }\n };\n RibbonFileMenu.prototype.ddbBeforeEvent = function (isOpen, args) {\n //args.event is null when dropdown button is closed using a method call\n if (!isOpen && args.event && args.event.target.closest('.e-ribbon-menu')) {\n args.cancel = true;\n }\n var event = isOpen ? this.parent.fileMenu.beforeOpen :\n this.parent.fileMenu.beforeClose;\n if (event) {\n var eventArgs = { cancel: args.cancel, element: args.element, event: args.event };\n event.call(this, eventArgs);\n args.cancel = eventArgs.cancel;\n }\n };\n RibbonFileMenu.prototype.ddbAfterEvent = function (isOpen, args) {\n var element = isOpen ? this.fileMenuDDB.target : this.fileMenuDDB.element;\n element.focus();\n var event = isOpen ? this.parent.fileMenu.open : this.parent.fileMenu.close;\n if (event) {\n var eventArgs = { element: args.element };\n event.call(this, eventArgs);\n }\n };\n //Clone RibbonMenuItems before assigning to avoid reference issues.\n RibbonFileMenu.prototype.cloneMenuItem = function (items) {\n var itemsList = [];\n for (var i = 0; i < items.length; i++) {\n var item = items[parseInt(i.toString(), 10)];\n itemsList.push({\n iconCss: item.iconCss,\n id: item.id,\n separator: item.separator,\n text: item.text,\n url: item.url,\n items: this.cloneMenuItem(item.items)\n });\n }\n return itemsList;\n };\n RibbonFileMenu.prototype.createRibbonMenu = function (menuOptions) {\n var _this = this;\n var ulElem = this.parent.createElement('ul', {\n id: this.parent.element.id + constants.RIBBON_FILE_MENU_LIST\n });\n this.fileMenuDDB.setProperties({ target: ulElem });\n this.menuctrl = new Menu({\n orientation: 'Vertical',\n enableRtl: this.parent.enableRtl,\n cssClass: 'e-ribbon-menu',\n animationSettings: menuOptions.animationSettings,\n items: this.cloneMenuItem(menuOptions.menuItems),\n showItemOnClick: menuOptions.showItemOnClick,\n template: menuOptions.itemTemplate,\n beforeClose: this.menuBeforeEvent.bind(this, false),\n beforeOpen: this.menuBeforeEvent.bind(this, true),\n beforeItemRender: this.beforeItemRender.bind(this),\n onClose: this.menuAfterEvent.bind(this, false),\n onOpen: this.menuAfterEvent.bind(this, true),\n select: this.menuSelect.bind(this)\n }, ulElem);\n EventHandler.add(ulElem, 'keydown', function (e) {\n if (e.key === 'Tab') {\n _this.fileMenuDDB.toggle();\n }\n }, this);\n };\n RibbonFileMenu.prototype.menuBeforeEvent = function (isOpen, args) {\n var event = isOpen ? this.parent.fileMenu.beforeOpen :\n this.parent.fileMenu.beforeClose;\n if (event) {\n var eventArgs = {\n cancel: args.cancel, element: args.element, event: args.event,\n items: args.items, parentItem: args.parentItem\n };\n event.call(this, eventArgs);\n args.cancel = eventArgs.cancel;\n }\n };\n RibbonFileMenu.prototype.menuAfterEvent = function (isOpen, args) {\n var event = isOpen ? this.parent.fileMenu.open : this.parent.fileMenu.close;\n if (event) {\n var eventArgs = { element: args.element, items: args.items, parentItem: args.parentItem };\n event.call(this, eventArgs);\n }\n };\n RibbonFileMenu.prototype.beforeItemRender = function (args) {\n var event = this.parent.fileMenu.beforeItemRender;\n if (event) {\n var eventArgs = { element: args.element, item: args.item };\n event.call(this, eventArgs);\n }\n };\n RibbonFileMenu.prototype.menuSelect = function (args) {\n var event = this.parent.fileMenu.select;\n if (event) {\n var eventArgs = { element: args.element, item: args.item, event: args.event };\n event.call(this, eventArgs);\n if (!args.element.classList.contains('e-menu-caret-icon')) {\n this.fileMenuDDB.toggle();\n }\n }\n };\n /**\n * setRtl\n *\n * @param {commonProperties} commonProp - Get the common property of ribbon.\n * @returns {void}\n * @hidden\n */\n RibbonFileMenu.prototype.setCommonProperties = function (commonProp) {\n if (this.fileMenuDDB) {\n this.fileMenuDDB.setProperties(commonProp);\n if (this.menuctrl) {\n this.menuctrl.setProperties(commonProp);\n }\n }\n };\n /**\n * Update FileMenu\n *\n * @param {FileMenuSettingsModel} fileMenuOptions - Gets the property of filemenu.\n * @returns {void}\n * @hidden\n */\n RibbonFileMenu.prototype.updateFileMenu = function (fileMenuOptions) {\n if (fileMenuOptions.visible) {\n if (this.fileMenuDDB) {\n if (fileMenuOptions.text) {\n this.fileMenuDDB.setProperties({\n content: fileMenuOptions.text\n });\n this.parent.tabObj.element.style.setProperty(constants.RIBBON_FILE_MENU_WIDTH, this.ddbElement.offsetWidth + 'px');\n }\n if (fileMenuOptions.popupTemplate) {\n if (this.menuctrl) {\n this.destroyMenu();\n }\n this.fileMenuDDB.setProperties({ target: fileMenuOptions.popupTemplate });\n }\n else {\n if (this.menuctrl) {\n this.menuctrl.setProperties({\n animationSettings: fileMenuOptions.animationSettings,\n items: this.cloneMenuItem(fileMenuOptions.menuItems),\n showItemOnClick: fileMenuOptions.showItemOnClick,\n template: fileMenuOptions.itemTemplate\n });\n }\n else {\n this.createRibbonMenu(fileMenuOptions);\n }\n }\n this.removeFileMenuTooltip();\n this.addFileMenuTooltip(fileMenuOptions);\n }\n else {\n this.createFileMenu(fileMenuOptions);\n }\n }\n else if (this.fileMenuDDB) {\n this.destroyDDB();\n }\n this.parent.tabObj.refreshActiveTabBorder();\n };\n RibbonFileMenu.prototype.destroyMenu = function () {\n if (this.menuctrl) {\n this.menuctrl.destroy();\n this.menuctrl = null;\n }\n };\n RibbonFileMenu.prototype.destroyDDB = function () {\n this.removeFileMenuTooltip();\n var tabEle = this.parent.tabObj.element;\n tabEle.style.removeProperty(constants.RIBBON_FILE_MENU_WIDTH);\n this.destroyMenu();\n this.fileMenuDDB.destroy();\n this.fileMenuDDB = null;\n remove(this.ddbElement);\n this.ddbElement = null;\n };\n RibbonFileMenu.prototype.removeFileMenuTooltip = function () {\n var _this = this;\n var index = getIndex(this.parent.tooltipData, function (e) { return e.id === _this.ddbElement.id; });\n if (index !== -1) {\n this.ddbElement.classList.remove(constants.RIBBON_TOOLTIP_TARGET);\n this.parent.tooltipData.splice(index, 1);\n }\n };\n /**\n * Add items to FileMenu.\n *\n * @param {MenuItemModel[]} items - Gets the items to be added.\n * @param {string} target - Gets the target item to add the items.\n * @param {boolean} isAfter - Gets the boolean value to add the items after or before the target item.\n * @param {boolean} isUniqueId - Gets whether the target provided is uniqueId or not.\n * @returns {void}\n */\n RibbonFileMenu.prototype.addItems = function (items, target, isAfter, isUniqueId) {\n if (isAfter) {\n this.menuctrl.insertAfter(items, target, isUniqueId);\n }\n else {\n this.menuctrl.insertBefore(items, target, isUniqueId);\n }\n this.parent.fileMenu.setProperties({ menuItems: this.menuctrl.items }, true);\n };\n /**\n * Remove items from FileMenu.\n *\n * @param {string[]} items - Gets the items to be removed.\n * @param {boolean} isUniqueId - Gets whether the target provided is uniqueId or not.\n * @returns {void}\n */\n RibbonFileMenu.prototype.removeItems = function (items, isUniqueId) {\n this.menuctrl.removeItems(items, isUniqueId);\n this.parent.fileMenu.setProperties({ menuItems: this.menuctrl.items }, true);\n };\n /**\n * Enable items in FileMenu.\n *\n * @param {string[]} items - Gets the items to be enabled.\n * @param {boolean} isUniqueId - Gets whether the target provided is uniqueId or not.\n * @returns {void}\n */\n RibbonFileMenu.prototype.enableItems = function (items, isUniqueId) {\n this.menuctrl.enableItems(items, true, isUniqueId);\n this.parent.fileMenu.setProperties({ menuItems: this.menuctrl.items }, true);\n };\n /**\n * Disable items in FileMenu.\n *\n * @param {string[]} items - Gets the items to be disabled.\n * @param {boolean} isUniqueId - Gets whether the target provided is uniqueId or not.\n * @returns {void}\n */\n RibbonFileMenu.prototype.disableItems = function (items, isUniqueId) {\n this.menuctrl.enableItems(items, false, isUniqueId);\n this.parent.fileMenu.setProperties({ menuItems: this.menuctrl.items }, true);\n };\n /**\n * Update items in FileMenu.\n *\n * @param {MenuItem} item - Gets the item to be updated.\n * @param {boolean} id - Gets the id of the item to be updated.\n * @param {boolean} isUniqueId - Gets whether the id provided is uniqueId or not.\n * @returns {void}\n */\n RibbonFileMenu.prototype.setItem = function (item, id, isUniqueId) {\n this.menuctrl.setItem(item, id, isUniqueId);\n this.menuctrl.refresh();\n this.parent.fileMenu.setProperties({ menuItems: this.menuctrl.items }, true);\n };\n return RibbonFileMenu;\n}());\nexport { RibbonFileMenu };\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})();\nimport { remove, append, Component, EventHandler } from '@syncfusion/ej2-base';\nimport { Menu } from '@syncfusion/ej2-navigations';\nimport { getIndex } from '../base/index';\nimport { getTemplateFunction, isTooltipPresent } from '../base/utils';\nimport * as constants from '../base/constant';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { Popup } from '@syncfusion/ej2-popups';\n/**\n * Defines the items of Ribbon.\n */\nvar RibbonBackstage = /** @class */ (function (_super) {\n __extends(RibbonBackstage, _super);\n function RibbonBackstage(parent) {\n var _this = _super.call(this) || this;\n _this.parent = parent;\n return _this;\n }\n /**\n * @private\n * @returns {void}\n */\n RibbonBackstage.prototype.render = function () {\n // render code\n };\n /**\n * @private\n * @returns {void}\n */\n RibbonBackstage.prototype.preRender = function () {\n // pre render code\n };\n RibbonBackstage.prototype.getPersistData = function () {\n return '';\n };\n /**\n * This method is abstract member of the Component<HTMLElement>.\n *\n * @private\n * @returns {void}\n */\n RibbonBackstage.prototype.onPropertyChanged = function () {\n // onProperty changes code\n };\n RibbonBackstage.prototype.getModuleName = function () {\n return 'ribbonBackstage';\n };\n RibbonBackstage.prototype.destroy = function () {\n if (this.backstageButton) {\n this.destroyDDB();\n }\n this.parent = null;\n };\n /**\n * Creates Backstage Menu\n *\n * @param {BackStageMenuModel} backStageOptions - Gets the property of backstage.\n * @returns {void}\n * @hidden\n */\n RibbonBackstage.prototype.createBackStage = function (backStageOptions) {\n var _this = this;\n if (!backStageOptions.visible) {\n return;\n }\n this.backstageButtonEle = this.parent.createElement('button', {\n id: this.parent.element.id + constants.RIBBON_BACKSTAGE_MENU_ID\n });\n var tabEle = this.parent.tabObj.element;\n var toolbarEle = tabEle.querySelector('.e-toolbar');\n tabEle.insertBefore(this.backstageButtonEle, toolbarEle);\n this.backstageButton = new Button({\n content: backStageOptions.text,\n enableRtl: this.parent.enableRtl,\n cssClass: constants.RIBBON_BACKSTAGE,\n created: function () {\n tabEle.style.setProperty(constants.RIBBON_FILE_MENU_WIDTH, _this.backstageButtonEle.offsetWidth + 'px');\n }\n }, this.backstageButtonEle);\n this.createBackStagePopup(backStageOptions);\n if (this.parent.backStageMenu.template) {\n this.createBackStageTemplate(this.parent.backStageMenu.template);\n }\n else {\n var footerItemCount = 0;\n var itemCount = 0;\n for (var i = 0; i < backStageOptions.items.length; i++) {\n var item = backStageOptions.items[parseInt(i.toString(), 10)];\n if (item.isFooter) {\n footerItemCount++;\n }\n else {\n itemCount++;\n }\n }\n if (itemCount > 0) {\n this.createBackstageMenu(backStageOptions, false);\n }\n if (footerItemCount > 0) {\n this.createBackstageMenu(backStageOptions, true);\n }\n if (this.menuCtrl) {\n this.checkMenuItems(this.menuCtrl.items);\n }\n if (this.footerMenuCtrl) {\n this.checkMenuItems(this.footerMenuCtrl.items);\n }\n }\n this.backstageButtonEle.onclick = function (e) {\n e.stopPropagation();\n _this.showBackstage();\n _this.popupHTMLElement.classList.add(constants.RIBBON_BACKSTAGE_OPEN);\n var menuItem = _this.menuWrapper.querySelector('.e-menu-item.e-selected');\n if (menuItem) {\n menuItem.classList.remove('e-selected');\n }\n for (var i = 0; i < backStageOptions.items.length; i++) {\n var item = backStageOptions.items[parseInt(i.toString(), 10)];\n if (!item.isFooter && _this.menuCtrl.items[0].text === item.text) {\n var firstMenuEle = _this.popupHTMLElement.querySelector('#' + _this.menuCtrl.items[0].id);\n if (firstMenuEle) {\n firstMenuEle.classList.add('e-selected');\n firstMenuEle.focus();\n }\n _this.createBackStageContent(_this.menuCtrl.items[0].id, item.content);\n break;\n }\n else {\n continue;\n }\n }\n };\n this.parent.tabObj.refreshActiveTabBorder();\n this.addBackStageMenuTooltip(backStageOptions);\n EventHandler.add(document, 'click', this.onClickEvent, this);\n };\n RibbonBackstage.prototype.onClickEvent = function (e) {\n var targetEle = e.target;\n if (this.popupHTMLElement.contains(targetEle)) {\n return;\n }\n else {\n this.hideBackstage();\n }\n };\n RibbonBackstage.prototype.addBackStageMenuTooltip = function (backStageOptions) {\n if (isTooltipPresent(backStageOptions.ribbonTooltipSettings)) {\n this.backstageButtonEle.classList.add(constants.RIBBON_TOOLTIP_TARGET);\n this.parent.tooltipData.push({ id: this.backstageButtonEle.id, data: backStageOptions.ribbonTooltipSettings });\n }\n };\n RibbonBackstage.prototype.checkMenuItems = function (backStageItems) {\n for (var i = 0; i < backStageItems.length; i++) {\n var item = backStageItems[parseInt(i.toString(), 10)];\n if (!item.iconCss) {\n var menuItemEle = this.popupHTMLElement.querySelector('#' + item.id);\n menuItemEle.classList.add(constants.RIBBON_BACKSTAGE_TEXT_MENU);\n }\n }\n };\n RibbonBackstage.prototype.createBackStagePopup = function (backStageOptions) {\n var _this = this;\n this.popupHTMLElement = this.parent.createElement('div', {\n id: this.parent.element.id + constants.RIBBON_BACKSTAGE_POPUP_ID,\n className: constants.RIBBON_BACKSTAGE_POPUP\n });\n var targetEle;\n if (backStageOptions.target) {\n targetEle = backStageOptions.target instanceof HTMLElement ? backStageOptions.target : document.querySelector(backStageOptions.target);\n targetEle.appendChild(this.popupHTMLElement);\n }\n else {\n this.parent.element.appendChild(this.popupHTMLElement);\n }\n this.popupEle = new Popup(this.popupHTMLElement, {\n height: backStageOptions.height,\n width: backStageOptions.width,\n relateTo: backStageOptions.target || this.parent.element,\n enableRtl: this.parent.enableRtl\n });\n if (this.parent.enableRtl) {\n this.updatePopupPositionOnRtl(this.parent.enableRtl);\n }\n this.popupHTMLElement.onkeydown = function (e) { if (e.code === 'Escape') {\n _this.hideBackstage();\n } };\n this.hideBackstage();\n };\n RibbonBackstage.prototype.updatePopupPositionOnRtl = function (enableRtl) {\n var popupStyle = this.popupHTMLElement.style;\n if (enableRtl) {\n popupStyle.right = popupStyle.left;\n popupStyle.left = 'unset';\n }\n else {\n popupStyle.left = popupStyle.right;\n popupStyle.right = 'unset';\n }\n };\n RibbonBackstage.prototype.createBackstageMenu = function (menuOptions, isFooter) {\n var _this = this;\n var wrapperEle = this.popupHTMLElement.querySelector('#' + this.parent.element.id + '_wrapper');\n if (!wrapperEle) {\n this.menuWrapper = this.parent.createElement('div', {\n id: this.parent.element.id + '_wrapper',\n className: constants.RIBBON_BACKSTAGE_MENU_WRAPPER\n });\n this.popupHTMLElement.appendChild(this.menuWrapper);\n }\n if (menuOptions.backButton.visible && !isFooter) {\n var closeBtnEle = this.parent.createElement('button', {\n id: this.parent.element.id + '_close',\n className: 'e-ribbon-close-btn'\n });\n this.closeBtn = new Button({\n content: menuOptions.backButton.text,\n iconCss: menuOptions.backButton.iconCss ? menuOptions.backButton.iconCss : constants.BACKSTAGE_CLOSE_ICON,\n enableRtl: this.parent.enableRtl\n }, closeBtnEle);\n this.menuWrapper.append(closeBtnEle);\n closeBtnEle.onclick = function () {\n _this.popupHTMLElement.classList.remove(constants.RIBBON_BACKSTAGE_OPEN);\n _this.hideBackstage();\n _this.isBackButtonClicked = true;\n };\n }\n var itemsWrapperEle = this.popupHTMLElement.querySelector('#' + this.parent.element.id + '_itemswrapper');\n if (!itemsWrapperEle) {\n this.itemsWrapperEle = this.parent.createElement('div', {\n id: this.parent.element.id + '_itemswrapper',\n className: constants.RIBBON_BACKSTAGE_ITEMS_WRAPPER\n });\n this.menuWrapper.append(this.itemsWrapperEle);\n }\n var ulFooterElem;\n if (isFooter) {\n ulFooterElem = this.parent.createElement('ul', {\n id: this.parent.element.id + constants.RIBBON_FOOTER_MENU_LIST\n });\n this.itemsWrapperEle.appendChild(ulFooterElem);\n }\n else {\n this.ulMenuElem = this.parent.createElement('ul', {\n id: this.parent.element.id + constants.RIBBON_MENU_LIST\n });\n this.itemsWrapperEle.appendChild(this.ulMenuElem);\n }\n if (!isFooter) {\n this.menuCtrl = new Menu({\n orientation: 'Vertical',\n enableRtl: this.parent.enableRtl,\n cssClass: constants.RIBBON_BACKSTAGE_MENU,\n items: this.cloneMenuItem(menuOptions.items),\n select: this.menuSelect.bind(this, menuOptions)\n }, this.ulMenuElem);\n }\n else {\n this.footerMenuCtrl = new Menu({\n orientation: 'Vertical',\n enableRtl: this.parent.enableRtl,\n cssClass: constants.RIBBON_BACKSTAGE_MENU,\n items: this.cloneFooterMenuItem(menuOptions.items),\n select: this.menuSelect.bind(this, menuOptions)\n }, ulFooterElem);\n }\n };\n RibbonBackstage.prototype.cloneMenuItem = function (items) {\n var itemsList = [];\n for (var i = 0; i < items.length; i++) {\n var item = items[parseInt(i.toString(), 10)];\n if (item.isFooter) {\n continue;\n }\n else {\n itemsList.push({\n id: item.id,\n iconCss: item.iconCss,\n separator: item.separator,\n text: item.text\n });\n }\n }\n return itemsList;\n };\n RibbonBackstage.prototype.cloneFooterMenuItem = function (items) {\n var itemsList = [];\n for (var i = 0; i < items.length; i++) {\n var item = items[parseInt(i.toString(), 10)];\n if (!item.isFooter) {\n continue;\n }\n else {\n itemsList.push({\n id: item.id,\n iconCss: item.iconCss,\n separator: item.separator,\n text: item.text\n });\n }\n }\n return itemsList;\n };\n RibbonBackstage.prototype.createBackStageContent = function (itemId, content) {\n var templateName = 'backstageContent';\n this.clearTemplate([templateName]);\n if (!this.backstageContentEle) {\n this.backstageContentEle = this.parent.createElement('div', {\n id: itemId + constants.CONTENT_ID,\n className: constants.RIBBON_BACKSTAGE_CONTENT\n });\n }\n else {\n this.backstageContentEle.innerHTML = '';\n this.backstageContentEle.id = itemId + constants.CONTENT_ID;\n }\n var templateFunction = getTemplateFunction(content);\n append(templateFunction({}, this, templateName, 'backstageContent', this.parent.isStringTemplate), this.backstageContentEle);\n if (content) {\n this.popupHTMLElement.append(this.backstageContentEle);\n }\n this.renderReactTemplates();\n return templateFunction;\n };\n RibbonBackstage.prototype.createBackStageTemplate = function (template) {\n var templateName = 'backstageTemplate';\n this.clearTemplate([templateName]);\n this.backstageTempEle = this.parent.createElement('div', {\n id: this.parent.element.id + constants.RIBBON_BACKSTAGE_MENU_ID + '_template',\n className: constants.RIBBON_BACKSTAGE_TEMPLATE\n });\n var templateFunction = getTemplateFunction(template);\n append(templateFunction({}, this, templateName, 'backstageTemplate', this.parent.isStringTemplate), this.backstageTempEle);\n this.popupHTMLElement.append(this.backstageTempEle);\n this.renderReactTemplates();\n return templateFunction;\n };\n RibbonBackstage.prototype.menuSelect = function (menuOptions, args) {\n for (var i = 0; i < menuOptions.items.length; i++) {\n var item = menuOptions.items[parseInt(i.toString(), 10)];\n if (item.text === args.item.text) {\n this.contentItem = item;\n break;\n }\n }\n this.createBackStageContent(args.item.id, this.contentItem.content);\n var eventArgs = { cancel: false, target: args.element, item: this.contentItem, isBackButton: this.isBackButtonClicked };\n if (this.contentItem.backStageItemClick) {\n this.contentItem.backStageItemClick.call(this, eventArgs);\n }\n if (eventArgs.cancel) {\n return;\n }\n };\n /**\n * setRtl\n *\n * @param {commonProperties} commonProp - Get the common property of ribbon.\n * @returns {void}\n * @hidden\n */\n RibbonBackstage.prototype.setCommonProperties = function (commonProp) {\n if (this.backstageButton) {\n this.backstageButton.setProperties(commonProp);\n if (this.popupEle) {\n this.popupEle.setProperties(commonProp);\n if (this.popupHTMLElement)\n this.updatePopupPositionOnRtl(commonProp.enableRtl);\n if (this.menuCtrl) {\n this.menuCtrl.setProperties(commonProp);\n if (this.closeBtn) {\n this.closeBtn.setProperties(commonProp);\n }\n }\n }\n }\n };\n /**\n * Update Backstage menu\n *\n * @param {BackStageMenuModel} backStageOptions - Gets the property of backstage menu.\n * @returns {void}\n * @hidden\n */\n RibbonBackstage.prototype.updateBackStageMenu = function (backStageOptions) {\n if (backStageOptions.visible) {\n if (this.backstageButton) {\n if (backStageOptions.text) {\n this.backstageButton.setProperties({\n content: backStageOptions.text\n });\n this.parent.tabObj.element.style.setProperty(constants.RIBBON_FILE_MENU_WIDTH, this.backstageButtonEle.offsetWidth + 'px');\n }\n if (this.popupEle) {\n this.popupEle.setProperties({\n height: backStageOptions.height,\n width: backStageOptions.width,\n target: backStageOptions.target || this.parent.element,\n });\n }\n if (backStageOptions.template) {\n if (this.backstageTempEle) {\n remove(this.backstageTempEle);\n this.backstageTempEle = null;\n }\n this.createBackStageTemplate(backStageOptions.template);\n }\n else {\n if (this.menuCtrl) {\n this.menuCtrl.setProperties({\n items: this.cloneMenuItem(backStageOptions.items)\n });\n }\n if (this.footerMenuCtrl) {\n this.footerMenuCtrl.setProperties({\n items: this.cloneFooterMenuItem(backStageOptions.items)\n });\n }\n else {\n var footerItemCount = 0;\n var itemCount = 0;\n for (var i = 0; i < backStageOptions.items.length; i++) {\n var item = backStageOptions.items[parseInt(i.toString(), 10)];\n if (item.isFooter) {\n footerItemCount++;\n }\n else {\n itemCount++;\n }\n }\n if (itemCount > 0) {\n this.createBackstageMenu(backStageOptions, false);\n }\n if (footerItemCount > 0) {\n this.createBackstageMenu(backStageOptions, true);\n }\n }\n }\n this.removeBackstageMenuTooltip();\n this.addBackStageMenuTooltip(backStageOptions);\n }\n else {\n this.createBackStage(backStageOptions);\n }\n }\n else if (this.backstageButton) {\n this.destroyDDB();\n }\n this.parent.tabObj.refreshActiveTabBorder();\n };\n RibbonBackstage.prototype.destroyMenu = function () {\n if (this.menuCtrl) {\n this.menuCtrl.destroy();\n this.menuCtrl = null;\n }\n };\n RibbonBackstage.prototype.destroyDDB = function () {\n this.removeBackstageMenuTooltip();\n var tabEle = this.parent.tabObj.element;\n tabEle.style.removeProperty(constants.RIBBON_FILE_MENU_WIDTH);\n this.destroyMenu();\n this.backstageButton.destroy();\n this.backstageButton = null;\n remove(this.backstageButtonEle);\n this.backstageButtonEle = null;\n EventHandler.remove(document, 'click', this.onClickEvent);\n };\n RibbonBackstage.prototype.removeBackstageMenuTooltip = function () {\n var _this = this;\n var index = getIndex(this.parent.tooltipData, function (e) { return e.id === _this.backstageButtonEle.id; });\n if (index !== -1) {\n this.backstageButtonEle.classList.remove(constants.RIBBON_TOOLTIP_TARGET);\n this.parent.tooltipData.splice(index, 1);\n }\n };\n /**\n * Add items to Backstage Menu.\n *\n * @param {BackstageItemModel[]} items - Gets the items to be added.\n * @param {string} target - Gets the target item to add the items.\n * @param {boolean} isAfter - Gets the boolean value to add the items after or before the target item.\n * @param {boolean} isUniqueId - Gets whether the target provided is uniqueId or not.\n * @returns {void}\n */\n RibbonBackstage.prototype.addBackstageItems = function (items, target, isAfter, isUniqueId) {\n for (var i = 0; i < items.length; i++) {\n var item = items[parseInt(i.toString(), 10)];\n if (item.isFooter) {\n isAfter ? this.footerMenuCtrl.insertAfter(items, target, isUniqueId) : this.footerMenuCtrl.insertBefore(items, target, isUniqueId);\n }\n else {\n isAfter ? this.menuCtrl.insertAfter(items, target, isUniqueId) : this.menuCtrl.insertBefore(items, target, isUniqueId);\n }\n }\n var backstageItems = [].concat(this.menuCtrl.items, this.footerMenuCtrl.items);\n var backStageOptions = this.parent.backStageMenu;\n for (var i = 0; i < backStageOptions.items.length; i++) {\n var item = backStageOptions.items[parseInt(i.toString(), 10)];\n for (var i_1 = 0; i_1 < backstageItems.length; i_1++) {\n var item1 = backstageItems[parseInt(i_1.toString(), 10)];\n if (item.text === item1.text) {\n item1.content = item.content;\n break;\n }\n }\n }\n this.parent.backStageMenu.setProperties({ items: backstageItems }, true);\n };\n /**\n * Remove items from Backstage Menu.\n *\n * @param {string[]} items - Gets the items to be removed.\n * @param {boolean} isUniqueId - Gets whether the target provided is uniqueId or not.\n * @returns {void}\n */\n RibbonBackstage.prototype.removeBackstageItems = function (items, isUniqueId) {\n this.menuCtrl.removeItems(items, isUniqueId);\n this.footerMenuCtrl.removeItems(items, isUniqueId);\n var backstageItems = [].concat(this.menuCtrl.items, this.footerMenuCtrl.items);\n this.parent.backStageMenu.setProperties({ items: backstageItems }, true);\n };\n /**\n * Renders the backstage dynamically.\n *\n * @returns {void}\n */\n RibbonBackstage.prototype.showBackstage = function () {\n this.popupEle.show();\n };\n /**\n * Hides the backstage dynamically.\n *\n * @returns {void}\n */\n RibbonBackstage.prototype.hideBackstage = function () {\n if (this.popupEle.element.classList.contains(constants.RIBBON_BACKSTAGE_OPEN)) {\n this.popupEle.element.classList.remove(constants.RIBBON_BACKSTAGE_OPEN);\n }\n this.popupEle.hide();\n };\n return RibbonBackstage;\n}(Component));\nexport { RibbonBackstage };\n","/**\n * Ribbon modules\n */\nexport * from './base/index';\nexport * from './models/index';\nexport * from './items/index';\nexport * from './modules/index';\n","// export all modules from current location\n// example: export * from './module'\nexport * from './ribbon/index';\n"],"names":["__extends","this","__decorate","constants.GROUPOF_BUTTON_ID","constants.RIBBON_TOOLTIP_CONTAINER","constants.RIBBON_TOOLTIP_TITLE","constants.RIBBON_TEXT_CONTAINER","constants.RIBBON_TOOLTIP_ICON","constants.RIBBON_TOOLTIP_CONTENT","constants.RIBBON_TOOLTIP","constants.RIBBON_TOOLTIP_TARGET","constants.RIBBON_GROUP_BUTTON_ID","constants.RIBBON_GROUP_BUTTON","constants.RIBBON_SINGLE_BUTTON_SELECTION","constants.RIBBON_MULTIPLE_BUTTON_SELECTION","constants.RIBBON_GROUP_BUTTON_OVERFLOW_POPUP","constants.SPACE","constants.RTL_CSS","constants.CONTENT_ID","constants.RIBBON_GROUP_CONTAINER","constants.HORIZONTAL_SCROLLBAR","constants.TAB_ID","constants.RIBBON_TAB","constants.RIBBON_FILE_MENU_WIDTH","constants.RIBBON_HELP_PANE_TEMPLATE_WIDTH","constants.RIBBON_MINIMIZE","constants.RIBBON_TAB_ACTIVE","constants.OVERFLOW_ID","constants.HIDE_CSS","constants.TAB_CONTENT","constants.CONTAINER_ID","constants.RIBBON_ITEM","constants.RIBBON_GROUP_OF_BUTTON","constants.OVRLOF_BUTTON_ID","constants.RIBBON_OVERALL_OF_BUTTON","constants.RIBBON_OF_TAB_CONTAINER","constants.RIBBON_ROW","constants.RIBBON_GROUP_CONTENT","constants.RIBBON_CONTENT_HEIGHT","constants.RIBBON_LARGE_ITEM","constants.RIBBON_MEDIUM_ITEM","constants.RIBBON_SMALL_ITEM","constants.RIBBON_GROUP_OVERFLOW","constants.DROPDOWN_ID","constants.RIBBON_GROUP","constants.HEADER_ID","constants.RIBBON_TAB_ITEM","constants.RIBBON_SIMPLIFIED_MODE","constants.RIBBON_OVERFLOW_TARGET","constants.OVERFLOW_ICON","constants.DROPDOWNBUTTON_HIDE","constants.RIBBON_GROUP_OVERFLOW_DDB","constants.RIBBON_POPUP_CONTROL","constants.RIBBON_OVERFLOW","constants.RIBBON_OF_GROUP_CONTAINER","constants.RIBBON_OVERFLOW_HEADER","constants.RIBBON_COLLAPSE_BUTTON","constants.EXPAND_COLLAPSE_ICON","constants.COLLAPSE_BUTTON_ID","constants.RIBBON_COLLAPSIBLE","constants.RIBBON_EXPAND_BUTTON","constants.RIBBON_COLUMN","constants.RIBBON_GROUP_HEADER","constants.RIBBON_LAUNCHER_ICON_ELE","constants.RIBBON_LAUNCHER_ICON","constants.LAUNCHER_ID","constants.RIBBON_LAUNCHER","constants.RIBBON_COLLECTION","constants.DISABLED_CSS","constants.RIBBON_HELP_TEMPLATE","constants.RIBBON_HELP_PANE_TEMPLATE_ID","constants.RIBBON_TEMPLATE","constants.GROUP_ID","constants.COLLECTION_ID","constants.ITEM_ID","constants.RIBBON_FILE_MENU_ID","constants.RIBBON_FILE_MENU_LIST","constants.RIBBON_BACKSTAGE_MENU_ID","constants.RIBBON_BACKSTAGE","constants.RIBBON_BACKSTAGE_OPEN","constants.RIBBON_BACKSTAGE_TEXT_MENU","constants.RIBBON_BACKSTAGE_POPUP_ID","constants.RIBBON_BACKSTAGE_POPUP","constants.RIBBON_BACKSTAGE_MENU_WRAPPER","constants.BACKSTAGE_CLOSE_ICON","constants.RIBBON_BACKSTAGE_ITEMS_WRAPPER","constants.RIBBON_FOOTER_MENU_LIST","constants.RIBBON_MENU_LIST","constants.RIBBON_BACKSTAGE_MENU","constants.RIBBON_BACKSTAGE_CONTENT","constants.RIBBON_BACKSTAGE_TEMPLATE"],"mappings":"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"}