{"version":3,"sources":["webpack:///./node_modules/core-js/modules/es.string.search.js","webpack:///../../../src/components/VPagination/VPagination.ts","webpack:///../../../src/components/VData/VData.ts","webpack:///../../../src/components/VDataIterator/VDataFooter.ts","webpack:///../../../src/components/VDataIterator/VDataIterator.ts","webpack:///../../../../src/components/VDataTable/mixins/header.ts","webpack:///../../../src/components/VDataTable/VDataTableHeaderMobile.ts","webpack:///../../../src/components/VDataTable/VDataTableHeaderDesktop.ts","webpack:///../../src/util/dedupeModelListeners.ts","webpack:///../../src/util/rebuildFunctionalSlots.ts","webpack:///../../../src/components/VDataTable/VDataTableHeader.ts","webpack:///../../../src/components/VDataTable/Row.ts","webpack:///../../../src/components/VDataTable/RowGroup.ts","webpack:///../../../src/components/VDataTable/VSimpleTable.ts","webpack:///../../../src/components/VDataTable/MobileRow.ts","webpack:///../../../src/mixins/mouse/index.ts","webpack:///../../../src/components/VDataTable/VDataTable.ts","webpack:///../../../src/components/VBtn/index.ts","webpack:///./node_modules/core-js/modules/es.number.max-safe-integer.js"],"names":["call","fixRegExpWellKnownSymbolLogic","anObject","requireObjectCoercible","sameValue","toString","getMethod","regExpExec","SEARCH","nativeSearch","maybeCallNative","regexp","O","this","searcher","undefined","RegExp","string","rx","S","res","done","value","previousLastIndex","lastIndex","result","index","mixins","Colorable","Intersectable","onVisible","Themeable","extend","name","directives","Resize","props","circle","Boolean","disabled","navigationColor","String","navigationTextColor","length","type","Number","default","validator","val","nextIcon","prevIcon","totalVisible","pageAriaLabel","currentPageAriaLabel","previousAriaLabel","nextAriaLabel","wrapperAriaLabel","data","maxButtons","selected","computed","classes","themeClasses","items","parseInt","isNaN","MAX_SAFE_INTEGER","maxLength","Math","min","max","range","even","left","floor","right","firstItem","lastItem","start","end","secondItem","beforeLastItem","watch","init","beforeMount","methods","onResize","$nextTick","setTimeout","width","$el","parentElement","clientWidth","window","innerWidth","next","e","preventDefault","$emit","previous","from","to","i","push","genIcon","h","icon","fn","label","setBackgroundColor","staticClass","class","attrs","on","click","VIcon","color","genItem","isCurrentPage","ariaLabel","$vuetify","lang","t","genItems","map","key","genList","children","modifiers","quiet","render","rtl","role","Vue","inheritAttrs","Array","options","Object","sortBy","sortDesc","customSort","Function","sortItems","mustSort","multiSort","page","itemsPerPage","groupBy","groupDesc","customGroup","groupItems","locale","disableSort","disablePagination","disableFiltering","search","customFilter","searchItems","serverItemsLength","internalOptions","wrapInArray","assign","sortDiff","groupDiff","fillArray","itemsLength","filteredItems","pageCount","ceil","pageStart","pageStop","isGrouped","pagination","slice","computedItems","paginateItems","groupedItems","scopedProps","sort","sortArray","group","updateOptions","originalItemsLength","computedOptions","handler","old","deepEqual","deep","immediate","isArray","toggle","oldBy","oldDesc","by","desc","byIndex","findIndex","k","splice","s","$scopedSlots","required","itemsPerPageOptions","firstIcon","lastIcon","itemsPerPageText","itemsPerPageAllText","showFirstLastPage","showCurrentPage","disableItemsPerPage","pageText","disableNextPageIcon","computedDataItemsPerPageOptions","option","genDataItemsPerPageOption","obj","onFirstPage","onPreviousPage","onNextPage","onLastPage","onChangeItemsPerPage","text","genItemsPerPageSelect","computedIPPO","find","ippo","$createElement","VSelect","hideDetails","auto","minWidth","input","genPaginationInfo","VBtn","genIcons","before","after","unshift","getSlot","Mobile","VData","itemKey","singleSelect","expanded","mobileBreakpoint","singleExpand","loading","noResultsText","noDataText","loadingText","hideDefaultFooter","footerProps","selectableKey","selection","expansion","internalCurrentItems","shiftKeyDown","lastEntry","everyItem","selectableItems","every","isSelected","someItems","some","sanitizedFooterProps","camelizeObjectKeys","filter","item","isSelectable","reduce","getObjectValueByPath","keys","values","includes","created","breakingProps","forEach","original","replacement","$attrs","hasOwnProperty","breaking","removedProps","prop","removed","mounted","addEventListener","onKeyDown","onKeyUp","beforeDestroy","removeEventListener","keyCode","keyCodes","shift","shiftKey","toggleSelectAll","select","emit","x","lastEntryKey","lastEntryKeySelected","multipleSelect","currentItem","isExpanded","expand","createItemProps","v","isMobile","genEmptyWrapper","content","genEmpty","filteredItemsLength","noData","noResults","empty","genFooter","scopedSlots","getPrefixedScopedSlots","VDataFooter","genDefaultScopedSlot","outerProps","$props","ripple","headers","checkboxColor","sortIcon","showGroupBy","genSelectAll","indeterminate","_a","VSimpleCheckbox","genSortIcon","size","header","sortByText","genSortChip","sortIndex","beingSorted","isDesc","sortable","active","asc","VChip","stopPropagation","genSortSelect","multiple","menuProps","closeOnContentClick","change","sortHeaders","th","tr","genGroupByToggle","getAria","$t","ariaSort","join","genHeader","scope","style","convertToUnit","align","divider","groupable","dedupeModelListeners","model","indexOf","callback","rebuildFunctionalSlots","slots","slot","functional","mobile","rebuildSlots","mergeData","VDataTableHeaderMobile","VDataTableHeaderDesktop","needsTd","tag","computedSlots","columns","slotName","scopedSlot","regularSlot","textAlign","cellClass","headerClass","contentClass","summaryClass","dense","fixedHeader","height","$slots","top","bottom","genWrapper","wrapper","hideDefaultHeader","mobileRowChildren","getDefaultMouseEventHandlers","suffix","getData","eventFirst","listeners","$listeners","endsWith","acc","event","getMouseEventHandlers","prevent","events","eventOptions","prefix","passive","once","capture","mouseEvent","button","buttons","stop","classSeparator","eventTargetClasses","currentTarget","className","split","currentTargets","document","elementsFromPoint","changedTouches","clientX","clientY","c","target","_b","isSameNode","dispatchEvent","TouchEvent","targetTouches","touches","filterFn","searchTableItems","headersWithCustomFilters","headersWithoutCustomFilters","filterMode","trim","defaultFilter","matchesColumnFilters","matchesSearchTerm","VDataIterator","Loadable","Mouse","showSelect","showExpand","caption","headerProps","calculateWidths","headersLength","expandIcon","itemClass","itemStyle","loaderHeight","internalGroupBy","openCache","widths","computedHeaders","defaultHeader","colspanAttrs","colspan","columnSorters","filterable","sanitizedHeaderProps","computedItemsPerPage","firstOption","groupByText","_c","calcWidths","querySelectorAll","customFilterWithColumns","customSortWithHeaders","genCaption","genColgroup","genLoading","genProgress","genHeaders","VDataTableHeader","genGroupedRows","genRows","$set","genDefaultGroupedRow","isOpen","toggleFn","removeFn","remove","small","column","RowGroup","genScopedRows","genDefaultRows","rows","genDefaultExpandedRow","genDefaultSimpleRow","headerRow","expandedRow","MobileRow","Row","mergeClasses","getPropertyFromItem","mergeStyles","genBody","body","genFoot","foot","genFooters","simpleProps","VSimpleTable","proxySlot","$","stat"],"mappings":"oKACA,IAAIA,EAAO,EAAQ,QACfC,EAAgC,EAAQ,QACxCC,EAAW,EAAQ,QACnBC,EAAyB,EAAQ,QACjCC,EAAY,EAAQ,QACpBC,EAAW,EAAQ,QACnBC,EAAY,EAAQ,QACpBC,EAAa,EAAQ,QAGzBN,EAA8B,UAAU,SAAUO,EAAQC,EAAcC,GACtE,MAAO,CAGL,SAAgBC,GACd,IAAIC,EAAIT,EAAuBU,MAC3BC,OAAqBC,GAAVJ,OAAsBI,EAAYT,EAAUK,EAAQH,GACnE,OAAOM,EAAWd,EAAKc,EAAUH,EAAQC,GAAK,IAAII,OAAOL,GAAQH,GAAQH,EAASO,KAIpF,SAAUK,GACR,IAAIC,EAAKhB,EAASW,MACdM,EAAId,EAASY,GACbG,EAAMV,EAAgBD,EAAcS,EAAIC,GAE5C,GAAIC,EAAIC,KAAM,OAAOD,EAAIE,MAEzB,IAAIC,EAAoBL,EAAGM,UACtBpB,EAAUmB,EAAmB,KAAIL,EAAGM,UAAY,GACrD,IAAIC,EAASlB,EAAWW,EAAIC,GAE5B,OADKf,EAAUc,EAAGM,UAAWD,KAAoBL,EAAGM,UAAYD,GAC9C,OAAXE,GAAmB,EAAIA,EAAOC,Y,gNCd5BC,sBACbC,OACAC,eAAc,CAAEC,UAAW,CAAC,UAC5BC,QACAC,OAAO,CACPC,KAAM,eAENC,WAAY,CAAEC,eAEdC,MAAO,CACLC,OAAQC,QACRC,SAAUD,QACVE,gBAAiBC,OACjBC,oBAAqBD,OACrBE,OAAQ,CACNC,KAAMC,OACNC,QAAS,EACTC,UAAY,SAAAC,GAAD,OAAiBA,EAAM,IAAM,IAE1CC,SAAU,CACRL,KAAMH,OACNK,QAAS,SAEXI,SAAU,CACRN,KAAMH,OACNK,QAAS,SAEXK,aAAc,CAACN,OAAQJ,QACvBnB,MAAO,CACLsB,KAAMC,OACNC,QAAS,GAEXM,cAAe,CACbR,KAAMH,OACNK,QAAS,sCAEXO,qBAAsB,CACpBT,KAAMH,OACNK,QAAS,6CAEXQ,kBAAmB,CACjBV,KAAMH,OACNK,QAAS,0CAEXS,cAAe,CACbX,KAAMH,OACNK,QAAS,sCAEXU,iBAAkB,CAChBZ,KAAMH,OACNK,QAAS,0CAIbW,KAlDO,WAmDL,MAAO,CACLC,WAAY,EACZC,SAAU,OAIdC,SAAU,CACRC,QADQ,WAEN,uBACE,gBAAgB,EAChB,uBAAwBhD,KAAKwB,OAC7B,yBAA0BxB,KAAK0B,UAC5B1B,KAAKiD,eAIZC,MAVQ,WAWN,IAAMZ,EAAea,SAASnD,KAAKsC,aAAc,IAEjD,GAAqB,IAAjBA,GAAsBc,MAAMpD,KAAK8B,SAAW9B,KAAK8B,OAASE,OAAOqB,iBACnE,MAAO,GAGT,IAAMC,EAAYC,KAAKC,IACrBD,KAAKE,IAAI,EAAGnB,IAAiBtC,KAAK8B,OAClCyB,KAAKE,IAAI,EAAGzD,KAAK6C,aAAe7C,KAAK8B,OACrC9B,KAAK8B,QAGP,GAAI9B,KAAK8B,QAAUwB,EACjB,OAAOtD,KAAK0D,MAAM,EAAG1D,KAAK8B,QAG5B,IAAM6B,EAAOL,EAAY,IAAM,EAAI,EAAI,EACjCM,EAAOL,KAAKM,MAAMP,EAAY,GAC9BQ,EAAQ9D,KAAK8B,OAAS8B,EAAO,EAAID,EAEvC,GAAI3D,KAAKS,MAAQmD,GAAQ5D,KAAKS,MAAQqD,EAAO,CAC3C,IAAMC,EAAY,EACZC,EAAWhE,KAAK8B,OAChBmC,EAAQjE,KAAKS,MAAQmD,EAAO,EAC5BM,EAAMlE,KAAKS,MAAQmD,EAAO,EAAID,EAC9BQ,EAAaF,EAAQ,IAAMF,EAAY,EAAI,EAAI,MAC/CK,EAAiBF,EAAM,IAAMF,EAAW,EAAIE,EAAM,EAAI,MAE5D,OAAQ,EAAGC,GAAX,sBAA0BnE,KAAK0D,MAAMO,EAAOC,IAA5C,CAAkDE,EAAgBpE,KAAK8B,SAClE,GAAI9B,KAAKS,QAAUmD,EAAM,CAC9B,IAAMM,EAAMlE,KAAKS,MAAQmD,EAAO,EAAID,EACpC,+BAAW3D,KAAK0D,MAAM,EAAGQ,IAAzB,CAA+B,MAAOlE,KAAK8B,SACtC,GAAI9B,KAAKS,QAAUqD,EAAO,CAC/B,IAAMG,EAAQjE,KAAKS,MAAQmD,EAAO,EAClC,OAAQ,EAAG,OAAX,sBAAqB5D,KAAK0D,MAAMO,EAAOjE,KAAK8B,UAE5C,+BACK9B,KAAK0D,MAAM,EAAGE,IADnB,CAEE,OAFF,eAGK5D,KAAK0D,MAAMI,EAAO9D,KAAK8B,YAMlCuC,MAAO,CACL5D,MADK,WAEHT,KAAKsE,SAITC,YAvHO,WAwHLvE,KAAKsE,QAGPE,QAAS,CACPF,KADO,WACH,WACFtE,KAAK8C,SAAW,KAEhB9C,KAAKyE,WACLzE,KAAK0E,UAAU1E,KAAKyE,UAEpBE,YAAW,kBAAO,EAAK7B,SAAW,EAAKrC,QAAQ,MAEjDgE,SATO,WAUL,IAAMG,EAAQ5E,KAAK6E,KAAO7E,KAAK6E,IAAIC,cAC/B9E,KAAK6E,IAAIC,cAAcC,YACvBC,OAAOC,WAEXjF,KAAK6C,WAAaU,KAAKM,OAAOe,EAAQ,IAAM,KAE9CM,KAhBO,SAgBDC,GACJA,EAAEC,iBACFpF,KAAKqF,MAAM,QAASrF,KAAKS,MAAQ,GACjCT,KAAKqF,MAAM,SAEbC,SArBO,SAqBGH,GACRA,EAAEC,iBACFpF,KAAKqF,MAAM,QAASrF,KAAKS,MAAQ,GACjCT,KAAKqF,MAAM,aAEb3B,MA1BO,SA0BA6B,EAAcC,GACnB,IAAM9B,EAAQ,GAEd6B,EAAOA,EAAO,EAAIA,EAAO,EAEzB,IAAK,IAAIE,EAAIF,EAAME,GAAKD,EAAIC,IAC1B/B,EAAMgC,KAAKD,GAGb,OAAO/B,GAETiC,QArCO,SAqCEC,EAAkBC,EAAcnE,EAAmBoE,EAAmBC,GAC7E,OAAOH,EAAE,KAAM,CACbA,EAAE,SACA5F,KAAKgG,mBAAmBhG,KAAK2B,gBAAiB,CAC5CsE,YAAa,2BACbC,MAAO,CACL,qCAAsCxE,GAExCyE,MAAO,CACLzE,WACAK,KAAM,SACN,aAAcgE,GAEhBK,GAAI1E,EAAW,GAAK,CAAE2E,MAAOP,KAE/B,CAACF,EAAEU,OAAO,CAAE/E,MAAO,CAAEgF,MAAOvG,KAAK6B,sBAAyB,CAACgE,SAIjEW,QAxDO,SAwDEZ,EAAkBH,GAAkB,WACrCc,EAAyBd,IAAMzF,KAAKS,QAAWT,KAAKuG,OAAS,WAC7DE,EAAgBhB,IAAMzF,KAAKS,MAC3BiG,EAAYD,EAAgBzG,KAAKwC,qBAAuBxC,KAAKuC,cAEnE,OAAOqD,EAAE,SAAU5F,KAAKgG,mBAAmBO,EAAO,CAChDN,YAAa,qBACbC,MAAO,CACL,6BAA8BT,IAAMzF,KAAKS,OAE3C0F,MAAO,CACLpE,KAAM,SACN,eAAgB0E,EAChB,aAAczG,KAAK2G,SAASC,KAAKC,EAAEH,EAAWjB,IAEhDW,GAAI,CACFC,MAAO,kBAAM,EAAKhB,MAAM,QAASI,OAEjC,CAACA,EAAEjG,cAETsH,SA5EO,SA4EGlB,GAAgB,WACxB,OAAO5F,KAAKkD,MAAM6D,KAAI,SAACtB,EAAG5E,GACxB,OAAO+E,EAAE,KAAM,CAAEoB,IAAKnG,GAAS,CAC7BuC,MAAMpB,OAAOyD,IAAMG,EAAE,OAAQ,CAAEM,MAAO,sBAAwB,CAACT,EAAEjG,aAAe,EAAKgH,QAAQZ,EAAGH,SAItGwB,QAnFO,SAmFErB,EAAkBsB,GACzB,OAAOtB,EAAE,KAAM,CACbvE,WAAY,CAAC,CACX8F,UAAW,CAAEC,OAAO,GACpBhG,KAAM,SACNX,MAAOT,KAAKyE,WAEdyB,MAAOlG,KAAKgD,SACXkE,KAIPG,OA1NO,SA0NCzB,GACN,IAAMsB,EAAW,CACflH,KAAK2F,QAAQC,EACX5F,KAAK2G,SAASW,IAAMtH,KAAKoC,SAAWpC,KAAKqC,SACzCrC,KAAKS,OAAS,EACdT,KAAKsF,SACLtF,KAAK2G,SAASC,KAAKC,EAAE7G,KAAKyC,oBAC5BzC,KAAK8G,SAASlB,GACd5F,KAAK2F,QAAQC,EACX5F,KAAK2G,SAASW,IAAMtH,KAAKqC,SAAWrC,KAAKoC,SACzCpC,KAAKS,OAAST,KAAK8B,OACnB9B,KAAKkF,KACLlF,KAAK2G,SAASC,KAAKC,EAAE7G,KAAK0C,iBAG9B,OAAOkD,EAAE,MAAO,CACdO,MAAO,CACLoB,KAAM,aACN,aAAcvH,KAAK2G,SAASC,KAAKC,EAAE7G,KAAK2C,oBAEzC,CAAC3C,KAAKiH,QAAQrB,EAAGsB,S,wTCrPTM,eAAIrG,OAAO,CACxBC,KAAM,SAENqG,cAAc,EAEdlG,MAAO,CACL2B,MAAO,CACLnB,KAAM2F,MACNzF,QAAS,iBAAM,KAEjB0F,QAAS,CACP5F,KAAM6F,OACN3F,QAAS,iBAAO,KAElB4F,OAAQ,CACN9F,KAAM,CAACH,OAAQ8F,QAEjBI,SAAU,CACR/F,KAAM,CAACN,QAASiG,QAElBK,WAAY,CACVhG,KAAMiG,SACN/F,QAASgG,QAEXC,SAAUzG,QACV0G,UAAW1G,QACX2G,KAAM,CACJrG,KAAMC,OACNC,QAAS,GAEXoG,aAAc,CACZtG,KAAMC,OACNC,QAAS,IAEXqG,QAAS,CACPvG,KAAM,CAACH,OAAQ8F,OACfzF,QAAS,iBAAM,KAEjBsG,UAAW,CACTxG,KAAM,CAACN,QAASiG,OAChBzF,QAAS,iBAAM,KAEjBuG,YAAa,CACXzG,KAAMiG,SACN/F,QAASwG,QAEXC,OAAQ,CACN3G,KAAMH,OACNK,QAAS,SAEX0G,YAAalH,QACbmH,kBAAmBnH,QACnBoH,iBAAkBpH,QAClBqH,OAAQlH,OACRmH,aAAc,CACZhH,KAAMiG,SACN/F,QAAS+G,QAEXC,kBAAmB,CACjBlH,KAAMC,OACNC,SAAU,IAIdW,KAhEwB,WAiEtB,IAAIsG,EAA+B,CACjCd,KAAMpI,KAAKoI,KACXC,aAAcrI,KAAKqI,aACnBR,OAAQsB,eAAYnJ,KAAK6H,QACzBC,SAAUqB,eAAYnJ,KAAK8H,UAC3BQ,QAASa,eAAYnJ,KAAKsI,SAC1BC,UAAWY,eAAYnJ,KAAKuI,WAC5BL,SAAUlI,KAAKkI,SACfC,UAAWnI,KAAKmI,WAGdnI,KAAK2H,UACPuB,EAAkBtB,OAAOwB,OAAOF,EAAiBlJ,KAAK2H,UAGxD,IAIkB,EAIC,EARnB,EAAiDuB,EAAzCrB,EAAR,EAAQA,OAAQC,EAAhB,EAAgBA,SAAUQ,EAA1B,EAA0BA,QAASC,EAAnC,EAAmCA,UAC7Bc,EAAWxB,EAAO/F,OAASgG,EAAShG,OACpCwH,EAAYhB,EAAQxG,OAASyG,EAAUzG,OAEzCuH,EAAW,IACb,EAAAH,EAAgBpB,UAASpC,KAAzB,uBAAiC6D,eAAUF,GAAU,KAGnDC,EAAY,IACd,EAAAJ,EAAgBX,WAAU7C,KAA1B,uBAAkC6D,eAAUD,GAAW,KAGzD,MAAO,CACLJ,oBAIJnG,SAAU,CACRyG,YADQ,WAEN,OAAOxJ,KAAKiJ,mBAAqB,EAAIjJ,KAAKiJ,kBAAoBjJ,KAAKyJ,cAAc3H,QAEnF4H,UAJQ,WAKN,OAAO1J,KAAKkJ,gBAAgBb,cAAgB,EACxC,EACA9E,KAAKoG,KAAK3J,KAAKwJ,YAAcxJ,KAAKkJ,gBAAgBb,eAExDuB,UATQ,WAUN,OAA2C,IAAvC5J,KAAKkJ,gBAAgBb,cAAwBrI,KAAKkD,MAAMpB,QAEpD9B,KAAKkJ,gBAAgBd,KAAO,GAAKpI,KAAKkJ,gBAAgBb,aAFa,GAI7EwB,SAdQ,WAeN,OAA2C,IAAvC7J,KAAKkJ,gBAAgBb,aAA4BrI,KAAKwJ,YACrDxJ,KAAKkD,MAAMpB,OAETyB,KAAKC,IAAIxD,KAAKwJ,YAAaxJ,KAAKkJ,gBAAgBd,KAAOpI,KAAKkJ,gBAAgBb,cAFpD,GAIjCyB,UApBQ,WAqBN,QAAS9J,KAAKkJ,gBAAgBZ,QAAQxG,QAExCiI,WAvBQ,WAwBN,MAAO,CACL3B,KAAMpI,KAAKkJ,gBAAgBd,KAC3BC,aAAcrI,KAAKkJ,gBAAgBb,aACnCuB,UAAW5J,KAAK4J,UAChBC,SAAU7J,KAAK6J,SACfH,UAAW1J,KAAK0J,UAChBF,YAAaxJ,KAAKwJ,cAGtBC,cAjCQ,WAkCN,IAAIvG,EAAQlD,KAAKkD,MAAM8G,QAMvB,OAJKhK,KAAK6I,kBAAoB7I,KAAKiJ,mBAAqB,IACtD/F,EAAQlD,KAAK+I,aAAa7F,EAAOlD,KAAK8I,SAGjC5F,GAET+G,cA1CQ,WA2CN,IAAI/G,EAAQlD,KAAKyJ,cAAcO,QAU/B,QARMhK,KAAK2I,aAAe3I,KAAKkJ,gBAAgBZ,QAAQxG,SAAW9B,KAAKiJ,mBAAqB,IAC1F/F,EAAQlD,KAAKiI,UAAU/E,KAGpBlD,KAAK4I,mBAAqB5I,KAAKiJ,mBAAqB,IACvD/F,EAAQlD,KAAKkK,cAAchH,IAGtBA,GAETiH,aAvDQ,WAwDN,OAAOnK,KAAK8J,UAAY9J,KAAKyI,WAAWzI,KAAKiK,eAAiB,MAEhEG,YA1DQ,WA2DN,MAAO,CACLC,KAAMrK,KAAKqK,KACXC,UAAWtK,KAAKsK,UAChBC,MAAOvK,KAAKuK,MACZrH,MAAOlD,KAAKiK,cACZtC,QAAS3H,KAAKkJ,gBACdsB,cAAexK,KAAKwK,cACpBT,WAAY/J,KAAK+J,WACjBI,aAAcnK,KAAKmK,aACnBM,oBAAqBzK,KAAKkD,MAAMpB,SAGpC4I,gBAvEQ,WAwEN,yBAAY1K,KAAK2H,WAIrBtD,MAAO,CACLqG,gBAAiB,CACfC,QADe,SACNhD,EAAsBiD,GACzBC,eAAUlD,EAASiD,IAEvB5K,KAAKwK,cAAc7C,IAErBmD,MAAM,EACNC,WAAW,GAEb7B,gBAAiB,CACfyB,QADe,SACNhD,EAAsBiD,GACzBC,eAAUlD,EAASiD,IACvB5K,KAAKqF,MAAM,iBAAkBsC,IAE/BmD,MAAM,EACNC,WAAW,GAEb3C,KAlBK,SAkBCA,GACJpI,KAAKwK,cAAc,CAAEpC,UAEvB,uBArBK,SAqBmBA,GACtBpI,KAAKqF,MAAM,cAAe+C,IAE5BC,aAxBK,SAwBSA,GACZrI,KAAKwK,cAAc,CAAEnC,kBAEvB,+BA3BK,SA2B2BA,GAC9BrI,KAAKqF,MAAM,wBAAyBgD,IAEtCR,OA9BK,SA8BGA,GACN7H,KAAKwK,cAAc,CAAE3C,OAAQsB,eAAYtB,MAE3C,yBAjCK,SAiCqBA,EAAkB+C,IACzCC,eAAUhD,EAAQ+C,IAAQ5K,KAAKqF,MAAM,iBAAkBqC,MAAMsD,QAAQhL,KAAK6H,QAAUA,EAASA,EAAO,KAEvGC,SApCK,SAoCKA,GACR9H,KAAKwK,cAAc,CAAE1C,SAAUqB,eAAYrB,MAE7C,2BAvCK,SAuCuBA,EAAqB8C,IAC9CC,eAAU/C,EAAU8C,IAAQ5K,KAAKqF,MAAM,mBAAoBqC,MAAMsD,QAAQhL,KAAK8H,UAAYA,EAAWA,EAAS,KAEjHQ,QA1CK,SA0CIA,GACPtI,KAAKwK,cAAc,CAAElC,QAASa,eAAYb,MAE5C,0BA7CK,SA6CsBA,EAAmBsC,IAC3CC,eAAUvC,EAASsC,IAAQ5K,KAAKqF,MAAM,kBAAmBqC,MAAMsD,QAAQhL,KAAKsI,SAAWA,EAAUA,EAAQ,KAE5GC,UAhDK,SAgDMA,GACTvI,KAAKwK,cAAc,CAAEjC,UAAWY,eAAYZ,MAE9C,4BAnDK,SAmDwBA,EAAsBqC,IAChDC,eAAUtC,EAAWqC,IAAQ5K,KAAKqF,MAAM,oBAAqBqC,MAAMsD,QAAQhL,KAAKuI,WAAaA,EAAYA,EAAU,KAEtHJ,UAtDK,SAsDMA,GACTnI,KAAKwK,cAAc,CAAErC,eAEvB,4BAzDK,SAyDwBA,GAC3BnI,KAAKqF,MAAM,oBAAqB8C,IAElCD,SA5DK,SA4DKA,GACRlI,KAAKwK,cAAc,CAAEtC,cAEvB,2BA/DK,SA+DuBA,GAC1BlI,KAAKqF,MAAM,mBAAoB6C,IAEjCwB,UAAW,CACTiB,QADS,SACAjB,GACP1J,KAAKqF,MAAM,aAAcqE,IAE3BqB,WAAW,GAEbd,cAAe,CACbU,QADa,SACJV,GACPjK,KAAKqF,MAAM,gBAAiB4E,IAE9Bc,WAAW,GAEbhB,WAAY,CACVY,QADU,SACDZ,EAA4Ba,GAC/BC,eAAUd,EAAYa,IAC1B5K,KAAKqF,MAAM,aAAcrF,KAAK+J,aAEhCgB,WAAW,IAIfvG,QAAS,CACPyG,OADO,SACCjE,EAAakE,EAAiBC,EAAoB/C,EAAcF,EAAmBC,GACzF,IAAIiD,EAAKF,EAAMlB,QACXqB,EAAOF,EAAQnB,QACbsB,EAAUF,EAAGG,WAAW,SAAAC,GAAD,OAAeA,IAAMxE,KAwBlD,OAtBIsE,EAAU,GACPnD,IACHiD,EAAK,GACLC,EAAO,IAGTD,EAAG1F,KAAKsB,GACRqE,EAAK3F,MAAK,IACD4F,GAAW,IAAMD,EAAKC,GAC/BD,EAAKC,IAAW,EACNpD,EAIVmD,EAAKC,IAAW,GAHhBF,EAAGK,OAAOH,EAAS,GACnBD,EAAKI,OAAOH,EAAS,IAMlBT,eAAUO,EAAIF,IAAWL,eAAUQ,EAAMF,KAC5C/C,EAAO,GAGF,CAAEgD,KAAIC,OAAMjD,SAErBmC,MA9BO,SA8BAvD,GACL,MAA+ChH,KAAKiL,OAClDjE,EACAhH,KAAKkJ,gBAAgBZ,QACrBtI,KAAKkJ,gBAAgBX,UACrBvI,KAAKkJ,gBAAgBd,MACrB,GACA,GANUE,EAAZ,EAAQ8C,GAAmB7C,EAA3B,EAAqB8C,KAAiBjD,EAAtC,EAAsCA,KAQtCpI,KAAKwK,cAAc,CAAElC,UAASC,YAAWH,UAE3CiC,KAzCO,SAyCDrD,GACJ,GAAIU,MAAMsD,QAAQhE,GAAM,OAAOhH,KAAKsK,UAAUtD,GAE9C,MAA6ChH,KAAKiL,OAChDjE,EACAhH,KAAKkJ,gBAAgBrB,OACrB7H,KAAKkJ,gBAAgBpB,SACrB9H,KAAKkJ,gBAAgBd,KACrBpI,KAAKkJ,gBAAgBhB,SACrBlI,KAAKkJ,gBAAgBf,WANXN,EAAZ,EAAQuD,GAAkBtD,EAA1B,EAAoBuD,KAAgBjD,EAApC,EAAoCA,KAQpCpI,KAAKwK,cAAc,CAAE3C,SAAQC,WAAUM,UAEzCkC,UAtDO,SAsDIzC,GAAgB,WACnBC,EAAWD,EAAOd,KAAI,SAAA2E,GAC1B,IAAMjG,EAAI,EAAKyD,gBAAgBrB,OAAO0D,WAAW,SAAAC,GAAD,OAAeA,IAAME,KACrE,OAAOjG,GAAK,GAAI,EAAKyD,gBAAgBpB,SAASrC,MAGhDzF,KAAKwK,cAAc,CAAE3C,SAAQC,cAE/B0C,cA9DO,SA8DQ7C,GACb3H,KAAKkJ,gBAAL,gDACKlJ,KAAKkJ,iBACLvB,GAFL,IAGES,KAAMpI,KAAKiJ,kBAAoB,EAC3B1F,KAAKE,IAAI,EAAGF,KAAKC,IAAImE,EAAQS,MAAQpI,KAAKkJ,gBAAgBd,KAAMpI,KAAK0J,YACrE/B,EAAQS,MAAQpI,KAAKkJ,gBAAgBd,QAG7CH,UAvEO,SAuEI/E,GACT,IAAI2E,EAAmB,GACnBC,EAAsB,GAY1B,OAVK9H,KAAK2I,cACRd,EAAS7H,KAAKkJ,gBAAgBrB,OAC9BC,EAAW9H,KAAKkJ,gBAAgBpB,UAG9B9H,KAAKkJ,gBAAgBZ,QAAQxG,SAC/B+F,EAAS,GAAH,sBAAO7H,KAAKkJ,gBAAgBZ,SAA5B,eAAwCT,IAC9CC,EAAW,GAAH,sBAAO9H,KAAKkJ,gBAAgBX,WAA5B,eAA0CT,KAG7C9H,KAAK+H,WAAW7E,EAAO2E,EAAQC,EAAU9H,KAAK0I,SAEvDD,WAvFO,SAuFKvF,GACV,OAAOlD,KAAKwI,YAAYtF,EAAOlD,KAAKkJ,gBAAgBZ,QAAStI,KAAKkJ,gBAAgBX,YAEpF2B,cA1FO,SA0FQhH,GAOb,OAJgC,IAA5BlD,KAAKiJ,mBAA4B/F,EAAMpB,QAAU9B,KAAK4J,YACxD5J,KAAKkJ,gBAAgBd,KAAO7E,KAAKE,IAAI,EAAGF,KAAKoG,KAAKzG,EAAMpB,OAAS9B,KAAKkJ,gBAAgBb,gBAAkB,GAGnGnF,EAAM8G,MAAMhK,KAAK4J,UAAW5J,KAAK6J,YAI5CxC,OAzWwB,WA0WtB,OAAOrH,KAAK2L,aAAa1J,SAAWjC,KAAK2L,aAAa1J,QAAQjC,KAAKoK,gB,kGC7WxD5C,eAAIrG,OAAO,CACxBC,KAAM,gBAENG,MAAO,CACLoG,QAAS,CACP5F,KAAM6F,OACNgE,UAAU,GAEZ7B,WAAY,CACVhI,KAAM6F,OACNgE,UAAU,GAEZC,oBAAqB,CACnB9J,KAAM2F,MACNzF,QAAS,iBAAO,CAAC,EAAG,GAAI,IAAK,KAE/BI,SAAU,CACRN,KAAMH,OACNK,QAAS,SAEXG,SAAU,CACRL,KAAMH,OACNK,QAAS,SAEX6J,UAAW,CACT/J,KAAMH,OACNK,QAAS,UAEX8J,SAAU,CACRhK,KAAMH,OACNK,QAAS,SAEX+J,iBAAkB,CAChBjK,KAAMH,OACNK,QAAS,wCAEXgK,oBAAqB,CACnBlK,KAAMH,OACNK,QAAS,uCAEXiK,kBAAmBzK,QACnB0K,gBAAiB1K,QACjBmH,kBAAmBnH,QACnB2K,oBAAqB3K,QACrB4K,SAAU,CACRtK,KAAMH,OACNK,QAAS,iCAIbc,SAAU,CACRuJ,oBADQ,WAEN,OAAOtM,KAAK2H,QAAQU,cAAgB,GAClCrI,KAAK2H,QAAQS,KAAOpI,KAAK2H,QAAQU,cAAgBrI,KAAK+J,WAAWP,aACjExJ,KAAK+J,WAAWF,SAAW,GAE/B0C,gCANQ,WAMuB,WAC7B,OAAOvM,KAAK6L,oBAAoB9E,KAAI,SAAAyF,GAClC,MAAsB,WAAlB,eAAOA,GAA4BA,EAC3B,EAAKC,0BAA0BD,QAKjDhI,QAAS,CACPgG,cADO,SACQkC,GACb1M,KAAKqF,MAAM,iBAAkBuC,OAAOwB,OAAO,GAAIpJ,KAAK2H,QAAS+E,KAE/DC,YAJO,WAKL3M,KAAKwK,cAAc,CAAEpC,KAAM,KAE7BwE,eAPO,WAQL5M,KAAKwK,cAAc,CAAEpC,KAAMpI,KAAK2H,QAAQS,KAAO,KAEjDyE,WAVO,WAWL7M,KAAKwK,cAAc,CAAEpC,KAAMpI,KAAK2H,QAAQS,KAAO,KAEjD0E,WAbO,WAcL9M,KAAKwK,cAAc,CAAEpC,KAAMpI,KAAK+J,WAAWL,aAE7CqD,qBAhBO,SAgBe1E,GACpBrI,KAAKwK,cAAc,CAAEnC,eAAcD,KAAM,KAE3CqE,0BAnBO,SAmBoBD,GACzB,MAAO,CACLQ,MAAkB,IAAZR,EAAgBxM,KAAK2G,SAASC,KAAKC,EAAE7G,KAAKiM,qBAAuBrK,OAAO4K,GAC9E/L,MAAO+L,IAGXS,sBAzBO,WA0BL,IAAIxM,EAAQT,KAAK2H,QAAQU,aACnB6E,EAAelN,KAAKuM,gCAE1B,OAAIW,EAAapL,QAAU,EAAU,MAEhCoL,EAAaC,MAAK,SAAAC,GAAI,OAAIA,EAAK3M,QAAUA,OAAQA,EAAQyM,EAAa,IAEpElN,KAAKqN,eAAe,MAAO,CAChCpH,YAAa,yBACZ,CACDjG,KAAK2G,SAASC,KAAKC,EAAE7G,KAAKgM,kBAC1BhM,KAAKqN,eAAeC,OAAS,CAC3BnH,MAAO,CACL,aAAcnG,KAAK2G,SAASC,KAAKC,EAAE7G,KAAKgM,mBAE1CzK,MAAO,CACLG,SAAU1B,KAAKoM,oBACflJ,MAAOgK,EACPzM,QACA8M,aAAa,EACbC,MAAM,EACNC,SAAU,QAEZrH,GAAI,CACFsH,MAAO1N,KAAK+M,4BAKpBY,kBAvDO,WAwDL,IAAIzG,EAAuC,CAAC,KACtCsC,EAAsBxJ,KAAK+J,WAAWP,YACxCI,EAAoB5J,KAAK+J,WAAWH,UACpCC,EAAmB7J,KAAK+J,WAAWF,SAevC,OAbI7J,KAAK+J,WAAWP,aAAexJ,KAAK+J,WAAW1B,cACjDuB,EAAY5J,KAAK+J,WAAWH,UAAY,EACxCC,EAAWL,EAAcxJ,KAAK+J,WAAWF,UAAY7J,KAAK+J,WAAWF,SAAW,EAC5EL,EACAxJ,KAAK+J,WAAWF,SAEpB3C,EAAWlH,KAAK2L,aAAa,aACzB,CAAC3L,KAAK2L,aAAa,aAAc,CAAE/B,YAAWC,WAAUL,iBACxD,CAACxJ,KAAK2G,SAASC,KAAKC,EAAE7G,KAAKqM,SAAUzC,EAAWC,EAAUL,KACrDxJ,KAAK2L,aAAa,eAC3BzE,EAAW,CAAClH,KAAK2L,aAAa,aAAc,CAAE/B,YAAWC,WAAUL,kBAG9DxJ,KAAKqN,eAAe,MAAO,CAChCnH,MAAO,6BACNgB,IAELvB,QA9EO,SA8EEU,EAAiB3E,EAAmBqE,EAAeF,GAC1D,OAAO7F,KAAKqN,eAAeO,OAAM,CAC/BrM,MAAO,CACLG,SAAUA,GAAY1B,KAAK4I,kBAC3B/C,MAAM,EACNmH,MAAM,GAIR5G,GAAI,CACFC,SAEFF,MAAO,CACL,aAAcJ,IAEf,CAAC/F,KAAKqN,eAAe/G,OAAOT,MAEjCgI,SA/FO,WAgGL,IAAMC,EAAqC,GACrCC,EAAoC,GAgC1C,OA9BAD,EAAOpI,KAAK1F,KAAK2F,QACf3F,KAAK4M,eACiB,IAAtB5M,KAAK2H,QAAQS,KACbpI,KAAK2G,SAASC,KAAKC,EAAE,gCACrB7G,KAAK2G,SAASW,IAAMtH,KAAKoC,SAAWpC,KAAKqC,WAG3C0L,EAAMrI,KAAK1F,KAAK2F,QACd3F,KAAK6M,WACL7M,KAAKsM,oBACLtM,KAAK2G,SAASC,KAAKC,EAAE,gCACrB7G,KAAK2G,SAASW,IAAMtH,KAAKqC,SAAWrC,KAAKoC,WAGvCpC,KAAKkM,oBACP4B,EAAOE,QAAQhO,KAAK2F,QAClB3F,KAAK2M,YACiB,IAAtB3M,KAAK2H,QAAQS,KACbpI,KAAK2G,SAASC,KAAKC,EAAE,iCACrB7G,KAAK2G,SAASW,IAAMtH,KAAK+L,SAAW/L,KAAK8L,YAG3CiC,EAAMrI,KAAK1F,KAAK2F,QACd3F,KAAK8M,WACL9M,KAAK2H,QAAQS,MAAQpI,KAAK+J,WAAWL,YAA4C,IAA/B1J,KAAK2H,QAAQU,aAC/DrI,KAAK2G,SAASC,KAAKC,EAAE,gCACrB7G,KAAK2G,SAASW,IAAMtH,KAAK8L,UAAY9L,KAAK+L,YAIvC,CACL/L,KAAKqN,eAAe,MAAO,CACzBpH,YAAa,+BACZ6H,GACH9N,KAAKmM,iBAAmBnM,KAAKqN,eAAe,OAAQ,CAACrN,KAAK2H,QAAQS,KAAK5I,aACvEQ,KAAKqN,eAAe,MAAO,CACzBpH,YAAa,8BACZ8H,MAKT1G,OA7MwB,WA8MtB,OAAOrH,KAAKqN,eAAe,MAAO,CAChCpH,YAAa,iBACZ,CACDgI,eAAQjO,KAAM,WACdA,KAAKiN,wBACLjN,KAAK2N,oBACL3N,KAAK6N,gB,gDC9MI/M,iBACboN,OACAhN,QACAC,OAAO,CACPC,KAAM,kBAENG,MAAO,iCACF4M,EAAMxG,QAAQpG,OADd,IAEH6M,QAAS,CACPrM,KAAMH,OACNK,QAAS,MAEXxB,MAAO,CACLsB,KAAM2F,MACNzF,QAAS,iBAAM,KAEjBoM,aAAc5M,QACd6M,SAAU,CACRvM,KAAM2F,MACNzF,QAAS,iBAAM,KAEjBsM,iBAAkB,iCACbL,OAAOvG,QAAQpG,MAAMgN,kBADV,IAEdtM,QAAS,MAEXuM,aAAc/M,QACdgN,QAAS,CAAChN,QAASG,QACnB8M,cAAe,CACb3M,KAAMH,OACNK,QAAS,uCAEX0M,WAAY,CACV5M,KAAMH,OACNK,QAAS,uBAEX2M,YAAa,CACX7M,KAAMH,OACNK,QAAS,qCAEX4M,kBAAmBpN,QACnBqN,YAAalH,OACbmH,cAAe,CACbhN,KAAMH,OACNK,QAAS,kBAIbW,KAAM,iBAAO,CACXoM,UAAW,GACXC,UAAW,GACXC,qBAAsB,GACtBC,cAAc,EACdC,WAAY,IAGdrM,SAAU,CACRsM,UADQ,WACC,WACP,QAASrP,KAAKsP,gBAAgBxN,QAAU9B,KAAKsP,gBAAgBC,OAAO,SAAA9J,GAAD,OAAY,EAAK+J,WAAW/J,OAEjGgK,UAJQ,WAIC,WACP,OAAOzP,KAAKsP,gBAAgBI,MAAM,SAAAjK,GAAD,OAAY,EAAK+J,WAAW/J,OAE/DkK,qBAPQ,WAQN,OAAOC,eAAmB5P,KAAK8O,cAEjCQ,gBAVQ,WAUO,WACb,OAAOtP,KAAKkP,qBAAqBW,QAAO,SAAAC,GAAI,OAAI,EAAKC,aAAaD,QAItEzL,MAAO,CACL5D,MAAO,CACLkK,QADK,SACIlK,GAAY,WACnBT,KAAKgP,UAAYvO,EAAMuP,QAAO,SAAChB,EAAWc,GAExC,OADAd,EAAUiB,eAAqBH,EAAM,EAAK1B,UAAY0B,EAC/Cd,IACN,KAELjE,WAAW,GAEbiE,UAVK,SAUMvO,EAAgCmK,GACrCC,eAAUjD,OAAOsI,KAAKzP,GAAQmH,OAAOsI,KAAKtF,KAE9C5K,KAAKqF,MAAM,QAASuC,OAAOuI,OAAO1P,KAEpC6N,SAAU,CACR3D,QADQ,SACClK,GAAY,WACnBT,KAAKiP,UAAYxO,EAAMuP,QAAO,SAACf,EAAWa,GAExC,OADAb,EAAUgB,eAAqBH,EAAM,EAAK1B,WAAY,EAC/Ca,IACN,KAELlE,WAAW,GAEbkE,UAxBK,SAwBMxO,EAAgCmK,GAA4B,WACrE,IAAIC,eAAUpK,EAAOmK,GAArB,CACA,IAAMsF,EAAOtI,OAAOsI,KAAKzP,GAAOoP,QAAO,SAAArE,GAAC,OAAI/K,EAAM+K,MAC5C8C,EAAY4B,EAAKpO,OAAc9B,KAAKkD,MAAM2M,QAAO,SAAApK,GAAC,OAAIyK,EAAKE,SAASxO,OAAOqO,eAAqBxK,EAAG,EAAK2I,cAA9E,GAChCpO,KAAKqF,MAAM,kBAAmBiJ,MAIlC+B,QAnGO,WAmGA,WACCC,EAAgB,CACpB,CAAC,uBAAwB,WACzB,CAAC,SAAU,iBACX,CAAC,aAAc,WACf,CAAC,cAAe,uBAChB,CAAC,eAAgB,uBACjB,CAAC,sBAAuB,uCACxB,CAAC,qBAAsB,oCACvB,CAAC,YAAa,0BACd,CAAC,YAAa,2BAIhBA,EAAcC,SAAQ,YAA4B,0BAA1BC,EAA0B,KAAhBC,EAAgB,KAC5C,EAAKC,OAAOC,eAAeH,IAAWI,eAASJ,EAAUC,EAAa,MAG5E,IAAMI,EAAe,CACnB,SACA,gBACA,gBACA,eAIFA,EAAaN,SAAQ,SAAAO,GACf,EAAKJ,OAAOC,eAAeG,IAAOC,eAAQD,OAIlDE,QAlIO,WAmILhM,OAAOiM,iBAAiB,UAAWjR,KAAKkR,WACxClM,OAAOiM,iBAAiB,QAASjR,KAAKmR,UAExCC,cAtIO,WAuILpM,OAAOqM,oBAAoB,UAAWrR,KAAKkR,WAC3ClM,OAAOqM,oBAAoB,QAASrR,KAAKmR,UAG3C3M,QAAS,CACP0M,UADO,SACI/L,GACTnF,KAAKmP,aAAehK,EAAEmM,UAAYC,OAASC,OAASrM,EAAEsM,UAExDN,QAJO,SAIEhM,GACHA,EAAEmM,UAAYC,OAASC,OAAUrM,EAAEsM,WACrCzR,KAAKmP,cAAe,IAGxBuC,gBATO,SASUjR,GAGf,IAFA,IAAMuO,EAAYpH,OAAOwB,OAAO,GAAIpJ,KAAKgP,WAEhCvJ,EAAI,EAAGA,EAAIzF,KAAKsP,gBAAgBxN,OAAQ2D,IAAK,CACpD,IAAMqK,EAAO9P,KAAKsP,gBAAgB7J,GAElC,GAAKzF,KAAK+P,aAAaD,GAAvB,CAEA,IAAM9I,EAAMiJ,eAAqBH,EAAM9P,KAAKoO,SACxC3N,EAAOuO,EAAUhI,GAAO8I,SAChBd,EAAUhI,IAGxBhH,KAAKgP,UAAYA,EACjBhP,KAAKqF,MAAM,oBAAqB,CAAEnC,MAAOlD,KAAKkP,qBAAsBzO,WAEtEsP,aAzBO,SAyBOD,GACZ,OAA0D,IAAnDG,eAAqBH,EAAM9P,KAAK+O,gBAEzCS,WA5BO,SA4BKM,GACV,QAAS9P,KAAKgP,UAAUiB,eAAqBH,EAAM9P,KAAKoO,YAAa,GAEvEuD,OA/BO,SA+BC7B,GAAoC,WAAzBrP,IAAyB,yDAAXmR,IAAW,yDAC1C,GAAK5R,KAAK+P,aAAaD,GAAvB,CAEA,IAAMd,EAAYhP,KAAKqO,aAAe,GAAKzG,OAAOwB,OAAO,GAAIpJ,KAAKgP,WAC5DhI,EAAMiJ,eAAqBH,EAAM9P,KAAKoO,SAExC3N,EAAOuO,EAAUhI,GAAO8I,SAChBd,EAAUhI,GAEtB,IAAMnG,EAAQb,KAAKsP,gBAAgB/D,WAAU,SAAAsG,GAAC,OAAI5B,eAAqB4B,EAAG,EAAKzD,WAAapH,KAC5F,IAAwB,IAApBhH,KAAKoP,UAAkBpP,KAAKoP,UAAYvO,OACvC,GAAIb,KAAKmP,eAAiBnP,KAAKqO,cAAgBuD,EAAM,CACxD,IAAME,EAAe7B,eAAqBjQ,KAAKsP,gBAAgBtP,KAAKoP,WAAYpP,KAAKoO,SAC/E2D,EAAuBnK,OAAOsI,KAAKlQ,KAAKgP,WAAWoB,SAASxO,OAAOkQ,IACzE9R,KAAKgS,eAAeD,EAAsBH,EAAM5C,EAAWnO,GAI7D,GAFAb,KAAKoP,UAAYvO,EAEbb,KAAKqO,cAAgBuD,EAAM,CAC7B,IAAM1B,EAAOtI,OAAOsI,KAAKlQ,KAAKgP,WACxBpE,EAAMsF,EAAKpO,QAAUmO,eAAqBjQ,KAAKgP,UAAUkB,EAAK,IAAKlQ,KAAKoO,SAC9ExD,GAAOA,IAAQ5D,GAAOhH,KAAKqF,MAAM,gBAAiB,CAAEyK,KAAM9P,KAAKgP,UAAUpE,GAAMnK,OAAO,IAExFT,KAAKgP,UAAYA,EACjB4C,GAAQ5R,KAAKqF,MAAM,gBAAiB,CAAEyK,OAAMrP,YAE9CuR,eAzDO,WA4DL,IAHsE,IAAxDvR,IAAwD,yDAA1CmR,IAA0C,yDAA7B5C,EAA6B,uCAAbnO,EAAa,uCAChEoD,EAAQpD,EAAQb,KAAKoP,UAAYvO,EAAQb,KAAKoP,UAC9ClL,EAAMrD,EAAQb,KAAKoP,UAAYpP,KAAKoP,UAAYvO,EAC7C4E,EAAIxB,EAAOwB,GAAKvB,EAAKuB,IAAK,CACjC,IAAMwM,EAAcjS,KAAKsP,gBAAgB7J,GACnCuB,EAAMiJ,eAAqBgC,EAAajS,KAAKoO,SAC/C3N,EAAOuO,EAAUhI,GAAOiL,SAChBjD,EAAUhI,GACtB4K,GAAQ5R,KAAKqF,MAAM,gBAAiB,CAAE4M,cAAaxR,YAGvDyR,WApEO,SAoEKpC,GACV,OAAO9P,KAAKiP,UAAUgB,eAAqBH,EAAM9P,KAAKoO,YAAa,GAErE+D,OAvEO,SAuECrC,GAAuB,IAAZrP,IAAY,yDACvBwO,EAAYjP,KAAKwO,aAAe,GAAK5G,OAAOwB,OAAO,GAAIpJ,KAAKiP,WAC5DjI,EAAMiJ,eAAqBH,EAAM9P,KAAKoO,SAExC3N,EAAOwO,EAAUjI,IAAO,SAChBiI,EAAUjI,GAEtBhH,KAAKiP,UAAYA,EACjBjP,KAAKqF,MAAM,gBAAiB,CAAEyK,OAAMrP,WAEtC2R,gBAjFO,SAiFUtC,EAAWjP,GAAa,WACvC,MAAO,CACLiP,OACAjP,QACA8Q,OAAS,SAAAU,GAAD,OAAgB,EAAKV,OAAO7B,EAAMuC,IAC1C7C,WAAYxP,KAAKwP,WAAWM,GAC5BqC,OAAS,SAAAE,GAAD,OAAgB,EAAKF,OAAOrC,EAAMuC,IAC1CH,WAAYlS,KAAKkS,WAAWpC,GAC5BwC,SAAUtS,KAAKsS,WAGnBC,gBA5FO,SA4FUC,GACf,OAAOxS,KAAKqN,eAAe,MAAOmF,IAEpCC,SA/FO,SA+FGhI,EAA6BiI,GACrC,GAA4B,IAAxBjI,GAA6BzK,KAAKyO,QAAS,CAC7C,IAAMA,EAAUR,eAAQjO,KAAM,YAAcA,KAAK2G,SAASC,KAAKC,EAAE7G,KAAK4O,aACtE,OAAO5O,KAAKuS,gBAAgB9D,GACvB,GAA4B,IAAxBhE,EAA2B,CACpC,IAAMkI,EAAS1E,eAAQjO,KAAM,WAAaA,KAAK2G,SAASC,KAAKC,EAAE7G,KAAK2O,YACpE,OAAO3O,KAAKuS,gBAAgBI,GACvB,GAA4B,IAAxBD,EAA2B,CACpC,IAAME,EAAY3E,eAAQjO,KAAM,cAAgBA,KAAK2G,SAASC,KAAKC,EAAE7G,KAAK0O,eAC1E,OAAO1O,KAAKuS,gBAAgBK,GAG9B,OAAO,MAET9L,SA7GO,SA6GGvF,GAAqB,WACvBsR,EAAQ7S,KAAKyS,SAASlR,EAAMkJ,oBAAqBlJ,EAAMwI,WAAWP,aACxE,OAAIqJ,EAAc,CAACA,GAEf7S,KAAK2L,aAAa1J,QACbjC,KAAK2L,aAAa1J,QAAlB,iCACFV,GADE,IAELiO,WAAYxP,KAAKwP,WACjBmC,OAAQ3R,KAAK2R,OACbO,WAAYlS,KAAKkS,WACjBI,SAAUtS,KAAKsS,SACfH,OAAQnS,KAAKmS,UAIbnS,KAAK2L,aAAamE,KACbvO,EAAM2B,MAAM6D,KAAI,SAAC+I,EAAWjP,GAAZ,OAAsB,EAAK8K,aAAamE,KAAM,EAAKsC,gBACxEtC,EACAjP,OAIG,IAETiS,UArIO,SAqIIvR,GACT,GAAIvB,KAAK6O,kBAAmB,OAAO,KAEnC,IAAMjM,EAAO,CACXrB,MAAO,iCACFvB,KAAK2P,sBADL,IAEHhI,QAASpG,EAAMoG,QACfoC,WAAYxI,EAAMwI,aAEpB3D,GAAI,CACF,iBAAmB,SAAA3F,GAAD,OAAgBc,EAAMiJ,cAAc/J,MAIpDsS,EAAcC,eAAuB,UAAWhT,KAAK2L,cAE3D,OAAO3L,KAAKqN,eAAe4F,EAApB,gBACLF,eACGnQ,KAGPsQ,qBA1JO,SA0Je3R,GACpB,IAAM4R,EAAa,iCACd5R,GADW,IAEdkO,UAAWzP,KAAKyP,UAChBJ,UAAWrP,KAAKqP,UAChBqC,gBAAiB1R,KAAK0R,kBAGxB,OAAO1R,KAAKqN,eAAe,MAAO,CAChCpH,YAAa,mBACZ,CACDgI,eAAQjO,KAAM,SAAUmT,GAAY,GACpCnT,KAAK8G,SAASvF,GACdvB,KAAK8S,UAAUvR,GACf0M,eAAQjO,KAAM,SAAUmT,GAAY,OAK1C9L,OAxTO,WAwTD,WACJ,OAAOrH,KAAKqN,eAAec,EAAO,CAChC5M,MAAOvB,KAAKoT,OACZhN,GAAI,CACF,iBAAkB,SAACiM,EAAQzH,GAAT,OAAuBC,eAAUwH,EAAGzH,IAAQ,EAAKvF,MAAM,iBAAkBgN,IAC3F,cAAgB,SAAAA,GAAD,OAAY,EAAKhN,MAAM,cAAegN,IACrD,wBAA0B,SAAAA,GAAD,OAAY,EAAKhN,MAAM,wBAAyBgN,IACzE,iBAAmB,SAAAA,GAAD,OAAY,EAAKhN,MAAM,iBAAkBgN,IAC3D,mBAAqB,SAAAA,GAAD,OAAY,EAAKhN,MAAM,mBAAoBgN,IAC/D,kBAAoB,SAAAA,GAAD,OAAY,EAAKhN,MAAM,kBAAmBgN,IAC7D,oBAAsB,SAAAA,GAAD,OAAY,EAAKhN,MAAM,oBAAqBgN,IACjEtI,WAAY,SAACsI,EAAQzH,GAAT,OAAuBC,eAAUwH,EAAGzH,IAAQ,EAAKvF,MAAM,aAAcgN,IACjF,gBAAkB,SAAAA,GAChB,EAAKnD,qBAAuBmD,EAC5B,EAAKhN,MAAM,gBAAiBgN,IAE9B,aAAe,SAAAA,GAAD,OAAe,EAAKhN,MAAM,aAAcgN,KAExDU,YAAa,CACX9Q,QAASjC,KAAKkT,2B,gDCjVPpS,mBAAkBK,OAAO,CAEtCE,WAAY,CACVgS,eAGF9R,MAAO,CACL+R,QAAS,CACPvR,KAAM2F,MACNzF,QAAS,iBAAO,KAElB0F,QAAS,CACP5F,KAAM6F,OACN3F,QAAS,iBAAO,CACdmG,KAAM,EACNC,aAAc,GACdR,OAAQ,GACRC,SAAU,GACVQ,QAAS,GACTC,UAAW,GACXJ,WAAW,EACXD,UAAU,KAGdqL,cAAe3R,OACf4R,SAAU,CACRzR,KAAMH,OACNK,QAAS,SAEXoN,UAAW5N,QACXgO,UAAWhO,QACXgS,YAAahS,QACb4M,aAAc5M,QACdkH,YAAalH,SAGf+C,QAAS,CACPkP,aADO,WACK,I,EAAA,OACJ9Q,EAAO,CACXrB,MAAO,CACLd,MAAOT,KAAKqP,UACZsE,eAAgB3T,KAAKqP,WAAarP,KAAKyP,UACvClJ,MAAyB,QAAlB,EAAAvG,KAAKuT,qBAAaK,QAAI,IAE/BxN,GAAI,CACFsH,MAAQ,SAAA2E,GAAD,OAAgB,EAAKhN,MAAM,oBAAqBgN,MAI3D,OAAIrS,KAAK2L,aAAa,qBACb3L,KAAK2L,aAAa,qBAAsB/I,GAG1C5C,KAAKqN,eAAewG,OAApB,gBACL5N,YAAa,0BACVrD,KAGPkR,YAtBO,WAuBL,OAAO9T,KAAKqN,eAAe/G,OAAO,CAChCL,YAAa,4BACb1E,MAAO,CACLwS,KAAM,KAEP,CAAC/T,KAAKwT,eCzEA1S,iBAAOkT,GAAQ7S,OAAO,CACnCC,KAAM,6BAENG,MAAO,CACL0S,WAAY,CACVlS,KAAMH,OACNK,QAAS,8BAIbuC,QAAS,CACP0P,YADO,SACM3S,GAAU,WACf2F,EAAuC,CAAC3F,EAAMuO,KAAK9C,MAEnDmH,EAAYnU,KAAK2H,QAAQE,OAAO0D,WAAU,SAAAC,GAAC,OAAIA,IAAMjK,EAAMuO,KAAKrP,SAChE2T,EAAcD,GAAa,EAC3BE,EAASrU,KAAK2H,QAAQG,SAASqM,GAYrC,OAVAjN,EAASxB,KAAK1F,KAAKqN,eAAe,MAAO,CACvCpH,YAAa,gBACbC,MAAO,CACLoO,UAAU,EACVC,OAAQH,EACRI,IAAKJ,IAAgBC,EACrBhJ,KAAM+I,GAAeC,IAEtB,CAACrU,KAAK8T,iBAEF9T,KAAKqN,eAAeoH,OAAO,CAChCxO,YAAa,WACbG,GAAI,CACFC,MAAQ,SAAAlB,GACNA,EAAEuP,kBACF,EAAKrP,MAAM,OAAQ9D,EAAMuO,KAAKrP,UAGjCyG,IAELyN,cA5BO,SA4BQzR,GAAY,WACzB,OAAOlD,KAAKqN,eAAeC,OAAS,CAClC/L,MAAO,CACLwE,MAAO/F,KAAK2G,SAASC,KAAKC,EAAE7G,KAAKiU,YACjC/Q,QACAqK,aAAa,EACbqH,SAAU5U,KAAK2H,QAAQQ,UACvB1H,MAAOT,KAAK2H,QAAQQ,UAAYnI,KAAK2H,QAAQE,OAAS7H,KAAK2H,QAAQE,OAAO,GAC1EgN,UAAW,CAAEC,qBAAqB,IAEpC1O,GAAI,CACF2O,OAAS,SAAA1C,GAAD,OAA0B,EAAKhN,MAAM,OAAQgN,KAEvDU,YAAa,CACX/D,UAAW,SAAAzN,GAAK,OAAI,EAAK2S,YAAY3S,SAM7C8F,OA1DmC,SA0D3BzB,GACN,IAAMsB,EAAuC,GAEvC8M,EAAShU,KAAKsT,QAAQnG,MAAK,SAAAvH,GAAC,MAAgB,sBAAZA,EAAEnF,SACpCuT,IAAWhU,KAAKqO,cAClBnH,EAASxB,KAAK1F,KAAKqN,eAAe,MAAO,CACvCnH,MAAO,CACL,sCADG,sBAEAiD,eAAY6K,EAAO9N,SAExBC,MAAO,CACLvB,MAAOoP,EAAOpP,QAEf,CAAC5E,KAAK0T,kBAGX,IAAMsB,EAAchV,KAAKsT,QACtBzD,QAAO,SAAAjK,GAAC,OAAmB,IAAfA,EAAE0O,UAAkC,sBAAZ1O,EAAEnF,SACtCsG,KAAI,SAAAnB,GAAC,MAAK,CACToH,KAAMpH,EAAEoH,KACRvM,MAAOmF,EAAEnF,WAGRT,KAAK2I,aAAeqM,EAAYlT,QACnCoF,EAASxB,KAAK1F,KAAK2U,cAAcK,IAGnC,IAAMC,EAAK/N,EAASpF,OAChB8D,EAAE,KAAM,CAACA,EAAE,MAAO,CAAEK,YAAa,uCAAyCiB,UAC1EhH,EAEEgV,EAAKtP,EAAE,KAAM,CAACqP,IAEpB,OAAOrP,EAAE,QAAS,CAChBK,YAAa,kDACZ,CAACiP,OC7FOpU,G,UAAAA,eAAOkT,GAAQ7S,OAAO,CACnCC,KAAM,8BAENoD,QAAS,CACP2Q,iBADO,SACWnB,GAAuB,WACvC,OAAOhU,KAAKqN,eAAe,OAAQ,CACjCjH,GAAI,CACFC,MAAQ,SAAAlB,GACNA,EAAEuP,kBACF,EAAKrP,MAAM,QAAS2O,EAAOvT,UAG9B,CAAC,WAEN2U,QAXO,SAWEhB,EAAsBC,GAAe,WACtCgB,EAAM,SAAArO,GAAD,OAAiB,EAAKL,SAASC,KAAKC,EAAnB,uCAAqDG,KAE7EsO,EAAW,OACX5O,EAAY,CACd2O,EAAG,YACHA,EAAG,sBAGL,OAAKjB,GAIDC,GACFiB,EAAW,aACX5O,EAAY,CACV2O,EAAG,kBACHA,EAAGrV,KAAK2H,QAAQO,SAAW,oBAAsB,mBAGnDoN,EAAW,YACX5O,EAAY,CACV2O,EAAG,iBACHA,EAAG,wBAIA,CAAEC,WAAU5O,UAAWA,EAAU6O,KAAK,OAjBpC,CAAED,WAAU5O,UAAWA,EAAU6O,KAAK,OAmBjDC,UAxCO,SAwCIxB,GAAuB,WAC1BpR,EAAsE,CAC1EuD,MAAO,CACLoB,KAAM,eACNkO,MAAO,MACP,aAAczB,EAAOhH,MAAQ,IAE/B0I,MAAO,CACL9Q,MAAO+Q,eAAc3B,EAAOpP,OAC5B6I,SAAUkI,eAAc3B,EAAOpP,QAEjCsB,MAAO,CAAC,QAAH,OACK8N,EAAO4B,OAAS,UADrB,sBAEAzM,eAAY6K,EAAO9N,QAFnB,CAGH8N,EAAO6B,SAAW,0BAEpBzP,GAAI,IAEAc,EAAW,GAEjB,GAAqB,sBAAjB8M,EAAOvT,QAAkCT,KAAKqO,aAChD,OAAOrO,KAAKqN,eAAe,KAAMzK,EAAM,CAAC5C,KAAK0T,iBAS/C,GANAxM,EAASxB,KACP1F,KAAK2L,aAAagF,eAAeqD,EAAOvT,OACpCT,KAAK2L,aAAaqI,EAAOvT,OAAQ,CAAEuT,WACnChU,KAAKqN,eAAe,OAAQ,CAAC2G,EAAOhH,SAGrChN,KAAK2I,cAAgBqL,EAAOM,WAAaN,EAAOrD,eAAe,aAAc,CAChF/N,EAAKwD,GAAGC,MAAQ,kBAAM,EAAKhB,MAAM,OAAQ2O,EAAOvT,QAEhD,IAAM0T,EAAYnU,KAAK2H,QAAQE,OAAO0D,WAAU,SAAAC,GAAC,OAAIA,IAAMwI,EAAOvT,SAC5D2T,EAAcD,GAAa,EAC3BE,EAASrU,KAAK2H,QAAQG,SAASqM,GAErCvR,EAAKsD,MAAMR,KAAK,YAEhB,MAAgC1F,KAAKoV,QAAQhB,EAAaC,GAAlD3N,EAAR,EAAQA,UAAW4O,EAAnB,EAAmBA,SAEnB1S,EAAKuD,MAAM,eAAX,UAA+B6N,EAAOhH,KAAO,KAAO,IAApD,OAAyDtG,GACzD9D,EAAKuD,MAAM,aAAemP,EAEtBlB,IACFxR,EAAKsD,MAAMR,KAAK,UAChB9C,EAAKsD,MAAMR,KAAK2O,EAAS,OAAS,QAGf,QAAjBL,EAAO4B,MAAiB1O,EAAS8G,QAAQhO,KAAK8T,eAC7C5M,EAASxB,KAAK1F,KAAK8T,eAEpB9T,KAAK2H,QAAQQ,WAAaiM,GAC5BlN,EAASxB,KAAK1F,KAAKqN,eAAe,OAAQ,CAAEnH,MAAO,mCAAqC,CAACtE,OAAOuS,EAAY,MAMhH,OAFInU,KAAKyT,cAAoC,IAArBO,EAAO8B,WAAqB5O,EAASxB,KAAK1F,KAAKmV,iBAAiBnB,IAEjFhU,KAAKqN,eAAe,KAAMzK,EAAMsE,KAI3CG,OA1GmC,WA0G7B,WACJ,OAAOrH,KAAKqN,eAAe,QAAS,CAClCpH,YAAa,uBACZ,CACDjG,KAAKqN,eAAe,KAAMrN,KAAKsT,QAAQvM,KAAI,SAAAiN,GAAM,OAAI,EAAKwB,UAAUxB,aC7G5D,SAAU+B,EAAsBnT,GAC5C,GAAIA,EAAKoT,OAASpT,EAAKwD,IAAMxD,EAAKwD,GAAGsH,MACnC,GAAIhG,MAAMsD,QAAQpI,EAAKwD,GAAGsH,OAAQ,CAChC,IAAMjI,EAAI7C,EAAKwD,GAAGsH,MAAMuI,QAAQrT,EAAKoT,MAAME,UACvCzQ,GAAK,GAAG7C,EAAKwD,GAAGsH,MAAMjC,OAAOhG,EAAG,eAE7B7C,EAAKwD,GAAGsH,M,gBCZP,SAAUyI,EAAwBC,EAA+CxQ,GAC7F,IAAMsB,EAAoB,GAE1B,IAAK,IAAMmP,KAAQD,EACbA,EAAMzF,eAAe0F,IACvBnP,EAASxB,KAAKE,EAAE,WAAY,CAAEyQ,QAAQD,EAAMC,KAIhD,OAAOnP,ECQMM,mBAAIrG,OAAO,CACxBC,KAAM,sBAENkV,YAAY,EAEZ/U,MAAO,iCACFyS,EAAOrM,QAAQpG,OADf,IAEHgV,OAAQ9U,UAGV4F,OAVwB,SAUhBzB,EAVgB,GAUS,IAApBrE,EAAoB,EAApBA,MAAOqB,EAAa,EAAbA,KAAMwT,EAAO,EAAPA,MACxBL,EAAqBnT,GACrB,IAAMsE,EAAWsP,EAAaJ,IAASxQ,GAIvC,OAFAhD,EAAO6T,eAAU7T,EAAM,CAAErB,UAErBA,EAAMgV,OACD3Q,EAAE8Q,EAAwB9T,EAAMsE,GAEhCtB,EAAE+Q,EAAyB/T,EAAMsE,MC/B9C,SAAS0P,EAASP,G,MAChB,OAAwB,IAAjBA,EAAMvU,SACV,CAAC,KAAM,MAAMsO,SAAiB,QAAR,EAAAiG,EAAM,UAAEzC,WAAA,EAAAA,EAAEiD,KAGtBrP,mBAAIrG,OAAO,CACxBC,KAAM,MAENkV,YAAY,EAEZ/U,MAAO,CACL+R,QAAS5L,MACT7G,MAAOmB,OACP8N,KAAMlI,OACNN,IAAK7F,SAGP4F,OAZwB,SAYhBzB,EAZgB,GAYS,IAApBrE,EAAoB,EAApBA,MAAO6U,EAAa,EAAbA,MAAOxT,EAAM,EAANA,KACnBkU,EAAgBV,IAEhBW,EAAUxV,EAAM+R,QAAQvM,KAAK,SAAAiN,GACjC,IAAM9M,EAAW,GACXzG,EAAQwP,eAAqB1O,EAAMuO,KAAMkE,EAAOvT,OAEhDuW,EAAWhD,EAAOvT,MAClBwW,EAAarU,EAAKmQ,aAAenQ,EAAKmQ,YAAYpC,eAAeqG,IAAapU,EAAKmQ,YAAYiE,GAC/FE,EAAcJ,EAAcnG,eAAeqG,IAAaF,EAAcE,GAExEC,EACF/P,EAASxB,KAAT,MAAAwB,EAAQ,eAASiC,eAAY8N,EAAW,CACtCnH,KAAMvO,EAAMuO,KACZwC,UAAU,EACV0B,SACAnT,MAAOU,EAAMV,MACbJ,aAEOyW,EACThQ,EAASxB,KAAT,MAAAwB,EAAQ,eAASiC,eAAY+N,KAE7BhQ,EAASxB,KAAc,MAATjF,EAAgBA,EAAQmB,OAAOnB,IAG/C,IAAM0W,EAAY,QAAH,OAAWnD,EAAO4B,OAAS,SAE1C,OAAOgB,EAAQ1P,GACXtB,EAAE,KAAM,CACRM,MAAO,CACLiR,EACAnD,EAAOoD,UACP,CACE,wBAAyBpD,EAAO6B,WAGnC3O,GACDA,KAGN,OAAOtB,EAAE,KAAMhD,EAAMmU,MC9DVvP,eAAIrG,OAAO,CACxBC,KAAM,YAENkV,YAAY,EAEZ/U,MAAO,CACLd,MAAO,CACLsB,KAAMN,QACNQ,SAAS,GAEXoV,YAAa,CACXtV,KAAMH,OACNK,QAAS,uBAEXqV,aAAc1V,OACd2V,aAAc,CACZxV,KAAMH,OACNK,QAAS,yBAIboF,OArBwB,SAqBhBzB,EArBgB,GAqBG,IAAdwQ,EAAc,EAAdA,MAAO7U,EAAO,EAAPA,MACZuV,EAAgBV,IAChBlP,EAAW,GAoBjB,OAlBI4P,EAAc,iBAChB5P,EAASxB,KAAKE,EAAE,KAAM,CACpBK,YAAa1E,EAAM8V,aAClBP,EAAc,mBACRA,EAAc,eACvB5P,EAASxB,KAAT,MAAAwB,EAAQ,eAAS4P,EAAc,gBAG7BA,EAAc,gBAAkBvV,EAAMd,OAAOyG,EAASxB,KAAT,MAAAwB,EAAQ,eAAS4P,EAAc,iBAE5EA,EAAc,kBAChB5P,EAASxB,KAAKE,EAAE,KAAM,CACpBK,YAAa1E,EAAMgW,cAClBT,EAAc,oBACRA,EAAc,gBACvB5P,EAASxB,KAAT,MAAAwB,EAAQ,eAAS4P,EAAc,iBAG1B5P,KCtCIpG,G,UAAAA,eAAOI,QAAWC,OAAO,CACtCC,KAAM,iBAENG,MAAO,CACLiW,MAAO/V,QACPgW,YAAahW,QACbiW,OAAQ,CAAC1V,OAAQJ,SAGnBmB,SAAU,CACRC,QADQ,WAEN,uBACE,sBAAuBhD,KAAKwX,MAC5B,+BAAgCxX,KAAK0X,SAAW1X,KAAKyX,YACrD,6BAA8BzX,KAAKyX,YACnC,0BAA2BzX,KAAK2X,OAAOC,IACvC,6BAA8B5X,KAAK2X,OAAOE,QACvC7X,KAAKiD,gBAKduB,QAAS,CACPsT,WADO,WAEL,OAAO9X,KAAK2X,OAAOI,SAAW/X,KAAKqN,eAAe,MAAO,CACvDpH,YAAa,wBACbyP,MAAO,CACLgC,OAAQ/B,eAAc3V,KAAK0X,UAE5B,CACD1X,KAAKqN,eAAe,QAASY,eAAQjO,WAK3CqH,OAnCsC,SAmC9BzB,GACN,OAAOA,EAAE,MAAO,CACdK,YAAa,eACbC,MAAOlG,KAAKgD,SACX,CACDiL,eAAQjO,KAAM,OACdA,KAAK8X,aACL7J,eAAQjO,KAAM,gBC7CLwH,eAAIrG,OAAO,CACxBC,KAAM,MAENkV,YAAY,EAEZ/U,MAAO,CACL+R,QAAS5L,MACTsQ,kBAAmBvW,QACnBZ,MAAOmB,OACP8N,KAAMlI,OACNN,IAAK7F,SAGP4F,OAbwB,SAahBzB,EAbgB,GAaS,IAApBrE,EAAoB,EAApBA,MAAO6U,EAAa,EAAbA,MAAOxT,EAAM,EAANA,KACnBkU,EAAgBV,IAEhBW,EAAmBxV,EAAM+R,QAAQvM,KAAK,SAAAiN,GAC1C,IAAMhR,EAAU,CACd,4BAA4B,GAGxBkE,EAAW,GACXzG,EAAQwP,eAAqB1O,EAAMuO,KAAMkE,EAAOvT,OAEhDuW,EAAWhD,EAAOvT,MAClBwW,EAAarU,EAAKmQ,aAAenQ,EAAKmQ,YAAYpC,eAAeqG,IAAapU,EAAKmQ,YAAYiE,GAC/FE,EAAcJ,EAAcnG,eAAeqG,IAAaF,EAAcE,GAExEC,EACF/P,EAASxB,KAAKuR,EAAW,CACvBnH,KAAMvO,EAAMuO,KACZwC,UAAU,EACV0B,SACAnT,MAAOU,EAAMV,MACbJ,WAEOyW,EACThQ,EAASxB,KAAKwR,GAEdhQ,EAASxB,KAAc,MAATjF,EAAgBA,EAAQmB,OAAOnB,IAG/C,IAAMwX,EAAoB,CACxBrS,EAAE,MAAO,CACPK,YAAa,kCACZiB,IAWL,MARqB,oBAAjB8M,EAAOvT,OAAgCc,EAAMyW,mBAC/CC,EAAkBjK,QAChBpI,EAAE,MAAO,CACPK,YAAa,oCACZ,CAAC+N,EAAOhH,QAIRpH,EAAE,KAAM,CAAEM,MAAOlD,GAAWiV,MAGrC,OAAOrS,EAAE,KAAD,eAAC,kBAAWhD,GAAZ,IAAkBqD,YAAa,mCAAoC8Q,M,wBC1ChEvP,G,oBAAAA,aAAIrG,OAAO,CACxBC,KAAM,QAENoD,QAAS,CACP0T,6BADO,SACuBC,EAAgBC,GAAyC,IAAlBC,EAAkB,wDAC/EC,EAAY1Q,OAAOsI,KAAKlQ,KAAKuY,YAChC1I,QAAO,SAAA7I,GAAG,OAAIA,EAAIwR,SAASL,MAC3BnI,QAAO,SAACyI,EAAKzR,GAEZ,OADAyR,EAAIzR,GAAO,CAAE0R,MAAO1R,EAAIgD,MAAM,GAAImO,EAAOrW,SAClC2W,IACN,IAEL,OAAOzY,KAAK2Y,sBAAL,iCACFL,GADE,qBAEJ,cAAgBH,EAAS,CAAEO,MAAO,cAAeE,SAAS,EAAMhY,QAAQ,KACxEwX,EAASC,IAEdM,sBAdO,SAcgBE,EAAqBT,GAAyC,WAAlBC,EAAkB,wDAC7EjS,EAAqB,GADwD,WAGxEsS,GACT,IAAMI,EAAeD,EAAOH,GAE5B,IAAK,EAAKH,WAAWG,GAAQ,iBAI7B,IAAMK,EAASD,EAAaE,QAAU,KAAQF,EAAaG,KAAO,IAAM,KAAOH,EAAaI,QAAU,IAAM,IACtGlS,EAAM+R,EAASD,EAAaJ,MAE5B/N,EAAwB,SAAAxF,G,QACtBgU,EAAyBhU,EAC/B,QAA4BjF,IAAxB4Y,EAAaM,QAAyBD,EAAWE,QAAU,GAAKF,EAAWC,SAAWN,EAAaM,OAAS,CAY9G,GAXIN,EAAaF,SACfzT,EAAEC,iBAEA0T,EAAaQ,MACfnU,EAAEuP,kBAOAvP,GAAK,YAAaA,EAAG,CACvB,IAAMoU,EAAiB,IAEjBC,EAAqD,QAA/B,EAAArU,EAAEsU,qBAA6B7F,WAAA,EAAAA,EAAE8F,UAAUC,MAAMJ,GACvEK,EAAiBC,SAASC,kBAAkB3U,EAAE4U,eAAe,GAAGC,QAAS7U,EAAE4U,eAAe,GAAGE,SAI7FR,EAAgBG,EAAezM,MAAK,SAAAtG,GAAC,OAAIA,EAAE6S,UAAUC,MAAMJ,GAAgB7J,MAAK,SAAAwK,GAAC,OAAIV,EAAmBpJ,SAAS8J,SAEvH,GAAIT,KACwB,QAAxB,EAAAtU,EAAEgV,cAAsBC,WAAA,EAAAA,EAAEC,WAAWZ,IAOvC,YALAA,EAAca,cAAc,IAAIC,WAAWpV,EAAEpD,KAAM,CACjDgY,eAAgB5U,EAAE4U,eAClBS,cAAerV,EAAEqV,cACjBC,QAAStV,EAAEsV,WAQbpC,EACF,EAAKhT,MAAMqT,EAAOvT,EAAGiT,EAAQjT,IAE7B,EAAKE,MAAMqT,EAAON,EAAQjT,GAAIA,GAIlC,OAAO2T,EAAalY,QAGlBoG,KAAOZ,EAELsB,MAAMsD,QAAQ5E,EAAGY,IAClBZ,EAAGY,GAAwBtB,KAAKiF,GAEjCvE,EAAGY,GAAO,CAACZ,EAAGY,GAAM2D,GAGtBvE,EAAGY,GAAO2D,GAlEd,IAAK,IAAM+N,KAASG,EAAQ,EAAjBH,GAsEX,OAAOtS,OCjEb,SAASsU,EAAU5K,EAAWhH,EAAuB+G,GACnD,OAAQ,SAAAmE,GACN,IAAMvT,EAAQwP,eAAqBH,EAAMkE,EAAOvT,OAChD,OAAOuT,EAAOnE,OAASmE,EAAOnE,OAAOpP,EAAOqI,EAAQgH,GAAQD,EAAOpP,EAAOqI,EAAQgH,IAItF,SAAS6K,EACPzX,EACA4F,EACA8R,EACAC,EACA9R,EACA+R,GAIA,OAFAhS,EAA2B,kBAAXA,EAAsBA,EAAOiS,OAAS,KAEnC,UAAfD,EAEIhS,GAAU+R,EAA4B/Y,QAAY8Y,EAAyB9Y,OAE1EoB,EAAM2M,QAAO,SAAAC,GAElB,SAAI8K,EAAyB9Y,SAAU8Y,EAAyBrL,MAAMmL,EAAS5K,EAAMhH,EAAQkS,WAKrFlS,GAAU+R,EAA4BnL,KAAKgL,EAAS5K,EAAMhH,EAAQC,OAToB7F,EAWxE,iBAAf4X,EACF5X,EAAM2M,QAAO,SAAAC,GAGlB,IAAMmL,EAAuBL,EAAyBrL,MAAMmL,EAAS5K,EAAMhH,EAAQkS,SAI7EE,GAAqBpS,GAAU+R,EAA4BnL,KAAKgL,EAAS5K,EAAMhH,EAAQC,IAE7F,OAAOkS,GAAwBC,KAG1BhY,EAKIpC,sBACbqa,EACAC,OACAC,GACAla,OAAO,CACPC,KAAM,eAGNC,WAAY,CACVgS,eAGF9R,MAAO,CACL+R,QAAS,CACPvR,KAAM2F,MACNzF,QAAS,iBAAM,KAEjBqZ,WAAY7Z,QACZ8R,cAAe3R,OACf2Z,WAAY9Z,QACZgS,YAAahS,QAGbiW,OAAQ,CAAC1V,OAAQJ,QACjBoW,kBAAmBvW,QACnB+Z,QAAS5Z,OACT4V,MAAO/V,QACPga,YAAa7T,OACb8T,gBAAiBja,QACjBgW,YAAahW,QACbka,cAAe3Z,OACf4Z,WAAY,CACV7Z,KAAMH,OACNK,QAAS,WAEX8G,aAAc,CACZhH,KAAMiG,SACN/F,QAAS+Y,QAEXF,WAAY,CACV/Y,KAAMH,OACNK,QAAS,gBAEX4Z,UAAW,CACT9Z,KAAM,CAACH,OAAQoG,UACf/F,QAAS,iBAAM,KAEjB6Z,UAAW,CACT/Z,KAAM,CAACH,OAAQoG,UACf/F,QAAS,iBAAM,KAEjB8Z,aAAc,CACZha,KAAM,CAACC,OAAQJ,QACfK,QAAS,IAIbW,KArDO,WAsDL,MAAO,CACLoZ,gBAAiB,GACjBC,UAAW,GACXC,OAAQ,KAIZnZ,SAAU,CACRoZ,gBADQ,WACO,WACb,IAAKnc,KAAKsT,QAAS,MAAO,GAC1B,IAAMA,EAAUtT,KAAKsT,QAAQzD,QAAO,SAAAjK,GAAC,YAAgB1F,IAAZ0F,EAAEnF,QAAwB,EAAKub,gBAAgB7O,MAAK,SAAAkF,GAAC,OAAIA,IAAMzM,EAAEnF,YACpG2b,EAAgB,CAAEpP,KAAM,GAAIsH,UAAU,EAAO1P,MAAO,OAE1D,GAAI5E,KAAKsb,WAAY,CACnB,IAAMza,EAAQyS,EAAQ/H,WAAU,SAAA3F,GAAC,MAAgB,sBAAZA,EAAEnF,SACnCI,EAAQ,EAAGyS,EAAQtF,QAAR,iCAAqBoO,GAArB,IAAoC3b,MAAO,uBACrD6S,EAAQ7H,OAAO5K,EAAO,EAAtB,iCAA8Bub,GAAkB9I,EAAQzS,KAG/D,GAAIb,KAAKub,WAAY,CACnB,IAAM1a,EAAQyS,EAAQ/H,WAAU,SAAA3F,GAAC,MAAgB,sBAAZA,EAAEnF,SACnCI,EAAQ,EAAGyS,EAAQtF,QAAR,iCAAqBoO,GAArB,IAAoC3b,MAAO,uBACrD6S,EAAQ7H,OAAO5K,EAAO,EAAtB,iCAA8Bub,GAAkB9I,EAAQzS,KAG/D,OAAOyS,GAET+I,aApBQ,WAqBN,OAAOrc,KAAKsS,cAAWpS,EAAY,CACjCoc,QAAStc,KAAK2b,eAAiB3b,KAAKmc,gBAAgBra,SAGxDya,cAzBQ,WA0BN,OAAOvc,KAAKmc,gBAAgBnM,QAAiD,SAACyI,EAAKzE,GAEjF,OADIA,EAAO3J,OAAMoO,EAAIzE,EAAOvT,OAASuT,EAAO3J,MACrCoO,IACN,KAELmC,yBA/BQ,WAgCN,OAAO5a,KAAKsT,QAAQzD,QAAO,SAAAmE,GAAM,OAAIA,EAAOnE,UAAYmE,EAAOrD,eAAe,gBAAuC,IAAtBqD,EAAOwI,gBAExG3B,4BAlCQ,WAmCN,OAAO7a,KAAKsT,QAAQzD,QAAO,SAAAmE,GAAM,OAAKA,EAAOnE,UAAYmE,EAAOrD,eAAe,gBAAuC,IAAtBqD,EAAOwI,gBAEzGC,qBArCQ,WAsCN,OAAO7M,eAAmB5P,KAAKyb,cAEjCiB,qBAxCQ,WAyCN,IAAMrU,EAAerI,KAAK2H,SAAW3H,KAAK2H,QAAQU,aAAerI,KAAK2H,QAAQU,aAAerI,KAAKqI,aAC5FwD,EAA4D7L,KAAK2P,qBAAqB9D,oBAE5F,GACEA,IACCA,EAAoBsB,MAAK,SAAA2C,GAAI,MAAoB,kBAATA,EAAoBA,IAASzH,EAAeyH,EAAKrP,QAAU4H,KACpG,CACA,IAAMsU,EAAc9Q,EAAoB,GACxC,MAA8B,WAAvB,eAAO8Q,GAA2BA,EAAYlc,MAAQkc,EAG/D,OAAOtU,GAETuU,YAtDQ,WAsDG,I,MAAA,OACT,OAAqF,QAA9E,EAAwE,QAAxE,EAAY,QAAZ,EAAA5c,KAAKsT,eAAOM,WAAA,EAAAA,EAAEzG,MAAK,SAAA6G,GAAS,MAAC,OAAAA,EAAOvT,SAA8B,QAApB,IAAKub,uBAAepI,WAAA,EAAAA,EAAG,cAAGwG,WAAA,EAAAA,EAAEpN,YAAI6P,QAAI,KAI7FxM,QAxHO,WAwHA,WACCC,EAAgB,CACpB,CAAC,YAAa,0BACd,CAAC,eAAgB,uBACjB,CAAC,aAAc,gBAIjBA,EAAcC,SAAQ,YAA4B,0BAA1BC,EAA0B,KAAhBC,EAAgB,KAC5C,EAAKC,OAAOC,eAAeH,IAAWI,eAASJ,EAAUC,EAAa,OAI9EO,QArIO,WA2IDhR,KAAK0b,kBACP1W,OAAOiM,iBAAiB,SAAUjR,KAAK8c,YACvC9c,KAAK8c,eAIT1L,cAjJO,WAkJDpR,KAAK0b,iBACP1W,OAAOqM,oBAAoB,SAAUrR,KAAK8c,aAI9CtY,QAAS,CACPsY,WADO,WAEL9c,KAAKkc,OAASxU,MAAMnC,KAAKvF,KAAK6E,IAAIkY,iBAAiB,OAAOhW,KAAI,SAAA5B,GAAC,OAAIA,EAAEJ,gBAEvEiY,wBAJO,SAIkB9Z,EAAc4F,GACrC,OAAO6R,EACLzX,EACA4F,EACA9I,KAAK4a,yBACL5a,KAAK6a,4BACL7a,KAAK+I,aACL/I,KAAK8a,aAGTmC,sBAdO,SAcgB/Z,EAAc2E,EAAkBC,EAAqBY,GAC1E,OAAO1I,KAAK+H,WAAW7E,EAAO2E,EAAQC,EAAUY,EAAQ1I,KAAKuc,gBAE/DnK,gBAjBO,SAiBUtC,EAAWjP,GAAa,WACjC+B,EAAO,iCACRuY,EAAcxT,QAAQnD,QAAQ4N,gBAAgBjT,KAAKa,KAAM8P,EAAMjP,IAD1D,IAERyS,QAAStT,KAAKmc,kBAGhB,wCACKvZ,GADL,IAEEuD,MAAO,CACLD,MAAO,CACL,yBAA0BtD,EAAK4M,aAGnCpJ,GAAI,iCACCpG,KAAKkY,6BAA6B,QAAQ,kBAAMtV,KAAM,IADzD,IAIAyD,MAAQ,SAAAqS,GAAD,OAAuB,EAAKrT,MAAM,YAAayK,EAAMlN,EAAM8V,SAIxEwE,WAtCO,SAsCK3b,GACV,OAAIvB,KAAKwb,QAAgB,CAACxb,KAAKqN,eAAe,UAAW,CAACrN,KAAKwb,WAExDvN,eAAQjO,KAAM,UAAWuB,GAAO,IAEzC4b,YA3CO,SA2CM5b,GAAqB,WAChC,OAAOvB,KAAKqN,eAAe,WAAYrN,KAAKmc,gBAAgBpV,KAAI,SAAAiN,GAC9D,OAAO,EAAK3G,eAAe,MAAO,CAChCnH,MAAO,CACL2P,QAAS7B,EAAO6B,gBAKxBuH,WApDO,WAqDL,IAAMnI,EAAKjV,KAAKqN,eAAe,KAAM,CACnCpH,YAAa,SACbE,MAAOnG,KAAKqc,cACX,CAACrc,KAAKqd,gBAEHnI,EAAKlV,KAAKqN,eAAe,KAAM,CACnCpH,YAAa,0BACZ,CAACgP,IAEJ,OAAOjV,KAAKqN,eAAe,QAAS,CAAC6H,KAEvCoI,WAhEO,SAgEK/b,GACV,IAAMqB,EAAO,CACXrB,MAAO,iCACFvB,KAAKyc,sBADL,IAEHnJ,QAAStT,KAAKmc,gBACdxU,QAASpG,EAAMoG,QACf4O,OAAQvW,KAAKsS,SACbmB,YAAazT,KAAKyT,YAClBF,cAAevT,KAAKuT,cACpB9D,UAAWzP,KAAKyP,UAChBJ,UAAWrP,KAAKqP,UAChBhB,aAAcrO,KAAKqO,aACnB1F,YAAa3I,KAAK2I,cAEpBvC,GAAI,CACFiE,KAAM9I,EAAM8I,KACZE,MAAOhJ,EAAMgJ,MACb,oBAAqBvK,KAAK0R,kBAKxBxK,EAAuC,CAAC+G,eAAQjO,KAAM,SAAP,eAAC,kBACjD4C,GADgD,IAEnD0P,SAAUtS,KAAKsS,aAGjB,IAAKtS,KAAKgY,kBAAmB,CAC3B,IAAMjF,EAAcC,eAAuB,UAAWhT,KAAK2L,cAC3DzE,EAASxB,KAAK1F,KAAKqN,eAAekQ,EAApB,iCACT3a,GADS,IAEZmQ,kBAMJ,OAFI/S,KAAKyO,SAASvH,EAASxB,KAAK1F,KAAKod,cAE9BlW,GAETqL,gBAvGO,SAuGUC,GACf,OAAOxS,KAAKqN,eAAe,KAAM,CAC/BpH,YAAa,+BACZ,CACDjG,KAAKqN,eAAe,KAAM,CACxBlH,MAAOnG,KAAKqc,cACX7J,MAGP1L,SAhHO,SAgHG5D,EAAc3B,GACtB,IAAMsR,EAAQ7S,KAAKyS,SAASlR,EAAMkJ,oBAAqBlJ,EAAMwI,WAAWP,aACxE,OAAIqJ,EAAc,CAACA,GAEZtR,EAAM4I,aACTnK,KAAKwd,eAAejc,EAAM4I,aAAc5I,GACxCvB,KAAKyd,QAAQva,EAAO3B,IAE1Bic,eAxHO,SAwHSrT,EAAgC5I,GAAqB,WACnE,OAAO4I,EAAapD,KAAI,SAAAwD,GAGtB,OAFK,EAAK0R,UAAUtL,eAAepG,EAAMnJ,OAAO,EAAKsc,KAAK,EAAKzB,UAAW1R,EAAMnJ,MAAM,GAElF,EAAKuK,aAAapB,MACb,EAAKoB,aAAapB,MAAM,CAC7BA,MAAOA,EAAMnJ,KACbuG,QAASpG,EAAMoG,QACf2K,SAAU,EAAKA,SACfpP,MAAOqH,EAAMrH,MACboQ,QAAS,EAAK6I,kBAGT,EAAKwB,qBAAqBpT,EAAMnJ,KAAMmJ,EAAMrH,MAAO3B,OAIhEoc,qBAzIO,SAyIepT,EAAerH,EAAc3B,GAAqB,WAChEqc,IAAW5d,KAAKic,UAAU1R,GAC1BrD,EAA0B,CAC9BlH,KAAKqN,eAAe,WAAY,CAAEgJ,KAAM,eAAiBrW,KAAKyd,QAAQva,EAAO3B,KAEzEsc,EAAW,kBAAM,EAAKH,KAAK,EAAKzB,UAAW1R,GAAQ,EAAK0R,UAAU1R,KAClEuT,EAAW,kBAAMvc,EAAMiJ,cAAc,CAAElC,QAAS,GAAIC,UAAW,MAErE,GAAIvI,KAAK2L,aAAa,gBACpBzE,EAAS8G,QAAQhO,KAAKqN,eAAe,WAAY,CAAEgJ,KAAM,iBAAmB,CAC1ErW,KAAK2L,aAAa,gBAAiB,CACjCpB,QACAjC,QAAS/G,EAAMoG,QAAQW,QACvBgK,SAAUtS,KAAKsS,SACfpP,QACAoQ,QAAStT,KAAKmc,gBACdyB,SACA3S,OAAQ4S,EACRE,OAAQD,WAGP,CACL,IAAM7S,EAASjL,KAAKqN,eAAeO,OAAM,CACvC3H,YAAa,OACb1E,MAAO,CACLsE,MAAM,EACNmY,OAAO,GAET5X,GAAI,CACFC,MAAOwX,IAER,CAAC7d,KAAKqN,eAAe/G,OAAO,CAACsX,EAAS,SAAW,YAE9CG,EAAS/d,KAAKqN,eAAeO,OAAM,CACvC3H,YAAa,OACb1E,MAAO,CACLsE,MAAM,EACNmY,OAAO,GAET5X,GAAI,CACFC,MAAOyX,IAER,CAAC9d,KAAKqN,eAAe/G,OAAO,CAAC,aAE1B2X,EAASje,KAAKqN,eAAe,KAAM,CACvCpH,YAAa,aACbE,MAAOnG,KAAKqc,cACX,CAACpR,EAAD,UAAYjL,KAAK4c,YAAjB,aAAiCrS,GAASwT,IAE7C7W,EAAS8G,QAAQhO,KAAKqN,eAAe,WAAY,CAAEgJ,KAAM,iBAAmB,CAAC4H,KAiB/E,OAdIje,KAAK2L,aAAa,kBACpBzE,EAASxB,KAAK1F,KAAKqN,eAAe,WAAY,CAAEgJ,KAAM,kBAAoB,CACxErW,KAAK2L,aAAa,iBAAkB,CAClCpB,QACAjC,QAAS/G,EAAMoG,QAAQW,QACvBgK,SAAUtS,KAAKsS,SACfpP,QACAoQ,QAAStT,KAAKmc,gBACdyB,SACA3S,OAAQ4S,OAKP7d,KAAKqN,eAAe6Q,EAAU,CACnClX,IAAKuD,EACLhJ,MAAO,CACLd,MAAOmd,IAER1W,IAELuW,QAlNO,SAkNEva,EAAc3B,GACrB,OAAOvB,KAAK2L,aAAamE,KAAO9P,KAAKme,cAAcjb,EAAO3B,GAASvB,KAAKoe,eAAelb,EAAO3B,IAEhG4c,cArNO,SAqNQjb,EAAc3B,GAG3B,IAFA,IAAM8c,EAAO,GAEJ5Y,EAAI,EAAGA,EAAIvC,EAAMpB,OAAQ2D,IAAK,CACrC,IAAMqK,EAAO5M,EAAMuC,GACnB4Y,EAAK3Y,KAAK1F,KAAK2L,aAAamE,KAAlB,iCACL9P,KAAKoS,gBAAgBtC,EAAMrK,IADtB,IAER6M,SAAUtS,KAAKsS,aAGbtS,KAAKkS,WAAWpC,IAClBuO,EAAK3Y,KAAK1F,KAAK2L,aAAa,iBAAkB,CAC5C2H,QAAStT,KAAKmc,gBACd7J,SAAUtS,KAAKsS,SACfzR,MAAO4E,EACPqK,UAKN,OAAOuO,GAETD,eA3OO,SA2OSlb,EAAc3B,GAAqB,WACjD,OAAOvB,KAAK2L,aAAa,iBACrBzI,EAAM6D,KAAI,SAAC+I,EAAMjP,GAAP,OAAiB,EAAKyd,sBAAsBxO,EAAMjP,MAC5DqC,EAAM6D,KAAI,SAAC+I,EAAMjP,GAAP,OAAiB,EAAK0d,oBAAoBzO,EAAMjP,OAEhEyd,sBAhPO,SAgPgBxO,EAAWjP,GAChC,IAAMqR,EAAalS,KAAKkS,WAAWpC,GAC7B9M,EAAU,CACd,qDAAsDkP,GAElDsM,EAAYxe,KAAKue,oBAAoBzO,EAAMjP,EAAOmC,GAClDyb,EAAcze,KAAKqN,eAAe,KAAM,CAC5CpH,YAAa,0DACZ,CAACjG,KAAK2L,aAAa,iBAAkB,CACtC2H,QAAStT,KAAKmc,gBACd7J,SAAUtS,KAAKsS,SACfxC,WAGF,OAAO9P,KAAKqN,eAAe6Q,EAAU,CACnC3c,MAAO,CACLd,MAAOyR,IAER,CACDlS,KAAKqN,eAAe,WAAY,CAAEgJ,KAAM,cAAgB,CAACmI,IACzDxe,KAAKqN,eAAe,WAAY,CAAEgJ,KAAM,eAAiB,CAACoI,OAG9DF,oBAvQO,SAuQczO,EAAWjP,GAAoD,WAArCmC,EAAqC,uDAAF,GAC1E+P,EAAcC,eAAuB,QAAShT,KAAK2L,cAEnD/I,EAAO5C,KAAKoS,gBAAgBtC,EAAMjP,GAExC,GAAIb,KAAKsb,WAAY,CACnB,IAAMjF,EAAOtD,EAAY,qBACzBA,EAAY,qBAAuBsD,EAAO,kBAAMA,EAAK,iCAChDzT,GAD+C,IAElD0P,SAAU,EAAKA,aACZ,W,MAAM,SAAKjF,eAAewG,OAAiB,CAC9C5N,YAAa,yBACb1E,MAAO,CACLd,MAAOmC,EAAK4M,WACZ9N,UAAW,EAAKqO,aAAaD,GAC7BvJ,MAAyB,QAAlB,IAAKgN,qBAAaK,QAAI,IAE/BxN,GAAI,CACFsH,MAAQ,SAAAvL,GAAD,OAAkBS,EAAK+O,OAAOxP,QAK3C,GAAInC,KAAKub,WAAY,CACnB,IAAMlF,EAAOtD,EAAY,qBACzBA,EAAY,qBAAuBsD,EAAO,kBAAMA,EAAKzT,IAAQ,kBAAM,EAAKyK,eAAe/G,OAAO,CAC5FL,YAAa,4BACbC,MAAO,CACL,oCAAqCtD,EAAKsP,YAE5C9L,GAAI,CACFC,MAAQ,SAAAlB,GACNA,EAAEuP,kBACF9R,EAAKuP,QAAQvP,EAAKsP,eAGrB,CAAC,EAAK0J,cAGX,OAAO5b,KAAKqN,eAAerN,KAAKsS,SAAWoM,EAAYC,EAAK,CAC1D3X,IAAKiJ,eAAqBH,EAAM9P,KAAKoO,SACrClI,MAAO0Y,eAAa,iCACb5b,GADY,IACH,yBAA0BJ,EAAK4M,aAC7CqP,eAAoB/O,EAAM9P,KAAK6b,YAEjCnG,MAAOoJ,eAAY,GAAID,eAAoB/O,EAAM9P,KAAK8b,YACtDva,MAAO,CACL+R,QAAStT,KAAKmc,gBACdnE,kBAAmBhY,KAAKgY,kBACxBnX,QACAiP,OACAxI,IAAKtH,KAAK2G,SAASW,KAErByL,cACA3M,GAAIxD,EAAKwD,MAGb2Y,QAhUO,SAgUExd,GACP,IAAMqB,EAAO,iCACRrB,GADK,IAER4Q,OAAQnS,KAAKmS,OACbmB,QAAStT,KAAKmc,gBACdjK,WAAYlS,KAAKkS,WACjBI,SAAUtS,KAAKsS,SACf9C,WAAYxP,KAAKwP,WACjBmC,OAAQ3R,KAAK2R,SAGf,OAAI3R,KAAK2L,aAAaqT,KACbhf,KAAK2L,aAAaqT,KAAMpc,GAG1B5C,KAAKqN,eAAe,QAAS,CAClCY,eAAQjO,KAAM,eAAgB4C,GAAM,GACpC5C,KAAK8G,SAASvF,EAAM2B,MAAO3B,GAC3B0M,eAAQjO,KAAM,cAAe4C,GAAM,MAGvCqc,QArVO,SAqVE1d,G,QACP,OAA6B,QAAtB,KAAAvB,KAAK2L,cAAauT,YAAI9E,WAAA,EAAAA,SAAG7Y,IAElC4d,WAxVO,SAwVK5d,GACV,IAAMqB,EAAO,CACXrB,MAAO,gBACLoG,QAASpG,EAAMoG,QACfoC,WAAYxI,EAAMwI,WAClBiC,iBAAkB,uCACfhM,KAAK2P,sBAEVvJ,GAAI,CACF,iBAAmB,SAAA3F,GAAD,OAAgBc,EAAMiJ,cAAc/J,KAExDyb,OAAQlc,KAAKkc,OACb5I,QAAStT,KAAKmc,iBAGVjV,EAA0B,CAC9B+G,eAAQjO,KAAM,SAAU4C,GAAM,IAUhC,OAPK5C,KAAK6O,mBACR3H,EAASxB,KAAK1F,KAAKqN,eAAe4F,EAApB,iCACTrQ,GADS,IAEZmQ,YAAaC,eAAuB,UAAWhT,KAAK2L,kBAIjDzE,GAETgM,qBApXO,SAoXe3R,GACpB,IAAM6d,EAAc,CAClB1H,OAAQ1X,KAAK0X,OACbD,YAAazX,KAAKyX,YAClBD,MAAOxX,KAAKwX,OAqBd,OAAOxX,KAAKqN,eAAegS,EAAc,CACvC9d,MAAO6d,EACPlZ,MAAO,CACL,uBAAwBlG,KAAKsS,SAC7B,2BAA4BtS,KAAKsb,aAElC,CACDtb,KAAKsf,UAAU,MAAOrR,eAAQjO,KAAM,MAAP,eAAC,kBACzBuB,GADwB,IAE3B+Q,SAAUtS,KAAKsS,YACd,IACHtS,KAAKkd,WAAW3b,GAChBvB,KAAKmd,YAAY5b,GACjBvB,KAAKsd,WAAW/b,GAChBvB,KAAK+e,QAAQxd,GACbvB,KAAKif,QAAQ1d,GACbvB,KAAKsf,UAAU,SAAUtf,KAAKmf,WAAW5d,OAG7C+d,UAhaO,SAgaIjJ,EAAc7D,GACvB,OAAOxS,KAAKqN,eAAe,WAAY,CAAEgJ,QAAQ7D,KAIrDnL,OA5jBO,WA4jBD,WACJ,OAAOrH,KAAKqN,eAAec,EAAO,CAChC5M,MAAO,iCACFvB,KAAKoT,QADL,IAEHrK,aAAc/I,KAAKgd,wBACnBjV,WAAY/H,KAAKid,sBACjB5U,aAAcrI,KAAK0c,uBAErBtW,GAAI,CACF,iBAAkB,SAACiM,EAAgBzH,GACjC,EAAKoR,gBAAkB3J,EAAE/J,SAAW,IACnCuC,eAAUwH,EAAGzH,IAAQ,EAAKvF,MAAM,iBAAkBgN,IAErD,cAAgB,SAAAA,GAAD,OAAe,EAAKhN,MAAM,cAAegN,IACxD,wBAA0B,SAAAA,GAAD,OAAe,EAAKhN,MAAM,wBAAyBgN,IAC5E,iBAAmB,SAAAA,GAAD,OAA0B,EAAKhN,MAAM,iBAAkBgN,IACzE,mBAAqB,SAAAA,GAAD,OAA4B,EAAKhN,MAAM,mBAAoBgN,IAC/E,kBAAoB,SAAAA,GAAD,OAA0B,EAAKhN,MAAM,kBAAmBgN,IAC3E,oBAAsB,SAAAA,GAAD,OAA4B,EAAKhN,MAAM,oBAAqBgN,IACjFtI,WAAY,SAACsI,EAAmBzH,GAApB,OAA6CC,eAAUwH,EAAGzH,IAAQ,EAAKvF,MAAM,aAAcgN,IACvG,gBAAkB,SAAAA,GAChB,EAAKnD,qBAAuBmD,EAC5B,EAAKhN,MAAM,gBAAiBgN,IAE9B,aAAe,SAAAA,GAAD,OAAe,EAAKhN,MAAM,aAAcgN,KAExDU,YAAa,CACX9Q,QAASjC,KAAKkT,4B,2DCzrBtB,gBAGetF,e,qBCHf,IAAI2R,EAAI,EAAQ,QAIhBA,EAAE,CAAEpF,OAAQ,SAAUqF,MAAM,GAAQ,CAClCnc,iBAAkB,oB","file":"js/chunk-51094894.a8620315.js","sourcesContent":["'use strict';\nvar call = require('../internals/function-call');\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar anObject = require('../internals/an-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar sameValue = require('../internals/same-value');\nvar toString = require('../internals/to-string');\nvar getMethod = require('../internals/get-method');\nvar regExpExec = require('../internals/regexp-exec-abstract');\n\n// @@search logic\nfixRegExpWellKnownSymbolLogic('search', function (SEARCH, nativeSearch, maybeCallNative) {\n return [\n // `String.prototype.search` method\n // https://tc39.es/ecma262/#sec-string.prototype.search\n function search(regexp) {\n var O = requireObjectCoercible(this);\n var searcher = regexp == undefined ? undefined : getMethod(regexp, SEARCH);\n return searcher ? call(searcher, regexp, O) : new RegExp(regexp)[SEARCH](toString(O));\n },\n // `RegExp.prototype[@@search]` method\n // https://tc39.es/ecma262/#sec-regexp.prototype-@@search\n function (string) {\n var rx = anObject(this);\n var S = toString(string);\n var res = maybeCallNative(nativeSearch, rx, S);\n\n if (res.done) return res.value;\n\n var previousLastIndex = rx.lastIndex;\n if (!sameValue(previousLastIndex, 0)) rx.lastIndex = 0;\n var result = regExpExec(rx, S);\n if (!sameValue(rx.lastIndex, previousLastIndex)) rx.lastIndex = previousLastIndex;\n return result === null ? -1 : result.index;\n }\n ];\n});\n","import './VPagination.sass'\n\nimport VIcon from '../VIcon'\n\n// Directives\nimport Resize from '../../directives/resize'\n\n// Mixins\nimport Colorable from '../../mixins/colorable'\nimport Intersectable from '../../mixins/intersectable'\nimport Themeable from '../../mixins/themeable'\n\n// Utilities\nimport mixins from '../../util/mixins'\n\n// Types\nimport { VNode, CreateElement, VNodeChildrenArrayContents } from 'vue'\n\n/* @vue/component */\nexport default mixins(\n Colorable,\n Intersectable({ onVisible: ['init'] }),\n Themeable\n).extend({\n name: 'v-pagination',\n\n directives: { Resize },\n\n props: {\n circle: Boolean,\n disabled: Boolean,\n navigationColor: String,\n navigationTextColor: String,\n length: {\n type: Number,\n default: 0,\n validator: (val: number) => val % 1 === 0,\n },\n nextIcon: {\n type: String,\n default: '$next',\n },\n prevIcon: {\n type: String,\n default: '$prev',\n },\n totalVisible: [Number, String],\n value: {\n type: Number,\n default: 0,\n },\n pageAriaLabel: {\n type: String,\n default: '$vuetify.pagination.ariaLabel.page',\n },\n currentPageAriaLabel: {\n type: String,\n default: '$vuetify.pagination.ariaLabel.currentPage',\n },\n previousAriaLabel: {\n type: String,\n default: '$vuetify.pagination.ariaLabel.previous',\n },\n nextAriaLabel: {\n type: String,\n default: '$vuetify.pagination.ariaLabel.next',\n },\n wrapperAriaLabel: {\n type: String,\n default: '$vuetify.pagination.ariaLabel.wrapper',\n },\n },\n\n data () {\n return {\n maxButtons: 0,\n selected: null as number | null,\n }\n },\n\n computed: {\n classes (): object {\n return {\n 'v-pagination': true,\n 'v-pagination--circle': this.circle,\n 'v-pagination--disabled': this.disabled,\n ...this.themeClasses,\n }\n },\n\n items (): (string | number)[] {\n const totalVisible = parseInt(this.totalVisible, 10)\n\n if (totalVisible === 0 || isNaN(this.length) || this.length > Number.MAX_SAFE_INTEGER) {\n return []\n }\n\n const maxLength = Math.min(\n Math.max(0, totalVisible) || this.length,\n Math.max(0, this.maxButtons) || this.length,\n this.length\n )\n\n if (this.length <= maxLength) {\n return this.range(1, this.length)\n }\n\n const even = maxLength % 2 === 0 ? 1 : 0\n const left = Math.floor(maxLength / 2)\n const right = this.length - left + 1 + even\n\n if (this.value > left && this.value < right) {\n const firstItem = 1\n const lastItem = this.length\n const start = this.value - left + 2\n const end = this.value + left - 2 - even\n const secondItem = start - 1 === firstItem + 1 ? 2 : '...'\n const beforeLastItem = end + 1 === lastItem - 1 ? end + 1 : '...'\n\n return [1, secondItem, ...this.range(start, end), beforeLastItem, this.length]\n } else if (this.value === left) {\n const end = this.value + left - 1 - even\n return [...this.range(1, end), '...', this.length]\n } else if (this.value === right) {\n const start = this.value - left + 1\n return [1, '...', ...this.range(start, this.length)]\n } else {\n return [\n ...this.range(1, left),\n '...',\n ...this.range(right, this.length),\n ]\n }\n },\n },\n\n watch: {\n value () {\n this.init()\n },\n },\n\n beforeMount () {\n this.init()\n },\n\n methods: {\n init () {\n this.selected = null\n\n this.onResize()\n this.$nextTick(this.onResize)\n // TODO: Change this (f75dee3a, cbdf7caa)\n setTimeout(() => (this.selected = this.value), 100)\n },\n onResize () {\n const width = this.$el && this.$el.parentElement\n ? this.$el.parentElement.clientWidth\n : window.innerWidth\n\n this.maxButtons = Math.floor((width - 96) / 42)\n },\n next (e: Event) {\n e.preventDefault()\n this.$emit('input', this.value + 1)\n this.$emit('next')\n },\n previous (e: Event) {\n e.preventDefault()\n this.$emit('input', this.value - 1)\n this.$emit('previous')\n },\n range (from: number, to: number) {\n const range = []\n\n from = from > 0 ? from : 1\n\n for (let i = from; i <= to; i++) {\n range.push(i)\n }\n\n return range\n },\n genIcon (h: CreateElement, icon: string, disabled: boolean, fn: EventListener, label: String): VNode {\n return h('li', [\n h('button',\n this.setBackgroundColor(this.navigationColor, {\n staticClass: 'v-pagination__navigation',\n class: {\n 'v-pagination__navigation--disabled': disabled,\n },\n attrs: {\n disabled,\n type: 'button',\n 'aria-label': label,\n },\n on: disabled ? {} : { click: fn },\n }),\n [h(VIcon, { props: { color: this.navigationTextColor } }, [icon])]\n ),\n ])\n },\n genItem (h: CreateElement, i: string | number): VNode {\n const color: string | false = (i === this.value) && (this.color || 'primary')\n const isCurrentPage = i === this.value\n const ariaLabel = isCurrentPage ? this.currentPageAriaLabel : this.pageAriaLabel\n\n return h('button', this.setBackgroundColor(color, {\n staticClass: 'v-pagination__item',\n class: {\n 'v-pagination__item--active': i === this.value,\n },\n attrs: {\n type: 'button',\n 'aria-current': isCurrentPage,\n 'aria-label': this.$vuetify.lang.t(ariaLabel, i),\n },\n on: {\n click: () => this.$emit('input', i),\n },\n }), [i.toString()])\n },\n genItems (h: CreateElement): VNode[] {\n return this.items.map((i, index) => {\n return h('li', { key: index }, [\n isNaN(Number(i)) ? h('span', { class: 'v-pagination__more' }, [i.toString()]) : this.genItem(h, i),\n ])\n })\n },\n genList (h: CreateElement, children: VNodeChildrenArrayContents): VNode {\n return h('ul', {\n directives: [{\n modifiers: { quiet: true },\n name: 'resize',\n value: this.onResize,\n }],\n class: this.classes,\n }, children)\n },\n },\n\n render (h): VNode {\n const children = [\n this.genIcon(h,\n this.$vuetify.rtl ? this.nextIcon : this.prevIcon,\n this.value <= 1,\n this.previous,\n this.$vuetify.lang.t(this.previousAriaLabel)),\n this.genItems(h),\n this.genIcon(h,\n this.$vuetify.rtl ? this.prevIcon : this.nextIcon,\n this.value >= this.length,\n this.next,\n this.$vuetify.lang.t(this.nextAriaLabel)),\n ]\n\n return h('nav', {\n attrs: {\n role: 'navigation',\n 'aria-label': this.$vuetify.lang.t(this.wrapperAriaLabel),\n },\n }, [this.genList(h, children)])\n },\n})\n","// Helpers\nimport { wrapInArray, sortItems, deepEqual, groupItems, searchItems, fillArray } from '../../util/helpers'\nimport Vue, { VNode } from 'vue'\n\n// Types\nimport {\n DataOptions,\n DataPagination,\n DataScopeProps,\n DataSortFunction,\n DataGroupFunction,\n DataSearchFunction,\n ItemGroup,\n} from 'vuetify/types'\nimport { PropValidator } from 'vue/types/options'\n\nexport default Vue.extend({\n name: 'v-data',\n\n inheritAttrs: false,\n\n props: {\n items: {\n type: Array,\n default: () => [],\n } as PropValidator,\n options: {\n type: Object,\n default: () => ({}),\n } as PropValidator>,\n sortBy: {\n type: [String, Array],\n } as PropValidator,\n sortDesc: {\n type: [Boolean, Array],\n } as PropValidator,\n customSort: {\n type: Function,\n default: sortItems,\n } as PropValidator,\n mustSort: Boolean,\n multiSort: Boolean,\n page: {\n type: Number,\n default: 1,\n },\n itemsPerPage: {\n type: Number,\n default: 10,\n },\n groupBy: {\n type: [String, Array],\n default: () => [],\n } as PropValidator,\n groupDesc: {\n type: [Boolean, Array],\n default: () => [],\n } as PropValidator,\n customGroup: {\n type: Function,\n default: groupItems,\n } as PropValidator,\n locale: {\n type: String,\n default: 'en-US',\n },\n disableSort: Boolean,\n disablePagination: Boolean,\n disableFiltering: Boolean,\n search: String,\n customFilter: {\n type: Function,\n default: searchItems,\n } as PropValidator,\n serverItemsLength: {\n type: Number,\n default: -1,\n },\n },\n\n data () {\n let internalOptions: DataOptions = {\n page: this.page,\n itemsPerPage: this.itemsPerPage,\n sortBy: wrapInArray(this.sortBy),\n sortDesc: wrapInArray(this.sortDesc),\n groupBy: wrapInArray(this.groupBy),\n groupDesc: wrapInArray(this.groupDesc),\n mustSort: this.mustSort,\n multiSort: this.multiSort,\n }\n\n if (this.options) {\n internalOptions = Object.assign(internalOptions, this.options)\n }\n\n const { sortBy, sortDesc, groupBy, groupDesc } = internalOptions\n const sortDiff = sortBy.length - sortDesc.length\n const groupDiff = groupBy.length - groupDesc.length\n\n if (sortDiff > 0) {\n internalOptions.sortDesc.push(...fillArray(sortDiff, false))\n }\n\n if (groupDiff > 0) {\n internalOptions.groupDesc.push(...fillArray(groupDiff, false))\n }\n\n return {\n internalOptions,\n }\n },\n\n computed: {\n itemsLength (): number {\n return this.serverItemsLength >= 0 ? this.serverItemsLength : this.filteredItems.length\n },\n pageCount (): number {\n return this.internalOptions.itemsPerPage <= 0\n ? 1\n : Math.ceil(this.itemsLength / this.internalOptions.itemsPerPage)\n },\n pageStart (): number {\n if (this.internalOptions.itemsPerPage === -1 || !this.items.length) return 0\n\n return (this.internalOptions.page - 1) * this.internalOptions.itemsPerPage\n },\n pageStop (): number {\n if (this.internalOptions.itemsPerPage === -1) return this.itemsLength\n if (!this.items.length) return 0\n\n return Math.min(this.itemsLength, this.internalOptions.page * this.internalOptions.itemsPerPage)\n },\n isGrouped (): boolean {\n return !!this.internalOptions.groupBy.length\n },\n pagination (): DataPagination {\n return {\n page: this.internalOptions.page,\n itemsPerPage: this.internalOptions.itemsPerPage,\n pageStart: this.pageStart,\n pageStop: this.pageStop,\n pageCount: this.pageCount,\n itemsLength: this.itemsLength,\n }\n },\n filteredItems (): any[] {\n let items = this.items.slice()\n\n if (!this.disableFiltering && this.serverItemsLength <= 0) {\n items = this.customFilter(items, this.search)\n }\n\n return items\n },\n computedItems (): any[] {\n let items = this.filteredItems.slice()\n\n if ((!this.disableSort || this.internalOptions.groupBy.length) && this.serverItemsLength <= 0) {\n items = this.sortItems(items)\n }\n\n if (!this.disablePagination && this.serverItemsLength <= 0) {\n items = this.paginateItems(items)\n }\n\n return items\n },\n groupedItems (): ItemGroup[] | null {\n return this.isGrouped ? this.groupItems(this.computedItems) : null\n },\n scopedProps (): DataScopeProps {\n return {\n sort: this.sort,\n sortArray: this.sortArray,\n group: this.group,\n items: this.computedItems,\n options: this.internalOptions,\n updateOptions: this.updateOptions,\n pagination: this.pagination,\n groupedItems: this.groupedItems,\n originalItemsLength: this.items.length,\n }\n },\n computedOptions (): DataOptions {\n return { ...this.options } as DataOptions\n },\n },\n\n watch: {\n computedOptions: {\n handler (options: DataOptions, old: DataOptions) {\n if (deepEqual(options, old)) return\n\n this.updateOptions(options)\n },\n deep: true,\n immediate: true,\n },\n internalOptions: {\n handler (options: DataOptions, old: DataOptions) {\n if (deepEqual(options, old)) return\n this.$emit('update:options', options)\n },\n deep: true,\n immediate: true,\n },\n page (page: number) {\n this.updateOptions({ page })\n },\n 'internalOptions.page' (page: number) {\n this.$emit('update:page', page)\n },\n itemsPerPage (itemsPerPage: number) {\n this.updateOptions({ itemsPerPage })\n },\n 'internalOptions.itemsPerPage' (itemsPerPage: number) {\n this.$emit('update:items-per-page', itemsPerPage)\n },\n sortBy (sortBy: string | string[]) {\n this.updateOptions({ sortBy: wrapInArray(sortBy) })\n },\n 'internalOptions.sortBy' (sortBy: string[], old: string[]) {\n !deepEqual(sortBy, old) && this.$emit('update:sort-by', Array.isArray(this.sortBy) ? sortBy : sortBy[0])\n },\n sortDesc (sortDesc: boolean | boolean[]) {\n this.updateOptions({ sortDesc: wrapInArray(sortDesc) })\n },\n 'internalOptions.sortDesc' (sortDesc: boolean[], old: boolean[]) {\n !deepEqual(sortDesc, old) && this.$emit('update:sort-desc', Array.isArray(this.sortDesc) ? sortDesc : sortDesc[0])\n },\n groupBy (groupBy: string | string[]) {\n this.updateOptions({ groupBy: wrapInArray(groupBy) })\n },\n 'internalOptions.groupBy' (groupBy: string[], old: string[]) {\n !deepEqual(groupBy, old) && this.$emit('update:group-by', Array.isArray(this.groupBy) ? groupBy : groupBy[0])\n },\n groupDesc (groupDesc: boolean | boolean[]) {\n this.updateOptions({ groupDesc: wrapInArray(groupDesc) })\n },\n 'internalOptions.groupDesc' (groupDesc: boolean[], old: boolean[]) {\n !deepEqual(groupDesc, old) && this.$emit('update:group-desc', Array.isArray(this.groupDesc) ? groupDesc : groupDesc[0])\n },\n multiSort (multiSort: boolean) {\n this.updateOptions({ multiSort })\n },\n 'internalOptions.multiSort' (multiSort: boolean) {\n this.$emit('update:multi-sort', multiSort)\n },\n mustSort (mustSort: boolean) {\n this.updateOptions({ mustSort })\n },\n 'internalOptions.mustSort' (mustSort: boolean) {\n this.$emit('update:must-sort', mustSort)\n },\n pageCount: {\n handler (pageCount: number) {\n this.$emit('page-count', pageCount)\n },\n immediate: true,\n },\n computedItems: {\n handler (computedItems: any[]) {\n this.$emit('current-items', computedItems)\n },\n immediate: true,\n },\n pagination: {\n handler (pagination: DataPagination, old: DataPagination) {\n if (deepEqual(pagination, old)) return\n this.$emit('pagination', this.pagination)\n },\n immediate: true,\n },\n },\n\n methods: {\n toggle (key: string, oldBy: string[], oldDesc: boolean[], page: number, mustSort: boolean, multiSort: boolean) {\n let by = oldBy.slice()\n let desc = oldDesc.slice()\n const byIndex = by.findIndex((k: string) => k === key)\n\n if (byIndex < 0) {\n if (!multiSort) {\n by = []\n desc = []\n }\n\n by.push(key)\n desc.push(false)\n } else if (byIndex >= 0 && !desc[byIndex]) {\n desc[byIndex] = true\n } else if (!mustSort) {\n by.splice(byIndex, 1)\n desc.splice(byIndex, 1)\n } else {\n desc[byIndex] = false\n }\n\n // Reset page to 1 if sortBy or sortDesc have changed\n if (!deepEqual(by, oldBy) || !deepEqual(desc, oldDesc)) {\n page = 1\n }\n\n return { by, desc, page }\n },\n group (key: string): void {\n const { by: groupBy, desc: groupDesc, page } = this.toggle(\n key,\n this.internalOptions.groupBy,\n this.internalOptions.groupDesc,\n this.internalOptions.page,\n true,\n false\n )\n this.updateOptions({ groupBy, groupDesc, page })\n },\n sort (key: string | string[]): void {\n if (Array.isArray(key)) return this.sortArray(key)\n\n const { by: sortBy, desc: sortDesc, page } = this.toggle(\n key,\n this.internalOptions.sortBy,\n this.internalOptions.sortDesc,\n this.internalOptions.page,\n this.internalOptions.mustSort,\n this.internalOptions.multiSort\n )\n this.updateOptions({ sortBy, sortDesc, page })\n },\n sortArray (sortBy: string[]) {\n const sortDesc = sortBy.map(s => {\n const i = this.internalOptions.sortBy.findIndex((k: string) => k === s)\n return i > -1 ? this.internalOptions.sortDesc[i] : false\n })\n\n this.updateOptions({ sortBy, sortDesc })\n },\n updateOptions (options: any) {\n this.internalOptions = {\n ...this.internalOptions,\n ...options,\n page: this.serverItemsLength < 0\n ? Math.max(1, Math.min(options.page || this.internalOptions.page, this.pageCount))\n : options.page || this.internalOptions.page,\n }\n },\n sortItems (items: any[]): any[] {\n let sortBy: string[] = []\n let sortDesc: boolean[] = []\n\n if (!this.disableSort) {\n sortBy = this.internalOptions.sortBy\n sortDesc = this.internalOptions.sortDesc\n }\n\n if (this.internalOptions.groupBy.length) {\n sortBy = [...this.internalOptions.groupBy, ...sortBy]\n sortDesc = [...this.internalOptions.groupDesc, ...sortDesc]\n }\n\n return this.customSort(items, sortBy, sortDesc, this.locale)\n },\n groupItems (items: any[]): ItemGroup[] {\n return this.customGroup(items, this.internalOptions.groupBy, this.internalOptions.groupDesc)\n },\n paginateItems (items: any[]): any[] {\n // Make sure we don't try to display non-existant page if items suddenly change\n // TODO: Could possibly move this to pageStart/pageStop?\n if (this.serverItemsLength === -1 && items.length <= this.pageStart) {\n this.internalOptions.page = Math.max(1, Math.ceil(items.length / this.internalOptions.itemsPerPage)) || 1 // Prevent NaN\n }\n\n return items.slice(this.pageStart, this.pageStop)\n },\n },\n\n render (): VNode {\n return this.$scopedSlots.default && this.$scopedSlots.default(this.scopedProps) as any\n },\n})\n","import './VDataFooter.sass'\n\n// Components\nimport VSelect from '../VSelect/VSelect'\nimport VIcon from '../VIcon'\nimport VBtn from '../VBtn'\n\n// Types\nimport Vue, { VNode, VNodeChildrenArrayContents, PropType } from 'vue'\nimport { DataPagination, DataOptions, DataItemsPerPageOption } from 'vuetify/types'\nimport { PropValidator } from 'vue/types/options'\nimport { getSlot } from '../../util/helpers'\n\nexport default Vue.extend({\n name: 'v-data-footer',\n\n props: {\n options: {\n type: Object as PropType,\n required: true,\n },\n pagination: {\n type: Object as PropType,\n required: true,\n },\n itemsPerPageOptions: {\n type: Array,\n default: () => ([5, 10, 15, -1]),\n } as PropValidator,\n prevIcon: {\n type: String,\n default: '$prev',\n },\n nextIcon: {\n type: String,\n default: '$next',\n },\n firstIcon: {\n type: String,\n default: '$first',\n },\n lastIcon: {\n type: String,\n default: '$last',\n },\n itemsPerPageText: {\n type: String,\n default: '$vuetify.dataFooter.itemsPerPageText',\n },\n itemsPerPageAllText: {\n type: String,\n default: '$vuetify.dataFooter.itemsPerPageAll',\n },\n showFirstLastPage: Boolean,\n showCurrentPage: Boolean,\n disablePagination: Boolean,\n disableItemsPerPage: Boolean,\n pageText: {\n type: String,\n default: '$vuetify.dataFooter.pageText',\n },\n },\n\n computed: {\n disableNextPageIcon (): boolean {\n return this.options.itemsPerPage <= 0 ||\n this.options.page * this.options.itemsPerPage >= this.pagination.itemsLength ||\n this.pagination.pageStop < 0\n },\n computedDataItemsPerPageOptions (): any[] {\n return this.itemsPerPageOptions.map(option => {\n if (typeof option === 'object') return option\n else return this.genDataItemsPerPageOption(option)\n })\n },\n },\n\n methods: {\n updateOptions (obj: object) {\n this.$emit('update:options', Object.assign({}, this.options, obj))\n },\n onFirstPage () {\n this.updateOptions({ page: 1 })\n },\n onPreviousPage () {\n this.updateOptions({ page: this.options.page - 1 })\n },\n onNextPage () {\n this.updateOptions({ page: this.options.page + 1 })\n },\n onLastPage () {\n this.updateOptions({ page: this.pagination.pageCount })\n },\n onChangeItemsPerPage (itemsPerPage: number) {\n this.updateOptions({ itemsPerPage, page: 1 })\n },\n genDataItemsPerPageOption (option: number) {\n return {\n text: option === -1 ? this.$vuetify.lang.t(this.itemsPerPageAllText) : String(option),\n value: option,\n }\n },\n genItemsPerPageSelect () {\n let value = this.options.itemsPerPage\n const computedIPPO = this.computedDataItemsPerPageOptions\n\n if (computedIPPO.length <= 1) return null\n\n if (!computedIPPO.find(ippo => ippo.value === value)) value = computedIPPO[0]\n\n return this.$createElement('div', {\n staticClass: 'v-data-footer__select',\n }, [\n this.$vuetify.lang.t(this.itemsPerPageText),\n this.$createElement(VSelect, {\n attrs: {\n 'aria-label': this.$vuetify.lang.t(this.itemsPerPageText),\n },\n props: {\n disabled: this.disableItemsPerPage,\n items: computedIPPO,\n value,\n hideDetails: true,\n auto: true,\n minWidth: '75px',\n },\n on: {\n input: this.onChangeItemsPerPage,\n },\n }),\n ])\n },\n genPaginationInfo () {\n let children: VNodeChildrenArrayContents = ['–']\n const itemsLength: number = this.pagination.itemsLength\n let pageStart: number = this.pagination.pageStart\n let pageStop: number = this.pagination.pageStop\n\n if (this.pagination.itemsLength && this.pagination.itemsPerPage) {\n pageStart = this.pagination.pageStart + 1\n pageStop = itemsLength < this.pagination.pageStop || this.pagination.pageStop < 0\n ? itemsLength\n : this.pagination.pageStop\n\n children = this.$scopedSlots['page-text']\n ? [this.$scopedSlots['page-text']!({ pageStart, pageStop, itemsLength })]\n : [this.$vuetify.lang.t(this.pageText, pageStart, pageStop, itemsLength)]\n } else if (this.$scopedSlots['page-text']) {\n children = [this.$scopedSlots['page-text']!({ pageStart, pageStop, itemsLength })]\n }\n\n return this.$createElement('div', {\n class: 'v-data-footer__pagination',\n }, children)\n },\n genIcon (click: Function, disabled: boolean, label: string, icon: string): VNode {\n return this.$createElement(VBtn, {\n props: {\n disabled: disabled || this.disablePagination,\n icon: true,\n text: true,\n // dark: this.dark, // TODO: add mixin\n // light: this.light // TODO: add mixin\n },\n on: {\n click,\n },\n attrs: {\n 'aria-label': label, // TODO: Localization\n },\n }, [this.$createElement(VIcon, icon)])\n },\n genIcons () {\n const before: VNodeChildrenArrayContents = []\n const after: VNodeChildrenArrayContents = []\n\n before.push(this.genIcon(\n this.onPreviousPage,\n this.options.page === 1,\n this.$vuetify.lang.t('$vuetify.dataFooter.prevPage'),\n this.$vuetify.rtl ? this.nextIcon : this.prevIcon\n ))\n\n after.push(this.genIcon(\n this.onNextPage,\n this.disableNextPageIcon,\n this.$vuetify.lang.t('$vuetify.dataFooter.nextPage'),\n this.$vuetify.rtl ? this.prevIcon : this.nextIcon\n ))\n\n if (this.showFirstLastPage) {\n before.unshift(this.genIcon(\n this.onFirstPage,\n this.options.page === 1,\n this.$vuetify.lang.t('$vuetify.dataFooter.firstPage'),\n this.$vuetify.rtl ? this.lastIcon : this.firstIcon\n ))\n\n after.push(this.genIcon(\n this.onLastPage,\n this.options.page >= this.pagination.pageCount || this.options.itemsPerPage === -1,\n this.$vuetify.lang.t('$vuetify.dataFooter.lastPage'),\n this.$vuetify.rtl ? this.firstIcon : this.lastIcon\n ))\n }\n\n return [\n this.$createElement('div', {\n staticClass: 'v-data-footer__icons-before',\n }, before),\n this.showCurrentPage && this.$createElement('span', [this.options.page.toString()]),\n this.$createElement('div', {\n staticClass: 'v-data-footer__icons-after',\n }, after),\n ]\n },\n },\n\n render (): VNode {\n return this.$createElement('div', {\n staticClass: 'v-data-footer',\n }, [\n getSlot(this, 'prepend'),\n this.genItemsPerPageSelect(),\n this.genPaginationInfo(),\n this.genIcons(),\n ])\n },\n})\n","// Components\nimport { VData } from '../VData'\nimport VDataFooter from './VDataFooter'\n\n// Mixins\nimport Mobile from '../../mixins/mobile'\nimport Themeable from '../../mixins/themeable'\n\n// Helpers\nimport mixins from '../../util/mixins'\nimport { deepEqual, getObjectValueByPath, getPrefixedScopedSlots, getSlot, camelizeObjectKeys, keyCodes } from '../../util/helpers'\nimport { breaking, removed } from '../../util/console'\n\n// Types\nimport { VNode, VNodeChildren } from 'vue'\nimport { PropValidator } from 'vue/types/options'\nimport { DataItemProps, DataScopeProps } from 'vuetify/types'\n\n/* @vue/component */\nexport default mixins(\n Mobile,\n Themeable\n).extend({\n name: 'v-data-iterator',\n\n props: {\n ...VData.options.props, // TODO: filter out props not used\n itemKey: {\n type: String,\n default: 'id',\n },\n value: {\n type: Array,\n default: () => [],\n } as PropValidator,\n singleSelect: Boolean,\n expanded: {\n type: Array,\n default: () => [],\n } as PropValidator,\n mobileBreakpoint: {\n ...Mobile.options.props.mobileBreakpoint,\n default: 600,\n },\n singleExpand: Boolean,\n loading: [Boolean, String],\n noResultsText: {\n type: String,\n default: '$vuetify.dataIterator.noResultsText',\n },\n noDataText: {\n type: String,\n default: '$vuetify.noDataText',\n },\n loadingText: {\n type: String,\n default: '$vuetify.dataIterator.loadingText',\n },\n hideDefaultFooter: Boolean,\n footerProps: Object,\n selectableKey: {\n type: String,\n default: 'isSelectable',\n },\n },\n\n data: () => ({\n selection: {} as Record,\n expansion: {} as Record,\n internalCurrentItems: [] as any[],\n shiftKeyDown: false,\n lastEntry: -1,\n }),\n\n computed: {\n everyItem (): boolean {\n return !!this.selectableItems.length && this.selectableItems.every((i: any) => this.isSelected(i))\n },\n someItems (): boolean {\n return this.selectableItems.some((i: any) => this.isSelected(i))\n },\n sanitizedFooterProps (): Record {\n return camelizeObjectKeys(this.footerProps)\n },\n selectableItems (): any[] {\n return this.internalCurrentItems.filter(item => this.isSelectable(item))\n },\n },\n\n watch: {\n value: {\n handler (value: any[]) {\n this.selection = value.reduce((selection, item) => {\n selection[getObjectValueByPath(item, this.itemKey)] = item\n return selection\n }, {})\n },\n immediate: true,\n },\n selection (value: Record, old: Record) {\n if (deepEqual(Object.keys(value), Object.keys(old))) return\n\n this.$emit('input', Object.values(value))\n },\n expanded: {\n handler (value: any[]) {\n this.expansion = value.reduce((expansion, item) => {\n expansion[getObjectValueByPath(item, this.itemKey)] = true\n return expansion\n }, {})\n },\n immediate: true,\n },\n expansion (value: Record, old: Record) {\n if (deepEqual(value, old)) return\n const keys = Object.keys(value).filter(k => value[k])\n const expanded = !keys.length ? [] : this.items.filter(i => keys.includes(String(getObjectValueByPath(i, this.itemKey))))\n this.$emit('update:expanded', expanded)\n },\n },\n\n created () {\n const breakingProps = [\n ['disable-initial-sort', 'sort-by'],\n ['filter', 'custom-filter'],\n ['pagination', 'options'],\n ['total-items', 'server-items-length'],\n ['hide-actions', 'hide-default-footer'],\n ['rows-per-page-items', 'footer-props.items-per-page-options'],\n ['rows-per-page-text', 'footer-props.items-per-page-text'],\n ['prev-icon', 'footer-props.prev-icon'],\n ['next-icon', 'footer-props.next-icon'],\n ]\n\n /* istanbul ignore next */\n breakingProps.forEach(([original, replacement]) => {\n if (this.$attrs.hasOwnProperty(original)) breaking(original, replacement, this)\n })\n\n const removedProps = [\n 'expand',\n 'content-class',\n 'content-props',\n 'content-tag',\n ]\n\n /* istanbul ignore next */\n removedProps.forEach(prop => {\n if (this.$attrs.hasOwnProperty(prop)) removed(prop)\n })\n },\n\n mounted () {\n window.addEventListener('keydown', this.onKeyDown)\n window.addEventListener('keyup', this.onKeyUp)\n },\n beforeDestroy () {\n window.removeEventListener('keydown', this.onKeyDown)\n window.removeEventListener('keyup', this.onKeyUp)\n },\n\n methods: {\n onKeyDown (e: KeyboardEvent): void {\n this.shiftKeyDown = e.keyCode === keyCodes.shift || e.shiftKey\n },\n onKeyUp (e: KeyboardEvent): void {\n if (e.keyCode === keyCodes.shift || !e.shiftKey) {\n this.shiftKeyDown = false\n }\n },\n toggleSelectAll (value: boolean): void {\n const selection = Object.assign({}, this.selection)\n\n for (let i = 0; i < this.selectableItems.length; i++) {\n const item = this.selectableItems[i]\n\n if (!this.isSelectable(item)) continue\n\n const key = getObjectValueByPath(item, this.itemKey)\n if (value) selection[key] = item\n else delete selection[key]\n }\n\n this.selection = selection\n this.$emit('toggle-select-all', { items: this.internalCurrentItems, value })\n },\n isSelectable (item: any): boolean {\n return getObjectValueByPath(item, this.selectableKey) !== false\n },\n isSelected (item: any): boolean {\n return !!this.selection[getObjectValueByPath(item, this.itemKey)] || false\n },\n select (item: any, value = true, emit = true): void {\n if (!this.isSelectable(item)) return\n\n const selection = this.singleSelect ? {} : Object.assign({}, this.selection)\n const key = getObjectValueByPath(item, this.itemKey)\n\n if (value) selection[key] = item\n else delete selection[key]\n\n const index = this.selectableItems.findIndex(x => getObjectValueByPath(x, this.itemKey) === key)\n if (this.lastEntry === -1) this.lastEntry = index\n else if (this.shiftKeyDown && !this.singleSelect && emit) {\n const lastEntryKey = getObjectValueByPath(this.selectableItems[this.lastEntry], this.itemKey)\n const lastEntryKeySelected = Object.keys(this.selection).includes(String(lastEntryKey))\n this.multipleSelect(lastEntryKeySelected, emit, selection, index)\n }\n this.lastEntry = index\n\n if (this.singleSelect && emit) {\n const keys = Object.keys(this.selection)\n const old = keys.length && getObjectValueByPath(this.selection[keys[0]], this.itemKey)\n old && old !== key && this.$emit('item-selected', { item: this.selection[old], value: false })\n }\n this.selection = selection\n emit && this.$emit('item-selected', { item, value })\n },\n multipleSelect (value = true, emit = true, selection: any, index: number): void {\n const start = index < this.lastEntry ? index : this.lastEntry\n const end = index < this.lastEntry ? this.lastEntry : index\n for (let i = start; i <= end; i++) {\n const currentItem = this.selectableItems[i]\n const key = getObjectValueByPath(currentItem, this.itemKey)\n if (value) selection[key] = currentItem\n else delete selection[key]\n emit && this.$emit('item-selected', { currentItem, value })\n }\n },\n isExpanded (item: any): boolean {\n return this.expansion[getObjectValueByPath(item, this.itemKey)] || false\n },\n expand (item: any, value = true): void {\n const expansion = this.singleExpand ? {} : Object.assign({}, this.expansion)\n const key = getObjectValueByPath(item, this.itemKey)\n\n if (value) expansion[key] = true\n else delete expansion[key]\n\n this.expansion = expansion\n this.$emit('item-expanded', { item, value })\n },\n createItemProps (item: any, index: number): DataItemProps {\n return {\n item,\n index,\n select: (v: boolean) => this.select(item, v),\n isSelected: this.isSelected(item),\n expand: (v: boolean) => this.expand(item, v),\n isExpanded: this.isExpanded(item),\n isMobile: this.isMobile,\n }\n },\n genEmptyWrapper (content: VNodeChildren) {\n return this.$createElement('div', content)\n },\n genEmpty (originalItemsLength: number, filteredItemsLength: number) {\n if (originalItemsLength === 0 && this.loading) {\n const loading = getSlot(this, 'loading') || this.$vuetify.lang.t(this.loadingText)\n return this.genEmptyWrapper(loading)\n } else if (originalItemsLength === 0) {\n const noData = getSlot(this, 'noData') || this.$vuetify.lang.t(this.noDataText)\n return this.genEmptyWrapper(noData)\n } else if (filteredItemsLength === 0) {\n const noResults = getSlot(this, 'noResults') || this.$vuetify.lang.t(this.noResultsText)\n return this.genEmptyWrapper(noResults)\n }\n\n return null\n },\n genItems (props: DataScopeProps) {\n const empty = this.genEmpty(props.originalItemsLength, props.pagination.itemsLength)\n if (empty) return [empty]\n\n if (this.$scopedSlots.default) {\n return this.$scopedSlots.default({\n ...props,\n isSelected: this.isSelected,\n select: this.select,\n isExpanded: this.isExpanded,\n isMobile: this.isMobile,\n expand: this.expand,\n })\n }\n\n if (this.$scopedSlots.item) {\n return props.items.map((item: any, index) => this.$scopedSlots.item!(this.createItemProps(\n item,\n index\n )))\n }\n\n return []\n },\n genFooter (props: DataScopeProps) {\n if (this.hideDefaultFooter) return null\n\n const data = {\n props: {\n ...this.sanitizedFooterProps,\n options: props.options,\n pagination: props.pagination,\n },\n on: {\n 'update:options': (value: any) => props.updateOptions(value),\n },\n }\n\n const scopedSlots = getPrefixedScopedSlots('footer.', this.$scopedSlots)\n\n return this.$createElement(VDataFooter, {\n scopedSlots,\n ...data,\n })\n },\n genDefaultScopedSlot (props: any) {\n const outerProps = {\n ...props,\n someItems: this.someItems,\n everyItem: this.everyItem,\n toggleSelectAll: this.toggleSelectAll,\n }\n\n return this.$createElement('div', {\n staticClass: 'v-data-iterator',\n }, [\n getSlot(this, 'header', outerProps, true),\n this.genItems(props),\n this.genFooter(props),\n getSlot(this, 'footer', outerProps, true),\n ])\n },\n },\n\n render (): VNode {\n return this.$createElement(VData, {\n props: this.$props,\n on: {\n 'update:options': (v: any, old: any) => !deepEqual(v, old) && this.$emit('update:options', v),\n 'update:page': (v: any) => this.$emit('update:page', v),\n 'update:items-per-page': (v: any) => this.$emit('update:items-per-page', v),\n 'update:sort-by': (v: any) => this.$emit('update:sort-by', v),\n 'update:sort-desc': (v: any) => this.$emit('update:sort-desc', v),\n 'update:group-by': (v: any) => this.$emit('update:group-by', v),\n 'update:group-desc': (v: any) => this.$emit('update:group-desc', v),\n pagination: (v: any, old: any) => !deepEqual(v, old) && this.$emit('pagination', v),\n 'current-items': (v: any[]) => {\n this.internalCurrentItems = v\n this.$emit('current-items', v)\n },\n 'page-count': (v: number) => this.$emit('page-count', v),\n },\n scopedSlots: {\n default: this.genDefaultScopedSlot,\n },\n })\n },\n})\n","import { VDataTable } from '../'\nimport VIcon from '../../VIcon'\nimport VSimpleCheckbox from '../../VCheckbox/VSimpleCheckbox'\nimport ripple from '../../../directives/ripple'\n\nimport Vue from 'vue'\nimport { PropValidator } from 'vue/types/options'\nimport mixins from '../../../util/mixins'\nimport { DataOptions, DataTableHeader } from 'vuetify/types'\n\ntype VDataTableInstance = InstanceType\n\ninterface options extends Vue {\n dataTable: VDataTableInstance\n}\n\nexport default mixins().extend({\n // https://github.com/vuejs/vue/issues/6872\n directives: {\n ripple,\n },\n\n props: {\n headers: {\n type: Array,\n default: () => ([]),\n } as PropValidator,\n options: {\n type: Object,\n default: () => ({\n page: 1,\n itemsPerPage: 10,\n sortBy: [],\n sortDesc: [],\n groupBy: [],\n groupDesc: [],\n multiSort: false,\n mustSort: false,\n }),\n } as PropValidator,\n checkboxColor: String,\n sortIcon: {\n type: String,\n default: '$sort',\n },\n everyItem: Boolean,\n someItems: Boolean,\n showGroupBy: Boolean,\n singleSelect: Boolean,\n disableSort: Boolean,\n },\n\n methods: {\n genSelectAll () {\n const data = {\n props: {\n value: this.everyItem,\n indeterminate: !this.everyItem && this.someItems,\n color: this.checkboxColor ?? '',\n },\n on: {\n input: (v: boolean) => this.$emit('toggle-select-all', v),\n },\n }\n\n if (this.$scopedSlots['data-table-select']) {\n return this.$scopedSlots['data-table-select']!(data)\n }\n\n return this.$createElement(VSimpleCheckbox, {\n staticClass: 'v-data-table__checkbox',\n ...data,\n })\n },\n genSortIcon () {\n return this.$createElement(VIcon, {\n staticClass: 'v-data-table-header__icon',\n props: {\n size: 18,\n },\n }, [this.sortIcon])\n },\n },\n})\n","import { VNode, VNodeChildrenArrayContents } from 'vue'\nimport mixins from '../../util/mixins'\nimport VSelect from '../VSelect/VSelect'\nimport VChip from '../VChip'\nimport header from './mixins/header'\nimport { wrapInArray } from '../../util/helpers'\n\nexport default mixins(header).extend({\n name: 'v-data-table-header-mobile',\n\n props: {\n sortByText: {\n type: String,\n default: '$vuetify.dataTable.sortBy',\n },\n },\n\n methods: {\n genSortChip (props: any) {\n const children: VNodeChildrenArrayContents = [props.item.text]\n\n const sortIndex = this.options.sortBy.findIndex(k => k === props.item.value)\n const beingSorted = sortIndex >= 0\n const isDesc = this.options.sortDesc[sortIndex]\n\n children.push(this.$createElement('div', {\n staticClass: 'v-chip__close',\n class: {\n sortable: true,\n active: beingSorted,\n asc: beingSorted && !isDesc,\n desc: beingSorted && isDesc,\n },\n }, [this.genSortIcon()]))\n\n return this.$createElement(VChip, {\n staticClass: 'sortable',\n on: {\n click: (e: MouseEvent) => {\n e.stopPropagation()\n this.$emit('sort', props.item.value)\n },\n },\n }, children)\n },\n genSortSelect (items: any[]) {\n return this.$createElement(VSelect, {\n props: {\n label: this.$vuetify.lang.t(this.sortByText),\n items,\n hideDetails: true,\n multiple: this.options.multiSort,\n value: this.options.multiSort ? this.options.sortBy : this.options.sortBy[0],\n menuProps: { closeOnContentClick: true },\n },\n on: {\n change: (v: string | string[]) => this.$emit('sort', v),\n },\n scopedSlots: {\n selection: props => this.genSortChip(props),\n },\n })\n },\n },\n\n render (h): VNode {\n const children: VNodeChildrenArrayContents = []\n\n const header = this.headers.find(h => h.value === 'data-table-select')\n if (header && !this.singleSelect) {\n children.push(this.$createElement('div', {\n class: [\n 'v-data-table-header-mobile__select',\n ...wrapInArray(header.class),\n ],\n attrs: {\n width: header.width,\n },\n }, [this.genSelectAll()]))\n }\n\n const sortHeaders = this.headers\n .filter(h => h.sortable !== false && h.value !== 'data-table-select')\n .map(h => ({\n text: h.text,\n value: h.value,\n }))\n\n if (!this.disableSort && sortHeaders.length) {\n children.push(this.genSortSelect(sortHeaders))\n }\n\n const th = children.length\n ? h('th', [h('div', { staticClass: 'v-data-table-header-mobile__wrapper' }, children)])\n : undefined\n\n const tr = h('tr', [th])\n\n return h('thead', {\n staticClass: 'v-data-table-header v-data-table-header-mobile',\n }, [tr])\n },\n})\n","// Helpers\nimport { VNode, VNodeData } from 'vue'\nimport mixins from '../../util/mixins'\nimport header from './mixins/header'\nimport { wrapInArray, convertToUnit } from '../../util/helpers'\nimport { DataTableHeader } from 'vuetify/types'\n\nexport default mixins(header).extend({\n name: 'v-data-table-header-desktop',\n\n methods: {\n genGroupByToggle (header: DataTableHeader) {\n return this.$createElement('span', {\n on: {\n click: (e: MouseEvent) => {\n e.stopPropagation()\n this.$emit('group', header.value)\n },\n },\n }, ['group'])\n },\n getAria (beingSorted: boolean, isDesc: boolean) {\n const $t = (key: string) => this.$vuetify.lang.t(`$vuetify.dataTable.ariaLabel.${key}`)\n\n let ariaSort = 'none'\n let ariaLabel = [\n $t('sortNone'),\n $t('activateAscending'),\n ]\n\n if (!beingSorted) {\n return { ariaSort, ariaLabel: ariaLabel.join(' ') }\n }\n\n if (isDesc) {\n ariaSort = 'descending'\n ariaLabel = [\n $t('sortDescending'),\n $t(this.options.mustSort ? 'activateAscending' : 'activateNone'),\n ]\n } else {\n ariaSort = 'ascending'\n ariaLabel = [\n $t('sortAscending'),\n $t('activateDescending'),\n ]\n }\n\n return { ariaSort, ariaLabel: ariaLabel.join(' ') }\n },\n genHeader (header: DataTableHeader) {\n const data: Required> = {\n attrs: {\n role: 'columnheader',\n scope: 'col',\n 'aria-label': header.text || '',\n },\n style: {\n width: convertToUnit(header.width),\n minWidth: convertToUnit(header.width),\n },\n class: [\n `text-${header.align || 'start'}`,\n ...wrapInArray(header.class),\n header.divider && 'v-data-table__divider',\n ],\n on: {},\n }\n const children = []\n\n if (header.value === 'data-table-select' && !this.singleSelect) {\n return this.$createElement('th', data, [this.genSelectAll()])\n }\n\n children.push(\n this.$scopedSlots.hasOwnProperty(header.value)\n ? this.$scopedSlots[header.value]!({ header })\n : this.$createElement('span', [header.text])\n )\n\n if (!this.disableSort && (header.sortable || !header.hasOwnProperty('sortable'))) {\n data.on.click = () => this.$emit('sort', header.value)\n\n const sortIndex = this.options.sortBy.findIndex(k => k === header.value)\n const beingSorted = sortIndex >= 0\n const isDesc = this.options.sortDesc[sortIndex]\n\n data.class.push('sortable')\n\n const { ariaLabel, ariaSort } = this.getAria(beingSorted, isDesc)\n\n data.attrs['aria-label'] += `${header.text ? ': ' : ''}${ariaLabel}`\n data.attrs['aria-sort'] = ariaSort\n\n if (beingSorted) {\n data.class.push('active')\n data.class.push(isDesc ? 'desc' : 'asc')\n }\n\n if (header.align === 'end') children.unshift(this.genSortIcon())\n else children.push(this.genSortIcon())\n\n if (this.options.multiSort && beingSorted) {\n children.push(this.$createElement('span', { class: 'v-data-table-header__sort-badge' }, [String(sortIndex + 1)]))\n }\n }\n\n if (this.showGroupBy && header.groupable !== false) children.push(this.genGroupByToggle(header))\n\n return this.$createElement('th', data, children)\n },\n },\n\n render (): VNode {\n return this.$createElement('thead', {\n staticClass: 'v-data-table-header',\n }, [\n this.$createElement('tr', this.headers.map(header => this.genHeader(header))),\n ])\n },\n})\n","import { VNodeData } from 'vue'\n\n/**\n * Removes duplicate `@input` listeners when\n * using v-model with functional components\n *\n * @see https://github.com/vuetifyjs/vuetify/issues/4460\n */\nexport default function dedupeModelListeners (data: VNodeData): void {\n if (data.model && data.on && data.on.input) {\n if (Array.isArray(data.on.input)) {\n const i = data.on.input.indexOf(data.model.callback)\n if (i > -1) data.on.input.splice(i, 1)\n } else {\n delete data.on.input\n }\n }\n}\n","import { CreateElement, VNode } from 'vue'\n\nexport default function rebuildFunctionalSlots (slots: { [key: string]: VNode[] | undefined }, h: CreateElement) {\n const children: VNode[] = []\n\n for (const slot in slots) {\n if (slots.hasOwnProperty(slot)) {\n children.push(h('template', { slot }, slots[slot]))\n }\n }\n\n return children\n}\n","// Styles\nimport './VDataTableHeader.sass'\n\n// Components\nimport VDataTableHeaderMobile from './VDataTableHeaderMobile'\nimport VDataTableHeaderDesktop from './VDataTableHeaderDesktop'\n\n// Mixins\nimport header from './mixins/header'\n\n// Utilities\nimport dedupeModelListeners from '../../util/dedupeModelListeners'\nimport mergeData from '../../util/mergeData'\nimport rebuildSlots from '../../util/rebuildFunctionalSlots'\n\n// Types\nimport Vue from 'vue'\n\n/* @vue/component */\nexport default Vue.extend({\n name: 'v-data-table-header',\n\n functional: true,\n\n props: {\n ...header.options.props,\n mobile: Boolean,\n },\n\n render (h, { props, data, slots }) {\n dedupeModelListeners(data)\n const children = rebuildSlots(slots(), h)\n\n data = mergeData(data, { props })\n\n if (props.mobile) {\n return h(VDataTableHeaderMobile, data, children)\n } else {\n return h(VDataTableHeaderDesktop, data, children)\n }\n },\n})\n","// Types\nimport Vue, { VNode, PropType } from 'vue'\nimport { DataTableHeader } from 'vuetify/types'\n\n// Utils\nimport { getObjectValueByPath, wrapInArray } from '../../util/helpers'\n\nfunction needsTd (slot: VNode[] | undefined) {\n return slot!.length !== 1 ||\n !['td', 'th'].includes(slot![0]?.tag!)\n}\n\nexport default Vue.extend({\n name: 'row',\n\n functional: true,\n\n props: {\n headers: Array as PropType,\n index: Number,\n item: Object,\n rtl: Boolean,\n },\n\n render (h, { props, slots, data }): VNode {\n const computedSlots = slots()\n\n const columns = props.headers.map((header: DataTableHeader) => {\n const children = []\n const value = getObjectValueByPath(props.item, header.value)\n\n const slotName = header.value\n const scopedSlot = data.scopedSlots && data.scopedSlots.hasOwnProperty(slotName) && data.scopedSlots[slotName]\n const regularSlot = computedSlots.hasOwnProperty(slotName) && computedSlots[slotName]\n\n if (scopedSlot) {\n children.push(...wrapInArray(scopedSlot({\n item: props.item,\n isMobile: false,\n header,\n index: props.index,\n value,\n })))\n } else if (regularSlot) {\n children.push(...wrapInArray(regularSlot))\n } else {\n children.push(value == null ? value : String(value))\n }\n\n const textAlign = `text-${header.align || 'start'}`\n\n return needsTd(children)\n ? h('td', {\n class: [\n textAlign,\n header.cellClass,\n {\n 'v-data-table__divider': header.divider,\n },\n ],\n }, children)\n : children\n })\n\n return h('tr', data, columns)\n },\n})\n","import Vue, { VNode } from 'vue'\n\nexport default Vue.extend({\n name: 'row-group',\n\n functional: true,\n\n props: {\n value: {\n type: Boolean,\n default: true,\n },\n headerClass: {\n type: String,\n default: 'v-row-group__header',\n },\n contentClass: String,\n summaryClass: {\n type: String,\n default: 'v-row-group__summary',\n },\n },\n\n render (h, { slots, props }): VNode {\n const computedSlots = slots()\n const children = []\n\n if (computedSlots['column.header']) {\n children.push(h('tr', {\n staticClass: props.headerClass,\n }, computedSlots['column.header']))\n } else if (computedSlots['row.header']) {\n children.push(...computedSlots['row.header'])\n }\n\n if (computedSlots['row.content'] && props.value) children.push(...computedSlots['row.content'])\n\n if (computedSlots['column.summary']) {\n children.push(h('tr', {\n staticClass: props.summaryClass,\n }, computedSlots['column.summary']))\n } else if (computedSlots['row.summary']) {\n children.push(...computedSlots['row.summary'])\n }\n\n return children as any\n },\n})\n","import './VSimpleTable.sass'\n\nimport { convertToUnit, getSlot } from '../../util/helpers'\nimport Themeable from '../../mixins/themeable'\nimport mixins from '../../util/mixins'\nimport { VNode } from 'vue'\n\nexport default mixins(Themeable).extend({\n name: 'v-simple-table',\n\n props: {\n dense: Boolean,\n fixedHeader: Boolean,\n height: [Number, String],\n },\n\n computed: {\n classes (): Record {\n return {\n 'v-data-table--dense': this.dense,\n 'v-data-table--fixed-height': !!this.height && !this.fixedHeader,\n 'v-data-table--fixed-header': this.fixedHeader,\n 'v-data-table--has-top': !!this.$slots.top,\n 'v-data-table--has-bottom': !!this.$slots.bottom,\n ...this.themeClasses,\n }\n },\n },\n\n methods: {\n genWrapper () {\n return this.$slots.wrapper || this.$createElement('div', {\n staticClass: 'v-data-table__wrapper',\n style: {\n height: convertToUnit(this.height),\n },\n }, [\n this.$createElement('table', getSlot(this)),\n ])\n },\n },\n\n render (h): VNode {\n return h('div', {\n staticClass: 'v-data-table',\n class: this.classes,\n }, [\n getSlot(this, 'top'),\n this.genWrapper(),\n getSlot(this, 'bottom'),\n ])\n },\n})\n","import Vue, { VNode, PropType } from 'vue'\nimport { getObjectValueByPath } from '../../util/helpers'\nimport { DataTableHeader } from 'vuetify/types'\n\nexport default Vue.extend({\n name: 'row',\n\n functional: true,\n\n props: {\n headers: Array as PropType,\n hideDefaultHeader: Boolean,\n index: Number,\n item: Object,\n rtl: Boolean,\n },\n\n render (h, { props, slots, data }): VNode {\n const computedSlots = slots()\n\n const columns: VNode[] = props.headers.map((header: DataTableHeader) => {\n const classes = {\n 'v-data-table__mobile-row': true,\n }\n\n const children = []\n const value = getObjectValueByPath(props.item, header.value)\n\n const slotName = header.value\n const scopedSlot = data.scopedSlots && data.scopedSlots.hasOwnProperty(slotName) && data.scopedSlots[slotName]\n const regularSlot = computedSlots.hasOwnProperty(slotName) && computedSlots[slotName]\n\n if (scopedSlot) {\n children.push(scopedSlot({\n item: props.item,\n isMobile: true,\n header,\n index: props.index,\n value,\n }))\n } else if (regularSlot) {\n children.push(regularSlot)\n } else {\n children.push(value == null ? value : String(value))\n }\n\n const mobileRowChildren = [\n h('div', {\n staticClass: 'v-data-table__mobile-row__cell',\n }, children),\n ]\n\n if (header.value !== 'dataTableSelect' && !props.hideDefaultHeader) {\n mobileRowChildren.unshift(\n h('div', {\n staticClass: 'v-data-table__mobile-row__header',\n }, [header.text])\n )\n }\n\n return h('td', { class: classes }, mobileRowChildren)\n })\n\n return h('tr', { ...data, staticClass: 'v-data-table__mobile-table-row' }, columns)\n },\n})\n","import Vue from 'vue'\n\nexport type MouseHandler = (e: MouseEvent | TouchEvent) => any\n\nexport type MouseEvents = {\n [event: string]: {\n event: string\n passive?: boolean\n capture?: boolean\n once?: boolean\n stop?: boolean\n prevent?: boolean\n button?: number\n result?: any\n }\n}\n\nexport type MouseEventsMap = {\n [event: string]: MouseHandler | MouseHandler[]\n}\n\nexport default Vue.extend({\n name: 'mouse',\n\n methods: {\n getDefaultMouseEventHandlers (suffix: string, getData: MouseHandler, eventFirst = false): MouseEventsMap {\n const listeners = Object.keys(this.$listeners)\n .filter(key => key.endsWith(suffix))\n .reduce((acc, key) => {\n acc[key] = { event: key.slice(0, -suffix.length) }\n return acc\n }, {} as MouseEvents)\n\n return this.getMouseEventHandlers({\n ...listeners,\n ['contextmenu' + suffix]: { event: 'contextmenu', prevent: true, result: false },\n }, getData, eventFirst)\n },\n getMouseEventHandlers (events: MouseEvents, getData: MouseHandler, eventFirst = false): MouseEventsMap {\n const on: MouseEventsMap = {}\n\n for (const event in events) {\n const eventOptions = events[event]\n\n if (!this.$listeners[event]) continue\n\n // TODO somehow pull in modifiers\n\n const prefix = eventOptions.passive ? '&' : ((eventOptions.once ? '~' : '') + (eventOptions.capture ? '!' : ''))\n const key = prefix + eventOptions.event\n\n const handler: MouseHandler = e => {\n const mouseEvent: MouseEvent = e as MouseEvent\n if (eventOptions.button === undefined || (mouseEvent.buttons > 0 && mouseEvent.button === eventOptions.button)) {\n if (eventOptions.prevent) {\n e.preventDefault()\n }\n if (eventOptions.stop) {\n e.stopPropagation()\n }\n\n // Due to TouchEvent target always returns the element that is first placed\n // Even if touch point has since moved outside the interactive area of that element\n // Ref: https://developer.mozilla.org/en-US/docs/Web/API/Touch/target\n // This block of code aims to make sure touchEvent is always dispatched from the element that is being pointed at\n if (e && 'touches' in e) {\n const classSeparator = ' '\n\n const eventTargetClasses = (e.currentTarget as HTMLElement)?.className.split(classSeparator)\n const currentTargets = document.elementsFromPoint(e.changedTouches[0].clientX, e.changedTouches[0].clientY)\n\n // Get \"the same kind\" current hovering target by checking\n // If element has the same class of initial touch start element (which has touch event listener registered)\n const currentTarget = currentTargets.find(t => t.className.split(classSeparator).some(c => eventTargetClasses.includes(c)))\n\n if (currentTarget &&\n !(e.target as HTMLElement)?.isSameNode(currentTarget)\n ) {\n currentTarget.dispatchEvent(new TouchEvent(e.type, {\n changedTouches: e.changedTouches as unknown as Touch[],\n targetTouches: e.targetTouches as unknown as Touch[],\n touches: e.touches as unknown as Touch[],\n }))\n return\n }\n }\n\n // TODO: VCalendar emits the calendar event as the first argument,\n // but it really should be the native event instead so modifiers can be used\n if (eventFirst) {\n this.$emit(event, e, getData(e))\n } else {\n this.$emit(event, getData(e), e)\n }\n }\n\n return eventOptions.result\n }\n\n if (key in on) {\n /* istanbul ignore next */\n if (Array.isArray(on[key])) {\n (on[key] as MouseHandler[]).push(handler)\n } else {\n on[key] = [on[key], handler] as MouseHandler[]\n }\n } else {\n on[key] = handler\n }\n }\n\n return on\n },\n },\n})\n","import './VDataTable.sass'\n\n// Types\nimport { VNode, VNodeChildrenArrayContents, VNodeChildren } from 'vue'\nimport { PropValidator } from 'vue/types/options'\nimport {\n DataTableHeader,\n DataTableFilterFunction,\n DataScopeProps,\n DataOptions,\n DataPagination,\n DataTableCompareFunction,\n DataItemsPerPageOption,\n ItemGroup,\n RowClassFunction,\n RowStyleFunction,\n DataTableItemProps,\n DataTableFilterMode,\n} from 'vuetify/types'\n\n// Components\nimport { VData } from '../VData'\nimport { VDataFooter, VDataIterator } from '../VDataIterator'\nimport VBtn from '../VBtn'\nimport VDataTableHeader from './VDataTableHeader'\n// import VVirtualTable from './VVirtualTable'\nimport VIcon from '../VIcon'\nimport Row from './Row'\nimport RowGroup from './RowGroup'\nimport VSimpleCheckbox from '../VCheckbox/VSimpleCheckbox'\nimport VSimpleTable from './VSimpleTable'\nimport MobileRow from './MobileRow'\n\n// Mixins\nimport Loadable from '../../mixins/loadable'\nimport Mouse from '../../mixins/mouse'\n\n// Directives\nimport ripple from '../../directives/ripple'\n\n// Helpers\nimport mixins from '../../util/mixins'\nimport { deepEqual, getObjectValueByPath, getPrefixedScopedSlots, getSlot, defaultFilter, camelizeObjectKeys, getPropertyFromItem } from '../../util/helpers'\nimport { breaking } from '../../util/console'\nimport { mergeClasses, mergeStyles } from '../../util/mergeData'\n\nfunction filterFn (item: any, search: string | null, filter: DataTableFilterFunction) {\n return (header: DataTableHeader) => {\n const value = getObjectValueByPath(item, header.value)\n return header.filter ? header.filter(value, search, item) : filter(value, search, item)\n }\n}\n\nfunction searchTableItems (\n items: any[],\n search: string | null,\n headersWithCustomFilters: DataTableHeader[],\n headersWithoutCustomFilters: DataTableHeader[],\n customFilter: DataTableFilterFunction,\n filterMode: DataTableFilterMode,\n) {\n search = typeof search === 'string' ? search.trim() : null\n\n if (filterMode === 'union') {\n // If the `search` property is empty and there are no custom filters in use, there is nothing to do.\n if (!(search && headersWithoutCustomFilters.length) && !headersWithCustomFilters.length) return items\n\n return items.filter(item => {\n // Headers with custom filters are evaluated whether or not a search term has been provided.\n if (headersWithCustomFilters.length && headersWithCustomFilters.every(filterFn(item, search, defaultFilter))) {\n return true\n }\n\n // Otherwise, the `search` property is used to filter columns without a custom filter.\n return (search && headersWithoutCustomFilters.some(filterFn(item, search, customFilter)))\n })\n } else if (filterMode === 'intersection') {\n return items.filter(item => {\n // Headers with custom filters are evaluated whether or not a search term has been provided.\n // We need to match every filter to be included in the results.\n const matchesColumnFilters = headersWithCustomFilters.every(filterFn(item, search, defaultFilter))\n\n // Headers without custom filters are only filtered by the `search` property if it is defined.\n // We only need a single column to match the search term to be included in the results.\n const matchesSearchTerm = !search || headersWithoutCustomFilters.some(filterFn(item, search, customFilter))\n\n return matchesColumnFilters && matchesSearchTerm\n })\n } else {\n return items\n }\n}\n\n/* @vue/component */\nexport default mixins(\n VDataIterator,\n Loadable,\n Mouse,\n).extend({\n name: 'v-data-table',\n\n // https://github.com/vuejs/vue/issues/6872\n directives: {\n ripple,\n },\n\n props: {\n headers: {\n type: Array,\n default: () => [],\n } as PropValidator,\n showSelect: Boolean,\n checkboxColor: String,\n showExpand: Boolean,\n showGroupBy: Boolean,\n // TODO: Fix\n // virtualRows: Boolean,\n height: [Number, String],\n hideDefaultHeader: Boolean,\n caption: String,\n dense: Boolean,\n headerProps: Object,\n calculateWidths: Boolean,\n fixedHeader: Boolean,\n headersLength: Number,\n expandIcon: {\n type: String,\n default: '$expand',\n },\n customFilter: {\n type: Function,\n default: defaultFilter,\n } as PropValidator,\n filterMode: {\n type: String,\n default: 'intersection',\n } as PropValidator,\n itemClass: {\n type: [String, Function],\n default: () => '',\n } as PropValidator,\n itemStyle: {\n type: [String, Function],\n default: () => '',\n } as PropValidator,\n loaderHeight: {\n type: [Number, String],\n default: 4,\n },\n },\n\n data () {\n return {\n internalGroupBy: [] as string[],\n openCache: {} as { [key: string]: boolean },\n widths: [] as number[],\n }\n },\n\n computed: {\n computedHeaders (): DataTableHeader[] {\n if (!this.headers) return []\n const headers = this.headers.filter(h => h.value === undefined || !this.internalGroupBy.find(v => v === h.value))\n const defaultHeader = { text: '', sortable: false, width: '1px' }\n\n if (this.showSelect) {\n const index = headers.findIndex(h => h.value === 'data-table-select')\n if (index < 0) headers.unshift({ ...defaultHeader, value: 'data-table-select' })\n else headers.splice(index, 1, { ...defaultHeader, ...headers[index] })\n }\n\n if (this.showExpand) {\n const index = headers.findIndex(h => h.value === 'data-table-expand')\n if (index < 0) headers.unshift({ ...defaultHeader, value: 'data-table-expand' })\n else headers.splice(index, 1, { ...defaultHeader, ...headers[index] })\n }\n\n return headers\n },\n colspanAttrs (): object | undefined {\n return this.isMobile ? undefined : {\n colspan: this.headersLength || this.computedHeaders.length,\n }\n },\n columnSorters (): Record {\n return this.computedHeaders.reduce>((acc, header) => {\n if (header.sort) acc[header.value] = header.sort\n return acc\n }, {})\n },\n headersWithCustomFilters (): DataTableHeader[] {\n return this.headers.filter(header => header.filter && (!header.hasOwnProperty('filterable') || header.filterable === true))\n },\n headersWithoutCustomFilters (): DataTableHeader[] {\n return this.headers.filter(header => !header.filter && (!header.hasOwnProperty('filterable') || header.filterable === true))\n },\n sanitizedHeaderProps (): Record {\n return camelizeObjectKeys(this.headerProps)\n },\n computedItemsPerPage (): number {\n const itemsPerPage = this.options && this.options.itemsPerPage ? this.options.itemsPerPage : this.itemsPerPage\n const itemsPerPageOptions: DataItemsPerPageOption[] | undefined = this.sanitizedFooterProps.itemsPerPageOptions\n\n if (\n itemsPerPageOptions &&\n !itemsPerPageOptions.find(item => typeof item === 'number' ? item === itemsPerPage : item.value === itemsPerPage)\n ) {\n const firstOption = itemsPerPageOptions[0]\n return typeof firstOption === 'object' ? firstOption.value : firstOption\n }\n\n return itemsPerPage\n },\n groupByText (): string {\n return this.headers?.find(header => header.value === this.internalGroupBy?.[0])?.text ?? ''\n },\n },\n\n created () {\n const breakingProps = [\n ['sort-icon', 'header-props.sort-icon'],\n ['hide-headers', 'hide-default-header'],\n ['select-all', 'show-select'],\n ]\n\n /* istanbul ignore next */\n breakingProps.forEach(([original, replacement]) => {\n if (this.$attrs.hasOwnProperty(original)) breaking(original, replacement, this)\n })\n },\n\n mounted () {\n // if ((!this.sortBy || !this.sortBy.length) && (!this.options.sortBy || !this.options.sortBy.length)) {\n // const firstSortable = this.headers.find(h => !('sortable' in h) || !!h.sortable)\n // if (firstSortable) this.updateOptions({ sortBy: [firstSortable.value], sortDesc: [false] })\n // }\n\n if (this.calculateWidths) {\n window.addEventListener('resize', this.calcWidths)\n this.calcWidths()\n }\n },\n\n beforeDestroy () {\n if (this.calculateWidths) {\n window.removeEventListener('resize', this.calcWidths)\n }\n },\n\n methods: {\n calcWidths () {\n this.widths = Array.from(this.$el.querySelectorAll('th')).map(e => e.clientWidth)\n },\n customFilterWithColumns (items: any[], search: string) {\n return searchTableItems(\n items,\n search,\n this.headersWithCustomFilters,\n this.headersWithoutCustomFilters,\n this.customFilter,\n this.filterMode\n )\n },\n customSortWithHeaders (items: any[], sortBy: string[], sortDesc: boolean[], locale: string) {\n return this.customSort(items, sortBy, sortDesc, locale, this.columnSorters)\n },\n createItemProps (item: any, index: number): DataTableItemProps {\n const data = {\n ...VDataIterator.options.methods.createItemProps.call(this, item, index),\n headers: this.computedHeaders,\n }\n\n return {\n ...data,\n attrs: {\n class: {\n 'v-data-table__selected': data.isSelected,\n },\n },\n on: {\n ...this.getDefaultMouseEventHandlers(':row', () => data, true),\n // TODO: the first argument should be the event, and the second argument should be data,\n // but this is a breaking change so it's for v3\n click: (event: MouseEvent) => this.$emit('click:row', item, data, event),\n },\n }\n },\n genCaption (props: DataScopeProps) {\n if (this.caption) return [this.$createElement('caption', [this.caption])]\n\n return getSlot(this, 'caption', props, true)\n },\n genColgroup (props: DataScopeProps) {\n return this.$createElement('colgroup', this.computedHeaders.map(header => {\n return this.$createElement('col', {\n class: {\n divider: header.divider,\n },\n })\n }))\n },\n genLoading () {\n const th = this.$createElement('th', {\n staticClass: 'column',\n attrs: this.colspanAttrs,\n }, [this.genProgress()])\n\n const tr = this.$createElement('tr', {\n staticClass: 'v-data-table__progress',\n }, [th])\n\n return this.$createElement('thead', [tr])\n },\n genHeaders (props: DataScopeProps) {\n const data = {\n props: {\n ...this.sanitizedHeaderProps,\n headers: this.computedHeaders,\n options: props.options,\n mobile: this.isMobile,\n showGroupBy: this.showGroupBy,\n checkboxColor: this.checkboxColor,\n someItems: this.someItems,\n everyItem: this.everyItem,\n singleSelect: this.singleSelect,\n disableSort: this.disableSort,\n },\n on: {\n sort: props.sort,\n group: props.group,\n 'toggle-select-all': this.toggleSelectAll,\n },\n }\n\n // TODO: rename to 'head'? (thead, tbody, tfoot)\n const children: VNodeChildrenArrayContents = [getSlot(this, 'header', {\n ...data,\n isMobile: this.isMobile,\n })]\n\n if (!this.hideDefaultHeader) {\n const scopedSlots = getPrefixedScopedSlots('header.', this.$scopedSlots)\n children.push(this.$createElement(VDataTableHeader, {\n ...data,\n scopedSlots,\n }))\n }\n\n if (this.loading) children.push(this.genLoading())\n\n return children\n },\n genEmptyWrapper (content: VNodeChildrenArrayContents) {\n return this.$createElement('tr', {\n staticClass: 'v-data-table__empty-wrapper',\n }, [\n this.$createElement('td', {\n attrs: this.colspanAttrs,\n }, content),\n ])\n },\n genItems (items: any[], props: DataScopeProps) {\n const empty = this.genEmpty(props.originalItemsLength, props.pagination.itemsLength)\n if (empty) return [empty]\n\n return props.groupedItems\n ? this.genGroupedRows(props.groupedItems, props)\n : this.genRows(items, props)\n },\n genGroupedRows (groupedItems: ItemGroup[], props: DataScopeProps) {\n return groupedItems.map(group => {\n if (!this.openCache.hasOwnProperty(group.name)) this.$set(this.openCache, group.name, true)\n\n if (this.$scopedSlots.group) {\n return this.$scopedSlots.group({\n group: group.name,\n options: props.options,\n isMobile: this.isMobile,\n items: group.items,\n headers: this.computedHeaders,\n })\n } else {\n return this.genDefaultGroupedRow(group.name, group.items, props)\n }\n })\n },\n genDefaultGroupedRow (group: string, items: any[], props: DataScopeProps) {\n const isOpen = !!this.openCache[group]\n const children: VNodeChildren = [\n this.$createElement('template', { slot: 'row.content' }, this.genRows(items, props)),\n ]\n const toggleFn = () => this.$set(this.openCache, group, !this.openCache[group])\n const removeFn = () => props.updateOptions({ groupBy: [], groupDesc: [] })\n\n if (this.$scopedSlots['group.header']) {\n children.unshift(this.$createElement('template', { slot: 'column.header' }, [\n this.$scopedSlots['group.header']!({\n group,\n groupBy: props.options.groupBy,\n isMobile: this.isMobile,\n items,\n headers: this.computedHeaders,\n isOpen,\n toggle: toggleFn,\n remove: removeFn,\n }),\n ]))\n } else {\n const toggle = this.$createElement(VBtn, {\n staticClass: 'ma-0',\n props: {\n icon: true,\n small: true,\n },\n on: {\n click: toggleFn,\n },\n }, [this.$createElement(VIcon, [isOpen ? '$minus' : '$plus'])])\n\n const remove = this.$createElement(VBtn, {\n staticClass: 'ma-0',\n props: {\n icon: true,\n small: true,\n },\n on: {\n click: removeFn,\n },\n }, [this.$createElement(VIcon, ['$close'])])\n\n const column = this.$createElement('td', {\n staticClass: 'text-start',\n attrs: this.colspanAttrs,\n }, [toggle, `${this.groupByText}: ${group}`, remove])\n\n children.unshift(this.$createElement('template', { slot: 'column.header' }, [column]))\n }\n\n if (this.$scopedSlots['group.summary']) {\n children.push(this.$createElement('template', { slot: 'column.summary' }, [\n this.$scopedSlots['group.summary']!({\n group,\n groupBy: props.options.groupBy,\n isMobile: this.isMobile,\n items,\n headers: this.computedHeaders,\n isOpen,\n toggle: toggleFn,\n }),\n ]))\n }\n\n return this.$createElement(RowGroup, {\n key: group,\n props: {\n value: isOpen,\n },\n }, children)\n },\n genRows (items: any[], props: DataScopeProps) {\n return this.$scopedSlots.item ? this.genScopedRows(items, props) : this.genDefaultRows(items, props)\n },\n genScopedRows (items: any[], props: DataScopeProps) {\n const rows = []\n\n for (let i = 0; i < items.length; i++) {\n const item = items[i]\n rows.push(this.$scopedSlots.item!({\n ...this.createItemProps(item, i),\n isMobile: this.isMobile,\n }))\n\n if (this.isExpanded(item)) {\n rows.push(this.$scopedSlots['expanded-item']!({\n headers: this.computedHeaders,\n isMobile: this.isMobile,\n index: i,\n item,\n }))\n }\n }\n\n return rows\n },\n genDefaultRows (items: any[], props: DataScopeProps) {\n return this.$scopedSlots['expanded-item']\n ? items.map((item, index) => this.genDefaultExpandedRow(item, index))\n : items.map((item, index) => this.genDefaultSimpleRow(item, index))\n },\n genDefaultExpandedRow (item: any, index: number): VNode {\n const isExpanded = this.isExpanded(item)\n const classes = {\n 'v-data-table__expanded v-data-table__expanded__row': isExpanded,\n }\n const headerRow = this.genDefaultSimpleRow(item, index, classes)\n const expandedRow = this.$createElement('tr', {\n staticClass: 'v-data-table__expanded v-data-table__expanded__content',\n }, [this.$scopedSlots['expanded-item']!({\n headers: this.computedHeaders,\n isMobile: this.isMobile,\n item,\n })])\n\n return this.$createElement(RowGroup, {\n props: {\n value: isExpanded,\n },\n }, [\n this.$createElement('template', { slot: 'row.header' }, [headerRow]),\n this.$createElement('template', { slot: 'row.content' }, [expandedRow]),\n ])\n },\n genDefaultSimpleRow (item: any, index: number, classes: Record = {}): VNode {\n const scopedSlots = getPrefixedScopedSlots('item.', this.$scopedSlots)\n\n const data = this.createItemProps(item, index)\n\n if (this.showSelect) {\n const slot = scopedSlots['data-table-select']\n scopedSlots['data-table-select'] = slot ? () => slot({\n ...data,\n isMobile: this.isMobile,\n }) : () => this.$createElement(VSimpleCheckbox, {\n staticClass: 'v-data-table__checkbox',\n props: {\n value: data.isSelected,\n disabled: !this.isSelectable(item),\n color: this.checkboxColor ?? '',\n },\n on: {\n input: (val: boolean) => data.select(val),\n },\n })\n }\n\n if (this.showExpand) {\n const slot = scopedSlots['data-table-expand']\n scopedSlots['data-table-expand'] = slot ? () => slot(data) : () => this.$createElement(VIcon, {\n staticClass: 'v-data-table__expand-icon',\n class: {\n 'v-data-table__expand-icon--active': data.isExpanded,\n },\n on: {\n click: (e: MouseEvent) => {\n e.stopPropagation()\n data.expand(!data.isExpanded)\n },\n },\n }, [this.expandIcon])\n }\n\n return this.$createElement(this.isMobile ? MobileRow : Row, {\n key: getObjectValueByPath(item, this.itemKey),\n class: mergeClasses(\n { ...classes, 'v-data-table__selected': data.isSelected },\n getPropertyFromItem(item, this.itemClass)\n ),\n style: mergeStyles({}, getPropertyFromItem(item, this.itemStyle)),\n props: {\n headers: this.computedHeaders,\n hideDefaultHeader: this.hideDefaultHeader,\n index,\n item,\n rtl: this.$vuetify.rtl,\n },\n scopedSlots,\n on: data.on,\n })\n },\n genBody (props: DataScopeProps): VNode | string | VNodeChildren {\n const data = {\n ...props,\n expand: this.expand,\n headers: this.computedHeaders,\n isExpanded: this.isExpanded,\n isMobile: this.isMobile,\n isSelected: this.isSelected,\n select: this.select,\n }\n\n if (this.$scopedSlots.body) {\n return this.$scopedSlots.body!(data)\n }\n\n return this.$createElement('tbody', [\n getSlot(this, 'body.prepend', data, true),\n this.genItems(props.items, props),\n getSlot(this, 'body.append', data, true),\n ])\n },\n genFoot (props: DataScopeProps): VNode[] | undefined {\n return this.$scopedSlots.foot?.(props)\n },\n genFooters (props: DataScopeProps) {\n const data = {\n props: {\n options: props.options,\n pagination: props.pagination,\n itemsPerPageText: '$vuetify.dataTable.itemsPerPageText',\n ...this.sanitizedFooterProps,\n },\n on: {\n 'update:options': (value: any) => props.updateOptions(value),\n },\n widths: this.widths,\n headers: this.computedHeaders,\n }\n\n const children: VNodeChildren = [\n getSlot(this, 'footer', data, true),\n ]\n\n if (!this.hideDefaultFooter) {\n children.push(this.$createElement(VDataFooter, {\n ...data,\n scopedSlots: getPrefixedScopedSlots('footer.', this.$scopedSlots),\n }))\n }\n\n return children\n },\n genDefaultScopedSlot (props: DataScopeProps): VNode {\n const simpleProps = {\n height: this.height,\n fixedHeader: this.fixedHeader,\n dense: this.dense,\n }\n\n // if (this.virtualRows) {\n // return this.$createElement(VVirtualTable, {\n // props: Object.assign(simpleProps, {\n // items: props.items,\n // height: this.height,\n // rowHeight: this.dense ? 24 : 48,\n // headerHeight: this.dense ? 32 : 48,\n // // TODO: expose rest of props from virtual table?\n // }),\n // scopedSlots: {\n // items: ({ items }) => this.genItems(items, props) as any,\n // },\n // }, [\n // this.proxySlot('body.before', [this.genCaption(props), this.genHeaders(props)]),\n // this.proxySlot('bottom', this.genFooters(props)),\n // ])\n // }\n\n return this.$createElement(VSimpleTable, {\n props: simpleProps,\n class: {\n 'v-data-table--mobile': this.isMobile,\n 'v-data-table--selectable': this.showSelect,\n },\n }, [\n this.proxySlot('top', getSlot(this, 'top', {\n ...props,\n isMobile: this.isMobile,\n }, true)),\n this.genCaption(props),\n this.genColgroup(props),\n this.genHeaders(props),\n this.genBody(props),\n this.genFoot(props),\n this.proxySlot('bottom', this.genFooters(props)),\n ])\n },\n proxySlot (slot: string, content: VNodeChildren) {\n return this.$createElement('template', { slot }, content)\n },\n },\n\n render (): VNode {\n return this.$createElement(VData, {\n props: {\n ...this.$props,\n customFilter: this.customFilterWithColumns,\n customSort: this.customSortWithHeaders,\n itemsPerPage: this.computedItemsPerPage,\n },\n on: {\n 'update:options': (v: DataOptions, old: DataOptions) => {\n this.internalGroupBy = v.groupBy || []\n !deepEqual(v, old) && this.$emit('update:options', v)\n },\n 'update:page': (v: number) => this.$emit('update:page', v),\n 'update:items-per-page': (v: number) => this.$emit('update:items-per-page', v),\n 'update:sort-by': (v: string | string[]) => this.$emit('update:sort-by', v),\n 'update:sort-desc': (v: boolean | boolean[]) => this.$emit('update:sort-desc', v),\n 'update:group-by': (v: string | string[]) => this.$emit('update:group-by', v),\n 'update:group-desc': (v: boolean | boolean[]) => this.$emit('update:group-desc', v),\n pagination: (v: DataPagination, old: DataPagination) => !deepEqual(v, old) && this.$emit('pagination', v),\n 'current-items': (v: any[]) => {\n this.internalCurrentItems = v\n this.$emit('current-items', v)\n },\n 'page-count': (v: number) => this.$emit('page-count', v),\n },\n scopedSlots: {\n default: this.genDefaultScopedSlot,\n },\n })\n },\n})\n","import VBtn from './VBtn'\n\nexport { VBtn }\nexport default VBtn\n","var $ = require('../internals/export');\n\n// `Number.MAX_SAFE_INTEGER` constant\n// https://tc39.es/ecma262/#sec-number.max_safe_integer\n$({ target: 'Number', stat: true }, {\n MAX_SAFE_INTEGER: 0x1FFFFFFFFFFFFF\n});\n"],"sourceRoot":""}