diff --git a/core/css/header.css b/core/css/header.css index dc4a7e7b0f22b..c5d32ad7a4b4a 100644 --- a/core/css/header.css +++ b/core/css/header.css @@ -2,4 +2,4 @@ * SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors * SPDX-FileCopyrightText: 2016 ownCloud, Inc. * SPDX-License-Identifier: AGPL-3.0-or-later - */#skip-actions{position:absolute;overflow:hidden;z-index:9999;top:-999px;inset-inline-start:3px;padding:11px;display:flex;flex-wrap:wrap;gap:11px}#skip-actions:focus-within{top:var(--header-height)}#header{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}#header:not(.header-guest){display:inline-flex;position:absolute;top:0;width:100%;z-index:2000;height:var(--header-height);box-sizing:border-box;justify-content:space-between}#header #nextcloud{padding:5px 0;padding-inline-start:86px;position:relative;height:calc(100% - var(--default-grid-baseline));box-sizing:border-box;opacity:1;align-items:center;display:flex;flex-wrap:wrap;overflow:hidden;margin:2px}#header #nextcloud:hover,#header #nextcloud:active{opacity:1}#header #nextcloud .logo{display:inline-flex;background-image:var(--image-logoheader, var(--image-logo, url("../img/logo/logo.svg")));background-repeat:no-repeat;background-size:contain;background-position:center;width:62px;position:absolute;inset-inline-start:12px;top:1px;bottom:1px;filter:var(--image-logoheader-custom, var(--background-image-invert-if-bright))}#header #nextcloud:focus-visible,#header .app-menu-entry a:focus-visible,#header .header-menu button:first-of-type:focus-visible{outline:none}#header #nextcloud:focus-visible::after,#header .app-menu-entry a:focus-visible::after,#header .header-menu button:first-of-type:focus-visible::after{content:" ";position:absolute;inset-block-end:2px;transform:translateX(-50%);width:12px;height:2px;border-radius:3px;background-color:var(--color-background-plain-text);inset-inline-start:50%;opacity:1}#header .header-start{display:inline-flex;align-items:center;flex:1 0;white-space:nowrap;min-width:0}#header .header-end{display:inline-flex;align-items:center;justify-content:flex-end;flex-shrink:1;margin-inline-end:calc(3*var(--default-grid-baseline))}#header .header-appname{color:var(--color-background-plain-text);font-size:16px;font-weight:bold;margin:0;padding:0;padding-inline-end:5px;overflow:hidden;text-overflow:ellipsis;flex:1 1 100%}#header .header-appname .header-info{display:flex;flex-direction:column;overflow:hidden}#header .header-appname .header-info .header-title{overflow:hidden;text-overflow:ellipsis}#header .header-appname .header-info .header-shared-by{color:var(--color-background-plain-text);position:relative;font-weight:300;font-size:var(--font-size-small);line-height:var(--font-size-small);overflow:hidden;text-overflow:ellipsis}/*# sourceMappingURL=header.css.map */ + */#skip-actions{position:absolute;overflow:hidden;z-index:9999;top:-999px;inset-inline-start:3px;padding:11px;display:flex;flex-wrap:wrap;gap:11px}#skip-actions:focus-within{top:var(--header-height)}#header{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}#header:not(.header-guest){display:inline-flex;position:absolute;top:0;width:100%;z-index:2000;height:var(--header-height);box-sizing:border-box;justify-content:space-between}#header #nextcloud{padding:5px 0;padding-inline-start:86px;position:relative;height:calc(100% - var(--default-grid-baseline));box-sizing:border-box;opacity:1;align-items:center;display:flex;flex-wrap:wrap;overflow:hidden;margin:2px}#header #nextcloud:hover,#header #nextcloud:active{opacity:1}#header #nextcloud .logo{display:inline-flex;background-image:var(--image-logoheader, var(--image-logo, url("../img/logo/logo.svg")));background-repeat:no-repeat;background-size:contain;background-position:center;width:62px;position:absolute;inset-inline-start:12px;top:1px;bottom:1px;filter:var(--image-logoheader-custom, var(--background-image-invert-if-bright))}#header #nextcloud:focus-visible,#header .header-menu button:first-of-type:focus-visible{outline:none}#header #nextcloud:focus-visible::after,#header .header-menu button:first-of-type:focus-visible::after{content:" ";position:absolute;inset-block-end:2px;transform:translateX(-50%);width:12px;height:2px;border-radius:3px;background-color:var(--color-background-plain-text);inset-inline-start:50%;opacity:1}#header .header-start{display:inline-flex;align-items:center;flex:1 0;white-space:nowrap;min-width:0}#header .header-end{display:inline-flex;align-items:center;justify-content:flex-end;flex-shrink:1;margin-inline-end:calc(3*var(--default-grid-baseline))}#header .header-appname{color:var(--color-background-plain-text);font-size:16px;font-weight:bold;margin:0;padding:0;padding-inline-end:5px;overflow:hidden;text-overflow:ellipsis;flex:1 1 100%}#header .header-appname .header-info{display:flex;flex-direction:column;overflow:hidden}#header .header-appname .header-info .header-title{overflow:hidden;text-overflow:ellipsis}#header .header-appname .header-info .header-shared-by{color:var(--color-background-plain-text);position:relative;font-weight:300;font-size:var(--font-size-small);line-height:var(--font-size-small);overflow:hidden;text-overflow:ellipsis}/*# sourceMappingURL=header.css.map */ diff --git a/core/css/header.css.map b/core/css/header.css.map index 43a638d44afa6..91ce158009a7e 100644 --- a/core/css/header.css.map +++ b/core/css/header.css.map @@ -1 +1 @@ -{"version":3,"sourceRoot":"","sources":["header.scss"],"names":[],"mappings":"AAAA;AAAA;AAAA;AAAA;AAAA,GAYA,cACC,kBACA,gBACA,aACA,WACA,uBACA,aACA,aACA,eACA,SAEA,2BACC,yBAKF,QAEC,yBACA,sBACA,qBACA,iBAGA,2BACC,oBACA,kBACA,MACA,WACA,aACA,4BACA,sBACA,8BAID,mBACC,cACA,0BACA,kBACA,iDACA,sBACA,UACA,mBACA,aACA,eACA,gBACA,WAEA,mDACC,UAID,yBACC,oBACA,yFACA,4BACA,wBACA,2BACA,WACA,kBACA,wBACA,QACA,WAEA,gFAMF,iIAGC,aAEA,sJACC,YACA,kBACA,oBACA,2BACA,WACA,WACA,kBACA,oDACA,uBACA,UAOF,sBACC,oBACA,mBACA,SACA,mBACA,YAKD,oBACC,oBACA,mBACA,yBACA,cAEA,uDAKD,wBACC,yCACA,eACA,iBACA,SACA,UACA,uBACA,gBACA,uBAEA,cAGA,qCACC,aACA,sBACA,gBAEA,mDACC,gBACA,uBAGD,uDACC,yCACA,kBACA,gBACA,iCACA,mCACA,gBACA","file":"header.css"} \ No newline at end of file +{"version":3,"sourceRoot":"","sources":["header.scss"],"names":[],"mappings":"AAAA;AAAA;AAAA;AAAA;AAAA,GAYA,cACC,kBACA,gBACA,aACA,WACA,uBACA,aACA,aACA,eACA,SAEA,2BACC,yBAKF,QAEC,yBACA,sBACA,qBACA,iBAGA,2BACC,oBACA,kBACA,MACA,WACA,aACA,4BACA,sBACA,8BAID,mBACC,cACA,0BACA,kBACA,iDACA,sBACA,UACA,mBACA,aACA,eACA,gBACA,WAEA,mDACC,UAID,yBACC,oBACA,yFACA,4BACA,wBACA,2BACA,WACA,kBACA,wBACA,QACA,WAEA,gFAMF,yFAEC,aAEA,uGACC,YACA,kBACA,oBACA,2BACA,WACA,WACA,kBACA,oDACA,uBACA,UAOF,sBACC,oBACA,mBACA,SACA,mBACA,YAKD,oBACC,oBACA,mBACA,yBACA,cAEA,uDAKD,wBACC,yCACA,eACA,iBACA,SACA,UACA,uBACA,gBACA,uBAEA,cAGA,qCACC,aACA,sBACA,gBAEA,mDACC,gBACA,uBAGD,uDACC,yCACA,kBACA,gBACA,iCACA,mCACA,gBACA","file":"header.css"} \ No newline at end of file diff --git a/core/css/header.scss b/core/css/header.scss index c320bb9175dd3..d307451292597 100644 --- a/core/css/header.scss +++ b/core/css/header.scss @@ -84,7 +84,6 @@ // focus visible styles // this adds a small line below all entries when visually focussed #nextcloud:focus-visible, - .app-menu-entry a:focus-visible, .header-menu button:first-of-type:focus-visible { outline: none; diff --git a/core/css/server.css b/core/css/server.css index d0cf7fda77282..faf05e373a915 100644 --- a/core/css/server.css +++ b/core/css/server.css @@ -22,7 +22,7 @@ * SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors * SPDX-FileCopyrightText: 2016 ownCloud, Inc. * SPDX-License-Identifier: AGPL-3.0-or-later - */#skip-actions{position:absolute;overflow:hidden;z-index:9999;top:-999px;inset-inline-start:3px;padding:11px;display:flex;flex-wrap:wrap;gap:11px}#skip-actions:focus-within{top:var(--header-height)}#header{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}#header:not(.header-guest){display:inline-flex;position:absolute;top:0;width:100%;z-index:2000;height:var(--header-height);box-sizing:border-box;justify-content:space-between}#header #nextcloud{padding:5px 0;padding-inline-start:86px;position:relative;height:calc(100% - var(--default-grid-baseline));box-sizing:border-box;opacity:1;align-items:center;display:flex;flex-wrap:wrap;overflow:hidden;margin:2px}#header #nextcloud:hover,#header #nextcloud:active{opacity:1}#header #nextcloud .logo{display:inline-flex;background-image:var(--image-logoheader, var(--image-logo, url("../img/logo/logo.svg")));background-repeat:no-repeat;background-size:contain;background-position:center;width:62px;position:absolute;inset-inline-start:12px;top:1px;bottom:1px;filter:var(--image-logoheader-custom, var(--background-image-invert-if-bright))}#header #nextcloud:focus-visible,#header .app-menu-entry a:focus-visible,#header .header-menu button:first-of-type:focus-visible{outline:none}#header #nextcloud:focus-visible::after,#header .app-menu-entry a:focus-visible::after,#header .header-menu button:first-of-type:focus-visible::after{content:" ";position:absolute;inset-block-end:2px;transform:translateX(-50%);width:12px;height:2px;border-radius:3px;background-color:var(--color-background-plain-text);inset-inline-start:50%;opacity:1}#header .header-start{display:inline-flex;align-items:center;flex:1 0;white-space:nowrap;min-width:0}#header .header-end{display:inline-flex;align-items:center;justify-content:flex-end;flex-shrink:1;margin-inline-end:calc(3*var(--default-grid-baseline))}#header .header-appname{color:var(--color-background-plain-text);font-size:16px;font-weight:bold;margin:0;padding:0;padding-inline-end:5px;overflow:hidden;text-overflow:ellipsis;flex:1 1 100%}#header .header-appname .header-info{display:flex;flex-direction:column;overflow:hidden}#header .header-appname .header-info .header-title{overflow:hidden;text-overflow:ellipsis}#header .header-appname .header-info .header-shared-by{color:var(--color-background-plain-text);position:relative;font-weight:300;font-size:var(--font-size-small);line-height:var(--font-size-small);overflow:hidden;text-overflow:ellipsis}/*! + */#skip-actions{position:absolute;overflow:hidden;z-index:9999;top:-999px;inset-inline-start:3px;padding:11px;display:flex;flex-wrap:wrap;gap:11px}#skip-actions:focus-within{top:var(--header-height)}#header{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}#header:not(.header-guest){display:inline-flex;position:absolute;top:0;width:100%;z-index:2000;height:var(--header-height);box-sizing:border-box;justify-content:space-between}#header #nextcloud{padding:5px 0;padding-inline-start:86px;position:relative;height:calc(100% - var(--default-grid-baseline));box-sizing:border-box;opacity:1;align-items:center;display:flex;flex-wrap:wrap;overflow:hidden;margin:2px}#header #nextcloud:hover,#header #nextcloud:active{opacity:1}#header #nextcloud .logo{display:inline-flex;background-image:var(--image-logoheader, var(--image-logo, url("../img/logo/logo.svg")));background-repeat:no-repeat;background-size:contain;background-position:center;width:62px;position:absolute;inset-inline-start:12px;top:1px;bottom:1px;filter:var(--image-logoheader-custom, var(--background-image-invert-if-bright))}#header #nextcloud:focus-visible,#header .header-menu button:first-of-type:focus-visible{outline:none}#header #nextcloud:focus-visible::after,#header .header-menu button:first-of-type:focus-visible::after{content:" ";position:absolute;inset-block-end:2px;transform:translateX(-50%);width:12px;height:2px;border-radius:3px;background-color:var(--color-background-plain-text);inset-inline-start:50%;opacity:1}#header .header-start{display:inline-flex;align-items:center;flex:1 0;white-space:nowrap;min-width:0}#header .header-end{display:inline-flex;align-items:center;justify-content:flex-end;flex-shrink:1;margin-inline-end:calc(3*var(--default-grid-baseline))}#header .header-appname{color:var(--color-background-plain-text);font-size:16px;font-weight:bold;margin:0;padding:0;padding-inline-end:5px;overflow:hidden;text-overflow:ellipsis;flex:1 1 100%}#header .header-appname .header-info{display:flex;flex-direction:column;overflow:hidden}#header .header-appname .header-info .header-title{overflow:hidden;text-overflow:ellipsis}#header .header-appname .header-info .header-shared-by{color:var(--color-background-plain-text);position:relative;font-weight:300;font-size:var(--font-size-small);line-height:var(--font-size-small);overflow:hidden;text-overflow:ellipsis}/*! * SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors * SPDX-FileCopyrightText: 2016 ownCloud, Inc. * SPDX-License-Identifier: AGPL-3.0-or-later diff --git a/core/css/server.css.map b/core/css/server.css.map index 89743c25d103e..f46768193ac5c 100644 --- a/core/css/server.css.map +++ b/core/css/server.css.map @@ -1 +1 @@ -{"version":3,"sourceRoot":"","sources":["server.scss","icons.scss","variables.scss","styles.scss","inputs.scss","functions.scss","header.scss","apps.scss","global.scss","fixes.scss","mobile.scss","tooltip.scss","public.scss","../../node_modules/@nextcloud/dialogs/dist/style.css","../../node_modules/@nextcloud/password-confirmation/dist/style.css"],"names":[],"mappings":"AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GCyHQ,8BCvHR;AAAA;AAAA;AAAA,GCOA,MACC,mCACA,uCAGD,yQACC,SACA,UACA,SACA,oBACA,eACA,oBACA,wBACA,eACA,uCAGD,6CACC,aAID,0CACC,wDACA,aAGD,UACC,YAEA,8BAGD,6DACC,cAGD,MACC,yBACA,iBACA,mBAGD,cACC,iBACA,mBAGD,YACC,sBAGD,EACC,SACA,6BACA,qBACA,eACA,IACC,eAIF,WACC,aACA,0BAGD,MACC,eACA,QACC,eAIF,0BACC,eAGD,KACC,mCAGD,GACC,gBAGD,KACC,mBAEA,mCACA,uCACA,6BACA,6BAGD,mBACC,kBAGD,qBACC,kBACA,sBACA,qBACA,2BACA,2DACA,uBAGD,iBACC,qBACA,aACA,oCAGD,eACC,YACA,aAGD,cACC,eACA,MACA,SACA,qBACA,YACA,WACA,aACA,kBACA,gDACA,wCACA,iBACA,eACA,kBACC,cACA,kBACA,UACA,QACA,gBAED,gBACC,wCACA,sDACA,4CACC,6CAOH,oBACC,WACA,YAGD,2BACC,+BAGD,gCACC,+BAGD,0BACC,kCACA,yCACA,+BACA,4BAMD,YACC,mDACA,kCAMD,kBACC,sBAKD,4BAEC,oCACA,kBACA,gBACA,WACA,sDACC,gBAED,sEACC,gBAED,kCACC,mBAED,oHAEC,qBACA,YACA,WACA,mBACA,gcAEC,WAOH,sBACC,WASD,oCACC,kBACA,yBACA,sBACA,qBACA,iBAID,kBAEC,kBACA,qBACA,SAEA,YAGD,8CAGC,WAGD,8BACC,sBACA,oBACA,wBACA,wBAGD,2EACC,WAGD,oGACC,kDACA,UACA,qBAGD,mDACC,6BACA,YACA,WACA,yCACA,4BACA,2BACA,WAOA,qEACC,UAED,qEACC,UAIF,wEACC,aAGD,2CACC,wBAGD,yBACC,kBACA,qBACA,sBAGD,qBACC,cACA,mBACA,iBACA,uBACA,aAKD,4CACC,eACA,YACA,mCACA,6BACA,qDAIA,2BACC,4BAKD,wBACC,sBACA,4BACA,+BACC,+CACA,qBACA,kBAGF,0BACC,qBACA,iBAIF,YACC,YACA,sCACA,oBACC,sBAIF,eACC,gDAUD,mBACC,kBACA,cACA,2BACC,kBACA,cAIF,UACC,gBAGD,8CACC,UAIA,WACC,WACA,YAGD,8CAEC,UAGD,oGAGC,WAIF,mBACC,WACA,kBACA,QAEA,kDACC,UAKD,kDACC,UAIF,eACC,WAEA,0CACC,UAKD,uGACC,8CAIF,KACC,mFAGD,OACC,gBACA,YACA,eACA,qBACA,UACC,qBAOD,qBACC,WACA,aAED,wBACC,cACA,gDACA,WACA,aAED,2BACC,WACA,YACA,6BACC,WAGF,wBACC,wCACA,kBACA,mBACA,gBACA,uBACA,0CACA,kCACA,6DACC,0CAGF,sBACC,UACA,WAKF,YACC,oBACA,YAGD,SACC,oBACA,kDACA,4BACA,iCACA,YACA,0BACA,cACA,QACA,uBACA,mBACC,QACA,kBACA,qBACC,WAIA,wFACC,cAIF,gCACC,SACA,sBACA,mCACC,iBACA,gBACA,kBACA,uBACA,+DACC,+EAGF,+CACC,aAIH,gBACC,aACA,uBACC,QAGF,yBAEC,kBACA,aACA,WACA,uBACA,mBACA,gBACA,cAEA,gBAEA,8FAGC,oBAGF,yBACC,UACA,WAGD,oBACC,iBACA,uBAEA,2BACC,uBAGF,+DACC,UAEA,0JAEC,WAOH,QACC,UACA,yCACA,sCACA,qCACA,oCACA,iCACA,oBACC,UAOD,+CACC,SACA,kBAED,mDACC,gBAKF,cACC,mBAMD,mBACC,aACA,QACA,SACA,UC5mBD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAWA,kFACC,6BAMD,iHAUC,YACA,yCACA,sBAYA,oFACC,eACA,oCACA,sCACA,QA/BiB,GAmCnB,wBACC,aAID,kHASC,iBACA,8CACA,6BACA,0CACA,mCACA,aACA,mCACA,YACA,8TACC,WACA,sBAOC,49CAIC,oCACA,aAED,wfACC,aACA,8CACA,6BAGF,sVACC,6DACA,oDAGF,wKACC,8CACA,6BACA,eACA,WAED,wKACC,gBAED,gMACC,mDAGD,kKACC,8CACA,0CACA,wCACA,eAGA,omBAEC,+CAIA,s2BAGC,oDACA,gDAED,gnBAEC,4CAED,sSACC,6CAGF,wNAEC,8CACA,6CACA,eAKH,2BACC,WACA,sBACA,gBACA,eACA,gDACA,aACA,mCAEA,8CACA,oCACA,eACA,WAKA,4KACC,6BACA,0BACA,qBAEA,qCAED,0EAIC,YACA,WAID,kBACC,WACA,cACA,gBACA,WACA,eAED,mBACC,SACA,QAED,iBACC,cAKF,6GASC,2FACA,mCACA,WACA,yCACA,eACA,sBACA,8CACA,oDACA,YAEA,kSAEC,0DAGD,mKACC,eAIF,sLAaC,WACA,sBACA,eACA,mCACA,8CACA,6BACA,iDACA,YACA,aACA,yCACA,uBACA,eACA,kyBACC,8CACA,kDAED,0QACC,YAIF,mCACC,aACA,YAID,OACC,iDACA,gBACA,8CACA,mCAGD,qBACC,qCAGD,qBACC,oCASA,2DACC,eAIA,sFACC,eAMH,sGAQC,iBACA,2CAGA,gMACC,SAGD,oIACC,+CACA,kDACA,yCACA,kKACC,qDACA,+CAaD,4MAEC,qBACA,2BACA,WASF,kGACC,qCACA,mDACA,mFACA,iBACA,4BAEA,yDACA,UACA,qCACA,oCACA,gBACA,eACA,oBACA,6HACC,eC3TF,+CDmUE,yOACC,uCAID,4qBAGC,qDACA,8CACA,6vBACC,uDAQH,+VACC,qDACA,mDAEA,UAOH,uBAEC,eAGD,2BAEC,mBASA,4GAEC,kBACA,4BACA,SACA,UACA,WACA,gBACA,oIACC,iBAED,4WAEC,eAED,gKACC,WACA,qBACA,OAvBmB,KAwBnB,MAxBmB,KAyBnB,sBACA,kBACA,aACA,sBACA,+CAED,oeAEC,0CAED,4LACC,oBACA,qCACA,kBACA,mBAED,4bAIC,8DACA,8CACA,0CAED,oMACC,+CACA,0DAED,oOACC,+CAID,gJACC,qBACA,yBAED,oMACC,cA/DmB,KAmEpB,mFACC,kBACA,OArEmB,KAsEnB,MAtEmB,KAuEnB,2BACA,2BAED,mGACC,yDAED,+GACC,0DAOD,gZAEC,2BAED,wUACC,aAzF0B,KA2F3B,4NACC,8DACA,+BACA,2BAED,gOACC,0CACA,2CAED,gQACC,8DACA,2CACA,+BAID,8OAEC,0CACA,6BACA,+DAED,6HACC,gEAED,mHACC,WAMH,UACC,WACA,sBACA,qBACA,2BACC,wBACA,eACA,yCACC,iBACA,yBACA,sBACA,8CACA,oCACA,0CACA,oBACA,mBACA,gDACC,wBAIH,yBACC,UACA,4BACC,YACA,kBACA,kBACA,+BACA,eACA,oCACA,8BACC,mBACA,gBACA,uBACA,YACA,sBACA,uBACA,SACA,eACA,eACA,2BACA,yBACA,sBACA,qBACA,iBACA,oBACA,mBACA,0CACA,yBACA,sCACC,YACA,4CACA,4BACA,2BACA,eACA,gBACA,cACA,WACA,sBACA,kBAGF,sCACC,6BAED,qCACC,8CACA,6BACA,6CACC,mBAQL,mBACC,cACA,WACA,UACA,cACA,8CACA,mCACA,gBACA,WACA,gBAEC,2CACC,8BAED,gDACC,8BAGF,yCACC,yBAED,sCACC,mCACA,wCACA,iCAED,2CACC,mCACA,wCACA,iCAKF,iBACC,QAEC,0BAED,QAEC,yBAED,YAGC,0BAED,QAEC,0BAIF,OACC,qBACA,uBACA,mCAKD,cACC,kBACA,4BACA,aACA,UACA,WACA,gBAWD,cAJC,oCACA,mCAOD,wBARC,oCACA,mCAWD,4BAZC,oCACA,mCEjrBD;AAAA;AAAA;AAAA;AAAA,GAYA,cACC,kBACA,gBACA,aACA,WACA,uBACA,aACA,aACA,eACA,SAEA,2BACC,yBAKF,QAEC,yBACA,sBACA,qBACA,iBAGA,2BACC,oBACA,kBACA,MACA,WACA,aACA,4BACA,sBACA,8BAID,mBACC,cACA,0BACA,kBACA,iDACA,sBACA,UACA,mBACA,aACA,eACA,gBACA,WAEA,mDACC,UAID,yBACC,oBACA,yFACA,4BACA,wBACA,2BACA,WACA,kBACA,wBACA,QACA,WAEA,gFAMF,iIAGC,aAEA,sJACC,YACA,kBACA,oBACA,2BACA,WACA,WACA,kBACA,oDACA,uBACA,UAOF,sBACC,oBACA,mBACA,SACA,mBACA,YAKD,oBACC,oBACA,mBACA,yBACA,cAEA,uDAKD,wBACC,yCACA,eACA,iBACA,SACA,UACA,uBACA,gBACA,uBAEA,cAGA,qCACC,aACA,sBACA,gBAEA,mDACC,gBACA,uBAGD,uDACC,yCACA,kBACA,gBACA,iCACA,mCACA,gBACA,uBF9JJ;AAAA;AAAA;AAAA;AAAA,GHSA,iCACC,4BACA,2BACA,eACA,gBAGD,iBACC,kDAID,sGAMC,kBACA,0IACC,UACA,WACA,YACA,WACA,uBACA,kBACA,QACA,uBACA,mBACA,6CACA,qCACA,gCACA,4BACA,wBACA,4CACA,2CAEA,wCAEA,gYAGC,uCAKH,wDAEC,2CACA,4CAGD,yDAEC,YACA,WACA,qBAKA,yJACC,2CAED,iMACC,gDAED,yMACC,iDAED,iPACC,sDAIF,kBACC,KACC,uBAED,GACC,0BAIF,SACC,gCAGD,yKAQC,wDG1GD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GGUA,mCAEC,MACC,wCACA,yCAKF,KACC,WACA,YACA,kBAEA,6EAGD,KAEC,2CACA,oDAGA,6EAEA,yCACA,sBACA,2BACA,eACA,WACA,iDAKD,eAKC,gBACA,gBACA,gBACA,mBACA,6BAGD,GACC,gBAGD,GACC,gBAGD,GACC,gBAGD,GACC,iBAGD,GACC,gBAID,GACC,kBACA,oCAGD,GACC,eAGD,MAEC,qBACA,aACA,uBAGD,GACC,YACA,mBACA,eAGD,IACC,iBACA,sBACA,kCACA,mCACA,qBACA,mBAMD,wBACC,sBAKD,0BAEC,gGACA,ML/BkB,MKgClB,YACA,gBACA,kBACA,mDACA,8CACA,+EACA,gBACA,YACA,sBACA,qBACA,iBACA,aACA,sBACA,YACA,cAEA,kDACC,iBACA,0CACA,2EACA,mBACA,uBACA,2BACA,iBACA,oBACA,yBAQD,gGACC,cACA,6CACA,8GACC,qBACA,WACA,aACA,0BACA,iBACA,SAIF,8DACC,kBAED,8DACC,kBACA,YACA,WACA,kBACA,gBACA,sBACA,aACA,sBACA,6CACA,iBAEA,oFACC,oDAGD,oEACC,oBACA,eACA,QACA,cACA,SACA,kBACA,WACA,2CAGA,kFACC,QACA,4GACC,2BAIF,gIAEC,8DAED,0HAIC,0EAKA,wVAEC,+CAGF,oGACC,kDACA,yCAMA,gsBAEC,8CACA,wCAEA,g8BACC,qCAMH,sHACC,wBACA,SAMA,kNAEC,aAKF,0EACC,cACA,WACA,kBACA,gFACC,oBACA,eACA,mDACA,WACA,kBAIC,wXAEC,2CACA,+CAKD,gZAEC,2CACA,oDACA,ghBACC,qCAMH,kIACC,yDAGD,4IAEC,wBACA,0BAGD,sIAEC,wBAGA,6EAMJ,oJAEC,kBACA,sBAGC,4jBAGC,oCAIF,4JACC,0BACA,4BACA,cACA,8BACA,0CACA,yCACA,gBACA,oDACA,gBACA,sBACA,mBACA,uBACA,2CACA,6BACA,aACA,YAGA,4KACC,gBACA,kDACA,wOACC,gBACA,6DAGF,4NACC,kEACA,WACA,YAEA,wCAID,4QACC,qBAEA,4ZACC,gCAKH,wQACC,kBACA,cACA,YACA,WACA,YACA,YACA,kBACA,eACA,wCAEA,gRAEC,oCAKF,gQACC,kCAID,gSACC,UACA,YAED,4SACC,wBACA,YAIH,sEACC,aAMD,4YAEC,SACA,WACA,+BACA,4BACA,2BACA,w0BAEC,+BACA,UAUD,sGACC,UACA,kBACA,oCACA,qCACA,SACA,YAIA,qBAEA,kIACC,UACA,eACA,wDACA,gBAGF,gGACC,kBACA,qCACA,oCACA,SACA,UACA,gBFtZF,6CEwZE,qBACA,4BACA,2BACA,YACA,wBACA,gBACA,YACA,UACA,iCACA,6BACA,yBACA,YACA,kBACA,qCAMD,8GACC,mDAIA,wNACC,UAED,oMACC,sBAED,gTACC,oCAID,0GACC,4BACA,wBACA,oBAQH,gHACC,cACA,sHACC,wBACA,mBACA,yBAED,sHACC,+CACA,qCAED,8HACC,YACA,WACA,SACA,gBAIA,oSFzdF,uCE4dE,obAEC,+BACA,UAGF,wLACC,gBACA,eACA,cACA,0CACA,eAEA,gNACC,UACA,kBACA,0NACC,gBACA,mBACA,8CACA,wCASJ,8GACC,mBACA,cACA,uBACA,qCACA,UACA,kBACA,8CACA,WACA,8OAEC,oBACA,WAED,0HACC,YACA,oBACA,YACA,4QAGC,UAGF,gJACC,WACA,YACA,wBACA,0BAED,wRAEC,WACA,YACA,cACA,4VACC,2BAED,gWACC,yBAED,oUACC,2CACA,6CACA,0BACA,4BAQH,oHACC,oBACA,mDACA,4BACA,wMACC,kBACA,mBACA,uBACA,gBACA,aACA,0CAED,8LACC,SACA,qCACA,oCACA,0CACA,oZAEC,UAQH,kOAEC,uBACA,2FAGA,kBACA,qBACA,8CACA,sBAMD,sFACC,gDACA,wCACA,oBAGD,sEACC,8BAGD,0OAEC,qBASA,0IACC,qCAGD,gHACC,qCAEA,wKACC,YASF,0IACC,sCAGD,gHACC,sCAEA,wKACC,WAOJ,SACC,sBACA,gBACA,oCACA,gCACA,UACA,aACA,kDACA,0BACA,2CACA,cAEA,kCACC,eAIF,wCACC,SACC,qDACA,mDAED,gBACC,qDAED,aACC,oDAcF,aACC,aACA,8CACA,iBACA,cACA,iBACA,YAGA,kCACC,gBAID,kCACC,aACA,kBACA,oBAGA,gBAGA,uDAEC,eACA,mFACC,aAKH,uCACC,oCASF,aACC,WACA,ULtrBmB,MKurBnB,ULtrBmB,MKurBnB,cACA,wBACA,gBACA,IL7rBe,KK8rBf,mBACA,gBACA,kBACA,aACA,aACA,0BACA,wCACA,kDACA,cAEA,uBACC,aAOF,cAEC,gBAGC,oFACC,cAKH,sBACC,aACA,6CACA,cACA,0DAEA,iBACA,gBACA,sBAGA,uCACC,UAGD,iCACC,sBACA,sBACA,oCAOE,4NACC,qBACA,WACA,cAOL,qBACC,sBACA,+BACA,gBACA,oDACA,6CACA,cAEA,sCACC,aACA,mBACA,qCACA,WACA,UACA,SACA,+BACA,gBACA,SACA,oDACA,iBACA,mBACA,eACA,WAGA,6BAEA,6CACC,yCACA,8CACA,eAED,wFAEC,+CAGD,8CACC,2CACA,4BACA,WACA,oCACA,qCACA,MACA,qBACA,cAGD,oDACC,mEAOF,4DACC,qCAED,kEACC,qCAKD,4DACC,sCAED,kEACC,sCAIF,SACC,cACA,aACA,mBACA,gBACC,wBAIA,yDAEC,oBACA,sBAKH,aACC,kBACA,gBACA,yBACA,mBAGD,QACC,UACA,yCACA,sCACA,qCACA,oCACA,iCACA,oBACC,UAKF,YACC,aACA,mBAEA,uBACC,aACA,sBACA,YACA,kBACA,mBACA,gBACA,uBACA,eACA,oCACA,kBACA,YAEA,8BACC,aAID,mCACC,0BAED,kCACC,wBAGD,6BACC,qBACA,WACA,YACA,qBACA,sBACA,gBACA,sBACA,WACA,eAGD,yBACC,oCACA,kBACA,gBACA,uBAED,gCACC,iBAED,0FAGC,kBACA,6BACA,sDAMF,oBACC,oBAKF,6BACC,WAGD,6BACC,YASA,0JAGC,wCAIA,2LACC,YAKH,gDAGC,kBACA,8CACA,6BACA,yCACA,YACA,YACA,WACA,gBACA,mBACA,sDACA,aACA,mBAEA,kEACC,YAKA,qBAEA,2BACA,YACA,SACA,QACA,kBACA,oBACA,iDACA,iBAGD,oFACC,0BACA,qBACA,oBACA,sGACC,qBACA,0BAIF,8EACC,oBACA,oBACA,gGACC,sBAIF,+DACC,cAGD,+GACC,SAGD,yDAEC,wBACA,sBAED,yDACC,aACA,cAEA,8EACC,aAGD,oOAGC,eACA,YA/FkB,KAgGlB,SACA,yCACA,+BACA,aACA,uBACA,YACA,SACA,mBACA,gBACA,WACA,6BACA,mBAEA,whDAIC,YACA,aACA,+BACA,gBAnHe,KAqHhB,yzBAIC,yBAOC,gvGACC,oBAlIe,KAsIlB,+tBAEC,gCAED,ojBAEC,+CAED,4nBAEC,kDAED,mSACC,2CACA,oDAGD,mSACC,2BAED,iRACC,eACA,mBAED,sPACC,YACA,kBACA,cACA,mBAED,mSACC,SACA,wBAGD,gVACC,kCAID,wQACC,MA9Ke,KA+Kf,YAGD,uyBAEC,qBACA,WAED,yeACC,mBAED,8cACC,mBAED,2xBACC,YAED,iRACC,aACA,cAGA,mBACA,mbACC,wBAIF,04BAEC,sBAGD,0RACC,UAlNiB,KAmNjB,gBACA,aACA,cAEA,4bACC,wBAQA,2hDACC,eAMD,ygDACC,kBAKJ,8EACC,UACA,6FACC,UAcD,+EACC,MA/PiB,KAgQjB,OAhQiB,KAyQlB,6CACC,WACA,YAOJ,kBACC,wBACA,kBACA,MACA,gDACA,aACA,sBACA,uCACA,gBACA,gBACA,gBACA,kBACA,eACA,ULntCgB,MKotChB,ULntCgB,MKstChB,yCACC,kBACA,YACA,eACA,iBACA,aACA,eACA,mBACA,cAKC,8RAEC,QACA,WACA,YACA,YACA,aACA,WACA,eACA,4mBAEC,WAED,wtBAEC,WACA,ghDAEC,UAIF,kVACC,UAKH,8IAGC,8CAEA,2RACC,aAIF,6JAEC,kBACA,YACA,WACA,WAQC,2XAEC,aAEA,2eACC,WAIH,wFACC,SACA,uBAEA,aACA,gGACC,SAGD,oHACC,aAKH,qEACC,aACA,SACA,wBACA,qBACA,YACA,WACA,SACA,UAGD,qEACC,kBACA,qBACA,YACA,WACA,iBACA,kBACA,sBACA,uBACA,WACA,kBACA,gBACA,0BACA,iBACA,iBACA,eACA,QACA,iBAGD,kJAEC,cACA,yBACA,mBACA,gBACA,uBACA,QACA,aACA,eAGD,yEACC,WACA,QACA,SACA,sDAGD,wEACC,QACA,mBACA,gBACA,uBACA,gBACA,WACA,cACA,iBAGD,qEACC,QACA,kBACA,kFACC,SAGA,sBAIH,2EACC,aAIF,8CACC,6DACA,oDC39CD;AAAA;AAAA;AAAA;AAAA;AAAA,GAcC,mDAEC,WAGD,kDAEC,YAGD,qDAEC,WAGD,oDAEC,YAKD,mDAEC,YAGD,kDAEC,WAGD,qDAEC,YAGD,oDAEC,WAIF,YACC,WAGD,QACC,aAGD,iBACC,kBACA,4BACA,aACA,UACA,WACA,gBAGD,MACC,gBAGD,QACC,kBAGD,aACC,qBCnFD;AAAA;AAAA;AAAA,GAOA,mBACC,SCRD;AAAA;AAAA;AAAA,GAOA,wCAGC,UACC,iCACA,qBAID,iBACC,wBAID,YACC,WACA,iCACA,sBAID,0BACC,eACA,0BACA,6BAIA,2DACC,wBAIF,0CACC,sBAGD,8BACC,uBACA,sBAID,kBACC,wCACA,cAEA,iBAEA,eACA,uCACC,aAED,8BACC,aACA,mDACC,gBAOF,gDACC,4BAED,qDACC,eACA,gCACA,IRaa,KQZb,qBACA,WACA,YACA,aACA,oCACA,eACA,WACA,wBAED,2CACC,4BAKF,uBACC,eACA,gCACA,qBACA,WACA,YACA,aACA,eACA,WAED,0DAEC,UAID,6CACC,0BAID,kDACC,kCAED,8CACC,wBAGD,wBACC,gCAID,gBACC,aAED,+BACC,6BAMF,0CACC,8BACC,6BACA,eACA,qCACC,wBAMA,0CACC,cAGF,+BACC,gCACA,iDACA,SACA,YACA,SACA,QACA,kBACA,oBACA,sBACA,aACA,aAID,wCACC,uBCtKH;AAAA;AAAA;AAAA;AAAA,GAMA,SACI,kBACA,cACA,6BACA,kBACA,mBACA,sBACA,gBACA,gBACA,iBACA,qBACA,iBACA,oBACA,mBACA,kBACA,oBACA,uBACA,eACA,UACA,eAEA,gBACA,eACA,uDACA,8DAGI,mBACA,UACA,wBAEJ,uDAEI,uBACA,0BAEJ,8CAEI,eACA,eAEJ,4CAEI,wBACA,eACA,0EACI,QACA,qBACA,iBACA,8BACA,qDAGR,0CAEI,yBACA,cACA,wEACI,QACA,mBACA,iBACA,8BACA,uDAQJ,kPACI,SACA,yBACA,8CAGR,iCACI,sBACA,oBAEJ,kCACI,wBACA,oBAOA,0QACI,MACA,yBACA,iDAGR,4EAEI,uBACA,0BAEJ,oCACI,sBACA,iBAEJ,qCACI,wBACA,iBAIR,eACI,gBACA,gBACA,8CACA,6BACA,kBACA,mCAGJ,+BACI,kBACA,QACA,SACA,2BACA,mBClIJ;AAAA;AAAA;AAAA,GAIA,aACC,8DAGC,kDACC,wCAIA,wDACC,gBAED,yEACC,+BACA,2BACA,wCAEA,8OAGC,UAID,iFACC,aAED,oFACC,aAED,iGACC,YAMJ,sBACC,iEACA,uCAGD,8BACC,uCAID,kCACC,cAGD,oBACC,iBACA,mCACA,sBACA,qBACA,iBAED,+KAIC,kBAID,oBACC,eACA,SACA,oCACA,2BACA,WACA,sBAEA,8BAEC,gGACA,6BACA,mDACA,0EACA,6CACA,4CACA,sDACA,8CACA,kBAEA,oCACC,iBACA,SAEA,iDACC,iBAIF,sCACC,kBCpGJ;AAAA;AAAA;AAAA,GAIA,kBACE,gBACA,gBACA,8CACA,6BACA,6CACA,eACA,gBACA,eACA,cACA,mCACA,aACA,mBACA,gBAEF,kFAEE,aACA,mBACA,WAEF,oEAEE,gBACA,gBACA,sBACA,eACA,YACA,aACA,mBACA,4BACA,2BACA,6BACA,aAEF,4FAEE,cACA,WACA,YACA,gBACA,iBACA,YAGF,4GAEE,sfACA,YACA,wCACA,qBACA,WACA,YAEF,wGAEE,WACA,wBACA,iBAEF,kPAIE,eACA,UAEF,+BACE,WAEF,mCACE,eAEF,8BACE,qEAEF,6BACE,sEAEF,gCACE,yEAEF,gCACE,yEAEF,6BACE,yEAEF,gCACE,sEAEF,8CACE,qBACA,WACA,YACA,iEACA,iBAOF,gEACE,kgBAEF,oCACC,8BACA,4BAED,yCACE,4CAEF,0BACE,aACA,mBACA,YAEF,yDAEE,YACA,WACA,iCACA,cACA,cAEF,2BACE,oCAEF,kCACE,mCAEF,8BACE,gBACA,2CACA,iBAEF,kCACE,aACA,sBAEF,uCACE,mBACD,iBACC,eACA,yBAEF,uBACE,gBACA,WACA,MACA,wBACA,uCACA,8CAEF,sBACE,kBACA,cACA,wBACA,4CAEF,uCACE,WACA,qBAEF,2BACE,aACA,WACA,6CACA,uCACA,8BAEF,kCACE,aACA,mBACA,WACA,8CAEF,0DACE,gBACA,MACA,SACA,kCACA,+HAEF,mEACE,aAEF,uEACE,iBACD;AAAA;AAAA;AAAA,EAQD,iCACE,kBACA,WACA,YACA,eACA,gBACA,4BACA,wBACA,aACA,uBAGF,2CACE,mCAGF,0CACE,wCACA,kBACA,uBACD;AAAA;AAAA;AAAA,EAID,qCACE,+BAEF,wCACE,eACA,gBACA,uBACA,mBAEF,qDACE,cAEF,2DACE,sBAEF,iDACE,eACA,sBAEF,iDACE,qBAEF,qCACE,eAEF,6CACE,8CAEF,oDACE,qBACA,WAEF,yGACE,0BAEF,yCACE,+CAEF,8CACE,aACA,sBACA,mBACA,YAEF,yCACE,yBACA,YACA,gBACA,uBAEF,8CACE,oCACA,sBACD;AAAA;AAAA;AAAA,EAID,qCACE,+BAEF,wCACE,eACA,gBACA,uBACA,mBAEF,qDACE,cAEF,2DACE,sBAEF,iDACE,eACA,sBAEF,iDACE,qBAEF,6BACA,GACI,2BAEJ,IACI,6BAEJ,KACI,4BAGJ,4CACE,6BAEF,mCACE,qBACA,YACA,oIACA,2BACA,mCACA,8CAEF,2CACE,oBACA,mBAEF,iDACE,WAEF,0DACE,wBACA,YAEF,6CACE,WAEF,iDACE,WACD,8CACC,WACA,YACA,cAEF,qCACE,WACA,yBACA,qBAEF,2CACE,WACA,gBACA,mBAEF,wCACE,gBACA,UACA,MACA,8CACA,YAEF,wDACE,aAEF,qDACE,WAEF,iDACE,YAEF,iDACE,YAEF,qDACE,YAEF,4EACE,sBACA,2BAEF,mEACE,wBAEF,sEACE,oBAEF,6DACE,oCAEF,+EACE,mBACD,2CACC,uBACD,oCACC,aACA,sBACA,oBACA,UACA,gBACA,YACA,uBACA,cAEF,yDACE,sBAEF,4CACE,iBACA,gBAEF,yBACA,oCACI,mBACA,iBAGJ,yBACA,oCACI,mBACA,gBAEJ,4CACI,iBAGJ,yBACE,uBAEF,oDACE,sBAEF,0CACE,gBAEF,+CACA,yBACI,UAGJ,yBACA,yBACI,0CAEH,oCACC,YACA,aACA,sBACA,mBAEF,uCACE,iBACA,mBACA,SAEF,oCACE,sBACA,WACA,aACA,sBACA,aACA,OACA,mBAEF,sCACE,sBAEF,+BACE,kCAEF,yBACA,+BACI,qEAGJ,wCACE,aACA,sBACA,gBACD,2CACC,iBACA,oDAEF,6CACE,oDAEF,yDACE,aAEF,4CACE,uFC5eF,yBACC,aACA,sBACA,WACA,kBACA","file":"server.css"} \ No newline at end of file +{"version":3,"sourceRoot":"","sources":["server.scss","icons.scss","variables.scss","styles.scss","inputs.scss","functions.scss","header.scss","apps.scss","global.scss","fixes.scss","mobile.scss","tooltip.scss","public.scss","../../node_modules/@nextcloud/dialogs/dist/style.css","../../node_modules/@nextcloud/password-confirmation/dist/style.css"],"names":[],"mappings":"AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GCyHQ,8BCvHR;AAAA;AAAA;AAAA,GCOA,MACC,mCACA,uCAGD,yQACC,SACA,UACA,SACA,oBACA,eACA,oBACA,wBACA,eACA,uCAGD,6CACC,aAID,0CACC,wDACA,aAGD,UACC,YAEA,8BAGD,6DACC,cAGD,MACC,yBACA,iBACA,mBAGD,cACC,iBACA,mBAGD,YACC,sBAGD,EACC,SACA,6BACA,qBACA,eACA,IACC,eAIF,WACC,aACA,0BAGD,MACC,eACA,QACC,eAIF,0BACC,eAGD,KACC,mCAGD,GACC,gBAGD,KACC,mBAEA,mCACA,uCACA,6BACA,6BAGD,mBACC,kBAGD,qBACC,kBACA,sBACA,qBACA,2BACA,2DACA,uBAGD,iBACC,qBACA,aACA,oCAGD,eACC,YACA,aAGD,cACC,eACA,MACA,SACA,qBACA,YACA,WACA,aACA,kBACA,gDACA,wCACA,iBACA,eACA,kBACC,cACA,kBACA,UACA,QACA,gBAED,gBACC,wCACA,sDACA,4CACC,6CAOH,oBACC,WACA,YAGD,2BACC,+BAGD,gCACC,+BAGD,0BACC,kCACA,yCACA,+BACA,4BAMD,YACC,mDACA,kCAMD,kBACC,sBAKD,4BAEC,oCACA,kBACA,gBACA,WACA,sDACC,gBAED,sEACC,gBAED,kCACC,mBAED,oHAEC,qBACA,YACA,WACA,mBACA,gcAEC,WAOH,sBACC,WASD,oCACC,kBACA,yBACA,sBACA,qBACA,iBAID,kBAEC,kBACA,qBACA,SAEA,YAGD,8CAGC,WAGD,8BACC,sBACA,oBACA,wBACA,wBAGD,2EACC,WAGD,oGACC,kDACA,UACA,qBAGD,mDACC,6BACA,YACA,WACA,yCACA,4BACA,2BACA,WAOA,qEACC,UAED,qEACC,UAIF,wEACC,aAGD,2CACC,wBAGD,yBACC,kBACA,qBACA,sBAGD,qBACC,cACA,mBACA,iBACA,uBACA,aAKD,4CACC,eACA,YACA,mCACA,6BACA,qDAIA,2BACC,4BAKD,wBACC,sBACA,4BACA,+BACC,+CACA,qBACA,kBAGF,0BACC,qBACA,iBAIF,YACC,YACA,sCACA,oBACC,sBAIF,eACC,gDAUD,mBACC,kBACA,cACA,2BACC,kBACA,cAIF,UACC,gBAGD,8CACC,UAIA,WACC,WACA,YAGD,8CAEC,UAGD,oGAGC,WAIF,mBACC,WACA,kBACA,QAEA,kDACC,UAKD,kDACC,UAIF,eACC,WAEA,0CACC,UAKD,uGACC,8CAIF,KACC,mFAGD,OACC,gBACA,YACA,eACA,qBACA,UACC,qBAOD,qBACC,WACA,aAED,wBACC,cACA,gDACA,WACA,aAED,2BACC,WACA,YACA,6BACC,WAGF,wBACC,wCACA,kBACA,mBACA,gBACA,uBACA,0CACA,kCACA,6DACC,0CAGF,sBACC,UACA,WAKF,YACC,oBACA,YAGD,SACC,oBACA,kDACA,4BACA,iCACA,YACA,0BACA,cACA,QACA,uBACA,mBACC,QACA,kBACA,qBACC,WAIA,wFACC,cAIF,gCACC,SACA,sBACA,mCACC,iBACA,gBACA,kBACA,uBACA,+DACC,+EAGF,+CACC,aAIH,gBACC,aACA,uBACC,QAGF,yBAEC,kBACA,aACA,WACA,uBACA,mBACA,gBACA,cAEA,gBAEA,8FAGC,oBAGF,yBACC,UACA,WAGD,oBACC,iBACA,uBAEA,2BACC,uBAGF,+DACC,UAEA,0JAEC,WAOH,QACC,UACA,yCACA,sCACA,qCACA,oCACA,iCACA,oBACC,UAOD,+CACC,SACA,kBAED,mDACC,gBAKF,cACC,mBAMD,mBACC,aACA,QACA,SACA,UC5mBD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAWA,kFACC,6BAMD,iHAUC,YACA,yCACA,sBAYA,oFACC,eACA,oCACA,sCACA,QA/BiB,GAmCnB,wBACC,aAID,kHASC,iBACA,8CACA,6BACA,0CACA,mCACA,aACA,mCACA,YACA,8TACC,WACA,sBAOC,49CAIC,oCACA,aAED,wfACC,aACA,8CACA,6BAGF,sVACC,6DACA,oDAGF,wKACC,8CACA,6BACA,eACA,WAED,wKACC,gBAED,gMACC,mDAGD,kKACC,8CACA,0CACA,wCACA,eAGA,omBAEC,+CAIA,s2BAGC,oDACA,gDAED,gnBAEC,4CAED,sSACC,6CAGF,wNAEC,8CACA,6CACA,eAKH,2BACC,WACA,sBACA,gBACA,eACA,gDACA,aACA,mCAEA,8CACA,oCACA,eACA,WAKA,4KACC,6BACA,0BACA,qBAEA,qCAED,0EAIC,YACA,WAID,kBACC,WACA,cACA,gBACA,WACA,eAED,mBACC,SACA,QAED,iBACC,cAKF,6GASC,2FACA,mCACA,WACA,yCACA,eACA,sBACA,8CACA,oDACA,YAEA,kSAEC,0DAGD,mKACC,eAIF,sLAaC,WACA,sBACA,eACA,mCACA,8CACA,6BACA,iDACA,YACA,aACA,yCACA,uBACA,eACA,kyBACC,8CACA,kDAED,0QACC,YAIF,mCACC,aACA,YAID,OACC,iDACA,gBACA,8CACA,mCAGD,qBACC,qCAGD,qBACC,oCASA,2DACC,eAIA,sFACC,eAMH,sGAQC,iBACA,2CAGA,gMACC,SAGD,oIACC,+CACA,kDACA,yCACA,kKACC,qDACA,+CAaD,4MAEC,qBACA,2BACA,WASF,kGACC,qCACA,mDACA,mFACA,iBACA,4BAEA,yDACA,UACA,qCACA,oCACA,gBACA,eACA,oBACA,6HACC,eC3TF,+CDmUE,yOACC,uCAID,4qBAGC,qDACA,8CACA,6vBACC,uDAQH,+VACC,qDACA,mDAEA,UAOH,uBAEC,eAGD,2BAEC,mBASA,4GAEC,kBACA,4BACA,SACA,UACA,WACA,gBACA,oIACC,iBAED,4WAEC,eAED,gKACC,WACA,qBACA,OAvBmB,KAwBnB,MAxBmB,KAyBnB,sBACA,kBACA,aACA,sBACA,+CAED,oeAEC,0CAED,4LACC,oBACA,qCACA,kBACA,mBAED,4bAIC,8DACA,8CACA,0CAED,oMACC,+CACA,0DAED,oOACC,+CAID,gJACC,qBACA,yBAED,oMACC,cA/DmB,KAmEpB,mFACC,kBACA,OArEmB,KAsEnB,MAtEmB,KAuEnB,2BACA,2BAED,mGACC,yDAED,+GACC,0DAOD,gZAEC,2BAED,wUACC,aAzF0B,KA2F3B,4NACC,8DACA,+BACA,2BAED,gOACC,0CACA,2CAED,gQACC,8DACA,2CACA,+BAID,8OAEC,0CACA,6BACA,+DAED,6HACC,gEAED,mHACC,WAMH,UACC,WACA,sBACA,qBACA,2BACC,wBACA,eACA,yCACC,iBACA,yBACA,sBACA,8CACA,oCACA,0CACA,oBACA,mBACA,gDACC,wBAIH,yBACC,UACA,4BACC,YACA,kBACA,kBACA,+BACA,eACA,oCACA,8BACC,mBACA,gBACA,uBACA,YACA,sBACA,uBACA,SACA,eACA,eACA,2BACA,yBACA,sBACA,qBACA,iBACA,oBACA,mBACA,0CACA,yBACA,sCACC,YACA,4CACA,4BACA,2BACA,eACA,gBACA,cACA,WACA,sBACA,kBAGF,sCACC,6BAED,qCACC,8CACA,6BACA,6CACC,mBAQL,mBACC,cACA,WACA,UACA,cACA,8CACA,mCACA,gBACA,WACA,gBAEC,2CACC,8BAED,gDACC,8BAGF,yCACC,yBAED,sCACC,mCACA,wCACA,iCAED,2CACC,mCACA,wCACA,iCAKF,iBACC,QAEC,0BAED,QAEC,yBAED,YAGC,0BAED,QAEC,0BAIF,OACC,qBACA,uBACA,mCAKD,cACC,kBACA,4BACA,aACA,UACA,WACA,gBAWD,cAJC,oCACA,mCAOD,wBARC,oCACA,mCAWD,4BAZC,oCACA,mCEjrBD;AAAA;AAAA;AAAA;AAAA,GAYA,cACC,kBACA,gBACA,aACA,WACA,uBACA,aACA,aACA,eACA,SAEA,2BACC,yBAKF,QAEC,yBACA,sBACA,qBACA,iBAGA,2BACC,oBACA,kBACA,MACA,WACA,aACA,4BACA,sBACA,8BAID,mBACC,cACA,0BACA,kBACA,iDACA,sBACA,UACA,mBACA,aACA,eACA,gBACA,WAEA,mDACC,UAID,yBACC,oBACA,yFACA,4BACA,wBACA,2BACA,WACA,kBACA,wBACA,QACA,WAEA,gFAMF,yFAEC,aAEA,uGACC,YACA,kBACA,oBACA,2BACA,WACA,WACA,kBACA,oDACA,uBACA,UAOF,sBACC,oBACA,mBACA,SACA,mBACA,YAKD,oBACC,oBACA,mBACA,yBACA,cAEA,uDAKD,wBACC,yCACA,eACA,iBACA,SACA,UACA,uBACA,gBACA,uBAEA,cAGA,qCACC,aACA,sBACA,gBAEA,mDACC,gBACA,uBAGD,uDACC,yCACA,kBACA,gBACA,iCACA,mCACA,gBACA,uBF7JJ;AAAA;AAAA;AAAA;AAAA,GHSA,iCACC,4BACA,2BACA,eACA,gBAGD,iBACC,kDAID,sGAMC,kBACA,0IACC,UACA,WACA,YACA,WACA,uBACA,kBACA,QACA,uBACA,mBACA,6CACA,qCACA,gCACA,4BACA,wBACA,4CACA,2CAEA,wCAEA,gYAGC,uCAKH,wDAEC,2CACA,4CAGD,yDAEC,YACA,WACA,qBAKA,yJACC,2CAED,iMACC,gDAED,yMACC,iDAED,iPACC,sDAIF,kBACC,KACC,uBAED,GACC,0BAIF,SACC,gCAGD,yKAQC,wDG1GD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GGUA,mCAEC,MACC,wCACA,yCAKF,KACC,WACA,YACA,kBAEA,6EAGD,KAEC,2CACA,oDAGA,6EAEA,yCACA,sBACA,2BACA,eACA,WACA,iDAKD,eAKC,gBACA,gBACA,gBACA,mBACA,6BAGD,GACC,gBAGD,GACC,gBAGD,GACC,gBAGD,GACC,iBAGD,GACC,gBAID,GACC,kBACA,oCAGD,GACC,eAGD,MAEC,qBACA,aACA,uBAGD,GACC,YACA,mBACA,eAGD,IACC,iBACA,sBACA,kCACA,mCACA,qBACA,mBAMD,wBACC,sBAKD,0BAEC,gGACA,ML/BkB,MKgClB,YACA,gBACA,kBACA,mDACA,8CACA,+EACA,gBACA,YACA,sBACA,qBACA,iBACA,aACA,sBACA,YACA,cAEA,kDACC,iBACA,0CACA,2EACA,mBACA,uBACA,2BACA,iBACA,oBACA,yBAQD,gGACC,cACA,6CACA,8GACC,qBACA,WACA,aACA,0BACA,iBACA,SAIF,8DACC,kBAED,8DACC,kBACA,YACA,WACA,kBACA,gBACA,sBACA,aACA,sBACA,6CACA,iBAEA,oFACC,oDAGD,oEACC,oBACA,eACA,QACA,cACA,SACA,kBACA,WACA,2CAGA,kFACC,QACA,4GACC,2BAIF,gIAEC,8DAED,0HAIC,0EAKA,wVAEC,+CAGF,oGACC,kDACA,yCAMA,gsBAEC,8CACA,wCAEA,g8BACC,qCAMH,sHACC,wBACA,SAMA,kNAEC,aAKF,0EACC,cACA,WACA,kBACA,gFACC,oBACA,eACA,mDACA,WACA,kBAIC,wXAEC,2CACA,+CAKD,gZAEC,2CACA,oDACA,ghBACC,qCAMH,kIACC,yDAGD,4IAEC,wBACA,0BAGD,sIAEC,wBAGA,6EAMJ,oJAEC,kBACA,sBAGC,4jBAGC,oCAIF,4JACC,0BACA,4BACA,cACA,8BACA,0CACA,yCACA,gBACA,oDACA,gBACA,sBACA,mBACA,uBACA,2CACA,6BACA,aACA,YAGA,4KACC,gBACA,kDACA,wOACC,gBACA,6DAGF,4NACC,kEACA,WACA,YAEA,wCAID,4QACC,qBAEA,4ZACC,gCAKH,wQACC,kBACA,cACA,YACA,WACA,YACA,YACA,kBACA,eACA,wCAEA,gRAEC,oCAKF,gQACC,kCAID,gSACC,UACA,YAED,4SACC,wBACA,YAIH,sEACC,aAMD,4YAEC,SACA,WACA,+BACA,4BACA,2BACA,w0BAEC,+BACA,UAUD,sGACC,UACA,kBACA,oCACA,qCACA,SACA,YAIA,qBAEA,kIACC,UACA,eACA,wDACA,gBAGF,gGACC,kBACA,qCACA,oCACA,SACA,UACA,gBFtZF,6CEwZE,qBACA,4BACA,2BACA,YACA,wBACA,gBACA,YACA,UACA,iCACA,6BACA,yBACA,YACA,kBACA,qCAMD,8GACC,mDAIA,wNACC,UAED,oMACC,sBAED,gTACC,oCAID,0GACC,4BACA,wBACA,oBAQH,gHACC,cACA,sHACC,wBACA,mBACA,yBAED,sHACC,+CACA,qCAED,8HACC,YACA,WACA,SACA,gBAIA,oSFzdF,uCE4dE,obAEC,+BACA,UAGF,wLACC,gBACA,eACA,cACA,0CACA,eAEA,gNACC,UACA,kBACA,0NACC,gBACA,mBACA,8CACA,wCASJ,8GACC,mBACA,cACA,uBACA,qCACA,UACA,kBACA,8CACA,WACA,8OAEC,oBACA,WAED,0HACC,YACA,oBACA,YACA,4QAGC,UAGF,gJACC,WACA,YACA,wBACA,0BAED,wRAEC,WACA,YACA,cACA,4VACC,2BAED,gWACC,yBAED,oUACC,2CACA,6CACA,0BACA,4BAQH,oHACC,oBACA,mDACA,4BACA,wMACC,kBACA,mBACA,uBACA,gBACA,aACA,0CAED,8LACC,SACA,qCACA,oCACA,0CACA,oZAEC,UAQH,kOAEC,uBACA,2FAGA,kBACA,qBACA,8CACA,sBAMD,sFACC,gDACA,wCACA,oBAGD,sEACC,8BAGD,0OAEC,qBASA,0IACC,qCAGD,gHACC,qCAEA,wKACC,YASF,0IACC,sCAGD,gHACC,sCAEA,wKACC,WAOJ,SACC,sBACA,gBACA,oCACA,gCACA,UACA,aACA,kDACA,0BACA,2CACA,cAEA,kCACC,eAIF,wCACC,SACC,qDACA,mDAED,gBACC,qDAED,aACC,oDAcF,aACC,aACA,8CACA,iBACA,cACA,iBACA,YAGA,kCACC,gBAID,kCACC,aACA,kBACA,oBAGA,gBAGA,uDAEC,eACA,mFACC,aAKH,uCACC,oCASF,aACC,WACA,ULtrBmB,MKurBnB,ULtrBmB,MKurBnB,cACA,wBACA,gBACA,IL7rBe,KK8rBf,mBACA,gBACA,kBACA,aACA,aACA,0BACA,wCACA,kDACA,cAEA,uBACC,aAOF,cAEC,gBAGC,oFACC,cAKH,sBACC,aACA,6CACA,cACA,0DAEA,iBACA,gBACA,sBAGA,uCACC,UAGD,iCACC,sBACA,sBACA,oCAOE,4NACC,qBACA,WACA,cAOL,qBACC,sBACA,+BACA,gBACA,oDACA,6CACA,cAEA,sCACC,aACA,mBACA,qCACA,WACA,UACA,SACA,+BACA,gBACA,SACA,oDACA,iBACA,mBACA,eACA,WAGA,6BAEA,6CACC,yCACA,8CACA,eAED,wFAEC,+CAGD,8CACC,2CACA,4BACA,WACA,oCACA,qCACA,MACA,qBACA,cAGD,oDACC,mEAOF,4DACC,qCAED,kEACC,qCAKD,4DACC,sCAED,kEACC,sCAIF,SACC,cACA,aACA,mBACA,gBACC,wBAIA,yDAEC,oBACA,sBAKH,aACC,kBACA,gBACA,yBACA,mBAGD,QACC,UACA,yCACA,sCACA,qCACA,oCACA,iCACA,oBACC,UAKF,YACC,aACA,mBAEA,uBACC,aACA,sBACA,YACA,kBACA,mBACA,gBACA,uBACA,eACA,oCACA,kBACA,YAEA,8BACC,aAID,mCACC,0BAED,kCACC,wBAGD,6BACC,qBACA,WACA,YACA,qBACA,sBACA,gBACA,sBACA,WACA,eAGD,yBACC,oCACA,kBACA,gBACA,uBAED,gCACC,iBAED,0FAGC,kBACA,6BACA,sDAMF,oBACC,oBAKF,6BACC,WAGD,6BACC,YASA,0JAGC,wCAIA,2LACC,YAKH,gDAGC,kBACA,8CACA,6BACA,yCACA,YACA,YACA,WACA,gBACA,mBACA,sDACA,aACA,mBAEA,kEACC,YAKA,qBAEA,2BACA,YACA,SACA,QACA,kBACA,oBACA,iDACA,iBAGD,oFACC,0BACA,qBACA,oBACA,sGACC,qBACA,0BAIF,8EACC,oBACA,oBACA,gGACC,sBAIF,+DACC,cAGD,+GACC,SAGD,yDAEC,wBACA,sBAED,yDACC,aACA,cAEA,8EACC,aAGD,oOAGC,eACA,YA/FkB,KAgGlB,SACA,yCACA,+BACA,aACA,uBACA,YACA,SACA,mBACA,gBACA,WACA,6BACA,mBAEA,whDAIC,YACA,aACA,+BACA,gBAnHe,KAqHhB,yzBAIC,yBAOC,gvGACC,oBAlIe,KAsIlB,+tBAEC,gCAED,ojBAEC,+CAED,4nBAEC,kDAED,mSACC,2CACA,oDAGD,mSACC,2BAED,iRACC,eACA,mBAED,sPACC,YACA,kBACA,cACA,mBAED,mSACC,SACA,wBAGD,gVACC,kCAID,wQACC,MA9Ke,KA+Kf,YAGD,uyBAEC,qBACA,WAED,yeACC,mBAED,8cACC,mBAED,2xBACC,YAED,iRACC,aACA,cAGA,mBACA,mbACC,wBAIF,04BAEC,sBAGD,0RACC,UAlNiB,KAmNjB,gBACA,aACA,cAEA,4bACC,wBAQA,2hDACC,eAMD,ygDACC,kBAKJ,8EACC,UACA,6FACC,UAcD,+EACC,MA/PiB,KAgQjB,OAhQiB,KAyQlB,6CACC,WACA,YAOJ,kBACC,wBACA,kBACA,MACA,gDACA,aACA,sBACA,uCACA,gBACA,gBACA,gBACA,kBACA,eACA,ULntCgB,MKotChB,ULntCgB,MKstChB,yCACC,kBACA,YACA,eACA,iBACA,aACA,eACA,mBACA,cAKC,8RAEC,QACA,WACA,YACA,YACA,aACA,WACA,eACA,4mBAEC,WAED,wtBAEC,WACA,ghDAEC,UAIF,kVACC,UAKH,8IAGC,8CAEA,2RACC,aAIF,6JAEC,kBACA,YACA,WACA,WAQC,2XAEC,aAEA,2eACC,WAIH,wFACC,SACA,uBAEA,aACA,gGACC,SAGD,oHACC,aAKH,qEACC,aACA,SACA,wBACA,qBACA,YACA,WACA,SACA,UAGD,qEACC,kBACA,qBACA,YACA,WACA,iBACA,kBACA,sBACA,uBACA,WACA,kBACA,gBACA,0BACA,iBACA,iBACA,eACA,QACA,iBAGD,kJAEC,cACA,yBACA,mBACA,gBACA,uBACA,QACA,aACA,eAGD,yEACC,WACA,QACA,SACA,sDAGD,wEACC,QACA,mBACA,gBACA,uBACA,gBACA,WACA,cACA,iBAGD,qEACC,QACA,kBACA,kFACC,SAGA,sBAIH,2EACC,aAIF,8CACC,6DACA,oDC39CD;AAAA;AAAA;AAAA;AAAA;AAAA,GAcC,mDAEC,WAGD,kDAEC,YAGD,qDAEC,WAGD,oDAEC,YAKD,mDAEC,YAGD,kDAEC,WAGD,qDAEC,YAGD,oDAEC,WAIF,YACC,WAGD,QACC,aAGD,iBACC,kBACA,4BACA,aACA,UACA,WACA,gBAGD,MACC,gBAGD,QACC,kBAGD,aACC,qBCnFD;AAAA;AAAA;AAAA,GAOA,mBACC,SCRD;AAAA;AAAA;AAAA,GAOA,wCAGC,UACC,iCACA,qBAID,iBACC,wBAID,YACC,WACA,iCACA,sBAID,0BACC,eACA,0BACA,6BAIA,2DACC,wBAIF,0CACC,sBAGD,8BACC,uBACA,sBAID,kBACC,wCACA,cAEA,iBAEA,eACA,uCACC,aAED,8BACC,aACA,mDACC,gBAOF,gDACC,4BAED,qDACC,eACA,gCACA,IRaa,KQZb,qBACA,WACA,YACA,aACA,oCACA,eACA,WACA,wBAED,2CACC,4BAKF,uBACC,eACA,gCACA,qBACA,WACA,YACA,aACA,eACA,WAED,0DAEC,UAID,6CACC,0BAID,kDACC,kCAED,8CACC,wBAGD,wBACC,gCAID,gBACC,aAED,+BACC,6BAMF,0CACC,8BACC,6BACA,eACA,qCACC,wBAMA,0CACC,cAGF,+BACC,gCACA,iDACA,SACA,YACA,SACA,QACA,kBACA,oBACA,sBACA,aACA,aAID,wCACC,uBCtKH;AAAA;AAAA;AAAA;AAAA,GAMA,SACI,kBACA,cACA,6BACA,kBACA,mBACA,sBACA,gBACA,gBACA,iBACA,qBACA,iBACA,oBACA,mBACA,kBACA,oBACA,uBACA,eACA,UACA,eAEA,gBACA,eACA,uDACA,8DAGI,mBACA,UACA,wBAEJ,uDAEI,uBACA,0BAEJ,8CAEI,eACA,eAEJ,4CAEI,wBACA,eACA,0EACI,QACA,qBACA,iBACA,8BACA,qDAGR,0CAEI,yBACA,cACA,wEACI,QACA,mBACA,iBACA,8BACA,uDAQJ,kPACI,SACA,yBACA,8CAGR,iCACI,sBACA,oBAEJ,kCACI,wBACA,oBAOA,0QACI,MACA,yBACA,iDAGR,4EAEI,uBACA,0BAEJ,oCACI,sBACA,iBAEJ,qCACI,wBACA,iBAIR,eACI,gBACA,gBACA,8CACA,6BACA,kBACA,mCAGJ,+BACI,kBACA,QACA,SACA,2BACA,mBClIJ;AAAA;AAAA;AAAA,GAIA,aACC,8DAGC,kDACC,wCAIA,wDACC,gBAED,yEACC,+BACA,2BACA,wCAEA,8OAGC,UAID,iFACC,aAED,oFACC,aAED,iGACC,YAMJ,sBACC,iEACA,uCAGD,8BACC,uCAID,kCACC,cAGD,oBACC,iBACA,mCACA,sBACA,qBACA,iBAED,+KAIC,kBAID,oBACC,eACA,SACA,oCACA,2BACA,WACA,sBAEA,8BAEC,gGACA,6BACA,mDACA,0EACA,6CACA,4CACA,sDACA,8CACA,kBAEA,oCACC,iBACA,SAEA,iDACC,iBAIF,sCACC,kBCpGJ;AAAA;AAAA;AAAA,GAIA,kBACE,gBACA,gBACA,8CACA,6BACA,6CACA,eACA,gBACA,eACA,cACA,mCACA,aACA,mBACA,gBAEF,kFAEE,aACA,mBACA,WAEF,oEAEE,gBACA,gBACA,sBACA,eACA,YACA,aACA,mBACA,4BACA,2BACA,6BACA,aAEF,4FAEE,cACA,WACA,YACA,gBACA,iBACA,YAGF,4GAEE,sfACA,YACA,wCACA,qBACA,WACA,YAEF,wGAEE,WACA,wBACA,iBAEF,kPAIE,eACA,UAEF,+BACE,WAEF,mCACE,eAEF,8BACE,qEAEF,6BACE,sEAEF,gCACE,yEAEF,gCACE,yEAEF,6BACE,yEAEF,gCACE,sEAEF,8CACE,qBACA,WACA,YACA,iEACA,iBAOF,gEACE,kgBAEF,oCACC,8BACA,4BAED,yCACE,4CAEF,0BACE,aACA,mBACA,YAEF,yDAEE,YACA,WACA,iCACA,cACA,cAEF,2BACE,oCAEF,kCACE,mCAEF,8BACE,gBACA,2CACA,iBAEF,kCACE,aACA,sBAEF,uCACE,mBACD,iBACC,eACA,yBAEF,uBACE,gBACA,WACA,MACA,wBACA,uCACA,8CAEF,sBACE,kBACA,cACA,wBACA,4CAEF,uCACE,WACA,qBAEF,2BACE,aACA,WACA,6CACA,uCACA,8BAEF,kCACE,aACA,mBACA,WACA,8CAEF,0DACE,gBACA,MACA,SACA,kCACA,+HAEF,mEACE,aAEF,uEACE,iBACD;AAAA;AAAA;AAAA,EAQD,iCACE,kBACA,WACA,YACA,eACA,gBACA,4BACA,wBACA,aACA,uBAGF,2CACE,mCAGF,0CACE,wCACA,kBACA,uBACD;AAAA;AAAA;AAAA,EAID,qCACE,+BAEF,wCACE,eACA,gBACA,uBACA,mBAEF,qDACE,cAEF,2DACE,sBAEF,iDACE,eACA,sBAEF,iDACE,qBAEF,qCACE,eAEF,6CACE,8CAEF,oDACE,qBACA,WAEF,yGACE,0BAEF,yCACE,+CAEF,8CACE,aACA,sBACA,mBACA,YAEF,yCACE,yBACA,YACA,gBACA,uBAEF,8CACE,oCACA,sBACD;AAAA;AAAA;AAAA,EAID,qCACE,+BAEF,wCACE,eACA,gBACA,uBACA,mBAEF,qDACE,cAEF,2DACE,sBAEF,iDACE,eACA,sBAEF,iDACE,qBAEF,6BACA,GACI,2BAEJ,IACI,6BAEJ,KACI,4BAGJ,4CACE,6BAEF,mCACE,qBACA,YACA,oIACA,2BACA,mCACA,8CAEF,2CACE,oBACA,mBAEF,iDACE,WAEF,0DACE,wBACA,YAEF,6CACE,WAEF,iDACE,WACD,8CACC,WACA,YACA,cAEF,qCACE,WACA,yBACA,qBAEF,2CACE,WACA,gBACA,mBAEF,wCACE,gBACA,UACA,MACA,8CACA,YAEF,wDACE,aAEF,qDACE,WAEF,iDACE,YAEF,iDACE,YAEF,qDACE,YAEF,4EACE,sBACA,2BAEF,mEACE,wBAEF,sEACE,oBAEF,6DACE,oCAEF,+EACE,mBACD,2CACC,uBACD,oCACC,aACA,sBACA,oBACA,UACA,gBACA,YACA,uBACA,cAEF,yDACE,sBAEF,4CACE,iBACA,gBAEF,yBACA,oCACI,mBACA,iBAGJ,yBACA,oCACI,mBACA,gBAEJ,4CACI,iBAGJ,yBACE,uBAEF,oDACE,sBAEF,0CACE,gBAEF,+CACA,yBACI,UAGJ,yBACA,yBACI,0CAEH,oCACC,YACA,aACA,sBACA,mBAEF,uCACE,iBACA,mBACA,SAEF,oCACE,sBACA,WACA,aACA,sBACA,aACA,OACA,mBAEF,sCACE,sBAEF,+BACE,kCAEF,yBACA,+BACI,qEAGJ,wCACE,aACA,sBACA,gBACD,2CACC,iBACA,oDAEF,6CACE,oDAEF,yDACE,aAEF,4CACE,uFC5eF,yBACC,aACA,sBACA,WACA,kBACA","file":"server.css"} \ No newline at end of file diff --git a/core/src/components/AppItem.vue b/core/src/components/AppItem.vue new file mode 100644 index 0000000000000..b4237f11c87b6 --- /dev/null +++ b/core/src/components/AppItem.vue @@ -0,0 +1,174 @@ + + + + + + + diff --git a/core/src/components/AppMenu.vue b/core/src/components/AppMenu.vue index 57589b7c257c4..02abc8edb0317 100644 --- a/core/src/components/AppMenu.vue +++ b/core/src/components/AppMenu.vue @@ -4,62 +4,100 @@ --> - - - - diff --git a/core/src/components/AppMenuIcon.vue b/core/src/components/AppMenuIcon.vue deleted file mode 100644 index 05e8ebe0ed0e9..0000000000000 --- a/core/src/components/AppMenuIcon.vue +++ /dev/null @@ -1,68 +0,0 @@ - - - - - - - diff --git a/core/src/eventbus.d.ts b/core/src/eventbus.d.ts index 4fac9bc784148..a48a096845cb7 100644 --- a/core/src/eventbus.d.ts +++ b/core/src/eventbus.d.ts @@ -3,11 +3,14 @@ * SPDX-License-Identifier: AGPL-3.0-or-later */ +import type { INavigationEntry } from './types/navigation.d.ts' + declare module '@nextcloud/event-bus' { export interface NextcloudEvents { // mapping of 'event name' => 'event type' 'nextcloud:unified-search:reset': undefined 'nextcloud:unified-search:search': { query: string } + 'nextcloud:app-menu.refresh': { apps: INavigationEntry[] } } } diff --git a/core/src/tests/components/AppItem.spec.ts b/core/src/tests/components/AppItem.spec.ts new file mode 100644 index 0000000000000..4212a11c5f583 --- /dev/null +++ b/core/src/tests/components/AppItem.spec.ts @@ -0,0 +1,46 @@ +/*! + * SPDX-FileCopyrightText: 2026 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later + */ + +import type { INavigationEntry } from '../../types/navigation.d.ts' + +import { mount } from '@vue/test-utils' +import { describe, expect, it, vi } from 'vitest' + +// Mock l10n for deterministic output; mirror real n() plural behavior. +vi.mock('@nextcloud/l10n', () => ({ + t: (_app: string, text: string) => text, + n: (_app: string, singular: string, plural: string, count: number, vars?: Record) => { + const template = count === 1 ? singular : plural + return template.replace(/\{count\}/g, String(vars?.count ?? count)) + }, +})) + +import AppItem from '../../components/AppItem.vue' + +function makeApp(overrides: Partial = {}): INavigationEntry { + return { + id: 'files', + active: false, + order: 0, + href: '/apps/files', + icon: '/apps/files/img/app.svg', + type: 'link', + name: 'Files', + unread: 0, + ...overrides, + } +} + +describe('core: AppItem', () => { + it('renders the label', () => { + const wrapper = mount(AppItem, { propsData: { app: makeApp({ name: 'Files' }) } }) + expect(wrapper.text()).toContain('Files') + }) + + it('active app has aria-current="page"', () => { + const wrapper = mount(AppItem, { propsData: { app: makeApp({ active: true }) } }) + expect(wrapper.attributes('aria-current')).toBe('page') + }) +}) diff --git a/core/src/tests/components/AppMenu.spec.ts b/core/src/tests/components/AppMenu.spec.ts new file mode 100644 index 0000000000000..bfacb5538b155 --- /dev/null +++ b/core/src/tests/components/AppMenu.spec.ts @@ -0,0 +1,168 @@ +/*! + * SPDX-FileCopyrightText: 2026 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later + */ + +import type { INavigationEntry } from '../../types/navigation.d.ts' + +import { mount } from '@vue/test-utils' +import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest' + +// Hoisted so mocks exist before the SFC's imports run. +const initialState = vi.hoisted(() => ({ + loadState: vi.fn(), +})) +vi.mock('@nextcloud/initial-state', () => initialState) + +const auth = vi.hoisted(() => ({ + getCurrentUser: vi.fn(() => ({ isAdmin: false })), +})) +vi.mock('@nextcloud/auth', () => auth) + +const eventBus = vi.hoisted(() => { + const handlers: Record void>> = {} + return { + subscribe: vi.fn((name: string, fn: (payload: unknown) => void) => { + (handlers[name] ||= []).push(fn) + }), + unsubscribe: vi.fn((name: string, fn: (payload: unknown) => void) => { + handlers[name] = (handlers[name] ?? []).filter((h) => h !== fn) + }), + emit: vi.fn((name: string, payload: unknown) => { + (handlers[name] ?? []).forEach((h) => h(payload)) + }), + __handlers: handlers, + } +}) +vi.mock('@nextcloud/event-bus', () => eventBus) + +// Stub @nextcloud/router so we don't need a webroot for the moreApps URL. +vi.mock('@nextcloud/router', () => ({ + generateUrl: (path: string) => path, + generateFilePath: (app: string, type: string, file: string) => `/apps/${app}/${type}/${file}`, +})) + +// Build a minimal nav entry that satisfies INavigationEntry. +function makeApp(overrides: Partial = {}): INavigationEntry { + return { + id: 'files', + active: false, + order: 0, + href: '/apps/files', + icon: '/apps/files/img/app.svg', + type: 'link', + name: 'Files', + unread: 0, + ...overrides, + } +} + +function fakeApps(): INavigationEntry[] { + return [ + makeApp({ id: 'files', name: 'Files', href: '/apps/files', active: true }), + makeApp({ id: 'mail', name: 'Mail', href: '/apps/mail' }), + makeApp({ id: 'calendar', name: 'Calendar', href: '/apps/calendar' }), + ] +} + +function eightApps(activeIndex: number = -1): INavigationEntry[] { + const ids = ['files', 'mail', 'calendar', 'contacts', 'notes', 'photos', 'talk', 'deck'] + return ids.map((id, i) => makeApp({ + id, + name: id.charAt(0).toUpperCase() + id.slice(1), + href: `/apps/${id}`, + active: i === activeIndex, + })) +} + +// Import AFTER mocks are registered. Static `import` would hoist above +// vi.mock() and break the wiring; dynamic import in beforeAll/await is the +// idiomatic Vitest workaround when you need to control mock state per test. +import type AppMenuModule from '../../components/AppMenu.vue' +let AppMenu: typeof AppMenuModule + +beforeEach(async () => { + vi.clearAllMocks() + for (const k of Object.keys(eventBus.__handlers)) { + delete eventBus.__handlers[k] + } + initialState.loadState.mockImplementation((_app: string, key: string, fallback: unknown) => key === 'apps' ? fakeApps() : fallback) + auth.getCurrentUser.mockReturnValue({ isAdmin: false }) + AppMenu = (await import('../../components/AppMenu.vue')).default +}) + +afterEach(() => { + // NcPopover teleports to ; clear teleported nodes between tests. + while (document.body.firstChild) { + document.body.removeChild(document.body.firstChild) + } +}) + +// Click the waffle trigger and poll until the teleported menuitems are in the +// DOM. NcPopover teleports to so wrapper.find() can't see them; vi.waitFor +// retries the DOM query rather than relying on flaky nextTick/setTimeout flushes. +async function openPopover(wrapper: ReturnType) { + await wrapper.get('.app-menu__waffle').trigger('click') + await vi.waitFor(() => { + expect(document.querySelectorAll('[role="menuitem"]').length).toBeGreaterThan(0) + }) +} + +describe('core: AppMenu', () => { + it('renders one AppItem per app in the list, plus the "App store" tile for non-admins', async () => { + const wrapper = mount(AppMenu, { attachTo: document.body }) + await openPopover(wrapper) + + const items = document.querySelectorAll('[role="menuitem"]') + expect(items).toHaveLength(4) + const labels = Array.from(items).map((el) => el.querySelector('.app-item__label')?.textContent?.trim() ?? '') + expect(labels).toEqual(['Files', 'Mail', 'Calendar', 'App store']) + }) + + it('renders the "More apps" tile when the current user is an admin', async () => { + auth.getCurrentUser.mockReturnValue({ isAdmin: true }) + const wrapper = mount(AppMenu, { attachTo: document.body }) + await openPopover(wrapper) + + const items = document.querySelectorAll('[role="menuitem"]') + expect(items).toHaveLength(4) + const moreApps = Array.from(items).find((el) => el.textContent?.includes('More apps')) + expect(moreApps).toBeTruthy() + }) + + it('ArrowRight moves the roving stop from index 0 to index 1 and focuses it', async () => { + initialState.loadState.mockImplementation((_a: string, key: string, fallback: unknown) => key === 'apps' ? eightApps() : fallback) + const wrapper = mount(AppMenu, { attachTo: document.body }) + await openPopover(wrapper) + + const grid = document.querySelector('.app-menu__grid') as HTMLElement | null + if (!grid) { + throw new Error('app-menu__grid not in document') + } + grid.dispatchEvent(new KeyboardEvent('keydown', { + key: 'ArrowRight', + bubbles: true, + cancelable: true, + })) + await wrapper.vm.$nextTick() + // One extra tick: the handler awaits $nextTick before calling + // .focus(), so we need a second flush before activeElement settles. + await wrapper.vm.$nextTick() + + const items = document.querySelectorAll('[role="menuitem"]') + expect(items[1].getAttribute('tabindex')).toBe('0') + expect(items[0].getAttribute('tabindex')).toBe('-1') + expect(document.activeElement).toBe(items[1]) + }) + + it('returnFocusTarget points at the trigger that opened the popover', async () => { + // focus-trap doesn't activate in jsdom (needs layout), so we can't assert + // on document.activeElement. Instead we call returnFocusTarget() directly + // (the same method NcPopover calls on deactivation). + const wrapper = mount(AppMenu, { attachTo: document.body }) + await wrapper.get('.app-menu__current-app').trigger('click') + + const currentApp = wrapper.get('.app-menu__current-app').element + expect(wrapper.vm.returnFocusTarget()).toBe(currentApp) + }) +}) diff --git a/cypress/e2e/core/header_app-menu.cy.ts b/cypress/e2e/core/header_app-menu.cy.ts new file mode 100644 index 0000000000000..aad8a816678b3 --- /dev/null +++ b/cypress/e2e/core/header_app-menu.cy.ts @@ -0,0 +1,58 @@ +/** + * SPDX-FileCopyrightText: 2026 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later + */ + +import { User } from '@nextcloud/e2e-test-server/cypress' +import { clearState, getNextcloudHeader } from '../../support/commonUtils.ts' + +const getAppMenu = () => getNextcloudHeader().find('.app-menu') +// Both triggers share aria-label="Open apps menu", so getByRole can't +// disambiguate them. BEM classes owned by the component under test are +// the next-best stable selectors. +const getWaffleTrigger = () => getAppMenu().find('.app-menu__waffle') + +describe('Header: App menu (waffle launcher)', { testIsolation: true }, () => { + beforeEach(() => { + clearState() + }) + + describe('Open and click', () => { + beforeEach(() => { + cy.createRandomUser().then(($user) => { + cy.login($user) + cy.visit('/') + }) + }) + + it('opens the popover and navigates when a tile is clicked', () => { + getWaffleTrigger().click() + cy.get('.app-menu__popover').should('be.visible') + getWaffleTrigger().should('have.attr', 'aria-expanded', 'true') + + cy.findAllByRole('menuitem').first() + .should('be.visible') + .then(($tile) => { + const href = $tile.attr('href') + expect(href).to.match(/\/apps\//) + cy.wrap($tile).click() + cy.location('pathname').should('include', '/apps/') + }) + }) + }) + + describe('Admin gating: "More apps" tile', () => { + const admin = new User('admin', 'admin') + + beforeEach(() => { + cy.login(admin) + cy.visit('/') + }) + + it('shows the "More apps" tile for admins', () => { + getWaffleTrigger().click() + cy.get('.app-menu__popover').should('be.visible') + cy.findByRole('menuitem', { name: 'More apps' }).should('be.visible') + }) + }) +}) diff --git a/cypress/e2e/theming/admin-settings_background.cy.ts b/cypress/e2e/theming/admin-settings_background.cy.ts index e4ec661486fe2..52c27aaed8a76 100644 --- a/cypress/e2e/theming/admin-settings_background.cy.ts +++ b/cypress/e2e/theming/admin-settings_background.cy.ts @@ -175,9 +175,15 @@ describe('Remove the default background with a bright color', function() { }) it('See the header being inverted', function() { + // Probe the Nextcloud logo: it carries the same + // `var(--background-image-invert-if-bright)` filter and is always + // present in the header. The waffle launcher's current-app icon only + // renders when an app is active, which isn't the case on settings, + // and the in-popover tiles use a fixed brightness/invert filter + // regardless of theme so they're not a valid inversion probe. cy.waitUntil(() => navigationHeader - .getNavigationEntries() - .find('img') + .logo() + .find('.logo') .then((el) => { let ret = true el.each(function() { diff --git a/cypress/e2e/theming/user-settings_app-order.cy.ts b/cypress/e2e/theming/user-settings_app-order.cy.ts index 3db1a17ac4ee2..5098b9af4314e 100644 --- a/cypress/e2e/theming/user-settings_app-order.cy.ts +++ b/cypress/e2e/theming/user-settings_app-order.cy.ts @@ -35,9 +35,14 @@ describe('User theming set app order', () => { const appOrder = ['Dashboard', 'Files'] appOrderList.assertAppOrder(appOrder) - // Check the top app menu order - navigationHeader.getNavigationEntries() - .each((entry, index) => expect(entry).contain.text(appOrder[index]!)) + // Check the top app menu order. The launcher grid appends a synthetic + // "More apps" / "App store" tile to the user's apps, so iterate + // positionally only over the real-app prefix. + navigationHeader.getNavigationEntries().then(($entries) => { + appOrder.forEach((name, index) => { + expect($entries.eq(index)).to.contain.text(name) + }) + }) }) it('Change the app order', () => { @@ -59,9 +64,14 @@ describe('User theming set app order', () => { .scrollIntoView() appOrderList.assertAppOrder(appOrder) - // Check the top app menu order - navigationHeader.getNavigationEntries() - .each((entry, index) => expect(entry).contain.text(appOrder[index]!)) + // Check the top app menu order. Idempotent open in the page object + // re-opens the popover after the reload above. The synthetic trailing + // tile is ignored by iterating only over the expected app names. + navigationHeader.getNavigationEntries().then(($entries) => { + appOrder.forEach((name, index) => { + expect($entries.eq(index)).to.contain.text(name) + }) + }) }) }) @@ -140,9 +150,13 @@ describe('User theming set app order with default app', () => { cy.reload() const appOrder = ['Files', 'Test App', 'Dashboard', 'Test App 2'] - // Check the top app menu order - navigationHeader.getNavigationEntries() - .each((entry, index) => expect(entry).contain.text(appOrder[index]!)) + // Check the top app menu order. See note above: the launcher appends + // a synthetic tile that we skip by iterating positionally. + navigationHeader.getNavigationEntries().then(($entries) => { + appOrder.forEach((name, index) => { + expect($entries.eq(index)).to.contain.text(name) + }) + }) }) }) @@ -219,9 +233,12 @@ describe('User theming reset app order', () => { const appOrder = ['Dashboard', 'Files'] appOrderList.assertAppOrder(appOrder) - // Check the top app menu order - navigationHeader.getNavigationEntries() - .each((entry, index) => expect(entry).contain.text(appOrder[index]!)) + // Check the top app menu order. See note above on the synthetic tile. + navigationHeader.getNavigationEntries().then(($entries) => { + appOrder.forEach((name, index) => { + expect($entries.eq(index)).to.contain.text(name) + }) + }) }) it('See the reset button is disabled', () => { @@ -263,9 +280,12 @@ describe('User theming reset app order', () => { it('See the app order is restored', () => { const appOrder = ['Dashboard', 'Files'] appOrderList.assertAppOrder(appOrder) - // Check the top app menu order - navigationHeader.getNavigationEntries() - .each((entry, index) => expect(entry).contain.text(appOrder[index]!)) + // Check the top app menu order. See note above on the synthetic tile. + navigationHeader.getNavigationEntries().then(($entries) => { + appOrder.forEach((name, index) => { + expect($entries.eq(index)).to.contain.text(name) + }) + }) }) it('See the reset button is disabled again', () => { diff --git a/cypress/e2e/theming/user-settings_background.cy.ts b/cypress/e2e/theming/user-settings_background.cy.ts index 639de55f571f6..2ad0023047253 100644 --- a/cypress/e2e/theming/user-settings_background.cy.ts +++ b/cypress/e2e/theming/user-settings_background.cy.ts @@ -131,7 +131,13 @@ describe('User select a bright custom color and remove background', function() { }) it('See the header being inverted', function() { - cy.waitUntil(() => navigationHeader.getNavigationEntries().find('img').then((el) => { + // Probe the Nextcloud logo: it carries the same + // `var(--background-image-invert-if-bright)` filter and is always + // present in the header. The waffle launcher's current-app icon only + // renders when an app is active, which isn't the case on settings, + // and the in-popover tiles use a fixed brightness/invert filter + // regardless of theme so they're not a valid inversion probe. + cy.waitUntil(() => navigationHeader.logo().find('.logo').then((el) => { let ret = true el.each(function() { ret = ret && window.getComputedStyle(this).filter === 'invert(1)' @@ -157,7 +163,9 @@ describe('User select a bright custom color and remove background', function() { }) it('See the header NOT being inverted this time', function() { - cy.waitUntil(() => navigationHeader.getNavigationEntries().find('img').then((el) => { + // Probe the Nextcloud logo: see the inverted-header test above for + // why we don't probe the menu icons. + cy.waitUntil(() => navigationHeader.logo().find('.logo').then((el) => { let ret = true el.each(function() { ret = ret && window.getComputedStyle(this).filter === 'none' diff --git a/cypress/pages/NavigationHeader.ts b/cypress/pages/NavigationHeader.ts index 330dc58eefc1c..e911a597ce4c5 100644 --- a/cypress/pages/NavigationHeader.ts +++ b/cypress/pages/NavigationHeader.ts @@ -4,7 +4,11 @@ */ /** - * Page object model for the Nextcloud navigation header + * Page object model for the Nextcloud navigation header. + * + * The app launcher (waffle menu) is an NcPopover whose content is teleported + * to , so the menu items do not live inside the