{"version":3,"sources":["webpack:///./node_modules/@syncfusion/ej2-dropdowns/src/multi-select/float-label.js","webpack:///./node_modules/@syncfusion/ej2-dropdowns/src/multi-select/multi-select.js"],"names":["FLOATLINE","FLOATTEXT","LABELTOP","LABELBOTTOM","createFloatLabel","overAllWrapper","searchWrapper","element","inputElement","value","floatLabelType","placeholder","floatLinelement","className","floatLabelElement","id","getAttribute","replace","innerText","encodePlaceholder","removeAttribute","appendChild","classList","add","updateFloatLabelState","contains","label","length","removeFloating","componentWrapper","placeholderText","placeholderElement","querySelector","floatLine","setPlaceHolder","remove","floatLabelFocus","floatLabelBlur","result","spanElement","document","createElement","innerHTML","hiddenInput","children","__extends","extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","hasOwnProperty","__","this","constructor","prototype","create","__decorate","decorators","target","key","desc","c","arguments","r","getOwnPropertyDescriptor","Reflect","decorate","i","defineProperty","FOCUS","DISABLED","OVER_ALL_WRAPPER","ELEMENT_WRAPPER","ELEMENT_MOBILE_WRAPPER","HIDE_LIST","DELIMITER_VIEW","CHIP_WRAPPER","CHIP","CHIP_CONTENT","CHIP_CLOSE","CHIP_SELECTED","SEARCHBOX_WRAPPER","DELIMITER_VIEW_WRAPPER","ZERO_SIZE","REMAIN_WRAPPER","CLOSEICON_CLASS","DELIMITER_WRAPPER","POPUP_WRAPPER","INPUT_ELEMENT","RTL_CLASS","CLOSE_ICON_HIDE","MOBILE_CHIP","FOOTER","HEADER","DISABLE_ICON","SPINNER_CLASS","HIDDEN_ELEMENT","destroy","dropdownIcon","iconAnimation","TOTAL_COUNT_WRAPPER","BOX_ELEMENT","FILTERPARENT","CUSTOM_WIDTH","FILTERINPUT","_super","MultiSelect","option","_this","call","clearIconWidth","previousFilterText","isValidKey","selectAllEventData","selectAllEventEle","resetMainList","resetFilteredData","scrollFocusStatus","keyDownStatus","enableRTL","state","popupObj","enableRtl","dataBind","requiredModules","modules","mode","isGroupChecking","enableGroupCheckBox","prevOnChange","isProtectedOnChange","enableSelectionOrder","allowCustomValue","hideSelectedItem","closePopupOnSelect","push","member","args","updateHTMLAttribute","keys","htmlAttributes","_i","_a","htmlAttr","updatedClassValue","trim","split","popupWrapper","enable","setAttribute","setProperties","refreshPlaceHolder","defaultAttr","validateAttr","containerAttr","indexOf","hiddenElement","updateReadonly","updateClearButton","overAllClear","parentNode","style","display","updateCssClass","cssClass","updatedCssClassValues","updateOldPropCssClass","oldClass","onPopupShown","e","isDevice","allowFiltering","proxy_1","window","onpopstate","hidePopup","focus","history","pushState","animModel","name","duration","eventArgs","popup","event","cancel","animation","trigger","focusAtFirstListItem","body","fields","groupBy","updateListItems","list","querySelectorAll","mainList","showDropDownIcon","refreshPopup","renderReactTemplates","show","zIndex","updateAriaActiveDescendant","isFirstClick","loadTemplate","listItems","mainListItems","findGroupStart","deselectHeader","refreshListItems","removeFocus","notify","module","setScrollPosition","valueEle","findListElement","ulElement","scrollBottom","li","addListFocus","focusAtLastListItem","data","activeElement","liCollections","ignoreCase","item","index","getAriaAttributes","ariaAttributes","updateListARIA","disableStatus","isPopupOpen","ensureAriaDisabled","status","attr","removelastSelection","elements","chipCollectionWrapper","tempValues","slice","customValue","getFormattedValue","toString","removeValue","removeChipSelection","updateDelimeter","delimiterChar","makeTextBoxEmpty","listData","refreshSelection","checkPlaceholderSize","onActionFailure","renderPopup","targetElement","targetInputElement","getForQuery","valuecheck","predicate","field","text","or","getQuery","query","where","onActionComplete","isUpdated","updateSelectElementData","proxy","checkEle","dataSource","splice","presentItemValue","addNonPresentItems","updateActionList","showSelectAll","mainData","cloneNode","mainListCollection","remoteCustomValue","inputFocus","checkForCustomValue","tempQuery","keyCode","unwireListEvents","wireListEvents","setInitialValue","selectAllAction","setDynValue","initialTextUpdate","initialValueUpdate","initialUpdate","changeOnBlur","updateValueState","beforePopupOpen","selected","previousSibling","previousElementSibling","group","nextElementSibling","hideGroupItem","listEle","parentElement","l10nUpdate","noData","ariaValue","getElementsByClassName","checkSelectAll","checkMaxSelection","element1","j","temp","temp1","getValidLi","liElement","groupItemLength","listItem","searchCount","searchActiveCount","maximumSelectionLength","openClick","openOnClick","showPopup","keyUp","char","String","fromCharCode","isWordCharacter","match","ctrlKey","expandTextbox","showOverAllClear","search","filter","isFiltered","remoteFilterAction","dataUpdater","filterQuery","clone","filterAction","dataType","typeOfData","typeof","filterType","ignoreAccent","isDataFetched","backCommand","resetList","dataChecks","getValueByText","customData","dataItem","Math","random","tempData","JSON","parse","stringify","isNaN","parseFloat","getNgDirective","wrapperClick","enabled","readonly","preventDefault","onBlurHandler","eve","isDocClickFromCheck","relatedTarget","isIE","addTagOnBlur","listLiElement","allowChipAddition","updateListSelection","updateDataList","updateDelimView","dispatchEvent","focused","removeChipFocus","refreshInputHight","createSpanElement","calculateWidth","elementWidth","clientWidth","parseInt","getComputedStyle","paddingRight","downIconWidth","dropIcon","offsetWidth","marginRight","getModuleName","setPlaceholderSize","width","validateValues","newValue","oldValue","sort","newVal","oldVal","initStatus","isInteracted","isAngular","preventChange","updateTempValue","getPagingCount","height","getItems","getPropertyValue","round","offsetHeight","pageUpSelection","steps","collection","previousItem","getIndexByValue","pageDownSelection","render","focusInHandler","showDelimWrapper","viewWrapper","setTimeout","delimiterWrapper","hideDelimWrapper","size","mobFilter","calcPopupWidth","refreshPosition","resolveCollision","checkTextLength","popupKeyActions","updateAriaAttribute","focusedItem","filterInput","homeNavigation","isHome","scrollEle","onKeyDown","altKey","activeIndex","arrowUp","arrowDown","selectByKey","spaceKeySelection","escapeAction","keyNavigation","checkBackCommand","moveByList","keyAction","focuseElem","moveBy","removeSelectedChip","selectListByKey","hideOverAllClear","selectedLI","currentOffset","nextBottom","offsetTop","scrollTop","nextOffset","boxRange","fixedHeaderElement","limit","isValidLI","firstElementChild","lastElementChild","textContent","selectAllItem","selectedElem","addChipSelection","moveByTop","position","updateCheck","checkElement","chipClick","elem","onChipRemove","which","button","customVal","setFloatLabelType","removeAllItems","isClearAll","mainElement","removeVal","concat","invokeCheckboxSelection","updateMainList","updateChipStatus","isSelectAll","targetEle","element_1","val_1","getDataByValue","itemData","removeIndex","hideElement","scrollStop","removeChip","targetEle_1","currentTarget","items","isChecked","clearAllCallback","element2","setWidth","addValue","addListSelection","addChip","dispatchSelect","isNotTrigger","val_2","isServerRendered","updateListSelectEventCallback","getChip","closeElements","onMobileChipInteraction","chipElem","chipClose","multiCompiler","multiselectTemplate","checkTemplate","exception","compiledString","chip","attrs","chipContent","valueTemplate","valueCompTemp","valueTemplateId","isStringTemplate","enableHtmlSanitizer","setClass","classes","isPreventChange","showClearButton","popupWidth","inputWidth","mouseIn","mouseOut","listOption","iconCss","fieldProperty","properties","listCurrentOptions","showIcon","groupItemRole","checkboxFilter","filterParent","overAllHeight","popupHeight","visibility","headerTemplate","setHeaderTemplate","header","footerTemplate","setFooterTemplate","footer","selectAllHeight","popupElement","searchBoxHeight","maxHeight","targetType","X","Y","relateTo","collision","offsetY","close","unwireScrollEvents","checkboxFilterInput","blur","open","wireScrollEvents","targetExitViewport","headercheck","headerTemplateId","onListMouseDown","footercheck","footerTemplateId","clearAll","selectAllItems","selectedElementID","windowResize","resetValueHandler","formElement","textVal","tagName","wireEvent","onInput","pasteHandler","info","eventArgs_1","preventDefaultAction","updateData","preRender","initializeData","updateDataAttribute","getLocaleName","initial","delim","valueLength","hiddenElementContent","valueItem","listValue","getTextByValue","updateWrapperText","addValidInputClass","textArr","val","renderList","isEmptyData","noRecordsTemplate","childElementCount","removeListSelection","indexItem","noDataEle","addItem","replaceChild","updateActionCompleteData","updateAddItemList","itemCount","isDynamicGroupItemUpdate","isReactTemplateUpdate","isAngularTemplateUpdate","itemTemplate","disabled","removeHover","temp_1","fieldValue","data_1","newData","selectedItems","selectItems","hoveredItem","hover","mainlist","addListHover","ariaCheck","delimChar","onMouseClick","headerLi","count","liChecked","liUnchecked","groupValues","findGroupAttrtibutes","updateCheckBox","listElement","checked","unChecked","groupHeader","checkBoxElement","onMouseOver","currentLi","onMouseLeave","onDocumentClick","focusIn","focusOut","showSpinner","spinnerElement","filterClear","hideSpinner","wrapperType","wrapperData","sanitize","tempIndex","wrapperleng","remaining","overAllContainer","l10nLocale","actionFailureTemplate","overflowCountTemplate","totalCountTemplate","l10n","locale","getConstant","remainContent","totalContent","raminElement","remainCompildTemp","remainSize","checkClearIconWidth","getOverflowVal","paddingLeft","undefined","join","totalWidth","updateRemainTemplate","updateRemainWidth","updateRemainingText","firstChild","nodeType","nodeValue","removeChild","remainTemp","totalTemp","pop","newTemp","unWireEvent","groupTemplate","selectionLimit","focusedElement","textboxValueUpdate","updateValue","beforeSelectArgs","preventSelectEvent","index_1","count_1","updatedataValueItems","updateHiddenElement","hiddenValue","wrapperText","map","isRemoveAll","setZIndex","updateDataSource","prop","onLoadSelect","getPersistData","addOnPersist","onPropertyChanged","newProp","oldProp","isDynamicDataChange","setUpdateInitial","updateVal","filterBarPlaceholder","dropDownIcon","reInitializePoup","msProps","getPropObject","newProperty","oldProperty","executeQuery","then","isReact","itemIndex","delay","hide","mainLiLength","liLength","selectAll","clear","styles","spellcheck","type","autocomplete","tabindex","role","insertBefore","opacity","validationAttribute","checkInitialValue","hasAttribute","renderComplete","isData","options","optionsElement","valueCol","textCol","optionsLen","opt","checkAutoFocus","clearTemplate"],"mappings":"iQAMIA,EAAY,eACZC,EAAY,eACZC,EAAW,cACXC,EAAc,iBAaX,SAASC,EAAiBC,EAAgBC,EAAeC,EAASC,EAAcC,EAAOC,EAAgBC,GAC1G,IAAIC,EAAkB,eAAc,OAAQ,CAAEC,UAAWb,IACrDc,EAAoB,eAAc,QAAS,CAAED,UAAWZ,IACxDc,EAAKR,EAAQS,aAAa,MAAQT,EAAQS,aAAa,MAAQ,eAAY,mBAC/ET,EAAQQ,GAAKA,EACR,eAAkBR,EAAQQ,KAAsB,KAAfR,EAAQQ,KAC1CD,EAAkBC,GAAK,SAAWR,EAAQQ,GAAGE,QAAQ,KAAM,KAC3D,eAAWT,EAAc,CAAE,kBAAmBM,EAAkBC,MAE/D,eAAkBP,EAAaG,cAA6C,KAA7BH,EAAaG,cAC7DG,EAAkBI,UAAYC,EAAkBX,EAAaG,aAC7DH,EAAaY,gBAAgB,gBAEjCN,EAAkBI,UAAYC,EAAkBR,GAChDL,EAAce,YAAYT,GAC1BN,EAAce,YAAYP,GAC1BT,EAAeiB,UAAUC,IAAI,iBAC7BC,EAAsBf,EAAOK,GACN,WAAnBJ,IACII,EAAkBQ,UAAUG,SAAStB,IACrC,gBAAY,CAACW,GAAoBX,GAErC,eAAS,CAACW,GAAoBZ,IAS/B,SAASsB,EAAsBf,EAAOiB,GACrCjB,GAASA,EAAMkB,OAAS,GACxB,eAAS,CAACD,GAAQxB,GAClB,gBAAY,CAACwB,GAAQvB,KAGrB,gBAAY,CAACuB,GAAQxB,GACrB,eAAS,CAACwB,GAAQvB,IAcnB,SAASyB,EAAevB,EAAgBwB,EAAkBvB,EAAeE,EAAcC,EAAOC,EAAgBC,GACjH,IAEImB,EAFAC,EAAqBF,EAAiBG,cAAc,IAAM/B,GAC1DgC,EAAYJ,EAAiBG,cAAc,IAAMhC,GAEhD,eAAkB+B,IASnBD,EAAmC,OAAhBnB,EAAwBA,EAAc,GACzDuB,EAAezB,EAAOD,EAAcsB,KATpCA,EAAkBC,EAAmBb,UACrC,eAAOZ,EAAc0B,cAAc,IAAM/B,IACzCiC,EAAezB,EAAOD,EAAcsB,GAC/B,eAAkBG,IACnB,eAAO3B,EAAc0B,cAAc,IAAMhC,KAOjDK,EAAeiB,UAAUa,OAAO,iBAS7B,SAASD,EAAezB,EAAOD,EAAcG,GAC5CF,GAASA,EAAMkB,OACfnB,EAAaG,YAAc,GAG3BH,EAAaG,YAAcA,EAS5B,SAASyB,EAAgB/B,EAAgBwB,GAC5CxB,EAAeiB,UAAUC,IAAI,iBAC7B,IAAIG,EAAQG,EAAiBG,cAAc,IAAM/B,GAC5C,eAAkByB,KACnB,eAAS,CAACA,GAAQxB,GACdwB,EAAMJ,UAAUG,SAAStB,IACzB,gBAAY,CAACuB,GAAQvB,IAc1B,SAASkC,EAAehC,EAAgBwB,EAAkBpB,EAAOC,EAAgBC,GAEpFN,EAAeiB,UAAUa,OAAO,iBAChC,IAAIT,EAAQG,EAAiBG,cAAc,IAAM/B,GAC7CQ,GAASA,EAAMkB,QAAU,GAAwB,SAAnBjB,IAA8B,eAAkBgB,KAC1EA,EAAMJ,UAAUG,SAASvB,IACzB,gBAAY,CAACwB,GAAQxB,GAEzB,eAAS,CAACwB,GAAQvB,IAGnB,SAASgB,EAAkBR,GAC9B,IAAI2B,EAAS,GACb,IAAK,eAAkB3B,IAAgC,KAAhBA,EAAoB,CACvD,IAAI4B,EAAcC,SAASC,cAAc,QACzCF,EAAYG,UAAY,wBAA0B/B,EAAc,MAChE,IAAIgC,EAAeJ,EAAYK,SAAS,GACxCN,EAASK,EAAYhC,YAEzB,OAAO2B,ECxJX,IAAIO,EAAwC,WACxC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBG,OAAOC,gBAClB,CAAEC,UAAW,cAAgBC,OAAS,SAAUL,EAAGC,GAAKD,EAAEI,UAAYH,IACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIK,KAAKL,EAAOA,EAAEM,eAAeD,KAAIN,EAAEM,GAAKL,EAAEK,KAClEP,EAAcC,EAAGC,IAE5B,OAAO,SAAUD,EAAGC,GAEhB,SAASO,IAAOC,KAAKC,YAAcV,EADnCD,EAAcC,EAAGC,GAEjBD,EAAEW,UAAkB,OAANV,EAAaC,OAAOU,OAAOX,IAAMO,EAAGG,UAAYV,EAAEU,UAAW,IAAIH,IAV3C,GAaxCK,EAA0C,SAAUC,EAAYC,EAAQC,EAAKC,GAC7E,IAA2HjB,EAAvHkB,EAAIC,UAAUvC,OAAQwC,EAAIF,EAAI,EAAIH,EAAkB,OAATE,EAAgBA,EAAOf,OAAOmB,yBAAyBN,EAAQC,GAAOC,EACrH,GAAuB,kBAAZK,SAAoD,oBAArBA,QAAQC,SAAyBH,EAAIE,QAAQC,SAAST,EAAYC,EAAQC,EAAKC,QACpH,IAAK,IAAIO,EAAIV,EAAWlC,OAAS,EAAG4C,GAAK,EAAGA,KAASxB,EAAIc,EAAWU,MAAIJ,GAAKF,EAAI,EAAIlB,EAAEoB,GAAKF,EAAI,EAAIlB,EAAEe,EAAQC,EAAKI,GAAKpB,EAAEe,EAAQC,KAASI,GAChJ,OAAOF,EAAI,GAAKE,GAAKlB,OAAOuB,eAAeV,EAAQC,EAAKI,GAAIA,GAiB5DM,EAAQ,gBACRC,EAAW,aACXC,EAAmB,gDACnBC,EAAkB,yBAClBC,EAAyB,gBACzBC,EAAY,kBACZC,EAAiB,eACjBC,EAAe,qBACfC,EAAO,UACPC,EAAe,gBACfC,EAAa,gBACbC,EAAgB,kBAChBC,EAAoB,aACpBC,EAAyB,cACzBC,EAAY,cACZC,EAAiB,WACjBC,EAAkB,+BAClBC,EAAoB,iBACpBC,EAAgB,4CAChBC,EAAgB,iBAChBC,EAAY,QACZC,EAAkB,oBAClBC,EAAc,aACdC,EAAS,eACTC,EAAS,eACTC,EAAe,qBACfC,EAAgB,oBAChBC,EAAiB,iBACjBC,EAAU,UACVC,EAAe,gCACfC,GAAgB,cAChBC,GAAsB,gBACtBC,GAAc,oBACdC,GAAe,kBACfC,GAAe,wBACfC,GAAc,iBAmBd,GAA6B,SAAUC,GASvC,SAASC,EAAYC,EAAQxG,GACzB,IAAIyG,EAAQH,EAAOI,KAAKzD,KAAMuD,EAAQxG,IAAYiD,KAUlD,OATAwD,EAAME,eAAiB,EACvBF,EAAMG,mBAAqB,GAC3BH,EAAMI,YAAa,EACnBJ,EAAMK,mBAAqB,GAC3BL,EAAMM,kBAAoB,GAC1BN,EAAMO,cAAgB,KACtBP,EAAMQ,mBAAoB,EAC1BR,EAAMS,mBAAoB,EAC1BT,EAAMU,eAAgB,EACfV,EAqmIX,OAxnIAnE,EAAUiE,EAAaD,GAqBvBC,EAAYpD,UAAUiE,UAAY,SAAUC,GACpCA,EACApE,KAAKnD,eAAeiB,UAAUC,IAAIsE,GAGlCrC,KAAKnD,eAAeiB,UAAUa,OAAO0D,GAErCrC,KAAKqE,WACLrE,KAAKqE,SAASC,UAAYF,EAC1BpE,KAAKqE,SAASE,aAGtBjB,EAAYpD,UAAUsE,gBAAkB,WACpC,IAAIC,EAAU,GACd,GAAkB,aAAdzE,KAAK0E,KAAqB,CAE1B,GADA1E,KAAK2E,gBAAkB3E,KAAK4E,oBACxB5E,KAAK4E,oBAAqB,CAC1B,IAAIC,EAAe7E,KAAK8E,oBACxB9E,KAAK8E,qBAAsB,EAC3B9E,KAAK+E,sBAAuB,EAC5B/E,KAAK8E,oBAAsBD,EAE/B7E,KAAKgF,kBAAmB,EACxBhF,KAAKiF,kBAAmB,EACxBjF,KAAKkF,oBAAqB,EAC1BT,EAAQU,KAAK,CACTC,OAAQ,oBACRC,KAAM,CAACrF,QAGf,OAAOyE,GAEXnB,EAAYpD,UAAUoF,oBAAsB,WACxC,GAAI7F,OAAO8F,KAAKvF,KAAKwF,gBAAgBrH,OACjC,IAAK,IAAIsH,EAAK,EAAGC,EAAKjG,OAAO8F,KAAKvF,KAAKwF,gBAAiBC,EAAKC,EAAGvH,OAAQsH,IAAM,CAC1E,IAAIE,EAAWD,EAAGD,GAClB,OAAQE,GACJ,IAAK,QACD,IAAIC,EAAqB5F,KAAKwF,eAAe,GAAKG,GAAUlI,QAAQ,OAAQ,KAAMoI,OACxD,KAAtBD,IACA,eAAS,CAAC5F,KAAKnD,gBAAiB+I,EAAkBE,MAAM,MACxD,eAAS,CAAC9F,KAAK+F,cAAeH,EAAkBE,MAAM,OAE1D,MAEJ,IAAK,WACD9F,KAAKgG,QAAO,GACZ,MACJ,IAAK,cACIhG,KAAK7C,cACN6C,KAAKhD,aAAaiJ,aAAaN,EAAU3F,KAAKwF,eAAe,GAAKG,IAClE3F,KAAKkG,cAAc,CAAE/I,YAAa6C,KAAKhD,aAAaG,cAAe,GACnE6C,KAAKmG,sBAET,MACJ,QACI,IAAIC,EAAc,CAAC,MACfC,EAAe,CAAC,OAAQ,WAAY,gBAAiB,QACrDC,EAAgB,CAAC,QAAS,OAAQ,QAAS,SAC3CF,EAAYG,QAAQZ,IAAa,EACjC3F,KAAKjD,QAAQkJ,aAAaN,EAAU3F,KAAKwF,eAAe,GAAKG,IAE3B,IAA7BA,EAASY,QAAQ,SAAiBF,EAAaE,QAAQZ,IAAa,EACzE3F,KAAKwG,cAAcP,aAAaN,EAAU3F,KAAKwF,eAAe,GAAKG,IAE9DW,EAAcC,QAAQZ,IAAa,EACxC3F,KAAKnD,eAAeoJ,aAAaN,EAAU3F,KAAKwF,eAAe,GAAKG,IAElD,SAAbA,GAAwB,eAAkB3F,KAAKhD,eACpDgD,KAAKhD,aAAaiJ,aAAaN,EAAU3F,KAAKwF,eAAe,GAAKG,IAEtE,SAMpBrC,EAAYpD,UAAUuG,eAAiB,SAAUrC,GACxC,eAAkBpE,KAAKhD,gBACpBoH,GAAuB,aAAdpE,KAAK0E,KACd1E,KAAKhD,aAAaiJ,aAAa,WAAY,QAG3CjG,KAAKhD,aAAaY,gBAAgB,cAI9C0F,EAAYpD,UAAUwG,kBAAoB,SAAUtC,GAC5CA,GACIpE,KAAK2G,aAAaC,WAClB5G,KAAK2G,aAAaE,MAAMC,QAAU,GAGlC9G,KAAK3B,iBAAiBR,YAAYmC,KAAK2G,cAE3C3G,KAAK3B,iBAAiBP,UAAUa,OAAO2D,KAGvCtC,KAAK2G,aAAaE,MAAMC,QAAU,OAClC9G,KAAK3B,iBAAiBP,UAAUC,IAAIuE,KAG5CgB,EAAYpD,UAAU6G,eAAiB,WACnC,IAAK,eAAkB/G,KAAKgH,WAA+B,KAAlBhH,KAAKgH,SAAiB,CAC3D,IAAIC,EAAwBjH,KAAKgH,SACjCC,EAAyBjH,KAAKgH,SAASvJ,QAAQ,OAAQ,KAAMoI,OAC/B,KAA1BoB,IACA,eAAS,CAACjH,KAAKnD,gBAAiBoK,EAAsBnB,MAAM,MAC5D,eAAS,CAAC9F,KAAK+F,cAAekB,EAAsBnB,MAAM,SAItExC,EAAYpD,UAAUgH,sBAAwB,SAAUC,GAC/C,eAAkBA,IAA0B,KAAbA,IAChCA,EAAYA,EAAS1J,QAAQ,OAAQ,KAAMoI,OAC1B,KAAbsB,IACA,gBAAY,CAACnH,KAAKnD,gBAAiBsK,EAASrB,MAAM,MAClD,gBAAY,CAAC9F,KAAK+F,cAAeoB,EAASrB,MAAM,SAI5DxC,EAAYpD,UAAUkH,aAAe,SAAUC,GAC3C,IAAI7D,EAAQxD,KACZ,GAAI,OAAQsH,UAA2B,aAAdtH,KAAK0E,MAAuB1E,KAAKuH,eAAiB,CAEvE,IAAIC,EAAUxH,KACdyH,OAAOC,WAAa,WAChBF,EAAQG,YACRH,EAAQxK,aAAa4K,SAEzBC,QAAQC,UAAU,GAAI,IAE1B,IAAIC,EAAY,CAAEC,KAAM,SAAUC,SAAU,KACxCC,EAAY,CAAEC,MAAOnI,KAAKqE,SAAU+D,MAAOf,EAAGgB,QAAQ,EAAOC,UAAWP,GAC5E/H,KAAKuI,QAAQ,OAAQL,GAAW,SAAUA,GACjCA,EAAUG,SACX7E,EAAMgF,uBACFhF,EAAMa,UACNrF,SAASyJ,KAAK5K,YAAY2F,EAAMa,SAAStH,SAE1B,aAAfyG,EAAMkB,MAAuBlB,EAAMoB,sBAAwB,eAAkBpB,EAAMkF,OAAOC,UAC1FnF,EAAMoF,gBAAgBpF,EAAMqF,KAAKC,iBAAiB,kBAAmBtF,EAAMuF,SAASD,iBAAiB,oBAEtF,aAAftF,EAAMkB,MAAuBlB,EAAMwF,mBACnC,eAAS,CAACxF,EAAM3G,gBAAiB,CAACkG,KAEtCS,EAAMyF,eACNzF,EAAM0F,uBACF1F,EAAMa,UACNb,EAAMa,SAAS8E,KAAKjB,EAAUI,UAA6B,MAAjB9E,EAAM4F,OAAmB5F,EAAMzG,QAAU,MAEvF,eAAWyG,EAAMxG,aAAc,CAAE,gBAAiB,OAAQ,YAAawG,EAAMxG,aAAaO,GAAK,aAC/FiG,EAAM6F,6BACF7F,EAAM8F,cACN9F,EAAM+F,oBAKtBjG,EAAYpD,UAAU0I,gBAAkB,SAAUY,EAAWC,GACzD,IAAK,IAAI1I,EAAI,EAAGA,EAAIyI,EAAUrL,OAAQ4C,IAClCf,KAAK0J,eAAeF,EAAUzI,IAC9Bf,KAAK0J,eAAeD,EAAc1I,IAEtCf,KAAK2J,kBAETrG,EAAYpD,UAAUqJ,aAAe,WACjCvJ,KAAK4J,iBAAiB,MACJ,aAAd5J,KAAK0E,MACL1E,KAAK6J,cAET7J,KAAK8J,OAAO,UAAW,CAAEC,OAAQ,oBAAqB/D,OAAsB,aAAdhG,KAAK0E,KAAqB2C,EAAGrH,QAE/FsD,EAAYpD,UAAU8J,kBAAoB,WACtC,KAAOhK,KAAKiF,kBAAkC,aAAdjF,KAAK0E,MAAuC,aAAd1E,KAAK0E,OAAwB1E,KAAK+E,wBAC1F,eAAkB/E,KAAK/C,QAAW+C,KAAK/C,MAAMkB,OAAS,EAAK,CAC7D,IAAI8L,EAAWjK,KAAKkK,gBAAiBlK,KAAKiF,iBAAmBjF,KAAKmK,UAAYnK,KAAK6I,KAAO,KAAM,aAAc7I,KAAK/C,MAAM+C,KAAK/C,MAAMkB,OAAS,IACxI,eAAkB8L,IACnBjK,KAAKoK,aAAaH,KAI9B3G,EAAYpD,UAAUsI,qBAAuB,WACzC,GAAIxI,KAAKmK,WAAanK,KAAKmK,UAAU3L,cAAc,MAC7C,OAAoB6L,IAAK,CAC3B,IAAItN,OAAU,EACd,GAAkB,aAAdiD,KAAK0E,KAEL,YADA1E,KAAK6J,cAIL9M,EAAUiD,KAAKmK,UAAU3L,cAAc,MACjC,OAAoB6L,GAAK,SACzB/I,EAAY,KAEN,OAAZvE,IACAiD,KAAK6J,cACL7J,KAAKsK,aAAavN,MAI9BuG,EAAYpD,UAAUqK,oBAAsB,SAAUC,GAClD,IAAIC,EACAD,EACAC,EAAgB,eAAOD,EAAMxK,KAAK0K,cAAe,aAAc1K,KAAK2K,YAGhE3K,KAAK/C,OAAS+C,KAAK/C,MAAMkB,OACzB,eAAO6B,KAAK/C,MAAM+C,KAAK/C,MAAMkB,OAAS,GAAI6B,KAAK0K,cAAe,aAAc1K,KAAK2K,YAGjFF,EAAgB,KAGpBA,GAAwC,OAAvBA,EAAcG,OAC/B5K,KAAKsK,aAAaG,EAAcG,MAChC5K,KAAKoK,aAAaK,EAAcG,KAAMH,EAAcI,SAG5DvH,EAAYpD,UAAU4K,kBAAoB,WACtC,IAAIC,EAAiB,CACjB,gBAAiB,QACjB,KAAQ,WACR,gBAAiB,SAErB,OAAOA,GAEXzH,EAAYpD,UAAU8K,eAAiB,WAC9B,eAAkBhL,KAAKmK,YACxB,eAAWnK,KAAKmK,UAAW,CAAE,GAAMnK,KAAKjD,QAAQQ,GAAK,WAAY,KAAQ,UAAW,cAAe,UAEvG,IAAI0N,IAAiB,eAAkBjL,KAAKhD,gBAAkBgD,KAAKhD,aAAqB,UACnFgD,KAAKkL,eAAkB,eAAkBlL,KAAKhD,eAC/C,eAAWgD,KAAKhD,aAAcgD,KAAK8K,qBAEnCG,GACA,eAAWjL,KAAKhD,aAAc,CAAE,gBAAiB,SAErDgD,KAAKmL,mBAAmB,EAAkB,OAAS,UAEvD7H,EAAYpD,UAAUiL,mBAAqB,SAAUC,GACjD,GAAIpL,KAAKwF,gBAAkBxF,KAAKwF,eAAe,iBAAkB,CAC7D,IAAI6F,EAAOrL,KAAKwF,eAChB,eAAO6F,EAAM,CAAE,gBAAiBD,GAAUC,GAC1CrL,KAAKkG,cAAc,CAAEV,eAAgB6F,IAAQ,KAGrD/H,EAAYpD,UAAUoL,oBAAsB,SAAUjE,GAClD,IAAIkE,EAAWvL,KAAKwL,sBAAsB1C,iBAAiB,QAAUrH,GACjExE,EAAQsO,EAASA,EAASpN,OAAS,GAAGX,aAAa,cAClD,eAAkBwC,KAAK/C,SACxB+C,KAAKyL,WAAazL,KAAK/C,MAAMyO,SAEjC,IAAIC,EAAc3L,KAAK4L,kBAAkB3O,GACrC+C,KAAKgF,mBAA+B,UAAV/H,IAAqC,IAAhB0O,IAA2B,eAAkBA,IACjE,QAA3BA,EAAYE,cACZF,EAAc1O,GAElB+C,KAAK8L,YAAYH,EAAatE,GAC9BrH,KAAK+L,sBACL/L,KAAKgM,gBAAgBhM,KAAKiM,cAAe5E,GACzCrH,KAAKkM,mBACDlM,KAAK+I,UAAY/I,KAAKmM,UACtBnM,KAAKoM,mBAETpM,KAAKqM,wBAET/I,EAAYpD,UAAUoM,gBAAkB,SAAUjF,GAC9ChE,EAAOnD,UAAUoM,gBAAgB7I,KAAKzD,KAAMqH,GAC5CrH,KAAKuM,cACLvM,KAAKoH,gBAET9D,EAAYpD,UAAUsM,cAAgB,WAKlC,OAJAxM,KAAKyM,mBAAqBzM,KAAKhD,aACb,aAAdgD,KAAK0E,MAAuB1E,KAAKuH,gBACjCvH,KAAK8J,OAAO,gBAAiB,CAAEC,OAAQ,oBAAqB/D,OAAsB,aAAdhG,KAAK0E,OAEtE1E,KAAKyM,mBAAmBxP,OAEnCqG,EAAYpD,UAAUwM,YAAc,SAAUC,GAG1C,IAFA,IAAIC,EACAC,EAAQ,eAAkB7M,KAAK0I,OAAOzL,OAAS+C,KAAK0I,OAAOoE,KAAO9M,KAAK0I,OAAOzL,MACzE8D,EAAI,EAAGA,EAAI4L,EAAWxO,OAAQ4C,IAE/B6L,EADM,IAAN7L,EACY,IAAI,OAAU8L,EAAO,QAASF,EAAW5L,IAGzC6L,EAAUG,GAAGF,EAAO,QAASF,EAAW5L,IAG5D,OAAOf,KAAKgN,SAAShN,KAAKiN,OAAOC,MAAMN,IAG3CtJ,EAAYpD,UAAUiN,iBAAmB,SAAUhD,EAAWtB,EAAMxB,EAAG+F,GAEnE/J,EAAOnD,UAAUiN,iBAAiB1J,KAAKzD,KAAMmK,EAAWtB,EAAMxB,GAC9DrH,KAAKqN,wBAAwBrN,KAAKuH,gBAElC,IAAI+F,EAAQtN,KACZ,IAAK,eAAkBA,KAAK/C,SAAW+C,KAAKgF,iBACxC,IAAK,IAAIjE,EAAI,EAAGA,EAAIf,KAAK/C,MAAMkB,OAAQ4C,IAAK,CACxC,IAAIwM,EAAWvN,KAAKkK,gBAAkBlK,KAAKuH,iBAAmB,eAAkBvH,KAAK+I,UAAa/I,KAAK+I,SAAWoB,EAAY,KAAM,aAAcmD,EAAMrQ,MAAM8D,IACzJwM,GAAcvN,KAAKwN,sBAAsB,SAC1CxN,KAAK/C,MAAMwQ,OAAO1M,EAAG,GACrBA,GAAK,GAIjB,IAAI4L,EAAa,GACZ,eAAkB3M,KAAK/C,QAAW+C,KAAKgF,mBACxC2H,EAAa3M,KAAK0N,iBAAiB1N,KAAKmK,YAExCwC,EAAWxO,OAAS,GAAK6B,KAAKwN,sBAAsB,SAAgB,eAAkBxN,KAAK/C,QACvE,MAAjB+C,KAAKmM,SACRnM,KAAK2N,mBAAmBhB,EAAY3M,KAAKmK,UAAWnK,KAAKmM,UAGzDnM,KAAK4N,iBAAiBzD,EAAWtB,EAAMxB,GAEvCrH,KAAKwN,sBAAsB,QAA6B,aAAdxN,KAAK0E,MAAuB1E,KAAKuH,gBAC3EvH,KAAK6J,eAIbvG,EAAYpD,UAAU0N,iBAAmB,SAAUzD,EAAWtB,EAAMxB,EAAG+F,GAEjD,aAAdpN,KAAK0E,MAAuB1E,KAAK6N,eACjC7N,KAAK8J,OAAO,YAAa,CAAEC,OAAQ,oBAAqB/D,OAAsB,aAAdhG,KAAK0E,OAEpE1E,KAAK+I,UAAa/I,KAAK8N,UAKnB,eAAkB9N,KAAK8N,WAAsC,IAAzB9N,KAAK8N,SAAS3P,UACvD6B,KAAK8N,SAAWjF,IALhB7I,KAAK+I,SAAWoB,EAAU4D,UAAY5D,EAAU4D,WAAU,GAAQ5D,EAClEnK,KAAK8N,SAAWjF,EAChB7I,KAAKgO,mBAAqBhO,KAAK0K,gBAK9B1K,KAAKiO,mBAAqBpF,EAAK1K,QAAU,IAAM6B,KAAKgF,kBAAoBhF,KAAKkO,YAAclO,KAAKuH,gBACjGvH,KAAKhD,aAAaC,OAAqC,KAA5B+C,KAAKhD,aAAaC,MAC7C+C,KAAKmO,oBAAoBnO,KAAKoO,UAAWpO,KAAK0I,SAG9C1I,KAAK/C,OAAS+C,KAAK/C,MAAMkB,SAA0B,aAAd6B,KAAK0E,OAAwB,eAAkB1E,KAAKhD,eAAoD,KAAnCgD,KAAKhD,aAAaC,MAAM4I,QACpH,aAAd7F,KAAK0E,OAA0C,IAAjB1E,KAAKqO,SAAkC,KAAjBrO,KAAKqO,UAAmBrO,KAAKuH,gBACjFvH,KAAKgF,kBAAoBhF,KAAKwN,sBAAsB,QAA2C,KAA5BxN,KAAKhD,aAAaC,QACrF+C,KAAKoM,mBAETpM,KAAKgL,iBACLhL,KAAKsO,mBACLtO,KAAKuO,iBACA,eAAkBvO,KAAKwO,kBACxBxO,KAAKwO,kBAEJ,eAAkBxO,KAAKyO,kBACxBzO,KAAKyO,kBAELzO,KAAK0O,cACA,eAAkB1O,KAAK8M,QAAU,eAAkB9M,KAAK/C,QAAgC,IAAtB+C,KAAK/C,MAAMkB,QAC9E6B,KAAK2O,oBAET3O,KAAK4O,qBACL5O,KAAK6O,gBACL7O,KAAKmG,qBACa,aAAdnG,KAAK0E,MAAuB1E,KAAK8O,cACjC9O,KAAK+O,iBAAiB,KAAM/O,KAAK/C,MAAO,OAGhD+C,KAAKuM,cACDvM,KAAKgP,kBACLhP,KAAKgP,iBAAkB,EACvBhP,KAAKoH,aAAaC,MAG1B/D,EAAYpD,UAAUkM,iBAAmB,WACrC,IAAInP,EACAF,EACAM,EAAY2C,KAAKiF,iBACjB3D,EACA,OAAoB2N,SACxB,IAAK,eAAkBjP,KAAK/C,OACxB,IAAK,IAAI4N,EAAQ,GAAI,eAAkB7K,KAAK/C,MAAM4N,IAASA,IAGvD,GAFA5N,EAAQ+C,KAAK/C,MAAM4N,GACnB9N,EAAUiD,KAAKkK,gBAAgBlK,KAAK6I,KAAM,KAAM,aAAc5L,GAC1DF,EAAS,CAWT,GAVA,eAAS,CAACA,GAAUM,GAChB2C,KAAKiF,kBAAoBlI,EAAQmS,iBAC9BnS,EAAQoS,uBAAuBrR,UAAUG,SAAS,OAAoBmR,UACpErS,EAAQsS,oBACTtS,EAAQsS,mBAAmBvR,UAAUG,SAAS,OAAoBmR,SACtE,eAAS,CAACrS,EAAQoS,wBAAyB9R,GAE3C2C,KAAKiF,kBAAoBjF,KAAK0I,OAAOC,UAAY5L,EAAQoS,uBAAuBrR,UAAUG,SAASqD,IACnGtB,KAAKsP,cAAcrS,GAEnB+C,KAAKiF,kBAAoBlI,EAAQe,UAAUG,SAAS,OAAoB2J,OAAQ,CAChF,gBAAY,CAAC7K,GAAU,OAAoB6K,OAC3C,IAAI2H,EAAUxS,EAAQyS,cAAc1G,iBAAiB,IACjD,OAAoBuB,GAAK,SAAW/I,EAAY,KAChDiO,EAAQpR,OAAS,GACjB,eAAS,CAACoR,EAAQ,IAAK,OAAoB3H,OAC3C5H,KAAKqJ,8BAICrJ,KAAK6I,MAAQ7I,KAAK6I,KAAKC,iBAAiB,IAAM,OAAoBuB,IAAIlM,OAAS,IACjF6B,KAAKyP,aACL,eAAS,CAACzP,KAAK6I,MAAO,OAAoB6G,SAKtD,GADA3S,EAAQkJ,aAAa,gBAAiB,QACpB,aAAdjG,KAAK0E,MAAuB3H,EAAQe,UAAUG,SAAS,YAAa,CACpE,IAAI0R,EAAY5S,EAAQ6S,uBAAuB,WAAWzR,OAC1D,GAAkB,IAAdwR,EAAiB,CACjB,IAAItK,EAAO,CACP0E,OAAQ,oBACR/D,OAAsB,aAAdhG,KAAK0E,KACb2F,GAAItN,EACJsK,EAAG,MAEPrH,KAAK8J,OAAO,aAAczE,KAM9CrF,KAAK6P,iBACL7P,KAAK8P,qBAETxM,EAAYpD,UAAUoP,cAAgB,SAAUrS,GAC5C,IAAIF,EACAgT,EACA1S,EAAY2C,KAAKiF,iBACjB3D,EACA,OAAoB2N,SACxBc,EAAWhT,EAAUiD,KAAKkK,gBAAgBlK,KAAKmK,UAAW,KAAM,aAAclN,GAC9E,IAAI8D,EAAI,EACJiP,EAAI,EACJC,GAAO,EACPC,GAAQ,EACZ,GACQnT,GAAWA,EAAQoS,yBACdpS,EAAQoS,uBAAuBrR,UAAUG,SAASqD,IACnDvE,EAAQoS,uBAAuBrR,UAAUG,SAAS,OAAoBoM,MAC1E4F,GAAO,IAENA,IAASlT,GAAYA,EAAQoS,wBAC3BpS,EAAQoS,uBAAuBrR,UAAUG,SAAS,OAAoBmR,OACzErO,EAAI,GAGJhE,EAAUA,EAAQoS,uBAElBY,GAAYA,EAASV,qBAChBU,EAASV,mBAAmBvR,UAAUG,SAASqD,IAChDyO,EAASV,mBAAmBvR,UAAUG,SAAS,OAAoBoM,MACvE6F,GAAQ,IAEPA,IAAUH,GAAaA,EAASV,oBAC9BU,EAASV,mBAAmBvR,UAAUG,SAAS,OAAoBmR,OACtEY,EAAI,GAGJD,EAAWA,EAASV,yBAEnBtO,EAAI,IAAMiP,EAAI,IACnBC,GAAQC,IAAUnT,EAAQoS,uBAAuBrR,UAAUG,SAASqD,GACpE,eAAS,CAACvE,EAAQoS,wBAAyB9R,GAEtC4S,GAAQC,GAASnT,EAAQoS,uBAAuBrR,UAAUG,SAASqD,IACxE,gBAAY,CAACvE,EAAQoS,wBAAyB9R,IAGtDiG,EAAYpD,UAAUiQ,WAAa,WAC/B,IAAIC,EAAYpQ,KAAKmK,UAAU3L,cAAc,MAAQ,OAAoB6L,GAAK,SAAW/I,EAAY,KACrG,OAAS,eAAkB8O,GAAyBpQ,KAAK0K,cAAc,GAA/B0F,GAE5C9M,EAAYpD,UAAU2P,eAAiB,WACnC,IAAIQ,EAAkBrQ,KAAK6I,KAAKC,iBAAiB,iCAAiC3K,OAC9EmS,EAAWtQ,KAAK6I,KAAKC,iBAAiB,kBACtCyH,EAAcvQ,KAAK6I,KAAKC,iBAAiB,MAAQ,OAAoBuB,IAAIlM,OACzEqS,EAAoBxQ,KAAK6I,KAAKC,iBAAiB,MAAQ,OAAoBmG,UAAU9Q,OAWzF,GAVI6B,KAAK4E,sBAAwB,eAAkB5E,KAAK0I,OAAOC,WAC3D6H,GAAwCH,GAEvCE,IAAgBC,GAAqBA,IAAsBxQ,KAAKyQ,wBAC/C,aAAdzQ,KAAK0E,OAAuB1E,KAAK6N,cAG/B0C,IAAgBC,GAAqC,aAAdxQ,KAAK0E,MAAuB1E,KAAK6N,eAC9E7N,KAAK8J,OAAO,iBAAkB,CAAEC,OAAQ,oBAAqB/D,OAAsB,aAAdhG,KAAK0E,KAAqBzH,MAAO,YAHtG+C,KAAK8J,OAAO,iBAAkB,CAAEC,OAAQ,oBAAqB/D,OAAsB,aAAdhG,KAAK0E,KAAqBzH,MAAO,UAKtG+C,KAAK4E,qBAAuB5E,KAAK0I,OAAOC,UAAY3I,KAAK+E,qBAAsB,CAC/E,IAAK,IAAIhE,EAAI,EAAGA,EAAIuP,EAASnS,OAAQ4C,IACjCf,KAAK0J,eAAe4G,EAASvP,IAEjCf,KAAK2J,mBAIbrG,EAAYpD,UAAUwQ,UAAY,SAAUrJ,GACnCrH,KAAK2Q,aAA6B,aAAd3Q,KAAK0E,KAQpB1E,KAAK2Q,aAA6B,aAAd3Q,KAAK0E,MAAwB1E,KAAKkL,eAC5DlL,KAAK4Q,YARwB,KAAzB5Q,KAAKwM,gBACLxM,KAAK4Q,YAGL5Q,KAAK2H,UAAUN,IAO3B/D,EAAYpD,UAAU2Q,MAAQ,SAAUxJ,GACpC,GAAkB,aAAdrH,KAAK0E,OAAwB1E,KAAK2Q,YAAa,CAC/C,IAAIG,EAAOC,OAAOC,aAAa3J,EAAEgH,SAC7B4C,EAAkBH,EAAKI,MAAM,MAC5B,eAAkBD,KACnBjR,KAAK4D,YAAa,GAK1B,GAFA5D,KAAK4D,WAAc5D,KAAKkL,eAA+B,IAAd7D,EAAEgH,SAAkBrO,KAAK4D,WAClE5D,KAAK4D,aAAayD,EAAE8J,SAAyB,KAAd9J,EAAEgH,UAAyBrO,KAAK4D,WAC3D5D,KAAK4D,WAIL,OAHA5D,KAAK4D,YAAa,EAClB5D,KAAKoR,gBACLpR,KAAKqR,mBACGhK,EAAEgH,SACN,QAEIrO,KAAKsR,OAAOjK,KAY5B/D,EAAYpD,UAAUqR,OAAS,SAAU/D,EAAYP,EAAOvE,GACxD1I,KAAKwR,YAAa,EAClBxR,KAAKyR,oBAAqB,EAC1BzR,KAAK0R,YAAYlE,EAAYP,EAAOvE,IAExCpF,EAAYpD,UAAU8M,SAAW,SAAUC,GACvC,IAAI0E,EAAc1E,EAAQA,EAAM2E,QAAU5R,KAAKiN,MAAQjN,KAAKiN,MAAM2E,QAAU,IAAI,OAChF,GAAI5R,KAAKwR,WACL,OAAOG,EAEX,GAAI3R,KAAK6R,aAAc,CACnB,GAA6B,OAAzB7R,KAAKwM,gBAA0B,CAC/B,IAAIsF,EAAW9R,KAAK+R,WAAW/R,KAAKwN,YAAYwE,OAChD,IAAMhS,KAAKwN,sBAAsB,QAA6B,WAAbsE,IAAsC,WAAbA,EAGrE,CACD,IAAIpJ,EAAS1I,KAAK0I,OAClBiJ,EAAYzE,MAAO,eAAkBxE,EAAOoE,MAAsB,GAAdpE,EAAOoE,KAAW9M,KAAKiS,WAAYjS,KAAKwM,gBAAiBxM,KAAK2K,WAAY3K,KAAKkS,mBAJnIP,EAAYzE,MAAM,GAAIlN,KAAKiS,WAAYjS,KAAKwM,gBAAiBxM,KAAK2K,WAAY3K,KAAKkS,cAO3F,OAAOP,EAGP,OAAO1E,IAAgBjN,KAAKiN,MAAQjN,KAAKiN,MAAQ,IAAI,SAG7D3J,EAAYpD,UAAUwR,YAAc,SAAUlE,EAAYP,EAAOvE,GAE7D,GADA1I,KAAKmS,eAAgB,EACe,KAAhCnS,KAAKwM,gBAAgB3G,OAAe,CACpC,IAAIgD,EAAO7I,KAAK+I,SAASgF,UAAY/N,KAAK+I,SAASgF,WAAU,GAAQ/N,KAAK+I,SACtE/I,KAAKoS,cACLpS,KAAKiO,mBAAoB,EACrBjO,KAAKgF,kBAA0D,GAAtC6D,EAAKC,iBAAiB,MAAM3K,QAAe6B,KAAK8N,SAAS3P,OAAS,IAC3F6B,KAAK8N,SAAW,IAEpB9N,KAAKmN,iBAAiBtE,EAAM7I,KAAK8N,UAC7B9N,KAAK/C,OAAS+C,KAAK/C,MAAMkB,QACzB6B,KAAKoM,mBAEY,IAAjBpM,KAAKqO,SACLrO,KAAKwI,uBAETxI,KAAK8J,OAAO,UAAW,CAAEC,OAAQ,oBAAqB/D,OAAsB,aAAdhG,KAAK0E,KAAqB2C,EAAGrH,aAI/FA,KAAKqS,UAAU7E,EAAY9E,EAAQuE,GAC/BjN,KAAKgF,mBACCwI,aAAsB,QAIxBxN,KAAKiO,mBAAoB,EACzBjO,KAAKoO,UAAYnB,GAJjBjN,KAAKmO,oBAAoBlB,EAAOvE,IAQ5C1I,KAAKiJ,eACa,aAAdjJ,KAAK0E,MACL1E,KAAK6J,eAGbvG,EAAYpD,UAAUiO,oBAAsB,SAAUlB,EAAOvE,GACzD,IAAI4J,GAActS,KAAKuS,eAAevS,KAAKhD,aAAaC,MAAO+C,KAAK2K,YACpE,GAAI3K,KAAKgF,kBAAoBsN,EAAY,CACrC,IAAIrV,EAAQ+C,KAAKhD,aAAaC,MAC1B4P,EAAQnE,GAAkB1I,KAAK0I,OAC/B8J,GAAe,eAAkBxS,KAAK8N,WAAa9N,KAAK8N,SAAS3P,OAAS,EAC1E6B,KAAK8N,SAAS,GAAK9N,KAAK8N,SAC5B,GAA4B,kBAAjB,GAAqD,kBAAjB,GAAqD,mBAAjB,EAA4B,CAC3G,IAAI2E,EAAW,GACf,gBAAS5F,EAAMC,KAAM7P,EAAOwV,GAEpB,kBADG,eAAUzS,KAAK0I,OAAOzL,MAAQ+C,KAAK0I,OAAOzL,MAAQ,QAAUuV,GAEnE,gBAAS3F,EAAM5P,MAAOyV,KAAKC,SAAUF,GAGrC,gBAAS5F,EAAM5P,MAAOA,EAAOwV,GAEjC,IAAIG,EAAWC,KAAKC,MAAMD,KAAKE,UAAU/S,KAAKmM,WAC9CyG,EAASnF,OAAO,EAAG,EAAGgF,GACtBzS,KAAKqS,UAAUO,EAAU/F,EAAOI,OAE/B,CACG2F,EAAWC,KAAKC,MAAMD,KAAKE,UAAU/S,KAAKmM,WAC9CyG,EAASnF,OAAO,EAAG,EAAGzN,KAAKhD,aAAaC,OACxC2V,EAAS,GAA4B,kBAAfJ,GAA4BQ,MAAMC,WAAWL,EAAS,KAC9CA,EAAS,GAAnCK,WAAWL,EAAS,IACxBA,EAAS,GAA4B,mBAAfJ,EACD,SAAhBI,EAAS,IAAwC,UAAhBA,EAAS,IAAyBA,EAAS,GAAOA,EAAS,GACjG5S,KAAKqS,UAAUO,EAAU/F,IAG7B7M,KAAK/C,OAAS+C,KAAK/C,MAAMkB,QACzB6B,KAAKoM,oBAGb9I,EAAYpD,UAAUgT,eAAiB,WACnC,MAAO,mBAEX5P,EAAYpD,UAAUiT,aAAe,SAAU9L,GAE3C,GADArH,KAAK0O,aAAc,EACd1O,KAAKoT,QAGV,GAAI/L,EAAE/G,SAAWN,KAAK2G,aAAtB,CAOA,GAHK3G,KAAKkO,YACNlO,KAAKhD,aAAa4K,SAEjB5H,KAAKqT,SAAU,CAChB,GAAIhM,EAAE/G,SAAiE,IAAvD+G,EAAE/G,OAAOxC,UAAU+N,WAAWtF,QAAQ5E,GAIlD,YAHI3B,KAAKkL,eACLlL,KAAKiJ,iBAIRjJ,KAAKkL,gBACLlL,KAAK2Q,aAAgB3Q,KAAKgJ,kBAAoB3B,EAAE/G,QAAU+G,EAAE/G,OAAOjD,YAAcyF,GAClF9C,KAAK4Q,UAAUvJ,IAGfrH,KAAK2H,UAAUN,GACG,aAAdrH,KAAK0E,OACL1E,KAAKqR,mBACLrR,KAAKkO,YAAa,EACblO,KAAKnD,eAAeiB,UAAUG,SAASgD,IACxCjB,KAAKnD,eAAeiB,UAAUC,IAAIkD,KAK5CjB,KAAKwM,iBAA4C,KAAzBxM,KAAKwM,iBAC/BnF,EAAEiM,sBA7BFjM,EAAEiM,kBAgCVhQ,EAAYpD,UAAU8F,OAAS,SAAU5B,GACjCA,GACApE,KAAKnD,eAAeiB,UAAUa,OAAOuC,GACrClB,KAAKhD,aAAaY,gBAAgB,YAClC,eAAWoC,KAAKhD,aAAc,CAAE,gBAAiB,UACjDgD,KAAKmL,mBAAmB,WAGxBnL,KAAKnD,eAAeiB,UAAUC,IAAImD,GAClClB,KAAKhD,aAAaiJ,aAAa,WAAY,QAC3C,eAAWjG,KAAKhD,aAAc,CAAE,gBAAiB,SACjDgD,KAAKmL,mBAAmB,SAExBnL,KAAKoT,UAAYhP,IACjBpE,KAAKoT,QAAUhP,GAEnBpE,KAAK2H,aAETrE,EAAYpD,UAAUqT,cAAgB,SAAUC,EAAKC,GACjD,IAAInT,EAIJ,GAHK,eAAkBkT,KACnBlT,EAASkT,EAAIE,eAEb1T,KAAKqE,UAAYrF,SAASyJ,KAAKxK,SAAS+B,KAAKqE,SAAStH,UAAYiD,KAAKqE,SAAStH,QAAQkB,SAASqC,GAC/E,aAAdN,KAAK0E,KACL1E,KAAKhD,aAAa4K,QAEY,SAAxB5H,KAAK9C,iBACT8C,KAAKnD,eAAeiB,UAAUG,SAAS,cAAkB+B,KAAKnD,eAAeiB,UAAUG,SAAS,cAClG,eAAS,CAAC+B,KAAKnD,gBAAiB,qBANxC,CAcA,GAJ4B,SAAxBmD,KAAK9C,gBAA8B8C,KAAKnD,eAAeiB,UAAUG,SAAS,cAA+B,aAAd+B,KAAK0E,OAC9F,cAAD,CAAmB1E,KAAK/C,QAAiC,IAAtB+C,KAAK/C,MAAMkB,SAC/C,gBAAY,CAAC6B,KAAKnD,gBAAiB,iBAErB,aAAdmD,KAAK0E,MAAuB,OAAQiP,OAAS,eAAkBH,KAASC,EAGxE,OAFAzT,KAAKkO,YAAa,OAClBlO,KAAKnD,eAAeiB,UAAUa,OAAOsC,GAGzC,GAAIjB,KAAKiE,kBAML,OALK,eAAkBuP,IACnBA,EAAIF,iBAERtT,KAAKhD,aAAa4K,aAClB5H,KAAKiE,mBAAoB,GAK7B,GAFAjE,KAAKkO,YAAa,EAClBlO,KAAKnD,eAAeiB,UAAUa,OAAOsC,GACjCjB,KAAK4T,aAAc,CACnB,IAAItB,EAAatS,KAAKuS,eAAevS,KAAKhD,aAAaC,MAAO+C,KAAK2K,WAAY3K,KAAKkS,cAChF2B,EAAgB7T,KAAKkK,gBAAgBlK,KAAK6I,KAAM,KAAM,aAAcyJ,GACpEjV,EAAY2C,KAAKiF,iBAAmB3D,EAAY,OAAoB2N,SACpE6E,KAAqBD,GAAkBA,EAAc/V,UAAUG,SAASZ,IACxEyW,IACA9T,KAAK+T,oBAAoBF,EAAeL,GACtB,cAAdxT,KAAK0E,MACL1E,KAAKgM,gBAAgBhM,KAAKiM,gBAItCjM,KAAKgU,iBACDhU,KAAK+D,gBACL/D,KAAK+I,SAAW/I,KAAK+D,cACrB/D,KAAK+D,cAAgB,MAEzB/D,KAAK4J,iBAAiB,MACJ,QAAd5J,KAAK0E,MAAgC,aAAd1E,KAAK0E,MAC5B1E,KAAKiU,kBAELjU,KAAK8O,eACL9O,KAAK+O,iBAAiByE,EAAKxT,KAAK/C,MAAO+C,KAAKyL,YAC5CzL,KAAKkU,cAAclU,KAAKwG,cAAe,WAE3CxG,KAAK2G,aAAaE,MAAMC,QAAU,OAC9B9G,KAAKkL,eACLlL,KAAK2H,UAAU6L,GAEnBxT,KAAKkM,mBACLlM,KAAKuI,QAAQ,QACbvI,KAAKmU,SAAU,EACX,OAAQ7M,UAA0B,cAAdtH,KAAK0E,MAAsC,aAAd1E,KAAK0E,MACtD1E,KAAKoU,kBAETpU,KAAK+L,sBACL/L,KAAKqU,oBACLxV,EAAemB,KAAKnD,eAAgBmD,KAAK3B,iBAAkB2B,KAAK/C,MAAO+C,KAAK9C,eAAgB8C,KAAK7C,aACjG6C,KAAKmG,sBACAnG,KAAKuH,iBAAiD,IAA9BvH,KAAK+E,sBAA+C,aAAd/E,KAAK0E,QAChE,eAAkB1E,KAAK+I,YAC3B/I,KAAKmK,UAAYnK,KAAK+I,UAE1B/I,KAAKqM,uBACL,OAAMiI,kBAAkBtU,KAAKnD,eAAgBmD,KAAKf,eAClDe,KAAKuU,iBACA,eAAkBvU,KAAKnD,iBAAoB,eAAkBmD,KAAKnD,eAAe+S,uBAAuB,cAAc,IAAM5P,KAAKnD,eAAe+S,uBAAuB,wBAAwB,IAA8B,UAAxB5P,KAAK9C,iBAC3M8C,KAAKnD,eAAe+S,uBAAuB,wBAAwB,GAAG9R,UAAUC,IAAI,YAG5FuF,EAAYpD,UAAUqU,eAAiB,WACnC,IAAIC,EACJ,GAAIxU,KAAKnD,eAAgB,CACrB,IAAKmD,KAAKgJ,kBAAoBhJ,KAAKnD,eAAe2B,cAAc,gBAC5DgW,EAAexU,KAAKnD,eAAe4X,YAAc,EAAKC,SAASC,iBAAiB3U,KAAKhD,cAAc4X,kBAElG,CACD,IAAIC,EAAgB7U,KAAK8U,SAASC,YAC9BL,SAASC,iBAAiB3U,KAAK8U,UAAUE,aAC7CR,EAAexU,KAAKnD,eAAe4X,aAAeI,EAAgB,EAAKH,SAASC,iBAAiB3U,KAAKhD,cAAc4X,eAExH,OAAML,eAAeC,EAAcxU,KAAKnD,eAAgBmD,KAAKiV,mBAGrE3R,EAAYpD,UAAUmM,qBAAuB,WACzC,GAAIrM,KAAKgJ,iBAAkB,CACvB,IAAI6L,EAAgB7U,KAAK8U,SAASC,YAC9BL,SAASjN,OAAOkN,iBAAiB3U,KAAK8U,UAAUE,YAAa,IACjEhV,KAAKkV,mBAAmBL,QAGnB,eAAkB7U,KAAK8U,WACxB9U,KAAKkV,mBAAmBlV,KAAKgJ,iBAAmBhJ,KAAK8U,SAASC,YAAc,IAIxFzR,EAAYpD,UAAUgV,mBAAqB,SAAUL,GAC7C,eAAkB7U,KAAK/C,QAAgC,IAAtB+C,KAAK/C,MAAMkB,OACV,IAA9B6B,KAAK8U,SAASC,YACd/U,KAAKlD,cAAc+J,MAAMsO,MAAS,gBAAkBN,EAAgB,IAAO,KAG3E,eAAS,CAAC7U,KAAKlD,eAAgBqG,IAG7B,eAAkBnD,KAAK/C,SAC7B+C,KAAKlD,cAAcc,gBAAgB,SACnC,gBAAY,CAACoC,KAAKlD,eAAgBqG,MAG1CG,EAAYpD,UAAUmU,kBAAoB,WACjC,eAAkBrU,KAAKlD,iBAClBkD,KAAK/C,OAAU+C,KAAK/C,MAAMkB,SAAY,eAAkB6B,KAAK8M,OAAuB,KAAd9M,KAAK8M,KAI7E9M,KAAKlD,cAAcgB,UAAUC,IAAIgE,GAHjC/B,KAAKlD,cAAcgB,UAAUa,OAAOoD,KAOhDuB,EAAYpD,UAAUkV,eAAiB,SAAUC,EAAUC,GACvD,OAAOzC,KAAKE,UAAUsC,EAAS3J,QAAQ6J,UAAY1C,KAAKE,UAAUuC,EAAS5J,QAAQ6J,SAEvFjS,EAAYpD,UAAU6O,iBAAmB,SAAU3G,EAAOoN,EAAQC,GAC9D,IAAIJ,EAAWG,GAAkB,GAC7BF,EAAWG,GAAkB,GACjC,GAAIzV,KAAK0V,YAAc1V,KAAKoV,eAAeC,EAAUC,GAAW,CAC5D,IAAIpN,EAAY,CACZb,EAAGe,EACHkN,SAAUG,EACVxY,MAAOuY,EACPG,eAAcvN,EACdrL,QAASiD,KAAKjD,QACdqL,MAAOA,GAEPpI,KAAK4V,WAAa5V,KAAK6V,cACvB7V,KAAK6V,eAAgB,EAGrB7V,KAAKuI,QAAQ,SAAUL,GAE3BlI,KAAK8V,kBACA9V,KAAK8O,cACN9O,KAAKkU,cAAclU,KAAKwG,cAAe,YAInDlD,EAAYpD,UAAU4V,gBAAkB,WAC/B9V,KAAK/C,MAIN+C,KAAKyL,WAAazL,KAAK/C,MAAMyO,QAH7B1L,KAAKyL,WAAazL,KAAK/C,OAM/BqG,EAAYpD,UAAUmJ,2BAA6B,WAC1C,eAAkBrJ,KAAKmK,YAAe,eAAkBnK,KAAKmK,UAAUyF,uBAAuB,gBAAgB,KAC/G,eAAW5P,KAAKhD,aAAc,CAAE,wBAAyBgD,KAAKmK,UAAUyF,uBAAuB,gBAAgB,GAAGrS,MAG1H+F,EAAYpD,UAAU6V,eAAiB,WACnC,IAAIC,EAAShW,KAAK6I,KAAK/K,UAAUG,SAAS,OAAoByR,QAAU,KACpEiF,iBAAiB3U,KAAKiW,WAAW,GAAI,MAAMC,iBAAiB,UAChE,OAAOxD,KAAKyD,MAAMnW,KAAK6I,KAAKuN,aAAe1B,SAASsB,EAAQ,MAEhE1S,EAAYpD,UAAUmW,gBAAkB,SAAUC,GAC9C,IAAIC,EAAavW,KAAK6I,KAAKC,iBAAiB,MACtC,OAAoBuB,GAAK,SAAW/I,EADE,0BAExCkV,EAAeF,GAAS,EAAIC,EAAWD,EAAQ,GAAKC,EAAW,GACnEvW,KAAKsK,aAAakM,GAClBxW,KAAKoK,aAAaoM,EAAcxW,KAAKyW,gBAAgBD,EAAahZ,aAAa,iBAEnF8F,EAAYpD,UAAUwW,kBAAoB,SAAUJ,GAErCtW,KAAKiW,WAAhB,IACIM,EAAavW,KAAK6I,KAAKC,iBAAiB,MACtC,OAAoBuB,GAAK,SAAW/I,EADE,0BAExCkV,EAAeF,GAASC,EAAWpY,OAASoY,EAAWD,EAAQ,GAAKC,EAAWA,EAAWpY,OAAS,GACvG6B,KAAKsK,aAAakM,GAClBxW,KAAKoK,aAAaoM,EAAcxW,KAAKyW,gBAAgBD,EAAahZ,aAAa,iBAEnF8F,EAAYpD,UAAU+V,SAAW,WAI7B,OAHKjW,KAAK6I,MACNxF,EAAOnD,UAAUyW,OAAOlT,KAAKzD,MAE1BA,KAAKmK,WAAanK,KAAKmK,UAAUrB,iBAAiB,IAAM,OAAoBuB,IAAIlM,OAAS,EAC5F6B,KAAKmK,UAAUrB,iBAAiB,IAAM,OAAoBuB,GACpD,SAAW/I,EAAY,KAAO,IAE5CgC,EAAYpD,UAAU0W,eAAiB,SAAUvP,GAC7C,IAAI7D,EAAQxD,KACZ,GAAIA,KAAKoT,QAAS,CAkBd,GAjBApT,KAAKqR,mBACLrR,KAAKkO,YAAa,EACdlO,KAAK/C,OAAS+C,KAAK/C,MAAMkB,SACP,cAAd6B,KAAK0E,MAAsC,aAAd1E,KAAK0E,KAClC1E,KAAKwL,sBAAsB3E,MAAMC,QAAU,GAG3C9G,KAAK6W,mBAES,aAAd7W,KAAK0E,OACL1E,KAAK8W,YAAYjQ,MAAMC,QAAU,SAGvB,aAAd9G,KAAK0E,MACL1E,KAAKlD,cAAcgB,UAAUa,OAAOoD,GAExC/B,KAAKqM,uBACDrM,KAAKmU,QAAS,CACd,IAAI9O,EAAO,CAAEsQ,eAActO,EAAkBe,MAAOf,GACpDrH,KAAKuI,QAAQ,QAASlD,GACtBrF,KAAKmU,SAAU,EAYnB,OAVKnU,KAAKnD,eAAeiB,UAAUG,SAASgD,IACxCjB,KAAKnD,eAAeiB,UAAUC,IAAIkD,GAEtCrC,EAAgBoB,KAAKnD,eAAgBmD,KAAK3B,kBACtC2B,KAAKkL,eACLlL,KAAKiJ,eAET8N,YAAW,WACPvT,EAAM+Q,mBACP,MACI,EAGP,OAAO,GAGfjR,EAAYpD,UAAU2W,iBAAmB,WACnB,aAAd7W,KAAK0E,KACL1E,KAAK8W,YAAYjQ,MAAMC,QAAU,GAGjC9G,KAAKgX,iBAAiBnQ,MAAMC,QAAU,GAE1C9G,KAAK3B,iBAAiBP,UAAUC,IAAI+D,IAExCwB,EAAYpD,UAAU+W,iBAAmB,WACrCjX,KAAKgX,iBAAiBnQ,MAAMC,QAAU,OACtC9G,KAAK3B,iBAAiBP,UAAUa,OAAOmD,IAE3CwB,EAAYpD,UAAUkR,cAAgB,WAClC,IAAI8F,EAAO,EACPlX,KAAK7C,cACL+Z,EAAOA,EAAOlX,KAAKhD,aAAaG,YAAYgB,OAAS+Y,EAAOlX,KAAKhD,aAAaG,YAAYgB,QAE1F6B,KAAKhD,aAAaC,MAAMkB,OAAS+Y,EACjClX,KAAKhD,aAAaka,KAAOlX,KAAKhD,aAAaC,MAAMkB,OAGjD6B,KAAKhD,aAAaka,KAAOA,GAGjC5T,EAAYpD,UAAUgL,YAAc,WAChC,OAA+B,OAAtBlL,KAAK+F,cAA+D,OAApC/F,KAAK+F,aAAayJ,eAE/DlM,EAAYpD,UAAU+I,aAAe,WAC7BjJ,KAAKqE,UAAYrE,KAAKmX,YACtBnX,KAAKqE,SAAS6B,cAAc,CAAEiP,MAAOnV,KAAKoX,mBAC1CpX,KAAKqE,SAASgT,gBAAgBrX,KAAKnD,gBACnCmD,KAAKqE,SAASiT,qBAGtBhU,EAAYpD,UAAUqX,gBAAkB,WACpC,OAAOvX,KAAKwM,gBAAgBrO,OAAS,GAEzCmF,EAAYpD,UAAUsX,gBAAkB,SAAUnQ,GAC9C,OAAQA,EAAEgH,SACN,KAAK,GACDrO,KAAK2H,UAAUN,GACG,aAAdrH,KAAK0E,MACL1E,KAAKhD,aAAa4K,QAEtBP,EAAEiM,iBACF,MACJ,KAAK,GACItT,KAAKkL,gBACNlL,KAAK4Q,UAAUvJ,GACfA,EAAEiM,kBAEN,QAGZhQ,EAAYpD,UAAUuX,oBAAsB,WACxC,IAAIC,EAAc1X,KAAK6I,KAAKrK,cAAc,IAAM,OAAoBoJ,OACpE,IAAK,eAAkB8P,GAEnB,GADA1X,KAAKhD,aAAaiJ,aAAa,wBAAyByR,EAAYna,IAChEyC,KAAKuH,eAAgB,CACrB,IAAIoQ,EAAc3X,KAAK+F,aAAavH,cAAc,IAAM4E,IACxDuU,GAAeA,EAAY1R,aAAa,wBAAyByR,EAAYna,QAE3D,YAAbyC,KAAK0E,MACV1E,KAAKnD,eAAeoJ,aAAa,wBAAyByR,EAAYna,KAIlF+F,EAAYpD,UAAU0X,eAAiB,SAAUC,GAC7C7X,KAAK6J,cACL,IAAIiO,EAAY9X,KAAKmK,UAAUrB,iBAAiB,MAAQ,OAAoBuB,GACtE,SAAW/I,EAD+B,0BAEhD,GAAIwW,EAAU3Z,OAAS,EAAG,CACtB,IAAIpB,EAAU+a,EAAU,EAAW,EAAKA,EAAU3Z,OAAS,GAC3DpB,EAAQe,UAAUC,IAAI,OAAoB6J,OAC1C5H,KAAKoK,aAAarN,GAClBiD,KAAKqJ,+BAGb/F,EAAYpD,UAAU6X,UAAY,SAAU1Q,GACxC,IAAIrH,KAAKqT,WAAarT,KAAKoT,SAAyB,aAAdpT,KAAK0E,QAG3C1E,KAAKqO,QAAUhH,EAAEgH,QACjBrO,KAAKkE,eAAgB,IACjBmD,EAAEgH,QAAU,KAAOhH,EAAEgH,QAAU,MAGnC,GAAIhH,EAAE2Q,OACFhY,KAAKwX,gBAAgBnQ,OADzB,CAIK,GAAIrH,KAAKkL,cAAe,CACzB,IAAIwM,EAAc1X,KAAK6I,KAAKrK,cAAc,IAAM,OAAoBoJ,OAChEqQ,OAAc,EAClB,OAAQ5Q,EAAEgH,SACN,KAAK,GACL,KAAK,GACDrO,KAAK4X,eAA8B,KAAdvQ,EAAEgH,SACvB,MACJ,KAAK,GAOD,OANAhH,EAAEiM,sBACEoE,IACA1X,KAAKyW,gBAAgBiB,EAAYla,aAAa,eAC9CwC,KAAKqW,gBAAgB4B,EAAcjY,KAAK+V,kBACxC/V,KAAKyX,wBAGb,KAAK,GAOD,OANApQ,EAAEiM,sBACEoE,IACA1X,KAAKyW,gBAAgBiB,EAAYla,aAAa,eAC9CwC,KAAK0W,kBAAkBuB,EAAcjY,KAAK+V,kBAC1C/V,KAAKyX,wBAGb,KAAK,GACDzX,KAAKkY,QAAQ7Q,GACb,MACJ,KAAK,GACDrH,KAAKmY,UAAU9Q,GACf,MACJ,KAAK,GAMD,OALAA,EAAEiM,iBACFtT,KAAK2H,UAAUN,QACG,aAAdrH,KAAK0E,MACL1E,KAAKhD,aAAa4K,SAG1B,KAAK,GAMD,OALAP,EAAEiM,iBACgB,aAAdtT,KAAK0E,MACL1E,KAAKoY,YAAY/Q,QAErBrH,KAAKqM,uBAET,KAAK,GAED,YADArM,KAAKqY,kBAAkBhR,GAE3B,KAAK,EACDA,EAAEiM,iBACFtT,KAAK2H,UAAUN,GACfrH,KAAKhD,aAAa4K,QAClB5H,KAAKnD,eAAeiB,UAAUC,IAAIkD,SAI1C,OAAQoG,EAAEgH,SACN,KAAK,GACL,KAAK,EACL,KAAK,GACL,KAAK,GACL,KAAK,GACD,OACJ,KAAK,GACGrO,KAAK2Q,aACL3Q,KAAK4Q,YAET,MACJ,KAAK,GAGD,OAFAvJ,EAAEiM,sBACFtT,KAAKsY,eAIbtY,KAAKuX,mBACLvX,KAAKuY,cAAclR,GAEL,aAAdrH,KAAK0E,MAAuB1E,KAAK+E,uBAC7B/E,KAAKuH,iBACLvH,KAAK2D,mBAAqB3D,KAAKwM,iBAEnCxM,KAAKwY,iBAAiBnR,IAE1BrH,KAAKoR,gBACe,aAAdpR,KAAK0E,MAAuB1E,KAAK6N,eACnC7N,KAAKiJ,iBAGb3F,EAAYpD,UAAUiY,UAAY,SAAU9Q,GACxCA,EAAEiM,iBACFtT,KAAKyY,WAAW,GAChBzY,KAAK0Y,WAAY,GACb1Z,SAASyL,cAAc3M,UAAUG,SAASmF,KACxB,aAAdpD,KAAK0E,OAAwB1E,KAAKuH,gBAAkBvI,SAASyL,gBAAkBzK,KAAK6I,OACxF,OAAa9K,IAAIiC,KAAK6I,KAAM,UAAW7I,KAAK+X,UAAW/X,MAE3DA,KAAKyX,uBAETnU,EAAYpD,UAAUgY,QAAU,SAAU7Q,GACtCA,EAAEiM,iBACFtT,KAAK0Y,WAAY,EACjB,IAAI7P,EAAO7I,KAAK6I,KAAKC,iBAAiB,MAChC,OAAoBuB,GACpB,SAAW/I,EAFqB,0BAGlCtB,KAAK4E,qBAAqC,aAAd5E,KAAK0E,OAAwB,eAAkB1E,KAAK0I,OAAOC,WACvFE,EAAO7I,KAAK6I,KAAKC,iBAAiB,MAC5B,OAAoBuB,GAAK,OAAS,OAAoB+E,MACtD,SAAW9N,EAFiB,2BAItC,IAAIqX,EAAa3Y,KAAK6I,KAAKrK,cAAc,MAAQ,OAAoBoJ,OACjEiD,EAAQjL,MAAMM,UAAUwL,MAAMjI,KAAKoF,GAAMtC,QAAQoS,GACjD9N,GAAS,GAAoB,aAAd7K,KAAK0E,MAAuB1E,KAAKuH,iBAChDvH,KAAK0Y,WAAY,EACjB1Y,KAAK8J,OAAO,aAAc,CAAEC,OAAQ,oBAAqB/D,OAAsB,aAAdhG,KAAK0E,KAAqBzH,MAAO,WAEtG+C,KAAKyY,YAAY,GACjBzY,KAAKyX,uBAETnU,EAAYpD,UAAUmY,kBAAoB,SAAUhR,GAC9B,aAAdrH,KAAK0E,OACA1F,SAASyL,cAAc3M,UAAUG,SAASmF,MAC3CiE,EAAEiM,iBACFtT,KAAK0Y,WAAY,GAErB1Y,KAAKoY,YAAY/Q,IAErBrH,KAAKqM,wBAET/I,EAAYpD,UAAUsY,iBAAmB,SAAUnR,IAC7B,IAAdA,EAAEgH,SAAiBrO,KAAKuH,eAAiBvH,KAAKwM,kBAAoBxM,KAAK2D,mBAA8C,KAAzB3D,KAAKwM,iBACjGxM,KAAKoS,aAAc,EAGnBpS,KAAKoS,aAAc,GAG3B9O,EAAYpD,UAAUqY,cAAgB,SAAUlR,GAC5C,GAAmB,cAAdrH,KAAK0E,MAAsC,aAAd1E,KAAK0E,MAAwB1E,KAAK/C,OAAS+C,KAAK/C,MAAMkB,OACpF,OAAQkJ,EAAEgH,SACN,KAAK,GACDhH,EAAEiM,iBACFtT,KAAK4Y,QAAQ,EAAGvR,GAChB,MACJ,KAAK,GACDA,EAAEiM,iBACFtT,KAAK4Y,OAAO,EAAGvR,GACf,MACJ,KAAK,EACDrH,KAAKsL,oBAAoBjE,GACzB,MACJ,KAAK,GACDrH,KAAK6Y,mBAAmBxR,GACxB,WAGP,GAAkB,IAAdA,EAAEgH,SAA+B,cAAdrO,KAAK0E,MACzB1E,KAAK/C,OAAS+C,KAAK/C,MAAMkB,OAAQ,CACjCkJ,EAAEiM,iBACF,IAAIrD,EAAOjQ,KAAK/C,MAAM+C,KAAK/C,MAAMkB,OAAS,GAC1C6B,KAAK8L,YAAYmE,EAAM5I,GACvBrH,KAAKgM,gBAAgBhM,KAAKiM,cAAe5E,GACzCrH,KAAKuK,oBAAoB0F,KAIrC3M,EAAYpD,UAAUkY,YAAc,SAAU/Q,GAC1CrH,KAAK+L,sBACL/L,KAAK8Y,gBAAgBzR,GACjBrH,KAAKiF,kBACLjF,KAAKwI,wBAGblF,EAAYpD,UAAUoY,aAAe,WACjC,IAAIrI,EAAOjQ,KAAKyL,WAAazL,KAAKyL,WAAWC,QAAU,GACnD1L,KAAK/C,OAAS+C,KAAKoV,eAAepV,KAAK/C,MAAOgT,KAC5B,aAAdjQ,KAAK0E,OACL1E,KAAK/C,MAAQgT,EACbjQ,KAAK4O,sBAES,cAAd5O,KAAK0E,MAAsC,aAAd1E,KAAK0E,KAClC1E,KAAKwL,sBAAsB3E,MAAMC,QAAU,GAG3C9G,KAAK6W,mBAET7W,KAAKmG,qBACDnG,KAAK/C,MAAMkB,OACX6B,KAAKqR,mBAGLrR,KAAK+Y,oBAGb/Y,KAAKkM,oBAET5I,EAAYpD,UAAUkK,aAAe,SAAU4O,EAAYf,GACvD,IAAIgB,EAAgBjZ,KAAK6I,KAAKuN,aAC1B8C,EAAaF,EAAWG,UAAYH,EAAW5C,aAAepW,KAAK6I,KAAKuQ,UACxEC,EAAarZ,KAAK6I,KAAKuQ,UAAYF,EAAaD,EAChDK,EAAYN,EAAWG,UAAYH,EAAW5C,aAAepW,KAAK6I,KAAKuQ,UAC3EE,EAAWtZ,KAAK0I,OAAOC,UAAY,eAAkB3I,KAAKuZ,oBACtDD,EAAWtZ,KAAKuZ,mBAAmBnD,aAAekD,EAClC,IAAhBrB,EACAjY,KAAK6I,KAAKuQ,UAAY,EAEjBF,EAAaD,EAClBjZ,KAAK6I,KAAKuQ,UAAYC,EAEfC,EAAW,GAAKtZ,KAAK6I,KAAKuN,aAAekD,IAChDtZ,KAAK6I,KAAKuQ,UAAYC,IAG9B/V,EAAYpD,UAAUkZ,UAAY,SAAUJ,EAAYf,GACpD,IAAIoB,EAAaL,EAAWG,UAAYnZ,KAAK6I,KAAKuQ,UAClDC,EAAarZ,KAAK0I,OAAOC,UAAY,eAAY3I,KAAKuZ,oBAClDF,EAAarZ,KAAKuZ,mBAAmBnD,aAAeiD,EACxD,IAAIC,EAAYN,EAAWG,UAAYH,EAAW5C,aAAepW,KAAK6I,KAAKuQ,UACvD,IAAhBnB,EACAjY,KAAK6I,KAAKuQ,UAAY,EAEjBC,EAAa,EAClBrZ,KAAK6I,KAAKuQ,UAAYpZ,KAAK6I,KAAKuQ,UAAYC,EAErCC,EAAW,GAAKtZ,KAAK6I,KAAKuN,aAAekD,IAChDtZ,KAAK6I,KAAKuQ,UAAYJ,EAAWG,WAAanZ,KAAK0I,OAAOC,UAAY,eAAY3I,KAAKuZ,oBACnFvZ,KAAKuZ,mBAAmBnD,aAAe,KAGnD9S,EAAYpD,UAAU4Y,gBAAkB,SAAUzR,GAC9C,IAEI/G,EAFA+J,EAAKrK,KAAK6I,KAAKrK,cAAc,MAAQ,OAAoBoJ,OACzD4R,EAAQxZ,KAAK/C,OAAS+C,KAAK/C,MAAMkB,OAAS6B,KAAK/C,MAAMkB,OAAS,EAEvD,OAAPkM,IACIA,EAAGvM,UAAUG,SAAS,cACtBub,GAAgB,GAEhBxZ,KAAKyZ,UAAUpP,IAAOmP,EAAQxZ,KAAKyQ,wBACnCzQ,KAAK+T,oBAAoB1J,EAAIhD,GAC7BrH,KAAKsK,aAAaD,GACA,aAAdrK,KAAK0E,MACL1E,KAAKiU,kBACLjU,KAAKgM,gBAAgBhM,KAAKiM,cAAe5E,GACzCrH,KAAKqU,oBACLrU,KAAKqM,uBACDrM,KAAK4E,sBAAwB,eAAkB5E,KAAK0I,OAAOC,WAC3DrI,EAAS+J,EAAGqP,kBAAkBC,iBAC9B3Z,KAAK0J,eAAepJ,GACpBN,KAAK2J,mBAIT3J,KAAKgM,gBAAgBhM,KAAKiM,cAAe5E,GAE7CrH,KAAKkM,mBACa,aAAdlM,KAAK0E,MACL1E,KAAK4J,iBAAiBS,EAAGuP,aAExB5Z,KAAK8O,cACN9O,KAAK+O,iBAAiB1H,EAAGrH,KAAK/C,MAAO+C,KAAKyL,YAE9CzL,KAAKiJ,iBAGAjJ,KAAKyZ,UAAUpP,IAAOmP,EAAQxZ,KAAKyQ,yBACpCnQ,EAAS+J,EAAGqP,kBAAkBC,iBAC1BrZ,EAAOxC,UAAUG,SAAS,WAC1B+B,KAAK6Z,eAAc,EAAOxS,EAAGgD,GAG7BrK,KAAK6Z,eAAc,EAAMxS,EAAGgD,IAIxCrK,KAAKoM,mBACDpM,KAAKkF,oBACLlF,KAAK2H,UAAUN,IAGvBrH,KAAKmG,sBAET7C,EAAYpD,UAAU0J,iBAAmB,SAAUY,GAC/C,IAAKxK,KAAKuH,gBAAiC,aAAdvH,KAAK0E,OAAqD,IAA9B1E,KAAK+E,sBACvD/E,KAAKgF,mBAAqBhF,KAAK+I,UAAY/I,KAAKmM,SAAU,CAC7D,IAAItD,EAAO7I,KAAK+I,SAASgF,UAAY/N,KAAK+I,SAASgF,WAAU,GAAQ/N,KAAK+I,SAC1E/I,KAAKmN,iBAAiBtE,EAAM7I,KAAK8N,UACjC9N,KAAKuK,oBAAoBC,GACrBxK,KAAK/C,OAAS+C,KAAK/C,MAAMkB,QACzB6B,KAAKoM,wBAGH,eAAkBpM,KAAK0I,OAAOC,UAAY3I,KAAK/C,OAAS+C,KAAK/C,MAAMkB,QACzE6B,KAAKoM,oBAGb9I,EAAYpD,UAAU2Y,mBAAqB,SAAUxR,GACjD,IACI4I,EADA6J,EAAe9Z,KAAKwL,sBAAsBhN,cAAc,QAAUoD,GAEjD,OAAjBkY,IACK,eAAkB9Z,KAAK/C,SACxB+C,KAAKyL,WAAazL,KAAK/C,MAAMyO,SAEjCuE,EAAO6J,EAAazK,mBACP,OAATY,IACAjQ,KAAK+L,sBACL/L,KAAK+Z,iBAAiB9J,EAAM5I,IAEhCrH,KAAK8L,YAAYgO,EAAatc,aAAa,cAAe6J,GAC1DrH,KAAKkM,oBAELlM,KAAKkF,oBACLlF,KAAK2H,UAAUN,GAEnBrH,KAAKqM,wBAET/I,EAAYpD,UAAU8Z,UAAY,SAAU5V,GACxC,IACIyG,EADAU,EAAWvL,KAAK6I,KAAKC,iBAAiB,MAAQ,OAAoBuB,IAElEkB,EAASpN,OAAS,IAClB6B,KAAK6J,cACLgB,EAAQzG,EAAQ,EAAKmH,EAASpN,OAAS,EACvC6B,KAAKsK,aAAaiB,EAASV,IAC3B7K,KAAKoK,aAAamB,EAASV,GAAQA,IAEvC7K,KAAKyX,uBAETnU,EAAYpD,UAAUuY,WAAa,SAAUwB,GACzC,GAAIja,KAAK6I,KAAM,CACX,IAAI0C,EAAWvL,KAAK6I,KAAKC,iBAAiB,MACpC,OAAoBuB,GACpB,SAAW/I,EAFyB,0BAGxB,aAAdtB,KAAK0E,MAAuB1E,KAAK4E,sBAAwB,eAAkB5E,KAAK0I,OAAOC,WACvF4C,EAAWvL,KAAK6I,KAAKC,iBAAiB,MAChC,OAAoBuB,GAAK,OAAS,OAAoB+E,MACtD,SAAW9N,EAFqB,2BAI1C,IAAIwY,EAAe9Z,KAAK6I,KAAKrK,cAAc,MAAQ,OAAoBoJ,OACnEqI,GAAQ,EACZ,GAAI1E,EAASpN,OAAQ,CACjB,IAAK,IAAI0M,EAAQ,EAAGA,EAAQU,EAASpN,OAAQ0M,IACzC,GAAIU,EAASV,KAAWiP,EAAc,CAClC7J,EAAOpF,EACP,MAGJoP,EAAW,EACPhK,EAAQ1E,EAASpN,OAAS,IAC1B6B,KAAK6J,cACL7J,KAAKsK,aAAaiB,IAAW0E,IAC7BjQ,KAAKka,YAAY3O,EAAS0E,IAC1BjQ,KAAKoK,aAAamB,EAAS0E,GAAOA,IAIlCA,EAAO,IACPjQ,KAAK6J,cACL7J,KAAKsK,aAAaiB,IAAW0E,IAC7BjQ,KAAKka,YAAY3O,EAAS0E,IAC1BjQ,KAAKoZ,UAAU7N,EAAS0E,GAAOA,OAMnD3M,EAAYpD,UAAUga,YAAc,SAAUnd,GAC1C,GAAkB,aAAdiD,KAAK0E,MAAuB1E,KAAK4E,sBAChC,eAAkB5E,KAAK0I,OAAOC,SAAU,CACzC,IAAIwR,EAAepd,EAAQ2c,kBAAkBC,iBACzCQ,EAAarc,UAAUG,SAAS,WAChClB,EAAQe,UAAUC,IAAI,YAGtBhB,EAAQe,UAAUa,OAAO,cAIrC2E,EAAYpD,UAAU0Y,OAAS,SAAUqB,EAAU5S,GAC/C,IAAI4I,EACA1E,EAAWvL,KAAKwL,sBAAsB1C,iBAAiB,QAAUrH,GACjEqY,EAAe9Z,KAAKwL,sBAAsBhN,cAAc,QAAUoD,GACjD,OAAjBkY,EACIG,EAAW,GACXja,KAAK+Z,iBAAiBxO,EAASA,EAASpN,OAAS,GAAIkJ,GAIrD4S,EAAW,GACXhK,EAAO6J,EAAa3K,uBACP,OAATc,IACAjQ,KAAK+L,sBACL/L,KAAK+Z,iBAAiB9J,EAAM5I,MAIhC4I,EAAO6J,EAAazK,mBACpBrP,KAAK+L,sBACQ,OAATkE,GACAjQ,KAAK+Z,iBAAiB9J,EAAM5I,KAK5C/D,EAAYpD,UAAUka,UAAY,SAAU/S,GACxC,GAAIrH,KAAKoT,QAAS,CACd,IAAIiH,EAAO,eAAQhT,EAAE/G,OAAQ,IAAMmB,GACnCzB,KAAK+L,sBACL/L,KAAK+Z,iBAAiBM,EAAMhT,KAGpC/D,EAAYpD,UAAU6L,oBAAsB,WACpC/L,KAAKwL,uBACLxL,KAAKoU,mBAGb9Q,EAAYpD,UAAU6Z,iBAAmB,SAAUhd,EAASsK,GACxD,eAAS,CAACtK,GAAU6E,GACpB5B,KAAKuI,QAAQ,gBAAiBlB,IAElC/D,EAAYpD,UAAUoa,aAAe,SAAUjT,GAC3C,GAAgB,IAAZA,EAAEkT,OAA4B,IAAblT,EAAEmT,QAGnBxa,KAAKoT,UAAYpT,KAAKqT,SAAU,CAChC,IAAItW,EAAUsK,EAAE/G,OAAOkP,cACnBiL,EAAY1d,EAAQS,aAAa,cACjCP,EAAQ+C,KAAK4L,kBAAkB6O,GAYnC,GAXIza,KAAKgF,mBAAoC,UAAdyV,IAAmC,IAAVxd,IAClD,eAAkBA,IAA+B,QAArBA,EAAM4O,cACpC5O,EAAQwd,GAERza,KAAKkL,eAA+B,aAAdlL,KAAK0E,MAC3B1E,KAAK2H,UAAUN,GAEdrH,KAAKkO,YACNlO,KAAKhD,aAAa4K,QAEtB5H,KAAK8L,YAAY7O,EAAOoK,GACpB,eAAkBrH,KAAKkK,gBAAgBlK,KAAK6I,KAAM,KAAM,aAAc5L,KAAW+C,KAAK+I,UAAY/I,KAAKmM,SAAU,CACjH,IAAItD,EAAO7I,KAAK+I,SAASgF,UAAY/N,KAAK+I,SAASgF,WAAU,GAAQ/N,KAAK+I,SAC1E/I,KAAKmN,iBAAiBtE,EAAM7I,KAAK8N,UAErC9N,KAAKgM,gBAAgBhM,KAAKiM,cAAe5E,GACrCrH,KAAK7C,aAAuC,UAAxB6C,KAAK9C,gBACzB8C,KAAKkM,mBACLlM,KAAKqM,wBAGLrM,KAAKhD,aAAaC,MAAQ,GAE9BoK,EAAEiM,mBAGVhQ,EAAYpD,UAAUgM,iBAAmB,WACrClM,KAAKhD,aAAaC,MAAQ,GAC1B+C,KAAKmG,sBAET7C,EAAYpD,UAAUiG,mBAAqB,WACnCnG,KAAK7C,aAAuC,UAAxB6C,KAAK9C,eACpB8C,KAAK/C,OAAS+C,KAAK/C,MAAMkB,SAAa,eAAkB6B,KAAK8M,OAAuB,KAAd9M,KAAK8M,KAC5E9M,KAAKhD,aAAaG,YAAc,GAGhC6C,KAAKhD,aAAaG,YAAcQ,EAAkBqC,KAAK7C,aAI3D6C,KAAK0a,oBAET1a,KAAKoR,iBAET9N,EAAYpD,UAAUya,eAAiB,SAAU1d,EAAOuW,EAAKoH,EAAY7d,EAAS8d,GAC9E,IAAIhQ,EAAQ7K,KAAK/C,MAAMsJ,QAAQtJ,GAC3B6d,EAAY9a,KAAK/C,MAAMyO,MAAM,GACjCoP,EAAUrN,OAAO5C,EAAO,GACxB7K,KAAKkG,cAAc,CAAEjJ,MAAO,GAAG8d,OAAO,GAAID,KAAc,GACxD/d,EAAQkJ,aAAa,gBAAiB,SACtC,IAAI5I,EAAY2C,KAAKiF,iBACjB3D,EACA,OAAoB2N,SACxB,gBAAY,CAAClS,GAAUM,GACvB2C,KAAK8J,OAAO,aAAc,CACtBC,OAAQ,oBACR/D,OAAsB,aAAdhG,KAAK0E,KAAqB2F,GAAItN,EACtCsK,EAAGrH,KAAM6K,MAAOA,IAEpB7K,KAAKgb,wBAAwBje,EAASyW,EAAKoH,GAC3C5a,KAAKib,gBAAe,EAAMhe,EAAO4d,GACjC7a,KAAKkb,oBAET5X,EAAYpD,UAAU8a,wBAA0B,SAAUje,EAASyW,EAAKoH,GACpE5a,KAAK8J,OAAO,aAAc,CAAEC,OAAQ,oBAAqB/D,OAAsB,aAAdhG,KAAK0E,KAAqB2F,GAAItN,EAASsK,EAAGmM,IAC3GxT,KAAKqJ,6BACArJ,KAAK/C,OAAS+C,KAAK/C,MAAMkB,SAAW6B,KAAK8N,SAAS3P,QACjC,aAAd6B,KAAK0E,MAAuB1E,KAAK6N,gBAAmB7N,KAAKmb,cAAeP,GAC5E5a,KAAK8J,OAAO,iBAAkB,CAC1BC,OAAQ,oBACR/D,OAAsB,aAAdhG,KAAK0E,KACbzH,MAAO,aAInBqG,EAAYpD,UAAU4L,YAAc,SAAU7O,EAAOuW,EAAKrV,EAAQyc,GAC9D,IAAIpX,EAAQxD,KACR6K,EAAQ7K,KAAK/C,MAAMsJ,QAAQvG,KAAK4L,kBAAkB3O,KACvC,IAAX4N,GAAgB7K,KAAKgF,mBAAqB,eAAkB/H,KAC5D4N,EAAQ7K,KAAK/C,MAAMsJ,QAAQtJ,EAAM4O,aAErC,IAAIuP,EAAY5H,GAAOA,EAAIlT,OAC3Bsa,KAAcA,GAAcQ,GAAaA,EAAUtd,UAAUG,SAAS,oBAA4B,KAClG,IAAIZ,EAAY2C,KAAKiF,iBACjB3D,EACA,OAAoB2N,SACxB,IAAe,IAAXpE,EAAc,CACd,IAAIwQ,EAAYrb,KAAKkK,gBAAgBlK,KAAK6I,KAAM,KAAM,aAAc5L,GAChEqe,EAAQtb,KAAKub,eAAete,GAC5BiL,EAAY,CACZb,EAAGmM,EACH5I,KAAMyQ,EACNG,SAAUF,EACV3F,eAAcnC,EACdnL,QAAQ,GAEZrI,KAAKuI,QAAQ,WAAYL,GAAW,SAAUA,GAC1C,GAAIA,EAAUG,OACV7E,EAAMiY,kBAEL,CACD,IAAIX,EAAYtX,EAAMvG,MAAMyO,MAAM,GAGlC,GAFAoP,EAAUrN,OAAO5C,EAAO,GACxBrH,EAAM0C,cAAc,CAAEjJ,MAAO,GAAG8d,OAAO,GAAID,KAAc,GACvC,OAAdO,EAAoB,CACpB,IAAIK,EAAclY,EAAM0G,gBAAgB1G,EAAMuF,SAAU,KAAM,aAAc9L,GAC5Eoe,EAAUpV,aAAa,gBAAiB,SACxC,gBAAY,CAACoV,GAAYhe,GACrBqe,IACAA,EAAYzV,aAAa,gBAAiB,SAC1C,gBAAY,CAACoV,EAAWK,GAAcre,IAE1CmG,EAAMsG,OAAO,aAAc,CACvBC,OAAQ,oBACR/D,OAAuB,aAAfxC,EAAMkB,KAAqB2F,GAAIgR,EACvChU,EAAG7D,EAAOqH,MAAOA,IAErBrH,EAAMwX,wBAAwBK,EAAW7H,EAAKoH,GAE9CpX,EAAMyB,kBAAoBzB,EAAMkF,OAAOC,SAAW0S,GAClD7X,EAAM8L,cAAcrS,GAEpBuG,EAAMyB,kBAAoBzB,EAAM+V,oBAAsB/V,EAAMkF,OAAOC,SAA0B,aAAfnF,EAAMkB,MACpFlB,EAAM0H,eACN7H,EAAOnD,UAAUyb,WAAWlY,KAAKD,GAErCA,EAAMyX,gBAAe,EAAMhe,GAC3BuG,EAAMoY,WAAW3e,GACjBuG,EAAM0X,mBACN,IAAI1B,EAAQhW,EAAMvG,OAASuG,EAAMvG,MAAMkB,OAASqF,EAAMvG,MAAMkB,OAAS,EACrE,GAAIqb,EAAQhW,EAAMiN,uBAAwB,CACtC,IAAI8F,EAAa/S,EAAMqF,KAAKC,iBAAiB,MACvC,OAAoBuB,GAAK,mBAC/B,gBAAYkM,EAAY,aAE5B/S,EAAM+E,QAAQ,UAAWL,GACzB,IAAI2T,EAAcrI,GAAOA,EAAIsI,cACzBX,KAAeU,IAAeA,EAAY/d,UAAUG,SAAS,wBAAgC,KAQjG,GAPKuF,EAAMsL,cAAiB8L,IAAepH,IAAOrV,GAAWgd,GACzD3X,EAAMuL,iBAAiByE,EAAKhQ,EAAMvG,MAAOuG,EAAMiI,YAE/CtN,IACAqF,EAAMK,mBAAmBsB,KAAKmW,GAC9B9X,EAAMM,kBAAkBqB,KAAKkW,IAElB,IAAXld,EAAc,CACTqF,EAAMsL,cACPtL,EAAMuL,iBAAiByE,EAAKhQ,EAAMvG,MAAOuG,EAAMiI,YAEnD,IAAIpG,EAAO,CACP+C,MAAOoL,EACPuI,MAAOvY,EAAMM,kBACb0X,SAAUhY,EAAMK,mBAChB8R,eAAcnC,EACdwI,WAAW,GAEfxY,EAAM+E,QAAQ,cAAelD,GAC7B7B,EAAMK,mBAAqB,GAC3BL,EAAMM,kBAAoB,IAE1B8W,GAA0B,IAAXzc,GAA2B,OAAXA,GAC/BqF,EAAMyY,iBAAiBzI,EAAKoH,SAMhDtX,EAAYpD,UAAU+a,eAAiB,SAAU7W,EAAOnH,EAAO4d,GAC3D,GAAI7a,KAAKuH,gBAAgC,aAAdvH,KAAK0E,KAAqB,CACjD,IAAIwX,EAAWrB,GACX7a,KAAKkK,gBAAgBlK,KAAK+I,SAAU,KAAM,aAAc9L,GACxDif,IACI9X,GACA8X,EAASjW,aAAa,gBAAiB,SACvC,gBAAY,CAACiW,GAAWlc,KAAKiF,iBACzB3D,EACA,OAAoB2N,UACN,aAAdjP,KAAK0E,MACL,gBAAY,CAACwX,EAASxC,kBAAkBC,kBAAmB,aAI/DuC,EAASjW,aAAa,gBAAiB,QACvC,eAAS,CAACiW,GAAWlc,KAAKiF,iBACtB3D,EACA,OAAoB2N,UACN,aAAdjP,KAAK0E,MACL,eAAS,CAACwX,EAASxC,kBAAkBC,kBAAmB,eAM5ErW,EAAYpD,UAAU0b,WAAa,SAAU3e,GACzC,GAAI+C,KAAKwL,sBAAuB,CAC5B,IAAIzO,EAAUiD,KAAKkK,gBAAgBlK,KAAKwL,sBAAuB,OAAQ,aAAcvO,GACjFF,GACA,eAAOA,KAInBuG,EAAYpD,UAAUic,SAAW,SAAUhH,GAClC,eAAkBA,KACE,kBAAVA,EACPnV,KAAKnD,eAAegK,MAAMsO,MAAQ,eAAWA,GAEvB,kBAAVA,IACZnV,KAAKnD,eAAegK,MAAMsO,MAASA,EAAMjE,MAAM,WAAc,EAAW,cAAD,CAAYiE,MAI/F7R,EAAYpD,UAAUgb,iBAAmB,WACjClb,KAAK/C,OAAS+C,KAAK/C,MAAMkB,QACpB,eAAkB6B,KAAKwL,yBACvBxL,KAAKwL,sBAAsB3E,MAAMC,QAAU,IAE9B,cAAd9G,KAAK0E,MAAsC,aAAd1E,KAAK0E,MAClC1E,KAAK6W,mBAET7W,KAAKqR,qBAGA,eAAkBrR,KAAKwL,yBACxBxL,KAAKwL,sBAAsB3E,MAAMC,QAAU,QAE1C,eAAkB9G,KAAKgX,oBACvBhX,KAAKgX,iBAAiBnQ,MAAMC,QAAU,QAE3C9G,KAAK+Y,qBAGbzV,EAAYpD,UAAUkc,SAAW,SAAUnf,EAAO6P,EAAM0G,GAC/CxT,KAAK/C,QACN+C,KAAK/C,MAAQ,IAEb+C,KAAK/C,MAAMsJ,QAAQtJ,GAAS,GAC5B+C,KAAKkG,cAAc,CAAEjJ,MAAO,GAAG8d,OAAO,GAAI/a,KAAK/C,MAAO,CAACA,MAAW,GAEtE,IAAIF,EAAUiD,KAAKkK,gBAAgBlK,KAAK6I,KAAM,KAAM,aAAc5L,GAClE+C,KAAK6J,cACD9M,IACAiD,KAAKsK,aAAavN,GAClBiD,KAAKqc,iBAAiBtf,IAER,cAAdiD,KAAK0E,MAAsC,aAAd1E,KAAK0E,MAClC1E,KAAKsc,QAAQxP,EAAM7P,EAAOuW,GAE1BxT,KAAKiF,kBAAoBjF,KAAK0I,OAAOC,SACrC3I,KAAKsP,cAAcrS,GAEvB+C,KAAKkb,mBACLlb,KAAK8P,qBAETxM,EAAYpD,UAAU4P,kBAAoB,WACtC,IAAI0J,EAAQxZ,KAAK/C,OAAS+C,KAAK/C,MAAMkB,OAAS6B,KAAK/C,MAAMkB,OAAS,EAClE,GAAIqb,IAAUxZ,KAAKyQ,uBAAwB,CACvC,IAAI8F,EAAavW,KAAK6I,KAAKC,iBAAiB,MACtC,OAAoBuB,GAAK,mBAC/B,eAASkM,EAAY,eAG7BjT,EAAYpD,UAAUqc,eAAiB,SAAUtf,EAAOuW,EAAKzW,EAASyf,EAAcre,GAChF,IAAIqF,EAAQxD,KACR6I,EAAO7I,KAAKmM,SAChB,GAAInM,KAAK0V,aAAe8G,EAAc,CAClC,IAAIC,EAAQzc,KAAKub,eAAete,GAC5BiL,EAAY,CACZb,EAAGmM,EACH5I,KAAM7N,EACNye,SAAUiB,EACV9G,eAAcnC,EACdnL,QAAQ,GAEZrI,KAAKuI,QAAQ,SAAUL,GAAW,SAAUA,GACxC,IAAKA,EAAUG,OAAQ,CAKnB,GAJIlK,IACAqF,EAAMK,mBAAmBsB,KAAKsX,GAC9BjZ,EAAMM,kBAAkBqB,KAAKpI,IAElB,IAAXoB,EAAc,CACd,IAAIkH,EAAO,CACP+C,MAAOoL,EACPuI,MAAOvY,EAAMM,kBACb0X,SAAUhY,EAAMK,mBAChB8R,eAAcnC,EACdwI,WAAW,GAEfxY,EAAM+E,QAAQ,cAAelD,GAC7B7B,EAAMK,mBAAqB,GAE3BL,EAAMwB,kBAAoBxB,EAAMkZ,kBAAoBlZ,EAAM2I,WAAatD,IACvErF,EAAM2I,SAAWtD,GAErBrF,EAAMmZ,8BAA8B1f,EAAOF,EAASyW,GAChDhQ,EAAMyB,kBAAoBzB,EAAM+V,oBAAsB/V,EAAMkF,OAAOC,SAA0B,aAAfnF,EAAMkB,MACpFrB,EAAOnD,UAAUyb,WAAWlY,KAAKD,SAMrDF,EAAYpD,UAAUoc,QAAU,SAAUxP,EAAM7P,EAAOoK,GAC/CrH,KAAKwL,uBACLxL,KAAK4c,QAAQ9P,EAAM7P,EAAOoK,IAGlC/D,EAAYpD,UAAUkU,gBAAkB,WACpC,IAAI7I,EAAWvL,KAAKwL,sBAAsB1C,iBAAiB,QAAUrH,EAAO,IAAMG,GAElF,GADA,gBAAY2J,EAAU3J,GAClB,OAAQ0F,SAER,IADA,IAAIuV,EAAgB7c,KAAKwL,sBAAsB1C,iBAAiB,QAAUnH,EAAWmE,MAAM,KAAK,IACvF+E,EAAQ,EAAGA,EAAQgS,EAAc1e,OAAQ0M,IAC9CgS,EAAchS,GAAOhE,MAAMC,QAAU,QAIjDxD,EAAYpD,UAAU4c,wBAA0B,SAAUzV,GACtD,IAAI0V,EAAW,eAAQ1V,EAAE/G,OAAQ,IAAMmB,GACnCub,EAAYD,EAASve,cAAc,QAAUmD,EAAWmE,MAAM,KAAK,IACnE9F,KAAKoT,UAAYpT,KAAKqT,WACjB0J,EAASjf,UAAUG,SAAS2D,KAC7B5B,KAAKoU,kBACL4I,EAAUnW,MAAMC,QAAU,GAC1BiW,EAASjf,UAAUC,IAAI6D,IAE3B5B,KAAKiJ,eACL5B,EAAEiM,mBAGVhQ,EAAYpD,UAAU+c,cAAgB,SAAUC,GAC5C,IAAIC,GAAgB,EACpB,GAAID,EACA,IACIC,IAAiB,gBAAUD,EAAqBle,UAAgB,OAEpE,MAAOoe,GACHD,GAAgB,EAGxB,OAAOA,GAEX7Z,EAAYpD,UAAU0c,QAAU,SAAUpS,EAAMvN,EAAOoK,GACnD,IAMIgW,EANA7Z,EAAQxD,KACRwb,EAAW,CAAE1O,KAAM7P,EAAOA,MAAOA,GACjCqgB,EAAOtd,KAAKf,cAAc,OAAQ,CAClC5B,UAAWoE,EACX8b,MAAO,CAAE,aAActgB,EAAO,MAASuN,KAGvCgT,EAAcxd,KAAKf,cAAc,OAAQ,CAAE5B,UAAWqE,IACtDsb,EAAYhd,KAAKf,cAAc,OAAQ,CAAE5B,UAAWsE,IAIxD,GAHI3B,KAAK8N,WACL0N,EAAWxb,KAAKub,eAAete,IAE/B+C,KAAKyd,gBAAkB,eAAkBjC,GAAW,CACpD,IAAI7O,EAAa3M,KAAKid,cAAcjd,KAAKyd,eAErCJ,EADA1Q,EACiB,eAAQ,gBAAO3M,KAAKyd,cAAeze,UAAUE,UAAU2G,QAGvD,eAAQ7F,KAAKyd,eAGlC,IAAIC,EAAgBL,EAAe7B,EAAUxb,KAAM,gBAAiBA,KAAK2d,gBAAiB3d,KAAK4d,iBAAkB,KAAMJ,GACvH,GAAIE,GAAiBA,EAAcvf,OAAS,EACxC,IAAK,IAAI4C,EAAI,EAAGA,EAAI2c,EAAcvf,OAAQ4C,IACtCyc,EAAY3f,YAAY6f,EAAc3c,IAG9Cf,KAAKkJ,4BAEAlJ,KAAK6d,oBACVL,EAAY9f,UAAY8M,EAGxBgT,EAAYte,UAAYsL,EAE5B8S,EAAKzf,YAAY2f,GACjB,IAAItV,EAAY,CACZyN,eAActO,EACdmU,SAAUA,EACVnU,EAAGA,EACHyW,SAAU,SAAUC,GAChB,eAAS,CAACT,GAAOS,IAErB1V,QAAQ,GAEZrI,KAAKge,gBAAkBhe,KAAK4V,WAAa5V,KAAK6V,cAC9C7V,KAAKuI,QAAQ,UAAWL,GAAW,SAAUA,GACpCA,EAAUG,SACP,OAAQf,UACRgW,EAAKxf,UAAUC,IAAIwE,GACnB,eAAO,CAACya,GAAYM,GACpBN,EAAUnW,MAAMC,QAAU,OAC1B,OAAa/I,IAAIuf,EAAM,QAAS9Z,EAAMsZ,wBAAyBtZ,KAG/D,OAAazF,IAAIuf,EAAM,YAAa9Z,EAAM4W,UAAW5W,GACjDA,EAAMya,iBACNX,EAAKzf,YAAYmf,IAGzB,OAAajf,IAAIif,EAAW,YAAaxZ,EAAM8W,aAAc9W,GAC7DA,EAAMgI,sBAAsB3N,YAAYyf,IACnC9Z,EAAMsL,cAAgBzH,GACvB7D,EAAMuL,iBAAiB1H,EAAG7D,EAAMvG,MAAOuG,EAAMiI,iBAK7DnI,EAAYpD,UAAUkX,eAAiB,WACnC,IAAIjC,EAAQ,eAAWnV,KAAKke,YAC5B,GAAI/I,EAAM5O,QAAQ,MAAQ,EAAG,CACzB,IAAI4X,EAAcne,KAAK3B,iBAA4B,YAAI4U,WAAWkC,GAAS,IAC3EA,EAAQgJ,EAAWtS,WAAa,KAEpC,OAAOsJ,GAEX7R,EAAYpD,UAAUke,QAAU,WACxBpe,KAAKoT,UAAYpT,KAAKqT,UACtBrT,KAAKqR,oBAGb/N,EAAYpD,UAAUme,SAAW,WACxBre,KAAKkO,aACNlO,KAAK2G,aAAaE,MAAMC,QAAU,SAG1CxD,EAAYpD,UAAUoe,WAAa,SAAU9Q,EAAY9E,GACrD,IAAI6V,GAAU,eAAkB7V,EAAO6V,SACnCC,EAAgB,eAAkB9V,EAAO+V,YAAc/V,EACvDA,EAAO+V,WAQX,OAPAze,KAAK0e,mBAAsC,OAAhBhW,EAAOoE,MAAkC,OAAjBpE,EAAOzL,MAAkB,CACxEyL,OAAQ8V,EAAeG,SAAUJ,EAASxT,eAAgB,CAAE6T,cAAe,iBAC3E,CAAElW,OAAQ,CAAEzL,MAAO,SACvB,eAAO+C,KAAK0e,mBAAoB1e,KAAK0e,mBAAoBhW,GAAQ,GAC/C,aAAd1I,KAAK0E,MACL1E,KAAK8J,OAAO,aAAc,CAAEC,OAAQ,oBAAqB/D,OAAsB,aAAdhG,KAAK0E,KAAqB8I,WAAYA,EAAYgR,cAAeA,IAE/Hxe,KAAK0e,oBAEhBpb,EAAYpD,UAAUqM,YAAc,WAChC,IAAI/I,EAAQxD,KAIZ,GAHKA,KAAK6I,MACNxF,EAAOnD,UAAUyW,OAAOlT,KAAKzD,OAE5BA,KAAKqE,WACD,eAAkBrE,KAAK+F,cAAe,CACvC/G,SAASyJ,KAAK5K,YAAYmC,KAAK+F,cAC/B,IAAI8Y,EAAiB7e,KAAK+F,aAAavH,cAAc,IAAM0E,IACzC,aAAdlD,KAAK0E,OAAwB1E,KAAKuH,gBAAkBsX,GAAkB7e,KAAK8e,eAC3ED,EAAelgB,SACfqB,KAAK8e,aAAe,MAExB,IAAIC,EAAgBrK,SAAS1U,KAAKgf,YAAa,IA6B/C,GA5BAhf,KAAK+F,aAAac,MAAMoY,WAAa,SACjCjf,KAAKkf,iBACLlf,KAAKmf,oBACLJ,GAAiB/e,KAAKof,OAAOhJ,cAEjC,eAAO,CAACpW,KAAK6I,MAAO7I,KAAK+F,cACrB/F,KAAKqf,iBACLrf,KAAKsf,oBACLP,GAAiB/e,KAAKuf,OAAOnJ,cAEf,aAAdpW,KAAK0E,MAAuB1E,KAAK6N,eACjC7N,KAAK8J,OAAO,YAAa,CAAEC,OAAQ,oBAAqB/D,OAAsB,aAAdhG,KAAK0E,OACrEqa,GAAiB/e,KAAKwf,iBAEH,aAAdxf,KAAK0E,MAAwB1E,KAAK6N,eAAmB7N,KAAKkf,gBAAmBlf,KAAKqf,eAIpE,aAAdrf,KAAK0E,MAAwB1E,KAAK6N,gBACvC7N,KAAK8J,OAAO,YAAa,CAAEC,OAAQ,oBAAqB/D,OAAsB,aAAdhG,KAAK0E,OACrEqa,EAAgBrK,SAAS1U,KAAKgf,YAAa,IACvChf,KAAKkf,gBAAkBlf,KAAKof,SAC5BL,GAAiB/e,KAAKof,OAAOhJ,cAE7BpW,KAAKqf,gBAAkBrf,KAAKuf,SAC5BR,GAAiB/e,KAAKuf,OAAOnJ,gBAVjCpW,KAAK8J,OAAO,YAAa,CAAEC,OAAQ,oBAAqB/D,OAAsB,aAAdhG,KAAK0E,OACrEqa,EAAgBrK,SAAS1U,KAAKgf,YAAa,KAY7B,aAAdhf,KAAK0E,KAAqB,CAC1B,IAAIW,EAAO,CACP0E,OAAQ,oBACR/D,OAAsB,aAAdhG,KAAK0E,KACb+a,aAAczf,KAAK+F,cAEnB/F,KAAKuH,iBACLvH,KAAK8J,OAAO,YAAazE,GACzB0Z,GAAiB/e,KAAK0f,iBAE1B,eAAS,CAAC1f,KAAK+F,cAAe,cAET,SAArB/F,KAAKgf,aACLhf,KAAK6I,KAAKhC,MAAM8Y,UAAY,eAAWZ,GACvC/e,KAAK+F,aAAac,MAAM8Y,UAAY,eAAW3f,KAAKgf,cAGpDhf,KAAK6I,KAAKhC,MAAM8Y,UAAY,eAAW3f,KAAKgf,aAEhDhf,KAAKqE,SAAW,IAAI,OAAMrE,KAAK+F,aAAc,CACzCoP,MAAOnV,KAAKoX,iBAAkBwI,WAAY,WAAY3F,SAAU,CAAE4F,EAAG,OAAQC,EAAG,UAChFC,SAAU/f,KAAKnD,eAAgBmjB,UAAW,CAAEH,EAAG,OAAQC,EAAG,QAAUG,QAAS,EAC7E3b,UAAWtE,KAAKsE,UAAW8E,OAAQpJ,KAAKoJ,OACxC8W,MAAO,WACH,GAAI1c,EAAMa,SAAStH,QAAQyS,cAAe,CACtChM,EAAMa,SAAS8b,qBAEf,IAAIC,EAAsB5c,EAAMuC,aAAavH,cAAc,IAAM4E,IAC9C,aAAfI,EAAMkB,MAAuB0b,GAAuBphB,SAASyL,gBAAkB2V,GAC/EA,EAAoBC,OAExB,eAAO7c,EAAMa,SAAStH,WAG9BujB,KAAM,WAEF,GADA9c,EAAMa,SAASiT,oBACV9T,EAAM8F,aAAc,CACrB,IAAIa,EAAY3G,EAAMqF,KAAKrK,cAAc,MACrC2L,IACqB,aAAf3G,EAAMkB,OAAwBlB,EAAM+D,gBAAkB/D,EAAMwB,mBAC7B,KAAjCxB,EAAMgJ,gBAAgB3G,SACtBrC,EAAMuF,SAAWoB,EAAU4D,UAAY5D,EAAU4D,WAAU,GAAQ5D,IAG3E3G,EAAM8F,cAAe,EAEzB9F,EAAMa,SAASkc,mBACM,aAAf/c,EAAMkB,OAAwBlB,EAAM+D,gBAAkB/D,EAAMwB,mBAC7B,KAAjCxB,EAAMgJ,gBAAgB3G,QACtBrC,EAAM+F,eAEV/F,EAAMwG,oBACFxG,EAAM+D,gBACN/D,EAAMsG,OAAO,aAAc,CACvBC,OAAQ,oBAAqB/D,OAAuB,aAAfxC,EAAMkB,KAAqBzH,MAAO,WAGhFujB,mBAAoB,WACd,OAAQlZ,UACT9D,EAAMmE,eAIA,aAAd3H,KAAK0E,MAAuB,OAAQ4C,UAAYtH,KAAKuH,gBACrDvH,KAAK8J,OAAO,kBAAmB,CAAEC,OAAQ,oBAAqB/D,OAAsB,aAAdhG,KAAK0E,OAE/E1E,KAAKqE,SAAS6b,QACdlgB,KAAK+F,aAAac,MAAMoY,WAAa,KAIjD3b,EAAYpD,UAAUif,kBAAoB,WACtC,IAAI9B,EACArd,KAAKof,QACLpf,KAAKof,OAAOzgB,SAEhBqB,KAAKof,OAASpf,KAAKf,cAAc,OACjC,eAAS,CAACe,KAAKof,QAAS3c,GACxB,IAAIge,EAAczgB,KAAKid,cAAcjd,KAAKkf,gBAEtC7B,EADAoD,EACiB,eAAQ,gBAAOzgB,KAAKkf,eAAgBlgB,UAAUE,UAAU2G,QAGxD,eAAQ7F,KAAKkf,gBAGlC,IAAI3T,EAAW8R,EAAe,GAAIrd,KAAM,iBAAkBA,KAAK0gB,iBAAkB1gB,KAAK4d,iBAAkB,KAAM5d,KAAKof,QAC/G7T,GAAYA,EAASpN,OAAS,GAC9B,eAAOoN,EAAUvL,KAAKof,QAER,aAAdpf,KAAK0E,MAAuB1E,KAAK6N,cACjC,eAAQ,CAAC7N,KAAKof,QAASpf,KAAK+F,cAG5B,eAAO,CAAC/F,KAAKof,QAASpf,KAAK+F,cAE/B,OAAahI,IAAIiC,KAAKof,OAAQ,YAAapf,KAAK2gB,gBAAiB3gB,OAErEsD,EAAYpD,UAAUof,kBAAoB,WACtC,IAAIjC,EACArd,KAAKuf,QACLvf,KAAKuf,OAAO5gB,SAEhBqB,KAAKuf,OAASvf,KAAKf,cAAc,OACjC,eAAS,CAACe,KAAKuf,QAAS/c,GACxB,IAAIoe,EAAc5gB,KAAKid,cAAcjd,KAAKqf,gBAEtChC,EADAuD,EACiB,eAAQ,gBAAO5gB,KAAKqf,eAAgBrgB,UAAUE,UAAU2G,QAGxD,eAAQ7F,KAAKqf,gBAGlC,IAAI9T,EAAW8R,EAAe,GAAIrd,KAAM,iBAAkBA,KAAK6gB,iBAAkB7gB,KAAK4d,iBAAkB,KAAM5d,KAAKuf,QAC/GhU,GAAYA,EAASpN,OAAS,GAC9B,eAAOoN,EAAUvL,KAAKuf,QAE1B,eAAO,CAACvf,KAAKuf,QAASvf,KAAK+F,cAC3B,OAAahI,IAAIiC,KAAKuf,OAAQ,YAAavf,KAAK2gB,gBAAiB3gB,OAErEsD,EAAYpD,UAAU4gB,SAAW,SAAUzZ,GACvC,GAAIrH,KAAKoT,UAAYpT,KAAKqT,SAAU,CAChC,IAAIpD,OAAO,EACX,GAAIjQ,KAAK/C,OAAS+C,KAAK/C,MAAMkB,OAAS,EAAG,CACrC,IAAIiS,EAAYpQ,KAAK6I,MAAQ7I,KAAK6I,KAAKC,iBAAiB,kBACxD,GAAIsH,GAAaA,EAAUjS,OAAS,EAChC6B,KAAK+gB,gBAAe,EAAO1Z,QAI3B,IADArH,KAAKyb,YAAc,EACdxL,EAAOjQ,KAAK/C,MAAM+C,KAAKyb,aAAczb,KAAKyb,YAAczb,KAAK/C,MAAMkB,OAAQ8R,EAAOjQ,KAAK/C,MAAM+C,KAAKyb,aACnGzb,KAAK8L,YAAYmE,EAAM5I,EAAG,MAAM,GAGxCrH,KAAKghB,kBAAoB,KACzBhhB,KAAKhD,aAAaY,gBAAgB,8BAGlCoC,KAAKic,iBAAiB5U,KAIlC/D,EAAYpD,UAAU+b,iBAAmB,SAAU5U,EAAGuT,GAClD,IAAInP,EAAazL,KAAK/C,MAAQ+C,KAAK/C,MAAMyO,QAAU,GACnD,GAAI1L,KAAK+I,UAAY/I,KAAKmM,WAAcnM,KAAKuH,gBAAgC,aAAdvH,KAAK0E,MAAwB1E,KAAKgF,kBAAmB,CAChH,IAAI6D,EAAO7I,KAAK+I,SAASgF,UAAY/N,KAAK+I,SAASgF,WAAU,GAAQ/N,KAAK+I,SAC1E/I,KAAKmN,iBAAiBtE,EAAM7I,KAAK8N,UAErC9N,KAAKwI,uBACLxI,KAAKgM,gBAAgBhM,KAAKiM,cAAe5E,GACvB,QAAdrH,KAAK0E,MAAoB1E,KAAKkO,YAA4B,aAAdlO,KAAK0E,MACjD1E,KAAKiU,kBAEuB,KAA5BjU,KAAKhD,aAAaC,QAClB+C,KAAKkM,mBACLlM,KAAKsR,OAAO,OAEhBtR,KAAKqM,uBACDrM,KAAKkL,eACLlL,KAAKiJ,eAEJjJ,KAAKkO,aACFlO,KAAK8O,cACL9O,KAAK+O,iBAAiB1H,EAAGrH,KAAK/C,MAAOwO,GAEvB,aAAdzL,KAAK0E,MACL1E,KAAKhD,aAAa4K,SAGR,aAAd5H,KAAK0E,OACL1E,KAAKmG,qBACLnG,KAAKqU,oBACDrU,KAAK8O,cAAgB8L,IAAe,eAAkB5a,KAAK/C,QAAgC,IAAtB+C,KAAK/C,MAAMkB,SAChF6B,KAAK+O,iBAAiB1H,EAAGrH,KAAK/C,MAAO+C,KAAKyL,aAG7CzL,KAAK8O,eAAgB8L,IAAe,eAAkB5a,KAAK/C,QAAgC,IAAtB+C,KAAK/C,MAAMkB,QACjF6B,KAAK+O,iBAAiB1H,EAAGrH,KAAK/C,MAAO+C,KAAKyL,YAE5B,aAAdzL,KAAK0E,MAAuB1E,KAAK4E,sBAAwB,eAAkB5E,KAAK0I,OAAOC,UACvF3I,KAAK4I,gBAAgB5I,KAAK6I,KAAKC,iBAAiB,kBAAmB9I,KAAK+I,SAASD,iBAAiB,mBAEtGzB,EAAEiM,kBAENhQ,EAAYpD,UAAU+gB,aAAe,WACjCjhB,KAAKiJ,eACCjJ,KAAKkO,YAA4B,aAAdlO,KAAK0E,OAAwB1E,KAAK8W,cAAe9W,KAAK8W,YAAYtH,eACvFxP,KAAKiU,mBAGb3Q,EAAYpD,UAAUghB,kBAAoB,SAAU7Z,GAChD,IAAI8Z,EAAc,eAAQnhB,KAAKhD,aAAc,QAC7C,GAAImkB,GAAe9Z,EAAE/G,SAAW6gB,EAAa,CACzC,IAAIC,EAAWphB,KAAKjD,QAAQskB,UAAYrhB,KAAKkT,iBACzC,KAAOlT,KAAKjD,QAAQS,aAAa,sBACrCwC,KAAK8M,KAAOsU,IAGpB9d,EAAYpD,UAAUohB,UAAY,WAC9B,OAAavjB,IAAIiC,KAAK3B,iBAAkB,YAAa2B,KAAKmT,aAAcnT,MACxE,OAAajC,IAAI0J,OAAQ,SAAUzH,KAAKihB,aAAcjhB,MACtD,OAAajC,IAAIiC,KAAKhD,aAAc,QAASgD,KAAK4W,eAAgB5W,MAClE,OAAajC,IAAIiC,KAAKhD,aAAc,UAAWgD,KAAK+X,UAAW/X,MAC/D,OAAajC,IAAIiC,KAAKhD,aAAc,QAASgD,KAAK6Q,MAAO7Q,MACvC,aAAdA,KAAK0E,MACL,OAAa3G,IAAIiC,KAAKhD,aAAc,QAASgD,KAAKuhB,QAASvhB,MAE/D,OAAajC,IAAIiC,KAAKhD,aAAc,OAAQgD,KAAKuT,cAAevT,MAChE,OAAajC,IAAIiC,KAAK3B,iBAAkB,YAAa2B,KAAKoe,QAASpe,MACnE,IAAImhB,EAAc,eAAQnhB,KAAKhD,aAAc,QACzCmkB,GACA,OAAapjB,IAAIojB,EAAa,QAASnhB,KAAKkhB,kBAAmBlhB,MAEnE,OAAajC,IAAIiC,KAAK3B,iBAAkB,WAAY2B,KAAKqe,SAAUre,MACnE,OAAajC,IAAIiC,KAAK2G,aAAc,UAAW3G,KAAK8gB,SAAU9gB,MAC9D,OAAajC,IAAIiC,KAAKhD,aAAc,QAASgD,KAAKwhB,aAAcxhB,OAEpEsD,EAAYpD,UAAUqhB,QAAU,SAAUla,GAClCrH,KAAKkE,cACLlE,KAAK4D,YAAa,EAGlB5D,KAAK4D,YAAa,EAEtB5D,KAAKkE,eAAgB,EAEjB,OAAQoD,UAAkC,YAAtB,OAAQma,KAAKzZ,MACjChI,KAAKsR,OAAOjK,IAGpB/D,EAAYpD,UAAUshB,aAAe,SAAUpZ,GAC3C,IAAI5E,EAAQxD,KACZ+W,YAAW,WACPvT,EAAM4N,gBACN5N,EAAM8N,OAAOlJ,OAGrB9E,EAAYpD,UAAUoR,OAAS,SAAUjK,GACrC,IAAI7D,EAAQxD,KASZ,GARAA,KAAKgE,mBAAoB,EACpB,eAAkBqD,KACnBrH,KAAKqO,QAAUhH,EAAEgH,UAEhBrO,KAAKkL,eAAiBlL,KAAK2Q,aAC5B3Q,KAAK4Q,UAAUvJ,GAEnBrH,KAAK0Q,UAAUrJ,IACXrH,KAAKuX,mBAAsBvX,KAAKuH,gBAAmB,eAAkBF,IAAqB,IAAdA,EAAEgH,QAG7E,CACD,IAAIvB,EAAO9M,KAAKwM,gBAChB,GAAIxM,KAAKuH,eAAgB,CACrB,IAAIma,EAAc,CACdC,sBAAsB,EACtB7U,KAAM9M,KAAKwM,gBACXoV,WAAY,SAAUpU,EAAYP,EAAOvE,GACjCgZ,EAAYrZ,SAGhB7E,EAAMgO,YAAa,EACnBhO,EAAMiO,oBAAqB,EAC3BjO,EAAMkO,YAAYlE,EAAYP,EAAOvE,KAEzCN,MAAOf,EACPgB,QAAQ,GAEZrI,KAAKuI,QAAQ,YAAamZ,GAAa,SAAUxZ,GACxCA,EAAUG,QACN7E,EAAMgO,YAAetJ,EAAUyZ,uBAChCne,EAAMqO,cAAe,EACrBrO,EAAMkO,YAAYlO,EAAMgK,WAAY,KAAMhK,EAAMkF,iBAK3D,GAAI1I,KAAKgF,iBAAkB,CAC5B,IAAIiI,EAAQ,IAAI,OAChBA,EAAkB,KAATH,EAAeG,EAAMC,MAAMlN,KAAK0I,OAAOoE,KAAM,aAAcA,EAAM9M,KAAK2K,WAAY3K,KAAKkS,cAAgBjF,EAChHjN,KAAK0R,YAAY1R,KAAK8N,SAAUb,EAAOjN,KAAK0I,YAE3C,CACD,IAAIgC,EAAgB1K,KAAK6I,KAAKC,iBAAiB,MAAQ,OAAoBuB,GAAK,0BAC5EI,EAAgB,eAAOzK,KAAKwM,gBAAiB9B,EAAe,aAAc1K,KAAK2K,YAC/EF,GAAwC,OAAvBA,EAAcG,MAC/B5K,KAAKsK,aAAaG,EAAcG,MAChC5K,KAAK6I,KAAKuQ,UACN3O,EAAcG,KAAKwL,aAAe3L,EAAcI,OAEtB,KAAzB7K,KAAKwM,gBACVxM,KAAK6J,cAGL7J,KAAKwI,6BA7CbxI,KAAKwI,wBAkDblF,EAAYpD,UAAU2hB,UAAY,WACF,OAAxB7hB,KAAKuH,iBACLvH,KAAKuH,eAAgC,aAAdvH,KAAK0E,MAEhC1E,KAAK8hB,iBACL9hB,KAAK+hB,oBAAoB/hB,KAAKwF,gBAC9BnC,EAAOnD,UAAU2hB,UAAUpe,KAAKzD,OAEpCsD,EAAYpD,UAAU8hB,cAAgB,WAClC,MAAO,gBAEX1e,EAAYpD,UAAU4hB,eAAiB,WACnC9hB,KAAKgO,mBAAqB,GAC1BhO,KAAKgP,iBAAkB,EACvBhP,KAAK6R,cAAe,EACpB7R,KAAKyR,oBAAqB,EAC1BzR,KAAKsJ,cAAe,EACpBtJ,KAAKmX,WAAY,EACjBnX,KAAKwR,YAAa,EAClBxR,KAAKmU,SAAU,EACfnU,KAAKiiB,SAAU,EACfjiB,KAAKoS,aAAc,GAEvB9O,EAAYpD,UAAU0hB,WAAa,SAAU3V,EAAe5E,GACxD,IAGI4I,EAHAzF,EAAO,GACP0X,EAAsB,cAAdliB,KAAK0E,MAAsC,aAAd1E,KAAK0E,KAC1CoI,EAAO,GAEP8F,EAAW5S,KAAKmM,SAKpB,GAJAnM,KAAKmM,SAAWnM,KAAK8N,SAChB,eAAkB9N,KAAKwG,iBACxBxG,KAAKwG,cAActH,UAAY,KAE9B,eAAkBc,KAAK/C,OAAQ,CAGhC,IAFA,IAAIklB,EAAcniB,KAAK/C,MAAMkB,OACzBikB,EAAuB,GAClBvX,EAAQ,EAAGA,EAAQsX,EAAatX,IAAS,CAC9C,IAAIwX,EAAYriB,KAAK/C,MAAM4N,GACvByX,EAAYtiB,KAAKkK,gBAAkB,eAAkBlK,KAAK+I,UAA4B/I,KAAKmK,UAArBnK,KAAK+I,SAA4B,KAAM,aAAcsZ,GAC3H,eAAkBC,KAAetiB,KAAKgF,kBACtChF,KAAK/C,MAAMwQ,OAAO5C,EAAO,GACzBA,GAAS,EACTsX,GAAe,IAIXlS,EADAjQ,KAAKmM,SACEnM,KAAKuiB,eAAeF,GAGpBA,EAEX7X,GAAQyF,EAAOhE,EAAgB,IAC/Ba,EAAK3H,KAAK8K,IAEdmS,GAAwB,2BAA8BC,EAAY,KAAQxX,EAAQ,YAEjF,eAAkB7K,KAAKwG,iBACxBxG,KAAKwG,cAActH,UAAYkjB,GAGvCpiB,KAAKkG,cAAc,CAAE4G,KAAMA,EAAKjB,aAAc,GAC1CqW,IACAliB,KAAKwiB,kBAAkBxiB,KAAKgX,iBAAkBxM,GAC9CxK,KAAKgX,iBAAiB/Q,aAAa,KAAM,eAAY,cACrDjG,KAAKhD,aAAaiJ,aAAa,mBAAoBjG,KAAKgX,iBAAiBzZ,IACzEyC,KAAKhD,aAAaiJ,aAAa,kBAAmBjG,KAAKgX,iBAAiBzZ,KAE5E,IAAI6d,EAAY/T,GAAKA,EAAE/G,OACnBsa,KAAcQ,IAAaA,EAAUtd,UAAUG,SAAS,oBAA4B,OACnF+B,KAAK8O,cAAkBzH,IAAMuT,GAAgB5a,KAAKmb,eACnDnb,KAAKmb,aAAc,EACnBnb,KAAK+O,iBAAiB1H,EAAGrH,KAAK/C,MAAO+C,KAAKyL,aAE9CzL,KAAKmM,SAAWyG,EAChB5S,KAAKyiB,sBAETnf,EAAYpD,UAAUyO,kBAAoB,WACtC,GAAK,eAAkB3O,KAAK8M,MAiBxB9M,KAAKkG,cAAc,CAAEjJ,MAAO,OAAQ,OAjBL,CAG/B,IAFA,IAAIylB,EAAU1iB,KAAK8M,KAAKhH,MAAM9F,KAAKiM,eAC/BmV,EAAU,GACLvW,EAAQ,EAAG6X,EAAQvkB,OAAS0M,EAAOA,IAAS,CACjD,IAAI8X,EAAM3iB,KAAKuS,eAAemQ,EAAQ7X,IACjC,eAAkB8X,GAGd3iB,KAAKgF,kBACVoc,EAAQjc,KAAKud,EAAQ7X,IAHrBuW,EAAQjc,KAAKwd,GAMjBvB,GAAWA,EAAQjjB,QACnB6B,KAAKkG,cAAc,CAAEjJ,MAAOmkB,IAAW,KAOnD9d,EAAYpD,UAAU0iB,WAAa,SAAUC,IACpCA,GAAe7iB,KAAKgF,kBAAoBhF,KAAK6I,OAAS7I,KAAK6I,KAAK+Q,cAAgB5Z,KAAK8iB,mBACnF9iB,KAAK6I,KAAKrK,cAAc,UAAmE,IAAvDwB,KAAK6I,KAAKrK,cAAc,SAASukB,qBACxEF,GAAc,GAElBxf,EAAOnD,UAAUyW,OAAOlT,KAAKzD,KAAM,KAAM6iB,GACzC7iB,KAAKsO,mBACLtO,KAAKuO,kBAETjL,EAAYpD,UAAU0O,mBAAqB,WACvC,GAAI5O,KAAK6I,KAAM,CACX,IAAIiE,OAAO,EACP/P,OAAU,EACVE,OAAQ,EAKZ,GAJI+C,KAAKwL,wBACLxL,KAAKwL,sBAAsBtM,UAAY,IAE3Cc,KAAKgjB,uBACA,eAAkBhjB,KAAK/C,OACxB,IAAK,IAAI4N,EAAQ,GAAI,eAAkB7K,KAAK/C,MAAM4N,IAASA,IAIvD,GAHA5N,EAAQ+C,KAAK/C,MAAM4N,GACnB9N,EAAUiD,KAAKkK,gBAAgBlK,KAAKiF,iBAAmBjF,KAAKmK,UAAYnK,KAAK6I,KAAM,KAAM,aAAc5L,GACvG6P,EAAO9M,KAAKuiB,eAAetlB,GACtBF,GAAsD,SAA1CA,EAAQS,aAAa,kBACjCT,GAAsD,SAA1CA,EAAQS,aAAa,kBAA+BwC,KAAKiF,mBACnD,QAAdjF,KAAK0E,MAAgC,YAAd1E,KAAK0E,MACjC1E,KAAKsc,QAAQxP,EAAM7P,GACnB+C,KAAKqc,iBAAiBtf,QAErB,GAAIE,GAAS+C,KAAKgF,iBAAkB,CACrC,IAAIie,EAAYjjB,KAAKmM,SAAShO,OAC1BkX,EAAW,GACf,gBAASrV,KAAK0I,OAAOoE,KAAM7P,EAAOoY,GAClC,gBAASrV,KAAK0I,OAAOzL,MAAOA,EAAOoY,GACnC,IAAI6N,EAAYljB,KAAK+F,aAAavH,cAAc,IAAM,OAAoBkR,QAC1E1P,KAAKmjB,QAAQ9N,EAAU4N,GACvBlmB,EAAUA,GAAoBiD,KAAKkK,gBAAgBlK,KAAKiF,iBAAmBjF,KAAKmK,UAAYnK,KAAK6I,KAAM,KAAM,aAAc5L,GACvH+C,KAAK+F,aAAa9H,SAASilB,KAC3BljB,KAAK6I,KAAK5C,aAAa,QAASid,EAAU1lB,aAAa,UACvDwC,KAAK+F,aAAaqd,aAAapjB,KAAK6I,KAAMqa,GAC1CljB,KAAKuO,kBAETvO,KAAKsc,QAAQxP,EAAM7P,GACnB+C,KAAKqc,iBAAiBtf,GAIhB,aAAdiD,KAAK0E,MACL1E,KAAKiU,kBACDjU,KAAK8O,cACL9O,KAAK+O,iBAAiB,KAAM/O,KAAK/C,MAAO+C,KAAKyL,YAEjDzL,KAAKgM,gBAAgBhM,KAAKiM,eAC1BjM,KAAKqU,qBAGLrU,KAAKgM,gBAAgBhM,KAAKiM,eAEZ,aAAdjM,KAAK0E,OAAuB1E,KAAK6N,gBAAkB,eAAkB7N,KAAK/C,QAAW+C,KAAK/C,MAAMkB,QAChG6B,KAAK8J,OAAO,iBAAkB,CAAEC,OAAQ,oBAAqB/D,OAAsB,aAAdhG,KAAK0E,KAAqBzH,MAAO,YAExF,QAAd+C,KAAK0E,MAAiC,YAAd1E,KAAK0E,MAAsB1E,KAAKkO,WACxDlO,KAAKwL,sBAAsB3E,MAAMC,QAAU,GAExB,cAAd9G,KAAK0E,MAAsC,aAAd1E,KAAK0E,MACvC1E,KAAK6W,qBAKjBvT,EAAYpD,UAAUmjB,yBAA2B,SAAUhZ,EAAIO,GACvD5K,KAAK/C,OAAS+C,KAAK/C,MAAMsJ,QAAQ8D,EAAG7M,aAAa,gBAAkB,IACnEwC,KAAK+I,SAAW/I,KAAKmK,UACjBnK,KAAKiF,kBACL,eAAS,CAACoF,GAAK/I,KAK3BgC,EAAYpD,UAAUojB,kBAAoB,SAAUza,EAAM0a,GAClDvjB,KAAKqE,UAAYrE,KAAKqE,SAAStH,SAAWiD,KAAKqE,SAAStH,QAAQyB,cAAc,IAAM,OAAoBkR,SAAW7G,GACnH7I,KAAK6I,KAAOA,EACZ7I,KAAK+I,SAAW/I,KAAKmK,UAAYtB,EAAKrK,cAAc,MACpD,eAAOwB,KAAK+F,aAAavH,cAAc,eACvCwB,KAAKqE,SAAW,KAChBrE,KAAKuM,eAEAvM,KAAKgF,mBACVhF,KAAK6I,KAAOA,EACZ7I,KAAK+I,SAAW/I,KAAKmK,UAAYtB,EAAKrK,cAAc,QAG5D8E,EAAYpD,UAAU8T,eAAiB,WACnC,GAAIhU,KAAK+I,UAAY/I,KAAKmK,aAAenK,KAAKwR,YAAcxR,KAAK6R,cAAgB7R,KAAKwM,gBAAgB3G,QAAS,CAC3G,IAAI2d,EAA2BxjB,KAAK+I,SAASga,kBAAoB/iB,KAAKmK,UAAU4Y,kBAC5EU,EAA0BzjB,KAAKmK,UAAU4Y,kBAAoB,GAAK/iB,KAAKmK,UAAU/K,SAAS,GAAG2jB,kBAAoB,GAAO/iB,KAAK+I,SAAS3J,SAAS,GAAG2jB,kBAAoB/iB,KAAKmK,UAAU/K,SAAS,GAAG2jB,kBACjMW,EAA0B1jB,KAAK2jB,cAAgB3jB,KAAKmK,UAAU4Y,kBAAoB,KAAO/iB,KAAKmK,UAAU4Y,kBAAoB/iB,KAAK+I,SAASga,qBAAuB/iB,KAAKmK,UAAU/K,SAAS,GAAG2jB,kBAAoB,GAAM/iB,KAAK0I,OAAOC,SAAW3I,KAAKmK,UAAU/K,SAAS,IAAMY,KAAKmK,UAAU/K,SAAS,GAAG2jB,kBAAoB,IAC1TS,GAA4BC,GAAyBC,KAErD1jB,KAAK+I,SAAW/I,KAAKmK,aAIjC7G,EAAYpD,UAAUuZ,UAAY,SAAUpP,GACxC,OAAQA,IAAOA,EAAGvM,UAAUG,SAAS,OAAoB2lB,YAAcvZ,EAAGvM,UAAUG,SAAS,OAAoBmR,QAC7G/E,EAAGvM,UAAUG,SAAS,OAAoBoM,KAElD/G,EAAYpD,UAAU6T,oBAAsB,SAAU1J,EAAIhD,EAAGlJ,GACzD,IAAIsc,EAAYpQ,EAAG7M,aAAa,cAC5BP,EAAQ+C,KAAK4L,kBAAkB6O,GAC/Bza,KAAKgF,mBAAoC,UAAdyV,IAAmC,IAAVxd,IAClD,eAAkBA,IAA+B,QAArBA,EAAM4O,cACpC5O,EAAQwd,GAEZza,KAAK6jB,cACA7jB,KAAK/C,QAAwC,IAA/B+C,KAAK/C,MAAMsJ,QAAQtJ,GAIlC+C,KAAK8L,YAAY7O,EAAOoK,EAAGlJ,GAH3B6B,KAAKuc,eAAetf,EAAOoK,EAAGgD,EAA0C,SAArCA,EAAG7M,aAAa,iBAA8BW,IAMzFmF,EAAYpD,UAAUyc,8BAAgC,SAAU1f,EAAOoN,EAAIhD,GACvE,IAAI7D,EAAQxD,KACR8M,EAAO9M,KAAKuiB,eAAetlB,GAC/B,IAAK+C,KAAKgF,mBAAoBhF,KAAKuH,gBAAoBvH,KAAKkK,gBAAgBlK,KAAK+I,SAAU,KAAM,aAAc9L,GAqB3G+C,KAAKiO,mBAAoB,EACzBjO,KAAKoc,SAASnf,EAAO6P,EAAMzF,OAtBwF,CACnH,IAAIyc,EAASzZ,EAAG0D,WAAU,GACtBgW,EAAa/jB,KAAK0I,OAAOzL,MAAQ+C,KAAK0I,OAAOzL,MAAQ,QACrD+C,KAAKgF,kBAAoBhF,KAAK8N,SAAS3P,QAA4D,kBAA3C,eAAS4lB,EAAY/jB,KAAK8N,SAAS,MAC3F7Q,EAAS+V,MAAMC,WAAWhW,EAAM4O,aAA8C5O,EAA/BgW,WAAWhW,EAAM4O,aAEpE,IAAImY,EAAShkB,KAAKub,eAAete,GAC7BiL,EAAY,CACZ+b,QAASD,EACT3b,QAAQ,GAEZrI,KAAKuI,QAAQ,uBAAwBL,GAAW,SAAUA,GACjDA,EAAUG,SACX,eAAO,CAACyb,GAAStgB,EAAMuF,UACvBvF,EAAMsK,SAAS3I,KAAK6e,GACpBxgB,EAAMyK,mBAAoB,EAC1BzK,EAAM4Y,SAASnf,EAAO6P,EAAMzF,SAS5C/D,EAAYpD,UAAU8iB,oBAAsB,WACxC,IAAI3lB,EAAY2C,KAAKiF,iBACjB3D,EACA,OAAoB2N,SACpBiV,EAAgBlkB,KAAK6I,KAAKC,iBAAiB,IAAMzL,GACjD4S,EAAOiU,EAAc/lB,OACzB,GAAI+lB,GAAiBA,EAAc/lB,OAAQ,CACvC,gBAAY+lB,EAAe7mB,GAC3B,MAAO4S,EAAO,EACViU,EAAcjU,EAAO,GAAGhK,aAAa,gBAAiB,SACtDgK,IAGR,IAAK,eAAkBjQ,KAAK+I,UAAW,CACnC,IAAIob,EAAcnkB,KAAK+I,SAASD,iBAAiB,IAAMzL,GACnD6S,EAAQiU,EAAYhmB,OACxB,GAAIgmB,GAAeA,EAAYhmB,OAAQ,CACnC,gBAAYgmB,EAAa9mB,GACzB,MAAO6S,EAAQ,EACXiU,EAAYjU,EAAQ,GAAGjK,aAAa,gBAAiB,SACnC,aAAdjG,KAAK0E,OACDwf,GAAkBA,EAAc/lB,OAAU+R,EAAQ,GAClD,gBAAY,CAACgU,EAAchU,EAAQ,GAAGwJ,kBAAkBC,kBAAmB,WAE/E,gBAAY,CAACwK,EAAYjU,EAAQ,GAAGwJ,kBAAkBC,kBAAmB,YAE7EzJ,OAKhB5M,EAAYpD,UAAU2jB,YAAc,WAChC,IAAIO,EAAcpkB,KAAK6I,KAAKC,iBAAiB,IAAM,OAAoBub,OACnED,GAAeA,EAAYjmB,QAC3B,gBAAYimB,EAAa,OAAoBC,QAGrD/gB,EAAYpD,UAAU2J,YAAc,WAChC,GAAI7J,KAAK6I,MAAQ7I,KAAK+I,SAAU,CAC5B,IAAIqb,EAAcpkB,KAAK6I,KAAKC,iBAAiB,IAAM,OAAoBlB,OACnE0c,EAAWtkB,KAAK+I,SAASD,iBAAiB,IAAM,OAAoBlB,OACpEwc,GAAeA,EAAYjmB,SAC3B,gBAAYimB,EAAa,OAAoBxc,OAC7C,gBAAY0c,EAAU,OAAoB1c,UAItDtE,EAAYpD,UAAUqkB,aAAe,SAAUla,IACvCrK,KAAKoT,SAAWpT,KAAKyZ,UAAUpP,IAKnB,OAAPA,GAAeA,EAAGvM,UAAUG,SAAS,sBAAyB+B,KAAK4E,qBAAqC,aAAd5E,KAAK0E,OAC5F,eAAkB1E,KAAK0I,OAAOC,YALtC3I,KAAK6jB,cACL,eAAS,CAACxZ,GAAK,OAAoBga,SAU3C/gB,EAAYpD,UAAUoK,aAAe,SAAUvN,GACvCiD,KAAKoT,SAAWpT,KAAKyZ,UAAU1c,IAC/BiD,KAAK6J,cACL,eAAS,CAAC9M,GAAU,OAAoB6K,OACxC5H,KAAKqJ,8BAGDrJ,KAAK4E,qBAAqC,aAAd5E,KAAK0E,OAAwB,eAAkB1E,KAAK0I,OAAOC,WACvF,eAAS,CAAC5L,GAAU,OAAoB6K,OACxC5H,KAAKqJ,+BAIjB/F,EAAYpD,UAAUmc,iBAAmB,SAAUtf,EAAS8d,GACxD,IAAIxd,EAAY2C,KAAKiF,iBACjB3D,EACA,OAAoB2N,SACxB,GAAIjP,KAAKyZ,UAAU1c,KAAaA,EAAQe,UAAUG,SAAS,OAAoBomB,OAAQ,CAInF,GAHA,eAAS,CAACtnB,GAAUM,GACpB2C,KAAKib,gBAAe,EAAOle,EAAQS,aAAa,cAAeqd,GAC/D9d,EAAQkJ,aAAa,gBAAiB,QACpB,aAAdjG,KAAK0E,MAAuB3H,EAAQe,UAAUG,SAAS,YAAa,CACpE,IAAIumB,EAAYznB,EAAQ6S,uBAAuB,WAAWzR,OACxC,IAAdqmB,GACAxkB,KAAK8J,OAAO,aAAc,CAAEC,OAAQ,oBAAqB/D,OAAsB,aAAdhG,KAAK0E,KAAqB2F,GAAItN,EAASsK,EAAGrH,OAGnHA,KAAK8J,OAAO,aAAc,CAAEC,OAAQ,oBAAqB/D,OAAsB,aAAdhG,KAAK0E,KAAqB2F,GAAItN,EAASsK,EAAGrH,OACvGA,KAAKwL,uBACLxL,KAAK+L,sBAET/L,KAAKghB,kBAAoBjkB,EAAQQ,KAGzC+F,EAAYpD,UAAU8L,gBAAkB,SAAUyY,EAAWpd,GACzDrH,KAAK4hB,WAAW6C,EAAWpd,IAE/B/D,EAAYpD,UAAUwkB,aAAe,SAAUrd,GAC3C,IAAI7D,EAAQxD,KACZA,KAAKqO,QAAU,KACfrO,KAAKiE,mBAAoB,EACzB,IAAI3D,EAAS+G,EAAE/G,OACX+J,EAAK,eAAQ/J,EAAQ,IAAM,OAAoB+J,IAC/Csa,EAAW,eAAQrkB,EAAQ,IAAM,OAAoB8O,OACzD,GAAIuV,GAAY3kB,KAAK4E,qBAAqC,aAAd5E,KAAK0E,MAAuB1E,KAAK0I,OAAOC,QAChFrI,EAASA,EAAOxC,UAAUG,SAAS,qBAAuBqC,EAAOoZ,kBAAkBC,iBAC7EtS,EAAE/G,OACJA,EAAOxC,UAAUG,SAAS,YAC1B+B,KAAK6Z,eAAc,EAAOxS,GAC1B/G,EAAOxC,UAAUa,OAAO,WACxB2B,EAAOxC,UAAUa,OAAO,UACxB,eAAQ2B,EAAQ,sBAA2BxC,UAAUa,OAAO,YAC5D2B,EAAO2F,aAAa,gBAAiB,WAGrCjG,KAAK6Z,eAAc,EAAMxS,GACzB/G,EAAOxC,UAAUa,OAAO,UACxB2B,EAAOxC,UAAUC,IAAI,WACrB,eAAQuC,EAAQ,sBAA2BxC,UAAUC,IAAI,YACzDuC,EAAO2F,aAAa,gBAAiB,SAEzCjG,KAAKoM,mBACLpM,KAAK6P,qBAEJ,CACD,GAAI7P,KAAKyZ,UAAUpP,GAAK,CACpB,IAAImP,EAAQxZ,KAAK/C,OAAS+C,KAAK/C,MAAMkB,OAAS6B,KAAK/C,MAAMkB,OAAS,EAC9DkM,EAAGvM,UAAUG,SAAS,cACtBub,GAAgB,GAEhBA,EAAQxZ,KAAKyQ,yBACbzQ,KAAK+T,oBAAoB1J,EAAIhD,GAC7BrH,KAAKqM,uBACLrM,KAAKsK,aAAaD,IACbrK,KAAKgF,kBAAoBhF,KAAKuH,iBAAmBvH,KAAK+I,UAAY/I,KAAKmM,SACtD,aAAdnM,KAAK0E,OACL1E,KAAKuK,oBAAoBF,EAAG7M,aAAa,eACzCwC,KAAKoM,oBAITpM,KAAKkM,oBAGK,aAAdlM,KAAK0E,MACL1E,KAAKiU,kBACDjU,KAAK/C,OAAS+C,KAAK/C,MAAMkB,OAAS,GAClC4Y,YAAW,WACPvT,EAAMwI,gBAAgBxI,EAAMyI,cAAe5E,KAC5C,GAGHrH,KAAKgM,gBAAgBhM,KAAKiM,cAAe5E,GAE7CrH,KAAKqU,qBAGLrU,KAAKgM,gBAAgBhM,KAAKiM,cAAe5E,GAE7CrH,KAAK6P,iBACL7P,KAAKiJ,eACDjJ,KAAKiF,kBACLjF,KAAKwI,uBAELxI,KAAKkF,mBACLlF,KAAK2H,UAAUN,GAGfA,EAAEiM,iBAENtT,KAAKkM,mBACLlM,KAAK0J,eAAepJ,GACF,aAAdN,KAAK0E,MACL1E,KAAK4J,iBAAiB,eAAkBS,GAAM,KAAOA,EAAGuP,kBAI5DvS,EAAEiM,iBAENtT,KAAKmG,qBACLnG,KAAK2J,mBAGbrG,EAAYpD,UAAUwJ,eAAiB,SAAUpJ,GAC7C,GAAIN,KAAK4E,qBAAqC,aAAd5E,KAAK0E,OAAwB,eAAkB1E,KAAK0I,OAAOC,SAAU,CACjG,IAAIic,EAAQ,EACRC,EAAY,EACZC,EAAc,EACdC,OAAc,EAClB,GAAI/kB,KAAK2jB,eAAiBrjB,EAAOsP,uBAAuB,WAAWzR,OAC/D,OAAQmC,EAAOsP,uBAAuB,WAAWzR,OAC7CmC,EAASA,EAAOkP,cAGpBlP,EAAOxC,UAAUG,SAAS,aAC1BqC,EAASA,EAAOkP,cAAcA,eAElCuV,EAAc/kB,KAAKglB,qBAAqB1kB,EAAQukB,EAAWC,EAAaF,EAAO,GAC/EG,EAAc/kB,KAAKglB,qBAAqB1kB,EAAQykB,EAAY,GAAIA,EAAY,GAAIA,EAAY,GAAI,GAChG,OAAQzkB,EAAOxC,UAAUG,SAAS,qBAK9B,GAJIqC,EAAOxC,UAAUG,SAAS,iBAC1BqC,EAASA,EAAOkP,eAEpBlP,EAASA,EAAO6O,uBACF,MAAV7O,EACA,MAGRN,KAAKilB,eAAe3kB,EAAQykB,EAAY,GAAIA,EAAY,GAAIA,EAAY,MAGhFzhB,EAAYpD,UAAU8kB,qBAAuB,SAAUE,EAAaC,EAASC,EAAWR,EAAO3K,GAC3F,OAAQiL,EAAYpnB,UAAUG,SAAS,qBAanC,GAZIinB,EAAYpnB,UAAUG,SAAS,iBAC/BinB,EAAcA,EAAY1V,eAE1B0V,EAAYtV,uBAAuB,WAAW,GAAG9R,UAAUG,SAAS,YACpEinB,EAAYpnB,UAAUG,SAAS,eAC/BknB,IAEKD,EAAYpnB,UAAUG,SAAS,gBACpCmnB,IAEJR,IACAM,EAAcjL,EAAWiL,EAAY7V,mBAAqB6V,EAAY/V,uBACnD,MAAf+V,EACA,MAGR,MAAO,CAACC,EAASC,EAAWR,IAEhCthB,EAAYpD,UAAU+kB,eAAiB,SAAUI,EAAaF,EAASC,EAAWR,GAC9E,GAAoB,OAAhBS,EAAJ,CAGA,IAAIC,EAAkBD,EAAYzV,uBAAuB,WAAW,GAChEgV,IAAUO,GACVG,EAAgBxnB,UAAUa,OAAO,UACjC2mB,EAAgBxnB,UAAUC,IAAI,WAC9B,eAAQunB,EAAiB,sBAA2BxnB,UAAUC,IAAI,YAClEsnB,EAAYpf,aAAa,gBAAiB,SAErC2e,IAAUQ,GACfE,EAAgBxnB,UAAUa,OAAO,WACjC2mB,EAAgBxnB,UAAUa,OAAO,UACjC,eAAQ2mB,EAAiB,sBAA2BxnB,UAAUa,OAAO,YACrE0mB,EAAYpf,aAAa,gBAAiB,UAErCjG,KAAKyQ,yBAA2B0U,EAAU,GAC/CG,EAAgBxnB,UAAUa,OAAO,UACjC0mB,EAAYpf,aAAa,gBAAiB,QAC1C,eAAQqf,EAAiB,sBAA2BxnB,UAAUC,IAAI,YAClEunB,EAAgBxnB,UAAUC,IAAI,aAG9BunB,EAAgBxnB,UAAUa,OAAO,WACjC2mB,EAAgBxnB,UAAUC,IAAI,UAC9B,eAAQunB,EAAiB,sBAA2BxnB,UAAUC,IAAI,YAClEsnB,EAAYpf,aAAa,gBAAiB,YAGlD3C,EAAYpD,UAAUyJ,eAAiB,WACnC,IAAI6P,EAAQxZ,KAAK/C,OAAS+C,KAAK/C,MAAMkB,OAAS6B,KAAK/C,MAAMkB,OAAS,EAC9DoY,EAAavW,KAAK6I,KAAKC,iBAAiB,uCACxC0Q,EAAQxZ,KAAKyQ,wBACb,gBAAY8F,EAAY,aAExBiD,IAAUxZ,KAAKyQ,wBACf,eAAS8F,EAAY,cAG7BjT,EAAYpD,UAAUqlB,YAAc,SAAUle,GAC1C,IAAIme,EAAY,eAAQne,EAAE/G,OAAQ,IAAM,OAAoB+J,IAC1C,OAAdmb,GAAoC,aAAdxlB,KAAK0E,OAAwB,eAAkB1E,KAAK0I,OAAOC,UAC9E3I,KAAK4E,sBACR4gB,EAAY,eAAQne,EAAE/G,OAAQ,IAAM,OAAoB8O,QAE5DpP,KAAKukB,aAAaiB,IAEtBliB,EAAYpD,UAAUulB,aAAe,WACjCzlB,KAAK6jB,eAETvgB,EAAYpD,UAAUygB,gBAAkB,SAAUtZ,GAC9CA,EAAEiM,iBACFtT,KAAKiE,mBAAoB,GAE7BX,EAAYpD,UAAUwlB,gBAAkB,SAAUre,GAC9C,GAAkB,aAAdrH,KAAK0E,KAAqB,CAC1B,IAAIpE,EAAS+G,EAAE/G,QACR,eAAkBN,KAAKqE,WAAa,eAAQ/D,EAAQ,QAAUN,KAAKqE,SAAStH,QAAQQ,GAAK,OAC3FyC,KAAKnD,eAAeoB,SAASoJ,EAAE/G,QAIhCN,KAAKiE,mBAAqB,OAAQ0P,MAA8B,SAAtB,OAAQ8N,KAAKzZ,OAAqBhJ,SAASyL,gBAAkBzK,KAAKhD,aAH5GgD,KAAKiE,mBAAoB,IAOrCX,EAAYpD,UAAUqO,eAAiB,WAC9B,eAAkBvO,KAAK6I,QACxB,OAAa9K,IAAIiB,SAAU,YAAagB,KAAK0lB,gBAAiB1lB,MAC9D,OAAajC,IAAIiC,KAAK6I,KAAM,YAAa7I,KAAK2gB,gBAAiB3gB,MAC/D,OAAajC,IAAIiC,KAAK6I,KAAM,UAAW7I,KAAK0kB,aAAc1kB,MAC1D,OAAajC,IAAIiC,KAAK6I,KAAM,YAAa7I,KAAKulB,YAAavlB,MAC3D,OAAajC,IAAIiC,KAAK6I,KAAM,WAAY7I,KAAKylB,aAAczlB,QAGnEsD,EAAYpD,UAAUoO,iBAAmB,WACrC,OAAa3P,OAAOK,SAAU,YAAagB,KAAK0lB,iBAC5C1lB,KAAK6I,OACL,OAAalK,OAAOqB,KAAK6I,KAAM,YAAa7I,KAAK2gB,iBACjD,OAAahiB,OAAOqB,KAAK6I,KAAM,UAAW7I,KAAK0kB,cAC/C,OAAa/lB,OAAOqB,KAAK6I,KAAM,YAAa7I,KAAKulB,aACjD,OAAa5mB,OAAOqB,KAAK6I,KAAM,WAAY7I,KAAKylB,gBAGxDniB,EAAYpD,UAAU6Y,iBAAmB,WAChC/Y,KAAK/C,OAAU+C,KAAK/C,MAAMkB,QAAsC,KAA5B6B,KAAKhD,aAAaC,QACvD+C,KAAK2G,aAAaE,MAAMC,QAAU,SAG1CxD,EAAYpD,UAAUmR,iBAAmB,YAC/BrR,KAAK/C,OAAS+C,KAAK/C,MAAMkB,QAAuC,KAA5B6B,KAAKhD,aAAaC,QAAiB+C,KAAKie,kBAAqC,IAAlBje,KAAKqT,SACtGrT,KAAK2G,aAAaE,MAAMC,QAAU,GAGlC9G,KAAK2G,aAAaE,MAAMC,QAAU,QAQ1CxD,EAAYpD,UAAUylB,QAAU,WACxB3mB,SAASyL,gBAAkBzK,KAAKhD,cAAgBgD,KAAKoT,SACrDpT,KAAKhD,aAAa4K,SAQ1BtE,EAAYpD,UAAU0lB,SAAW,WACzB5mB,SAASyL,gBAAkBzK,KAAKhD,cAAgBgD,KAAKoT,SACrDpT,KAAKhD,aAAaqjB,QAQ1B/c,EAAYpD,UAAU2lB,YAAc,WAChC,GAAI,eAAkB7lB,KAAK8lB,gBAAiB,CACxC,IAAIC,EAAc/lB,KAAK8e,cAAgB9e,KAAK8e,aAAatgB,cAAc,yBAC/B,SAApCwB,KAAK2G,aAAaE,MAAMC,SAAsBif,EAC9C/lB,KAAK8lB,eAAiBC,GAA4B/lB,KAAK2G,cAGvD3G,KAAK8lB,eAAiB9lB,KAAKf,cAAc,OAAQ,CAAE5B,UAAW4E,EAAkB,IAAMU,IACtF3C,KAAK3B,iBAAiBR,YAAYmC,KAAK8lB,iBAE3C,eAAc,CAAExlB,OAAQN,KAAK8lB,eAAgB3Q,MAAO,OAAQ7N,SAAW,OAAS,QAAUtH,KAAKf,eAC/F,eAAS,CAACe,KAAK8lB,gBAAiBpjB,GAChC,eAAY1C,KAAK8lB,kBAQzBxiB,EAAYpD,UAAU8lB,YAAc,WAC3B,eAAkBhmB,KAAK8lB,kBACxB,eAAY9lB,KAAK8lB,gBACjB,gBAAY,CAAC9lB,KAAK8lB,gBAAiBpjB,GAC/B1C,KAAK8lB,eAAehoB,UAAUG,SAAS0E,GACvC,eAAO3C,KAAK8lB,gBAGZ9lB,KAAK8lB,eAAe5mB,UAAY,GAEpCc,KAAK8lB,eAAiB,OAG9BxiB,EAAYpD,UAAUsiB,kBAAoB,SAAUyD,EAAaC,GACzDlmB,KAAKyd,gBAAkBzd,KAAK6d,oBAC5BoI,EAAY/mB,UAAYgnB,EAGxBD,EAAYvoB,UAAY,OAAmByoB,SAASD,IAG5D5iB,EAAYpD,UAAU+T,gBAAkB,WAYpC,GAXIjU,KAAKgX,kBACLhX,KAAKiX,mBAELjX,KAAKwL,wBACLxL,KAAKwL,sBAAsB3E,MAAMC,QAAU,QAE1C,eAAkB9G,KAAK8W,eACxB9W,KAAK8W,YAAYjQ,MAAMC,QAAU,GACjC9G,KAAK8W,YAAYjQ,MAAMsO,MAAQ,GAC/BnV,KAAK8W,YAAYhZ,UAAUa,OAAOqE,KAElChD,KAAK/C,OAAS+C,KAAK/C,MAAMkB,OAAQ,CACjC,IAAIqM,EAAO,GACPyF,OAAO,EACP2C,OAAW,EACXwT,EAAY,EACZC,OAAc,EACdC,OAAY,EACZzR,EAAgB,EAChB0R,OAAmB,EACvBvmB,KAAKwiB,kBAAkBxiB,KAAK8W,YAAatM,GACzC,IAAIgc,EAAa,CACb1D,kBAAmB,mBACnB2D,sBAAuB,iBACvBC,sBAAuB,mBACvBC,mBAAoB,qBAEpBC,EAAO,IAAI,OAAK5mB,KAAKgiB,gBAAiBwE,EAAYxmB,KAAK6mB,QACT,KAA9CD,EAAKE,YAAY,2BACjBF,EAAO,IAAI,OAAK,YAAaJ,EAAYxmB,KAAK6mB,SAEJ,KAA1CD,EAAKE,YAAY,uBACjBF,EAAO,IAAI,OAAK,YAAaJ,EAAYxmB,KAAK6mB,SAElD,IAAIE,EAAgBH,EAAKE,YAAY,yBACjCE,EAAeJ,EAAKE,YAAY,sBAChCG,EAAejnB,KAAKf,cAAc,OAAQ,CAC1C5B,UAAW2E,IAEXklB,EAAoBH,EAActpB,QAAQ,WAAYuC,KAAK/C,MAAMkB,OAAO0N,YAC5Eob,EAAavpB,UAAYwpB,EACzBlnB,KAAK8W,YAAYjZ,YAAYopB,GAC7BjnB,KAAKkJ,uBACL,IAAIie,EAAaF,EAAalS,YAM9B,GALA,eAAOkS,GACHjnB,KAAKgJ,mBACL6L,EAAgB7U,KAAK8U,SAASC,YAAcL,SAASjN,OAAOkN,iBAAiB3U,KAAK8U,UAAUE,YAAa,KAE7GhV,KAAKonB,uBACA,eAAkBpnB,KAAK/C,OACxB,IAAK,IAAI4N,EAAQ,GAAI,eAAkB7K,KAAK/C,MAAM4N,IAASA,IAAS,CAWhE,GAVAL,GAAmB,IAAVK,EAAe,GAAK7K,KAAKiM,cAAgB,IAClDgE,EAAOjQ,KAAKqnB,eAAexc,GAC3BL,GAAQyF,EACRA,EAAOjQ,KAAK8W,YAAY5X,UACxBc,KAAKwiB,kBAAkBxiB,KAAK8W,YAAatM,GACzC6b,EAAcrmB,KAAK8W,YAAY/B,YAC3BL,SAASjN,OAAOkN,iBAAiB3U,KAAK8W,aAAalC,aAAc,IACrE2R,EAAmBvmB,KAAK3B,iBAAiB0W,YACrCL,SAASjN,OAAOkN,iBAAiB3U,KAAK3B,kBAAkBipB,YAAa,IACrE5S,SAASjN,OAAOkN,iBAAiB3U,KAAK3B,kBAAkBuW,aAAc,IACrEyR,EAAcxR,EAAgB7U,KAAK0D,eAAkB6iB,EAAkB,MACvDgB,IAAb3U,GAAuC,KAAbA,IAC1B3C,EAAO2C,EACP/H,EAAQub,EAAY,GAExBpmB,KAAKwiB,kBAAkBxiB,KAAK8W,YAAa7G,GACzCqW,EAAYtmB,KAAK/C,MAAMkB,OAAS0M,EAChCwb,EAAcrmB,KAAK8W,YAAY/B,YAC3BL,SAASjN,OAAOkN,iBAAiB3U,KAAK8W,aAAalC,aAAc,IACrE,MAASyR,EAAcc,EAAatS,EAAgB7U,KAAK0D,eAAkB6iB,GAAqC,IAAhBF,GAC1D,KAA/BrmB,KAAK8W,YAAY5X,UAAkB,CACtC,IAAIwjB,EAAU,GACd1iB,KAAK8W,YAAY5X,UAAYwjB,EAAQ8E,KAAKxnB,KAAKiM,eAC/Cqa,EAAYtmB,KAAK/C,MAAMkB,OACvBkoB,EAAcrmB,KAAK8W,YAAY/B,YAC3BL,SAASjN,OAAOkN,iBAAiB3U,KAAK8W,aAAalC,aAAc,IAEzE,MAEMyR,EAAcc,EAAatS,EAAgB7U,KAAK0D,gBAAmB6iB,GACzE3T,EAAWpI,EACX4b,EAAYvb,GAEG,IAAVA,IACL+H,EAAW,GACXwT,GAAa,GAIzB,GAAIE,EAAY,EAAG,CACf,IAAImB,EAAalB,EAAmB1R,EAAgB7U,KAAK0D,eACzD1D,KAAK8W,YAAYjZ,YAAYmC,KAAK0nB,qBAAqBT,EAAcjnB,KAAK8W,YAAawP,EAAWS,EAAeC,EAAcS,IAC/HznB,KAAK2nB,kBAAkB3nB,KAAK8W,YAAa2Q,GACzCznB,KAAK4nB,oBAAoBX,EAAcpS,EAAeyR,EAAWS,EAAeC,SAI/E,eAAkBhnB,KAAK8W,eACxB9W,KAAK8W,YAAY5X,UAAY,GAC7Bc,KAAK8W,YAAYjQ,MAAMC,QAAU,SAI7CxD,EAAYpD,UAAUknB,oBAAsB,WACpCpnB,KAAKie,kBACLje,KAAK0D,eAAiB1D,KAAK2G,aAAaoO,cAGhDzR,EAAYpD,UAAUynB,kBAAoB,SAAU7Q,EAAa2Q,GACzD3Q,EAAYhZ,UAAUG,SAAS+E,KAAwBykB,EAAc3Q,EAAY/B,YACjFL,SAASjN,OAAOkN,iBAAiBmC,GAAawQ,YAAa,IACzD5S,SAASjN,OAAOkN,iBAAiBmC,GAAawQ,YAAa,MAC7DxQ,EAAYjQ,MAAMsO,MAAQsS,EAAa,OAG/CnkB,EAAYpD,UAAUwnB,qBAAuB,SAAUT,EAAcnQ,EAAawP,EAAWS,EAAeC,EAAcS,GAClH3Q,EAAY+Q,YAAkD,IAApC/Q,EAAY+Q,WAAWC,UAAuD,KAArChR,EAAY+Q,WAAWE,WAC1FjR,EAAYkR,YAAYlR,EAAY+Q,YAExCZ,EAAa/nB,UAAY,GACzB,IAAI+oB,EAAalB,EAActpB,QAAQ,WAAY6oB,EAAUza,YACzDqc,EAAYlB,EAAavpB,QAAQ,WAAY6oB,EAAUza,YAS3D,OARAob,EAAavpB,UAAaoZ,EAAY+Q,YAAkD,IAApC/Q,EAAY+Q,WAAWC,SAAkBG,EAAaC,EACtGpR,EAAY+Q,YAAkD,IAApC/Q,EAAY+Q,WAAWC,SACjDhR,EAAYhZ,UAAUa,OAAOqE,KAG7B8T,EAAYhZ,UAAUC,IAAIiF,IAC1BhD,KAAK2nB,kBAAkB7Q,EAAa2Q,IAEjCR,GAEX3jB,EAAYpD,UAAU0nB,oBAAsB,SAAUX,EAAcpS,EAAeyR,EAAWS,EAAeC,GACzG,IAAIT,EAAmBvmB,KAAK3B,iBAAiB0W,YACzCL,SAASjN,OAAOkN,iBAAiB3U,KAAK3B,kBAAkBipB,YAAa,IACrE5S,SAASjN,OAAOkN,iBAAiB3U,KAAK3B,kBAAkBuW,aAAc,IACtEyR,EAAcrmB,KAAK8W,YAAY/B,YAAcL,SAASjN,OAAOkN,iBAAiB3U,KAAK8W,aAAalC,aAAc,IAClH,GAAMyR,EAAcxR,GAAkB0R,GAAqC,IAAhBF,GAAqBrmB,KAAK8W,YAAY+Q,YACpD,IAAzC7nB,KAAK8W,YAAY+Q,WAAWC,SAAgB,CAC5C,MAASzB,EAAcxR,EAAiB0R,GAAqC,IAAhBF,GAAqBrmB,KAAK8W,YAAY+Q,YACtD,IAAzC7nB,KAAK8W,YAAY+Q,WAAWC,SAAgB,CAC5C,IAAIpF,EAAU1iB,KAAK8W,YAAY+Q,WAAWE,UAAUjiB,MAAM9F,KAAKiM,eAC/DyW,EAAQyF,MACRnoB,KAAK8W,YAAY+Q,WAAWE,UAAYrF,EAAQ8E,KAAKxnB,KAAKiM,eACZ,KAA1CjM,KAAK8W,YAAY+Q,WAAWE,WAC5B/nB,KAAK8W,YAAYkR,YAAYhoB,KAAK8W,YAAY+Q,YAElDvB,IACAD,EAAcrmB,KAAK8W,YAAY/B,YAEnC,IAAI0S,EAAalB,EAAmB1R,EACpC7U,KAAK0nB,qBAAqBT,EAAcjnB,KAAK8W,YAAawP,EAAWS,EAAeC,EAAcS,KAG1GnkB,EAAYpD,UAAUmnB,eAAiB,SAAUxc,GAC7C,IAAIoF,EACJ,GAAIjQ,KAAK8N,UAAY9N,KAAK8N,SAAS3P,OAC/B,GAAkB,aAAd6B,KAAK0E,KAAqB,CAC1B,IAAI0jB,EAAUpoB,KAAKmM,SACnBnM,KAAKmM,SAAWnM,KAAK8N,SACrBmC,EAAOjQ,KAAKuiB,eAAeviB,KAAK/C,MAAM4N,IACtC7K,KAAKmM,SAAWic,OAGhBnY,EAAOjQ,KAAKuiB,eAAeviB,KAAK/C,MAAM4N,SAI1CoF,EAAOjQ,KAAK/C,MAAM4N,GAEtB,OAAOoF,GAEX3M,EAAYpD,UAAUmoB,YAAc,WAKhC,GAJK,eAAkBroB,KAAK3B,mBACxB,OAAaM,OAAOqB,KAAK3B,iBAAkB,YAAa2B,KAAKmT,cAEjE,OAAaxU,OAAO8I,OAAQ,SAAUzH,KAAKihB,eACtC,eAAkBjhB,KAAKhD,cAAe,CACvC,OAAa2B,OAAOqB,KAAKhD,aAAc,QAASgD,KAAK4W,gBACrD,OAAajY,OAAOqB,KAAKhD,aAAc,UAAWgD,KAAK+X,WACrC,aAAd/X,KAAK0E,MACL,OAAa/F,OAAOqB,KAAKhD,aAAc,QAASgD,KAAKuhB,SAEzD,OAAa5iB,OAAOqB,KAAKhD,aAAc,QAASgD,KAAK6Q,OACrD,IAAIsQ,EAAc,eAAQnhB,KAAKhD,aAAc,QACzCmkB,GACA,OAAaxiB,OAAOwiB,EAAa,QAASnhB,KAAKkhB,mBAEnD,OAAaviB,OAAOqB,KAAKhD,aAAc,OAAQgD,KAAKuT,eAEnD,eAAkBvT,KAAK3B,oBACxB,OAAaM,OAAOqB,KAAK3B,iBAAkB,YAAa2B,KAAKoe,SAC7D,OAAazf,OAAOqB,KAAK3B,iBAAkB,WAAY2B,KAAKqe,WAE3D,eAAkBre,KAAK2G,eACxB,OAAahI,OAAOqB,KAAK2G,aAAc,YAAa3G,KAAK8gB,UAExD,eAAkB9gB,KAAKhD,eACxB,OAAa2B,OAAOqB,KAAKhD,aAAc,QAASgD,KAAKwhB,eAG7Dle,EAAYpD,UAAU2Z,cAAgB,SAAUzV,EAAOgE,EAAOS,GAC1D,IAAIwB,EAYJ,GAXK,eAAkBrK,KAAK6I,QACxBwB,EAAKrK,KAAK6I,KAAKC,iBAAiB1E,EAC5B,kEACA,8DAEJpE,KAAK/C,OAAS+C,KAAK/C,MAAMkB,QAAUiK,GAASA,EAAM9H,QAC/C,eAAQ8H,EAAM9H,OAAQ,oBAAsBN,KAAKuH,iBACpD8C,EAAKrK,KAAK+I,SAASD,iBAAiB1E,EAChC,kEACA,8DAEJpE,KAAK4E,qBAAqC,aAAd5E,KAAK0E,OAAwB,eAAkB1E,KAAK0I,OAAOC,SAAU,CACjG,IAAIrI,EAAU8H,EAASpI,KAAKsoB,cAAgB,eAAQlgB,EAAM9H,OAAQ,sBAAwB8H,EAAM9H,OAAU,KAG1G,GAFAA,EAAU8H,GAA2B,KAAlBA,EAAMiG,QAAkBxF,EAAOvI,EAClDA,EAAUA,GAAUA,EAAOxC,UAAUG,SAAS,WAAcqC,EAAOkP,cAAcA,cAAgBlP,EAC7FA,GAAUA,EAAOxC,UAAUG,SAAS,qBAAsB,CAC1D,IAAIinB,EAAc5kB,EAAO+O,mBACzB,GAAI,eAAkB6V,GAClB,OAEJ,MAAOA,EAAYpnB,UAAUG,SAAS,eAAgB,CAClD,GAAImG,GACA,IAAK8gB,EAAYxL,kBAAkBC,iBAAiB7b,UAAUG,SAAS,WAAY,CAC/E,IAAIsqB,EAAiBvoB,KAAK/C,OAAS+C,KAAK/C,MAAMkB,OAAS6B,KAAK/C,MAAMkB,OAAS,EACvE+mB,EAAYpnB,UAAUG,SAAS,cAC/BsqB,GAAkB,GAElBA,EAAiBvoB,KAAKyQ,wBACtBzQ,KAAK+T,oBAAoBmR,EAAa9c,SAK1C8c,EAAYxL,kBAAkBC,iBAAiB7b,UAAUG,SAAS,YAClE+B,KAAK+T,oBAAoBmR,EAAa9c,GAI9C,GADA8c,EAAcA,EAAY7V,mBACP,MAAf6V,EACA,MAGR,GAAI5kB,EAAOxC,UAAUG,SAAS,qBAAsB,CAChD,IAAIuqB,EAAiBxoB,KAAK6I,KAAK+G,uBAAuB,gBAAgB,GAClE4Y,GACAA,EAAe1qB,UAAUa,OAAO,gBAEhCyF,EACA9D,EAAOxC,UAAUC,IAAI,YAGrBuC,EAAOxC,UAAUa,OAAO,YAE5B2B,EAAOxC,UAAUC,IAAI,gBACrBiC,KAAKqJ,6BAETrJ,KAAKyoB,qBACLzoB,KAAKqM,wBACArM,KAAK8O,cAAgB1G,GACtBpI,KAAK+O,iBAAiB3G,EAAOpI,KAAK/C,MAAO+C,KAAKyL,iBAIlDzL,KAAK0oB,YAAYtgB,EAAOiC,EAAIjG,QAIhCpE,KAAK0oB,YAAYtgB,EAAOiC,EAAIjG,GAEhCpE,KAAKyiB,sBAETnf,EAAYpD,UAAUwoB,YAAc,SAAUtgB,EAAOiC,EAAIjG,GACrD,IAAIZ,EAAQxD,KACR7B,EAASkM,EAAGlM,OACZwqB,EAAmB,CACnBvgB,MAAOA,EACP2T,MAAO3X,EAAQiG,EAAK,GACpBmR,SAAUpX,EAAQpE,KAAKmM,SAAW,GAClCwJ,eAAcvN,EACd4T,UAAW5X,EACXwkB,oBAAoB,GAGxB,GADA5oB,KAAKuI,QAAQ,kBAAmBogB,GAC5Bte,GAAMA,EAAGlM,OAAQ,CACjB,IAAI0qB,EAAU,EACVC,EAAU,EAOd,GALIA,EADA9oB,KAAK4E,oBACKR,EAAQpE,KAAKyQ,wBAA0BzQ,KAAK/C,MAAQ+C,KAAK/C,MAAMkB,OAAS,GAAKkM,EAAGlM,OAGhFiG,EAAQpE,KAAKyQ,wBAA0BzQ,KAAK/C,MAAQ+C,KAAK/C,MAAMkB,OAAS,GAAK6B,KAAKyQ,uBAE3FkY,EAAiBC,mBA0BjB,CACD,IAAK,IAAI7nB,EAAI,EAAGA,EAAIsJ,EAAGlM,QAAU4C,EAAI+nB,EAAS/nB,IAAK,CAC/Cf,KAAK6jB,cACL,IAAIpJ,EAAYpQ,EAAGtJ,GAAGvD,aAAa,cAC/BP,EAAQ+C,KAAK4L,kBAAkB6O,GAC/BI,EAAc7a,KAAK+I,SAAW/I,KAAK+I,SAASD,iBAAiB1E,EAC7D,kEACA,6DAA6DrD,GAAK,KAClEqD,GACApE,KAAK/C,MAAS+C,KAAK/C,MAAa+C,KAAK/C,MAAV,GACvB+C,KAAK/C,MAAMsJ,QAAQtJ,GAAS,GAC5B+C,KAAKkG,cAAc,CAAEjJ,MAAO,GAAG8d,OAAO,GAAI/a,KAAK/C,MAAO,CAACA,MAAW,GAEtE+C,KAAK6J,cACL7J,KAAKqc,iBAAiBhS,EAAGtJ,GAAI8Z,GAC7B7a,KAAKkb,mBACLlb,KAAK8P,qBAGL9P,KAAK2a,eAAe1d,EAAOmL,GAAO,EAAOiC,EAAGtJ,GAAI8Z,GAEhD7a,KAAK4E,qBACL5E,KAAK0J,eAAeW,EAAGtJ,IAG/B,IAAKqD,EAAO,CACR,IAAIoV,EAAQxZ,KAAK/C,OAAS+C,KAAK/C,MAAMkB,OAAS6B,KAAK/C,MAAMkB,OAAS,EAClE,GAAIqb,EAAQxZ,KAAKyQ,uBAAwB,CACrC,IAAI8F,EAAavW,KAAK6I,KAAKC,iBAAiB,MACtC,OAAoBuB,GAAK,mBAC/B,gBAAYkM,EAAY,cAGhC,IAAIlR,EAAO,CACP+C,MAAOA,EACP2T,MAAO3X,EAAQiG,EAAK,GACpBmR,SAAUpX,EAAQpE,KAAKmM,SAAW,GAClCwJ,eAAcvN,EACd4T,UAAW5X,GAEfpE,KAAKuI,QAAQ,cAAelD,OAlEU,CACtC,MAAOwjB,EAAU1qB,GAAU0qB,GAAW,IAAMA,EAAUC,EAClD9oB,KAAK+T,oBAAoB1J,EAAGwe,GAAUzgB,EAAOjK,EAAS0qB,GAClD7oB,KAAK4E,qBACL5E,KAAK0J,eAAeW,EAAGwe,IAE3BA,IAEA1qB,EAAS,IACT4Y,YAAW,WACP,MAAO8R,EAAU1qB,GAAU0qB,EAAUC,EACjCtlB,EAAMuQ,oBAAoB1J,EAAGwe,GAAUzgB,EAAOjK,EAAS0qB,GACnDrlB,EAAMoB,qBACNpB,EAAMkG,eAAeW,EAAGwe,IAE5BA,IAEJrlB,EAAMulB,qBAAqB3gB,GACtB5E,EAAMsL,eACPtL,EAAMuL,iBAAiB3G,EAAO5E,EAAMvG,MAAOuG,EAAMiI,YACjDjI,EAAM2X,YAAc3X,EAAM2X,aAAe3X,EAAM2X,YAAc3X,EAAM2X,aAEvE3X,EAAMwlB,wBACP,IA8CfhpB,KAAK+oB,qBAAqB3gB,GAC1BpI,KAAKqM,uBACDlO,GAAU,KAAOwqB,EAAiBC,qBAC7B5oB,KAAK8O,eACN9O,KAAK+O,iBAAiB3G,EAAOpI,KAAK/C,MAAO+C,KAAKyL,YAC9CzL,KAAKmb,YAAcnb,KAAKmb,aAAenb,KAAKmb,YAAcnb,KAAKmb,aAEnEnb,KAAKgpB,wBAGb1lB,EAAYpD,UAAU8oB,oBAAsB,WACxC,IAAIxlB,EAAQxD,KACRipB,EAAc,GACdC,EAAc,GACd1e,EAAO,GACPsC,EAAO,GACO,aAAd9M,KAAK0E,OACL1E,KAAK/C,MAAMksB,KAAI,SAAUlsB,EAAO4N,GAC5Boe,GAAe,4BAA8BhsB,EAAQ,KAAO4N,EAAQ,YAEhEL,EADAhH,EAAM2I,SACC3I,EAAM+e,eAAetlB,GAGrBA,EAEXisB,GAAe1e,EAAOhH,EAAMyI,cAAgB,IAC5Ca,EAAK3H,KAAKqF,MAEdxK,KAAKwG,cAActH,UAAY+pB,EAC/BjpB,KAAKwiB,kBAAkBxiB,KAAKgX,iBAAkBkS,GAC9ClpB,KAAKgX,iBAAiB/Q,aAAa,KAAM,eAAY,cACrDjG,KAAKhD,aAAaiJ,aAAa,mBAAoBjG,KAAKgX,iBAAiBzZ,IACzEyC,KAAKhD,aAAaiJ,aAAa,kBAAmBjG,KAAKgX,iBAAiBzZ,IACxEyC,KAAKkG,cAAc,CAAE4G,KAAMA,EAAKjB,aAAc,GAC9C7L,KAAKqU,oBACLrU,KAAKmG,uBAGb7C,EAAYpD,UAAU6oB,qBAAuB,SAAU3gB,GACnDpI,KAAK2J,iBACL3J,KAAKyoB,mBAAmBrgB,IAE5B9E,EAAYpD,UAAUuoB,mBAAqB,SAAUrgB,GACjD,IAAIghB,EAAchhB,GAASA,EAAM9H,SAAW,eAAQ8H,EAAM9H,OAAQ,wBAC3D,eAAQ8H,EAAM9H,OAAQ,oBACX,QAAdN,KAAK0E,MAAmB1E,KAAKkL,eAAiC,aAAdlL,KAAK0E,OAAwB1E,KAAKmb,aAAeiO,GAIjGppB,KAAKlD,cAAcgB,UAAUa,OAAOoD,GAHpC/B,KAAKiU,kBAKS,aAAdjU,KAAK0E,MACL1E,KAAKiU,kBACCmV,GAAeppB,KAAKmb,aACtBnb,KAAKgM,gBAAgBhM,KAAKiM,cAAe7D,GAE7CpI,KAAKqU,qBAGLrU,KAAKgM,gBAAgBhM,KAAKiM,cAAe7D,GAE7CpI,KAAKmG,sBAET7C,EAAYpD,UAAUmpB,UAAY,WAC1BrpB,KAAKqE,UACLrE,KAAKqE,SAAS6B,cAAc,CAAE,OAAUlG,KAAKoJ,UAIrD9F,EAAYpD,UAAUopB,iBAAmB,SAAUC,GAC3C,eAAkBvpB,KAAK6I,MACvB7I,KAAKuM,cAGLvM,KAAKqS,UAAUrS,KAAKwN,YAEpBxN,KAAK/C,OAAS+C,KAAK/C,MAAMkB,SACzB6B,KAAKkG,cAAc,CAAE,MAASlG,KAAK/C,QACnC+C,KAAKoM,qBAGb9I,EAAYpD,UAAUspB,aAAe,WACjCxpB,KAAK0O,aAAc,EACnB1O,KAAKuM,eAETjJ,EAAYpD,UAAU6gB,eAAiB,SAAU3c,EAAOgE,GACpD,IAAI5E,EAAQxD,KACZ,GAAI,eAAkBA,KAAK6I,MACvB7I,KAAKyO,gBAAkB,WACnB,GAAmB,aAAfjL,EAAMkB,MAAuBlB,EAAMqK,cAAe,CAClD,IAAIxI,EAAO,CACP0E,OAAQ,oBACR/D,OAAuB,aAAfxC,EAAMkB,KACdzH,MAAOmH,EAAQ,QAAU,WAE7BZ,EAAMsG,OAAO,iBAAkBzE,GAEnC7B,EAAMqW,cAAczV,EAAOgE,GAC3B5E,EAAMiL,gBAAkB,MAE5BpL,EAAOnD,UAAUyW,OAAOlT,KAAKzD,UAE5B,CAED,GADAA,KAAKyO,gBAAkB,KACL,aAAdzO,KAAK0E,MAAuB1E,KAAK6N,cAAe,CAChD,IAAIxI,EAAO,CACPpI,MAAOmH,EAAQ,QAAU,UACzB4B,OAAsB,aAAdhG,KAAK0E,KACbqF,OAAQ,qBAEZ/J,KAAK8J,OAAO,iBAAkBzE,GAElCrF,KAAK6Z,cAAczV,EAAOgE,KAQlC9E,EAAYpD,UAAUupB,eAAiB,WACnC,OAAOzpB,KAAK0pB,aAAa,CAAC,WAU9BpmB,EAAYpD,UAAUypB,kBAAoB,SAAUC,EAASC,IACrDD,EAAQpc,aAAe,eAAkB/N,OAAO8F,KAAKqkB,EAAQpc,cAC1Doc,EAAQ3c,QAAU,eAAkBxN,OAAO8F,KAAKqkB,EAAQ3c,WACvDjN,KAAKgE,oBAELhE,KAAK+D,cAAiB/D,KAAK+D,cAAgC/D,KAAK+D,cAArB/D,KAAK+I,SAChD/I,KAAKgE,mBAAoB,GAE7BhE,KAAK+I,SAAW,KAChB/I,KAAK8N,SAAW,KAChB9N,KAAKsJ,cAAe,EACpBtJ,KAAK8pB,qBAAsB,GAEF,gBAAzB9pB,KAAKiV,kBACLjV,KAAK6R,cAAe,EACpB7R,KAAK+pB,iBAAiB,CAAC,SAAU,QAAS,cAAeH,IAE7D,IAAK,IAAInkB,EAAK,EAAGC,EAAKjG,OAAO8F,KAAKqkB,GAAUnkB,EAAKC,EAAGvH,OAAQsH,IAAM,CAC9D,IAAI8jB,EAAO7jB,EAAGD,GACd,OAAQ8jB,GACJ,IAAK,QACL,IAAK,aACiB,aAAdvpB,KAAK0E,MAAuB1E,KAAK6N,gBAC5B,eAAkB7N,KAAKqE,YACxBrE,KAAKqE,SAASxB,UACd7C,KAAKqE,SAAW,MAEpBrE,KAAKuM,eAET,MACJ,IAAK,iBACDvM,KAAKsF,sBACL,MACJ,IAAK,kBACDtF,KAAK0G,kBAAkBkjB,EAAQ3L,iBAC/B,MACJ,IAAK,OACDje,KAAKgqB,UAAUhqB,KAAK/C,MAAO+C,KAAK/C,MAAO,QACvC,MACJ,IAAK,QACD+C,KAAKgqB,UAAUhqB,KAAK/C,MAAO4sB,EAAQ5sB,MAAO,SAC1C+C,KAAKyiB,sBACAziB,KAAKkF,oBAAsBlF,KAAKkL,eACjClL,KAAKiJ,eAETjJ,KAAK6V,cAAgB7V,KAAK4V,WAAa5V,KAAK6V,eAAiB7V,KAAK6V,cAAgB7V,KAAK6V,cACvF,MACJ,IAAK,QACD7V,KAAKmc,SAASyN,EAAQzU,OACtBnV,KAAKqE,SAAS6B,cAAc,CAAEiP,MAAOnV,KAAKoX,mBAC1C,MACJ,IAAK,cACDpX,KAAKmG,qBACL,MACJ,IAAK,uBACGnG,KAAKuH,gBACLvH,KAAK8J,OAAO,uBAAwB,CAAEmgB,qBAAsBL,EAAQK,uBAExE,MACJ,IAAK,gBACiB,QAAdjqB,KAAK0E,MACL1E,KAAKiU,kBAETjU,KAAK4hB,WAAWgI,EAAQ3d,eACxB,MACJ,IAAK,WACDjM,KAAKkH,sBAAsB2iB,EAAQ7iB,UACnChH,KAAK+G,iBACL/G,KAAKuU,iBACL,MACJ,IAAK,YACDvU,KAAKmE,UAAUylB,EAAQtlB,WACvBjB,EAAOnD,UAAUypB,kBAAkBlmB,KAAKzD,KAAM4pB,EAASC,GACvD,MACJ,IAAK,WACD7pB,KAAKyG,eAAemjB,EAAQvW,UAC5BrT,KAAK2H,YACL,MACJ,IAAK,UACD3H,KAAK2H,YACL3H,KAAKgG,OAAO4jB,EAAQxW,SACpB,MACJ,IAAK,gBACGpT,KAAKqE,WACLrE,KAAKqE,SAASxB,UACd7C,KAAKqE,SAAW,MAEpBrE,KAAKuM,cACL,MACJ,IAAK,mBACDvM,KAAKkqB,eACL,MACJ,IAAK,iBACDlqB,KAAK0a,oBACL1a,KAAKyiB,qBACL,OAAMnO,kBAAkBtU,KAAKnD,eAAgBmD,KAAKf,eAClDe,KAAKuU,iBACA,eAAkBvU,KAAKnD,iBAAoB,eAAkBmD,KAAKnD,eAAe+S,uBAAuB,cAAc,IAAM5P,KAAKnD,eAAe+S,uBAAuB,wBAAwB,IAA8B,UAAxB5P,KAAK9C,iBAC3M8C,KAAKnD,eAAe+S,uBAAuB,wBAAwB,GAAG9R,UAAUC,IAAI,UAExF,MACJ,IAAK,uBACD,MACJ,IAAK,gBACDiC,KAAK8J,OAAO,iBAAiB,GAC7B,MACJ,IAAK,cACD,GAAI9J,KAAKqE,SAAU,CACf,IAAI0a,EAAgBrK,SAAS1U,KAAKgf,YAAa,IACtB,SAArBhf,KAAKgf,aACLhf,KAAK6I,KAAKhC,MAAM8Y,UAAY,eAAWZ,GACvC/e,KAAK+F,aAAac,MAAM8Y,UAAY,eAAW3f,KAAKgf,cAGpDhf,KAAK6I,KAAKhC,MAAM8Y,UAAY,eAAW3f,KAAKgf,aAGpD,MACJ,IAAK,iBACL,IAAK,iBACDhf,KAAKmqB,mBACL,MACJ,IAAK,iBACiB,aAAdnqB,KAAK0E,MAAuB1E,KAAKqE,UACjCrE,KAAKmqB,mBAETnqB,KAAKqN,wBAAwBrN,KAAKuH,gBAClC,MACJ,QAGQ,IAAI6iB,EAAUpqB,KAAKqqB,cAAcd,EAAMK,EAASC,GAChDxmB,EAAOnD,UAAUypB,kBAAkBlmB,KAAKzD,KAAMoqB,EAAQE,YAAaF,EAAQG,aAE/E,SAIhBjnB,EAAYpD,UAAUiqB,iBAAmB,WACjCnqB,KAAKqE,WACLrE,KAAKqE,SAASxB,UACd7C,KAAKqE,SAAW,MAEpBrE,KAAKuM,eAETjJ,EAAYpD,UAAUwN,iBAAmB,SAAUvD,GAE/C,IADA,IAAIwC,EAAa,GACR5L,EAAI,EAAGA,EAAIf,KAAK/C,MAAMkB,OAAQ4C,IAAK,CACxC,IAAIwM,EAAWvN,KAAKkK,gBAAkBlK,KAAKuH,iBAAmB,eAAkBvH,KAAK+I,UAAa/I,KAAK+I,SAAWoB,EAAY,KAAM,aAAcnK,KAAK/C,MAAM8D,IACxJwM,GACDZ,EAAWxH,KAAKnF,KAAK/C,MAAM8D,IAGnC,OAAO4L,GAGXrJ,EAAYpD,UAAUyN,mBAAqB,SAAUhB,EAAYxC,EAAWtB,EAAMT,GAC9E,IAAI5E,EAAQxD,KACZA,KAAKwN,WAAWgd,aAAaxqB,KAAK0M,YAAYC,IAAa8d,MAAK,SAAUpjB,GAClEA,EAAEvI,OAAOX,OAAS,GAClBqF,EAAM2f,QAAQ9b,EAAEvI,OAAQ+J,EAAK1K,QAEjCqF,EAAMoK,iBAAiBzD,EAAWtB,EAAMT,OAIhD9E,EAAYpD,UAAU8pB,UAAY,SAAUJ,EAASC,EAASN,GAC1D,GAAKvpB,KAAK6I,KAGL,KAAK7I,KAAKwN,sBAAsB,SAAkBxN,KAAKmM,UAAcnM,KAAK+I,UAAY/I,KAAK8N,SAG3F,CACD,IAAInB,EAAa,GAIjB,GAHK,eAAkB3M,KAAK/C,QAAW+C,KAAKgF,mBACxC2H,EAAa3M,KAAK0N,iBAAiB1N,KAAKmK,YAEhC,SAARof,GAAmB5c,EAAWxO,OAAS,GAAK6B,KAAKwN,sBAAsB,SAAgB,eAAkBxN,KAAK/C,QAC1F,MAAjB+C,KAAKmM,SACRnM,KAAK8N,SAAW,KAChB9N,KAAK0O,aAAc,EACnB1O,KAAK2N,mBAAmBhB,EAAY3M,KAAKmK,UAAWnK,KAAKmM,cAExD,CASD,GARa,SAATod,IACAvpB,KAAK2O,oBACLib,EAAU5pB,KAAK/C,QAEf,eAAkB+C,KAAK/C,QAAgC,IAAtB+C,KAAK/C,MAAMkB,UAC5C6B,KAAKyL,WAAaoe,GAGlB7pB,KAAKgF,mBAAmC,YAAdhF,KAAK0E,MAAoC,QAAd1E,KAAK0E,OAAmB1E,KAAK0qB,SAAW1qB,KAAKkO,YAC/FlO,KAAKkL,eAAiBlL,KAAK8N,WAAa9N,KAAKmM,SAAU,CAC1D,IAAItD,EAAO7I,KAAK+I,SAASgF,UAAY/N,KAAK+I,SAASgF,WAAU,GAAQ/N,KAAK+I,SAC1E/I,KAAKmN,iBAAiBtE,EAAM7I,KAAK8N,UAErC9N,KAAK4O,qBACa,QAAd5O,KAAK0E,MAAmB1E,KAAKkO,YAC7BlO,KAAKiU,kBAEJjU,KAAKkO,YACNlO,KAAKqU,oBAETrU,KAAKmG,qBACa,aAAdnG,KAAK0E,MAAuB1E,KAAK8O,cACjC9O,KAAK+O,iBAAiB,KAAM6a,EAASC,GAEzC7pB,KAAKqM,6BAtCTrM,KAAKwpB,oBAHLxpB,KAAKwpB,eA4CJxpB,KAAK8O,cACN9O,KAAK+O,iBAAiB,KAAM6a,EAASC,IAW7CvmB,EAAYpD,UAAUijB,QAAU,SAAUpH,EAAO4O,GAC7CtnB,EAAOnD,UAAUijB,QAAQ1f,KAAKzD,KAAM+b,EAAO4O,IAO/CrnB,EAAYpD,UAAUyH,UAAY,SAAUN,GACxC,IAAI7D,EAAQxD,KACR4qB,EAAQ,IACZ,GAAI5qB,KAAKkL,cAAe,CACpB,IAAInD,EAAY,CACZC,KAAM,UACNC,SAAU,IACV2iB,MAAOA,GAAgB,GAEvB1iB,EAAY,CAAEC,MAAOnI,KAAKqE,SAAUgE,QAAQ,EAAOC,UAAWP,EAAWK,MAAOf,GAAK,MACzFrH,KAAKuI,QAAQ,QAASL,GAAW,SAAUA,GAClCA,EAAUG,SACP7E,EAAMkF,OAAOC,SAA0B,aAAfnF,EAAMkB,MAAuBlB,EAAM+V,qBAC3D,eAAO/V,EAAM+V,oBACb/V,EAAM+V,mBAAqB,MAE/B/V,EAAMwL,iBAAkB,EACxBxL,EAAM3G,eAAeiB,UAAUa,OAAOoE,IACtCS,EAAMa,SAASwmB,KAAK,IAAI,OAAU3iB,EAAUI,YAC5C,eAAW9E,EAAMxG,aAAc,CAAE,gBAAiB,UAClDwG,EAAMxG,aAAaY,gBAAgB,aACnC4F,EAAMxG,aAAaY,gBAAgB,yBAC/B4F,EAAM+D,gBACN/D,EAAMsG,OAAO,aAAc,CAAEC,OAAQ,oBAAqB/D,OAAuB,aAAfxC,EAAMkB,KAAqBzH,MAAO,UAExGuG,EAAMa,SAASwmB,OACf,gBAAY,CAAC7rB,SAASyJ,KAAMjF,EAAMa,SAAStH,SAAU,qBACrD,OAAa4B,OAAO6E,EAAMqF,KAAM,UAAWrF,EAAMuU,iBAUjEzU,EAAYpD,UAAU0Q,UAAY,SAAUvJ,GACxC,IAAI7D,EAAQxD,KACZ,GAAKA,KAAKoT,QAAV,CAGA,IAAI/N,EAAO,CAAEgD,QAAQ,GACrBrI,KAAKuI,QAAQ,aAAclD,GAAM,SAAUA,GACvC,IAAKA,EAAKgD,OAAQ,CACd,IAAK7E,EAAM2G,UAMP,OALA3G,EAAMwL,iBAAkB,EACxB3L,EAAOnD,UAAUyW,OAAOlT,KAAKD,EAAO6D,QACjB,aAAf7D,EAAMkB,MAAuB,OAAQ4C,UAAY9D,EAAM+D,gBACvD/D,EAAMsG,OAAO,kBAAmB,CAAEC,OAAQ,oBAAqB/D,OAAuB,aAAfxC,EAAMkB,QAIlE,aAAflB,EAAMkB,MAAuB,OAAQ4C,UAAY9D,EAAM+D,gBACvD/D,EAAMsG,OAAO,kBAAmB,CAAEC,OAAQ,oBAAqB/D,OAAuB,aAAfxC,EAAMkB,OAEjF,IAAIomB,EAAetnB,EAAM2G,UAAUrB,iBAAiB,kBAAuB3K,OACvE4sB,EAAWvnB,EAAM2G,UAAUrB,iBAAiB,MAC1C,OAAoBuB,GAAK,IAAM/I,GAAWnD,OAChD,GAAI2sB,EAAe,GAAMA,IAAiBC,GAAcA,IAAavnB,EAAMsK,SAAS3P,SAAuC,KAA1BqF,EAAMgJ,kBAA0BhJ,EAAMwB,kBAEnI,YADAxB,EAAMwL,iBAAkB,GAG5BxL,EAAM4D,aAAaC,SAa/B/D,EAAYpD,UAAU8qB,UAAY,SAAU5mB,GACxCpE,KAAKmb,aAAc,EACnBnb,KAAK+gB,eAAe3c,IAQxBd,EAAYpD,UAAU+U,cAAgB,WAClC,MAAO,eAOX3R,EAAYpD,UAAU+qB,MAAQ,WAC1B,IAAIznB,EAAQxD,KACZA,KAAKgrB,WAAU,GACXhrB,KAAK/C,OAAS+C,KAAK/C,MAAMkB,OACzB4Y,YAAW,WACPvT,EAAM0C,cAAc,CAAEjJ,MAAO,OAAQ,KACtC,GAGH+C,KAAKkG,cAAc,CAAEjJ,MAAO,OAAQ,IAS5CqG,EAAYpD,UAAUyW,OAAS,WAC3B3W,KAAK0O,YAAc1O,KAAK0V,YAAa,EACrC1V,KAAKmb,aAAc,EACnBnb,KAAK8D,kBAAoB,GACzB9D,KAAKlD,cAAgBkD,KAAKf,cAAc,OAAQ,CAAE5B,UAAWwE,EAAoB,KAAsB,QAAd7B,KAAK0E,KAAkBzB,GAAc,MAC9HjD,KAAK8W,YAAc9W,KAAKf,cAAc,OAAQ,CAAE5B,UAAWkE,EAAiB,IAAMW,EAAmBgpB,OAAQ,kBAC7GlrB,KAAK2G,aAAe3G,KAAKf,cAAc,OAAQ,CAC3C5B,UAAW4E,EAAiBipB,OAAQ,kBAExClrB,KAAK3B,iBAAmB2B,KAAKf,cAAc,MAAO,CAAE5B,UAAW+D,IAC/DpB,KAAKnD,eAAiBmD,KAAKf,cAAc,MAAO,CAAE5B,UAAW8D,IAC3C,aAAdnB,KAAK0E,MACL,eAAS,CAAC1E,KAAKnD,gBAAiB,cAEhC,OAAQyK,UACRtH,KAAK3B,iBAAiBP,UAAUC,IAAIsD,GAExCrB,KAAKmc,SAASnc,KAAKmV,OACnBnV,KAAKnD,eAAegB,YAAYmC,KAAK3B,kBACrC2B,KAAK+F,aAAe/F,KAAKf,cAAc,MAAO,CAAE1B,GAAIyC,KAAKjD,QAAQQ,GAAK,SAAUF,UAAW8E,IACzE,cAAdnC,KAAK0E,MAAsC,aAAd1E,KAAK0E,MAClC1E,KAAKgX,iBAAmBhX,KAAKf,cAAc,OAAQ,CAAE5B,UAAW6E,EAAmBgpB,OAAQ,iBAC3FlrB,KAAK3B,iBAAiBR,YAAYmC,KAAKgX,oBAGvChX,KAAKwL,sBAAwBxL,KAAKf,cAAc,OAAQ,CACpD5B,UAAWmE,EACX0pB,OAAQ,iBAEM,YAAdlrB,KAAK0E,KACL1E,KAAKwL,sBAAsBvF,aAAa,KAAM,eAAY,iBAEvC,QAAdjG,KAAK0E,MACV1E,KAAKwL,sBAAsBvF,aAAa,KAAM,eAAY,aAE9DjG,KAAK3B,iBAAiBR,YAAYmC,KAAKwL,wBAEzB,QAAdxL,KAAK0E,MACL1E,KAAK3B,iBAAiBR,YAAYmC,KAAK8W,aAE3C9W,KAAK3B,iBAAiBR,YAAYmC,KAAKlD,eACnCkD,KAAKie,kBAAoB,OAAQ3W,SACjCtH,KAAK3B,iBAAiBR,YAAYmC,KAAK2G,cAGvC3G,KAAK3B,iBAAiBP,UAAUC,IAAIuE,GAExCtC,KAAKkqB,eACLlqB,KAAKhD,aAAegD,KAAKf,cAAc,QAAS,CAC5C5B,UAAW+E,EACXmb,MAAO,CACH4N,WAAY,QACZC,KAAM,OACNC,aAAc,MACdC,SAAU,IACVC,KAAM,cAGI,YAAdvrB,KAAK0E,MAAoC,QAAd1E,KAAK0E,MAChC1E,KAAKhD,aAAaiJ,aAAa,mBAAoBjG,KAAKwL,sBAAsBjO,IAE9EyC,KAAKjD,QAAQskB,UAAYrhB,KAAKkT,mBAC9BlT,KAAKjD,QAAQ8J,MAAMC,QAAU,QAE7B9G,KAAKjD,QAAQskB,UAAYrhB,KAAKkT,kBAC9BlT,KAAKjD,QAAQc,YAAYmC,KAAKnD,gBAC9BmD,KAAKlD,cAAce,YAAYmC,KAAKhD,gBAGpCgD,KAAKjD,QAAQyS,cAAcgc,aAAaxrB,KAAKnD,eAAgBmD,KAAKjD,SAClEiD,KAAKlD,cAAce,YAAYmC,KAAKhD,cACpCgD,KAAKlD,cAAce,YAAYmC,KAAKjD,SACpCiD,KAAKjD,QAAQa,gBAAgB,aAEL,UAAxBoC,KAAK9C,eACLN,EAAiBoD,KAAKnD,eAAgBmD,KAAKlD,cAAekD,KAAKjD,QAASiD,KAAKhD,aAAcgD,KAAK/C,MAAO+C,KAAK9C,eAAgB8C,KAAK7C,aAEpG,UAAxB6C,KAAK9C,gBACV8C,KAAKmG,qBAETnG,KAAKyiB,qBACLziB,KAAKjD,QAAQ8J,MAAM4kB,QAAU,GAC7B,IAAIluB,EAAKyC,KAAKjD,QAAQS,aAAa,MAAQwC,KAAKjD,QAAQS,aAAa,MAAQ,eAAY,oBACzFwC,KAAKjD,QAAQQ,GAAKA,EAClByC,KAAKwG,cAAgBxG,KAAKf,cAAc,SAAU,CAC9Cse,MAAO,CAAE,cAAe,OAAQ,MAAS3a,EAAgB,SAAY,KAAM,SAAY,MAE3F5C,KAAK3B,iBAAiBR,YAAYmC,KAAKwG,eACvCxG,KAAK0rB,oBAAoB1rB,KAAKjD,QAASiD,KAAKwG,eAC1B,aAAdxG,KAAK0E,MACL1E,KAAK+Y,oBAEJ,eAAkB,eAAQ/Y,KAAKjD,QAAS,cAAgB,eAAQiD,KAAKjD,QAAS,YAAY6mB,WAC3F5jB,KAAKoT,SAAU,GAEnBpT,KAAKshB,YACLthB,KAAKgG,OAAOhG,KAAKoT,SACjBpT,KAAKmE,UAAUnE,KAAKsE,WACpBtE,KAAK2rB,oBACD3rB,KAAKjD,QAAQ6uB,aAAa,aAC1B5rB,KAAKjD,QAAQkJ,aAAa,WAAY,SAE1C,OAAMqO,kBAAkBtU,KAAKnD,eAAgBmD,KAAKf,eAClDe,KAAKuU,iBACA,eAAkBvU,KAAKnD,iBAAoB,eAAkBmD,KAAKnD,eAAe+S,uBAAuB,cAAc,IAAM5P,KAAKnD,eAAe+S,uBAAuB,wBAAwB,IAA8B,UAAxB5P,KAAK9C,iBAC3M8C,KAAKnD,eAAe+S,uBAAuB,wBAAwB,GAAG9R,UAAUC,IAAI,UAExFiC,KAAK6rB,kBAETvoB,EAAYpD,UAAUyrB,kBAAoB,WACtC,IAAInoB,EAAQxD,KACR8rB,EAAS9rB,KAAKwN,sBAAsB5N,MAASI,KAAKwN,WAAWrP,OAAS,GACnE,eAAkB6B,KAAKwN,YAC9B,KAAMxN,KAAK/C,QAAS+C,KAAK/C,MAAMkB,SAC3B,eAAkB6B,KAAK8M,QACtBgf,GACwB,WAAzB9rB,KAAKjD,QAAQskB,SACbrhB,KAAKjD,QAAQgvB,QAAQ5tB,OAAS,EAAG,CAIjC,IAHA,IAAI6tB,EAAiBhsB,KAAKjD,QAAQgvB,QAC9BE,EAAW,GACXC,EAAU,GACLrhB,EAAQ,EAAGshB,EAAaH,EAAe7tB,OAAQ0M,EAAQshB,EAAYthB,IAAS,CACjF,IAAIuhB,EAAMJ,EAAenhB,GACpB,eAAkBuhB,EAAI5uB,aAAa,eAChC4uB,EAAI5uB,aAAa,SACjByuB,EAAS9mB,KAAKinB,EAAI5uB,aAAa,UAG/B0uB,GAAYE,EAAItf,KAAO9M,KAAKiM,eAIpCggB,EAAS9tB,OAAS,EAClB6B,KAAKkG,cAAc,CAAEjJ,MAAOgvB,IAAY,GAEvB,KAAZC,GACLlsB,KAAKkG,cAAc,CAAE4G,KAAMof,IAAW,IAEtCD,EAAS9tB,OAAS,GAAiB,KAAZ+tB,KACvBlsB,KAAKqU,oBACLrU,KAAKmG,uBAGRnG,KAAK/C,OAAS+C,KAAK/C,MAAMkB,SAAY,eAAkB6B,KAAK8M,SACxD9M,KAAK6I,MACNxF,EAAOnD,UAAUyW,OAAOlT,KAAKzD,OAGhC,eAAkBA,KAAK8M,QAAU,eAAkB9M,KAAK/C,QAAgC,IAAtB+C,KAAK/C,MAAMkB,QAC9E6B,KAAK2O,oBAEL3O,KAAK/C,OAAS+C,KAAK/C,MAAMkB,QACnB6B,KAAKwN,sBAAsB,OAK7BxN,KAAKwO,gBAAkB,WACnBhL,EAAMkS,YAAa,EACnBlS,EAAMoL,qBACNpL,EAAMqL,gBACNrL,EAAMgL,gBAAkB,KACxBhL,EAAMkS,YAAa,IATvB1V,KAAK4O,qBACL5O,KAAK6O,iBAWT7O,KAAK8V,mBAGL9V,KAAK6O,gBAET7O,KAAK0V,YAAa,EAClB1V,KAAKqsB,iBACA,eAAkBrsB,KAAK8M,OACxB9M,KAAKjD,QAAQkJ,aAAa,qBAAsBjG,KAAK8M,OAG7DxJ,EAAYpD,UAAUmsB,eAAiB,WAC/BrsB,KAAKjD,QAAQ6uB,aAAa,cAC1B5rB,KAAKhD,aAAa4K,SAG1BtE,EAAYpD,UAAUwa,kBAAoB,WACtCtc,EAAe4B,KAAKnD,eAAgBmD,KAAK3B,iBAAkB2B,KAAKlD,cAAekD,KAAKhD,aAAcgD,KAAK/C,MAAO+C,KAAK9C,eAAgB8C,KAAK7C,aAC5G,UAAxB6C,KAAK9C,gBACLN,EAAiBoD,KAAKnD,eAAgBmD,KAAKlD,cAAekD,KAAKjD,QAASiD,KAAKhD,aAAcgD,KAAK/C,MAAO+C,KAAK9C,eAAgB8C,KAAK7C,cAGzImG,EAAYpD,UAAUuiB,mBAAqB,WAClC,eAAkBziB,KAAKnD,mBAClB,eAAkBmD,KAAK/C,QAAU+C,KAAK/C,MAAMkB,QAAmC,WAAxB6B,KAAK9C,eAC9D,eAAS,CAAC8C,KAAKnD,gBAAiB,iBAGhC,gBAAY,CAACmD,KAAKnD,gBAAiB,mBAI/CyG,EAAYpD,UAAUgqB,aAAe,WAC7BlqB,KAAKgJ,kBACLhJ,KAAK8U,SAAW9U,KAAKf,cAAc,OAAQ,CAAE5B,UAAWyF,IACxD9C,KAAK3B,iBAAiBR,YAAYmC,KAAK8U,UACvC,eAAS,CAAC9U,KAAK3B,kBAAmB,CAAC,iBAG9B,eAAkB2B,KAAK8U,YACxB9U,KAAK8U,SAAStF,cAAcwY,YAAYhoB,KAAK8U,UAC7C,gBAAY,CAAC9U,KAAK3B,kBAAmB,CAAC,kBAIlDiF,EAAYpD,UAAU2O,cAAgB,WAChB,QAAd7O,KAAK0E,MAAoB1E,KAAK0O,aAA6B,YAAd1O,KAAK0E,MAAsB1E,KAAKkO,YAC7ElO,KAAKiU,kBAETjU,KAAK+G,iBACL/G,KAAKsF,sBACLtF,KAAKyG,eAAezG,KAAKqT,UACzBrT,KAAKqU,oBACLrU,KAAKqM,wBAQT/I,EAAYpD,UAAU2C,QAAU,WAExB7C,KAAK0qB,SACL1qB,KAAKssB,gBAELtsB,KAAKqE,UACLrE,KAAKqE,SAASwmB,OAElB7qB,KAAK8J,OAAOjH,EAAS,IACrB7C,KAAKsO,mBACLtO,KAAKqoB,cACLroB,KAAK6I,KAAO,KACZ7I,KAAKqE,SAAW,KAChBrE,KAAK+I,SAAW,KAChB/I,KAAK8N,SAAW,KAChB9N,KAAK8e,aAAe,KACpB9e,KAAKmK,UAAY,KACjBnK,KAAKgO,mBAAqB,KAC1B3K,EAAOnD,UAAU2C,QAAQY,KAAKzD,MAC9B,IAAIiQ,EAAO,CAAC,WAAY,gBAAiB,eACrC9R,EAAS8R,EAAK9R,OAClB,IAAK,eAAkB6B,KAAKhD,cACxB,MAAOmB,EAAS,EACZ6B,KAAKhD,aAAaY,gBAAgBqS,EAAK9R,EAAS,IAChDA,IAGH,eAAkB6B,KAAKjD,WACxBiD,KAAKjD,QAAQa,gBAAgB,sBAC7BoC,KAAKjD,QAAQ8J,MAAMC,QAAU,SAE7B9G,KAAKnD,gBAAkBmD,KAAKnD,eAAe2S,gBACvCxP,KAAKnD,eAAe2S,cAAc6R,UAAYrhB,KAAKkT,kBAInDlT,KAAKnD,eAAe2S,cAAcgc,aAAaxrB,KAAKjD,QAASiD,KAAKnD,gBAHlE,eAAOmD,KAAKnD,iBAOpBmD,KAAK3B,iBAAmB,KACxB2B,KAAK2G,aAAe,KACpB3G,KAAKnD,eAAiB,KACtBmD,KAAKwG,cAAgB,KACrBxG,KAAKlD,cAAgB,KACrBkD,KAAK8W,YAAc,KACnB9W,KAAKwL,sBAAwB,KAC7BxL,KAAKyM,mBAAqB,KAC1BzM,KAAK+F,aAAe,KACpB/F,KAAKhD,aAAe,KACpBgD,KAAKgX,iBAAmB,KACxBhX,KAAKqE,SAAW,KAChBrE,KAAK+F,aAAe,KACpB/F,KAAK0K,cAAgB,KACrB1K,KAAKof,OAAS,KACdpf,KAAK+I,SAAW,KAChB/I,KAAKgO,mBAAqB,KAC1BhO,KAAKuf,OAAS,KACdvf,KAAK8D,kBAAoB,MAE7B1D,EAAW,CACP,eAAQ,CAAE0M,KAAM,KAAM7P,MAAO,KAAMshB,QAAS,KAAM5V,QAAS,MAAQ,SACpErF,EAAYpD,UAAW,cAAU,GACpCE,EAAW,CACP,gBAAS,IACVkD,EAAYpD,UAAW,yBAAqB,GAC/CE,EAAW,CACP,eAAS,OACVkD,EAAYpD,UAAW,qBAAiB,GAC3CE,EAAW,CACP,eAAS,qBACVkD,EAAYpD,UAAW,yBAAqB,GAC/CE,EAAW,CACP,eAAS,mBACVkD,EAAYpD,UAAW,6BAAyB,GACnDE,EAAW,CACP,eAAS,SACVkD,EAAYpD,UAAW,iBAAa,GACvCE,EAAW,CACP,gBAAS,IACVkD,EAAYpD,UAAW,eAAW,GACrCE,EAAW,CACP,gBAAS,IACVkD,EAAYpD,UAAW,2BAAuB,GACjDE,EAAW,CACP,eAAS,KACVkD,EAAYpD,UAAW,kBAAc,GACxCE,EAAW,CACP,eAAS,OACVkD,EAAYpD,UAAW,aAAS,GACnCE,EAAW,CACP,eAAS,eACVkD,EAAYpD,UAAW,kBAAc,GACxCE,EAAW,CACP,eAAS,MACVkD,EAAYpD,UAAW,cAAU,GACpCE,EAAW,CACP,gBAAS,IACVkD,EAAYpD,UAAW,oBAAgB,GAC1CE,EAAW,CACP,kBACDkD,EAAYpD,UAAW,cAAU,GACpCE,EAAW,CACP,gBAAS,IACVkD,EAAYpD,UAAW,2BAAuB,GACjDE,EAAW,CACP,eAAS,OACVkD,EAAYpD,UAAW,gBAAY,GACtCE,EAAW,CACP,eAAS,SACVkD,EAAYpD,UAAW,aAAS,GACnCE,EAAW,CACP,eAAS,UACVkD,EAAYpD,UAAW,mBAAe,GACzCE,EAAW,CACP,eAAS,SACVkD,EAAYpD,UAAW,kBAAc,GACxCE,EAAW,CACP,eAAS,OACVkD,EAAYpD,UAAW,mBAAe,GACzCE,EAAW,CACP,eAAS,OACVkD,EAAYpD,UAAW,4BAAwB,GAClDE,EAAW,CACP,eAAS,KACVkD,EAAYpD,UAAW,sBAAkB,GAC5CE,EAAW,CACP,eAAS,OACVkD,EAAYpD,UAAW,qBAAiB,GAC3CE,EAAW,CACP,eAAS,OACVkD,EAAYpD,UAAW,sBAAkB,GAC5CE,EAAW,CACP,eAAS,OACVkD,EAAYpD,UAAW,sBAAkB,GAC5CE,EAAW,CACP,eAAS,OACVkD,EAAYpD,UAAW,oBAAgB,GAC1CE,EAAW,CACP,eAAS,OACVkD,EAAYpD,UAAW,sBAAkB,GAC5CE,EAAW,CACP,gBAAS,IACVkD,EAAYpD,UAAW,oBAAgB,GAC1CE,EAAW,CACP,gBAAS,IACVkD,EAAYpD,UAAW,wBAAoB,GAC9CE,EAAW,CACP,gBAAS,IACVkD,EAAYpD,UAAW,uBAAmB,GAC7CE,EAAW,CACP,eAAS,MACVkD,EAAYpD,UAAW,8BAA0B,GACpDE,EAAW,CACP,gBAAS,IACVkD,EAAYpD,UAAW,gBAAY,GACtCE,EAAW,CACP,eAAS,OACVkD,EAAYpD,UAAW,YAAQ,GAClCE,EAAW,CACP,eAAS,OACVkD,EAAYpD,UAAW,aAAS,GACnCE,EAAW,CACP,gBAAS,IACVkD,EAAYpD,UAAW,wBAAoB,GAC9CE,EAAW,CACP,gBAAS,IACVkD,EAAYpD,UAAW,0BAAsB,GAChDE,EAAW,CACP,eAAS,YACVkD,EAAYpD,UAAW,YAAQ,GAClCE,EAAW,CACP,eAAS,MACVkD,EAAYpD,UAAW,qBAAiB,GAC3CE,EAAW,CACP,gBAAS,IACVkD,EAAYpD,UAAW,kBAAc,GACxCE,EAAW,CACP,gBAAS,IACVkD,EAAYpD,UAAW,wBAAoB,GAC9CE,EAAW,CACP,eAAS,UACVkD,EAAYpD,UAAW,sBAAkB,GAC5CE,EAAW,CACP,gBAAS,IACVkD,EAAYpD,UAAW,qBAAiB,GAC3CE,EAAW,CACP,eAAS,eACVkD,EAAYpD,UAAW,qBAAiB,GAC3CE,EAAW,CACP,eAAS,iBACVkD,EAAYpD,UAAW,uBAAmB,GAC7CE,EAAW,CACP,gBAAS,IACVkD,EAAYpD,UAAW,4BAAwB,GAClDE,EAAW,CACP,gBAAS,IACVkD,EAAYpD,UAAW,mBAAe,GACzCE,EAAW,CACP,gBAAS,IACVkD,EAAYpD,UAAW,oBAAgB,GAC1CE,EAAW,CACP,kBACDkD,EAAYpD,UAAW,cAAU,GACpCE,EAAW,CACP,kBACDkD,EAAYpD,UAAW,gBAAY,GACtCE,EAAW,CACP,kBACDkD,EAAYpD,UAAW,eAAW,GACrCE,EAAW,CACP,kBACDkD,EAAYpD,UAAW,uBAAmB,GAC7CE,EAAW,CACP,kBACDkD,EAAYpD,UAAW,mBAAe,GACzCE,EAAW,CACP,kBACDkD,EAAYpD,UAAW,kBAAc,GACxCE,EAAW,CACP,kBACDkD,EAAYpD,UAAW,YAAQ,GAClCE,EAAW,CACP,kBACDkD,EAAYpD,UAAW,aAAS,GACnCE,EAAW,CACP,kBACDkD,EAAYpD,UAAW,YAAQ,GAClCE,EAAW,CACP,kBACDkD,EAAYpD,UAAW,aAAS,GACnCE,EAAW,CACP,kBACDkD,EAAYpD,UAAW,qBAAiB,GAC3CE,EAAW,CACP,kBACDkD,EAAYpD,UAAW,iBAAa,GACvCE,EAAW,CACP,kBACDkD,EAAYpD,UAAW,eAAW,GACrCE,EAAW,CACP,kBACDkD,EAAYpD,UAAW,4BAAwB,GAClDoD,EAAclD,EAAW,CACrB,QACDkD,GACIA,EAznIqB,CA0nI9B","file":"js/chunk-vendors~9cb7219f.41378b71.4.2.0.js","sourcesContent":["/**\n * FloatLable Moduel\n * Specifies whether to display the floating label above the input element.\n */\nimport { removeClass, addClass, detach } from '@syncfusion/ej2-base';\nimport { attributes, isNullOrUndefined, createElement, getUniqueID } from '@syncfusion/ej2-base';\nvar FLOATLINE = 'e-float-line';\nvar FLOATTEXT = 'e-float-text';\nvar LABELTOP = 'e-label-top';\nvar LABELBOTTOM = 'e-label-bottom';\n/* eslint-disable valid-jsdoc */\n/**\n * Function to create Float Label element.\n *\n * @param {HTMLDivElement} overAllWrapper - Overall wrapper of multiselect.\n * @param {HTMLElement} searchWrapper - Search wrapper of multiselect.\n * @param {HTMLElement} element - The given html element.\n * @param {HTMLInputElement} inputElement - Specify the input wrapper.\n * @param {number[] | string[] | boolean[]} value - Value of the MultiSelect.\n * @param {FloatLabelType} floatLabelType - Specify the FloatLabel Type.\n * @param {string} placeholder - Specify the PlaceHolder text.\n */\nexport function createFloatLabel(overAllWrapper, searchWrapper, element, inputElement, value, floatLabelType, placeholder) {\n var floatLinelement = createElement('span', { className: FLOATLINE });\n var floatLabelElement = createElement('label', { className: FLOATTEXT });\n var id = element.getAttribute('id') ? element.getAttribute('id') : getUniqueID('ej2_multiselect');\n element.id = id;\n if (!isNullOrUndefined(element.id) && element.id !== '') {\n floatLabelElement.id = 'label_' + element.id.replace(/ /g, '_');\n attributes(inputElement, { 'aria-labelledby': floatLabelElement.id });\n }\n if (!isNullOrUndefined(inputElement.placeholder) && inputElement.placeholder !== '') {\n floatLabelElement.innerText = encodePlaceholder(inputElement.placeholder);\n inputElement.removeAttribute('placeholder');\n }\n floatLabelElement.innerText = encodePlaceholder(placeholder);\n searchWrapper.appendChild(floatLinelement);\n searchWrapper.appendChild(floatLabelElement);\n overAllWrapper.classList.add('e-float-input');\n updateFloatLabelState(value, floatLabelElement);\n if (floatLabelType === 'Always') {\n if (floatLabelElement.classList.contains(LABELBOTTOM)) {\n removeClass([floatLabelElement], LABELBOTTOM);\n }\n addClass([floatLabelElement], LABELTOP);\n }\n}\n/**\n * Function to update status of the Float Label element.\n *\n * @param {string[] | number[] | boolean[]} value - Value of the MultiSelect.\n * @param {HTMLElement} label - Float label element.\n */\nexport function updateFloatLabelState(value, label) {\n if (value && value.length > 0) {\n addClass([label], LABELTOP);\n removeClass([label], LABELBOTTOM);\n }\n else {\n removeClass([label], LABELTOP);\n addClass([label], LABELBOTTOM);\n }\n}\n/**\n * Function to remove Float Label element.\n *\n * @param {HTMLDivElement} overAllWrapper - Overall wrapper of multiselect.\n * @param {HTMLDivElement} componentWrapper - Wrapper element of multiselect.\n * @param {HTMLElement} searchWrapper - Search wrapper of multiselect.\n * @param {HTMLInputElement} inputElement - Specify the input wrapper.\n * @param {number[] | string[] | boolean[]} value - Value of the MultiSelect.\n * @param {FloatLabelType} floatLabelType - Specify the FloatLabel Type.\n * @param {string} placeholder - Specify the PlaceHolder text.\n */\nexport function removeFloating(overAllWrapper, componentWrapper, searchWrapper, inputElement, value, floatLabelType, placeholder) {\n var placeholderElement = componentWrapper.querySelector('.' + FLOATTEXT);\n var floatLine = componentWrapper.querySelector('.' + FLOATLINE);\n var placeholderText;\n if (!isNullOrUndefined(placeholderElement)) {\n placeholderText = placeholderElement.innerText;\n detach(searchWrapper.querySelector('.' + FLOATTEXT));\n setPlaceHolder(value, inputElement, placeholderText);\n if (!isNullOrUndefined(floatLine)) {\n detach(searchWrapper.querySelector('.' + FLOATLINE));\n }\n }\n else {\n placeholderText = (placeholder !== null) ? placeholder : '';\n setPlaceHolder(value, inputElement, placeholderText);\n }\n overAllWrapper.classList.remove('e-float-input');\n}\n/**\n * Function to set the placeholder to the element.\n *\n * @param {number[] | string[] | boolean[]} value - Value of the MultiSelect.\n * @param {HTMLInputElement} inputElement - Specify the input wrapper.\n * @param {string} placeholder - Specify the PlaceHolder text.\n */\nexport function setPlaceHolder(value, inputElement, placeholder) {\n if (value && value.length) {\n inputElement.placeholder = '';\n }\n else {\n inputElement.placeholder = placeholder;\n }\n}\n/**\n * Function for focusing the Float Element.\n *\n * @param {HTMLDivElement} overAllWrapper - Overall wrapper of multiselect.\n * @param {HTMLDivElement} componentWrapper - Wrapper element of multiselect.\n */\nexport function floatLabelFocus(overAllWrapper, componentWrapper) {\n overAllWrapper.classList.add('e-input-focus');\n var label = componentWrapper.querySelector('.' + FLOATTEXT);\n if (!isNullOrUndefined(label)) {\n addClass([label], LABELTOP);\n if (label.classList.contains(LABELBOTTOM)) {\n removeClass([label], LABELBOTTOM);\n }\n }\n}\n/* eslint-disable @typescript-eslint/no-unused-vars */\n/**\n * Function to focus the Float Label element.\n *\n * @param {HTMLDivElement} overAllWrapper - Overall wrapper of multiselect.\n * @param {HTMLDivElement} componentWrapper - Wrapper element of multiselect.\n * @param {number[] | string[] | boolean[]} value - Value of the MultiSelect.\n * @param {FloatLabelType} floatLabelType - Specify the FloatLabel Type.\n * @param {string} placeholder - Specify the PlaceHolder text.\n */\nexport function floatLabelBlur(overAllWrapper, componentWrapper, value, floatLabelType, placeholder) {\n /* eslint-enable @typescript-eslint/no-unused-vars */\n overAllWrapper.classList.remove('e-input-focus');\n var label = componentWrapper.querySelector('.' + FLOATTEXT);\n if (value && value.length <= 0 && floatLabelType === 'Auto' && !isNullOrUndefined(label)) {\n if (label.classList.contains(LABELTOP)) {\n removeClass([label], LABELTOP);\n }\n addClass([label], LABELBOTTOM);\n }\n}\nexport function encodePlaceholder(placeholder) {\n var result = '';\n if (!isNullOrUndefined(placeholder) && placeholder !== '') {\n var spanElement = document.createElement('span');\n spanElement.innerHTML = '';\n var hiddenInput = (spanElement.children[0]);\n result = hiddenInput.placeholder;\n }\n return result;\n}\n/* eslint-enable valid-jsdoc */\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};\n// eslint-disable-next-line @typescript-eslint/triple-slash-reference\n/// \nimport { DropDownBase, dropDownBaseClasses } from '../drop-down-base/drop-down-base';\nimport { FieldSettings } from '../drop-down-base/drop-down-base';\nimport { Popup, createSpinner, showSpinner, hideSpinner } from '@syncfusion/ej2-popups';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { attributes, setValue, SanitizeHtmlHelper, getValue } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, extend } from '@syncfusion/ej2-base';\nimport { EventHandler, Property, Event, compile, L10n } from '@syncfusion/ej2-base';\nimport { Animation, Browser, prepend, Complex } from '@syncfusion/ej2-base';\nimport { Search } from '../common/incremental-search';\nimport { append, addClass, removeClass, closest, detach, remove, select, selectAll } from '@syncfusion/ej2-base';\nimport { getUniqueID, formatUnit, isNullOrUndefined, isUndefined } from '@syncfusion/ej2-base';\nimport { DataManager, Query, Predicate } from '@syncfusion/ej2-data';\nimport { createFloatLabel, removeFloating, floatLabelFocus, floatLabelBlur, encodePlaceholder } from './float-label';\nvar FOCUS = 'e-input-focus';\nvar DISABLED = 'e-disabled';\nvar OVER_ALL_WRAPPER = 'e-multiselect e-input-group e-control-wrapper';\nvar ELEMENT_WRAPPER = 'e-multi-select-wrapper';\nvar ELEMENT_MOBILE_WRAPPER = 'e-mob-wrapper';\nvar HIDE_LIST = 'e-hide-listitem';\nvar DELIMITER_VIEW = 'e-delim-view';\nvar CHIP_WRAPPER = 'e-chips-collection';\nvar CHIP = 'e-chips';\nvar CHIP_CONTENT = 'e-chipcontent';\nvar CHIP_CLOSE = 'e-chips-close';\nvar CHIP_SELECTED = 'e-chip-selected';\nvar SEARCHBOX_WRAPPER = 'e-searcher';\nvar DELIMITER_VIEW_WRAPPER = 'e-delimiter';\nvar ZERO_SIZE = 'e-zero-size';\nvar REMAIN_WRAPPER = 'e-remain';\nvar CLOSEICON_CLASS = 'e-chips-close e-close-hooker';\nvar DELIMITER_WRAPPER = 'e-delim-values';\nvar POPUP_WRAPPER = 'e-ddl e-popup e-multi-select-list-wrapper';\nvar INPUT_ELEMENT = 'e-dropdownbase';\nvar RTL_CLASS = 'e-rtl';\nvar CLOSE_ICON_HIDE = 'e-close-icon-hide';\nvar MOBILE_CHIP = 'e-mob-chip';\nvar FOOTER = 'e-ddl-footer';\nvar HEADER = 'e-ddl-header';\nvar DISABLE_ICON = 'e-ddl-disable-icon';\nvar SPINNER_CLASS = 'e-ms-spinner-icon';\nvar HIDDEN_ELEMENT = 'e-multi-hidden';\nvar destroy = 'destroy';\nvar dropdownIcon = 'e-input-group-icon e-ddl-icon';\nvar iconAnimation = 'e-icon-anim';\nvar TOTAL_COUNT_WRAPPER = 'e-delim-total';\nvar BOX_ELEMENT = 'e-multiselect-box';\nvar FILTERPARENT = 'e-filter-parent';\nvar CUSTOM_WIDTH = 'e-search-custom-width';\nvar FILTERINPUT = 'e-input-filter';\n/**\n * The Multiselect allows the user to pick a more than one value from list of predefined values.\n * ```html\n * \n * ```\n * ```typescript\n * \n * ```\n */\nvar MultiSelect = /** @class */ (function (_super) {\n __extends(MultiSelect, _super);\n /**\n * Constructor for creating the DropDownList widget.\n *\n * @param {MultiSelectModel} option - Specifies the MultiSelect model.\n * @param {string | HTMLElement} element - Specifies the element to render as component.\n * @private\n */\n function MultiSelect(option, element) {\n var _this = _super.call(this, option, element) || this;\n _this.clearIconWidth = 0;\n _this.previousFilterText = '';\n _this.isValidKey = false;\n _this.selectAllEventData = [];\n _this.selectAllEventEle = [];\n _this.resetMainList = null;\n _this.resetFilteredData = false;\n _this.scrollFocusStatus = false;\n _this.keyDownStatus = false;\n return _this;\n }\n MultiSelect.prototype.enableRTL = function (state) {\n if (state) {\n this.overAllWrapper.classList.add(RTL_CLASS);\n }\n else {\n this.overAllWrapper.classList.remove(RTL_CLASS);\n }\n if (this.popupObj) {\n this.popupObj.enableRtl = state;\n this.popupObj.dataBind();\n }\n };\n MultiSelect.prototype.requiredModules = function () {\n var modules = [];\n if (this.mode === 'CheckBox') {\n this.isGroupChecking = this.enableGroupCheckBox;\n if (this.enableGroupCheckBox) {\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n this.enableSelectionOrder = false;\n this.isProtectedOnChange = prevOnChange;\n }\n this.allowCustomValue = false;\n this.hideSelectedItem = false;\n this.closePopupOnSelect = false;\n modules.push({\n member: 'CheckBoxSelection',\n args: [this]\n });\n }\n return modules;\n };\n MultiSelect.prototype.updateHTMLAttribute = function () {\n if (Object.keys(this.htmlAttributes).length) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var htmlAttr = _a[_i];\n switch (htmlAttr) {\n case 'class': {\n var updatedClassValue = (this.htmlAttributes[\"\" + htmlAttr].replace(/\\s+/g, ' ')).trim();\n if (updatedClassValue !== '') {\n addClass([this.overAllWrapper], updatedClassValue.split(' '));\n addClass([this.popupWrapper], updatedClassValue.split(' '));\n }\n break;\n }\n case 'disabled':\n this.enable(false);\n break;\n case 'placeholder':\n if (!this.placeholder) {\n this.inputElement.setAttribute(htmlAttr, this.htmlAttributes[\"\" + htmlAttr]);\n this.setProperties({ placeholder: this.inputElement.placeholder }, true);\n this.refreshPlaceHolder();\n }\n break;\n default: {\n var defaultAttr = ['id'];\n var validateAttr = ['name', 'required', 'aria-required', 'form'];\n var containerAttr = ['title', 'role', 'style', 'class'];\n if (defaultAttr.indexOf(htmlAttr) > -1) {\n this.element.setAttribute(htmlAttr, this.htmlAttributes[\"\" + htmlAttr]);\n }\n else if (htmlAttr.indexOf('data') === 0 || validateAttr.indexOf(htmlAttr) > -1) {\n this.hiddenElement.setAttribute(htmlAttr, this.htmlAttributes[\"\" + htmlAttr]);\n }\n else if (containerAttr.indexOf(htmlAttr) > -1) {\n this.overAllWrapper.setAttribute(htmlAttr, this.htmlAttributes[\"\" + htmlAttr]);\n }\n else if (htmlAttr !== 'size' && !isNullOrUndefined(this.inputElement)) {\n this.inputElement.setAttribute(htmlAttr, this.htmlAttributes[\"\" + htmlAttr]);\n }\n break;\n }\n }\n }\n }\n };\n MultiSelect.prototype.updateReadonly = function (state) {\n if (!isNullOrUndefined(this.inputElement)) {\n if (state || this.mode === 'CheckBox') {\n this.inputElement.setAttribute('readonly', 'true');\n }\n else {\n this.inputElement.removeAttribute('readonly');\n }\n }\n };\n MultiSelect.prototype.updateClearButton = function (state) {\n if (state) {\n if (this.overAllClear.parentNode) {\n this.overAllClear.style.display = '';\n }\n else {\n this.componentWrapper.appendChild(this.overAllClear);\n }\n this.componentWrapper.classList.remove(CLOSE_ICON_HIDE);\n }\n else {\n this.overAllClear.style.display = 'none';\n this.componentWrapper.classList.add(CLOSE_ICON_HIDE);\n }\n };\n MultiSelect.prototype.updateCssClass = function () {\n if (!isNullOrUndefined(this.cssClass) && this.cssClass !== '') {\n var updatedCssClassValues = this.cssClass;\n updatedCssClassValues = (this.cssClass.replace(/\\s+/g, ' ')).trim();\n if (updatedCssClassValues !== '') {\n addClass([this.overAllWrapper], updatedCssClassValues.split(' '));\n addClass([this.popupWrapper], updatedCssClassValues.split(' '));\n }\n }\n };\n MultiSelect.prototype.updateOldPropCssClass = function (oldClass) {\n if (!isNullOrUndefined(oldClass) && oldClass !== '') {\n oldClass = (oldClass.replace(/\\s+/g, ' ')).trim();\n if (oldClass !== '') {\n removeClass([this.overAllWrapper], oldClass.split(' '));\n removeClass([this.popupWrapper], oldClass.split(' '));\n }\n }\n };\n MultiSelect.prototype.onPopupShown = function (e) {\n var _this = this;\n if (Browser.isDevice && (this.mode === 'CheckBox' && this.allowFiltering)) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var proxy_1 = this;\n window.onpopstate = function () {\n proxy_1.hidePopup();\n proxy_1.inputElement.focus();\n };\n history.pushState({}, '');\n }\n var animModel = { name: 'FadeIn', duration: 100 };\n var eventArgs = { popup: this.popupObj, event: e, cancel: false, animation: animModel };\n this.trigger('open', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n _this.focusAtFirstListItem();\n if (_this.popupObj) {\n document.body.appendChild(_this.popupObj.element);\n }\n if (_this.mode === 'CheckBox' && _this.enableGroupCheckBox && !isNullOrUndefined(_this.fields.groupBy)) {\n _this.updateListItems(_this.list.querySelectorAll('li.e-list-item'), _this.mainList.querySelectorAll('li.e-list-item'));\n }\n if (_this.mode === 'CheckBox' || _this.showDropDownIcon) {\n addClass([_this.overAllWrapper], [iconAnimation]);\n }\n _this.refreshPopup();\n _this.renderReactTemplates();\n if (_this.popupObj) {\n _this.popupObj.show(eventArgs.animation, (_this.zIndex === 1000) ? _this.element : null);\n }\n attributes(_this.inputElement, { 'aria-expanded': 'true', 'aria-owns': _this.inputElement.id + '_options' });\n _this.updateAriaActiveDescendant();\n if (_this.isFirstClick) {\n _this.loadTemplate();\n }\n }\n });\n };\n MultiSelect.prototype.updateListItems = function (listItems, mainListItems) {\n for (var i = 0; i < listItems.length; i++) {\n this.findGroupStart(listItems[i]);\n this.findGroupStart(mainListItems[i]);\n }\n this.deselectHeader();\n };\n MultiSelect.prototype.loadTemplate = function () {\n this.refreshListItems(null);\n if (this.mode === 'CheckBox') {\n this.removeFocus();\n }\n this.notify('reOrder', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', e: this });\n };\n MultiSelect.prototype.setScrollPosition = function () {\n if (((!this.hideSelectedItem && this.mode !== 'CheckBox') || (this.mode === 'CheckBox' && !this.enableSelectionOrder)) &&\n (!isNullOrUndefined(this.value) && (this.value.length > 0))) {\n var valueEle = this.findListElement((this.hideSelectedItem ? this.ulElement : this.list), 'li', 'data-value', this.value[this.value.length - 1]);\n if (!isNullOrUndefined(valueEle)) {\n this.scrollBottom(valueEle);\n }\n }\n };\n MultiSelect.prototype.focusAtFirstListItem = function () {\n if (this.ulElement && this.ulElement.querySelector('li.'\n + dropDownBaseClasses.li)) {\n var element = void 0;\n if (this.mode === 'CheckBox') {\n this.removeFocus();\n return;\n }\n else {\n element = this.ulElement.querySelector('li.'\n + dropDownBaseClasses.li + ':not(.'\n + HIDE_LIST + ')');\n }\n if (element !== null) {\n this.removeFocus();\n this.addListFocus(element);\n }\n }\n };\n MultiSelect.prototype.focusAtLastListItem = function (data) {\n var activeElement;\n if (data) {\n activeElement = Search(data, this.liCollections, 'StartsWith', this.ignoreCase);\n }\n else {\n if (this.value && this.value.length) {\n Search(this.value[this.value.length - 1], this.liCollections, 'StartsWith', this.ignoreCase);\n }\n else {\n activeElement = null;\n }\n }\n if (activeElement && activeElement.item !== null) {\n this.addListFocus(activeElement.item);\n this.scrollBottom(activeElement.item, activeElement.index);\n }\n };\n MultiSelect.prototype.getAriaAttributes = function () {\n var ariaAttributes = {\n 'aria-disabled': 'false',\n 'role': 'combobox',\n 'aria-expanded': 'false'\n };\n return ariaAttributes;\n };\n MultiSelect.prototype.updateListARIA = function () {\n if (!isNullOrUndefined(this.ulElement)) {\n attributes(this.ulElement, { 'id': this.element.id + '_options', 'role': 'listbox', 'aria-hidden': 'false' });\n }\n var disableStatus = !isNullOrUndefined(this.inputElement) && (this.inputElement.disabled) ? true : false;\n if (!this.isPopupOpen() && !isNullOrUndefined(this.inputElement)) {\n attributes(this.inputElement, this.getAriaAttributes());\n }\n if (disableStatus) {\n attributes(this.inputElement, { 'aria-disabled': 'true' });\n }\n this.ensureAriaDisabled((disableStatus) ? 'true' : 'false');\n };\n MultiSelect.prototype.ensureAriaDisabled = function (status) {\n if (this.htmlAttributes && this.htmlAttributes['aria-disabled']) {\n var attr = this.htmlAttributes;\n extend(attr, { 'aria-disabled': status }, attr);\n this.setProperties({ htmlAttributes: attr }, true);\n }\n };\n MultiSelect.prototype.removelastSelection = function (e) {\n var elements = this.chipCollectionWrapper.querySelectorAll('span.' + CHIP);\n var value = elements[elements.length - 1].getAttribute('data-value');\n if (!isNullOrUndefined(this.value)) {\n this.tempValues = this.value.slice();\n }\n var customValue = this.getFormattedValue(value);\n if (this.allowCustomValue && (value !== 'false' && customValue === false || (!isNullOrUndefined(customValue) &&\n customValue.toString() === 'NaN'))) {\n customValue = value;\n }\n this.removeValue(customValue, e);\n this.removeChipSelection();\n this.updateDelimeter(this.delimiterChar, e);\n this.makeTextBoxEmpty();\n if (this.mainList && this.listData) {\n this.refreshSelection();\n }\n this.checkPlaceholderSize();\n };\n MultiSelect.prototype.onActionFailure = function (e) {\n _super.prototype.onActionFailure.call(this, e);\n this.renderPopup();\n this.onPopupShown();\n };\n MultiSelect.prototype.targetElement = function () {\n this.targetInputElement = this.inputElement;\n if (this.mode === 'CheckBox' && this.allowFiltering) {\n this.notify('targetElement', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox' });\n }\n return this.targetInputElement.value;\n };\n MultiSelect.prototype.getForQuery = function (valuecheck) {\n var predicate;\n var field = isNullOrUndefined(this.fields.value) ? this.fields.text : this.fields.value;\n for (var i = 0; i < valuecheck.length; i++) {\n if (i === 0) {\n predicate = new Predicate(field, 'equal', valuecheck[i]);\n }\n else {\n predicate = predicate.or(field, 'equal', valuecheck[i]);\n }\n }\n return this.getQuery(this.query).where(predicate);\n };\n /* eslint-disable @typescript-eslint/no-unused-vars */\n MultiSelect.prototype.onActionComplete = function (ulElement, list, e, isUpdated) {\n /* eslint-enable @typescript-eslint/no-unused-vars */\n _super.prototype.onActionComplete.call(this, ulElement, list, e);\n this.updateSelectElementData(this.allowFiltering);\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var proxy = this;\n if (!isNullOrUndefined(this.value) && !this.allowCustomValue) {\n for (var i = 0; i < this.value.length; i++) {\n var checkEle = this.findListElement(((this.allowFiltering && !isNullOrUndefined(this.mainList)) ? this.mainList : ulElement), 'li', 'data-value', proxy.value[i]);\n if (!checkEle && !(this.dataSource instanceof DataManager)) {\n this.value.splice(i, 1);\n i -= 1;\n }\n }\n }\n var valuecheck = [];\n if (!isNullOrUndefined(this.value) && !this.allowCustomValue) {\n valuecheck = this.presentItemValue(this.ulElement);\n }\n if (valuecheck.length > 0 && this.dataSource instanceof DataManager && !isNullOrUndefined(this.value)\n && this.listData != null) {\n this.addNonPresentItems(valuecheck, this.ulElement, this.listData);\n }\n else {\n this.updateActionList(ulElement, list, e);\n }\n if (this.dataSource instanceof DataManager && this.mode === 'CheckBox' && this.allowFiltering) {\n this.removeFocus();\n }\n };\n /* eslint-disable @typescript-eslint/no-unused-vars */\n MultiSelect.prototype.updateActionList = function (ulElement, list, e, isUpdated) {\n /* eslint-enable @typescript-eslint/no-unused-vars */\n if (this.mode === 'CheckBox' && this.showSelectAll) {\n this.notify('selectAll', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox' });\n }\n if (!this.mainList && !this.mainData) {\n this.mainList = ulElement.cloneNode ? ulElement.cloneNode(true) : ulElement;\n this.mainData = list;\n this.mainListCollection = this.liCollections;\n }\n else if (isNullOrUndefined(this.mainData) || this.mainData.length === 0) {\n this.mainData = list;\n }\n if ((this.remoteCustomValue || list.length <= 0) && this.allowCustomValue && this.inputFocus && this.allowFiltering &&\n this.inputElement.value && this.inputElement.value !== '') {\n this.checkForCustomValue(this.tempQuery, this.fields);\n return;\n }\n if (this.value && this.value.length && ((this.mode !== 'CheckBox' && !isNullOrUndefined(this.inputElement) && this.inputElement.value.trim() !== '') ||\n this.mode === 'CheckBox' || ((this.keyCode === 8 || this.keyCode === 46) && this.allowFiltering &&\n this.allowCustomValue && this.dataSource instanceof DataManager && this.inputElement.value === ''))) {\n this.refreshSelection();\n }\n this.updateListARIA();\n this.unwireListEvents();\n this.wireListEvents();\n if (!isNullOrUndefined(this.setInitialValue)) {\n this.setInitialValue();\n }\n if (!isNullOrUndefined(this.selectAllAction)) {\n this.selectAllAction();\n }\n if (this.setDynValue) {\n if (!isNullOrUndefined(this.text) && (isNullOrUndefined(this.value) || this.value.length === 0)) {\n this.initialTextUpdate();\n }\n this.initialValueUpdate();\n this.initialUpdate();\n this.refreshPlaceHolder();\n if (this.mode !== 'CheckBox' && this.changeOnBlur) {\n this.updateValueState(null, this.value, null);\n }\n }\n this.renderPopup();\n if (this.beforePopupOpen) {\n this.beforePopupOpen = false;\n this.onPopupShown(e);\n }\n };\n MultiSelect.prototype.refreshSelection = function () {\n var value;\n var element;\n var className = this.hideSelectedItem ?\n HIDE_LIST :\n dropDownBaseClasses.selected;\n if (!isNullOrUndefined(this.value)) {\n for (var index = 0; !isNullOrUndefined(this.value[index]); index++) {\n value = this.value[index];\n element = this.findListElement(this.list, 'li', 'data-value', value);\n if (element) {\n addClass([element], className);\n if (this.hideSelectedItem && element.previousSibling\n && element.previousElementSibling.classList.contains(dropDownBaseClasses.group)\n && (!element.nextElementSibling ||\n element.nextElementSibling.classList.contains(dropDownBaseClasses.group))) {\n addClass([element.previousElementSibling], className);\n }\n if (this.hideSelectedItem && this.fields.groupBy && !element.previousElementSibling.classList.contains(HIDE_LIST)) {\n this.hideGroupItem(value);\n }\n if (this.hideSelectedItem && element.classList.contains(dropDownBaseClasses.focus)) {\n removeClass([element], dropDownBaseClasses.focus);\n var listEle = element.parentElement.querySelectorAll('.' +\n dropDownBaseClasses.li + ':not(.' + HIDE_LIST + ')');\n if (listEle.length > 0) {\n addClass([listEle[0]], dropDownBaseClasses.focus);\n this.updateAriaActiveDescendant();\n }\n else {\n //EJ2-57588 - for this task, we prevent the ul element cloning ( this.ulElement = this.ulElement.cloneNode ? this.ulElement.cloneNode(true) : this.ulElement;)\n if (!(this.list && this.list.querySelectorAll('.' + dropDownBaseClasses.li).length > 0)) {\n this.l10nUpdate();\n addClass([this.list], dropDownBaseClasses.noData);\n }\n }\n }\n element.setAttribute('aria-selected', 'true');\n if (this.mode === 'CheckBox' && element.classList.contains('e-active')) {\n var ariaValue = element.getElementsByClassName('e-check').length;\n if (ariaValue === 0) {\n var args = {\n module: 'CheckBoxSelection',\n enable: this.mode === 'CheckBox',\n li: element,\n e: null\n };\n this.notify('updatelist', args);\n }\n }\n }\n }\n }\n this.checkSelectAll();\n this.checkMaxSelection();\n };\n MultiSelect.prototype.hideGroupItem = function (value) {\n var element;\n var element1;\n var className = this.hideSelectedItem ?\n HIDE_LIST :\n dropDownBaseClasses.selected;\n element1 = element = this.findListElement(this.ulElement, 'li', 'data-value', value);\n var i = 0;\n var j = 0;\n var temp = true;\n var temp1 = true;\n do {\n if (element && element.previousElementSibling\n && (!element.previousElementSibling.classList.contains(HIDE_LIST) &&\n element.previousElementSibling.classList.contains(dropDownBaseClasses.li))) {\n temp = false;\n }\n if (!temp || !element || (element.previousElementSibling\n && element.previousElementSibling.classList.contains(dropDownBaseClasses.group))) {\n i = 10;\n }\n else {\n element = element.previousElementSibling;\n }\n if (element1 && element1.nextElementSibling\n && (!element1.nextElementSibling.classList.contains(HIDE_LIST) &&\n element1.nextElementSibling.classList.contains(dropDownBaseClasses.li))) {\n temp1 = false;\n }\n if (!temp1 || !element1 || (element1.nextElementSibling\n && element1.nextElementSibling.classList.contains(dropDownBaseClasses.group))) {\n j = 10;\n }\n else {\n element1 = element1.nextElementSibling;\n }\n } while (i < 10 || j < 10);\n if (temp && temp1 && !element.previousElementSibling.classList.contains(HIDE_LIST)) {\n addClass([element.previousElementSibling], className);\n }\n else if (temp && temp1 && element.previousElementSibling.classList.contains(HIDE_LIST)) {\n removeClass([element.previousElementSibling], className);\n }\n };\n MultiSelect.prototype.getValidLi = function () {\n var liElement = this.ulElement.querySelector('li.' + dropDownBaseClasses.li + ':not(.' + HIDE_LIST + ')');\n return (!isNullOrUndefined(liElement) ? liElement : this.liCollections[0]);\n };\n MultiSelect.prototype.checkSelectAll = function () {\n var groupItemLength = this.list.querySelectorAll('li.e-list-group-item.e-active').length;\n var listItem = this.list.querySelectorAll('li.e-list-item');\n var searchCount = this.list.querySelectorAll('li.' + dropDownBaseClasses.li).length;\n var searchActiveCount = this.list.querySelectorAll('li.' + dropDownBaseClasses.selected).length;\n if (this.enableGroupCheckBox && !isNullOrUndefined(this.fields.groupBy)) {\n searchActiveCount = searchActiveCount - groupItemLength;\n }\n if ((searchCount === searchActiveCount || searchActiveCount === this.maximumSelectionLength)\n && (this.mode === 'CheckBox' && this.showSelectAll)) {\n this.notify('checkSelectAll', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', value: 'check' });\n }\n else if ((searchCount !== searchActiveCount) && (this.mode === 'CheckBox' && this.showSelectAll)) {\n this.notify('checkSelectAll', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', value: 'uncheck' });\n }\n if (this.enableGroupCheckBox && this.fields.groupBy && !this.enableSelectionOrder) {\n for (var i = 0; i < listItem.length; i++) {\n this.findGroupStart(listItem[i]);\n }\n this.deselectHeader();\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n MultiSelect.prototype.openClick = function (e) {\n if (!this.openOnClick && this.mode !== 'CheckBox') {\n if (this.targetElement() !== '') {\n this.showPopup();\n }\n else {\n this.hidePopup(e);\n }\n }\n else if (!this.openOnClick && this.mode === 'CheckBox' && !this.isPopupOpen()) {\n this.showPopup();\n }\n };\n MultiSelect.prototype.keyUp = function (e) {\n if (this.mode === 'CheckBox' && !this.openOnClick) {\n var char = String.fromCharCode(e.keyCode);\n var isWordCharacter = char.match(/\\w/);\n if (!isNullOrUndefined(isWordCharacter)) {\n this.isValidKey = true;\n }\n }\n this.isValidKey = (this.isPopupOpen() && e.keyCode === 8) || this.isValidKey;\n this.isValidKey = e.ctrlKey && e.keyCode === 86 ? false : this.isValidKey;\n if (this.isValidKey) {\n this.isValidKey = false;\n this.expandTextbox();\n this.showOverAllClear();\n switch (e.keyCode) {\n default:\n // For filtering works in mobile firefox\n this.search(e);\n }\n }\n };\n /**\n * To filter the multiselect data from given data source by using query\n *\n * @param {Object[] | DataManager } 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 MultiSelect.prototype.filter = function (dataSource, query, fields) {\n this.isFiltered = true;\n this.remoteFilterAction = true;\n this.dataUpdater(dataSource, query, fields);\n };\n MultiSelect.prototype.getQuery = function (query) {\n var filterQuery = query ? query.clone() : this.query ? this.query.clone() : new Query();\n if (this.isFiltered) {\n return filterQuery;\n }\n if (this.filterAction) {\n if (this.targetElement() !== null) {\n var dataType = this.typeOfData(this.dataSource).typeof;\n if (!(this.dataSource instanceof DataManager) && dataType === 'string' || dataType === 'number') {\n filterQuery.where('', this.filterType, this.targetElement(), this.ignoreCase, this.ignoreAccent);\n }\n else {\n var fields = this.fields;\n filterQuery.where(!isNullOrUndefined(fields.text) ? fields.text : '', this.filterType, this.targetElement(), this.ignoreCase, this.ignoreAccent);\n }\n }\n return filterQuery;\n }\n else {\n return query ? query : this.query ? this.query : new Query();\n }\n };\n MultiSelect.prototype.dataUpdater = function (dataSource, query, fields) {\n this.isDataFetched = false;\n if (this.targetElement().trim() === '') {\n var list = this.mainList.cloneNode ? this.mainList.cloneNode(true) : this.mainList;\n if (this.backCommand) {\n this.remoteCustomValue = false;\n if (this.allowCustomValue && list.querySelectorAll('li').length == 0 && this.mainData.length > 0) {\n this.mainData = [];\n }\n this.onActionComplete(list, this.mainData);\n if (this.value && this.value.length) {\n this.refreshSelection();\n }\n if (this.keyCode !== 8) {\n this.focusAtFirstListItem();\n }\n this.notify('reOrder', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', e: this });\n }\n }\n else {\n this.resetList(dataSource, fields, query);\n if (this.allowCustomValue) {\n if (!(dataSource instanceof DataManager)) {\n this.checkForCustomValue(query, fields);\n }\n else {\n this.remoteCustomValue = true;\n this.tempQuery = query;\n }\n }\n }\n this.refreshPopup();\n if (this.mode === 'CheckBox') {\n this.removeFocus();\n }\n };\n MultiSelect.prototype.checkForCustomValue = function (query, fields) {\n var dataChecks = !this.getValueByText(this.inputElement.value, this.ignoreCase);\n if (this.allowCustomValue && dataChecks) {\n var value = this.inputElement.value;\n var field = fields ? fields : this.fields;\n var customData = (!isNullOrUndefined(this.mainData) && this.mainData.length > 0) ?\n this.mainData[0] : this.mainData;\n if (typeof (customData) !== 'string' && typeof (customData) !== 'number' && typeof (customData) !== 'boolean') {\n var dataItem = {};\n setValue(field.text, value, dataItem);\n if (typeof getValue((this.fields.value ? this.fields.value : 'value'), customData)\n === 'number') {\n setValue(field.value, Math.random(), dataItem);\n }\n else {\n setValue(field.value, value, dataItem);\n }\n var tempData = JSON.parse(JSON.stringify(this.listData));\n tempData.splice(0, 0, dataItem);\n this.resetList(tempData, field, query);\n }\n else {\n var tempData = JSON.parse(JSON.stringify(this.listData));\n tempData.splice(0, 0, this.inputElement.value);\n tempData[0] = (typeof customData === 'number' && !isNaN(parseFloat(tempData[0]))) ?\n parseFloat(tempData[0]) : tempData[0];\n tempData[0] = (typeof customData === 'boolean') ?\n (tempData[0] === 'true' ? true : (tempData[0] === 'false' ? false : tempData[0])) : tempData[0];\n this.resetList(tempData, field);\n }\n }\n if (this.value && this.value.length) {\n this.refreshSelection();\n }\n };\n MultiSelect.prototype.getNgDirective = function () {\n return 'EJS-MULTISELECT';\n };\n MultiSelect.prototype.wrapperClick = function (e) {\n this.setDynValue = false;\n if (!this.enabled) {\n return;\n }\n if (e.target === this.overAllClear) {\n e.preventDefault();\n return;\n }\n if (!this.inputFocus) {\n this.inputElement.focus();\n }\n if (!this.readonly) {\n if (e.target && e.target.classList.toString().indexOf(CHIP_CLOSE) !== -1) {\n if (this.isPopupOpen()) {\n this.refreshPopup();\n }\n return;\n }\n if (!this.isPopupOpen() &&\n (this.openOnClick || (this.showDropDownIcon && e.target && e.target.className === dropdownIcon))) {\n this.showPopup(e);\n }\n else {\n this.hidePopup(e);\n if (this.mode === 'CheckBox') {\n this.showOverAllClear();\n this.inputFocus = true;\n if (!this.overAllWrapper.classList.contains(FOCUS)) {\n this.overAllWrapper.classList.add(FOCUS);\n }\n }\n }\n }\n if (!(this.targetElement() && this.targetElement() !== '')) {\n e.preventDefault();\n }\n };\n MultiSelect.prototype.enable = function (state) {\n if (state) {\n this.overAllWrapper.classList.remove(DISABLED);\n this.inputElement.removeAttribute('disabled');\n attributes(this.inputElement, { 'aria-disabled': 'false' });\n this.ensureAriaDisabled('false');\n }\n else {\n this.overAllWrapper.classList.add(DISABLED);\n this.inputElement.setAttribute('disabled', 'true');\n attributes(this.inputElement, { 'aria-disabled': 'true' });\n this.ensureAriaDisabled('true');\n }\n if (this.enabled !== state) {\n this.enabled = state;\n }\n this.hidePopup();\n };\n MultiSelect.prototype.onBlurHandler = function (eve, isDocClickFromCheck) {\n var target;\n if (!isNullOrUndefined(eve)) {\n target = eve.relatedTarget;\n }\n if (this.popupObj && document.body.contains(this.popupObj.element) && this.popupObj.element.contains(target)) {\n if (this.mode !== 'CheckBox') {\n this.inputElement.focus();\n }\n else if ((this.floatLabelType === 'Auto' &&\n ((this.overAllWrapper.classList.contains('e-outline')) || (this.overAllWrapper.classList.contains('e-filled'))))) {\n addClass([this.overAllWrapper], 'e-valid-input');\n }\n return;\n }\n if (this.floatLabelType === 'Auto' && (this.overAllWrapper.classList.contains('e-outline')) && this.mode === 'CheckBox' &&\n ((isNullOrUndefined(this.value)) || this.value.length === 0)) {\n removeClass([this.overAllWrapper], 'e-valid-input');\n }\n if (this.mode === 'CheckBox' && Browser.isIE && !isNullOrUndefined(eve) && !isDocClickFromCheck) {\n this.inputFocus = false;\n this.overAllWrapper.classList.remove(FOCUS);\n return;\n }\n if (this.scrollFocusStatus) {\n if (!isNullOrUndefined(eve)) {\n eve.preventDefault();\n }\n this.inputElement.focus();\n this.scrollFocusStatus = false;\n return;\n }\n this.inputFocus = false;\n this.overAllWrapper.classList.remove(FOCUS);\n if (this.addTagOnBlur) {\n var dataChecks = this.getValueByText(this.inputElement.value, this.ignoreCase, this.ignoreAccent);\n var listLiElement = this.findListElement(this.list, 'li', 'data-value', dataChecks);\n var className = this.hideSelectedItem ? HIDE_LIST : dropDownBaseClasses.selected;\n var allowChipAddition = (listLiElement && !listLiElement.classList.contains(className)) ? true : false;\n if (allowChipAddition) {\n this.updateListSelection(listLiElement, eve);\n if (this.mode === 'Delimiter') {\n this.updateDelimeter(this.delimiterChar);\n }\n }\n }\n this.updateDataList();\n if (this.resetMainList) {\n this.mainList = this.resetMainList;\n this.resetMainList = null;\n }\n this.refreshListItems(null);\n if (this.mode !== 'Box' && this.mode !== 'CheckBox') {\n this.updateDelimView();\n }\n if (this.changeOnBlur) {\n this.updateValueState(eve, this.value, this.tempValues);\n this.dispatchEvent(this.hiddenElement, 'change');\n }\n this.overAllClear.style.display = 'none';\n if (this.isPopupOpen()) {\n this.hidePopup(eve);\n }\n this.makeTextBoxEmpty();\n this.trigger('blur');\n this.focused = true;\n if (Browser.isDevice && this.mode !== 'Delimiter' && this.mode !== 'CheckBox') {\n this.removeChipFocus();\n }\n this.removeChipSelection();\n this.refreshInputHight();\n floatLabelBlur(this.overAllWrapper, this.componentWrapper, this.value, this.floatLabelType, this.placeholder);\n this.refreshPlaceHolder();\n if ((this.allowFiltering || (this.enableSelectionOrder === true && this.mode === 'CheckBox'))\n && !isNullOrUndefined(this.mainList)) {\n this.ulElement = this.mainList;\n }\n this.checkPlaceholderSize();\n Input.createSpanElement(this.overAllWrapper, this.createElement);\n this.calculateWidth();\n if (!isNullOrUndefined(this.overAllWrapper) && !isNullOrUndefined(this.overAllWrapper.getElementsByClassName('e-ddl-icon')[0] && this.overAllWrapper.getElementsByClassName('e-float-text-content')[0] && this.floatLabelType !== 'Never')) {\n this.overAllWrapper.getElementsByClassName('e-float-text-content')[0].classList.add('e-icon');\n }\n };\n MultiSelect.prototype.calculateWidth = function () {\n var elementWidth;\n if (this.overAllWrapper) {\n if (!this.showDropDownIcon || this.overAllWrapper.querySelector('.' + 'e-label-top')) {\n elementWidth = this.overAllWrapper.clientWidth - 2 * (parseInt(getComputedStyle(this.inputElement).paddingRight));\n }\n else {\n var downIconWidth = this.dropIcon.offsetWidth +\n parseInt(getComputedStyle(this.dropIcon).marginRight);\n elementWidth = this.overAllWrapper.clientWidth - (downIconWidth + 2 * (parseInt(getComputedStyle(this.inputElement).paddingRight)));\n }\n Input.calculateWidth(elementWidth, this.overAllWrapper, this.getModuleName());\n }\n };\n MultiSelect.prototype.checkPlaceholderSize = function () {\n if (this.showDropDownIcon) {\n var downIconWidth = this.dropIcon.offsetWidth +\n parseInt(window.getComputedStyle(this.dropIcon).marginRight, 10);\n this.setPlaceholderSize(downIconWidth);\n }\n else {\n if (!isNullOrUndefined(this.dropIcon)) {\n this.setPlaceholderSize(this.showDropDownIcon ? this.dropIcon.offsetWidth : 0);\n }\n }\n };\n MultiSelect.prototype.setPlaceholderSize = function (downIconWidth) {\n if (isNullOrUndefined(this.value) || this.value.length === 0) {\n if (this.dropIcon.offsetWidth !== 0) {\n this.searchWrapper.style.width = ('calc(100% - ' + (downIconWidth + 10)) + 'px';\n }\n else {\n addClass([this.searchWrapper], CUSTOM_WIDTH);\n }\n }\n else if (!isNullOrUndefined(this.value)) {\n this.searchWrapper.removeAttribute('style');\n removeClass([this.searchWrapper], CUSTOM_WIDTH);\n }\n };\n MultiSelect.prototype.refreshInputHight = function () {\n if (!isNullOrUndefined(this.searchWrapper)) {\n if ((!this.value || !this.value.length) && (isNullOrUndefined(this.text) || this.text === '')) {\n this.searchWrapper.classList.remove(ZERO_SIZE);\n }\n else {\n this.searchWrapper.classList.add(ZERO_SIZE);\n }\n }\n };\n MultiSelect.prototype.validateValues = function (newValue, oldValue) {\n return JSON.stringify(newValue.slice().sort()) !== JSON.stringify(oldValue.slice().sort());\n };\n MultiSelect.prototype.updateValueState = function (event, newVal, oldVal) {\n var newValue = newVal ? newVal : [];\n var oldValue = oldVal ? oldVal : [];\n if (this.initStatus && this.validateValues(newValue, oldValue)) {\n var eventArgs = {\n e: event,\n oldValue: oldVal,\n value: newVal,\n isInteracted: event ? true : false,\n element: this.element,\n event: event\n };\n if (this.isAngular && this.preventChange) {\n this.preventChange = false;\n }\n else {\n this.trigger('change', eventArgs);\n }\n this.updateTempValue();\n if (!this.changeOnBlur) {\n this.dispatchEvent(this.hiddenElement, 'change');\n }\n }\n };\n MultiSelect.prototype.updateTempValue = function () {\n if (!this.value) {\n this.tempValues = this.value;\n }\n else {\n this.tempValues = this.value.slice();\n }\n };\n MultiSelect.prototype.updateAriaActiveDescendant = function () {\n if (!isNullOrUndefined(this.ulElement) && !isNullOrUndefined(this.ulElement.getElementsByClassName('e-item-focus')[0])) {\n attributes(this.inputElement, { 'aria-activedescendant': this.ulElement.getElementsByClassName('e-item-focus')[0].id });\n }\n };\n MultiSelect.prototype.getPagingCount = function () {\n var height = this.list.classList.contains(dropDownBaseClasses.noData) ? null :\n getComputedStyle(this.getItems()[0], null).getPropertyValue('height');\n return Math.round(this.list.offsetHeight / parseInt(height, 10));\n };\n MultiSelect.prototype.pageUpSelection = function (steps) {\n var collection = this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li + ':not(.' + HIDE_LIST + ')' + ':not(.e-reorder-hide)');\n var previousItem = steps >= 0 ? collection[steps + 1] : collection[0];\n this.addListFocus(previousItem);\n this.scrollBottom(previousItem, this.getIndexByValue(previousItem.getAttribute('data-value')));\n };\n MultiSelect.prototype.pageDownSelection = function (steps) {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n var list = this.getItems();\n var collection = this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li + ':not(.' + HIDE_LIST + ')' + ':not(.e-reorder-hide)');\n var previousItem = steps <= collection.length ? collection[steps - 1] : collection[collection.length - 1];\n this.addListFocus(previousItem);\n this.scrollBottom(previousItem, this.getIndexByValue(previousItem.getAttribute('data-value')));\n };\n MultiSelect.prototype.getItems = function () {\n if (!this.list) {\n _super.prototype.render.call(this);\n }\n return this.ulElement && this.ulElement.querySelectorAll('.' + dropDownBaseClasses.li).length > 0 ?\n this.ulElement.querySelectorAll('.' + dropDownBaseClasses.li\n + ':not(.' + HIDE_LIST + ')') : [];\n };\n MultiSelect.prototype.focusInHandler = function (e) {\n var _this = this;\n if (this.enabled) {\n this.showOverAllClear();\n this.inputFocus = true;\n if (this.value && this.value.length) {\n if (this.mode !== 'Delimiter' && this.mode !== 'CheckBox') {\n this.chipCollectionWrapper.style.display = '';\n }\n else {\n this.showDelimWrapper();\n }\n if (this.mode !== 'CheckBox') {\n this.viewWrapper.style.display = 'none';\n }\n }\n if (this.mode !== 'CheckBox') {\n this.searchWrapper.classList.remove(ZERO_SIZE);\n }\n this.checkPlaceholderSize();\n if (this.focused) {\n var args = { isInteracted: e ? true : false, event: e };\n this.trigger('focus', args);\n this.focused = false;\n }\n if (!this.overAllWrapper.classList.contains(FOCUS)) {\n this.overAllWrapper.classList.add(FOCUS);\n }\n floatLabelFocus(this.overAllWrapper, this.componentWrapper);\n if (this.isPopupOpen()) {\n this.refreshPopup();\n }\n setTimeout(function () {\n _this.calculateWidth();\n }, 150);\n return true;\n }\n else {\n return false;\n }\n };\n MultiSelect.prototype.showDelimWrapper = function () {\n if (this.mode === 'CheckBox') {\n this.viewWrapper.style.display = '';\n }\n else {\n this.delimiterWrapper.style.display = '';\n }\n this.componentWrapper.classList.add(DELIMITER_VIEW_WRAPPER);\n };\n MultiSelect.prototype.hideDelimWrapper = function () {\n this.delimiterWrapper.style.display = 'none';\n this.componentWrapper.classList.remove(DELIMITER_VIEW_WRAPPER);\n };\n MultiSelect.prototype.expandTextbox = function () {\n var size = 5;\n if (this.placeholder) {\n size = size > this.inputElement.placeholder.length ? size : this.inputElement.placeholder.length;\n }\n if (this.inputElement.value.length > size) {\n this.inputElement.size = this.inputElement.value.length;\n }\n else {\n this.inputElement.size = size;\n }\n };\n MultiSelect.prototype.isPopupOpen = function () {\n return ((this.popupWrapper !== null) && (this.popupWrapper.parentElement !== null));\n };\n MultiSelect.prototype.refreshPopup = function () {\n if (this.popupObj && this.mobFilter) {\n this.popupObj.setProperties({ width: this.calcPopupWidth() });\n this.popupObj.refreshPosition(this.overAllWrapper);\n this.popupObj.resolveCollision();\n }\n };\n MultiSelect.prototype.checkTextLength = function () {\n return this.targetElement().length < 1;\n };\n MultiSelect.prototype.popupKeyActions = function (e) {\n switch (e.keyCode) {\n case 38:\n this.hidePopup(e);\n if (this.mode === 'CheckBox') {\n this.inputElement.focus();\n }\n e.preventDefault();\n break;\n case 40:\n if (!this.isPopupOpen()) {\n this.showPopup(e);\n e.preventDefault();\n }\n break;\n }\n };\n MultiSelect.prototype.updateAriaAttribute = function () {\n var focusedItem = this.list.querySelector('.' + dropDownBaseClasses.focus);\n if (!isNullOrUndefined(focusedItem)) {\n this.inputElement.setAttribute('aria-activedescendant', focusedItem.id);\n if (this.allowFiltering) {\n var filterInput = this.popupWrapper.querySelector('.' + FILTERINPUT);\n filterInput && filterInput.setAttribute('aria-activedescendant', focusedItem.id);\n }\n else if (this.mode == \"CheckBox\") {\n this.overAllWrapper.setAttribute('aria-activedescendant', focusedItem.id);\n }\n }\n };\n MultiSelect.prototype.homeNavigation = function (isHome) {\n this.removeFocus();\n var scrollEle = this.ulElement.querySelectorAll('li.' + dropDownBaseClasses.li\n + ':not(.' + HIDE_LIST + ')' + ':not(.e-reorder-hide)');\n if (scrollEle.length > 0) {\n var element = scrollEle[(isHome) ? 0 : (scrollEle.length - 1)];\n element.classList.add(dropDownBaseClasses.focus);\n this.scrollBottom(element);\n this.updateAriaActiveDescendant();\n }\n };\n MultiSelect.prototype.onKeyDown = function (e) {\n if (this.readonly || !this.enabled && this.mode !== 'CheckBox') {\n return;\n }\n this.keyCode = e.keyCode;\n this.keyDownStatus = true;\n if (e.keyCode > 111 && e.keyCode < 124) {\n return;\n }\n if (e.altKey) {\n this.popupKeyActions(e);\n return;\n }\n else if (this.isPopupOpen()) {\n var focusedItem = this.list.querySelector('.' + dropDownBaseClasses.focus);\n var activeIndex = void 0;\n switch (e.keyCode) {\n case 36:\n case 35:\n this.homeNavigation((e.keyCode === 36) ? true : false);\n break;\n case 33:\n e.preventDefault();\n if (focusedItem) {\n this.getIndexByValue(focusedItem.getAttribute('data-value'));\n this.pageUpSelection(activeIndex - this.getPagingCount());\n this.updateAriaAttribute();\n }\n return;\n case 34:\n e.preventDefault();\n if (focusedItem) {\n this.getIndexByValue(focusedItem.getAttribute('data-value'));\n this.pageDownSelection(activeIndex + this.getPagingCount());\n this.updateAriaAttribute();\n }\n return;\n case 38:\n this.arrowUp(e);\n break;\n case 40:\n this.arrowDown(e);\n break;\n case 27:\n e.preventDefault();\n this.hidePopup(e);\n if (this.mode === 'CheckBox') {\n this.inputElement.focus();\n }\n return;\n case 13:\n e.preventDefault();\n if (this.mode !== 'CheckBox') {\n this.selectByKey(e);\n }\n this.checkPlaceholderSize();\n return;\n case 32:\n this.spaceKeySelection(e);\n return;\n case 9:\n e.preventDefault();\n this.hidePopup(e);\n this.inputElement.focus();\n this.overAllWrapper.classList.add(FOCUS);\n }\n }\n else {\n switch (e.keyCode) {\n case 13:\n case 9:\n case 16:\n case 17:\n case 20:\n return;\n case 40:\n if (this.openOnClick) {\n this.showPopup();\n }\n break;\n case 27:\n e.preventDefault();\n this.escapeAction();\n return;\n }\n }\n if (this.checkTextLength()) {\n this.keyNavigation(e);\n }\n if (this.mode === 'CheckBox' && this.enableSelectionOrder) {\n if (this.allowFiltering) {\n this.previousFilterText = this.targetElement();\n }\n this.checkBackCommand(e);\n }\n this.expandTextbox();\n if (!(this.mode === 'CheckBox' && this.showSelectAll)) {\n this.refreshPopup();\n }\n };\n MultiSelect.prototype.arrowDown = function (e) {\n e.preventDefault();\n this.moveByList(1);\n this.keyAction = true;\n if (document.activeElement.classList.contains(FILTERINPUT)\n || (this.mode === 'CheckBox' && !this.allowFiltering && document.activeElement !== this.list)) {\n EventHandler.add(this.list, 'keydown', this.onKeyDown, this);\n }\n this.updateAriaAttribute();\n };\n MultiSelect.prototype.arrowUp = function (e) {\n e.preventDefault();\n this.keyAction = true;\n var list = this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li\n + ':not(.' + HIDE_LIST + ')' + ':not(.e-reorder-hide)');\n if (this.enableGroupCheckBox && this.mode === 'CheckBox' && !isNullOrUndefined(this.fields.groupBy)) {\n list = this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li + ',li.' + dropDownBaseClasses.group\n + ':not(.' + HIDE_LIST + ')' + ':not(.e-reorder-hide)');\n }\n var focuseElem = this.list.querySelector('li.' + dropDownBaseClasses.focus);\n var index = Array.prototype.slice.call(list).indexOf(focuseElem);\n if (index <= 0 && (this.mode === 'CheckBox' && this.allowFiltering)) {\n this.keyAction = false;\n this.notify('inputFocus', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', value: 'focus' });\n }\n this.moveByList(-1);\n this.updateAriaAttribute();\n };\n MultiSelect.prototype.spaceKeySelection = function (e) {\n if (this.mode === 'CheckBox') {\n if (!document.activeElement.classList.contains(FILTERINPUT)) {\n e.preventDefault();\n this.keyAction = true;\n }\n this.selectByKey(e);\n }\n this.checkPlaceholderSize();\n };\n MultiSelect.prototype.checkBackCommand = function (e) {\n if (e.keyCode === 8 && this.allowFiltering ? this.targetElement() !== this.previousFilterText : this.targetElement() === '') {\n this.backCommand = false;\n }\n else {\n this.backCommand = true;\n }\n };\n MultiSelect.prototype.keyNavigation = function (e) {\n if ((this.mode !== 'Delimiter' && this.mode !== 'CheckBox') && this.value && this.value.length) {\n switch (e.keyCode) {\n case 37: //left arrow\n e.preventDefault();\n this.moveBy(-1, e);\n break;\n case 39: //right arrow\n e.preventDefault();\n this.moveBy(1, e);\n break;\n case 8:\n this.removelastSelection(e);\n break;\n case 46: //del\n this.removeSelectedChip(e);\n break;\n }\n }\n else if (e.keyCode === 8 && this.mode === 'Delimiter') {\n if (this.value && this.value.length) {\n e.preventDefault();\n var temp = this.value[this.value.length - 1];\n this.removeValue(temp, e);\n this.updateDelimeter(this.delimiterChar, e);\n this.focusAtLastListItem(temp);\n }\n }\n };\n MultiSelect.prototype.selectByKey = function (e) {\n this.removeChipSelection();\n this.selectListByKey(e);\n if (this.hideSelectedItem) {\n this.focusAtFirstListItem();\n }\n };\n MultiSelect.prototype.escapeAction = function () {\n var temp = this.tempValues ? this.tempValues.slice() : [];\n if (this.value && this.validateValues(this.value, temp)) {\n if (this.mode !== 'CheckBox') {\n this.value = temp;\n this.initialValueUpdate();\n }\n if (this.mode !== 'Delimiter' && this.mode !== 'CheckBox') {\n this.chipCollectionWrapper.style.display = '';\n }\n else {\n this.showDelimWrapper();\n }\n this.refreshPlaceHolder();\n if (this.value.length) {\n this.showOverAllClear();\n }\n else {\n this.hideOverAllClear();\n }\n }\n this.makeTextBoxEmpty();\n };\n MultiSelect.prototype.scrollBottom = function (selectedLI, activeIndex) {\n var currentOffset = this.list.offsetHeight;\n var nextBottom = selectedLI.offsetTop + selectedLI.offsetHeight - this.list.scrollTop;\n var nextOffset = this.list.scrollTop + nextBottom - currentOffset;\n var boxRange = (selectedLI.offsetTop + selectedLI.offsetHeight - this.list.scrollTop);\n boxRange = this.fields.groupBy && !isNullOrUndefined(this.fixedHeaderElement) ?\n boxRange - this.fixedHeaderElement.offsetHeight : boxRange;\n if (activeIndex === 0) {\n this.list.scrollTop = 0;\n }\n else if (nextBottom > currentOffset) {\n this.list.scrollTop = nextOffset;\n }\n else if (!(boxRange > 0 && this.list.offsetHeight > boxRange)) {\n this.list.scrollTop = nextOffset;\n }\n };\n MultiSelect.prototype.scrollTop = function (selectedLI, activeIndex) {\n var nextOffset = selectedLI.offsetTop - this.list.scrollTop;\n nextOffset = this.fields.groupBy && !isUndefined(this.fixedHeaderElement) ?\n nextOffset - this.fixedHeaderElement.offsetHeight : nextOffset;\n var boxRange = (selectedLI.offsetTop + selectedLI.offsetHeight - this.list.scrollTop);\n if (activeIndex === 0) {\n this.list.scrollTop = 0;\n }\n else if (nextOffset < 0) {\n this.list.scrollTop = this.list.scrollTop + nextOffset;\n }\n else if (!(boxRange > 0 && this.list.offsetHeight > boxRange)) {\n this.list.scrollTop = selectedLI.offsetTop - (this.fields.groupBy && !isUndefined(this.fixedHeaderElement) ?\n this.fixedHeaderElement.offsetHeight : 0);\n }\n };\n MultiSelect.prototype.selectListByKey = function (e) {\n var li = this.list.querySelector('li.' + dropDownBaseClasses.focus);\n var limit = this.value && this.value.length ? this.value.length : 0;\n var target;\n if (li !== null) {\n if (li.classList.contains('e-active')) {\n limit = limit - 1;\n }\n if (this.isValidLI(li) && limit < this.maximumSelectionLength) {\n this.updateListSelection(li, e);\n this.addListFocus(li);\n if (this.mode === 'CheckBox') {\n this.updateDelimView();\n this.updateDelimeter(this.delimiterChar, e);\n this.refreshInputHight();\n this.checkPlaceholderSize();\n if (this.enableGroupCheckBox && !isNullOrUndefined(this.fields.groupBy)) {\n target = li.firstElementChild.lastElementChild;\n this.findGroupStart(target);\n this.deselectHeader();\n }\n }\n else {\n this.updateDelimeter(this.delimiterChar, e);\n }\n this.makeTextBoxEmpty();\n if (this.mode !== 'CheckBox') {\n this.refreshListItems(li.textContent);\n }\n if (!this.changeOnBlur) {\n this.updateValueState(e, this.value, this.tempValues);\n }\n this.refreshPopup();\n }\n else {\n if (!this.isValidLI(li) && limit < this.maximumSelectionLength) {\n target = li.firstElementChild.lastElementChild;\n if (target.classList.contains('e-check')) {\n this.selectAllItem(false, e, li);\n }\n else {\n this.selectAllItem(true, e, li);\n }\n }\n }\n this.refreshSelection();\n if (this.closePopupOnSelect) {\n this.hidePopup(e);\n }\n }\n this.refreshPlaceHolder();\n };\n MultiSelect.prototype.refreshListItems = function (data) {\n if ((this.allowFiltering || (this.mode === 'CheckBox' && this.enableSelectionOrder === true)\n || this.allowCustomValue) && this.mainList && this.listData) {\n var list = this.mainList.cloneNode ? this.mainList.cloneNode(true) : this.mainList;\n this.onActionComplete(list, this.mainData);\n this.focusAtLastListItem(data);\n if (this.value && this.value.length) {\n this.refreshSelection();\n }\n }\n else if (!isNullOrUndefined(this.fields.groupBy) && this.value && this.value.length) {\n this.refreshSelection();\n }\n };\n MultiSelect.prototype.removeSelectedChip = function (e) {\n var selectedElem = this.chipCollectionWrapper.querySelector('span.' + CHIP_SELECTED);\n var temp;\n if (selectedElem !== null) {\n if (!isNullOrUndefined(this.value)) {\n this.tempValues = this.value.slice();\n }\n temp = selectedElem.nextElementSibling;\n if (temp !== null) {\n this.removeChipSelection();\n this.addChipSelection(temp, e);\n }\n this.removeValue(selectedElem.getAttribute('data-value'), e);\n this.makeTextBoxEmpty();\n }\n if (this.closePopupOnSelect) {\n this.hidePopup(e);\n }\n this.checkPlaceholderSize();\n };\n MultiSelect.prototype.moveByTop = function (state) {\n var elements = this.list.querySelectorAll('li.' + dropDownBaseClasses.li);\n var index;\n if (elements.length > 1) {\n this.removeFocus();\n index = state ? 0 : (elements.length - 1);\n this.addListFocus(elements[index]);\n this.scrollBottom(elements[index], index);\n }\n this.updateAriaAttribute();\n };\n MultiSelect.prototype.moveByList = function (position) {\n if (this.list) {\n var elements = this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li\n + ':not(.' + HIDE_LIST + ')' + ':not(.e-reorder-hide)');\n if (this.mode === 'CheckBox' && this.enableGroupCheckBox && !isNullOrUndefined(this.fields.groupBy)) {\n elements = this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li + ',li.' + dropDownBaseClasses.group\n + ':not(.' + HIDE_LIST + ')' + ':not(.e-reorder-hide)');\n }\n var selectedElem = this.list.querySelector('li.' + dropDownBaseClasses.focus);\n var temp = -1;\n if (elements.length) {\n for (var index = 0; index < elements.length; index++) {\n if (elements[index] === selectedElem) {\n temp = index;\n break;\n }\n }\n if (position > 0) {\n if (temp < (elements.length - 1)) {\n this.removeFocus();\n this.addListFocus(elements[++temp]);\n this.updateCheck(elements[temp]);\n this.scrollBottom(elements[temp], temp);\n }\n }\n else {\n if (temp > 0) {\n this.removeFocus();\n this.addListFocus(elements[--temp]);\n this.updateCheck(elements[temp]);\n this.scrollTop(elements[temp], temp);\n }\n }\n }\n }\n };\n MultiSelect.prototype.updateCheck = function (element) {\n if (this.mode === 'CheckBox' && this.enableGroupCheckBox &&\n !isNullOrUndefined(this.fields.groupBy)) {\n var checkElement = element.firstElementChild.lastElementChild;\n if (checkElement.classList.contains('e-check')) {\n element.classList.add('e-active');\n }\n else {\n element.classList.remove('e-active');\n }\n }\n };\n MultiSelect.prototype.moveBy = function (position, e) {\n var temp;\n var elements = this.chipCollectionWrapper.querySelectorAll('span.' + CHIP);\n var selectedElem = this.chipCollectionWrapper.querySelector('span.' + CHIP_SELECTED);\n if (selectedElem === null) {\n if (position < 0) {\n this.addChipSelection(elements[elements.length - 1], e);\n }\n }\n else {\n if (position < 0) {\n temp = selectedElem.previousElementSibling;\n if (temp !== null) {\n this.removeChipSelection();\n this.addChipSelection(temp, e);\n }\n }\n else {\n temp = selectedElem.nextElementSibling;\n this.removeChipSelection();\n if (temp !== null) {\n this.addChipSelection(temp, e);\n }\n }\n }\n };\n MultiSelect.prototype.chipClick = function (e) {\n if (this.enabled) {\n var elem = closest(e.target, '.' + CHIP);\n this.removeChipSelection();\n this.addChipSelection(elem, e);\n }\n };\n MultiSelect.prototype.removeChipSelection = function () {\n if (this.chipCollectionWrapper) {\n this.removeChipFocus();\n }\n };\n MultiSelect.prototype.addChipSelection = function (element, e) {\n addClass([element], CHIP_SELECTED);\n this.trigger('chipSelection', e);\n };\n MultiSelect.prototype.onChipRemove = function (e) {\n if (e.which === 3 || e.button === 2) {\n return;\n }\n if (this.enabled && !this.readonly) {\n var element = e.target.parentElement;\n var customVal = element.getAttribute('data-value');\n var value = this.getFormattedValue(customVal);\n if (this.allowCustomValue && ((customVal !== 'false' && value === false) ||\n (!isNullOrUndefined(value) && value.toString() === 'NaN'))) {\n value = customVal;\n }\n if (this.isPopupOpen() && this.mode !== 'CheckBox') {\n this.hidePopup(e);\n }\n if (!this.inputFocus) {\n this.inputElement.focus();\n }\n this.removeValue(value, e);\n if (isNullOrUndefined(this.findListElement(this.list, 'li', 'data-value', value)) && this.mainList && this.listData) {\n var list = this.mainList.cloneNode ? this.mainList.cloneNode(true) : this.mainList;\n this.onActionComplete(list, this.mainData);\n }\n this.updateDelimeter(this.delimiterChar, e);\n if (this.placeholder && this.floatLabelType === 'Never') {\n this.makeTextBoxEmpty();\n this.checkPlaceholderSize();\n }\n else {\n this.inputElement.value = '';\n }\n e.preventDefault();\n }\n };\n MultiSelect.prototype.makeTextBoxEmpty = function () {\n this.inputElement.value = '';\n this.refreshPlaceHolder();\n };\n MultiSelect.prototype.refreshPlaceHolder = function () {\n if (this.placeholder && this.floatLabelType === 'Never') {\n if ((this.value && this.value.length) || (!isNullOrUndefined(this.text) && this.text !== '')) {\n this.inputElement.placeholder = '';\n }\n else {\n this.inputElement.placeholder = encodePlaceholder(this.placeholder);\n }\n }\n else {\n this.setFloatLabelType();\n }\n this.expandTextbox();\n };\n MultiSelect.prototype.removeAllItems = function (value, eve, isClearAll, element, mainElement) {\n var index = this.value.indexOf(value);\n var removeVal = this.value.slice(0);\n removeVal.splice(index, 1);\n this.setProperties({ value: [].concat([], removeVal) }, true);\n element.setAttribute('aria-selected', 'false');\n var className = this.hideSelectedItem ?\n HIDE_LIST :\n dropDownBaseClasses.selected;\n removeClass([element], className);\n this.notify('activeList', {\n module: 'CheckBoxSelection',\n enable: this.mode === 'CheckBox', li: element,\n e: this, index: index\n });\n this.invokeCheckboxSelection(element, eve, isClearAll);\n this.updateMainList(true, value, mainElement);\n this.updateChipStatus();\n };\n MultiSelect.prototype.invokeCheckboxSelection = function (element, eve, isClearAll) {\n this.notify('updatelist', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', li: element, e: eve });\n this.updateAriaActiveDescendant();\n if ((this.value && this.value.length !== this.mainData.length)\n && (this.mode === 'CheckBox' && this.showSelectAll && !(this.isSelectAll || isClearAll))) {\n this.notify('checkSelectAll', {\n module: 'CheckBoxSelection',\n enable: this.mode === 'CheckBox',\n value: 'uncheck'\n });\n }\n };\n MultiSelect.prototype.removeValue = function (value, eve, length, isClearAll) {\n var _this = this;\n var index = this.value.indexOf(this.getFormattedValue(value));\n if (index === -1 && this.allowCustomValue && !isNullOrUndefined(value)) {\n index = this.value.indexOf(value.toString());\n }\n var targetEle = eve && eve.target;\n isClearAll = (isClearAll || targetEle && targetEle.classList.contains('e-close-hooker')) ? true : null;\n var className = this.hideSelectedItem ?\n HIDE_LIST :\n dropDownBaseClasses.selected;\n if (index !== -1) {\n var element_1 = this.findListElement(this.list, 'li', 'data-value', value);\n var val_1 = this.getDataByValue(value);\n var eventArgs = {\n e: eve,\n item: element_1,\n itemData: val_1,\n isInteracted: eve ? true : false,\n cancel: false\n };\n this.trigger('removing', eventArgs, function (eventArgs) {\n if (eventArgs.cancel) {\n _this.removeIndex++;\n }\n else {\n var removeVal = _this.value.slice(0);\n removeVal.splice(index, 1);\n _this.setProperties({ value: [].concat([], removeVal) }, true);\n if (element_1 !== null) {\n var hideElement = _this.findListElement(_this.mainList, 'li', 'data-value', value);\n element_1.setAttribute('aria-selected', 'false');\n removeClass([element_1], className);\n if (hideElement) {\n hideElement.setAttribute('aria-selected', 'false');\n removeClass([element_1, hideElement], className);\n }\n _this.notify('activeList', {\n module: 'CheckBoxSelection',\n enable: _this.mode === 'CheckBox', li: element_1,\n e: _this, index: index\n });\n _this.invokeCheckboxSelection(element_1, eve, isClearAll);\n }\n if (_this.hideSelectedItem && _this.fields.groupBy && element_1) {\n _this.hideGroupItem(value);\n }\n if (_this.hideSelectedItem && _this.fixedHeaderElement && _this.fields.groupBy && _this.mode !== 'CheckBox' &&\n _this.isPopupOpen()) {\n _super.prototype.scrollStop.call(_this);\n }\n _this.updateMainList(true, value);\n _this.removeChip(value);\n _this.updateChipStatus();\n var limit = _this.value && _this.value.length ? _this.value.length : 0;\n if (limit < _this.maximumSelectionLength) {\n var collection = _this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li + ':not(.e-active)');\n removeClass(collection, 'e-disable');\n }\n _this.trigger('removed', eventArgs);\n var targetEle_1 = eve && eve.currentTarget;\n var isSelectAll = (targetEle_1 && targetEle_1.classList.contains('e-selectall-parent')) ? true : null;\n if (!_this.changeOnBlur && !isClearAll && (eve && length && !isSelectAll)) {\n _this.updateValueState(eve, _this.value, _this.tempValues);\n }\n if (length) {\n _this.selectAllEventData.push(val_1);\n _this.selectAllEventEle.push(element_1);\n }\n if (length === 1) {\n if (!_this.changeOnBlur) {\n _this.updateValueState(eve, _this.value, _this.tempValues);\n }\n var args = {\n event: eve,\n items: _this.selectAllEventEle,\n itemData: _this.selectAllEventData,\n isInteracted: eve ? true : false,\n isChecked: false\n };\n _this.trigger('selectedAll', args);\n _this.selectAllEventData = [];\n _this.selectAllEventEle = [];\n }\n if (isClearAll && (length === 1 || length === null)) {\n _this.clearAllCallback(eve, isClearAll);\n }\n }\n });\n }\n };\n MultiSelect.prototype.updateMainList = function (state, value, mainElement) {\n if (this.allowFiltering || this.mode === 'CheckBox') {\n var element2 = mainElement ? mainElement :\n this.findListElement(this.mainList, 'li', 'data-value', value);\n if (element2) {\n if (state) {\n element2.setAttribute('aria-selected', 'false');\n removeClass([element2], this.hideSelectedItem ?\n HIDE_LIST :\n dropDownBaseClasses.selected);\n if (this.mode === 'CheckBox') {\n removeClass([element2.firstElementChild.lastElementChild], 'e-check');\n }\n }\n else {\n element2.setAttribute('aria-selected', 'true');\n addClass([element2], this.hideSelectedItem ?\n HIDE_LIST :\n dropDownBaseClasses.selected);\n if (this.mode === 'CheckBox') {\n addClass([element2.firstElementChild.lastElementChild], 'e-check');\n }\n }\n }\n }\n };\n MultiSelect.prototype.removeChip = function (value) {\n if (this.chipCollectionWrapper) {\n var element = this.findListElement(this.chipCollectionWrapper, 'span', 'data-value', value);\n if (element) {\n remove(element);\n }\n }\n };\n MultiSelect.prototype.setWidth = function (width) {\n if (!isNullOrUndefined(width)) {\n if (typeof width === 'number') {\n this.overAllWrapper.style.width = formatUnit(width);\n }\n else if (typeof width === 'string') {\n this.overAllWrapper.style.width = (width.match(/px|%|em/)) ? (width) : (formatUnit(width));\n }\n }\n };\n MultiSelect.prototype.updateChipStatus = function () {\n if (this.value && this.value.length) {\n if (!isNullOrUndefined(this.chipCollectionWrapper)) {\n (this.chipCollectionWrapper.style.display = '');\n }\n if (this.mode === 'Delimiter' || this.mode === 'CheckBox') {\n this.showDelimWrapper();\n }\n this.showOverAllClear();\n }\n else {\n if (!isNullOrUndefined(this.chipCollectionWrapper)) {\n this.chipCollectionWrapper.style.display = 'none';\n }\n if (!isNullOrUndefined(this.delimiterWrapper)) {\n (this.delimiterWrapper.style.display = 'none');\n }\n this.hideOverAllClear();\n }\n };\n MultiSelect.prototype.addValue = function (value, text, eve) {\n if (!this.value) {\n this.value = [];\n }\n if (this.value.indexOf(value) < 0) {\n this.setProperties({ value: [].concat([], this.value, [value]) }, true);\n }\n var element = this.findListElement(this.list, 'li', 'data-value', value);\n this.removeFocus();\n if (element) {\n this.addListFocus(element);\n this.addListSelection(element);\n }\n if (this.mode !== 'Delimiter' && this.mode !== 'CheckBox') {\n this.addChip(text, value, eve);\n }\n if (this.hideSelectedItem && this.fields.groupBy) {\n this.hideGroupItem(value);\n }\n this.updateChipStatus();\n this.checkMaxSelection();\n };\n MultiSelect.prototype.checkMaxSelection = function () {\n var limit = this.value && this.value.length ? this.value.length : 0;\n if (limit === this.maximumSelectionLength) {\n var collection = this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li + ':not(.e-active)');\n addClass(collection, 'e-disable');\n }\n };\n MultiSelect.prototype.dispatchSelect = function (value, eve, element, isNotTrigger, length) {\n var _this = this;\n var list = this.listData;\n if (this.initStatus && !isNotTrigger) {\n var val_2 = this.getDataByValue(value);\n var eventArgs = {\n e: eve,\n item: element,\n itemData: val_2,\n isInteracted: eve ? true : false,\n cancel: false\n };\n this.trigger('select', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n if (length) {\n _this.selectAllEventData.push(val_2);\n _this.selectAllEventEle.push(element);\n }\n if (length === 1) {\n var args = {\n event: eve,\n items: _this.selectAllEventEle,\n itemData: _this.selectAllEventData,\n isInteracted: eve ? true : false,\n isChecked: true\n };\n _this.trigger('selectedAll', args);\n _this.selectAllEventData = [];\n }\n if (_this.allowCustomValue && _this.isServerRendered && _this.listData !== list) {\n _this.listData = list;\n }\n _this.updateListSelectEventCallback(value, element, eve);\n if (_this.hideSelectedItem && _this.fixedHeaderElement && _this.fields.groupBy && _this.mode !== 'CheckBox') {\n _super.prototype.scrollStop.call(_this);\n }\n }\n });\n }\n };\n MultiSelect.prototype.addChip = function (text, value, e) {\n if (this.chipCollectionWrapper) {\n this.getChip(text, value, e);\n }\n };\n MultiSelect.prototype.removeChipFocus = function () {\n var elements = this.chipCollectionWrapper.querySelectorAll('span.' + CHIP + '.' + CHIP_SELECTED);\n removeClass(elements, CHIP_SELECTED);\n if (Browser.isDevice) {\n var closeElements = this.chipCollectionWrapper.querySelectorAll('span.' + CHIP_CLOSE.split(' ')[0]);\n for (var index = 0; index < closeElements.length; index++) {\n closeElements[index].style.display = 'none';\n }\n }\n };\n MultiSelect.prototype.onMobileChipInteraction = function (e) {\n var chipElem = closest(e.target, '.' + CHIP);\n var chipClose = chipElem.querySelector('span.' + CHIP_CLOSE.split(' ')[0]);\n if (this.enabled && !this.readonly) {\n if (!chipElem.classList.contains(CHIP_SELECTED)) {\n this.removeChipFocus();\n chipClose.style.display = '';\n chipElem.classList.add(CHIP_SELECTED);\n }\n this.refreshPopup();\n e.preventDefault();\n }\n };\n MultiSelect.prototype.multiCompiler = function (multiselectTemplate) {\n var checkTemplate = false;\n if (multiselectTemplate) {\n try {\n checkTemplate = (selectAll(multiselectTemplate, document).length) ? true : false;\n }\n catch (exception) {\n checkTemplate = false;\n }\n }\n return checkTemplate;\n };\n MultiSelect.prototype.getChip = function (data, value, e) {\n var _this = this;\n var itemData = { text: value, value: value };\n var chip = this.createElement('span', {\n className: CHIP,\n attrs: { 'data-value': value, 'title': data }\n });\n var compiledString;\n var chipContent = this.createElement('span', { className: CHIP_CONTENT });\n var chipClose = this.createElement('span', { className: CHIP_CLOSE });\n if (this.mainData) {\n itemData = this.getDataByValue(value);\n }\n if (this.valueTemplate && !isNullOrUndefined(itemData)) {\n var valuecheck = this.multiCompiler(this.valueTemplate);\n if (valuecheck) {\n compiledString = compile(select(this.valueTemplate, document).innerHTML.trim());\n }\n else {\n compiledString = compile(this.valueTemplate);\n }\n // eslint-disable-next-line\n var valueCompTemp = compiledString(itemData, this, 'valueTemplate', this.valueTemplateId, this.isStringTemplate, null, chipContent);\n if (valueCompTemp && valueCompTemp.length > 0) {\n for (var i = 0; i < valueCompTemp.length; i++) {\n chipContent.appendChild(valueCompTemp[i]);\n }\n }\n this.renderReactTemplates();\n }\n else if (this.enableHtmlSanitizer) {\n chipContent.innerText = data;\n }\n else {\n chipContent.innerHTML = data;\n }\n chip.appendChild(chipContent);\n var eventArgs = {\n isInteracted: e ? true : false,\n itemData: itemData,\n e: e,\n setClass: function (classes) {\n addClass([chip], classes);\n },\n cancel: false\n };\n this.isPreventChange = this.isAngular && this.preventChange;\n this.trigger('tagging', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n if (Browser.isDevice) {\n chip.classList.add(MOBILE_CHIP);\n append([chipClose], chip);\n chipClose.style.display = 'none';\n EventHandler.add(chip, 'click', _this.onMobileChipInteraction, _this);\n }\n else {\n EventHandler.add(chip, 'mousedown', _this.chipClick, _this);\n if (_this.showClearButton) {\n chip.appendChild(chipClose);\n }\n }\n EventHandler.add(chipClose, 'mousedown', _this.onChipRemove, _this);\n _this.chipCollectionWrapper.appendChild(chip);\n if (!_this.changeOnBlur && e) {\n _this.updateValueState(e, _this.value, _this.tempValues);\n }\n }\n });\n };\n MultiSelect.prototype.calcPopupWidth = function () {\n var width = formatUnit(this.popupWidth);\n if (width.indexOf('%') > -1) {\n var inputWidth = (this.componentWrapper.offsetWidth) * parseFloat(width) / 100;\n width = inputWidth.toString() + 'px';\n }\n return width;\n };\n MultiSelect.prototype.mouseIn = function () {\n if (this.enabled && !this.readonly) {\n this.showOverAllClear();\n }\n };\n MultiSelect.prototype.mouseOut = function () {\n if (!this.inputFocus) {\n this.overAllClear.style.display = 'none';\n }\n };\n MultiSelect.prototype.listOption = function (dataSource, fields) {\n var iconCss = isNullOrUndefined(fields.iconCss) ? false : true;\n var fieldProperty = isNullOrUndefined(fields.properties) ? fields :\n fields.properties;\n this.listCurrentOptions = (fields.text !== null || fields.value !== null) ? {\n fields: fieldProperty, showIcon: iconCss, ariaAttributes: { groupItemRole: 'presentation' }\n } : { fields: { value: 'text' } };\n extend(this.listCurrentOptions, this.listCurrentOptions, fields, true);\n if (this.mode === 'CheckBox') {\n this.notify('listoption', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', dataSource: dataSource, fieldProperty: fieldProperty });\n }\n return this.listCurrentOptions;\n };\n MultiSelect.prototype.renderPopup = function () {\n var _this = this;\n if (!this.list) {\n _super.prototype.render.call(this);\n }\n if (!this.popupObj) {\n if (!isNullOrUndefined(this.popupWrapper)) {\n document.body.appendChild(this.popupWrapper);\n var checkboxFilter = this.popupWrapper.querySelector('.' + FILTERPARENT);\n if (this.mode === 'CheckBox' && !this.allowFiltering && checkboxFilter && this.filterParent) {\n checkboxFilter.remove();\n this.filterParent = null;\n }\n var overAllHeight = parseInt(this.popupHeight, 10);\n this.popupWrapper.style.visibility = 'hidden';\n if (this.headerTemplate) {\n this.setHeaderTemplate();\n overAllHeight -= this.header.offsetHeight;\n }\n append([this.list], this.popupWrapper);\n if (this.footerTemplate) {\n this.setFooterTemplate();\n overAllHeight -= this.footer.offsetHeight;\n }\n if (this.mode === 'CheckBox' && this.showSelectAll) {\n this.notify('selectAll', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox' });\n overAllHeight -= this.selectAllHeight;\n }\n else if (this.mode === 'CheckBox' && !this.showSelectAll && (!this.headerTemplate && !this.footerTemplate)) {\n this.notify('selectAll', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox' });\n overAllHeight = parseInt(this.popupHeight, 10);\n }\n else if (this.mode === 'CheckBox' && !this.showSelectAll) {\n this.notify('selectAll', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox' });\n overAllHeight = parseInt(this.popupHeight, 10);\n if (this.headerTemplate && this.header) {\n overAllHeight -= this.header.offsetHeight;\n }\n if (this.footerTemplate && this.footer) {\n overAllHeight -= this.footer.offsetHeight;\n }\n }\n if (this.mode === 'CheckBox') {\n var args = {\n module: 'CheckBoxSelection',\n enable: this.mode === 'CheckBox',\n popupElement: this.popupWrapper\n };\n if (this.allowFiltering) {\n this.notify('searchBox', args);\n overAllHeight -= this.searchBoxHeight;\n }\n addClass([this.popupWrapper], 'e-checkbox');\n }\n if (this.popupHeight !== 'auto') {\n this.list.style.maxHeight = formatUnit(overAllHeight);\n this.popupWrapper.style.maxHeight = formatUnit(this.popupHeight);\n }\n else {\n this.list.style.maxHeight = formatUnit(this.popupHeight);\n }\n this.popupObj = new Popup(this.popupWrapper, {\n width: this.calcPopupWidth(), targetType: 'relative', position: { X: 'left', Y: 'bottom' },\n relateTo: this.overAllWrapper, collision: { X: 'flip', Y: 'flip' }, offsetY: 1,\n enableRtl: this.enableRtl, zIndex: this.zIndex,\n close: function () {\n if (_this.popupObj.element.parentElement) {\n _this.popupObj.unwireScrollEvents();\n // For restrict the page scrolling in safari browser\n var checkboxFilterInput = _this.popupWrapper.querySelector('.' + FILTERINPUT);\n if (_this.mode === 'CheckBox' && checkboxFilterInput && document.activeElement === checkboxFilterInput) {\n checkboxFilterInput.blur();\n }\n detach(_this.popupObj.element);\n }\n },\n open: function () {\n _this.popupObj.resolveCollision();\n if (!_this.isFirstClick) {\n var ulElement = _this.list.querySelector('ul');\n if (ulElement) {\n if (!(_this.mode !== 'CheckBox' && (_this.allowFiltering || _this.allowCustomValue) &&\n _this.targetElement().trim() !== '')) {\n _this.mainList = ulElement.cloneNode ? ulElement.cloneNode(true) : ulElement;\n }\n }\n _this.isFirstClick = true;\n }\n _this.popupObj.wireScrollEvents();\n if (!(_this.mode !== 'CheckBox' && (_this.allowFiltering || _this.allowCustomValue) &&\n _this.targetElement().trim() !== '')) {\n _this.loadTemplate();\n }\n _this.setScrollPosition();\n if (_this.allowFiltering) {\n _this.notify('inputFocus', {\n module: 'CheckBoxSelection', enable: _this.mode === 'CheckBox', value: 'focus'\n });\n }\n }, targetExitViewport: function () {\n if (!Browser.isDevice) {\n _this.hidePopup();\n }\n }\n });\n if (this.mode === 'CheckBox' && Browser.isDevice && this.allowFiltering) {\n this.notify('deviceSearchBox', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox' });\n }\n this.popupObj.close();\n this.popupWrapper.style.visibility = '';\n }\n }\n };\n MultiSelect.prototype.setHeaderTemplate = function () {\n var compiledString;\n if (this.header) {\n this.header.remove();\n }\n this.header = this.createElement('div');\n addClass([this.header], HEADER);\n var headercheck = this.multiCompiler(this.headerTemplate);\n if (headercheck) {\n compiledString = compile(select(this.headerTemplate, document).innerHTML.trim());\n }\n else {\n compiledString = compile(this.headerTemplate);\n }\n // eslint-disable-next-line\n var elements = compiledString({}, this, 'headerTemplate', this.headerTemplateId, this.isStringTemplate, null, this.header);\n if (elements && elements.length > 0) {\n append(elements, this.header);\n }\n if (this.mode === 'CheckBox' && this.showSelectAll) {\n prepend([this.header], this.popupWrapper);\n }\n else {\n append([this.header], this.popupWrapper);\n }\n EventHandler.add(this.header, 'mousedown', this.onListMouseDown, this);\n };\n MultiSelect.prototype.setFooterTemplate = function () {\n var compiledString;\n if (this.footer) {\n this.footer.remove();\n }\n this.footer = this.createElement('div');\n addClass([this.footer], FOOTER);\n var footercheck = this.multiCompiler(this.footerTemplate);\n if (footercheck) {\n compiledString = compile(select(this.footerTemplate, document).innerHTML.trim());\n }\n else {\n compiledString = compile(this.footerTemplate);\n }\n // eslint-disable-next-line\n var elements = compiledString({}, this, 'footerTemplate', this.footerTemplateId, this.isStringTemplate, null, this.footer);\n if (elements && elements.length > 0) {\n append(elements, this.footer);\n }\n append([this.footer], this.popupWrapper);\n EventHandler.add(this.footer, 'mousedown', this.onListMouseDown, this);\n };\n MultiSelect.prototype.clearAll = function (e) {\n if (this.enabled && !this.readonly) {\n var temp = void 0;\n if (this.value && this.value.length > 0) {\n var liElement = this.list && this.list.querySelectorAll('li.e-list-item');\n if (liElement && liElement.length > 0) {\n this.selectAllItems(false, e);\n }\n else {\n this.removeIndex = 0;\n for (temp = this.value[this.removeIndex]; this.removeIndex < this.value.length; temp = this.value[this.removeIndex]) {\n this.removeValue(temp, e, null, true);\n }\n }\n this.selectedElementID = null;\n this.inputElement.removeAttribute('aria-activedescendant');\n }\n else {\n this.clearAllCallback(e);\n }\n }\n };\n MultiSelect.prototype.clearAllCallback = function (e, isClearAll) {\n var tempValues = this.value ? this.value.slice() : [];\n if (this.mainList && this.listData && ((this.allowFiltering && this.mode !== 'CheckBox') || this.allowCustomValue)) {\n var list = this.mainList.cloneNode ? this.mainList.cloneNode(true) : this.mainList;\n this.onActionComplete(list, this.mainData);\n }\n this.focusAtFirstListItem();\n this.updateDelimeter(this.delimiterChar, e);\n if (this.mode !== 'Box' && (!this.inputFocus || this.mode === 'CheckBox')) {\n this.updateDelimView();\n }\n if (this.inputElement.value !== '') {\n this.makeTextBoxEmpty();\n this.search(null);\n }\n this.checkPlaceholderSize();\n if (this.isPopupOpen()) {\n this.refreshPopup();\n }\n if (!this.inputFocus) {\n if (this.changeOnBlur) {\n this.updateValueState(e, this.value, tempValues);\n }\n if (this.mode !== 'CheckBox') {\n this.inputElement.focus();\n }\n }\n if (this.mode === 'CheckBox') {\n this.refreshPlaceHolder();\n this.refreshInputHight();\n if (this.changeOnBlur && isClearAll && (isNullOrUndefined(this.value) || this.value.length === 0)) {\n this.updateValueState(e, this.value, this.tempValues);\n }\n }\n if (!this.changeOnBlur && isClearAll && (isNullOrUndefined(this.value) || this.value.length === 0)) {\n this.updateValueState(e, this.value, this.tempValues);\n }\n if (this.mode === 'CheckBox' && this.enableGroupCheckBox && !isNullOrUndefined(this.fields.groupBy)) {\n this.updateListItems(this.list.querySelectorAll('li.e-list-item'), this.mainList.querySelectorAll('li.e-list-item'));\n }\n e.preventDefault();\n };\n MultiSelect.prototype.windowResize = function () {\n this.refreshPopup();\n if ((!this.inputFocus || this.mode === 'CheckBox') && this.viewWrapper && this.viewWrapper.parentElement) {\n this.updateDelimView();\n }\n };\n MultiSelect.prototype.resetValueHandler = function (e) {\n var formElement = closest(this.inputElement, 'form');\n if (formElement && e.target === formElement) {\n var textVal = (this.element.tagName === this.getNgDirective()) ?\n null : this.element.getAttribute('data-initial-value');\n this.text = textVal;\n }\n };\n MultiSelect.prototype.wireEvent = function () {\n EventHandler.add(this.componentWrapper, 'mousedown', this.wrapperClick, this);\n EventHandler.add(window, 'resize', this.windowResize, this);\n EventHandler.add(this.inputElement, 'focus', this.focusInHandler, this);\n EventHandler.add(this.inputElement, 'keydown', this.onKeyDown, this);\n EventHandler.add(this.inputElement, 'keyup', this.keyUp, this);\n if (this.mode !== 'CheckBox') {\n EventHandler.add(this.inputElement, 'input', this.onInput, this);\n }\n EventHandler.add(this.inputElement, 'blur', this.onBlurHandler, this);\n EventHandler.add(this.componentWrapper, 'mouseover', this.mouseIn, this);\n var formElement = closest(this.inputElement, 'form');\n if (formElement) {\n EventHandler.add(formElement, 'reset', this.resetValueHandler, this);\n }\n EventHandler.add(this.componentWrapper, 'mouseout', this.mouseOut, this);\n EventHandler.add(this.overAllClear, 'mouseup', this.clearAll, this);\n EventHandler.add(this.inputElement, 'paste', this.pasteHandler, this);\n };\n MultiSelect.prototype.onInput = function (e) {\n if (this.keyDownStatus) {\n this.isValidKey = true;\n }\n else {\n this.isValidKey = false;\n }\n this.keyDownStatus = false;\n // For Filtering works in mobile firefox\n if (Browser.isDevice && Browser.info.name === 'mozilla') {\n this.search(e);\n }\n };\n MultiSelect.prototype.pasteHandler = function (event) {\n var _this = this;\n setTimeout(function () {\n _this.expandTextbox();\n _this.search(event);\n });\n };\n MultiSelect.prototype.search = function (e) {\n var _this = this;\n this.resetFilteredData = true;\n if (!isNullOrUndefined(e)) {\n this.keyCode = e.keyCode;\n }\n if (!this.isPopupOpen() && this.openOnClick) {\n this.showPopup(e);\n }\n this.openClick(e);\n if (this.checkTextLength() && !this.allowFiltering && !isNullOrUndefined(e) && (e.keyCode !== 8)) {\n this.focusAtFirstListItem();\n }\n else {\n var text = this.targetElement();\n if (this.allowFiltering) {\n var eventArgs_1 = {\n preventDefaultAction: false,\n text: this.targetElement(),\n updateData: function (dataSource, query, fields) {\n if (eventArgs_1.cancel) {\n return;\n }\n _this.isFiltered = true;\n _this.remoteFilterAction = true;\n _this.dataUpdater(dataSource, query, fields);\n },\n event: e,\n cancel: false\n };\n this.trigger('filtering', eventArgs_1, function (eventArgs) {\n if (!eventArgs.cancel) {\n if (!_this.isFiltered && !eventArgs.preventDefaultAction) {\n _this.filterAction = true;\n _this.dataUpdater(_this.dataSource, null, _this.fields);\n }\n }\n });\n }\n else if (this.allowCustomValue) {\n var query = new Query();\n query = (text !== '') ? query.where(this.fields.text, 'startswith', text, this.ignoreCase, this.ignoreAccent) : query;\n this.dataUpdater(this.mainData, query, this.fields);\n }\n else {\n var liCollections = this.list.querySelectorAll('li.' + dropDownBaseClasses.li + ':not(.e-hide-listitem)');\n var activeElement = Search(this.targetElement(), liCollections, 'StartsWith', this.ignoreCase);\n if (activeElement && activeElement.item !== null) {\n this.addListFocus(activeElement.item);\n this.list.scrollTop =\n activeElement.item.offsetHeight * activeElement.index;\n }\n else if (this.targetElement() !== '') {\n this.removeFocus();\n }\n else {\n this.focusAtFirstListItem();\n }\n }\n }\n };\n MultiSelect.prototype.preRender = function () {\n if (this.allowFiltering === null) {\n this.allowFiltering = (this.mode === 'CheckBox') ? true : false;\n }\n this.initializeData();\n this.updateDataAttribute(this.htmlAttributes);\n _super.prototype.preRender.call(this);\n };\n MultiSelect.prototype.getLocaleName = function () {\n return 'multi-select';\n };\n MultiSelect.prototype.initializeData = function () {\n this.mainListCollection = [];\n this.beforePopupOpen = false;\n this.filterAction = false;\n this.remoteFilterAction = false;\n this.isFirstClick = false;\n this.mobFilter = true;\n this.isFiltered = false;\n this.focused = true;\n this.initial = true;\n this.backCommand = true;\n };\n MultiSelect.prototype.updateData = function (delimiterChar, e) {\n var data = '';\n var delim = this.mode === 'Delimiter' || this.mode === 'CheckBox';\n var text = [];\n var temp;\n var tempData = this.listData;\n this.listData = this.mainData;\n if (!isNullOrUndefined(this.hiddenElement)) {\n this.hiddenElement.innerHTML = '';\n }\n if (!isNullOrUndefined(this.value)) {\n var valueLength = this.value.length;\n var hiddenElementContent = '';\n for (var index = 0; index < valueLength; index++) {\n var valueItem = this.value[index];\n var listValue = this.findListElement((!isNullOrUndefined(this.mainList) ? this.mainList : this.ulElement), 'li', 'data-value', valueItem);\n if (isNullOrUndefined(listValue) && !this.allowCustomValue) {\n this.value.splice(index, 1);\n index -= 1;\n valueLength -= 1;\n }\n else {\n if (this.listData) {\n temp = this.getTextByValue(valueItem);\n }\n else {\n temp = valueItem;\n }\n data += temp + delimiterChar + ' ';\n text.push(temp);\n }\n hiddenElementContent += \"\";\n }\n if (!isNullOrUndefined(this.hiddenElement)) {\n this.hiddenElement.innerHTML = hiddenElementContent;\n }\n }\n this.setProperties({ text: text.toString() }, true);\n if (delim) {\n this.updateWrapperText(this.delimiterWrapper, data);\n this.delimiterWrapper.setAttribute('id', getUniqueID('delim_val'));\n this.inputElement.setAttribute('aria-describedby', this.delimiterWrapper.id);\n this.inputElement.setAttribute('aria-labelledby', this.delimiterWrapper.id);\n }\n var targetEle = e && e.target;\n var isClearAll = (targetEle && targetEle.classList.contains('e-close-hooker')) ? true : null;\n if (!this.changeOnBlur && ((e && !isClearAll)) || this.isSelectAll) {\n this.isSelectAll = false;\n this.updateValueState(e, this.value, this.tempValues);\n }\n this.listData = tempData;\n this.addValidInputClass();\n };\n MultiSelect.prototype.initialTextUpdate = function () {\n if (!isNullOrUndefined(this.text)) {\n var textArr = this.text.split(this.delimiterChar);\n var textVal = [];\n for (var index = 0; textArr.length > index; index++) {\n var val = this.getValueByText(textArr[index]);\n if (!isNullOrUndefined(val)) {\n textVal.push(val);\n }\n else if (this.allowCustomValue) {\n textVal.push(textArr[index]);\n }\n }\n if (textVal && textVal.length) {\n this.setProperties({ value: textVal }, true);\n }\n }\n else {\n this.setProperties({ value: null }, true);\n }\n };\n MultiSelect.prototype.renderList = function (isEmptyData) {\n if (!isEmptyData && this.allowCustomValue && this.list && (this.list.textContent === this.noRecordsTemplate\n || this.list.querySelector('.e-ul') && this.list.querySelector('.e-ul').childElementCount === 0)) {\n isEmptyData = true;\n }\n _super.prototype.render.call(this, null, isEmptyData);\n this.unwireListEvents();\n this.wireListEvents();\n };\n MultiSelect.prototype.initialValueUpdate = function () {\n if (this.list) {\n var text = void 0;\n var element = void 0;\n var value = void 0;\n if (this.chipCollectionWrapper) {\n this.chipCollectionWrapper.innerHTML = '';\n }\n this.removeListSelection();\n if (!isNullOrUndefined(this.value)) {\n for (var index = 0; !isNullOrUndefined(this.value[index]); index++) {\n value = this.value[index];\n element = this.findListElement(this.hideSelectedItem ? this.ulElement : this.list, 'li', 'data-value', value);\n text = this.getTextByValue(value);\n if ((element && (element.getAttribute('aria-selected') !== 'true')) ||\n (element && (element.getAttribute('aria-selected') === 'true' && this.hideSelectedItem) &&\n (this.mode === 'Box' || this.mode === 'Default'))) {\n this.addChip(text, value);\n this.addListSelection(element);\n }\n else if (value && this.allowCustomValue) {\n var indexItem = this.listData.length;\n var newValue = {};\n setValue(this.fields.text, value, newValue);\n setValue(this.fields.value, value, newValue);\n var noDataEle = this.popupWrapper.querySelector('.' + dropDownBaseClasses.noData);\n this.addItem(newValue, indexItem);\n element = element ? element : this.findListElement(this.hideSelectedItem ? this.ulElement : this.list, 'li', 'data-value', value);\n if (this.popupWrapper.contains(noDataEle)) {\n this.list.setAttribute('style', noDataEle.getAttribute('style'));\n this.popupWrapper.replaceChild(this.list, noDataEle);\n this.wireListEvents();\n }\n this.addChip(text, value);\n this.addListSelection(element);\n }\n }\n }\n if (this.mode === 'CheckBox') {\n this.updateDelimView();\n if (this.changeOnBlur) {\n this.updateValueState(null, this.value, this.tempValues);\n }\n this.updateDelimeter(this.delimiterChar);\n this.refreshInputHight();\n }\n else {\n this.updateDelimeter(this.delimiterChar);\n }\n if (this.mode === 'CheckBox' && this.showSelectAll && (isNullOrUndefined(this.value) || !this.value.length)) {\n this.notify('checkSelectAll', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', value: 'uncheck' });\n }\n if (this.mode === 'Box' || (this.mode === 'Default' && this.inputFocus)) {\n this.chipCollectionWrapper.style.display = '';\n }\n else if (this.mode === 'Delimiter' || this.mode === 'CheckBox') {\n this.showDelimWrapper();\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n MultiSelect.prototype.updateActionCompleteData = function (li, item) {\n if (this.value && this.value.indexOf(li.getAttribute('data-value')) > -1) {\n this.mainList = this.ulElement;\n if (this.hideSelectedItem) {\n addClass([li], HIDE_LIST);\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n MultiSelect.prototype.updateAddItemList = function (list, itemCount) {\n if (this.popupObj && this.popupObj.element && this.popupObj.element.querySelector('.' + dropDownBaseClasses.noData) && list) {\n this.list = list;\n this.mainList = this.ulElement = list.querySelector('ul');\n remove(this.popupWrapper.querySelector('.e-content'));\n this.popupObj = null;\n this.renderPopup();\n }\n else if (this.allowCustomValue) {\n this.list = list;\n this.mainList = this.ulElement = list.querySelector('ul');\n }\n };\n MultiSelect.prototype.updateDataList = function () {\n if (this.mainList && this.ulElement && !(this.isFiltered || this.filterAction || this.targetElement().trim())) {\n var isDynamicGroupItemUpdate = this.mainList.childElementCount < this.ulElement.childElementCount;\n var isReactTemplateUpdate = ((this.ulElement.childElementCount > 0 && this.ulElement.children[0].childElementCount > 0) && (this.mainList.children[0].childElementCount < this.ulElement.children[0].childElementCount));\n var isAngularTemplateUpdate = this.itemTemplate && this.ulElement.childElementCount > 0 && !(this.ulElement.childElementCount < this.mainList.childElementCount) && (this.ulElement.children[0].childElementCount > 0 || (this.fields.groupBy && this.ulElement.children[1] && this.ulElement.children[1].childElementCount > 0));\n if (isDynamicGroupItemUpdate || isReactTemplateUpdate || isAngularTemplateUpdate) {\n //EJ2-57748 - for this task, we prevent the ul element cloning ( this.mainList = this.ulElement.cloneNode ? this.ulElement.cloneNode(true) : this.ulElement;)\n this.mainList = this.ulElement;\n }\n }\n };\n MultiSelect.prototype.isValidLI = function (li) {\n return (li && !li.classList.contains(dropDownBaseClasses.disabled) && !li.classList.contains(dropDownBaseClasses.group) &&\n li.classList.contains(dropDownBaseClasses.li));\n };\n MultiSelect.prototype.updateListSelection = function (li, e, length) {\n var customVal = li.getAttribute('data-value');\n var value = this.getFormattedValue(customVal);\n if (this.allowCustomValue && ((customVal !== 'false' && value === false) ||\n (!isNullOrUndefined(value) && value.toString() === 'NaN'))) {\n value = customVal;\n }\n this.removeHover();\n if (!this.value || this.value.indexOf(value) === -1) {\n this.dispatchSelect(value, e, li, (li.getAttribute('aria-selected') === 'true'), length);\n }\n else {\n this.removeValue(value, e, length);\n }\n };\n MultiSelect.prototype.updateListSelectEventCallback = function (value, li, e) {\n var _this = this;\n var text = this.getTextByValue(value);\n if ((this.allowCustomValue || this.allowFiltering) && !this.findListElement(this.mainList, 'li', 'data-value', value)) {\n var temp_1 = li.cloneNode(true);\n var fieldValue = this.fields.value ? this.fields.value : 'value';\n if (this.allowCustomValue && this.mainData.length && typeof getValue(fieldValue, this.mainData[0]) === 'number') {\n value = !isNaN(parseFloat(value.toString())) ? parseFloat(value.toString()) : value;\n }\n var data_1 = this.getDataByValue(value);\n var eventArgs = {\n newData: data_1,\n cancel: false\n };\n this.trigger('customValueSelection', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n append([temp_1], _this.mainList);\n _this.mainData.push(data_1);\n _this.remoteCustomValue = false;\n _this.addValue(value, text, e);\n }\n });\n }\n else {\n this.remoteCustomValue = false;\n this.addValue(value, text, e);\n }\n };\n MultiSelect.prototype.removeListSelection = function () {\n var className = this.hideSelectedItem ?\n HIDE_LIST :\n dropDownBaseClasses.selected;\n var selectedItems = this.list.querySelectorAll('.' + className);\n var temp = selectedItems.length;\n if (selectedItems && selectedItems.length) {\n removeClass(selectedItems, className);\n while (temp > 0) {\n selectedItems[temp - 1].setAttribute('aria-selected', 'false');\n temp--;\n }\n }\n if (!isNullOrUndefined(this.mainList)) {\n var selectItems = this.mainList.querySelectorAll('.' + className);\n var temp1 = selectItems.length;\n if (selectItems && selectItems.length) {\n removeClass(selectItems, className);\n while (temp1 > 0) {\n selectItems[temp1 - 1].setAttribute('aria-selected', 'false');\n if (this.mode === 'CheckBox') {\n if (selectedItems && (selectedItems.length > (temp1 - 1))) {\n removeClass([selectedItems[temp1 - 1].firstElementChild.lastElementChild], 'e-check');\n }\n removeClass([selectItems[temp1 - 1].firstElementChild.lastElementChild], 'e-check');\n }\n temp1--;\n }\n }\n }\n };\n MultiSelect.prototype.removeHover = function () {\n var hoveredItem = this.list.querySelectorAll('.' + dropDownBaseClasses.hover);\n if (hoveredItem && hoveredItem.length) {\n removeClass(hoveredItem, dropDownBaseClasses.hover);\n }\n };\n MultiSelect.prototype.removeFocus = function () {\n if (this.list && this.mainList) {\n var hoveredItem = this.list.querySelectorAll('.' + dropDownBaseClasses.focus);\n var mainlist = this.mainList.querySelectorAll('.' + dropDownBaseClasses.focus);\n if (hoveredItem && hoveredItem.length) {\n removeClass(hoveredItem, dropDownBaseClasses.focus);\n removeClass(mainlist, dropDownBaseClasses.focus);\n }\n }\n };\n MultiSelect.prototype.addListHover = function (li) {\n if (this.enabled && this.isValidLI(li)) {\n this.removeHover();\n addClass([li], dropDownBaseClasses.hover);\n }\n else {\n if ((li !== null && li.classList.contains('e-list-group-item')) && this.enableGroupCheckBox && this.mode === 'CheckBox'\n && !isNullOrUndefined(this.fields.groupBy)) {\n this.removeHover();\n addClass([li], dropDownBaseClasses.hover);\n }\n }\n };\n MultiSelect.prototype.addListFocus = function (element) {\n if (this.enabled && this.isValidLI(element)) {\n this.removeFocus();\n addClass([element], dropDownBaseClasses.focus);\n this.updateAriaActiveDescendant();\n }\n else {\n if (this.enableGroupCheckBox && this.mode === 'CheckBox' && !isNullOrUndefined(this.fields.groupBy)) {\n addClass([element], dropDownBaseClasses.focus);\n this.updateAriaActiveDescendant();\n }\n }\n };\n MultiSelect.prototype.addListSelection = function (element, mainElement) {\n var className = this.hideSelectedItem ?\n HIDE_LIST :\n dropDownBaseClasses.selected;\n if (this.isValidLI(element) && !element.classList.contains(dropDownBaseClasses.hover)) {\n addClass([element], className);\n this.updateMainList(false, element.getAttribute('data-value'), mainElement);\n element.setAttribute('aria-selected', 'true');\n if (this.mode === 'CheckBox' && element.classList.contains('e-active')) {\n var ariaCheck = element.getElementsByClassName('e-check').length;\n if (ariaCheck === 0) {\n this.notify('updatelist', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', li: element, e: this });\n }\n }\n this.notify('activeList', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', li: element, e: this });\n if (this.chipCollectionWrapper) {\n this.removeChipSelection();\n }\n this.selectedElementID = element.id;\n }\n };\n MultiSelect.prototype.updateDelimeter = function (delimChar, e) {\n this.updateData(delimChar, e);\n };\n MultiSelect.prototype.onMouseClick = function (e) {\n var _this = this;\n this.keyCode = null;\n this.scrollFocusStatus = false;\n var target = e.target;\n var li = closest(target, '.' + dropDownBaseClasses.li);\n var headerLi = closest(target, '.' + dropDownBaseClasses.group);\n if (headerLi && this.enableGroupCheckBox && this.mode === 'CheckBox' && this.fields.groupBy) {\n target = target.classList.contains('e-list-group-item') ? target.firstElementChild.lastElementChild\n : e.target;\n if (target.classList.contains('e-check')) {\n this.selectAllItem(false, e);\n target.classList.remove('e-check');\n target.classList.remove('e-stop');\n closest(target, '.' + 'e-list-group-item').classList.remove('e-active');\n target.setAttribute('aria-selected', 'false');\n }\n else {\n this.selectAllItem(true, e);\n target.classList.remove('e-stop');\n target.classList.add('e-check');\n closest(target, '.' + 'e-list-group-item').classList.add('e-active');\n target.setAttribute('aria-selected', 'true');\n }\n this.refreshSelection();\n this.checkSelectAll();\n }\n else {\n if (this.isValidLI(li)) {\n var limit = this.value && this.value.length ? this.value.length : 0;\n if (li.classList.contains('e-active')) {\n limit = limit - 1;\n }\n if (limit < this.maximumSelectionLength) {\n this.updateListSelection(li, e);\n this.checkPlaceholderSize();\n this.addListFocus(li);\n if ((this.allowCustomValue || this.allowFiltering) && this.mainList && this.listData) {\n if (this.mode !== 'CheckBox') {\n this.focusAtLastListItem(li.getAttribute('data-value'));\n this.refreshSelection();\n }\n }\n else {\n this.makeTextBoxEmpty();\n }\n }\n if (this.mode === 'CheckBox') {\n this.updateDelimView();\n if (this.value && this.value.length > 50) {\n setTimeout(function () {\n _this.updateDelimeter(_this.delimiterChar, e);\n }, 0);\n }\n else {\n this.updateDelimeter(this.delimiterChar, e);\n }\n this.refreshInputHight();\n }\n else {\n this.updateDelimeter(this.delimiterChar, e);\n }\n this.checkSelectAll();\n this.refreshPopup();\n if (this.hideSelectedItem) {\n this.focusAtFirstListItem();\n }\n if (this.closePopupOnSelect) {\n this.hidePopup(e);\n }\n else {\n e.preventDefault();\n }\n this.makeTextBoxEmpty();\n this.findGroupStart(target);\n if (this.mode !== 'CheckBox') {\n this.refreshListItems(isNullOrUndefined(li) ? null : li.textContent);\n }\n }\n else {\n e.preventDefault();\n }\n this.refreshPlaceHolder();\n this.deselectHeader();\n }\n };\n MultiSelect.prototype.findGroupStart = function (target) {\n if (this.enableGroupCheckBox && this.mode === 'CheckBox' && !isNullOrUndefined(this.fields.groupBy)) {\n var count = 0;\n var liChecked = 0;\n var liUnchecked = 0;\n var groupValues = void 0;\n if (this.itemTemplate && !target.getElementsByClassName('e-frame').length) {\n while (!target.getElementsByClassName('e-frame').length) {\n target = target.parentElement;\n }\n }\n if (target.classList.contains('e-frame')) {\n target = target.parentElement.parentElement;\n }\n groupValues = this.findGroupAttrtibutes(target, liChecked, liUnchecked, count, 0);\n groupValues = this.findGroupAttrtibutes(target, groupValues[0], groupValues[1], groupValues[2], 1);\n while (!target.classList.contains('e-list-group-item')) {\n if (target.classList.contains('e-list-icon')) {\n target = target.parentElement;\n }\n target = target.previousElementSibling;\n if (target == null) {\n break;\n }\n }\n this.updateCheckBox(target, groupValues[0], groupValues[1], groupValues[2]);\n }\n };\n MultiSelect.prototype.findGroupAttrtibutes = function (listElement, checked, unChecked, count, position) {\n while (!listElement.classList.contains('e-list-group-item')) {\n if (listElement.classList.contains('e-list-icon')) {\n listElement = listElement.parentElement;\n }\n if (listElement.getElementsByClassName('e-frame')[0].classList.contains('e-check') &&\n listElement.classList.contains('e-list-item')) {\n checked++;\n }\n else if (listElement.classList.contains('e-list-item')) {\n unChecked++;\n }\n count++;\n listElement = position ? listElement.nextElementSibling : listElement.previousElementSibling;\n if (listElement == null) {\n break;\n }\n }\n return [checked, unChecked, count];\n };\n MultiSelect.prototype.updateCheckBox = function (groupHeader, checked, unChecked, count) {\n if (groupHeader === null) {\n return;\n }\n var checkBoxElement = groupHeader.getElementsByClassName('e-frame')[0];\n if (count === checked) {\n checkBoxElement.classList.remove('e-stop');\n checkBoxElement.classList.add('e-check');\n closest(checkBoxElement, '.' + 'e-list-group-item').classList.add('e-active');\n groupHeader.setAttribute('aria-selected', 'true');\n }\n else if (count === unChecked) {\n checkBoxElement.classList.remove('e-check');\n checkBoxElement.classList.remove('e-stop');\n closest(checkBoxElement, '.' + 'e-list-group-item').classList.remove('e-active');\n groupHeader.setAttribute('aria-selected', 'false');\n }\n else if (this.maximumSelectionLength === checked - 1) {\n checkBoxElement.classList.remove('e-stop');\n groupHeader.setAttribute('aria-selected', 'true');\n closest(checkBoxElement, '.' + 'e-list-group-item').classList.add('e-active');\n checkBoxElement.classList.add('e-check');\n }\n else {\n checkBoxElement.classList.remove('e-check');\n checkBoxElement.classList.add('e-stop');\n closest(checkBoxElement, '.' + 'e-list-group-item').classList.add('e-active');\n groupHeader.setAttribute('aria-selected', 'false');\n }\n };\n MultiSelect.prototype.deselectHeader = function () {\n var limit = this.value && this.value.length ? this.value.length : 0;\n var collection = this.list.querySelectorAll('li.e-list-group-item:not(.e-active)');\n if (limit < this.maximumSelectionLength) {\n removeClass(collection, 'e-disable');\n }\n if (limit === this.maximumSelectionLength) {\n addClass(collection, 'e-disable');\n }\n };\n MultiSelect.prototype.onMouseOver = function (e) {\n var currentLi = closest(e.target, '.' + dropDownBaseClasses.li);\n if (currentLi === null && this.mode === 'CheckBox' && !isNullOrUndefined(this.fields.groupBy)\n && this.enableGroupCheckBox) {\n currentLi = closest(e.target, '.' + dropDownBaseClasses.group);\n }\n this.addListHover(currentLi);\n };\n MultiSelect.prototype.onMouseLeave = function () {\n this.removeHover();\n };\n MultiSelect.prototype.onListMouseDown = function (e) {\n e.preventDefault();\n this.scrollFocusStatus = true;\n };\n MultiSelect.prototype.onDocumentClick = function (e) {\n if (this.mode !== 'CheckBox') {\n var target = e.target;\n if (!(!isNullOrUndefined(this.popupObj) && closest(target, '[id=\"' + this.popupObj.element.id + '\"]')) &&\n !this.overAllWrapper.contains(e.target)) {\n this.scrollFocusStatus = false;\n }\n else {\n this.scrollFocusStatus = (Browser.isIE || Browser.info.name === 'edge') && (document.activeElement === this.inputElement);\n }\n }\n };\n MultiSelect.prototype.wireListEvents = function () {\n if (!isNullOrUndefined(this.list)) {\n EventHandler.add(document, 'mousedown', this.onDocumentClick, this);\n EventHandler.add(this.list, 'mousedown', this.onListMouseDown, this);\n EventHandler.add(this.list, 'mouseup', this.onMouseClick, this);\n EventHandler.add(this.list, 'mouseover', this.onMouseOver, this);\n EventHandler.add(this.list, 'mouseout', this.onMouseLeave, this);\n }\n };\n MultiSelect.prototype.unwireListEvents = function () {\n EventHandler.remove(document, 'mousedown', this.onDocumentClick);\n if (this.list) {\n EventHandler.remove(this.list, 'mousedown', this.onListMouseDown);\n EventHandler.remove(this.list, 'mouseup', this.onMouseClick);\n EventHandler.remove(this.list, 'mouseover', this.onMouseOver);\n EventHandler.remove(this.list, 'mouseout', this.onMouseLeave);\n }\n };\n MultiSelect.prototype.hideOverAllClear = function () {\n if (!this.value || !this.value.length || this.inputElement.value === '') {\n this.overAllClear.style.display = 'none';\n }\n };\n MultiSelect.prototype.showOverAllClear = function () {\n if (((this.value && this.value.length) || this.inputElement.value !== '') && this.showClearButton && this.readonly !== true) {\n this.overAllClear.style.display = '';\n }\n else {\n this.overAllClear.style.display = 'none';\n }\n };\n /**\n * Sets the focus to widget for interaction.\n *\n * @returns {void}\n */\n MultiSelect.prototype.focusIn = function () {\n if (document.activeElement !== this.inputElement && this.enabled) {\n this.inputElement.focus();\n }\n };\n /**\n * Remove the focus from widget, if the widget is in focus state.\n *\n * @returns {void}\n */\n MultiSelect.prototype.focusOut = function () {\n if (document.activeElement === this.inputElement && this.enabled) {\n this.inputElement.blur();\n }\n };\n /**\n * Shows the spinner loader.\n *\n * @returns {void}\n */\n MultiSelect.prototype.showSpinner = function () {\n if (isNullOrUndefined(this.spinnerElement)) {\n var filterClear = this.filterParent && this.filterParent.querySelector('.e-clear-icon.e-icons');\n if (this.overAllClear.style.display !== 'none' || filterClear) {\n this.spinnerElement = filterClear ? filterClear : this.overAllClear;\n }\n else {\n this.spinnerElement = this.createElement('span', { className: CLOSEICON_CLASS + ' ' + SPINNER_CLASS });\n this.componentWrapper.appendChild(this.spinnerElement);\n }\n createSpinner({ target: this.spinnerElement, width: Browser.isDevice ? '16px' : '14px' }, this.createElement);\n addClass([this.spinnerElement], DISABLE_ICON);\n showSpinner(this.spinnerElement);\n }\n };\n /**\n * Hides the spinner loader.\n *\n * @returns {void}\n */\n MultiSelect.prototype.hideSpinner = function () {\n if (!isNullOrUndefined(this.spinnerElement)) {\n hideSpinner(this.spinnerElement);\n removeClass([this.spinnerElement], DISABLE_ICON);\n if (this.spinnerElement.classList.contains(SPINNER_CLASS)) {\n detach(this.spinnerElement);\n }\n else {\n this.spinnerElement.innerHTML = '';\n }\n this.spinnerElement = null;\n }\n };\n MultiSelect.prototype.updateWrapperText = function (wrapperType, wrapperData) {\n if (this.valueTemplate || !this.enableHtmlSanitizer) {\n wrapperType.innerHTML = wrapperData;\n }\n else {\n wrapperType.innerText = SanitizeHtmlHelper.sanitize(wrapperData);\n }\n };\n MultiSelect.prototype.updateDelimView = function () {\n if (this.delimiterWrapper) {\n this.hideDelimWrapper();\n }\n if (this.chipCollectionWrapper) {\n this.chipCollectionWrapper.style.display = 'none';\n }\n if (!isNullOrUndefined(this.viewWrapper)) {\n this.viewWrapper.style.display = '';\n this.viewWrapper.style.width = '';\n this.viewWrapper.classList.remove(TOTAL_COUNT_WRAPPER);\n }\n if (this.value && this.value.length) {\n var data = '';\n var temp = void 0;\n var tempData = void 0;\n var tempIndex = 1;\n var wrapperleng = void 0;\n var remaining = void 0;\n var downIconWidth = 0;\n var overAllContainer = void 0;\n this.updateWrapperText(this.viewWrapper, data);\n var l10nLocale = {\n noRecordsTemplate: 'No records found',\n actionFailureTemplate: 'Request failed',\n overflowCountTemplate: '+${count} more..',\n totalCountTemplate: '${count} selected'\n };\n var l10n = new L10n(this.getLocaleName(), l10nLocale, this.locale);\n if (l10n.getConstant('actionFailureTemplate') === '') {\n l10n = new L10n('dropdowns', l10nLocale, this.locale);\n }\n if (l10n.getConstant('noRecordsTemplate') === '') {\n l10n = new L10n('dropdowns', l10nLocale, this.locale);\n }\n var remainContent = l10n.getConstant('overflowCountTemplate');\n var totalContent = l10n.getConstant('totalCountTemplate');\n var raminElement = this.createElement('span', {\n className: REMAIN_WRAPPER\n });\n var remainCompildTemp = remainContent.replace('${count}', this.value.length.toString());\n raminElement.innerText = remainCompildTemp;\n this.viewWrapper.appendChild(raminElement);\n this.renderReactTemplates();\n var remainSize = raminElement.offsetWidth;\n remove(raminElement);\n if (this.showDropDownIcon) {\n downIconWidth = this.dropIcon.offsetWidth + parseInt(window.getComputedStyle(this.dropIcon).marginRight, 10);\n }\n this.checkClearIconWidth();\n if (!isNullOrUndefined(this.value)) {\n for (var index = 0; !isNullOrUndefined(this.value[index]); index++) {\n data += (index === 0) ? '' : this.delimiterChar + ' ';\n temp = this.getOverflowVal(index);\n data += temp;\n temp = this.viewWrapper.innerHTML;\n this.updateWrapperText(this.viewWrapper, data);\n wrapperleng = this.viewWrapper.offsetWidth +\n parseInt(window.getComputedStyle(this.viewWrapper).paddingRight, 10);\n overAllContainer = this.componentWrapper.offsetWidth -\n parseInt(window.getComputedStyle(this.componentWrapper).paddingLeft, 10) -\n parseInt(window.getComputedStyle(this.componentWrapper).paddingRight, 10);\n if ((wrapperleng + downIconWidth + this.clearIconWidth) > overAllContainer) {\n if (tempData !== undefined && tempData !== '') {\n temp = tempData;\n index = tempIndex + 1;\n }\n this.updateWrapperText(this.viewWrapper, temp);\n remaining = this.value.length - index;\n wrapperleng = this.viewWrapper.offsetWidth +\n parseInt(window.getComputedStyle(this.viewWrapper).paddingRight, 10);\n while (((wrapperleng + remainSize + downIconWidth + this.clearIconWidth) > overAllContainer) && wrapperleng !== 0\n && this.viewWrapper.innerHTML !== '') {\n var textArr = [];\n this.viewWrapper.innerHTML = textArr.join(this.delimiterChar);\n remaining = this.value.length;\n wrapperleng = this.viewWrapper.offsetWidth +\n parseInt(window.getComputedStyle(this.viewWrapper).paddingRight, 10);\n }\n break;\n }\n else if ((wrapperleng + remainSize + downIconWidth + this.clearIconWidth) <= overAllContainer) {\n tempData = data;\n tempIndex = index;\n }\n else if (index === 0) {\n tempData = '';\n tempIndex = -1;\n }\n }\n }\n if (remaining > 0) {\n var totalWidth = overAllContainer - downIconWidth - this.clearIconWidth;\n this.viewWrapper.appendChild(this.updateRemainTemplate(raminElement, this.viewWrapper, remaining, remainContent, totalContent, totalWidth));\n this.updateRemainWidth(this.viewWrapper, totalWidth);\n this.updateRemainingText(raminElement, downIconWidth, remaining, remainContent, totalContent);\n }\n }\n else {\n if (!isNullOrUndefined(this.viewWrapper)) {\n this.viewWrapper.innerHTML = '';\n this.viewWrapper.style.display = 'none';\n }\n }\n };\n MultiSelect.prototype.checkClearIconWidth = function () {\n if (this.showClearButton) {\n this.clearIconWidth = this.overAllClear.offsetWidth;\n }\n };\n MultiSelect.prototype.updateRemainWidth = function (viewWrapper, totalWidth) {\n if (viewWrapper.classList.contains(TOTAL_COUNT_WRAPPER) && totalWidth < (viewWrapper.offsetWidth +\n parseInt(window.getComputedStyle(viewWrapper).paddingLeft, 10)\n + parseInt(window.getComputedStyle(viewWrapper).paddingLeft, 10))) {\n viewWrapper.style.width = totalWidth + 'px';\n }\n };\n MultiSelect.prototype.updateRemainTemplate = function (raminElement, viewWrapper, remaining, remainContent, totalContent, totalWidth) {\n if (viewWrapper.firstChild && viewWrapper.firstChild.nodeType === 3 && viewWrapper.firstChild.nodeValue === '') {\n viewWrapper.removeChild(viewWrapper.firstChild);\n }\n raminElement.innerHTML = '';\n var remainTemp = remainContent.replace('${count}', remaining.toString());\n var totalTemp = totalContent.replace('${count}', remaining.toString());\n raminElement.innerText = (viewWrapper.firstChild && viewWrapper.firstChild.nodeType === 3) ? remainTemp : totalTemp;\n if (viewWrapper.firstChild && viewWrapper.firstChild.nodeType === 3) {\n viewWrapper.classList.remove(TOTAL_COUNT_WRAPPER);\n }\n else {\n viewWrapper.classList.add(TOTAL_COUNT_WRAPPER);\n this.updateRemainWidth(viewWrapper, totalWidth);\n }\n return raminElement;\n };\n MultiSelect.prototype.updateRemainingText = function (raminElement, downIconWidth, remaining, remainContent, totalContent) {\n var overAllContainer = this.componentWrapper.offsetWidth -\n parseInt(window.getComputedStyle(this.componentWrapper).paddingLeft, 10) -\n parseInt(window.getComputedStyle(this.componentWrapper).paddingRight, 10);\n var wrapperleng = this.viewWrapper.offsetWidth + parseInt(window.getComputedStyle(this.viewWrapper).paddingRight, 10);\n if (((wrapperleng + downIconWidth) >= overAllContainer) && wrapperleng !== 0 && this.viewWrapper.firstChild &&\n this.viewWrapper.firstChild.nodeType === 3) {\n while (((wrapperleng + downIconWidth) > overAllContainer) && wrapperleng !== 0 && this.viewWrapper.firstChild &&\n this.viewWrapper.firstChild.nodeType === 3) {\n var textArr = this.viewWrapper.firstChild.nodeValue.split(this.delimiterChar);\n textArr.pop();\n this.viewWrapper.firstChild.nodeValue = textArr.join(this.delimiterChar);\n if (this.viewWrapper.firstChild.nodeValue === '') {\n this.viewWrapper.removeChild(this.viewWrapper.firstChild);\n }\n remaining++;\n wrapperleng = this.viewWrapper.offsetWidth;\n }\n var totalWidth = overAllContainer - downIconWidth;\n this.updateRemainTemplate(raminElement, this.viewWrapper, remaining, remainContent, totalContent, totalWidth);\n }\n };\n MultiSelect.prototype.getOverflowVal = function (index) {\n var temp;\n if (this.mainData && this.mainData.length) {\n if (this.mode === 'CheckBox') {\n var newTemp = this.listData;\n this.listData = this.mainData;\n temp = this.getTextByValue(this.value[index]);\n this.listData = newTemp;\n }\n else {\n temp = this.getTextByValue(this.value[index]);\n }\n }\n else {\n temp = this.value[index];\n }\n return temp;\n };\n MultiSelect.prototype.unWireEvent = function () {\n if (!isNullOrUndefined(this.componentWrapper)) {\n EventHandler.remove(this.componentWrapper, 'mousedown', this.wrapperClick);\n }\n EventHandler.remove(window, 'resize', this.windowResize);\n if (!isNullOrUndefined(this.inputElement)) {\n EventHandler.remove(this.inputElement, 'focus', this.focusInHandler);\n EventHandler.remove(this.inputElement, 'keydown', this.onKeyDown);\n if (this.mode !== 'CheckBox') {\n EventHandler.remove(this.inputElement, 'input', this.onInput);\n }\n EventHandler.remove(this.inputElement, 'keyup', this.keyUp);\n var formElement = closest(this.inputElement, 'form');\n if (formElement) {\n EventHandler.remove(formElement, 'reset', this.resetValueHandler);\n }\n EventHandler.remove(this.inputElement, 'blur', this.onBlurHandler);\n }\n if (!isNullOrUndefined(this.componentWrapper)) {\n EventHandler.remove(this.componentWrapper, 'mouseover', this.mouseIn);\n EventHandler.remove(this.componentWrapper, 'mouseout', this.mouseOut);\n }\n if (!isNullOrUndefined(this.overAllClear)) {\n EventHandler.remove(this.overAllClear, 'mousedown', this.clearAll);\n }\n if (!isNullOrUndefined(this.inputElement)) {\n EventHandler.remove(this.inputElement, 'paste', this.pasteHandler);\n }\n };\n MultiSelect.prototype.selectAllItem = function (state, event, list) {\n var li;\n if (!isNullOrUndefined(this.list)) {\n li = this.list.querySelectorAll(state ?\n 'li.e-list-item:not([aria-selected=\"true\"]):not(.e-reorder-hide)' :\n 'li.e-list-item[aria-selected=\"true\"]:not(.e-reorder-hide)');\n }\n if (this.value && this.value.length && event && event.target\n && closest(event.target, '.e-close-hooker') && this.allowFiltering) {\n li = this.mainList.querySelectorAll(state ?\n 'li.e-list-item:not([aria-selected=\"true\"]):not(.e-reorder-hide)' :\n 'li.e-list-item[aria-selected=\"true\"]:not(.e-reorder-hide)');\n }\n if (this.enableGroupCheckBox && this.mode === 'CheckBox' && !isNullOrUndefined(this.fields.groupBy)) {\n var target = (event ? (this.groupTemplate ? closest(event.target, '.e-list-group-item') : event.target) : null);\n target = (event && event.keyCode === 32) ? list : target;\n target = (target && target.classList.contains('e-frame')) ? target.parentElement.parentElement : target;\n if (target && target.classList.contains('e-list-group-item')) {\n var listElement = target.nextElementSibling;\n if (isNullOrUndefined(listElement)) {\n return;\n }\n while (listElement.classList.contains('e-list-item')) {\n if (state) {\n if (!listElement.firstElementChild.lastElementChild.classList.contains('e-check')) {\n var selectionLimit = this.value && this.value.length ? this.value.length : 0;\n if (listElement.classList.contains('e-active')) {\n selectionLimit -= 1;\n }\n if (selectionLimit < this.maximumSelectionLength) {\n this.updateListSelection(listElement, event);\n }\n }\n }\n else {\n if (listElement.firstElementChild.lastElementChild.classList.contains('e-check')) {\n this.updateListSelection(listElement, event);\n }\n }\n listElement = listElement.nextElementSibling;\n if (listElement == null) {\n break;\n }\n }\n if (target.classList.contains('e-list-group-item')) {\n var focusedElement = this.list.getElementsByClassName('e-item-focus')[0];\n if (focusedElement) {\n focusedElement.classList.remove('e-item-focus');\n }\n if (state) {\n target.classList.add('e-active');\n }\n else {\n target.classList.remove('e-active');\n }\n target.classList.add('e-item-focus');\n this.updateAriaActiveDescendant();\n }\n this.textboxValueUpdate();\n this.checkPlaceholderSize();\n if (!this.changeOnBlur && event) {\n this.updateValueState(event, this.value, this.tempValues);\n }\n }\n else {\n this.updateValue(event, li, state);\n }\n }\n else {\n this.updateValue(event, li, state);\n }\n this.addValidInputClass();\n };\n MultiSelect.prototype.updateValue = function (event, li, state) {\n var _this = this;\n var length = li.length;\n var beforeSelectArgs = {\n event: event,\n items: state ? li : [],\n itemData: state ? this.listData : [],\n isInteracted: event ? true : false,\n isChecked: state,\n preventSelectEvent: false\n };\n this.trigger('beforeSelectAll', beforeSelectArgs);\n if (li && li.length) {\n var index_1 = 0;\n var count_1 = 0;\n if (this.enableGroupCheckBox) {\n count_1 = state ? this.maximumSelectionLength - (this.value ? this.value.length : 0) : li.length;\n }\n else {\n count_1 = state ? this.maximumSelectionLength - (this.value ? this.value.length : 0) : this.maximumSelectionLength;\n }\n if (!beforeSelectArgs.preventSelectEvent) {\n while (index_1 < length && index_1 <= 50 && index_1 < count_1) {\n this.updateListSelection(li[index_1], event, length - index_1);\n if (this.enableGroupCheckBox) {\n this.findGroupStart(li[index_1]);\n }\n index_1++;\n }\n if (length > 50) {\n setTimeout(function () {\n while (index_1 < length && index_1 < count_1) {\n _this.updateListSelection(li[index_1], event, length - index_1);\n if (_this.enableGroupCheckBox) {\n _this.findGroupStart(li[index_1]);\n }\n index_1++;\n }\n _this.updatedataValueItems(event);\n if (!_this.changeOnBlur) {\n _this.updateValueState(event, _this.value, _this.tempValues);\n _this.isSelectAll = _this.isSelectAll ? !_this.isSelectAll : _this.isSelectAll;\n }\n _this.updateHiddenElement();\n }, 0);\n }\n }\n else {\n for (var i = 0; i < li.length && i < count_1; i++) {\n this.removeHover();\n var customVal = li[i].getAttribute('data-value');\n var value = this.getFormattedValue(customVal);\n var mainElement = this.mainList ? this.mainList.querySelectorAll(state ?\n 'li.e-list-item:not([aria-selected=\"true\"]):not(.e-reorder-hide)' :\n 'li.e-list-item[aria-selected=\"true\"]:not(.e-reorder-hide)')[i] : null;\n if (state) {\n this.value = !this.value ? [] : this.value;\n if (this.value.indexOf(value) < 0) {\n this.setProperties({ value: [].concat([], this.value, [value]) }, true);\n }\n this.removeFocus();\n this.addListSelection(li[i], mainElement);\n this.updateChipStatus();\n this.checkMaxSelection();\n }\n else {\n this.removeAllItems(value, event, false, li[i], mainElement);\n }\n if (this.enableGroupCheckBox) {\n this.findGroupStart(li[i]);\n }\n }\n if (!state) {\n var limit = this.value && this.value.length ? this.value.length : 0;\n if (limit < this.maximumSelectionLength) {\n var collection = this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li + ':not(.e-active)');\n removeClass(collection, 'e-disable');\n }\n }\n var args = {\n event: event,\n items: state ? li : [],\n itemData: state ? this.listData : [],\n isInteracted: event ? true : false,\n isChecked: state\n };\n this.trigger('selectedAll', args);\n }\n }\n this.updatedataValueItems(event);\n this.checkPlaceholderSize();\n if (length <= 50 && !beforeSelectArgs.preventSelectEvent) {\n if (!this.changeOnBlur) {\n this.updateValueState(event, this.value, this.tempValues);\n this.isSelectAll = this.isSelectAll ? !this.isSelectAll : this.isSelectAll;\n }\n this.updateHiddenElement();\n }\n };\n MultiSelect.prototype.updateHiddenElement = function () {\n var _this = this;\n var hiddenValue = '';\n var wrapperText = '';\n var data = '';\n var text = [];\n if (this.mode === 'CheckBox') {\n this.value.map(function (value, index) {\n hiddenValue += '';\n if (_this.listData) {\n data = _this.getTextByValue(value);\n }\n else {\n data = value;\n }\n wrapperText += data + _this.delimiterChar + ' ';\n text.push(data);\n });\n this.hiddenElement.innerHTML = hiddenValue;\n this.updateWrapperText(this.delimiterWrapper, wrapperText);\n this.delimiterWrapper.setAttribute('id', getUniqueID('delim_val'));\n this.inputElement.setAttribute('aria-describedby', this.delimiterWrapper.id);\n this.inputElement.setAttribute('aria-labelledby', this.delimiterWrapper.id);\n this.setProperties({ text: text.toString() }, true);\n this.refreshInputHight();\n this.refreshPlaceHolder();\n }\n };\n MultiSelect.prototype.updatedataValueItems = function (event) {\n this.deselectHeader();\n this.textboxValueUpdate(event);\n };\n MultiSelect.prototype.textboxValueUpdate = function (event) {\n var isRemoveAll = event && event.target && (closest(event.target, '.e-selectall-parent')\n || closest(event.target, '.e-close-hooker'));\n if (this.mode !== 'Box' && !this.isPopupOpen() && !(this.mode === 'CheckBox' && (this.isSelectAll || isRemoveAll))) {\n this.updateDelimView();\n }\n else {\n this.searchWrapper.classList.remove(ZERO_SIZE);\n }\n if (this.mode === 'CheckBox') {\n this.updateDelimView();\n if (!(isRemoveAll || this.isSelectAll)) {\n this.updateDelimeter(this.delimiterChar, event);\n }\n this.refreshInputHight();\n }\n else {\n this.updateDelimeter(this.delimiterChar, event);\n }\n this.refreshPlaceHolder();\n };\n MultiSelect.prototype.setZIndex = function () {\n if (this.popupObj) {\n this.popupObj.setProperties({ 'zIndex': this.zIndex });\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n MultiSelect.prototype.updateDataSource = function (prop) {\n if (isNullOrUndefined(this.list)) {\n this.renderPopup();\n }\n else {\n this.resetList(this.dataSource);\n }\n if (this.value && this.value.length) {\n this.setProperties({ 'value': this.value });\n this.refreshSelection();\n }\n };\n MultiSelect.prototype.onLoadSelect = function () {\n this.setDynValue = true;\n this.renderPopup();\n };\n MultiSelect.prototype.selectAllItems = function (state, event) {\n var _this = this;\n if (isNullOrUndefined(this.list)) {\n this.selectAllAction = function () {\n if (_this.mode === 'CheckBox' && _this.showSelectAll) {\n var args = {\n module: 'CheckBoxSelection',\n enable: _this.mode === 'CheckBox',\n value: state ? 'check' : 'uncheck'\n };\n _this.notify('checkSelectAll', args);\n }\n _this.selectAllItem(state, event);\n _this.selectAllAction = null;\n };\n _super.prototype.render.call(this);\n }\n else {\n this.selectAllAction = null;\n if (this.mode === 'CheckBox' && this.showSelectAll) {\n var args = {\n value: state ? 'check' : 'uncheck',\n enable: this.mode === 'CheckBox',\n module: 'CheckBoxSelection'\n };\n this.notify('checkSelectAll', args);\n }\n this.selectAllItem(state, event);\n }\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} Returns the persisted data of the component.\n */\n MultiSelect.prototype.getPersistData = function () {\n return this.addOnPersist(['value']);\n };\n /**\n * Dynamically change the value of properties.\n *\n * @param {MultiSelectModel} newProp - Returns the dynamic property value of the component.\n * @param {MultiSelectModel} oldProp - Returns the previous property value of the component.\n * @private\n * @returns {void}\n */\n MultiSelect.prototype.onPropertyChanged = function (newProp, oldProp) {\n if (newProp.dataSource && !isNullOrUndefined(Object.keys(newProp.dataSource))\n || newProp.query && !isNullOrUndefined(Object.keys(newProp.query))) {\n if (this.resetFilteredData) {\n // The filtered data is not being reset in the component after the user focuses out.\n this.resetMainList = !this.resetMainList ? this.mainList : this.resetMainList;\n this.resetFilteredData = false;\n }\n this.mainList = null;\n this.mainData = null;\n this.isFirstClick = false;\n this.isDynamicDataChange = true;\n }\n if (this.getModuleName() === 'multiselect') {\n this.filterAction = false;\n this.setUpdateInitial(['fields', 'query', 'dataSource'], newProp);\n }\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'query':\n case 'dataSource':\n if (this.mode === 'CheckBox' && this.showSelectAll) {\n if (!isNullOrUndefined(this.popupObj)) {\n this.popupObj.destroy();\n this.popupObj = null;\n }\n this.renderPopup();\n }\n break;\n case 'htmlAttributes':\n this.updateHTMLAttribute();\n break;\n case 'showClearButton':\n this.updateClearButton(newProp.showClearButton);\n break;\n case 'text':\n this.updateVal(this.value, this.value, 'text');\n break;\n case 'value':\n this.updateVal(this.value, oldProp.value, 'value');\n this.addValidInputClass();\n if (!this.closePopupOnSelect && this.isPopupOpen()) {\n this.refreshPopup();\n }\n this.preventChange = this.isAngular && this.preventChange ? !this.preventChange : this.preventChange;\n break;\n case 'width':\n this.setWidth(newProp.width);\n this.popupObj.setProperties({ width: this.calcPopupWidth() });\n break;\n case 'placeholder':\n this.refreshPlaceHolder();\n break;\n case 'filterBarPlaceholder':\n if (this.allowFiltering) {\n this.notify('filterBarPlaceholder', { filterBarPlaceholder: newProp.filterBarPlaceholder });\n }\n break;\n case 'delimiterChar':\n if (this.mode !== 'Box') {\n this.updateDelimView();\n }\n this.updateData(newProp.delimiterChar);\n break;\n case 'cssClass':\n this.updateOldPropCssClass(oldProp.cssClass);\n this.updateCssClass();\n this.calculateWidth();\n break;\n case 'enableRtl':\n this.enableRTL(newProp.enableRtl);\n _super.prototype.onPropertyChanged.call(this, newProp, oldProp);\n break;\n case 'readonly':\n this.updateReadonly(newProp.readonly);\n this.hidePopup();\n break;\n case 'enabled':\n this.hidePopup();\n this.enable(newProp.enabled);\n break;\n case 'showSelectAll':\n if (this.popupObj) {\n this.popupObj.destroy();\n this.popupObj = null;\n }\n this.renderPopup();\n break;\n case 'showDropDownIcon':\n this.dropDownIcon();\n break;\n case 'floatLabelType':\n this.setFloatLabelType();\n this.addValidInputClass();\n Input.createSpanElement(this.overAllWrapper, this.createElement);\n this.calculateWidth();\n if (!isNullOrUndefined(this.overAllWrapper) && !isNullOrUndefined(this.overAllWrapper.getElementsByClassName('e-ddl-icon')[0] && this.overAllWrapper.getElementsByClassName('e-float-text-content')[0] && this.floatLabelType !== 'Never')) {\n this.overAllWrapper.getElementsByClassName('e-float-text-content')[0].classList.add('e-icon');\n }\n break;\n case 'enableSelectionOrder':\n break;\n case 'selectAllText':\n this.notify('selectAllText', false);\n break;\n case 'popupHeight':\n if (this.popupObj) {\n var overAllHeight = parseInt(this.popupHeight, 10);\n if (this.popupHeight !== 'auto') {\n this.list.style.maxHeight = formatUnit(overAllHeight);\n this.popupWrapper.style.maxHeight = formatUnit(this.popupHeight);\n }\n else {\n this.list.style.maxHeight = formatUnit(this.popupHeight);\n }\n }\n break;\n case 'headerTemplate':\n case 'footerTemplate':\n this.reInitializePoup();\n break;\n case 'allowFiltering':\n if (this.mode === 'CheckBox' && this.popupObj) {\n this.reInitializePoup();\n }\n this.updateSelectElementData(this.allowFiltering);\n break;\n default:\n {\n // eslint-disable-next-line max-len\n var msProps = this.getPropObject(prop, newProp, oldProp);\n _super.prototype.onPropertyChanged.call(this, msProps.newProperty, msProps.oldProperty);\n }\n break;\n }\n }\n };\n MultiSelect.prototype.reInitializePoup = function () {\n if (this.popupObj) {\n this.popupObj.destroy();\n this.popupObj = null;\n }\n this.renderPopup();\n };\n MultiSelect.prototype.presentItemValue = function (ulElement) {\n var valuecheck = [];\n for (var i = 0; i < this.value.length; i++) {\n var checkEle = this.findListElement(((this.allowFiltering && !isNullOrUndefined(this.mainList)) ? this.mainList : ulElement), 'li', 'data-value', this.value[i]);\n if (!checkEle) {\n valuecheck.push(this.value[i]);\n }\n }\n return valuecheck;\n };\n ;\n MultiSelect.prototype.addNonPresentItems = function (valuecheck, ulElement, list, event) {\n var _this = this;\n this.dataSource.executeQuery(this.getForQuery(valuecheck)).then(function (e) {\n if (e.result.length > 0) {\n _this.addItem(e.result, list.length);\n }\n _this.updateActionList(ulElement, list, event);\n });\n };\n ;\n MultiSelect.prototype.updateVal = function (newProp, oldProp, prop) {\n if (!this.list) {\n this.onLoadSelect();\n }\n else if ((this.dataSource instanceof DataManager) && (!this.listData || !(this.mainList && this.mainData))) {\n this.onLoadSelect();\n }\n else {\n var valuecheck = [];\n if (!isNullOrUndefined(this.value) && !this.allowCustomValue) {\n valuecheck = this.presentItemValue(this.ulElement);\n }\n if (prop == 'value' && valuecheck.length > 0 && this.dataSource instanceof DataManager && !isNullOrUndefined(this.value)\n && this.listData != null) {\n this.mainData = null;\n this.setDynValue = true;\n this.addNonPresentItems(valuecheck, this.ulElement, this.listData);\n }\n else {\n if (prop === 'text') {\n this.initialTextUpdate();\n newProp = this.value;\n }\n if (isNullOrUndefined(this.value) || this.value.length === 0) {\n this.tempValues = oldProp;\n }\n // eslint-disable-next-line\n if (this.allowCustomValue && (this.mode === 'Default' || this.mode === 'Box') && this.isReact && this.inputFocus\n && this.isPopupOpen() && this.mainData !== this.listData) {\n var list = this.mainList.cloneNode ? this.mainList.cloneNode(true) : this.mainList;\n this.onActionComplete(list, this.mainData);\n }\n this.initialValueUpdate();\n if (this.mode !== 'Box' && !this.inputFocus) {\n this.updateDelimView();\n }\n if (!this.inputFocus) {\n this.refreshInputHight();\n }\n this.refreshPlaceHolder();\n if (this.mode !== 'CheckBox' && this.changeOnBlur) {\n this.updateValueState(null, newProp, oldProp);\n }\n this.checkPlaceholderSize();\n }\n }\n if (!this.changeOnBlur) {\n this.updateValueState(null, newProp, oldProp);\n }\n };\n /**\n * Adds a new item to the multiselect popup list. By default, new item appends to the list as the last item,\n * but you can insert based on the index parameter.\n *\n * @param { Object[] } items - Specifies an array of JSON data or a JSON data.\n * @param { number } itemIndex - Specifies the index to place the newly added item in the popup list.\n * @returns {void}\n */\n MultiSelect.prototype.addItem = function (items, itemIndex) {\n _super.prototype.addItem.call(this, items, itemIndex);\n };\n /**\n * Hides the popup, if the popup in a open state.\n *\n * @returns {void}\n */\n MultiSelect.prototype.hidePopup = function (e) {\n var _this = this;\n var delay = 100;\n if (this.isPopupOpen()) {\n var animModel = {\n name: 'FadeOut',\n duration: 100,\n delay: delay ? delay : 0\n };\n var eventArgs = { popup: this.popupObj, cancel: false, animation: animModel, event: e || null };\n this.trigger('close', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n if (_this.fields.groupBy && _this.mode !== 'CheckBox' && _this.fixedHeaderElement) {\n remove(_this.fixedHeaderElement);\n _this.fixedHeaderElement = null;\n }\n _this.beforePopupOpen = false;\n _this.overAllWrapper.classList.remove(iconAnimation);\n _this.popupObj.hide(new Animation(eventArgs.animation));\n attributes(_this.inputElement, { 'aria-expanded': 'false' });\n _this.inputElement.removeAttribute('aria-owns');\n _this.inputElement.removeAttribute('aria-activedescendant');\n if (_this.allowFiltering) {\n _this.notify('inputFocus', { module: 'CheckBoxSelection', enable: _this.mode === 'CheckBox', value: 'clear' });\n }\n _this.popupObj.hide();\n removeClass([document.body, _this.popupObj.element], 'e-popup-full-page');\n EventHandler.remove(_this.list, 'keydown', _this.onKeyDown);\n }\n });\n }\n };\n /**\n * Shows the popup, if the popup in a closed state.\n *\n * @returns {void}\n */\n MultiSelect.prototype.showPopup = function (e) {\n var _this = this;\n if (!this.enabled) {\n return;\n }\n var args = { cancel: false };\n this.trigger('beforeOpen', args, function (args) {\n if (!args.cancel) {\n if (!_this.ulElement) {\n _this.beforePopupOpen = true;\n _super.prototype.render.call(_this, e);\n if (_this.mode === 'CheckBox' && Browser.isDevice && _this.allowFiltering) {\n _this.notify('popupFullScreen', { module: 'CheckBoxSelection', enable: _this.mode === 'CheckBox' });\n }\n return;\n }\n if (_this.mode === 'CheckBox' && Browser.isDevice && _this.allowFiltering) {\n _this.notify('popupFullScreen', { module: 'CheckBoxSelection', enable: _this.mode === 'CheckBox' });\n }\n var mainLiLength = _this.ulElement.querySelectorAll('li.' + 'e-list-item').length;\n var liLength = _this.ulElement.querySelectorAll('li.'\n + dropDownBaseClasses.li + '.' + HIDE_LIST).length;\n if (mainLiLength > 0 && (mainLiLength === liLength) && (liLength === _this.mainData.length) && !(_this.targetElement() !== '' && _this.allowCustomValue)) {\n _this.beforePopupOpen = false;\n return;\n }\n _this.onPopupShown(e);\n }\n });\n };\n /**\n * Based on the state parameter, entire list item will be selected/deselected.\n * parameter\n * `true` - Selects entire list items.\n * `false` - Un Selects entire list items.\n *\n * @param {boolean} state - if it’s true then Selects the entire list items. If it’s false the Unselects entire list items.\n * @returns {void}\n */\n MultiSelect.prototype.selectAll = function (state) {\n this.isSelectAll = true;\n this.selectAllItems(state);\n };\n /**\n * Return the module name of this component.\n *\n * @private\n * @returns {string} Return the module name of this component.\n */\n MultiSelect.prototype.getModuleName = function () {\n return 'multiselect';\n };\n /**\n * Allows you to clear the selected values from the Multiselect component.\n *\n * @returns {void}\n */\n MultiSelect.prototype.clear = function () {\n var _this = this;\n this.selectAll(false);\n if (this.value && this.value.length) {\n setTimeout(function () {\n _this.setProperties({ value: null }, true);\n }, 0);\n }\n else {\n this.setProperties({ value: null }, true);\n }\n };\n /**\n * To Initialize the control rendering\n *\n * @private\n * @returns {void}\n */\n MultiSelect.prototype.render = function () {\n this.setDynValue = this.initStatus = false;\n this.isSelectAll = false;\n this.selectAllEventEle = [];\n this.searchWrapper = this.createElement('span', { className: SEARCHBOX_WRAPPER + ' ' + ((this.mode === 'Box') ? BOX_ELEMENT : '') });\n this.viewWrapper = this.createElement('span', { className: DELIMITER_VIEW + ' ' + DELIMITER_WRAPPER, styles: 'display:none;' });\n this.overAllClear = this.createElement('span', {\n className: CLOSEICON_CLASS, styles: 'display:none;'\n });\n this.componentWrapper = this.createElement('div', { className: ELEMENT_WRAPPER });\n this.overAllWrapper = this.createElement('div', { className: OVER_ALL_WRAPPER });\n if (this.mode === 'CheckBox') {\n addClass([this.overAllWrapper], 'e-checkbox');\n }\n if (Browser.isDevice) {\n this.componentWrapper.classList.add(ELEMENT_MOBILE_WRAPPER);\n }\n this.setWidth(this.width);\n this.overAllWrapper.appendChild(this.componentWrapper);\n this.popupWrapper = this.createElement('div', { id: this.element.id + '_popup', className: POPUP_WRAPPER });\n if (this.mode === 'Delimiter' || this.mode === 'CheckBox') {\n this.delimiterWrapper = this.createElement('span', { className: DELIMITER_WRAPPER, styles: 'display:none' });\n this.componentWrapper.appendChild(this.delimiterWrapper);\n }\n else {\n this.chipCollectionWrapper = this.createElement('span', {\n className: CHIP_WRAPPER,\n styles: 'display:none'\n });\n if (this.mode === 'Default') {\n this.chipCollectionWrapper.setAttribute('id', getUniqueID('chip_default'));\n }\n else if (this.mode === 'Box') {\n this.chipCollectionWrapper.setAttribute('id', getUniqueID('chip_box'));\n }\n this.componentWrapper.appendChild(this.chipCollectionWrapper);\n }\n if (this.mode !== 'Box') {\n this.componentWrapper.appendChild(this.viewWrapper);\n }\n this.componentWrapper.appendChild(this.searchWrapper);\n if (this.showClearButton && !Browser.isDevice) {\n this.componentWrapper.appendChild(this.overAllClear);\n }\n else {\n this.componentWrapper.classList.add(CLOSE_ICON_HIDE);\n }\n this.dropDownIcon();\n this.inputElement = this.createElement('input', {\n className: INPUT_ELEMENT,\n attrs: {\n spellcheck: 'false',\n type: 'text',\n autocomplete: 'off',\n tabindex: '0',\n role: 'combobox'\n }\n });\n if (this.mode === 'Default' || this.mode === 'Box') {\n this.inputElement.setAttribute('aria-describedby', this.chipCollectionWrapper.id);\n }\n if (this.element.tagName !== this.getNgDirective()) {\n this.element.style.display = 'none';\n }\n if (this.element.tagName === this.getNgDirective()) {\n this.element.appendChild(this.overAllWrapper);\n this.searchWrapper.appendChild(this.inputElement);\n }\n else {\n this.element.parentElement.insertBefore(this.overAllWrapper, this.element);\n this.searchWrapper.appendChild(this.inputElement);\n this.searchWrapper.appendChild(this.element);\n this.element.removeAttribute('tabindex');\n }\n if (this.floatLabelType !== 'Never') {\n createFloatLabel(this.overAllWrapper, this.searchWrapper, this.element, this.inputElement, this.value, this.floatLabelType, this.placeholder);\n }\n else if (this.floatLabelType === 'Never') {\n this.refreshPlaceHolder();\n }\n this.addValidInputClass();\n this.element.style.opacity = '';\n var id = this.element.getAttribute('id') ? this.element.getAttribute('id') : getUniqueID('ej2_dropdownlist');\n this.element.id = id;\n this.hiddenElement = this.createElement('select', {\n attrs: { 'aria-hidden': 'true', 'class': HIDDEN_ELEMENT, 'tabindex': '-1', 'multiple': '' }\n });\n this.componentWrapper.appendChild(this.hiddenElement);\n this.validationAttribute(this.element, this.hiddenElement);\n if (this.mode !== 'CheckBox') {\n this.hideOverAllClear();\n }\n if (!isNullOrUndefined(closest(this.element, \"fieldset\")) && closest(this.element, \"fieldset\").disabled) {\n this.enabled = false;\n }\n this.wireEvent();\n this.enable(this.enabled);\n this.enableRTL(this.enableRtl);\n this.checkInitialValue();\n if (this.element.hasAttribute('data-val')) {\n this.element.setAttribute('data-val', 'false');\n }\n Input.createSpanElement(this.overAllWrapper, this.createElement);\n this.calculateWidth();\n if (!isNullOrUndefined(this.overAllWrapper) && !isNullOrUndefined(this.overAllWrapper.getElementsByClassName('e-ddl-icon')[0] && this.overAllWrapper.getElementsByClassName('e-float-text-content')[0] && this.floatLabelType !== 'Never')) {\n this.overAllWrapper.getElementsByClassName('e-float-text-content')[0].classList.add('e-icon');\n }\n this.renderComplete();\n };\n MultiSelect.prototype.checkInitialValue = function () {\n var _this = this;\n var isData = this.dataSource instanceof Array ? (this.dataSource.length > 0)\n : !isNullOrUndefined(this.dataSource);\n if (!(this.value && this.value.length) &&\n isNullOrUndefined(this.text) &&\n !isData &&\n this.element.tagName === 'SELECT' &&\n this.element.options.length > 0) {\n var optionsElement = this.element.options;\n var valueCol = [];\n var textCol = '';\n for (var index = 0, optionsLen = optionsElement.length; index < optionsLen; index++) {\n var opt = optionsElement[index];\n if (!isNullOrUndefined(opt.getAttribute('selected'))) {\n if (opt.getAttribute('value')) {\n valueCol.push(opt.getAttribute('value'));\n }\n else {\n textCol += (opt.text + this.delimiterChar);\n }\n }\n }\n if (valueCol.length > 0) {\n this.setProperties({ value: valueCol }, true);\n }\n else if (textCol !== '') {\n this.setProperties({ text: textCol }, true);\n }\n if (valueCol.length > 0 || textCol !== '') {\n this.refreshInputHight();\n this.refreshPlaceHolder();\n }\n }\n if ((this.value && this.value.length) || !isNullOrUndefined(this.text)) {\n if (!this.list) {\n _super.prototype.render.call(this);\n }\n }\n if (!isNullOrUndefined(this.text) && (isNullOrUndefined(this.value) || this.value.length === 0)) {\n this.initialTextUpdate();\n }\n if (this.value && this.value.length) {\n if (!(this.dataSource instanceof DataManager)) {\n this.initialValueUpdate();\n this.initialUpdate();\n }\n else {\n this.setInitialValue = function () {\n _this.initStatus = false;\n _this.initialValueUpdate();\n _this.initialUpdate();\n _this.setInitialValue = null;\n _this.initStatus = true;\n };\n }\n this.updateTempValue();\n }\n else {\n this.initialUpdate();\n }\n this.initStatus = true;\n this.checkAutoFocus();\n if (!isNullOrUndefined(this.text)) {\n this.element.setAttribute('data-initial-value', this.text);\n }\n };\n MultiSelect.prototype.checkAutoFocus = function () {\n if (this.element.hasAttribute('autofocus')) {\n this.inputElement.focus();\n }\n };\n MultiSelect.prototype.setFloatLabelType = function () {\n removeFloating(this.overAllWrapper, this.componentWrapper, this.searchWrapper, this.inputElement, this.value, this.floatLabelType, this.placeholder);\n if (this.floatLabelType !== 'Never') {\n createFloatLabel(this.overAllWrapper, this.searchWrapper, this.element, this.inputElement, this.value, this.floatLabelType, this.placeholder);\n }\n };\n MultiSelect.prototype.addValidInputClass = function () {\n if (!isNullOrUndefined(this.overAllWrapper)) {\n if ((!isNullOrUndefined(this.value) && this.value.length) || this.floatLabelType === 'Always') {\n addClass([this.overAllWrapper], 'e-valid-input');\n }\n else {\n removeClass([this.overAllWrapper], 'e-valid-input');\n }\n }\n };\n MultiSelect.prototype.dropDownIcon = function () {\n if (this.showDropDownIcon) {\n this.dropIcon = this.createElement('span', { className: dropdownIcon });\n this.componentWrapper.appendChild(this.dropIcon);\n addClass([this.componentWrapper], ['e-down-icon']);\n }\n else {\n if (!isNullOrUndefined(this.dropIcon)) {\n this.dropIcon.parentElement.removeChild(this.dropIcon);\n removeClass([this.componentWrapper], ['e-down-icon']);\n }\n }\n };\n MultiSelect.prototype.initialUpdate = function () {\n if (this.mode !== 'Box' && !(this.setDynValue && this.mode === 'Default' && this.inputFocus)) {\n this.updateDelimView();\n }\n this.updateCssClass();\n this.updateHTMLAttribute();\n this.updateReadonly(this.readonly);\n this.refreshInputHight();\n this.checkPlaceholderSize();\n };\n /**\n * Removes the component from the DOM and detaches all its related event handlers. Also it removes the attributes and classes.\n *\n * @method destroy\n * @returns {void}\n */\n MultiSelect.prototype.destroy = function () {\n // eslint-disable-next-line\n if (this.isReact) {\n this.clearTemplate();\n }\n if (this.popupObj) {\n this.popupObj.hide();\n }\n this.notify(destroy, {});\n this.unwireListEvents();\n this.unWireEvent();\n this.list = null;\n this.popupObj = null;\n this.mainList = null;\n this.mainData = null;\n this.filterParent = null;\n this.ulElement = null;\n this.mainListCollection = null;\n _super.prototype.destroy.call(this);\n var temp = ['readonly', 'aria-disabled', 'placeholder'];\n var length = temp.length;\n if (!isNullOrUndefined(this.inputElement)) {\n while (length > 0) {\n this.inputElement.removeAttribute(temp[length - 1]);\n length--;\n }\n }\n if (!isNullOrUndefined(this.element)) {\n this.element.removeAttribute('data-initial-value');\n this.element.style.display = 'block';\n }\n if (this.overAllWrapper && this.overAllWrapper.parentElement) {\n if (this.overAllWrapper.parentElement.tagName === this.getNgDirective()) {\n remove(this.overAllWrapper);\n }\n else {\n this.overAllWrapper.parentElement.insertBefore(this.element, this.overAllWrapper);\n remove(this.overAllWrapper);\n }\n }\n this.componentWrapper = null;\n this.overAllClear = null;\n this.overAllWrapper = null;\n this.hiddenElement = null;\n this.searchWrapper = null;\n this.viewWrapper = null;\n this.chipCollectionWrapper = null;\n this.targetInputElement = null;\n this.popupWrapper = null;\n this.inputElement = null;\n this.delimiterWrapper = null;\n this.popupObj = null;\n this.popupWrapper = null;\n this.liCollections = null;\n this.header = null;\n this.mainList = null;\n this.mainListCollection = null;\n this.footer = null;\n this.selectAllEventEle = null;\n };\n __decorate([\n Complex({ text: null, value: null, iconCss: null, groupBy: null }, FieldSettings)\n ], MultiSelect.prototype, \"fields\", void 0);\n __decorate([\n Property(false)\n ], MultiSelect.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"groupTemplate\", void 0);\n __decorate([\n Property('No records found')\n ], MultiSelect.prototype, \"noRecordsTemplate\", void 0);\n __decorate([\n Property('Request failed')\n ], MultiSelect.prototype, \"actionFailureTemplate\", void 0);\n __decorate([\n Property('None')\n ], MultiSelect.prototype, \"sortOrder\", void 0);\n __decorate([\n Property(true)\n ], MultiSelect.prototype, \"enabled\", void 0);\n __decorate([\n Property(false)\n ], MultiSelect.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property([])\n ], MultiSelect.prototype, \"dataSource\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"query\", void 0);\n __decorate([\n Property('StartsWith')\n ], MultiSelect.prototype, \"filterType\", void 0);\n __decorate([\n Property(1000)\n ], MultiSelect.prototype, \"zIndex\", void 0);\n __decorate([\n Property(false)\n ], MultiSelect.prototype, \"ignoreAccent\", void 0);\n __decorate([\n Property()\n ], MultiSelect.prototype, \"locale\", void 0);\n __decorate([\n Property(false)\n ], MultiSelect.prototype, \"enableGroupCheckBox\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"cssClass\", void 0);\n __decorate([\n Property('100%')\n ], MultiSelect.prototype, \"width\", void 0);\n __decorate([\n Property('300px')\n ], MultiSelect.prototype, \"popupHeight\", void 0);\n __decorate([\n Property('100%')\n ], MultiSelect.prototype, \"popupWidth\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"placeholder\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"filterBarPlaceholder\", void 0);\n __decorate([\n Property({})\n ], MultiSelect.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"valueTemplate\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"headerTemplate\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"footerTemplate\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"itemTemplate\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"allowFiltering\", void 0);\n __decorate([\n Property(true)\n ], MultiSelect.prototype, \"changeOnBlur\", void 0);\n __decorate([\n Property(false)\n ], MultiSelect.prototype, \"allowCustomValue\", void 0);\n __decorate([\n Property(true)\n ], MultiSelect.prototype, \"showClearButton\", void 0);\n __decorate([\n Property(1000)\n ], MultiSelect.prototype, \"maximumSelectionLength\", void 0);\n __decorate([\n Property(false)\n ], MultiSelect.prototype, \"readonly\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"text\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"value\", void 0);\n __decorate([\n Property(true)\n ], MultiSelect.prototype, \"hideSelectedItem\", void 0);\n __decorate([\n Property(true)\n ], MultiSelect.prototype, \"closePopupOnSelect\", void 0);\n __decorate([\n Property('Default')\n ], MultiSelect.prototype, \"mode\", void 0);\n __decorate([\n Property(',')\n ], MultiSelect.prototype, \"delimiterChar\", void 0);\n __decorate([\n Property(true)\n ], MultiSelect.prototype, \"ignoreCase\", void 0);\n __decorate([\n Property(false)\n ], MultiSelect.prototype, \"showDropDownIcon\", void 0);\n __decorate([\n Property('Never')\n ], MultiSelect.prototype, \"floatLabelType\", void 0);\n __decorate([\n Property(false)\n ], MultiSelect.prototype, \"showSelectAll\", void 0);\n __decorate([\n Property('Select All')\n ], MultiSelect.prototype, \"selectAllText\", void 0);\n __decorate([\n Property('Unselect All')\n ], MultiSelect.prototype, \"unSelectAllText\", void 0);\n __decorate([\n Property(true)\n ], MultiSelect.prototype, \"enableSelectionOrder\", void 0);\n __decorate([\n Property(true)\n ], MultiSelect.prototype, \"openOnClick\", void 0);\n __decorate([\n Property(false)\n ], MultiSelect.prototype, \"addTagOnBlur\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"removing\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"removed\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"beforeSelectAll\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"selectedAll\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"blur\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"focus\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"chipSelection\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"filtering\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"tagging\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"customValueSelection\", void 0);\n MultiSelect = __decorate([\n NotifyPropertyChanges\n ], MultiSelect);\n return MultiSelect;\n}(DropDownBase));\nexport { MultiSelect };\n"],"sourceRoot":""}