diff options
244 files changed, 780 insertions, 850 deletions
diff --git a/apps/admin_audit/l10n/hy.js b/apps/admin_audit/l10n/hy.js new file mode 100644 index 00000000000..12a7cf5ab92 --- /dev/null +++ b/apps/admin_audit/l10n/hy.js @@ -0,0 +1,7 @@ +OC.L10N.register( + "admin_audit", + { + "Auditing / Logging" : "Աուդիտ / Տեղեկագրում", + "Provides logging abilities for Nextcloud such as logging file accesses or otherwise sensitive actions." : "Nextcloud ֊ի համար տրամադրում է տեղեկագրման հնարավորություն՝ նիշքերի հասանելիության և զգայուն գործողություինների պահպանումը տեղեկամատյանում։" +}, +"nplurals=2; plural=(n != 1);"); diff --git a/apps/admin_audit/l10n/hy.json b/apps/admin_audit/l10n/hy.json new file mode 100644 index 00000000000..43cf433d8dd --- /dev/null +++ b/apps/admin_audit/l10n/hy.json @@ -0,0 +1,5 @@ +{ "translations": { + "Auditing / Logging" : "Աուդիտ / Տեղեկագրում", + "Provides logging abilities for Nextcloud such as logging file accesses or otherwise sensitive actions." : "Nextcloud ֊ի համար տրամադրում է տեղեկագրման հնարավորություն՝ նիշքերի հասանելիության և զգայուն գործողություինների պահպանումը տեղեկամատյանում։" +},"pluralForm" :"nplurals=2; plural=(n != 1);" +}
\ No newline at end of file diff --git a/apps/dav/l10n/ca.js b/apps/dav/l10n/ca.js index 1174802208c..21243cf44b1 100644 --- a/apps/dav/l10n/ca.js +++ b/apps/dav/l10n/ca.js @@ -72,8 +72,11 @@ OC.L10N.register( "Where: %s" : "On: %s", "%1$s via %2$s" : "%1$s mitjançant %2$s", "Cancelled: %1$s" : "Cancel·lat: %1$s", + "\"%1$s\" has been canceled" : "\"%1$s\" s'ha cancel·lat", "Re: %1$s" : "Re: %1$s", + "%1$s has responded to your invitation" : "%1$s ha respost a la teva invitació", "Invitation: %1$s" : "Invitació: %1$s", + "%1$s would like to invite you to \"%2$s\"" : "%1$s vol convidar-vos a \"%2$s\"", "Organizer:" : "Organitzador:", "Attendees:" : "Assistents:", "Title:" : "Títol:", diff --git a/apps/dav/l10n/ca.json b/apps/dav/l10n/ca.json index 0a6f4402503..6fe01921379 100644 --- a/apps/dav/l10n/ca.json +++ b/apps/dav/l10n/ca.json @@ -70,8 +70,11 @@ "Where: %s" : "On: %s", "%1$s via %2$s" : "%1$s mitjançant %2$s", "Cancelled: %1$s" : "Cancel·lat: %1$s", + "\"%1$s\" has been canceled" : "\"%1$s\" s'ha cancel·lat", "Re: %1$s" : "Re: %1$s", + "%1$s has responded to your invitation" : "%1$s ha respost a la teva invitació", "Invitation: %1$s" : "Invitació: %1$s", + "%1$s would like to invite you to \"%2$s\"" : "%1$s vol convidar-vos a \"%2$s\"", "Organizer:" : "Organitzador:", "Attendees:" : "Assistents:", "Title:" : "Títol:", diff --git a/apps/encryption/l10n/sr.js b/apps/encryption/l10n/sr.js index cc3f63d9d87..8077b673ec8 100644 --- a/apps/encryption/l10n/sr.js +++ b/apps/encryption/l10n/sr.js @@ -28,11 +28,15 @@ OC.L10N.register( "Bad Signature" : "Лош потпис", "Missing Signature" : "Недостаје потпис", "one-time password for server-side-encryption" : "једнократна лозинка за шифровање на страни сервера", + "Cannot decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Овај фајл не може да се дешифрује, то је вероватно дељени фајл. Молимо вас да замолите власника да га поново подели са вама.", + "Cannot read this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Овај фајл не може да се прочита, то је вероватно дељени фајл. Молимо вас да замолите власника да га поново подели са вама.", "Default encryption module" : "Подразумевани модул за шифровање", "Default encryption module for server-side encryption" : "Подразумевани модул за шифровање на серверској страни", "In order to use this encryption module you need to enable server-side\n\t\tencryption in the admin settings. Once enabled this module will encrypt\n\t\tall your files transparently. The encryption is based on AES 256 keys.\n\t\tThe module won't touch existing files, only new files will be encrypted\n\t\tafter server-side encryption was enabled. It is also not possible to\n\t\tdisable the encryption again and switch back to a unencrypted system.\n\t\tPlease read the documentation to know all implications before you decide\n\t\tto enable server-side encryption." : "Да бисте користили овај модул, морате на серверској страни омогућити\n\t\tшифровање у администраторским поставкама. Једном укључен, овај модул ће шифровати\n\t\tсве фајлове транспарентно. Шифровање је базирано на „AES 256“ кључевима.\n\t\tМодул неће дирати постојеће фајлове, само ће нови фајлови бити шифровани\n\t\tнакон укључења шифровања на серверској страни. Није могуће да\n\t\tсе искључи шифровање и да врати се на нешифровани систем.\n\t\tПрочитајте документацију да сазнате све импликације пре него што се одлучите\n\t\tда укључите шифровање на серверу.", + "Hey there,\n\nThe administration enabled server-side-encryption. Your files were encrypted using the password \"%s\".\n\nPlease login to the web interface, go to the section \"Basic encryption module\" of your personal settings and update your encryption password by entering this password into the \"Old log-in password\" field and your current login-password.\n\n" : "Здраво,\n\nАдминистрација је укључила енкрипцију на страни сервера. Ваши фајлови су шифровани коришћењем лозинке „%s”.\n\nМолимо вас да се пријавите веб интерфејсом, одете на одељак „Модул основне енкрипције” у вашим личним подешавањима и ажурирате лозинку шифрирања уношењем ове лозинке у поље „Стара лозинка за пријаву” и вашу текућу лозинку за пријаву.\n\n", "The share will expire on %s." : "Дељење истиче %s.", "Cheers!" : "Здраво!", + "Hey there,<br><br>The administration enabled server-side-encryption. Your files were encrypted using the password <strong>%s</strong>.<br><br>Please login to the web interface, go to the section \"Basic encryption module\" of your personal settings and update your encryption password by entering this password into the \"Old log-in password\" field and your current login-password.<br><br>" : "Здраво,<br><br>Администрација је укључила енкрипцију на страни сервера. Ваши фајлови су шифровани коришћењем лозинке <strong>%s</strong>.<br><br>Молимо вас да се пријавите веб интерфејсом, одете на одељак „Модул основне енкрипције” у вашим личним подешавањима и ажурирате лозинку шифрирања уношењем ове лозинке у поље „Стара лозинка за пријаву” и вашу текућу лозинку за пријаву.<br><br>", "Encryption app is enabled but your keys are not initialized, please log-out and log-in again" : "Апликација за шифровање је укључена али кључеви још нису иницијализовани. Одјавите се и поново се пријавите.", "Encrypt the home storage" : "Шифровање главног складишта", "Enabling this option encrypts all files stored on the main storage, otherwise only files on external storage will be encrypted" : "Укључивање ове опције ће шифровати све фајлове на главном складишту. У супротном ће само фајлови на спољашњем складишту бити шифровани", diff --git a/apps/encryption/l10n/sr.json b/apps/encryption/l10n/sr.json index 9dafcc7571c..bb13622f2b3 100644 --- a/apps/encryption/l10n/sr.json +++ b/apps/encryption/l10n/sr.json @@ -26,11 +26,15 @@ "Bad Signature" : "Лош потпис", "Missing Signature" : "Недостаје потпис", "one-time password for server-side-encryption" : "једнократна лозинка за шифровање на страни сервера", + "Cannot decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Овај фајл не може да се дешифрује, то је вероватно дељени фајл. Молимо вас да замолите власника да га поново подели са вама.", + "Cannot read this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Овај фајл не може да се прочита, то је вероватно дељени фајл. Молимо вас да замолите власника да га поново подели са вама.", "Default encryption module" : "Подразумевани модул за шифровање", "Default encryption module for server-side encryption" : "Подразумевани модул за шифровање на серверској страни", "In order to use this encryption module you need to enable server-side\n\t\tencryption in the admin settings. Once enabled this module will encrypt\n\t\tall your files transparently. The encryption is based on AES 256 keys.\n\t\tThe module won't touch existing files, only new files will be encrypted\n\t\tafter server-side encryption was enabled. It is also not possible to\n\t\tdisable the encryption again and switch back to a unencrypted system.\n\t\tPlease read the documentation to know all implications before you decide\n\t\tto enable server-side encryption." : "Да бисте користили овај модул, морате на серверској страни омогућити\n\t\tшифровање у администраторским поставкама. Једном укључен, овај модул ће шифровати\n\t\tсве фајлове транспарентно. Шифровање је базирано на „AES 256“ кључевима.\n\t\tМодул неће дирати постојеће фајлове, само ће нови фајлови бити шифровани\n\t\tнакон укључења шифровања на серверској страни. Није могуће да\n\t\tсе искључи шифровање и да врати се на нешифровани систем.\n\t\tПрочитајте документацију да сазнате све импликације пре него што се одлучите\n\t\tда укључите шифровање на серверу.", + "Hey there,\n\nThe administration enabled server-side-encryption. Your files were encrypted using the password \"%s\".\n\nPlease login to the web interface, go to the section \"Basic encryption module\" of your personal settings and update your encryption password by entering this password into the \"Old log-in password\" field and your current login-password.\n\n" : "Здраво,\n\nАдминистрација је укључила енкрипцију на страни сервера. Ваши фајлови су шифровани коришћењем лозинке „%s”.\n\nМолимо вас да се пријавите веб интерфејсом, одете на одељак „Модул основне енкрипције” у вашим личним подешавањима и ажурирате лозинку шифрирања уношењем ове лозинке у поље „Стара лозинка за пријаву” и вашу текућу лозинку за пријаву.\n\n", "The share will expire on %s." : "Дељење истиче %s.", "Cheers!" : "Здраво!", + "Hey there,<br><br>The administration enabled server-side-encryption. Your files were encrypted using the password <strong>%s</strong>.<br><br>Please login to the web interface, go to the section \"Basic encryption module\" of your personal settings and update your encryption password by entering this password into the \"Old log-in password\" field and your current login-password.<br><br>" : "Здраво,<br><br>Администрација је укључила енкрипцију на страни сервера. Ваши фајлови су шифровани коришћењем лозинке <strong>%s</strong>.<br><br>Молимо вас да се пријавите веб интерфејсом, одете на одељак „Модул основне енкрипције” у вашим личним подешавањима и ажурирате лозинку шифрирања уношењем ове лозинке у поље „Стара лозинка за пријаву” и вашу текућу лозинку за пријаву.<br><br>", "Encryption app is enabled but your keys are not initialized, please log-out and log-in again" : "Апликација за шифровање је укључена али кључеви још нису иницијализовани. Одјавите се и поново се пријавите.", "Encrypt the home storage" : "Шифровање главног складишта", "Enabling this option encrypts all files stored on the main storage, otherwise only files on external storage will be encrypted" : "Укључивање ове опције ће шифровати све фајлове на главном складишту. У супротном ће само фајлови на спољашњем складишту бити шифровани", diff --git a/apps/federatedfilesharing/l10n/uk.js b/apps/federatedfilesharing/l10n/uk.js index bd08464cde1..7f665293ff3 100644 --- a/apps/federatedfilesharing/l10n/uk.js +++ b/apps/federatedfilesharing/l10n/uk.js @@ -49,7 +49,7 @@ OC.L10N.register( "Share with me through my #Nextcloud Federated Cloud ID, see {url}" : "Поділіться зі мною через мій #Nextcloud Federated Cloud ID, див. {url}", "Share with me through my #Nextcloud Federated Cloud ID" : "Поділіться зі мною через мій #Nextcloud Federated Cloud ID", "Cloud ID copied to the clipboard" : "Cloud ID скопійовано в буфер обміну", - "Copy to clipboard" : "Скопіювати в буфер обміну ", + "Copy to clipboard" : "Копіювати до буферу обміну", "Clipboard is not available" : "Буфер обміну недоступний", "Copied!" : "Скопійовано!", "Copy" : "Копіювати", diff --git a/apps/federatedfilesharing/l10n/uk.json b/apps/federatedfilesharing/l10n/uk.json index 6b7c6fa1102..9b2ec338956 100644 --- a/apps/federatedfilesharing/l10n/uk.json +++ b/apps/federatedfilesharing/l10n/uk.json @@ -47,7 +47,7 @@ "Share with me through my #Nextcloud Federated Cloud ID, see {url}" : "Поділіться зі мною через мій #Nextcloud Federated Cloud ID, див. {url}", "Share with me through my #Nextcloud Federated Cloud ID" : "Поділіться зі мною через мій #Nextcloud Federated Cloud ID", "Cloud ID copied to the clipboard" : "Cloud ID скопійовано в буфер обміну", - "Copy to clipboard" : "Скопіювати в буфер обміну ", + "Copy to clipboard" : "Копіювати до буферу обміну", "Clipboard is not available" : "Буфер обміну недоступний", "Copied!" : "Скопійовано!", "Copy" : "Копіювати", diff --git a/apps/files/l10n/ca.js b/apps/files/l10n/ca.js index f8c19dbb025..bc9aed62388 100644 --- a/apps/files/l10n/ca.js +++ b/apps/files/l10n/ca.js @@ -98,6 +98,7 @@ OC.L10N.register( "Your storage is almost full ({usedSpacePercent}%)." : "L'emmagatzematge està gairebé ple ({usedSpacePercent}%).", "_matches \"{filter}\"_::_match \"{filter}\"_" : ["coincideix amb «{filter}»","coincideixen amb «{filter}»"], "View in folder" : "Visualitza-ho a la carpeta", + "Direct link was copied (only works for users who have access to this file/folder)" : "S'ha copiat l'enllaç directe (només funciona per als usuaris que tenen accés a aquest fitxer/carpeta)", "Path" : "Ruta", "_%n byte_::_%n bytes_" : ["%n byte","%n bytes"], "Favorited" : "S'ha afegit als preferits", @@ -165,6 +166,10 @@ OC.L10N.register( "The ownership transfer of {path} from {user} has completed." : "S'ha completat la transferència de propietat de {path} de {user}.", "in %s" : "%s", "File Management" : "Gestió de fitxers", + "Storage informations" : "Informació d'emmagatzematge", + "{usedQuotaByte} used" : "{usedQuotaByte} utilitzat", + "{relative}% used" : "{relative}% used", + "Could not refresh storage stats" : "No s'han pogut actualitzar les estadístiques d'emmagatzematge", "Transfer ownership of a file or folder" : "Transferiu la propietat d'un fitxer o carpeta", "Choose file or folder to transfer" : "Tria el fitxer o carpeta que s'ha de transferir", "Change" : "Canvia", @@ -178,7 +183,10 @@ OC.L10N.register( "Ownership transfer request sent" : "S'ha enviat la sol·licitud de transferència de propietat", "Cannot transfer ownership of a file or folder you do not own" : "No es pot transferir la propietat d'un fitxer o carpeta que no és vostre", "Select file or folder to link to" : "Seleccioneu el fitxer o la carpeta per enllaçar", + "Open the files app settings" : "Obriu la configuració de l'aplicació de fitxers", "Files settings" : "Paràmetres dels fitxers", + "File cannot be accessed" : "No es pot accedir al fitxer", + "You might not have have permissions to view it, ask the sender to share it" : "És possible que no tingueu permisos per veure'l, demaneu al remitent que el comparteixi", "Show hidden files" : "Mostra els fitxers ocults", "Crop image previews" : "Retalla les previsualitzacions de les imatges", "Additional settings" : "Paràmetres addicionals", @@ -186,6 +194,7 @@ OC.L10N.register( "Copy to clipboard" : "Copia-ho al porta-retalls", "Use this address to access your Files via WebDAV" : "Utilitzeu aquesta adreça per a accedir als vostres fitxers mitjançant WebDAV", "Clipboard is not available" : "El porta-retalls no està disponible", + "WebDAV URL copied to clipboard" : "URL de WebDAV copiat al porta-retalls", "Unable to change the favourite state of the file" : "No s'ha pogut canviar l'estat de preferit del fitxer", "Error while loading the file data" : "S'ha produït un error en carregar la informació del fitxer", "Pick a template for {name}" : "Trieu una plantilla per a {name}", diff --git a/apps/files/l10n/ca.json b/apps/files/l10n/ca.json index f407209d3cc..60e666f1e3e 100644 --- a/apps/files/l10n/ca.json +++ b/apps/files/l10n/ca.json @@ -96,6 +96,7 @@ "Your storage is almost full ({usedSpacePercent}%)." : "L'emmagatzematge està gairebé ple ({usedSpacePercent}%).", "_matches \"{filter}\"_::_match \"{filter}\"_" : ["coincideix amb «{filter}»","coincideixen amb «{filter}»"], "View in folder" : "Visualitza-ho a la carpeta", + "Direct link was copied (only works for users who have access to this file/folder)" : "S'ha copiat l'enllaç directe (només funciona per als usuaris que tenen accés a aquest fitxer/carpeta)", "Path" : "Ruta", "_%n byte_::_%n bytes_" : ["%n byte","%n bytes"], "Favorited" : "S'ha afegit als preferits", @@ -163,6 +164,10 @@ "The ownership transfer of {path} from {user} has completed." : "S'ha completat la transferència de propietat de {path} de {user}.", "in %s" : "%s", "File Management" : "Gestió de fitxers", + "Storage informations" : "Informació d'emmagatzematge", + "{usedQuotaByte} used" : "{usedQuotaByte} utilitzat", + "{relative}% used" : "{relative}% used", + "Could not refresh storage stats" : "No s'han pogut actualitzar les estadístiques d'emmagatzematge", "Transfer ownership of a file or folder" : "Transferiu la propietat d'un fitxer o carpeta", "Choose file or folder to transfer" : "Tria el fitxer o carpeta que s'ha de transferir", "Change" : "Canvia", @@ -176,7 +181,10 @@ "Ownership transfer request sent" : "S'ha enviat la sol·licitud de transferència de propietat", "Cannot transfer ownership of a file or folder you do not own" : "No es pot transferir la propietat d'un fitxer o carpeta que no és vostre", "Select file or folder to link to" : "Seleccioneu el fitxer o la carpeta per enllaçar", + "Open the files app settings" : "Obriu la configuració de l'aplicació de fitxers", "Files settings" : "Paràmetres dels fitxers", + "File cannot be accessed" : "No es pot accedir al fitxer", + "You might not have have permissions to view it, ask the sender to share it" : "És possible que no tingueu permisos per veure'l, demaneu al remitent que el comparteixi", "Show hidden files" : "Mostra els fitxers ocults", "Crop image previews" : "Retalla les previsualitzacions de les imatges", "Additional settings" : "Paràmetres addicionals", @@ -184,6 +192,7 @@ "Copy to clipboard" : "Copia-ho al porta-retalls", "Use this address to access your Files via WebDAV" : "Utilitzeu aquesta adreça per a accedir als vostres fitxers mitjançant WebDAV", "Clipboard is not available" : "El porta-retalls no està disponible", + "WebDAV URL copied to clipboard" : "URL de WebDAV copiat al porta-retalls", "Unable to change the favourite state of the file" : "No s'ha pogut canviar l'estat de preferit del fitxer", "Error while loading the file data" : "S'ha produït un error en carregar la informació del fitxer", "Pick a template for {name}" : "Trieu una plantilla per a {name}", diff --git a/apps/files/l10n/cs.js b/apps/files/l10n/cs.js index 9694d1ac7cc..96b6e94bbfb 100644 --- a/apps/files/l10n/cs.js +++ b/apps/files/l10n/cs.js @@ -185,6 +185,8 @@ OC.L10N.register( "Select file or folder to link to" : "Vyberte soubor nebo složku na kterou odkazovat", "Open the files app settings" : "Otevřít nastavení aplikace soubory", "Files settings" : "Nastavení pro Soubory", + "File cannot be accessed" : "K souboru se nedaří přistoupit", + "You might not have have permissions to view it, ask the sender to share it" : "Může být, že nemáte oprávnění pro jeho zobrazení – požádejte odesilatele aby vám ho nasdílel", "Show hidden files" : "Zobrazit skryté soubory", "Crop image previews" : "Oříznout náhledy obrázků", "Additional settings" : "Další nastavení", diff --git a/apps/files/l10n/cs.json b/apps/files/l10n/cs.json index d57fb1ffb5c..07d0852f2da 100644 --- a/apps/files/l10n/cs.json +++ b/apps/files/l10n/cs.json @@ -183,6 +183,8 @@ "Select file or folder to link to" : "Vyberte soubor nebo složku na kterou odkazovat", "Open the files app settings" : "Otevřít nastavení aplikace soubory", "Files settings" : "Nastavení pro Soubory", + "File cannot be accessed" : "K souboru se nedaří přistoupit", + "You might not have have permissions to view it, ask the sender to share it" : "Může být, že nemáte oprávnění pro jeho zobrazení – požádejte odesilatele aby vám ho nasdílel", "Show hidden files" : "Zobrazit skryté soubory", "Crop image previews" : "Oříznout náhledy obrázků", "Additional settings" : "Další nastavení", diff --git a/apps/files/l10n/de.js b/apps/files/l10n/de.js index f4be59a6283..9949a310d1e 100644 --- a/apps/files/l10n/de.js +++ b/apps/files/l10n/de.js @@ -185,6 +185,8 @@ OC.L10N.register( "Select file or folder to link to" : "Datei oder Ordner zum Verknüpfen auswählen", "Open the files app settings" : "Einstellungen der Dateien-App öffnen", "Files settings" : "Dateien-Einstellungen", + "File cannot be accessed" : "Auf die Datei kann nicht zugegriffen werden", + "You might not have have permissions to view it, ask the sender to share it" : "Möglicherweise hast du nicht die Berechtigung zur Anzeige. Bitte den Absender, die Datei freizugeben.", "Show hidden files" : "Versteckte Dateien anzeigen", "Crop image previews" : "Bildvorschauen zuschneiden", "Additional settings" : "Zusätzliche Einstellungen", @@ -192,6 +194,7 @@ OC.L10N.register( "Copy to clipboard" : "In die Zwischenablage kopieren", "Use this address to access your Files via WebDAV" : "Diese Adresse benutzen, um über WebDAV auf deine Dateien zuzugreifen", "Clipboard is not available" : "Zwischenablage ist nicht verfügbar", + "WebDAV URL copied to clipboard" : "WebDAV-URL in die Zwischenablage kopiert", "Unable to change the favourite state of the file" : "Der favorisierte Status der Datei konnte nicht geändert werden", "Error while loading the file data" : "Fehler beim Laden der Datei-Daten", "Pick a template for {name}" : "Eine Vorlage für {name} wählen", diff --git a/apps/files/l10n/de.json b/apps/files/l10n/de.json index 2b89894ada7..9a3d5c2bffd 100644 --- a/apps/files/l10n/de.json +++ b/apps/files/l10n/de.json @@ -183,6 +183,8 @@ "Select file or folder to link to" : "Datei oder Ordner zum Verknüpfen auswählen", "Open the files app settings" : "Einstellungen der Dateien-App öffnen", "Files settings" : "Dateien-Einstellungen", + "File cannot be accessed" : "Auf die Datei kann nicht zugegriffen werden", + "You might not have have permissions to view it, ask the sender to share it" : "Möglicherweise hast du nicht die Berechtigung zur Anzeige. Bitte den Absender, die Datei freizugeben.", "Show hidden files" : "Versteckte Dateien anzeigen", "Crop image previews" : "Bildvorschauen zuschneiden", "Additional settings" : "Zusätzliche Einstellungen", @@ -190,6 +192,7 @@ "Copy to clipboard" : "In die Zwischenablage kopieren", "Use this address to access your Files via WebDAV" : "Diese Adresse benutzen, um über WebDAV auf deine Dateien zuzugreifen", "Clipboard is not available" : "Zwischenablage ist nicht verfügbar", + "WebDAV URL copied to clipboard" : "WebDAV-URL in die Zwischenablage kopiert", "Unable to change the favourite state of the file" : "Der favorisierte Status der Datei konnte nicht geändert werden", "Error while loading the file data" : "Fehler beim Laden der Datei-Daten", "Pick a template for {name}" : "Eine Vorlage für {name} wählen", diff --git a/apps/files/l10n/de_DE.js b/apps/files/l10n/de_DE.js index 231105bfff6..75e8f0cd2fb 100644 --- a/apps/files/l10n/de_DE.js +++ b/apps/files/l10n/de_DE.js @@ -185,6 +185,8 @@ OC.L10N.register( "Select file or folder to link to" : "Datei oder Ordner zum Verknüpfen auswählen", "Open the files app settings" : "Einstellungen der Dateien-App öffnen", "Files settings" : "Dateien-Einstellungen", + "File cannot be accessed" : "Auf die Datei kann nicht zugegriffen werden", + "You might not have have permissions to view it, ask the sender to share it" : "Möglicherweise haben Sie nicht die Berechtigung zur Anzeige. Bitten Sie den Absender, die Datei freizugeben.", "Show hidden files" : "Versteckte Dateien anzeigen", "Crop image previews" : "Bildvorschauen zuschneiden", "Additional settings" : "Zusätzliche Einstellungen", diff --git a/apps/files/l10n/de_DE.json b/apps/files/l10n/de_DE.json index 8cd8f152e89..4c0602b750d 100644 --- a/apps/files/l10n/de_DE.json +++ b/apps/files/l10n/de_DE.json @@ -183,6 +183,8 @@ "Select file or folder to link to" : "Datei oder Ordner zum Verknüpfen auswählen", "Open the files app settings" : "Einstellungen der Dateien-App öffnen", "Files settings" : "Dateien-Einstellungen", + "File cannot be accessed" : "Auf die Datei kann nicht zugegriffen werden", + "You might not have have permissions to view it, ask the sender to share it" : "Möglicherweise haben Sie nicht die Berechtigung zur Anzeige. Bitten Sie den Absender, die Datei freizugeben.", "Show hidden files" : "Versteckte Dateien anzeigen", "Crop image previews" : "Bildvorschauen zuschneiden", "Additional settings" : "Zusätzliche Einstellungen", diff --git a/apps/files/l10n/en_GB.js b/apps/files/l10n/en_GB.js index 2757bae1384..2d9c91eb991 100644 --- a/apps/files/l10n/en_GB.js +++ b/apps/files/l10n/en_GB.js @@ -185,6 +185,8 @@ OC.L10N.register( "Select file or folder to link to" : "Select file or folder to link to", "Open the files app settings" : "Open the files app settings", "Files settings" : "Files settings", + "File cannot be accessed" : "File cannot be accessed", + "You might not have have permissions to view it, ask the sender to share it" : "You might not have have permissions to view it, ask the sender to share it", "Show hidden files" : "Show hidden files", "Crop image previews" : "Crop image previews", "Additional settings" : "Additional settings", diff --git a/apps/files/l10n/en_GB.json b/apps/files/l10n/en_GB.json index d0c15b341a0..5338d82f462 100644 --- a/apps/files/l10n/en_GB.json +++ b/apps/files/l10n/en_GB.json @@ -183,6 +183,8 @@ "Select file or folder to link to" : "Select file or folder to link to", "Open the files app settings" : "Open the files app settings", "Files settings" : "Files settings", + "File cannot be accessed" : "File cannot be accessed", + "You might not have have permissions to view it, ask the sender to share it" : "You might not have have permissions to view it, ask the sender to share it", "Show hidden files" : "Show hidden files", "Crop image previews" : "Crop image previews", "Additional settings" : "Additional settings", diff --git a/apps/files/l10n/fr.js b/apps/files/l10n/fr.js index 86c1d1a3a77..2c9ab089765 100644 --- a/apps/files/l10n/fr.js +++ b/apps/files/l10n/fr.js @@ -185,6 +185,8 @@ OC.L10N.register( "Select file or folder to link to" : "Sélectionnez le fichier ou le dossier à lier", "Open the files app settings" : "Ouvrir les paramètres de l'application Fichiers", "Files settings" : "Paramètres des fichiers", + "File cannot be accessed" : "Impossible d'accéder au fichier", + "You might not have have permissions to view it, ask the sender to share it" : "Vous n’avez peut-être pas les autorisations pour le voir, demandez à l’expéditeur de le partager.", "Show hidden files" : "Afficher les fichiers masqués", "Crop image previews" : "Afficher en miniatures carrées", "Additional settings" : "Paramètres supplémentaires", diff --git a/apps/files/l10n/fr.json b/apps/files/l10n/fr.json index 40577b7551c..5a57ef9a664 100644 --- a/apps/files/l10n/fr.json +++ b/apps/files/l10n/fr.json @@ -183,6 +183,8 @@ "Select file or folder to link to" : "Sélectionnez le fichier ou le dossier à lier", "Open the files app settings" : "Ouvrir les paramètres de l'application Fichiers", "Files settings" : "Paramètres des fichiers", + "File cannot be accessed" : "Impossible d'accéder au fichier", + "You might not have have permissions to view it, ask the sender to share it" : "Vous n’avez peut-être pas les autorisations pour le voir, demandez à l’expéditeur de le partager.", "Show hidden files" : "Afficher les fichiers masqués", "Crop image previews" : "Afficher en miniatures carrées", "Additional settings" : "Paramètres supplémentaires", diff --git a/apps/files/l10n/ja.js b/apps/files/l10n/ja.js index d283e91319c..f0cb2e85445 100644 --- a/apps/files/l10n/ja.js +++ b/apps/files/l10n/ja.js @@ -166,6 +166,10 @@ OC.L10N.register( "The ownership transfer of {path} from {user} has completed." : "{user} からの {path} の所有権転送が完了しました。", "in %s" : "%s で", "File Management" : "ファイル管理", + "Storage informations" : "ストレージ情報", + "{usedQuotaByte} used" : "{usedQuotaByte} 使用されています", + "{relative}% used" : "{relative}% 使用されています", + "Could not refresh storage stats" : "ストレージの状態を更新できませんでした", "Transfer ownership of a file or folder" : "ファイルまたはフォルダーの所有権を譲渡する", "Choose file or folder to transfer" : "譲渡するファイルまたはフォルダーを選択してください", "Change" : "変更", @@ -178,7 +182,11 @@ OC.L10N.register( "Unknown error" : "不明なエラー", "Ownership transfer request sent" : "所有権転送のリクエストを送信しました", "Cannot transfer ownership of a file or folder you do not own" : "所有していないファイルまたはフォルダーの所有権を譲渡することはできません", + "Select file or folder to link to" : "リンク先のファイルまたはフォルダを選択", + "Open the files app settings" : "ファイルアプリの設定を開く", "Files settings" : "ファイルの設定", + "File cannot be accessed" : "ファイルにアクセスできません", + "You might not have have permissions to view it, ask the sender to share it" : "閲覧権限がない可能性があるため、送信者に共有を依頼してください", "Show hidden files" : "隠しファイルを表示", "Crop image previews" : "プレビュー画像を切り抜く", "Additional settings" : "追加設定", @@ -186,6 +194,7 @@ OC.L10N.register( "Copy to clipboard" : "クリップボードにコピー", "Use this address to access your Files via WebDAV" : "このアドレスを使用すれば、WebDAV経由でファイルにアクセスできます", "Clipboard is not available" : "クリップボードは利用できません", + "WebDAV URL copied to clipboard" : "WebDAVのURLがクリップボードにコピーされました", "Unable to change the favourite state of the file" : "ファイルのお気に入りの状態を変更できません", "Error while loading the file data" : "ファイルデータの読み込み中にエラーが発生しました", "Pick a template for {name}" : "{name} のテンプレートを選択してください", diff --git a/apps/files/l10n/ja.json b/apps/files/l10n/ja.json index 2300be350d8..e25093cd913 100644 --- a/apps/files/l10n/ja.json +++ b/apps/files/l10n/ja.json @@ -164,6 +164,10 @@ "The ownership transfer of {path} from {user} has completed." : "{user} からの {path} の所有権転送が完了しました。", "in %s" : "%s で", "File Management" : "ファイル管理", + "Storage informations" : "ストレージ情報", + "{usedQuotaByte} used" : "{usedQuotaByte} 使用されています", + "{relative}% used" : "{relative}% 使用されています", + "Could not refresh storage stats" : "ストレージの状態を更新できませんでした", "Transfer ownership of a file or folder" : "ファイルまたはフォルダーの所有権を譲渡する", "Choose file or folder to transfer" : "譲渡するファイルまたはフォルダーを選択してください", "Change" : "変更", @@ -176,7 +180,11 @@ "Unknown error" : "不明なエラー", "Ownership transfer request sent" : "所有権転送のリクエストを送信しました", "Cannot transfer ownership of a file or folder you do not own" : "所有していないファイルまたはフォルダーの所有権を譲渡することはできません", + "Select file or folder to link to" : "リンク先のファイルまたはフォルダを選択", + "Open the files app settings" : "ファイルアプリの設定を開く", "Files settings" : "ファイルの設定", + "File cannot be accessed" : "ファイルにアクセスできません", + "You might not have have permissions to view it, ask the sender to share it" : "閲覧権限がない可能性があるため、送信者に共有を依頼してください", "Show hidden files" : "隠しファイルを表示", "Crop image previews" : "プレビュー画像を切り抜く", "Additional settings" : "追加設定", @@ -184,6 +192,7 @@ "Copy to clipboard" : "クリップボードにコピー", "Use this address to access your Files via WebDAV" : "このアドレスを使用すれば、WebDAV経由でファイルにアクセスできます", "Clipboard is not available" : "クリップボードは利用できません", + "WebDAV URL copied to clipboard" : "WebDAVのURLがクリップボードにコピーされました", "Unable to change the favourite state of the file" : "ファイルのお気に入りの状態を変更できません", "Error while loading the file data" : "ファイルデータの読み込み中にエラーが発生しました", "Pick a template for {name}" : "{name} のテンプレートを選択してください", diff --git a/apps/files/l10n/sr.js b/apps/files/l10n/sr.js index 4749d2938cf..d00b609a0c2 100644 --- a/apps/files/l10n/sr.js +++ b/apps/files/l10n/sr.js @@ -185,6 +185,8 @@ OC.L10N.register( "Select file or folder to link to" : "Изаберите фајл или фордер на који показује линк", "Open the files app settings" : "Отвори подешавања апликације фајлови", "Files settings" : "Подешавања фајлова", + "File cannot be accessed" : "Фајлу не може да се приступи", + "You might not have have permissions to view it, ask the sender to share it" : "Можда немате дозволе да га погледате, затражите од пошиљаоца да га подели са вама", "Show hidden files" : "Прикажи скривене фајлове", "Crop image previews" : "Опсецање прегледа слика", "Additional settings" : "Додатне поставке", diff --git a/apps/files/l10n/sr.json b/apps/files/l10n/sr.json index bb86a7d7069..681f97af8bb 100644 --- a/apps/files/l10n/sr.json +++ b/apps/files/l10n/sr.json @@ -183,6 +183,8 @@ "Select file or folder to link to" : "Изаберите фајл или фордер на који показује линк", "Open the files app settings" : "Отвори подешавања апликације фајлови", "Files settings" : "Подешавања фајлова", + "File cannot be accessed" : "Фајлу не може да се приступи", + "You might not have have permissions to view it, ask the sender to share it" : "Можда немате дозволе да га погледате, затражите од пошиљаоца да га подели са вама", "Show hidden files" : "Прикажи скривене фајлове", "Crop image previews" : "Опсецање прегледа слика", "Additional settings" : "Додатне поставке", diff --git a/apps/files/l10n/sv.js b/apps/files/l10n/sv.js index 9866efdb4bb..6a0c4bfee6d 100644 --- a/apps/files/l10n/sv.js +++ b/apps/files/l10n/sv.js @@ -185,6 +185,8 @@ OC.L10N.register( "Select file or folder to link to" : "Välj fil eller mapp att länka till", "Open the files app settings" : "Öppna filappens inställningar", "Files settings" : "Filinställningar", + "File cannot be accessed" : "Det går inte att komma åt filen", + "You might not have have permissions to view it, ask the sender to share it" : "Du kanske inte har behörighet att se den, be avsändaren att dela den", "Show hidden files" : "Visa dolda filer", "Crop image previews" : "Beskär förhandsgranskningar för bilder", "Additional settings" : "Övriga inställningar", diff --git a/apps/files/l10n/sv.json b/apps/files/l10n/sv.json index 373da9a4506..14556d333e8 100644 --- a/apps/files/l10n/sv.json +++ b/apps/files/l10n/sv.json @@ -183,6 +183,8 @@ "Select file or folder to link to" : "Välj fil eller mapp att länka till", "Open the files app settings" : "Öppna filappens inställningar", "Files settings" : "Filinställningar", + "File cannot be accessed" : "Det går inte att komma åt filen", + "You might not have have permissions to view it, ask the sender to share it" : "Du kanske inte har behörighet att se den, be avsändaren att dela den", "Show hidden files" : "Visa dolda filer", "Crop image previews" : "Beskär förhandsgranskningar för bilder", "Additional settings" : "Övriga inställningar", diff --git a/apps/files/l10n/uk.js b/apps/files/l10n/uk.js index c65a11d937a..b908cb14c14 100644 --- a/apps/files/l10n/uk.js +++ b/apps/files/l10n/uk.js @@ -103,7 +103,7 @@ OC.L10N.register( "_%n byte_::_%n bytes_" : ["%n байт","%n байти","%n байт","%n байт(ів)"], "Favorited" : "Вподобано", "Favorite" : "Вподобати", - "Copy direct link (only works for users who have access to this file/folder)" : "Скопіювати пряме посилання (користувачі мають мати доступ до цього файлу чи каталогу)", + "Copy direct link (only works for users who have access to this file/folder)" : "Копіювати пряме посилання (користувачі мають мати доступ до цього файлу чи каталогу)", "You can only favorite a single file or folder at a time" : "Одночасно можна вподобати лише один файл або каталог", "New folder" : "Новий каталог", "Upload file" : "Завантажити файл", @@ -160,17 +160,17 @@ OC.L10N.register( "Do you want to accept {path}?\n\nNote: The transfer process after accepting may take up to 1 hour." : "Прийняти {path}?\n\nУвага: процес передачі після прийняття може тривати до 1 години.", "Ownership transfer failed" : "Не вдалося передати право власності", "Your ownership transfer of {path} to {user} failed." : "Передача вашого права власності на {path} користувачеві {user} не вдалася.", - "The ownership transfer of {path} from {user} failed." : "Передача права на власність {path} від користувача {user} не вдалася.", + "The ownership transfer of {path} from {user} failed." : "Передача прав власника на {path} від користувача {user} не вдалася.", "Ownership transfer done" : "Право власності передано", - "Your ownership transfer of {path} to {user} has completed." : "Передачу вашого права на власність на {path} користувачеві {user} виконано.", - "The ownership transfer of {path} from {user} has completed." : "Передачу права на власність на {path} від користувача {user} завершено.", + "Your ownership transfer of {path} to {user} has completed." : "Передачу ваших прав власника на {path} користувачеві {user} виконано.", + "The ownership transfer of {path} from {user} has completed." : "Передачу прав власника на {path} від користувача {user} завершено.", "in %s" : "в %s", "File Management" : "Керування файлами", "Storage informations" : "Інформація про сховище", "{usedQuotaByte} used" : "{usedQuotaByte} використано", "{relative}% used" : "{relative}% використано", "Could not refresh storage stats" : "Неможливо оновити статистику сховища", - "Transfer ownership of a file or folder" : "Передача права на власність на файл або каталог", + "Transfer ownership of a file or folder" : "Передача прав власника на файл або каталог", "Choose file or folder to transfer" : "Виберіть файл або каталог для передачі", "Change" : "Змінити", "New owner" : "Новий власник", @@ -189,7 +189,7 @@ OC.L10N.register( "Crop image previews" : "Кадрування попереднього перегляду зображень", "Additional settings" : "Додаткові налаштування", "WebDAV" : "WebDAV", - "Copy to clipboard" : "Скопіювати до буферу обміну ", + "Copy to clipboard" : "Копіювати до буферу обміну", "Use this address to access your Files via WebDAV" : "Адреса для доступу до файлів за допомогою протоколу WebDAV", "Clipboard is not available" : "Буфер обміну недоступний", "WebDAV URL copied to clipboard" : "Послиання WebDAV скопійовано до буферу обміну", diff --git a/apps/files/l10n/uk.json b/apps/files/l10n/uk.json index aec272f4437..7af8538aef5 100644 --- a/apps/files/l10n/uk.json +++ b/apps/files/l10n/uk.json @@ -101,7 +101,7 @@ "_%n byte_::_%n bytes_" : ["%n байт","%n байти","%n байт","%n байт(ів)"], "Favorited" : "Вподобано", "Favorite" : "Вподобати", - "Copy direct link (only works for users who have access to this file/folder)" : "Скопіювати пряме посилання (користувачі мають мати доступ до цього файлу чи каталогу)", + "Copy direct link (only works for users who have access to this file/folder)" : "Копіювати пряме посилання (користувачі мають мати доступ до цього файлу чи каталогу)", "You can only favorite a single file or folder at a time" : "Одночасно можна вподобати лише один файл або каталог", "New folder" : "Новий каталог", "Upload file" : "Завантажити файл", @@ -158,17 +158,17 @@ "Do you want to accept {path}?\n\nNote: The transfer process after accepting may take up to 1 hour." : "Прийняти {path}?\n\nУвага: процес передачі після прийняття може тривати до 1 години.", "Ownership transfer failed" : "Не вдалося передати право власності", "Your ownership transfer of {path} to {user} failed." : "Передача вашого права власності на {path} користувачеві {user} не вдалася.", - "The ownership transfer of {path} from {user} failed." : "Передача права на власність {path} від користувача {user} не вдалася.", + "The ownership transfer of {path} from {user} failed." : "Передача прав власника на {path} від користувача {user} не вдалася.", "Ownership transfer done" : "Право власності передано", - "Your ownership transfer of {path} to {user} has completed." : "Передачу вашого права на власність на {path} користувачеві {user} виконано.", - "The ownership transfer of {path} from {user} has completed." : "Передачу права на власність на {path} від користувача {user} завершено.", + "Your ownership transfer of {path} to {user} has completed." : "Передачу ваших прав власника на {path} користувачеві {user} виконано.", + "The ownership transfer of {path} from {user} has completed." : "Передачу прав власника на {path} від користувача {user} завершено.", "in %s" : "в %s", "File Management" : "Керування файлами", "Storage informations" : "Інформація про сховище", "{usedQuotaByte} used" : "{usedQuotaByte} використано", "{relative}% used" : "{relative}% використано", "Could not refresh storage stats" : "Неможливо оновити статистику сховища", - "Transfer ownership of a file or folder" : "Передача права на власність на файл або каталог", + "Transfer ownership of a file or folder" : "Передача прав власника на файл або каталог", "Choose file or folder to transfer" : "Виберіть файл або каталог для передачі", "Change" : "Змінити", "New owner" : "Новий власник", @@ -187,7 +187,7 @@ "Crop image previews" : "Кадрування попереднього перегляду зображень", "Additional settings" : "Додаткові налаштування", "WebDAV" : "WebDAV", - "Copy to clipboard" : "Скопіювати до буферу обміну ", + "Copy to clipboard" : "Копіювати до буферу обміну", "Use this address to access your Files via WebDAV" : "Адреса для доступу до файлів за допомогою протоколу WebDAV", "Clipboard is not available" : "Буфер обміну недоступний", "WebDAV URL copied to clipboard" : "Послиання WebDAV скопійовано до буферу обміну", diff --git a/apps/files/l10n/zh_HK.js b/apps/files/l10n/zh_HK.js index 25e0784b8ca..0c4416e594f 100644 --- a/apps/files/l10n/zh_HK.js +++ b/apps/files/l10n/zh_HK.js @@ -185,6 +185,8 @@ OC.L10N.register( "Select file or folder to link to" : "選擇要連結的檔案或資料夾", "Open the files app settings" : "開啟 Files 應用程式設定", "Files settings" : "檔案設定", + "File cannot be accessed" : "檔案無法存取", + "You might not have have permissions to view it, ask the sender to share it" : "您可能沒有權限檢視它,請要求寄件者分享它", "Show hidden files" : "顯示隱藏檔", "Crop image previews" : "圖片裁剪預覽", "Additional settings" : "其他設定", diff --git a/apps/files/l10n/zh_HK.json b/apps/files/l10n/zh_HK.json index b42ff5b132d..44b7b1ee8c2 100644 --- a/apps/files/l10n/zh_HK.json +++ b/apps/files/l10n/zh_HK.json @@ -183,6 +183,8 @@ "Select file or folder to link to" : "選擇要連結的檔案或資料夾", "Open the files app settings" : "開啟 Files 應用程式設定", "Files settings" : "檔案設定", + "File cannot be accessed" : "檔案無法存取", + "You might not have have permissions to view it, ask the sender to share it" : "您可能沒有權限檢視它,請要求寄件者分享它", "Show hidden files" : "顯示隱藏檔", "Crop image previews" : "圖片裁剪預覽", "Additional settings" : "其他設定", diff --git a/apps/files/l10n/zh_TW.js b/apps/files/l10n/zh_TW.js index a7a829ce59a..3f1fb377b15 100644 --- a/apps/files/l10n/zh_TW.js +++ b/apps/files/l10n/zh_TW.js @@ -185,6 +185,8 @@ OC.L10N.register( "Select file or folder to link to" : "選取要連結的檔案或資料夾", "Open the files app settings" : "開啟檔案應用程式設定", "Files settings" : "檔案設定", + "File cannot be accessed" : "無法存取檔案", + "You might not have have permissions to view it, ask the sender to share it" : "您可能沒有權限檢視它,請要求寄件者分享它", "Show hidden files" : "顯示隱藏檔", "Crop image previews" : "圖片裁剪預覽", "Additional settings" : "其他設定", diff --git a/apps/files/l10n/zh_TW.json b/apps/files/l10n/zh_TW.json index b15c607fc54..4144b15ac93 100644 --- a/apps/files/l10n/zh_TW.json +++ b/apps/files/l10n/zh_TW.json @@ -183,6 +183,8 @@ "Select file or folder to link to" : "選取要連結的檔案或資料夾", "Open the files app settings" : "開啟檔案應用程式設定", "Files settings" : "檔案設定", + "File cannot be accessed" : "無法存取檔案", + "You might not have have permissions to view it, ask the sender to share it" : "您可能沒有權限檢視它,請要求寄件者分享它", "Show hidden files" : "顯示隱藏檔", "Crop image previews" : "圖片裁剪預覽", "Additional settings" : "其他設定", diff --git a/apps/files_external/l10n/ca.js b/apps/files_external/l10n/ca.js index 59f0cb3f067..5da50c5ff77 100644 --- a/apps/files_external/l10n/ca.js +++ b/apps/files_external/l10n/ca.js @@ -10,6 +10,7 @@ OC.L10N.register( "Error configuring OAuth2" : "S'ha produït un error en configurar OAuth2", "Generate keys" : "Genera les claus", "Error generating key pair" : "Error en generar el parell de claus", + "Type to select user or group." : "Escriviu per seleccionar usuari o grup.", "(Group)" : "(Grup)", "Compatibility with Mac NFD encoding (slow)" : "Compatibilitat amb la codificació de Mac NFD (lent)", "Enable encryption" : "Habilita el xifratge", @@ -25,13 +26,13 @@ OC.L10N.register( "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself." : "Segur que voleu desconnectar aquest mitjà extern? Això farà que l'emmagatzematge no es trobi disponible a Nextcloud i provocarà l'eliminació d'aquests fitxers i carpetes en qualsevol client que s'hi sincronitze, però no eliminarà cap fitxer ni carpeta en el mitjà d'emmagatzematge extern.", "Delete storage?" : "Suprimeix-ho l'emmagatzematge?", "Saved" : "Desat", - "Saving …" : "S'està desant ...", + "Saving …" : "S'està desant …", "Save" : "Desa", "Empty response from the server" : "Resposta buida del servidor", "Couldn't access. Please log out and in again to activate this mount point" : "No s'ha pogut accedir. Si us plau, tanqueu la sessió i torneu a iniciar-la per activar aquest punt de muntatge", "Couldn't get the information from the remote server: {code} {type}" : "No s’ha pogut obtenir la informació del servidor remot: {code} {type}", "Couldn't get the list of external mount points: {type}" : "No s’ha pogut obtenir la llista de punts de muntatge externs: {type}", - "There was an error with message: " : "S'ha produït un error amb el missatge:", + "There was an error with message: " : "S'ha produït un error amb el missatge: ", "External mount error" : "Error de muntatge extern", "external-storage" : "emmagatzematge-extern", "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "No s’ha pogut obtenir la llista de punts de muntatge de la unitat de xarxa de Windows: resposta buida del servidor", @@ -89,6 +90,7 @@ OC.L10N.register( "Hostname" : "Nom del servidor", "Port" : "Port", "Region" : "Regió", + "Storage Class" : "Classe d'emmagatzematge", "Enable SSL" : "Habilita SSL", "Enable Path Style" : "Habilita l'estil del camí", "Legacy (v2) authentication" : "Autenticació heretada (v2)", @@ -134,6 +136,7 @@ OC.L10N.register( "Available for" : "Disponible per", "Click to recheck the configuration" : "Feu clic per tornar a comprovar la configuració", "Add storage" : "Afegeix emmagatzematge", + "All users" : "Tots els usuaris", "Advanced settings" : "Paràmetres avançats", "Allow users to mount external storage" : "Permet als usuaris muntar emmagatzematge extern", "Global credentials can be used to authenticate with multiple external storages that have the same credentials." : "Les credencials globals es poden utilitzar per autenticar-se amb múltiples emmagatzematges externs que tenen les mateixes credencials.", diff --git a/apps/files_external/l10n/ca.json b/apps/files_external/l10n/ca.json index a75d558f5a6..aa5113e1259 100644 --- a/apps/files_external/l10n/ca.json +++ b/apps/files_external/l10n/ca.json @@ -8,6 +8,7 @@ "Error configuring OAuth2" : "S'ha produït un error en configurar OAuth2", "Generate keys" : "Genera les claus", "Error generating key pair" : "Error en generar el parell de claus", + "Type to select user or group." : "Escriviu per seleccionar usuari o grup.", "(Group)" : "(Grup)", "Compatibility with Mac NFD encoding (slow)" : "Compatibilitat amb la codificació de Mac NFD (lent)", "Enable encryption" : "Habilita el xifratge", @@ -23,13 +24,13 @@ "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself." : "Segur que voleu desconnectar aquest mitjà extern? Això farà que l'emmagatzematge no es trobi disponible a Nextcloud i provocarà l'eliminació d'aquests fitxers i carpetes en qualsevol client que s'hi sincronitze, però no eliminarà cap fitxer ni carpeta en el mitjà d'emmagatzematge extern.", "Delete storage?" : "Suprimeix-ho l'emmagatzematge?", "Saved" : "Desat", - "Saving …" : "S'està desant ...", + "Saving …" : "S'està desant …", "Save" : "Desa", "Empty response from the server" : "Resposta buida del servidor", "Couldn't access. Please log out and in again to activate this mount point" : "No s'ha pogut accedir. Si us plau, tanqueu la sessió i torneu a iniciar-la per activar aquest punt de muntatge", "Couldn't get the information from the remote server: {code} {type}" : "No s’ha pogut obtenir la informació del servidor remot: {code} {type}", "Couldn't get the list of external mount points: {type}" : "No s’ha pogut obtenir la llista de punts de muntatge externs: {type}", - "There was an error with message: " : "S'ha produït un error amb el missatge:", + "There was an error with message: " : "S'ha produït un error amb el missatge: ", "External mount error" : "Error de muntatge extern", "external-storage" : "emmagatzematge-extern", "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "No s’ha pogut obtenir la llista de punts de muntatge de la unitat de xarxa de Windows: resposta buida del servidor", @@ -87,6 +88,7 @@ "Hostname" : "Nom del servidor", "Port" : "Port", "Region" : "Regió", + "Storage Class" : "Classe d'emmagatzematge", "Enable SSL" : "Habilita SSL", "Enable Path Style" : "Habilita l'estil del camí", "Legacy (v2) authentication" : "Autenticació heretada (v2)", @@ -132,6 +134,7 @@ "Available for" : "Disponible per", "Click to recheck the configuration" : "Feu clic per tornar a comprovar la configuració", "Add storage" : "Afegeix emmagatzematge", + "All users" : "Tots els usuaris", "Advanced settings" : "Paràmetres avançats", "Allow users to mount external storage" : "Permet als usuaris muntar emmagatzematge extern", "Global credentials can be used to authenticate with multiple external storages that have the same credentials." : "Les credencials globals es poden utilitzar per autenticar-se amb múltiples emmagatzematges externs que tenen les mateixes credencials.", diff --git a/apps/files_external/l10n/ja.js b/apps/files_external/l10n/ja.js index 6e02ba72cdd..479ae914793 100644 --- a/apps/files_external/l10n/ja.js +++ b/apps/files_external/l10n/ja.js @@ -10,6 +10,7 @@ OC.L10N.register( "Error configuring OAuth2" : "OAuth2設定エラー", "Generate keys" : "キーを生成", "Error generating key pair" : "キーペアの生成エラー", + "Type to select user or group." : "入力してユーザーまたはグループを選択", "(Group)" : "(グループ)", "Compatibility with Mac NFD encoding (slow)" : "Mac NFD エンコード互換 (遅い)", "Enable encryption" : "暗号化を有効に", @@ -89,6 +90,7 @@ OC.L10N.register( "Hostname" : "ホスト名", "Port" : "ポート", "Region" : "リージョン", + "Storage Class" : "ストレージクラス", "Enable SSL" : "SSLを有効", "Enable Path Style" : "パス形式を有効", "Legacy (v2) authentication" : "レガシー認証(v2)", diff --git a/apps/files_external/l10n/ja.json b/apps/files_external/l10n/ja.json index cbd78763e2b..cc35a785f14 100644 --- a/apps/files_external/l10n/ja.json +++ b/apps/files_external/l10n/ja.json @@ -8,6 +8,7 @@ "Error configuring OAuth2" : "OAuth2設定エラー", "Generate keys" : "キーを生成", "Error generating key pair" : "キーペアの生成エラー", + "Type to select user or group." : "入力してユーザーまたはグループを選択", "(Group)" : "(グループ)", "Compatibility with Mac NFD encoding (slow)" : "Mac NFD エンコード互換 (遅い)", "Enable encryption" : "暗号化を有効に", @@ -87,6 +88,7 @@ "Hostname" : "ホスト名", "Port" : "ポート", "Region" : "リージョン", + "Storage Class" : "ストレージクラス", "Enable SSL" : "SSLを有効", "Enable Path Style" : "パス形式を有効", "Legacy (v2) authentication" : "レガシー認証(v2)", diff --git a/apps/files_external/l10n/uk.js b/apps/files_external/l10n/uk.js index abb8a73c8a3..c68c9ef042c 100644 --- a/apps/files_external/l10n/uk.js +++ b/apps/files_external/l10n/uk.js @@ -117,7 +117,7 @@ OC.L10N.register( "Service name" : "Назва служби", "Request timeout (seconds)" : "Час очікування запиту (секунди)", "The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "Підтримку cURL у PHP не ввімкнено або не встановлено. Монтаж %s неможливий. Будь ласка, попросіть свого системного адміністратора встановити його.", - "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "Підтримка FTP у PHP не ввімкнена або не встановлена. Монтаж %s неможливий. Будь ласка, попросіть свого системного адміністратора встановити його.", + "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "Підтримку FTP у PHP не увімкнено або не встановлено. Під'єднання%s неможлие. Будь ласка, попросіть вашого системного адміністратора зробити відповідні налаштування.", "\"%1$s\" is not installed. Mounting of %2$s is not possible. Please ask your system administrator to install it." : "\"%1$s\" не встановлено. Монтаж %2$s неможливий. Будь ласка, попросіть свого системного адміністратора встановити його.", "External storage support" : "Підтримка зовнішньої пам'яті", "Adds basic external storage support" : "Додає базову підтримку зовнішньої пам’яті", diff --git a/apps/files_external/l10n/uk.json b/apps/files_external/l10n/uk.json index b09643de1f4..053dd1025ce 100644 --- a/apps/files_external/l10n/uk.json +++ b/apps/files_external/l10n/uk.json @@ -115,7 +115,7 @@ "Service name" : "Назва служби", "Request timeout (seconds)" : "Час очікування запиту (секунди)", "The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "Підтримку cURL у PHP не ввімкнено або не встановлено. Монтаж %s неможливий. Будь ласка, попросіть свого системного адміністратора встановити його.", - "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "Підтримка FTP у PHP не ввімкнена або не встановлена. Монтаж %s неможливий. Будь ласка, попросіть свого системного адміністратора встановити його.", + "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "Підтримку FTP у PHP не увімкнено або не встановлено. Під'єднання%s неможлие. Будь ласка, попросіть вашого системного адміністратора зробити відповідні налаштування.", "\"%1$s\" is not installed. Mounting of %2$s is not possible. Please ask your system administrator to install it." : "\"%1$s\" не встановлено. Монтаж %2$s неможливий. Будь ласка, попросіть свого системного адміністратора встановити його.", "External storage support" : "Підтримка зовнішньої пам'яті", "Adds basic external storage support" : "Додає базову підтримку зовнішньої пам’яті", diff --git a/apps/files_sharing/l10n/ca.js b/apps/files_sharing/l10n/ca.js index 0fe7d1c94a3..30ef87ec137 100644 --- a/apps/files_sharing/l10n/ca.js +++ b/apps/files_sharing/l10n/ca.js @@ -204,8 +204,12 @@ OC.L10N.register( "Shared via link by {initiator}" : "Compartit a través de l'enllaç per {initiator}", "Mail share ({label})" : "Compartició de correu ({label})", "Share link ({label})" : "Comparteix l'enllaç ({label})", + "Share link ({index})" : "Comparteix l'enllaç ({index})", "Share link" : "Enllaç de compartició", + "Actions for \"{title}\"" : "Accions per a \"{title}\"", + "Copy public link of \"{title}\" to clipboard" : "Copia l'enllaç públic de \"{title}\" al porta-retalls", "Error, please enter proper password and/or expiration date" : "Error, introduïu la contrasenya i/o data de caducitat adequades", + "Link share created" : "S'ha creat l'enllaç compartit", "Error while creating the share" : "S'ha produït un error en crear la compartició", "Search for share recipients" : "Cerca destinataris compartits", "No recommendations. Start typing." : "No hi ha recomanacions. Comenceu a escriure.", @@ -238,9 +242,12 @@ OC.L10N.register( "Error updating the share" : "S'ha produït un error en actualitzar la compartició", "File \"{path}\" has been unshared" : "El fitxer “{path}” s’ha deixat de compartir", "Folder \"{path}\" has been unshared" : "La carpeta \"{path}\" s'ha deixat de compartir", + "Share {propertyName} saved" : "Comparteix {propertyName} desat", "Shared" : "Compartit", "Share" : "Comparteix", "Shared with" : "Compartit amb", + "Password created successfully" : "La contrasenya s'ha creat correctament", + "Error generating password from password policy" : "S'ha produït un error en generar la contrasenya des de la política de contrasenyes", "Shared with you and the group {group} by {owner}" : "Compartit amb tu i amb el grup {group} per {owner}", "Shared with you and {circle} by {owner}" : "Compartit amb tu i {circle} per {owner}", "Shared with you and the conversation {conversation} by {owner}" : "Compartit amb tu i amb la conversa {conversation} per {owner}", @@ -267,6 +274,7 @@ OC.L10N.register( "One or more of your shares will expire tomorrow" : "Una o més de les teves compartició caducaran demà", "Copy to clipboard" : "Copia-ho al porta-papers", "Sorry, this link doesn’t seem to work anymore." : "Aquest enllaç sembla que no funciona.", - "Toggle grid view" : "Commuta la vista de la graella" + "Toggle grid view" : "Commuta la vista de la graella", + "Error generating password from password_policy" : "S'ha produït un error en generar la contrasenya des de password_policy" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files_sharing/l10n/ca.json b/apps/files_sharing/l10n/ca.json index d4d2dc308d2..efe1d173d2c 100644 --- a/apps/files_sharing/l10n/ca.json +++ b/apps/files_sharing/l10n/ca.json @@ -202,8 +202,12 @@ "Shared via link by {initiator}" : "Compartit a través de l'enllaç per {initiator}", "Mail share ({label})" : "Compartició de correu ({label})", "Share link ({label})" : "Comparteix l'enllaç ({label})", + "Share link ({index})" : "Comparteix l'enllaç ({index})", "Share link" : "Enllaç de compartició", + "Actions for \"{title}\"" : "Accions per a \"{title}\"", + "Copy public link of \"{title}\" to clipboard" : "Copia l'enllaç públic de \"{title}\" al porta-retalls", "Error, please enter proper password and/or expiration date" : "Error, introduïu la contrasenya i/o data de caducitat adequades", + "Link share created" : "S'ha creat l'enllaç compartit", "Error while creating the share" : "S'ha produït un error en crear la compartició", "Search for share recipients" : "Cerca destinataris compartits", "No recommendations. Start typing." : "No hi ha recomanacions. Comenceu a escriure.", @@ -236,9 +240,12 @@ "Error updating the share" : "S'ha produït un error en actualitzar la compartició", "File \"{path}\" has been unshared" : "El fitxer “{path}” s’ha deixat de compartir", "Folder \"{path}\" has been unshared" : "La carpeta \"{path}\" s'ha deixat de compartir", + "Share {propertyName} saved" : "Comparteix {propertyName} desat", "Shared" : "Compartit", "Share" : "Comparteix", "Shared with" : "Compartit amb", + "Password created successfully" : "La contrasenya s'ha creat correctament", + "Error generating password from password policy" : "S'ha produït un error en generar la contrasenya des de la política de contrasenyes", "Shared with you and the group {group} by {owner}" : "Compartit amb tu i amb el grup {group} per {owner}", "Shared with you and {circle} by {owner}" : "Compartit amb tu i {circle} per {owner}", "Shared with you and the conversation {conversation} by {owner}" : "Compartit amb tu i amb la conversa {conversation} per {owner}", @@ -265,6 +272,7 @@ "One or more of your shares will expire tomorrow" : "Una o més de les teves compartició caducaran demà", "Copy to clipboard" : "Copia-ho al porta-papers", "Sorry, this link doesn’t seem to work anymore." : "Aquest enllaç sembla que no funciona.", - "Toggle grid view" : "Commuta la vista de la graella" + "Toggle grid view" : "Commuta la vista de la graella", + "Error generating password from password_policy" : "S'ha produït un error en generar la contrasenya des de password_policy" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/files_sharing/l10n/ja.js b/apps/files_sharing/l10n/ja.js index a6d0990c287..021b4cfd9b8 100644 --- a/apps/files_sharing/l10n/ja.js +++ b/apps/files_sharing/l10n/ja.js @@ -204,8 +204,14 @@ OC.L10N.register( "Shared via link by {initiator}" : "{initiator}がリンクで共有", "Mail share ({label})" : "メール共有 ({label})", "Share link ({label})" : "リンク共有 ({label})", + "Share link ({index})" : "リンク共有 ({index})", "Share link" : "URLで共有", + "Actions for \"{title}\"" : "\"{title}\"のアクション", + "Copy public link of \"{title}\" to clipboard" : "\"{title}\" の公開リンクをクリップボードにコピー", "Error, please enter proper password and/or expiration date" : "エラー、正しいパスワードおよび/または有効期限を入力してください", + "Link share created" : "リンク共有が作成されました", + "Error while creating the share" : "共有作成時にエラーが発生しました", + "Search for share recipients" : "共有の受信者を検索", "No recommendations. Start typing." : "推奨事項はありません。 入力を開始します。", "Resharing is not allowed" : "再共有は許可されていません", "Name or email …" : "名前またはメールアドレス…", @@ -234,9 +240,14 @@ OC.L10N.register( "Error creating the share" : "共有の作成中にエラーが発生しました", "Error updating the share: {errorMessage}" : "共有の更新中にエラーが発生しました: {errorMessage}", "Error updating the share" : "共有の更新中にエラー", + "File \"{path}\" has been unshared" : "ファイルパス \"{path}\" が共有解除されました", + "Folder \"{path}\" has been unshared" : "フォルダーパス \"{path}\" が共有解除されました", + "Share {propertyName} saved" : "{propertyName} の共有が保存されました", "Shared" : "共有中", "Share" : "共有", "Shared with" : "と共有", + "Password created successfully" : "パスワードが正常に作成されました", + "Error generating password from password policy" : "パスワード ポリシーからのパスワード生成エラー", "Shared with you and the group {group} by {owner}" : "あなたと {owner} のグループ {group} で共有中", "Shared with you and {circle} by {owner}" : "{owner} が{circle}で共有中", "Shared with you and the conversation {conversation} by {owner}" : "{owner}のスレッド{conversation}であなたと共有しました", @@ -263,6 +274,7 @@ OC.L10N.register( "One or more of your shares will expire tomorrow" : "1つ以上の共有が明日期限切れになります", "Copy to clipboard" : "クリップボードにコピー", "Sorry, this link doesn’t seem to work anymore." : "すみません。このリンクはもう利用できません。", - "Toggle grid view" : "グリッド表示の切り替え" + "Toggle grid view" : "グリッド表示の切り替え", + "Error generating password from password_policy" : "password_policy からのパスワード生成エラー" }, "nplurals=1; plural=0;"); diff --git a/apps/files_sharing/l10n/ja.json b/apps/files_sharing/l10n/ja.json index 80983d41d81..8198f3c5e54 100644 --- a/apps/files_sharing/l10n/ja.json +++ b/apps/files_sharing/l10n/ja.json @@ -202,8 +202,14 @@ "Shared via link by {initiator}" : "{initiator}がリンクで共有", "Mail share ({label})" : "メール共有 ({label})", "Share link ({label})" : "リンク共有 ({label})", + "Share link ({index})" : "リンク共有 ({index})", "Share link" : "URLで共有", + "Actions for \"{title}\"" : "\"{title}\"のアクション", + "Copy public link of \"{title}\" to clipboard" : "\"{title}\" の公開リンクをクリップボードにコピー", "Error, please enter proper password and/or expiration date" : "エラー、正しいパスワードおよび/または有効期限を入力してください", + "Link share created" : "リンク共有が作成されました", + "Error while creating the share" : "共有作成時にエラーが発生しました", + "Search for share recipients" : "共有の受信者を検索", "No recommendations. Start typing." : "推奨事項はありません。 入力を開始します。", "Resharing is not allowed" : "再共有は許可されていません", "Name or email …" : "名前またはメールアドレス…", @@ -232,9 +238,14 @@ "Error creating the share" : "共有の作成中にエラーが発生しました", "Error updating the share: {errorMessage}" : "共有の更新中にエラーが発生しました: {errorMessage}", "Error updating the share" : "共有の更新中にエラー", + "File \"{path}\" has been unshared" : "ファイルパス \"{path}\" が共有解除されました", + "Folder \"{path}\" has been unshared" : "フォルダーパス \"{path}\" が共有解除されました", + "Share {propertyName} saved" : "{propertyName} の共有が保存されました", "Shared" : "共有中", "Share" : "共有", "Shared with" : "と共有", + "Password created successfully" : "パスワードが正常に作成されました", + "Error generating password from password policy" : "パスワード ポリシーからのパスワード生成エラー", "Shared with you and the group {group} by {owner}" : "あなたと {owner} のグループ {group} で共有中", "Shared with you and {circle} by {owner}" : "{owner} が{circle}で共有中", "Shared with you and the conversation {conversation} by {owner}" : "{owner}のスレッド{conversation}であなたと共有しました", @@ -261,6 +272,7 @@ "One or more of your shares will expire tomorrow" : "1つ以上の共有が明日期限切れになります", "Copy to clipboard" : "クリップボードにコピー", "Sorry, this link doesn’t seem to work anymore." : "すみません。このリンクはもう利用できません。", - "Toggle grid view" : "グリッド表示の切り替え" + "Toggle grid view" : "グリッド表示の切り替え", + "Error generating password from password_policy" : "password_policy からのパスワード生成エラー" },"pluralForm" :"nplurals=1; plural=0;" }
\ No newline at end of file diff --git a/apps/files_sharing/l10n/uk.js b/apps/files_sharing/l10n/uk.js index 2c28f88da74..d261714c077 100644 --- a/apps/files_sharing/l10n/uk.js +++ b/apps/files_sharing/l10n/uk.js @@ -272,7 +272,7 @@ OC.L10N.register( "Add to your Nextcloud" : "Додати до вашої хмари Nextcloud", "Wrong share ID, share doesn't exist" : "Неправильний ідентифікатор спільного ресурсу, спільний ресурс відсутній", "One or more of your shares will expire tomorrow" : "Термін дії одного чи кількох ваших спільних ресурсів спливає завтра", - "Copy to clipboard" : "Скопіювати до буферу обміну ", + "Copy to clipboard" : "Копіювати до буферу обміну", "Sorry, this link doesn’t seem to work anymore." : "На жаль, посилання більше не дійсне.", "Toggle grid view" : "Перемкнути подання сіткою", "Error generating password from password_policy" : "Помилка під час створення паролів з password_policy" diff --git a/apps/files_sharing/l10n/uk.json b/apps/files_sharing/l10n/uk.json index 53d65587523..f0224b825b6 100644 --- a/apps/files_sharing/l10n/uk.json +++ b/apps/files_sharing/l10n/uk.json @@ -270,7 +270,7 @@ "Add to your Nextcloud" : "Додати до вашої хмари Nextcloud", "Wrong share ID, share doesn't exist" : "Неправильний ідентифікатор спільного ресурсу, спільний ресурс відсутній", "One or more of your shares will expire tomorrow" : "Термін дії одного чи кількох ваших спільних ресурсів спливає завтра", - "Copy to clipboard" : "Скопіювати до буферу обміну ", + "Copy to clipboard" : "Копіювати до буферу обміну", "Sorry, this link doesn’t seem to work anymore." : "На жаль, посилання більше не дійсне.", "Toggle grid view" : "Перемкнути подання сіткою", "Error generating password from password_policy" : "Помилка під час створення паролів з password_policy" diff --git a/apps/files_versions/l10n/ca.js b/apps/files_versions/l10n/ca.js index fd04e3b95b3..b69bfe64b87 100644 --- a/apps/files_versions/l10n/ca.js +++ b/apps/files_versions/l10n/ca.js @@ -4,10 +4,21 @@ OC.L10N.register( "Versions" : "Versions", "This application automatically maintains older versions of files that are changed." : "Aquesta aplicació conserva automàticament les versions antigues dels fitxers modificats.", "This application automatically maintains older versions of files that are changed. When enabled, a hidden versions folder is provisioned in every user's directory and is used to store old file versions. A user can revert to an older version through the web interface at any time, with the replaced file becoming a version. The app automatically manages the versions folder to ensure the user does not run out of Quota because of versions.\n\t\tIn addition to the expiry of versions, the versions app makes certain never to use more than 50% of the user's currently available free space. If stored versions exceed this limit, the app will delete the oldest versions first until it meets this limit. More information is available in the Versions documentation." : "Aquesta aplicació conserva automàticament les versions antigues dels fitxers modificats. Si s'activa, es crearà una carpeta de versions oculta a cada carpeta dels usuaris i s'utilitzarà per a emmagatzemar les versions antigues dels fitxers. Els usuaris poden recuperar una versió anterior a través de la interfície web en qualsevol moment i el fitxer substituït es converteix en una versió. L'aplicació administra automàticament la carpeta de versions per a assegurar-se que l'usuari no es quedi sense espai per culpa de les versions.\n\t\tA més del venciment de les versions, l'aplicació Versions garanteix que no s'utilitzarà mai més del 50% de l'espai lliure disponible actualment per a l'usuari. Si les versions emmagatzemades superen aquest límit, l'aplicació suprimirà primer les versions més antigues fins que es respecti aquest límit. Podeu trobar més informació a la documentació de Versions.", + "Name this version" : "Anomena aquesta versió", + "Edit version name" : "Edita el nom de la versió", "Restore version" : "Restaura versió", "Download version" : "Baixada versió", + "Delete version" : "Suprimeix la versió", + "Version name" : "Nom de la versió", + "Named versions are persisted, and excluded from automatic cleanups when your storage quota is full." : "Les versions amb nom es mantenen i s'exclouen de les neteja automàtiques quan la vostra quota d'emmagatzematge és plena.", + "Remove version name" : "Elimina el nom de la versió", + "Save version name" : "Desa el nom de la versió", + "Initial version restored" : "S'ha restaurat la versió inicial", "Version restored" : "Versió restaurada", "Could not restore version" : "No s'ha pogut restaurar la versió", + "Could not set version name" : "No s'ha pogut definir el nom de la versió", + "Could not delete version" : "No s'ha pogut suprimir la versió", + "${version.label} restored" : "${version.label} restaurada", "This application automatically maintains older versions of files that are changed. When enabled, a hidden versions folder is provisioned in every user’s directory and is used to store old file versions. A user can revert to an older version through the web interface at any time, with the replaced file becoming a version. The app automatically manages the versions folder to ensure the user doesn’t run out of Quota because of versions.\n\t\tIn addition to the expiry of versions, the versions app makes certain never to use more than 50% of the user’s currently available free space. If stored versions exceed this limit, the app will delete the oldest versions first until it meets this limit. More information is available in the Versions documentation." : "Aquesta aplicació conserva automàticament les versions antigues dels fitxers modificats. Si s'activa, es crearà una carpeta de versions oculta a cada carpeta dels usuaris i s'utilitzarà per a emmagatzemar les versions antigues dels fitxers. Els usuaris poden recuperar una versió anterior a través de la interfície web en qualsevol moment i el fitxer substituït es converteix en una versió. L'aplicació administra automàticament la carpeta de versions per a assegurar-se que l'usuari no es quedi sense espai per culpa de les versions.\n\t\tA més del venciment de les versions, l'aplicació Versions garanteix que no s'utilitzarà mai més del 50% de l'espai lliure disponible actualment per a l'usuari. Si les versions emmagatzemades superen aquest límit, l'aplicació suprimirà primer les versions més antigues fins que es respecti aquest límit. Podeu trobar més informació a la documentació de Versions.", "Failed to revert {file} to revision {timestamp}." : "No s'ha pogut recuperar la revisió {timestamp} del fitxer {file}.", "_%n byte_::_%n bytes_" : ["%n byte","%n bytes"], diff --git a/apps/files_versions/l10n/ca.json b/apps/files_versions/l10n/ca.json index d9a1714f58b..80002b4c061 100644 --- a/apps/files_versions/l10n/ca.json +++ b/apps/files_versions/l10n/ca.json @@ -2,10 +2,21 @@ "Versions" : "Versions", "This application automatically maintains older versions of files that are changed." : "Aquesta aplicació conserva automàticament les versions antigues dels fitxers modificats.", "This application automatically maintains older versions of files that are changed. When enabled, a hidden versions folder is provisioned in every user's directory and is used to store old file versions. A user can revert to an older version through the web interface at any time, with the replaced file becoming a version. The app automatically manages the versions folder to ensure the user does not run out of Quota because of versions.\n\t\tIn addition to the expiry of versions, the versions app makes certain never to use more than 50% of the user's currently available free space. If stored versions exceed this limit, the app will delete the oldest versions first until it meets this limit. More information is available in the Versions documentation." : "Aquesta aplicació conserva automàticament les versions antigues dels fitxers modificats. Si s'activa, es crearà una carpeta de versions oculta a cada carpeta dels usuaris i s'utilitzarà per a emmagatzemar les versions antigues dels fitxers. Els usuaris poden recuperar una versió anterior a través de la interfície web en qualsevol moment i el fitxer substituït es converteix en una versió. L'aplicació administra automàticament la carpeta de versions per a assegurar-se que l'usuari no es quedi sense espai per culpa de les versions.\n\t\tA més del venciment de les versions, l'aplicació Versions garanteix que no s'utilitzarà mai més del 50% de l'espai lliure disponible actualment per a l'usuari. Si les versions emmagatzemades superen aquest límit, l'aplicació suprimirà primer les versions més antigues fins que es respecti aquest límit. Podeu trobar més informació a la documentació de Versions.", + "Name this version" : "Anomena aquesta versió", + "Edit version name" : "Edita el nom de la versió", "Restore version" : "Restaura versió", "Download version" : "Baixada versió", + "Delete version" : "Suprimeix la versió", + "Version name" : "Nom de la versió", + "Named versions are persisted, and excluded from automatic cleanups when your storage quota is full." : "Les versions amb nom es mantenen i s'exclouen de les neteja automàtiques quan la vostra quota d'emmagatzematge és plena.", + "Remove version name" : "Elimina el nom de la versió", + "Save version name" : "Desa el nom de la versió", + "Initial version restored" : "S'ha restaurat la versió inicial", "Version restored" : "Versió restaurada", "Could not restore version" : "No s'ha pogut restaurar la versió", + "Could not set version name" : "No s'ha pogut definir el nom de la versió", + "Could not delete version" : "No s'ha pogut suprimir la versió", + "${version.label} restored" : "${version.label} restaurada", "This application automatically maintains older versions of files that are changed. When enabled, a hidden versions folder is provisioned in every user’s directory and is used to store old file versions. A user can revert to an older version through the web interface at any time, with the replaced file becoming a version. The app automatically manages the versions folder to ensure the user doesn’t run out of Quota because of versions.\n\t\tIn addition to the expiry of versions, the versions app makes certain never to use more than 50% of the user’s currently available free space. If stored versions exceed this limit, the app will delete the oldest versions first until it meets this limit. More information is available in the Versions documentation." : "Aquesta aplicació conserva automàticament les versions antigues dels fitxers modificats. Si s'activa, es crearà una carpeta de versions oculta a cada carpeta dels usuaris i s'utilitzarà per a emmagatzemar les versions antigues dels fitxers. Els usuaris poden recuperar una versió anterior a través de la interfície web en qualsevol moment i el fitxer substituït es converteix en una versió. L'aplicació administra automàticament la carpeta de versions per a assegurar-se que l'usuari no es quedi sense espai per culpa de les versions.\n\t\tA més del venciment de les versions, l'aplicació Versions garanteix que no s'utilitzarà mai més del 50% de l'espai lliure disponible actualment per a l'usuari. Si les versions emmagatzemades superen aquest límit, l'aplicació suprimirà primer les versions més antigues fins que es respecti aquest límit. Podeu trobar més informació a la documentació de Versions.", "Failed to revert {file} to revision {timestamp}." : "No s'ha pogut recuperar la revisió {timestamp} del fitxer {file}.", "_%n byte_::_%n bytes_" : ["%n byte","%n bytes"], diff --git a/apps/settings/l10n/ca.js b/apps/settings/l10n/ca.js index 20b8cfa878c..0eb565db243 100644 --- a/apps/settings/l10n/ca.js +++ b/apps/settings/l10n/ca.js @@ -70,6 +70,7 @@ OC.L10N.register( "OPcache is configured to remove code comments. With OPcache enabled, <code>opcache.save_comments=1</code> must be set for Nextcloud to function." : "OPcache està configurat per suprimir comentaris de codi. Amb OPcache habilitat, s'ha d'establir <code>opcache.save.comments=1</code> perquè Nextcloud funcioni.", "Nextcloud is not allowed to use the OPcache API. With OPcache enabled, it is highly recommended to include all Nextcloud directories with <code>opcache.restrict_api</code> or unset this setting to disable OPcache API restrictions, to prevent errors during Nextcloud core or app upgrades." : "Nextcloud no té permís per utilitzar l'API OPcache. Amb OPcache habilitat, us recomanem que inclogueu tots els directoris Nextcloud amb <code>opcache.restrict.api</code> o que desconfigureu aquest paràmetre per inhabilitar les restriccions de l'API OPcache i evitar errors durant les actualitzacions del nucli de Nextcloud o de l'aplicació.", "Nextcloud is not allowed to use the OPcache API. It is highly recommended to include all Nextcloud directories with <code>opcache.restrict_api</code> or unset this setting to disable OPcache API restrictions, to prevent errors during Nextcloud core or app upgrades." : "Nextcloud no té permís per utilitzar l'API OPcache. Us recomanem que inclogueu tots els directoris Nextcloud amb <code>1opcache.restrict.api1</code> o que desconfigureu aquest paràmetre per inhabilitar les restriccions de l'API OPcache i evitar errors durant les actualitzacions del nucli de Nextcloud o de l'aplicació.", + "The shared memory based OPcache is disabled. For better performance, it is recommended to apply <code>opcache.file_cache_only=0</code> to your PHP configuration and use the file cache as second level cache only." : "L'OPcache basat en memòria compartida està desactivada. Per obtenir un millor rendiment, es recomana aplicar <code>opcache.file_cache_only=0</code> a la configuració de PHP i utilitzar la memòria cau de fitxers només com a memòria cau de segon nivell.", "The maximum number of OPcache keys is nearly exceeded. To assure that all scripts can be kept in the cache, it is recommended to apply <code>opcache.max_accelerated_files</code> to your PHP configuration with a value higher than <code>%s</code>." : "Gairebé s'ha excedit el nombre màxim de claus d'OPcache. Per assegurar-vos que tots els scripts es puguin mantenir a la memòria cau, us recomanem que apliqueu <code>opcache.max.accelerated.files</code> a la configuració de PHP amb un valor superior a <code>%s</code>.", "The OPcache buffer is nearly full. To assure that all scripts can be hold in cache, it is recommended to apply <code>opcache.memory_consumption</code> to your PHP configuration with a value higher than <code>%s</code>." : "La memòria intermèdia d'OPcache està gairebé plena. Per garantir que tots els scripts es puguin mantenir a la memòria cau, us recomanem que apliqueu <code>opcache.memory.consumption</code> a la configuració de PHP amb un valor superior a <code>%s</code>.", "The OPcache interned strings buffer is nearly full. To assure that repeating strings can be effectively cached, it is recommended to apply <code>opcache.interned_strings_buffer</code> to your PHP configuration with a value higher than <code>%s</code>." : "La memòria cau de cadenes internades OPcache està gairebé plena. Per assegurar-vos que les cadenes que es repeteixen es poden emmagatzemar a la memòria cau de manera efectiva, es recomana aplicar <code>opcache.interned.strings.buffer</code> a la configuració de PHP amb un valor superior a <code>%s</code>.", @@ -303,6 +304,7 @@ OC.L10N.register( "Unable to delete additional email address" : "No es pot suprimir l'adreça de correu electrònic addicional", "No email address set" : "No s'ha establert cap adreça de correu electrònic", "Additional emails" : "Adreces de correu electrònic addicionals", + "Your handle" : "El teu identificador", "Your headline" : "El teu titular", "Language" : "Llengua", "Help translate" : "Ajudeu-nos amb la traducció", @@ -444,6 +446,7 @@ OC.L10N.register( "Server address" : "Adreça del servidor", "Port" : "Port", "Authentication method" : "Mètode d'autenticació", + "Only applies when authentication is required" : "Només s'aplica quan es requereix autenticació", "Authentication required" : "Cal autenticació", "Credentials" : "Credencials", "SMTP Username" : "Nom d'usuari SMTP", diff --git a/apps/settings/l10n/ca.json b/apps/settings/l10n/ca.json index edb496c9273..8496fc31ab6 100644 --- a/apps/settings/l10n/ca.json +++ b/apps/settings/l10n/ca.json @@ -68,6 +68,7 @@ "OPcache is configured to remove code comments. With OPcache enabled, <code>opcache.save_comments=1</code> must be set for Nextcloud to function." : "OPcache està configurat per suprimir comentaris de codi. Amb OPcache habilitat, s'ha d'establir <code>opcache.save.comments=1</code> perquè Nextcloud funcioni.", "Nextcloud is not allowed to use the OPcache API. With OPcache enabled, it is highly recommended to include all Nextcloud directories with <code>opcache.restrict_api</code> or unset this setting to disable OPcache API restrictions, to prevent errors during Nextcloud core or app upgrades." : "Nextcloud no té permís per utilitzar l'API OPcache. Amb OPcache habilitat, us recomanem que inclogueu tots els directoris Nextcloud amb <code>opcache.restrict.api</code> o que desconfigureu aquest paràmetre per inhabilitar les restriccions de l'API OPcache i evitar errors durant les actualitzacions del nucli de Nextcloud o de l'aplicació.", "Nextcloud is not allowed to use the OPcache API. It is highly recommended to include all Nextcloud directories with <code>opcache.restrict_api</code> or unset this setting to disable OPcache API restrictions, to prevent errors during Nextcloud core or app upgrades." : "Nextcloud no té permís per utilitzar l'API OPcache. Us recomanem que inclogueu tots els directoris Nextcloud amb <code>1opcache.restrict.api1</code> o que desconfigureu aquest paràmetre per inhabilitar les restriccions de l'API OPcache i evitar errors durant les actualitzacions del nucli de Nextcloud o de l'aplicació.", + "The shared memory based OPcache is disabled. For better performance, it is recommended to apply <code>opcache.file_cache_only=0</code> to your PHP configuration and use the file cache as second level cache only." : "L'OPcache basat en memòria compartida està desactivada. Per obtenir un millor rendiment, es recomana aplicar <code>opcache.file_cache_only=0</code> a la configuració de PHP i utilitzar la memòria cau de fitxers només com a memòria cau de segon nivell.", "The maximum number of OPcache keys is nearly exceeded. To assure that all scripts can be kept in the cache, it is recommended to apply <code>opcache.max_accelerated_files</code> to your PHP configuration with a value higher than <code>%s</code>." : "Gairebé s'ha excedit el nombre màxim de claus d'OPcache. Per assegurar-vos que tots els scripts es puguin mantenir a la memòria cau, us recomanem que apliqueu <code>opcache.max.accelerated.files</code> a la configuració de PHP amb un valor superior a <code>%s</code>.", "The OPcache buffer is nearly full. To assure that all scripts can be hold in cache, it is recommended to apply <code>opcache.memory_consumption</code> to your PHP configuration with a value higher than <code>%s</code>." : "La memòria intermèdia d'OPcache està gairebé plena. Per garantir que tots els scripts es puguin mantenir a la memòria cau, us recomanem que apliqueu <code>opcache.memory.consumption</code> a la configuració de PHP amb un valor superior a <code>%s</code>.", "The OPcache interned strings buffer is nearly full. To assure that repeating strings can be effectively cached, it is recommended to apply <code>opcache.interned_strings_buffer</code> to your PHP configuration with a value higher than <code>%s</code>." : "La memòria cau de cadenes internades OPcache està gairebé plena. Per assegurar-vos que les cadenes que es repeteixen es poden emmagatzemar a la memòria cau de manera efectiva, es recomana aplicar <code>opcache.interned.strings.buffer</code> a la configuració de PHP amb un valor superior a <code>%s</code>.", @@ -301,6 +302,7 @@ "Unable to delete additional email address" : "No es pot suprimir l'adreça de correu electrònic addicional", "No email address set" : "No s'ha establert cap adreça de correu electrònic", "Additional emails" : "Adreces de correu electrònic addicionals", + "Your handle" : "El teu identificador", "Your headline" : "El teu titular", "Language" : "Llengua", "Help translate" : "Ajudeu-nos amb la traducció", @@ -442,6 +444,7 @@ "Server address" : "Adreça del servidor", "Port" : "Port", "Authentication method" : "Mètode d'autenticació", + "Only applies when authentication is required" : "Només s'aplica quan es requereix autenticació", "Authentication required" : "Cal autenticació", "Credentials" : "Credencials", "SMTP Username" : "Nom d'usuari SMTP", diff --git a/apps/settings/l10n/cs.js b/apps/settings/l10n/cs.js index de98f510d92..b8d2430adec 100644 --- a/apps/settings/l10n/cs.js +++ b/apps/settings/l10n/cs.js @@ -446,6 +446,7 @@ OC.L10N.register( "Server address" : "Adresa serveru", "Port" : "Port", "Authentication method" : "Metoda ověření", + "Only applies when authentication is required" : "Použije se pouze v případě, že je vyžadováno ověření", "Authentication required" : "Vyžadováno ověření se", "Credentials" : "Přihlašovací údaje", "SMTP Username" : "SMTP uživatelské jméno ", diff --git a/apps/settings/l10n/cs.json b/apps/settings/l10n/cs.json index ab74596ab90..54e339f02ad 100644 --- a/apps/settings/l10n/cs.json +++ b/apps/settings/l10n/cs.json @@ -444,6 +444,7 @@ "Server address" : "Adresa serveru", "Port" : "Port", "Authentication method" : "Metoda ověření", + "Only applies when authentication is required" : "Použije se pouze v případě, že je vyžadováno ověření", "Authentication required" : "Vyžadováno ověření se", "Credentials" : "Přihlašovací údaje", "SMTP Username" : "SMTP uživatelské jméno ", diff --git a/apps/settings/l10n/de.js b/apps/settings/l10n/de.js index ffca3e0a9fc..b9cf15e2f1f 100644 --- a/apps/settings/l10n/de.js +++ b/apps/settings/l10n/de.js @@ -70,6 +70,7 @@ OC.L10N.register( "OPcache is configured to remove code comments. With OPcache enabled, <code>opcache.save_comments=1</code> must be set for Nextcloud to function." : "OPcache ist so konfiguriert, dass Codekommentare entfernt werden. Wenn OPcache aktiviert ist, muss <code>opcache.save_comments=1</code> gesetzt werden, damit Nextcloud funktioniert.", "Nextcloud is not allowed to use the OPcache API. With OPcache enabled, it is highly recommended to include all Nextcloud directories with <code>opcache.restrict_api</code> or unset this setting to disable OPcache API restrictions, to prevent errors during Nextcloud core or app upgrades." : "Nextcloud darf die OPcache-API nicht verwenden. Wenn OPcache aktiviert ist, wird dringend empfohlen, alle Nextcloud-Verzeichnisse mit <code>opcache.restrict_api</code> einzuschließen oder diese Einstellung zu deaktivieren, um OPcache-API-Einschränkungen zu deaktivieren und Fehler während Nextcloud-Core- oder App-Aktualisierungen zu vermeiden.", "Nextcloud is not allowed to use the OPcache API. It is highly recommended to include all Nextcloud directories with <code>opcache.restrict_api</code> or unset this setting to disable OPcache API restrictions, to prevent errors during Nextcloud core or app upgrades." : "Nextcloud darf die OPcache-API nicht verwenden. Es wird dringend empfohlen, alle Nextcloud-Verzeichnisse mit <code>opcache.restrict_api</code> einzuschließen oder diese Einstellung zu deaktivieren, um OPcache-API-Einschränkungen zu deaktivieren und Fehler während Nextcloud-Core- oder App-Aktualisierungen zu vermeiden.", + "The shared memory based OPcache is disabled. For better performance, it is recommended to apply <code>opcache.file_cache_only=0</code> to your PHP configuration and use the file cache as second level cache only." : "Der OPcache mit gemeinsamem Speicher ist deaktiviert. Für eine bessere Leistung wird empfohlen, opcache.file_cache_only=0 in Ihre PHP-Konfiguration aufzunehmen und den Dateicache nur als Second Level Cache zu verwenden.", "The maximum number of OPcache keys is nearly exceeded. To assure that all scripts can be kept in the cache, it is recommended to apply <code>opcache.max_accelerated_files</code> to your PHP configuration with a value higher than <code>%s</code>." : "Die maximale Anzahl von OPcache-Schlüsseln ist fast erreicht. Um sicherzustellen, dass alle Skripte im Cache gehalten werden können, wird empfohlen, <code>opcache.max_accelerated_files</code> mit einem höheren Wert als <code>%s</code> in deiner PHP-Konfiguration anzuwenden.", "The OPcache buffer is nearly full. To assure that all scripts can be hold in cache, it is recommended to apply <code>opcache.memory_consumption</code> to your PHP configuration with a value higher than <code>%s</code>." : "Der OPcache-Puffer ist fast voll. Um sicherzustellen, dass alle Skripte im Cache gehalten werden können, wird empfohlen, <code>opcache.memory_consumption</code> in deiner PHP-Konfiguration mit einem höheren Wert als <code>%s</code> anzuwenden.", "The OPcache interned strings buffer is nearly full. To assure that repeating strings can be effectively cached, it is recommended to apply <code>opcache.interned_strings_buffer</code> to your PHP configuration with a value higher than <code>%s</code>." : "Der OPcache-Zwischenspeicher für interne Zeichenfolgen ist fast voll. Um sicherzustellen, dass sich wiederholende Zeichenfolgen effektiv zwischengespeichert werden können, wird empfohlen, <code>opcache.interned_strings_buffer</code> mit einem Wert größer als <code>%s</code> in deiner PHP-Konfiguration anzuwenden.", @@ -445,6 +446,7 @@ OC.L10N.register( "Server address" : "Serveradresse", "Port" : "Port", "Authentication method" : "Authentifizierungsmethode", + "Only applies when authentication is required" : "Gilt nur, wenn eine Authentifizierung erforderlich ist", "Authentication required" : "Authentifizierung benötigt", "Credentials" : "Zugangsdaten", "SMTP Username" : "SMTP-Benutzername", diff --git a/apps/settings/l10n/de.json b/apps/settings/l10n/de.json index 970adc10a4d..92218de8f0c 100644 --- a/apps/settings/l10n/de.json +++ b/apps/settings/l10n/de.json @@ -68,6 +68,7 @@ "OPcache is configured to remove code comments. With OPcache enabled, <code>opcache.save_comments=1</code> must be set for Nextcloud to function." : "OPcache ist so konfiguriert, dass Codekommentare entfernt werden. Wenn OPcache aktiviert ist, muss <code>opcache.save_comments=1</code> gesetzt werden, damit Nextcloud funktioniert.", "Nextcloud is not allowed to use the OPcache API. With OPcache enabled, it is highly recommended to include all Nextcloud directories with <code>opcache.restrict_api</code> or unset this setting to disable OPcache API restrictions, to prevent errors during Nextcloud core or app upgrades." : "Nextcloud darf die OPcache-API nicht verwenden. Wenn OPcache aktiviert ist, wird dringend empfohlen, alle Nextcloud-Verzeichnisse mit <code>opcache.restrict_api</code> einzuschließen oder diese Einstellung zu deaktivieren, um OPcache-API-Einschränkungen zu deaktivieren und Fehler während Nextcloud-Core- oder App-Aktualisierungen zu vermeiden.", "Nextcloud is not allowed to use the OPcache API. It is highly recommended to include all Nextcloud directories with <code>opcache.restrict_api</code> or unset this setting to disable OPcache API restrictions, to prevent errors during Nextcloud core or app upgrades." : "Nextcloud darf die OPcache-API nicht verwenden. Es wird dringend empfohlen, alle Nextcloud-Verzeichnisse mit <code>opcache.restrict_api</code> einzuschließen oder diese Einstellung zu deaktivieren, um OPcache-API-Einschränkungen zu deaktivieren und Fehler während Nextcloud-Core- oder App-Aktualisierungen zu vermeiden.", + "The shared memory based OPcache is disabled. For better performance, it is recommended to apply <code>opcache.file_cache_only=0</code> to your PHP configuration and use the file cache as second level cache only." : "Der OPcache mit gemeinsamem Speicher ist deaktiviert. Für eine bessere Leistung wird empfohlen, opcache.file_cache_only=0 in Ihre PHP-Konfiguration aufzunehmen und den Dateicache nur als Second Level Cache zu verwenden.", "The maximum number of OPcache keys is nearly exceeded. To assure that all scripts can be kept in the cache, it is recommended to apply <code>opcache.max_accelerated_files</code> to your PHP configuration with a value higher than <code>%s</code>." : "Die maximale Anzahl von OPcache-Schlüsseln ist fast erreicht. Um sicherzustellen, dass alle Skripte im Cache gehalten werden können, wird empfohlen, <code>opcache.max_accelerated_files</code> mit einem höheren Wert als <code>%s</code> in deiner PHP-Konfiguration anzuwenden.", "The OPcache buffer is nearly full. To assure that all scripts can be hold in cache, it is recommended to apply <code>opcache.memory_consumption</code> to your PHP configuration with a value higher than <code>%s</code>." : "Der OPcache-Puffer ist fast voll. Um sicherzustellen, dass alle Skripte im Cache gehalten werden können, wird empfohlen, <code>opcache.memory_consumption</code> in deiner PHP-Konfiguration mit einem höheren Wert als <code>%s</code> anzuwenden.", "The OPcache interned strings buffer is nearly full. To assure that repeating strings can be effectively cached, it is recommended to apply <code>opcache.interned_strings_buffer</code> to your PHP configuration with a value higher than <code>%s</code>." : "Der OPcache-Zwischenspeicher für interne Zeichenfolgen ist fast voll. Um sicherzustellen, dass sich wiederholende Zeichenfolgen effektiv zwischengespeichert werden können, wird empfohlen, <code>opcache.interned_strings_buffer</code> mit einem Wert größer als <code>%s</code> in deiner PHP-Konfiguration anzuwenden.", @@ -443,6 +444,7 @@ "Server address" : "Serveradresse", "Port" : "Port", "Authentication method" : "Authentifizierungsmethode", + "Only applies when authentication is required" : "Gilt nur, wenn eine Authentifizierung erforderlich ist", "Authentication required" : "Authentifizierung benötigt", "Credentials" : "Zugangsdaten", "SMTP Username" : "SMTP-Benutzername", diff --git a/apps/settings/l10n/en_GB.js b/apps/settings/l10n/en_GB.js index 5d47bdf12a4..d1d3a1cb5f9 100644 --- a/apps/settings/l10n/en_GB.js +++ b/apps/settings/l10n/en_GB.js @@ -446,6 +446,7 @@ OC.L10N.register( "Server address" : "Server address", "Port" : "Port", "Authentication method" : "Authentication method", + "Only applies when authentication is required" : "Only applies when authentication is required", "Authentication required" : "Authentication required", "Credentials" : "Credentials", "SMTP Username" : "SMTP Username", diff --git a/apps/settings/l10n/en_GB.json b/apps/settings/l10n/en_GB.json index d0df4f955a6..fe8f00acd08 100644 --- a/apps/settings/l10n/en_GB.json +++ b/apps/settings/l10n/en_GB.json @@ -444,6 +444,7 @@ "Server address" : "Server address", "Port" : "Port", "Authentication method" : "Authentication method", + "Only applies when authentication is required" : "Only applies when authentication is required", "Authentication required" : "Authentication required", "Credentials" : "Credentials", "SMTP Username" : "SMTP Username", diff --git a/apps/settings/l10n/ja.js b/apps/settings/l10n/ja.js index 80c14cececc..f9012ac0934 100644 --- a/apps/settings/l10n/ja.js +++ b/apps/settings/l10n/ja.js @@ -407,6 +407,7 @@ OC.L10N.register( "Phone number" : "電話番号", "Role" : "役職", "Twitter" : "Twitter", + "Fediverse (e.g. Mastodon)" : "フェディバース (例: Mastdon)", "Website" : "ウェブサイト", "Profile visibility" : "プロフィールの公開範囲", "Not available as this property is required for core functionality including file sharing and calendar invitations" : "このプロパティは、ファイル共有やカレンダーへの招待などのコア機能に必要なため、使用できません", diff --git a/apps/settings/l10n/ja.json b/apps/settings/l10n/ja.json index bf7f1c58ccb..ef34923cc66 100644 --- a/apps/settings/l10n/ja.json +++ b/apps/settings/l10n/ja.json @@ -405,6 +405,7 @@ "Phone number" : "電話番号", "Role" : "役職", "Twitter" : "Twitter", + "Fediverse (e.g. Mastodon)" : "フェディバース (例: Mastdon)", "Website" : "ウェブサイト", "Profile visibility" : "プロフィールの公開範囲", "Not available as this property is required for core functionality including file sharing and calendar invitations" : "このプロパティは、ファイル共有やカレンダーへの招待などのコア機能に必要なため、使用できません", diff --git a/apps/settings/l10n/uk.js b/apps/settings/l10n/uk.js index d360ccbe511..366d12f46e6 100644 --- a/apps/settings/l10n/uk.js +++ b/apps/settings/l10n/uk.js @@ -218,7 +218,7 @@ OC.L10N.register( "Error while updating device token name" : "Помилка під час оновлення назви маркера пристрою", "Error while deleting the token" : "Помилка при вилученні токену", "Error while wiping the device with the token" : "Помилка під час очищення пристрою за допомогою маркера", - "App name" : "Ім'я застосунку", + "App name" : "Дайте назву застосунку", "Create new app password" : "Створіть новий пароль застосунку", "Use the credentials below to configure your app or device." : "Використовуйте наведені нижче облікові дані, щоб налаштувати програму або пристрій.", "For security reasons this password will only be shown once." : "З міркувань безпеки цей пароль буде показано лише один раз.", @@ -281,7 +281,7 @@ OC.L10N.register( "Error cropping profile picture" : "Помилка кадрування зображення профілю", "Error saving profile picture" : "Помилка збереження зображення профілю", "Error removing profile picture" : "Помилка видалення зображення профілю", - "Your biography" : "Ваша біографія", + "Your biography" : "Коротко про себе", "Details" : "Деталі", "You are a member of the following groups:" : "Ви є учасником таких груп:", "You are using <strong>{usage}</strong>" : "Ви використовуєте <strong>{usage}", @@ -308,22 +308,22 @@ OC.L10N.register( "Language" : "Мова", "Help translate" : "Допомогти з перекладом", "Unable to update language" : "Не вдалося оновити мову", - "No language set" : "Мова не встановлена", + "No language set" : "Мову не визначено", "Locale" : "Локаль", "Week starts on {firstDayOfWeek}" : "Тиждень починається {firstDayOfWeek}", "Unable to update locale" : "Не вдалося оновити мову", - "No locale set" : "Мова не встановлена", + "No locale set" : "Мову не визначено", "Your location" : "Ваше місцезнаходження", "Your organisation" : "Ваша організація", "Your phone number" : "Ваш номер телефону", - "Edit your Profile visibility" : "Відредагуйте видимість свого профілю", + "Edit your Profile visibility" : "Встановіть видимість профілю", "Enable Profile" : "Увімкнути профіль", "Unable to update profile enabled state" : "Неможливо оновити стан профілю", "The more restrictive setting of either visibility or scope is respected on your Profile. For example, if visibility is set to \"Show to everyone\" and scope is set to \"Private\", \"Private\" is respected." : "Для вашого профілю можна встановити певні обмеження з показу інформації про вас. Наприклад, якщо встановлено значення \"Показувати всім\", а для певного значення \"Приватне\", значення \"Приватне\" буде мати вищий пріоритет.", "Unable to update visibility of {displayId}" : "Не вдалося оновити видимість {displayId}", "Your role" : "Ваша роль", - "Your Twitter handle" : "Ваш дескриптор Twitter", - "Your website" : "Твій сайт", + "Your Twitter handle" : "Ваш профіль у Twitter", + "Your website" : "Ваш сайт", "No {property} set" : "{property} не встановлено", "Unable to update {property}" : "Не вдалося оновити {property}", "Change scope level of {property}, current scope is {scope}" : "Змінити рівень дії {property}, поточна область – {scope}", @@ -358,7 +358,7 @@ OC.L10N.register( "Email" : "E-mail", "Default language" : "Мова за замовчуванням", "Add a new user" : "Додати нового користувача", - "Group admin for" : "Адміністратор групи для", + "Group admin for" : "Адміністратор групи", "Quota" : "Квота", "User backend" : "Сервер користувача", "Storage location" : "Місце розташування сховища", @@ -422,7 +422,7 @@ OC.L10N.register( "App bundles" : "Набори застосунків", "Featured apps" : "Функціональні застосунки", "Show to everyone" : "Показувати всім", - "Show to logged in users only" : "Показувати лише авторизованим користувачам", + "Show to logged in users only" : "Лише авторизованим користувачам", "Hide" : "Сховати", "Download and enable" : "Звантажити та увімкнути", "Enable untested app" : "Увімкнути непротестований застосунок", @@ -489,7 +489,7 @@ OC.L10N.register( "This text will be shown on the public link upload page when the file list is hidden." : "Цей текст буде показано на сторінці завантаження загальнодоступного посилання, коли список файлів приховано.", "Default share permissions" : "Дозволи на публікування по замовчуванню", "Reasons to use Nextcloud in your organization" : "Дізнатися про переваги хмари Nextcloud для вашої організації", - "Developed by the {communityopen}Nextcloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}AGPL{linkclose}." : "Розроблено {communityopen}спільнотою Nextcloud{linkclose}. Ліцензія {licenseopen}AGPL{linkclose} на {githubopen}початковий код{linkclose}.", + "Developed by the {communityopen}Nextcloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}AGPL{linkclose}." : "Розроблено {communityopen}спільнотою Nextcloud{linkclose}. Ліцензія {licenseopen}AGPL{linkclose} на {githubopen}вихідний код{linkclose}.", "Like our Facebook page" : "Вподобайте нашу сторінку у Facebook", "Follow us on Twitter" : "Слідкуйте за нами в Twitter", "Follow us on Mastodon" : "Слідкуйте за нами на Mastodon", diff --git a/apps/settings/l10n/uk.json b/apps/settings/l10n/uk.json index e02ee08793d..928f4a19623 100644 --- a/apps/settings/l10n/uk.json +++ b/apps/settings/l10n/uk.json @@ -216,7 +216,7 @@ "Error while updating device token name" : "Помилка під час оновлення назви маркера пристрою", "Error while deleting the token" : "Помилка при вилученні токену", "Error while wiping the device with the token" : "Помилка під час очищення пристрою за допомогою маркера", - "App name" : "Ім'я застосунку", + "App name" : "Дайте назву застосунку", "Create new app password" : "Створіть новий пароль застосунку", "Use the credentials below to configure your app or device." : "Використовуйте наведені нижче облікові дані, щоб налаштувати програму або пристрій.", "For security reasons this password will only be shown once." : "З міркувань безпеки цей пароль буде показано лише один раз.", @@ -279,7 +279,7 @@ "Error cropping profile picture" : "Помилка кадрування зображення профілю", "Error saving profile picture" : "Помилка збереження зображення профілю", "Error removing profile picture" : "Помилка видалення зображення профілю", - "Your biography" : "Ваша біографія", + "Your biography" : "Коротко про себе", "Details" : "Деталі", "You are a member of the following groups:" : "Ви є учасником таких груп:", "You are using <strong>{usage}</strong>" : "Ви використовуєте <strong>{usage}", @@ -306,22 +306,22 @@ "Language" : "Мова", "Help translate" : "Допомогти з перекладом", "Unable to update language" : "Не вдалося оновити мову", - "No language set" : "Мова не встановлена", + "No language set" : "Мову не визначено", "Locale" : "Локаль", "Week starts on {firstDayOfWeek}" : "Тиждень починається {firstDayOfWeek}", "Unable to update locale" : "Не вдалося оновити мову", - "No locale set" : "Мова не встановлена", + "No locale set" : "Мову не визначено", "Your location" : "Ваше місцезнаходження", "Your organisation" : "Ваша організація", "Your phone number" : "Ваш номер телефону", - "Edit your Profile visibility" : "Відредагуйте видимість свого профілю", + "Edit your Profile visibility" : "Встановіть видимість профілю", "Enable Profile" : "Увімкнути профіль", "Unable to update profile enabled state" : "Неможливо оновити стан профілю", "The more restrictive setting of either visibility or scope is respected on your Profile. For example, if visibility is set to \"Show to everyone\" and scope is set to \"Private\", \"Private\" is respected." : "Для вашого профілю можна встановити певні обмеження з показу інформації про вас. Наприклад, якщо встановлено значення \"Показувати всім\", а для певного значення \"Приватне\", значення \"Приватне\" буде мати вищий пріоритет.", "Unable to update visibility of {displayId}" : "Не вдалося оновити видимість {displayId}", "Your role" : "Ваша роль", - "Your Twitter handle" : "Ваш дескриптор Twitter", - "Your website" : "Твій сайт", + "Your Twitter handle" : "Ваш профіль у Twitter", + "Your website" : "Ваш сайт", "No {property} set" : "{property} не встановлено", "Unable to update {property}" : "Не вдалося оновити {property}", "Change scope level of {property}, current scope is {scope}" : "Змінити рівень дії {property}, поточна область – {scope}", @@ -356,7 +356,7 @@ "Email" : "E-mail", "Default language" : "Мова за замовчуванням", "Add a new user" : "Додати нового користувача", - "Group admin for" : "Адміністратор групи для", + "Group admin for" : "Адміністратор групи", "Quota" : "Квота", "User backend" : "Сервер користувача", "Storage location" : "Місце розташування сховища", @@ -420,7 +420,7 @@ "App bundles" : "Набори застосунків", "Featured apps" : "Функціональні застосунки", "Show to everyone" : "Показувати всім", - "Show to logged in users only" : "Показувати лише авторизованим користувачам", + "Show to logged in users only" : "Лише авторизованим користувачам", "Hide" : "Сховати", "Download and enable" : "Звантажити та увімкнути", "Enable untested app" : "Увімкнути непротестований застосунок", @@ -487,7 +487,7 @@ "This text will be shown on the public link upload page when the file list is hidden." : "Цей текст буде показано на сторінці завантаження загальнодоступного посилання, коли список файлів приховано.", "Default share permissions" : "Дозволи на публікування по замовчуванню", "Reasons to use Nextcloud in your organization" : "Дізнатися про переваги хмари Nextcloud для вашої організації", - "Developed by the {communityopen}Nextcloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}AGPL{linkclose}." : "Розроблено {communityopen}спільнотою Nextcloud{linkclose}. Ліцензія {licenseopen}AGPL{linkclose} на {githubopen}початковий код{linkclose}.", + "Developed by the {communityopen}Nextcloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}AGPL{linkclose}." : "Розроблено {communityopen}спільнотою Nextcloud{linkclose}. Ліцензія {licenseopen}AGPL{linkclose} на {githubopen}вихідний код{linkclose}.", "Like our Facebook page" : "Вподобайте нашу сторінку у Facebook", "Follow us on Twitter" : "Слідкуйте за нами в Twitter", "Follow us on Mastodon" : "Слідкуйте за нами на Mastodon", diff --git a/apps/theming/l10n/ca.js b/apps/theming/l10n/ca.js index 32d3d0ae914..dde39e147e5 100644 --- a/apps/theming/l10n/ca.js +++ b/apps/theming/l10n/ca.js @@ -10,6 +10,7 @@ OC.L10N.register( "The given privacy policy address is not a valid URL" : "L'adreça proporcionada per a la política de privacitat no és una URL vàlida", "The given slogan is too long" : "L'eslògan proporcionat és massa llarg", "The given color is invalid" : "El color proporcionat no és vàlid", + "Disable-user-theming should be true or false" : "Disable-user-theming ha de ser vertader o fals", "Saved" : "Desat", "The file was uploaded" : "S'ha pujat el fitxer", "The uploaded file exceeds the upload_max_filesize directive in php.ini" : "El fitxer carregat supera la directiva upload_max_filesize a php.ini", @@ -20,29 +21,44 @@ OC.L10N.register( "Could not write file to disk" : "No s’ha pogut escriure el fitxer en el disc", "A PHP extension stopped the file upload" : "Una extensió de PHP ha aturat la càrrega del fitxer", "No file uploaded" : "No s'ha carregat cap fitxer", + "Failed to clean up the old administration theming images folder" : "No s'ha pogut netejar la carpeta d'imatges de temàtica de l'administració antiga", + "Failed to clean up the old administration image folder" : "No s'ha pogut netejar la carpeta d'imatges d'administració antiga", "You are already using a custom theme. Theming app settings might be overwritten by that." : "Ja esteu fent servir un tema propi. La configuració de l'aplicació s'hauria d'haver modificat.", "Theming" : "Aparença", "Appearance and accessibility" : "Aspecte i accessibilitat", + "Dark theme with high contrast mode" : "Tema fosc amb mode de contrast alt", + "Enable dark high contrast mode" : "Activa el mode fosc d'alt contrast", + "Similar to the high contrast mode, but with dark colours." : "Similar al mode d'alt contrast, però amb colors foscos.", "Dark theme" : "Tema fosc", "Enable dark theme" : "Habilita el tema fosc", + "A dark theme to ease your eyes by reducing the overall luminosity and brightness." : "Un tema fosc per alleujar els teus ulls reduint la lluminositat i la brillantor generals.", + "System default theme" : "Tema predeterminat del sistema", + "Enable the system default" : "Habiliteu el sistema predeterminat", + "Using the default system appearance." : "Utilitzant l'aspecte predeterminat del sistema.", "Dyslexia font" : "Tipus de lletra per a la dislèxia", "Enable dyslexia font" : "Habilita el tipus de lletra per a la dislèxia", "OpenDyslexic is a free typeface/font designed to mitigate some of the common reading errors caused by dyslexia." : "OpenDyslexic és un tipus de lletra gratuït dissenyat per a mitigar alguns dels errors de lectura habituals causats per la dislèxia.", "High contrast mode" : "Mode de contrast alt", "Enable high contrast mode" : "Habilita el mode de contrast alt", "A high contrast mode to ease your navigation. Visual quality will be reduced but clarity will be increased." : "Mode de contrast alt per a facilitar la navegació. La qualitat visual es reduirà però s'incrementarà la claredat.", + "Light theme" : "Tema clar", + "Enable the default light theme" : "Activa el tema de llum predeterminat", + "The default light appearance." : "L'aparença de llum predeterminada.", "Legal notice" : "Avís legal", "Privacy policy" : "Política de privadesa", "Adjust the Nextcloud theme" : "Ajusteu el tema del Nextcloud", "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "L'aparença permet personalitzar fàcilment l'aspecte de la vostra web i dels clients. Això serà visible per a tots els usuaris.", "Advanced options" : "Paràmetres avançats", + "Install the ImageMagick PHP extension with support for SVG images to automatically generate favicons based on the uploaded logo and color." : "Instal·leu l'extensió PHP d'ImageMagick amb suport per a imatges SVG per generar automàticament favicons basats en el logotip i el color penjats.", "Name" : "Nom", "Web link" : "Enllaç web", - "a safe home for all your data" : "Un lloc segur per a les vostres dades", + "a safe home for all your data" : "un lloc segur per a les vostres dades", "Slogan" : "Eslògan", "Color" : "Color", "Logo" : "Logotip", "Upload new logo" : "Puja un logotip nou", + "Background and login image" : "Imatge de fons i d'inici de sessió", + "Upload new background and login image" : "Carregueu una imatge de fons i inici de sessió nova", "Legal notice link" : "Enllaç a l'avís legal", "Privacy policy link" : "Enllaç a la política de privadesa", "Header logo" : "Logotip de capçalera", @@ -50,23 +66,43 @@ OC.L10N.register( "Favicon" : "Icona de web", "Upload new favicon" : "Carrega un nou favicon", "User settings" : "Paràmetres de l'usuari", + "Disable user theming" : "Desactiva la temàtica dels usuaris", + "Although you can select and customize your instance, users can change their background and colors. If you want to enforce your customization, you can toggle this on." : "Tot i que podeu seleccionar i personalitzar la vostra instància, els usuaris poden canviar el fons i els colors. Si voleu aplicar la vostra personalització, podeu activar-ho.", "Keyboard shortcuts" : "Dreceres de teclat", + "In some cases keyboard shortcuts can interfere with accessibility tools. In order to allow focusing on your tool correctly you can disable all keyboard shortcuts here. This will also disable all available shortcuts in apps." : "En alguns casos, les dreceres del teclat poden interferir amb les eines d'accessibilitat. Per permetre centrar-vos correctament en la vostra eina, podeu desactivar totes les dreceres de teclat aquí. Això també desactivarà totes les dreceres disponibles a les aplicacions.", + "Disable all keyboard shortcuts" : "Desactiva totes les dreceres de teclat", + "Background" : "Fons", + "Customization has been disabled by your administrator" : "El vostre administrador ha desactivat la personalització", + "Set a custom background" : "Estableix un fons personalitzat", "Universal access is very important to us. We follow web standards and check to make everything usable also without mouse, and assistive software such as screenreaders. We aim to be compliant with the {guidelines}Web Content Accessibility Guidelines{linkend} 2.1 on AA level, with the high contrast theme even on AAA level." : "L'accés universal és molt important per a nosaltres. Seguim els estàndards web i comprovem que tot es pugui utilitzar també sense el ratolí i amb programes d'assistència, com ara els lectors de pantalla. Volem complir les {guidelines}Pautes d'accessibilitat del contingut web{linkend} 2.1 a nivell AA i amb el tema de contrast alt fins i tot a nivell AAA.", + "If you find any issues, do not hesitate to report them on {issuetracker}our issue tracker{linkend}. And if you want to get involved, come join {designteam}our design team{linkend}!" : "Si trobeu cap problema, no dubteu a informar-lo al {issuetracker}nostre seguiment de problemes{linkend}. I si vols participar, uneix-te al {designteam}nostre equip de disseny{linkend}!", + "Custom background" : "Fons personalitzat", + "Default background" : "Fons predeterminat", "Change color" : "Canvia el color", + "No background" : "Sense fons", + "Select a background from your files" : "Seleccioneu un fons dels vostres fitxers", + "Theme selection is enforced" : "S'aplica la selecció del tema", + "Select a custom color" : "Seleccioneu un color personalitzat", "Reset to default" : "Restableix als valors predeterminats", "Upload" : "Pujada", "Remove background image" : "Suprimeix la imatge de fons", - "Loading preview…" : "S'està carregant la previsualització...", + "Loading preview…" : "S'està carregant la previsualització…", "Admin" : "Administrador", + "Error uploading the file" : "S'ha produït un error en carregar el fitxer", "Name cannot be empty" : "El nom no pot estar buit", "Open documentation" : "Obre la documentació", - "https://…" : "https://...", + "https://…" : "https://…", "Login image" : "Imatge d'inici de sessió", "Upload new login background" : "Carrega un nou fons d'inici de sessió", "Install the Imagemagick PHP extension with support for SVG images to automatically generate favicons based on the uploaded logo and color." : "Instal·leu l'extensió PHP de l'ImageMagick compatible amb imatges SVG per generar automàticament una icona de web a partir del logotip pujat i del color.", + "Migrate and clean up admin theming images" : "Migreu i netegeu les imatges de temàtica d'administrador", + "Failed to clean up the old admin theming images folder" : "No s'ha pogut netejar l'antiga carpeta d'imatges de temes d'administració", + "In some cases keyboard shortcuts can interfer with accessibility tools. In order to allow focusing on your tool correctly you can disable all keyboard shortcuts here. This will also disable all available shortcuts in apps." : "En alguns casos, les dreceres del teclat poden interferir amb les eines d'accessibilitat. Per permetre centrar-vos correctament en la vostra eina, podeu desactivar totes les dreceres de teclat aquí. Això també desactivarà totes les dreceres disponibles a les aplicacions.", "Pick from Files" : "Trieu dels fitxers", + "Default image" : "Imatge predeterminada", "Custom color" : "Color personalitzat", "Plain background" : "Fons senzill", - "Insert from {productName}" : "Insereix des de {productName}" + "Insert from {productName}" : "Insereix des de {productName}", + "Although you can select and customize your instance, users can change their background and colors. If you want to enforce your customization, you can check this box." : "Tot i que podeu seleccionar i personalitzar la vostra instància, els usuaris poden canviar el fons i els colors. Si voleu aplicar la vostra personalització, podeu marcar aquesta casella." }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/theming/l10n/ca.json b/apps/theming/l10n/ca.json index 4a917da8223..0434a7e840e 100644 --- a/apps/theming/l10n/ca.json +++ b/apps/theming/l10n/ca.json @@ -8,6 +8,7 @@ "The given privacy policy address is not a valid URL" : "L'adreça proporcionada per a la política de privacitat no és una URL vàlida", "The given slogan is too long" : "L'eslògan proporcionat és massa llarg", "The given color is invalid" : "El color proporcionat no és vàlid", + "Disable-user-theming should be true or false" : "Disable-user-theming ha de ser vertader o fals", "Saved" : "Desat", "The file was uploaded" : "S'ha pujat el fitxer", "The uploaded file exceeds the upload_max_filesize directive in php.ini" : "El fitxer carregat supera la directiva upload_max_filesize a php.ini", @@ -18,29 +19,44 @@ "Could not write file to disk" : "No s’ha pogut escriure el fitxer en el disc", "A PHP extension stopped the file upload" : "Una extensió de PHP ha aturat la càrrega del fitxer", "No file uploaded" : "No s'ha carregat cap fitxer", + "Failed to clean up the old administration theming images folder" : "No s'ha pogut netejar la carpeta d'imatges de temàtica de l'administració antiga", + "Failed to clean up the old administration image folder" : "No s'ha pogut netejar la carpeta d'imatges d'administració antiga", "You are already using a custom theme. Theming app settings might be overwritten by that." : "Ja esteu fent servir un tema propi. La configuració de l'aplicació s'hauria d'haver modificat.", "Theming" : "Aparença", "Appearance and accessibility" : "Aspecte i accessibilitat", + "Dark theme with high contrast mode" : "Tema fosc amb mode de contrast alt", + "Enable dark high contrast mode" : "Activa el mode fosc d'alt contrast", + "Similar to the high contrast mode, but with dark colours." : "Similar al mode d'alt contrast, però amb colors foscos.", "Dark theme" : "Tema fosc", "Enable dark theme" : "Habilita el tema fosc", + "A dark theme to ease your eyes by reducing the overall luminosity and brightness." : "Un tema fosc per alleujar els teus ulls reduint la lluminositat i la brillantor generals.", + "System default theme" : "Tema predeterminat del sistema", + "Enable the system default" : "Habiliteu el sistema predeterminat", + "Using the default system appearance." : "Utilitzant l'aspecte predeterminat del sistema.", "Dyslexia font" : "Tipus de lletra per a la dislèxia", "Enable dyslexia font" : "Habilita el tipus de lletra per a la dislèxia", "OpenDyslexic is a free typeface/font designed to mitigate some of the common reading errors caused by dyslexia." : "OpenDyslexic és un tipus de lletra gratuït dissenyat per a mitigar alguns dels errors de lectura habituals causats per la dislèxia.", "High contrast mode" : "Mode de contrast alt", "Enable high contrast mode" : "Habilita el mode de contrast alt", "A high contrast mode to ease your navigation. Visual quality will be reduced but clarity will be increased." : "Mode de contrast alt per a facilitar la navegació. La qualitat visual es reduirà però s'incrementarà la claredat.", + "Light theme" : "Tema clar", + "Enable the default light theme" : "Activa el tema de llum predeterminat", + "The default light appearance." : "L'aparença de llum predeterminada.", "Legal notice" : "Avís legal", "Privacy policy" : "Política de privadesa", "Adjust the Nextcloud theme" : "Ajusteu el tema del Nextcloud", "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "L'aparença permet personalitzar fàcilment l'aspecte de la vostra web i dels clients. Això serà visible per a tots els usuaris.", "Advanced options" : "Paràmetres avançats", + "Install the ImageMagick PHP extension with support for SVG images to automatically generate favicons based on the uploaded logo and color." : "Instal·leu l'extensió PHP d'ImageMagick amb suport per a imatges SVG per generar automàticament favicons basats en el logotip i el color penjats.", "Name" : "Nom", "Web link" : "Enllaç web", - "a safe home for all your data" : "Un lloc segur per a les vostres dades", + "a safe home for all your data" : "un lloc segur per a les vostres dades", "Slogan" : "Eslògan", "Color" : "Color", "Logo" : "Logotip", "Upload new logo" : "Puja un logotip nou", + "Background and login image" : "Imatge de fons i d'inici de sessió", + "Upload new background and login image" : "Carregueu una imatge de fons i inici de sessió nova", "Legal notice link" : "Enllaç a l'avís legal", "Privacy policy link" : "Enllaç a la política de privadesa", "Header logo" : "Logotip de capçalera", @@ -48,23 +64,43 @@ "Favicon" : "Icona de web", "Upload new favicon" : "Carrega un nou favicon", "User settings" : "Paràmetres de l'usuari", + "Disable user theming" : "Desactiva la temàtica dels usuaris", + "Although you can select and customize your instance, users can change their background and colors. If you want to enforce your customization, you can toggle this on." : "Tot i que podeu seleccionar i personalitzar la vostra instància, els usuaris poden canviar el fons i els colors. Si voleu aplicar la vostra personalització, podeu activar-ho.", "Keyboard shortcuts" : "Dreceres de teclat", + "In some cases keyboard shortcuts can interfere with accessibility tools. In order to allow focusing on your tool correctly you can disable all keyboard shortcuts here. This will also disable all available shortcuts in apps." : "En alguns casos, les dreceres del teclat poden interferir amb les eines d'accessibilitat. Per permetre centrar-vos correctament en la vostra eina, podeu desactivar totes les dreceres de teclat aquí. Això també desactivarà totes les dreceres disponibles a les aplicacions.", + "Disable all keyboard shortcuts" : "Desactiva totes les dreceres de teclat", + "Background" : "Fons", + "Customization has been disabled by your administrator" : "El vostre administrador ha desactivat la personalització", + "Set a custom background" : "Estableix un fons personalitzat", "Universal access is very important to us. We follow web standards and check to make everything usable also without mouse, and assistive software such as screenreaders. We aim to be compliant with the {guidelines}Web Content Accessibility Guidelines{linkend} 2.1 on AA level, with the high contrast theme even on AAA level." : "L'accés universal és molt important per a nosaltres. Seguim els estàndards web i comprovem que tot es pugui utilitzar també sense el ratolí i amb programes d'assistència, com ara els lectors de pantalla. Volem complir les {guidelines}Pautes d'accessibilitat del contingut web{linkend} 2.1 a nivell AA i amb el tema de contrast alt fins i tot a nivell AAA.", + "If you find any issues, do not hesitate to report them on {issuetracker}our issue tracker{linkend}. And if you want to get involved, come join {designteam}our design team{linkend}!" : "Si trobeu cap problema, no dubteu a informar-lo al {issuetracker}nostre seguiment de problemes{linkend}. I si vols participar, uneix-te al {designteam}nostre equip de disseny{linkend}!", + "Custom background" : "Fons personalitzat", + "Default background" : "Fons predeterminat", "Change color" : "Canvia el color", + "No background" : "Sense fons", + "Select a background from your files" : "Seleccioneu un fons dels vostres fitxers", + "Theme selection is enforced" : "S'aplica la selecció del tema", + "Select a custom color" : "Seleccioneu un color personalitzat", "Reset to default" : "Restableix als valors predeterminats", "Upload" : "Pujada", "Remove background image" : "Suprimeix la imatge de fons", - "Loading preview…" : "S'està carregant la previsualització...", + "Loading preview…" : "S'està carregant la previsualització…", "Admin" : "Administrador", + "Error uploading the file" : "S'ha produït un error en carregar el fitxer", "Name cannot be empty" : "El nom no pot estar buit", "Open documentation" : "Obre la documentació", - "https://…" : "https://...", + "https://…" : "https://…", "Login image" : "Imatge d'inici de sessió", "Upload new login background" : "Carrega un nou fons d'inici de sessió", "Install the Imagemagick PHP extension with support for SVG images to automatically generate favicons based on the uploaded logo and color." : "Instal·leu l'extensió PHP de l'ImageMagick compatible amb imatges SVG per generar automàticament una icona de web a partir del logotip pujat i del color.", + "Migrate and clean up admin theming images" : "Migreu i netegeu les imatges de temàtica d'administrador", + "Failed to clean up the old admin theming images folder" : "No s'ha pogut netejar l'antiga carpeta d'imatges de temes d'administració", + "In some cases keyboard shortcuts can interfer with accessibility tools. In order to allow focusing on your tool correctly you can disable all keyboard shortcuts here. This will also disable all available shortcuts in apps." : "En alguns casos, les dreceres del teclat poden interferir amb les eines d'accessibilitat. Per permetre centrar-vos correctament en la vostra eina, podeu desactivar totes les dreceres de teclat aquí. Això també desactivarà totes les dreceres disponibles a les aplicacions.", "Pick from Files" : "Trieu dels fitxers", + "Default image" : "Imatge predeterminada", "Custom color" : "Color personalitzat", "Plain background" : "Fons senzill", - "Insert from {productName}" : "Insereix des de {productName}" + "Insert from {productName}" : "Insereix des de {productName}", + "Although you can select and customize your instance, users can change their background and colors. If you want to enforce your customization, you can check this box." : "Tot i que podeu seleccionar i personalitzar la vostra instància, els usuaris poden canviar el fons i els colors. Si voleu aplicar la vostra personalització, podeu marcar aquesta casella." },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/theming/l10n/cs.js b/apps/theming/l10n/cs.js index eb229ac2af7..1cc603980dc 100644 --- a/apps/theming/l10n/cs.js +++ b/apps/theming/l10n/cs.js @@ -79,6 +79,7 @@ OC.L10N.register( "Custom background" : "Uživatelsky určený obrázek na pozadí", "Default background" : "Výchozí obrázek na pozadí", "Change color" : "Změnit barvu", + "No background" : "Žádné pozadí", "Select a background from your files" : "Vyberte obrázek na pozadí ze svých souborů", "Theme selection is enforced" : "Výběr motivu vzhledu je vynucen", "Select a custom color" : "Vybrat uživatelsky určenou barvu", diff --git a/apps/theming/l10n/cs.json b/apps/theming/l10n/cs.json index 0d8c32fb41b..df7b77479ed 100644 --- a/apps/theming/l10n/cs.json +++ b/apps/theming/l10n/cs.json @@ -77,6 +77,7 @@ "Custom background" : "Uživatelsky určený obrázek na pozadí", "Default background" : "Výchozí obrázek na pozadí", "Change color" : "Změnit barvu", + "No background" : "Žádné pozadí", "Select a background from your files" : "Vyberte obrázek na pozadí ze svých souborů", "Theme selection is enforced" : "Výběr motivu vzhledu je vynucen", "Select a custom color" : "Vybrat uživatelsky určenou barvu", diff --git a/apps/theming/l10n/de.js b/apps/theming/l10n/de.js index 3e97168f4e7..574f55fc13b 100644 --- a/apps/theming/l10n/de.js +++ b/apps/theming/l10n/de.js @@ -22,6 +22,7 @@ OC.L10N.register( "A PHP extension stopped the file upload" : "Eine PHP-Erweiterung hat das Hochladen der Datei gestoppt", "No file uploaded" : "Keine Datei hochgeladen", "Failed to clean up the old administration theming images folder" : "Fehler beim Bereinigen des alten Admin-Design-Bilderordners", + "Failed to clean up the old administration image folder" : "Fehler beim Bereinigen des alten Admin-Design-Bilderordners", "You are already using a custom theme. Theming app settings might be overwritten by that." : "Du benutzt bereits ein benutzerdefiniertes Design. Die App \"Theming\" würde dies überschreiben.", "Theming" : "Design", "Appearance and accessibility" : "Erscheinungsbild und Barrierefreiheit", @@ -78,6 +79,7 @@ OC.L10N.register( "Custom background" : "Benutzerdefinierter Hintergrund", "Default background" : "Standardhintergrund", "Change color" : "Farbe ändern", + "No background" : "Kein Hintergrund", "Select a background from your files" : "Wähle einen Hintergrund aus deinen Dateien", "Theme selection is enforced" : "Designauswahl wird erzwungen", "Select a custom color" : "Eine benutzerdefinierte Farbe auswählen", diff --git a/apps/theming/l10n/de.json b/apps/theming/l10n/de.json index fb5e6c8f33a..bcb6e7d3490 100644 --- a/apps/theming/l10n/de.json +++ b/apps/theming/l10n/de.json @@ -20,6 +20,7 @@ "A PHP extension stopped the file upload" : "Eine PHP-Erweiterung hat das Hochladen der Datei gestoppt", "No file uploaded" : "Keine Datei hochgeladen", "Failed to clean up the old administration theming images folder" : "Fehler beim Bereinigen des alten Admin-Design-Bilderordners", + "Failed to clean up the old administration image folder" : "Fehler beim Bereinigen des alten Admin-Design-Bilderordners", "You are already using a custom theme. Theming app settings might be overwritten by that." : "Du benutzt bereits ein benutzerdefiniertes Design. Die App \"Theming\" würde dies überschreiben.", "Theming" : "Design", "Appearance and accessibility" : "Erscheinungsbild und Barrierefreiheit", @@ -76,6 +77,7 @@ "Custom background" : "Benutzerdefinierter Hintergrund", "Default background" : "Standardhintergrund", "Change color" : "Farbe ändern", + "No background" : "Kein Hintergrund", "Select a background from your files" : "Wähle einen Hintergrund aus deinen Dateien", "Theme selection is enforced" : "Designauswahl wird erzwungen", "Select a custom color" : "Eine benutzerdefinierte Farbe auswählen", diff --git a/apps/theming/l10n/de_DE.js b/apps/theming/l10n/de_DE.js index a8224cbb73e..8d1345ee597 100644 --- a/apps/theming/l10n/de_DE.js +++ b/apps/theming/l10n/de_DE.js @@ -79,6 +79,7 @@ OC.L10N.register( "Custom background" : "Benutzerdefinierter Hintergrund", "Default background" : "Standardhintergrund", "Change color" : "Farbe ändern", + "No background" : "Kein Hintergrund", "Select a background from your files" : "Wählen Sie einen Hintergrund aus Ihren Dateien", "Theme selection is enforced" : "Designauswahl wird erzwungen", "Select a custom color" : "Eine benutzerdefinierte Farbe auswählen", diff --git a/apps/theming/l10n/de_DE.json b/apps/theming/l10n/de_DE.json index bce292788ef..ebd7c90c2ec 100644 --- a/apps/theming/l10n/de_DE.json +++ b/apps/theming/l10n/de_DE.json @@ -77,6 +77,7 @@ "Custom background" : "Benutzerdefinierter Hintergrund", "Default background" : "Standardhintergrund", "Change color" : "Farbe ändern", + "No background" : "Kein Hintergrund", "Select a background from your files" : "Wählen Sie einen Hintergrund aus Ihren Dateien", "Theme selection is enforced" : "Designauswahl wird erzwungen", "Select a custom color" : "Eine benutzerdefinierte Farbe auswählen", diff --git a/apps/theming/l10n/en_GB.js b/apps/theming/l10n/en_GB.js index f63eb81c1ae..c5edd37839e 100644 --- a/apps/theming/l10n/en_GB.js +++ b/apps/theming/l10n/en_GB.js @@ -79,6 +79,7 @@ OC.L10N.register( "Custom background" : "Custom background", "Default background" : "Default background", "Change color" : "Change colour", + "No background" : "No background", "Select a background from your files" : "Select a background from your files", "Theme selection is enforced" : "Theme selection is enforced", "Select a custom color" : "Select a custom colour", diff --git a/apps/theming/l10n/en_GB.json b/apps/theming/l10n/en_GB.json index df7a23f1eb3..47c2b25105b 100644 --- a/apps/theming/l10n/en_GB.json +++ b/apps/theming/l10n/en_GB.json @@ -77,6 +77,7 @@ "Custom background" : "Custom background", "Default background" : "Default background", "Change color" : "Change colour", + "No background" : "No background", "Select a background from your files" : "Select a background from your files", "Theme selection is enforced" : "Theme selection is enforced", "Select a custom color" : "Select a custom colour", diff --git a/apps/theming/l10n/fr.js b/apps/theming/l10n/fr.js index 6b9f6885f2a..c1dff1e98c1 100644 --- a/apps/theming/l10n/fr.js +++ b/apps/theming/l10n/fr.js @@ -79,6 +79,7 @@ OC.L10N.register( "Custom background" : "Arrière-plan personnalisé", "Default background" : "Arrière-plan par défaut", "Change color" : "Changer la couleur", + "No background" : "Pas d'arrière-plan", "Select a background from your files" : "Sélectionner un arrière-plan parmi vos fichiers", "Theme selection is enforced" : "La sélection du thème est imposée", "Select a custom color" : "Sélectionnez une couleur personnalisée", diff --git a/apps/theming/l10n/fr.json b/apps/theming/l10n/fr.json index d00b2af0b6d..9d479d4f1c1 100644 --- a/apps/theming/l10n/fr.json +++ b/apps/theming/l10n/fr.json @@ -77,6 +77,7 @@ "Custom background" : "Arrière-plan personnalisé", "Default background" : "Arrière-plan par défaut", "Change color" : "Changer la couleur", + "No background" : "Pas d'arrière-plan", "Select a background from your files" : "Sélectionner un arrière-plan parmi vos fichiers", "Theme selection is enforced" : "La sélection du thème est imposée", "Select a custom color" : "Sélectionnez une couleur personnalisée", diff --git a/apps/theming/l10n/sr.js b/apps/theming/l10n/sr.js index a94131b389f..9e597985ff4 100644 --- a/apps/theming/l10n/sr.js +++ b/apps/theming/l10n/sr.js @@ -79,6 +79,7 @@ OC.L10N.register( "Custom background" : "Прилагођена позадина", "Default background" : "Подразумевана позадина", "Change color" : "Промени боју", + "No background" : "Без позадине", "Select a background from your files" : "Изаберите позадину међу вашим фајловима", "Theme selection is enforced" : "Избор теме је форсиран", "Select a custom color" : "Изаберите прилагођену боју", diff --git a/apps/theming/l10n/sr.json b/apps/theming/l10n/sr.json index ca172e17685..46c482d36f6 100644 --- a/apps/theming/l10n/sr.json +++ b/apps/theming/l10n/sr.json @@ -77,6 +77,7 @@ "Custom background" : "Прилагођена позадина", "Default background" : "Подразумевана позадина", "Change color" : "Промени боју", + "No background" : "Без позадине", "Select a background from your files" : "Изаберите позадину међу вашим фајловима", "Theme selection is enforced" : "Избор теме је форсиран", "Select a custom color" : "Изаберите прилагођену боју", diff --git a/apps/theming/l10n/sv.js b/apps/theming/l10n/sv.js index a4b6e804423..ec52d5afb30 100644 --- a/apps/theming/l10n/sv.js +++ b/apps/theming/l10n/sv.js @@ -77,6 +77,7 @@ OC.L10N.register( "Custom background" : "Anpassad bakgrund", "Default background" : "Standardbakgrund", "Change color" : "Ändra färg", + "No background" : "Ingen bakgrund", "Select a background from your files" : "Välj en bakgrund från dina filer", "Theme selection is enforced" : "Temaval är tvingande", "Select a custom color" : "Välj en anpassad färg", diff --git a/apps/theming/l10n/sv.json b/apps/theming/l10n/sv.json index faaea5a92a6..11344bcd9d2 100644 --- a/apps/theming/l10n/sv.json +++ b/apps/theming/l10n/sv.json @@ -75,6 +75,7 @@ "Custom background" : "Anpassad bakgrund", "Default background" : "Standardbakgrund", "Change color" : "Ändra färg", + "No background" : "Ingen bakgrund", "Select a background from your files" : "Välj en bakgrund från dina filer", "Theme selection is enforced" : "Temaval är tvingande", "Select a custom color" : "Välj en anpassad färg", diff --git a/apps/theming/l10n/uk.js b/apps/theming/l10n/uk.js index b800888a4fe..f9dbac6537d 100644 --- a/apps/theming/l10n/uk.js +++ b/apps/theming/l10n/uk.js @@ -31,7 +31,7 @@ OC.L10N.register( "Enable dark theme" : "Увімкнути темну тему", "A dark theme to ease your eyes by reducing the overall luminosity and brightness." : "Темна тема, щоб полегшити ваші очі, зменшивши загальну яскравість і яскравість.", "System default theme" : "Стандартна тема системи", - "Enable the system default" : "Увімкнути систему за замовчуванням", + "Enable the system default" : "Згідно із системними налаштуваннями", "Using the default system appearance." : "Використання зовнішнього вигляду системи за замовчуванням.", "Dyslexia font" : "Шрифт для людей, які страждають від дислексії", "Enable dyslexia font" : "Увімкнути шрифт для людей, які страждають від дислексії", @@ -41,7 +41,7 @@ OC.L10N.register( "A high contrast mode to ease your navigation. Visual quality will be reduced but clarity will be increased." : "Висококонтрастний режим спрощує Вашу навігацію. Візуальна якість буде знижена, але чіткість підвищиться..", "Light theme" : "Світла тема", "Enable the default light theme" : "Увімкніть типову світлу тему", - "The default light appearance." : "Світловий вигляд за замовчуванням.", + "The default light appearance." : "Типово світла тема.", "Legal notice" : "Правові застереження", "Privacy policy" : "Політика конфіденційності", "Adjust the Nextcloud theme" : "Налаштуйте тему Nextcloud", @@ -70,7 +70,7 @@ OC.L10N.register( "Background" : "Тло", "Customization has been disabled by your administrator" : "Налаштування персоналізації вимкнено адміністатором.", "Set a custom background" : "Встановити спеціальне зображення тла", - "Universal access is very important to us. We follow web standards and check to make everything usable also without mouse, and assistive software such as screenreaders. We aim to be compliant with the {guidelines}Web Content Accessibility Guidelines{linkend} 2.1 on AA level, with the high contrast theme even on AAA level." : "Для нас дуже важливо забезпечити доступ для всіх. Ми дотримуємось веб-стандартів і перевіряємо, щоб забезпечити зручність користування без комп'ютерної миші, а також за допомогую допоміжного програмного забезпечення, наприклад, програми зчитування з екрана. Ми прагнемо відповідати {guidelines} Правила доступу до веб-вмісту {linkend} 2.1 на рівні AA, а з темою високої контрастності навіть на рівні AAA.", + "Universal access is very important to us. We follow web standards and check to make everything usable also without mouse, and assistive software such as screenreaders. We aim to be compliant with the {guidelines}Web Content Accessibility Guidelines{linkend} 2.1 on AA level, with the high contrast theme even on AAA level." : "Для нас дуже важливо забезпечити доступ для всіх. Ми дотримуємось сучасних стандартів розробки у вебі, намагаємося забезпечити зручність користування без комп'ютерної миші, а також за допомогую допоміжного програмного забезпечення, наприклад, програми зчитування з екрана. Ми прагнемо відповідати {guidelines} Правилам доступу до веб-вмісту {linkend} 2.1 на рівні AA, а з темою високої контрастності навіть на рівні AAA.", "If you find any issues, do not hesitate to report them on {issuetracker}our issue tracker{linkend}. And if you want to get involved, come join {designteam}our design team{linkend}!" : "Якщо ви виявите будь-які проблеми, не соромтеся повідомити про них на {issuetracker}нашій системі відстеження проблем{linkend}. І якщо ви хочете взяти участь, приєднуйтесь до {designteam}нашої команди дизайнерів{linkend}!", "Custom background" : "Користувацьке тло", "Default background" : "Типове тло", diff --git a/apps/theming/l10n/uk.json b/apps/theming/l10n/uk.json index 8eb916e0dd3..981bd310453 100644 --- a/apps/theming/l10n/uk.json +++ b/apps/theming/l10n/uk.json @@ -29,7 +29,7 @@ "Enable dark theme" : "Увімкнути темну тему", "A dark theme to ease your eyes by reducing the overall luminosity and brightness." : "Темна тема, щоб полегшити ваші очі, зменшивши загальну яскравість і яскравість.", "System default theme" : "Стандартна тема системи", - "Enable the system default" : "Увімкнути систему за замовчуванням", + "Enable the system default" : "Згідно із системними налаштуваннями", "Using the default system appearance." : "Використання зовнішнього вигляду системи за замовчуванням.", "Dyslexia font" : "Шрифт для людей, які страждають від дислексії", "Enable dyslexia font" : "Увімкнути шрифт для людей, які страждають від дислексії", @@ -39,7 +39,7 @@ "A high contrast mode to ease your navigation. Visual quality will be reduced but clarity will be increased." : "Висококонтрастний режим спрощує Вашу навігацію. Візуальна якість буде знижена, але чіткість підвищиться..", "Light theme" : "Світла тема", "Enable the default light theme" : "Увімкніть типову світлу тему", - "The default light appearance." : "Світловий вигляд за замовчуванням.", + "The default light appearance." : "Типово світла тема.", "Legal notice" : "Правові застереження", "Privacy policy" : "Політика конфіденційності", "Adjust the Nextcloud theme" : "Налаштуйте тему Nextcloud", @@ -68,7 +68,7 @@ "Background" : "Тло", "Customization has been disabled by your administrator" : "Налаштування персоналізації вимкнено адміністатором.", "Set a custom background" : "Встановити спеціальне зображення тла", - "Universal access is very important to us. We follow web standards and check to make everything usable also without mouse, and assistive software such as screenreaders. We aim to be compliant with the {guidelines}Web Content Accessibility Guidelines{linkend} 2.1 on AA level, with the high contrast theme even on AAA level." : "Для нас дуже важливо забезпечити доступ для всіх. Ми дотримуємось веб-стандартів і перевіряємо, щоб забезпечити зручність користування без комп'ютерної миші, а також за допомогую допоміжного програмного забезпечення, наприклад, програми зчитування з екрана. Ми прагнемо відповідати {guidelines} Правила доступу до веб-вмісту {linkend} 2.1 на рівні AA, а з темою високої контрастності навіть на рівні AAA.", + "Universal access is very important to us. We follow web standards and check to make everything usable also without mouse, and assistive software such as screenreaders. We aim to be compliant with the {guidelines}Web Content Accessibility Guidelines{linkend} 2.1 on AA level, with the high contrast theme even on AAA level." : "Для нас дуже важливо забезпечити доступ для всіх. Ми дотримуємось сучасних стандартів розробки у вебі, намагаємося забезпечити зручність користування без комп'ютерної миші, а також за допомогую допоміжного програмного забезпечення, наприклад, програми зчитування з екрана. Ми прагнемо відповідати {guidelines} Правилам доступу до веб-вмісту {linkend} 2.1 на рівні AA, а з темою високої контрастності навіть на рівні AAA.", "If you find any issues, do not hesitate to report them on {issuetracker}our issue tracker{linkend}. And if you want to get involved, come join {designteam}our design team{linkend}!" : "Якщо ви виявите будь-які проблеми, не соромтеся повідомити про них на {issuetracker}нашій системі відстеження проблем{linkend}. І якщо ви хочете взяти участь, приєднуйтесь до {designteam}нашої команди дизайнерів{linkend}!", "Custom background" : "Користувацьке тло", "Default background" : "Типове тло", diff --git a/apps/theming/l10n/zh_HK.js b/apps/theming/l10n/zh_HK.js index 9fba260ad56..31aad253ab4 100644 --- a/apps/theming/l10n/zh_HK.js +++ b/apps/theming/l10n/zh_HK.js @@ -79,6 +79,7 @@ OC.L10N.register( "Custom background" : "自訂背景", "Default background" : "默認背景", "Change color" : "變更顏色", + "No background" : "無背景", "Select a background from your files" : "從您的檔案中選擇背景", "Theme selection is enforced" : "主題選擇已實施", "Select a custom color" : "選擇自訂色彩", diff --git a/apps/theming/l10n/zh_HK.json b/apps/theming/l10n/zh_HK.json index b95b8138755..72a53a69d40 100644 --- a/apps/theming/l10n/zh_HK.json +++ b/apps/theming/l10n/zh_HK.json @@ -77,6 +77,7 @@ "Custom background" : "自訂背景", "Default background" : "默認背景", "Change color" : "變更顏色", + "No background" : "無背景", "Select a background from your files" : "從您的檔案中選擇背景", "Theme selection is enforced" : "主題選擇已實施", "Select a custom color" : "選擇自訂色彩", diff --git a/apps/theming/l10n/zh_TW.js b/apps/theming/l10n/zh_TW.js index b0dd24077a6..09180c6797a 100644 --- a/apps/theming/l10n/zh_TW.js +++ b/apps/theming/l10n/zh_TW.js @@ -79,6 +79,7 @@ OC.L10N.register( "Custom background" : "自訂背景", "Default background" : "預設背景", "Change color" : "變更顏色", + "No background" : "無背景", "Select a background from your files" : "從您的檔案中選取背景", "Theme selection is enforced" : "強制佈景主題選取", "Select a custom color" : "選取自訂色彩", diff --git a/apps/theming/l10n/zh_TW.json b/apps/theming/l10n/zh_TW.json index 9f409b2c272..4cd7d617019 100644 --- a/apps/theming/l10n/zh_TW.json +++ b/apps/theming/l10n/zh_TW.json @@ -77,6 +77,7 @@ "Custom background" : "自訂背景", "Default background" : "預設背景", "Change color" : "變更顏色", + "No background" : "無背景", "Select a background from your files" : "從您的檔案中選取背景", "Theme selection is enforced" : "強制佈景主題選取", "Select a custom color" : "選取自訂色彩", diff --git a/apps/updatenotification/l10n/ca.js b/apps/updatenotification/l10n/ca.js index 97c7b8419c8..a69d8bc10c6 100644 --- a/apps/updatenotification/l10n/ca.js +++ b/apps/updatenotification/l10n/ca.js @@ -8,6 +8,7 @@ OC.L10N.register( "The update server could not be reached since %d days to check for new updates." : "No s’ha pogut accedir al servidor d’actualitzacions des de fa %d dies per comprovar si hi ha actualitzacions noves.", "Please check the Nextcloud and server log files for errors." : "Si us plau, comproveu els fitxers de registre del servidor i del Nextcloud per detectar errors.", "Update to %1$s is available." : "Hi ha disponible l'actualització a %1$s.", + "Update to {serverAndVersion} is available." : "L'actualització a {serverAndVersion} està disponible.", "Update for {app} to version %s is available." : "Hi ha disponible l'actualització a la versió %s per a {app}.", "Update notification" : "Notificació d'actualització", "Displays update notifications for Nextcloud and provides the SSO for the updater." : "Mostra les notificacions d’actualització de Nextcloud i proporciona l’SSO de l’actualitzador.", @@ -16,6 +17,7 @@ OC.L10N.register( "Apps missing compatible version" : "Aplicacions sense versió compatible", "View in store" : "Mostra-ho al magatzem", "Apps with compatible version" : "Aplicacions amb una versió compatible", + "Please note that the web updater is not recommended with more than 100 users! Please use the command line updater instead!" : "Tingueu en compte que no es recomana l'actualització web amb més de 100 usuaris! Si us plau, utilitzeu l'actualitzador de la línia d'ordres!", "Open updater" : "Obre l'actualitzador", "Download now" : "Descarrega-ho ara", "Please use the command line updater to update." : "Utilitzeu l'actualitzador de línia d'ordres per actualitzar.", @@ -23,6 +25,7 @@ OC.L10N.register( "The update check is not yet finished. Please refresh the page." : "La comprovació de l’actualització encara no ha finalitzat. Si us plau, actualitzeu la pàgina.", "Your version is up to date." : "La vostra versió està actualitzada.", "A non-default update server is in use to be checked for updates:" : "Es fa servir un servidor d’actualització no predeterminat per comprovar si hi ha actualitzacions:", + "You can change the update channel below which also affects the apps management page. E.g. after switching to the beta channel, beta app updates will be offered to you in the apps management page." : "Podeu canviar el canal d'actualització a continuació, que també afecta la pàgina de gestió d'aplicacions. Per exemple. després de canviar al canal beta, se us oferiran actualitzacions de l'aplicació beta a la pàgina de gestió d'aplicacions.", "Update channel:" : "Canal d'actualitzacions:", "You can always update to a newer version. But you can never downgrade to a more stable version." : "Sempre podeu actualitzar a una versió més recent. Però mai no podeu baixar a una versió més estable.", "Notify members of the following groups about available updates:" : "Notifica als membres dels següents grups sobre les actualitzacions disponibles:", diff --git a/apps/updatenotification/l10n/ca.json b/apps/updatenotification/l10n/ca.json index 4b2822d98ce..60dbd785f1d 100644 --- a/apps/updatenotification/l10n/ca.json +++ b/apps/updatenotification/l10n/ca.json @@ -6,6 +6,7 @@ "The update server could not be reached since %d days to check for new updates." : "No s’ha pogut accedir al servidor d’actualitzacions des de fa %d dies per comprovar si hi ha actualitzacions noves.", "Please check the Nextcloud and server log files for errors." : "Si us plau, comproveu els fitxers de registre del servidor i del Nextcloud per detectar errors.", "Update to %1$s is available." : "Hi ha disponible l'actualització a %1$s.", + "Update to {serverAndVersion} is available." : "L'actualització a {serverAndVersion} està disponible.", "Update for {app} to version %s is available." : "Hi ha disponible l'actualització a la versió %s per a {app}.", "Update notification" : "Notificació d'actualització", "Displays update notifications for Nextcloud and provides the SSO for the updater." : "Mostra les notificacions d’actualització de Nextcloud i proporciona l’SSO de l’actualitzador.", @@ -14,6 +15,7 @@ "Apps missing compatible version" : "Aplicacions sense versió compatible", "View in store" : "Mostra-ho al magatzem", "Apps with compatible version" : "Aplicacions amb una versió compatible", + "Please note that the web updater is not recommended with more than 100 users! Please use the command line updater instead!" : "Tingueu en compte que no es recomana l'actualització web amb més de 100 usuaris! Si us plau, utilitzeu l'actualitzador de la línia d'ordres!", "Open updater" : "Obre l'actualitzador", "Download now" : "Descarrega-ho ara", "Please use the command line updater to update." : "Utilitzeu l'actualitzador de línia d'ordres per actualitzar.", @@ -21,6 +23,7 @@ "The update check is not yet finished. Please refresh the page." : "La comprovació de l’actualització encara no ha finalitzat. Si us plau, actualitzeu la pàgina.", "Your version is up to date." : "La vostra versió està actualitzada.", "A non-default update server is in use to be checked for updates:" : "Es fa servir un servidor d’actualització no predeterminat per comprovar si hi ha actualitzacions:", + "You can change the update channel below which also affects the apps management page. E.g. after switching to the beta channel, beta app updates will be offered to you in the apps management page." : "Podeu canviar el canal d'actualització a continuació, que també afecta la pàgina de gestió d'aplicacions. Per exemple. després de canviar al canal beta, se us oferiran actualitzacions de l'aplicació beta a la pàgina de gestió d'aplicacions.", "Update channel:" : "Canal d'actualitzacions:", "You can always update to a newer version. But you can never downgrade to a more stable version." : "Sempre podeu actualitzar a una versió més recent. Però mai no podeu baixar a una versió més estable.", "Notify members of the following groups about available updates:" : "Notifica als membres dels següents grups sobre les actualitzacions disponibles:", diff --git a/apps/user_ldap/l10n/ca.js b/apps/user_ldap/l10n/ca.js index 11c76bffea0..12e2c2fed85 100644 --- a/apps/user_ldap/l10n/ca.js +++ b/apps/user_ldap/l10n/ca.js @@ -2,24 +2,25 @@ OC.L10N.register( "user_ldap", { "Failed to clear the mappings." : "No s’han pogut netejar les assignacions.", - "Failed to delete the server configuration" : "No s'han pogut suprimir els paràmetres del servidor", + "Failed to delete the server configuration" : "No s'han pogut suprimir la configuració del servidor", "Invalid configuration: Anonymous binding is not allowed." : "Configuració no vàlida: no es permet l'enllaç anònim.", "Valid configuration, connection established!" : "Configuració vàlida, connexió establerta!", - "Valid configuration, but binding failed. Please check the server settings and credentials." : "Configuració vàlida, però no s'ha pogut enllaçar. Comproveu la configuració del servidor i les credencials.", + "Valid configuration, but binding failed. Please check the server settings and credentials." : "Configuració vàlida, però no s'ha pogut enllaçar. Comproveu els paràmetres del servidor i les credencials.", "Invalid configuration. Please have a look at the logs for further details." : "Configuració no vàlida. Feu un cop d'ull als registres per obtenir més informació.", "No action specified" : "No heu especificat cap acció", "No configuration specified" : "No heu especificat cap configuració", "No data specified" : "No heu especificat cap dada", - " Could not set configuration %s" : "No s'ha pogut establir la configuració %s", + "Invalid data specified" : "Les dades especificades no són vàlides", + " Could not set configuration %s" : " No s'ha pogut establir la configuració %s", "Action does not exist" : "L'acció no existeix", - "Renewing …" : "Renovant ...", + "Renewing …" : "Renovant …", "Very weak password" : "Contrasenya massa feble", "Weak password" : "Contrasenya feble", "So-so password" : "Contrasenya passable", "Good password" : "Contrasenya bona", "Strong password" : "Contrasenya forta", "The Base DN appears to be wrong" : "El DN de base sembla estar equivocat", - "Testing configuration…" : "Probant configuració...", + "Testing configuration…" : "Probant configuració…", "Configuration incorrect" : "Configuració incorrecte", "Configuration incomplete" : "Configuració incompleta", "Configuration OK" : "Configuració correcte", @@ -27,39 +28,47 @@ OC.L10N.register( "Select object classes" : "Seleccioneu les classes dels objectes", "Please check the credentials, they seem to be wrong." : "Comproveu les credencials, semblen estar equivocades.", "Please specify the port, it could not be auto-detected." : "Especifiqueu el port, no s'ha pogut detectar automàticament.", - "Base DN could not be auto-detected, please revise credentials, host and port." : "Base DN no es pot detectar automàticament, reviseu les credencials, l'amfitrió i el port.", + "Base DN could not be auto-detected, please revise credentials, host and port." : "Base DN no es pot detectar automàticament, reviseu les credencials, el servidor i el port.", "Could not detect Base DN, please enter it manually." : "No s'ha pogut detectar Base DN, introduïu-lo manualment.", "{nthServer}. Server" : "{nthServer}. Servidor", "No object found in the given Base DN. Please revise." : "No s'ha trobat cap objecte a la Base DN donada. Reviseu.", - "More than 1,000 directory entries available." : "Hi ha més de 1.000 entrades de directoris disponibles.", + "More than 1,000 directory entries available." : "Hi ha més de 1.000 entrades de directori disponibles.", "_{objectsFound} entry available within the provided Base DN_::_{objectsFound} entries available within the provided Base DN_" : ["Hi ha {objectsFound} entrades disponibles al DN de base proporcionat","Hi ha {objectsFound} entrades disponibles al DN de base proporcionat"], - "An error occurred. Please check the Base DN, as well as connection settings and credentials." : "Hi ha hagut un error. Comproveu la base DN, així com la configuració de connexió i les credencials.", - "Do you really want to delete the current Server Configuration?" : "Segur que voleu suprimir els paràmetres actuals del servidor?", + "An error occurred. Please check the Base DN, as well as connection settings and credentials." : "Hi ha hagut un error. Comproveu la base DN, així com la paràmetres de connexió i les credencials.", + "Do you really want to delete the current Server Configuration?" : "Segur que voleu suprimir la Configuració actual del Servidor?", "Confirm Deletion" : "Confirma l'eliminació", "Mappings cleared successfully!" : "S'han netejat les assignacions amb èxit!", "Error while clearing the mappings." : "S'ha produït un error en eliminar les assignacions.", "Anonymous bind is not allowed. Please provide a User DN and Password." : "L'enllaç anònim no està permès. Proporcioneu un DN d'usuari i contrasenya.", "LDAP Operations error. Anonymous bind might not be allowed." : "Error d'operacions LDAP. L'enllaç anònim no es pot permetre.", "Saving failed. Please make sure the database is in Operation. Reload before continuing." : "S'ha produït un error en desar. Assegureu-vos que la base de dades està en Operació. Torneu a carregar abans de continuar.", - "Switching the mode will enable automatic LDAP queries. Depending on your LDAP size they may take a while. Do you still want to switch the mode?" : "Si canvieu el mode, activareu les consultes LDAP automàtiques. Depenent de la vostra mida LDAP, poden trigar una estona. Voleu canviar el mode?", + "Switching the mode will enable automatic LDAP queries. Depending on your LDAP size they may take a while. Do you still want to switch the mode?" : "Si canvieu el mode, habilitareu les consultes LDAP automàtiques. Depenent de la vostra mida LDAP, poden trigar una estona. Voleu canviar el mode?", "Mode switch" : "Canvia el mode", "Select attributes" : "Seleccioneu els atributs", "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command-line validation): <br/>" : "Usuari no trobat. Comproveu els vostres atributs d'inici de sessió i el vostre nom d'usuari. Filtre eficaç (per copiar i enganxar per a la validació de la línia de comandaments):<br/>", - "User found and settings verified." : "S'ha trobat l'usuari i s'ha verificat la configuració.", + "User found and settings verified." : "S'ha trobat l'usuari i s'han verificat els paràmetres.", "Consider narrowing your search, as it encompassed many users, only the first one of whom will be able to log in." : "Penseu a reduir la vostra cerca, ja que ha inclòs molts usuaris, només el primer dels quals podrà iniciar sessió.", - "An unspecified error occurred. Please check log and settings." : "S'ha produït un error no especificat. Verifiqueu el registre i la configuració.", + "An unspecified error occurred. Please check log and settings." : "S'ha produït un error no especificat. Verifiqueu el registre i els paràmetres.", "The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "El filtre de cerca no és vàlid, probablement a causa de problemes de sintaxi com el nombre impar de parèntesis oberts i tancats. Reviseu.", + "A connection error to LDAP/AD occurred. Please check host, port and credentials." : "S'ha produït un error de connexió a LDAP/AD. Comproveu el servidor, el port i les credencials.", + "The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP/AD." : "Falta el marcador de posició \"%uid\". Se substituirà pel nom d'inici de sessió en consultar LDAP/AD.", "Please provide a login name to test against" : "Proporcioneu un nom d'inici de sessió per provar-ho", - "Password change rejected. Hint: " : "El canvi de contrasenya s'ha rebutjat. Pista:", + "The group box was disabled, because the LDAP/AD server does not support memberOf." : "El quadre de grup s'ha desactivat perquè el servidor LDAP/AD no admet memberOf.", + "Password change rejected. Hint: " : "El canvi de contrasenya s'ha rebutjat. Pista: ", "Please login with the new password" : "Inicieu sessió amb la nova contrasenya", "LDAP User backend" : "Rerefons d'usuari LDAP", "Your password will expire tomorrow." : "La contrasenya caducarà demà.", "Your password will expire today." : "La contrasenya caducarà avui.", - "_Your password will expire within %n day._::_Your password will expire within %n days._" : ["La vostra contrasenya expirarà en %n dies.","La vostra contrasenya expirarà d'aquí %n dies."], - "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "No s'ha pogut detectar l'atribut del nom de visualització de l'usuari. Si us plau, especifiqueu-vos a la configuració LDAP avançada.", + "_Your password will expire within %n day._::_Your password will expire within %n days._" : ["La vostra contrasenya expirarà en %n dies.","La vostra contrasenya caducarà d'aquí %n dies."], + "LDAP/AD integration" : "Integració LDAP/AD", + "_%n group found_::_%n groups found_" : ["S'ha trobat %n grup","S’han trobat %n grups"], + "> 1000 groups found" : "> 1000 grups trobats", + "> 1000 users found" : "> 1000 usuaris trobats", + "_%n user found_::_%n users found_" : ["S'ha trobat %n usuari","S’han trobat %n usuaris"], + "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "No s'ha pogut detectar l'atribut del nom de visualització de l'usuari. Si us plau, especifiqueu-vos als paràmetres de LDAP avançats.", "Could not find the desired feature" : "La característica desitjada no s'ha trobat", - "Invalid Host" : "Ordinador central no vàlid", - "LDAP user and group backend" : "Usuari LDAP i grup de suport", + "Invalid Host" : "Servidor no vàlid", + "LDAP user and group backend" : "Usuari LDAP i grup de rerefons", "This application enables administrators to connect Nextcloud to an LDAP-based user directory." : "Aquesta aplicació permet als administradors connectar Nextcloud a un directori d'usuari basat en LDAP.", "This application enables administrators to connect Nextcloud to an LDAP-based user directory for authentication and provisioning users, groups and user attributes. Admins can configure this application to connect to one or more LDAP directories or Active Directories via an LDAP interface. Attributes such as user quota, email, avatar pictures, group memberships and more can be pulled into Nextcloud from a directory with the appropriate queries and filters.\n\nA user logs into Nextcloud with their LDAP or AD credentials, and is granted access based on an authentication request handled by the LDAP or AD server. Nextcloud does not store LDAP or AD passwords, rather these credentials are used to authenticate a user and then Nextcloud uses a session for the user ID. More information is available in the LDAP User and Group Backend documentation." : "Aquest aplicació permet als administradors connectar Nextcloud a un directori LDAP per autenticació i subministrament d'usuaris, grups i atributs d'usuari. Els administradors poden configurar aquesta aplicació per connectar a un o més directoris LDAP o ActiveDirectories (AD) a través de la interfície LDAP. Amb les consultes i filtres adequats es poden extreure i importar a Nextcloud atributs d'usuari com la quota, adreça de correu, avatar, pertinença a grups i més.\n\nUn usuari accedeix a Nextcloud amb les seves credencials LDAP o AD, i rep accés gràcies a l'autenticació gestionada pel servidor LDAP / AD. Nextcloud en cap moment emmagatzema la contrasenya LDAP o AD, ans al contrari, un cop l'usuari s'ha identificat correctament Nextcloud emprarà variables de sessió per desar només el ID de l'usuari. Podeu trobar més informació a la documentació sobre gestió d'usuaris i grups LDAP.", "Test Configuration" : "Comprovació de la configuració", @@ -70,21 +79,24 @@ OC.L10N.register( "Search groups" : "Buscar grups", "Available groups" : "Grups disponibles", "Selected groups" : "Grups seleccionats", - "Edit LDAP Query" : "Editeu la consulta LDAP", + "Edit LDAP Query" : "Edició de la consulta LDAP", "LDAP Filter:" : "Filtre LDAP:", "The filter specifies which LDAP groups shall have access to the %s instance." : "El filtre especifica quins grups LDAP haurien de tenir accés a la instància %s.", - "Verify settings and count the groups" : "Comprova la configuració i compta els grups", - "When logging in, %s will find the user based on the following attributes:" : "Quan s'accedeixi, %s cercarà l'usuari segons aquests atributs:", + "Verify settings and count the groups" : "Comprova els paràmetres i compta els grups", + "When logging in, %s will find the user based on the following attributes:" : "Quan s'accedeixi, %s trobarà l'usuari segons aquests atributs:", + "LDAP/AD Username:" : "Nom d'usuari LDAP/AD:", + "Allows login against the LDAP/AD username, which is either \"uid\" or \"sAMAccountName\" and will be detected." : "Permet inici de sessió amb el nom d'usuari LDAP/AD, que és \"uid\" o \"sAMAccountName\" i es detectarà.", + "LDAP/AD Email Address:" : "Adreça de correu electrònic LDAP/AD:", "Allows login against an email attribute. \"mail\" and \"mailPrimaryAddress\" allowed." : "Permet l'inici de sessió emprant l'atribut adreça de correu. S'accepten \"mail\" i \"mailPrimaryAddress\" .", "Other Attributes:" : "Altres atributs:", "Defines the filter to apply, when login is attempted. \"%%uid\" replaces the username in the login action. Example: \"uid=%%uid\"" : "Defineix el filtre a aplicar quan s'inicia sessió. \"%%uid\" reemplaça el nom d'usuari en l'acció d'identificar-se. Exemple \"uid=%%uid\"", "Test Loginname" : "Nom d'usuari de prova", - "Verify settings" : "Comprova la configuració", + "Verify settings" : "Comprova els paràmetres", "%s. Server:" : "%s. Servidor:", "Add a new configuration" : "Afegeix una nova configuració", - "Copy current configuration into new directory binding" : "Copia l'actual configuració en la nova connexió", - "Delete the current configuration" : "Esborra la configuració actual", - "Host" : "Equip remot", + "Copy current configuration into new directory binding" : "Copia l'actual configuració en la nova connexió al directori", + "Delete the current configuration" : "Suprimeix la configuració actual", + "Host" : "Servidor", "You can omit the protocol, unless you require SSL. If so, start with ldaps://" : "Podeu ometre el protocol, si no requeriu SSL. Si ho requeriu llavors comenceu amb ldaps://", "Port" : "Port", "Detect Port" : "Detecta port", @@ -99,16 +111,16 @@ OC.L10N.register( "Test Base DN" : "Prova el DN de base", "Avoids automatic LDAP requests. Better for bigger setups, but requires some LDAP knowledge." : "Evita peticions LDAP automàtiques. És millor per configuracions grans, però requereix tenir certs coneixements de LDAP.", "Manually enter LDAP filters (recommended for large directories)" : "Introducció manual de filtres LDAP (recomanat per a directoris grans)", - "Listing and searching for users is constrained by these criteria:" : "La consulta i cerca per part dels usuaris és restringida pels següents criteris:", + "Listing and searching for users is constrained by these criteria:" : "Llistat i cerca per part dels usuaris és restringida pels següents criteris:", "The most common object classes for users are organizationalPerson, person, user, and inetOrgPerson. If you are not sure which object class to select, please consult your directory admin." : "Las classes d'objectes més comunes pels usuaris són organizationalPerson, person, user, i inetOrgPerson. Si no esteu segurs de quina classe d'objecte escollir llavors consulteu el vostre administrador de directori.", - "The filter specifies which LDAP users shall have access to the %s instance." : "El filtre especifica quins usuaris LDAP haurien de tenir accés a la instància %s", - "Verify settings and count users" : "Verifica configuracions i compta usuaris", + "The filter specifies which LDAP users shall have access to the %s instance." : "El filtre especifica quins usuaris LDAP haurien de tenir accés a la instància %s.", + "Verify settings and count users" : "Verifica paràmetres i compta usuaris", "Saving" : "S'està desant", "Back" : "Enrere", "Continue" : "Continua", "Please renew your password." : "Heu de renovar la vostra contrasenya.", "An internal error occurred." : "Hi ha hagut un error intern inesperat.", - "Please try again or contact your administrator." : "Proveu un altre cop o contacteu al vostre administrador.", + "Please try again or contact your administrator." : "Torneu-ho a provar o contacteu al vostre administrador.", "Current password" : "Contrasenya actual", "New password" : "Nova contrasenya", "Renew password" : "Renova la contrasenya", @@ -116,28 +128,28 @@ OC.L10N.register( "Cancel" : "Cancel·la", "Server" : "Servidor", "Users" : "Usuaris", - "Login Attributes" : "Atributs d'accés", + "Login Attributes" : "Atributs d'inici de sessió", "Groups" : "Grups", "Expert" : "Expert", "Advanced" : "Avançat", - "<b>Warning:</b> The PHP LDAP module is not installed, the backend will not work. Please ask your system administrator to install it." : "<b>Avís:</b> El mòdul PHP LDAP no està instal·lat, el dorsal no funcionarà. Demaneu a l'administrador del sistema que l'instal·li.", + "<b>Warning:</b> The PHP LDAP module is not installed, the backend will not work. Please ask your system administrator to install it." : "<b>Avís:</b> El mòdul PHP LDAP no està instal·lat, el rerefons no funcionarà. Demaneu a l'administrador del sistema que l'instal·li.", "Connection Settings" : "Paràmetres de connexió", "Configuration Active" : "Configuració activa", "When unchecked, this configuration will be skipped." : "Si està desmarcat, aquesta configuració s'ometrà.", - "Backup (Replica) Host" : "Màquina de còpia de serguretat (rèplica)", + "Backup (Replica) Host" : "Servidor de còpia de seguretat (rèplica)", "Give an optional backup host. It must be a replica of the main LDAP/AD server." : "Afegiu una màquina de còpia de seguretat opcional. Ha de ser una rèplica del servidor LDAP/AD principal.", "Backup (Replica) Port" : "Port de la còpia de seguretat (rèplica)", - "Disable Main Server" : "Desactiva el servidor principal", + "Disable Main Server" : "Inhabilita el servidor principal", "Only connect to the replica server." : "Connecta només al servidor rèplica.", "Turn off SSL certificate validation." : "Desactiva la validació de certificat SSL.", "Not recommended, use it for testing only! If connection only works with this option, import the LDAP server's SSL certificate in your %s server." : "No es recomana, useu-ho només com a prova! Importeu el certificat SSL del servidor LDAP al servidor %s només si la connexió funciona amb aquesta opció.", "Cache Time-To-Live" : "Memòria cau Time-To-Live", "in seconds. A change empties the cache." : "en segons. Un canvi buidarà la memòria cau.", - "Directory Settings" : "Configuracio de carpetes", + "Directory Settings" : "Paràmetres de carpetes", "User Display Name Field" : "Camp per mostrar el nom d'usuari", "The LDAP attribute to use to generate the user's display name." : "Atribut LDAP a usar per generar el nom a mostrar de l'usuari.", "2nd User Display Name Field" : "Camp del 2n nom d'usuari a mostrar", - "Optional. An LDAP attribute to be added to the display name in brackets. Results in e.g. »John Doe (john.doe@example.org)«." : "Opcional. Un atribut LDAP per ser afegit al nom a mostrar entre parèntesis. Esdevé en quelcom així: »Oriol Junqueras (oriol.junqueras@exemple.cat)«.", + "Optional. An LDAP attribute to be added to the display name in brackets. Results in e.g. »John Doe (john.doe@example.org)«." : "Opcional. Un atribut LDAP per ser afegit al nom a mostrar entre parèntesis. Esdevé en quelcom així: »Oriol Mas (oriol.mas@exemple.cat)«.", "Base User Tree" : "Arbre base d'usuaris", "One User Base DN per line" : "Una DN Base d'Usuari per línia", "User Search Attributes" : "Atributs de cerca d'usuari", @@ -148,37 +160,39 @@ OC.L10N.register( "One Group Base DN per line" : "Una DN Base de Grup per línia", "Group Search Attributes" : "Atributs de cerca de grup", "Group-Member association" : "Associació membres-grup", - "Dynamic Group Member URL" : "URL del Dynamic Group Member", - "The LDAP attribute that on group objects contains an LDAP search URL that determines what objects belong to the group. (An empty setting disables dynamic group membership functionality.)" : "L'atribut LDAP que en objectes de Grup conté un URL de cerca LDAP que determina quins objectes pertanyen al grup. (Si es deixa en blanc es desactiva la funcionalitat de pertinença dinàmica a grups)", + "Dynamic Group Member URL" : "URL del Membre de Grup Dinàmic", + "The LDAP attribute that on group objects contains an LDAP search URL that determines what objects belong to the group. (An empty setting disables dynamic group membership functionality.)" : "L'atribut LDAP que en objectes de Grup conté un URL de cerca LDAP que determina quins objectes pertanyen al grup. (Si es deixa el paràmetre en blanc es desactiva la funcionalitat de pertinença dinàmica a grups)", "Nested Groups" : "Grups imbricats", "When switched on, groups that contain groups are supported. (Only works if the group member attribute contains DNs.)" : "Quan està activat, els grups que contenen grups estan permesos. (Només funciona si l'atribut del grup membre conté DNs.)", "Paging chunksize" : "Mida de la pàgina", "Chunksize used for paged LDAP searches that may return bulky results like user or group enumeration. (Setting it 0 disables paged LDAP searches in those situations.)" : "Mida usada per cerques LDAP paginades que podrien retornar respostes de volcat com enumeració d'usuari o grup. (Establint-ho a 0 desactiva les cerques LDAP paginades en aquestes situacions.)", - "Enable LDAP password changes per user" : "Activa el canvi de contrasenya LDAP pels usuaris", + "Enable LDAP password changes per user" : "Habilita el canvi de contrasenya LDAP pels usuaris", "Allow LDAP users to change their password and allow Super Administrators and Group Administrators to change the password of their LDAP users. Only works when access control policies are configured accordingly on the LDAP server. As passwords are sent in plaintext to the LDAP server, transport encryption must be used and password hashing should be configured on the LDAP server." : "Permet als usuaris LDAP canviar la seva contrasenya i permet als Súper administradors i Administradors de grup canviar les contrasenyes dels seus usuaris LDAP. Només funciona quan les polítiques del control d'accés es configuren de igual manera al servidor LDAP. Com les contrasenyes s'envien en text pla (no xifrat) al servidor LDAP, s'ha d'usar transport xifrat i s'hauria de configurar el servidor LDAP per usar resum de contrasenyes (\"hashing\").", "(New password is sent as plain text to LDAP)" : "(La nova contrasenya s'envia com a text pla al servidor LDAP)", - "Default password policy DN" : "DN de la política de contrasenya predeterminada", - "The DN of a default password policy that will be used for password expiry handling. Works only when LDAP password changes per user are enabled and is only supported by OpenLDAP. Leave empty to disable password expiry handling." : "El DN d'una política de contrasenya predeterminada que serà emprada per a la gestió de la caducitat de contrasenyes. Només funciona quan està activat el canvi de contrasenyes per part dels usuaris i només és compatible amb OpenLDAP. Deixeu buit aquest camp per desactivar aquesta gestió de contrasenyes caducades.", + "Default password policy DN" : "DN de la política de contrasenya per defecte", + "The DN of a default password policy that will be used for password expiry handling. Works only when LDAP password changes per user are enabled and is only supported by OpenLDAP. Leave empty to disable password expiry handling." : "El DN d'una política de contrasenya predeterminada que serà emprada per a la gestió de la caducitat de contrasenyes. Només funciona quan està habilitat el canvi de contrasenyes per part dels usuaris i només és compatible amb OpenLDAP. Deixeu buit aquest camp per desactivar aquesta gestió de contrasenyes caducades.", "Special Attributes" : "Atributs especials", "Quota Field" : "Camp de quota", - "Leave empty for user's default quota. Otherwise, specify an LDAP/AD attribute." : "Deixeu buit per usar la quota predeterminada pels usuaris, O si no, indiqueu un atribut LDAP/AD.", + "Leave empty for user's default quota. Otherwise, specify an LDAP/AD attribute." : "Deixeu buit per usar la quota per defecte pels usuaris, O si no, indiqueu un atribut LDAP/AD.", "Quota Default" : "Quota per defecte", - "Override default quota for LDAP users who do not have a quota set in the Quota Field." : "Sobreescriu la quota predeterminada pels usuaris LDAP que no tenen una quota establerta en el camp Quota.", + "Override default quota for LDAP users who do not have a quota set in the Quota Field." : "Sobreescriu la quota per defecte pels usuaris LDAP que no tenen una quota establerta en el camp Quota.", "Email Field" : "Camp de correu electrònic", "Set the user's email from their LDAP attribute. Leave it empty for default behaviour." : "Estableix l'adreça de correu a partir del seu atribut LDAP. Deixeu buit pel comportament predeterminat.", "User Home Folder Naming Rule" : "Norma per anomenar la carpeta arrel d'usuari", "Leave empty for username (default). Otherwise, specify an LDAP/AD attribute." : "Deixar buit pel nom d'usuari (per defecte). Altrament, especificar un atribut LDAP/AD.", - "\"$home\" Placeholder Field" : "Camp de text variable per \"$home\" ", + "\"$home\" Placeholder Field" : "Camp de marcador de posició \"$home\"", "$home in an external storage configuration will be replaced with the value of the specified attribute" : "En la configuració d'un emmagatzematge extern es reemplaçarà $home amb el valor de l'atribut especificat", "Internal Username" : "Nom d'usuari intern", + "By default the internal username will be created from the UUID attribute. It makes sure that the username is unique and characters do not need to be converted. The internal username has the restriction that only these characters are allowed: [a-zA-Z0-9_.@-]. Other characters are replaced with their ASCII correspondence or simply omitted. On collisions a number will be added/increased. The internal username is used to identify a user internally. It is also the default name for the user home folder. It is also a part of remote URLs, for instance for all DAV services. With this setting, the default behavior can be overridden. Changes will have effect only on newly mapped (added) LDAP users. Leave it empty for default behavior." : "Per defecte, el nom d'usuari intern es crearà a partir de l'atribut UUID. S'assegura que el nom d'usuari és únic i que els caràcters no s'han de convertir. El nom d'usuari intern té la restricció que només es permeten aquests caràcters: [a-zA-Z0-9_.@-]. Altres caràcters es substitueixen per la seva correspondència ASCII o simplement s'ometen. En les col·lisions, s'afegirà/augmentarà un nombre. El nom d'usuari intern s'utilitza per identificar un usuari internament. També és el nom per defecte de la carpeta d'inici de l'usuari. També forma part dels URL remots, per exemple, per a tots els serveis DAV. Amb aquest paràmetre, es pot anul·lar el comportament per defecte. Els canvis només tindran efecte en els usuaris LDAP (afegits) recentment assignats. Deixeu-lo buit per al comportament per defecte.", "Internal Username Attribute:" : "Atribut nom d'usuari intern:", "Override UUID detection" : "Sobrescriu la detecció UUID", - "By default, the UUID attribute is automatically detected. The UUID attribute is used to doubtlessly identify LDAP users and groups. Also, the internal username will be created based on the UUID, if not specified otherwise above. You can override the setting and pass an attribute of your choice. You must make sure that the attribute of your choice can be fetched for both users and groups and it is unique. Leave it empty for default behavior. Changes will have effect only on newly mapped (added) LDAP users and groups." : "Per defecte, owncloud autodetecta l'atribut UUID. L'atribut UUID s'utilitza per identificar usuaris i grups de forma indubtable. També el nom d'usuari intern es crearà en base a la UUIS, si no heu especificat res diferent a dalt. Podeu sobreescriure l'arranjament i passar l'atribut que desitgeu. Heu d'assegurar-vos que l'atribut que escolliu pot ser recollit tant pels usuaris com pels grups i que és únic. Deixeu-ho en blanc si preferiu el comportament per defecte. els canvis s'aplicaran als usuaris i grups LDAP mapats de nou (afegits).", + "By default, the UUID attribute is automatically detected. The UUID attribute is used to doubtlessly identify LDAP users and groups. Also, the internal username will be created based on the UUID, if not specified otherwise above. You can override the setting and pass an attribute of your choice. You must make sure that the attribute of your choice can be fetched for both users and groups and it is unique. Leave it empty for default behavior. Changes will have effect only on newly mapped (added) LDAP users and groups." : "Per defecte, owncloud autodetecta l'atribut UUID. L'atribut UUID s'utilitza per identificar usuaris i grups automàticament. També el nom d'usuari intern es crearà en base a la UUID, si no heu especificat res diferent a dalt. Podeu sobreescriure el paràmetre i passar l'atribut que desitgeu. Heu d'assegurar-vos que l'atribut que escolliu pot ser recollit tant pels usuaris com pels grups i que és únic. Deixeu-ho en blanc si preferiu el comportament per defecte. els canvis s'aplicaran als usuaris i grups LDAP mapats de nou (afegits).", "UUID Attribute for Users:" : "Atribut UUID per Usuaris:", "UUID Attribute for Groups:" : "Atribut UUID per Grups:", "Username-LDAP User Mapping" : "Mapatge d'usuari Nom d'usuari-LDAP", "Usernames are used to store and assign metadata. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "Els noms d'usuari son emprats per emmagatzemar i assignar metadades. Per tal d'identificar i reconèixer amb precisió als usuaris, cada usuari LDAP té un nom d'usuari intern. Això requereix una assignació de noms d'usuari interns per a cada un dels usuaris LDAP. Al nom d'usuari creat s'assigna el UUID de l'usuari LDAP. A més el DN es guarda en memòria cau per a reduir la interacció amb LDAP, però no s'utilitza per a identificació. Si el DN canvia, es trobaran els canvis. El nom d'usuari intern s'utilitza arreu. Netejar el mapa d'assignacions deixaria restes per totes bandes. Netejar el mapa d'assignacions no és que sigui sensible a la configuració, sinó que afecta a totes les configuracions LDAP! Mai netegeu el mapa d'assignacions en un entorn de producció, només en escenaris de proves o experimentals.", "Clear Username-LDAP User Mapping" : "Elimina el mapatge d'usuari Nom d'usuari-LDAP", - "Clear Groupname-LDAP Group Mapping" : "Suprimeix el mapatge de grup Nom de grup-LDAP" + "Clear Groupname-LDAP Group Mapping" : "Suprimeix el mapatge de grup Nom de grup-LDAP", + "By default the internal username will be created from the UUID attribute. It makes sure that the username is unique and characters do not need to be converted. The internal username has the restriction that only these characters are allowed: [a-zA-Z0-9_.@-]. Other characters are replaced with their ASCII correspondence or simply omitted. On collisions a number will be added/increased. The internal username is used to identify a user internally. It is also the default name for the user home folder. It is also a part of remote URLs, for instance for all *DAV services. With this setting, the default behavior can be overridden. Changes will have effect only on newly mapped (added) LDAP users. Leave it empty for default behavior." : "Per defecte, el nom d'usuari intern es crearà a partir de l'atribut UUID. S'assegura que el nom d'usuari és únic i que els caràcters no s'han de convertir. El nom d'usuari intern té la restricció que només es permeten aquests caràcters: [a-zA-Z0-9_.@-]. Altres caràcters es substitueixen per la seva correspondència ASCII o simplement s'ometen. En les col·lisions, s'afegirà/augmentarà un nombre. El nom d'usuari intern s'utilitza per identificar un usuari internament. També és el nom per defecte de la carpeta d'inici de l'usuari. També forma part dels URL remots, per exemple per a tots els serveis *DAV. Amb aquest paràmetre, es pot anul·lar el comportament per defecte. Els canvis només tindran efecte en els usuaris LDAP (afegits) recentment assignats. Deixeu-lo buit per al comportament per defecte." }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/user_ldap/l10n/ca.json b/apps/user_ldap/l10n/ca.json index 1e6917e3dac..d82aa7d12b2 100644 --- a/apps/user_ldap/l10n/ca.json +++ b/apps/user_ldap/l10n/ca.json @@ -1,23 +1,24 @@ { "translations": { "Failed to clear the mappings." : "No s’han pogut netejar les assignacions.", - "Failed to delete the server configuration" : "No s'han pogut suprimir els paràmetres del servidor", + "Failed to delete the server configuration" : "No s'han pogut suprimir la configuració del servidor", "Invalid configuration: Anonymous binding is not allowed." : "Configuració no vàlida: no es permet l'enllaç anònim.", "Valid configuration, connection established!" : "Configuració vàlida, connexió establerta!", - "Valid configuration, but binding failed. Please check the server settings and credentials." : "Configuració vàlida, però no s'ha pogut enllaçar. Comproveu la configuració del servidor i les credencials.", + "Valid configuration, but binding failed. Please check the server settings and credentials." : "Configuració vàlida, però no s'ha pogut enllaçar. Comproveu els paràmetres del servidor i les credencials.", "Invalid configuration. Please have a look at the logs for further details." : "Configuració no vàlida. Feu un cop d'ull als registres per obtenir més informació.", "No action specified" : "No heu especificat cap acció", "No configuration specified" : "No heu especificat cap configuració", "No data specified" : "No heu especificat cap dada", - " Could not set configuration %s" : "No s'ha pogut establir la configuració %s", + "Invalid data specified" : "Les dades especificades no són vàlides", + " Could not set configuration %s" : " No s'ha pogut establir la configuració %s", "Action does not exist" : "L'acció no existeix", - "Renewing …" : "Renovant ...", + "Renewing …" : "Renovant …", "Very weak password" : "Contrasenya massa feble", "Weak password" : "Contrasenya feble", "So-so password" : "Contrasenya passable", "Good password" : "Contrasenya bona", "Strong password" : "Contrasenya forta", "The Base DN appears to be wrong" : "El DN de base sembla estar equivocat", - "Testing configuration…" : "Probant configuració...", + "Testing configuration…" : "Probant configuració…", "Configuration incorrect" : "Configuració incorrecte", "Configuration incomplete" : "Configuració incompleta", "Configuration OK" : "Configuració correcte", @@ -25,39 +26,47 @@ "Select object classes" : "Seleccioneu les classes dels objectes", "Please check the credentials, they seem to be wrong." : "Comproveu les credencials, semblen estar equivocades.", "Please specify the port, it could not be auto-detected." : "Especifiqueu el port, no s'ha pogut detectar automàticament.", - "Base DN could not be auto-detected, please revise credentials, host and port." : "Base DN no es pot detectar automàticament, reviseu les credencials, l'amfitrió i el port.", + "Base DN could not be auto-detected, please revise credentials, host and port." : "Base DN no es pot detectar automàticament, reviseu les credencials, el servidor i el port.", "Could not detect Base DN, please enter it manually." : "No s'ha pogut detectar Base DN, introduïu-lo manualment.", "{nthServer}. Server" : "{nthServer}. Servidor", "No object found in the given Base DN. Please revise." : "No s'ha trobat cap objecte a la Base DN donada. Reviseu.", - "More than 1,000 directory entries available." : "Hi ha més de 1.000 entrades de directoris disponibles.", + "More than 1,000 directory entries available." : "Hi ha més de 1.000 entrades de directori disponibles.", "_{objectsFound} entry available within the provided Base DN_::_{objectsFound} entries available within the provided Base DN_" : ["Hi ha {objectsFound} entrades disponibles al DN de base proporcionat","Hi ha {objectsFound} entrades disponibles al DN de base proporcionat"], - "An error occurred. Please check the Base DN, as well as connection settings and credentials." : "Hi ha hagut un error. Comproveu la base DN, així com la configuració de connexió i les credencials.", - "Do you really want to delete the current Server Configuration?" : "Segur que voleu suprimir els paràmetres actuals del servidor?", + "An error occurred. Please check the Base DN, as well as connection settings and credentials." : "Hi ha hagut un error. Comproveu la base DN, així com la paràmetres de connexió i les credencials.", + "Do you really want to delete the current Server Configuration?" : "Segur que voleu suprimir la Configuració actual del Servidor?", "Confirm Deletion" : "Confirma l'eliminació", "Mappings cleared successfully!" : "S'han netejat les assignacions amb èxit!", "Error while clearing the mappings." : "S'ha produït un error en eliminar les assignacions.", "Anonymous bind is not allowed. Please provide a User DN and Password." : "L'enllaç anònim no està permès. Proporcioneu un DN d'usuari i contrasenya.", "LDAP Operations error. Anonymous bind might not be allowed." : "Error d'operacions LDAP. L'enllaç anònim no es pot permetre.", "Saving failed. Please make sure the database is in Operation. Reload before continuing." : "S'ha produït un error en desar. Assegureu-vos que la base de dades està en Operació. Torneu a carregar abans de continuar.", - "Switching the mode will enable automatic LDAP queries. Depending on your LDAP size they may take a while. Do you still want to switch the mode?" : "Si canvieu el mode, activareu les consultes LDAP automàtiques. Depenent de la vostra mida LDAP, poden trigar una estona. Voleu canviar el mode?", + "Switching the mode will enable automatic LDAP queries. Depending on your LDAP size they may take a while. Do you still want to switch the mode?" : "Si canvieu el mode, habilitareu les consultes LDAP automàtiques. Depenent de la vostra mida LDAP, poden trigar una estona. Voleu canviar el mode?", "Mode switch" : "Canvia el mode", "Select attributes" : "Seleccioneu els atributs", "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command-line validation): <br/>" : "Usuari no trobat. Comproveu els vostres atributs d'inici de sessió i el vostre nom d'usuari. Filtre eficaç (per copiar i enganxar per a la validació de la línia de comandaments):<br/>", - "User found and settings verified." : "S'ha trobat l'usuari i s'ha verificat la configuració.", + "User found and settings verified." : "S'ha trobat l'usuari i s'han verificat els paràmetres.", "Consider narrowing your search, as it encompassed many users, only the first one of whom will be able to log in." : "Penseu a reduir la vostra cerca, ja que ha inclòs molts usuaris, només el primer dels quals podrà iniciar sessió.", - "An unspecified error occurred. Please check log and settings." : "S'ha produït un error no especificat. Verifiqueu el registre i la configuració.", + "An unspecified error occurred. Please check log and settings." : "S'ha produït un error no especificat. Verifiqueu el registre i els paràmetres.", "The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "El filtre de cerca no és vàlid, probablement a causa de problemes de sintaxi com el nombre impar de parèntesis oberts i tancats. Reviseu.", + "A connection error to LDAP/AD occurred. Please check host, port and credentials." : "S'ha produït un error de connexió a LDAP/AD. Comproveu el servidor, el port i les credencials.", + "The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP/AD." : "Falta el marcador de posició \"%uid\". Se substituirà pel nom d'inici de sessió en consultar LDAP/AD.", "Please provide a login name to test against" : "Proporcioneu un nom d'inici de sessió per provar-ho", - "Password change rejected. Hint: " : "El canvi de contrasenya s'ha rebutjat. Pista:", + "The group box was disabled, because the LDAP/AD server does not support memberOf." : "El quadre de grup s'ha desactivat perquè el servidor LDAP/AD no admet memberOf.", + "Password change rejected. Hint: " : "El canvi de contrasenya s'ha rebutjat. Pista: ", "Please login with the new password" : "Inicieu sessió amb la nova contrasenya", "LDAP User backend" : "Rerefons d'usuari LDAP", "Your password will expire tomorrow." : "La contrasenya caducarà demà.", "Your password will expire today." : "La contrasenya caducarà avui.", - "_Your password will expire within %n day._::_Your password will expire within %n days._" : ["La vostra contrasenya expirarà en %n dies.","La vostra contrasenya expirarà d'aquí %n dies."], - "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "No s'ha pogut detectar l'atribut del nom de visualització de l'usuari. Si us plau, especifiqueu-vos a la configuració LDAP avançada.", + "_Your password will expire within %n day._::_Your password will expire within %n days._" : ["La vostra contrasenya expirarà en %n dies.","La vostra contrasenya caducarà d'aquí %n dies."], + "LDAP/AD integration" : "Integració LDAP/AD", + "_%n group found_::_%n groups found_" : ["S'ha trobat %n grup","S’han trobat %n grups"], + "> 1000 groups found" : "> 1000 grups trobats", + "> 1000 users found" : "> 1000 usuaris trobats", + "_%n user found_::_%n users found_" : ["S'ha trobat %n usuari","S’han trobat %n usuaris"], + "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "No s'ha pogut detectar l'atribut del nom de visualització de l'usuari. Si us plau, especifiqueu-vos als paràmetres de LDAP avançats.", "Could not find the desired feature" : "La característica desitjada no s'ha trobat", - "Invalid Host" : "Ordinador central no vàlid", - "LDAP user and group backend" : "Usuari LDAP i grup de suport", + "Invalid Host" : "Servidor no vàlid", + "LDAP user and group backend" : "Usuari LDAP i grup de rerefons", "This application enables administrators to connect Nextcloud to an LDAP-based user directory." : "Aquesta aplicació permet als administradors connectar Nextcloud a un directori d'usuari basat en LDAP.", "This application enables administrators to connect Nextcloud to an LDAP-based user directory for authentication and provisioning users, groups and user attributes. Admins can configure this application to connect to one or more LDAP directories or Active Directories via an LDAP interface. Attributes such as user quota, email, avatar pictures, group memberships and more can be pulled into Nextcloud from a directory with the appropriate queries and filters.\n\nA user logs into Nextcloud with their LDAP or AD credentials, and is granted access based on an authentication request handled by the LDAP or AD server. Nextcloud does not store LDAP or AD passwords, rather these credentials are used to authenticate a user and then Nextcloud uses a session for the user ID. More information is available in the LDAP User and Group Backend documentation." : "Aquest aplicació permet als administradors connectar Nextcloud a un directori LDAP per autenticació i subministrament d'usuaris, grups i atributs d'usuari. Els administradors poden configurar aquesta aplicació per connectar a un o més directoris LDAP o ActiveDirectories (AD) a través de la interfície LDAP. Amb les consultes i filtres adequats es poden extreure i importar a Nextcloud atributs d'usuari com la quota, adreça de correu, avatar, pertinença a grups i més.\n\nUn usuari accedeix a Nextcloud amb les seves credencials LDAP o AD, i rep accés gràcies a l'autenticació gestionada pel servidor LDAP / AD. Nextcloud en cap moment emmagatzema la contrasenya LDAP o AD, ans al contrari, un cop l'usuari s'ha identificat correctament Nextcloud emprarà variables de sessió per desar només el ID de l'usuari. Podeu trobar més informació a la documentació sobre gestió d'usuaris i grups LDAP.", "Test Configuration" : "Comprovació de la configuració", @@ -68,21 +77,24 @@ "Search groups" : "Buscar grups", "Available groups" : "Grups disponibles", "Selected groups" : "Grups seleccionats", - "Edit LDAP Query" : "Editeu la consulta LDAP", + "Edit LDAP Query" : "Edició de la consulta LDAP", "LDAP Filter:" : "Filtre LDAP:", "The filter specifies which LDAP groups shall have access to the %s instance." : "El filtre especifica quins grups LDAP haurien de tenir accés a la instància %s.", - "Verify settings and count the groups" : "Comprova la configuració i compta els grups", - "When logging in, %s will find the user based on the following attributes:" : "Quan s'accedeixi, %s cercarà l'usuari segons aquests atributs:", + "Verify settings and count the groups" : "Comprova els paràmetres i compta els grups", + "When logging in, %s will find the user based on the following attributes:" : "Quan s'accedeixi, %s trobarà l'usuari segons aquests atributs:", + "LDAP/AD Username:" : "Nom d'usuari LDAP/AD:", + "Allows login against the LDAP/AD username, which is either \"uid\" or \"sAMAccountName\" and will be detected." : "Permet inici de sessió amb el nom d'usuari LDAP/AD, que és \"uid\" o \"sAMAccountName\" i es detectarà.", + "LDAP/AD Email Address:" : "Adreça de correu electrònic LDAP/AD:", "Allows login against an email attribute. \"mail\" and \"mailPrimaryAddress\" allowed." : "Permet l'inici de sessió emprant l'atribut adreça de correu. S'accepten \"mail\" i \"mailPrimaryAddress\" .", "Other Attributes:" : "Altres atributs:", "Defines the filter to apply, when login is attempted. \"%%uid\" replaces the username in the login action. Example: \"uid=%%uid\"" : "Defineix el filtre a aplicar quan s'inicia sessió. \"%%uid\" reemplaça el nom d'usuari en l'acció d'identificar-se. Exemple \"uid=%%uid\"", "Test Loginname" : "Nom d'usuari de prova", - "Verify settings" : "Comprova la configuració", + "Verify settings" : "Comprova els paràmetres", "%s. Server:" : "%s. Servidor:", "Add a new configuration" : "Afegeix una nova configuració", - "Copy current configuration into new directory binding" : "Copia l'actual configuració en la nova connexió", - "Delete the current configuration" : "Esborra la configuració actual", - "Host" : "Equip remot", + "Copy current configuration into new directory binding" : "Copia l'actual configuració en la nova connexió al directori", + "Delete the current configuration" : "Suprimeix la configuració actual", + "Host" : "Servidor", "You can omit the protocol, unless you require SSL. If so, start with ldaps://" : "Podeu ometre el protocol, si no requeriu SSL. Si ho requeriu llavors comenceu amb ldaps://", "Port" : "Port", "Detect Port" : "Detecta port", @@ -97,16 +109,16 @@ "Test Base DN" : "Prova el DN de base", "Avoids automatic LDAP requests. Better for bigger setups, but requires some LDAP knowledge." : "Evita peticions LDAP automàtiques. És millor per configuracions grans, però requereix tenir certs coneixements de LDAP.", "Manually enter LDAP filters (recommended for large directories)" : "Introducció manual de filtres LDAP (recomanat per a directoris grans)", - "Listing and searching for users is constrained by these criteria:" : "La consulta i cerca per part dels usuaris és restringida pels següents criteris:", + "Listing and searching for users is constrained by these criteria:" : "Llistat i cerca per part dels usuaris és restringida pels següents criteris:", "The most common object classes for users are organizationalPerson, person, user, and inetOrgPerson. If you are not sure which object class to select, please consult your directory admin." : "Las classes d'objectes més comunes pels usuaris són organizationalPerson, person, user, i inetOrgPerson. Si no esteu segurs de quina classe d'objecte escollir llavors consulteu el vostre administrador de directori.", - "The filter specifies which LDAP users shall have access to the %s instance." : "El filtre especifica quins usuaris LDAP haurien de tenir accés a la instància %s", - "Verify settings and count users" : "Verifica configuracions i compta usuaris", + "The filter specifies which LDAP users shall have access to the %s instance." : "El filtre especifica quins usuaris LDAP haurien de tenir accés a la instància %s.", + "Verify settings and count users" : "Verifica paràmetres i compta usuaris", "Saving" : "S'està desant", "Back" : "Enrere", "Continue" : "Continua", "Please renew your password." : "Heu de renovar la vostra contrasenya.", "An internal error occurred." : "Hi ha hagut un error intern inesperat.", - "Please try again or contact your administrator." : "Proveu un altre cop o contacteu al vostre administrador.", + "Please try again or contact your administrator." : "Torneu-ho a provar o contacteu al vostre administrador.", "Current password" : "Contrasenya actual", "New password" : "Nova contrasenya", "Renew password" : "Renova la contrasenya", @@ -114,28 +126,28 @@ "Cancel" : "Cancel·la", "Server" : "Servidor", "Users" : "Usuaris", - "Login Attributes" : "Atributs d'accés", + "Login Attributes" : "Atributs d'inici de sessió", "Groups" : "Grups", "Expert" : "Expert", "Advanced" : "Avançat", - "<b>Warning:</b> The PHP LDAP module is not installed, the backend will not work. Please ask your system administrator to install it." : "<b>Avís:</b> El mòdul PHP LDAP no està instal·lat, el dorsal no funcionarà. Demaneu a l'administrador del sistema que l'instal·li.", + "<b>Warning:</b> The PHP LDAP module is not installed, the backend will not work. Please ask your system administrator to install it." : "<b>Avís:</b> El mòdul PHP LDAP no està instal·lat, el rerefons no funcionarà. Demaneu a l'administrador del sistema que l'instal·li.", "Connection Settings" : "Paràmetres de connexió", "Configuration Active" : "Configuració activa", "When unchecked, this configuration will be skipped." : "Si està desmarcat, aquesta configuració s'ometrà.", - "Backup (Replica) Host" : "Màquina de còpia de serguretat (rèplica)", + "Backup (Replica) Host" : "Servidor de còpia de seguretat (rèplica)", "Give an optional backup host. It must be a replica of the main LDAP/AD server." : "Afegiu una màquina de còpia de seguretat opcional. Ha de ser una rèplica del servidor LDAP/AD principal.", "Backup (Replica) Port" : "Port de la còpia de seguretat (rèplica)", - "Disable Main Server" : "Desactiva el servidor principal", + "Disable Main Server" : "Inhabilita el servidor principal", "Only connect to the replica server." : "Connecta només al servidor rèplica.", "Turn off SSL certificate validation." : "Desactiva la validació de certificat SSL.", "Not recommended, use it for testing only! If connection only works with this option, import the LDAP server's SSL certificate in your %s server." : "No es recomana, useu-ho només com a prova! Importeu el certificat SSL del servidor LDAP al servidor %s només si la connexió funciona amb aquesta opció.", "Cache Time-To-Live" : "Memòria cau Time-To-Live", "in seconds. A change empties the cache." : "en segons. Un canvi buidarà la memòria cau.", - "Directory Settings" : "Configuracio de carpetes", + "Directory Settings" : "Paràmetres de carpetes", "User Display Name Field" : "Camp per mostrar el nom d'usuari", "The LDAP attribute to use to generate the user's display name." : "Atribut LDAP a usar per generar el nom a mostrar de l'usuari.", "2nd User Display Name Field" : "Camp del 2n nom d'usuari a mostrar", - "Optional. An LDAP attribute to be added to the display name in brackets. Results in e.g. »John Doe (john.doe@example.org)«." : "Opcional. Un atribut LDAP per ser afegit al nom a mostrar entre parèntesis. Esdevé en quelcom així: »Oriol Junqueras (oriol.junqueras@exemple.cat)«.", + "Optional. An LDAP attribute to be added to the display name in brackets. Results in e.g. »John Doe (john.doe@example.org)«." : "Opcional. Un atribut LDAP per ser afegit al nom a mostrar entre parèntesis. Esdevé en quelcom així: »Oriol Mas (oriol.mas@exemple.cat)«.", "Base User Tree" : "Arbre base d'usuaris", "One User Base DN per line" : "Una DN Base d'Usuari per línia", "User Search Attributes" : "Atributs de cerca d'usuari", @@ -146,37 +158,39 @@ "One Group Base DN per line" : "Una DN Base de Grup per línia", "Group Search Attributes" : "Atributs de cerca de grup", "Group-Member association" : "Associació membres-grup", - "Dynamic Group Member URL" : "URL del Dynamic Group Member", - "The LDAP attribute that on group objects contains an LDAP search URL that determines what objects belong to the group. (An empty setting disables dynamic group membership functionality.)" : "L'atribut LDAP que en objectes de Grup conté un URL de cerca LDAP que determina quins objectes pertanyen al grup. (Si es deixa en blanc es desactiva la funcionalitat de pertinença dinàmica a grups)", + "Dynamic Group Member URL" : "URL del Membre de Grup Dinàmic", + "The LDAP attribute that on group objects contains an LDAP search URL that determines what objects belong to the group. (An empty setting disables dynamic group membership functionality.)" : "L'atribut LDAP que en objectes de Grup conté un URL de cerca LDAP que determina quins objectes pertanyen al grup. (Si es deixa el paràmetre en blanc es desactiva la funcionalitat de pertinença dinàmica a grups)", "Nested Groups" : "Grups imbricats", "When switched on, groups that contain groups are supported. (Only works if the group member attribute contains DNs.)" : "Quan està activat, els grups que contenen grups estan permesos. (Només funciona si l'atribut del grup membre conté DNs.)", "Paging chunksize" : "Mida de la pàgina", "Chunksize used for paged LDAP searches that may return bulky results like user or group enumeration. (Setting it 0 disables paged LDAP searches in those situations.)" : "Mida usada per cerques LDAP paginades que podrien retornar respostes de volcat com enumeració d'usuari o grup. (Establint-ho a 0 desactiva les cerques LDAP paginades en aquestes situacions.)", - "Enable LDAP password changes per user" : "Activa el canvi de contrasenya LDAP pels usuaris", + "Enable LDAP password changes per user" : "Habilita el canvi de contrasenya LDAP pels usuaris", "Allow LDAP users to change their password and allow Super Administrators and Group Administrators to change the password of their LDAP users. Only works when access control policies are configured accordingly on the LDAP server. As passwords are sent in plaintext to the LDAP server, transport encryption must be used and password hashing should be configured on the LDAP server." : "Permet als usuaris LDAP canviar la seva contrasenya i permet als Súper administradors i Administradors de grup canviar les contrasenyes dels seus usuaris LDAP. Només funciona quan les polítiques del control d'accés es configuren de igual manera al servidor LDAP. Com les contrasenyes s'envien en text pla (no xifrat) al servidor LDAP, s'ha d'usar transport xifrat i s'hauria de configurar el servidor LDAP per usar resum de contrasenyes (\"hashing\").", "(New password is sent as plain text to LDAP)" : "(La nova contrasenya s'envia com a text pla al servidor LDAP)", - "Default password policy DN" : "DN de la política de contrasenya predeterminada", - "The DN of a default password policy that will be used for password expiry handling. Works only when LDAP password changes per user are enabled and is only supported by OpenLDAP. Leave empty to disable password expiry handling." : "El DN d'una política de contrasenya predeterminada que serà emprada per a la gestió de la caducitat de contrasenyes. Només funciona quan està activat el canvi de contrasenyes per part dels usuaris i només és compatible amb OpenLDAP. Deixeu buit aquest camp per desactivar aquesta gestió de contrasenyes caducades.", + "Default password policy DN" : "DN de la política de contrasenya per defecte", + "The DN of a default password policy that will be used for password expiry handling. Works only when LDAP password changes per user are enabled and is only supported by OpenLDAP. Leave empty to disable password expiry handling." : "El DN d'una política de contrasenya predeterminada que serà emprada per a la gestió de la caducitat de contrasenyes. Només funciona quan està habilitat el canvi de contrasenyes per part dels usuaris i només és compatible amb OpenLDAP. Deixeu buit aquest camp per desactivar aquesta gestió de contrasenyes caducades.", "Special Attributes" : "Atributs especials", "Quota Field" : "Camp de quota", - "Leave empty for user's default quota. Otherwise, specify an LDAP/AD attribute." : "Deixeu buit per usar la quota predeterminada pels usuaris, O si no, indiqueu un atribut LDAP/AD.", + "Leave empty for user's default quota. Otherwise, specify an LDAP/AD attribute." : "Deixeu buit per usar la quota per defecte pels usuaris, O si no, indiqueu un atribut LDAP/AD.", "Quota Default" : "Quota per defecte", - "Override default quota for LDAP users who do not have a quota set in the Quota Field." : "Sobreescriu la quota predeterminada pels usuaris LDAP que no tenen una quota establerta en el camp Quota.", + "Override default quota for LDAP users who do not have a quota set in the Quota Field." : "Sobreescriu la quota per defecte pels usuaris LDAP que no tenen una quota establerta en el camp Quota.", "Email Field" : "Camp de correu electrònic", "Set the user's email from their LDAP attribute. Leave it empty for default behaviour." : "Estableix l'adreça de correu a partir del seu atribut LDAP. Deixeu buit pel comportament predeterminat.", "User Home Folder Naming Rule" : "Norma per anomenar la carpeta arrel d'usuari", "Leave empty for username (default). Otherwise, specify an LDAP/AD attribute." : "Deixar buit pel nom d'usuari (per defecte). Altrament, especificar un atribut LDAP/AD.", - "\"$home\" Placeholder Field" : "Camp de text variable per \"$home\" ", + "\"$home\" Placeholder Field" : "Camp de marcador de posició \"$home\"", "$home in an external storage configuration will be replaced with the value of the specified attribute" : "En la configuració d'un emmagatzematge extern es reemplaçarà $home amb el valor de l'atribut especificat", "Internal Username" : "Nom d'usuari intern", + "By default the internal username will be created from the UUID attribute. It makes sure that the username is unique and characters do not need to be converted. The internal username has the restriction that only these characters are allowed: [a-zA-Z0-9_.@-]. Other characters are replaced with their ASCII correspondence or simply omitted. On collisions a number will be added/increased. The internal username is used to identify a user internally. It is also the default name for the user home folder. It is also a part of remote URLs, for instance for all DAV services. With this setting, the default behavior can be overridden. Changes will have effect only on newly mapped (added) LDAP users. Leave it empty for default behavior." : "Per defecte, el nom d'usuari intern es crearà a partir de l'atribut UUID. S'assegura que el nom d'usuari és únic i que els caràcters no s'han de convertir. El nom d'usuari intern té la restricció que només es permeten aquests caràcters: [a-zA-Z0-9_.@-]. Altres caràcters es substitueixen per la seva correspondència ASCII o simplement s'ometen. En les col·lisions, s'afegirà/augmentarà un nombre. El nom d'usuari intern s'utilitza per identificar un usuari internament. També és el nom per defecte de la carpeta d'inici de l'usuari. També forma part dels URL remots, per exemple, per a tots els serveis DAV. Amb aquest paràmetre, es pot anul·lar el comportament per defecte. Els canvis només tindran efecte en els usuaris LDAP (afegits) recentment assignats. Deixeu-lo buit per al comportament per defecte.", "Internal Username Attribute:" : "Atribut nom d'usuari intern:", "Override UUID detection" : "Sobrescriu la detecció UUID", - "By default, the UUID attribute is automatically detected. The UUID attribute is used to doubtlessly identify LDAP users and groups. Also, the internal username will be created based on the UUID, if not specified otherwise above. You can override the setting and pass an attribute of your choice. You must make sure that the attribute of your choice can be fetched for both users and groups and it is unique. Leave it empty for default behavior. Changes will have effect only on newly mapped (added) LDAP users and groups." : "Per defecte, owncloud autodetecta l'atribut UUID. L'atribut UUID s'utilitza per identificar usuaris i grups de forma indubtable. També el nom d'usuari intern es crearà en base a la UUIS, si no heu especificat res diferent a dalt. Podeu sobreescriure l'arranjament i passar l'atribut que desitgeu. Heu d'assegurar-vos que l'atribut que escolliu pot ser recollit tant pels usuaris com pels grups i que és únic. Deixeu-ho en blanc si preferiu el comportament per defecte. els canvis s'aplicaran als usuaris i grups LDAP mapats de nou (afegits).", + "By default, the UUID attribute is automatically detected. The UUID attribute is used to doubtlessly identify LDAP users and groups. Also, the internal username will be created based on the UUID, if not specified otherwise above. You can override the setting and pass an attribute of your choice. You must make sure that the attribute of your choice can be fetched for both users and groups and it is unique. Leave it empty for default behavior. Changes will have effect only on newly mapped (added) LDAP users and groups." : "Per defecte, owncloud autodetecta l'atribut UUID. L'atribut UUID s'utilitza per identificar usuaris i grups automàticament. També el nom d'usuari intern es crearà en base a la UUID, si no heu especificat res diferent a dalt. Podeu sobreescriure el paràmetre i passar l'atribut que desitgeu. Heu d'assegurar-vos que l'atribut que escolliu pot ser recollit tant pels usuaris com pels grups i que és únic. Deixeu-ho en blanc si preferiu el comportament per defecte. els canvis s'aplicaran als usuaris i grups LDAP mapats de nou (afegits).", "UUID Attribute for Users:" : "Atribut UUID per Usuaris:", "UUID Attribute for Groups:" : "Atribut UUID per Grups:", "Username-LDAP User Mapping" : "Mapatge d'usuari Nom d'usuari-LDAP", "Usernames are used to store and assign metadata. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "Els noms d'usuari son emprats per emmagatzemar i assignar metadades. Per tal d'identificar i reconèixer amb precisió als usuaris, cada usuari LDAP té un nom d'usuari intern. Això requereix una assignació de noms d'usuari interns per a cada un dels usuaris LDAP. Al nom d'usuari creat s'assigna el UUID de l'usuari LDAP. A més el DN es guarda en memòria cau per a reduir la interacció amb LDAP, però no s'utilitza per a identificació. Si el DN canvia, es trobaran els canvis. El nom d'usuari intern s'utilitza arreu. Netejar el mapa d'assignacions deixaria restes per totes bandes. Netejar el mapa d'assignacions no és que sigui sensible a la configuració, sinó que afecta a totes les configuracions LDAP! Mai netegeu el mapa d'assignacions en un entorn de producció, només en escenaris de proves o experimentals.", "Clear Username-LDAP User Mapping" : "Elimina el mapatge d'usuari Nom d'usuari-LDAP", - "Clear Groupname-LDAP Group Mapping" : "Suprimeix el mapatge de grup Nom de grup-LDAP" + "Clear Groupname-LDAP Group Mapping" : "Suprimeix el mapatge de grup Nom de grup-LDAP", + "By default the internal username will be created from the UUID attribute. It makes sure that the username is unique and characters do not need to be converted. The internal username has the restriction that only these characters are allowed: [a-zA-Z0-9_.@-]. Other characters are replaced with their ASCII correspondence or simply omitted. On collisions a number will be added/increased. The internal username is used to identify a user internally. It is also the default name for the user home folder. It is also a part of remote URLs, for instance for all *DAV services. With this setting, the default behavior can be overridden. Changes will have effect only on newly mapped (added) LDAP users. Leave it empty for default behavior." : "Per defecte, el nom d'usuari intern es crearà a partir de l'atribut UUID. S'assegura que el nom d'usuari és únic i que els caràcters no s'han de convertir. El nom d'usuari intern té la restricció que només es permeten aquests caràcters: [a-zA-Z0-9_.@-]. Altres caràcters es substitueixen per la seva correspondència ASCII o simplement s'ometen. En les col·lisions, s'afegirà/augmentarà un nombre. El nom d'usuari intern s'utilitza per identificar un usuari internament. També és el nom per defecte de la carpeta d'inici de l'usuari. També forma part dels URL remots, per exemple per a tots els serveis *DAV. Amb aquest paràmetre, es pot anul·lar el comportament per defecte. Els canvis només tindran efecte en els usuaris LDAP (afegits) recentment assignats. Deixeu-lo buit per al comportament per defecte." },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/user_ldap/l10n/ja.js b/apps/user_ldap/l10n/ja.js index 7f8455f54b8..adf295fca71 100644 --- a/apps/user_ldap/l10n/ja.js +++ b/apps/user_ldap/l10n/ja.js @@ -10,6 +10,7 @@ OC.L10N.register( "No action specified" : "アクションが指定されていません", "No configuration specified" : "構成が指定されていません", "No data specified" : "データが指定されていません", + "Invalid data specified" : "無効なデータが指定されました", " Could not set configuration %s" : "構成 %s を設定できませんでした", "Action does not exist" : "アクションが存在しません", "Renewing …" : "更新中 ...", diff --git a/apps/user_ldap/l10n/ja.json b/apps/user_ldap/l10n/ja.json index a177306a5ce..b924efc9073 100644 --- a/apps/user_ldap/l10n/ja.json +++ b/apps/user_ldap/l10n/ja.json @@ -8,6 +8,7 @@ "No action specified" : "アクションが指定されていません", "No configuration specified" : "構成が指定されていません", "No data specified" : "データが指定されていません", + "Invalid data specified" : "無効なデータが指定されました", " Could not set configuration %s" : "構成 %s を設定できませんでした", "Action does not exist" : "アクションが存在しません", "Renewing …" : "更新中 ...", diff --git a/apps/weather_status/l10n/ca.js b/apps/weather_status/l10n/ca.js index aaa00fec8fd..ad04aeb005b 100644 --- a/apps/weather_status/l10n/ca.js +++ b/apps/weather_status/l10n/ca.js @@ -11,6 +11,28 @@ OC.L10N.register( "Detect location" : "Detecta la ubicació", "Set custom address" : "Defineix una adreça personalitzada", "Favorites" : "Preferits", + "{temperature} {unit} clear sky later today" : "{temperature} {unit} cel clar més tard avui", + "{temperature} {unit} clear sky" : "{temperature} {unit} cel clar", + "{temperature} {unit} cloudy later today" : "{temperature} {unit} ennuvolat avui més tard", + "{temperature} {unit} cloudy" : "{temperature} {unit} ennuvolat", + "{temperature} {unit} fair weather later today" : "{temperature} {unit} bon temps avui més tard", + "{temperature} {unit} fair weather" : "{temperature} {unit} bon temps", + "{temperature} {unit} partly cloudy later today" : "{temperature} {unit} mig ennuvolat avui més tard", + "{temperature} {unit} partly cloudy" : "{temperature} {unit} parcialment ennuvolat", + "{temperature} {unit} foggy later today" : "{temperature} {unit} boira més tard avui", + "{temperature} {unit} foggy" : "{temperature} {unit} boira", + "{temperature} {unit} light rainfall later today" : "{temperature} {unit} pluja lleugera més tard avui", + "{temperature} {unit} light rainfall" : "{temperature} {unit} pluja lleugera", + "{temperature} {unit} rainfall later today" : "{temperature} {unit} pluja més tard avui", + "{temperature} {unit} rainfall" : "{temperature} {unit} pluja", + "{temperature} {unit} heavy rainfall later today" : "{temperature} {unit} pluja abundant més tard avui", + "{temperature} {unit} heavy rainfall" : "{temperature} {unit} pluja abundant", + "{temperature} {unit} rainfall showers later today" : "{temperature} {unit} ruixats de pluja més tard avui", + "{temperature} {unit} rainfall showers" : "{temperature} {unit} ruixats de pluja", + "{temperature} {unit} light rainfall showers later today" : "{temperature} {unit} pluja lleugera més tard avui", + "{temperature} {unit} light rainfall showers" : "{temperature} {unit} pluja lleugera", + "{temperature} {unit} heavy rainfall showers later today" : "{temperature} {unit} pluja intensa més tard avui", + "{temperature} {unit} heavy rainfall showers" : "{temperature} {unit} pluja abundant", "More weather for {adr}" : "Més temps per a {adr}", "Loading weather" : "S'està carregant el temps", "Remove from favorites" : "Suprimeix dels preferits", diff --git a/apps/weather_status/l10n/ca.json b/apps/weather_status/l10n/ca.json index 4cee38fb196..0f7ce2d8e77 100644 --- a/apps/weather_status/l10n/ca.json +++ b/apps/weather_status/l10n/ca.json @@ -9,6 +9,28 @@ "Detect location" : "Detecta la ubicació", "Set custom address" : "Defineix una adreça personalitzada", "Favorites" : "Preferits", + "{temperature} {unit} clear sky later today" : "{temperature} {unit} cel clar més tard avui", + "{temperature} {unit} clear sky" : "{temperature} {unit} cel clar", + "{temperature} {unit} cloudy later today" : "{temperature} {unit} ennuvolat avui més tard", + "{temperature} {unit} cloudy" : "{temperature} {unit} ennuvolat", + "{temperature} {unit} fair weather later today" : "{temperature} {unit} bon temps avui més tard", + "{temperature} {unit} fair weather" : "{temperature} {unit} bon temps", + "{temperature} {unit} partly cloudy later today" : "{temperature} {unit} mig ennuvolat avui més tard", + "{temperature} {unit} partly cloudy" : "{temperature} {unit} parcialment ennuvolat", + "{temperature} {unit} foggy later today" : "{temperature} {unit} boira més tard avui", + "{temperature} {unit} foggy" : "{temperature} {unit} boira", + "{temperature} {unit} light rainfall later today" : "{temperature} {unit} pluja lleugera més tard avui", + "{temperature} {unit} light rainfall" : "{temperature} {unit} pluja lleugera", + "{temperature} {unit} rainfall later today" : "{temperature} {unit} pluja més tard avui", + "{temperature} {unit} rainfall" : "{temperature} {unit} pluja", + "{temperature} {unit} heavy rainfall later today" : "{temperature} {unit} pluja abundant més tard avui", + "{temperature} {unit} heavy rainfall" : "{temperature} {unit} pluja abundant", + "{temperature} {unit} rainfall showers later today" : "{temperature} {unit} ruixats de pluja més tard avui", + "{temperature} {unit} rainfall showers" : "{temperature} {unit} ruixats de pluja", + "{temperature} {unit} light rainfall showers later today" : "{temperature} {unit} pluja lleugera més tard avui", + "{temperature} {unit} light rainfall showers" : "{temperature} {unit} pluja lleugera", + "{temperature} {unit} heavy rainfall showers later today" : "{temperature} {unit} pluja intensa més tard avui", + "{temperature} {unit} heavy rainfall showers" : "{temperature} {unit} pluja abundant", "More weather for {adr}" : "Més temps per a {adr}", "Loading weather" : "S'està carregant el temps", "Remove from favorites" : "Suprimeix dels preferits", diff --git a/apps/workflowengine/lib/AppInfo/Application.php b/apps/workflowengine/lib/AppInfo/Application.php index fb5514fecef..19ff530f2ae 100644 --- a/apps/workflowengine/lib/AppInfo/Application.php +++ b/apps/workflowengine/lib/AppInfo/Application.php @@ -36,16 +36,14 @@ use OCP\AppFramework\App; use OCP\AppFramework\Bootstrap\IBootContext; use OCP\AppFramework\Bootstrap\IBootstrap; use OCP\AppFramework\Bootstrap\IRegistrationContext; -use OCP\AppFramework\QueryException; use OCP\EventDispatcher\Event; use OCP\EventDispatcher\IEventDispatcher; -use OCP\ILogger; -use OCP\IServerContainer; use OCP\WorkflowEngine\Events\LoadSettingsScriptsEvent; use OCP\WorkflowEngine\IEntity; -use OCP\WorkflowEngine\IEntityCompat; use OCP\WorkflowEngine\IOperation; -use OCP\WorkflowEngine\IOperationCompat; +use Psr\Container\ContainerExceptionInterface; +use Psr\Container\ContainerInterface; +use Psr\Log\LoggerInterface; class Application extends App implements IBootstrap { public const APP_ID = 'workflowengine'; @@ -68,10 +66,10 @@ class Application extends App implements IBootstrap { } private function registerRuleListeners(IEventDispatcher $dispatcher, - IServerContainer $container, - ILogger $logger): void { + ContainerInterface $container, + LoggerInterface $logger): void { /** @var Manager $manager */ - $manager = $container->query(Manager::class); + $manager = $container->get(Manager::class); $configuredEvents = $manager->getAllConfiguredEvents(); foreach ($configuredEvents as $operationClass => $events) { @@ -83,9 +81,9 @@ class Application extends App implements IBootstrap { $ruleMatcher = $manager->getRuleMatcher(); try { /** @var IEntity $entity */ - $entity = $container->query($entityClass); + $entity = $container->get($entityClass); /** @var IOperation $operation */ - $operation = $container->query($operationClass); + $operation = $container->get($operationClass); $ruleMatcher->setEventName($eventName); $ruleMatcher->setEntity($entity); @@ -98,16 +96,12 @@ class Application extends App implements IBootstrap { ->setEventName($eventName); /** @var Logger $flowLogger */ - $flowLogger = $container->query(Logger::class); + $flowLogger = $container->get(Logger::class); $flowLogger->logEventInit($ctx); if ($event instanceof Event) { $entity->prepareRuleMatcher($ruleMatcher, $eventName, $event); $operation->onEvent($eventName, $event, $ruleMatcher); - } elseif ($entity instanceof IEntityCompat && $operation instanceof IOperationCompat) { - // TODO: Remove this block (and the compat classes) in the first major release in 2023 - $entity->prepareRuleMatcherCompat($ruleMatcher, $eventName, $event); - $operation->onEventCompat($eventName, $event, $ruleMatcher); } else { $logger->debug( 'Cannot handle event {name} of {event} against entity {entity} and operation {operation}', @@ -121,8 +115,8 @@ class Application extends App implements IBootstrap { ); } $flowLogger->logEventDone($ctx); - } catch (QueryException $e) { - // Ignore query exceptions since they might occur when an entity/operation were setup before by an app that is disabled now + } catch (ContainerExceptionInterface $e) { + // Ignore query exceptions since they might occur when an entity/operation were set up before by an app that is disabled now } } ); diff --git a/core/ajax/update.php b/core/ajax/update.php index 74907fa56b9..dae08ad0882 100644 --- a/core/ajax/update.php +++ b/core/ajax/update.php @@ -100,7 +100,7 @@ class FeedBackHandler { if (\OCP\Util::needUpgrade()) { $config = \OC::$server->getSystemConfig(); if ($config->getValue('upgrade.disable-web', false)) { - $eventSource->send('failure', $l->t('Please use the command line updater because automatic updating is disabled in the config.php.')); + $eventSource->send('failure', $l->t('Please use the command line updater because updating via the browser is disabled in your config.php.')); $eventSource->close(); exit(); } diff --git a/core/l10n/ar.js b/core/l10n/ar.js index b0e5dc3760f..3207d7861a7 100644 --- a/core/l10n/ar.js +++ b/core/l10n/ar.js @@ -47,7 +47,6 @@ OC.L10N.register( "Repair info:" : "معلومات صيانة:", "Repair warning:" : "تحذير صيانة:", "Repair error:" : "خطأ صيانة:", - "Please use the command line updater because automatic updating is disabled in the config.php." : "يرجى استخدام خاصية تحديث سطر الاوامر بسبب التحديثات التلقائية ملغية في ملف الاعدادات config.php", "Turned on maintenance mode" : "تشغيل وضع الصيانة.", "Turned off maintenance mode" : "تعطيل وضع الصيانة.", "Maintenance mode is kept active" : "لم يزل وضع الصيانة نشط", @@ -361,6 +360,7 @@ OC.L10N.register( "Detailed logs" : "السجلات المفصلة", "Update needed" : "التحديث مطلوب", "Please use the command line updater because you have a big instance with more than 50 users." : "يرجى استخدام التحديث عبر سطر الاوامر بسبب وجود اكثر من 50 مستخدم.", + "Please use the command line updater because automatic updating is disabled in the config.php." : "يرجى استخدام خاصية تحديث سطر الاوامر بسبب التحديثات التلقائية ملغية في ملف الاعدادات config.php", "For help, see the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentation</a>." : "للمساعدة يُرجى الإطلاع على <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">الدليل</a>.", "I know that if I continue doing the update via web UI has the risk, that the request runs into a timeout and could cause data loss, but I have a backup and know how to restore my instance in case of a failure." : "أقر عن الخطر المحتمل في حال إكمال عملية التحديث عبر واجهة الرسوم في الويب، لربما يفقد اتصال الجلسة وينتهي الوقت المسموح وفقدان البيانات، ولدي نسخة احتياطية واقر بمعرفتي باستعادة البيانات في حال حدوث خطأ في التحديث.", "Upgrade via web on my own risk" : "تحديث عبر واجهة الويب على مسؤليتي الشخصية", diff --git a/core/l10n/ar.json b/core/l10n/ar.json index a8a792400d1..e35e83d92c3 100644 --- a/core/l10n/ar.json +++ b/core/l10n/ar.json @@ -45,7 +45,6 @@ "Repair info:" : "معلومات صيانة:", "Repair warning:" : "تحذير صيانة:", "Repair error:" : "خطأ صيانة:", - "Please use the command line updater because automatic updating is disabled in the config.php." : "يرجى استخدام خاصية تحديث سطر الاوامر بسبب التحديثات التلقائية ملغية في ملف الاعدادات config.php", "Turned on maintenance mode" : "تشغيل وضع الصيانة.", "Turned off maintenance mode" : "تعطيل وضع الصيانة.", "Maintenance mode is kept active" : "لم يزل وضع الصيانة نشط", @@ -359,6 +358,7 @@ "Detailed logs" : "السجلات المفصلة", "Update needed" : "التحديث مطلوب", "Please use the command line updater because you have a big instance with more than 50 users." : "يرجى استخدام التحديث عبر سطر الاوامر بسبب وجود اكثر من 50 مستخدم.", + "Please use the command line updater because automatic updating is disabled in the config.php." : "يرجى استخدام خاصية تحديث سطر الاوامر بسبب التحديثات التلقائية ملغية في ملف الاعدادات config.php", "For help, see the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentation</a>." : "للمساعدة يُرجى الإطلاع على <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">الدليل</a>.", "I know that if I continue doing the update via web UI has the risk, that the request runs into a timeout and could cause data loss, but I have a backup and know how to restore my instance in case of a failure." : "أقر عن الخطر المحتمل في حال إكمال عملية التحديث عبر واجهة الرسوم في الويب، لربما يفقد اتصال الجلسة وينتهي الوقت المسموح وفقدان البيانات، ولدي نسخة احتياطية واقر بمعرفتي باستعادة البيانات في حال حدوث خطأ في التحديث.", "Upgrade via web on my own risk" : "تحديث عبر واجهة الويب على مسؤليتي الشخصية", diff --git a/core/l10n/bg.js b/core/l10n/bg.js index fa2935778d5..f823a793e7e 100644 --- a/core/l10n/bg.js +++ b/core/l10n/bg.js @@ -51,7 +51,6 @@ OC.L10N.register( "Repair info:" : "Информация за поправка:", "Repair warning:" : "Предупреждение при поправка:", "Repair error:" : "Грешка при поправка:", - "Please use the command line updater because automatic updating is disabled in the config.php." : "Моля използвайте съветникът за актуализиране в командния ред, защото автоматичният е забранен в config.php.", "Turned on maintenance mode" : "Режимът за поддръжка е включен", "Turned off maintenance mode" : "Режимът за поддръжка е изключен", "Maintenance mode is kept active" : "Режим на поддръжка се поддържа активен", @@ -400,6 +399,7 @@ OC.L10N.register( "Detailed logs" : "Подробни журнали", "Update needed" : "Нужно е актуализиране", "Please use the command line updater because you have a big instance with more than 50 users." : "Моля, използвайте актуализатора на командния ред, защото имате голям екземпляр с повече от 50 потребители.", + "Please use the command line updater because automatic updating is disabled in the config.php." : "Моля използвайте съветникът за актуализиране в командния ред, защото автоматичният е забранен в config.php.", "For help, see the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentation</a>." : "За помощ, прегледайте <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">документацията</a>.", "I know that if I continue doing the update via web UI has the risk, that the request runs into a timeout and could cause data loss, but I have a backup and know how to restore my instance in case of a failure." : "Знам, че ако продължа да правя актуализацията чрез уеб потребителски интерфейсUI , има риск заявката временно да се прекъсне и може да доведе до загуба на данни, но имам резервно копие и знам как да възстановя своя екземпляр в случай на повреда.", "Upgrade via web on my own risk" : "Актуализиране чрез интернет на собствен риск", diff --git a/core/l10n/bg.json b/core/l10n/bg.json index 46c47f78c80..c8b853e25aa 100644 --- a/core/l10n/bg.json +++ b/core/l10n/bg.json @@ -49,7 +49,6 @@ "Repair info:" : "Информация за поправка:", "Repair warning:" : "Предупреждение при поправка:", "Repair error:" : "Грешка при поправка:", - "Please use the command line updater because automatic updating is disabled in the config.php." : "Моля използвайте съветникът за актуализиране в командния ред, защото автоматичният е забранен в config.php.", "Turned on maintenance mode" : "Режимът за поддръжка е включен", "Turned off maintenance mode" : "Режимът за поддръжка е изключен", "Maintenance mode is kept active" : "Режим на поддръжка се поддържа активен", @@ -398,6 +397,7 @@ "Detailed logs" : "Подробни журнали", "Update needed" : "Нужно е актуализиране", "Please use the command line updater because you have a big instance with more than 50 users." : "Моля, използвайте актуализатора на командния ред, защото имате голям екземпляр с повече от 50 потребители.", + "Please use the command line updater because automatic updating is disabled in the config.php." : "Моля използвайте съветникът за актуализиране в командния ред, защото автоматичният е забранен в config.php.", "For help, see the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentation</a>." : "За помощ, прегледайте <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">документацията</a>.", "I know that if I continue doing the update via web UI has the risk, that the request runs into a timeout and could cause data loss, but I have a backup and know how to restore my instance in case of a failure." : "Знам, че ако продължа да правя актуализацията чрез уеб потребителски интерфейсUI , има риск заявката временно да се прекъсне и може да доведе до загуба на данни, но имам резервно копие и знам как да възстановя своя екземпляр в случай на повреда.", "Upgrade via web on my own risk" : "Актуализиране чрез интернет на собствен риск", diff --git a/core/l10n/br.js b/core/l10n/br.js index dbceed725e5..c5f09cf0b12 100644 --- a/core/l10n/br.js +++ b/core/l10n/br.js @@ -34,7 +34,6 @@ OC.L10N.register( "Repair info:" : "Keleier adaozañ :", "Repair warning:" : "Kemennadenn adaozañ :", "Repair error:" : "Fazi adaozañ :", - "Please use the command line updater because automatic updating is disabled in the config.php." : "Mar-plij, implijit al linenn-urzh adneveziñ peogwir eo disaotreet an adneveziñ otomatek e-barzh config.php.", "Turned on maintenance mode" : "Lakaet eo ar mod trezalc'hiñ war elum", "Turned off maintenance mode" : "Lazhet eo ar mod trezalc'hiñ", "Maintenance mode is kept active" : "Mod trezalc'hiñ o labourat", @@ -296,6 +295,7 @@ OC.L10N.register( "Detailed logs" : "Kazetenn munudet", "Update needed" : "Un adnevezadur ez eu ezhomp", "Please use the command line updater because you have a big instance with more than 50 users." : "Mar-plij, implijit al linnen-urz adneveziñ peogwir m'az eo brazh o azgoulenn gant muioc'h eget 50 implijer.", + "Please use the command line updater because automatic updating is disabled in the config.php." : "Mar-plij, implijit al linenn-urzh adneveziñ peogwir eo disaotreet an adneveziñ otomatek e-barzh config.php.", "For help, see the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentation</a>." : "Evit kavout skoazel, sellit ouzh an <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">dielvadur</a>.", "I know that if I continue doing the update via web UI has the risk, that the request runs into a timeout and could cause data loss, but I have a backup and know how to restore my instance in case of a failure." : "Gouzout a rañ eo posupl m'a kendalc'hañ an adnevezaden gant web UI, m'az afe va goulenn en un timeout hag e c'hell koll roadennoù, mes ur backup am eus ha gouzout a rañ penaos adkrouiñ va azgoulenn m'a vez c'huitet.", "Upgrade via web on my own risk" : "Adnevesaat dre ar web gant va rislkoù d'in me nemetken", diff --git a/core/l10n/br.json b/core/l10n/br.json index eadf0fec4b6..efb0b86282d 100644 --- a/core/l10n/br.json +++ b/core/l10n/br.json @@ -32,7 +32,6 @@ "Repair info:" : "Keleier adaozañ :", "Repair warning:" : "Kemennadenn adaozañ :", "Repair error:" : "Fazi adaozañ :", - "Please use the command line updater because automatic updating is disabled in the config.php." : "Mar-plij, implijit al linenn-urzh adneveziñ peogwir eo disaotreet an adneveziñ otomatek e-barzh config.php.", "Turned on maintenance mode" : "Lakaet eo ar mod trezalc'hiñ war elum", "Turned off maintenance mode" : "Lazhet eo ar mod trezalc'hiñ", "Maintenance mode is kept active" : "Mod trezalc'hiñ o labourat", @@ -294,6 +293,7 @@ "Detailed logs" : "Kazetenn munudet", "Update needed" : "Un adnevezadur ez eu ezhomp", "Please use the command line updater because you have a big instance with more than 50 users." : "Mar-plij, implijit al linnen-urz adneveziñ peogwir m'az eo brazh o azgoulenn gant muioc'h eget 50 implijer.", + "Please use the command line updater because automatic updating is disabled in the config.php." : "Mar-plij, implijit al linenn-urzh adneveziñ peogwir eo disaotreet an adneveziñ otomatek e-barzh config.php.", "For help, see the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentation</a>." : "Evit kavout skoazel, sellit ouzh an <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">dielvadur</a>.", "I know that if I continue doing the update via web UI has the risk, that the request runs into a timeout and could cause data loss, but I have a backup and know how to restore my instance in case of a failure." : "Gouzout a rañ eo posupl m'a kendalc'hañ an adnevezaden gant web UI, m'az afe va goulenn en un timeout hag e c'hell koll roadennoù, mes ur backup am eus ha gouzout a rañ penaos adkrouiñ va azgoulenn m'a vez c'huitet.", "Upgrade via web on my own risk" : "Adnevesaat dre ar web gant va rislkoù d'in me nemetken", diff --git a/core/l10n/ca.js b/core/l10n/ca.js index 19310c3c8ff..87da2e40c83 100644 --- a/core/l10n/ca.js +++ b/core/l10n/ca.js @@ -25,12 +25,15 @@ OC.L10N.register( "State token does not match" : "El testimoni d'estat no coincideix", "Invalid app password" : "La contrasenya de l'aplicació no és vàlida", "Could not complete login" : "No s'ha pogut completar l'inici de sessió", + "State token missing" : "Falta el testimoni d'estat", "Your login token is invalid or has expired" : "El testimoni d'inici de sessió no és vàlid o ha caducat", "This community release of Nextcloud is unsupported and push notifications are limited." : "Aquesta versió de la comunitat de Nextcloud no té suport i les notificacions push estan limitades.", "Login" : "Inici de sessió", + "Please try again" : "Si us plau, prova de nou", "Password reset is disabled" : "La reinicialització de contrasenya està inhabilitada", "Could not reset password because the token is expired" : "No s'ha pogut reinicialitzar la contrasenya perquè el testimoni ha caducat", "Could not reset password because the token is invalid" : "No s'ha pogut reinicialitzar la contrasenya perquè el testimoni no és vàlid", + "Password is too long. Maximum allowed length is 469 characters." : "La contrasenya és massa llarga. La longitud màxima permesa és de 469 caràcters.", "%s password reset" : "Reinicialització de la contrasenya del %s", "Password reset" : "Reinicialització de la contrasenya", "Click the following button to reset your password. If you have not requested the password reset, then ignore this email." : "Feu clic en el botó següent per a reinicialitzar la contrasenya. Si no heu sol·licitat un canvi de contrasenya, ignoreu aquest correu electrònic.", @@ -48,7 +51,7 @@ OC.L10N.register( "Repair info:" : "Informació de reparació:", "Repair warning:" : "Avís de reparació:", "Repair error:" : "Error de reparació:", - "Please use the command line updater because automatic updating is disabled in the config.php." : "Utilitzeu l’actualitzador de la línia d'ordres; l'actualització automàtica està inhabilitada en el fitxer config.php.", + "Please use the command line updater because updating via the browser is disabled in your config.php." : "Si us plau, utilitzeu l'actualitzador de línia d'ordres perquè l'actualització mitjançant el navegador està desactivada al vostre config.php.", "Turned on maintenance mode" : "S'ha activat el mode de manteniment", "Turned off maintenance mode" : "S'ha desactivat el mode de manteniment", "Maintenance mode is kept active" : "El mode de manteniment es manté activat", @@ -99,6 +102,7 @@ OC.L10N.register( "This instance is missing some recommended PHP modules. For improved performance and better compatibility it is highly recommended to install them." : "A aquesta instància li falten alguns mòduls de PHP recomanats. Es recomana instal·lar-los per a millorar el rendiment i la compatibilitat.", "The PHP module \"imagick\" is not enabled although the theming app is. For favicon generation to work correctly, you need to install and enable this module." : "El mòdul PHP \"imagick\" no està habilitat encara que l'aplicació de tematització sí. Perquè la generació de favicon funcioni correctament, cal instal·lar i habilitar aquest mòdul.", "The PHP modules \"gmp\" and/or \"bcmath\" are not enabled. If you use WebAuthn passwordless authentication, these modules are required." : "Els mòduls PHP \"gmp\" i/o \"bcmath\" no estan habilitats. Si utilitzeu l'autenticació sense contrasenya WebAuthn, aquests mòduls són necessaris.", + "It seems like you are running a 32-bit PHP version. Nextcloud needs 64-bit to run well. Please upgrade your OS and PHP to 64-bit! For further details read {linkstart}the documentation page ↗{linkend} about this." : "Sembla que esteu executant una versió PHP de 32 bits. Nextcloud necessita 64 bits per funcionar bé. Si us plau, actualitzeu el vostre sistema operatiu i PHP a 64 bits! Per obtenir més detalls, llegiu {linkstart}la pàgina de documentació ↗{linkend} sobre això.", "Module php-imagick in this instance has no SVG support. For better compatibility it is recommended to install it." : "El mòdul php-imagick d'aquesta instància no és compatible amb SVG. Per a millorar la compatibilitat, es recomana instal·lar-lo.", "Some columns in the database are missing a conversion to big int. Due to the fact that changing column types on big tables could take some time they were not changed automatically. By running \"occ db:convert-filecache-bigint\" those pending changes could be applied manually. This operation needs to be made while the instance is offline. For further details read {linkstart}the documentation page about this ↗{linkend}." : "Algunes columnes de la base de dades no tenen una conversió a big int. A causa del fet que canviar els tipus de columnes a les taules grans podria trigar un temps, no es van canviar automàticament. Si executeu \"occ db:convert-filecache-bigint\", aquests canvis pendents es podrien aplicar manualment. Aquesta operació s'ha de fer mentre la instància està fora de línia. Per obtenir més detalls, llegiu {linkstart}la pàgina de documentació sobre això ↗{linkend}.", "SQLite is currently being used as the backend database. For larger installations we recommend that you switch to a different database backend." : "Actualment s'utilitza SQLite com a rerefons de base de dades. Per a instal·lacions més grans, es recomana canviar a un altre rerefons de base de dades.", @@ -180,6 +184,8 @@ OC.L10N.register( "Simple email app nicely integrated with Files, Contacts and Calendar." : "Senzilla aplicació de correu electrònic ben integrada amb Fitxers, Contactes i el Calendari.", "Chatting, video calls, screensharing, online meetings and web conferencing – in your browser and with mobile apps." : "Xat, videotrucades, compartició de la pantalla, reunions en línia i conferències per Internet; al navegador i amb aplicacions mòbils.", "Collaborative documents, spreadsheets and presentations, built on Collabora Online." : "Documents, fulls de càlcul i presentacions col·laboratius, basats en Collabora Online.", + "Distraction free note taking app." : "Aplicació per prendre notes sense distraccions.", + "Search contacts" : "Cerca de contactes", "Forgot password?" : "Heu oblidat la contrasenya?", "Log in with a device" : "Inicia la sessió amb un dispositiu", "Back" : "Torna", @@ -189,6 +195,7 @@ OC.L10N.register( "You have not added any info yet" : "No hi heu afegit cap informació encara", "{user} has not added any info yet" : "{user} no hi ha afegit cap informació encara", "Error opening the user status modal, try hard refreshing the page" : "S'ha produït un error en obrir el modal d'estat de l'usuari, proveu d'actualitzar la pàgina", + "Search starts once you start typing and results may be reached with the arrow keys" : "La cerca comença quan comences a escriure i es pot accedir als resultats amb les tecles de fletxa", "Reset search" : "Reinicialitza la cerca", "Start search" : "Inicia la cerca", "Search for {name} only" : "Cerqueu només per {name}", @@ -209,6 +216,7 @@ OC.L10N.register( "Settings menu" : "Menú de paràmetres", "Search {types} …" : "Cerqueu {types} …", "Settings" : "Paràmetres", + "Avatar of {fullName}" : "Avatar de {fullName}", "Could not load your contacts" : "No s'han pogut carregar els vostres contactes", "Search contacts …" : "Cerca contactes …", "No contacts found" : "No s'han trobat contactes", @@ -347,6 +355,7 @@ OC.L10N.register( "Skip to main content" : "Salta al contingut principal", "Skip to navigation of app" : "Salta a la navegació d'aplicació", "Get your own free account" : "Obtingueu el vostre propi compte gratuït", + "%s homepage" : "pàgina d'inici de %s", "Confirm your password" : "Confirmeu la vostra contrasenya", "%s's homepage" : "Pàgina d'inici de %s", "Connect to your account" : "Connecta al vostre compte", @@ -393,6 +402,7 @@ OC.L10N.register( "Detailed logs" : "Registres detallats", "Update needed" : "Actualització necessària", "Please use the command line updater because you have a big instance with more than 50 users." : "Feu servir l'actualitzador de línia d'ordres perquè teniu una gran instància amb més de 50 usuaris.", + "Please use the command line updater because automatic updating is disabled in the config.php." : "Utilitzeu l’actualitzador de la línia d'ordres; l'actualització automàtica està inhabilitada en el fitxer config.php.", "For help, see the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentation</a>." : "Per obtenir ajuda, vegeu la <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\"> documentació</a>.", "I know that if I continue doing the update via web UI has the risk, that the request runs into a timeout and could cause data loss, but I have a backup and know how to restore my instance in case of a failure." : "Sé que si continuo fent l'actualització mitjançant l’interfície d’usuari web hi ha el risc que la sol·licitud exhaureixi el temps d'espera, que podria causar pèrdua de dades, però tinc una còpia de seguretat i sé com restaurar la meva instància en cas de fallada.", "Upgrade via web on my own risk" : "Actualitza via web sota la meva responsabilitat", diff --git a/core/l10n/ca.json b/core/l10n/ca.json index d79dc64a02d..1b0040bc8bd 100644 --- a/core/l10n/ca.json +++ b/core/l10n/ca.json @@ -23,12 +23,15 @@ "State token does not match" : "El testimoni d'estat no coincideix", "Invalid app password" : "La contrasenya de l'aplicació no és vàlida", "Could not complete login" : "No s'ha pogut completar l'inici de sessió", + "State token missing" : "Falta el testimoni d'estat", "Your login token is invalid or has expired" : "El testimoni d'inici de sessió no és vàlid o ha caducat", "This community release of Nextcloud is unsupported and push notifications are limited." : "Aquesta versió de la comunitat de Nextcloud no té suport i les notificacions push estan limitades.", "Login" : "Inici de sessió", + "Please try again" : "Si us plau, prova de nou", "Password reset is disabled" : "La reinicialització de contrasenya està inhabilitada", "Could not reset password because the token is expired" : "No s'ha pogut reinicialitzar la contrasenya perquè el testimoni ha caducat", "Could not reset password because the token is invalid" : "No s'ha pogut reinicialitzar la contrasenya perquè el testimoni no és vàlid", + "Password is too long. Maximum allowed length is 469 characters." : "La contrasenya és massa llarga. La longitud màxima permesa és de 469 caràcters.", "%s password reset" : "Reinicialització de la contrasenya del %s", "Password reset" : "Reinicialització de la contrasenya", "Click the following button to reset your password. If you have not requested the password reset, then ignore this email." : "Feu clic en el botó següent per a reinicialitzar la contrasenya. Si no heu sol·licitat un canvi de contrasenya, ignoreu aquest correu electrònic.", @@ -46,7 +49,7 @@ "Repair info:" : "Informació de reparació:", "Repair warning:" : "Avís de reparació:", "Repair error:" : "Error de reparació:", - "Please use the command line updater because automatic updating is disabled in the config.php." : "Utilitzeu l’actualitzador de la línia d'ordres; l'actualització automàtica està inhabilitada en el fitxer config.php.", + "Please use the command line updater because updating via the browser is disabled in your config.php." : "Si us plau, utilitzeu l'actualitzador de línia d'ordres perquè l'actualització mitjançant el navegador està desactivada al vostre config.php.", "Turned on maintenance mode" : "S'ha activat el mode de manteniment", "Turned off maintenance mode" : "S'ha desactivat el mode de manteniment", "Maintenance mode is kept active" : "El mode de manteniment es manté activat", @@ -97,6 +100,7 @@ "This instance is missing some recommended PHP modules. For improved performance and better compatibility it is highly recommended to install them." : "A aquesta instància li falten alguns mòduls de PHP recomanats. Es recomana instal·lar-los per a millorar el rendiment i la compatibilitat.", "The PHP module \"imagick\" is not enabled although the theming app is. For favicon generation to work correctly, you need to install and enable this module." : "El mòdul PHP \"imagick\" no està habilitat encara que l'aplicació de tematització sí. Perquè la generació de favicon funcioni correctament, cal instal·lar i habilitar aquest mòdul.", "The PHP modules \"gmp\" and/or \"bcmath\" are not enabled. If you use WebAuthn passwordless authentication, these modules are required." : "Els mòduls PHP \"gmp\" i/o \"bcmath\" no estan habilitats. Si utilitzeu l'autenticació sense contrasenya WebAuthn, aquests mòduls són necessaris.", + "It seems like you are running a 32-bit PHP version. Nextcloud needs 64-bit to run well. Please upgrade your OS and PHP to 64-bit! For further details read {linkstart}the documentation page ↗{linkend} about this." : "Sembla que esteu executant una versió PHP de 32 bits. Nextcloud necessita 64 bits per funcionar bé. Si us plau, actualitzeu el vostre sistema operatiu i PHP a 64 bits! Per obtenir més detalls, llegiu {linkstart}la pàgina de documentació ↗{linkend} sobre això.", "Module php-imagick in this instance has no SVG support. For better compatibility it is recommended to install it." : "El mòdul php-imagick d'aquesta instància no és compatible amb SVG. Per a millorar la compatibilitat, es recomana instal·lar-lo.", "Some columns in the database are missing a conversion to big int. Due to the fact that changing column types on big tables could take some time they were not changed automatically. By running \"occ db:convert-filecache-bigint\" those pending changes could be applied manually. This operation needs to be made while the instance is offline. For further details read {linkstart}the documentation page about this ↗{linkend}." : "Algunes columnes de la base de dades no tenen una conversió a big int. A causa del fet que canviar els tipus de columnes a les taules grans podria trigar un temps, no es van canviar automàticament. Si executeu \"occ db:convert-filecache-bigint\", aquests canvis pendents es podrien aplicar manualment. Aquesta operació s'ha de fer mentre la instància està fora de línia. Per obtenir més detalls, llegiu {linkstart}la pàgina de documentació sobre això ↗{linkend}.", "SQLite is currently being used as the backend database. For larger installations we recommend that you switch to a different database backend." : "Actualment s'utilitza SQLite com a rerefons de base de dades. Per a instal·lacions més grans, es recomana canviar a un altre rerefons de base de dades.", @@ -178,6 +182,8 @@ "Simple email app nicely integrated with Files, Contacts and Calendar." : "Senzilla aplicació de correu electrònic ben integrada amb Fitxers, Contactes i el Calendari.", "Chatting, video calls, screensharing, online meetings and web conferencing – in your browser and with mobile apps." : "Xat, videotrucades, compartició de la pantalla, reunions en línia i conferències per Internet; al navegador i amb aplicacions mòbils.", "Collaborative documents, spreadsheets and presentations, built on Collabora Online." : "Documents, fulls de càlcul i presentacions col·laboratius, basats en Collabora Online.", + "Distraction free note taking app." : "Aplicació per prendre notes sense distraccions.", + "Search contacts" : "Cerca de contactes", "Forgot password?" : "Heu oblidat la contrasenya?", "Log in with a device" : "Inicia la sessió amb un dispositiu", "Back" : "Torna", @@ -187,6 +193,7 @@ "You have not added any info yet" : "No hi heu afegit cap informació encara", "{user} has not added any info yet" : "{user} no hi ha afegit cap informació encara", "Error opening the user status modal, try hard refreshing the page" : "S'ha produït un error en obrir el modal d'estat de l'usuari, proveu d'actualitzar la pàgina", + "Search starts once you start typing and results may be reached with the arrow keys" : "La cerca comença quan comences a escriure i es pot accedir als resultats amb les tecles de fletxa", "Reset search" : "Reinicialitza la cerca", "Start search" : "Inicia la cerca", "Search for {name} only" : "Cerqueu només per {name}", @@ -207,6 +214,7 @@ "Settings menu" : "Menú de paràmetres", "Search {types} …" : "Cerqueu {types} …", "Settings" : "Paràmetres", + "Avatar of {fullName}" : "Avatar de {fullName}", "Could not load your contacts" : "No s'han pogut carregar els vostres contactes", "Search contacts …" : "Cerca contactes …", "No contacts found" : "No s'han trobat contactes", @@ -345,6 +353,7 @@ "Skip to main content" : "Salta al contingut principal", "Skip to navigation of app" : "Salta a la navegació d'aplicació", "Get your own free account" : "Obtingueu el vostre propi compte gratuït", + "%s homepage" : "pàgina d'inici de %s", "Confirm your password" : "Confirmeu la vostra contrasenya", "%s's homepage" : "Pàgina d'inici de %s", "Connect to your account" : "Connecta al vostre compte", @@ -391,6 +400,7 @@ "Detailed logs" : "Registres detallats", "Update needed" : "Actualització necessària", "Please use the command line updater because you have a big instance with more than 50 users." : "Feu servir l'actualitzador de línia d'ordres perquè teniu una gran instància amb més de 50 usuaris.", + "Please use the command line updater because automatic updating is disabled in the config.php." : "Utilitzeu l’actualitzador de la línia d'ordres; l'actualització automàtica està inhabilitada en el fitxer config.php.", "For help, see the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentation</a>." : "Per obtenir ajuda, vegeu la <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\"> documentació</a>.", "I know that if I continue doing the update via web UI has the risk, that the request runs into a timeout and could cause data loss, but I have a backup and know how to restore my instance in case of a failure." : "Sé que si continuo fent l'actualització mitjançant l’interfície d’usuari web hi ha el risc que la sol·licitud exhaureixi el temps d'espera, que podria causar pèrdua de dades, però tinc una còpia de seguretat i sé com restaurar la meva instància en cas de fallada.", "Upgrade via web on my own risk" : "Actualitza via web sota la meva responsabilitat", diff --git a/core/l10n/cs.js b/core/l10n/cs.js index 950e8b9f4cd..349ca52ca80 100644 --- a/core/l10n/cs.js +++ b/core/l10n/cs.js @@ -51,7 +51,7 @@ OC.L10N.register( "Repair info:" : "Informace o opravě:", "Repair warning:" : "Varování ohledně opravy:", "Repair error:" : "Chyba opravy:", - "Please use the command line updater because automatic updating is disabled in the config.php." : "Zaktualizujte z příkazového řádku, protože automatická aktualizace je v config.php vypnutá.", + "Please use the command line updater because updating via the browser is disabled in your config.php." : "Použijte aktualizátor příkazového řádku, protože aktualizace přes prohlížeč je v souboru config.php zakázána.", "Turned on maintenance mode" : "Přepnuto do režimu údržby", "Turned off maintenance mode" : "Přepnuto zpět z režimu údržby", "Maintenance mode is kept active" : "Režim údržby je ponechán", @@ -184,6 +184,7 @@ OC.L10N.register( "Simple email app nicely integrated with Files, Contacts and Calendar." : "Jednoduchý e-mailový klient, propojený s aplikacemi Soubory, Kontakty a Kalendář.", "Chatting, video calls, screensharing, online meetings and web conferencing – in your browser and with mobile apps." : "Chatování, videohovory, sdílení obrazovky, schůze na dálku a webové konference – ve webovém prohlížeči a mobilních aplikacích.", "Collaborative documents, spreadsheets and presentations, built on Collabora Online." : "Dokumenty, tabulky a prezentace pro spolupráci, založené na Collabora Online.", + "Distraction free note taking app." : "Aplikace pro psaní poznámek bez rozptylování.", "Search contacts" : "Hledat v kontaktech", "Forgot password?" : "Zapomněli jste heslo?", "Log in with a device" : "Přihlásit se pomocí zařízení", @@ -215,6 +216,7 @@ OC.L10N.register( "Settings menu" : "Nabídka nastavení", "Search {types} …" : "Hledat {types}…", "Settings" : "Nastavení", + "Avatar of {fullName}" : "Avatar {fullName}", "Could not load your contacts" : "Nedaří se načíst vaše kontakty", "Search contacts …" : "Hledat v kontaktech…", "No contacts found" : "Nenalezeny žádné kontakty", @@ -400,6 +402,7 @@ OC.L10N.register( "Detailed logs" : "Podrobné záznamy událostí", "Update needed" : "Je třeba provést aktualizaci", "Please use the command line updater because you have a big instance with more than 50 users." : "Použijte aktualizační příkazový řádek, protože máte velkou instanci s více než 50 uživateli.", + "Please use the command line updater because automatic updating is disabled in the config.php." : "Zaktualizujte z příkazového řádku, protože automatická aktualizace je v config.php vypnutá.", "For help, see the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentation</a>." : "Pro pomoc, nahlédněte do <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">dokumentace</a>.", "I know that if I continue doing the update via web UI has the risk, that the request runs into a timeout and could cause data loss, but I have a backup and know how to restore my instance in case of a failure." : "Beru na vědomí, že při aktualizaci skrze webové rozhraní hrozí nebezpečí překročení časového limitu požadavku, který může vyústit ve ztrátu dat. Mám pro takový případ zálohu a vím, jak ji v případě nezdaru obnovit.", "Upgrade via web on my own risk" : "Na vlastní nebezpečí aktualizovat skrze web", diff --git a/core/l10n/cs.json b/core/l10n/cs.json index ff2d8028905..e3062e8849d 100644 --- a/core/l10n/cs.json +++ b/core/l10n/cs.json @@ -49,7 +49,7 @@ "Repair info:" : "Informace o opravě:", "Repair warning:" : "Varování ohledně opravy:", "Repair error:" : "Chyba opravy:", - "Please use the command line updater because automatic updating is disabled in the config.php." : "Zaktualizujte z příkazového řádku, protože automatická aktualizace je v config.php vypnutá.", + "Please use the command line updater because updating via the browser is disabled in your config.php." : "Použijte aktualizátor příkazového řádku, protože aktualizace přes prohlížeč je v souboru config.php zakázána.", "Turned on maintenance mode" : "Přepnuto do režimu údržby", "Turned off maintenance mode" : "Přepnuto zpět z režimu údržby", "Maintenance mode is kept active" : "Režim údržby je ponechán", @@ -182,6 +182,7 @@ "Simple email app nicely integrated with Files, Contacts and Calendar." : "Jednoduchý e-mailový klient, propojený s aplikacemi Soubory, Kontakty a Kalendář.", "Chatting, video calls, screensharing, online meetings and web conferencing – in your browser and with mobile apps." : "Chatování, videohovory, sdílení obrazovky, schůze na dálku a webové konference – ve webovém prohlížeči a mobilních aplikacích.", "Collaborative documents, spreadsheets and presentations, built on Collabora Online." : "Dokumenty, tabulky a prezentace pro spolupráci, založené na Collabora Online.", + "Distraction free note taking app." : "Aplikace pro psaní poznámek bez rozptylování.", "Search contacts" : "Hledat v kontaktech", "Forgot password?" : "Zapomněli jste heslo?", "Log in with a device" : "Přihlásit se pomocí zařízení", @@ -213,6 +214,7 @@ "Settings menu" : "Nabídka nastavení", "Search {types} …" : "Hledat {types}…", "Settings" : "Nastavení", + "Avatar of {fullName}" : "Avatar {fullName}", "Could not load your contacts" : "Nedaří se načíst vaše kontakty", "Search contacts …" : "Hledat v kontaktech…", "No contacts found" : "Nenalezeny žádné kontakty", @@ -398,6 +400,7 @@ "Detailed logs" : "Podrobné záznamy událostí", "Update needed" : "Je třeba provést aktualizaci", "Please use the command line updater because you have a big instance with more than 50 users." : "Použijte aktualizační příkazový řádek, protože máte velkou instanci s více než 50 uživateli.", + "Please use the command line updater because automatic updating is disabled in the config.php." : "Zaktualizujte z příkazového řádku, protože automatická aktualizace je v config.php vypnutá.", "For help, see the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentation</a>." : "Pro pomoc, nahlédněte do <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">dokumentace</a>.", "I know that if I continue doing the update via web UI has the risk, that the request runs into a timeout and could cause data loss, but I have a backup and know how to restore my instance in case of a failure." : "Beru na vědomí, že při aktualizaci skrze webové rozhraní hrozí nebezpečí překročení časového limitu požadavku, který může vyústit ve ztrátu dat. Mám pro takový případ zálohu a vím, jak ji v případě nezdaru obnovit.", "Upgrade via web on my own risk" : "Na vlastní nebezpečí aktualizovat skrze web", diff --git a/core/l10n/da.js b/core/l10n/da.js index 3505136a02a..240882baa79 100644 --- a/core/l10n/da.js +++ b/core/l10n/da.js @@ -50,7 +50,6 @@ OC.L10N.register( "Repair info:" : "Reparationsinfo:", "Repair warning:" : "Reparationsadvarsel:", "Repair error:" : "Reparationsfejl:", - "Please use the command line updater because automatic updating is disabled in the config.php." : "Benyt kommandolinjen til at opdatere, da automatisk opdatering er slået fra i config.php.", "Turned on maintenance mode" : "Startede vedligeholdelsestilstand", "Turned off maintenance mode" : "Slå vedligeholdelsestilstand fra", "Maintenance mode is kept active" : "Vedligeholdelsestilstanden holdes kørende", @@ -396,6 +395,7 @@ OC.L10N.register( "Detailed logs" : "Detaljerede logs", "Update needed" : "Opdatering nødvendig", "Please use the command line updater because you have a big instance with more than 50 users." : "Brug venligst kommandolinje til at opdatere fordi du har en stor installation med mere end 50 brugere", + "Please use the command line updater because automatic updating is disabled in the config.php." : "Benyt kommandolinjen til at opdatere, da automatisk opdatering er slået fra i config.php.", "For help, see the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentation</a>." : "For hjælp, se <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">dokumentation</a>.", "I know that if I continue doing the update via web UI has the risk, that the request runs into a timeout and could cause data loss, but I have a backup and know how to restore my instance in case of a failure." : "Jeg ved at hvis jeg fortsætter med at bruge opdateringssystemet via denne web forbindelse risikerer jeg at der opstår en timeout og jeg dermed mister mine data. Men jeg har et en backuip og ved hvordan jeg kan genindlæse den hvis det sker", "Upgrade via web on my own risk" : "Opdatering via web er på mit eget ansvar.", diff --git a/core/l10n/da.json b/core/l10n/da.json index bdeb8265a30..58bc64a7a3f 100644 --- a/core/l10n/da.json +++ b/core/l10n/da.json @@ -48,7 +48,6 @@ "Repair info:" : "Reparationsinfo:", "Repair warning:" : "Reparationsadvarsel:", "Repair error:" : "Reparationsfejl:", - "Please use the command line updater because automatic updating is disabled in the config.php." : "Benyt kommandolinjen til at opdatere, da automatisk opdatering er slået fra i config.php.", "Turned on maintenance mode" : "Startede vedligeholdelsestilstand", "Turned off maintenance mode" : "Slå vedligeholdelsestilstand fra", "Maintenance mode is kept active" : "Vedligeholdelsestilstanden holdes kørende", @@ -394,6 +393,7 @@ "Detailed logs" : "Detaljerede logs", "Update needed" : "Opdatering nødvendig", "Please use the command line updater because you have a big instance with more than 50 users." : "Brug venligst kommandolinje til at opdatere fordi du har en stor installation med mere end 50 brugere", + "Please use the command line updater because automatic updating is disabled in the config.php." : "Benyt kommandolinjen til at opdatere, da automatisk opdatering er slået fra i config.php.", "For help, see the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentation</a>." : "For hjælp, se <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">dokumentation</a>.", "I know that if I continue doing the update via web UI has the risk, that the request runs into a timeout and could cause data loss, but I have a backup and know how to restore my instance in case of a failure." : "Jeg ved at hvis jeg fortsætter med at bruge opdateringssystemet via denne web forbindelse risikerer jeg at der opstår en timeout og jeg dermed mister mine data. Men jeg har et en backuip og ved hvordan jeg kan genindlæse den hvis det sker", "Upgrade via web on my own risk" : "Opdatering via web er på mit eget ansvar.", diff --git a/core/l10n/de.js b/core/l10n/de.js index 47830234df6..2c9a07275eb 100644 --- a/core/l10n/de.js +++ b/core/l10n/de.js @@ -51,7 +51,6 @@ OC.L10N.register( "Repair info:" : "Reparaturinformation:", "Repair warning:" : "Reparaturwarnung:", "Repair error:" : "Reparaturfehler:", - "Please use the command line updater because automatic updating is disabled in the config.php." : "Da automatische Updates in der config.php deaktivert sind, nutze bitte den Updater über die Kommandozeile.", "Turned on maintenance mode" : "Wartungsmodus eingeschaltet", "Turned off maintenance mode" : "Wartungsmodus ausgeschaltet", "Maintenance mode is kept active" : "Wartungsmodus bleibt aktiviert", @@ -184,6 +183,7 @@ OC.L10N.register( "Simple email app nicely integrated with Files, Contacts and Calendar." : "Einfache E-Mail App mit super integrierter Dateiverwaltung, Adressen und Kalender.", "Chatting, video calls, screensharing, online meetings and web conferencing – in your browser and with mobile apps." : "Chatten, Videoanrufe, Bildschirmfreigaben, Online-Besprechungen und Webkonferenzen - in deinem Browser sowie mit mobilen Apps.", "Collaborative documents, spreadsheets and presentations, built on Collabora Online." : "Gemeinsame Dokumente, Tabellenkalkulationen und Präsentationen, die auf Collabora Online basieren.", + "Distraction free note taking app." : "Ablenkungsfreie Notizen-App", "Search contacts" : "Kontakte suchen", "Forgot password?" : "Passwort vergessen?", "Log in with a device" : "Mit einem Gerät anmelden", @@ -215,6 +215,7 @@ OC.L10N.register( "Settings menu" : "Einstellungen-Menü", "Search {types} …" : "Suche {types} …", "Settings" : "Einstellungen", + "Avatar of {fullName}" : "Avatar von {fullName}", "Could not load your contacts" : "Deine Kontakte konnten nicht geladen werden", "Search contacts …" : "Kontakte suchen …", "No contacts found" : "Keine Kontakte gefunden", @@ -256,6 +257,7 @@ OC.L10N.register( "Show list view" : "Listenansicht anzeigen", "Show grid view" : "Rasteransicht anzeigen", "Pending" : "Ausstehend", + "Home" : "Startseite", "Copy to {folder}" : "Kopieren nach {folder}", "Move to {folder}" : "Verschieben nach {folder}", "Saving …" : "Speichern …", @@ -352,6 +354,7 @@ OC.L10N.register( "Skip to main content" : "Zum Hauptinhalt springen", "Skip to navigation of app" : "Zum Navigationsbereich der App springen", "Get your own free account" : "Hole dir dein eigenes kostenloses Konto", + "%s homepage" : "%s Internetseite", "Confirm your password" : "Bestätige dein Passwort", "%s's homepage" : "Homepage von %s", "Connect to your account" : "Verbinde dich mit deinem Konto", @@ -398,6 +401,7 @@ OC.L10N.register( "Detailed logs" : "Detaillierte Protokollmeldungen", "Update needed" : "Update wird benötigt", "Please use the command line updater because you have a big instance with more than 50 users." : "Bitte verwende den Kommandozeilen-Updater, da du eine große Installation mit mehr als 50 Nutzern betreibst.", + "Please use the command line updater because automatic updating is disabled in the config.php." : "Da automatische Updates in der config.php deaktivert sind, nutze bitte den Updater über die Kommandozeile.", "For help, see the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentation</a>." : "Für weitere Hilfen, schaue bitte in die <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">Dokumentation</a>.", "I know that if I continue doing the update via web UI has the risk, that the request runs into a timeout and could cause data loss, but I have a backup and know how to restore my instance in case of a failure." : "Mir ist bekannt, dass die Durchführung der Aktualisierung über die Web-Oberfläche das Risiko birgt, dass der Aktualisierungsprozess abgebrochen wird, was zu Datenverlust führen kann. Ich habe eine Sicherung und ich weiss, wie ich im Falle eines Fehlers beim Aktualisieren meine Installation wieder herstellen kann.", "Upgrade via web on my own risk" : "Aktualisierung über die Web-Oberfläche auf eigenes Risiko", diff --git a/core/l10n/de.json b/core/l10n/de.json index cb93c4a8742..2da95f6327b 100644 --- a/core/l10n/de.json +++ b/core/l10n/de.json @@ -49,7 +49,6 @@ "Repair info:" : "Reparaturinformation:", "Repair warning:" : "Reparaturwarnung:", "Repair error:" : "Reparaturfehler:", - "Please use the command line updater because automatic updating is disabled in the config.php." : "Da automatische Updates in der config.php deaktivert sind, nutze bitte den Updater über die Kommandozeile.", "Turned on maintenance mode" : "Wartungsmodus eingeschaltet", "Turned off maintenance mode" : "Wartungsmodus ausgeschaltet", "Maintenance mode is kept active" : "Wartungsmodus bleibt aktiviert", @@ -182,6 +181,7 @@ "Simple email app nicely integrated with Files, Contacts and Calendar." : "Einfache E-Mail App mit super integrierter Dateiverwaltung, Adressen und Kalender.", "Chatting, video calls, screensharing, online meetings and web conferencing – in your browser and with mobile apps." : "Chatten, Videoanrufe, Bildschirmfreigaben, Online-Besprechungen und Webkonferenzen - in deinem Browser sowie mit mobilen Apps.", "Collaborative documents, spreadsheets and presentations, built on Collabora Online." : "Gemeinsame Dokumente, Tabellenkalkulationen und Präsentationen, die auf Collabora Online basieren.", + "Distraction free note taking app." : "Ablenkungsfreie Notizen-App", "Search contacts" : "Kontakte suchen", "Forgot password?" : "Passwort vergessen?", "Log in with a device" : "Mit einem Gerät anmelden", @@ -213,6 +213,7 @@ "Settings menu" : "Einstellungen-Menü", "Search {types} …" : "Suche {types} …", "Settings" : "Einstellungen", + "Avatar of {fullName}" : "Avatar von {fullName}", "Could not load your contacts" : "Deine Kontakte konnten nicht geladen werden", "Search contacts …" : "Kontakte suchen …", "No contacts found" : "Keine Kontakte gefunden", @@ -254,6 +255,7 @@ "Show list view" : "Listenansicht anzeigen", "Show grid view" : "Rasteransicht anzeigen", "Pending" : "Ausstehend", + "Home" : "Startseite", "Copy to {folder}" : "Kopieren nach {folder}", "Move to {folder}" : "Verschieben nach {folder}", "Saving …" : "Speichern …", @@ -350,6 +352,7 @@ "Skip to main content" : "Zum Hauptinhalt springen", "Skip to navigation of app" : "Zum Navigationsbereich der App springen", "Get your own free account" : "Hole dir dein eigenes kostenloses Konto", + "%s homepage" : "%s Internetseite", "Confirm your password" : "Bestätige dein Passwort", "%s's homepage" : "Homepage von %s", "Connect to your account" : "Verbinde dich mit deinem Konto", @@ -396,6 +399,7 @@ "Detailed logs" : "Detaillierte Protokollmeldungen", "Update needed" : "Update wird benötigt", "Please use the command line updater because you have a big instance with more than 50 users." : "Bitte verwende den Kommandozeilen-Updater, da du eine große Installation mit mehr als 50 Nutzern betreibst.", + "Please use the command line updater because automatic updating is disabled in the config.php." : "Da automatische Updates in der config.php deaktivert sind, nutze bitte den Updater über die Kommandozeile.", "For help, see the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentation</a>." : "Für weitere Hilfen, schaue bitte in die <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">Dokumentation</a>.", "I know that if I continue doing the update via web UI has the risk, that the request runs into a timeout and could cause data loss, but I have a backup and know how to restore my instance in case of a failure." : "Mir ist bekannt, dass die Durchführung der Aktualisierung über die Web-Oberfläche das Risiko birgt, dass der Aktualisierungsprozess abgebrochen wird, was zu Datenverlust führen kann. Ich habe eine Sicherung und ich weiss, wie ich im Falle eines Fehlers beim Aktualisieren meine Installation wieder herstellen kann.", "Upgrade via web on my own risk" : "Aktualisierung über die Web-Oberfläche auf eigenes Risiko", diff --git a/core/l10n/de_DE.js b/core/l10n/de_DE.js index c7cc646daf2..fbf0a5817cd 100644 --- a/core/l10n/de_DE.js +++ b/core/l10n/de_DE.js @@ -51,7 +51,7 @@ OC.L10N.register( "Repair info:" : "Reparaturinformation:", "Repair warning:" : "Reparaturwarnung:", "Repair error:" : "Reparaturfehler:", - "Please use the command line updater because automatic updating is disabled in the config.php." : "Da automatische Updates in der config.php deaktivert sind, nutzen Sie bitte den Updater über die Kommandozeile.", + "Please use the command line updater because updating via the browser is disabled in your config.php." : "Bitte verwenden Sie den Kommandozeilen-Updater, da die Aktualisierung über den Browser in Ihrer config.php deaktiviert ist.", "Turned on maintenance mode" : "Wartungsmodus eingeschaltet ", "Turned off maintenance mode" : "Wartungsmodus ausgeschaltet", "Maintenance mode is kept active" : "Wartungsmodus bleibt aktiviert", @@ -184,6 +184,7 @@ OC.L10N.register( "Simple email app nicely integrated with Files, Contacts and Calendar." : "Einfache E-Mail-App mit guter Integration in Dateiverwaltung, Adressen und Kalender.", "Chatting, video calls, screensharing, online meetings and web conferencing – in your browser and with mobile apps." : "Chatten, Videoanrufe, Bildschirmfreigaben, Online-Besprechungen und Webkonferenzen - in Ihrem Browser sowie mit mobilen Apps.", "Collaborative documents, spreadsheets and presentations, built on Collabora Online." : "Gemeinsame Dokumente, Tabellenkalkulationen und Präsentationen, die auf Collabora Online basieren.", + "Distraction free note taking app." : "Ablenkungsfreie Notizen-App", "Search contacts" : "Kontakte suchen", "Forgot password?" : "Passwort vergessen?", "Log in with a device" : "Mit einem Gerät anmelden", @@ -215,6 +216,7 @@ OC.L10N.register( "Settings menu" : "Einstellungen-Menü", "Search {types} …" : "Suche {types}…", "Settings" : "Einstellungen", + "Avatar of {fullName}" : "Avatar von {fullName}", "Could not load your contacts" : "Ihre Kontakte konnten nicht geladen werden", "Search contacts …" : "Kontakte suchen…", "No contacts found" : "Keine Kontakte gefunden", @@ -400,6 +402,7 @@ OC.L10N.register( "Detailed logs" : "Detaillierte Protokollmeldungen", "Update needed" : "Aktualisierung erforderlich", "Please use the command line updater because you have a big instance with more than 50 users." : "Bitte verwenden Sie den Kommandozeilen-Updater, da Sie eine große Installation mit mehr als 50 Nutzern betreiben.", + "Please use the command line updater because automatic updating is disabled in the config.php." : "Da automatische Updates in der config.php deaktivert sind, nutzen Sie bitte den Updater über die Kommandozeile.", "For help, see the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentation</a>." : "Für weitere Hilfen, schauen Sie bitte in die <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">Dokumentation</a>.", "I know that if I continue doing the update via web UI has the risk, that the request runs into a timeout and could cause data loss, but I have a backup and know how to restore my instance in case of a failure." : "Mir ist bekannt, dass die Durchführung der Aktualisierung über die Web-Oberfläche das Risiko birgt, dass der Aktualisierungsprozess abgebrochen wird, was zu Datenverlust führen kann. Ich habe eine Sicherung und ich weiss, wie ich im Falle eines Fehlers beim Aktualisieren meine Installation wieder herstellen kann.", "Upgrade via web on my own risk" : "Aktualisierung über die Web-Oberfläche auf eigenes Risiko", diff --git a/core/l10n/de_DE.json b/core/l10n/de_DE.json index 49a0b9ee918..3b77db26deb 100644 --- a/core/l10n/de_DE.json +++ b/core/l10n/de_DE.json @@ -49,7 +49,7 @@ "Repair info:" : "Reparaturinformation:", "Repair warning:" : "Reparaturwarnung:", "Repair error:" : "Reparaturfehler:", - "Please use the command line updater because automatic updating is disabled in the config.php." : "Da automatische Updates in der config.php deaktivert sind, nutzen Sie bitte den Updater über die Kommandozeile.", + "Please use the command line updater because updating via the browser is disabled in your config.php." : "Bitte verwenden Sie den Kommandozeilen-Updater, da die Aktualisierung über den Browser in Ihrer config.php deaktiviert ist.", "Turned on maintenance mode" : "Wartungsmodus eingeschaltet ", "Turned off maintenance mode" : "Wartungsmodus ausgeschaltet", "Maintenance mode is kept active" : "Wartungsmodus bleibt aktiviert", @@ -182,6 +182,7 @@ "Simple email app nicely integrated with Files, Contacts and Calendar." : "Einfache E-Mail-App mit guter Integration in Dateiverwaltung, Adressen und Kalender.", "Chatting, video calls, screensharing, online meetings and web conferencing – in your browser and with mobile apps." : "Chatten, Videoanrufe, Bildschirmfreigaben, Online-Besprechungen und Webkonferenzen - in Ihrem Browser sowie mit mobilen Apps.", "Collaborative documents, spreadsheets and presentations, built on Collabora Online." : "Gemeinsame Dokumente, Tabellenkalkulationen und Präsentationen, die auf Collabora Online basieren.", + "Distraction free note taking app." : "Ablenkungsfreie Notizen-App", "Search contacts" : "Kontakte suchen", "Forgot password?" : "Passwort vergessen?", "Log in with a device" : "Mit einem Gerät anmelden", @@ -213,6 +214,7 @@ "Settings menu" : "Einstellungen-Menü", "Search {types} …" : "Suche {types}…", "Settings" : "Einstellungen", + "Avatar of {fullName}" : "Avatar von {fullName}", "Could not load your contacts" : "Ihre Kontakte konnten nicht geladen werden", "Search contacts …" : "Kontakte suchen…", "No contacts found" : "Keine Kontakte gefunden", @@ -398,6 +400,7 @@ "Detailed logs" : "Detaillierte Protokollmeldungen", "Update needed" : "Aktualisierung erforderlich", "Please use the command line updater because you have a big instance with more than 50 users." : "Bitte verwenden Sie den Kommandozeilen-Updater, da Sie eine große Installation mit mehr als 50 Nutzern betreiben.", + "Please use the command line updater because automatic updating is disabled in the config.php." : "Da automatische Updates in der config.php deaktivert sind, nutzen Sie bitte den Updater über die Kommandozeile.", "For help, see the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentation</a>." : "Für weitere Hilfen, schauen Sie bitte in die <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">Dokumentation</a>.", "I know that if I continue doing the update via web UI has the risk, that the request runs into a timeout and could cause data loss, but I have a backup and know how to restore my instance in case of a failure." : "Mir ist bekannt, dass die Durchführung der Aktualisierung über die Web-Oberfläche das Risiko birgt, dass der Aktualisierungsprozess abgebrochen wird, was zu Datenverlust führen kann. Ich habe eine Sicherung und ich weiss, wie ich im Falle eines Fehlers beim Aktualisieren meine Installation wieder herstellen kann.", "Upgrade via web on my own risk" : "Aktualisierung über die Web-Oberfläche auf eigenes Risiko", diff --git a/core/l10n/el.js b/core/l10n/el.js index 6158afc4991..b7e2ce2e9aa 100644 --- a/core/l10n/el.js +++ b/core/l10n/el.js @@ -48,7 +48,6 @@ OC.L10N.register( "Repair info:" : "Πληροφορίες επισκευής:", "Repair warning:" : "Προειδοποίηση επισκευής:", "Repair error:" : "Σφάλμα επισκευής:", - "Please use the command line updater because automatic updating is disabled in the config.php." : "Παρακαλούμε ενημερώστε μέσω γραμμής εντολών διότι η αυτόματη ενημέρωση έχει απενεργοποιηθεί στο αρχείο config.php.", "Turned on maintenance mode" : "Η λειτουργία συντήρησης ενεργοποιήθηκε", "Turned off maintenance mode" : "Η λειτουργία συντήρησης απενεργοποιήθηκε", "Maintenance mode is kept active" : "Η λειτουργία συντήρησης διατηρήθηκε ενεργή", @@ -363,6 +362,7 @@ OC.L10N.register( "Detailed logs" : "Λεπτομερές ιστορικό", "Update needed" : "Απαιτείται ενημέρωση", "Please use the command line updater because you have a big instance with more than 50 users." : "Παρακαλούμε χρησιμοποιήστε την ενημέρωση μέσω γραμμής εντολών διότι έχετε μια μεγάλη εγκατάσταση με περισσότερους από 50 χρήστες.", + "Please use the command line updater because automatic updating is disabled in the config.php." : "Παρακαλούμε ενημερώστε μέσω γραμμής εντολών διότι η αυτόματη ενημέρωση έχει απενεργοποιηθεί στο αρχείο config.php.", "For help, see the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentation</a>." : "Για βοήθεια, δείτε στην <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">τεκμηρίωση</a>.", "I know that if I continue doing the update via web UI has the risk, that the request runs into a timeout and could cause data loss, but I have a backup and know how to restore my instance in case of a failure." : "Γνωρίζω ότι συνεχίζοντας την ενημέρωση μέσω web UI αποτελεί ρίσκο, το χρονικό όριο του αιτήματος μπορεί να εξαντληθεί με συνέπεια το χάσιμο δεδομένων, αλλά έχω πραγματοποιήσει αντίγραφο ασφαλείας και γνωρίζω πως να κάνω αποκατάσταση σε περίπτωση αποτυχίας.", "Upgrade via web on my own risk" : "Αναβάθμιση μέσω ιστού με δική μου ευθύνη", diff --git a/core/l10n/el.json b/core/l10n/el.json index 05ddefa896a..ce0bc927894 100644 --- a/core/l10n/el.json +++ b/core/l10n/el.json @@ -46,7 +46,6 @@ "Repair info:" : "Πληροφορίες επισκευής:", "Repair warning:" : "Προειδοποίηση επισκευής:", "Repair error:" : "Σφάλμα επισκευής:", - "Please use the command line updater because automatic updating is disabled in the config.php." : "Παρακαλούμε ενημερώστε μέσω γραμμής εντολών διότι η αυτόματη ενημέρωση έχει απενεργοποιηθεί στο αρχείο config.php.", "Turned on maintenance mode" : "Η λειτουργία συντήρησης ενεργοποιήθηκε", "Turned off maintenance mode" : "Η λειτουργία συντήρησης απενεργοποιήθηκε", "Maintenance mode is kept active" : "Η λειτουργία συντήρησης διατηρήθηκε ενεργή", @@ -361,6 +360,7 @@ "Detailed logs" : "Λεπτομερές ιστορικό", "Update needed" : "Απαιτείται ενημέρωση", "Please use the command line updater because you have a big instance with more than 50 users." : "Παρακαλούμε χρησιμοποιήστε την ενημέρωση μέσω γραμμής εντολών διότι έχετε μια μεγάλη εγκατάσταση με περισσότερους από 50 χρήστες.", + "Please use the command line updater because automatic updating is disabled in the config.php." : "Παρακαλούμε ενημερώστε μέσω γραμμής εντολών διότι η αυτόματη ενημέρωση έχει απενεργοποιηθεί στο αρχείο config.php.", "For help, see the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentation</a>." : "Για βοήθεια, δείτε στην <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">τεκμηρίωση</a>.", "I know that if I continue doing the update via web UI has the risk, that the request runs into a timeout and could cause data loss, but I have a backup and know how to restore my instance in case of a failure." : "Γνωρίζω ότι συνεχίζοντας την ενημέρωση μέσω web UI αποτελεί ρίσκο, το χρονικό όριο του αιτήματος μπορεί να εξαντληθεί με συνέπεια το χάσιμο δεδομένων, αλλά έχω πραγματοποιήσει αντίγραφο ασφαλείας και γνωρίζω πως να κάνω αποκατάσταση σε περίπτωση αποτυχίας.", "Upgrade via web on my own risk" : "Αναβάθμιση μέσω ιστού με δική μου ευθύνη", diff --git a/core/l10n/en_GB.js b/core/l10n/en_GB.js index a19cea7cfb1..2082a85277b 100644 --- a/core/l10n/en_GB.js +++ b/core/l10n/en_GB.js @@ -51,7 +51,7 @@ OC.L10N.register( "Repair info:" : "Repair info:", "Repair warning:" : "Repair warning:", "Repair error:" : "Repair error:", - "Please use the command line updater because automatic updating is disabled in the config.php." : "Please use the command line updater because automatic updating is disabled in the config.php.", + "Please use the command line updater because updating via the browser is disabled in your config.php." : "Please use the command line updater because updating via the browser is disabled in your config.php.", "Turned on maintenance mode" : "Turned on maintenance mode", "Turned off maintenance mode" : "Turned off maintenance mode", "Maintenance mode is kept active" : "Maintenance mode is kept active", @@ -184,6 +184,7 @@ OC.L10N.register( "Simple email app nicely integrated with Files, Contacts and Calendar." : "Simple email app nicely integrated with Files, Contacts and Calendar.", "Chatting, video calls, screensharing, online meetings and web conferencing – in your browser and with mobile apps." : "Chatting, video calls, screensharing, online meetings and web conferencing – in your browser and with mobile apps.", "Collaborative documents, spreadsheets and presentations, built on Collabora Online." : "Collaborative documents, spreadsheets and presentations, built on Collabora Online.", + "Distraction free note taking app." : "Distraction free note taking app.", "Search contacts" : "Search contacts", "Forgot password?" : "Forgot password?", "Log in with a device" : "Log in with a device", @@ -215,6 +216,7 @@ OC.L10N.register( "Settings menu" : "Settings menu", "Search {types} …" : "Search {types} …", "Settings" : "Settings", + "Avatar of {fullName}" : "Avatar of {fullName}", "Could not load your contacts" : "Could not load your contacts", "Search contacts …" : "Search contacts …", "No contacts found" : "No contacts found", @@ -400,6 +402,7 @@ OC.L10N.register( "Detailed logs" : "Detailed logs", "Update needed" : "Update needed", "Please use the command line updater because you have a big instance with more than 50 users." : "Please use the command line updater because you have a big instance with more than 50 users.", + "Please use the command line updater because automatic updating is disabled in the config.php." : "Please use the command line updater because automatic updating is disabled in the config.php.", "For help, see the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentation</a>." : "For help, see the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentation</a>.", "I know that if I continue doing the update via web UI has the risk, that the request runs into a timeout and could cause data loss, but I have a backup and know how to restore my instance in case of a failure." : "I know that if I continue doing the update via web UI has the risk, that the request runs into a timeout and could cause data loss, but I have a backup and know how to restore my instance in case of a failure.", "Upgrade via web on my own risk" : "Upgrade via web on my own risk", diff --git a/core/l10n/en_GB.json b/core/l10n/en_GB.json index 6cd051ba13b..f7f1f5878c4 100644 --- a/core/l10n/en_GB.json +++ b/core/l10n/en_GB.json @@ -49,7 +49,7 @@ "Repair info:" : "Repair info:", "Repair warning:" : "Repair warning:", "Repair error:" : "Repair error:", - "Please use the command line updater because automatic updating is disabled in the config.php." : "Please use the command line updater because automatic updating is disabled in the config.php.", + "Please use the command line updater because updating via the browser is disabled in your config.php." : "Please use the command line updater because updating via the browser is disabled in your config.php.", "Turned on maintenance mode" : "Turned on maintenance mode", "Turned off maintenance mode" : "Turned off maintenance mode", "Maintenance mode is kept active" : "Maintenance mode is kept active", @@ -182,6 +182,7 @@ "Simple email app nicely integrated with Files, Contacts and Calendar." : "Simple email app nicely integrated with Files, Contacts and Calendar.", "Chatting, video calls, screensharing, online meetings and web conferencing – in your browser and with mobile apps." : "Chatting, video calls, screensharing, online meetings and web conferencing – in your browser and with mobile apps.", "Collaborative documents, spreadsheets and presentations, built on Collabora Online." : "Collaborative documents, spreadsheets and presentations, built on Collabora Online.", + "Distraction free note taking app." : "Distraction free note taking app.", "Search contacts" : "Search contacts", "Forgot password?" : "Forgot password?", "Log in with a device" : "Log in with a device", @@ -213,6 +214,7 @@ "Settings menu" : "Settings menu", "Search {types} …" : "Search {types} …", "Settings" : "Settings", + "Avatar of {fullName}" : "Avatar of {fullName}", "Could not load your contacts" : "Could not load your contacts", "Search contacts …" : "Search contacts …", "No contacts found" : "No contacts found", @@ -398,6 +400,7 @@ "Detailed logs" : "Detailed logs", "Update needed" : "Update needed", "Please use the command line updater because you have a big instance with more than 50 users." : "Please use the command line updater because you have a big instance with more than 50 users.", + "Please use the command line updater because automatic updating is disabled in the config.php." : "Please use the command line updater because automatic updating is disabled in the config.php.", "For help, see the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentation</a>." : "For help, see the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentation</a>.", "I know that if I continue doing the update via web UI has the risk, that the request runs into a timeout and could cause data loss, but I have a backup and know how to restore my instance in case of a failure." : "I know that if I continue doing the update via web UI has the risk, that the request runs into a timeout and could cause data loss, but I have a backup and know how to restore my instance in case of a failure.", "Upgrade via web on my own risk" : "Upgrade via web on my own risk", diff --git a/core/l10n/eo.js b/core/l10n/eo.js index 03a58dff603..4ea249696c6 100644 --- a/core/l10n/eo.js +++ b/core/l10n/eo.js @@ -48,7 +48,6 @@ OC.L10N.register( "Repair info:" : "Ripara informo:", "Repair warning:" : "Ripara averto:", "Repair error:" : "Ripara eraro:", - "Please use the command line updater because automatic updating is disabled in the config.php." : "Bv. uzi komandlinian ĝisdatigilon, ĉar aŭtomata ĝisdatigo estas malebligita en la dosiero „config.php“.", "Turned on maintenance mode" : "Reĝimo de prizorgado ŝaltita.", "Turned off maintenance mode" : "Reĝimo de prizorgado malŝaltita.", "Maintenance mode is kept active" : "Reĝimo de prizorgado pluas", @@ -327,6 +326,7 @@ OC.L10N.register( "Detailed logs" : "Detalaj protokoloj", "Update needed" : "Bezonas ĝisdatigi", "Please use the command line updater because you have a big instance with more than 50 users." : "Bv. uzi la komandlinian ĝisdatigilon, ĉar vi havas pli da 50 uzantojn en tiu servilo.", + "Please use the command line updater because automatic updating is disabled in the config.php." : "Bv. uzi komandlinian ĝisdatigilon, ĉar aŭtomata ĝisdatigo estas malebligita en la dosiero „config.php“.", "For help, see the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentation</a>." : "Vidu la <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">dokumentaron</a> por helpo.", "I know that if I continue doing the update via web UI has the risk, that the request runs into a timeout and could cause data loss, but I have a backup and know how to restore my instance in case of a failure." : "Mi scias, ke, se mi daŭrigas la ĝisdatigon per la reteja fasado, estas risko, ke la peto eltempiĝos kaj okazigos perdon de datumoj. Sed, mi havas sekurkopion kaj scias, kiel restaŭri mian servilon okaze de paneo.", "Upgrade via web on my own risk" : "Ĝisdatigi per reteja fasado je mia risko", diff --git a/core/l10n/eo.json b/core/l10n/eo.json index 45d74ec8621..1831a78b61a 100644 --- a/core/l10n/eo.json +++ b/core/l10n/eo.json @@ -46,7 +46,6 @@ "Repair info:" : "Ripara informo:", "Repair warning:" : "Ripara averto:", "Repair error:" : "Ripara eraro:", - "Please use the command line updater because automatic updating is disabled in the config.php." : "Bv. uzi komandlinian ĝisdatigilon, ĉar aŭtomata ĝisdatigo estas malebligita en la dosiero „config.php“.", "Turned on maintenance mode" : "Reĝimo de prizorgado ŝaltita.", "Turned off maintenance mode" : "Reĝimo de prizorgado malŝaltita.", "Maintenance mode is kept active" : "Reĝimo de prizorgado pluas", @@ -325,6 +324,7 @@ "Detailed logs" : "Detalaj protokoloj", "Update needed" : "Bezonas ĝisdatigi", "Please use the command line updater because you have a big instance with more than 50 users." : "Bv. uzi la komandlinian ĝisdatigilon, ĉar vi havas pli da 50 uzantojn en tiu servilo.", + "Please use the command line updater because automatic updating is disabled in the config.php." : "Bv. uzi komandlinian ĝisdatigilon, ĉar aŭtomata ĝisdatigo estas malebligita en la dosiero „config.php“.", "For help, see the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentation</a>." : "Vidu la <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">dokumentaron</a> por helpo.", "I know that if I continue doing the update via web UI has the risk, that the request runs into a timeout and could cause data loss, but I have a backup and know how to restore my instance in case of a failure." : "Mi scias, ke, se mi daŭrigas la ĝisdatigon per la reteja fasado, estas risko, ke la peto eltempiĝos kaj okazigos perdon de datumoj. Sed, mi havas sekurkopion kaj scias, kiel restaŭri mian servilon okaze de paneo.", "Upgrade via web on my own risk" : "Ĝisdatigi per reteja fasado je mia risko", diff --git a/core/l10n/es.js b/core/l10n/es.js index cad74e14345..5f6b27c6954 100644 --- a/core/l10n/es.js +++ b/core/l10n/es.js @@ -51,7 +51,6 @@ OC.L10N.register( "Repair info:" : "Información de reparación:", "Repair warning:" : "Advertencia de reparación:", "Repair error:" : "Error que reparar:", - "Please use the command line updater because automatic updating is disabled in the config.php." : "Por favor utilice la actualización mediante la linea de comandos porque la actualización automática está desactivada en config.php.", "Turned on maintenance mode" : "Modo mantenimiento activado", "Turned off maintenance mode" : "Modo mantenimiento desactivado", "Maintenance mode is kept active" : "El modo mantenimiento aún está activo.", @@ -400,6 +399,7 @@ OC.L10N.register( "Detailed logs" : "Registros detallados", "Update needed" : "Se necesita actualización", "Please use the command line updater because you have a big instance with more than 50 users." : "Utilice el actualizador de línia de comandos porque tiene una instancia con más de 50 usuarios.", + "Please use the command line updater because automatic updating is disabled in the config.php." : "Por favor utilice la actualización mediante la linea de comandos porque la actualización automática está desactivada en config.php.", "For help, see the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentation</a>." : "Para obtener ayuda, consulta la <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentación</a>.", "I know that if I continue doing the update via web UI has the risk, that the request runs into a timeout and could cause data loss, but I have a backup and know how to restore my instance in case of a failure." : "Sé que si continúo haciendo la actualización a través de la interfaz web, tengo el riesgo de que la solicitud no se ejecute en el tiempo de espera y provoque pérdida de información pero tengo una copia de seguridad de los datos y sé como restaurarla.", "Upgrade via web on my own risk" : "Actualizar a través de la web con mi consentimiento.", diff --git a/core/l10n/es.json b/core/l10n/es.json index bfc5c565e1c..f148cb5316c 100644 --- a/core/l10n/es.json +++ b/core/l10n/es.json @@ -49,7 +49,6 @@ "Repair info:" : "Información de reparación:", "Repair warning:" : "Advertencia de reparación:", "Repair error:" : "Error que reparar:", - "Please use the command line updater because automatic updating is disabled in the config.php." : "Por favor utilice la actualización mediante la linea de comandos porque la actualización automática está desactivada en config.php.", "Turned on maintenance mode" : "Modo mantenimiento activado", "Turned off maintenance mode" : "Modo mantenimiento desactivado", "Maintenance mode is kept active" : "El modo mantenimiento aún está activo.", @@ -398,6 +397,7 @@ "Detailed logs" : "Registros detallados", "Update needed" : "Se necesita actualización", "Please use the command line updater because you have a big instance with more than 50 users." : "Utilice el actualizador de línia de comandos porque tiene una instancia con más de 50 usuarios.", + "Please use the command line updater because automatic updating is disabled in the config.php." : "Por favor utilice la actualización mediante la linea de comandos porque la actualización automática está desactivada en config.php.", "For help, see the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentation</a>." : "Para obtener ayuda, consulta la <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentación</a>.", "I know that if I continue doing the update via web UI has the risk, that the request runs into a timeout and could cause data loss, but I have a backup and know how to restore my instance in case of a failure." : "Sé que si continúo haciendo la actualización a través de la interfaz web, tengo el riesgo de que la solicitud no se ejecute en el tiempo de espera y provoque pérdida de información pero tengo una copia de seguridad de los datos y sé como restaurarla.", "Upgrade via web on my own risk" : "Actualizar a través de la web con mi consentimiento.", diff --git a/core/l10n/es_419.js b/core/l10n/es_419.js index ebcd9f71725..1f632307561 100644 --- a/core/l10n/es_419.js +++ b/core/l10n/es_419.js @@ -28,7 +28,6 @@ OC.L10N.register( "Reset your password" : "Restablecer tu contraseña", "Preparing update" : "Preparando actualización", "[%d / %d]: %s" : "[%d / %d]: %s ", - "Please use the command line updater because automatic updating is disabled in the config.php." : "Por favor usa el actualizador de línea de comandos ya que el actualizador automático se encuentra deshabilitado en config.php.", "Turned on maintenance mode" : "Modo mantenimiento activado", "Turned off maintenance mode" : "Modo mantenimiento desactivado", "Maintenance mode is kept active" : "El modo mantenimiento sigue activo", @@ -210,6 +209,7 @@ OC.L10N.register( "Detailed logs" : "Bitácoras detalladas", "Update needed" : "Se requiere de una actualización", "Please use the command line updater because you have a big instance with more than 50 users." : "Favor de usar el actualizador desde la línea de comandos ya que tu instancia cuenta con más de 50 usuarios.", + "Please use the command line updater because automatic updating is disabled in the config.php." : "Por favor usa el actualizador de línea de comandos ya que el actualizador automático se encuentra deshabilitado en config.php.", "For help, see the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentation</a>." : "Para más ayuda, por favor consulta la <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentación</a>.", "I know that if I continue doing the update via web UI has the risk, that the request runs into a timeout and could cause data loss, but I have a backup and know how to restore my instance in case of a failure." : "Estoy conciente de que si continúo haciendo la actualización vía web, la interfaz de usuario corre el riesgo de que el tiempo de la solicitud expire y cause pérdida de datos, pero cuento con un respaldo y sé como restaurar mi instancia en caso de una falla. ", "Upgrade via web on my own risk" : "Actualizar vía Web bajo mi propio riesgo", diff --git a/core/l10n/es_419.json b/core/l10n/es_419.json index 5b98aceadfe..8a82408c34c 100644 --- a/core/l10n/es_419.json +++ b/core/l10n/es_419.json @@ -26,7 +26,6 @@ "Reset your password" : "Restablecer tu contraseña", "Preparing update" : "Preparando actualización", "[%d / %d]: %s" : "[%d / %d]: %s ", - "Please use the command line updater because automatic updating is disabled in the config.php." : "Por favor usa el actualizador de línea de comandos ya que el actualizador automático se encuentra deshabilitado en config.php.", "Turned on maintenance mode" : "Modo mantenimiento activado", "Turned off maintenance mode" : "Modo mantenimiento desactivado", "Maintenance mode is kept active" : "El modo mantenimiento sigue activo", @@ -208,6 +207,7 @@ "Detailed logs" : "Bitácoras detalladas", "Update needed" : "Se requiere de una actualización", "Please use the command line updater because you have a big instance with more than 50 users." : "Favor de usar el actualizador desde la línea de comandos ya que tu instancia cuenta con más de 50 usuarios.", + "Please use the command line updater because automatic updating is disabled in the config.php." : "Por favor usa el actualizador de línea de comandos ya que el actualizador automático se encuentra deshabilitado en config.php.", "For help, see the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentation</a>." : "Para más ayuda, por favor consulta la <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentación</a>.", "I know that if I continue doing the update via web UI has the risk, that the request runs into a timeout and could cause data loss, but I have a backup and know how to restore my instance in case of a failure." : "Estoy conciente de que si continúo haciendo la actualización vía web, la interfaz de usuario corre el riesgo de que el tiempo de la solicitud expire y cause pérdida de datos, pero cuento con un respaldo y sé como restaurar mi instancia en caso de una falla. ", "Upgrade via web on my own risk" : "Actualizar vía Web bajo mi propio riesgo", diff --git a/core/l10n/es_AR.js b/core/l10n/es_AR.js index 2ec1fc75a96..84e6abdf23a 100644 --- a/core/l10n/es_AR.js +++ b/core/l10n/es_AR.js @@ -29,7 +29,6 @@ OC.L10N.register( "Nextcloud Server" : "Servidor Nextcloud", "Preparing update" : "Preparando actualización", "[%d / %d]: %s" : "[%d / %d]: %s ", - "Please use the command line updater because automatic updating is disabled in the config.php." : "Favor de usar el actualizador de línea de comandos ya que el actualizador automático se encuentra deshabilitado en config.php.", "Turned on maintenance mode" : "Activar modo mantenimiento", "Turned off maintenance mode" : "Desactivar modo mantenimiento", "Maintenance mode is kept active" : "El modo mantenimiento sigue activo", @@ -223,6 +222,7 @@ OC.L10N.register( "Detailed logs" : "Bitácoras detalladas", "Update needed" : "Actualización requerida", "Please use the command line updater because you have a big instance with more than 50 users." : "Favor de usar el actualizador desde la línea de comandos ya que su instancia cuenta con más de 50 usuarios.", + "Please use the command line updater because automatic updating is disabled in the config.php." : "Favor de usar el actualizador de línea de comandos ya que el actualizador automático se encuentra deshabilitado en config.php.", "I know that if I continue doing the update via web UI has the risk, that the request runs into a timeout and could cause data loss, but I have a backup and know how to restore my instance in case of a failure." : "Estoy conciente de que si continuo haciendo la actualización vía web, la interfaz de usuario corre el riesgo de que el tiempo de la solicitud expire y cause pérdida de datos, pero cuento con un respaldo y sé como restaurar mi instancia en caso de una falla. ", "Upgrade via web on my own risk" : "Actualizar vía Web bajo mi propio riesgo", "This %s instance is currently in maintenance mode, which may take a while." : "Esta instancia %s se encuentra actualmente en modo mantenimiento, que podría tomar algo de tiempo. ", diff --git a/core/l10n/es_AR.json b/core/l10n/es_AR.json index 0dadd7c2c59..7613cbbe14d 100644 --- a/core/l10n/es_AR.json +++ b/core/l10n/es_AR.json @@ -27,7 +27,6 @@ "Nextcloud Server" : "Servidor Nextcloud", "Preparing update" : "Preparando actualización", "[%d / %d]: %s" : "[%d / %d]: %s ", - "Please use the command line updater because automatic updating is disabled in the config.php." : "Favor de usar el actualizador de línea de comandos ya que el actualizador automático se encuentra deshabilitado en config.php.", "Turned on maintenance mode" : "Activar modo mantenimiento", "Turned off maintenance mode" : "Desactivar modo mantenimiento", "Maintenance mode is kept active" : "El modo mantenimiento sigue activo", @@ -221,6 +220,7 @@ "Detailed logs" : "Bitácoras detalladas", "Update needed" : "Actualización requerida", "Please use the command line updater because you have a big instance with more than 50 users." : "Favor de usar el actualizador desde la línea de comandos ya que su instancia cuenta con más de 50 usuarios.", + "Please use the command line updater because automatic updating is disabled in the config.php." : "Favor de usar el actualizador de línea de comandos ya que el actualizador automático se encuentra deshabilitado en config.php.", "I know that if I continue doing the update via web UI has the risk, that the request runs into a timeout and could cause data loss, but I have a backup and know how to restore my instance in case of a failure." : "Estoy conciente de que si continuo haciendo la actualización vía web, la interfaz de usuario corre el riesgo de que el tiempo de la solicitud expire y cause pérdida de datos, pero cuento con un respaldo y sé como restaurar mi instancia en caso de una falla. ", "Upgrade via web on my own risk" : "Actualizar vía Web bajo mi propio riesgo", "This %s instance is currently in maintenance mode, which may take a while." : "Esta instancia %s se encuentra actualmente en modo mantenimiento, que podría tomar algo de tiempo. ", diff --git a/core/l10n/es_CL.js b/core/l10n/es_CL.js index ec75f0a59a7..e16cf20ee15 100644 --- a/core/l10n/es_CL.js +++ b/core/l10n/es_CL.js @@ -32,7 +32,6 @@ OC.L10N.register( "Reset your password" : "Restablecer tu contraseña", "Preparing update" : "Preparando actualización", "[%d / %d]: %s" : "[%d / %d]: %s ", - "Please use the command line updater because automatic updating is disabled in the config.php." : "Por favor usa el actualizador de línea de comandos ya que el actualizador automático se encuentra deshabilitado en config.php.", "Turned on maintenance mode" : "Modo mantenimiento activado", "Turned off maintenance mode" : "Modo mantenimiento desactivado", "Maintenance mode is kept active" : "El modo mantenimiento sigue activo", @@ -221,6 +220,7 @@ OC.L10N.register( "Detailed logs" : "Bitácoras detalladas", "Update needed" : "Se requiere de una actualización", "Please use the command line updater because you have a big instance with more than 50 users." : "Favor de usar el actualizador desde la línea de comandos ya que tu instancia cuenta con más de 50 usuarios.", + "Please use the command line updater because automatic updating is disabled in the config.php." : "Por favor usa el actualizador de línea de comandos ya que el actualizador automático se encuentra deshabilitado en config.php.", "For help, see the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentation</a>." : "Para más ayuda, por favor consulta la <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentación</a>.", "I know that if I continue doing the update via web UI has the risk, that the request runs into a timeout and could cause data loss, but I have a backup and know how to restore my instance in case of a failure." : "Estoy conciente de que si continúo haciendo la actualización vía web, la interfaz de usuario corre el riesgo de que el tiempo de la solicitud expire y cause pérdida de datos, pero cuento con un respaldo y sé como restaurar mi instancia en caso de una falla. ", "Upgrade via web on my own risk" : "Actualizar vía Web bajo mi propio riesgo", diff --git a/core/l10n/es_CL.json b/core/l10n/es_CL.json index b9a66f72c3c..b40f96429d1 100644 --- a/core/l10n/es_CL.json +++ b/core/l10n/es_CL.json @@ -30,7 +30,6 @@ "Reset your password" : "Restablecer tu contraseña", "Preparing update" : "Preparando actualización", "[%d / %d]: %s" : "[%d / %d]: %s ", - "Please use the command line updater because automatic updating is disabled in the config.php." : "Por favor usa el actualizador de línea de comandos ya que el actualizador automático se encuentra deshabilitado en config.php.", "Turned on maintenance mode" : "Modo mantenimiento activado", "Turned off maintenance mode" : "Modo mantenimiento desactivado", "Maintenance mode is kept active" : "El modo mantenimiento sigue activo", @@ -219,6 +218,7 @@ "Detailed logs" : "Bitácoras detalladas", "Update needed" : "Se requiere de una actualización", "Please use the command line updater because you have a big instance with more than 50 users." : "Favor de usar el actualizador desde la línea de comandos ya que tu instancia cuenta con más de 50 usuarios.", + "Please use the command line updater because automatic updating is disabled in the config.php." : "Por favor usa el actualizador de línea de comandos ya que el actualizador automático se encuentra deshabilitado en config.php.", "For help, see the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentation</a>." : "Para más ayuda, por favor consulta la <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentación</a>.", "I know that if I continue doing the update via web UI has the risk, that the request runs into a timeout and could cause data loss, but I have a backup and know how to restore my instance in case of a failure." : "Estoy conciente de que si continúo haciendo la actualización vía web, la interfaz de usuario corre el riesgo de que el tiempo de la solicitud expire y cause pérdida de datos, pero cuento con un respaldo y sé como restaurar mi instancia en caso de una falla. ", "Upgrade via web on my own risk" : "Actualizar vía Web bajo mi propio riesgo", diff --git a/core/l10n/es_CO.js b/core/l10n/es_CO.js index ec75f0a59a7..e16cf20ee15 100644 --- a/core/l10n/es_CO.js +++ b/core/l10n/es_CO.js @@ -32,7 +32,6 @@ OC.L10N.register( "Reset your password" : "Restablecer tu contraseña", "Preparing update" : "Preparando actualización", "[%d / %d]: %s" : "[%d / %d]: %s ", - "Please use the command line updater because automatic updating is disabled in the config.php." : "Por favor usa el actualizador de línea de comandos ya que el actualizador automático se encuentra deshabilitado en config.php.", "Turned on maintenance mode" : "Modo mantenimiento activado", "Turned off maintenance mode" : "Modo mantenimiento desactivado", "Maintenance mode is kept active" : "El modo mantenimiento sigue activo", @@ -221,6 +220,7 @@ OC.L10N.register( "Detailed logs" : "Bitácoras detalladas", "Update needed" : "Se requiere de una actualización", "Please use the command line updater because you have a big instance with more than 50 users." : "Favor de usar el actualizador desde la línea de comandos ya que tu instancia cuenta con más de 50 usuarios.", + "Please use the command line updater because automatic updating is disabled in the config.php." : "Por favor usa el actualizador de línea de comandos ya que el actualizador automático se encuentra deshabilitado en config.php.", "For help, see the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentation</a>." : "Para más ayuda, por favor consulta la <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentación</a>.", "I know that if I continue doing the update via web UI has the risk, that the request runs into a timeout and could cause data loss, but I have a backup and know how to restore my instance in case of a failure." : "Estoy conciente de que si continúo haciendo la actualización vía web, la interfaz de usuario corre el riesgo de que el tiempo de la solicitud expire y cause pérdida de datos, pero cuento con un respaldo y sé como restaurar mi instancia en caso de una falla. ", "Upgrade via web on my own risk" : "Actualizar vía Web bajo mi propio riesgo", diff --git a/core/l10n/es_CO.json b/core/l10n/es_CO.json index b9a66f72c3c..b40f96429d1 100644 --- a/core/l10n/es_CO.json +++ b/core/l10n/es_CO.json @@ -30,7 +30,6 @@ "Reset your password" : "Restablecer tu contraseña", "Preparing update" : "Preparando actualización", "[%d / %d]: %s" : "[%d / %d]: %s ", - "Please use the command line updater because automatic updating is disabled in the config.php." : "Por favor usa el actualizador de línea de comandos ya que el actualizador automático se encuentra deshabilitado en config.php.", "Turned on maintenance mode" : "Modo mantenimiento activado", "Turned off maintenance mode" : "Modo mantenimiento desactivado", "Maintenance mode is kept active" : "El modo mantenimiento sigue activo", @@ -219,6 +218,7 @@ "Detailed logs" : "Bitácoras detalladas", "Update needed" : "Se requiere de una actualización", "Please use the command line updater because you have a big instance with more than 50 users." : "Favor de usar el actualizador desde la línea de comandos ya que tu instancia cuenta con más de 50 usuarios.", + "Please use the command line updater because automatic updating is disabled in the config.php." : "Por favor usa el actualizador de línea de comandos ya que el actualizador automático se encuentra deshabilitado en config.php.", "For help, see the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentation</a>." : "Para más ayuda, por favor consulta la <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentación</a>.", "I know that if I continue doing the update via web UI has the risk, that the request runs into a timeout and could cause data loss, but I have a backup and know how to restore my instance in case of a failure." : "Estoy conciente de que si continúo haciendo la actualización vía web, la interfaz de usuario corre el riesgo de que el tiempo de la solicitud expire y cause pérdida de datos, pero cuento con un respaldo y sé como restaurar mi instancia en caso de una falla. ", "Upgrade via web on my own risk" : "Actualizar vía Web bajo mi propio riesgo", diff --git a/core/l10n/es_CR.js b/core/l10n/es_CR.js index ec75f0a59a7..e16cf20ee15 100644 --- a/core/l10n/es_CR.js +++ b/core/l10n/es_CR.js @@ -32,7 +32,6 @@ OC.L10N.register( "Reset your password" : "Restablecer tu contraseña", "Preparing update" : "Preparando actualización", "[%d / %d]: %s" : "[%d / %d]: %s ", - "Please use the command line updater because automatic updating is disabled in the config.php." : "Por favor usa el actualizador de línea de comandos ya que el actualizador automático se encuentra deshabilitado en config.php.", "Turned on maintenance mode" : "Modo mantenimiento activado", "Turned off maintenance mode" : "Modo mantenimiento desactivado", "Maintenance mode is kept active" : "El modo mantenimiento sigue activo", @@ -221,6 +220,7 @@ OC.L10N.register( "Detailed logs" : "Bitácoras detalladas", "Update needed" : "Se requiere de una actualización", "Please use the command line updater because you have a big instance with more than 50 users." : "Favor de usar el actualizador desde la línea de comandos ya que tu instancia cuenta con más de 50 usuarios.", + "Please use the command line updater because automatic updating is disabled in the config.php." : "Por favor usa el actualizador de línea de comandos ya que el actualizador automático se encuentra deshabilitado en config.php.", "For help, see the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentation</a>." : "Para más ayuda, por favor consulta la <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentación</a>.", "I know that if I continue doing the update via web UI has the risk, that the request runs into a timeout and could cause data loss, but I have a backup and know how to restore my instance in case of a failure." : "Estoy conciente de que si continúo haciendo la actualización vía web, la interfaz de usuario corre el riesgo de que el tiempo de la solicitud expire y cause pérdida de datos, pero cuento con un respaldo y sé como restaurar mi instancia en caso de una falla. ", "Upgrade via web on my own risk" : "Actualizar vía Web bajo mi propio riesgo", diff --git a/core/l10n/es_CR.json b/core/l10n/es_CR.json index b9a66f72c3c..b40f96429d1 100644 --- a/core/l10n/es_CR.json +++ b/core/l10n/es_CR.json @@ -30,7 +30,6 @@ "Reset your password" : "Restablecer tu contraseña", "Preparing update" : "Preparando actualización", "[%d / %d]: %s" : "[%d / %d]: %s ", - "Please use the command line updater because automatic updating is disabled in the config.php." : "Por favor usa el actualizador de línea de comandos ya que el actualizador automático se encuentra deshabilitado en config.php.", "Turned on maintenance mode" : "Modo mantenimiento activado", "Turned off maintenance mode" : "Modo mantenimiento desactivado", "Maintenance mode is kept active" : "El modo mantenimiento sigue activo", @@ -219,6 +218,7 @@ "Detailed logs" : "Bitácoras detalladas", "Update needed" : "Se requiere de una actualización", "Please use the command line updater because you have a big instance with more than 50 users." : "Favor de usar el actualizador desde la línea de comandos ya que tu instancia cuenta con más de 50 usuarios.", + "Please use the command line updater because automatic updating is disabled in the config.php." : "Por favor usa el actualizador de línea de comandos ya que el actualizador automático se encuentra deshabilitado en config.php.", "For help, see the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentation</a>." : "Para más ayuda, por favor consulta la <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentación</a>.", "I know that if I continue doing the update via web UI has the risk, that the request runs into a timeout and could cause data loss, but I have a backup and know how to restore my instance in case of a failure." : "Estoy conciente de que si continúo haciendo la actualización vía web, la interfaz de usuario corre el riesgo de que el tiempo de la solicitud expire y cause pérdida de datos, pero cuento con un respaldo y sé como restaurar mi instancia en caso de una falla. ", "Upgrade via web on my own risk" : "Actualizar vía Web bajo mi propio riesgo", diff --git a/core/l10n/es_DO.js b/core/l10n/es_DO.js index ec75f0a59a7..e16cf20ee15 100644 --- a/core/l10n/es_DO.js +++ b/core/l10n/es_DO.js @@ -32,7 +32,6 @@ OC.L10N.register( "Reset your password" : "Restablecer tu contraseña", "Preparing update" : "Preparando actualización", "[%d / %d]: %s" : "[%d / %d]: %s ", - "Please use the command line updater because automatic updating is disabled in the config.php." : "Por favor usa el actualizador de línea de comandos ya que el actualizador automático se encuentra deshabilitado en config.php.", "Turned on maintenance mode" : "Modo mantenimiento activado", "Turned off maintenance mode" : "Modo mantenimiento desactivado", "Maintenance mode is kept active" : "El modo mantenimiento sigue activo", @@ -221,6 +220,7 @@ OC.L10N.register( "Detailed logs" : "Bitácoras detalladas", "Update needed" : "Se requiere de una actualización", "Please use the command line updater because you have a big instance with more than 50 users." : "Favor de usar el actualizador desde la línea de comandos ya que tu instancia cuenta con más de 50 usuarios.", + "Please use the command line updater because automatic updating is disabled in the config.php." : "Por favor usa el actualizador de línea de comandos ya que el actualizador automático se encuentra deshabilitado en config.php.", "For help, see the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentation</a>." : "Para más ayuda, por favor consulta la <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentación</a>.", "I know that if I continue doing the update via web UI has the risk, that the request runs into a timeout and could cause data loss, but I have a backup and know how to restore my instance in case of a failure." : "Estoy conciente de que si continúo haciendo la actualización vía web, la interfaz de usuario corre el riesgo de que el tiempo de la solicitud expire y cause pérdida de datos, pero cuento con un respaldo y sé como restaurar mi instancia en caso de una falla. ", "Upgrade via web on my own risk" : "Actualizar vía Web bajo mi propio riesgo", diff --git a/core/l10n/es_DO.json b/core/l10n/es_DO.json index b9a66f72c3c..b40f96429d1 100644 --- a/core/l10n/es_DO.json +++ b/core/l10n/es_DO.json @@ -30,7 +30,6 @@ "Reset your password" : "Restablecer tu contraseña", "Preparing update" : "Preparando actualización", "[%d / %d]: %s" : "[%d / %d]: %s ", - "Please use the command line updater because automatic updating is disabled in the config.php." : "Por favor usa el actualizador de línea de comandos ya que el actualizador automático se encuentra deshabilitado en config.php.", "Turned on maintenance mode" : "Modo mantenimiento activado", "Turned off maintenance mode" : "Modo mantenimiento desactivado", "Maintenance mode is kept active" : "El modo mantenimiento sigue activo", @@ -219,6 +218,7 @@ "Detailed logs" : "Bitácoras detalladas", "Update needed" : "Se requiere de una actualización", "Please use the command line updater because you have a big instance with more than 50 users." : "Favor de usar el actualizador desde la línea de comandos ya que tu instancia cuenta con más de 50 usuarios.", + "Please use the command line updater because automatic updating is disabled in the config.php." : "Por favor usa el actualizador de línea de comandos ya que el actualizador automático se encuentra deshabilitado en config.php.", "For help, see the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentation</a>." : "Para más ayuda, por favor consulta la <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentación</a>.", "I know that if I continue doing the update via web UI has the risk, that the request runs into a timeout and could cause data loss, but I have a backup and know how to restore my instance in case of a failure." : "Estoy conciente de que si continúo haciendo la actualización vía web, la interfaz de usuario corre el riesgo de que el tiempo de la solicitud expire y cause pérdida de datos, pero cuento con un respaldo y sé como restaurar mi instancia en caso de una falla. ", "Upgrade via web on my own risk" : "Actualizar vía Web bajo mi propio riesgo", diff --git a/core/l10n/es_EC.js b/core/l10n/es_EC.js index ec75f0a59a7..e16cf20ee15 100644 --- a/core/l10n/es_EC.js +++ b/core/l10n/es_EC.js @@ -32,7 +32,6 @@ OC.L10N.register( "Reset your password" : "Restablecer tu contraseña", "Preparing update" : "Preparando actualización", "[%d / %d]: %s" : "[%d / %d]: %s ", - "Please use the command line updater because automatic updating is disabled in the config.php." : "Por favor usa el actualizador de línea de comandos ya que el actualizador automático se encuentra deshabilitado en config.php.", "Turned on maintenance mode" : "Modo mantenimiento activado", "Turned off maintenance mode" : "Modo mantenimiento desactivado", "Maintenance mode is kept active" : "El modo mantenimiento sigue activo", @@ -221,6 +220,7 @@ OC.L10N.register( "Detailed logs" : "Bitácoras detalladas", "Update needed" : "Se requiere de una actualización", "Please use the command line updater because you have a big instance with more than 50 users." : "Favor de usar el actualizador desde la línea de comandos ya que tu instancia cuenta con más de 50 usuarios.", + "Please use the command line updater because automatic updating is disabled in the config.php." : "Por favor usa el actualizador de línea de comandos ya que el actualizador automático se encuentra deshabilitado en config.php.", "For help, see the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentation</a>." : "Para más ayuda, por favor consulta la <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentación</a>.", "I know that if I continue doing the update via web UI has the risk, that the request runs into a timeout and could cause data loss, but I have a backup and know how to restore my instance in case of a failure." : "Estoy conciente de que si continúo haciendo la actualización vía web, la interfaz de usuario corre el riesgo de que el tiempo de la solicitud expire y cause pérdida de datos, pero cuento con un respaldo y sé como restaurar mi instancia en caso de una falla. ", "Upgrade via web on my own risk" : "Actualizar vía Web bajo mi propio riesgo", diff --git a/core/l10n/es_EC.json b/core/l10n/es_EC.json index b9a66f72c3c..b40f96429d1 100644 --- a/core/l10n/es_EC.json +++ b/core/l10n/es_EC.json @@ -30,7 +30,6 @@ "Reset your password" : "Restablecer tu contraseña", "Preparing update" : "Preparando actualización", "[%d / %d]: %s" : "[%d / %d]: %s ", - "Please use the command line updater because automatic updating is disabled in the config.php." : "Por favor usa el actualizador de línea de comandos ya que el actualizador automático se encuentra deshabilitado en config.php.", "Turned on maintenance mode" : "Modo mantenimiento activado", "Turned off maintenance mode" : "Modo mantenimiento desactivado", "Maintenance mode is kept active" : "El modo mantenimiento sigue activo", @@ -219,6 +218,7 @@ "Detailed logs" : "Bitácoras detalladas", "Update needed" : "Se requiere de una actualización", "Please use the command line updater because you have a big instance with more than 50 users." : "Favor de usar el actualizador desde la línea de comandos ya que tu instancia cuenta con más de 50 usuarios.", + "Please use the command line updater because automatic updating is disabled in the config.php." : "Por favor usa el actualizador de línea de comandos ya que el actualizador automático se encuentra deshabilitado en config.php.", "For help, see the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentation</a>." : "Para más ayuda, por favor consulta la <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentación</a>.", "I know that if I continue doing the update via web UI has the risk, that the request runs into a timeout and could cause data loss, but I have a backup and know how to restore my instance in case of a failure." : "Estoy conciente de que si continúo haciendo la actualización vía web, la interfaz de usuario corre el riesgo de que el tiempo de la solicitud expire y cause pérdida de datos, pero cuento con un respaldo y sé como restaurar mi instancia en caso de una falla. ", "Upgrade via web on my own risk" : "Actualizar vía Web bajo mi propio riesgo", diff --git a/core/l10n/es_GT.js b/core/l10n/es_GT.js index 6f134ec50ac..791eab7e085 100644 --- a/core/l10n/es_GT.js +++ b/core/l10n/es_GT.js @@ -32,7 +32,6 @@ OC.L10N.register( "Reset your password" : "Restablecer tu contraseña", "Preparing update" : "Preparando actualización", "[%d / %d]: %s" : "[%d / %d]: %s ", - "Please use the command line updater because automatic updating is disabled in the config.php." : "Por favor usa el actualizador de línea de comandos ya que el actualizador automático se encuentra deshabilitado en config.php.", "Turned on maintenance mode" : "Modo mantenimiento activado", "Turned off maintenance mode" : "Modo mantenimiento desactivado", "Maintenance mode is kept active" : "El modo mantenimiento sigue activo", @@ -222,6 +221,7 @@ OC.L10N.register( "Detailed logs" : "Bitácoras detalladas", "Update needed" : "Se requiere de una actualización", "Please use the command line updater because you have a big instance with more than 50 users." : "Favor de usar el actualizador desde la línea de comandos ya que tu instancia cuenta con más de 50 usuarios.", + "Please use the command line updater because automatic updating is disabled in the config.php." : "Por favor usa el actualizador de línea de comandos ya que el actualizador automático se encuentra deshabilitado en config.php.", "For help, see the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentation</a>." : "Para más ayuda, por favor consulta la <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentación</a>.", "I know that if I continue doing the update via web UI has the risk, that the request runs into a timeout and could cause data loss, but I have a backup and know how to restore my instance in case of a failure." : "Estoy conciente de que si continúo haciendo la actualización vía web, la interfaz de usuario corre el riesgo de que el tiempo de la solicitud expire y cause pérdida de datos, pero cuento con un respaldo y sé como restaurar mi instancia en caso de una falla. ", "Upgrade via web on my own risk" : "Actualizar vía Web bajo mi propio riesgo", diff --git a/core/l10n/es_GT.json b/core/l10n/es_GT.json index bb5cce010ac..c0deb858c23 100644 --- a/core/l10n/es_GT.json +++ b/core/l10n/es_GT.json @@ -30,7 +30,6 @@ "Reset your password" : "Restablecer tu contraseña", "Preparing update" : "Preparando actualización", "[%d / %d]: %s" : "[%d / %d]: %s ", - "Please use the command line updater because automatic updating is disabled in the config.php." : "Por favor usa el actualizador de línea de comandos ya que el actualizador automático se encuentra deshabilitado en config.php.", "Turned on maintenance mode" : "Modo mantenimiento activado", "Turned off maintenance mode" : "Modo mantenimiento desactivado", "Maintenance mode is kept active" : "El modo mantenimiento sigue activo", @@ -220,6 +219,7 @@ "Detailed logs" : "Bitácoras detalladas", "Update needed" : "Se requiere de una actualización", "Please use the command line updater because you have a big instance with more than 50 users." : "Favor de usar el actualizador desde la línea de comandos ya que tu instancia cuenta con más de 50 usuarios.", + "Please use the command line updater because automatic updating is disabled in the config.php." : "Por favor usa el actualizador de línea de comandos ya que el actualizador automático se encuentra deshabilitado en config.php.", "For help, see the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentation</a>." : "Para más ayuda, por favor consulta la <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentación</a>.", "I know that if I continue doing the update via web UI has the risk, that the request runs into a timeout and could cause data loss, but I have a backup and know how to restore my instance in case of a failure." : "Estoy conciente de que si continúo haciendo la actualización vía web, la interfaz de usuario corre el riesgo de que el tiempo de la solicitud expire y cause pérdida de datos, pero cuento con un respaldo y sé como restaurar mi instancia en caso de una falla. ", "Upgrade via web on my own risk" : "Actualizar vía Web bajo mi propio riesgo", diff --git a/core/l10n/es_HN.js b/core/l10n/es_HN.js index ab6a00fc60f..f1e6cdf1e52 100644 --- a/core/l10n/es_HN.js +++ b/core/l10n/es_HN.js @@ -28,7 +28,6 @@ OC.L10N.register( "Reset your password" : "Restablecer tu contraseña", "Preparing update" : "Preparando actualización", "[%d / %d]: %s" : "[%d / %d]: %s ", - "Please use the command line updater because automatic updating is disabled in the config.php." : "Por favor usa el actualizador de línea de comandos ya que el actualizador automático se encuentra deshabilitado en config.php.", "Turned on maintenance mode" : "Modo mantenimiento activado", "Turned off maintenance mode" : "Modo mantenimiento desactivado", "Maintenance mode is kept active" : "El modo mantenimiento sigue activo", @@ -209,6 +208,7 @@ OC.L10N.register( "Detailed logs" : "Bitácoras detalladas", "Update needed" : "Se requiere de una actualización", "Please use the command line updater because you have a big instance with more than 50 users." : "Favor de usar el actualizador desde la línea de comandos ya que tu instancia cuenta con más de 50 usuarios.", + "Please use the command line updater because automatic updating is disabled in the config.php." : "Por favor usa el actualizador de línea de comandos ya que el actualizador automático se encuentra deshabilitado en config.php.", "For help, see the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentation</a>." : "Para más ayuda, por favor consulta la <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentación</a>.", "I know that if I continue doing the update via web UI has the risk, that the request runs into a timeout and could cause data loss, but I have a backup and know how to restore my instance in case of a failure." : "Estoy conciente de que si continúo haciendo la actualización vía web, la interfaz de usuario corre el riesgo de que el tiempo de la solicitud expire y cause pérdida de datos, pero cuento con un respaldo y sé como restaurar mi instancia en caso de una falla. ", "Upgrade via web on my own risk" : "Actualizar vía Web bajo mi propio riesgo", diff --git a/core/l10n/es_HN.json b/core/l10n/es_HN.json index 4e5219e88ed..4902372bde9 100644 --- a/core/l10n/es_HN.json +++ b/core/l10n/es_HN.json @@ -26,7 +26,6 @@ "Reset your password" : "Restablecer tu contraseña", "Preparing update" : "Preparando actualización", "[%d / %d]: %s" : "[%d / %d]: %s ", - "Please use the command line updater because automatic updating is disabled in the config.php." : "Por favor usa el actualizador de línea de comandos ya que el actualizador automático se encuentra deshabilitado en config.php.", "Turned on maintenance mode" : "Modo mantenimiento activado", "Turned off maintenance mode" : "Modo mantenimiento desactivado", "Maintenance mode is kept active" : "El modo mantenimiento sigue activo", @@ -207,6 +206,7 @@ "Detailed logs" : "Bitácoras detalladas", "Update needed" : "Se requiere de una actualización", "Please use the command line updater because you have a big instance with more than 50 users." : "Favor de usar el actualizador desde la línea de comandos ya que tu instancia cuenta con más de 50 usuarios.", + "Please use the command line updater because automatic updating is disabled in the config.php." : "Por favor usa el actualizador de línea de comandos ya que el actualizador automático se encuentra deshabilitado en config.php.", "For help, see the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentation</a>." : "Para más ayuda, por favor consulta la <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentación</a>.", "I know that if I continue doing the update via web UI has the risk, that the request runs into a timeout and could cause data loss, but I have a backup and know how to restore my instance in case of a failure." : "Estoy conciente de que si continúo haciendo la actualización vía web, la interfaz de usuario corre el riesgo de que el tiempo de la solicitud expire y cause pérdida de datos, pero cuento con un respaldo y sé como restaurar mi instancia en caso de una falla. ", "Upgrade via web on my own risk" : "Actualizar vía Web bajo mi propio riesgo", diff --git a/core/l10n/es_MX.js b/core/l10n/es_MX.js index 6552857a60f..c6c54ee774d 100644 --- a/core/l10n/es_MX.js +++ b/core/l10n/es_MX.js @@ -45,7 +45,6 @@ OC.L10N.register( "Repair info:" : "Información de reparación:", "Repair warning:" : "Advertencia de reparación:", "Repair error:" : "Error de reparación: ", - "Please use the command line updater because automatic updating is disabled in the config.php." : "Por favor usa el actualizador de línea de comandos ya que el actualizador automático se encuentra deshabilitado en config.php.", "Turned on maintenance mode" : "Modo mantenimiento activado", "Turned off maintenance mode" : "Modo mantenimiento desactivado", "Maintenance mode is kept active" : "El modo mantenimiento sigue activo", @@ -274,6 +273,7 @@ OC.L10N.register( "Detailed logs" : "Bitácoras detalladas", "Update needed" : "Se requiere de una actualización", "Please use the command line updater because you have a big instance with more than 50 users." : "Favor de usar el actualizador desde la línea de comandos ya que tu instancia cuenta con más de 50 usuarios.", + "Please use the command line updater because automatic updating is disabled in the config.php." : "Por favor usa el actualizador de línea de comandos ya que el actualizador automático se encuentra deshabilitado en config.php.", "For help, see the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentation</a>." : "Para más ayuda, por favor consulta la <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentación</a>.", "I know that if I continue doing the update via web UI has the risk, that the request runs into a timeout and could cause data loss, but I have a backup and know how to restore my instance in case of a failure." : "Estoy conciente de que si continúo haciendo la actualización vía web, la interfaz de usuario corre el riesgo de que el tiempo de la solicitud expire y cause pérdida de datos, pero cuento con un respaldo y sé como restaurar mi instancia en caso de una falla. ", "Upgrade via web on my own risk" : "Actualizar vía Web bajo mi propio riesgo", diff --git a/core/l10n/es_MX.json b/core/l10n/es_MX.json index 108562b797d..9be094ce10d 100644 --- a/core/l10n/es_MX.json +++ b/core/l10n/es_MX.json @@ -43,7 +43,6 @@ "Repair info:" : "Información de reparación:", "Repair warning:" : "Advertencia de reparación:", "Repair error:" : "Error de reparación: ", - "Please use the command line updater because automatic updating is disabled in the config.php." : "Por favor usa el actualizador de línea de comandos ya que el actualizador automático se encuentra deshabilitado en config.php.", "Turned on maintenance mode" : "Modo mantenimiento activado", "Turned off maintenance mode" : "Modo mantenimiento desactivado", "Maintenance mode is kept active" : "El modo mantenimiento sigue activo", @@ -272,6 +271,7 @@ "Detailed logs" : "Bitácoras detalladas", "Update needed" : "Se requiere de una actualización", "Please use the command line updater because you have a big instance with more than 50 users." : "Favor de usar el actualizador desde la línea de comandos ya que tu instancia cuenta con más de 50 usuarios.", + "Please use the command line updater because automatic updating is disabled in the config.php." : "Por favor usa el actualizador de línea de comandos ya que el actualizador automático se encuentra deshabilitado en config.php.", "For help, see the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentation</a>." : "Para más ayuda, por favor consulta la <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentación</a>.", "I know that if I continue doing the update via web UI has the risk, that the request runs into a timeout and could cause data loss, but I have a backup and know how to restore my instance in case of a failure." : "Estoy conciente de que si continúo haciendo la actualización vía web, la interfaz de usuario corre el riesgo de que el tiempo de la solicitud expire y cause pérdida de datos, pero cuento con un respaldo y sé como restaurar mi instancia en caso de una falla. ", "Upgrade via web on my own risk" : "Actualizar vía Web bajo mi propio riesgo", diff --git a/core/l10n/es_NI.js b/core/l10n/es_NI.js index ab6a00fc60f..f1e6cdf1e52 100644 --- a/core/l10n/es_NI.js +++ b/core/l10n/es_NI.js @@ -28,7 +28,6 @@ OC.L10N.register( "Reset your password" : "Restablecer tu contraseña", "Preparing update" : "Preparando actualización", "[%d / %d]: %s" : "[%d / %d]: %s ", - "Please use the command line updater because automatic updating is disabled in the config.php." : "Por favor usa el actualizador de línea de comandos ya que el actualizador automático se encuentra deshabilitado en config.php.", "Turned on maintenance mode" : "Modo mantenimiento activado", "Turned off maintenance mode" : "Modo mantenimiento desactivado", "Maintenance mode is kept active" : "El modo mantenimiento sigue activo", @@ -209,6 +208,7 @@ OC.L10N.register( "Detailed logs" : "Bitácoras detalladas", "Update needed" : "Se requiere de una actualización", "Please use the command line updater because you have a big instance with more than 50 users." : "Favor de usar el actualizador desde la línea de comandos ya que tu instancia cuenta con más de 50 usuarios.", + "Please use the command line updater because automatic updating is disabled in the config.php." : "Por favor usa el actualizador de línea de comandos ya que el actualizador automático se encuentra deshabilitado en config.php.", "For help, see the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentation</a>." : "Para más ayuda, por favor consulta la <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentación</a>.", "I know that if I continue doing the update via web UI has the risk, that the request runs into a timeout and could cause data loss, but I have a backup and know how to restore my instance in case of a failure." : "Estoy conciente de que si continúo haciendo la actualización vía web, la interfaz de usuario corre el riesgo de que el tiempo de la solicitud expire y cause pérdida de datos, pero cuento con un respaldo y sé como restaurar mi instancia en caso de una falla. ", "Upgrade via web on my own risk" : "Actualizar vía Web bajo mi propio riesgo", diff --git a/core/l10n/es_NI.json b/core/l10n/es_NI.json index 4e5219e88ed..4902372bde9 100644 --- a/core/l10n/es_NI.json +++ b/core/l10n/es_NI.json @@ -26,7 +26,6 @@ "Reset your password" : "Restablecer tu contraseña", "Preparing update" : "Preparando actualización", "[%d / %d]: %s" : "[%d / %d]: %s ", - "Please use the command line updater because automatic updating is disabled in the config.php." : "Por favor usa el actualizador de línea de comandos ya que el actualizador automático se encuentra deshabilitado en config.php.", "Turned on maintenance mode" : "Modo mantenimiento activado", "Turned off maintenance mode" : "Modo mantenimiento desactivado", "Maintenance mode is kept active" : "El modo mantenimiento sigue activo", @@ -207,6 +206,7 @@ "Detailed logs" : "Bitácoras detalladas", "Update needed" : "Se requiere de una actualización", "Please use the command line updater because you have a big instance with more than 50 users." : "Favor de usar el actualizador desde la línea de comandos ya que tu instancia cuenta con más de 50 usuarios.", + "Please use the command line updater because automatic updating is disabled in the config.php." : "Por favor usa el actualizador de línea de comandos ya que el actualizador automático se encuentra deshabilitado en config.php.", "For help, see the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentation</a>." : "Para más ayuda, por favor consulta la <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentación</a>.", "I know that if I continue doing the update via web UI has the risk, that the request runs into a timeout and could cause data loss, but I have a backup and know how to restore my instance in case of a failure." : "Estoy conciente de que si continúo haciendo la actualización vía web, la interfaz de usuario corre el riesgo de que el tiempo de la solicitud expire y cause pérdida de datos, pero cuento con un respaldo y sé como restaurar mi instancia en caso de una falla. ", "Upgrade via web on my own risk" : "Actualizar vía Web bajo mi propio riesgo", diff --git a/core/l10n/es_PA.js b/core/l10n/es_PA.js index ab6a00fc60f..f1e6cdf1e52 100644 --- a/core/l10n/es_PA.js +++ b/core/l10n/es_PA.js @@ -28,7 +28,6 @@ OC.L10N.register( "Reset your password" : "Restablecer tu contraseña", "Preparing update" : "Preparando actualización", "[%d / %d]: %s" : "[%d / %d]: %s ", - "Please use the command line updater because automatic updating is disabled in the config.php." : "Por favor usa el actualizador de línea de comandos ya que el actualizador automático se encuentra deshabilitado en config.php.", "Turned on maintenance mode" : "Modo mantenimiento activado", "Turned off maintenance mode" : "Modo mantenimiento desactivado", "Maintenance mode is kept active" : "El modo mantenimiento sigue activo", @@ -209,6 +208,7 @@ OC.L10N.register( "Detailed logs" : "Bitácoras detalladas", "Update needed" : "Se requiere de una actualización", "Please use the command line updater because you have a big instance with more than 50 users." : "Favor de usar el actualizador desde la línea de comandos ya que tu instancia cuenta con más de 50 usuarios.", + "Please use the command line updater because automatic updating is disabled in the config.php." : "Por favor usa el actualizador de línea de comandos ya que el actualizador automático se encuentra deshabilitado en config.php.", "For help, see the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentation</a>." : "Para más ayuda, por favor consulta la <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentación</a>.", "I know that if I continue doing the update via web UI has the risk, that the request runs into a timeout and could cause data loss, but I have a backup and know how to restore my instance in case of a failure." : "Estoy conciente de que si continúo haciendo la actualización vía web, la interfaz de usuario corre el riesgo de que el tiempo de la solicitud expire y cause pérdida de datos, pero cuento con un respaldo y sé como restaurar mi instancia en caso de una falla. ", "Upgrade via web on my own risk" : "Actualizar vía Web bajo mi propio riesgo", diff --git a/core/l10n/es_PA.json b/core/l10n/es_PA.json index 4e5219e88ed..4902372bde9 100644 --- a/core/l10n/es_PA.json +++ b/core/l10n/es_PA.json @@ -26,7 +26,6 @@ "Reset your password" : "Restablecer tu contraseña", "Preparing update" : "Preparando actualización", "[%d / %d]: %s" : "[%d / %d]: %s ", - "Please use the command line updater because automatic updating is disabled in the config.php." : "Por favor usa el actualizador de línea de comandos ya que el actualizador automático se encuentra deshabilitado en config.php.", "Turned on maintenance mode" : "Modo mantenimiento activado", "Turned off maintenance mode" : "Modo mantenimiento desactivado", "Maintenance mode is kept active" : "El modo mantenimiento sigue activo", @@ -207,6 +206,7 @@ "Detailed logs" : "Bitácoras detalladas", "Update needed" : "Se requiere de una actualización", "Please use the command line updater because you have a big instance with more than 50 users." : "Favor de usar el actualizador desde la línea de comandos ya que tu instancia cuenta con más de 50 usuarios.", + "Please use the command line updater because automatic updating is disabled in the config.php." : "Por favor usa el actualizador de línea de comandos ya que el actualizador automático se encuentra deshabilitado en config.php.", "For help, see the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentation</a>." : "Para más ayuda, por favor consulta la <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentación</a>.", "I know that if I continue doing the update via web UI has the risk, that the request runs into a timeout and could cause data loss, but I have a backup and know how to restore my instance in case of a failure." : "Estoy conciente de que si continúo haciendo la actualización vía web, la interfaz de usuario corre el riesgo de que el tiempo de la solicitud expire y cause pérdida de datos, pero cuento con un respaldo y sé como restaurar mi instancia en caso de una falla. ", "Upgrade via web on my own risk" : "Actualizar vía Web bajo mi propio riesgo", diff --git a/core/l10n/es_PE.js b/core/l10n/es_PE.js index 938d7f31af0..4e82d37e5fa 100644 --- a/core/l10n/es_PE.js +++ b/core/l10n/es_PE.js @@ -28,7 +28,6 @@ OC.L10N.register( "Reset your password" : "Restablecer tu contraseña", "Preparing update" : "Preparando actualización", "[%d / %d]: %s" : "[%d / %d]: %s ", - "Please use the command line updater because automatic updating is disabled in the config.php." : "Por favor usa el actualizador de línea de comandos ya que el actualizador automático se encuentra deshabilitado en config.php.", "Turned on maintenance mode" : "Modo mantenimiento activado", "Turned off maintenance mode" : "Modo mantenimiento desactivado", "Maintenance mode is kept active" : "El modo mantenimiento sigue activo", @@ -212,6 +211,7 @@ OC.L10N.register( "Detailed logs" : "Bitácoras detalladas", "Update needed" : "Se requiere de una actualización", "Please use the command line updater because you have a big instance with more than 50 users." : "Favor de usar el actualizador desde la línea de comandos ya que tu instancia cuenta con más de 50 usuarios.", + "Please use the command line updater because automatic updating is disabled in the config.php." : "Por favor usa el actualizador de línea de comandos ya que el actualizador automático se encuentra deshabilitado en config.php.", "For help, see the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentation</a>." : "Para más ayuda, por favor consulta la <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentación</a>.", "I know that if I continue doing the update via web UI has the risk, that the request runs into a timeout and could cause data loss, but I have a backup and know how to restore my instance in case of a failure." : "Estoy conciente de que si continúo haciendo la actualización vía web, la interfaz de usuario corre el riesgo de que el tiempo de la solicitud expire y cause pérdida de datos, pero cuento con un respaldo y sé como restaurar mi instancia en caso de una falla. ", "Upgrade via web on my own risk" : "Actualizar vía Web bajo mi propio riesgo", diff --git a/core/l10n/es_PE.json b/core/l10n/es_PE.json index 5303cd68b07..98814474161 100644 --- a/core/l10n/es_PE.json +++ b/core/l10n/es_PE.json @@ -26,7 +26,6 @@ "Reset your password" : "Restablecer tu contraseña", "Preparing update" : "Preparando actualización", "[%d / %d]: %s" : "[%d / %d]: %s ", - "Please use the command line updater because automatic updating is disabled in the config.php." : "Por favor usa el actualizador de línea de comandos ya que el actualizador automático se encuentra deshabilitado en config.php.", "Turned on maintenance mode" : "Modo mantenimiento activado", "Turned off maintenance mode" : "Modo mantenimiento desactivado", "Maintenance mode is kept active" : "El modo mantenimiento sigue activo", @@ -210,6 +209,7 @@ "Detailed logs" : "Bitácoras detalladas", "Update needed" : "Se requiere de una actualización", "Please use the command line updater because you have a big instance with more than 50 users." : "Favor de usar el actualizador desde la línea de comandos ya que tu instancia cuenta con más de 50 usuarios.", + "Please use the command line updater because automatic updating is disabled in the config.php." : "Por favor usa el actualizador de línea de comandos ya que el actualizador automático se encuentra deshabilitado en config.php.", "For help, see the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentation</a>." : "Para más ayuda, por favor consulta la <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentación</a>.", "I know that if I continue doing the update via web UI has the risk, that the request runs into a timeout and could cause data loss, but I have a backup and know how to restore my instance in case of a failure." : "Estoy conciente de que si continúo haciendo la actualización vía web, la interfaz de usuario corre el riesgo de que el tiempo de la solicitud expire y cause pérdida de datos, pero cuento con un respaldo y sé como restaurar mi instancia en caso de una falla. ", "Upgrade via web on my own risk" : "Actualizar vía Web bajo mi propio riesgo", diff --git a/core/l10n/es_PR.js b/core/l10n/es_PR.js index ab6a00fc60f..f1e6cdf1e52 100644 --- a/core/l10n/es_PR.js +++ b/core/l10n/es_PR.js @@ -28,7 +28,6 @@ OC.L10N.register( "Reset your password" : "Restablecer tu contraseña", "Preparing update" : "Preparando actualización", "[%d / %d]: %s" : "[%d / %d]: %s ", - "Please use the command line updater because automatic updating is disabled in the config.php." : "Por favor usa el actualizador de línea de comandos ya que el actualizador automático se encuentra deshabilitado en config.php.", "Turned on maintenance mode" : "Modo mantenimiento activado", "Turned off maintenance mode" : "Modo mantenimiento desactivado", "Maintenance mode is kept active" : "El modo mantenimiento sigue activo", @@ -209,6 +208,7 @@ OC.L10N.register( "Detailed logs" : "Bitácoras detalladas", "Update needed" : "Se requiere de una actualización", "Please use the command line updater because you have a big instance with more than 50 users." : "Favor de usar el actualizador desde la línea de comandos ya que tu instancia cuenta con más de 50 usuarios.", + "Please use the command line updater because automatic updating is disabled in the config.php." : "Por favor usa el actualizador de línea de comandos ya que el actualizador automático se encuentra deshabilitado en config.php.", "For help, see the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentation</a>." : "Para más ayuda, por favor consulta la <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentación</a>.", "I know that if I continue doing the update via web UI has the risk, that the request runs into a timeout and could cause data loss, but I have a backup and know how to restore my instance in case of a failure." : "Estoy conciente de que si continúo haciendo la actualización vía web, la interfaz de usuario corre el riesgo de que el tiempo de la solicitud expire y cause pérdida de datos, pero cuento con un respaldo y sé como restaurar mi instancia en caso de una falla. ", "Upgrade via web on my own risk" : "Actualizar vía Web bajo mi propio riesgo", diff --git a/core/l10n/es_PR.json b/core/l10n/es_PR.json index 4e5219e88ed..4902372bde9 100644 --- a/core/l10n/es_PR.json +++ b/core/l10n/es_PR.json @@ -26,7 +26,6 @@ "Reset your password" : "Restablecer tu contraseña", "Preparing update" : "Preparando actualización", "[%d / %d]: %s" : "[%d / %d]: %s ", - "Please use the command line updater because automatic updating is disabled in the config.php." : "Por favor usa el actualizador de línea de comandos ya que el actualizador automático se encuentra deshabilitado en config.php.", "Turned on maintenance mode" : "Modo mantenimiento activado", "Turned off maintenance mode" : "Modo mantenimiento desactivado", "Maintenance mode is kept active" : "El modo mantenimiento sigue activo", @@ -207,6 +206,7 @@ "Detailed logs" : "Bitácoras detalladas", "Update needed" : "Se requiere de una actualización", "Please use the command line updater because you have a big instance with more than 50 users." : "Favor de usar el actualizador desde la línea de comandos ya que tu instancia cuenta con más de 50 usuarios.", + "Please use the command line updater because automatic updating is disabled in the config.php." : "Por favor usa el actualizador de línea de comandos ya que el actualizador automático se encuentra deshabilitado en config.php.", "For help, see the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentation</a>." : "Para más ayuda, por favor consulta la <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentación</a>.", "I know that if I continue doing the update via web UI has the risk, that the request runs into a timeout and could cause data loss, but I have a backup and know how to restore my instance in case of a failure." : "Estoy conciente de que si continúo haciendo la actualización vía web, la interfaz de usuario corre el riesgo de que el tiempo de la solicitud expire y cause pérdida de datos, pero cuento con un respaldo y sé como restaurar mi instancia en caso de una falla. ", "Upgrade via web on my own risk" : "Actualizar vía Web bajo mi propio riesgo", diff --git a/core/l10n/es_PY.js b/core/l10n/es_PY.js index 9454b9411b0..5a80c3480bf 100644 --- a/core/l10n/es_PY.js +++ b/core/l10n/es_PY.js @@ -28,7 +28,6 @@ OC.L10N.register( "Reset your password" : "Restablecer tu contraseña", "Preparing update" : "Preparando actualización", "[%d / %d]: %s" : "[%d / %d]: %s ", - "Please use the command line updater because automatic updating is disabled in the config.php." : "Por favor usa el actualizador de línea de comandos ya que el actualizador automático se encuentra deshabilitado en config.php.", "Turned on maintenance mode" : "Modo mantenimiento activado", "Turned off maintenance mode" : "Modo mantenimiento desactivado", "Maintenance mode is kept active" : "El modo mantenimiento sigue activo", @@ -210,6 +209,7 @@ OC.L10N.register( "Detailed logs" : "Bitácoras detalladas", "Update needed" : "Se requiere de una actualización", "Please use the command line updater because you have a big instance with more than 50 users." : "Favor de usar el actualizador desde la línea de comandos ya que tu instancia cuenta con más de 50 usuarios.", + "Please use the command line updater because automatic updating is disabled in the config.php." : "Por favor usa el actualizador de línea de comandos ya que el actualizador automático se encuentra deshabilitado en config.php.", "For help, see the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentation</a>." : "Para más ayuda, por favor consulta la <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentación</a>.", "I know that if I continue doing the update via web UI has the risk, that the request runs into a timeout and could cause data loss, but I have a backup and know how to restore my instance in case of a failure." : "Estoy conciente de que si continúo haciendo la actualización vía web, la interfaz de usuario corre el riesgo de que el tiempo de la solicitud expire y cause pérdida de datos, pero cuento con un respaldo y sé como restaurar mi instancia en caso de una falla. ", "Upgrade via web on my own risk" : "Actualizar vía Web bajo mi propio riesgo", diff --git a/core/l10n/es_PY.json b/core/l10n/es_PY.json index dea07a5fd47..2ec0601272f 100644 --- a/core/l10n/es_PY.json +++ b/core/l10n/es_PY.json @@ -26,7 +26,6 @@ "Reset your password" : "Restablecer tu contraseña", "Preparing update" : "Preparando actualización", "[%d / %d]: %s" : "[%d / %d]: %s ", - "Please use the command line updater because automatic updating is disabled in the config.php." : "Por favor usa el actualizador de línea de comandos ya que el actualizador automático se encuentra deshabilitado en config.php.", "Turned on maintenance mode" : "Modo mantenimiento activado", "Turned off maintenance mode" : "Modo mantenimiento desactivado", "Maintenance mode is kept active" : "El modo mantenimiento sigue activo", @@ -208,6 +207,7 @@ "Detailed logs" : "Bitácoras detalladas", "Update needed" : "Se requiere de una actualización", "Please use the command line updater because you have a big instance with more than 50 users." : "Favor de usar el actualizador desde la línea de comandos ya que tu instancia cuenta con más de 50 usuarios.", + "Please use the command line updater because automatic updating is disabled in the config.php." : "Por favor usa el actualizador de línea de comandos ya que el actualizador automático se encuentra deshabilitado en config.php.", "For help, see the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentation</a>." : "Para más ayuda, por favor consulta la <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentación</a>.", "I know that if I continue doing the update via web UI has the risk, that the request runs into a timeout and could cause data loss, but I have a backup and know how to restore my instance in case of a failure." : "Estoy conciente de que si continúo haciendo la actualización vía web, la interfaz de usuario corre el riesgo de que el tiempo de la solicitud expire y cause pérdida de datos, pero cuento con un respaldo y sé como restaurar mi instancia en caso de una falla. ", "Upgrade via web on my own risk" : "Actualizar vía Web bajo mi propio riesgo", diff --git a/core/l10n/es_SV.js b/core/l10n/es_SV.js index ec75f0a59a7..e16cf20ee15 100644 --- a/core/l10n/es_SV.js +++ b/core/l10n/es_SV.js @@ -32,7 +32,6 @@ OC.L10N.register( "Reset your password" : "Restablecer tu contraseña", "Preparing update" : "Preparando actualización", "[%d / %d]: %s" : "[%d / %d]: %s ", - "Please use the command line updater because automatic updating is disabled in the config.php." : "Por favor usa el actualizador de línea de comandos ya que el actualizador automático se encuentra deshabilitado en config.php.", "Turned on maintenance mode" : "Modo mantenimiento activado", "Turned off maintenance mode" : "Modo mantenimiento desactivado", "Maintenance mode is kept active" : "El modo mantenimiento sigue activo", @@ -221,6 +220,7 @@ OC.L10N.register( "Detailed logs" : "Bitácoras detalladas", "Update needed" : "Se requiere de una actualización", "Please use the command line updater because you have a big instance with more than 50 users." : "Favor de usar el actualizador desde la línea de comandos ya que tu instancia cuenta con más de 50 usuarios.", + "Please use the command line updater because automatic updating is disabled in the config.php." : "Por favor usa el actualizador de línea de comandos ya que el actualizador automático se encuentra deshabilitado en config.php.", "For help, see the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentation</a>." : "Para más ayuda, por favor consulta la <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentación</a>.", "I know that if I continue doing the update via web UI has the risk, that the request runs into a timeout and could cause data loss, but I have a backup and know how to restore my instance in case of a failure." : "Estoy conciente de que si continúo haciendo la actualización vía web, la interfaz de usuario corre el riesgo de que el tiempo de la solicitud expire y cause pérdida de datos, pero cuento con un respaldo y sé como restaurar mi instancia en caso de una falla. ", "Upgrade via web on my own risk" : "Actualizar vía Web bajo mi propio riesgo", diff --git a/core/l10n/es_SV.json b/core/l10n/es_SV.json index b9a66f72c3c..b40f96429d1 100644 --- a/core/l10n/es_SV.json +++ b/core/l10n/es_SV.json @@ -30,7 +30,6 @@ "Reset your password" : "Restablecer tu contraseña", "Preparing update" : "Preparando actualización", "[%d / %d]: %s" : "[%d / %d]: %s ", - "Please use the command line updater because automatic updating is disabled in the config.php." : "Por favor usa el actualizador de línea de comandos ya que el actualizador automático se encuentra deshabilitado en config.php.", "Turned on maintenance mode" : "Modo mantenimiento activado", "Turned off maintenance mode" : "Modo mantenimiento desactivado", "Maintenance mode is kept active" : "El modo mantenimiento sigue activo", @@ -219,6 +218,7 @@ "Detailed logs" : "Bitácoras detalladas", "Update needed" : "Se requiere de una actualización", "Please use the command line updater because you have a big instance with more than 50 users." : "Favor de usar el actualizador desde la línea de comandos ya que tu instancia cuenta con más de 50 usuarios.", + "Please use the command line updater because automatic updating is disabled in the config.php." : "Por favor usa el actualizador de línea de comandos ya que el actualizador automático se encuentra deshabilitado en config.php.", "For help, see the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentation</a>." : "Para más ayuda, por favor consulta la <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentación</a>.", "I know that if I continue doing the update via web UI has the risk, that the request runs into a timeout and could cause data loss, but I have a backup and know how to restore my instance in case of a failure." : "Estoy conciente de que si continúo haciendo la actualización vía web, la interfaz de usuario corre el riesgo de que el tiempo de la solicitud expire y cause pérdida de datos, pero cuento con un respaldo y sé como restaurar mi instancia en caso de una falla. ", "Upgrade via web on my own risk" : "Actualizar vía Web bajo mi propio riesgo", diff --git a/core/l10n/es_UY.js b/core/l10n/es_UY.js index ab6a00fc60f..f1e6cdf1e52 100644 --- a/core/l10n/es_UY.js +++ b/core/l10n/es_UY.js @@ -28,7 +28,6 @@ OC.L10N.register( "Reset your password" : "Restablecer tu contraseña", "Preparing update" : "Preparando actualización", "[%d / %d]: %s" : "[%d / %d]: %s ", - "Please use the command line updater because automatic updating is disabled in the config.php." : "Por favor usa el actualizador de línea de comandos ya que el actualizador automático se encuentra deshabilitado en config.php.", "Turned on maintenance mode" : "Modo mantenimiento activado", "Turned off maintenance mode" : "Modo mantenimiento desactivado", "Maintenance mode is kept active" : "El modo mantenimiento sigue activo", @@ -209,6 +208,7 @@ OC.L10N.register( "Detailed logs" : "Bitácoras detalladas", "Update needed" : "Se requiere de una actualización", "Please use the command line updater because you have a big instance with more than 50 users." : "Favor de usar el actualizador desde la línea de comandos ya que tu instancia cuenta con más de 50 usuarios.", + "Please use the command line updater because automatic updating is disabled in the config.php." : "Por favor usa el actualizador de línea de comandos ya que el actualizador automático se encuentra deshabilitado en config.php.", "For help, see the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentation</a>." : "Para más ayuda, por favor consulta la <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentación</a>.", "I know that if I continue doing the update via web UI has the risk, that the request runs into a timeout and could cause data loss, but I have a backup and know how to restore my instance in case of a failure." : "Estoy conciente de que si continúo haciendo la actualización vía web, la interfaz de usuario corre el riesgo de que el tiempo de la solicitud expire y cause pérdida de datos, pero cuento con un respaldo y sé como restaurar mi instancia en caso de una falla. ", "Upgrade via web on my own risk" : "Actualizar vía Web bajo mi propio riesgo", diff --git a/core/l10n/es_UY.json b/core/l10n/es_UY.json index 4e5219e88ed..4902372bde9 100644 --- a/core/l10n/es_UY.json +++ b/core/l10n/es_UY.json @@ -26,7 +26,6 @@ "Reset your password" : "Restablecer tu contraseña", "Preparing update" : "Preparando actualización", "[%d / %d]: %s" : "[%d / %d]: %s ", - "Please use the command line updater because automatic updating is disabled in the config.php." : "Por favor usa el actualizador de línea de comandos ya que el actualizador automático se encuentra deshabilitado en config.php.", "Turned on maintenance mode" : "Modo mantenimiento activado", "Turned off maintenance mode" : "Modo mantenimiento desactivado", "Maintenance mode is kept active" : "El modo mantenimiento sigue activo", @@ -207,6 +206,7 @@ "Detailed logs" : "Bitácoras detalladas", "Update needed" : "Se requiere de una actualización", "Please use the command line updater because you have a big instance with more than 50 users." : "Favor de usar el actualizador desde la línea de comandos ya que tu instancia cuenta con más de 50 usuarios.", + "Please use the command line updater because automatic updating is disabled in the config.php." : "Por favor usa el actualizador de línea de comandos ya que el actualizador automático se encuentra deshabilitado en config.php.", "For help, see the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentation</a>." : "Para más ayuda, por favor consulta la <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentación</a>.", "I know that if I continue doing the update via web UI has the risk, that the request runs into a timeout and could cause data loss, but I have a backup and know how to restore my instance in case of a failure." : "Estoy conciente de que si continúo haciendo la actualización vía web, la interfaz de usuario corre el riesgo de que el tiempo de la solicitud expire y cause pérdida de datos, pero cuento con un respaldo y sé como restaurar mi instancia en caso de una falla. ", "Upgrade via web on my own risk" : "Actualizar vía Web bajo mi propio riesgo", diff --git a/core/l10n/et_EE.js b/core/l10n/et_EE.js deleted file mode 100644 index 03428a6e20c..00000000000 --- a/core/l10n/et_EE.js +++ /dev/null @@ -1,217 +0,0 @@ -OC.L10N.register( - "core", - { - "Please select a file." : "Palun vali fail.", - "File is too big" : "Fail on liiga suur", - "The selected file is not an image." : "Valitud fail ei ole pilt.", - "The selected file cannot be read." : "Valitud faili ei ole võimalik lugeda.", - "The file was uploaded" : "Fail laaditi üles", - "The uploaded file exceeds the upload_max_filesize directive in php.ini" : "Üleslaetud fail on suurem, kui php.ini failis määratud upload_max_filesize", - "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" : "Üleslaetud fail on suurem, kui MAX_FILE_SIZE atribuut, mis seadistati HTML vormis", - "The file was only partially uploaded" : "Fail laaditi üles ainult osaliselt", - "No file was uploaded" : "Ühtegi faili ei latud üles", - "Missing a temporary folder" : "Ajutine kausta on puudu", - "Could not write file to disk" : "Faili kirjutamine kettale ebaõnnestus", - "Invalid file provided" : "Vigane fail", - "No image or file provided" : "Ühtegi pilti või faili pole pakutud", - "Unknown filetype" : "Tundmatu failitüüp", - "An error occurred. Please contact your admin." : "Tekkis tõrge. Palun võta ühendust administraatoriga.", - "Invalid image" : "Vigane pilt", - "No temporary profile picture available, try again" : "Ühtegi ajutist profiilipilti pole saadaval, proovi uuesti", - "No crop data provided" : "Lõikeandmeid ei leitud", - "No valid crop data provided" : "Kehtivaid lõikeandmeid pole leitud", - "Crop is not square" : "Lõikamine pole ruudukujuline", - "Invalid app password" : "Vale rakenduse parool", - "Login" : "Logi sisse", - "Password reset is disabled" : "Parooli taastamine on välja lülitatud", - "%s password reset" : "%s parooli lähtestus", - "Password reset" : "Parooli taastamine ", - "Click the following button to reset your password. If you have not requested the password reset, then ignore this email." : "Kliki allolevale nupule, et taastada oma parool. Kui sa ei ole paroolitaastamist pärinud. siis ignoreeri seda e-kirja.", - "Click the following link to reset your password. If you have not requested the password reset, then ignore this email." : "Kliki allolevale lingile, et taastada oma parool. Kui sa ei ole parooli taastamist pärinud. siis ignoreeri seda e-kirja.", - "Reset your password" : "Lähtesta oma parool", - "Preparing update" : "Uuendamise ettevalmistamine", - "[%d / %d]: %s" : "[%d / %d]: %s", - "Please use the command line updater because automatic updating is disabled in the config.php." : "Palun kasutage uuendamiseks käsurida, kuna automaatne uuendamine on config.php failis välja lülitatud.", - "Turned on maintenance mode" : "Hooldusrežiim sisse lülitatud", - "Turned off maintenance mode" : "Hooldusrežiim välja lülitatud", - "Maintenance mode is kept active" : "Hooldusrežiim on aktiivne", - "Updating database schema" : "Andmebaasi skeemi uuendamine", - "Updated database" : "Uuendatud andmebaas", - "Checking whether the database schema for %s can be updated (this can take a long time depending on the database size)" : "Kontrollitakse, kas %s andmebaasi skeemi saab uuendada (see võib võtta kaua aega sõltuvalt andmebaasi suuruses)", - "Reset log level" : "Lähtesta logi tase", - "Starting code integrity check" : "Koodi terviklikkuse kontrolli alustamine", - "Finished code integrity check" : "Koodi terviklikkuse kontrolli lõpp", - "%s (incompatible)" : "%s (pole ühilduv)", - "Already up to date" : "On juba ajakohane", - "Your web server is not yet properly set up to allow file synchronization, because the WebDAV interface seems to be broken." : "Sinu veebiserver pole veel piisavalt korralikult seadistatud, et lubada failide sünkroniseerimist, kuna WebDAV liides paistab olevat katki.", - "Error occurred while checking server setup" : "Serveri seadete kontrolimisel tekkis viga", - "unknown text" : "tundmatu tekst", - "Hello world!" : "Tere maailm!", - "sunny" : "päikeseline", - "Hello {name}, the weather is {weather}" : "Tere {name}, ilm on {weather}", - "Hello {name}" : "Tere, {name}", - "new" : "uus", - "_download %n file_::_download %n files_" : ["laadi alla %n fail","laadi alla %n faili"], - "The update is in progress, leaving this page might interrupt the process in some environments." : "Värskendus on käimas, lahkudes sellelt lehelt võib protsessi mõnes keskkonnas katkestada.", - "Update to {version}" : "Uuenda versioonile {version}", - "An error occurred." : "Tekkis tõrge.", - "Please reload the page." : "Palun laadi see uuesti.", - "The update was unsuccessful. For more information <a href=\"{url}\">check our forum post</a> covering this issue." : "Uuendus ebaõnnestus. Täiendavat infot <a href=\"{url}\">vaata meie foorumi postituses</a> .", - "The update was unsuccessful. Please report this issue to the <a href=\"https://github.com/nextcloud/server/issues\" target=\"_blank\">Nextcloud community</a>." : "Uuendus ebaõnnestus. Palun teavita probleemist <a href=\"https://github.com/nextcloud/server/issues\" target=\"_blank\">Nextcloudi kogukonda</a>.", - "More apps" : "Veel rakendusi", - "Log in" : "Logi sisse", - "Logging in …" : "Sisselogimine ...", - "Server side authentication failed!" : "Serveripoolne autentimine ebaõnnestus!", - "Please contact your administrator." : "Palun kontakteeru oma süsteemihalduriga.", - "An internal error occurred." : "Tekkis sisemine tõrge.", - "Please try again or contact your administrator." : "Palun proovi uuesti või võta ühendust oma administraatoriga.", - "Password" : "Parool", - "Wrong username or password." : "Vale kasutajanimi või parool.", - "User disabled" : "Kasutaja deaktiveeritud", - "Username or email" : "Kasutajanimi või e-posti aadress", - "Reset password" : "Lähtesta parool", - "Couldn't send reset email. Please contact your administrator." : "Ei suutnud lähtestada e-maili. Palun kontakteeru süsteemihalduriga.", - "New password" : "Uus parool", - "I know what I'm doing" : "Ma tean mida teen", - "Skip" : "Jäta vahele", - "Forgot password?" : "Unustasid parooli?", - "Back" : "Tagasi", - "Reset search" : "Lähtesta otsing", - "Search" : "Otsi", - "Settings" : "Seaded", - "Could not load your contacts" : "Sinu kontaktide laadimine ebaõnnestus", - "Search contacts …" : "Otsi kontakte", - "No contacts found" : "Kontakte ei leitud", - "Show all contacts …" : "Näita kõiki kontakte", - "Loading your contacts …" : "Sinu kontaktide laadimine ...", - "Looking for {term} …" : "Otsin {term} …", - "No" : "Ei", - "Yes" : "Jah", - "No files in here" : "Siin ei ole faile", - "New folder" : "Uus kaust", - "Name" : "Nimi", - "Size" : "Suurus", - "Modified" : "Muudetud", - "\"{name}\" is an invalid file name." : "\"{name}\" on vigane failinimi.", - "File name cannot be empty." : "Faili nimi ei saa olla tühi.", - "\"/\" is not allowed inside a file name." : "\"/\" pole failinimedes lubatud.", - "\"{name}\" is not an allowed filetype" : "\"{name}\" pole lubatud failitüüp", - "{newName} already exists" : "{newName} on juba olemas", - "Choose" : "Vali", - "Copy" : "Kopeeri", - "Move" : "Liiguta", - "Error loading file picker template: {error}" : "Viga failivalija malli laadimisel: {error}", - "OK" : "OK", - "Error loading message template: {error}" : "Viga sõnumi malli laadimisel: {error}", - "read-only" : "kirjutuskaitstud", - "_{count} file conflict_::_{count} file conflicts_" : ["{count} failikonflikt","{count} failikonflikti"], - "One file conflict" : "Üks failikonflikt", - "New Files" : "Uued failid", - "Already existing files" : "Juba olemasolevad failid", - "Which files do you want to keep?" : "Milliseid faile sa soovid alles hoida?", - "If you select both versions, the copied file will have a number added to its name." : "Kui valid mõlemad versioonid, siis lisatakse kopeeritud faili nimele number.", - "Cancel" : "Loobu", - "Continue" : "Jätka", - "(all selected)" : "(kõik valitud)", - "({count} selected)" : "({count} valitud)", - "Error loading file exists template" : "Viga faili olemasolu malli laadimisel", - "Pending" : "Ootel", - "Home" : "Avaleht", - "Copy to {folder}" : "Kopeeri {folder}", - "Move to {folder}" : "Liiguta {folder}", - "Authentication required" : "Autentimine on vajalik", - "This action requires you to confirm your password" : "See tegevus nõuab parooli kinnitamist", - "Confirm" : "Kinnita", - "Failed to authenticate, try again" : "Autentimine ebaõnnestus, proovige uuesti", - "seconds ago" : "sekundit tagasi", - "Connection to server lost" : "Ühendus serveriga katkes", - "_Problem loading page, reloading in %n second_::_Problem loading page, reloading in %n seconds_" : ["Tõrge lehe laadimisel, ümberlaadimine %n sekundi pärast","Tõrge lehe laadimisel, ümberlaadimine %n sekundi pärast"], - "Hide details" : "Peida üksikasjad", - "Very weak password" : "Väga nõrk parool", - "Weak password" : "Nõrk parool", - "So-so password" : "Enam-vähem sobiv parool", - "Good password" : "Hea parool", - "Strong password" : "Väga hea parool", - "No action available" : "Ühtegi tegevust pole saadaval", - "Error fetching contact actions" : "Viga kontakti toimingute laadimisel", - "Non-existing tag #{tag}" : "Olematu silt #{tag}", - "Restricted" : "Piiratud", - "Invisible" : "Nähtamatu", - "Delete" : "Kustuta", - "Rename" : "Nimeta ümber", - "Collaborative tags" : "Koostöö sildid", - "No tags found" : "Märgendeid ei leitud", - "Personal" : "Isiklik", - "Users" : "Kasutajad", - "Apps" : "Rakendused", - "Admin" : "Admin", - "Help" : "Abiinfo", - "Access forbidden" : "Ligipääs on keelatud", - "Page not found" : "Lehekülge ei leitud", - "Error" : "Viga", - "Previous" : "Eelmine", - "Internal Server Error" : "Serveri sisemine viga", - "The server was unable to complete your request." : "Server ei suutnud sinu päringut lõpetada.", - "If this happens again, please send the technical details below to the server administrator." : "Kui see veel kord juhtub, saada tehnilised detailid allpool serveri administraatorile.", - "More details can be found in the server log." : "Lisainfot võib leida serveri logist.", - "Technical details" : "Tehnilised andmed", - "Remote Address: %s" : "Kaugaadress: %s", - "Request ID: %s" : "Päringu ID: %s", - "Type: %s" : "Tüüp: %s", - "Code: %s" : "Kood: %s", - "Message: %s" : "Sõnum: %s", - "File: %s" : "Fail: %s", - "Line: %s" : "Rida: %s", - "Trace" : "Jälita", - "Security warning" : "Turvahoiatus", - "Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : "Su andmete kataloog ja failid on tõenäoliselt internetist vabalt saadaval kuna .htaccess fail ei toimi.", - "For information how to properly configure your server, please see the <a href=\"%s\" target=\"_blank\" rel=\"noreferrer noopener\">documentation</a>." : "Serveri õigeks seadistamiseks leiate leiate infot <a href=\"%s\" target=\"_blank\" rel=\"noreferrer noopener\">dokumentatsioonist</a>.", - "Create an <strong>admin account</strong>" : "Loo <strong>admini konto</strong>", - "Username" : "Kasutajanimi", - "Storage & database" : "Andmehoidla ja andmebaas", - "Data folder" : "Andmete kaust", - "Configure the database" : "Seadista andmebaasi", - "Only %s is available." : "Ainult %s on saadaval.", - "Install and activate additional PHP modules to choose other database types." : "Paigalda ja aktiveeri täiendavaid PHP mooduleid, et teisi andmebaasi tüüpe valida.", - "For more details check out the documentation." : "Lisainfot vaata dokumentatsioonist.", - "Database user" : "Andmebaasi kasutaja", - "Database password" : "Andmebaasi parool", - "Database name" : "Andmebasi nimi", - "Database tablespace" : "Andmebaasi tabeliruum", - "Database host" : "Andmebaasi host", - "Please specify the port number along with the host name (e.g., localhost:5432)." : "Palun sisesta pordi number koos hostinimega (nt. localhost: 5432).", - "Performance warning" : "Kiiruse hoiatus", - "Need help?" : "Vajad abi?", - "See the documentation" : "Vaata dokumentatsiooni", - "This application requires JavaScript for correct operation. Please {linkstart}enable JavaScript{linkend} and reload the page." : "See rakendus vajab toimimiseks JavaScripti. Palun {linkstart}luba JavaScript{linkend} ning laadi see leht uuesti.", - "Confirm your password" : "Kinnita oma parool", - "Grant access" : "Anna ligipääs", - "Account access" : "Konto ligipääs", - "This share is password-protected" : "See jagamine on parooliga kaitstud", - "Go to %s" : "Mine %s", - "Two-factor authentication" : "Kaheastmeline autentimine", - "Use backup code" : "Kasuta varu koodi", - "Error while validating your second factor" : "Teise faktori valideerimise viga", - "Access through untrusted domain" : "Ligipääs läbi ebausaldusväärse domeeni", - "Please contact your administrator. If you are an administrator, edit the \"trusted_domains\" setting in config/config.php like the example in config.sample.php." : "Palun võtke ühendust oma administraatoriga. Kui olete administraator, muutke konfiguratsioonis config/config.php sätet \"trusted_domains\", nagu näidis config.sample.php failis.", - "App update required" : "Rakenduse uuendus on nõutud", - "These incompatible apps will be disabled:" : "Need mitteühilduvad rakendused lülitatakse välja:", - "The theme %s has been disabled." : "Teema %s on keelatud.", - "Please make sure that the database, the config folder and the data folder have been backed up before proceeding." : "Enne jätkamist veendu, et andmebaas, seadete ning andmete kataloog on varundatud.", - "Start update" : "Käivita uuendus", - "To avoid timeouts with larger installations, you can instead run the following command from your installation directory:" : "Suurtel saitidel aegumise vältimiseks võid sa paigalduskaustas käivitada järgmise käsu:", - "Detailed logs" : "Üksikasjalikud logid", - "Update needed" : "Uuendamine vajaliik", - "Please use the command line updater because you have a big instance with more than 50 users." : "Palun kasutage uuendamiseks käsurida, kuna teil on suur instants rohkem kui 50 kasutajaga.", - "For help, see the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentation</a>." : "Abi saamiseks vaata <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">dokumentatsiooni</a>.", - "Upgrade via web on my own risk" : "Uuenda veebi kaudu omal vastutusel", - "This %s instance is currently in maintenance mode, which may take a while." : "See %s instants on hetkel haldusrežiimis, mis võib kesta mõnda aega.", - "Contact your system administrator if this message persists or appeared unexpectedly." : "Kontakteeru oma süsteemihalduriga, kui see teade püsib või on tekkinud ootamatult.", - "[%d / %d]: Checking table %s" : "[%d / %d]: Kontrollin tabelit %s", - "restricted" : "piiratud", - "invisible" : "nähtamatu", - "File not found" : "Faili ei leitud", - "More" : "Rohkem", - "Contacts" : "Kontaktid" -}, -"nplurals=2; plural=(n != 1);"); diff --git a/core/l10n/et_EE.json b/core/l10n/et_EE.json deleted file mode 100644 index a49b73fb45c..00000000000 --- a/core/l10n/et_EE.json +++ /dev/null @@ -1,215 +0,0 @@ -{ "translations": { - "Please select a file." : "Palun vali fail.", - "File is too big" : "Fail on liiga suur", - "The selected file is not an image." : "Valitud fail ei ole pilt.", - "The selected file cannot be read." : "Valitud faili ei ole võimalik lugeda.", - "The file was uploaded" : "Fail laaditi üles", - "The uploaded file exceeds the upload_max_filesize directive in php.ini" : "Üleslaetud fail on suurem, kui php.ini failis määratud upload_max_filesize", - "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" : "Üleslaetud fail on suurem, kui MAX_FILE_SIZE atribuut, mis seadistati HTML vormis", - "The file was only partially uploaded" : "Fail laaditi üles ainult osaliselt", - "No file was uploaded" : "Ühtegi faili ei latud üles", - "Missing a temporary folder" : "Ajutine kausta on puudu", - "Could not write file to disk" : "Faili kirjutamine kettale ebaõnnestus", - "Invalid file provided" : "Vigane fail", - "No image or file provided" : "Ühtegi pilti või faili pole pakutud", - "Unknown filetype" : "Tundmatu failitüüp", - "An error occurred. Please contact your admin." : "Tekkis tõrge. Palun võta ühendust administraatoriga.", - "Invalid image" : "Vigane pilt", - "No temporary profile picture available, try again" : "Ühtegi ajutist profiilipilti pole saadaval, proovi uuesti", - "No crop data provided" : "Lõikeandmeid ei leitud", - "No valid crop data provided" : "Kehtivaid lõikeandmeid pole leitud", - "Crop is not square" : "Lõikamine pole ruudukujuline", - "Invalid app password" : "Vale rakenduse parool", - "Login" : "Logi sisse", - "Password reset is disabled" : "Parooli taastamine on välja lülitatud", - "%s password reset" : "%s parooli lähtestus", - "Password reset" : "Parooli taastamine ", - "Click the following button to reset your password. If you have not requested the password reset, then ignore this email." : "Kliki allolevale nupule, et taastada oma parool. Kui sa ei ole paroolitaastamist pärinud. siis ignoreeri seda e-kirja.", - "Click the following link to reset your password. If you have not requested the password reset, then ignore this email." : "Kliki allolevale lingile, et taastada oma parool. Kui sa ei ole parooli taastamist pärinud. siis ignoreeri seda e-kirja.", - "Reset your password" : "Lähtesta oma parool", - "Preparing update" : "Uuendamise ettevalmistamine", - "[%d / %d]: %s" : "[%d / %d]: %s", - "Please use the command line updater because automatic updating is disabled in the config.php." : "Palun kasutage uuendamiseks käsurida, kuna automaatne uuendamine on config.php failis välja lülitatud.", - "Turned on maintenance mode" : "Hooldusrežiim sisse lülitatud", - "Turned off maintenance mode" : "Hooldusrežiim välja lülitatud", - "Maintenance mode is kept active" : "Hooldusrežiim on aktiivne", - "Updating database schema" : "Andmebaasi skeemi uuendamine", - "Updated database" : "Uuendatud andmebaas", - "Checking whether the database schema for %s can be updated (this can take a long time depending on the database size)" : "Kontrollitakse, kas %s andmebaasi skeemi saab uuendada (see võib võtta kaua aega sõltuvalt andmebaasi suuruses)", - "Reset log level" : "Lähtesta logi tase", - "Starting code integrity check" : "Koodi terviklikkuse kontrolli alustamine", - "Finished code integrity check" : "Koodi terviklikkuse kontrolli lõpp", - "%s (incompatible)" : "%s (pole ühilduv)", - "Already up to date" : "On juba ajakohane", - "Your web server is not yet properly set up to allow file synchronization, because the WebDAV interface seems to be broken." : "Sinu veebiserver pole veel piisavalt korralikult seadistatud, et lubada failide sünkroniseerimist, kuna WebDAV liides paistab olevat katki.", - "Error occurred while checking server setup" : "Serveri seadete kontrolimisel tekkis viga", - "unknown text" : "tundmatu tekst", - "Hello world!" : "Tere maailm!", - "sunny" : "päikeseline", - "Hello {name}, the weather is {weather}" : "Tere {name}, ilm on {weather}", - "Hello {name}" : "Tere, {name}", - "new" : "uus", - "_download %n file_::_download %n files_" : ["laadi alla %n fail","laadi alla %n faili"], - "The update is in progress, leaving this page might interrupt the process in some environments." : "Värskendus on käimas, lahkudes sellelt lehelt võib protsessi mõnes keskkonnas katkestada.", - "Update to {version}" : "Uuenda versioonile {version}", - "An error occurred." : "Tekkis tõrge.", - "Please reload the page." : "Palun laadi see uuesti.", - "The update was unsuccessful. For more information <a href=\"{url}\">check our forum post</a> covering this issue." : "Uuendus ebaõnnestus. Täiendavat infot <a href=\"{url}\">vaata meie foorumi postituses</a> .", - "The update was unsuccessful. Please report this issue to the <a href=\"https://github.com/nextcloud/server/issues\" target=\"_blank\">Nextcloud community</a>." : "Uuendus ebaõnnestus. Palun teavita probleemist <a href=\"https://github.com/nextcloud/server/issues\" target=\"_blank\">Nextcloudi kogukonda</a>.", - "More apps" : "Veel rakendusi", - "Log in" : "Logi sisse", - "Logging in …" : "Sisselogimine ...", - "Server side authentication failed!" : "Serveripoolne autentimine ebaõnnestus!", - "Please contact your administrator." : "Palun kontakteeru oma süsteemihalduriga.", - "An internal error occurred." : "Tekkis sisemine tõrge.", - "Please try again or contact your administrator." : "Palun proovi uuesti või võta ühendust oma administraatoriga.", - "Password" : "Parool", - "Wrong username or password." : "Vale kasutajanimi või parool.", - "User disabled" : "Kasutaja deaktiveeritud", - "Username or email" : "Kasutajanimi või e-posti aadress", - "Reset password" : "Lähtesta parool", - "Couldn't send reset email. Please contact your administrator." : "Ei suutnud lähtestada e-maili. Palun kontakteeru süsteemihalduriga.", - "New password" : "Uus parool", - "I know what I'm doing" : "Ma tean mida teen", - "Skip" : "Jäta vahele", - "Forgot password?" : "Unustasid parooli?", - "Back" : "Tagasi", - "Reset search" : "Lähtesta otsing", - "Search" : "Otsi", - "Settings" : "Seaded", - "Could not load your contacts" : "Sinu kontaktide laadimine ebaõnnestus", - "Search contacts …" : "Otsi kontakte", - "No contacts found" : "Kontakte ei leitud", - "Show all contacts …" : "Näita kõiki kontakte", - "Loading your contacts …" : "Sinu kontaktide laadimine ...", - "Looking for {term} …" : "Otsin {term} …", - "No" : "Ei", - "Yes" : "Jah", - "No files in here" : "Siin ei ole faile", - "New folder" : "Uus kaust", - "Name" : "Nimi", - "Size" : "Suurus", - "Modified" : "Muudetud", - "\"{name}\" is an invalid file name." : "\"{name}\" on vigane failinimi.", - "File name cannot be empty." : "Faili nimi ei saa olla tühi.", - "\"/\" is not allowed inside a file name." : "\"/\" pole failinimedes lubatud.", - "\"{name}\" is not an allowed filetype" : "\"{name}\" pole lubatud failitüüp", - "{newName} already exists" : "{newName} on juba olemas", - "Choose" : "Vali", - "Copy" : "Kopeeri", - "Move" : "Liiguta", - "Error loading file picker template: {error}" : "Viga failivalija malli laadimisel: {error}", - "OK" : "OK", - "Error loading message template: {error}" : "Viga sõnumi malli laadimisel: {error}", - "read-only" : "kirjutuskaitstud", - "_{count} file conflict_::_{count} file conflicts_" : ["{count} failikonflikt","{count} failikonflikti"], - "One file conflict" : "Üks failikonflikt", - "New Files" : "Uued failid", - "Already existing files" : "Juba olemasolevad failid", - "Which files do you want to keep?" : "Milliseid faile sa soovid alles hoida?", - "If you select both versions, the copied file will have a number added to its name." : "Kui valid mõlemad versioonid, siis lisatakse kopeeritud faili nimele number.", - "Cancel" : "Loobu", - "Continue" : "Jätka", - "(all selected)" : "(kõik valitud)", - "({count} selected)" : "({count} valitud)", - "Error loading file exists template" : "Viga faili olemasolu malli laadimisel", - "Pending" : "Ootel", - "Home" : "Avaleht", - "Copy to {folder}" : "Kopeeri {folder}", - "Move to {folder}" : "Liiguta {folder}", - "Authentication required" : "Autentimine on vajalik", - "This action requires you to confirm your password" : "See tegevus nõuab parooli kinnitamist", - "Confirm" : "Kinnita", - "Failed to authenticate, try again" : "Autentimine ebaõnnestus, proovige uuesti", - "seconds ago" : "sekundit tagasi", - "Connection to server lost" : "Ühendus serveriga katkes", - "_Problem loading page, reloading in %n second_::_Problem loading page, reloading in %n seconds_" : ["Tõrge lehe laadimisel, ümberlaadimine %n sekundi pärast","Tõrge lehe laadimisel, ümberlaadimine %n sekundi pärast"], - "Hide details" : "Peida üksikasjad", - "Very weak password" : "Väga nõrk parool", - "Weak password" : "Nõrk parool", - "So-so password" : "Enam-vähem sobiv parool", - "Good password" : "Hea parool", - "Strong password" : "Väga hea parool", - "No action available" : "Ühtegi tegevust pole saadaval", - "Error fetching contact actions" : "Viga kontakti toimingute laadimisel", - "Non-existing tag #{tag}" : "Olematu silt #{tag}", - "Restricted" : "Piiratud", - "Invisible" : "Nähtamatu", - "Delete" : "Kustuta", - "Rename" : "Nimeta ümber", - "Collaborative tags" : "Koostöö sildid", - "No tags found" : "Märgendeid ei leitud", - "Personal" : "Isiklik", - "Users" : "Kasutajad", - "Apps" : "Rakendused", - "Admin" : "Admin", - "Help" : "Abiinfo", - "Access forbidden" : "Ligipääs on keelatud", - "Page not found" : "Lehekülge ei leitud", - "Error" : "Viga", - "Previous" : "Eelmine", - "Internal Server Error" : "Serveri sisemine viga", - "The server was unable to complete your request." : "Server ei suutnud sinu päringut lõpetada.", - "If this happens again, please send the technical details below to the server administrator." : "Kui see veel kord juhtub, saada tehnilised detailid allpool serveri administraatorile.", - "More details can be found in the server log." : "Lisainfot võib leida serveri logist.", - "Technical details" : "Tehnilised andmed", - "Remote Address: %s" : "Kaugaadress: %s", - "Request ID: %s" : "Päringu ID: %s", - "Type: %s" : "Tüüp: %s", - "Code: %s" : "Kood: %s", - "Message: %s" : "Sõnum: %s", - "File: %s" : "Fail: %s", - "Line: %s" : "Rida: %s", - "Trace" : "Jälita", - "Security warning" : "Turvahoiatus", - "Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : "Su andmete kataloog ja failid on tõenäoliselt internetist vabalt saadaval kuna .htaccess fail ei toimi.", - "For information how to properly configure your server, please see the <a href=\"%s\" target=\"_blank\" rel=\"noreferrer noopener\">documentation</a>." : "Serveri õigeks seadistamiseks leiate leiate infot <a href=\"%s\" target=\"_blank\" rel=\"noreferrer noopener\">dokumentatsioonist</a>.", - "Create an <strong>admin account</strong>" : "Loo <strong>admini konto</strong>", - "Username" : "Kasutajanimi", - "Storage & database" : "Andmehoidla ja andmebaas", - "Data folder" : "Andmete kaust", - "Configure the database" : "Seadista andmebaasi", - "Only %s is available." : "Ainult %s on saadaval.", - "Install and activate additional PHP modules to choose other database types." : "Paigalda ja aktiveeri täiendavaid PHP mooduleid, et teisi andmebaasi tüüpe valida.", - "For more details check out the documentation." : "Lisainfot vaata dokumentatsioonist.", - "Database user" : "Andmebaasi kasutaja", - "Database password" : "Andmebaasi parool", - "Database name" : "Andmebasi nimi", - "Database tablespace" : "Andmebaasi tabeliruum", - "Database host" : "Andmebaasi host", - "Please specify the port number along with the host name (e.g., localhost:5432)." : "Palun sisesta pordi number koos hostinimega (nt. localhost: 5432).", - "Performance warning" : "Kiiruse hoiatus", - "Need help?" : "Vajad abi?", - "See the documentation" : "Vaata dokumentatsiooni", - "This application requires JavaScript for correct operation. Please {linkstart}enable JavaScript{linkend} and reload the page." : "See rakendus vajab toimimiseks JavaScripti. Palun {linkstart}luba JavaScript{linkend} ning laadi see leht uuesti.", - "Confirm your password" : "Kinnita oma parool", - "Grant access" : "Anna ligipääs", - "Account access" : "Konto ligipääs", - "This share is password-protected" : "See jagamine on parooliga kaitstud", - "Go to %s" : "Mine %s", - "Two-factor authentication" : "Kaheastmeline autentimine", - "Use backup code" : "Kasuta varu koodi", - "Error while validating your second factor" : "Teise faktori valideerimise viga", - "Access through untrusted domain" : "Ligipääs läbi ebausaldusväärse domeeni", - "Please contact your administrator. If you are an administrator, edit the \"trusted_domains\" setting in config/config.php like the example in config.sample.php." : "Palun võtke ühendust oma administraatoriga. Kui olete administraator, muutke konfiguratsioonis config/config.php sätet \"trusted_domains\", nagu näidis config.sample.php failis.", - "App update required" : "Rakenduse uuendus on nõutud", - "These incompatible apps will be disabled:" : "Need mitteühilduvad rakendused lülitatakse välja:", - "The theme %s has been disabled." : "Teema %s on keelatud.", - "Please make sure that the database, the config folder and the data folder have been backed up before proceeding." : "Enne jätkamist veendu, et andmebaas, seadete ning andmete kataloog on varundatud.", - "Start update" : "Käivita uuendus", - "To avoid timeouts with larger installations, you can instead run the following command from your installation directory:" : "Suurtel saitidel aegumise vältimiseks võid sa paigalduskaustas käivitada järgmise käsu:", - "Detailed logs" : "Üksikasjalikud logid", - "Update needed" : "Uuendamine vajaliik", - "Please use the command line updater because you have a big instance with more than 50 users." : "Palun kasutage uuendamiseks käsurida, kuna teil on suur instants rohkem kui 50 kasutajaga.", - "For help, see the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentation</a>." : "Abi saamiseks vaata <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">dokumentatsiooni</a>.", - "Upgrade via web on my own risk" : "Uuenda veebi kaudu omal vastutusel", - "This %s instance is currently in maintenance mode, which may take a while." : "See %s instants on hetkel haldusrežiimis, mis võib kesta mõnda aega.", - "Contact your system administrator if this message persists or appeared unexpectedly." : "Kontakteeru oma süsteemihalduriga, kui see teade püsib või on tekkinud ootamatult.", - "[%d / %d]: Checking table %s" : "[%d / %d]: Kontrollin tabelit %s", - "restricted" : "piiratud", - "invisible" : "nähtamatu", - "File not found" : "Faili ei leitud", - "More" : "Rohkem", - "Contacts" : "Kontaktid" -},"pluralForm" :"nplurals=2; plural=(n != 1);" -}
\ No newline at end of file diff --git a/core/l10n/eu.js b/core/l10n/eu.js index 6d0b9c0fe64..04b079d91b8 100644 --- a/core/l10n/eu.js +++ b/core/l10n/eu.js @@ -51,7 +51,6 @@ OC.L10N.register( "Repair info:" : "Konponketa informazioa:", "Repair warning:" : "Konponketa abisua:", "Repair error:" : "Konponketa errorea:", - "Please use the command line updater because automatic updating is disabled in the config.php." : "Mesedez, erabili komando-lerroko eguneratzailea, eguneratze automatikoa config.php-n desgaituta dago eta.", "Turned on maintenance mode" : "Mantentze modua aktibatu da", "Turned off maintenance mode" : "Mantentze modua desaktibatu da", "Maintenance mode is kept active" : "Mantentze moduak aktibatuta jarraitzen du.", @@ -399,6 +398,7 @@ OC.L10N.register( "Detailed logs" : "Egunkari xehea", "Update needed" : "Eguneratzea beharrezkoa da", "Please use the command line updater because you have a big instance with more than 50 users." : "Komando-lerroko eguneratzailea erabili mesedez, 50 erabiltzaile baino gehiagoko instantzia handia baita zurea.", + "Please use the command line updater because automatic updating is disabled in the config.php." : "Mesedez, erabili komando-lerroko eguneratzailea, eguneratze automatikoa config.php-n desgaituta dago eta.", "For help, see the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentation</a>." : "Laguntzarako, ikusi <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">dokumentazioa</a>.", "I know that if I continue doing the update via web UI has the risk, that the request runs into a timeout and could cause data loss, but I have a backup and know how to restore my instance in case of a failure." : "Badakit web bidezko UI-a erabiliz eguneratzea egitean arriskuak daudela, eskaera denboraz-kanpo geratzen bada datuen galera gerta daitekeela, baina babeskopia kopia egin dut eta arazoak egonez gero badakit instantzia leheneratzen.", "Upgrade via web on my own risk" : "Web bidezko bertsio-berritzea egin, nire ardurapean.", diff --git a/core/l10n/eu.json b/core/l10n/eu.json index 87f3dc8264a..50825dd2e25 100644 --- a/core/l10n/eu.json +++ b/core/l10n/eu.json @@ -49,7 +49,6 @@ "Repair info:" : "Konponketa informazioa:", "Repair warning:" : "Konponketa abisua:", "Repair error:" : "Konponketa errorea:", - "Please use the command line updater because automatic updating is disabled in the config.php." : "Mesedez, erabili komando-lerroko eguneratzailea, eguneratze automatikoa config.php-n desgaituta dago eta.", "Turned on maintenance mode" : "Mantentze modua aktibatu da", "Turned off maintenance mode" : "Mantentze modua desaktibatu da", "Maintenance mode is kept active" : "Mantentze moduak aktibatuta jarraitzen du.", @@ -397,6 +396,7 @@ "Detailed logs" : "Egunkari xehea", "Update needed" : "Eguneratzea beharrezkoa da", "Please use the command line updater because you have a big instance with more than 50 users." : "Komando-lerroko eguneratzailea erabili mesedez, 50 erabiltzaile baino gehiagoko instantzia handia baita zurea.", + "Please use the command line updater because automatic updating is disabled in the config.php." : "Mesedez, erabili komando-lerroko eguneratzailea, eguneratze automatikoa config.php-n desgaituta dago eta.", "For help, see the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentation</a>." : "Laguntzarako, ikusi <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">dokumentazioa</a>.", "I know that if I continue doing the update via web UI has the risk, that the request runs into a timeout and could cause data loss, but I have a backup and know how to restore my instance in case of a failure." : "Badakit web bidezko UI-a erabiliz eguneratzea egitean arriskuak daudela, eskaera denboraz-kanpo geratzen bada datuen galera gerta daitekeela, baina babeskopia kopia egin dut eta arazoak egonez gero badakit instantzia leheneratzen.", "Upgrade via web on my own risk" : "Web bidezko bertsio-berritzea egin, nire ardurapean.", diff --git a/core/l10n/fa.js b/core/l10n/fa.js index be037e3faf0..2a5f6ae79bc 100644 --- a/core/l10n/fa.js +++ b/core/l10n/fa.js @@ -38,7 +38,6 @@ OC.L10N.register( "Learn more ↗" : "بیشتر بدانید ↗", "Preparing update" : "آمادهسازی به روز رسانی", "[%d / %d]: %s" : "[%d / %d]: %s", - "Please use the command line updater because automatic updating is disabled in the config.php." : "Please use the command line updater because automatic updating is disabled in the config.php.", "Turned on maintenance mode" : "حالت \" در دست تعمیر \" فعال شد .", "Turned off maintenance mode" : "حالت \" در دست تعمیر \" غیرفعال شد .", "Maintenance mode is kept active" : "حالت تعمیرات فعال نگهداشته شده است", @@ -214,6 +213,7 @@ OC.L10N.register( "To avoid timeouts with larger installations, you can instead run the following command from your installation directory:" : "برای جلوگیری از وقفه در نصب های طولانی تر، شما می توانید دستورات زیر را از مسیر نصبتان اجرا کنید:", "Detailed logs" : "Detailed logs", "Update needed" : "نیاز به روز رسانی دارد", + "Please use the command line updater because automatic updating is disabled in the config.php." : "Please use the command line updater because automatic updating is disabled in the config.php.", "Contact your system administrator if this message persists or appeared unexpectedly." : "اگر این پیغام همچنان وجود داشت یا به صورت غیر منتظره ظاهر شد با مدیر سیستم تماس بگیرید.", "[%d / %d]: Checking table %s" : "[%d / %d]: چک کردن جدول %s", "restricted" : "محدود", diff --git a/core/l10n/fa.json b/core/l10n/fa.json index 05be8211880..265a8adfb02 100644 --- a/core/l10n/fa.json +++ b/core/l10n/fa.json @@ -36,7 +36,6 @@ "Learn more ↗" : "بیشتر بدانید ↗", "Preparing update" : "آمادهسازی به روز رسانی", "[%d / %d]: %s" : "[%d / %d]: %s", - "Please use the command line updater because automatic updating is disabled in the config.php." : "Please use the command line updater because automatic updating is disabled in the config.php.", "Turned on maintenance mode" : "حالت \" در دست تعمیر \" فعال شد .", "Turned off maintenance mode" : "حالت \" در دست تعمیر \" غیرفعال شد .", "Maintenance mode is kept active" : "حالت تعمیرات فعال نگهداشته شده است", @@ -212,6 +211,7 @@ "To avoid timeouts with larger installations, you can instead run the following command from your installation directory:" : "برای جلوگیری از وقفه در نصب های طولانی تر، شما می توانید دستورات زیر را از مسیر نصبتان اجرا کنید:", "Detailed logs" : "Detailed logs", "Update needed" : "نیاز به روز رسانی دارد", + "Please use the command line updater because automatic updating is disabled in the config.php." : "Please use the command line updater because automatic updating is disabled in the config.php.", "Contact your system administrator if this message persists or appeared unexpectedly." : "اگر این پیغام همچنان وجود داشت یا به صورت غیر منتظره ظاهر شد با مدیر سیستم تماس بگیرید.", "[%d / %d]: Checking table %s" : "[%d / %d]: چک کردن جدول %s", "restricted" : "محدود", diff --git a/core/l10n/fi.js b/core/l10n/fi.js index a0af7c5ad45..618a54c7bc3 100644 --- a/core/l10n/fi.js +++ b/core/l10n/fi.js @@ -49,7 +49,6 @@ OC.L10N.register( "Repair info:" : "Korjaustiedot:", "Repair warning:" : "Korjausvaroitus:", "Repair error:" : "Korjausvirhe:", - "Please use the command line updater because automatic updating is disabled in the config.php." : "Käytä komentorivipäivitintä, koska automaattinen päivitys on estetty config.php-asetustiedostossa.", "Turned on maintenance mode" : "Siirrytty huoltotilaan", "Turned off maintenance mode" : "Poistuttu huoltotilasta", "Maintenance mode is kept active" : "Huoltotila pidetään aktiivisena", @@ -178,6 +177,7 @@ OC.L10N.register( "Settings menu" : "Asetusvalikko", "Search {types} …" : "Etsi {types}…", "Settings" : "Asetukset", + "Avatar of {fullName}" : "Käyttäjän {fullName} kuva", "Could not load your contacts" : "Yhteystietojasi ei voitu ladata", "Search contacts …" : "Etsi yhteystietoja…", "No contacts found" : "Yhteystietoja ei löytynyt", @@ -358,6 +358,7 @@ OC.L10N.register( "Detailed logs" : "Yksityiskohtainen loki", "Update needed" : "Päivitys vaaditaan", "Please use the command line updater because you have a big instance with more than 50 users." : "Käytä komentorivipäivitintä, koska käyttäjiä on yli 50.", + "Please use the command line updater because automatic updating is disabled in the config.php." : "Käytä komentorivipäivitintä, koska automaattinen päivitys on estetty config.php-asetustiedostossa.", "For help, see the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentation</a>." : "Jos tarvitset apua, katso <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">ohjeista</a>.", "I know that if I continue doing the update via web UI has the risk, that the request runs into a timeout and could cause data loss, but I have a backup and know how to restore my instance in case of a failure." : "Tiedän että jos jatkan päivittämistä web-liittymän kautta, saatan menettää kaikki tiedostot, mikäli päivitys epäonnistuu. Onneksi olen tehnyt varmuuskopion ja osaan sen myös palauttaa tarvittaessa.", "Upgrade via web on my own risk" : "Internetin kautta päivittäminen omalla vastuulla", diff --git a/core/l10n/fi.json b/core/l10n/fi.json index ad4fa41397c..1319b4960bc 100644 --- a/core/l10n/fi.json +++ b/core/l10n/fi.json @@ -47,7 +47,6 @@ "Repair info:" : "Korjaustiedot:", "Repair warning:" : "Korjausvaroitus:", "Repair error:" : "Korjausvirhe:", - "Please use the command line updater because automatic updating is disabled in the config.php." : "Käytä komentorivipäivitintä, koska automaattinen päivitys on estetty config.php-asetustiedostossa.", "Turned on maintenance mode" : "Siirrytty huoltotilaan", "Turned off maintenance mode" : "Poistuttu huoltotilasta", "Maintenance mode is kept active" : "Huoltotila pidetään aktiivisena", @@ -176,6 +175,7 @@ "Settings menu" : "Asetusvalikko", "Search {types} …" : "Etsi {types}…", "Settings" : "Asetukset", + "Avatar of {fullName}" : "Käyttäjän {fullName} kuva", "Could not load your contacts" : "Yhteystietojasi ei voitu ladata", "Search contacts …" : "Etsi yhteystietoja…", "No contacts found" : "Yhteystietoja ei löytynyt", @@ -356,6 +356,7 @@ "Detailed logs" : "Yksityiskohtainen loki", "Update needed" : "Päivitys vaaditaan", "Please use the command line updater because you have a big instance with more than 50 users." : "Käytä komentorivipäivitintä, koska käyttäjiä on yli 50.", + "Please use the command line updater because automatic updating is disabled in the config.php." : "Käytä komentorivipäivitintä, koska automaattinen päivitys on estetty config.php-asetustiedostossa.", "For help, see the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentation</a>." : "Jos tarvitset apua, katso <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">ohjeista</a>.", "I know that if I continue doing the update via web UI has the risk, that the request runs into a timeout and could cause data loss, but I have a backup and know how to restore my instance in case of a failure." : "Tiedän että jos jatkan päivittämistä web-liittymän kautta, saatan menettää kaikki tiedostot, mikäli päivitys epäonnistuu. Onneksi olen tehnyt varmuuskopion ja osaan sen myös palauttaa tarvittaessa.", "Upgrade via web on my own risk" : "Internetin kautta päivittäminen omalla vastuulla", diff --git a/core/l10n/fr.js b/core/l10n/fr.js index e2974b411bf..f72fa008eaa 100644 --- a/core/l10n/fr.js +++ b/core/l10n/fr.js @@ -51,7 +51,6 @@ OC.L10N.register( "Repair info:" : "Informations de réparation :", "Repair warning:" : "Avertissement de réparation :", "Repair error:" : "Erreur de réparation :", - "Please use the command line updater because automatic updating is disabled in the config.php." : "Veuillez utiliser la mise à jour en ligne de commande, la mise à jour automatique est désactivée dans config.php.", "Turned on maintenance mode" : "Mode de maintenance activé", "Turned off maintenance mode" : "Mode de maintenance désactivé", "Maintenance mode is kept active" : "Le mode de maintenance est laissé actif", @@ -400,6 +399,7 @@ OC.L10N.register( "Detailed logs" : "Journaux détaillés", "Update needed" : "Mise à jour nécessaire", "Please use the command line updater because you have a big instance with more than 50 users." : "Veuillez utiliser la mise à jour en ligne de commande car votre instance est volumineuse avec plus de 50 utilisateurs.", + "Please use the command line updater because automatic updating is disabled in the config.php." : "Veuillez utiliser la mise à jour en ligne de commande, la mise à jour automatique est désactivée dans config.php.", "For help, see the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentation</a>." : "Pour obtenir de l'aide, lisez la <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentation</a>.", "I know that if I continue doing the update via web UI has the risk, that the request runs into a timeout and could cause data loss, but I have a backup and know how to restore my instance in case of a failure." : "Je sais que si je continue à faire la mise à jour via le navigateur web, il existe le risque que la requête se heurte à un délai d'expiration et peut causer une perte de données, mais j'ai une copie de sauvegarde et je sais comment restaurer mon instance en cas d'échec.", "Upgrade via web on my own risk" : "Mettre à jour via le navigateur web à mes propres risques", diff --git a/core/l10n/fr.json b/core/l10n/fr.json index dbcb9a137ff..2d58ddf0dbf 100644 --- a/core/l10n/fr.json +++ b/core/l10n/fr.json @@ -49,7 +49,6 @@ "Repair info:" : "Informations de réparation :", "Repair warning:" : "Avertissement de réparation :", "Repair error:" : "Erreur de réparation :", - "Please use the command line updater because automatic updating is disabled in the config.php." : "Veuillez utiliser la mise à jour en ligne de commande, la mise à jour automatique est désactivée dans config.php.", "Turned on maintenance mode" : "Mode de maintenance activé", "Turned off maintenance mode" : "Mode de maintenance désactivé", "Maintenance mode is kept active" : "Le mode de maintenance est laissé actif", @@ -398,6 +397,7 @@ "Detailed logs" : "Journaux détaillés", "Update needed" : "Mise à jour nécessaire", "Please use the command line updater because you have a big instance with more than 50 users." : "Veuillez utiliser la mise à jour en ligne de commande car votre instance est volumineuse avec plus de 50 utilisateurs.", + "Please use the command line updater because automatic updating is disabled in the config.php." : "Veuillez utiliser la mise à jour en ligne de commande, la mise à jour automatique est désactivée dans config.php.", "For help, see the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentation</a>." : "Pour obtenir de l'aide, lisez la <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentation</a>.", "I know that if I continue doing the update via web UI has the risk, that the request runs into a timeout and could cause data loss, but I have a backup and know how to restore my instance in case of a failure." : "Je sais que si je continue à faire la mise à jour via le navigateur web, il existe le risque que la requête se heurte à un délai d'expiration et peut causer une perte de données, mais j'ai une copie de sauvegarde et je sais comment restaurer mon instance en cas d'échec.", "Upgrade via web on my own risk" : "Mettre à jour via le navigateur web à mes propres risques", diff --git a/core/l10n/gl.js b/core/l10n/gl.js index 6d0f21a84ec..5d8ab33bc89 100644 --- a/core/l10n/gl.js +++ b/core/l10n/gl.js @@ -51,7 +51,6 @@ OC.L10N.register( "Repair info:" : "Información do arranxo:", "Repair warning:" : "Aviso de arranxo:", "Repair error:" : "Erro do arranxo:", - "Please use the command line updater because automatic updating is disabled in the config.php." : "A actualización automática está desactivada en config.php, faga a actualización empregando a liña de ordes.", "Turned on maintenance mode" : "Modo de mantemento activado", "Turned off maintenance mode" : "Modo de mantemento desactivado", "Maintenance mode is kept active" : "Mantense activo o modo de mantemento", @@ -400,6 +399,7 @@ OC.L10N.register( "Detailed logs" : "Rexistros detallados", "Update needed" : "É necesario actualizar", "Please use the command line updater because you have a big instance with more than 50 users." : "Vostede ten unha instancia moi grande con máis de 50 usuarios, faga a actualización empregando a liña de ordes.", + "Please use the command line updater because automatic updating is disabled in the config.php." : "A actualización automática está desactivada en config.php, faga a actualización empregando a liña de ordes.", "For help, see the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentation</a>." : "Para obter axuda, vexa a <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentación</a>.", "I know that if I continue doing the update via web UI has the risk, that the request runs into a timeout and could cause data loss, but I have a backup and know how to restore my instance in case of a failure." : "Sei que se continúo facendo a actualización a través da interface web, corro o risco de que a solicitude non se execute no tempo de espera e provoque a perda de información pero teño unha copia de seguridade dos datos e sei como restaurala.", "Upgrade via web on my own risk" : "Anovar a través da web, correndo o risco baixo a miña responsabilidade", diff --git a/core/l10n/gl.json b/core/l10n/gl.json index 2f301e26fad..0d5c117202b 100644 --- a/core/l10n/gl.json +++ b/core/l10n/gl.json @@ -49,7 +49,6 @@ "Repair info:" : "Información do arranxo:", "Repair warning:" : "Aviso de arranxo:", "Repair error:" : "Erro do arranxo:", - "Please use the command line updater because automatic updating is disabled in the config.php." : "A actualización automática está desactivada en config.php, faga a actualización empregando a liña de ordes.", "Turned on maintenance mode" : "Modo de mantemento activado", "Turned off maintenance mode" : "Modo de mantemento desactivado", "Maintenance mode is kept active" : "Mantense activo o modo de mantemento", @@ -398,6 +397,7 @@ "Detailed logs" : "Rexistros detallados", "Update needed" : "É necesario actualizar", "Please use the command line updater because you have a big instance with more than 50 users." : "Vostede ten unha instancia moi grande con máis de 50 usuarios, faga a actualización empregando a liña de ordes.", + "Please use the command line updater because automatic updating is disabled in the config.php." : "A actualización automática está desactivada en config.php, faga a actualización empregando a liña de ordes.", "For help, see the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentation</a>." : "Para obter axuda, vexa a <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentación</a>.", "I know that if I continue doing the update via web UI has the risk, that the request runs into a timeout and could cause data loss, but I have a backup and know how to restore my instance in case of a failure." : "Sei que se continúo facendo a actualización a través da interface web, corro o risco de que a solicitude non se execute no tempo de espera e provoque a perda de información pero teño unha copia de seguridade dos datos e sei como restaurala.", "Upgrade via web on my own risk" : "Anovar a través da web, correndo o risco baixo a miña responsabilidade", diff --git a/core/l10n/he.js b/core/l10n/he.js index 080d33d694c..84c66531312 100644 --- a/core/l10n/he.js +++ b/core/l10n/he.js @@ -44,7 +44,6 @@ OC.L10N.register( "Repair info:" : "פרטי תיקון:", "Repair warning:" : "אזהרת תיקון:", "Repair error:" : "שגיאת תיקון:", - "Please use the command line updater because automatic updating is disabled in the config.php." : "יש להשתמש בעדכון על בסיס שורת פקודה כיוון שעדכון אוטומטי מנוטרל בקובץ config.php.", "Turned on maintenance mode" : "הפעלת מצב אחזקה", "Turned off maintenance mode" : "כיבוי מצב אחזקה", "Maintenance mode is kept active" : "מצב אחזקה נשמר פעיל", @@ -318,6 +317,7 @@ OC.L10N.register( "Detailed logs" : "יומן מפורט", "Update needed" : "עדכון נדרש", "Please use the command line updater because you have a big instance with more than 50 users." : "נא להשתמש בתכנית העדכון משורת הפקודה כיוון שיש לך עותק גדול עם למעלה מ־50 משתמשים.", + "Please use the command line updater because automatic updating is disabled in the config.php." : "יש להשתמש בעדכון על בסיס שורת פקודה כיוון שעדכון אוטומטי מנוטרל בקובץ config.php.", "For help, see the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentation</a>." : "לעזרה יש לעיין ב<a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">תיעוד</a>.", "I know that if I continue doing the update via web UI has the risk, that the request runs into a timeout and could cause data loss, but I have a backup and know how to restore my instance in case of a failure." : "ידוע לי שאם אמשיך דרך מנשק הדפדפן אהיה חשוף לסכנה, שהבקשה עשויה להיקלע לחוסר מענה וכתוצאה מכך אבדן נתונים, אך יש לי גיבוי וידוע לי איך לשחזר את העותק שלי במקרה של כשל.", "Upgrade via web on my own risk" : "השדרוג דרך האינטרנט הוא על אחריותי", diff --git a/core/l10n/he.json b/core/l10n/he.json index 120e62f3002..d306e949d47 100644 --- a/core/l10n/he.json +++ b/core/l10n/he.json @@ -42,7 +42,6 @@ "Repair info:" : "פרטי תיקון:", "Repair warning:" : "אזהרת תיקון:", "Repair error:" : "שגיאת תיקון:", - "Please use the command line updater because automatic updating is disabled in the config.php." : "יש להשתמש בעדכון על בסיס שורת פקודה כיוון שעדכון אוטומטי מנוטרל בקובץ config.php.", "Turned on maintenance mode" : "הפעלת מצב אחזקה", "Turned off maintenance mode" : "כיבוי מצב אחזקה", "Maintenance mode is kept active" : "מצב אחזקה נשמר פעיל", @@ -316,6 +315,7 @@ "Detailed logs" : "יומן מפורט", "Update needed" : "עדכון נדרש", "Please use the command line updater because you have a big instance with more than 50 users." : "נא להשתמש בתכנית העדכון משורת הפקודה כיוון שיש לך עותק גדול עם למעלה מ־50 משתמשים.", + "Please use the command line updater because automatic updating is disabled in the config.php." : "יש להשתמש בעדכון על בסיס שורת פקודה כיוון שעדכון אוטומטי מנוטרל בקובץ config.php.", "For help, see the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentation</a>." : "לעזרה יש לעיין ב<a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">תיעוד</a>.", "I know that if I continue doing the update via web UI has the risk, that the request runs into a timeout and could cause data loss, but I have a backup and know how to restore my instance in case of a failure." : "ידוע לי שאם אמשיך דרך מנשק הדפדפן אהיה חשוף לסכנה, שהבקשה עשויה להיקלע לחוסר מענה וכתוצאה מכך אבדן נתונים, אך יש לי גיבוי וידוע לי איך לשחזר את העותק שלי במקרה של כשל.", "Upgrade via web on my own risk" : "השדרוג דרך האינטרנט הוא על אחריותי", diff --git a/core/l10n/hr.js b/core/l10n/hr.js index 0c4645ea46b..bb77231e8a6 100644 --- a/core/l10n/hr.js +++ b/core/l10n/hr.js @@ -44,7 +44,6 @@ OC.L10N.register( "Repair info:" : "Informacije o ispravljanju pogreške:", "Repair warning:" : "Upozorenje o ispravljanju pogreške:", "Repair error:" : "Pogreška ispravljanja pogreške:", - "Please use the command line updater because automatic updating is disabled in the config.php." : "Ažurirajte putem naredbenog retka jer je automatsko ažuriranje onemogućeno u datoteci config.php.", "Turned on maintenance mode" : "Način rada za održavanje uključen", "Turned off maintenance mode" : "Način rada za održavanje isključen", "Maintenance mode is kept active" : "Način rada za održavanje održan", @@ -347,6 +346,7 @@ OC.L10N.register( "Detailed logs" : "Detaljni zapisnik", "Update needed" : "Potrebno ažurirati", "Please use the command line updater because you have a big instance with more than 50 users." : "Ažurirajte putem naredbenog retka jer imate veliku instancu s više od 50 korisnika.", + "Please use the command line updater because automatic updating is disabled in the config.php." : "Ažurirajte putem naredbenog retka jer je automatsko ažuriranje onemogućeno u datoteci config.php.", "For help, see the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentation</a>." : "Pomoć potražite u <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">dokumentaciji</a>.", "I know that if I continue doing the update via web UI has the risk, that the request runs into a timeout and could cause data loss, but I have a backup and know how to restore my instance in case of a failure." : "Ako nastavim s ažuriranjem putem korisničkog web sučelja, postoji rizik da taj zahtjev dosegne vremensko ograničenje i dođe do gubitka podataka, ali imam sigurnosnu kopiju i znam kako vratiti instancu u slučaju problema.", "Upgrade via web on my own risk" : "Nadogradnja preko mreže na vlastitu odgovornost", diff --git a/core/l10n/hr.json b/core/l10n/hr.json index 28a002cb497..d9b5c4646c8 100644 --- a/core/l10n/hr.json +++ b/core/l10n/hr.json @@ -42,7 +42,6 @@ "Repair info:" : "Informacije o ispravljanju pogreške:", "Repair warning:" : "Upozorenje o ispravljanju pogreške:", "Repair error:" : "Pogreška ispravljanja pogreške:", - "Please use the command line updater because automatic updating is disabled in the config.php." : "Ažurirajte putem naredbenog retka jer je automatsko ažuriranje onemogućeno u datoteci config.php.", "Turned on maintenance mode" : "Način rada za održavanje uključen", "Turned off maintenance mode" : "Način rada za održavanje isključen", "Maintenance mode is kept active" : "Način rada za održavanje održan", @@ -345,6 +344,7 @@ "Detailed logs" : "Detaljni zapisnik", "Update needed" : "Potrebno ažurirati", "Please use the command line updater because you have a big instance with more than 50 users." : "Ažurirajte putem naredbenog retka jer imate veliku instancu s više od 50 korisnika.", + "Please use the command line updater because automatic updating is disabled in the config.php." : "Ažurirajte putem naredbenog retka jer je automatsko ažuriranje onemogućeno u datoteci config.php.", "For help, see the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentation</a>." : "Pomoć potražite u <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">dokumentaciji</a>.", "I know that if I continue doing the update via web UI has the risk, that the request runs into a timeout and could cause data loss, but I have a backup and know how to restore my instance in case of a failure." : "Ako nastavim s ažuriranjem putem korisničkog web sučelja, postoji rizik da taj zahtjev dosegne vremensko ograničenje i dođe do gubitka podataka, ali imam sigurnosnu kopiju i znam kako vratiti instancu u slučaju problema.", "Upgrade via web on my own risk" : "Nadogradnja preko mreže na vlastitu odgovornost", diff --git a/core/l10n/hu.js b/core/l10n/hu.js index 64beeac3eae..d3eff67fc7d 100644 --- a/core/l10n/hu.js +++ b/core/l10n/hu.js @@ -51,7 +51,6 @@ OC.L10N.register( "Repair info:" : "Javítási információ:", "Repair warning:" : "Javítási figyelmeztetés:", "Repair error:" : "Javítási hiba:", - "Please use the command line updater because automatic updating is disabled in the config.php." : "Használja a parancssoros frissítőt, mert az automatikusa frissítés ki van kapcsolva a config.php-ban.", "Turned on maintenance mode" : "Karbantartási mód bekapcsolva", "Turned off maintenance mode" : "Karbantartási mód kikapcsolva", "Maintenance mode is kept active" : "Karbantartási mód aktiválva maradt", @@ -399,6 +398,7 @@ OC.L10N.register( "Detailed logs" : "Részletes naplók", "Update needed" : "Frissítés szükséges", "Please use the command line updater because you have a big instance with more than 50 users." : "Használja a parancssori frissítőt, mert 50 felhasználósnál nagyobb példánya van.", + "Please use the command line updater because automatic updating is disabled in the config.php." : "Használja a parancssoros frissítőt, mert az automatikusa frissítés ki van kapcsolva a config.php-ban.", "For help, see the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentation</a>." : "Segítségért tekintse meg a <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">dokumentációt</a>.", "I know that if I continue doing the update via web UI has the risk, that the request runs into a timeout and could cause data loss, but I have a backup and know how to restore my instance in case of a failure." : "Tudomásul veszem, hogy a webes frissítési felület használata közben fellépő időtúllépés adatvesztéssel járhat. Van biztonsági mentésem, hiba esetén tudom, hogyan állítsam vissza az adatokat.", "Upgrade via web on my own risk" : "Frissítés weben keresztül, saját felelősségre", diff --git a/core/l10n/hu.json b/core/l10n/hu.json index 98d6f61298d..ded26138a70 100644 --- a/core/l10n/hu.json +++ b/core/l10n/hu.json @@ -49,7 +49,6 @@ "Repair info:" : "Javítási információ:", "Repair warning:" : "Javítási figyelmeztetés:", "Repair error:" : "Javítási hiba:", - "Please use the command line updater because automatic updating is disabled in the config.php." : "Használja a parancssoros frissítőt, mert az automatikusa frissítés ki van kapcsolva a config.php-ban.", "Turned on maintenance mode" : "Karbantartási mód bekapcsolva", "Turned off maintenance mode" : "Karbantartási mód kikapcsolva", "Maintenance mode is kept active" : "Karbantartási mód aktiválva maradt", @@ -397,6 +396,7 @@ "Detailed logs" : "Részletes naplók", "Update needed" : "Frissítés szükséges", "Please use the command line updater because you have a big instance with more than 50 users." : "Használja a parancssori frissítőt, mert 50 felhasználósnál nagyobb példánya van.", + "Please use the command line updater because automatic updating is disabled in the config.php." : "Használja a parancssoros frissítőt, mert az automatikusa frissítés ki van kapcsolva a config.php-ban.", "For help, see the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentation</a>." : "Segítségért tekintse meg a <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">dokumentációt</a>.", "I know that if I continue doing the update via web UI has the risk, that the request runs into a timeout and could cause data loss, but I have a backup and know how to restore my instance in case of a failure." : "Tudomásul veszem, hogy a webes frissítési felület használata közben fellépő időtúllépés adatvesztéssel járhat. Van biztonsági mentésem, hiba esetén tudom, hogyan állítsam vissza az adatokat.", "Upgrade via web on my own risk" : "Frissítés weben keresztül, saját felelősségre", diff --git a/core/l10n/id.js b/core/l10n/id.js index f4d3e0ccdc2..857c70871a7 100644 --- a/core/l10n/id.js +++ b/core/l10n/id.js @@ -44,7 +44,6 @@ OC.L10N.register( "Repair info:" : "Info perbaikan:", "Repair warning:" : "Peringatan perbaikan:", "Repair error:" : "Galat perbaikan:", - "Please use the command line updater because automatic updating is disabled in the config.php." : "Gunakan pembaruan di command line karena pembaruan otomatis di nonaktifkan di config.php. ", "Turned on maintenance mode" : "Hidupkan mode perawatan", "Turned off maintenance mode" : "Matikan mode perawatan", "Maintenance mode is kept active" : "Mode Pemeliharaan masih aktif", @@ -335,6 +334,7 @@ OC.L10N.register( "Detailed logs" : "Log detail", "Update needed" : "Pembaruan dibutuhkan", "Please use the command line updater because you have a big instance with more than 50 users." : "Silakan gunakan command line updater, karena instalasi Anda memiliki pengguna lebih dari 50.", + "Please use the command line updater because automatic updating is disabled in the config.php." : "Gunakan pembaruan di command line karena pembaruan otomatis di nonaktifkan di config.php. ", "For help, see the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentation</a>." : "Lihat <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">dokumentasi</a> untuk panduan.", "I know that if I continue doing the update via web UI has the risk, that the request runs into a timeout and could cause data loss, but I have a backup and know how to restore my instance in case of a failure." : "Saya paham jika melakukan proses pemutakhiran via antarmuka web, berisiko komunikasi terhenti dan kemungkinan kehilangan data. Saya punya cadangan dan paham bagaimana cara pemulihan, jika terjadi kegagalan.", "Upgrade via web on my own risk" : "Pemutakhiran via web adalah risiko saya", diff --git a/core/l10n/id.json b/core/l10n/id.json index c8134fba289..5a94802ddcb 100644 --- a/core/l10n/id.json +++ b/core/l10n/id.json @@ -42,7 +42,6 @@ "Repair info:" : "Info perbaikan:", "Repair warning:" : "Peringatan perbaikan:", "Repair error:" : "Galat perbaikan:", - "Please use the command line updater because automatic updating is disabled in the config.php." : "Gunakan pembaruan di command line karena pembaruan otomatis di nonaktifkan di config.php. ", "Turned on maintenance mode" : "Hidupkan mode perawatan", "Turned off maintenance mode" : "Matikan mode perawatan", "Maintenance mode is kept active" : "Mode Pemeliharaan masih aktif", @@ -333,6 +332,7 @@ "Detailed logs" : "Log detail", "Update needed" : "Pembaruan dibutuhkan", "Please use the command line updater because you have a big instance with more than 50 users." : "Silakan gunakan command line updater, karena instalasi Anda memiliki pengguna lebih dari 50.", + "Please use the command line updater because automatic updating is disabled in the config.php." : "Gunakan pembaruan di command line karena pembaruan otomatis di nonaktifkan di config.php. ", "For help, see the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentation</a>." : "Lihat <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">dokumentasi</a> untuk panduan.", "I know that if I continue doing the update via web UI has the risk, that the request runs into a timeout and could cause data loss, but I have a backup and know how to restore my instance in case of a failure." : "Saya paham jika melakukan proses pemutakhiran via antarmuka web, berisiko komunikasi terhenti dan kemungkinan kehilangan data. Saya punya cadangan dan paham bagaimana cara pemulihan, jika terjadi kegagalan.", "Upgrade via web on my own risk" : "Pemutakhiran via web adalah risiko saya", diff --git a/core/l10n/is.js b/core/l10n/is.js index 81e909245c2..2c9259e51de 100644 --- a/core/l10n/is.js +++ b/core/l10n/is.js @@ -46,7 +46,6 @@ OC.L10N.register( "Repair info:" : "Viðgerðarupplýsingar:", "Repair warning:" : "Viðvörun vegna viðgerðar:", "Repair error:" : "Villa í viðgerð:", - "Please use the command line updater because automatic updating is disabled in the config.php." : "Endilega notaðu uppfærslutólið af skipanalínu, því sjálfvirkar uppfærslur eru gerðar óvirkar í config.php.", "Turned on maintenance mode" : "Kveikt á viðhaldsham", "Turned off maintenance mode" : "Slökkt á viðhaldsham", "Maintenance mode is kept active" : "Viðhaldsham er haldið virkum", @@ -361,6 +360,7 @@ OC.L10N.register( "Detailed logs" : "Ítarlegar atvikaskrár", "Update needed" : "Þarfnast uppfærslu", "Please use the command line updater because you have a big instance with more than 50 users." : "Endilega notaðu uppfærslutólið af skipanalínu, því þú ert með mjög stóra uppsetningu með fleiri en 50 notendum.", + "Please use the command line updater because automatic updating is disabled in the config.php." : "Endilega notaðu uppfærslutólið af skipanalínu, því sjálfvirkar uppfærslur eru gerðar óvirkar í config.php.", "For help, see the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentation</a>." : "Til að fá hjálp er best að skoða fyrst <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">hjálparskjölin</a>.", "I know that if I continue doing the update via web UI has the risk, that the request runs into a timeout and could cause data loss, but I have a backup and know how to restore my instance in case of a failure." : "Ég veit að ef ég held uppfærslunni áfram í gegnum vefviðmótið, þá er sú áhætta fyrir hendi að beiðnin falli á tímamörkum, sem aftur gæti valdið gagnatapi - en ég á öryggisafrit og veit hvernig ég get endurheimt uppsetninguna mína ef aðgerðin misferst.", "Upgrade via web on my own risk" : "Uppfæra með vefviðmóti á mína eigin ábyrgð", diff --git a/core/l10n/is.json b/core/l10n/is.json index dd901359bef..b6f32138f59 100644 --- a/core/l10n/is.json +++ b/core/l10n/is.json @@ -44,7 +44,6 @@ "Repair info:" : "Viðgerðarupplýsingar:", "Repair warning:" : "Viðvörun vegna viðgerðar:", "Repair error:" : "Villa í viðgerð:", - "Please use the command line updater because automatic updating is disabled in the config.php." : "Endilega notaðu uppfærslutólið af skipanalínu, því sjálfvirkar uppfærslur eru gerðar óvirkar í config.php.", "Turned on maintenance mode" : "Kveikt á viðhaldsham", "Turned off maintenance mode" : "Slökkt á viðhaldsham", "Maintenance mode is kept active" : "Viðhaldsham er haldið virkum", @@ -359,6 +358,7 @@ "Detailed logs" : "Ítarlegar atvikaskrár", "Update needed" : "Þarfnast uppfærslu", "Please use the command line updater because you have a big instance with more than 50 users." : "Endilega notaðu uppfærslutólið af skipanalínu, því þú ert með mjög stóra uppsetningu með fleiri en 50 notendum.", + "Please use the command line updater because automatic updating is disabled in the config.php." : "Endilega notaðu uppfærslutólið af skipanalínu, því sjálfvirkar uppfærslur eru gerðar óvirkar í config.php.", "For help, see the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentation</a>." : "Til að fá hjálp er best að skoða fyrst <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">hjálparskjölin</a>.", "I know that if I continue doing the update via web UI has the risk, that the request runs into a timeout and could cause data loss, but I have a backup and know how to restore my instance in case of a failure." : "Ég veit að ef ég held uppfærslunni áfram í gegnum vefviðmótið, þá er sú áhætta fyrir hendi að beiðnin falli á tímamörkum, sem aftur gæti valdið gagnatapi - en ég á öryggisafrit og veit hvernig ég get endurheimt uppsetninguna mína ef aðgerðin misferst.", "Upgrade via web on my own risk" : "Uppfæra með vefviðmóti á mína eigin ábyrgð", diff --git a/core/l10n/it.js b/core/l10n/it.js index 0e634aa61a4..bc0d740eb33 100644 --- a/core/l10n/it.js +++ b/core/l10n/it.js @@ -49,7 +49,6 @@ OC.L10N.register( "Repair info:" : "Informazioni di riparazione:", "Repair warning:" : "Avviso di riparazione", "Repair error:" : "Errore di riparazione:", - "Please use the command line updater because automatic updating is disabled in the config.php." : "Utilizza lo strumento da riga di comando poiché l'aggiornamento automatico è disabilitato nel file config.php.", "Turned on maintenance mode" : "Modalità di manutenzione attivata", "Turned off maintenance mode" : "Modalità di manutenzione disattivata", "Maintenance mode is kept active" : "La modalità di manutenzione è lasciata attiva", @@ -391,6 +390,7 @@ OC.L10N.register( "Detailed logs" : "Log dettagliati", "Update needed" : "Aggiornamento necessario", "Please use the command line updater because you have a big instance with more than 50 users." : "Utilizza lo strumento di aggiornamento da riga di comando perché hai un'istanza grande con più di 50 utenti.", + "Please use the command line updater because automatic updating is disabled in the config.php." : "Utilizza lo strumento da riga di comando poiché l'aggiornamento automatico è disabilitato nel file config.php.", "For help, see the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentation</a>." : "Per la guida, vedi la <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentazione</a>.", "I know that if I continue doing the update via web UI has the risk, that the request runs into a timeout and could cause data loss, but I have a backup and know how to restore my instance in case of a failure." : "Sono consapevole che, procedendo con l'aggiornamento tramite interfaccia web, esista il rischio che la richiesta possa scadere e causare perdite di dati, ma ho una copia di sicurezza e so come ripristinare la mia istanza in caso di problemi.", "Upgrade via web on my own risk" : "Aggiorna tramite web a mio rischio", diff --git a/core/l10n/it.json b/core/l10n/it.json index f7f60a75b11..7c341a50c6e 100644 --- a/core/l10n/it.json +++ b/core/l10n/it.json @@ -47,7 +47,6 @@ "Repair info:" : "Informazioni di riparazione:", "Repair warning:" : "Avviso di riparazione", "Repair error:" : "Errore di riparazione:", - "Please use the command line updater because automatic updating is disabled in the config.php." : "Utilizza lo strumento da riga di comando poiché l'aggiornamento automatico è disabilitato nel file config.php.", "Turned on maintenance mode" : "Modalità di manutenzione attivata", "Turned off maintenance mode" : "Modalità di manutenzione disattivata", "Maintenance mode is kept active" : "La modalità di manutenzione è lasciata attiva", @@ -389,6 +388,7 @@ "Detailed logs" : "Log dettagliati", "Update needed" : "Aggiornamento necessario", "Please use the command line updater because you have a big instance with more than 50 users." : "Utilizza lo strumento di aggiornamento da riga di comando perché hai un'istanza grande con più di 50 utenti.", + "Please use the command line updater because automatic updating is disabled in the config.php." : "Utilizza lo strumento da riga di comando poiché l'aggiornamento automatico è disabilitato nel file config.php.", "For help, see the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentation</a>." : "Per la guida, vedi la <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentazione</a>.", "I know that if I continue doing the update via web UI has the risk, that the request runs into a timeout and could cause data loss, but I have a backup and know how to restore my instance in case of a failure." : "Sono consapevole che, procedendo con l'aggiornamento tramite interfaccia web, esista il rischio che la richiesta possa scadere e causare perdite di dati, ma ho una copia di sicurezza e so come ripristinare la mia istanza in caso di problemi.", "Upgrade via web on my own risk" : "Aggiorna tramite web a mio rischio", diff --git a/core/l10n/ja.js b/core/l10n/ja.js index 82e954fecae..b1eca749575 100644 --- a/core/l10n/ja.js +++ b/core/l10n/ja.js @@ -25,12 +25,15 @@ OC.L10N.register( "State token does not match" : "状態トークンが一致しません", "Invalid app password" : "アプリパスワードが無効です", "Could not complete login" : "ログインが完了できませんでした", + "State token missing" : "状態トークンがありません", "Your login token is invalid or has expired" : "あなたのログイントークンは無効か期限が切れています。", "This community release of Nextcloud is unsupported and push notifications are limited." : "コミュニティリリースのNextcloudにサポートはなく、プッシュ通知には制限があります", "Login" : "ログイン", + "Please try again" : "再度お試しください", "Password reset is disabled" : "パスワードリセットは無効化されています", "Could not reset password because the token is expired" : "トークンが期限切れのため、パスワードをリセットできませんでした", "Could not reset password because the token is invalid" : "トークンが無効なため、パスワードをリセットできませんでした", + "Password is too long. Maximum allowed length is 469 characters." : "パスワードが長すぎます。使用できる文字数は 469 文字までです", "%s password reset" : "%s パスワードリセット", "Password reset" : "パスワードのリセット", "Click the following button to reset your password. If you have not requested the password reset, then ignore this email." : "次のボタンをクリックして、パスワードをリセットしてください。 パスワードリセットをリクエストしていない場合は、このメールを無視してください。", @@ -48,7 +51,7 @@ OC.L10N.register( "Repair info:" : "修復情報:", "Repair warning:" : "修復警告:", "Repair error:" : "修復エラー:", - "Please use the command line updater because automatic updating is disabled in the config.php." : "config.php で自動更新が無効になっているので、コマンドラインでの更新を利用してください。", + "Please use the command line updater because updating via the browser is disabled in your config.php." : "config.php でブラウザ経由の更新が無効になっているため、コマンドラインアップデーターをご利用ください。", "Turned on maintenance mode" : "メンテナンスモードがオンになりました", "Turned off maintenance mode" : "メンテナンスモードがオフになりました", "Maintenance mode is kept active" : "メンテナンスモードが継続中です", @@ -99,6 +102,7 @@ OC.L10N.register( "This instance is missing some recommended PHP modules. For improved performance and better compatibility it is highly recommended to install them." : "このインスタンスには推奨されるPHPモジュールがいくつかありません。 パフォーマンスの向上と互換性の向上のために、それらをインストールすることを強くお勧めします。", "The PHP module \"imagick\" is not enabled although the theming app is. For favicon generation to work correctly, you need to install and enable this module." : "テーマ別アプリは有効ですが、PHPモジュール「imagick」が有効ではありません。ファビコン生成を正しく行うには、このモジュールをインストールし、有効化する必要があります。", "The PHP modules \"gmp\" and/or \"bcmath\" are not enabled. If you use WebAuthn passwordless authentication, these modules are required." : "PHP モジュール \"gmp\" および \"bcmath\" が有効になっていない。WebAuthnパスワードレス認証を利用する場合は、これらのモジュールが必要です。", + "It seems like you are running a 32-bit PHP version. Nextcloud needs 64-bit to run well. Please upgrade your OS and PHP to 64-bit! For further details read {linkstart}the documentation page ↗{linkend} about this." : "このシステムは32ビット版のPHPで動いているようです。Nextcloudを正常に動かすには64ビット版が必要です。OSとPHPを64ビット版にアップグレードしてください!詳細は{linkstart}こちらのドキュメント ↗{linkend}をご覧ください。", "Module php-imagick in this instance has no SVG support. For better compatibility it is recommended to install it." : "このインスタンスのphp-imagickモジュールはSVGをサポートしていません。互換性の向上のために、インストールすることをお勧めします。", "Some columns in the database are missing a conversion to big int. Due to the fact that changing column types on big tables could take some time they were not changed automatically. By running \"occ db:convert-filecache-bigint\" those pending changes could be applied manually. This operation needs to be made while the instance is offline. For further details read {linkstart}the documentation page about this ↗{linkend}." : "データベース内の一部のカラムで、大きなint型への変換が欠落しています。大きなテーブルのカラムタイプの変更には時間がかかるため、それらは自動的に変更されませんでした。occ db:convert-filecache-bigint\" を実行することで、それらの保留中の変更を手動で適用することができます。この操作は、インスタンスがオフラインの時に行う必要があります。詳しくは{linkstart}このドキュメントページ{linkend}を読んでください。", "SQLite is currently being used as the backend database. For larger installations we recommend that you switch to a different database backend." : "SQLiteがデータベースとして使用されています。大規模な運用では別のデータベースに切り替えることをお勧めします。", @@ -180,6 +184,8 @@ OC.L10N.register( "Simple email app nicely integrated with Files, Contacts and Calendar." : "ファイル、連絡先、カレンダーとうまく合わさったシンプルなメールアプリ。", "Chatting, video calls, screensharing, online meetings and web conferencing – in your browser and with mobile apps." : "チャット、ビデオ通話、画面共有、オンラインミーティング、ウェブ会議 - ブラウザーとモバイルアプリで。", "Collaborative documents, spreadsheets and presentations, built on Collabora Online." : "Collabora Online上に構築された、共同作業ドキュメント、スプレッドシート、およびプレゼンテーション", + "Distraction free note taking app." : "集中モードメモアプリ", + "Search contacts" : "連絡先を検索", "Forgot password?" : "パスワードをお忘れですか?", "Log in with a device" : "デバイスを使ってログインする", "Back" : "戻る", @@ -189,6 +195,7 @@ OC.L10N.register( "You have not added any info yet" : "まだ情報が追加されていません", "{user} has not added any info yet" : "{user}が、まだ情報を追加していません", "Error opening the user status modal, try hard refreshing the page" : "ユーザーステータスモーダルを開くときにエラーが発生しました。ページを更新してみてください", + "Search starts once you start typing and results may be reached with the arrow keys" : "入力が始まると検索が始まり、矢印キーで検索結果を表示することができます", "Reset search" : "検索をリセットする", "Start search" : "検索開始", "Search for {name} only" : "{name}のみを検索", @@ -209,6 +216,7 @@ OC.L10N.register( "Settings menu" : "メニュー設定", "Search {types} …" : "{types} を検索…", "Settings" : "設定", + "Avatar of {fullName}" : "{fullName} のアバター", "Could not load your contacts" : "連絡先を読み込めませんでした", "Search contacts …" : "連絡先を検索...", "No contacts found" : "連絡先が見つかりません", @@ -347,6 +355,7 @@ OC.L10N.register( "Skip to main content" : "メインコンテンツへスキップ", "Skip to navigation of app" : "アプリのナビゲーションにスキップする", "Get your own free account" : "無料でアカウントを作成", + "%s homepage" : "%s ホームページ", "Confirm your password" : "パスワードを確認", "%s's homepage" : "%sのホームページ", "Connect to your account" : "あなたのアカウントに接続する", @@ -393,6 +402,7 @@ OC.L10N.register( "Detailed logs" : "詳細ログ", "Update needed" : "更新が必要です", "Please use the command line updater because you have a big instance with more than 50 users." : "50人以上が使う大規模システムの場合は、コマンドラインでアップグレードを行ってください。", + "Please use the command line updater because automatic updating is disabled in the config.php." : "config.php で自動更新が無効になっているので、コマンドラインでの更新を利用してください。", "For help, see the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentation</a>." : "不明な場合、 <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">ドキュメント</a>を参照してください。", "I know that if I continue doing the update via web UI has the risk, that the request runs into a timeout and could cause data loss, but I have a backup and know how to restore my instance in case of a failure." : "Web 画面から続行すると危険性があることを理解しています。この操作がタイムアウトすると、データが失われる危険性があることを理解しています。もし失敗した場合には取得済みのバックアップから修復する方法を理解しています。", "Upgrade via web on my own risk" : "危険性を理解した上でWeb画面からアップグレード", @@ -415,6 +425,7 @@ OC.L10N.register( "More apps menu" : "その他のアプリメニュー", "Contacts" : "連絡先", "Contacts menu" : "連絡先メニュー", - "Setup two-factor authentication" : "二要素認証を設定" + "Setup two-factor authentication" : "二要素認証を設定", + "It seems like you are running a 32-bit PHP version. Nextcloud needs 64-bit to run well. Please upgrade your OS and PHP to 64-bit! For further details read {linkstart}the documentation page about this ↗{linkend}." : "このシステムは32ビット版のPHPで動いているようです。Nextcloudを正常に動かすには64ビット版が必要です。OSとPHPを64ビット版にアップグレードしてください!詳細は{linkstart}こちらのドキュメント ↗{linkend}をご覧ください。" }, "nplurals=1; plural=0;"); diff --git a/core/l10n/ja.json b/core/l10n/ja.json index 3b36b239c79..461bb635e26 100644 --- a/core/l10n/ja.json +++ b/core/l10n/ja.json @@ -23,12 +23,15 @@ "State token does not match" : "状態トークンが一致しません", "Invalid app password" : "アプリパスワードが無効です", "Could not complete login" : "ログインが完了できませんでした", + "State token missing" : "状態トークンがありません", "Your login token is invalid or has expired" : "あなたのログイントークンは無効か期限が切れています。", "This community release of Nextcloud is unsupported and push notifications are limited." : "コミュニティリリースのNextcloudにサポートはなく、プッシュ通知には制限があります", "Login" : "ログイン", + "Please try again" : "再度お試しください", "Password reset is disabled" : "パスワードリセットは無効化されています", "Could not reset password because the token is expired" : "トークンが期限切れのため、パスワードをリセットできませんでした", "Could not reset password because the token is invalid" : "トークンが無効なため、パスワードをリセットできませんでした", + "Password is too long. Maximum allowed length is 469 characters." : "パスワードが長すぎます。使用できる文字数は 469 文字までです", "%s password reset" : "%s パスワードリセット", "Password reset" : "パスワードのリセット", "Click the following button to reset your password. If you have not requested the password reset, then ignore this email." : "次のボタンをクリックして、パスワードをリセットしてください。 パスワードリセットをリクエストしていない場合は、このメールを無視してください。", @@ -46,7 +49,7 @@ "Repair info:" : "修復情報:", "Repair warning:" : "修復警告:", "Repair error:" : "修復エラー:", - "Please use the command line updater because automatic updating is disabled in the config.php." : "config.php で自動更新が無効になっているので、コマンドラインでの更新を利用してください。", + "Please use the command line updater because updating via the browser is disabled in your config.php." : "config.php でブラウザ経由の更新が無効になっているため、コマンドラインアップデーターをご利用ください。", "Turned on maintenance mode" : "メンテナンスモードがオンになりました", "Turned off maintenance mode" : "メンテナンスモードがオフになりました", "Maintenance mode is kept active" : "メンテナンスモードが継続中です", @@ -97,6 +100,7 @@ "This instance is missing some recommended PHP modules. For improved performance and better compatibility it is highly recommended to install them." : "このインスタンスには推奨されるPHPモジュールがいくつかありません。 パフォーマンスの向上と互換性の向上のために、それらをインストールすることを強くお勧めします。", "The PHP module \"imagick\" is not enabled although the theming app is. For favicon generation to work correctly, you need to install and enable this module." : "テーマ別アプリは有効ですが、PHPモジュール「imagick」が有効ではありません。ファビコン生成を正しく行うには、このモジュールをインストールし、有効化する必要があります。", "The PHP modules \"gmp\" and/or \"bcmath\" are not enabled. If you use WebAuthn passwordless authentication, these modules are required." : "PHP モジュール \"gmp\" および \"bcmath\" が有効になっていない。WebAuthnパスワードレス認証を利用する場合は、これらのモジュールが必要です。", + "It seems like you are running a 32-bit PHP version. Nextcloud needs 64-bit to run well. Please upgrade your OS and PHP to 64-bit! For further details read {linkstart}the documentation page ↗{linkend} about this." : "このシステムは32ビット版のPHPで動いているようです。Nextcloudを正常に動かすには64ビット版が必要です。OSとPHPを64ビット版にアップグレードしてください!詳細は{linkstart}こちらのドキュメント ↗{linkend}をご覧ください。", "Module php-imagick in this instance has no SVG support. For better compatibility it is recommended to install it." : "このインスタンスのphp-imagickモジュールはSVGをサポートしていません。互換性の向上のために、インストールすることをお勧めします。", "Some columns in the database are missing a conversion to big int. Due to the fact that changing column types on big tables could take some time they were not changed automatically. By running \"occ db:convert-filecache-bigint\" those pending changes could be applied manually. This operation needs to be made while the instance is offline. For further details read {linkstart}the documentation page about this ↗{linkend}." : "データベース内の一部のカラムで、大きなint型への変換が欠落しています。大きなテーブルのカラムタイプの変更には時間がかかるため、それらは自動的に変更されませんでした。occ db:convert-filecache-bigint\" を実行することで、それらの保留中の変更を手動で適用することができます。この操作は、インスタンスがオフラインの時に行う必要があります。詳しくは{linkstart}このドキュメントページ{linkend}を読んでください。", "SQLite is currently being used as the backend database. For larger installations we recommend that you switch to a different database backend." : "SQLiteがデータベースとして使用されています。大規模な運用では別のデータベースに切り替えることをお勧めします。", @@ -178,6 +182,8 @@ "Simple email app nicely integrated with Files, Contacts and Calendar." : "ファイル、連絡先、カレンダーとうまく合わさったシンプルなメールアプリ。", "Chatting, video calls, screensharing, online meetings and web conferencing – in your browser and with mobile apps." : "チャット、ビデオ通話、画面共有、オンラインミーティング、ウェブ会議 - ブラウザーとモバイルアプリで。", "Collaborative documents, spreadsheets and presentations, built on Collabora Online." : "Collabora Online上に構築された、共同作業ドキュメント、スプレッドシート、およびプレゼンテーション", + "Distraction free note taking app." : "集中モードメモアプリ", + "Search contacts" : "連絡先を検索", "Forgot password?" : "パスワードをお忘れですか?", "Log in with a device" : "デバイスを使ってログインする", "Back" : "戻る", @@ -187,6 +193,7 @@ "You have not added any info yet" : "まだ情報が追加されていません", "{user} has not added any info yet" : "{user}が、まだ情報を追加していません", "Error opening the user status modal, try hard refreshing the page" : "ユーザーステータスモーダルを開くときにエラーが発生しました。ページを更新してみてください", + "Search starts once you start typing and results may be reached with the arrow keys" : "入力が始まると検索が始まり、矢印キーで検索結果を表示することができます", "Reset search" : "検索をリセットする", "Start search" : "検索開始", "Search for {name} only" : "{name}のみを検索", @@ -207,6 +214,7 @@ "Settings menu" : "メニュー設定", "Search {types} …" : "{types} を検索…", "Settings" : "設定", + "Avatar of {fullName}" : "{fullName} のアバター", "Could not load your contacts" : "連絡先を読み込めませんでした", "Search contacts …" : "連絡先を検索...", "No contacts found" : "連絡先が見つかりません", @@ -345,6 +353,7 @@ "Skip to main content" : "メインコンテンツへスキップ", "Skip to navigation of app" : "アプリのナビゲーションにスキップする", "Get your own free account" : "無料でアカウントを作成", + "%s homepage" : "%s ホームページ", "Confirm your password" : "パスワードを確認", "%s's homepage" : "%sのホームページ", "Connect to your account" : "あなたのアカウントに接続する", @@ -391,6 +400,7 @@ "Detailed logs" : "詳細ログ", "Update needed" : "更新が必要です", "Please use the command line updater because you have a big instance with more than 50 users." : "50人以上が使う大規模システムの場合は、コマンドラインでアップグレードを行ってください。", + "Please use the command line updater because automatic updating is disabled in the config.php." : "config.php で自動更新が無効になっているので、コマンドラインでの更新を利用してください。", "For help, see the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentation</a>." : "不明な場合、 <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">ドキュメント</a>を参照してください。", "I know that if I continue doing the update via web UI has the risk, that the request runs into a timeout and could cause data loss, but I have a backup and know how to restore my instance in case of a failure." : "Web 画面から続行すると危険性があることを理解しています。この操作がタイムアウトすると、データが失われる危険性があることを理解しています。もし失敗した場合には取得済みのバックアップから修復する方法を理解しています。", "Upgrade via web on my own risk" : "危険性を理解した上でWeb画面からアップグレード", @@ -413,6 +423,7 @@ "More apps menu" : "その他のアプリメニュー", "Contacts" : "連絡先", "Contacts menu" : "連絡先メニュー", - "Setup two-factor authentication" : "二要素認証を設定" + "Setup two-factor authentication" : "二要素認証を設定", + "It seems like you are running a 32-bit PHP version. Nextcloud needs 64-bit to run well. Please upgrade your OS and PHP to 64-bit! For further details read {linkstart}the documentation page about this ↗{linkend}." : "このシステムは32ビット版のPHPで動いているようです。Nextcloudを正常に動かすには64ビット版が必要です。OSとPHPを64ビット版にアップグレードしてください!詳細は{linkstart}こちらのドキュメント ↗{linkend}をご覧ください。" },"pluralForm" :"nplurals=1; plural=0;" }
\ No newline at end of file diff --git a/core/l10n/ka_GE.js b/core/l10n/ka_GE.js index 18fd5b5a157..e0d3ef3727d 100644 --- a/core/l10n/ka_GE.js +++ b/core/l10n/ka_GE.js @@ -28,7 +28,6 @@ OC.L10N.register( "Reset your password" : "აღადგნიეთ თქვენი პაროლი", "Preparing update" : "განახლების მომზადება", "[%d / %d]: %s" : "[%d / %d]: %s", - "Please use the command line updater because automatic updating is disabled in the config.php." : "ავტომატური განახლება config.php-ში გათიშულია, გთხოვთ ისარგებლოთ command-line განახლებით.", "Turned on maintenance mode" : "სარემონტო რეჟიმი ჩაირთო", "Turned off maintenance mode" : "სარემონტო რეჟიმი გაითიშა", "Maintenance mode is kept active" : "სარემონტო რეჟიმი დარჩა აქტიური", @@ -213,6 +212,7 @@ OC.L10N.register( "Detailed logs" : "დეტალური ლოგები", "Update needed" : "საჭიროა განახლება", "Please use the command line updater because you have a big instance with more than 50 users." : "გთხოვთ მოიხმაროთ \"command-line\" განმანახლებელი რადგანაც ეს დიდი ინსტანციაა, მასზე 50-ზე მეტი მომხმარებელია.", + "Please use the command line updater because automatic updating is disabled in the config.php." : "ავტომატური განახლება config.php-ში გათიშულია, გთხოვთ ისარგებლოთ command-line განახლებით.", "For help, see the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentation</a>." : "დახმარებისთვის <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">იხილეთ დოკუმენტაცია</a>.", "I know that if I continue doing the update via web UI has the risk, that the request runs into a timeout and could cause data loss, but I have a backup and know how to restore my instance in case of a failure." : "ვიცი რომ, თუ გავაგრძელებ განახლებას ვებ-ინტერფეისით, არის რისკი, რომ მოთხოვნას დრო ამოეწურება და შეიძლება მოხდეს მონაცემების დაკარგვა, თუმცა მაქვს ბექაფი და ვიცი თუ როგორ აღვადგინო ინსტანცია იმ შემთხვევაში თუ მოხდება შეცდომა.", "Upgrade via web on my own risk" : "ვებით განაახლეთ თქვენი პასუხისმგებლობით", diff --git a/core/l10n/ka_GE.json b/core/l10n/ka_GE.json index dd78d5a3089..0d6350be410 100644 --- a/core/l10n/ka_GE.json +++ b/core/l10n/ka_GE.json @@ -26,7 +26,6 @@ "Reset your password" : "აღადგნიეთ თქვენი პაროლი", "Preparing update" : "განახლების მომზადება", "[%d / %d]: %s" : "[%d / %d]: %s", - "Please use the command line updater because automatic updating is disabled in the config.php." : "ავტომატური განახლება config.php-ში გათიშულია, გთხოვთ ისარგებლოთ command-line განახლებით.", "Turned on maintenance mode" : "სარემონტო რეჟიმი ჩაირთო", "Turned off maintenance mode" : "სარემონტო რეჟიმი გაითიშა", "Maintenance mode is kept active" : "სარემონტო რეჟიმი დარჩა აქტიური", @@ -211,6 +210,7 @@ "Detailed logs" : "დეტალური ლოგები", "Update needed" : "საჭიროა განახლება", "Please use the command line updater because you have a big instance with more than 50 users." : "გთხოვთ მოიხმაროთ \"command-line\" განმანახლებელი რადგანაც ეს დიდი ინსტანციაა, მასზე 50-ზე მეტი მომხმარებელია.", + "Please use the command line updater because automatic updating is disabled in the config.php." : "ავტომატური განახლება config.php-ში გათიშულია, გთხოვთ ისარგებლოთ command-line განახლებით.", "For help, see the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentation</a>." : "დახმარებისთვის <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">იხილეთ დოკუმენტაცია</a>.", "I know that if I continue doing the update via web UI has the risk, that the request runs into a timeout and could cause data loss, but I have a backup and know how to restore my instance in case of a failure." : "ვიცი რომ, თუ გავაგრძელებ განახლებას ვებ-ინტერფეისით, არის რისკი, რომ მოთხოვნას დრო ამოეწურება და შეიძლება მოხდეს მონაცემების დაკარგვა, თუმცა მაქვს ბექაფი და ვიცი თუ როგორ აღვადგინო ინსტანცია იმ შემთხვევაში თუ მოხდება შეცდომა.", "Upgrade via web on my own risk" : "ვებით განაახლეთ თქვენი პასუხისმგებლობით", diff --git a/core/l10n/ko.js b/core/l10n/ko.js index 82562dccef6..35b9c5bea34 100644 --- a/core/l10n/ko.js +++ b/core/l10n/ko.js @@ -47,7 +47,6 @@ OC.L10N.register( "Repair info:" : "수리 정보:", "Repair warning:" : "수리 경고:", "Repair error:" : "수리 오류:", - "Please use the command line updater because automatic updating is disabled in the config.php." : "config.php에서 자동 업데이트가 비활성화되어 있기 때문에 명령줄 업데이트를 사용하십시오.", "Turned on maintenance mode" : "유지 보수 모드 켜짐", "Turned off maintenance mode" : "유지 보수 모드 꺼짐", "Maintenance mode is kept active" : "유지 보수 모드가 켜져 있음", @@ -371,6 +370,7 @@ OC.L10N.register( "Detailed logs" : "자세한 로그", "Update needed" : "업데이트 필요", "Please use the command line updater because you have a big instance with more than 50 users." : "현재 인스턴스에 50명 이상의 사용자가 있기 때문에 명령행 업데이터를 사용하십시오.", + "Please use the command line updater because automatic updating is disabled in the config.php." : "config.php에서 자동 업데이트가 비활성화되어 있기 때문에 명령줄 업데이트를 사용하십시오.", "For help, see the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentation</a>." : "도움말을 보려면 <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">문서</a>를 참조하십시오.", "I know that if I continue doing the update via web UI has the risk, that the request runs into a timeout and could cause data loss, but I have a backup and know how to restore my instance in case of a failure." : "웹 UI를 통한 업데이트 시 요청 시간이 초과되어 데이터가 손실될 수 있는 위험성을 알고 있으며, 내 데이터를 백업해 두었고 실패한 경우 복원할 수 있는 방법을 알고 있습니다.", "Upgrade via web on my own risk" : "그래도 웹으로 업데이트하기", diff --git a/core/l10n/ko.json b/core/l10n/ko.json index 6ae74868975..2cf64b47f2e 100644 --- a/core/l10n/ko.json +++ b/core/l10n/ko.json @@ -45,7 +45,6 @@ "Repair info:" : "수리 정보:", "Repair warning:" : "수리 경고:", "Repair error:" : "수리 오류:", - "Please use the command line updater because automatic updating is disabled in the config.php." : "config.php에서 자동 업데이트가 비활성화되어 있기 때문에 명령줄 업데이트를 사용하십시오.", "Turned on maintenance mode" : "유지 보수 모드 켜짐", "Turned off maintenance mode" : "유지 보수 모드 꺼짐", "Maintenance mode is kept active" : "유지 보수 모드가 켜져 있음", @@ -369,6 +368,7 @@ "Detailed logs" : "자세한 로그", "Update needed" : "업데이트 필요", "Please use the command line updater because you have a big instance with more than 50 users." : "현재 인스턴스에 50명 이상의 사용자가 있기 때문에 명령행 업데이터를 사용하십시오.", + "Please use the command line updater because automatic updating is disabled in the config.php." : "config.php에서 자동 업데이트가 비활성화되어 있기 때문에 명령줄 업데이트를 사용하십시오.", "For help, see the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentation</a>." : "도움말을 보려면 <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">문서</a>를 참조하십시오.", "I know that if I continue doing the update via web UI has the risk, that the request runs into a timeout and could cause data loss, but I have a backup and know how to restore my instance in case of a failure." : "웹 UI를 통한 업데이트 시 요청 시간이 초과되어 데이터가 손실될 수 있는 위험성을 알고 있으며, 내 데이터를 백업해 두었고 실패한 경우 복원할 수 있는 방법을 알고 있습니다.", "Upgrade via web on my own risk" : "그래도 웹으로 업데이트하기", diff --git a/core/l10n/lo.js b/core/l10n/lo.js index 526620d7039..bea0dd2af88 100644 --- a/core/l10n/lo.js +++ b/core/l10n/lo.js @@ -34,7 +34,6 @@ OC.L10N.register( "Repair info:" : "ຂໍ້ມູນໃນການປັບປຸງ", "Repair warning:" : "ຄໍາເຕືອນ ການປັບປຸງ", "Repair error:" : "ການປັບປຸງຄັດຂ້ອງ", - "Please use the command line updater because automatic updating is disabled in the config.php." : "ກະລຸນາໃຊ້ ຄໍາສັ່ງ ປັບປຸງ ເພາະການອັບເດດໂດຍອັດຕະໂນມັດຖືກປິດໃນລະບົບການຕັ້ງຄ່າ config.php.", "Turned on maintenance mode" : "ເປີດໂມດການບໍາລຸງຮັກສາ", "Turned off maintenance mode" : "ປິດໂມດການບໍາລຸງຮັກສາ", "Maintenance mode is kept active" : "ໂມດການບໍາລຸງຮັກສາໄດ້ຖືກເປີດປະໄວ້", @@ -321,6 +320,7 @@ OC.L10N.register( "Detailed logs" : "ບັນທຶກໂດຍລາຍລະອຽດ", "Update needed" : "ການປັບປຸງທີ່ຈໍາເປັນ", "Please use the command line updater because you have a big instance with more than 50 users." : "ກະລຸນາໃຊ້ ອັບເດດແຖວຄໍາສັ່ງ ເພາະວ່າທ່ານມີຕົວຢ່າງໃຫຍ່ທີ່ມີຜູ້ໃຊ້ຫຼາຍກວ່າ 50 ຜຸ້ໃຊ້.", + "Please use the command line updater because automatic updating is disabled in the config.php." : "ກະລຸນາໃຊ້ ຄໍາສັ່ງ ປັບປຸງ ເພາະການອັບເດດໂດຍອັດຕະໂນມັດຖືກປິດໃນລະບົບການຕັ້ງຄ່າ config.php.", "For help, see the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentation</a>." : "ສໍາລັບການຊ່ວຍເຫຼືອ, ເບິ່ງ <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">ເອກະສານ</a>.", "I know that if I continue doing the update via web UI has the risk, that the request runs into a timeout and could cause data loss, but I have a backup and know how to restore my instance in case of a failure." : "ຂ້າ ພະເຈົ້າຮູ້ວ່າຖ້າຫາກວ່າຂ້າພະເຈົ້າສືບຕໍ່ເຮັດການອັບເດດຜ່ານເວັບ UI ມີຄວາມສ່ຽງ , ວ່າ ຄໍາຮ້ອງດຳເນີນການໝົດເວລາ ແລະ ອາດຈະເຮັດໃຫ້ການສູນເສຍຂໍ້ມູນ, ແຕ່ຂ້າ ພະເຈົ້າມີການສໍາຮອງ ແລະ ຮູ້ວິທີການກູ້ຄືນ ຕົວຢ່າງ ຂອງຂ້າພະເຈົ້າໃນກໍລະນີທີ່ລົ້ມ ເຫລວ .", "Upgrade via web on my own risk" : "ການຍົກລະດັບ ຜ່ານເວັບໄຊໃນຄວາມສ່ຽງຂອງຂ້ອຍເອງ", diff --git a/core/l10n/lo.json b/core/l10n/lo.json index 5f0b0de8122..96c287f9946 100644 --- a/core/l10n/lo.json +++ b/core/l10n/lo.json @@ -32,7 +32,6 @@ "Repair info:" : "ຂໍ້ມູນໃນການປັບປຸງ", "Repair warning:" : "ຄໍາເຕືອນ ການປັບປຸງ", "Repair error:" : "ການປັບປຸງຄັດຂ້ອງ", - "Please use the command line updater because automatic updating is disabled in the config.php." : "ກະລຸນາໃຊ້ ຄໍາສັ່ງ ປັບປຸງ ເພາະການອັບເດດໂດຍອັດຕະໂນມັດຖືກປິດໃນລະບົບການຕັ້ງຄ່າ config.php.", "Turned on maintenance mode" : "ເປີດໂມດການບໍາລຸງຮັກສາ", "Turned off maintenance mode" : "ປິດໂມດການບໍາລຸງຮັກສາ", "Maintenance mode is kept active" : "ໂມດການບໍາລຸງຮັກສາໄດ້ຖືກເປີດປະໄວ້", @@ -319,6 +318,7 @@ "Detailed logs" : "ບັນທຶກໂດຍລາຍລະອຽດ", "Update needed" : "ການປັບປຸງທີ່ຈໍາເປັນ", "Please use the command line updater because you have a big instance with more than 50 users." : "ກະລຸນາໃຊ້ ອັບເດດແຖວຄໍາສັ່ງ ເພາະວ່າທ່ານມີຕົວຢ່າງໃຫຍ່ທີ່ມີຜູ້ໃຊ້ຫຼາຍກວ່າ 50 ຜຸ້ໃຊ້.", + "Please use the command line updater because automatic updating is disabled in the config.php." : "ກະລຸນາໃຊ້ ຄໍາສັ່ງ ປັບປຸງ ເພາະການອັບເດດໂດຍອັດຕະໂນມັດຖືກປິດໃນລະບົບການຕັ້ງຄ່າ config.php.", "For help, see the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentation</a>." : "ສໍາລັບການຊ່ວຍເຫຼືອ, ເບິ່ງ <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">ເອກະສານ</a>.", "I know that if I continue doing the update via web UI has the risk, that the request runs into a timeout and could cause data loss, but I have a backup and know how to restore my instance in case of a failure." : "ຂ້າ ພະເຈົ້າຮູ້ວ່າຖ້າຫາກວ່າຂ້າພະເຈົ້າສືບຕໍ່ເຮັດການອັບເດດຜ່ານເວັບ UI ມີຄວາມສ່ຽງ , ວ່າ ຄໍາຮ້ອງດຳເນີນການໝົດເວລາ ແລະ ອາດຈະເຮັດໃຫ້ການສູນເສຍຂໍ້ມູນ, ແຕ່ຂ້າ ພະເຈົ້າມີການສໍາຮອງ ແລະ ຮູ້ວິທີການກູ້ຄືນ ຕົວຢ່າງ ຂອງຂ້າພະເຈົ້າໃນກໍລະນີທີ່ລົ້ມ ເຫລວ .", "Upgrade via web on my own risk" : "ການຍົກລະດັບ ຜ່ານເວັບໄຊໃນຄວາມສ່ຽງຂອງຂ້ອຍເອງ", diff --git a/core/l10n/lt_LT.js b/core/l10n/lt_LT.js index 73d199d9e2f..26a7b03a5e3 100644 --- a/core/l10n/lt_LT.js +++ b/core/l10n/lt_LT.js @@ -44,7 +44,6 @@ OC.L10N.register( "Repair info:" : "Pataisymo informacija:", "Repair warning:" : "Taisymo įspėjimas:", "Repair error:" : "Taisymo klaida:", - "Please use the command line updater because automatic updating is disabled in the config.php." : "Automatinis atnaujinimas išjungtas config.php faile. Naudokite komandinės eilutės atnaujinimo įrankį.", "Turned on maintenance mode" : "Įjungta techninės priežiūros veiksena", "Turned off maintenance mode" : "Išjungta techninės priežiūros veiksena", "Maintenance mode is kept active" : "Techninės priežiūros veiksena yra aktyvi", @@ -308,6 +307,7 @@ OC.L10N.register( "Detailed logs" : "Išsamūs žurnalai", "Update needed" : "Reikalingas atnaujinimas", "Please use the command line updater because you have a big instance with more than 50 users." : "Naudokite komandų eilutės atnaujinimo programą, nes turite didelį egzempliorių su daugiau nei 50 naudotojų.", + "Please use the command line updater because automatic updating is disabled in the config.php." : "Automatinis atnaujinimas išjungtas config.php faile. Naudokite komandinės eilutės atnaujinimo įrankį.", "For help, see the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentation</a>." : "Prireikus pagalbos, žiūrėkite <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">dokumentaciją</a>.", "I know that if I continue doing the update via web UI has the risk, that the request runs into a timeout and could cause data loss, but I have a backup and know how to restore my instance in case of a failure." : "Suprantu, kad atnaujinimui naudodamas vartotojo aplinką, rizikuoju, kad sistemos darbas sutriks ir prisijungę vartotojai gali netekti duomenų, turiu atsarginę duomenų kopiją ir žinau, kaip atstatyti duomenis nesėkmės atveju.", "Upgrade via web on my own risk" : "Atnaujinti per interneto naršyklę prisiimant riziką", diff --git a/core/l10n/lt_LT.json b/core/l10n/lt_LT.json index 4db347dad6e..15ab5cf1259 100644 --- a/core/l10n/lt_LT.json +++ b/core/l10n/lt_LT.json @@ -42,7 +42,6 @@ "Repair info:" : "Pataisymo informacija:", "Repair warning:" : "Taisymo įspėjimas:", "Repair error:" : "Taisymo klaida:", - "Please use the command line updater because automatic updating is disabled in the config.php." : "Automatinis atnaujinimas išjungtas config.php faile. Naudokite komandinės eilutės atnaujinimo įrankį.", "Turned on maintenance mode" : "Įjungta techninės priežiūros veiksena", "Turned off maintenance mode" : "Išjungta techninės priežiūros veiksena", "Maintenance mode is kept active" : "Techninės priežiūros veiksena yra aktyvi", @@ -306,6 +305,7 @@ "Detailed logs" : "Išsamūs žurnalai", "Update needed" : "Reikalingas atnaujinimas", "Please use the command line updater because you have a big instance with more than 50 users." : "Naudokite komandų eilutės atnaujinimo programą, nes turite didelį egzempliorių su daugiau nei 50 naudotojų.", + "Please use the command line updater because automatic updating is disabled in the config.php." : "Automatinis atnaujinimas išjungtas config.php faile. Naudokite komandinės eilutės atnaujinimo įrankį.", "For help, see the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentation</a>." : "Prireikus pagalbos, žiūrėkite <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">dokumentaciją</a>.", "I know that if I continue doing the update via web UI has the risk, that the request runs into a timeout and could cause data loss, but I have a backup and know how to restore my instance in case of a failure." : "Suprantu, kad atnaujinimui naudodamas vartotojo aplinką, rizikuoju, kad sistemos darbas sutriks ir prisijungę vartotojai gali netekti duomenų, turiu atsarginę duomenų kopiją ir žinau, kaip atstatyti duomenis nesėkmės atveju.", "Upgrade via web on my own risk" : "Atnaujinti per interneto naršyklę prisiimant riziką", diff --git a/core/l10n/lv.js b/core/l10n/lv.js index 20ebcabd026..7e81dfef0c4 100644 --- a/core/l10n/lv.js +++ b/core/l10n/lv.js @@ -36,7 +36,6 @@ OC.L10N.register( "Repair info:" : "Labošanas informācija: ", "Repair warning:" : "Labošanas brīdinājums:", "Repair error:" : "Labošanas kļūda:", - "Please use the command line updater because automatic updating is disabled in the config.php." : "Lūdzu izmanto komandrindas atjaunināšanu, jo automātiskā atjaunināšana ir atspējota konfigurācijas datnē config.php.", "Turned on maintenance mode" : "Ieslēgts uzturēšanas režīms", "Turned off maintenance mode" : "Izslēgts uzturēšanas režīms", "Maintenance mode is kept active" : "Uzturēšanas režīms ir paturēts aktīvs", @@ -244,6 +243,7 @@ OC.L10N.register( "Detailed logs" : "Detalizēti žurnāli", "Update needed" : "Nepieciešama atjaunināšana", "Please use the command line updater because you have a big instance with more than 50 users." : "Lūdzu, izmantojiet komandrindas atjauninātāju, jo jums ir vairāk nekā 50 lietotāji.", + "Please use the command line updater because automatic updating is disabled in the config.php." : "Lūdzu izmanto komandrindas atjaunināšanu, jo automātiskā atjaunināšana ir atspējota konfigurācijas datnē config.php.", "I know that if I continue doing the update via web UI has the risk, that the request runs into a timeout and could cause data loss, but I have a backup and know how to restore my instance in case of a failure." : "Es zinu ka ja es turpināšu atjauninājumu caur tīmekļa atjauninātāju ir risks ka pieprasījumam būs noliedze , kas var radīt datu zudumu, bet man ir dublējumkopija un es zinu kā atjaunot instanci neveiksmes gadijumā.", "Upgrade via web on my own risk" : "Atjaunināt caur tīmekļa atjauninātāju uz mana paša risku.", "Maintenance mode" : "Uzturēšanas režīms", diff --git a/core/l10n/lv.json b/core/l10n/lv.json index 449e10b62da..e1b6483e6d7 100644 --- a/core/l10n/lv.json +++ b/core/l10n/lv.json @@ -34,7 +34,6 @@ "Repair info:" : "Labošanas informācija: ", "Repair warning:" : "Labošanas brīdinājums:", "Repair error:" : "Labošanas kļūda:", - "Please use the command line updater because automatic updating is disabled in the config.php." : "Lūdzu izmanto komandrindas atjaunināšanu, jo automātiskā atjaunināšana ir atspējota konfigurācijas datnē config.php.", "Turned on maintenance mode" : "Ieslēgts uzturēšanas režīms", "Turned off maintenance mode" : "Izslēgts uzturēšanas režīms", "Maintenance mode is kept active" : "Uzturēšanas režīms ir paturēts aktīvs", @@ -242,6 +241,7 @@ "Detailed logs" : "Detalizēti žurnāli", "Update needed" : "Nepieciešama atjaunināšana", "Please use the command line updater because you have a big instance with more than 50 users." : "Lūdzu, izmantojiet komandrindas atjauninātāju, jo jums ir vairāk nekā 50 lietotāji.", + "Please use the command line updater because automatic updating is disabled in the config.php." : "Lūdzu izmanto komandrindas atjaunināšanu, jo automātiskā atjaunināšana ir atspējota konfigurācijas datnē config.php.", "I know that if I continue doing the update via web UI has the risk, that the request runs into a timeout and could cause data loss, but I have a backup and know how to restore my instance in case of a failure." : "Es zinu ka ja es turpināšu atjauninājumu caur tīmekļa atjauninātāju ir risks ka pieprasījumam būs noliedze , kas var radīt datu zudumu, bet man ir dublējumkopija un es zinu kā atjaunot instanci neveiksmes gadijumā.", "Upgrade via web on my own risk" : "Atjaunināt caur tīmekļa atjauninātāju uz mana paša risku.", "Maintenance mode" : "Uzturēšanas režīms", diff --git a/core/l10n/mk.js b/core/l10n/mk.js index 737be0a8c1d..6e8d5a1b7c7 100644 --- a/core/l10n/mk.js +++ b/core/l10n/mk.js @@ -46,7 +46,6 @@ OC.L10N.register( "Repair info:" : "Инфо при поправка:", "Repair warning:" : "Предупредувања при поправка:", "Repair error:" : "Грешка при поправка:", - "Please use the command line updater because automatic updating is disabled in the config.php." : "Ве молиме користете ја командната линија за ажурирање бидејќи автоматското ажурирање е оневозможено во config.php.", "Turned on maintenance mode" : "Вклучен е модот за одржување", "Turned off maintenance mode" : "Ислкучен е модот за одржување", "Maintenance mode is kept active" : "Модот за одржување е уште активен", @@ -374,6 +373,7 @@ OC.L10N.register( "Detailed logs" : "Детални записи", "Update needed" : "Потребно е ажутирање", "Please use the command line updater because you have a big instance with more than 50 users." : "Ве молиме користете ја командната линија за ажурирање бидејќи имате голема истанца со повеќе од 50 корисници.", + "Please use the command line updater because automatic updating is disabled in the config.php." : "Ве молиме користете ја командната линија за ажурирање бидејќи автоматското ажурирање е оневозможено во config.php.", "For help, see the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentation</a>." : "За помош, прочитајте ја <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">документацијата</a>.", "I know that if I continue doing the update via web UI has the risk, that the request runs into a timeout and could cause data loss, but I have a backup and know how to restore my instance in case of a failure." : "Знам дека има ризик ако продолжам со ажурирањето преку веб-интерфејс, и да застане во тајм аут и може да предизвика загуба на податоци, но имам резервна копија и знам како да ја вратам мојата истанца во случај на дефект.", "Upgrade via web on my own risk" : "Надоградба преку веб-интерфејс на сопствен ризик", diff --git a/core/l10n/mk.json b/core/l10n/mk.json index fb27f18c39e..8bbd9d25678 100644 --- a/core/l10n/mk.json +++ b/core/l10n/mk.json @@ -44,7 +44,6 @@ "Repair info:" : "Инфо при поправка:", "Repair warning:" : "Предупредувања при поправка:", "Repair error:" : "Грешка при поправка:", - "Please use the command line updater because automatic updating is disabled in the config.php." : "Ве молиме користете ја командната линија за ажурирање бидејќи автоматското ажурирање е оневозможено во config.php.", "Turned on maintenance mode" : "Вклучен е модот за одржување", "Turned off maintenance mode" : "Ислкучен е модот за одржување", "Maintenance mode is kept active" : "Модот за одржување е уште активен", @@ -372,6 +371,7 @@ "Detailed logs" : "Детални записи", "Update needed" : "Потребно е ажутирање", "Please use the command line updater because you have a big instance with more than 50 users." : "Ве молиме користете ја командната линија за ажурирање бидејќи имате голема истанца со повеќе од 50 корисници.", + "Please use the command line updater because automatic updating is disabled in the config.php." : "Ве молиме користете ја командната линија за ажурирање бидејќи автоматското ажурирање е оневозможено во config.php.", "For help, see the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentation</a>." : "За помош, прочитајте ја <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">документацијата</a>.", "I know that if I continue doing the update via web UI has the risk, that the request runs into a timeout and could cause data loss, but I have a backup and know how to restore my instance in case of a failure." : "Знам дека има ризик ако продолжам со ажурирањето преку веб-интерфејс, и да застане во тајм аут и може да предизвика загуба на податоци, но имам резервна копија и знам како да ја вратам мојата истанца во случај на дефект.", "Upgrade via web on my own risk" : "Надоградба преку веб-интерфејс на сопствен ризик", diff --git a/core/l10n/nb.js b/core/l10n/nb.js index d624aadc2f6..4210af9830a 100644 --- a/core/l10n/nb.js +++ b/core/l10n/nb.js @@ -51,7 +51,6 @@ OC.L10N.register( "Repair info:" : "Reparasjonsinformasjon:", "Repair warning:" : "Reparasjonsadvarsel:", "Repair error:" : "Reparasjonsfeil:", - "Please use the command line updater because automatic updating is disabled in the config.php." : "Oppdater ved hjelp av kommandolinjen ettersom automatisk oppdatering er skrudd av i config.php.", "Turned on maintenance mode" : "Vedlikeholdmodus aktivt", "Turned off maintenance mode" : "Vedlikeholdmodus er deaktivert", "Maintenance mode is kept active" : "Vedlikeholdmodus beholdes aktivt", @@ -400,6 +399,7 @@ OC.L10N.register( "Detailed logs" : "Detaljerte logger", "Update needed" : "Oppdatering er nødvendig", "Please use the command line updater because you have a big instance with more than 50 users." : "Bruk kommandolinjeoppdatereren siden du har en stor installasjon med mer enn 50 brukere.", + "Please use the command line updater because automatic updating is disabled in the config.php." : "Oppdater ved hjelp av kommandolinjen ettersom automatisk oppdatering er skrudd av i config.php.", "For help, see the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentation</a>." : "For hjelp, les <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">dokumentasjonen</a>.", "I know that if I continue doing the update via web UI has the risk, that the request runs into a timeout and could cause data loss, but I have a backup and know how to restore my instance in case of a failure." : "Jeg vet at hvis jeg fortsetter oppdateringen via web-grensesnittet er det en mulighet for tap av data som følge av tidsavbrudd, men jeg har en sikkerhetskopi og vet hvordan jeg skal gjenopprette min installasjon hvis den feiler.", "Upgrade via web on my own risk" : "Oppgrader via web på min egen risikio", diff --git a/core/l10n/nb.json b/core/l10n/nb.json index d45fcb39460..d3049aa8b41 100644 --- a/core/l10n/nb.json +++ b/core/l10n/nb.json @@ -49,7 +49,6 @@ "Repair info:" : "Reparasjonsinformasjon:", "Repair warning:" : "Reparasjonsadvarsel:", "Repair error:" : "Reparasjonsfeil:", - "Please use the command line updater because automatic updating is disabled in the config.php." : "Oppdater ved hjelp av kommandolinjen ettersom automatisk oppdatering er skrudd av i config.php.", "Turned on maintenance mode" : "Vedlikeholdmodus aktivt", "Turned off maintenance mode" : "Vedlikeholdmodus er deaktivert", "Maintenance mode is kept active" : "Vedlikeholdmodus beholdes aktivt", @@ -398,6 +397,7 @@ "Detailed logs" : "Detaljerte logger", "Update needed" : "Oppdatering er nødvendig", "Please use the command line updater because you have a big instance with more than 50 users." : "Bruk kommandolinjeoppdatereren siden du har en stor installasjon med mer enn 50 brukere.", + "Please use the command line updater because automatic updating is disabled in the config.php." : "Oppdater ved hjelp av kommandolinjen ettersom automatisk oppdatering er skrudd av i config.php.", "For help, see the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentation</a>." : "For hjelp, les <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">dokumentasjonen</a>.", "I know that if I continue doing the update via web UI has the risk, that the request runs into a timeout and could cause data loss, but I have a backup and know how to restore my instance in case of a failure." : "Jeg vet at hvis jeg fortsetter oppdateringen via web-grensesnittet er det en mulighet for tap av data som følge av tidsavbrudd, men jeg har en sikkerhetskopi og vet hvordan jeg skal gjenopprette min installasjon hvis den feiler.", "Upgrade via web on my own risk" : "Oppgrader via web på min egen risikio", diff --git a/core/l10n/nl.js b/core/l10n/nl.js index f537908df6b..f3732b777e3 100644 --- a/core/l10n/nl.js +++ b/core/l10n/nl.js @@ -51,7 +51,6 @@ OC.L10N.register( "Repair info:" : "Herstel informatie:", "Repair warning:" : "Herstel waarschuwing:", "Repair error:" : "Herstel fout:", - "Please use the command line updater because automatic updating is disabled in the config.php." : "Gebruik de commandoregel updater, omdat automatische update is uitgeschakeld in config.php.", "Turned on maintenance mode" : "Onderhoudsmodus ingeschakeld", "Turned off maintenance mode" : "Onderhoudsmodus uitgeschakeld", "Maintenance mode is kept active" : "Onderhoudsmodus blijft actief", @@ -400,6 +399,7 @@ OC.L10N.register( "Detailed logs" : "Gedetailleerde logs", "Update needed" : "Update vereist", "Please use the command line updater because you have a big instance with more than 50 users." : "Gebruik alsjeblieft de commandoregel updater omdat je een installatie hebt met meer dan 50 gebruikers.", + "Please use the command line updater because automatic updating is disabled in the config.php." : "Gebruik de commandoregel updater, omdat automatische update is uitgeschakeld in config.php.", "For help, see the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentation</a>." : "Bekijk de <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentatie</a> voor hulp.", "I know that if I continue doing the update via web UI has the risk, that the request runs into a timeout and could cause data loss, but I have a backup and know how to restore my instance in case of a failure." : "De update via de web UI heeft risico's. Het verzoek leidt mogelijk tot een time-out en kan tot verlies van gegevens leiden. Ik heb een back-up gemaakt en weet hoe deze te herstellen in het geval van een update mislukking.", "Upgrade via web on my own risk" : "Web opwaarding is op eigen risico", diff --git a/core/l10n/nl.json b/core/l10n/nl.json index c9056731440..c00a6b4cbe6 100644 --- a/core/l10n/nl.json +++ b/core/l10n/nl.json @@ -49,7 +49,6 @@ "Repair info:" : "Herstel informatie:", "Repair warning:" : "Herstel waarschuwing:", "Repair error:" : "Herstel fout:", - "Please use the command line updater because automatic updating is disabled in the config.php." : "Gebruik de commandoregel updater, omdat automatische update is uitgeschakeld in config.php.", "Turned on maintenance mode" : "Onderhoudsmodus ingeschakeld", "Turned off maintenance mode" : "Onderhoudsmodus uitgeschakeld", "Maintenance mode is kept active" : "Onderhoudsmodus blijft actief", @@ -398,6 +397,7 @@ "Detailed logs" : "Gedetailleerde logs", "Update needed" : "Update vereist", "Please use the command line updater because you have a big instance with more than 50 users." : "Gebruik alsjeblieft de commandoregel updater omdat je een installatie hebt met meer dan 50 gebruikers.", + "Please use the command line updater because automatic updating is disabled in the config.php." : "Gebruik de commandoregel updater, omdat automatische update is uitgeschakeld in config.php.", "For help, see the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentation</a>." : "Bekijk de <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentatie</a> voor hulp.", "I know that if I continue doing the update via web UI has the risk, that the request runs into a timeout and could cause data loss, but I have a backup and know how to restore my instance in case of a failure." : "De update via de web UI heeft risico's. Het verzoek leidt mogelijk tot een time-out en kan tot verlies van gegevens leiden. Ik heb een back-up gemaakt en weet hoe deze te herstellen in het geval van een update mislukking.", "Upgrade via web on my own risk" : "Web opwaarding is op eigen risico", diff --git a/core/l10n/oc.js b/core/l10n/oc.js index caa1cf633d1..b127531136d 100644 --- a/core/l10n/oc.js +++ b/core/l10n/oc.js @@ -45,7 +45,6 @@ OC.L10N.register( "Repair info:" : "Info de reparacion :", "Repair warning:" : "Avertiment de reparacion :", "Repair error:" : "Error de reparacion :", - "Please use the command line updater because automatic updating is disabled in the config.php." : "Mercés d’utilizar l’actualizador en linha de comanda perque la mesa a jorn automatica es desactivada dins lo config.php.", "Turned on maintenance mode" : "Mòde manteniment aviat", "Turned off maintenance mode" : "Mòde manteniment atudat", "Maintenance mode is kept active" : "Lo mòde manteniment ten d’èsser actiu", @@ -313,6 +312,7 @@ OC.L10N.register( "Detailed logs" : "Jornals detalhats", "Update needed" : "Mesa a jorn requerida", "Please use the command line updater because you have a big instance with more than 50 users." : "Mercés d’utilizar l’aisina de mesa a jorn en linha de comanda s’avètz una brava instància de mai de 50 utilizaires.", + "Please use the command line updater because automatic updating is disabled in the config.php." : "Mercés d’utilizar l’actualizador en linha de comanda perque la mesa a jorn automatica es desactivada dins lo config.php.", "For help, see the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentation</a>." : "Per d’ajuda, vejatz la <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentacion</a>.", "I know that if I continue doing the update via web UI has the risk, that the request runs into a timeout and could cause data loss, but I have a backup and know how to restore my instance in case of a failure." : "Sabi que se contunhi la mesa a jorn via l’interfàcia web i a un risc, que la requèsta s’execute e despasse lo delai e poiriá causar una pèrda de donadas, mas ai una salvagarda de seguretat e sabi cossí restaurar mon instància en cas de fracàs.", "Upgrade via web on my own risk" : "Accèpti lo risc de metre a nivèl", diff --git a/core/l10n/oc.json b/core/l10n/oc.json index 4b8e4d647c8..c42e6cbdf98 100644 --- a/core/l10n/oc.json +++ b/core/l10n/oc.json @@ -43,7 +43,6 @@ "Repair info:" : "Info de reparacion :", "Repair warning:" : "Avertiment de reparacion :", "Repair error:" : "Error de reparacion :", - "Please use the command line updater because automatic updating is disabled in the config.php." : "Mercés d’utilizar l’actualizador en linha de comanda perque la mesa a jorn automatica es desactivada dins lo config.php.", "Turned on maintenance mode" : "Mòde manteniment aviat", "Turned off maintenance mode" : "Mòde manteniment atudat", "Maintenance mode is kept active" : "Lo mòde manteniment ten d’èsser actiu", @@ -311,6 +310,7 @@ "Detailed logs" : "Jornals detalhats", "Update needed" : "Mesa a jorn requerida", "Please use the command line updater because you have a big instance with more than 50 users." : "Mercés d’utilizar l’aisina de mesa a jorn en linha de comanda s’avètz una brava instància de mai de 50 utilizaires.", + "Please use the command line updater because automatic updating is disabled in the config.php." : "Mercés d’utilizar l’actualizador en linha de comanda perque la mesa a jorn automatica es desactivada dins lo config.php.", "For help, see the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentation</a>." : "Per d’ajuda, vejatz la <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentacion</a>.", "I know that if I continue doing the update via web UI has the risk, that the request runs into a timeout and could cause data loss, but I have a backup and know how to restore my instance in case of a failure." : "Sabi que se contunhi la mesa a jorn via l’interfàcia web i a un risc, que la requèsta s’execute e despasse lo delai e poiriá causar una pèrda de donadas, mas ai una salvagarda de seguretat e sabi cossí restaurar mon instància en cas de fracàs.", "Upgrade via web on my own risk" : "Accèpti lo risc de metre a nivèl", diff --git a/core/l10n/pl.js b/core/l10n/pl.js index 8f5f5ae4afb..1f63050062e 100644 --- a/core/l10n/pl.js +++ b/core/l10n/pl.js @@ -50,7 +50,6 @@ OC.L10N.register( "Repair info:" : "Informacja o naprawie: ", "Repair warning:" : "Ostrzeżenie naprawy:", "Repair error:" : "Błąd naprawy: ", - "Please use the command line updater because automatic updating is disabled in the config.php." : "Użyj wiersza poleceń do aktualizacji, ponieważ automatyczna aktualizacja jest wyłączona w pliku config.php.", "Turned on maintenance mode" : "Włączono tryb konserwacji", "Turned off maintenance mode" : "Wyłączono tryb konserwacji", "Maintenance mode is kept active" : "Tryb konserwacji pozostał aktywny", @@ -397,6 +396,7 @@ OC.L10N.register( "Detailed logs" : "Szczegółowe logi", "Update needed" : "Wymagana aktualizacja", "Please use the command line updater because you have a big instance with more than 50 users." : "Użyj wiersza poleceń do aktualizacji, ponieważ masz dużą instancję, która posiada ponad 50 użytkowników.", + "Please use the command line updater because automatic updating is disabled in the config.php." : "Użyj wiersza poleceń do aktualizacji, ponieważ automatyczna aktualizacja jest wyłączona w pliku config.php.", "For help, see the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentation</a>." : "Aby uzyskać pomoc, zajrzyj do <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">dokumentacji</a>.", "I know that if I continue doing the update via web UI has the risk, that the request runs into a timeout and could cause data loss, but I have a backup and know how to restore my instance in case of a failure." : "Wiem, że jeśli kontynuuję aktualizację za pomocą przeglądarki, istnieje ryzyko że operacja może nie wykonać się w określonym limicie czasu, co może doprowadzić do utraty danych, ale mam kopię zapasową i wiem jak przywrócić w przypadku niepowodzenia.", "Upgrade via web on my own risk" : "Wykonaj aktualizację poprzez przeglądarkę na własne ryzyko", diff --git a/core/l10n/pl.json b/core/l10n/pl.json index 970592bb9fc..1584ea7a5c5 100644 --- a/core/l10n/pl.json +++ b/core/l10n/pl.json @@ -48,7 +48,6 @@ "Repair info:" : "Informacja o naprawie: ", "Repair warning:" : "Ostrzeżenie naprawy:", "Repair error:" : "Błąd naprawy: ", - "Please use the command line updater because automatic updating is disabled in the config.php." : "Użyj wiersza poleceń do aktualizacji, ponieważ automatyczna aktualizacja jest wyłączona w pliku config.php.", "Turned on maintenance mode" : "Włączono tryb konserwacji", "Turned off maintenance mode" : "Wyłączono tryb konserwacji", "Maintenance mode is kept active" : "Tryb konserwacji pozostał aktywny", @@ -395,6 +394,7 @@ "Detailed logs" : "Szczegółowe logi", "Update needed" : "Wymagana aktualizacja", "Please use the command line updater because you have a big instance with more than 50 users." : "Użyj wiersza poleceń do aktualizacji, ponieważ masz dużą instancję, która posiada ponad 50 użytkowników.", + "Please use the command line updater because automatic updating is disabled in the config.php." : "Użyj wiersza poleceń do aktualizacji, ponieważ automatyczna aktualizacja jest wyłączona w pliku config.php.", "For help, see the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentation</a>." : "Aby uzyskać pomoc, zajrzyj do <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">dokumentacji</a>.", "I know that if I continue doing the update via web UI has the risk, that the request runs into a timeout and could cause data loss, but I have a backup and know how to restore my instance in case of a failure." : "Wiem, że jeśli kontynuuję aktualizację za pomocą przeglądarki, istnieje ryzyko że operacja może nie wykonać się w określonym limicie czasu, co może doprowadzić do utraty danych, ale mam kopię zapasową i wiem jak przywrócić w przypadku niepowodzenia.", "Upgrade via web on my own risk" : "Wykonaj aktualizację poprzez przeglądarkę na własne ryzyko", diff --git a/core/l10n/pt_BR.js b/core/l10n/pt_BR.js index 2748339752c..816e44f0785 100644 --- a/core/l10n/pt_BR.js +++ b/core/l10n/pt_BR.js @@ -51,7 +51,6 @@ OC.L10N.register( "Repair info:" : "Informação do reparo:", "Repair warning:" : "Aviso do reparo:", "Repair error:" : "Erro do reparo:", - "Please use the command line updater because automatic updating is disabled in the config.php." : "Por favor, use a atualização de linha de comando, porque a atualização automática está desativada no config.php.", "Turned on maintenance mode" : "Ativar o modo de manutenção", "Turned off maintenance mode" : "Desativar o modo de manutenção", "Maintenance mode is kept active" : "O modo de manutenção está sendo mantido como ativo", @@ -400,6 +399,7 @@ OC.L10N.register( "Detailed logs" : "Logs detalhados", "Update needed" : "Atualização necessária", "Please use the command line updater because you have a big instance with more than 50 users." : "Use o atualizador pela linha de comando pois você tem uma grande instalação com mais de 50 usuários", + "Please use the command line updater because automatic updating is disabled in the config.php." : "Por favor, use a atualização de linha de comando, porque a atualização automática está desativada no config.php.", "For help, see the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentation</a>." : "Precisando de ajuda, leia a <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentação</a>.", "I know that if I continue doing the update via web UI has the risk, that the request runs into a timeout and could cause data loss, but I have a backup and know how to restore my instance in case of a failure." : "Sei que se continuar atualizando pela interfaceweb, há o risco de atingir o tempo limite e ocorrer perda de dados mas eu tenho um cópia de backup e sei como restaurar meu sistema se isso ocorrer.", "Upgrade via web on my own risk" : "Atualizar via web por minha conta e risco", diff --git a/core/l10n/pt_BR.json b/core/l10n/pt_BR.json index c07202f3954..1ecbdabeb94 100644 --- a/core/l10n/pt_BR.json +++ b/core/l10n/pt_BR.json @@ -49,7 +49,6 @@ "Repair info:" : "Informação do reparo:", "Repair warning:" : "Aviso do reparo:", "Repair error:" : "Erro do reparo:", - "Please use the command line updater because automatic updating is disabled in the config.php." : "Por favor, use a atualização de linha de comando, porque a atualização automática está desativada no config.php.", "Turned on maintenance mode" : "Ativar o modo de manutenção", "Turned off maintenance mode" : "Desativar o modo de manutenção", "Maintenance mode is kept active" : "O modo de manutenção está sendo mantido como ativo", @@ -398,6 +397,7 @@ "Detailed logs" : "Logs detalhados", "Update needed" : "Atualização necessária", "Please use the command line updater because you have a big instance with more than 50 users." : "Use o atualizador pela linha de comando pois você tem uma grande instalação com mais de 50 usuários", + "Please use the command line updater because automatic updating is disabled in the config.php." : "Por favor, use a atualização de linha de comando, porque a atualização automática está desativada no config.php.", "For help, see the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentation</a>." : "Precisando de ajuda, leia a <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentação</a>.", "I know that if I continue doing the update via web UI has the risk, that the request runs into a timeout and could cause data loss, but I have a backup and know how to restore my instance in case of a failure." : "Sei que se continuar atualizando pela interfaceweb, há o risco de atingir o tempo limite e ocorrer perda de dados mas eu tenho um cópia de backup e sei como restaurar meu sistema se isso ocorrer.", "Upgrade via web on my own risk" : "Atualizar via web por minha conta e risco", diff --git a/core/l10n/pt_PT.js b/core/l10n/pt_PT.js index d70137a2c7b..f5d73ac1de2 100644 --- a/core/l10n/pt_PT.js +++ b/core/l10n/pt_PT.js @@ -50,7 +50,6 @@ OC.L10N.register( "Repair info:" : "Informação da reparação:", "Repair warning:" : "Aviso de reparação:", "Repair error:" : "Erro de reparação:", - "Please use the command line updater because automatic updating is disabled in the config.php." : "Por favor, utilize o atualizador da linha de comandos porque a atualização automática está desativada no config.php.", "Turned on maintenance mode" : "Ativou o modo de manutenção", "Turned off maintenance mode" : "Desativou o modo de manutenção", "Maintenance mode is kept active" : "O modo de manutenção é mantido ativo", @@ -331,6 +330,7 @@ OC.L10N.register( "Detailed logs" : "Registos detalhados", "Update needed" : "É necessário atualizar", "Please use the command line updater because you have a big instance with more than 50 users." : "Por favor, use o atualizador da linha de comandos porque tem uma instância grande com mais de 50 utilizadores.", + "Please use the command line updater because automatic updating is disabled in the config.php." : "Por favor, utilize o atualizador da linha de comandos porque a atualização automática está desativada no config.php.", "For help, see the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentation</a>." : "Para obter ajuda, consulte a <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentação</a>.", "I know that if I continue doing the update via web UI has the risk, that the request runs into a timeout and could cause data loss, but I have a backup and know how to restore my instance in case of a failure." : "Sei que se continuar a fazer a atualização via interface web arrisco a que o pedido expire e pode causar a perda de dados, no entanto tenho uma cópia de segurança e sei como restaurar a minha instância em caso de falha. ", "Upgrade via web on my own risk" : "Atualizar via web por minha conta e risco.", diff --git a/core/l10n/pt_PT.json b/core/l10n/pt_PT.json index bd3050797ca..0c980c0b258 100644 --- a/core/l10n/pt_PT.json +++ b/core/l10n/pt_PT.json @@ -48,7 +48,6 @@ "Repair info:" : "Informação da reparação:", "Repair warning:" : "Aviso de reparação:", "Repair error:" : "Erro de reparação:", - "Please use the command line updater because automatic updating is disabled in the config.php." : "Por favor, utilize o atualizador da linha de comandos porque a atualização automática está desativada no config.php.", "Turned on maintenance mode" : "Ativou o modo de manutenção", "Turned off maintenance mode" : "Desativou o modo de manutenção", "Maintenance mode is kept active" : "O modo de manutenção é mantido ativo", @@ -329,6 +328,7 @@ "Detailed logs" : "Registos detalhados", "Update needed" : "É necessário atualizar", "Please use the command line updater because you have a big instance with more than 50 users." : "Por favor, use o atualizador da linha de comandos porque tem uma instância grande com mais de 50 utilizadores.", + "Please use the command line updater because automatic updating is disabled in the config.php." : "Por favor, utilize o atualizador da linha de comandos porque a atualização automática está desativada no config.php.", "For help, see the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentation</a>." : "Para obter ajuda, consulte a <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentação</a>.", "I know that if I continue doing the update via web UI has the risk, that the request runs into a timeout and could cause data loss, but I have a backup and know how to restore my instance in case of a failure." : "Sei que se continuar a fazer a atualização via interface web arrisco a que o pedido expire e pode causar a perda de dados, no entanto tenho uma cópia de segurança e sei como restaurar a minha instância em caso de falha. ", "Upgrade via web on my own risk" : "Atualizar via web por minha conta e risco.", diff --git a/core/l10n/ro.js b/core/l10n/ro.js index b31c2b5369f..423563d1d02 100644 --- a/core/l10n/ro.js +++ b/core/l10n/ro.js @@ -48,7 +48,6 @@ OC.L10N.register( "Repair info:" : "Informații despre reparații:", "Repair warning:" : "Avertisment de reparație:", "Repair error:" : "Eroare de reparare:", - "Please use the command line updater because automatic updating is disabled in the config.php." : "Utilizează actualizarea din linie de comandă, pentru că actualizarea automată este dezactivată în config.php.", "Turned on maintenance mode" : "Modul mentenanță a fost activat", "Turned off maintenance mode" : "Modul mentenanță a fost dezactivat", "Maintenance mode is kept active" : "Modul de mentenanță este menținut activ", @@ -258,6 +257,7 @@ OC.L10N.register( "Detailed logs" : "Loguri detaliate", "Update needed" : "E necesară actualizarea", "Please use the command line updater because you have a big instance with more than 50 users." : "Vă rugăm folosiți actualizarea din linia de comandă pentru că aveți o sesiune mare cu mai mult de 50 de utilizatori.", + "Please use the command line updater because automatic updating is disabled in the config.php." : "Utilizează actualizarea din linie de comandă, pentru că actualizarea automată este dezactivată în config.php.", "I know that if I continue doing the update via web UI has the risk, that the request runs into a timeout and could cause data loss, but I have a backup and know how to restore my instance in case of a failure." : "Înțeleg că dacă continui să folosesc actualizarea din interfața web, există riscul ca cererea să expire și să cauzeze pierderi de date, dar am un backup și știu cum sa restaurez sesiunea în caz de eșec.", "Upgrade via web on my own risk" : "Actualizare prin interfața web pe riscul meu", "Maintenance mode" : "Mod mentenanță", diff --git a/core/l10n/ro.json b/core/l10n/ro.json index ab2b17702ec..be0d92a614f 100644 --- a/core/l10n/ro.json +++ b/core/l10n/ro.json @@ -46,7 +46,6 @@ "Repair info:" : "Informații despre reparații:", "Repair warning:" : "Avertisment de reparație:", "Repair error:" : "Eroare de reparare:", - "Please use the command line updater because automatic updating is disabled in the config.php." : "Utilizează actualizarea din linie de comandă, pentru că actualizarea automată este dezactivată în config.php.", "Turned on maintenance mode" : "Modul mentenanță a fost activat", "Turned off maintenance mode" : "Modul mentenanță a fost dezactivat", "Maintenance mode is kept active" : "Modul de mentenanță este menținut activ", @@ -256,6 +255,7 @@ "Detailed logs" : "Loguri detaliate", "Update needed" : "E necesară actualizarea", "Please use the command line updater because you have a big instance with more than 50 users." : "Vă rugăm folosiți actualizarea din linia de comandă pentru că aveți o sesiune mare cu mai mult de 50 de utilizatori.", + "Please use the command line updater because automatic updating is disabled in the config.php." : "Utilizează actualizarea din linie de comandă, pentru că actualizarea automată este dezactivată în config.php.", "I know that if I continue doing the update via web UI has the risk, that the request runs into a timeout and could cause data loss, but I have a backup and know how to restore my instance in case of a failure." : "Înțeleg că dacă continui să folosesc actualizarea din interfața web, există riscul ca cererea să expire și să cauzeze pierderi de date, dar am un backup și știu cum sa restaurez sesiunea în caz de eșec.", "Upgrade via web on my own risk" : "Actualizare prin interfața web pe riscul meu", "Maintenance mode" : "Mod mentenanță", diff --git a/core/l10n/ru.js b/core/l10n/ru.js index 8e5ec0472e0..c3b7fdbfeb6 100644 --- a/core/l10n/ru.js +++ b/core/l10n/ru.js @@ -48,7 +48,6 @@ OC.L10N.register( "Repair info:" : "Информация восстановления:", "Repair warning:" : "Предупреждение восстановления:", "Repair error:" : "Ошибка восстановления:", - "Please use the command line updater because automatic updating is disabled in the config.php." : "Автоматические обновления отключены в файле конфигурации «config.php». Выполните обновление из командной строки.", "Turned on maintenance mode" : "Включён режим обслуживания ", "Turned off maintenance mode" : "Отключён режим обслуживания", "Maintenance mode is kept active" : "Режим обслуживания оставлен включенным", @@ -393,6 +392,7 @@ OC.L10N.register( "Detailed logs" : "Подробные журналы", "Update needed" : "Требуется обновление", "Please use the command line updater because you have a big instance with more than 50 users." : "В этом развёртывании создано более 50 пользователей. Используйте инструмент командной строки для выполнения обновления.", + "Please use the command line updater because automatic updating is disabled in the config.php." : "Автоматические обновления отключены в файле конфигурации «config.php». Выполните обновление из командной строки.", "For help, see the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentation</a>." : "Для получения помощи обратитесь к <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">документации</a>.", "I know that if I continue doing the update via web UI has the risk, that the request runs into a timeout and could cause data loss, but I have a backup and know how to restore my instance in case of a failure." : "Я знаю, что в случае продолжения обновления через веб-интерфейс возникает риск тайм-аута запроса, который может привести к потере данных. У меня есть резервная копия, и я знаю, как восстановить систему в случае сбоя.", "Upgrade via web on my own risk" : "Обновить используя веб-интерфейс на мой страх и риск", diff --git a/core/l10n/ru.json b/core/l10n/ru.json index 2248f3940e6..f5e2d734465 100644 --- a/core/l10n/ru.json +++ b/core/l10n/ru.json @@ -46,7 +46,6 @@ "Repair info:" : "Информация восстановления:", "Repair warning:" : "Предупреждение восстановления:", "Repair error:" : "Ошибка восстановления:", - "Please use the command line updater because automatic updating is disabled in the config.php." : "Автоматические обновления отключены в файле конфигурации «config.php». Выполните обновление из командной строки.", "Turned on maintenance mode" : "Включён режим обслуживания ", "Turned off maintenance mode" : "Отключён режим обслуживания", "Maintenance mode is kept active" : "Режим обслуживания оставлен включенным", @@ -391,6 +390,7 @@ "Detailed logs" : "Подробные журналы", "Update needed" : "Требуется обновление", "Please use the command line updater because you have a big instance with more than 50 users." : "В этом развёртывании создано более 50 пользователей. Используйте инструмент командной строки для выполнения обновления.", + "Please use the command line updater because automatic updating is disabled in the config.php." : "Автоматические обновления отключены в файле конфигурации «config.php». Выполните обновление из командной строки.", "For help, see the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentation</a>." : "Для получения помощи обратитесь к <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">документации</a>.", "I know that if I continue doing the update via web UI has the risk, that the request runs into a timeout and could cause data loss, but I have a backup and know how to restore my instance in case of a failure." : "Я знаю, что в случае продолжения обновления через веб-интерфейс возникает риск тайм-аута запроса, который может привести к потере данных. У меня есть резервная копия, и я знаю, как восстановить систему в случае сбоя.", "Upgrade via web on my own risk" : "Обновить используя веб-интерфейс на мой страх и риск", diff --git a/core/l10n/sc.js b/core/l10n/sc.js index a933182c2ea..b374c600c40 100644 --- a/core/l10n/sc.js +++ b/core/l10n/sc.js @@ -44,7 +44,6 @@ OC.L10N.register( "Repair info:" : "Informatziones de s'acontzu:", "Repair warning:" : "Avisu de s'acontzu:", "Repair error:" : "Errore in s'acontzu:", - "Please use the command line updater because automatic updating is disabled in the config.php." : "Imprea s'atualizadore a lìnia de cummandu ca s'agiornamentu automàticu est disativadu in sa config.php.", "Turned on maintenance mode" : "Furriadu a modalidade de mantenidura", "Turned off maintenance mode" : "Modalidade de mantenidura disativada", "Maintenance mode is kept active" : "Sa modalidade de mantenidura abarrat ativa", @@ -347,6 +346,7 @@ OC.L10N.register( "Detailed logs" : "Registros detalliados", "Update needed" : "Tocat de agiornare", "Please use the command line updater because you have a big instance with more than 50 users." : "Imprea s'atualizadore a lìnia de cummandu ca tenes un'istàntzia manna cun prus de 50 utentes.", + "Please use the command line updater because automatic updating is disabled in the config.php." : "Imprea s'atualizadore a lìnia de cummandu ca s'agiornamentu automàticu est disativadu in sa config.php.", "For help, see the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentation</a>." : "Pro agiudos, càstia sa <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentatzione</a>.", "I know that if I continue doing the update via web UI has the risk, that the request runs into a timeout and could cause data loss, but I have a backup and know how to restore my instance in case of a failure." : "Giai dd'isco ca chi sigu cun s'agiornamentu via internet UI ddoe at s'arriscu chi sa rechesta arribet a una pasada e podet causare sa pèrdida de is datos, ma tèngio una còpia de seguresa e isco comente recuperare s'istàntzia in casu de errore.", "Upgrade via web on my own risk" : "Agiorna via web suta responsabilidade mia", diff --git a/core/l10n/sc.json b/core/l10n/sc.json index f8ac04c4eeb..9f96c13e151 100644 --- a/core/l10n/sc.json +++ b/core/l10n/sc.json @@ -42,7 +42,6 @@ "Repair info:" : "Informatziones de s'acontzu:", "Repair warning:" : "Avisu de s'acontzu:", "Repair error:" : "Errore in s'acontzu:", - "Please use the command line updater because automatic updating is disabled in the config.php." : "Imprea s'atualizadore a lìnia de cummandu ca s'agiornamentu automàticu est disativadu in sa config.php.", "Turned on maintenance mode" : "Furriadu a modalidade de mantenidura", "Turned off maintenance mode" : "Modalidade de mantenidura disativada", "Maintenance mode is kept active" : "Sa modalidade de mantenidura abarrat ativa", @@ -345,6 +344,7 @@ "Detailed logs" : "Registros detalliados", "Update needed" : "Tocat de agiornare", "Please use the command line updater because you have a big instance with more than 50 users." : "Imprea s'atualizadore a lìnia de cummandu ca tenes un'istàntzia manna cun prus de 50 utentes.", + "Please use the command line updater because automatic updating is disabled in the config.php." : "Imprea s'atualizadore a lìnia de cummandu ca s'agiornamentu automàticu est disativadu in sa config.php.", "For help, see the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentation</a>." : "Pro agiudos, càstia sa <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentatzione</a>.", "I know that if I continue doing the update via web UI has the risk, that the request runs into a timeout and could cause data loss, but I have a backup and know how to restore my instance in case of a failure." : "Giai dd'isco ca chi sigu cun s'agiornamentu via internet UI ddoe at s'arriscu chi sa rechesta arribet a una pasada e podet causare sa pèrdida de is datos, ma tèngio una còpia de seguresa e isco comente recuperare s'istàntzia in casu de errore.", "Upgrade via web on my own risk" : "Agiorna via web suta responsabilidade mia", diff --git a/core/l10n/sk.js b/core/l10n/sk.js index b3d6201577a..99d3fe9c8be 100644 --- a/core/l10n/sk.js +++ b/core/l10n/sk.js @@ -48,7 +48,6 @@ OC.L10N.register( "Repair info:" : "Informácie o oprave:", "Repair warning:" : "Varovanie o oprave:", "Repair error:" : "Chyba opravy:", - "Please use the command line updater because automatic updating is disabled in the config.php." : "Automatická aktualizácia je zakázaná v config.php, použite prosím aktualizáciu cez príkazový riadok.", "Turned on maintenance mode" : "Mód údržby je zapnutý", "Turned off maintenance mode" : "Mód údržby je vypnutý", "Maintenance mode is kept active" : "Režim údržby je stále aktívny", @@ -393,6 +392,7 @@ OC.L10N.register( "Detailed logs" : "Podrobné záznamy", "Update needed" : "Aktualizácia je potrebná", "Please use the command line updater because you have a big instance with more than 50 users." : "Použite aktualizátor z príkazového riadka, pretože máte veľkú inštanciu s viac ako 50 používateľmi.", + "Please use the command line updater because automatic updating is disabled in the config.php." : "Automatická aktualizácia je zakázaná v config.php, použite prosím aktualizáciu cez príkazový riadok.", "For help, see the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentation</a>." : "Pre pomoc si pozrite <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">dokumentáciu</a>.", "I know that if I continue doing the update via web UI has the risk, that the request runs into a timeout and could cause data loss, but I have a backup and know how to restore my instance in case of a failure." : "Viem, že ak budem pokračovať v aktualizácii prostredníctvom webového rozhrania, existuje riziko, že žiadosť prekročí časový limit a môže spôsobiť stratu dát, ale mám zálohu a viem, ako obnoviť svoju inštanciu v prípade zlyhania.", "Upgrade via web on my own risk" : "Aktualizovať cez web na vlastné riziko", diff --git a/core/l10n/sk.json b/core/l10n/sk.json index 039611f202e..365701aca17 100644 --- a/core/l10n/sk.json +++ b/core/l10n/sk.json @@ -46,7 +46,6 @@ "Repair info:" : "Informácie o oprave:", "Repair warning:" : "Varovanie o oprave:", "Repair error:" : "Chyba opravy:", - "Please use the command line updater because automatic updating is disabled in the config.php." : "Automatická aktualizácia je zakázaná v config.php, použite prosím aktualizáciu cez príkazový riadok.", "Turned on maintenance mode" : "Mód údržby je zapnutý", "Turned off maintenance mode" : "Mód údržby je vypnutý", "Maintenance mode is kept active" : "Režim údržby je stále aktívny", @@ -391,6 +390,7 @@ "Detailed logs" : "Podrobné záznamy", "Update needed" : "Aktualizácia je potrebná", "Please use the command line updater because you have a big instance with more than 50 users." : "Použite aktualizátor z príkazového riadka, pretože máte veľkú inštanciu s viac ako 50 používateľmi.", + "Please use the command line updater because automatic updating is disabled in the config.php." : "Automatická aktualizácia je zakázaná v config.php, použite prosím aktualizáciu cez príkazový riadok.", "For help, see the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentation</a>." : "Pre pomoc si pozrite <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">dokumentáciu</a>.", "I know that if I continue doing the update via web UI has the risk, that the request runs into a timeout and could cause data loss, but I have a backup and know how to restore my instance in case of a failure." : "Viem, že ak budem pokračovať v aktualizácii prostredníctvom webového rozhrania, existuje riziko, že žiadosť prekročí časový limit a môže spôsobiť stratu dát, ale mám zálohu a viem, ako obnoviť svoju inštanciu v prípade zlyhania.", "Upgrade via web on my own risk" : "Aktualizovať cez web na vlastné riziko", diff --git a/core/l10n/sl.js b/core/l10n/sl.js index da635d69552..9fbd74fc97d 100644 --- a/core/l10n/sl.js +++ b/core/l10n/sl.js @@ -51,7 +51,6 @@ OC.L10N.register( "Repair info:" : "Podrobnosti nadgradnje:", "Repair warning:" : "Opozorilo nadgradnje:", "Repair error:" : "Napaka nadgradnje:", - "Please use the command line updater because automatic updating is disabled in the config.php." : "Posodobitev sistema je treba izvesti v ukazni vrstici, ker je nastavitev samodejne posodobitve v config.php onemogočena.", "Turned on maintenance mode" : "Vzdrževalni način je omogočen ...", "Turned off maintenance mode" : "Vzdrževalni način je onemogočen.", "Maintenance mode is kept active" : "Vzdrževalni način ostane dejaven.", @@ -400,6 +399,7 @@ OC.L10N.register( "Detailed logs" : "Podrobni dnevniški zapisi", "Update needed" : "Zahtevana je posodobitev", "Please use the command line updater because you have a big instance with more than 50 users." : "Uporabite posodabljalnik ukazne vrstice, ker je v sistemu več kot 50 uporabnikov.", + "Please use the command line updater because automatic updating is disabled in the config.php." : "Posodobitev sistema je treba izvesti v ukazni vrstici, ker je nastavitev samodejne posodobitve v config.php onemogočena.", "For help, see the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentation</a>." : "Za pomoč si oglejte <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">dokumentacijo</a>.", "I know that if I continue doing the update via web UI has the risk, that the request runs into a timeout and could cause data loss, but I have a backup and know how to restore my instance in case of a failure." : "Zavedam se, da obstaja pri posodabljanju prek spletnega uporabniškega vmesnika nevarnost, da zahteva časovno poteče in s tem povzroči izgubo podatkov. Imam ustvarjeno varnostno kopijo in znam podatke iz kopij v primeru napak obnoviti.", "Upgrade via web on my own risk" : "Posodobi prek spleta kljub večjemu tveganju", diff --git a/core/l10n/sl.json b/core/l10n/sl.json index 322ab9c1912..62bfefeb78f 100644 --- a/core/l10n/sl.json +++ b/core/l10n/sl.json @@ -49,7 +49,6 @@ "Repair info:" : "Podrobnosti nadgradnje:", "Repair warning:" : "Opozorilo nadgradnje:", "Repair error:" : "Napaka nadgradnje:", - "Please use the command line updater because automatic updating is disabled in the config.php." : "Posodobitev sistema je treba izvesti v ukazni vrstici, ker je nastavitev samodejne posodobitve v config.php onemogočena.", "Turned on maintenance mode" : "Vzdrževalni način je omogočen ...", "Turned off maintenance mode" : "Vzdrževalni način je onemogočen.", "Maintenance mode is kept active" : "Vzdrževalni način ostane dejaven.", @@ -398,6 +397,7 @@ "Detailed logs" : "Podrobni dnevniški zapisi", "Update needed" : "Zahtevana je posodobitev", "Please use the command line updater because you have a big instance with more than 50 users." : "Uporabite posodabljalnik ukazne vrstice, ker je v sistemu več kot 50 uporabnikov.", + "Please use the command line updater because automatic updating is disabled in the config.php." : "Posodobitev sistema je treba izvesti v ukazni vrstici, ker je nastavitev samodejne posodobitve v config.php onemogočena.", "For help, see the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentation</a>." : "Za pomoč si oglejte <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">dokumentacijo</a>.", "I know that if I continue doing the update via web UI has the risk, that the request runs into a timeout and could cause data loss, but I have a backup and know how to restore my instance in case of a failure." : "Zavedam se, da obstaja pri posodabljanju prek spletnega uporabniškega vmesnika nevarnost, da zahteva časovno poteče in s tem povzroči izgubo podatkov. Imam ustvarjeno varnostno kopijo in znam podatke iz kopij v primeru napak obnoviti.", "Upgrade via web on my own risk" : "Posodobi prek spleta kljub večjemu tveganju", diff --git a/core/l10n/sr.js b/core/l10n/sr.js index 5247e817a74..b18fb0f6cdd 100644 --- a/core/l10n/sr.js +++ b/core/l10n/sr.js @@ -51,7 +51,6 @@ OC.L10N.register( "Repair info:" : "Инфо о поправци:", "Repair warning:" : "Упозорење о поправци:", "Repair error:" : "Грешка поправке:", - "Please use the command line updater because automatic updating is disabled in the config.php." : "Ажурирање урадите преко командне линије јер је аутоматско ажурирање онемогућено у config.php.", "Turned on maintenance mode" : "Режим одржавања укључен", "Turned off maintenance mode" : "Режим одржавања искључен", "Maintenance mode is kept active" : "Режим одржавања се држи активним", @@ -400,6 +399,7 @@ OC.L10N.register( "Detailed logs" : "Детаљни дневници", "Update needed" : "Потребно је ажурирање", "Please use the command line updater because you have a big instance with more than 50 users." : "Молимо користите ажурирање из конзоле пошто имате велики сервер са више од 50 корисника.", + "Please use the command line updater because automatic updating is disabled in the config.php." : "Ажурирање урадите преко командне линије јер је аутоматско ажурирање онемогућено у config.php.", "For help, see the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentation</a>." : "За помоћ, погледајте <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">документацију</a>.", "I know that if I continue doing the update via web UI has the risk, that the request runs into a timeout and could cause data loss, but I have a backup and know how to restore my instance in case of a failure." : "Свестан сам да уколико наставим ажурирање преко веб сучеља, постоји ризик да захтеву истекне време за извршење и да то може да изазове губитак података, али имам резервну копију и знам како да је повратим у случају грешке.", "Upgrade via web on my own risk" : "Надогради преко веба на сопствену одговорност", diff --git a/core/l10n/sr.json b/core/l10n/sr.json index 45b01949f39..a546dfc2a18 100644 --- a/core/l10n/sr.json +++ b/core/l10n/sr.json @@ -49,7 +49,6 @@ "Repair info:" : "Инфо о поправци:", "Repair warning:" : "Упозорење о поправци:", "Repair error:" : "Грешка поправке:", - "Please use the command line updater because automatic updating is disabled in the config.php." : "Ажурирање урадите преко командне линије јер је аутоматско ажурирање онемогућено у config.php.", "Turned on maintenance mode" : "Режим одржавања укључен", "Turned off maintenance mode" : "Режим одржавања искључен", "Maintenance mode is kept active" : "Режим одржавања се држи активним", @@ -398,6 +397,7 @@ "Detailed logs" : "Детаљни дневници", "Update needed" : "Потребно је ажурирање", "Please use the command line updater because you have a big instance with more than 50 users." : "Молимо користите ажурирање из конзоле пошто имате велики сервер са више од 50 корисника.", + "Please use the command line updater because automatic updating is disabled in the config.php." : "Ажурирање урадите преко командне линије јер је аутоматско ажурирање онемогућено у config.php.", "For help, see the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentation</a>." : "За помоћ, погледајте <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">документацију</a>.", "I know that if I continue doing the update via web UI has the risk, that the request runs into a timeout and could cause data loss, but I have a backup and know how to restore my instance in case of a failure." : "Свестан сам да уколико наставим ажурирање преко веб сучеља, постоји ризик да захтеву истекне време за извршење и да то може да изазове губитак података, али имам резервну копију и знам како да је повратим у случају грешке.", "Upgrade via web on my own risk" : "Надогради преко веба на сопствену одговорност", diff --git a/core/l10n/sv.js b/core/l10n/sv.js index 969b442d907..c6fe0c7a679 100644 --- a/core/l10n/sv.js +++ b/core/l10n/sv.js @@ -50,7 +50,6 @@ OC.L10N.register( "Repair info:" : "Reparationsinfo:", "Repair warning:" : "Reperationsvarning:", "Repair error:" : "Reperationsfel:", - "Please use the command line updater because automatic updating is disabled in the config.php." : "Uppdatera via kommandotolken då automatisk uppdatering är inaktiverat i config.php.", "Turned on maintenance mode" : "Aktiverade underhållsläge", "Turned off maintenance mode" : "Inaktivera underhållsläge", "Maintenance mode is kept active" : "Underhållsläget förblir aktiverat", @@ -194,6 +193,7 @@ OC.L10N.register( "Settings menu" : "Inställningsmeny", "Search {types} …" : "Sök {types} …", "Settings" : "Inställningar", + "Avatar of {fullName}" : "Avatar för {fullName}", "Could not load your contacts" : "Det gick inte att läsa in dina kontakter", "Search contacts …" : "Sök kontakter ...", "No contacts found" : "Inga kontakter hittades", @@ -379,6 +379,7 @@ OC.L10N.register( "Detailed logs" : "Detaljerade loggar", "Update needed" : "Uppdatering krävs", "Please use the command line updater because you have a big instance with more than 50 users." : "Vänligen uppdatera med kommando eftersom du har en stor instans med mer än 50 användare.", + "Please use the command line updater because automatic updating is disabled in the config.php." : "Uppdatera via kommandotolken då automatisk uppdatering är inaktiverat i config.php.", "For help, see the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentation</a>." : "För hjälp, se <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">dokumentationen</a>.", "I know that if I continue doing the update via web UI has the risk, that the request runs into a timeout and could cause data loss, but I have a backup and know how to restore my instance in case of a failure." : "Jag vet att om jag fortsätter göra uppdateringen via webbgränssnittet innebär risken att begäran får timeout och kan orsaka dataförluster men att jag har en backup och vet hur instansen återställs i fall fel uppstår.", "Upgrade via web on my own risk" : "Uppgradera via webben på min egen risk", diff --git a/core/l10n/sv.json b/core/l10n/sv.json index e0e94aaa223..2d4215c9802 100644 --- a/core/l10n/sv.json +++ b/core/l10n/sv.json @@ -48,7 +48,6 @@ "Repair info:" : "Reparationsinfo:", "Repair warning:" : "Reperationsvarning:", "Repair error:" : "Reperationsfel:", - "Please use the command line updater because automatic updating is disabled in the config.php." : "Uppdatera via kommandotolken då automatisk uppdatering är inaktiverat i config.php.", "Turned on maintenance mode" : "Aktiverade underhållsläge", "Turned off maintenance mode" : "Inaktivera underhållsläge", "Maintenance mode is kept active" : "Underhållsläget förblir aktiverat", @@ -192,6 +191,7 @@ "Settings menu" : "Inställningsmeny", "Search {types} …" : "Sök {types} …", "Settings" : "Inställningar", + "Avatar of {fullName}" : "Avatar för {fullName}", "Could not load your contacts" : "Det gick inte att läsa in dina kontakter", "Search contacts …" : "Sök kontakter ...", "No contacts found" : "Inga kontakter hittades", @@ -377,6 +377,7 @@ "Detailed logs" : "Detaljerade loggar", "Update needed" : "Uppdatering krävs", "Please use the command line updater because you have a big instance with more than 50 users." : "Vänligen uppdatera med kommando eftersom du har en stor instans med mer än 50 användare.", + "Please use the command line updater because automatic updating is disabled in the config.php." : "Uppdatera via kommandotolken då automatisk uppdatering är inaktiverat i config.php.", "For help, see the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentation</a>." : "För hjälp, se <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">dokumentationen</a>.", "I know that if I continue doing the update via web UI has the risk, that the request runs into a timeout and could cause data loss, but I have a backup and know how to restore my instance in case of a failure." : "Jag vet att om jag fortsätter göra uppdateringen via webbgränssnittet innebär risken att begäran får timeout och kan orsaka dataförluster men att jag har en backup och vet hur instansen återställs i fall fel uppstår.", "Upgrade via web on my own risk" : "Uppgradera via webben på min egen risk", diff --git a/core/l10n/th.js b/core/l10n/th.js index 1a67925bc94..0aac7cb7532 100644 --- a/core/l10n/th.js +++ b/core/l10n/th.js @@ -44,7 +44,6 @@ OC.L10N.register( "Repair info:" : "ข้อมูลการซ่อมแซม:", "Repair warning:" : "คำเตือนการซ่อมแซม:", "Repair error:" : "ข้อผิดพลาดการซ่อมแซม:", - "Please use the command line updater because automatic updating is disabled in the config.php." : "กรุณาใช้ตัวอัปเดตผ่านบรรทัดคำสั่ง เนื่องจากการอัปเดตอัตโนมัติถูกปิดใช้งานใน config.php", "Turned on maintenance mode" : "เปิดโหมดการบำรุงรักษาแล้ว", "Turned off maintenance mode" : "ปิดโหมดการบำรุงรักษาแล้ว", "Maintenance mode is kept active" : "โหมดการบำรุงรักษาถูกเปิดไว้", @@ -340,6 +339,7 @@ OC.L10N.register( "Detailed logs" : "บันทึกอย่างละเอียด", "Update needed" : "จำเป็นต้องอัปเดต", "Please use the command line updater because you have a big instance with more than 50 users." : "กรุณาใช้ตัวอัปเดตผ่านบรรทัดคำสั่ง เนื่องจากคุณมีเซิร์ฟเวอร์ขนาดใหญ่ที่มีจำนวนผู้ใช้มากกว่า 50 ผู้ใช้", + "Please use the command line updater because automatic updating is disabled in the config.php." : "กรุณาใช้ตัวอัปเดตผ่านบรรทัดคำสั่ง เนื่องจากการอัปเดตอัตโนมัติถูกปิดใช้งานใน config.php", "For help, see the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentation</a>." : "สำหรับความช่วยเหลือ ดู<a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">เอกสารประกอบ</a>", "I know that if I continue doing the update via web UI has the risk, that the request runs into a timeout and could cause data loss, but I have a backup and know how to restore my instance in case of a failure." : "ฉันทราบว่าการดำเนินการอัปเดตผ่าน UI เว็บมีความเสี่ยง และหากคำขอหมดเวลาอาจทำให้ข้อมูลสูญหาย แต่ฉันได้สำรองข้อมูลไว้แล้วและทราบวิธีการกู้คืนข้อมูลหากเกิดข้อผิดพลาด", "Upgrade via web on my own risk" : "อัปเกรดผ่านเว็บบนความเสี่ยงของฉัน", diff --git a/core/l10n/th.json b/core/l10n/th.json index 81d9f03cabd..522dbaa8de3 100644 --- a/core/l10n/th.json +++ b/core/l10n/th.json @@ -42,7 +42,6 @@ "Repair info:" : "ข้อมูลการซ่อมแซม:", "Repair warning:" : "คำเตือนการซ่อมแซม:", "Repair error:" : "ข้อผิดพลาดการซ่อมแซม:", - "Please use the command line updater because automatic updating is disabled in the config.php." : "กรุณาใช้ตัวอัปเดตผ่านบรรทัดคำสั่ง เนื่องจากการอัปเดตอัตโนมัติถูกปิดใช้งานใน config.php", "Turned on maintenance mode" : "เปิดโหมดการบำรุงรักษาแล้ว", "Turned off maintenance mode" : "ปิดโหมดการบำรุงรักษาแล้ว", "Maintenance mode is kept active" : "โหมดการบำรุงรักษาถูกเปิดไว้", @@ -338,6 +337,7 @@ "Detailed logs" : "บันทึกอย่างละเอียด", "Update needed" : "จำเป็นต้องอัปเดต", "Please use the command line updater because you have a big instance with more than 50 users." : "กรุณาใช้ตัวอัปเดตผ่านบรรทัดคำสั่ง เนื่องจากคุณมีเซิร์ฟเวอร์ขนาดใหญ่ที่มีจำนวนผู้ใช้มากกว่า 50 ผู้ใช้", + "Please use the command line updater because automatic updating is disabled in the config.php." : "กรุณาใช้ตัวอัปเดตผ่านบรรทัดคำสั่ง เนื่องจากการอัปเดตอัตโนมัติถูกปิดใช้งานใน config.php", "For help, see the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentation</a>." : "สำหรับความช่วยเหลือ ดู<a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">เอกสารประกอบ</a>", "I know that if I continue doing the update via web UI has the risk, that the request runs into a timeout and could cause data loss, but I have a backup and know how to restore my instance in case of a failure." : "ฉันทราบว่าการดำเนินการอัปเดตผ่าน UI เว็บมีความเสี่ยง และหากคำขอหมดเวลาอาจทำให้ข้อมูลสูญหาย แต่ฉันได้สำรองข้อมูลไว้แล้วและทราบวิธีการกู้คืนข้อมูลหากเกิดข้อผิดพลาด", "Upgrade via web on my own risk" : "อัปเกรดผ่านเว็บบนความเสี่ยงของฉัน", diff --git a/core/l10n/tr.js b/core/l10n/tr.js index 8a664d53fa3..bca0ae16c85 100644 --- a/core/l10n/tr.js +++ b/core/l10n/tr.js @@ -51,7 +51,6 @@ OC.L10N.register( "Repair info:" : "Onarım bilgileri:", "Repair warning:" : "Onarım uyarısı:", "Repair error:" : "Onarım sorunu:", - "Please use the command line updater because automatic updating is disabled in the config.php." : "Otomatik güncellemeler config.php dosyasında devre dışı bırakılmış olduğundan, komut satırı güncelleyicisini kullanın.", "Turned on maintenance mode" : "Bakım kipi etkinleştirildi", "Turned off maintenance mode" : "Bakım kipi devre dışı bırakıldı", "Maintenance mode is kept active" : "Bakım kipi etkin tutuldu", @@ -400,6 +399,7 @@ OC.L10N.register( "Detailed logs" : "Ayrıntılı günlükler", "Update needed" : "Güncelleme gerekiyor", "Please use the command line updater because you have a big instance with more than 50 users." : "50 üzerinde kullanıcısı olan bir kopya kullandığınız için lütfen komut satırı güncelleyiciyi kullanın.", + "Please use the command line updater because automatic updating is disabled in the config.php." : "Otomatik güncellemeler config.php dosyasında devre dışı bırakılmış olduğundan, komut satırı güncelleyicisini kullanın.", "For help, see the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentation</a>." : "Yardım almak için, <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">belgelere</a> bakın.", "I know that if I continue doing the update via web UI has the risk, that the request runs into a timeout and could cause data loss, but I have a backup and know how to restore my instance in case of a failure." : "Güncellemeyi web arayüzü üzerinden yapmanın zaman aşımına neden olarak veri kaybına neden olabileceğini biliyorum. Ancak bir yedeğim var ve sorun çıkması durumunda nasıl geri yükleyebileceğimi biliyorum.", "Upgrade via web on my own risk" : "Riski alıyorum web üzerinden güncelle", diff --git a/core/l10n/tr.json b/core/l10n/tr.json index 365d0e4b5f6..c54cdfebb42 100644 --- a/core/l10n/tr.json +++ b/core/l10n/tr.json @@ -49,7 +49,6 @@ "Repair info:" : "Onarım bilgileri:", "Repair warning:" : "Onarım uyarısı:", "Repair error:" : "Onarım sorunu:", - "Please use the command line updater because automatic updating is disabled in the config.php." : "Otomatik güncellemeler config.php dosyasında devre dışı bırakılmış olduğundan, komut satırı güncelleyicisini kullanın.", "Turned on maintenance mode" : "Bakım kipi etkinleştirildi", "Turned off maintenance mode" : "Bakım kipi devre dışı bırakıldı", "Maintenance mode is kept active" : "Bakım kipi etkin tutuldu", @@ -398,6 +397,7 @@ "Detailed logs" : "Ayrıntılı günlükler", "Update needed" : "Güncelleme gerekiyor", "Please use the command line updater because you have a big instance with more than 50 users." : "50 üzerinde kullanıcısı olan bir kopya kullandığınız için lütfen komut satırı güncelleyiciyi kullanın.", + "Please use the command line updater because automatic updating is disabled in the config.php." : "Otomatik güncellemeler config.php dosyasında devre dışı bırakılmış olduğundan, komut satırı güncelleyicisini kullanın.", "For help, see the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentation</a>." : "Yardım almak için, <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">belgelere</a> bakın.", "I know that if I continue doing the update via web UI has the risk, that the request runs into a timeout and could cause data loss, but I have a backup and know how to restore my instance in case of a failure." : "Güncellemeyi web arayüzü üzerinden yapmanın zaman aşımına neden olarak veri kaybına neden olabileceğini biliyorum. Ancak bir yedeğim var ve sorun çıkması durumunda nasıl geri yükleyebileceğimi biliyorum.", "Upgrade via web on my own risk" : "Riski alıyorum web üzerinden güncelle", diff --git a/core/l10n/uk.js b/core/l10n/uk.js index d5806de973d..8148142fed4 100644 --- a/core/l10n/uk.js +++ b/core/l10n/uk.js @@ -51,7 +51,6 @@ OC.L10N.register( "Repair info:" : "Інформація про відновлення:", "Repair warning:" : "Застереження щодо відновлення:", "Repair error:" : "Помилка під час відновлення:", - "Please use the command line updater because automatic updating is disabled in the config.php." : "Просимо запустити процес оновлення з командного рядка, оскільки автоматичне оновлення вимкнено у файлі config.php.", "Turned on maintenance mode" : "Активовано режим технічного обслуговування", "Turned off maintenance mode" : "Вимкнено режим технічного обслуговування", "Maintenance mode is kept active" : "Режим обслуговування залишається активним", @@ -398,6 +397,7 @@ OC.L10N.register( "Detailed logs" : "Деталізований журнал", "Update needed" : "Оновлення необхідно", "Please use the command line updater because you have a big instance with more than 50 users." : "Будь ласка, скористайтеся оновленням з командного рядка, оскільки у вас є більш ніж 50 користувачів.", + "Please use the command line updater because automatic updating is disabled in the config.php." : "Просимо запустити процес оновлення з командного рядка, оскільки автоматичне оновлення вимкнено у файлі config.php.", "For help, see the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentation</a>." : "Щоб отримати допомогу, перегляньте <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">документацію</a>.", "I know that if I continue doing the update via web UI has the risk, that the request runs into a timeout and could cause data loss, but I have a backup and know how to restore my instance in case of a failure." : "Я знаю, що, якщо я продовжую виконувати оновлення через вебінтерфейс, існує ризик того, що запит завершиться по тайм-ауту, що може призвести до втрати даних, але я маю резервну копію та знаю, як відновити мій сервер у випадку невдачі.", "Upgrade via web on my own risk" : "Оновлення через веб-інтерфейс на свій страх і ризик", diff --git a/core/l10n/uk.json b/core/l10n/uk.json index 83f864f5bf9..871903df84a 100644 --- a/core/l10n/uk.json +++ b/core/l10n/uk.json @@ -49,7 +49,6 @@ "Repair info:" : "Інформація про відновлення:", "Repair warning:" : "Застереження щодо відновлення:", "Repair error:" : "Помилка під час відновлення:", - "Please use the command line updater because automatic updating is disabled in the config.php." : "Просимо запустити процес оновлення з командного рядка, оскільки автоматичне оновлення вимкнено у файлі config.php.", "Turned on maintenance mode" : "Активовано режим технічного обслуговування", "Turned off maintenance mode" : "Вимкнено режим технічного обслуговування", "Maintenance mode is kept active" : "Режим обслуговування залишається активним", @@ -396,6 +395,7 @@ "Detailed logs" : "Деталізований журнал", "Update needed" : "Оновлення необхідно", "Please use the command line updater because you have a big instance with more than 50 users." : "Будь ласка, скористайтеся оновленням з командного рядка, оскільки у вас є більш ніж 50 користувачів.", + "Please use the command line updater because automatic updating is disabled in the config.php." : "Просимо запустити процес оновлення з командного рядка, оскільки автоматичне оновлення вимкнено у файлі config.php.", "For help, see the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentation</a>." : "Щоб отримати допомогу, перегляньте <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">документацію</a>.", "I know that if I continue doing the update via web UI has the risk, that the request runs into a timeout and could cause data loss, but I have a backup and know how to restore my instance in case of a failure." : "Я знаю, що, якщо я продовжую виконувати оновлення через вебінтерфейс, існує ризик того, що запит завершиться по тайм-ауту, що може призвести до втрати даних, але я маю резервну копію та знаю, як відновити мій сервер у випадку невдачі.", "Upgrade via web on my own risk" : "Оновлення через веб-інтерфейс на свій страх і ризик", diff --git a/core/l10n/vi.js b/core/l10n/vi.js index 16350e8e470..378a243a1e7 100644 --- a/core/l10n/vi.js +++ b/core/l10n/vi.js @@ -36,7 +36,6 @@ OC.L10N.register( "Learn more ↗" : "Để biết thêm↗", "Preparing update" : "Đang chuẩn bị cập nhật", "[%d / %d]: %s" : "[%d / %d]: %s", - "Please use the command line updater because automatic updating is disabled in the config.php." : "Xin vui lòng sử dụng câu lệnh cập nhật bằng dòng lệnh do cập nhật tự động bị vô hiệu hóa trong file config.php", "Turned on maintenance mode" : "Bật chế độ bảo trì", "Turned off maintenance mode" : "Tắt chế độ bảo trì", "Maintenance mode is kept active" : "Chế độ bảo trì đang được kích hoạt", @@ -234,6 +233,7 @@ OC.L10N.register( "Detailed logs" : "Nhật ký chi tiết", "Update needed" : "Cần phải cập nhật", "Please use the command line updater because you have a big instance with more than 50 users." : "Xin vui lòng sử dụng lệnh cập nhật bằng dòng lệnh bởi vì bạn có một bản cài đặt lớn có hơn 50 người dùng.", + "Please use the command line updater because automatic updating is disabled in the config.php." : "Xin vui lòng sử dụng câu lệnh cập nhật bằng dòng lệnh do cập nhật tự động bị vô hiệu hóa trong file config.php", "For help, see the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentation</a>." : "Trợ giúp, xem <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentation</a>.", "I know that if I continue doing the update via web UI has the risk, that the request runs into a timeout and could cause data loss, but I have a backup and know how to restore my instance in case of a failure." : "Tôi biết rằng nếu tôi tiếp tục thực hiện cập nhập qua giao diện Web có rủi ro, mà yêu cầu đó chạy trong một khoảng thời gian bị quá hạn và có thể gây mất dữ liệu, nếu tôi có một bản sao và tôi biết cách khôi phục bản cài đặt đã sao lưu trong trường hợp bị lỗi khi cập nhật.", "Upgrade via web on my own risk" : "Nâng cấp qua web", diff --git a/core/l10n/vi.json b/core/l10n/vi.json index 86d936bd83d..3f1c54d435e 100644 --- a/core/l10n/vi.json +++ b/core/l10n/vi.json @@ -34,7 +34,6 @@ "Learn more ↗" : "Để biết thêm↗", "Preparing update" : "Đang chuẩn bị cập nhật", "[%d / %d]: %s" : "[%d / %d]: %s", - "Please use the command line updater because automatic updating is disabled in the config.php." : "Xin vui lòng sử dụng câu lệnh cập nhật bằng dòng lệnh do cập nhật tự động bị vô hiệu hóa trong file config.php", "Turned on maintenance mode" : "Bật chế độ bảo trì", "Turned off maintenance mode" : "Tắt chế độ bảo trì", "Maintenance mode is kept active" : "Chế độ bảo trì đang được kích hoạt", @@ -232,6 +231,7 @@ "Detailed logs" : "Nhật ký chi tiết", "Update needed" : "Cần phải cập nhật", "Please use the command line updater because you have a big instance with more than 50 users." : "Xin vui lòng sử dụng lệnh cập nhật bằng dòng lệnh bởi vì bạn có một bản cài đặt lớn có hơn 50 người dùng.", + "Please use the command line updater because automatic updating is disabled in the config.php." : "Xin vui lòng sử dụng câu lệnh cập nhật bằng dòng lệnh do cập nhật tự động bị vô hiệu hóa trong file config.php", "For help, see the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentation</a>." : "Trợ giúp, xem <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentation</a>.", "I know that if I continue doing the update via web UI has the risk, that the request runs into a timeout and could cause data loss, but I have a backup and know how to restore my instance in case of a failure." : "Tôi biết rằng nếu tôi tiếp tục thực hiện cập nhập qua giao diện Web có rủi ro, mà yêu cầu đó chạy trong một khoảng thời gian bị quá hạn và có thể gây mất dữ liệu, nếu tôi có một bản sao và tôi biết cách khôi phục bản cài đặt đã sao lưu trong trường hợp bị lỗi khi cập nhật.", "Upgrade via web on my own risk" : "Nâng cấp qua web", diff --git a/core/l10n/zh_CN.js b/core/l10n/zh_CN.js index 795c6bd1e73..7fc1fcd153c 100644 --- a/core/l10n/zh_CN.js +++ b/core/l10n/zh_CN.js @@ -47,7 +47,6 @@ OC.L10N.register( "Repair info:" : "修复 信息:", "Repair warning:" : "修复 警告:", "Repair error:" : "修复 错误:", - "Please use the command line updater because automatic updating is disabled in the config.php." : "由于自动更新在 config.php 中已禁用,请使用命令行更新。", "Turned on maintenance mode" : "启用维护模式", "Turned off maintenance mode" : "关闭维护模式", "Maintenance mode is kept active" : "维护模式已启用", @@ -392,6 +391,7 @@ OC.L10N.register( "Detailed logs" : "详细日志", "Update needed" : "需要更新", "Please use the command line updater because you have a big instance with more than 50 users." : "请使用命令行更新,因为您有一个超过50个用户的大型实例。", + "Please use the command line updater because automatic updating is disabled in the config.php." : "由于自动更新在 config.php 中已禁用,请使用命令行更新。", "For help, see the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentation</a>." : "获取更多帮助,请查看<a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">文档</a>。", "I know that if I continue doing the update via web UI has the risk, that the request runs into a timeout and could cause data loss, but I have a backup and know how to restore my instance in case of a failure." : "我知道继续通过Web UI进行更新的风险,请求超时运行,并可能导致数据丢失,但我有一个备份,并知道如何恢复。", "Upgrade via web on my own risk" : "通过网络升级的风险", diff --git a/core/l10n/zh_CN.json b/core/l10n/zh_CN.json index 8b0622be76f..8cd7cdd7b6d 100644 --- a/core/l10n/zh_CN.json +++ b/core/l10n/zh_CN.json @@ -45,7 +45,6 @@ "Repair info:" : "修复 信息:", "Repair warning:" : "修复 警告:", "Repair error:" : "修复 错误:", - "Please use the command line updater because automatic updating is disabled in the config.php." : "由于自动更新在 config.php 中已禁用,请使用命令行更新。", "Turned on maintenance mode" : "启用维护模式", "Turned off maintenance mode" : "关闭维护模式", "Maintenance mode is kept active" : "维护模式已启用", @@ -390,6 +389,7 @@ "Detailed logs" : "详细日志", "Update needed" : "需要更新", "Please use the command line updater because you have a big instance with more than 50 users." : "请使用命令行更新,因为您有一个超过50个用户的大型实例。", + "Please use the command line updater because automatic updating is disabled in the config.php." : "由于自动更新在 config.php 中已禁用,请使用命令行更新。", "For help, see the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentation</a>." : "获取更多帮助,请查看<a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">文档</a>。", "I know that if I continue doing the update via web UI has the risk, that the request runs into a timeout and could cause data loss, but I have a backup and know how to restore my instance in case of a failure." : "我知道继续通过Web UI进行更新的风险,请求超时运行,并可能导致数据丢失,但我有一个备份,并知道如何恢复。", "Upgrade via web on my own risk" : "通过网络升级的风险", diff --git a/core/l10n/zh_HK.js b/core/l10n/zh_HK.js index 6709bd583bb..7a157afa5af 100644 --- a/core/l10n/zh_HK.js +++ b/core/l10n/zh_HK.js @@ -51,7 +51,7 @@ OC.L10N.register( "Repair info:" : "修復資訊:", "Repair warning:" : "修復警告:", "Repair error:" : "修復錯誤:", - "Please use the command line updater because automatic updating is disabled in the config.php." : "由於自動更新功能已在 config.php 檔案中設定停用,請使用命令列(command line)更新系統。", + "Please use the command line updater because updating via the browser is disabled in your config.php." : "由於更新功能已在 config.php 中設定停用,請使用命令列(command line)更新系統。", "Turned on maintenance mode" : "啟用維護模式", "Turned off maintenance mode" : "停用維護模式", "Maintenance mode is kept active" : "伺服器正處於維護模式", @@ -184,6 +184,7 @@ OC.L10N.register( "Simple email app nicely integrated with Files, Contacts and Calendar." : "簡潔的電子郵件應用程式,與檔案瀏覽器、通訊錄、行事曆完美整合", "Chatting, video calls, screensharing, online meetings and web conferencing – in your browser and with mobile apps." : "對話、視訊電話、螢幕分享、線上會議與網路研討會 - 實現於你的瀏覽器與手機 apps 之中。", "Collaborative documents, spreadsheets and presentations, built on Collabora Online." : "基於 Collabora Online 構建的協作文件、試算表和演講文稿。", + "Distraction free note taking app." : "無干擾的筆記應用程式。", "Search contacts" : "搜尋聯絡人", "Forgot password?" : "忘記密碼?", "Log in with a device" : "使用免密碼裝置登入", @@ -215,6 +216,7 @@ OC.L10N.register( "Settings menu" : "設定選單", "Search {types} …" : "搜尋 {types} 中 …", "Settings" : "設定", + "Avatar of {fullName}" : "{fullName} 的虛擬化身", "Could not load your contacts" : "無法載入您的聯絡人", "Search contacts …" : "搜尋聯絡人…", "No contacts found" : "查無聯絡人", @@ -400,6 +402,7 @@ OC.L10N.register( "Detailed logs" : "詳細記錄檔", "Update needed" : "需要更新", "Please use the command line updater because you have a big instance with more than 50 users." : "因為您有超過50名用戶,服務規模較大,請透過命令提示字元界面(command line updater)更新。", + "Please use the command line updater because automatic updating is disabled in the config.php." : "由於自動更新功能已在 config.php 檔案中設定停用,請使用命令列(command line)更新系統。", "For help, see the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentation</a>." : "若需要協助,請參閱<a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">說明文件</a>", "I know that if I continue doing the update via web UI has the risk, that the request runs into a timeout and could cause data loss, but I have a backup and know how to restore my instance in case of a failure." : "若我繼續透過網頁界面更新時我已了解有其風險,若請求逾時可能導致資料遺失,萬一更新失敗,我已準備好備份並知道如何回復運作。", "Upgrade via web on my own risk" : "願意承擔風險透過網頁更新", diff --git a/core/l10n/zh_HK.json b/core/l10n/zh_HK.json index cefe007f455..00c93be4e04 100644 --- a/core/l10n/zh_HK.json +++ b/core/l10n/zh_HK.json @@ -49,7 +49,7 @@ "Repair info:" : "修復資訊:", "Repair warning:" : "修復警告:", "Repair error:" : "修復錯誤:", - "Please use the command line updater because automatic updating is disabled in the config.php." : "由於自動更新功能已在 config.php 檔案中設定停用,請使用命令列(command line)更新系統。", + "Please use the command line updater because updating via the browser is disabled in your config.php." : "由於更新功能已在 config.php 中設定停用,請使用命令列(command line)更新系統。", "Turned on maintenance mode" : "啟用維護模式", "Turned off maintenance mode" : "停用維護模式", "Maintenance mode is kept active" : "伺服器正處於維護模式", @@ -182,6 +182,7 @@ "Simple email app nicely integrated with Files, Contacts and Calendar." : "簡潔的電子郵件應用程式,與檔案瀏覽器、通訊錄、行事曆完美整合", "Chatting, video calls, screensharing, online meetings and web conferencing – in your browser and with mobile apps." : "對話、視訊電話、螢幕分享、線上會議與網路研討會 - 實現於你的瀏覽器與手機 apps 之中。", "Collaborative documents, spreadsheets and presentations, built on Collabora Online." : "基於 Collabora Online 構建的協作文件、試算表和演講文稿。", + "Distraction free note taking app." : "無干擾的筆記應用程式。", "Search contacts" : "搜尋聯絡人", "Forgot password?" : "忘記密碼?", "Log in with a device" : "使用免密碼裝置登入", @@ -213,6 +214,7 @@ "Settings menu" : "設定選單", "Search {types} …" : "搜尋 {types} 中 …", "Settings" : "設定", + "Avatar of {fullName}" : "{fullName} 的虛擬化身", "Could not load your contacts" : "無法載入您的聯絡人", "Search contacts …" : "搜尋聯絡人…", "No contacts found" : "查無聯絡人", @@ -398,6 +400,7 @@ "Detailed logs" : "詳細記錄檔", "Update needed" : "需要更新", "Please use the command line updater because you have a big instance with more than 50 users." : "因為您有超過50名用戶,服務規模較大,請透過命令提示字元界面(command line updater)更新。", + "Please use the command line updater because automatic updating is disabled in the config.php." : "由於自動更新功能已在 config.php 檔案中設定停用,請使用命令列(command line)更新系統。", "For help, see the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentation</a>." : "若需要協助,請參閱<a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">說明文件</a>", "I know that if I continue doing the update via web UI has the risk, that the request runs into a timeout and could cause data loss, but I have a backup and know how to restore my instance in case of a failure." : "若我繼續透過網頁界面更新時我已了解有其風險,若請求逾時可能導致資料遺失,萬一更新失敗,我已準備好備份並知道如何回復運作。", "Upgrade via web on my own risk" : "願意承擔風險透過網頁更新", diff --git a/core/l10n/zh_TW.js b/core/l10n/zh_TW.js index 76c5689dc0b..a20fbfea73d 100644 --- a/core/l10n/zh_TW.js +++ b/core/l10n/zh_TW.js @@ -51,7 +51,7 @@ OC.L10N.register( "Repair info:" : "修復資訊:", "Repair warning:" : "修復警告:", "Repair error:" : "修復錯誤:", - "Please use the command line updater because automatic updating is disabled in the config.php." : "由於自動更新功能已在 config.php 檔案中設定停用,請使用命令列更新系統。", + "Please use the command line updater because updating via the browser is disabled in your config.php." : "因為透過瀏覽器更新的功能已在您的 config.php 中停用,因此請使用命令列更新程式。", "Turned on maintenance mode" : "啟用維護模式", "Turned off maintenance mode" : "停用維護模式", "Maintenance mode is kept active" : "伺服器正處於維護模式", @@ -184,6 +184,7 @@ OC.L10N.register( "Simple email app nicely integrated with Files, Contacts and Calendar." : "簡潔的電子郵件應用程式,與檔案瀏覽器、通訊錄、行事曆完美整合", "Chatting, video calls, screensharing, online meetings and web conferencing – in your browser and with mobile apps." : "對話、視訊電話、螢幕分享、線上會議與網路研討會 - 實現於你的瀏覽器與手機應用程式之中。", "Collaborative documents, spreadsheets and presentations, built on Collabora Online." : "使用 Collabora Online 建置的協作文件、試算表與簡報。", + "Distraction free note taking app." : "無干擾的筆記應用程式。", "Search contacts" : "搜尋聯絡人", "Forgot password?" : "忘記密碼?", "Log in with a device" : "使用免密碼裝置登入", @@ -215,6 +216,7 @@ OC.L10N.register( "Settings menu" : "設定選單", "Search {types} …" : "搜尋 {types} 中……", "Settings" : "設定", + "Avatar of {fullName}" : "{fullName} 的大頭照", "Could not load your contacts" : "無法載入您的聯絡人", "Search contacts …" : "搜尋聯絡人……", "No contacts found" : "查無聯絡人", @@ -400,6 +402,7 @@ OC.L10N.register( "Detailed logs" : "詳細記錄檔", "Update needed" : "需要更新", "Please use the command line updater because you have a big instance with more than 50 users." : "因為您有超過 50 名使用者,服務規模較大,請透過命令列介面更新。", + "Please use the command line updater because automatic updating is disabled in the config.php." : "由於自動更新功能已在 config.php 檔案中設定停用,請使用命令列更新系統。", "For help, see the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentation</a>." : "若需要協助,請參閱<a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">說明文件</a>", "I know that if I continue doing the update via web UI has the risk, that the request runs into a timeout and could cause data loss, but I have a backup and know how to restore my instance in case of a failure." : "若我繼續透過網頁介面更新,我已了解有其風險,若請求逾時可能導致資料遺失,萬一更新失敗,我已準備好備份並知道如何回復運作。", "Upgrade via web on my own risk" : "願意承擔風險透過網頁更新", diff --git a/core/l10n/zh_TW.json b/core/l10n/zh_TW.json index 0c68538f40a..03a47c4233d 100644 --- a/core/l10n/zh_TW.json +++ b/core/l10n/zh_TW.json @@ -49,7 +49,7 @@ "Repair info:" : "修復資訊:", "Repair warning:" : "修復警告:", "Repair error:" : "修復錯誤:", - "Please use the command line updater because automatic updating is disabled in the config.php." : "由於自動更新功能已在 config.php 檔案中設定停用,請使用命令列更新系統。", + "Please use the command line updater because updating via the browser is disabled in your config.php." : "因為透過瀏覽器更新的功能已在您的 config.php 中停用,因此請使用命令列更新程式。", "Turned on maintenance mode" : "啟用維護模式", "Turned off maintenance mode" : "停用維護模式", "Maintenance mode is kept active" : "伺服器正處於維護模式", @@ -182,6 +182,7 @@ "Simple email app nicely integrated with Files, Contacts and Calendar." : "簡潔的電子郵件應用程式,與檔案瀏覽器、通訊錄、行事曆完美整合", "Chatting, video calls, screensharing, online meetings and web conferencing – in your browser and with mobile apps." : "對話、視訊電話、螢幕分享、線上會議與網路研討會 - 實現於你的瀏覽器與手機應用程式之中。", "Collaborative documents, spreadsheets and presentations, built on Collabora Online." : "使用 Collabora Online 建置的協作文件、試算表與簡報。", + "Distraction free note taking app." : "無干擾的筆記應用程式。", "Search contacts" : "搜尋聯絡人", "Forgot password?" : "忘記密碼?", "Log in with a device" : "使用免密碼裝置登入", @@ -213,6 +214,7 @@ "Settings menu" : "設定選單", "Search {types} …" : "搜尋 {types} 中……", "Settings" : "設定", + "Avatar of {fullName}" : "{fullName} 的大頭照", "Could not load your contacts" : "無法載入您的聯絡人", "Search contacts …" : "搜尋聯絡人……", "No contacts found" : "查無聯絡人", @@ -398,6 +400,7 @@ "Detailed logs" : "詳細記錄檔", "Update needed" : "需要更新", "Please use the command line updater because you have a big instance with more than 50 users." : "因為您有超過 50 名使用者,服務規模較大,請透過命令列介面更新。", + "Please use the command line updater because automatic updating is disabled in the config.php." : "由於自動更新功能已在 config.php 檔案中設定停用,請使用命令列更新系統。", "For help, see the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentation</a>." : "若需要協助,請參閱<a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">說明文件</a>", "I know that if I continue doing the update via web UI has the risk, that the request runs into a timeout and could cause data loss, but I have a backup and know how to restore my instance in case of a failure." : "若我繼續透過網頁介面更新,我已了解有其風險,若請求逾時可能導致資料遺失,萬一更新失敗,我已準備好備份並知道如何回復運作。", "Upgrade via web on my own risk" : "願意承擔風險透過網頁更新", diff --git a/core/src/OC/contactsmenu.js b/core/src/OC/contactsmenu.js index b9f4b0fc064..58d319a03c0 100644 --- a/core/src/OC/contactsmenu.js +++ b/core/src/OC/contactsmenu.js @@ -55,6 +55,11 @@ const Contact = Model.extend({ } else { this.set('hasManyActions', true) } + + const fullName = this.get('fullName') + if (this.get('avatar') && fullName) { + this.set('avatarLabel', t('core', 'Avatar of {fullName}', { fullName })) + } } }) diff --git a/core/src/OC/contactsmenu/contact.handlebars b/core/src/OC/contactsmenu/contact.handlebars index afb2f627663..483cb3e93d5 100644 --- a/core/src/OC/contactsmenu/contact.handlebars +++ b/core/src/OC/contactsmenu/contact.handlebars @@ -2,11 +2,11 @@ {{#if contact.profileUrl}} {{#if contact.profileTitle}} <a class="profile-link--avatar" href="{{contact.profileUrl}}"> - <img src="{{contact.avatar}}&size=32" class="avatar" srcset="{{contact.avatar}}&size=32 1x, {{contact.avatar}}&size=64 2x, {{contact.avatar}}&size=128 4x" alt=""> + <img src="{{contact.avatar}}&size=32" class="avatar" srcset="{{contact.avatar}}&size=32 1x, {{contact.avatar}}&size=64 2x, {{contact.avatar}}&size=128 4x" alt="{{contact.avatarLabel}}"> </a> {{/if}} {{else}} - <img src="{{contact.avatar}}&size=32" class="avatar" srcset="{{contact.avatar}}&size=32 1x, {{contact.avatar}}&size=64 2x, {{contact.avatar}}&size=128 4x" alt=""> + <img src="{{contact.avatar}}&size=32" class="avatar" srcset="{{contact.avatar}}&size=32 1x, {{contact.avatar}}&size=64 2x, {{contact.avatar}}&size=128 4x" alt="{{contact.avatarLabel}}"> {{/if}} {{else}} {{#if contact.profileUrl}} diff --git a/dist/core-login.js b/dist/core-login.js index 8dfe02976b3..cfc3c367821 100644 --- a/dist/core-login.js +++ b/dist/core-login.js @@ -1,3 +1,3 @@ /*! For license information please see core-login.js.LICENSE.txt */ -!function(){var e,o={39977:function(e,o,i){"use strict";var r=i(20144),a=i(78595),s=i(19755),l=i.n(s),c=i(79753),u=i(25108),d={},f=[],p=i(18181),h=i(64024),m=i(25108),g={updatableNotification:null,getDefaultNotificationFunction:null,setDefault:function(t){this.getDefaultNotificationFunction=t},hide:function(t,e){p.ZP.isFunction(t)&&(e=t,t=void 0),t?(t.each((function(){l()(this)[0].toastify?l()(this)[0].toastify.hideToast():m.error("cannot hide toast because object is not set"),this===this.updatableNotification&&(this.updatableNotification=null)})),e&&e.call(),this.getDefaultNotificationFunction&&this.getDefaultNotificationFunction()):m.error("Missing argument $row in OC.Notification.hide() call, caller needs to be adjusted to only dismiss its own notification")},showHtml:function(t,e){(e=e||{}).isHTML=!0,e.timeout=e.timeout?e.timeout:h.Rl;var n=(0,h.PV)(t,e);return n.toastElement.toastify=n,l()(n.toastElement)},show:function(t,e){(e=e||{}).timeout=e.timeout?e.timeout:h.Rl;var n=(0,h.PV)(function(t){return t.toString().split("&").join("&").split("<").join("<").split(">").join(">").split('"').join(""").split("'").join("'")}(t),e);return n.toastElement.toastify=n,l()(n.toastElement)},showUpdate:function(t){return this.updatableNotification&&this.updatableNotification.hideToast(),this.updatableNotification=(0,h.PV)(t,{timeout:h.Rl}),this.updatableNotification.toastElement.toastify=this.updatableNotification,l()(this.updatableNotification.toastElement)},showTemporary:function(t,e){(e=e||{}).timeout=e.timeout||h.TN;var n=(0,h.PV)(t,e);return n.toastElement.toastify=n,l()(n.toastElement)},isHidden:function(){return!l()("#content").find(".toastify").length}},v=p.ZP.throttle((function(){g.showTemporary(t("core","Connection to server lost"))}),7e3,{trailing:!1}),y={enableDynamicSlideToggle:function(){},showAppSidebar:function(t){(t||l()("#app-sidebar")).removeClass("disappear").show(),l()("#app-content").trigger(new(l().Event)("appresized"))},hideAppSidebar:function(t){(t||l()("#app-sidebar")).hide().addClass("disappear"),l()("#app-content").trigger(new(l().Event)("appresized"))}};function w(t,e,n){"post"!==t&&"delete"!==t||!Bt.PasswordConfirmation.requiresPasswordConfirmation()?(n=n||{},l().ajax({type:t.toUpperCase(),url:(0,c.generateOcsUrl)("apps/provisioning_api/api/v1/config/apps")+e,data:n.data||{},success:n.success,error:n.error})):Bt.PasswordConfirmation.requirePasswordConfirmation(_.bind(w,this,t,e,n))}var b=window.oc_appconfig||{},P={getValue:function(t,e,n,o){!function(t,e,n,o){(o=o||{}).data={defaultValue:n},w("get","/"+t+"/"+e,o)}(t,e,n,{success:o})},setValue:function(t,e,n){!function(t,e,n,o){(o=o||{}).data={value:n},w("post","/"+t+"/"+e,o)}(t,e,n)},getApps:function(t){!function(t){w("get","",t)}({success:t})},getKeys:function(t,e){!function(t,e){w("get","/"+t,e)}(t,{success:e})},deleteKey:function(t,e){!function(t,e,n){w("delete","/"+t+"/"+e,void 0)}(t,e)}},C=i(25108),A=void 0!==window._oc_appswebroots&&window._oc_appswebroots,k=i(72316),x=i.n(k),O=i(76591),T=i(25108),j={create:"POST",update:"PROPPATCH",patch:"PROPPATCH",delete:"DELETE",read:"PROPFIND"};function E(t,e){if(p.ZP.isArray(t))return p.ZP.map(t,(function(t){return E(t,e)}));var n={href:t.href};return p.ZP.each(t.propStat,(function(t){if("HTTP/1.1 200 OK"===t.status)for(var o in t.properties){var i=o;o in e&&(i=e[o]),n[i]=t.properties[o]}})),n.id||(n.id=S(n.href)),n}function S(t){var e=t.indexOf("?");e>0&&(t=t.substr(0,e));var n,o=t.split("/");do{n=o[o.length-1],o.pop()}while(!n&&o.length>0);return n}function L(t){return t>=200&&t<=299}function N(t,e,n,o){return t.propPatch(e.url,function(t,e){var n,o={};for(n in t){var i=e[n],r=t[n];i||(T.warn('No matching DAV property for property "'+n),i=n),(p.ZP.isBoolean(r)||p.ZP.isNumber(r))&&(r=""+r),o[i]=r}return o}(n.changed,e.davProperties),o).then((function(t){L(t.status)?p.ZP.isFunction(e.success)&&e.success(n.toJSON()):p.ZP.isFunction(e.error)&&e.error(t)}))}var I=x().noConflict();Object.assign(I,{davCall:function(t,e){var n=new O.dav.Client({baseUrl:t.url,xmlNamespaces:p.ZP.extend({"DAV:":"d","http://owncloud.org/ns":"oc"},t.xmlNamespaces||{})});n.resolveUrl=function(){return t.url};var o=p.ZP.extend({"X-Requested-With":"XMLHttpRequest",requesttoken:OC.requestToken},t.headers);return"PROPFIND"===t.type?function(t,e,n,o){return t.propFind(e.url,p.ZP.values(e.davProperties)||[],e.depth,o).then((function(t){if(L(t.status)){if(p.ZP.isFunction(e.success)){var n=p.ZP.invert(e.davProperties),o=E(t.body,n);e.depth>0&&o.shift(),e.success(o)}}else p.ZP.isFunction(e.error)&&e.error(t)}))}(n,t,0,o):"PROPPATCH"===t.type?N(n,t,e,o):"MKCOL"===t.type?function(t,e,n,o){return t.request(e.type,e.url,o,null).then((function(i){L(i.status)?N(t,e,n,o):p.ZP.isFunction(e.error)&&e.error(i)}))}(n,t,e,o):function(t,e,n,o){return o["Content-Type"]="application/json",t.request(e.type,e.url,o,e.data).then((function(t){if(L(t.status)){if(p.ZP.isFunction(e.success)){if("PUT"===e.type||"POST"===e.type||"MKCOL"===e.type){var o=t.body||n.toJSON(),i=t.xhr.getResponseHeader("Content-Location");return"POST"===e.type&&i&&(o.id=S(i)),void e.success(o)}if(207===t.status){var r=p.ZP.invert(e.davProperties);e.success(E(t.body,r))}else e.success(t.body)}}else p.ZP.isFunction(e.error)&&e.error(t)}))}(n,t,e,o)},davSync:function(t){return function(e,n,o){var i={type:j[e]||e},r=n instanceof t.Collection;if("update"===e&&(n.hasInnerCollection?i.type="MKCOL":(n.usePUT||n.collection&&n.collection.usePUT)&&(i.type="PUT")),o.url||(i.url=p.ZP.result(n,"url")||function(){throw new Error('A "url" property or function must be specified')}()),null!=o.data||!n||"create"!==e&&"update"!==e&&"patch"!==e||(i.data=JSON.stringify(o.attrs||n.toJSON(o))),"PROPFIND"!==i.type&&(i.processData=!1),"PROPFIND"===i.type||"PROPPATCH"===i.type){var a=n.davProperties;!a&&n.model&&(a=n.model.prototype.davProperties),a&&(p.ZP.isFunction(a)?i.davProperties=a.call(n):i.davProperties=a),i.davProperties=p.ZP.extend(i.davProperties||{},o.davProperties),p.ZP.isUndefined(o.depth)&&(o.depth=r?1:0)}var s=o.error;o.error=function(t,e,n){o.textStatus=e,o.errorThrown=n,s&&s.call(o.context,t,e,n)};var l=o.xhr=t.davCall(p.ZP.extend(i,o),n);return n.trigger("request",n,l,o),l}}(I)});var U=I,$=i(65358),R=window._oc_config||{},F=i(25108),M=k.Model.extend({defaults:{fullName:"",lastMessage:"",actions:[],hasOneAction:!1,hasTwoActions:!1,hasManyActions:!1},initialize:function(){0===this.get("actions").length?this.set("hasOneAction",!0):1===this.get("actions").length?(this.set("hasTwoActions",!0),this.set("secondAction",this.get("actions")[0])):this.set("hasManyActions",!0)}}),B=k.Collection.extend({model:M}),z=k.View.extend({_collection:void 0,_subViews:[],initialize:function(t){this._collection=t.collection},render:function(){var t=this;return t.$el.html(""),t._subViews=[],t._collection.forEach((function(e){var n=new D({model:e});n.render(),t.$el.append(n.$el),n.on("toggle:actionmenu",t._onChildActionMenuToggle,t),t._subViews.push(n)})),t},_onChildActionMenuToggle:function(t){this._subViews.forEach((function(e){e.trigger("parent:toggle:actionmenu",t)}))}}),D=k.View.extend({className:"contact",_template:void 0,_model:void 0,_actionMenuShown:!1,events:{"click .icon-more":"_onToggleActionsMenu"},contactTemplate:i(10944),template:function(t){return this.contactTemplate(t)},initialize:function(t){this._model=t.model,this.on("parent:toggle:actionmenu",this._onOtherActionMenuOpened,this)},render:function(){return this.$el.html(this.template({contact:this._model.toJSON()})),this.delegateEvents(),this.$("div.avatar").imageplaceholder(this._model.get("fullName")),this.$(".top-action").tooltip({placement:"left"}),this.$(".second-action").tooltip({placement:"left"}),this},_onToggleActionsMenu:function(){this._actionMenuShown=!this._actionMenuShown,this._actionMenuShown?this.$(".menu").show():this.$(".menu").hide(),this.trigger("toggle:actionmenu",this.$el)},_onOtherActionMenuOpened:function(t){this.$el.is(t)||(this._actionMenuShown=!1,this.$(".menu").hide())}}),Z=k.View.extend({_loadingTemplate:void 0,_errorTemplate:void 0,_contentTemplate:void 0,_contactsTemplate:void 0,_contacts:void 0,_searchTerm:"",events:{"input #contactsmenu-search":"_onSearch"},templates:{loading:i(95386),error:i(20421),menu:i(66115),list:i(34083)},_onSearch:p.ZP.debounce((function(t){var e=this.$("#contactsmenu-search").val();e!==this._searchTerm&&(this.trigger("search",this.$("#contactsmenu-search").val()),this._searchTerm=e)}),700),loadingTemplate:function(t){return this.templates.loading(t)},errorTemplate:function(e){return this.templates.error(p.ZP.extend({couldNotLoadText:t("core","Could not load your contacts")},e))},contentTemplate:function(e){return this.templates.menu(p.ZP.extend({searchContactsText:t("core","Search contacts …")},e))},contactsTemplate:function(e){return this.templates.list(p.ZP.extend({noContactsFoundText:t("core","No contacts found"),showAllContactsText:t("core","Show all contacts …"),contactsAppMgmtText:t("core","Install the Contacts app")},e))},initialize:function(t){this.options=t},showLoading:function(t){this.render(),this._contacts=void 0,this.$(".content").html(this.loadingTemplate({loadingText:t}))},showError:function(){this.render(),this._contacts=void 0,this.$(".content").html(this.errorTemplate())},showContacts:function(t,e){this._contacts=t.contacts,this.render({contacts:t.contacts});var n=new z({collection:t.contacts});n.render(),this.$(".content").html(this.contactsTemplate({contacts:t.contacts,searchTerm:e,contactsAppEnabled:t.contactsAppEnabled,contactsAppURL:Bt.generateUrl("/apps/contacts"),canInstallApp:Bt.isUserAdmin(),contactsAppMgmtURL:Bt.generateUrl("/settings/apps/social/contacts")})),this.$("#contactsmenu-contacts").html(n.$el)},render:function(t){var e=this.$("#contactsmenu-search").val();return this.$el.html(this.contentTemplate(t)),this.$("#contactsmenu-search").val(e),this.$("#contactsmenu-search").focus(),this}}),H=function(t){this.initialize(t)};H.prototype={$el:void 0,_view:void 0,_contactsPromise:void 0,initialize:function(t){this.$el=l()(t.el),this._view=new Z({el:this.$el}),this._view.on("search",(function(t){this.loadContacts(t)}),this)},_getContacts:function(t){var e=Bt.generateUrl("/contactsmenu/contacts");return Promise.resolve(l().ajax(e,{method:"POST",data:{filter:t}}))},loadContacts:function(e){var n=this;return n._contactsPromise||(n._contactsPromise=n._getContacts(e)),p.ZP.isUndefined(e)||""===e?n._view.showLoading(t("core","Loading your contacts …")):n._view.showLoading(t("core","Looking for {term} …",{term:e})),n._contactsPromise.then((function(t){t.contacts=new B(t.contacts),n._view.showContacts(t,e)}),(function(t){n._view.showError(),F.error("There was an error loading your contacts",t)})).then((function(){delete n._contactsPromise})).catch(F.error.bind(this))}};var Y=H,q=document.getElementsByTagName("head")[0].getAttribute("data-user"),K=document.getElementsByTagName("head")[0].getAttribute("data-user-displayname"),V=void 0!==q&&q,G=i(25108);function W(t){return W="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},W(t)}function J(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,(void 0,i=function(t,e){if("object"!==W(t)||null===t)return t;var n=t[Symbol.toPrimitive];if(void 0!==n){var o=n.call(t,e);if("object"!==W(o))return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(o.key,"string"),"symbol"===W(i)?i:String(i)),o)}var i}function Q(t,e,n){return e&&J(t.prototype,e),n&&J(t,n),Object.defineProperty(t,"prototype",{writable:!1}),t}var X={Search:Q((function t(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),G.warn("OCA.Search is deprecated. Please use the unified search API instead")}))},tt=function(t){return"click"===t.type||"keydown"===t.type&&"Enter"===t.key},et=i(25108);function nt(t,e,n,o,i,r,a){try{var s=t[r](a),l=s.value}catch(t){return void n(t)}s.done?e(l):Promise.resolve(l).then(o,i)}function ot(t){return function(){var e=this,n=arguments;return new Promise((function(o,i){var r=t.apply(e,n);function a(t){nt(r,o,i,a,s,"next",t)}function s(t){nt(r,o,i,a,s,"throw",t)}a(void 0)}))}}function it(t){return it="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},it(t)}var rt,at,st,lt,ct={YES_NO_BUTTONS:70,OK_BUTTONS:71,FILEPICKER_TYPE_CHOOSE:1,FILEPICKER_TYPE_MOVE:2,FILEPICKER_TYPE_COPY:3,FILEPICKER_TYPE_COPY_MOVE:4,FILEPICKER_TYPE_CUSTOM:5,dialogsCounter:0,alert:function(t,e,n,o){this.message(t,e,"alert",ct.OK_BUTTON,n,o)},info:function(t,e,n,o){this.message(t,e,"info",ct.OK_BUTTON,n,o)},confirm:function(t,e,n,o){return this.message(t,e,"notice",ct.YES_NO_BUTTONS,n,o)},confirmDestructive:function(t,e,n,o,i){return this.message(t,e,"none",n,o,void 0===i||i)},confirmHtml:function(t,e,n,o){return this.message(t,e,"notice",ct.YES_NO_BUTTONS,n,o,!0)},prompt:function(e,n,o,i,r,a){return l().when(this._getMessageTemplate()).then((function(s){var c="oc-dialog-"+ct.dialogsCounter+"-content",u="#"+c,d=s.octemplate({dialog_name:c,title:n,message:e,type:"notice"}),f=l()("<input/>");f.attr("type",a?"password":"text").attr("id",c+"-input").attr("placeholder",r);var h=l()("<label/>").attr("for",c+"-input").text(r+": ");d.append(h),d.append(f),void 0===i&&(i=!1),l()("body").append(d),void 0!==o&&(o=p.ZP.once(o));var m=[{text:t("core","No"),click:function(){void 0!==o&&o(!1,f.val()),l()(u).ocdialog("close")}},{text:t("core","Yes"),click:function(){void 0!==o&&o(!0,f.val()),l()(u).ocdialog("close")},defaultButton:!0}];l()(u).ocdialog({closeOnEscape:!0,modal:i,buttons:m,close:function(){void 0!==o&&o(!1,f.val())}}),f.focus(),ct.dialogsCounter++}))},filepicker:function(e,n,o,i,r,a,s,c){var u=this;if(this.filepicker.sortField="name",this.filepicker.sortOrder="asc",!this.filepicker.loading){void 0===a&&(a=this.FILEPICKER_TYPE_CHOOSE);var d=t("core","No files in here"),f=t("files","New folder");a!==this.FILEPICKER_TYPE_COPY&&a!==this.FILEPICKER_TYPE_MOVE&&a!==this.FILEPICKER_TYPE_COPY_MOVE||(d=t("core","No more subfolders in here")),this.filepicker.loading=!0,this.filepicker.filesClient=X.Sharing&&X.Sharing.PublicApp&&X.Sharing.PublicApp.fileList?X.Sharing.PublicApp.fileList.filesClient:Bt.Files.getClient(),this.filelist=null,s=s||"",c=Object.assign({allowDirectoryChooser:!1},c),l().when(this._getFilePickerTemplate()).then((function(p){var h,m;u.filepicker.loading=!1,u.$filePicker&&u.$filePicker.ocdialog("close"),null==i&&(i=[]),"string"==typeof i&&(i=[i]),u.$filePicker=p.octemplate({dialog_name:"oc-dialog-filepicker-content",title:e,emptytext:d,newtext:f,nameCol:t("core","Name"),sizeCol:t("core","Size"),modifiedCol:t("core","Modified")}).data("path",s).data("multiselect",o).data("mimetype",i).data("allowDirectoryChooser",c.allowDirectoryChooser),"function"==typeof c.filter&&u.$filePicker.data("filter",c.filter),void 0===r&&(r=!1),void 0===o&&(o=!1),l()(null!==(h=null===(m=c)||void 0===m?void 0:m.target)&&void 0!==h?h:"body").prepend(u.$filePicker),u.$showGridView=l()("button#picker-showgridview"),u.$showGridView.on("click keydown",(function(t){tt(t)&&u._onGridviewChange()})),u._getGridSettings();var g=u.$filePicker.find(".actions.creatable .button-add");a!==u.FILEPICKER_TYPE_CHOOSE||c.allowDirectoryChooser||u.$filePicker.find(".actions.creatable").hide(),g.on("focus",(function(){u.$filePicker.ocdialog("setEnterCallback",(function(t){t.stopImmediatePropagation(),t.preventDefault(),g.click()}))})),g.on("blur",(function(){u.$filePicker.ocdialog("unsetEnterCallback")})),Bt.registerMenu(g,u.$filePicker.find(".menu"),(function(){y.tooltip("hide"),y.focus(),u.$filePicker.ocdialog("setEnterCallback",(function(t){t.stopImmediatePropagation(),t.preventDefault(),u.$filePicker.submit()}));var t=y.val(),e=t.lastIndexOf(".");-1===e&&(e=t.length),y.selectRange(0,e)}));var v=u.$filePicker.find(".filenameform"),y=v.find("input[type='text']"),w=v.find("input[type='submit']");y.on("keydown",(function(t){tt(t)&&(t.stopImmediatePropagation(),t.preventDefault(),v.submit())})),w.on("click",(function(t){t.stopImmediatePropagation(),t.preventDefault(),v.submit()}));v.on("submit",(function(e){if(e.stopPropagation(),e.preventDefault(),function(){var e=y.val();try{if(function(e){var n=e.trim();if("."===n||".."===n)throw t("files",'"{name}" is an invalid file name.',{name:e});if(0===n.length)throw t("files","File name cannot be empty.");if(-1!==n.indexOf("/"))throw t("files",'"/" is not allowed inside a file name.');if(n.match(Bt.config.blacklist_files_regex))throw t("files",'"{name}" is not an allowed filetype',{name:e});return!0}(e)){if(u.filelist.find((function(t){return t.name===this}),e))throw t("files","{newName} already exists",{newName:e},void 0,{escape:!1});return!0}}catch(t){y.attr("title",t),y.tooltip({placement:"right",trigger:"manual",container:".newFolderMenu"}),y.tooltip("_fixTitle"),y.tooltip("show"),y.addClass("error")}return!1}()){var n=y.val();u.filepicker.filesClient.createDirectory(u.$filePicker.data("path")+"/"+n).always((function(t){u._fillFilePicker(u.$filePicker.data("path")+"/"+n,a)})),Bt.hideMenus(),u.$filePicker.ocdialog("unsetEnterCallback"),u.$filePicker.click(),y.val(f)}})),y.on("input",(function(t){y.tooltip("hide")})),u.$filePicker.ready((function(){u.$fileListHeader=u.$filePicker.find(".filelist thead tr"),u.$filelist=u.$filePicker.find(".filelist tbody"),u.$filelistContainer=u.$filePicker.find(".filelist-container"),u.$dirTree=u.$filePicker.find(".dirtree"),u.$dirTree.on("click keydown","div:not(:last-child)",u,(function(t){tt(t)&&u._handleTreeListSelect(t,a)})),u.$filelist.on("click keydown","tr",(function(t){tt(t)&&u._handlePickerClick(t,l()(this),a)})),u.$fileListHeader.on("click keydown","a",(function(t){if(tt(t)){var e=u.$filePicker.data("path");u.filepicker.sortField=l()(t.currentTarget).data("sort"),u.filepicker.sortOrder="asc"===u.filepicker.sortOrder?"desc":"asc",u._fillFilePicker(e,a)}})),u._fillFilePicker(s,a)}));var b=function(t){if(void 0!==n){var e;if(!0===o)e=[],u.$filelist.find("tr.filepicker_element_selected").each((function(t,n){e.push(u.$filePicker.data("path")+"/"+l()(n).data("entryname"))}));else{e=u.$filePicker.data("path");var i=u.$filelist.find("tr.filepicker_element_selected").data("entryname");i&&(e+="/"+i)}n(e,t),u.$filePicker.ocdialog("close")}},P=[];a===ct.FILEPICKER_TYPE_CHOOSE?P.push({text:t("core","Choose"),click:function(){b(ct.FILEPICKER_TYPE_CHOOSE)},defaultButton:!0}):a===ct.FILEPICKER_TYPE_CUSTOM?c.buttons.forEach((function(t){P.push({text:t.text,click:function(){b(t.type)},defaultButton:t.defaultButton})})):(a!==ct.FILEPICKER_TYPE_COPY&&a!==ct.FILEPICKER_TYPE_COPY_MOVE||P.push({text:t("core","Copy"),click:function(){b(ct.FILEPICKER_TYPE_COPY)},defaultButton:!1}),a!==ct.FILEPICKER_TYPE_MOVE&&a!==ct.FILEPICKER_TYPE_COPY_MOVE||P.push({text:t("core","Move"),click:function(){b(ct.FILEPICKER_TYPE_MOVE)},defaultButton:!0})),u.$filePicker.ocdialog({closeOnEscape:!0,width:600,height:500,modal:r,buttons:P,style:{buttons:"aside"},close:function(){try{l()(this).ocdialog("destroy").remove()}catch(t){}u.$filePicker=null}});var C=u.$filePicker.closest(".oc-dialog").find(".primary");-1!==u.$filePicker.data("mimetype").indexOf("httpd/unix-directory")||u.$filePicker.data("allowDirectoryChooser")?C.prop("disabled",!1):C.prop("disabled",!0)})).fail((function(e,n){u.filepicker.loading=!1,0!==e&&alert(t("core","Error loading file picker template: {error}",{error:n}))}))}},message:function(e,n,o,i,r,a,s){return l().when(this._getMessageTemplate()).then((function(c){var u="oc-dialog-"+ct.dialogsCounter+"-content",d="#"+u,f=c.octemplate({dialog_name:u,title:n,message:e,type:o},s?{escapeFunction:""}:{});void 0===a&&(a=!1),l()("body").append(f);var p=[];switch(i){case ct.YES_NO_BUTTONS:p=[{text:t("core","No"),click:function(){void 0!==r&&r(!1),l()(d).ocdialog("close")}},{text:t("core","Yes"),click:function(){void 0!==r&&r(!0),l()(d).ocdialog("close")},defaultButton:!0}];break;case ct.OK_BUTTON:p[0]={text:t("core","OK"),click:function(){l()(d).ocdialog("close"),void 0!==r&&r()},defaultButton:!0};break;default:"object"===it(i)&&i.type===ct.YES_NO_BUTTONS&&(p=[{text:i.cancel||t("core","No"),click:function(){void 0!==r&&r(!1),l()(d).ocdialog("close")}},{text:i.confirm||t("core","Yes"),click:function(){void 0!==r&&r(!0),l()(d).ocdialog("close")},defaultButton:!0,classes:i.confirmClasses}])}l()(d).ocdialog({closeOnEscape:!0,closeCallback:function(){r&&r(!1)},modal:a,buttons:p}),ct.dialogsCounter++})).fail((function(o,i){0===o?alert(n+": "+e):alert(t("core","Error loading message template: {error}",{error:i}))}))},_fileexistsshown:!1,fileexists:function(e,o,i,r){var a=this,s=new(l().Deferred),c=function(t,e,n,o,i){o=Math.round(o),i=Math.round(i);for(var r=t.getContext("2d").getImageData(0,0,e,n),a=t.getContext("2d").getImageData(0,0,o,i),s=r.data,l=a.data,c=e/o,u=n/i,d=Math.ceil(c/2),f=Math.ceil(u/2),p=0;p<i;p++)for(var h=0;h<o;h++){for(var m=4*(h+p*o),g=0,v=0,y=0,w=0,b=0,P=0,C=0,_=(p+.5)*u,A=Math.floor(p*u);A<(p+1)*u;A++)for(var k=Math.abs(_-(A+.5))/f,x=(h+.5)*c,O=k*k,T=Math.floor(h*c);T<(h+1)*c;T++){var j=Math.abs(x-(T+.5))/d,E=Math.sqrt(O+j*j);E>=-1&&E<=1&&(g=2*E*E*E-3*E*E+1)>0&&(C+=g*s[3+(j=4*(T+A*e))],y+=g,s[j+3]<255&&(g=g*s[j+3]/250),w+=g*s[j],b+=g*s[j+1],P+=g*s[j+2],v+=g)}l[m]=w/v,l[m+1]=b/v,l[m+2]=P/v,l[m+3]=C/y}t.getContext("2d").clearRect(0,0,Math.max(e,o),Math.max(n,i)),t.width=o,t.height=i,t.getContext("2d").putImageData(a,0,0)},u=function(n,o,i){var r=n.find(".template").clone().removeClass("template").addClass("conflict"),a=r.find(".original"),s=r.find(".replacement");r.data("data",e),r.find(".filename").text(o.name),a.find(".size").text(Bt.Util.humanFileSize(o.size)),a.find(".mtime").text(Bt.Util.formatDate(o.mtime)),i.size&&i.lastModified&&(s.find(".size").text(Bt.Util.humanFileSize(i.size)),s.find(".mtime").text(Bt.Util.formatDate(i.lastModified)));var u=o.directory+"/"+o.name,d={file:u,x:96,y:96,c:o.etag,forceIcon:0},f=Files.generatePreviewUrl(d);f=f.replace(/'/g,"%27"),a.find(".icon").css({"background-image":"url('"+f+"')"}),function(t){var e=new(l().Deferred),n=t.type&&t.type.split("/").shift();if(window.FileReader&&"image"===n){var o=new FileReader;o.onload=function(t){var n=new Blob([t.target.result]);window.URL=window.URL||window.webkitURL;var o=window.URL.createObjectURL(n),i=new Image;i.src=o,i.onload=function(){var t,n,o,r,a,s,l,u=(t=i,a=document.createElement("canvas"),s=t.width,l=t.height,s>l?(o=0,n=(s-l)/2):(o=(l-s)/2,n=0),r=Math.min(s,l),a.width=r,a.height=r,a.getContext("2d").drawImage(t,n,o,r,r,0,0,r,r),c(a,r,r,96,96),a.toDataURL("image/png",.7));e.resolve(u)}},o.readAsArrayBuffer(t)}else e.reject();return e}(i).then((function(t){s.find(".icon").css("background-image","url("+t+")")}),(function(){u=Bt.MimeType.getIconUrl(i.type),s.find(".icon").css("background-image","url("+u+")")}));var p=n.find(".conflict").length;a.find("input:checkbox").attr("id","checkbox_original_"+p),s.find("input:checkbox").attr("id","checkbox_replacement_"+p),n.append(r),i.lastModified>o.mtime?s.find(".mtime").css("font-weight","bold"):i.lastModified<o.mtime&&a.find(".mtime").css("font-weight","bold"),i.size&&i.size>o.size?s.find(".size").css("font-weight","bold"):i.size&&i.size<o.size&&a.find(".size").css("font-weight","bold"),"readonly"===o.status&&(a.addClass("readonly").find('input[type="checkbox"]').prop("checked",!0).prop("disabled",!0),a.find(".message").text(t("core","read-only")))},d="oc-dialog-fileexists-content",f="#"+d;if(this._fileexistsshown){var p=l()(f+" .conflicts");u(p,o,i);var h=l()(f+" .conflict").length,m=n("core","{count} file conflict","{count} file conflicts",h,{count:h});l()(f).parent().children(".oc-dialog-title").text(m),l()(window).trigger("resize"),s.resolve()}else this._fileexistsshown=!0,l().when(this._getFileExistsTemplate()).then((function(n){var c=t("core","One file conflict"),p=n.octemplate({dialog_name:d,title:c,type:"fileexists",allnewfiles:t("core","New Files"),allexistingfiles:t("core","Already existing files"),why:t("core","Which files do you want to keep?"),what:t("core","If you select both versions, the copied file will have a number added to its name.")});if(l()("body").append(p),o&&i){var h=p.find(".conflicts");u(h,o,i)}var m=[{text:t("core","Cancel"),classes:"cancel",click:function(){void 0!==r.onCancel&&r.onCancel(e),l()(f).ocdialog("close")}},{text:t("core","Continue"),classes:"continue",click:function(){void 0!==r.onContinue&&r.onContinue(l()(f+" .conflict")),l()(f).ocdialog("close")}}];l()(f).ocdialog({width:500,closeOnEscape:!0,modal:!0,buttons:m,closeButton:null,close:function(){a._fileexistsshown=!1;try{l()(this).ocdialog("destroy").remove()}catch(t){}}}),l()(f).css("height","auto");var g=p.closest(".oc-dialog").find("button.continue");function v(){var t=p.find(".conflicts .checkbox:checked").length;g.prop("disabled",0===t)}g.prop("disabled",!0),l()(f).find(".allnewfiles").on("click",(function(){l()(f).find('.conflict .replacement input[type="checkbox"]').prop("checked",l()(this).prop("checked"))})),l()(f).find(".allexistingfiles").on("click",(function(){l()(f).find('.conflict .original:not(.readonly) input[type="checkbox"]').prop("checked",l()(this).prop("checked"))})),l()(f).find(".conflicts").on("click",".replacement,.original:not(.readonly)",(function(){var t=l()(this).find('input[type="checkbox"]');t.prop("checked",!t.prop("checked"))})),l()(f).find(".conflicts").on("click",'.replacement input[type="checkbox"],.original:not(.readonly) input[type="checkbox"]',(function(){var t=l()(this);t.prop("checked",!t.prop("checked"))})),l()(f).on("click",".replacement,.allnewfiles",(function(){var e=l()(f).find('.conflict .replacement input[type="checkbox"]:checked').length;e===l()(f+" .conflict").length?(l()(f).find(".allnewfiles").prop("checked",!0),l()(f).find(".allnewfiles + .count").text(t("core","(all selected)"))):e>0?(l()(f).find(".allnewfiles").prop("checked",!1),l()(f).find(".allnewfiles + .count").text(t("core","({count} selected)",{count:e}))):(l()(f).find(".allnewfiles").prop("checked",!1),l()(f).find(".allnewfiles + .count").text("")),v()})),l()(f).on("click",".original,.allexistingfiles",(function(){var e=l()(f).find('.conflict .original input[type="checkbox"]:checked').length;e===l()(f+" .conflict").length?(l()(f).find(".allexistingfiles").prop("checked",!0),l()(f).find(".allexistingfiles + .count").text(t("core","(all selected)"))):e>0?(l()(f).find(".allexistingfiles").prop("checked",!1),l()(f).find(".allexistingfiles + .count").text(t("core","({count} selected)",{count:e}))):(l()(f).find(".allexistingfiles").prop("checked",!1),l()(f).find(".allexistingfiles + .count").text("")),v()})),s.resolve()})).fail((function(){s.reject(),alert(t("core","Error loading file exists template"))}));return s.promise()},_getGridSettings:function(){var e=this;l().get(Bt.generateUrl("/apps/files/api/v1/showgridview"),(function(n){e.$showGridView.removeClass("icon-toggle-filelist icon-toggle-pictures").addClass(n.gridview?"icon-toggle-filelist":"icon-toggle-pictures"),e.$showGridView.attr("aria-label",n.gridview?t("files","Show list view"):t("files","Show grid view")),l()(".list-container").toggleClass("view-grid",n.gridview)}))},_onGridviewChange:function(){var e=this.$showGridView.hasClass("icon-toggle-filelist");Bt.currentUser&&l().post(Bt.generateUrl("/apps/files/api/v1/showgridview"),{show:!e}),this.$showGridView.removeClass("icon-toggle-filelist icon-toggle-pictures").addClass(e?"icon-toggle-pictures":"icon-toggle-filelist"),this.$showGridView.attr("aria-label",e?t("files","Show grid view"):t("files","Show list view")),this.$filePicker.find(".list-container").toggleClass("view-grid",!e)},_getFilePickerTemplate:function(){var t=l().Deferred();if(this.$filePickerTemplate)t.resolve(this.$filePickerTemplate);else{var e=this;l().get(Bt.filePath("core","templates","filepicker.html"),(function(n){e.$filePickerTemplate=l()(n),e.$listTmpl=e.$filePickerTemplate.find(".filelist tbody tr:first-child").detach(),t.resolve(e.$filePickerTemplate)})).fail((function(e,n,o){t.reject(e.status,o)}))}return t.promise()},_getMessageTemplate:function(){var t=l().Deferred();if(this.$messageTemplate)t.resolve(this.$messageTemplate);else{var e=this;l().get(Bt.filePath("core","templates","message.html"),(function(n){e.$messageTemplate=l()(n),t.resolve(e.$messageTemplate)})).fail((function(e,n,o){t.reject(e.status,o)}))}return t.promise()},_getFileExistsTemplate:function(){var t=l().Deferred();if(this.$fileexistsTemplate)t.resolve(this.$fileexistsTemplate);else{var e=this;l().get(Bt.filePath("files","templates","fileexists.html"),(function(n){e.$fileexistsTemplate=l()(n),t.resolve(e.$fileexistsTemplate)})).fail((function(){t.reject()}))}return t.promise()},_fillFilePicker:(rt=ot(regeneratorRuntime.mark((function e(n,o){var i,r,a,s,c,u,d,f;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return i=this,this.$filelist.empty(),this.$filePicker.find(".emptycontent").hide(),this.$filelistContainer.addClass("icon-loading"),this.$filePicker.data("path",n),r=this.$filePicker.data("mimetype"),a=this.$filePicker.data("filter"),"string"==typeof r&&(r=[r]),i.$fileListHeader.find(".sort-indicator").addClass("hidden").removeClass("icon-triangle-n").removeClass("icon-triangle-s"),i.$fileListHeader.find("[data-sort="+i.filepicker.sortField+"] .sort-indicator").removeClass("hidden"),"asc"===i.filepicker.sortOrder?i.$fileListHeader.find("[data-sort="+i.filepicker.sortField+"] .sort-indicator").addClass("icon-triangle-n"):i.$fileListHeader.find("[data-sort="+i.filepicker.sortField+"] .sort-indicator").addClass("icon-triangle-s"),s=function(){var t=ot(regeneratorRuntime.mark((function t(e){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",i.filepicker.filesClient.getFolderContents(e).then((function(t,e){return e})));case 1:case"end":return t.stop()}}),t)})));return function(e){return t.apply(this,arguments)}}(),e.prev=12,e.next=15,s(n);case 15:c=e.sent,e.next=26;break;case 18:return e.prev=18,e.t0=e.catch(12),et.error("Requested path does not exists, falling back to root"),e.next=23,s("/");case 23:c=e.sent,this.$filePicker.data("path","/"),this._changeButtonsText(o,"");case 26:i.filelist=c,r&&r.length>0&&-1===r.indexOf("*")&&(c=c.filter((function(t){return"dir"===t.type||-1!==r.indexOf(t.mimetype)}))),a&&(c=c.filter(a)),null===(u=document.getElementById("showHiddenFiles"))||"1"===u.value||(c=c.filter((function(t){return!t.name.startsWith(".")}))),f=(d={name:function(t,e){return"dir"===t.type&&"dir"!==e.type?-1:"dir"!==t.type&&"dir"===e.type?1:Bt.Util.naturalSortCompare(t.name,e.name)},size:function(t,e){return t.size-e.size},mtime:function(t,e){return t.mtime-e.mtime}})[i.filepicker.sortField]||d.name,c=c.sort((function(t,e){var n=function(t){return t.tags&&t.tags.indexOf(Bt.TAG_FAVORITE)>=0};return n(t)&&!n(e)?-1:!n(t)&&n(e)?1:"asc"===i.filepicker.sortOrder?f(t,e):-f(t,e)})),i._fillSlug(),0===c.length?(i.$filePicker.find(".emptycontent").show(),i.$fileListHeader.hide()):(i.$filePicker.find(".emptycontent").hide(),i.$fileListHeader.show()),i.$filelist.empty(),l().each(c,(function(e,o){var r,a;if(o.isEncrypted&&"httpd/unix-directory"===o.mimetype?o.icon=Bt.MimeType.getIconUrl("dir-encrypted"):o.icon=Bt.MimeType.getIconUrl(o.mimetype),void 0!==o.size&&o.size>=0?(r=Bt.Util.humanFileSize(parseInt(o.size,10),!0),a=Math.round(160-Math.pow(o.size/1048576,2))):(r=t("files","Pending"),a=80),o.name.length>=10)var s=Math.min(Math.floor(o.name.length/2),10),c=o.name.substr(0,o.name.length-s),u=o.name.substr(o.name.length-s);else c=o.name,u="";var d=i.$listTmpl.octemplate({type:o.type,dir:n,filename:o.name,filename1:c,filename2:u,date:Bt.Util.relativeModifiedDate(o.mtime),size:r,sizeColor:a,icon:o.icon});if("file"===o.type){var f={file:n+"/"+o.name,x:100,y:100},p=new Image,h=Bt.generateUrl("/core/preview.png?")+l().param(f);p.onload=function(){p.width>5&&d.find("td.filename").attr("style","background-image:url("+h+")")},p.src=h}i.$filelist.append(d)})),i.$filelistContainer.removeClass("icon-loading");case 40:case"end":return e.stop()}}),e,this,[[12,18]])}))),function(t,e){return rt.apply(this,arguments)}),_fillSlug:function(){var e=this.$dirTree.find(".actions.creatable").detach();this.$dirTree.empty();var n=this;n.$dirTree.append(e);var o=this.$filePicker.data("path"),i=l()('<div data-dir="{dir}" tabindex="0"><a>{name}</a></div>').addClass("crumb");if(o){var r=o.split("/");l().each(r,(function(t,e){if(""===(e=r.pop()))return!1;n.$dirTree.prepend(i.octemplate({dir:r.join("/")+"/"+e,name:e}))}))}i.octemplate({dir:"",name:t("core","Home")},{escapeFunction:null}).prependTo(this.$dirTree)},_handleTreeListSelect:function(t,e){var n=t.data,o=l()(t.target).closest(".crumb").data("dir");n._fillFilePicker(o,e);var i=t.target.closest(".oc-dialog"),r=l()(".primary",i);this._changeButtonsText(e,o.split(/[/]+/).pop()),-1!==this.$filePicker.data("mimetype").indexOf("httpd/unix-directory")||this.$filePicker.data("allowDirectoryChooser")?r.prop("disabled",!1):r.prop("disabled",!0)},_handlePickerClick:function(t,e,n){var o=this.$filePicker.closest(".oc-dialog").find(".primary");"file"===e.data("type")?(!0===this.$filePicker.data("multiselect")&&t.ctrlKey||this.$filelist.find(".filepicker_element_selected").removeClass("filepicker_element_selected"),e.toggleClass("filepicker_element_selected"),o.prop("disabled",!1)):"dir"===e.data("type")&&(this._fillFilePicker(this.$filePicker.data("path")+"/"+e.data("entryname"),n),this._changeButtonsText(n,e.data("entryname")),-1!==this.$filePicker.data("mimetype").indexOf("httpd/unix-directory")||this.$filePicker.data("allowDirectoryChooser")?o.prop("disabled",!1):o.prop("disabled",!0))},_changeButtonsText:function(e,n){var o=""===n?t("core","Copy"):t("core","Copy to {folder}",{folder:n}),i=""===n?t("core","Move"):t("core","Move to {folder}",{folder:n}),r=l()(".oc-dialog-buttonrow button");switch(e){case this.FILEPICKER_TYPE_CHOOSE:case this.FILEPICKER_TYPE_CUSTOM:break;case this.FILEPICKER_TYPE_COPY:r.text(o);break;case this.FILEPICKER_TYPE_MOVE:r.text(i);break;case this.FILEPICKER_TYPE_COPY_MOVE:r.eq(0).text(o),r.eq(1).text(i)}}},ut=ct,dt=(at=document,st=a.j8,lt=at.getElementsByTagName("head")[0].getAttribute("data-requesttoken"),{getToken:function(){return lt},setToken:function(t){st("csrf-token-update",{token:lt=t})}}).getToken,ft=function t(e,n){var o,i,r="";if(this.typelessListeners=[],this.closed=!1,this.listeners={},n)for(o in n)r+=o+"="+encodeURIComponent(n[o])+"&";if(r+="requesttoken="+encodeURIComponent(dt()),this.useFallBack||"undefined"==typeof EventSource){var a="oc_eventsource_iframe_"+t.iframeCount;t.fallBackSources[t.iframeCount]=this,this.iframe=l()("<iframe></iframe>"),this.iframe.attr("id",a),this.iframe.hide(),i="&",-1===e.indexOf("?")&&(i="?"),this.iframe.attr("src",e+i+"fallback=true&fallback_id="+t.iframeCount+"&"+r),l()("body").append(this.iframe),this.useFallBack=!0,t.iframeCount++}else i="&",-1===e.indexOf("?")&&(i="?"),this.source=new EventSource(e+i+r),this.source.onmessage=function(t){for(var e=0;e<this.typelessListeners.length;e++)this.typelessListeners[e](JSON.parse(t.data))}.bind(this);this.listen("__internal__",function(t){"close"===t&&this.close()}.bind(this))};ft.fallBackSources=[],ft.iframeCount=0,ft.fallBackCallBack=function(t,e,n){ft.fallBackSources[t].fallBackCallBack(e,n)},ft.prototype={typelessListeners:[],iframe:null,listeners:{},useFallBack:!1,fallBackCallBack:function(t,e){var n;if(!this.closed)if(t){if(void 0!==this.listeners.done)for(n=0;n<this.listeners[t].length;n++)this.listeners[t][n](e)}else for(n=0;n<this.typelessListeners.length;n++)this.typelessListeners[n](e)},lastLength:0,listen:function(t,e){e&&e.call&&(t?this.useFallBack?(this.listeners[t]||(this.listeners[t]=[]),this.listeners[t].push(e)):this.source.addEventListener(t,(function(t){void 0!==t.data?e(JSON.parse(t.data)):e("")}),!1):this.typelessListeners.push(e))},close:function(){this.closed=!0,void 0!==this.source&&this.source.close()}};var pt=ft,ht=i(42515),mt=i(25108),gt=null,vt=null,yt=function(t){if(gt){var e=gt;gt.trigger(new(l().Event)("beforeHide")),gt.slideUp(50,(function(){e.trigger(new(l().Event)("afterHide")),t&&t.apply(this,arguments)}))}l()(".menutoggle").attr("aria-expanded",!1),vt&&vt.attr("aria-expanded",!1),l()(".openedMenu").removeClass("openedMenu"),gt=null,vt=null},wt=!!window._oc_isadmin,bt=i(86834),Pt=i.n(bt),Ct=i(31352),_t={load:Ct.XJ,register:Ct.z2,_unregister:Ct.ET,translate:Ct.Iu,translatePlural:Ct.uN};Pt().registerHelper("t",(function(t,e){return(0,Ct.Iu)(t,e)}));var At={startSaving:function(e){this.startAction(e,t("core","Saving …"))},startAction:function(t,e){l()(t).text(e).removeClass("success").removeClass("error").stop(!0,!0).show()},finishedSaving:function(t,e){this.finishedAction(t,e)},finishedAction:function(t,e){"success"===e.status?this.finishedSuccess(t,e.data.message):this.finishedError(t,e.data.message)},finishedSuccess:function(t,e){l()(t).text(e).addClass("success").removeClass("error").stop(!0,!0).delay(3e3).fadeOut(900).show()},finishedError:function(t,e){l()(t).text(e).addClass("error").removeClass("success").show()}},kt=i(30381),xt=i.n(kt),Ot={callback:null,pageLoadTime:null,init:function(){l()(".password-confirm-required").on("click",p.ZP.bind(this.requirePasswordConfirmation,this)),this.pageLoadTime=xt().now()},requiresPasswordConfirmation:function(){var t=this.pageLoadTime-1e3*window.nc_pageLoad,e=xt().now()-(t+1e3*window.nc_lastLogin);return window.backendAllowsPasswordConfirmation&&e>18e5},requirePasswordConfirmation:function(e,n,o){n=void 0!==n?n:{};var i={title:t("core","Authentication required"),text:t("core","This action requires you to confirm your password"),confirm:t("core","Confirm"),label:t("core","Password"),error:""},r=p.ZP.extend(i,n),a=this;this.requiresPasswordConfirmation()&&Bt.dialogs.prompt(r.text,r.title,(function(t,e){t&&""!==e?a._confirmPassword(e,r):p.ZP.isFunction(o)&&o()}),!0,r.label,!0).then((function(){var t=l()(".oc-dialog:visible");if(t.find(".ui-icon").remove(),t.addClass("password-confirmation"),""!==r.error){var e=l()("<p></p>").addClass("msg warning").text(r.error);t.find(".oc-dialog-content").append(e)}t.find(".oc-dialog-buttonrow").addClass("aside");var n=t.find("button");n.eq(0).hide(),n.eq(1).text(r.confirm)})),this.callback=e},_confirmPassword:function(e,n){var o=this;l().ajax({url:(0,c.generateUrl)("/login/confirm"),data:{password:e},type:"POST",success:function(t){window.nc_lastLogin=t.lastLogin,p.ZP.isFunction(o.callback)&&o.callback()},error:function(){n.error=t("core","Failed to authenticate, try again"),Bt.PasswordConfirmation.requirePasswordConfirmation(o.callback,n)}})}},Tt=window._theme||{},jt={_handlers:[],_pushState:function(t,e,n){var o;if(o="string"==typeof t?t:Bt.buildQueryString(t),window.history.pushState){if(e=e||location.pathname+"?"+o,navigator.userAgent.toLowerCase().indexOf("firefox")>-1&&parseInt(navigator.userAgent.split("/").pop())<51)for(var i,r=document.querySelectorAll('[fill^="url(#"], [stroke^="url(#"], [filter^="url(#invert"]'),a=0,s=r.length;a<s;a++)(i=r[a]).style.fill=i.style.fill,i.style.stroke=i.style.stroke,i.removeAttribute("filter"),i.setAttribute("filter","url(#invert)");n?window.history.replaceState(t,"",e):window.history.pushState(t,"",e)}else window.location.hash="?"+o,this._cancelPop=!0},pushState:function(t,e){this._pushState(t,e,!1)},replaceState:function(t,e){this._pushState(t,e,!0)},addOnPopStateHandler:function(t){this._handlers.push(t)},_parseHashQuery:function(){var t=window.location.hash,e=t.indexOf("?");return e>=0?t.substr(e+1):t.length?t.substr(1):""},_decodeQuery:function(t){return t.replace(/\+/g," ")},parseUrlQuery:function(){var t,e=this._parseHashQuery();return e&&(t=Bt.parseQueryString(this._decodeQuery(e))),(t=p.ZP.extend(t||{},Bt.parseQueryString(this._decodeQuery(location.search))))||{}},_onPopState:function(t){var e;if(this._cancelPop)this._cancelPop=!1;else if(this._handlers.length){e=t&&t.state,p.ZP.isString(e)?e=Bt.parseQueryString(e):e||(e=this.parseUrlQuery()||{});for(var n=0;n<this._handlers.length;n++)this._handlers[n](e)}}},Et=i(91770),St=i(25108);function Lt(t){for(var e,n=[],o=0,i=-1,r=0;o<t.length;){e=t.charAt(o);var a=!r&&"."===e||e>="0"&&e<="9";a!==r&&(n[++i]="",r=a),n[i]+=e,o++}return n}var Nt={History:jt,humanFileSize:Et.sS,computerFileSize:function(t){if("string"!=typeof t)return null;var e=t.toLowerCase().trim(),n=null,o=e.match(/^[\s+]?([0-9]*)(\.([0-9]+))?( +)?([kmgtp]?b?)$/i);return null===o?null:(n=parseFloat(e),isFinite(n)?(o[5]&&(n*={b:1,k:1024,kb:1024,mb:1048576,m:1048576,gb:1073741824,g:1073741824,tb:1099511627776,t:1099511627776,pb:0x4000000000000,p:0x4000000000000}[o[5]]),n=Math.round(n)):null)},formatDate:function(t,e){return void 0===window.TESTING&&St.warn("OC.Util.formatDate is deprecated and will be removed in Nextcloud 21. See @nextcloud/moment"),e=e||"LLL",xt()(t).format(e)},relativeModifiedDate:function(e){void 0===window.TESTING&&St.warn("OC.Util.relativeModifiedDate is deprecated and will be removed in Nextcloud 21. See @nextcloud/moment");var n=xt()().diff(xt()(e));return n>=0&&n<45e3?t("core","seconds ago"):xt()(e).fromNow()},getScrollBarWidth:function(){if(this._scrollBarWidth)return this._scrollBarWidth;var t=document.createElement("p");t.style.width="100%",t.style.height="200px";var e=document.createElement("div");e.style.position="absolute",e.style.top="0px",e.style.left="0px",e.style.visibility="hidden",e.style.width="200px",e.style.height="150px",e.style.overflow="hidden",e.appendChild(t),document.body.appendChild(e);var n=t.offsetWidth;e.style.overflow="scroll";var o=t.offsetWidth;return n===o&&(o=e.clientWidth),document.body.removeChild(e),this._scrollBarWidth=n-o,this._scrollBarWidth},stripTime:function(t){return new Date(t.getFullYear(),t.getMonth(),t.getDate())},naturalSortCompare:function(t,e){var n,o=Lt(t),i=Lt(e);for(n=0;o[n]&&i[n];n++)if(o[n]!==i[n]){var r=Number(o[n]),a=Number(i[n]);return r==o[n]&&a==i[n]?r-a:o[n].localeCompare(i[n],Bt.getLanguage())}return o.length-i.length},waitFor:function(t,e){!function n(){!0!==t()&&setTimeout(n,e)}()},isCookieSetToValue:function(t,e){for(var n=document.cookie.split(";"),o=0;o<n.length;o++){var i=n[o].split("=");if(i[0].trim()===t&&i[1].trim()===e)return!0}return!1}},It=window._oc_debug,Ut=window._oc_webroot;if(void 0===Ut){var $t=(Ut=location.pathname).indexOf("/index.php/");Ut=-1!==$t?Ut.substr(0,$t):Ut.substr(0,Ut.lastIndexOf("/"))}var Rt,Ft=Ut,Mt=i(25108),Bt={coreApps:["","admin","log","core/search","core","3rdparty"],menuSpeed:50,PERMISSION_ALL:31,PERMISSION_CREATE:4,PERMISSION_DELETE:8,PERMISSION_NONE:0,PERMISSION_READ:1,PERMISSION_SHARE:16,PERMISSION_UPDATE:2,TAG_FAVORITE:"_$!<Favorite>!$_",fileIsBlacklisted:function(t){return!!t.match(R.blacklist_files_regex)},addScript:function(t,e,n){var o;u.warn("OC.addScript is deprecated, use OCP.Loader.loadScript instead");var i=(0,c.generateFilePath)(t,"js",e+".js");return d[i]?n&&n():(o=l().Deferred(),l().getScript(i,(function(){return o.resolve()})),d[i]=o),d[i]},addStyle:function(t,e){u.warn("OC.addStyle is deprecated, use OCP.Loader.loadStylesheet instead");var n=(0,c.generateFilePath)(t,"css",e+".css");-1===f.indexOf(n)&&(f.push(n),document.createStyleSheet?document.createStyleSheet(n):(e=l()('<link rel="stylesheet" type="text/css" href="'+n+'"/>'),l()("head").append(e)))},Apps:y,AppConfig:P,appConfig:b,appSettings:function(e){if(C.warn("OC.appSettings is deprecated and will be removed with Nextcloud 18"),void 0===e||void 0===e.appid)throw{name:"MissingParameter",message:"The parameter appid is missing"};var n={scriptName:"settings.php",cache:!0};l().extend(n,e);var o=l()("#appsettings");if(0===o.length)throw{name:"MissingDOMElement",message:'There has be be an element with id "appsettings" for the popup to show.'};var i=l()("#appsettings_popup");if(0===i.length&&(l()("body").prepend('<div class="popup hidden" id="appsettings_popup"></div>'),(i=l()("#appsettings_popup")).addClass(o.hasClass("topright")?"topright":"bottomleft")),i.is(":visible"))i.hide().remove();else{var r=o.hasClass("topright")?"up":"left";l().get((0,c.generateFilePath)(n.appid,"",n.scriptName),(function(e){i.html(e).ready((function(){if(i.prepend('<span class="arrow '+r+'"></span><h2>'+t("core","Settings")+'</h2><a class="close"></a>').show(),i.find(".close").bind("click",(function(){i.remove()})),void 0!==n.loadJS){var e;if(!0===n.loadJS)e="settings.js";else{if("string"!=typeof n.loadJS)throw{name:"InvalidParameter",message:'The "loadJS" parameter must be either boolean or a string.'};e=n.loadJS}n.cache&&l().ajaxSetup({cache:!0}),l().getScript((0,c.generateFilePath)(n.appid,"js",e)).fail((function(t,e,n){throw n}))}})).show()}),"html")}},appswebroots:A,Backbone:U,ContactsMenu:Y,config:R,currentUser:V,dialogs:ut,EventSource:pt,getCurrentUser:function(){return{uid:V,displayName:K}},isUserAdmin:function(){return wt},L10N:_t,_ajaxConnectionLostHandler:v,_processAjaxError:function(t){(0!==t.status||"abort"!==t.statusText&&"timeout"!==t.statusText&&!Bt._reloadCalled)&&(p.ZP.contains([302,303,307,401],t.status)&&Bt.currentUser?setTimeout((function(){if(!Bt._userIsNavigatingAway&&!Bt._reloadCalled){var t=0,e=setInterval((function(){g.showUpdate(n("core","Problem loading page, reloading in %n second","Problem loading page, reloading in %n seconds",5-t)),t>=5&&(clearInterval(e),Bt.reload()),t++}),1e3);Bt._reloadCalled=!0}}),100):0===t.status&&setTimeout((function(){Bt._userIsNavigatingAway||Bt._reloadCalled||Bt._ajaxConnectionLostHandler()}),100))},registerXHRForErrorProcessing:function(t){t.addEventListener&&(t.addEventListener("load",(function(){4===t.readyState&&(t.status>=200&&t.status<300||304===t.status||l()(document).trigger(new(l().Event)("ajaxError"),t))})),t.addEventListener("error",(function(){l()(document).trigger(new(l().Event)("ajaxError"),t)})))},getCapabilities:function(){return mt.warn("OC.getCapabilities is deprecated and will be removed in Nextcloud 21. See @nextcloud/capabilities"),(0,ht.getCapabilities)()},hideMenus:yt,registerMenu:function(t,e,n,o){e.addClass("menu");var i="A"===t.prop("tagName")||"BUTTON"===t.prop("tagName");t.on(i?"click.menu":"click.menu keyup.menu",(function(i){i.preventDefault(),i.key&&"Enter"!==i.key||(e.is(gt)?yt():(gt&&yt(),!0===o&&e.parent().addClass("openedMenu"),t.attr("aria-expanded",!0),e.slideToggle(50,n),gt=e,vt=t))}))},showMenu:function(t,e,n){e.is(gt)||(yt(),gt=e,vt=t,e.trigger(new(l().Event)("beforeShow")),e.show(),e.trigger(new(l().Event)("afterShow")),p.ZP.isFunction(n)&&n())},unregisterMenu:function(t,e){e.is(gt)&&yt(),t.off("click.menu").removeClass("menutoggle"),e.removeClass("menu")},basename:$.EZ,encodePath:$.Ec,dirname:$.XX,isSamePath:$.Mg,joinPaths:$.RQ,getHost:function(){return window.location.host},getHostName:function(){return window.location.hostname},getPort:function(){return window.location.port},getProtocol:function(){return window.location.protocol.split(":")[0]},getCanonicalLocale:Ct.aj,getLocale:Ct.Kd,getLanguage:Ct.G3,buildQueryString:function(t){return t?l().map(t,(function(t,e){var n=encodeURIComponent(e);return null!=t&&(n+="="+encodeURIComponent(t)),n})).join("&"):""},parseQueryString:function(t){var e,n,o,i={};if(!t)return null;(e=t.indexOf("?"))>=0&&(t=t.substr(e+1));for(var r=t.replace(/\+/g,"%20").split("&"),a=0;a<r.length;a++){var s=r[a];(n=(e=s.indexOf("="))>=0?[s.substr(0,e),s.substr(e+1)]:[s]).length&&(o=decodeURIComponent(n[0]))&&(i[o]=n.length>1?decodeURIComponent(n[1]):null)}return i},msg:At,Notification:g,PasswordConfirmation:Ot,Plugins:{_plugins:{},register:function(t,e){var n=this._plugins[t];n||(n=this._plugins[t]=[]),n.push(e)},getPlugins:function(t){return this._plugins[t]||[]},attach:function(t,e,n){for(var o=this.getPlugins(t),i=0;i<o.length;i++)o[i].attach&&o[i].attach(e,n)},detach:function(t,e,n){for(var o=this.getPlugins(t),i=0;i<o.length;i++)o[i].detach&&o[i].detach(e,n)}},theme:Tt,Util:Nt,debug:It,filePath:c.generateFilePath,generateUrl:c.generateUrl,get:(Rt=window,function(t){for(var e=t.split("."),n=e.pop(),o=0;o<e.length;o++)if(!(Rt=Rt[e[o]]))return!1;return Rt[n]}),set:function(t){return function(e,n){for(var o=e.split("."),i=o.pop(),r=0;r<o.length;r++)t[o[r]]||(t[o[r]]={}),t=t[o[r]];return t[i]=n,n}}(window),getRootPath:c.getRootUrl,imagePath:c.imagePath,redirect:function(t){window.location=t},reload:function(){window.location.reload()},requestToken:dt(),linkTo:c.linkTo,linkToOCS:function(t,e){return(0,c.generateOcsUrl)(t,{},{ocsVersion:e||1})+"/"},linkToRemote:c.generateRemoteUrl,linkToRemoteBase:function(t){return(0,c.getRootUrl)()+"/remote.php/"+t},webroot:Ft};(0,a.Ld)("csrf-token-update",(function(t){OC.requestToken=t.token,Mt.info("OC.requestToken changed",t.token)}));var zt=i(79954),Dt=i(17563),Zt=i(22660),Ht=i.n(Zt),Yt=i(10204),qt=i.n(Yt),Kt=i(57290),Vt=i.n(Kt),Gt=i(10861),Wt=i.n(Gt),Jt={name:"LoginButton",components:{ArrowRight:i(39429).default,NcButton:Wt()},props:{value:{type:String,default:t("core","Log in")},valueLoading:{type:String,default:t("core","Logging in …")},loading:{type:Boolean,required:!0},invertedColors:{type:Boolean,default:!1}}},Qt=i(93379),Xt=i.n(Qt),te=i(7795),ee=i.n(te),ne=i(90569),oe=i.n(ne),ie=i(3565),re=i.n(ie),ae=i(19216),se=i.n(ae),le=i(44589),ce=i.n(le),ue=i(49665),de={};de.styleTagTransform=ce(),de.setAttributes=re(),de.insert=oe().bind(null,"head"),de.domAPI=ee(),de.insertStyleElement=se(),Xt()(ue.Z,de),ue.Z&&ue.Z.locals&&ue.Z.locals;var fe=i(51900),pe=(0,fe.Z)(Jt,(function(){var t=this,e=t._self._c;return e("NcButton",{attrs:{type:"primary","native-type":"submit",wide:!0},on:{click:function(e){return t.$emit("click")}},scopedSlots:t._u([{key:"icon",fn:function(){return[t.loading?e("div",{staticClass:"submit-wrapper__icon icon-loading-small-dark"}):e("ArrowRight",{staticClass:"submit-wrapper__icon"})]},proxy:!0}])},[t._v("\n\t"+t._s(t.loading?t.valueLoading:t.value)+"\n\t")])}),[],!1,null,"756414a8",null).exports,he={name:"LoginForm",components:{LoginButton:pe,NcPasswordField:Ht(),NcTextField:qt(),NcNoteCard:Vt()},props:{username:{type:String,default:""},redirectUrl:{type:[String,Boolean],default:!1},errors:{type:Array,default:function(){return[]}},messages:{type:Array,default:function(){return[]}},throttleDelay:{type:Number,default:0},autoCompleteAllowed:{type:Boolean,default:!0},directLogin:{type:Boolean,default:!1}},data:function(){var e,n;return{loading:!1,timezone:null===(e=new Intl.DateTimeFormat)||void 0===e||null===(n=e.resolvedOptions())||void 0===n?void 0:n.timeZone,timezoneOffset:-(new Date).getTimezoneOffset()/60,headline:t("core","Log in to {productName}",{productName:OC.theme.name}),user:"",password:""}},computed:{isError:function(){return this.invalidPassword||this.userDisabled||this.throttleDelay>5e3},errorLabel:function(){return this.invalidPassword?t("core","Wrong username or password."):this.userDisabled?t("core","User disabled"):this.throttleDelay>5e3?t("core","We have detected multiple invalid login attempts from your IP. Therefore your next login is throttled up to 30 seconds."):void 0},apacheAuthFailed:function(){return-1!==this.errors.indexOf("apacheAuthFailed")},internalException:function(){return-1!==this.errors.indexOf("internalexception")},invalidPassword:function(){return-1!==this.errors.indexOf("invalidpassword")},userDisabled:function(){return-1!==this.errors.indexOf("userdisabled")},loadingIcon:function(){return(0,c.imagePath)("core","loading-dark.gif")},loginActionUrl:function(){return(0,c.generateUrl)("login")}},mounted:function(){""===this.username?this.$refs.user.$refs.inputField.$refs.input.focus():(this.user=this.username,this.$refs.password.$refs.inputField.$refs.input.focus())},methods:{updateUsername:function(){this.$emit("update:username",this.user)},submit:function(){this.loading=!0,this.$emit("submit")}}},me=i(3591),ge={};ge.styleTagTransform=ce(),ge.setAttributes=re(),ge.insert=oe().bind(null,"head"),ge.domAPI=ee(),ge.insertStyleElement=se(),Xt()(me.Z,ge),me.Z&&me.Z.locals&&me.Z.locals;var ve=(0,fe.Z)(he,(function(){var t=this,e=t._self._c;return e("form",{ref:"loginForm",staticClass:"login-form",attrs:{method:"post",name:"login",action:t.loginActionUrl},on:{submit:t.submit}},[e("fieldset",{staticClass:"login-form__fieldset",attrs:{"data-login-form":""}},[t.apacheAuthFailed?e("NcNoteCard",{attrs:{title:t.t("core","Server side authentication failed!"),type:"warning"}},[t._v("\n\t\t\t"+t._s(t.t("core","Please contact your administrator."))+"\n\t\t")]):t._e(),t._v(" "),t.messages.length>0?e("NcNoteCard",t._l(t.messages,(function(n,o){return e("div",{key:o},[t._v("\n\t\t\t\t"+t._s(n)),e("br")])})),0):t._e(),t._v(" "),t.internalException?e("NcNoteCard",{class:t.t("core","An internal error occurred."),attrs:{type:"warning"}},[t._v("\n\t\t\t"+t._s(t.t("core","Please try again or contact your administrator."))+"\n\t\t")]):t._e(),t._v(" "),e("div",{staticClass:"hidden",attrs:{id:"message"}},[e("img",{staticClass:"float-spinner",attrs:{alt:"",src:t.loadingIcon}}),t._v(" "),e("span",{attrs:{id:"messageText"}}),t._v(" "),e("div",{staticStyle:{clear:"both"}})]),t._v(" "),e("h2",{staticClass:"login-form__headline",attrs:{"data-login-form-headline":""},domProps:{innerHTML:t._s(t.headline)}}),t._v(" "),e("NcTextField",{ref:"user",class:{shake:t.invalidPassword},attrs:{id:"user",label:t.t("core","Account name or email"),"label-visible":!0,name:"user",value:t.user,autocapitalize:"none",spellchecking:!1,autocomplete:t.autoCompleteAllowed?"username":"off",required:"","data-login-form-input-user":""},on:{"update:value":function(e){t.user=e},change:t.updateUsername}}),t._v(" "),e("NcPasswordField",{ref:"password",class:{shake:t.invalidPassword},attrs:{id:"password",name:"password","label-visible":!0,value:t.password,spellchecking:!1,autocapitalize:"none",autocomplete:t.autoCompleteAllowed?"current-password":"off",label:t.t("core","Password"),"helper-text":t.errorLabel,error:t.isError,"data-login-form-input-password":"",required:""},on:{"update:value":function(e){t.password=e}}}),t._v(" "),e("LoginButton",{attrs:{"data-login-form-submit":"",loading:t.loading}}),t._v(" "),t.redirectUrl?e("input",{attrs:{type:"hidden",name:"redirect_url"},domProps:{value:t.redirectUrl}}):t._e(),t._v(" "),e("input",{attrs:{type:"hidden",name:"timezone"},domProps:{value:t.timezone}}),t._v(" "),e("input",{attrs:{type:"hidden",name:"timezone_offset"},domProps:{value:t.timezoneOffset}}),t._v(" "),e("input",{attrs:{type:"hidden",name:"requesttoken"},domProps:{value:t.OC.requestToken}}),t._v(" "),t.directLogin?e("input",{attrs:{type:"hidden",name:"direct",value:"1"}}):t._e()],1)])}),[],!1,null,"5bd351bc",null).exports,ye=i(4820),we=i(37838),be=i(38213),Pe=i(25108);function Ce(t){return Ce="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Ce(t)}function _e(t){return function(t){if(Array.isArray(t))return Ae(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||function(t,e){if(t){if("string"==typeof t)return Ae(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?Ae(t,e):void 0}}(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Ae(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,o=new Array(e);n<e;n++)o[n]=t[n];return o}function ke(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(t);e&&(o=o.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,o)}return n}function xe(t){for(var e=1;e<arguments.length;e++){var n=null!=arguments[e]?arguments[e]:{};e%2?ke(Object(n),!0).forEach((function(e){Oe(t,e,n[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):ke(Object(n)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))}))}return t}function Oe(t,e,n){return(e=Te(e))in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function Te(t){var e=function(t,e){if("object"!==Ce(t)||null===t)return t;var n=t[Symbol.toPrimitive];if(void 0!==n){var o=n.call(t,e);if("object"!==Ce(o))return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t,"string");return"symbol"===Ce(e)?e:String(e)}function je(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function Ee(t,e){if(e&&("object"===Ce(e)||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined");return function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t)}function Se(t){var e="function"==typeof Map?new Map:void 0;return Se=function(t){if(null===t||(n=t,-1===Function.toString.call(n).indexOf("[native code]")))return t;var n;if("function"!=typeof t)throw new TypeError("Super expression must either be null or a function");if(void 0!==e){if(e.has(t))return e.get(t);e.set(t,o)}function o(){return Le(t,arguments,Ue(this).constructor)}return o.prototype=Object.create(t.prototype,{constructor:{value:o,enumerable:!1,writable:!0,configurable:!0}}),Ie(o,t)},Se(t)}function Le(t,e,n){return Le=Ne()?Reflect.construct.bind():function(t,e,n){var o=[null];o.push.apply(o,e);var i=new(Function.bind.apply(t,o));return n&&Ie(i,n.prototype),i},Le.apply(null,arguments)}function Ne(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}function Ie(t,e){return Ie=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},Ie(t,e)}function Ue(t){return Ue=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},Ue(t)}var $e=function(t){!function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&Ie(t,e)}(r,t);var e,n,o,i=(e=r,n=Ne(),function(){var t,o=Ue(e);if(n){var i=Ue(this).constructor;t=Reflect.construct(o,arguments,i)}else t=o.apply(this,arguments);return Ee(this,t)});function r(){return je(this,r),i.apply(this,arguments)}return o=r,Object.defineProperty(o,"prototype",{writable:!1}),o}(Se(Error)),Re={name:"PasswordLessLoginForm",components:{LoginButton:pe,InformationIcon:we.Z,LockOpenIcon:be.Z},props:{username:{type:String,default:""},redirectUrl:{type:[String,Boolean],default:!1},autoCompleteAllowed:{type:Boolean,default:!0},isHttps:{type:Boolean,default:!1},isLocalhost:{type:Boolean,default:!1},hasPublicKeyCredential:{type:Boolean,default:!1}},data:function(){return{user:this.username,loading:!1,validCredentials:!0}},methods:{authenticate:function(){var t=this;Pe.debug("passwordless login initiated"),this.getAuthenticationData(this.user).then((function(t){return Pe.debug(t),t})).then(this.sign).then(this.completeAuthentication).catch((function(e){e instanceof $e?t.validCredentials=!1:Pe.debug(e)}))},getAuthenticationData:function(t){var e,n,o=function(t){var e=(t=t.replace(/-/g,"+").replace(/_/g,"/")).length%4;if(e){if(1===e)throw new Error("InvalidLengthError: Input base64url string is the wrong length to determine padding");t+=new Array(5-e).join("=")}return window.atob(t)};return(e=t,n=(0,c.generateUrl)("/login/webauthn/start"),ye.default.post(n,{loginName:e}).then((function(t){return t.data}))).then((function(t){if(Pe.debug("Obtained PublicKeyCredentialRequestOptions"),Pe.debug(t),!Object.prototype.hasOwnProperty.call(t,"allowCredentials"))throw Pe.debug("No credentials found."),new $e;return t.challenge=Uint8Array.from(o(t.challenge),(function(t){return t.charCodeAt(0)})),t.allowCredentials=t.allowCredentials.map((function(t){return xe(xe({},t),{},{id:Uint8Array.from(o(t.id),(function(t){return t.charCodeAt(0)}))})})),Pe.debug("Converted PublicKeyCredentialRequestOptions"),Pe.debug(t),t})).catch((function(t){throw Pe.debug("Error while obtaining data"),t}))},sign:function(t){var e=function(t){return window.btoa(String.fromCharCode.apply(String,_e(t)))};return navigator.credentials.get({publicKey:t}).then((function(t){return Pe.debug(t),Pe.debug(new Uint8Array(t.rawId)),Pe.debug(e(new Uint8Array(t.rawId))),{id:t.id,type:t.type,rawId:e(new Uint8Array(t.rawId)),response:{authenticatorData:e(new Uint8Array(t.response.authenticatorData)),clientDataJSON:e(new Uint8Array(t.response.clientDataJSON)),signature:e(new Uint8Array(t.response.signature)),userHandle:t.response.userHandle?(n=new Uint8Array(t.response.userHandle),String.fromCharCode.apply(String,_e(n))):null}};var n})).then((function(t){return Pe.debug(t),t})).catch((function(t){Pe.debug("GOT AN ERROR!"),Pe.debug(t)}))},completeAuthentication:function(t){Pe.debug("TIME TO COMPLETE");var e,n,o=this.redirectUrl;return(e=JSON.stringify(t),n=(0,c.generateUrl)("/login/webauthn/finish"),ye.default.post(n,{data:e}).then((function(t){return t.data}))).then((function(t){var e=t.defaultRedirectUrl;Pe.debug("Logged in redirecting"),window.location.href=o||e})).catch((function(t){Pe.debug("GOT AN ERROR WHILE SUBMITTING CHALLENGE!"),Pe.debug(t)}))},submit:function(){}}},Fe=i(43848),Me={};Me.styleTagTransform=ce(),Me.setAttributes=re(),Me.insert=oe().bind(null,"head"),Me.domAPI=ee(),Me.insertStyleElement=se(),Xt()(Fe.Z,Me),Fe.Z&&Fe.Z.locals&&Fe.Z.locals;var Be=(0,fe.Z)(Re,(function(){var t=this,e=t._self._c;return(t.isHttps||t.isLocalhost)&&t.hasPublicKeyCredential?e("form",{ref:"loginForm",attrs:{method:"post",name:"login"},on:{submit:function(e){return e.preventDefault(),t.submit.apply(null,arguments)}}},[e("fieldset",[e("p",{staticClass:"grouptop groupbottom"},[e("label",{staticClass:"infield",attrs:{for:"user"}},[t._v(t._s(t.t("core","Username or\temail")))]),t._v(" "),e("input",{directives:[{name:"model",rawName:"v-model",value:t.user,expression:"user"}],ref:"user",attrs:{id:"user",type:"text",name:"user",autocomplete:t.autoCompleteAllowed?"on":"off",placeholder:t.t("core","Username or email"),"aria-label":t.t("core","Username or email"),required:""},domProps:{value:t.user},on:{change:function(e){return t.$emit("update:username",t.user)},input:function(e){e.target.composing||(t.user=e.target.value)}}})]),t._v(" "),t.validCredentials?t._e():e("div",{staticClass:"body-login-container update form__message-box"},[t._v("\n\t\t\t"+t._s(t.t("core","Your account is not setup for passwordless login."))+"\n\t\t")]),t._v(" "),t.validCredentials?e("LoginButton",{attrs:{loading:t.loading},on:{click:t.authenticate}}):t._e()],1)]):t.hasPublicKeyCredential?t.isHttps||t.isLocalhost?t._e():e("div",{staticClass:"body-login-container update"},[e("LockOpenIcon",{attrs:{size:"70"}}),t._v(" "),e("h2",[t._v(t._s(t.t("core","Your connection is not secure")))]),t._v(" "),e("p",{staticClass:"infogroup"},[t._v("\n\t\t"+t._s(t.t("core","Passwordless authentication is only available over a secure connection."))+"\n\t")])],1):e("div",{staticClass:"body-login-container update"},[e("InformationIcon",{attrs:{size:"70"}}),t._v(" "),e("h2",[t._v(t._s(t.t("core","Browser not supported")))]),t._v(" "),e("p",{staticClass:"infogroup"},[t._v("\n\t\t"+t._s(t.t("core","Passwordless authentication is not supported in your browser."))+"\n\t")])],1)}),[],!1,null,"20256748",null),ze=Be.exports,De=i(25108),Ze={name:"ResetPassword",components:{LoginButton:pe,NcNoteCard:Vt(),NcTextField:qt()},props:{username:{type:String,required:!0},resetPasswordLink:{type:String,required:!0}},data:function(){return{error:!1,loading:!1,message:void 0,user:this.username}},watch:{username:function(t){this.user=t}},methods:{updateUsername:function(){this.$emit("update:username",this.user)},submit:function(){var t=this;this.loading=!0,this.error=!1,this.message="";var e=(0,c.generateUrl)("/lostpassword/email"),n={user:this.user};return ye.default.post(e,n).then((function(t){return t.data})).then((function(e){if("success"!==e.status)throw new Error("got status ".concat(e.status));t.message="send-success"})).catch((function(e){De.error("could not send reset email request",e),t.error=!0,t.message="send-error"})).then((function(){t.loading=!1}))}}},He=i(28032),Ye={};Ye.styleTagTransform=ce(),Ye.setAttributes=re(),Ye.insert=oe().bind(null,"head"),Ye.domAPI=ee(),Ye.insertStyleElement=se(),Xt()(He.Z,Ye),He.Z&&He.Z.locals&&He.Z.locals;var qe=(0,fe.Z)(Ze,(function(){var t=this,e=t._self._c;return e("form",{staticClass:"login-form",on:{submit:function(e){return e.preventDefault(),t.submit.apply(null,arguments)}}},[e("fieldset",{staticClass:"login-form__fieldset"},[e("NcTextField",{attrs:{id:"user",value:t.user,name:"user",autocapitalize:"off",label:t.t("core","Account name or email"),"label-visible":!0,required:""},on:{"update:value":function(e){t.user=e},change:t.updateUsername}}),t._v(" "),e("LoginButton",{attrs:{value:t.t("core","Reset password")}}),t._v(" "),"send-success"===t.message?e("NcNoteCard",{attrs:{type:"success"}},[t._v("\n\t\t\t"+t._s(t.t("core","A password reset message has been sent to the email address of this account. If you do not receive it, check your spam/junk folders or ask your local administrator for help."))+"\n\t\t\t"),e("br"),t._v("\n\t\t\t"+t._s(t.t("core","If it is not there ask your local administrator."))+"\n\t\t")]):"send-error"===t.message?e("NcNoteCard",{attrs:{type:"error"}},[t._v("\n\t\t\t"+t._s(t.t("core","Couldn't send reset email. Please contact your administrator."))+"\n\t\t")]):"reset-error"===t.message?e("NcNoteCard",{attrs:{type:"error"}},[t._v("\n\t\t\t"+t._s(t.t("core","Password cannot be changed. Please contact your administrator."))+"\n\t\t")]):t._e(),t._v(" "),e("a",{staticClass:"login-form__link",attrs:{href:"#"},on:{click:function(e){return e.preventDefault(),t.$emit("abort")}}},[t._v("\n\t\t\t"+t._s(t.t("core","Back to login"))+"\n\t\t")])],1)])}),[],!1,null,"27cabc60",null),Ke=qe.exports;function Ve(t,e,n,o,i,r,a){try{var s=t[r](a),l=s.value}catch(t){return void n(t)}s.done?e(l):Promise.resolve(l).then(o,i)}var Ge={name:"UpdatePassword",components:{LoginButton:pe},props:{username:{type:String,required:!0},resetPasswordTarget:{type:String,required:!0}},data:function(){return{error:!1,loading:!1,message:void 0,user:this.username,password:"",encrypted:!1,proceed:!1}},watch:{username:function(t){this.user=t}},methods:{submit:function(){var e,n=this;return(e=regeneratorRuntime.mark((function e(){var o,i;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n.loading=!0,n.error=!1,n.message="",e.prev=3,e.next=6,ye.default.post(n.resetPasswordTarget,{password:n.password,proceed:n.proceed});case 6:if(o=e.sent,!(i=o.data)||"success"!==i.status){e.next=14;break}n.message="send-success",n.$emit("update:username",n.user),n.$emit("done"),e.next=23;break;case 14:if(!i||!i.encryption){e.next=18;break}n.encrypted=!0,e.next=23;break;case 18:if(!i||!i.msg){e.next=22;break}throw new Error(i.msg);case 22:throw new Error;case 23:e.next=29;break;case 25:e.prev=25,e.t0=e.catch(3),n.error=!0,n.message=e.t0.message?e.t0.message:t("core","Password cannot be changed. Please contact your administrator.");case 29:return e.prev=29,n.loading=!1,e.finish(29);case 32:case"end":return e.stop()}}),e,null,[[3,25,29,32]])})),function(){var t=this,n=arguments;return new Promise((function(o,i){var r=e.apply(t,n);function a(t){Ve(r,o,i,a,s,"next",t)}function s(t){Ve(r,o,i,a,s,"throw",t)}a(void 0)}))})()}}},We=Ge,Je=i(74778),Qe={};Qe.styleTagTransform=ce(),Qe.setAttributes=re(),Qe.insert=oe().bind(null,"head"),Qe.domAPI=ee(),Qe.insertStyleElement=se(),Xt()(Je.Z,Qe),Je.Z&&Je.Z.locals&&Je.Z.locals;var Xe=(0,fe.Z)(We,(function(){var t=this,e=t._self._c;return e("form",{on:{submit:function(e){return e.preventDefault(),t.submit.apply(null,arguments)}}},[e("fieldset",[e("p",[e("label",{staticClass:"infield",attrs:{for:"password"}},[t._v(t._s(t.t("core","New password")))]),t._v(" "),e("input",{directives:[{name:"model",rawName:"v-model",value:t.password,expression:"password"}],attrs:{id:"password",type:"password",name:"password",autocomplete:"new-password",autocapitalize:"none",autocorrect:"off",required:"",placeholder:t.t("core","New password")},domProps:{value:t.password},on:{input:function(e){e.target.composing||(t.password=e.target.value)}}})]),t._v(" "),t.encrypted?e("div",{staticClass:"update"},[e("p",[t._v("\n\t\t\t\t"+t._s(t.t("core","Your files are encrypted. There will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?"))+"\n\t\t\t")]),t._v(" "),e("input",{directives:[{name:"model",rawName:"v-model",value:t.proceed,expression:"proceed"}],staticClass:"checkbox",attrs:{id:"encrypted-continue",type:"checkbox"},domProps:{checked:Array.isArray(t.proceed)?t._i(t.proceed,null)>-1:t.proceed},on:{change:function(e){var n=t.proceed,o=e.target,i=!!o.checked;if(Array.isArray(n)){var r=t._i(n,null);o.checked?r<0&&(t.proceed=n.concat([null])):r>-1&&(t.proceed=n.slice(0,r).concat(n.slice(r+1)))}else t.proceed=i}}}),t._v(" "),e("label",{attrs:{for:"encrypted-continue"}},[t._v("\n\t\t\t\t"+t._s(t.t("core","I know what I'm doing"))+"\n\t\t\t")])]):t._e(),t._v(" "),e("LoginButton",{attrs:{loading:t.loading,value:t.t("core","Reset password"),"value-loading":t.t("core","Resetting password")}}),t._v(" "),t.error&&t.message?e("p",{class:{warning:t.error}},[t._v("\n\t\t\t"+t._s(t.message)+"\n\t\t")]):t._e()],1)])}),[],!1,null,"4dc21d74",null),tn=Xe.exports,en=i(25108),nn=Dt.parse(location.search);if("1"===nn.clear)try{window.localStorage.clear(),window.sessionStorage.clear(),en.debug("Browser storage cleared")}catch(t){en.error("Could not clear browser storage",t)}var on={name:"Login",components:{LoginForm:ve,PasswordLessLoginForm:ze,ResetPassword:Ke,UpdatePassword:tn,NcButton:Wt(),NcNoteCard:Vt()},data:function(){return{loading:!1,user:(0,zt.j)("core","loginUsername",""),passwordlessLogin:!1,resetPassword:!1,errors:(0,zt.j)("core","loginErrors",[]),messages:(0,zt.j)("core","loginMessages",[]),redirectUrl:(0,zt.j)("core","loginRedirectUrl",!1),throttleDelay:(0,zt.j)("core","loginThrottleDelay",0),canResetPassword:(0,zt.j)("core","loginCanResetPassword",!1),resetPasswordLink:(0,zt.j)("core","loginResetPasswordLink",""),autoCompleteAllowed:(0,zt.j)("core","loginAutocomplete",!0),resetPasswordTarget:(0,zt.j)("core","resetPasswordTarget",""),resetPasswordUser:(0,zt.j)("core","resetPasswordUser",""),directLogin:"1"===nn.direct,hasPasswordless:(0,zt.j)("core","webauthn-available",!1),countAlternativeLogins:(0,zt.j)("core","countAlternativeLogins",!1),alternativeLogins:(0,zt.j)("core","alternativeLogins",[]),isHttps:"https:"===window.location.protocol,isLocalhost:"localhost"===window.location.hostname,hasPublicKeyCredential:void 0!==window.PublicKeyCredential,hideLoginForm:(0,zt.j)("core","hideLoginForm",!1)}},methods:{passwordResetFinished:function(){this.resetPasswordTarget="",this.directLogin=!0}}},rn=i(20549),an={};an.styleTagTransform=ce(),an.setAttributes=re(),an.insert=oe().bind(null,"head"),an.domAPI=ee(),an.insertStyleElement=se(),Xt()(rn.Z,an),rn.Z&&rn.Z.locals&&rn.Z.locals;var sn=(0,fe.Z)(on,(function(){var t=this,e=t._self._c;return e("div",{staticClass:"guest-box login-box"},[!t.hideLoginForm||t.directLogin?e("div",[e("transition",{attrs:{name:"fade",mode:"out-in"}},[t.passwordlessLogin||t.resetPassword||""!==t.resetPasswordTarget?!t.loading&&t.passwordlessLogin?e("div",{key:"reset",staticClass:"login-additional"},[e("PasswordLessLoginForm",{attrs:{username:t.user,"redirect-url":t.redirectUrl,"auto-complete-allowed":t.autoCompleteAllowed,"is-https":t.isHttps,"is-localhost":t.isLocalhost,"has-public-key-credential":t.hasPublicKeyCredential},on:{"update:username":function(e){t.user=e},submit:function(e){t.loading=!0}}}),t._v(" "),e("a",{staticClass:"login-box__link",attrs:{href:"#"},on:{click:function(e){e.preventDefault(),t.passwordlessLogin=!1}}},[t._v("\n\t\t\t\t\t"+t._s(t.t("core","Back"))+"\n\t\t\t\t")])],1):!t.loading&&t.canResetPassword?e("div",{key:"reset",staticClass:"login-additional"},[e("div",{staticClass:"lost-password-container"},[t.resetPassword?e("ResetPassword",{attrs:{username:t.user,"reset-password-link":t.resetPasswordLink},on:{"update:username":function(e){t.user=e},abort:function(e){t.resetPassword=!1}}}):t._e()],1)]):""!==t.resetPasswordTarget?e("div",[e("UpdatePassword",{attrs:{username:t.user,"reset-password-target":t.resetPasswordTarget},on:{"update:username":function(e){t.user=e},done:t.passwordResetFinished}})],1):t._e():e("div",[e("LoginForm",{attrs:{username:t.user,"redirect-url":t.redirectUrl,"direct-login":t.directLogin,messages:t.messages,errors:t.errors,"throttle-delay":t.throttleDelay,"auto-complete-allowed":t.autoCompleteAllowed},on:{"update:username":function(e){t.user=e},submit:function(e){t.loading=!0}}}),t._v(" "),t.canResetPassword&&""!==t.resetPasswordLink?e("a",{staticClass:"login-box__link",attrs:{id:"lost-password",href:t.resetPasswordLink}},[t._v("\n\t\t\t\t\t"+t._s(t.t("core","Forgot password?"))+"\n\t\t\t\t")]):t.canResetPassword&&!t.resetPassword?e("a",{staticClass:"login-box__link",attrs:{id:"lost-password",href:t.resetPasswordLink},on:{click:function(e){e.preventDefault(),t.resetPassword=!0}}},[t._v("\n\t\t\t\t\t"+t._s(t.t("core","Forgot password?"))+"\n\t\t\t\t")]):t._e(),t._v(" "),t.hasPasswordless?[t.countAlternativeLogins?e("div",{staticClass:"alternative-logins"},[t.hasPasswordless?e("a",{staticClass:"button",class:{"single-alt-login-option":t.countAlternativeLogins},attrs:{href:"#"},on:{click:function(e){e.preventDefault(),t.passwordlessLogin=!0}}},[t._v("\n\t\t\t\t\t\t\t"+t._s(t.t("core","Log in with a device"))+"\n\t\t\t\t\t\t")]):t._e()]):e("a",{attrs:{href:"#"},on:{click:function(e){e.preventDefault(),t.passwordlessLogin=!0}}},[t._v("\n\t\t\t\t\t\t"+t._s(t.t("core","Log in with a device"))+"\n\t\t\t\t\t")])]:t._e()],2)])],1):e("div",[e("transition",{attrs:{name:"fade",mode:"out-in"}},[e("NcNoteCard",{attrs:{type:"warning",title:t.t("core","Login form is disabled.")}},[t._v("\n\t\t\t\t"+t._s(t.t("core","Please contact your administrator."))+"\n\t\t\t")])],1)],1),t._v(" "),e("div",{staticClass:"alternative-logins",attrs:{id:"alternative-logins"}},t._l(t.alternativeLogins,(function(n,o){return e("NcButton",{key:o,class:[n.class],attrs:{type:"secondary",wide:!0,role:"link",href:n.href}},[t._v("\n\t\t\t"+t._s(n.name)+"\n\t\t")])})),1)])}),[],!1,null,null,null).exports,ln={data:function(){return{OC:Bt}},methods:{t:_t.translate.bind(_t),n:_t.translatePlural.bind(_t)}};r.ZP.mixin(ln),(new(r.ZP.extend(sn))).$mount("#login")},49665:function(t,e,n){"use strict";var o=n(87537),i=n.n(o),r=n(23645),a=n.n(r)()(i());a.push([t.id,".button-vue[data-v-756414a8]{margin-top:.5rem}","",{version:3,sources:["webpack://./core/src/components/login/LoginButton.vue"],names:[],mappings:"AACA,6BACC,gBAAA",sourcesContent:["\n.button-vue {\n\tmargin-top: .5rem;\n}\n"],sourceRoot:""}]),e.Z=a},3591:function(t,e,n){"use strict";var o=n(87537),i=n.n(o),r=n(23645),a=n.n(r)()(i());a.push([t.id,".login-form[data-v-5bd351bc]{text-align:left;font-size:1rem}.login-form__fieldset[data-v-5bd351bc]{width:100%;display:flex;flex-direction:column;gap:.5rem}.login-form__headline[data-v-5bd351bc]{text-align:center}","",{version:3,sources:["webpack://./core/src/components/login/LoginForm.vue"],names:[],mappings:"AACA,6BACC,eAAA,CACA,cAAA,CAEA,uCACC,UAAA,CACA,YAAA,CACA,qBAAA,CACA,SAAA,CAGD,uCACC,iBAAA",sourcesContent:["\n.login-form {\n\ttext-align: left;\n\tfont-size: 1rem;\n\n\t&__fieldset {\n\t\twidth: 100%;\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tgap: .5rem;\n\t}\n\n\t&__headline {\n\t\ttext-align: center;\n\t}\n}\n"],sourceRoot:""}]),e.Z=a},43848:function(t,e,n){"use strict";var o=n(87537),i=n.n(o),r=n(23645),a=n.n(r)()(i());a.push([t.id,".body-login-container.update[data-v-20256748]{margin:15px 0}.body-login-container.update.form__message-box[data-v-20256748]{width:240px;margin:5px}","",{version:3,sources:["webpack://./core/src/components/login/PasswordLessLoginForm.vue"],names:[],mappings:"AACA,8CACC,aAAA,CAEA,gEACC,WAAA,CACA,UAAA",sourcesContent:["\n.body-login-container.update {\n\tmargin: 15px 0;\n\n\t&.form__message-box {\n\t\twidth: 240px;\n\t\tmargin: 5px;\n\t}\n}\n"],sourceRoot:""}]),e.Z=a},28032:function(t,e,n){"use strict";var o=n(87537),i=n.n(o),r=n(23645),a=n.n(r)()(i());a.push([t.id,".login-form[data-v-27cabc60]{text-align:left;font-size:1rem}.login-form__fieldset[data-v-27cabc60]{width:100%;display:flex;flex-direction:column;gap:.5rem}.login-form__link[data-v-27cabc60]{display:block;font-weight:normal !important;padding-bottom:1rem;cursor:pointer;font-size:var(--default-font-size);text-align:center;padding:.5rem 1rem 1rem 1rem}","",{version:3,sources:["webpack://./core/src/components/login/ResetPassword.vue"],names:[],mappings:"AACA,6BACC,eAAA,CACA,cAAA,CAEA,uCACC,UAAA,CACA,YAAA,CACA,qBAAA,CACA,SAAA,CAGD,mCACC,aAAA,CACA,6BAAA,CACA,mBAAA,CACA,cAAA,CACA,kCAAA,CACA,iBAAA,CACA,4BAAA",sourcesContent:["\n.login-form {\n\ttext-align: left;\n\tfont-size: 1rem;\n\n\t&__fieldset {\n\t\twidth: 100%;\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tgap: .5rem;\n\t}\n\n\t&__link {\n\t\tdisplay: block;\n\t\tfont-weight: normal !important;\n\t\tpadding-bottom: 1rem;\n\t\tcursor: pointer;\n\t\tfont-size: var(--default-font-size);\n\t\ttext-align: center;\n\t\tpadding: .5rem 1rem 1rem 1rem;\n\t}\n}\n"],sourceRoot:""}]),e.Z=a},20549:function(t,e,n){"use strict";var o=n(87537),i=n.n(o),r=n(23645),a=n.n(r)()(i());a.push([t.id,"body{font-size:var(--default-font-size)}.login-box{width:300px}.login-box__link{display:block;padding:1rem;font-size:var(--default-font-size);text-align:center;font-weight:normal !important}.fade-enter-active,.fade-leave-active{transition:opacity .3s}.fade-enter,.fade-leave-to{opacity:0}.alternative-logins{display:flex;flex-direction:column;gap:.75rem}.alternative-logins .button-vue{box-sizing:border-box}","",{version:3,sources:["webpack://./core/src/views/Login.vue"],names:[],mappings:"AACA,KACC,kCAAA,CAGD,WACC,WAAA,CAEA,iBACC,aAAA,CACA,YAAA,CACA,kCAAA,CACA,iBAAA,CACA,6BAAA,CAGF,sCACC,sBAAA,CAED,2BACC,SAAA,CAGD,oBACC,YAAA,CACA,qBAAA,CACA,UAAA,CAEA,gCACC,qBAAA",sourcesContent:["\nbody {\n\tfont-size: var(--default-font-size);\n}\n\n.login-box {\n\twidth: 300px;\n\n\t&__link {\n\t\tdisplay: block;\n\t\tpadding: 1rem;\n\t\tfont-size: var(--default-font-size);\n\t\ttext-align: center;\n\t\tfont-weight: normal !important;\n\t}\n}\n.fade-enter-active, .fade-leave-active {\n\ttransition: opacity .3s;\n}\n.fade-enter, .fade-leave-to /* .fade-leave-active below version 2.1.8 */ {\n\topacity: 0;\n}\n\n.alternative-logins {\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 0.75rem;\n\n\t.button-vue {\n\t\tbox-sizing: border-box;\n\t}\n}\n"],sourceRoot:""}]),e.Z=a},74778:function(t,e,n){"use strict";var o=n(87537),i=n.n(o),r=n(23645),a=n.n(r)()(i());a.push([t.id,"\nfieldset[data-v-4dc21d74] {\n\ttext-align: center;\n}\ninput[type=submit][data-v-4dc21d74] {\n\tmargin-top: 20px;\n}\n","",{version:3,sources:["webpack://./core/src/components/login/UpdatePassword.vue"],names:[],mappings:";AA4IA;CACA,kBAAA;AACA;AAEA;CACA,gBAAA;AACA",sourcesContent:["\x3c!--\n - @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n --\x3e\n\n<template>\n\t<form @submit.prevent=\"submit\">\n\t\t<fieldset>\n\t\t\t<p>\n\t\t\t\t<label for=\"password\" class=\"infield\">{{ t('core', 'New password') }}</label>\n\t\t\t\t<input id=\"password\"\n\t\t\t\t\tv-model=\"password\"\n\t\t\t\t\ttype=\"password\"\n\t\t\t\t\tname=\"password\"\n\t\t\t\t\tautocomplete=\"new-password\"\n\t\t\t\t\tautocapitalize=\"none\"\n\t\t\t\t\tautocorrect=\"off\"\n\t\t\t\t\trequired\n\t\t\t\t\t:placeholder=\"t('core', 'New password')\">\n\t\t\t</p>\n\n\t\t\t<div v-if=\"encrypted\" class=\"update\">\n\t\t\t\t<p>\n\t\t\t\t\t{{ t('core', 'Your files are encrypted. There will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?') }}\n\t\t\t\t</p>\n\t\t\t\t<input id=\"encrypted-continue\"\n\t\t\t\t\tv-model=\"proceed\"\n\t\t\t\t\ttype=\"checkbox\"\n\t\t\t\t\tclass=\"checkbox\">\n\t\t\t\t<label for=\"encrypted-continue\">\n\t\t\t\t\t{{ t('core', 'I know what I\\'m doing') }}\n\t\t\t\t</label>\n\t\t\t</div>\n\n\t\t\t<LoginButton :loading=\"loading\"\n\t\t\t\t:value=\"t('core', 'Reset password')\"\n\t\t\t\t:value-loading=\"t('core', 'Resetting password')\" />\n\n\t\t\t<p v-if=\"error && message\" :class=\"{warning: error}\">\n\t\t\t\t{{ message }}\n\t\t\t</p>\n\t\t</fieldset>\n\t</form>\n</template>\n\n<script>\nimport Axios from '@nextcloud/axios'\nimport LoginButton from './LoginButton.vue'\n\nexport default {\n\tname: 'UpdatePassword',\n\tcomponents: {\n\t\tLoginButton,\n\t},\n\tprops: {\n\t\tusername: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tresetPasswordTarget: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\terror: false,\n\t\t\tloading: false,\n\t\t\tmessage: undefined,\n\t\t\tuser: this.username,\n\t\t\tpassword: '',\n\t\t\tencrypted: false,\n\t\t\tproceed: false,\n\t\t}\n\t},\n\twatch: {\n\t\tusername(value) {\n\t\t\tthis.user = value\n\t\t},\n\t},\n\tmethods: {\n\t\tasync submit() {\n\t\t\tthis.loading = true\n\t\t\tthis.error = false\n\t\t\tthis.message = ''\n\n\t\t\ttry {\n\t\t\t\tconst { data } = await Axios.post(this.resetPasswordTarget, {\n\t\t\t\t\tpassword: this.password,\n\t\t\t\t\tproceed: this.proceed,\n\t\t\t\t})\n\t\t\t\tif (data && data.status === 'success') {\n\t\t\t\t\tthis.message = 'send-success'\n\t\t\t\t\tthis.$emit('update:username', this.user)\n\t\t\t\t\tthis.$emit('done')\n\t\t\t\t} else if (data && data.encryption) {\n\t\t\t\t\tthis.encrypted = true\n\t\t\t\t} else if (data && data.msg) {\n\t\t\t\t\tthrow new Error(data.msg)\n\t\t\t\t} else {\n\t\t\t\t\tthrow new Error()\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\tthis.error = true\n\t\t\t\tthis.message = e.message ? e.message : t('core', 'Password cannot be changed. Please contact your administrator.')\n\t\t\t} finally {\n\t\t\t\tthis.loading = false\n\t\t\t}\n\t\t},\n\t},\n}\n<\/script>\n\n<style scoped>\n\tfieldset {\n\t\ttext-align: center;\n\t}\n\n\tinput[type=submit] {\n\t\tmargin-top: 20px;\n\t}\n</style>\n"],sourceRoot:""}]),e.Z=a},10944:function(t,e,n){var o=n(40202);t.exports=(o.default||o).template({1:function(t,e,n,o,i){var r,a=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return null!=(r=a(n,"if").call(null!=e?e:t.nullContext||{},null!=(r=null!=e?a(e,"contact"):e)?a(r,"profileUrl"):r,{name:"if",hash:{},fn:t.program(2,i,0),inverse:t.program(5,i,0),data:i,loc:{start:{line:2,column:1},end:{line:10,column:8}}}))?r:""},2:function(t,e,n,o,i){var r,a=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return null!=(r=a(n,"if").call(null!=e?e:t.nullContext||{},null!=(r=null!=e?a(e,"contact"):e)?a(r,"profileTitle"):r,{name:"if",hash:{},fn:t.program(3,i,0),inverse:t.noop,data:i,loc:{start:{line:3,column:2},end:{line:7,column:9}}}))?r:""},3:function(t,e,n,o,i){var r,a=t.lambda,s=t.escapeExpression,l=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'\t\t\t<a class="profile-link--avatar" href="'+s(a(null!=(r=null!=e?l(e,"contact"):e)?l(r,"profileUrl"):r,e))+'">\n\t\t\t\t<img src="'+s(a(null!=(r=null!=e?l(e,"contact"):e)?l(r,"avatar"):r,e))+'&size=32" class="avatar" srcset="'+s(a(null!=(r=null!=e?l(e,"contact"):e)?l(r,"avatar"):r,e))+"&size=32 1x, "+s(a(null!=(r=null!=e?l(e,"contact"):e)?l(r,"avatar"):r,e))+"&size=64 2x, "+s(a(null!=(r=null!=e?l(e,"contact"):e)?l(r,"avatar"):r,e))+'&size=128 4x" alt="">\n\t\t\t</a>\n'},5:function(t,e,n,o,i){var r,a=t.lambda,s=t.escapeExpression,l=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'\t\t<img src="'+s(a(null!=(r=null!=e?l(e,"contact"):e)?l(r,"avatar"):r,e))+'&size=32" class="avatar" srcset="'+s(a(null!=(r=null!=e?l(e,"contact"):e)?l(r,"avatar"):r,e))+"&size=32 1x, "+s(a(null!=(r=null!=e?l(e,"contact"):e)?l(r,"avatar"):r,e))+"&size=64 2x, "+s(a(null!=(r=null!=e?l(e,"contact"):e)?l(r,"avatar"):r,e))+'&size=128 4x" alt="">\n'},7:function(t,e,n,o,i){var r,a=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return null!=(r=a(n,"if").call(null!=e?e:t.nullContext||{},null!=(r=null!=e?a(e,"contact"):e)?a(r,"profileUrl"):r,{name:"if",hash:{},fn:t.program(8,i,0),inverse:t.program(11,i,0),data:i,loc:{start:{line:12,column:1},end:{line:20,column:8}}}))?r:""},8:function(t,e,n,o,i){var r,a=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return null!=(r=a(n,"if").call(null!=e?e:t.nullContext||{},null!=(r=null!=e?a(e,"contact"):e)?a(r,"profileTitle"):r,{name:"if",hash:{},fn:t.program(9,i,0),inverse:t.noop,data:i,loc:{start:{line:13,column:2},end:{line:17,column:9}}}))?r:""},9:function(t,e,n,o,i){var r,a=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'\t\t\t<a class="profile-link--avatar" href="'+t.escapeExpression(t.lambda(null!=(r=null!=e?a(e,"contact"):e)?a(r,"profileUrl"):r,e))+'">\n\t\t\t\t<div class="avatar"></div>\n\t\t\t</a>\n'},11:function(t,e,n,o,i){return'\t\t<div class="avatar"></div>\n'},13:function(t,e,n,o,i){var r,a=null!=e?e:t.nullContext||{},s=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return(null!=(r=s(n,"if").call(a,null!=(r=null!=e?s(e,"contact"):e)?s(r,"profileTitle"):r,{name:"if",hash:{},fn:t.program(14,i,0),inverse:t.noop,data:i,loc:{start:{line:23,column:1},end:{line:29,column:8}}}))?r:"")+(null!=(r=s(n,"if").call(a,null!=(r=null!=e?s(e,"contact"):e)?s(r,"topAction"):r,{name:"if",hash:{},fn:t.program(16,i,0),inverse:t.noop,data:i,loc:{start:{line:30,column:1},end:{line:34,column:8}}}))?r:"")},14:function(t,e,n,o,i){var r,a=t.lambda,s=t.escapeExpression,l=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'\t\t<a class="body profile-link--full-name" href="'+s(a(null!=(r=null!=e?l(e,"contact"):e)?l(r,"profileUrl"):r,e))+'">\n\t\t\t<div class="full-name">'+s(a(null!=(r=null!=e?l(e,"contact"):e)?l(r,"fullName"):r,e))+'</div>\n\t\t\t<div class="last-message">'+s(a(null!=(r=null!=e?l(e,"contact"):e)?l(r,"lastMessage"):r,e))+'</div>\n\t\t\t<div class="email-address">'+s(a(null!=(r=null!=e?l(e,"contact"):e)?l(r,"emailAddresses"):r,e))+"</div>\n\t\t</a>\n"},16:function(t,e,n,o,i){var r,a=t.lambda,s=t.escapeExpression,l=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'\t\t<a class="top-action" href="'+s(a(null!=(r=null!=(r=null!=e?l(e,"contact"):e)?l(r,"topAction"):r)?l(r,"hyperlink"):r,e))+'" title="'+s(a(null!=(r=null!=(r=null!=e?l(e,"contact"):e)?l(r,"topAction"):r)?l(r,"title"):r,e))+'">\n\t\t\t<img src="'+s(a(null!=(r=null!=(r=null!=e?l(e,"contact"):e)?l(r,"topAction"):r)?l(r,"icon"):r,e))+'" alt="'+s(a(null!=(r=null!=(r=null!=e?l(e,"contact"):e)?l(r,"topAction"):r)?l(r,"title"):r,e))+'">\n\t\t</a>\n'},18:function(t,e,n,o,i){var r,a=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return null!=(r=a(n,"if").call(null!=e?e:t.nullContext||{},null!=(r=null!=e?a(e,"contact"):e)?a(r,"topAction"):r,{name:"if",hash:{},fn:t.program(19,i,0),inverse:t.program(21,i,0),data:i,loc:{start:{line:35,column:0},end:{line:50,column:0}}}))?r:""},19:function(t,e,n,o,i){var r,a=t.lambda,s=t.escapeExpression,l=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'\t<a class="body" href="'+s(a(null!=(r=null!=(r=null!=e?l(e,"contact"):e)?l(r,"topAction"):r)?l(r,"hyperlink"):r,e))+'">\n\t\t<div class="full-name">'+s(a(null!=(r=null!=e?l(e,"contact"):e)?l(r,"fullName"):r,e))+'</div>\n\t\t<div class="last-message">'+s(a(null!=(r=null!=e?l(e,"contact"):e)?l(r,"lastMessage"):r,e))+'</div>\n\t\t<div class="email-address">'+s(a(null!=(r=null!=e?l(e,"contact"):e)?l(r,"emailAddresses"):r,e))+'</div>\n\t</a>\n \t<a class="top-action" href="'+s(a(null!=(r=null!=(r=null!=e?l(e,"contact"):e)?l(r,"topAction"):r)?l(r,"hyperlink"):r,e))+'" title="'+s(a(null!=(r=null!=(r=null!=e?l(e,"contact"):e)?l(r,"topAction"):r)?l(r,"title"):r,e))+'">\n \t\t<img src="'+s(a(null!=(r=null!=(r=null!=e?l(e,"contact"):e)?l(r,"topAction"):r)?l(r,"icon"):r,e))+'" alt="'+s(a(null!=(r=null!=(r=null!=e?l(e,"contact"):e)?l(r,"topAction"):r)?l(r,"title"):r,e))+'">\n\t</a>\n'},21:function(t,e,n,o,i){var r,a=t.lambda,s=t.escapeExpression,l=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'\t<div class="body">\n\t\t<div class="full-name">'+s(a(null!=(r=null!=e?l(e,"contact"):e)?l(r,"fullName"):r,e))+'</div>\n\t\t<div class="last-message">'+s(a(null!=(r=null!=e?l(e,"contact"):e)?l(r,"lastMessage"):r,e))+'</div>\n\t\t<div class="email-address">'+s(a(null!=(r=null!=e?l(e,"contact"):e)?l(r,"emailAddresses"):r,e))+"</div>\n\t</div>\n"},23:function(t,e,n,o,i){var r,a=t.lambda,s=t.escapeExpression,l=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'<a class="second-action" href="'+s(a(null!=(r=null!=(r=null!=e?l(e,"contact"):e)?l(r,"secondAction"):r)?l(r,"hyperlink"):r,e))+'" title="'+s(a(null!=(r=null!=(r=null!=e?l(e,"contact"):e)?l(r,"secondAction"):r)?l(r,"title"):r,e))+'">\n\t<img src="'+s(a(null!=(r=null!=(r=null!=e?l(e,"contact"):e)?l(r,"secondAction"):r)?l(r,"icon"):r,e))+'" alt="'+s(a(null!=(r=null!=(r=null!=e?l(e,"contact"):e)?l(r,"secondAction"):r)?l(r,"title"):r,e))+'">\n</a>\n'},25:function(t,e,n,o,i){var r,a=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'\t<button class="other-actions icon-more"></button>\n\t<div class="menu popovermenu">\n\t\t<ul>\n'+(null!=(r=a(n,"each").call(null!=e?e:t.nullContext||{},null!=(r=null!=e?a(e,"contact"):e)?a(r,"actions"):r,{name:"each",hash:{},fn:t.program(26,i,0),inverse:t.noop,data:i,loc:{start:{line:60,column:3},end:{line:67,column:12}}}))?r:"")+"\t\t</ul>\n\t</div>\n"},26:function(t,e,n,o,i){var r,a=null!=e?e:t.nullContext||{},s=t.hooks.helperMissing,l="function",c=t.escapeExpression,u=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'\t\t\t<li>\n\t\t\t\t<a href="'+c(typeof(r=null!=(r=u(n,"hyperlink")||(null!=e?u(e,"hyperlink"):e))?r:s)===l?r.call(a,{name:"hyperlink",hash:{},data:i,loc:{start:{line:62,column:13},end:{line:62,column:26}}}):r)+'">\n\t\t\t\t\t<img src="'+c(typeof(r=null!=(r=u(n,"icon")||(null!=e?u(e,"icon"):e))?r:s)===l?r.call(a,{name:"icon",hash:{},data:i,loc:{start:{line:63,column:15},end:{line:63,column:23}}}):r)+'" alt="">\n\t\t\t\t\t<span>'+c(typeof(r=null!=(r=u(n,"title")||(null!=e?u(e,"title"):e))?r:s)===l?r.call(a,{name:"title",hash:{},data:i,loc:{start:{line:64,column:11},end:{line:64,column:20}}}):r)+"</span>\n\t\t\t\t</a>\n\t\t\t</li>\n"},compiler:[8,">= 4.3.0"],main:function(t,e,n,o,i){var r,a=null!=e?e:t.nullContext||{},s=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return(null!=(r=s(n,"if").call(a,null!=(r=null!=e?s(e,"contact"):e)?s(r,"avatar"):r,{name:"if",hash:{},fn:t.program(1,i,0),inverse:t.program(7,i,0),data:i,loc:{start:{line:1,column:0},end:{line:21,column:7}}}))?r:"")+(null!=(r=s(n,"if").call(a,null!=(r=null!=e?s(e,"contact"):e)?s(r,"profileUrl"):r,{name:"if",hash:{},fn:t.program(13,i,0),inverse:t.program(18,i,0),data:i,loc:{start:{line:22,column:0},end:{line:50,column:7}}}))?r:"")+(null!=(r=s(n,"if").call(a,null!=(r=null!=e?s(e,"contact"):e)?s(r,"hasTwoActions"):r,{name:"if",hash:{},fn:t.program(23,i,0),inverse:t.noop,data:i,loc:{start:{line:51,column:0},end:{line:55,column:7}}}))?r:"")+(null!=(r=s(n,"if").call(a,null!=(r=null!=e?s(e,"contact"):e)?s(r,"hasManyActions"):r,{name:"if",hash:{},fn:t.program(25,i,0),inverse:t.noop,data:i,loc:{start:{line:56,column:0},end:{line:70,column:7}}}))?r:"")},useData:!0})},20421:function(t,e,n){var o=n(40202);t.exports=(o.default||o).template({compiler:[8,">= 4.3.0"],main:function(t,e,n,o,i){var r,a=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'<div class="emptycontent">\n\t<div class="icon-search"></div>\n\t<h2>'+t.escapeExpression("function"==typeof(r=null!=(r=a(n,"couldNotLoadText")||(null!=e?a(e,"couldNotLoadText"):e))?r:t.hooks.helperMissing)?r.call(null!=e?e:t.nullContext||{},{name:"couldNotLoadText",hash:{},data:i,loc:{start:{line:3,column:5},end:{line:3,column:25}}}):r)+"</h2>\n</div>\n"},useData:!0})},34083:function(t,e,n){var o=n(40202);t.exports=(o.default||o).template({1:function(t,e,n,o,i){var r,a=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'<div class="emptycontent">\n\t<div class="icon-search"></div>\n\t<h2>'+t.escapeExpression("function"==typeof(r=null!=(r=a(n,"noContactsFoundText")||(null!=e?a(e,"noContactsFoundText"):e))?r:t.hooks.helperMissing)?r.call(null!=e?e:t.nullContext||{},{name:"noContactsFoundText",hash:{},data:i,loc:{start:{line:4,column:5},end:{line:4,column:28}}}):r)+"</h2>\n</div>\n"},3:function(t,e,n,o,i){var r,a=null!=e?e:t.nullContext||{},s=t.hooks.helperMissing,l="function",c=t.escapeExpression,u=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'<div class="footer"><a href="'+c(typeof(r=null!=(r=u(n,"contactsAppURL")||(null!=e?u(e,"contactsAppURL"):e))?r:s)===l?r.call(a,{name:"contactsAppURL",hash:{},data:i,loc:{start:{line:9,column:29},end:{line:9,column:47}}}):r)+'">'+c(typeof(r=null!=(r=u(n,"showAllContactsText")||(null!=e?u(e,"showAllContactsText"):e))?r:s)===l?r.call(a,{name:"showAllContactsText",hash:{},data:i,loc:{start:{line:9,column:49},end:{line:9,column:72}}}):r)+"</a></div>\n"},5:function(t,e,n,o,i){var r,a=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return null!=(r=a(n,"if").call(null!=e?e:t.nullContext||{},null!=e?a(e,"canInstallApp"):e,{name:"if",hash:{},fn:t.program(6,i,0),inverse:t.noop,data:i,loc:{start:{line:10,column:0},end:{line:12,column:0}}}))?r:""},6:function(t,e,n,o,i){var r,a=null!=e?e:t.nullContext||{},s=t.hooks.helperMissing,l="function",c=t.escapeExpression,u=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'<div class="footer"><a href="'+c(typeof(r=null!=(r=u(n,"contactsAppMgmtURL")||(null!=e?u(e,"contactsAppMgmtURL"):e))?r:s)===l?r.call(a,{name:"contactsAppMgmtURL",hash:{},data:i,loc:{start:{line:11,column:29},end:{line:11,column:51}}}):r)+'">'+c(typeof(r=null!=(r=u(n,"contactsAppMgmtText")||(null!=e?u(e,"contactsAppMgmtText"):e))?r:s)===l?r.call(a,{name:"contactsAppMgmtText",hash:{},data:i,loc:{start:{line:11,column:53},end:{line:11,column:76}}}):r)+"</a></div>\n"},compiler:[8,">= 4.3.0"],main:function(t,e,n,o,i){var r,a=null!=e?e:t.nullContext||{},s=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return(null!=(r=s(n,"unless").call(a,null!=(r=null!=e?s(e,"contacts"):e)?s(r,"length"):r,{name:"unless",hash:{},fn:t.program(1,i,0),inverse:t.noop,data:i,loc:{start:{line:1,column:0},end:{line:6,column:11}}}))?r:"")+'<div id="contactsmenu-contacts"></div>\n'+(null!=(r=s(n,"if").call(a,null!=e?s(e,"contactsAppEnabled"):e,{name:"if",hash:{},fn:t.program(3,i,0),inverse:t.program(5,i,0),data:i,loc:{start:{line:8,column:0},end:{line:12,column:7}}}))?r:"")},useData:!0})},95386:function(t,e,n){var o=n(40202);t.exports=(o.default||o).template({compiler:[8,">= 4.3.0"],main:function(t,e,n,o,i){var r,a=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'<div class="emptycontent">\n\t<div class="icon-loading"></div>\n\t<h2>'+t.escapeExpression("function"==typeof(r=null!=(r=a(n,"loadingText")||(null!=e?a(e,"loadingText"):e))?r:t.hooks.helperMissing)?r.call(null!=e?e:t.nullContext||{},{name:"loadingText",hash:{},data:i,loc:{start:{line:3,column:5},end:{line:3,column:20}}}):r)+"</h2>\n</div>\n"},useData:!0})},66115:function(t,e,n){var o=n(40202);t.exports=(o.default||o).template({compiler:[8,">= 4.3.0"],main:function(t,e,n,o,i){var r,a=null!=e?e:t.nullContext||{},s=t.hooks.helperMissing,l="function",c=t.escapeExpression,u=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'<label class="hidden-visually" for="contactsmenu-search">'+c(typeof(r=null!=(r=u(n,"searchContactsText")||(null!=e?u(e,"searchContactsText"):e))?r:s)===l?r.call(a,{name:"searchContactsText",hash:{},data:i,loc:{start:{line:1,column:57},end:{line:1,column:79}}}):r)+'</label>\n<input id="contactsmenu-search" type="search" placeholder="'+c(typeof(r=null!=(r=u(n,"searchContactsText")||(null!=e?u(e,"searchContactsText"):e))?r:s)===l?r.call(a,{name:"searchContactsText",hash:{},data:i,loc:{start:{line:2,column:59},end:{line:2,column:81}}}):r)+'" value="'+c(typeof(r=null!=(r=u(n,"searchTerm")||(null!=e?u(e,"searchTerm"):e))?r:s)===l?r.call(a,{name:"searchTerm",hash:{},data:i,loc:{start:{line:2,column:90},end:{line:2,column:104}}}):r)+'">\n<div class="content">\n</div>\n'},useData:!0})},46700:function(t,e,n){var o={"./af":42786,"./af.js":42786,"./ar":30867,"./ar-dz":14130,"./ar-dz.js":14130,"./ar-kw":96135,"./ar-kw.js":96135,"./ar-ly":56440,"./ar-ly.js":56440,"./ar-ma":47702,"./ar-ma.js":47702,"./ar-sa":16040,"./ar-sa.js":16040,"./ar-tn":37100,"./ar-tn.js":37100,"./ar.js":30867,"./az":31083,"./az.js":31083,"./be":9808,"./be.js":9808,"./bg":68338,"./bg.js":68338,"./bm":67438,"./bm.js":67438,"./bn":8905,"./bn-bd":76225,"./bn-bd.js":76225,"./bn.js":8905,"./bo":11560,"./bo.js":11560,"./br":1278,"./br.js":1278,"./bs":80622,"./bs.js":80622,"./ca":2468,"./ca.js":2468,"./cs":5822,"./cs.js":5822,"./cv":50877,"./cv.js":50877,"./cy":47373,"./cy.js":47373,"./da":24780,"./da.js":24780,"./de":59740,"./de-at":60217,"./de-at.js":60217,"./de-ch":60894,"./de-ch.js":60894,"./de.js":59740,"./dv":5300,"./dv.js":5300,"./el":50837,"./el.js":50837,"./en-au":78348,"./en-au.js":78348,"./en-ca":77925,"./en-ca.js":77925,"./en-gb":22243,"./en-gb.js":22243,"./en-ie":46436,"./en-ie.js":46436,"./en-il":47207,"./en-il.js":47207,"./en-in":44175,"./en-in.js":44175,"./en-nz":76319,"./en-nz.js":76319,"./en-sg":31662,"./en-sg.js":31662,"./eo":92915,"./eo.js":92915,"./es":55655,"./es-do":55251,"./es-do.js":55251,"./es-mx":96112,"./es-mx.js":96112,"./es-us":71146,"./es-us.js":71146,"./es.js":55655,"./et":5603,"./et.js":5603,"./eu":77763,"./eu.js":77763,"./fa":76959,"./fa.js":76959,"./fi":11897,"./fi.js":11897,"./fil":42549,"./fil.js":42549,"./fo":94694,"./fo.js":94694,"./fr":94470,"./fr-ca":63049,"./fr-ca.js":63049,"./fr-ch":52330,"./fr-ch.js":52330,"./fr.js":94470,"./fy":5044,"./fy.js":5044,"./ga":29295,"./ga.js":29295,"./gd":2101,"./gd.js":2101,"./gl":38794,"./gl.js":38794,"./gom-deva":27884,"./gom-deva.js":27884,"./gom-latn":23168,"./gom-latn.js":23168,"./gu":95349,"./gu.js":95349,"./he":24206,"./he.js":24206,"./hi":30094,"./hi.js":30094,"./hr":30316,"./hr.js":30316,"./hu":22138,"./hu.js":22138,"./hy-am":11423,"./hy-am.js":11423,"./id":29218,"./id.js":29218,"./is":90135,"./is.js":90135,"./it":90626,"./it-ch":10150,"./it-ch.js":10150,"./it.js":90626,"./ja":39183,"./ja.js":39183,"./jv":24286,"./jv.js":24286,"./ka":12105,"./ka.js":12105,"./kk":47772,"./kk.js":47772,"./km":18758,"./km.js":18758,"./kn":79282,"./kn.js":79282,"./ko":33730,"./ko.js":33730,"./ku":1408,"./ku.js":1408,"./ky":33291,"./ky.js":33291,"./lb":36841,"./lb.js":36841,"./lo":55466,"./lo.js":55466,"./lt":57010,"./lt.js":57010,"./lv":37595,"./lv.js":37595,"./me":39861,"./me.js":39861,"./mi":35493,"./mi.js":35493,"./mk":95966,"./mk.js":95966,"./ml":87341,"./ml.js":87341,"./mn":5115,"./mn.js":5115,"./mr":10370,"./mr.js":10370,"./ms":9847,"./ms-my":41237,"./ms-my.js":41237,"./ms.js":9847,"./mt":72126,"./mt.js":72126,"./my":56165,"./my.js":56165,"./nb":64924,"./nb.js":64924,"./ne":16744,"./ne.js":16744,"./nl":93901,"./nl-be":59814,"./nl-be.js":59814,"./nl.js":93901,"./nn":83877,"./nn.js":83877,"./oc-lnc":92135,"./oc-lnc.js":92135,"./pa-in":15858,"./pa-in.js":15858,"./pl":64495,"./pl.js":64495,"./pt":89520,"./pt-br":57971,"./pt-br.js":57971,"./pt.js":89520,"./ro":96459,"./ro.js":96459,"./ru":21793,"./ru.js":21793,"./sd":40950,"./sd.js":40950,"./se":10490,"./se.js":10490,"./si":90124,"./si.js":90124,"./sk":64249,"./sk.js":64249,"./sl":14985,"./sl.js":14985,"./sq":51104,"./sq.js":51104,"./sr":49131,"./sr-cyrl":79915,"./sr-cyrl.js":79915,"./sr.js":49131,"./ss":85893,"./ss.js":85893,"./sv":98760,"./sv.js":98760,"./sw":91172,"./sw.js":91172,"./ta":27333,"./ta.js":27333,"./te":23110,"./te.js":23110,"./tet":52095,"./tet.js":52095,"./tg":27321,"./tg.js":27321,"./th":9041,"./th.js":9041,"./tk":19005,"./tk.js":19005,"./tl-ph":75768,"./tl-ph.js":75768,"./tlh":89444,"./tlh.js":89444,"./tr":72397,"./tr.js":72397,"./tzl":28254,"./tzl.js":28254,"./tzm":51106,"./tzm-latn":30699,"./tzm-latn.js":30699,"./tzm.js":51106,"./ug-cn":9288,"./ug-cn.js":9288,"./uk":67691,"./uk.js":67691,"./ur":13795,"./ur.js":13795,"./uz":6791,"./uz-latn":60588,"./uz-latn.js":60588,"./uz.js":6791,"./vi":65666,"./vi.js":65666,"./x-pseudo":14378,"./x-pseudo.js":14378,"./yo":75805,"./yo.js":75805,"./zh-cn":83839,"./zh-cn.js":83839,"./zh-hk":55726,"./zh-hk.js":55726,"./zh-mo":99807,"./zh-mo.js":99807,"./zh-tw":74152,"./zh-tw.js":74152};function i(t){var e=r(t);return n(e)}function r(t){if(!n.o(o,t)){var e=new Error("Cannot find module '"+t+"'");throw e.code="MODULE_NOT_FOUND",e}return o[t]}i.keys=function(){return Object.keys(o)},i.resolve=r,t.exports=i,i.id=46700}},i={};function r(t){var e=i[t];if(void 0!==e)return e.exports;var n=i[t]={id:t,loaded:!1,exports:{}};return o[t].call(n.exports,n,n.exports,r),n.loaded=!0,n.exports}r.m=o,e=[],r.O=function(t,n,o,i){if(!n){var a=1/0;for(u=0;u<e.length;u++){n=e[u][0],o=e[u][1],i=e[u][2];for(var s=!0,l=0;l<n.length;l++)(!1&i||a>=i)&&Object.keys(r.O).every((function(t){return r.O[t](n[l])}))?n.splice(l--,1):(s=!1,i<a&&(a=i));if(s){e.splice(u--,1);var c=o();void 0!==c&&(t=c)}}return t}i=i||0;for(var u=e.length;u>0&&e[u-1][2]>i;u--)e[u]=e[u-1];e[u]=[n,o,i]},r.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return r.d(e,{a:e}),e},r.d=function(t,e){for(var n in e)r.o(e,n)&&!r.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),r.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},r.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},r.nmd=function(t){return t.paths=[],t.children||(t.children=[]),t},r.j=4577,function(){r.b=document.baseURI||self.location.href;var t={4577:0};r.O.j=function(e){return 0===t[e]};var e=function(e,n){var o,i,a=n[0],s=n[1],l=n[2],c=0;if(a.some((function(e){return 0!==t[e]}))){for(o in s)r.o(s,o)&&(r.m[o]=s[o]);if(l)var u=l(r)}for(e&&e(n);c<a.length;c++)i=a[c],r.o(t,i)&&t[i]&&t[i][0](),t[i]=0;return r.O(u)},n=self.webpackChunknextcloud=self.webpackChunknextcloud||[];n.forEach(e.bind(null,0)),n.push=e.bind(null,n.push.bind(n))}(),r.nc=void 0;var a=r.O(void 0,[7874],(function(){return r(39977)}));a=r.O(a)}(); -//# sourceMappingURL=core-login.js.map?v=dd5f4c072c48f59c21d0
\ No newline at end of file +!function(){var e,o={39977:function(e,o,i){"use strict";var r=i(20144),a=i(78595),s=i(19755),l=i.n(s),c=i(79753),u=i(25108),d={},f=[],p=i(18181),h=i(64024),m=i(25108),g={updatableNotification:null,getDefaultNotificationFunction:null,setDefault:function(t){this.getDefaultNotificationFunction=t},hide:function(t,e){p.ZP.isFunction(t)&&(e=t,t=void 0),t?(t.each((function(){l()(this)[0].toastify?l()(this)[0].toastify.hideToast():m.error("cannot hide toast because object is not set"),this===this.updatableNotification&&(this.updatableNotification=null)})),e&&e.call(),this.getDefaultNotificationFunction&&this.getDefaultNotificationFunction()):m.error("Missing argument $row in OC.Notification.hide() call, caller needs to be adjusted to only dismiss its own notification")},showHtml:function(t,e){(e=e||{}).isHTML=!0,e.timeout=e.timeout?e.timeout:h.Rl;var n=(0,h.PV)(t,e);return n.toastElement.toastify=n,l()(n.toastElement)},show:function(t,e){(e=e||{}).timeout=e.timeout?e.timeout:h.Rl;var n=(0,h.PV)(function(t){return t.toString().split("&").join("&").split("<").join("<").split(">").join(">").split('"').join(""").split("'").join("'")}(t),e);return n.toastElement.toastify=n,l()(n.toastElement)},showUpdate:function(t){return this.updatableNotification&&this.updatableNotification.hideToast(),this.updatableNotification=(0,h.PV)(t,{timeout:h.Rl}),this.updatableNotification.toastElement.toastify=this.updatableNotification,l()(this.updatableNotification.toastElement)},showTemporary:function(t,e){(e=e||{}).timeout=e.timeout||h.TN;var n=(0,h.PV)(t,e);return n.toastElement.toastify=n,l()(n.toastElement)},isHidden:function(){return!l()("#content").find(".toastify").length}},v=p.ZP.throttle((function(){g.showTemporary(t("core","Connection to server lost"))}),7e3,{trailing:!1}),y={enableDynamicSlideToggle:function(){},showAppSidebar:function(t){(t||l()("#app-sidebar")).removeClass("disappear").show(),l()("#app-content").trigger(new(l().Event)("appresized"))},hideAppSidebar:function(t){(t||l()("#app-sidebar")).hide().addClass("disappear"),l()("#app-content").trigger(new(l().Event)("appresized"))}};function w(t,e,n){"post"!==t&&"delete"!==t||!Bt.PasswordConfirmation.requiresPasswordConfirmation()?(n=n||{},l().ajax({type:t.toUpperCase(),url:(0,c.generateOcsUrl)("apps/provisioning_api/api/v1/config/apps")+e,data:n.data||{},success:n.success,error:n.error})):Bt.PasswordConfirmation.requirePasswordConfirmation(_.bind(w,this,t,e,n))}var b=window.oc_appconfig||{},P={getValue:function(t,e,n,o){!function(t,e,n,o){(o=o||{}).data={defaultValue:n},w("get","/"+t+"/"+e,o)}(t,e,n,{success:o})},setValue:function(t,e,n){!function(t,e,n,o){(o=o||{}).data={value:n},w("post","/"+t+"/"+e,o)}(t,e,n)},getApps:function(t){!function(t){w("get","",t)}({success:t})},getKeys:function(t,e){!function(t,e){w("get","/"+t,e)}(t,{success:e})},deleteKey:function(t,e){!function(t,e,n){w("delete","/"+t+"/"+e,void 0)}(t,e)}},C=i(25108),A=void 0!==window._oc_appswebroots&&window._oc_appswebroots,k=i(72316),x=i.n(k),O=i(76591),T=i(25108),j={create:"POST",update:"PROPPATCH",patch:"PROPPATCH",delete:"DELETE",read:"PROPFIND"};function E(t,e){if(p.ZP.isArray(t))return p.ZP.map(t,(function(t){return E(t,e)}));var n={href:t.href};return p.ZP.each(t.propStat,(function(t){if("HTTP/1.1 200 OK"===t.status)for(var o in t.properties){var i=o;o in e&&(i=e[o]),n[i]=t.properties[o]}})),n.id||(n.id=S(n.href)),n}function S(t){var e=t.indexOf("?");e>0&&(t=t.substr(0,e));var n,o=t.split("/");do{n=o[o.length-1],o.pop()}while(!n&&o.length>0);return n}function L(t){return t>=200&&t<=299}function N(t,e,n,o){return t.propPatch(e.url,function(t,e){var n,o={};for(n in t){var i=e[n],r=t[n];i||(T.warn('No matching DAV property for property "'+n),i=n),(p.ZP.isBoolean(r)||p.ZP.isNumber(r))&&(r=""+r),o[i]=r}return o}(n.changed,e.davProperties),o).then((function(t){L(t.status)?p.ZP.isFunction(e.success)&&e.success(n.toJSON()):p.ZP.isFunction(e.error)&&e.error(t)}))}var I=x().noConflict();Object.assign(I,{davCall:function(t,e){var n=new O.dav.Client({baseUrl:t.url,xmlNamespaces:p.ZP.extend({"DAV:":"d","http://owncloud.org/ns":"oc"},t.xmlNamespaces||{})});n.resolveUrl=function(){return t.url};var o=p.ZP.extend({"X-Requested-With":"XMLHttpRequest",requesttoken:OC.requestToken},t.headers);return"PROPFIND"===t.type?function(t,e,n,o){return t.propFind(e.url,p.ZP.values(e.davProperties)||[],e.depth,o).then((function(t){if(L(t.status)){if(p.ZP.isFunction(e.success)){var n=p.ZP.invert(e.davProperties),o=E(t.body,n);e.depth>0&&o.shift(),e.success(o)}}else p.ZP.isFunction(e.error)&&e.error(t)}))}(n,t,0,o):"PROPPATCH"===t.type?N(n,t,e,o):"MKCOL"===t.type?function(t,e,n,o){return t.request(e.type,e.url,o,null).then((function(i){L(i.status)?N(t,e,n,o):p.ZP.isFunction(e.error)&&e.error(i)}))}(n,t,e,o):function(t,e,n,o){return o["Content-Type"]="application/json",t.request(e.type,e.url,o,e.data).then((function(t){if(L(t.status)){if(p.ZP.isFunction(e.success)){if("PUT"===e.type||"POST"===e.type||"MKCOL"===e.type){var o=t.body||n.toJSON(),i=t.xhr.getResponseHeader("Content-Location");return"POST"===e.type&&i&&(o.id=S(i)),void e.success(o)}if(207===t.status){var r=p.ZP.invert(e.davProperties);e.success(E(t.body,r))}else e.success(t.body)}}else p.ZP.isFunction(e.error)&&e.error(t)}))}(n,t,e,o)},davSync:function(t){return function(e,n,o){var i={type:j[e]||e},r=n instanceof t.Collection;if("update"===e&&(n.hasInnerCollection?i.type="MKCOL":(n.usePUT||n.collection&&n.collection.usePUT)&&(i.type="PUT")),o.url||(i.url=p.ZP.result(n,"url")||function(){throw new Error('A "url" property or function must be specified')}()),null!=o.data||!n||"create"!==e&&"update"!==e&&"patch"!==e||(i.data=JSON.stringify(o.attrs||n.toJSON(o))),"PROPFIND"!==i.type&&(i.processData=!1),"PROPFIND"===i.type||"PROPPATCH"===i.type){var a=n.davProperties;!a&&n.model&&(a=n.model.prototype.davProperties),a&&(p.ZP.isFunction(a)?i.davProperties=a.call(n):i.davProperties=a),i.davProperties=p.ZP.extend(i.davProperties||{},o.davProperties),p.ZP.isUndefined(o.depth)&&(o.depth=r?1:0)}var s=o.error;o.error=function(t,e,n){o.textStatus=e,o.errorThrown=n,s&&s.call(o.context,t,e,n)};var l=o.xhr=t.davCall(p.ZP.extend(i,o),n);return n.trigger("request",n,l,o),l}}(I)});var U=I,$=i(65358),R=window._oc_config||{},F=i(25108),M=k.Model.extend({defaults:{fullName:"",lastMessage:"",actions:[],hasOneAction:!1,hasTwoActions:!1,hasManyActions:!1},initialize:function(){0===this.get("actions").length?this.set("hasOneAction",!0):1===this.get("actions").length?(this.set("hasTwoActions",!0),this.set("secondAction",this.get("actions")[0])):this.set("hasManyActions",!0);var e=this.get("fullName");this.get("avatar")&&e&&this.set("avatarLabel",t("core","Avatar of {fullName}",{fullName:e}))}}),B=k.Collection.extend({model:M}),z=k.View.extend({_collection:void 0,_subViews:[],initialize:function(t){this._collection=t.collection},render:function(){var t=this;return t.$el.html(""),t._subViews=[],t._collection.forEach((function(e){var n=new D({model:e});n.render(),t.$el.append(n.$el),n.on("toggle:actionmenu",t._onChildActionMenuToggle,t),t._subViews.push(n)})),t},_onChildActionMenuToggle:function(t){this._subViews.forEach((function(e){e.trigger("parent:toggle:actionmenu",t)}))}}),D=k.View.extend({className:"contact",_template:void 0,_model:void 0,_actionMenuShown:!1,events:{"click .icon-more":"_onToggleActionsMenu"},contactTemplate:i(10944),template:function(t){return this.contactTemplate(t)},initialize:function(t){this._model=t.model,this.on("parent:toggle:actionmenu",this._onOtherActionMenuOpened,this)},render:function(){return this.$el.html(this.template({contact:this._model.toJSON()})),this.delegateEvents(),this.$("div.avatar").imageplaceholder(this._model.get("fullName")),this.$(".top-action").tooltip({placement:"left"}),this.$(".second-action").tooltip({placement:"left"}),this},_onToggleActionsMenu:function(){this._actionMenuShown=!this._actionMenuShown,this._actionMenuShown?this.$(".menu").show():this.$(".menu").hide(),this.trigger("toggle:actionmenu",this.$el)},_onOtherActionMenuOpened:function(t){this.$el.is(t)||(this._actionMenuShown=!1,this.$(".menu").hide())}}),Z=k.View.extend({_loadingTemplate:void 0,_errorTemplate:void 0,_contentTemplate:void 0,_contactsTemplate:void 0,_contacts:void 0,_searchTerm:"",events:{"input #contactsmenu-search":"_onSearch"},templates:{loading:i(95386),error:i(20421),menu:i(66115),list:i(34083)},_onSearch:p.ZP.debounce((function(t){var e=this.$("#contactsmenu-search").val();e!==this._searchTerm&&(this.trigger("search",this.$("#contactsmenu-search").val()),this._searchTerm=e)}),700),loadingTemplate:function(t){return this.templates.loading(t)},errorTemplate:function(e){return this.templates.error(p.ZP.extend({couldNotLoadText:t("core","Could not load your contacts")},e))},contentTemplate:function(e){return this.templates.menu(p.ZP.extend({searchContactsText:t("core","Search contacts …")},e))},contactsTemplate:function(e){return this.templates.list(p.ZP.extend({noContactsFoundText:t("core","No contacts found"),showAllContactsText:t("core","Show all contacts …"),contactsAppMgmtText:t("core","Install the Contacts app")},e))},initialize:function(t){this.options=t},showLoading:function(t){this.render(),this._contacts=void 0,this.$(".content").html(this.loadingTemplate({loadingText:t}))},showError:function(){this.render(),this._contacts=void 0,this.$(".content").html(this.errorTemplate())},showContacts:function(t,e){this._contacts=t.contacts,this.render({contacts:t.contacts});var n=new z({collection:t.contacts});n.render(),this.$(".content").html(this.contactsTemplate({contacts:t.contacts,searchTerm:e,contactsAppEnabled:t.contactsAppEnabled,contactsAppURL:Bt.generateUrl("/apps/contacts"),canInstallApp:Bt.isUserAdmin(),contactsAppMgmtURL:Bt.generateUrl("/settings/apps/social/contacts")})),this.$("#contactsmenu-contacts").html(n.$el)},render:function(t){var e=this.$("#contactsmenu-search").val();return this.$el.html(this.contentTemplate(t)),this.$("#contactsmenu-search").val(e),this.$("#contactsmenu-search").focus(),this}}),H=function(t){this.initialize(t)};H.prototype={$el:void 0,_view:void 0,_contactsPromise:void 0,initialize:function(t){this.$el=l()(t.el),this._view=new Z({el:this.$el}),this._view.on("search",(function(t){this.loadContacts(t)}),this)},_getContacts:function(t){var e=Bt.generateUrl("/contactsmenu/contacts");return Promise.resolve(l().ajax(e,{method:"POST",data:{filter:t}}))},loadContacts:function(e){var n=this;return n._contactsPromise||(n._contactsPromise=n._getContacts(e)),p.ZP.isUndefined(e)||""===e?n._view.showLoading(t("core","Loading your contacts …")):n._view.showLoading(t("core","Looking for {term} …",{term:e})),n._contactsPromise.then((function(t){t.contacts=new B(t.contacts),n._view.showContacts(t,e)}),(function(t){n._view.showError(),F.error("There was an error loading your contacts",t)})).then((function(){delete n._contactsPromise})).catch(F.error.bind(this))}};var Y=H,q=document.getElementsByTagName("head")[0].getAttribute("data-user"),K=document.getElementsByTagName("head")[0].getAttribute("data-user-displayname"),V=void 0!==q&&q,G=i(25108);function W(t){return W="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},W(t)}function J(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,(void 0,i=function(t,e){if("object"!==W(t)||null===t)return t;var n=t[Symbol.toPrimitive];if(void 0!==n){var o=n.call(t,e);if("object"!==W(o))return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(o.key,"string"),"symbol"===W(i)?i:String(i)),o)}var i}function Q(t,e,n){return e&&J(t.prototype,e),n&&J(t,n),Object.defineProperty(t,"prototype",{writable:!1}),t}var X={Search:Q((function t(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),G.warn("OCA.Search is deprecated. Please use the unified search API instead")}))},tt=function(t){return"click"===t.type||"keydown"===t.type&&"Enter"===t.key},et=i(25108);function nt(t,e,n,o,i,r,a){try{var s=t[r](a),l=s.value}catch(t){return void n(t)}s.done?e(l):Promise.resolve(l).then(o,i)}function ot(t){return function(){var e=this,n=arguments;return new Promise((function(o,i){var r=t.apply(e,n);function a(t){nt(r,o,i,a,s,"next",t)}function s(t){nt(r,o,i,a,s,"throw",t)}a(void 0)}))}}function it(t){return it="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},it(t)}var rt,at,st,lt,ct={YES_NO_BUTTONS:70,OK_BUTTONS:71,FILEPICKER_TYPE_CHOOSE:1,FILEPICKER_TYPE_MOVE:2,FILEPICKER_TYPE_COPY:3,FILEPICKER_TYPE_COPY_MOVE:4,FILEPICKER_TYPE_CUSTOM:5,dialogsCounter:0,alert:function(t,e,n,o){this.message(t,e,"alert",ct.OK_BUTTON,n,o)},info:function(t,e,n,o){this.message(t,e,"info",ct.OK_BUTTON,n,o)},confirm:function(t,e,n,o){return this.message(t,e,"notice",ct.YES_NO_BUTTONS,n,o)},confirmDestructive:function(t,e,n,o,i){return this.message(t,e,"none",n,o,void 0===i||i)},confirmHtml:function(t,e,n,o){return this.message(t,e,"notice",ct.YES_NO_BUTTONS,n,o,!0)},prompt:function(e,n,o,i,r,a){return l().when(this._getMessageTemplate()).then((function(s){var c="oc-dialog-"+ct.dialogsCounter+"-content",u="#"+c,d=s.octemplate({dialog_name:c,title:n,message:e,type:"notice"}),f=l()("<input/>");f.attr("type",a?"password":"text").attr("id",c+"-input").attr("placeholder",r);var h=l()("<label/>").attr("for",c+"-input").text(r+": ");d.append(h),d.append(f),void 0===i&&(i=!1),l()("body").append(d),void 0!==o&&(o=p.ZP.once(o));var m=[{text:t("core","No"),click:function(){void 0!==o&&o(!1,f.val()),l()(u).ocdialog("close")}},{text:t("core","Yes"),click:function(){void 0!==o&&o(!0,f.val()),l()(u).ocdialog("close")},defaultButton:!0}];l()(u).ocdialog({closeOnEscape:!0,modal:i,buttons:m,close:function(){void 0!==o&&o(!1,f.val())}}),f.focus(),ct.dialogsCounter++}))},filepicker:function(e,n,o,i,r,a,s,c){var u=this;if(this.filepicker.sortField="name",this.filepicker.sortOrder="asc",!this.filepicker.loading){void 0===a&&(a=this.FILEPICKER_TYPE_CHOOSE);var d=t("core","No files in here"),f=t("files","New folder");a!==this.FILEPICKER_TYPE_COPY&&a!==this.FILEPICKER_TYPE_MOVE&&a!==this.FILEPICKER_TYPE_COPY_MOVE||(d=t("core","No more subfolders in here")),this.filepicker.loading=!0,this.filepicker.filesClient=X.Sharing&&X.Sharing.PublicApp&&X.Sharing.PublicApp.fileList?X.Sharing.PublicApp.fileList.filesClient:Bt.Files.getClient(),this.filelist=null,s=s||"",c=Object.assign({allowDirectoryChooser:!1},c),l().when(this._getFilePickerTemplate()).then((function(p){var h,m;u.filepicker.loading=!1,u.$filePicker&&u.$filePicker.ocdialog("close"),null==i&&(i=[]),"string"==typeof i&&(i=[i]),u.$filePicker=p.octemplate({dialog_name:"oc-dialog-filepicker-content",title:e,emptytext:d,newtext:f,nameCol:t("core","Name"),sizeCol:t("core","Size"),modifiedCol:t("core","Modified")}).data("path",s).data("multiselect",o).data("mimetype",i).data("allowDirectoryChooser",c.allowDirectoryChooser),"function"==typeof c.filter&&u.$filePicker.data("filter",c.filter),void 0===r&&(r=!1),void 0===o&&(o=!1),l()(null!==(h=null===(m=c)||void 0===m?void 0:m.target)&&void 0!==h?h:"body").prepend(u.$filePicker),u.$showGridView=l()("button#picker-showgridview"),u.$showGridView.on("click keydown",(function(t){tt(t)&&u._onGridviewChange()})),u._getGridSettings();var g=u.$filePicker.find(".actions.creatable .button-add");a!==u.FILEPICKER_TYPE_CHOOSE||c.allowDirectoryChooser||u.$filePicker.find(".actions.creatable").hide(),g.on("focus",(function(){u.$filePicker.ocdialog("setEnterCallback",(function(t){t.stopImmediatePropagation(),t.preventDefault(),g.click()}))})),g.on("blur",(function(){u.$filePicker.ocdialog("unsetEnterCallback")})),Bt.registerMenu(g,u.$filePicker.find(".menu"),(function(){y.tooltip("hide"),y.focus(),u.$filePicker.ocdialog("setEnterCallback",(function(t){t.stopImmediatePropagation(),t.preventDefault(),u.$filePicker.submit()}));var t=y.val(),e=t.lastIndexOf(".");-1===e&&(e=t.length),y.selectRange(0,e)}));var v=u.$filePicker.find(".filenameform"),y=v.find("input[type='text']"),w=v.find("input[type='submit']");y.on("keydown",(function(t){tt(t)&&(t.stopImmediatePropagation(),t.preventDefault(),v.submit())})),w.on("click",(function(t){t.stopImmediatePropagation(),t.preventDefault(),v.submit()}));v.on("submit",(function(e){if(e.stopPropagation(),e.preventDefault(),function(){var e=y.val();try{if(function(e){var n=e.trim();if("."===n||".."===n)throw t("files",'"{name}" is an invalid file name.',{name:e});if(0===n.length)throw t("files","File name cannot be empty.");if(-1!==n.indexOf("/"))throw t("files",'"/" is not allowed inside a file name.');if(n.match(Bt.config.blacklist_files_regex))throw t("files",'"{name}" is not an allowed filetype',{name:e});return!0}(e)){if(u.filelist.find((function(t){return t.name===this}),e))throw t("files","{newName} already exists",{newName:e},void 0,{escape:!1});return!0}}catch(t){y.attr("title",t),y.tooltip({placement:"right",trigger:"manual",container:".newFolderMenu"}),y.tooltip("_fixTitle"),y.tooltip("show"),y.addClass("error")}return!1}()){var n=y.val();u.filepicker.filesClient.createDirectory(u.$filePicker.data("path")+"/"+n).always((function(t){u._fillFilePicker(u.$filePicker.data("path")+"/"+n,a)})),Bt.hideMenus(),u.$filePicker.ocdialog("unsetEnterCallback"),u.$filePicker.click(),y.val(f)}})),y.on("input",(function(t){y.tooltip("hide")})),u.$filePicker.ready((function(){u.$fileListHeader=u.$filePicker.find(".filelist thead tr"),u.$filelist=u.$filePicker.find(".filelist tbody"),u.$filelistContainer=u.$filePicker.find(".filelist-container"),u.$dirTree=u.$filePicker.find(".dirtree"),u.$dirTree.on("click keydown","div:not(:last-child)",u,(function(t){tt(t)&&u._handleTreeListSelect(t,a)})),u.$filelist.on("click keydown","tr",(function(t){tt(t)&&u._handlePickerClick(t,l()(this),a)})),u.$fileListHeader.on("click keydown","a",(function(t){if(tt(t)){var e=u.$filePicker.data("path");u.filepicker.sortField=l()(t.currentTarget).data("sort"),u.filepicker.sortOrder="asc"===u.filepicker.sortOrder?"desc":"asc",u._fillFilePicker(e,a)}})),u._fillFilePicker(s,a)}));var b=function(t){if(void 0!==n){var e;if(!0===o)e=[],u.$filelist.find("tr.filepicker_element_selected").each((function(t,n){e.push(u.$filePicker.data("path")+"/"+l()(n).data("entryname"))}));else{e=u.$filePicker.data("path");var i=u.$filelist.find("tr.filepicker_element_selected").data("entryname");i&&(e+="/"+i)}n(e,t),u.$filePicker.ocdialog("close")}},P=[];a===ct.FILEPICKER_TYPE_CHOOSE?P.push({text:t("core","Choose"),click:function(){b(ct.FILEPICKER_TYPE_CHOOSE)},defaultButton:!0}):a===ct.FILEPICKER_TYPE_CUSTOM?c.buttons.forEach((function(t){P.push({text:t.text,click:function(){b(t.type)},defaultButton:t.defaultButton})})):(a!==ct.FILEPICKER_TYPE_COPY&&a!==ct.FILEPICKER_TYPE_COPY_MOVE||P.push({text:t("core","Copy"),click:function(){b(ct.FILEPICKER_TYPE_COPY)},defaultButton:!1}),a!==ct.FILEPICKER_TYPE_MOVE&&a!==ct.FILEPICKER_TYPE_COPY_MOVE||P.push({text:t("core","Move"),click:function(){b(ct.FILEPICKER_TYPE_MOVE)},defaultButton:!0})),u.$filePicker.ocdialog({closeOnEscape:!0,width:600,height:500,modal:r,buttons:P,style:{buttons:"aside"},close:function(){try{l()(this).ocdialog("destroy").remove()}catch(t){}u.$filePicker=null}});var C=u.$filePicker.closest(".oc-dialog").find(".primary");-1!==u.$filePicker.data("mimetype").indexOf("httpd/unix-directory")||u.$filePicker.data("allowDirectoryChooser")?C.prop("disabled",!1):C.prop("disabled",!0)})).fail((function(e,n){u.filepicker.loading=!1,0!==e&&alert(t("core","Error loading file picker template: {error}",{error:n}))}))}},message:function(e,n,o,i,r,a,s){return l().when(this._getMessageTemplate()).then((function(c){var u="oc-dialog-"+ct.dialogsCounter+"-content",d="#"+u,f=c.octemplate({dialog_name:u,title:n,message:e,type:o},s?{escapeFunction:""}:{});void 0===a&&(a=!1),l()("body").append(f);var p=[];switch(i){case ct.YES_NO_BUTTONS:p=[{text:t("core","No"),click:function(){void 0!==r&&r(!1),l()(d).ocdialog("close")}},{text:t("core","Yes"),click:function(){void 0!==r&&r(!0),l()(d).ocdialog("close")},defaultButton:!0}];break;case ct.OK_BUTTON:p[0]={text:t("core","OK"),click:function(){l()(d).ocdialog("close"),void 0!==r&&r()},defaultButton:!0};break;default:"object"===it(i)&&i.type===ct.YES_NO_BUTTONS&&(p=[{text:i.cancel||t("core","No"),click:function(){void 0!==r&&r(!1),l()(d).ocdialog("close")}},{text:i.confirm||t("core","Yes"),click:function(){void 0!==r&&r(!0),l()(d).ocdialog("close")},defaultButton:!0,classes:i.confirmClasses}])}l()(d).ocdialog({closeOnEscape:!0,closeCallback:function(){r&&r(!1)},modal:a,buttons:p}),ct.dialogsCounter++})).fail((function(o,i){0===o?alert(n+": "+e):alert(t("core","Error loading message template: {error}",{error:i}))}))},_fileexistsshown:!1,fileexists:function(e,o,i,r){var a=this,s=new(l().Deferred),c=function(t,e,n,o,i){o=Math.round(o),i=Math.round(i);for(var r=t.getContext("2d").getImageData(0,0,e,n),a=t.getContext("2d").getImageData(0,0,o,i),s=r.data,l=a.data,c=e/o,u=n/i,d=Math.ceil(c/2),f=Math.ceil(u/2),p=0;p<i;p++)for(var h=0;h<o;h++){for(var m=4*(h+p*o),g=0,v=0,y=0,w=0,b=0,P=0,C=0,_=(p+.5)*u,A=Math.floor(p*u);A<(p+1)*u;A++)for(var k=Math.abs(_-(A+.5))/f,x=(h+.5)*c,O=k*k,T=Math.floor(h*c);T<(h+1)*c;T++){var j=Math.abs(x-(T+.5))/d,E=Math.sqrt(O+j*j);E>=-1&&E<=1&&(g=2*E*E*E-3*E*E+1)>0&&(C+=g*s[3+(j=4*(T+A*e))],y+=g,s[j+3]<255&&(g=g*s[j+3]/250),w+=g*s[j],b+=g*s[j+1],P+=g*s[j+2],v+=g)}l[m]=w/v,l[m+1]=b/v,l[m+2]=P/v,l[m+3]=C/y}t.getContext("2d").clearRect(0,0,Math.max(e,o),Math.max(n,i)),t.width=o,t.height=i,t.getContext("2d").putImageData(a,0,0)},u=function(n,o,i){var r=n.find(".template").clone().removeClass("template").addClass("conflict"),a=r.find(".original"),s=r.find(".replacement");r.data("data",e),r.find(".filename").text(o.name),a.find(".size").text(Bt.Util.humanFileSize(o.size)),a.find(".mtime").text(Bt.Util.formatDate(o.mtime)),i.size&&i.lastModified&&(s.find(".size").text(Bt.Util.humanFileSize(i.size)),s.find(".mtime").text(Bt.Util.formatDate(i.lastModified)));var u=o.directory+"/"+o.name,d={file:u,x:96,y:96,c:o.etag,forceIcon:0},f=Files.generatePreviewUrl(d);f=f.replace(/'/g,"%27"),a.find(".icon").css({"background-image":"url('"+f+"')"}),function(t){var e=new(l().Deferred),n=t.type&&t.type.split("/").shift();if(window.FileReader&&"image"===n){var o=new FileReader;o.onload=function(t){var n=new Blob([t.target.result]);window.URL=window.URL||window.webkitURL;var o=window.URL.createObjectURL(n),i=new Image;i.src=o,i.onload=function(){var t,n,o,r,a,s,l,u=(t=i,a=document.createElement("canvas"),s=t.width,l=t.height,s>l?(o=0,n=(s-l)/2):(o=(l-s)/2,n=0),r=Math.min(s,l),a.width=r,a.height=r,a.getContext("2d").drawImage(t,n,o,r,r,0,0,r,r),c(a,r,r,96,96),a.toDataURL("image/png",.7));e.resolve(u)}},o.readAsArrayBuffer(t)}else e.reject();return e}(i).then((function(t){s.find(".icon").css("background-image","url("+t+")")}),(function(){u=Bt.MimeType.getIconUrl(i.type),s.find(".icon").css("background-image","url("+u+")")}));var p=n.find(".conflict").length;a.find("input:checkbox").attr("id","checkbox_original_"+p),s.find("input:checkbox").attr("id","checkbox_replacement_"+p),n.append(r),i.lastModified>o.mtime?s.find(".mtime").css("font-weight","bold"):i.lastModified<o.mtime&&a.find(".mtime").css("font-weight","bold"),i.size&&i.size>o.size?s.find(".size").css("font-weight","bold"):i.size&&i.size<o.size&&a.find(".size").css("font-weight","bold"),"readonly"===o.status&&(a.addClass("readonly").find('input[type="checkbox"]').prop("checked",!0).prop("disabled",!0),a.find(".message").text(t("core","read-only")))},d="oc-dialog-fileexists-content",f="#"+d;if(this._fileexistsshown){var p=l()(f+" .conflicts");u(p,o,i);var h=l()(f+" .conflict").length,m=n("core","{count} file conflict","{count} file conflicts",h,{count:h});l()(f).parent().children(".oc-dialog-title").text(m),l()(window).trigger("resize"),s.resolve()}else this._fileexistsshown=!0,l().when(this._getFileExistsTemplate()).then((function(n){var c=t("core","One file conflict"),p=n.octemplate({dialog_name:d,title:c,type:"fileexists",allnewfiles:t("core","New Files"),allexistingfiles:t("core","Already existing files"),why:t("core","Which files do you want to keep?"),what:t("core","If you select both versions, the copied file will have a number added to its name.")});if(l()("body").append(p),o&&i){var h=p.find(".conflicts");u(h,o,i)}var m=[{text:t("core","Cancel"),classes:"cancel",click:function(){void 0!==r.onCancel&&r.onCancel(e),l()(f).ocdialog("close")}},{text:t("core","Continue"),classes:"continue",click:function(){void 0!==r.onContinue&&r.onContinue(l()(f+" .conflict")),l()(f).ocdialog("close")}}];l()(f).ocdialog({width:500,closeOnEscape:!0,modal:!0,buttons:m,closeButton:null,close:function(){a._fileexistsshown=!1;try{l()(this).ocdialog("destroy").remove()}catch(t){}}}),l()(f).css("height","auto");var g=p.closest(".oc-dialog").find("button.continue");function v(){var t=p.find(".conflicts .checkbox:checked").length;g.prop("disabled",0===t)}g.prop("disabled",!0),l()(f).find(".allnewfiles").on("click",(function(){l()(f).find('.conflict .replacement input[type="checkbox"]').prop("checked",l()(this).prop("checked"))})),l()(f).find(".allexistingfiles").on("click",(function(){l()(f).find('.conflict .original:not(.readonly) input[type="checkbox"]').prop("checked",l()(this).prop("checked"))})),l()(f).find(".conflicts").on("click",".replacement,.original:not(.readonly)",(function(){var t=l()(this).find('input[type="checkbox"]');t.prop("checked",!t.prop("checked"))})),l()(f).find(".conflicts").on("click",'.replacement input[type="checkbox"],.original:not(.readonly) input[type="checkbox"]',(function(){var t=l()(this);t.prop("checked",!t.prop("checked"))})),l()(f).on("click",".replacement,.allnewfiles",(function(){var e=l()(f).find('.conflict .replacement input[type="checkbox"]:checked').length;e===l()(f+" .conflict").length?(l()(f).find(".allnewfiles").prop("checked",!0),l()(f).find(".allnewfiles + .count").text(t("core","(all selected)"))):e>0?(l()(f).find(".allnewfiles").prop("checked",!1),l()(f).find(".allnewfiles + .count").text(t("core","({count} selected)",{count:e}))):(l()(f).find(".allnewfiles").prop("checked",!1),l()(f).find(".allnewfiles + .count").text("")),v()})),l()(f).on("click",".original,.allexistingfiles",(function(){var e=l()(f).find('.conflict .original input[type="checkbox"]:checked').length;e===l()(f+" .conflict").length?(l()(f).find(".allexistingfiles").prop("checked",!0),l()(f).find(".allexistingfiles + .count").text(t("core","(all selected)"))):e>0?(l()(f).find(".allexistingfiles").prop("checked",!1),l()(f).find(".allexistingfiles + .count").text(t("core","({count} selected)",{count:e}))):(l()(f).find(".allexistingfiles").prop("checked",!1),l()(f).find(".allexistingfiles + .count").text("")),v()})),s.resolve()})).fail((function(){s.reject(),alert(t("core","Error loading file exists template"))}));return s.promise()},_getGridSettings:function(){var e=this;l().get(Bt.generateUrl("/apps/files/api/v1/showgridview"),(function(n){e.$showGridView.removeClass("icon-toggle-filelist icon-toggle-pictures").addClass(n.gridview?"icon-toggle-filelist":"icon-toggle-pictures"),e.$showGridView.attr("aria-label",n.gridview?t("files","Show list view"):t("files","Show grid view")),l()(".list-container").toggleClass("view-grid",n.gridview)}))},_onGridviewChange:function(){var e=this.$showGridView.hasClass("icon-toggle-filelist");Bt.currentUser&&l().post(Bt.generateUrl("/apps/files/api/v1/showgridview"),{show:!e}),this.$showGridView.removeClass("icon-toggle-filelist icon-toggle-pictures").addClass(e?"icon-toggle-pictures":"icon-toggle-filelist"),this.$showGridView.attr("aria-label",e?t("files","Show grid view"):t("files","Show list view")),this.$filePicker.find(".list-container").toggleClass("view-grid",!e)},_getFilePickerTemplate:function(){var t=l().Deferred();if(this.$filePickerTemplate)t.resolve(this.$filePickerTemplate);else{var e=this;l().get(Bt.filePath("core","templates","filepicker.html"),(function(n){e.$filePickerTemplate=l()(n),e.$listTmpl=e.$filePickerTemplate.find(".filelist tbody tr:first-child").detach(),t.resolve(e.$filePickerTemplate)})).fail((function(e,n,o){t.reject(e.status,o)}))}return t.promise()},_getMessageTemplate:function(){var t=l().Deferred();if(this.$messageTemplate)t.resolve(this.$messageTemplate);else{var e=this;l().get(Bt.filePath("core","templates","message.html"),(function(n){e.$messageTemplate=l()(n),t.resolve(e.$messageTemplate)})).fail((function(e,n,o){t.reject(e.status,o)}))}return t.promise()},_getFileExistsTemplate:function(){var t=l().Deferred();if(this.$fileexistsTemplate)t.resolve(this.$fileexistsTemplate);else{var e=this;l().get(Bt.filePath("files","templates","fileexists.html"),(function(n){e.$fileexistsTemplate=l()(n),t.resolve(e.$fileexistsTemplate)})).fail((function(){t.reject()}))}return t.promise()},_fillFilePicker:(rt=ot(regeneratorRuntime.mark((function e(n,o){var i,r,a,s,c,u,d,f;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return i=this,this.$filelist.empty(),this.$filePicker.find(".emptycontent").hide(),this.$filelistContainer.addClass("icon-loading"),this.$filePicker.data("path",n),r=this.$filePicker.data("mimetype"),a=this.$filePicker.data("filter"),"string"==typeof r&&(r=[r]),i.$fileListHeader.find(".sort-indicator").addClass("hidden").removeClass("icon-triangle-n").removeClass("icon-triangle-s"),i.$fileListHeader.find("[data-sort="+i.filepicker.sortField+"] .sort-indicator").removeClass("hidden"),"asc"===i.filepicker.sortOrder?i.$fileListHeader.find("[data-sort="+i.filepicker.sortField+"] .sort-indicator").addClass("icon-triangle-n"):i.$fileListHeader.find("[data-sort="+i.filepicker.sortField+"] .sort-indicator").addClass("icon-triangle-s"),s=function(){var t=ot(regeneratorRuntime.mark((function t(e){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",i.filepicker.filesClient.getFolderContents(e).then((function(t,e){return e})));case 1:case"end":return t.stop()}}),t)})));return function(e){return t.apply(this,arguments)}}(),e.prev=12,e.next=15,s(n);case 15:c=e.sent,e.next=26;break;case 18:return e.prev=18,e.t0=e.catch(12),et.error("Requested path does not exists, falling back to root"),e.next=23,s("/");case 23:c=e.sent,this.$filePicker.data("path","/"),this._changeButtonsText(o,"");case 26:i.filelist=c,r&&r.length>0&&-1===r.indexOf("*")&&(c=c.filter((function(t){return"dir"===t.type||-1!==r.indexOf(t.mimetype)}))),a&&(c=c.filter(a)),null===(u=document.getElementById("showHiddenFiles"))||"1"===u.value||(c=c.filter((function(t){return!t.name.startsWith(".")}))),f=(d={name:function(t,e){return"dir"===t.type&&"dir"!==e.type?-1:"dir"!==t.type&&"dir"===e.type?1:Bt.Util.naturalSortCompare(t.name,e.name)},size:function(t,e){return t.size-e.size},mtime:function(t,e){return t.mtime-e.mtime}})[i.filepicker.sortField]||d.name,c=c.sort((function(t,e){var n=function(t){return t.tags&&t.tags.indexOf(Bt.TAG_FAVORITE)>=0};return n(t)&&!n(e)?-1:!n(t)&&n(e)?1:"asc"===i.filepicker.sortOrder?f(t,e):-f(t,e)})),i._fillSlug(),0===c.length?(i.$filePicker.find(".emptycontent").show(),i.$fileListHeader.hide()):(i.$filePicker.find(".emptycontent").hide(),i.$fileListHeader.show()),i.$filelist.empty(),l().each(c,(function(e,o){var r,a;if(o.isEncrypted&&"httpd/unix-directory"===o.mimetype?o.icon=Bt.MimeType.getIconUrl("dir-encrypted"):o.icon=Bt.MimeType.getIconUrl(o.mimetype),void 0!==o.size&&o.size>=0?(r=Bt.Util.humanFileSize(parseInt(o.size,10),!0),a=Math.round(160-Math.pow(o.size/1048576,2))):(r=t("files","Pending"),a=80),o.name.length>=10)var s=Math.min(Math.floor(o.name.length/2),10),c=o.name.substr(0,o.name.length-s),u=o.name.substr(o.name.length-s);else c=o.name,u="";var d=i.$listTmpl.octemplate({type:o.type,dir:n,filename:o.name,filename1:c,filename2:u,date:Bt.Util.relativeModifiedDate(o.mtime),size:r,sizeColor:a,icon:o.icon});if("file"===o.type){var f={file:n+"/"+o.name,x:100,y:100},p=new Image,h=Bt.generateUrl("/core/preview.png?")+l().param(f);p.onload=function(){p.width>5&&d.find("td.filename").attr("style","background-image:url("+h+")")},p.src=h}i.$filelist.append(d)})),i.$filelistContainer.removeClass("icon-loading");case 40:case"end":return e.stop()}}),e,this,[[12,18]])}))),function(t,e){return rt.apply(this,arguments)}),_fillSlug:function(){var e=this.$dirTree.find(".actions.creatable").detach();this.$dirTree.empty();var n=this;n.$dirTree.append(e);var o=this.$filePicker.data("path"),i=l()('<div data-dir="{dir}" tabindex="0"><a>{name}</a></div>').addClass("crumb");if(o){var r=o.split("/");l().each(r,(function(t,e){if(""===(e=r.pop()))return!1;n.$dirTree.prepend(i.octemplate({dir:r.join("/")+"/"+e,name:e}))}))}i.octemplate({dir:"",name:t("core","Home")},{escapeFunction:null}).prependTo(this.$dirTree)},_handleTreeListSelect:function(t,e){var n=t.data,o=l()(t.target).closest(".crumb").data("dir");n._fillFilePicker(o,e);var i=t.target.closest(".oc-dialog"),r=l()(".primary",i);this._changeButtonsText(e,o.split(/[/]+/).pop()),-1!==this.$filePicker.data("mimetype").indexOf("httpd/unix-directory")||this.$filePicker.data("allowDirectoryChooser")?r.prop("disabled",!1):r.prop("disabled",!0)},_handlePickerClick:function(t,e,n){var o=this.$filePicker.closest(".oc-dialog").find(".primary");"file"===e.data("type")?(!0===this.$filePicker.data("multiselect")&&t.ctrlKey||this.$filelist.find(".filepicker_element_selected").removeClass("filepicker_element_selected"),e.toggleClass("filepicker_element_selected"),o.prop("disabled",!1)):"dir"===e.data("type")&&(this._fillFilePicker(this.$filePicker.data("path")+"/"+e.data("entryname"),n),this._changeButtonsText(n,e.data("entryname")),-1!==this.$filePicker.data("mimetype").indexOf("httpd/unix-directory")||this.$filePicker.data("allowDirectoryChooser")?o.prop("disabled",!1):o.prop("disabled",!0))},_changeButtonsText:function(e,n){var o=""===n?t("core","Copy"):t("core","Copy to {folder}",{folder:n}),i=""===n?t("core","Move"):t("core","Move to {folder}",{folder:n}),r=l()(".oc-dialog-buttonrow button");switch(e){case this.FILEPICKER_TYPE_CHOOSE:case this.FILEPICKER_TYPE_CUSTOM:break;case this.FILEPICKER_TYPE_COPY:r.text(o);break;case this.FILEPICKER_TYPE_MOVE:r.text(i);break;case this.FILEPICKER_TYPE_COPY_MOVE:r.eq(0).text(o),r.eq(1).text(i)}}},ut=ct,dt=(at=document,st=a.j8,lt=at.getElementsByTagName("head")[0].getAttribute("data-requesttoken"),{getToken:function(){return lt},setToken:function(t){st("csrf-token-update",{token:lt=t})}}).getToken,ft=function t(e,n){var o,i,r="";if(this.typelessListeners=[],this.closed=!1,this.listeners={},n)for(o in n)r+=o+"="+encodeURIComponent(n[o])+"&";if(r+="requesttoken="+encodeURIComponent(dt()),this.useFallBack||"undefined"==typeof EventSource){var a="oc_eventsource_iframe_"+t.iframeCount;t.fallBackSources[t.iframeCount]=this,this.iframe=l()("<iframe></iframe>"),this.iframe.attr("id",a),this.iframe.hide(),i="&",-1===e.indexOf("?")&&(i="?"),this.iframe.attr("src",e+i+"fallback=true&fallback_id="+t.iframeCount+"&"+r),l()("body").append(this.iframe),this.useFallBack=!0,t.iframeCount++}else i="&",-1===e.indexOf("?")&&(i="?"),this.source=new EventSource(e+i+r),this.source.onmessage=function(t){for(var e=0;e<this.typelessListeners.length;e++)this.typelessListeners[e](JSON.parse(t.data))}.bind(this);this.listen("__internal__",function(t){"close"===t&&this.close()}.bind(this))};ft.fallBackSources=[],ft.iframeCount=0,ft.fallBackCallBack=function(t,e,n){ft.fallBackSources[t].fallBackCallBack(e,n)},ft.prototype={typelessListeners:[],iframe:null,listeners:{},useFallBack:!1,fallBackCallBack:function(t,e){var n;if(!this.closed)if(t){if(void 0!==this.listeners.done)for(n=0;n<this.listeners[t].length;n++)this.listeners[t][n](e)}else for(n=0;n<this.typelessListeners.length;n++)this.typelessListeners[n](e)},lastLength:0,listen:function(t,e){e&&e.call&&(t?this.useFallBack?(this.listeners[t]||(this.listeners[t]=[]),this.listeners[t].push(e)):this.source.addEventListener(t,(function(t){void 0!==t.data?e(JSON.parse(t.data)):e("")}),!1):this.typelessListeners.push(e))},close:function(){this.closed=!0,void 0!==this.source&&this.source.close()}};var pt=ft,ht=i(42515),mt=i(25108),gt=null,vt=null,yt=function(t){if(gt){var e=gt;gt.trigger(new(l().Event)("beforeHide")),gt.slideUp(50,(function(){e.trigger(new(l().Event)("afterHide")),t&&t.apply(this,arguments)}))}l()(".menutoggle").attr("aria-expanded",!1),vt&&vt.attr("aria-expanded",!1),l()(".openedMenu").removeClass("openedMenu"),gt=null,vt=null},wt=!!window._oc_isadmin,bt=i(86834),Pt=i.n(bt),Ct=i(31352),_t={load:Ct.XJ,register:Ct.z2,_unregister:Ct.ET,translate:Ct.Iu,translatePlural:Ct.uN};Pt().registerHelper("t",(function(t,e){return(0,Ct.Iu)(t,e)}));var At={startSaving:function(e){this.startAction(e,t("core","Saving …"))},startAction:function(t,e){l()(t).text(e).removeClass("success").removeClass("error").stop(!0,!0).show()},finishedSaving:function(t,e){this.finishedAction(t,e)},finishedAction:function(t,e){"success"===e.status?this.finishedSuccess(t,e.data.message):this.finishedError(t,e.data.message)},finishedSuccess:function(t,e){l()(t).text(e).addClass("success").removeClass("error").stop(!0,!0).delay(3e3).fadeOut(900).show()},finishedError:function(t,e){l()(t).text(e).addClass("error").removeClass("success").show()}},kt=i(30381),xt=i.n(kt),Ot={callback:null,pageLoadTime:null,init:function(){l()(".password-confirm-required").on("click",p.ZP.bind(this.requirePasswordConfirmation,this)),this.pageLoadTime=xt().now()},requiresPasswordConfirmation:function(){var t=this.pageLoadTime-1e3*window.nc_pageLoad,e=xt().now()-(t+1e3*window.nc_lastLogin);return window.backendAllowsPasswordConfirmation&&e>18e5},requirePasswordConfirmation:function(e,n,o){n=void 0!==n?n:{};var i={title:t("core","Authentication required"),text:t("core","This action requires you to confirm your password"),confirm:t("core","Confirm"),label:t("core","Password"),error:""},r=p.ZP.extend(i,n),a=this;this.requiresPasswordConfirmation()&&Bt.dialogs.prompt(r.text,r.title,(function(t,e){t&&""!==e?a._confirmPassword(e,r):p.ZP.isFunction(o)&&o()}),!0,r.label,!0).then((function(){var t=l()(".oc-dialog:visible");if(t.find(".ui-icon").remove(),t.addClass("password-confirmation"),""!==r.error){var e=l()("<p></p>").addClass("msg warning").text(r.error);t.find(".oc-dialog-content").append(e)}t.find(".oc-dialog-buttonrow").addClass("aside");var n=t.find("button");n.eq(0).hide(),n.eq(1).text(r.confirm)})),this.callback=e},_confirmPassword:function(e,n){var o=this;l().ajax({url:(0,c.generateUrl)("/login/confirm"),data:{password:e},type:"POST",success:function(t){window.nc_lastLogin=t.lastLogin,p.ZP.isFunction(o.callback)&&o.callback()},error:function(){n.error=t("core","Failed to authenticate, try again"),Bt.PasswordConfirmation.requirePasswordConfirmation(o.callback,n)}})}},Tt=window._theme||{},jt={_handlers:[],_pushState:function(t,e,n){var o;if(o="string"==typeof t?t:Bt.buildQueryString(t),window.history.pushState){if(e=e||location.pathname+"?"+o,navigator.userAgent.toLowerCase().indexOf("firefox")>-1&&parseInt(navigator.userAgent.split("/").pop())<51)for(var i,r=document.querySelectorAll('[fill^="url(#"], [stroke^="url(#"], [filter^="url(#invert"]'),a=0,s=r.length;a<s;a++)(i=r[a]).style.fill=i.style.fill,i.style.stroke=i.style.stroke,i.removeAttribute("filter"),i.setAttribute("filter","url(#invert)");n?window.history.replaceState(t,"",e):window.history.pushState(t,"",e)}else window.location.hash="?"+o,this._cancelPop=!0},pushState:function(t,e){this._pushState(t,e,!1)},replaceState:function(t,e){this._pushState(t,e,!0)},addOnPopStateHandler:function(t){this._handlers.push(t)},_parseHashQuery:function(){var t=window.location.hash,e=t.indexOf("?");return e>=0?t.substr(e+1):t.length?t.substr(1):""},_decodeQuery:function(t){return t.replace(/\+/g," ")},parseUrlQuery:function(){var t,e=this._parseHashQuery();return e&&(t=Bt.parseQueryString(this._decodeQuery(e))),(t=p.ZP.extend(t||{},Bt.parseQueryString(this._decodeQuery(location.search))))||{}},_onPopState:function(t){var e;if(this._cancelPop)this._cancelPop=!1;else if(this._handlers.length){e=t&&t.state,p.ZP.isString(e)?e=Bt.parseQueryString(e):e||(e=this.parseUrlQuery()||{});for(var n=0;n<this._handlers.length;n++)this._handlers[n](e)}}},Et=i(91770),St=i(25108);function Lt(t){for(var e,n=[],o=0,i=-1,r=0;o<t.length;){e=t.charAt(o);var a=!r&&"."===e||e>="0"&&e<="9";a!==r&&(n[++i]="",r=a),n[i]+=e,o++}return n}var Nt={History:jt,humanFileSize:Et.sS,computerFileSize:function(t){if("string"!=typeof t)return null;var e=t.toLowerCase().trim(),n=null,o=e.match(/^[\s+]?([0-9]*)(\.([0-9]+))?( +)?([kmgtp]?b?)$/i);return null===o?null:(n=parseFloat(e),isFinite(n)?(o[5]&&(n*={b:1,k:1024,kb:1024,mb:1048576,m:1048576,gb:1073741824,g:1073741824,tb:1099511627776,t:1099511627776,pb:0x4000000000000,p:0x4000000000000}[o[5]]),n=Math.round(n)):null)},formatDate:function(t,e){return void 0===window.TESTING&&St.warn("OC.Util.formatDate is deprecated and will be removed in Nextcloud 21. See @nextcloud/moment"),e=e||"LLL",xt()(t).format(e)},relativeModifiedDate:function(e){void 0===window.TESTING&&St.warn("OC.Util.relativeModifiedDate is deprecated and will be removed in Nextcloud 21. See @nextcloud/moment");var n=xt()().diff(xt()(e));return n>=0&&n<45e3?t("core","seconds ago"):xt()(e).fromNow()},getScrollBarWidth:function(){if(this._scrollBarWidth)return this._scrollBarWidth;var t=document.createElement("p");t.style.width="100%",t.style.height="200px";var e=document.createElement("div");e.style.position="absolute",e.style.top="0px",e.style.left="0px",e.style.visibility="hidden",e.style.width="200px",e.style.height="150px",e.style.overflow="hidden",e.appendChild(t),document.body.appendChild(e);var n=t.offsetWidth;e.style.overflow="scroll";var o=t.offsetWidth;return n===o&&(o=e.clientWidth),document.body.removeChild(e),this._scrollBarWidth=n-o,this._scrollBarWidth},stripTime:function(t){return new Date(t.getFullYear(),t.getMonth(),t.getDate())},naturalSortCompare:function(t,e){var n,o=Lt(t),i=Lt(e);for(n=0;o[n]&&i[n];n++)if(o[n]!==i[n]){var r=Number(o[n]),a=Number(i[n]);return r==o[n]&&a==i[n]?r-a:o[n].localeCompare(i[n],Bt.getLanguage())}return o.length-i.length},waitFor:function(t,e){!function n(){!0!==t()&&setTimeout(n,e)}()},isCookieSetToValue:function(t,e){for(var n=document.cookie.split(";"),o=0;o<n.length;o++){var i=n[o].split("=");if(i[0].trim()===t&&i[1].trim()===e)return!0}return!1}},It=window._oc_debug,Ut=window._oc_webroot;if(void 0===Ut){var $t=(Ut=location.pathname).indexOf("/index.php/");Ut=-1!==$t?Ut.substr(0,$t):Ut.substr(0,Ut.lastIndexOf("/"))}var Rt,Ft=Ut,Mt=i(25108),Bt={coreApps:["","admin","log","core/search","core","3rdparty"],menuSpeed:50,PERMISSION_ALL:31,PERMISSION_CREATE:4,PERMISSION_DELETE:8,PERMISSION_NONE:0,PERMISSION_READ:1,PERMISSION_SHARE:16,PERMISSION_UPDATE:2,TAG_FAVORITE:"_$!<Favorite>!$_",fileIsBlacklisted:function(t){return!!t.match(R.blacklist_files_regex)},addScript:function(t,e,n){var o;u.warn("OC.addScript is deprecated, use OCP.Loader.loadScript instead");var i=(0,c.generateFilePath)(t,"js",e+".js");return d[i]?n&&n():(o=l().Deferred(),l().getScript(i,(function(){return o.resolve()})),d[i]=o),d[i]},addStyle:function(t,e){u.warn("OC.addStyle is deprecated, use OCP.Loader.loadStylesheet instead");var n=(0,c.generateFilePath)(t,"css",e+".css");-1===f.indexOf(n)&&(f.push(n),document.createStyleSheet?document.createStyleSheet(n):(e=l()('<link rel="stylesheet" type="text/css" href="'+n+'"/>'),l()("head").append(e)))},Apps:y,AppConfig:P,appConfig:b,appSettings:function(e){if(C.warn("OC.appSettings is deprecated and will be removed with Nextcloud 18"),void 0===e||void 0===e.appid)throw{name:"MissingParameter",message:"The parameter appid is missing"};var n={scriptName:"settings.php",cache:!0};l().extend(n,e);var o=l()("#appsettings");if(0===o.length)throw{name:"MissingDOMElement",message:'There has be be an element with id "appsettings" for the popup to show.'};var i=l()("#appsettings_popup");if(0===i.length&&(l()("body").prepend('<div class="popup hidden" id="appsettings_popup"></div>'),(i=l()("#appsettings_popup")).addClass(o.hasClass("topright")?"topright":"bottomleft")),i.is(":visible"))i.hide().remove();else{var r=o.hasClass("topright")?"up":"left";l().get((0,c.generateFilePath)(n.appid,"",n.scriptName),(function(e){i.html(e).ready((function(){if(i.prepend('<span class="arrow '+r+'"></span><h2>'+t("core","Settings")+'</h2><a class="close"></a>').show(),i.find(".close").bind("click",(function(){i.remove()})),void 0!==n.loadJS){var e;if(!0===n.loadJS)e="settings.js";else{if("string"!=typeof n.loadJS)throw{name:"InvalidParameter",message:'The "loadJS" parameter must be either boolean or a string.'};e=n.loadJS}n.cache&&l().ajaxSetup({cache:!0}),l().getScript((0,c.generateFilePath)(n.appid,"js",e)).fail((function(t,e,n){throw n}))}})).show()}),"html")}},appswebroots:A,Backbone:U,ContactsMenu:Y,config:R,currentUser:V,dialogs:ut,EventSource:pt,getCurrentUser:function(){return{uid:V,displayName:K}},isUserAdmin:function(){return wt},L10N:_t,_ajaxConnectionLostHandler:v,_processAjaxError:function(t){(0!==t.status||"abort"!==t.statusText&&"timeout"!==t.statusText&&!Bt._reloadCalled)&&(p.ZP.contains([302,303,307,401],t.status)&&Bt.currentUser?setTimeout((function(){if(!Bt._userIsNavigatingAway&&!Bt._reloadCalled){var t=0,e=setInterval((function(){g.showUpdate(n("core","Problem loading page, reloading in %n second","Problem loading page, reloading in %n seconds",5-t)),t>=5&&(clearInterval(e),Bt.reload()),t++}),1e3);Bt._reloadCalled=!0}}),100):0===t.status&&setTimeout((function(){Bt._userIsNavigatingAway||Bt._reloadCalled||Bt._ajaxConnectionLostHandler()}),100))},registerXHRForErrorProcessing:function(t){t.addEventListener&&(t.addEventListener("load",(function(){4===t.readyState&&(t.status>=200&&t.status<300||304===t.status||l()(document).trigger(new(l().Event)("ajaxError"),t))})),t.addEventListener("error",(function(){l()(document).trigger(new(l().Event)("ajaxError"),t)})))},getCapabilities:function(){return mt.warn("OC.getCapabilities is deprecated and will be removed in Nextcloud 21. See @nextcloud/capabilities"),(0,ht.getCapabilities)()},hideMenus:yt,registerMenu:function(t,e,n,o){e.addClass("menu");var i="A"===t.prop("tagName")||"BUTTON"===t.prop("tagName");t.on(i?"click.menu":"click.menu keyup.menu",(function(i){i.preventDefault(),i.key&&"Enter"!==i.key||(e.is(gt)?yt():(gt&&yt(),!0===o&&e.parent().addClass("openedMenu"),t.attr("aria-expanded",!0),e.slideToggle(50,n),gt=e,vt=t))}))},showMenu:function(t,e,n){e.is(gt)||(yt(),gt=e,vt=t,e.trigger(new(l().Event)("beforeShow")),e.show(),e.trigger(new(l().Event)("afterShow")),p.ZP.isFunction(n)&&n())},unregisterMenu:function(t,e){e.is(gt)&&yt(),t.off("click.menu").removeClass("menutoggle"),e.removeClass("menu")},basename:$.EZ,encodePath:$.Ec,dirname:$.XX,isSamePath:$.Mg,joinPaths:$.RQ,getHost:function(){return window.location.host},getHostName:function(){return window.location.hostname},getPort:function(){return window.location.port},getProtocol:function(){return window.location.protocol.split(":")[0]},getCanonicalLocale:Ct.aj,getLocale:Ct.Kd,getLanguage:Ct.G3,buildQueryString:function(t){return t?l().map(t,(function(t,e){var n=encodeURIComponent(e);return null!=t&&(n+="="+encodeURIComponent(t)),n})).join("&"):""},parseQueryString:function(t){var e,n,o,i={};if(!t)return null;(e=t.indexOf("?"))>=0&&(t=t.substr(e+1));for(var r=t.replace(/\+/g,"%20").split("&"),a=0;a<r.length;a++){var s=r[a];(n=(e=s.indexOf("="))>=0?[s.substr(0,e),s.substr(e+1)]:[s]).length&&(o=decodeURIComponent(n[0]))&&(i[o]=n.length>1?decodeURIComponent(n[1]):null)}return i},msg:At,Notification:g,PasswordConfirmation:Ot,Plugins:{_plugins:{},register:function(t,e){var n=this._plugins[t];n||(n=this._plugins[t]=[]),n.push(e)},getPlugins:function(t){return this._plugins[t]||[]},attach:function(t,e,n){for(var o=this.getPlugins(t),i=0;i<o.length;i++)o[i].attach&&o[i].attach(e,n)},detach:function(t,e,n){for(var o=this.getPlugins(t),i=0;i<o.length;i++)o[i].detach&&o[i].detach(e,n)}},theme:Tt,Util:Nt,debug:It,filePath:c.generateFilePath,generateUrl:c.generateUrl,get:(Rt=window,function(t){for(var e=t.split("."),n=e.pop(),o=0;o<e.length;o++)if(!(Rt=Rt[e[o]]))return!1;return Rt[n]}),set:function(t){return function(e,n){for(var o=e.split("."),i=o.pop(),r=0;r<o.length;r++)t[o[r]]||(t[o[r]]={}),t=t[o[r]];return t[i]=n,n}}(window),getRootPath:c.getRootUrl,imagePath:c.imagePath,redirect:function(t){window.location=t},reload:function(){window.location.reload()},requestToken:dt(),linkTo:c.linkTo,linkToOCS:function(t,e){return(0,c.generateOcsUrl)(t,{},{ocsVersion:e||1})+"/"},linkToRemote:c.generateRemoteUrl,linkToRemoteBase:function(t){return(0,c.getRootUrl)()+"/remote.php/"+t},webroot:Ft};(0,a.Ld)("csrf-token-update",(function(t){OC.requestToken=t.token,Mt.info("OC.requestToken changed",t.token)}));var zt=i(79954),Dt=i(17563),Zt=i(22660),Ht=i.n(Zt),Yt=i(10204),qt=i.n(Yt),Kt=i(57290),Vt=i.n(Kt),Gt=i(10861),Wt=i.n(Gt),Jt={name:"LoginButton",components:{ArrowRight:i(39429).default,NcButton:Wt()},props:{value:{type:String,default:t("core","Log in")},valueLoading:{type:String,default:t("core","Logging in …")},loading:{type:Boolean,required:!0},invertedColors:{type:Boolean,default:!1}}},Qt=i(93379),Xt=i.n(Qt),te=i(7795),ee=i.n(te),ne=i(90569),oe=i.n(ne),ie=i(3565),re=i.n(ie),ae=i(19216),se=i.n(ae),le=i(44589),ce=i.n(le),ue=i(49665),de={};de.styleTagTransform=ce(),de.setAttributes=re(),de.insert=oe().bind(null,"head"),de.domAPI=ee(),de.insertStyleElement=se(),Xt()(ue.Z,de),ue.Z&&ue.Z.locals&&ue.Z.locals;var fe=i(51900),pe=(0,fe.Z)(Jt,(function(){var t=this,e=t._self._c;return e("NcButton",{attrs:{type:"primary","native-type":"submit",wide:!0},on:{click:function(e){return t.$emit("click")}},scopedSlots:t._u([{key:"icon",fn:function(){return[t.loading?e("div",{staticClass:"submit-wrapper__icon icon-loading-small-dark"}):e("ArrowRight",{staticClass:"submit-wrapper__icon"})]},proxy:!0}])},[t._v("\n\t"+t._s(t.loading?t.valueLoading:t.value)+"\n\t")])}),[],!1,null,"756414a8",null).exports,he={name:"LoginForm",components:{LoginButton:pe,NcPasswordField:Ht(),NcTextField:qt(),NcNoteCard:Vt()},props:{username:{type:String,default:""},redirectUrl:{type:[String,Boolean],default:!1},errors:{type:Array,default:function(){return[]}},messages:{type:Array,default:function(){return[]}},throttleDelay:{type:Number,default:0},autoCompleteAllowed:{type:Boolean,default:!0},directLogin:{type:Boolean,default:!1}},data:function(){var e,n;return{loading:!1,timezone:null===(e=new Intl.DateTimeFormat)||void 0===e||null===(n=e.resolvedOptions())||void 0===n?void 0:n.timeZone,timezoneOffset:-(new Date).getTimezoneOffset()/60,headline:t("core","Log in to {productName}",{productName:OC.theme.name}),user:"",password:""}},computed:{isError:function(){return this.invalidPassword||this.userDisabled||this.throttleDelay>5e3},errorLabel:function(){return this.invalidPassword?t("core","Wrong username or password."):this.userDisabled?t("core","User disabled"):this.throttleDelay>5e3?t("core","We have detected multiple invalid login attempts from your IP. Therefore your next login is throttled up to 30 seconds."):void 0},apacheAuthFailed:function(){return-1!==this.errors.indexOf("apacheAuthFailed")},internalException:function(){return-1!==this.errors.indexOf("internalexception")},invalidPassword:function(){return-1!==this.errors.indexOf("invalidpassword")},userDisabled:function(){return-1!==this.errors.indexOf("userdisabled")},loadingIcon:function(){return(0,c.imagePath)("core","loading-dark.gif")},loginActionUrl:function(){return(0,c.generateUrl)("login")}},mounted:function(){""===this.username?this.$refs.user.$refs.inputField.$refs.input.focus():(this.user=this.username,this.$refs.password.$refs.inputField.$refs.input.focus())},methods:{updateUsername:function(){this.$emit("update:username",this.user)},submit:function(){this.loading=!0,this.$emit("submit")}}},me=i(3591),ge={};ge.styleTagTransform=ce(),ge.setAttributes=re(),ge.insert=oe().bind(null,"head"),ge.domAPI=ee(),ge.insertStyleElement=se(),Xt()(me.Z,ge),me.Z&&me.Z.locals&&me.Z.locals;var ve=(0,fe.Z)(he,(function(){var t=this,e=t._self._c;return e("form",{ref:"loginForm",staticClass:"login-form",attrs:{method:"post",name:"login",action:t.loginActionUrl},on:{submit:t.submit}},[e("fieldset",{staticClass:"login-form__fieldset",attrs:{"data-login-form":""}},[t.apacheAuthFailed?e("NcNoteCard",{attrs:{title:t.t("core","Server side authentication failed!"),type:"warning"}},[t._v("\n\t\t\t"+t._s(t.t("core","Please contact your administrator."))+"\n\t\t")]):t._e(),t._v(" "),t.messages.length>0?e("NcNoteCard",t._l(t.messages,(function(n,o){return e("div",{key:o},[t._v("\n\t\t\t\t"+t._s(n)),e("br")])})),0):t._e(),t._v(" "),t.internalException?e("NcNoteCard",{class:t.t("core","An internal error occurred."),attrs:{type:"warning"}},[t._v("\n\t\t\t"+t._s(t.t("core","Please try again or contact your administrator."))+"\n\t\t")]):t._e(),t._v(" "),e("div",{staticClass:"hidden",attrs:{id:"message"}},[e("img",{staticClass:"float-spinner",attrs:{alt:"",src:t.loadingIcon}}),t._v(" "),e("span",{attrs:{id:"messageText"}}),t._v(" "),e("div",{staticStyle:{clear:"both"}})]),t._v(" "),e("h2",{staticClass:"login-form__headline",attrs:{"data-login-form-headline":""},domProps:{innerHTML:t._s(t.headline)}}),t._v(" "),e("NcTextField",{ref:"user",class:{shake:t.invalidPassword},attrs:{id:"user",label:t.t("core","Account name or email"),"label-visible":!0,name:"user",value:t.user,autocapitalize:"none",spellchecking:!1,autocomplete:t.autoCompleteAllowed?"username":"off",required:"","data-login-form-input-user":""},on:{"update:value":function(e){t.user=e},change:t.updateUsername}}),t._v(" "),e("NcPasswordField",{ref:"password",class:{shake:t.invalidPassword},attrs:{id:"password",name:"password","label-visible":!0,value:t.password,spellchecking:!1,autocapitalize:"none",autocomplete:t.autoCompleteAllowed?"current-password":"off",label:t.t("core","Password"),"helper-text":t.errorLabel,error:t.isError,"data-login-form-input-password":"",required:""},on:{"update:value":function(e){t.password=e}}}),t._v(" "),e("LoginButton",{attrs:{"data-login-form-submit":"",loading:t.loading}}),t._v(" "),t.redirectUrl?e("input",{attrs:{type:"hidden",name:"redirect_url"},domProps:{value:t.redirectUrl}}):t._e(),t._v(" "),e("input",{attrs:{type:"hidden",name:"timezone"},domProps:{value:t.timezone}}),t._v(" "),e("input",{attrs:{type:"hidden",name:"timezone_offset"},domProps:{value:t.timezoneOffset}}),t._v(" "),e("input",{attrs:{type:"hidden",name:"requesttoken"},domProps:{value:t.OC.requestToken}}),t._v(" "),t.directLogin?e("input",{attrs:{type:"hidden",name:"direct",value:"1"}}):t._e()],1)])}),[],!1,null,"5bd351bc",null).exports,ye=i(4820),we=i(37838),be=i(38213),Pe=i(25108);function Ce(t){return Ce="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Ce(t)}function _e(t){return function(t){if(Array.isArray(t))return Ae(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||function(t,e){if(t){if("string"==typeof t)return Ae(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?Ae(t,e):void 0}}(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Ae(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,o=new Array(e);n<e;n++)o[n]=t[n];return o}function ke(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(t);e&&(o=o.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,o)}return n}function xe(t){for(var e=1;e<arguments.length;e++){var n=null!=arguments[e]?arguments[e]:{};e%2?ke(Object(n),!0).forEach((function(e){Oe(t,e,n[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):ke(Object(n)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))}))}return t}function Oe(t,e,n){return(e=Te(e))in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function Te(t){var e=function(t,e){if("object"!==Ce(t)||null===t)return t;var n=t[Symbol.toPrimitive];if(void 0!==n){var o=n.call(t,e);if("object"!==Ce(o))return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t,"string");return"symbol"===Ce(e)?e:String(e)}function je(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function Ee(t,e){if(e&&("object"===Ce(e)||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined");return function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t)}function Se(t){var e="function"==typeof Map?new Map:void 0;return Se=function(t){if(null===t||(n=t,-1===Function.toString.call(n).indexOf("[native code]")))return t;var n;if("function"!=typeof t)throw new TypeError("Super expression must either be null or a function");if(void 0!==e){if(e.has(t))return e.get(t);e.set(t,o)}function o(){return Le(t,arguments,Ue(this).constructor)}return o.prototype=Object.create(t.prototype,{constructor:{value:o,enumerable:!1,writable:!0,configurable:!0}}),Ie(o,t)},Se(t)}function Le(t,e,n){return Le=Ne()?Reflect.construct.bind():function(t,e,n){var o=[null];o.push.apply(o,e);var i=new(Function.bind.apply(t,o));return n&&Ie(i,n.prototype),i},Le.apply(null,arguments)}function Ne(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}function Ie(t,e){return Ie=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},Ie(t,e)}function Ue(t){return Ue=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},Ue(t)}var $e=function(t){!function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&Ie(t,e)}(r,t);var e,n,o,i=(e=r,n=Ne(),function(){var t,o=Ue(e);if(n){var i=Ue(this).constructor;t=Reflect.construct(o,arguments,i)}else t=o.apply(this,arguments);return Ee(this,t)});function r(){return je(this,r),i.apply(this,arguments)}return o=r,Object.defineProperty(o,"prototype",{writable:!1}),o}(Se(Error)),Re={name:"PasswordLessLoginForm",components:{LoginButton:pe,InformationIcon:we.Z,LockOpenIcon:be.Z},props:{username:{type:String,default:""},redirectUrl:{type:[String,Boolean],default:!1},autoCompleteAllowed:{type:Boolean,default:!0},isHttps:{type:Boolean,default:!1},isLocalhost:{type:Boolean,default:!1},hasPublicKeyCredential:{type:Boolean,default:!1}},data:function(){return{user:this.username,loading:!1,validCredentials:!0}},methods:{authenticate:function(){var t=this;Pe.debug("passwordless login initiated"),this.getAuthenticationData(this.user).then((function(t){return Pe.debug(t),t})).then(this.sign).then(this.completeAuthentication).catch((function(e){e instanceof $e?t.validCredentials=!1:Pe.debug(e)}))},getAuthenticationData:function(t){var e,n,o=function(t){var e=(t=t.replace(/-/g,"+").replace(/_/g,"/")).length%4;if(e){if(1===e)throw new Error("InvalidLengthError: Input base64url string is the wrong length to determine padding");t+=new Array(5-e).join("=")}return window.atob(t)};return(e=t,n=(0,c.generateUrl)("/login/webauthn/start"),ye.default.post(n,{loginName:e}).then((function(t){return t.data}))).then((function(t){if(Pe.debug("Obtained PublicKeyCredentialRequestOptions"),Pe.debug(t),!Object.prototype.hasOwnProperty.call(t,"allowCredentials"))throw Pe.debug("No credentials found."),new $e;return t.challenge=Uint8Array.from(o(t.challenge),(function(t){return t.charCodeAt(0)})),t.allowCredentials=t.allowCredentials.map((function(t){return xe(xe({},t),{},{id:Uint8Array.from(o(t.id),(function(t){return t.charCodeAt(0)}))})})),Pe.debug("Converted PublicKeyCredentialRequestOptions"),Pe.debug(t),t})).catch((function(t){throw Pe.debug("Error while obtaining data"),t}))},sign:function(t){var e=function(t){return window.btoa(String.fromCharCode.apply(String,_e(t)))};return navigator.credentials.get({publicKey:t}).then((function(t){return Pe.debug(t),Pe.debug(new Uint8Array(t.rawId)),Pe.debug(e(new Uint8Array(t.rawId))),{id:t.id,type:t.type,rawId:e(new Uint8Array(t.rawId)),response:{authenticatorData:e(new Uint8Array(t.response.authenticatorData)),clientDataJSON:e(new Uint8Array(t.response.clientDataJSON)),signature:e(new Uint8Array(t.response.signature)),userHandle:t.response.userHandle?(n=new Uint8Array(t.response.userHandle),String.fromCharCode.apply(String,_e(n))):null}};var n})).then((function(t){return Pe.debug(t),t})).catch((function(t){Pe.debug("GOT AN ERROR!"),Pe.debug(t)}))},completeAuthentication:function(t){Pe.debug("TIME TO COMPLETE");var e,n,o=this.redirectUrl;return(e=JSON.stringify(t),n=(0,c.generateUrl)("/login/webauthn/finish"),ye.default.post(n,{data:e}).then((function(t){return t.data}))).then((function(t){var e=t.defaultRedirectUrl;Pe.debug("Logged in redirecting"),window.location.href=o||e})).catch((function(t){Pe.debug("GOT AN ERROR WHILE SUBMITTING CHALLENGE!"),Pe.debug(t)}))},submit:function(){}}},Fe=i(43848),Me={};Me.styleTagTransform=ce(),Me.setAttributes=re(),Me.insert=oe().bind(null,"head"),Me.domAPI=ee(),Me.insertStyleElement=se(),Xt()(Fe.Z,Me),Fe.Z&&Fe.Z.locals&&Fe.Z.locals;var Be=(0,fe.Z)(Re,(function(){var t=this,e=t._self._c;return(t.isHttps||t.isLocalhost)&&t.hasPublicKeyCredential?e("form",{ref:"loginForm",attrs:{method:"post",name:"login"},on:{submit:function(e){return e.preventDefault(),t.submit.apply(null,arguments)}}},[e("fieldset",[e("p",{staticClass:"grouptop groupbottom"},[e("label",{staticClass:"infield",attrs:{for:"user"}},[t._v(t._s(t.t("core","Username or\temail")))]),t._v(" "),e("input",{directives:[{name:"model",rawName:"v-model",value:t.user,expression:"user"}],ref:"user",attrs:{id:"user",type:"text",name:"user",autocomplete:t.autoCompleteAllowed?"on":"off",placeholder:t.t("core","Username or email"),"aria-label":t.t("core","Username or email"),required:""},domProps:{value:t.user},on:{change:function(e){return t.$emit("update:username",t.user)},input:function(e){e.target.composing||(t.user=e.target.value)}}})]),t._v(" "),t.validCredentials?t._e():e("div",{staticClass:"body-login-container update form__message-box"},[t._v("\n\t\t\t"+t._s(t.t("core","Your account is not setup for passwordless login."))+"\n\t\t")]),t._v(" "),t.validCredentials?e("LoginButton",{attrs:{loading:t.loading},on:{click:t.authenticate}}):t._e()],1)]):t.hasPublicKeyCredential?t.isHttps||t.isLocalhost?t._e():e("div",{staticClass:"body-login-container update"},[e("LockOpenIcon",{attrs:{size:"70"}}),t._v(" "),e("h2",[t._v(t._s(t.t("core","Your connection is not secure")))]),t._v(" "),e("p",{staticClass:"infogroup"},[t._v("\n\t\t"+t._s(t.t("core","Passwordless authentication is only available over a secure connection."))+"\n\t")])],1):e("div",{staticClass:"body-login-container update"},[e("InformationIcon",{attrs:{size:"70"}}),t._v(" "),e("h2",[t._v(t._s(t.t("core","Browser not supported")))]),t._v(" "),e("p",{staticClass:"infogroup"},[t._v("\n\t\t"+t._s(t.t("core","Passwordless authentication is not supported in your browser."))+"\n\t")])],1)}),[],!1,null,"20256748",null),ze=Be.exports,De=i(25108),Ze={name:"ResetPassword",components:{LoginButton:pe,NcNoteCard:Vt(),NcTextField:qt()},props:{username:{type:String,required:!0},resetPasswordLink:{type:String,required:!0}},data:function(){return{error:!1,loading:!1,message:void 0,user:this.username}},watch:{username:function(t){this.user=t}},methods:{updateUsername:function(){this.$emit("update:username",this.user)},submit:function(){var t=this;this.loading=!0,this.error=!1,this.message="";var e=(0,c.generateUrl)("/lostpassword/email"),n={user:this.user};return ye.default.post(e,n).then((function(t){return t.data})).then((function(e){if("success"!==e.status)throw new Error("got status ".concat(e.status));t.message="send-success"})).catch((function(e){De.error("could not send reset email request",e),t.error=!0,t.message="send-error"})).then((function(){t.loading=!1}))}}},He=i(28032),Ye={};Ye.styleTagTransform=ce(),Ye.setAttributes=re(),Ye.insert=oe().bind(null,"head"),Ye.domAPI=ee(),Ye.insertStyleElement=se(),Xt()(He.Z,Ye),He.Z&&He.Z.locals&&He.Z.locals;var qe=(0,fe.Z)(Ze,(function(){var t=this,e=t._self._c;return e("form",{staticClass:"login-form",on:{submit:function(e){return e.preventDefault(),t.submit.apply(null,arguments)}}},[e("fieldset",{staticClass:"login-form__fieldset"},[e("NcTextField",{attrs:{id:"user",value:t.user,name:"user",autocapitalize:"off",label:t.t("core","Account name or email"),"label-visible":!0,required:""},on:{"update:value":function(e){t.user=e},change:t.updateUsername}}),t._v(" "),e("LoginButton",{attrs:{value:t.t("core","Reset password")}}),t._v(" "),"send-success"===t.message?e("NcNoteCard",{attrs:{type:"success"}},[t._v("\n\t\t\t"+t._s(t.t("core","A password reset message has been sent to the email address of this account. If you do not receive it, check your spam/junk folders or ask your local administrator for help."))+"\n\t\t\t"),e("br"),t._v("\n\t\t\t"+t._s(t.t("core","If it is not there ask your local administrator."))+"\n\t\t")]):"send-error"===t.message?e("NcNoteCard",{attrs:{type:"error"}},[t._v("\n\t\t\t"+t._s(t.t("core","Couldn't send reset email. Please contact your administrator."))+"\n\t\t")]):"reset-error"===t.message?e("NcNoteCard",{attrs:{type:"error"}},[t._v("\n\t\t\t"+t._s(t.t("core","Password cannot be changed. Please contact your administrator."))+"\n\t\t")]):t._e(),t._v(" "),e("a",{staticClass:"login-form__link",attrs:{href:"#"},on:{click:function(e){return e.preventDefault(),t.$emit("abort")}}},[t._v("\n\t\t\t"+t._s(t.t("core","Back to login"))+"\n\t\t")])],1)])}),[],!1,null,"27cabc60",null),Ke=qe.exports;function Ve(t,e,n,o,i,r,a){try{var s=t[r](a),l=s.value}catch(t){return void n(t)}s.done?e(l):Promise.resolve(l).then(o,i)}var Ge={name:"UpdatePassword",components:{LoginButton:pe},props:{username:{type:String,required:!0},resetPasswordTarget:{type:String,required:!0}},data:function(){return{error:!1,loading:!1,message:void 0,user:this.username,password:"",encrypted:!1,proceed:!1}},watch:{username:function(t){this.user=t}},methods:{submit:function(){var e,n=this;return(e=regeneratorRuntime.mark((function e(){var o,i;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n.loading=!0,n.error=!1,n.message="",e.prev=3,e.next=6,ye.default.post(n.resetPasswordTarget,{password:n.password,proceed:n.proceed});case 6:if(o=e.sent,!(i=o.data)||"success"!==i.status){e.next=14;break}n.message="send-success",n.$emit("update:username",n.user),n.$emit("done"),e.next=23;break;case 14:if(!i||!i.encryption){e.next=18;break}n.encrypted=!0,e.next=23;break;case 18:if(!i||!i.msg){e.next=22;break}throw new Error(i.msg);case 22:throw new Error;case 23:e.next=29;break;case 25:e.prev=25,e.t0=e.catch(3),n.error=!0,n.message=e.t0.message?e.t0.message:t("core","Password cannot be changed. Please contact your administrator.");case 29:return e.prev=29,n.loading=!1,e.finish(29);case 32:case"end":return e.stop()}}),e,null,[[3,25,29,32]])})),function(){var t=this,n=arguments;return new Promise((function(o,i){var r=e.apply(t,n);function a(t){Ve(r,o,i,a,s,"next",t)}function s(t){Ve(r,o,i,a,s,"throw",t)}a(void 0)}))})()}}},We=Ge,Je=i(74778),Qe={};Qe.styleTagTransform=ce(),Qe.setAttributes=re(),Qe.insert=oe().bind(null,"head"),Qe.domAPI=ee(),Qe.insertStyleElement=se(),Xt()(Je.Z,Qe),Je.Z&&Je.Z.locals&&Je.Z.locals;var Xe=(0,fe.Z)(We,(function(){var t=this,e=t._self._c;return e("form",{on:{submit:function(e){return e.preventDefault(),t.submit.apply(null,arguments)}}},[e("fieldset",[e("p",[e("label",{staticClass:"infield",attrs:{for:"password"}},[t._v(t._s(t.t("core","New password")))]),t._v(" "),e("input",{directives:[{name:"model",rawName:"v-model",value:t.password,expression:"password"}],attrs:{id:"password",type:"password",name:"password",autocomplete:"new-password",autocapitalize:"none",autocorrect:"off",required:"",placeholder:t.t("core","New password")},domProps:{value:t.password},on:{input:function(e){e.target.composing||(t.password=e.target.value)}}})]),t._v(" "),t.encrypted?e("div",{staticClass:"update"},[e("p",[t._v("\n\t\t\t\t"+t._s(t.t("core","Your files are encrypted. There will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?"))+"\n\t\t\t")]),t._v(" "),e("input",{directives:[{name:"model",rawName:"v-model",value:t.proceed,expression:"proceed"}],staticClass:"checkbox",attrs:{id:"encrypted-continue",type:"checkbox"},domProps:{checked:Array.isArray(t.proceed)?t._i(t.proceed,null)>-1:t.proceed},on:{change:function(e){var n=t.proceed,o=e.target,i=!!o.checked;if(Array.isArray(n)){var r=t._i(n,null);o.checked?r<0&&(t.proceed=n.concat([null])):r>-1&&(t.proceed=n.slice(0,r).concat(n.slice(r+1)))}else t.proceed=i}}}),t._v(" "),e("label",{attrs:{for:"encrypted-continue"}},[t._v("\n\t\t\t\t"+t._s(t.t("core","I know what I'm doing"))+"\n\t\t\t")])]):t._e(),t._v(" "),e("LoginButton",{attrs:{loading:t.loading,value:t.t("core","Reset password"),"value-loading":t.t("core","Resetting password")}}),t._v(" "),t.error&&t.message?e("p",{class:{warning:t.error}},[t._v("\n\t\t\t"+t._s(t.message)+"\n\t\t")]):t._e()],1)])}),[],!1,null,"4dc21d74",null),tn=Xe.exports,en=i(25108),nn=Dt.parse(location.search);if("1"===nn.clear)try{window.localStorage.clear(),window.sessionStorage.clear(),en.debug("Browser storage cleared")}catch(t){en.error("Could not clear browser storage",t)}var on={name:"Login",components:{LoginForm:ve,PasswordLessLoginForm:ze,ResetPassword:Ke,UpdatePassword:tn,NcButton:Wt(),NcNoteCard:Vt()},data:function(){return{loading:!1,user:(0,zt.j)("core","loginUsername",""),passwordlessLogin:!1,resetPassword:!1,errors:(0,zt.j)("core","loginErrors",[]),messages:(0,zt.j)("core","loginMessages",[]),redirectUrl:(0,zt.j)("core","loginRedirectUrl",!1),throttleDelay:(0,zt.j)("core","loginThrottleDelay",0),canResetPassword:(0,zt.j)("core","loginCanResetPassword",!1),resetPasswordLink:(0,zt.j)("core","loginResetPasswordLink",""),autoCompleteAllowed:(0,zt.j)("core","loginAutocomplete",!0),resetPasswordTarget:(0,zt.j)("core","resetPasswordTarget",""),resetPasswordUser:(0,zt.j)("core","resetPasswordUser",""),directLogin:"1"===nn.direct,hasPasswordless:(0,zt.j)("core","webauthn-available",!1),countAlternativeLogins:(0,zt.j)("core","countAlternativeLogins",!1),alternativeLogins:(0,zt.j)("core","alternativeLogins",[]),isHttps:"https:"===window.location.protocol,isLocalhost:"localhost"===window.location.hostname,hasPublicKeyCredential:void 0!==window.PublicKeyCredential,hideLoginForm:(0,zt.j)("core","hideLoginForm",!1)}},methods:{passwordResetFinished:function(){this.resetPasswordTarget="",this.directLogin=!0}}},rn=i(20549),an={};an.styleTagTransform=ce(),an.setAttributes=re(),an.insert=oe().bind(null,"head"),an.domAPI=ee(),an.insertStyleElement=se(),Xt()(rn.Z,an),rn.Z&&rn.Z.locals&&rn.Z.locals;var sn=(0,fe.Z)(on,(function(){var t=this,e=t._self._c;return e("div",{staticClass:"guest-box login-box"},[!t.hideLoginForm||t.directLogin?e("div",[e("transition",{attrs:{name:"fade",mode:"out-in"}},[t.passwordlessLogin||t.resetPassword||""!==t.resetPasswordTarget?!t.loading&&t.passwordlessLogin?e("div",{key:"reset",staticClass:"login-additional"},[e("PasswordLessLoginForm",{attrs:{username:t.user,"redirect-url":t.redirectUrl,"auto-complete-allowed":t.autoCompleteAllowed,"is-https":t.isHttps,"is-localhost":t.isLocalhost,"has-public-key-credential":t.hasPublicKeyCredential},on:{"update:username":function(e){t.user=e},submit:function(e){t.loading=!0}}}),t._v(" "),e("a",{staticClass:"login-box__link",attrs:{href:"#"},on:{click:function(e){e.preventDefault(),t.passwordlessLogin=!1}}},[t._v("\n\t\t\t\t\t"+t._s(t.t("core","Back"))+"\n\t\t\t\t")])],1):!t.loading&&t.canResetPassword?e("div",{key:"reset",staticClass:"login-additional"},[e("div",{staticClass:"lost-password-container"},[t.resetPassword?e("ResetPassword",{attrs:{username:t.user,"reset-password-link":t.resetPasswordLink},on:{"update:username":function(e){t.user=e},abort:function(e){t.resetPassword=!1}}}):t._e()],1)]):""!==t.resetPasswordTarget?e("div",[e("UpdatePassword",{attrs:{username:t.user,"reset-password-target":t.resetPasswordTarget},on:{"update:username":function(e){t.user=e},done:t.passwordResetFinished}})],1):t._e():e("div",[e("LoginForm",{attrs:{username:t.user,"redirect-url":t.redirectUrl,"direct-login":t.directLogin,messages:t.messages,errors:t.errors,"throttle-delay":t.throttleDelay,"auto-complete-allowed":t.autoCompleteAllowed},on:{"update:username":function(e){t.user=e},submit:function(e){t.loading=!0}}}),t._v(" "),t.canResetPassword&&""!==t.resetPasswordLink?e("a",{staticClass:"login-box__link",attrs:{id:"lost-password",href:t.resetPasswordLink}},[t._v("\n\t\t\t\t\t"+t._s(t.t("core","Forgot password?"))+"\n\t\t\t\t")]):t.canResetPassword&&!t.resetPassword?e("a",{staticClass:"login-box__link",attrs:{id:"lost-password",href:t.resetPasswordLink},on:{click:function(e){e.preventDefault(),t.resetPassword=!0}}},[t._v("\n\t\t\t\t\t"+t._s(t.t("core","Forgot password?"))+"\n\t\t\t\t")]):t._e(),t._v(" "),t.hasPasswordless?[t.countAlternativeLogins?e("div",{staticClass:"alternative-logins"},[t.hasPasswordless?e("a",{staticClass:"button",class:{"single-alt-login-option":t.countAlternativeLogins},attrs:{href:"#"},on:{click:function(e){e.preventDefault(),t.passwordlessLogin=!0}}},[t._v("\n\t\t\t\t\t\t\t"+t._s(t.t("core","Log in with a device"))+"\n\t\t\t\t\t\t")]):t._e()]):e("a",{attrs:{href:"#"},on:{click:function(e){e.preventDefault(),t.passwordlessLogin=!0}}},[t._v("\n\t\t\t\t\t\t"+t._s(t.t("core","Log in with a device"))+"\n\t\t\t\t\t")])]:t._e()],2)])],1):e("div",[e("transition",{attrs:{name:"fade",mode:"out-in"}},[e("NcNoteCard",{attrs:{type:"warning",title:t.t("core","Login form is disabled.")}},[t._v("\n\t\t\t\t"+t._s(t.t("core","Please contact your administrator."))+"\n\t\t\t")])],1)],1),t._v(" "),e("div",{staticClass:"alternative-logins",attrs:{id:"alternative-logins"}},t._l(t.alternativeLogins,(function(n,o){return e("NcButton",{key:o,class:[n.class],attrs:{type:"secondary",wide:!0,role:"link",href:n.href}},[t._v("\n\t\t\t"+t._s(n.name)+"\n\t\t")])})),1)])}),[],!1,null,null,null).exports,ln={data:function(){return{OC:Bt}},methods:{t:_t.translate.bind(_t),n:_t.translatePlural.bind(_t)}};r.ZP.mixin(ln),(new(r.ZP.extend(sn))).$mount("#login")},49665:function(t,e,n){"use strict";var o=n(87537),i=n.n(o),r=n(23645),a=n.n(r)()(i());a.push([t.id,".button-vue[data-v-756414a8]{margin-top:.5rem}","",{version:3,sources:["webpack://./core/src/components/login/LoginButton.vue"],names:[],mappings:"AACA,6BACC,gBAAA",sourcesContent:["\n.button-vue {\n\tmargin-top: .5rem;\n}\n"],sourceRoot:""}]),e.Z=a},3591:function(t,e,n){"use strict";var o=n(87537),i=n.n(o),r=n(23645),a=n.n(r)()(i());a.push([t.id,".login-form[data-v-5bd351bc]{text-align:left;font-size:1rem}.login-form__fieldset[data-v-5bd351bc]{width:100%;display:flex;flex-direction:column;gap:.5rem}.login-form__headline[data-v-5bd351bc]{text-align:center}","",{version:3,sources:["webpack://./core/src/components/login/LoginForm.vue"],names:[],mappings:"AACA,6BACC,eAAA,CACA,cAAA,CAEA,uCACC,UAAA,CACA,YAAA,CACA,qBAAA,CACA,SAAA,CAGD,uCACC,iBAAA",sourcesContent:["\n.login-form {\n\ttext-align: left;\n\tfont-size: 1rem;\n\n\t&__fieldset {\n\t\twidth: 100%;\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tgap: .5rem;\n\t}\n\n\t&__headline {\n\t\ttext-align: center;\n\t}\n}\n"],sourceRoot:""}]),e.Z=a},43848:function(t,e,n){"use strict";var o=n(87537),i=n.n(o),r=n(23645),a=n.n(r)()(i());a.push([t.id,".body-login-container.update[data-v-20256748]{margin:15px 0}.body-login-container.update.form__message-box[data-v-20256748]{width:240px;margin:5px}","",{version:3,sources:["webpack://./core/src/components/login/PasswordLessLoginForm.vue"],names:[],mappings:"AACA,8CACC,aAAA,CAEA,gEACC,WAAA,CACA,UAAA",sourcesContent:["\n.body-login-container.update {\n\tmargin: 15px 0;\n\n\t&.form__message-box {\n\t\twidth: 240px;\n\t\tmargin: 5px;\n\t}\n}\n"],sourceRoot:""}]),e.Z=a},28032:function(t,e,n){"use strict";var o=n(87537),i=n.n(o),r=n(23645),a=n.n(r)()(i());a.push([t.id,".login-form[data-v-27cabc60]{text-align:left;font-size:1rem}.login-form__fieldset[data-v-27cabc60]{width:100%;display:flex;flex-direction:column;gap:.5rem}.login-form__link[data-v-27cabc60]{display:block;font-weight:normal !important;padding-bottom:1rem;cursor:pointer;font-size:var(--default-font-size);text-align:center;padding:.5rem 1rem 1rem 1rem}","",{version:3,sources:["webpack://./core/src/components/login/ResetPassword.vue"],names:[],mappings:"AACA,6BACC,eAAA,CACA,cAAA,CAEA,uCACC,UAAA,CACA,YAAA,CACA,qBAAA,CACA,SAAA,CAGD,mCACC,aAAA,CACA,6BAAA,CACA,mBAAA,CACA,cAAA,CACA,kCAAA,CACA,iBAAA,CACA,4BAAA",sourcesContent:["\n.login-form {\n\ttext-align: left;\n\tfont-size: 1rem;\n\n\t&__fieldset {\n\t\twidth: 100%;\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tgap: .5rem;\n\t}\n\n\t&__link {\n\t\tdisplay: block;\n\t\tfont-weight: normal !important;\n\t\tpadding-bottom: 1rem;\n\t\tcursor: pointer;\n\t\tfont-size: var(--default-font-size);\n\t\ttext-align: center;\n\t\tpadding: .5rem 1rem 1rem 1rem;\n\t}\n}\n"],sourceRoot:""}]),e.Z=a},20549:function(t,e,n){"use strict";var o=n(87537),i=n.n(o),r=n(23645),a=n.n(r)()(i());a.push([t.id,"body{font-size:var(--default-font-size)}.login-box{width:300px}.login-box__link{display:block;padding:1rem;font-size:var(--default-font-size);text-align:center;font-weight:normal !important}.fade-enter-active,.fade-leave-active{transition:opacity .3s}.fade-enter,.fade-leave-to{opacity:0}.alternative-logins{display:flex;flex-direction:column;gap:.75rem}.alternative-logins .button-vue{box-sizing:border-box}","",{version:3,sources:["webpack://./core/src/views/Login.vue"],names:[],mappings:"AACA,KACC,kCAAA,CAGD,WACC,WAAA,CAEA,iBACC,aAAA,CACA,YAAA,CACA,kCAAA,CACA,iBAAA,CACA,6BAAA,CAGF,sCACC,sBAAA,CAED,2BACC,SAAA,CAGD,oBACC,YAAA,CACA,qBAAA,CACA,UAAA,CAEA,gCACC,qBAAA",sourcesContent:["\nbody {\n\tfont-size: var(--default-font-size);\n}\n\n.login-box {\n\twidth: 300px;\n\n\t&__link {\n\t\tdisplay: block;\n\t\tpadding: 1rem;\n\t\tfont-size: var(--default-font-size);\n\t\ttext-align: center;\n\t\tfont-weight: normal !important;\n\t}\n}\n.fade-enter-active, .fade-leave-active {\n\ttransition: opacity .3s;\n}\n.fade-enter, .fade-leave-to /* .fade-leave-active below version 2.1.8 */ {\n\topacity: 0;\n}\n\n.alternative-logins {\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 0.75rem;\n\n\t.button-vue {\n\t\tbox-sizing: border-box;\n\t}\n}\n"],sourceRoot:""}]),e.Z=a},74778:function(t,e,n){"use strict";var o=n(87537),i=n.n(o),r=n(23645),a=n.n(r)()(i());a.push([t.id,"\nfieldset[data-v-4dc21d74] {\n\ttext-align: center;\n}\ninput[type=submit][data-v-4dc21d74] {\n\tmargin-top: 20px;\n}\n","",{version:3,sources:["webpack://./core/src/components/login/UpdatePassword.vue"],names:[],mappings:";AA4IA;CACA,kBAAA;AACA;AAEA;CACA,gBAAA;AACA",sourcesContent:["\x3c!--\n - @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n --\x3e\n\n<template>\n\t<form @submit.prevent=\"submit\">\n\t\t<fieldset>\n\t\t\t<p>\n\t\t\t\t<label for=\"password\" class=\"infield\">{{ t('core', 'New password') }}</label>\n\t\t\t\t<input id=\"password\"\n\t\t\t\t\tv-model=\"password\"\n\t\t\t\t\ttype=\"password\"\n\t\t\t\t\tname=\"password\"\n\t\t\t\t\tautocomplete=\"new-password\"\n\t\t\t\t\tautocapitalize=\"none\"\n\t\t\t\t\tautocorrect=\"off\"\n\t\t\t\t\trequired\n\t\t\t\t\t:placeholder=\"t('core', 'New password')\">\n\t\t\t</p>\n\n\t\t\t<div v-if=\"encrypted\" class=\"update\">\n\t\t\t\t<p>\n\t\t\t\t\t{{ t('core', 'Your files are encrypted. There will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?') }}\n\t\t\t\t</p>\n\t\t\t\t<input id=\"encrypted-continue\"\n\t\t\t\t\tv-model=\"proceed\"\n\t\t\t\t\ttype=\"checkbox\"\n\t\t\t\t\tclass=\"checkbox\">\n\t\t\t\t<label for=\"encrypted-continue\">\n\t\t\t\t\t{{ t('core', 'I know what I\\'m doing') }}\n\t\t\t\t</label>\n\t\t\t</div>\n\n\t\t\t<LoginButton :loading=\"loading\"\n\t\t\t\t:value=\"t('core', 'Reset password')\"\n\t\t\t\t:value-loading=\"t('core', 'Resetting password')\" />\n\n\t\t\t<p v-if=\"error && message\" :class=\"{warning: error}\">\n\t\t\t\t{{ message }}\n\t\t\t</p>\n\t\t</fieldset>\n\t</form>\n</template>\n\n<script>\nimport Axios from '@nextcloud/axios'\nimport LoginButton from './LoginButton.vue'\n\nexport default {\n\tname: 'UpdatePassword',\n\tcomponents: {\n\t\tLoginButton,\n\t},\n\tprops: {\n\t\tusername: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tresetPasswordTarget: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\terror: false,\n\t\t\tloading: false,\n\t\t\tmessage: undefined,\n\t\t\tuser: this.username,\n\t\t\tpassword: '',\n\t\t\tencrypted: false,\n\t\t\tproceed: false,\n\t\t}\n\t},\n\twatch: {\n\t\tusername(value) {\n\t\t\tthis.user = value\n\t\t},\n\t},\n\tmethods: {\n\t\tasync submit() {\n\t\t\tthis.loading = true\n\t\t\tthis.error = false\n\t\t\tthis.message = ''\n\n\t\t\ttry {\n\t\t\t\tconst { data } = await Axios.post(this.resetPasswordTarget, {\n\t\t\t\t\tpassword: this.password,\n\t\t\t\t\tproceed: this.proceed,\n\t\t\t\t})\n\t\t\t\tif (data && data.status === 'success') {\n\t\t\t\t\tthis.message = 'send-success'\n\t\t\t\t\tthis.$emit('update:username', this.user)\n\t\t\t\t\tthis.$emit('done')\n\t\t\t\t} else if (data && data.encryption) {\n\t\t\t\t\tthis.encrypted = true\n\t\t\t\t} else if (data && data.msg) {\n\t\t\t\t\tthrow new Error(data.msg)\n\t\t\t\t} else {\n\t\t\t\t\tthrow new Error()\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\tthis.error = true\n\t\t\t\tthis.message = e.message ? e.message : t('core', 'Password cannot be changed. Please contact your administrator.')\n\t\t\t} finally {\n\t\t\t\tthis.loading = false\n\t\t\t}\n\t\t},\n\t},\n}\n<\/script>\n\n<style scoped>\n\tfieldset {\n\t\ttext-align: center;\n\t}\n\n\tinput[type=submit] {\n\t\tmargin-top: 20px;\n\t}\n</style>\n"],sourceRoot:""}]),e.Z=a},10944:function(t,e,n){var o=n(40202);t.exports=(o.default||o).template({1:function(t,e,n,o,i){var r,a=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return null!=(r=a(n,"if").call(null!=e?e:t.nullContext||{},null!=(r=null!=e?a(e,"contact"):e)?a(r,"profileUrl"):r,{name:"if",hash:{},fn:t.program(2,i,0),inverse:t.program(5,i,0),data:i,loc:{start:{line:2,column:1},end:{line:10,column:8}}}))?r:""},2:function(t,e,n,o,i){var r,a=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return null!=(r=a(n,"if").call(null!=e?e:t.nullContext||{},null!=(r=null!=e?a(e,"contact"):e)?a(r,"profileTitle"):r,{name:"if",hash:{},fn:t.program(3,i,0),inverse:t.noop,data:i,loc:{start:{line:3,column:2},end:{line:7,column:9}}}))?r:""},3:function(t,e,n,o,i){var r,a=t.lambda,s=t.escapeExpression,l=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'\t\t\t<a class="profile-link--avatar" href="'+s(a(null!=(r=null!=e?l(e,"contact"):e)?l(r,"profileUrl"):r,e))+'">\n\t\t\t\t<img src="'+s(a(null!=(r=null!=e?l(e,"contact"):e)?l(r,"avatar"):r,e))+'&size=32" class="avatar" srcset="'+s(a(null!=(r=null!=e?l(e,"contact"):e)?l(r,"avatar"):r,e))+"&size=32 1x, "+s(a(null!=(r=null!=e?l(e,"contact"):e)?l(r,"avatar"):r,e))+"&size=64 2x, "+s(a(null!=(r=null!=e?l(e,"contact"):e)?l(r,"avatar"):r,e))+'&size=128 4x" alt="'+s(a(null!=(r=null!=e?l(e,"contact"):e)?l(r,"avatarLabel"):r,e))+'">\n\t\t\t</a>\n'},5:function(t,e,n,o,i){var r,a=t.lambda,s=t.escapeExpression,l=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'\t\t<img src="'+s(a(null!=(r=null!=e?l(e,"contact"):e)?l(r,"avatar"):r,e))+'&size=32" class="avatar" srcset="'+s(a(null!=(r=null!=e?l(e,"contact"):e)?l(r,"avatar"):r,e))+"&size=32 1x, "+s(a(null!=(r=null!=e?l(e,"contact"):e)?l(r,"avatar"):r,e))+"&size=64 2x, "+s(a(null!=(r=null!=e?l(e,"contact"):e)?l(r,"avatar"):r,e))+'&size=128 4x" alt="'+s(a(null!=(r=null!=e?l(e,"contact"):e)?l(r,"avatarLabel"):r,e))+'">\n'},7:function(t,e,n,o,i){var r,a=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return null!=(r=a(n,"if").call(null!=e?e:t.nullContext||{},null!=(r=null!=e?a(e,"contact"):e)?a(r,"profileUrl"):r,{name:"if",hash:{},fn:t.program(8,i,0),inverse:t.program(11,i,0),data:i,loc:{start:{line:12,column:1},end:{line:20,column:8}}}))?r:""},8:function(t,e,n,o,i){var r,a=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return null!=(r=a(n,"if").call(null!=e?e:t.nullContext||{},null!=(r=null!=e?a(e,"contact"):e)?a(r,"profileTitle"):r,{name:"if",hash:{},fn:t.program(9,i,0),inverse:t.noop,data:i,loc:{start:{line:13,column:2},end:{line:17,column:9}}}))?r:""},9:function(t,e,n,o,i){var r,a=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'\t\t\t<a class="profile-link--avatar" href="'+t.escapeExpression(t.lambda(null!=(r=null!=e?a(e,"contact"):e)?a(r,"profileUrl"):r,e))+'">\n\t\t\t\t<div class="avatar"></div>\n\t\t\t</a>\n'},11:function(t,e,n,o,i){return'\t\t<div class="avatar"></div>\n'},13:function(t,e,n,o,i){var r,a=null!=e?e:t.nullContext||{},s=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return(null!=(r=s(n,"if").call(a,null!=(r=null!=e?s(e,"contact"):e)?s(r,"profileTitle"):r,{name:"if",hash:{},fn:t.program(14,i,0),inverse:t.noop,data:i,loc:{start:{line:23,column:1},end:{line:29,column:8}}}))?r:"")+(null!=(r=s(n,"if").call(a,null!=(r=null!=e?s(e,"contact"):e)?s(r,"topAction"):r,{name:"if",hash:{},fn:t.program(16,i,0),inverse:t.noop,data:i,loc:{start:{line:30,column:1},end:{line:34,column:8}}}))?r:"")},14:function(t,e,n,o,i){var r,a=t.lambda,s=t.escapeExpression,l=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'\t\t<a class="body profile-link--full-name" href="'+s(a(null!=(r=null!=e?l(e,"contact"):e)?l(r,"profileUrl"):r,e))+'">\n\t\t\t<div class="full-name">'+s(a(null!=(r=null!=e?l(e,"contact"):e)?l(r,"fullName"):r,e))+'</div>\n\t\t\t<div class="last-message">'+s(a(null!=(r=null!=e?l(e,"contact"):e)?l(r,"lastMessage"):r,e))+'</div>\n\t\t\t<div class="email-address">'+s(a(null!=(r=null!=e?l(e,"contact"):e)?l(r,"emailAddresses"):r,e))+"</div>\n\t\t</a>\n"},16:function(t,e,n,o,i){var r,a=t.lambda,s=t.escapeExpression,l=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'\t\t<a class="top-action" href="'+s(a(null!=(r=null!=(r=null!=e?l(e,"contact"):e)?l(r,"topAction"):r)?l(r,"hyperlink"):r,e))+'" title="'+s(a(null!=(r=null!=(r=null!=e?l(e,"contact"):e)?l(r,"topAction"):r)?l(r,"title"):r,e))+'">\n\t\t\t<img src="'+s(a(null!=(r=null!=(r=null!=e?l(e,"contact"):e)?l(r,"topAction"):r)?l(r,"icon"):r,e))+'" alt="'+s(a(null!=(r=null!=(r=null!=e?l(e,"contact"):e)?l(r,"topAction"):r)?l(r,"title"):r,e))+'">\n\t\t</a>\n'},18:function(t,e,n,o,i){var r,a=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return null!=(r=a(n,"if").call(null!=e?e:t.nullContext||{},null!=(r=null!=e?a(e,"contact"):e)?a(r,"topAction"):r,{name:"if",hash:{},fn:t.program(19,i,0),inverse:t.program(21,i,0),data:i,loc:{start:{line:35,column:0},end:{line:50,column:0}}}))?r:""},19:function(t,e,n,o,i){var r,a=t.lambda,s=t.escapeExpression,l=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'\t<a class="body" href="'+s(a(null!=(r=null!=(r=null!=e?l(e,"contact"):e)?l(r,"topAction"):r)?l(r,"hyperlink"):r,e))+'">\n\t\t<div class="full-name">'+s(a(null!=(r=null!=e?l(e,"contact"):e)?l(r,"fullName"):r,e))+'</div>\n\t\t<div class="last-message">'+s(a(null!=(r=null!=e?l(e,"contact"):e)?l(r,"lastMessage"):r,e))+'</div>\n\t\t<div class="email-address">'+s(a(null!=(r=null!=e?l(e,"contact"):e)?l(r,"emailAddresses"):r,e))+'</div>\n\t</a>\n \t<a class="top-action" href="'+s(a(null!=(r=null!=(r=null!=e?l(e,"contact"):e)?l(r,"topAction"):r)?l(r,"hyperlink"):r,e))+'" title="'+s(a(null!=(r=null!=(r=null!=e?l(e,"contact"):e)?l(r,"topAction"):r)?l(r,"title"):r,e))+'">\n \t\t<img src="'+s(a(null!=(r=null!=(r=null!=e?l(e,"contact"):e)?l(r,"topAction"):r)?l(r,"icon"):r,e))+'" alt="'+s(a(null!=(r=null!=(r=null!=e?l(e,"contact"):e)?l(r,"topAction"):r)?l(r,"title"):r,e))+'">\n\t</a>\n'},21:function(t,e,n,o,i){var r,a=t.lambda,s=t.escapeExpression,l=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'\t<div class="body">\n\t\t<div class="full-name">'+s(a(null!=(r=null!=e?l(e,"contact"):e)?l(r,"fullName"):r,e))+'</div>\n\t\t<div class="last-message">'+s(a(null!=(r=null!=e?l(e,"contact"):e)?l(r,"lastMessage"):r,e))+'</div>\n\t\t<div class="email-address">'+s(a(null!=(r=null!=e?l(e,"contact"):e)?l(r,"emailAddresses"):r,e))+"</div>\n\t</div>\n"},23:function(t,e,n,o,i){var r,a=t.lambda,s=t.escapeExpression,l=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'<a class="second-action" href="'+s(a(null!=(r=null!=(r=null!=e?l(e,"contact"):e)?l(r,"secondAction"):r)?l(r,"hyperlink"):r,e))+'" title="'+s(a(null!=(r=null!=(r=null!=e?l(e,"contact"):e)?l(r,"secondAction"):r)?l(r,"title"):r,e))+'">\n\t<img src="'+s(a(null!=(r=null!=(r=null!=e?l(e,"contact"):e)?l(r,"secondAction"):r)?l(r,"icon"):r,e))+'" alt="'+s(a(null!=(r=null!=(r=null!=e?l(e,"contact"):e)?l(r,"secondAction"):r)?l(r,"title"):r,e))+'">\n</a>\n'},25:function(t,e,n,o,i){var r,a=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'\t<button class="other-actions icon-more"></button>\n\t<div class="menu popovermenu">\n\t\t<ul>\n'+(null!=(r=a(n,"each").call(null!=e?e:t.nullContext||{},null!=(r=null!=e?a(e,"contact"):e)?a(r,"actions"):r,{name:"each",hash:{},fn:t.program(26,i,0),inverse:t.noop,data:i,loc:{start:{line:60,column:3},end:{line:67,column:12}}}))?r:"")+"\t\t</ul>\n\t</div>\n"},26:function(t,e,n,o,i){var r,a=null!=e?e:t.nullContext||{},s=t.hooks.helperMissing,l="function",c=t.escapeExpression,u=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'\t\t\t<li>\n\t\t\t\t<a href="'+c(typeof(r=null!=(r=u(n,"hyperlink")||(null!=e?u(e,"hyperlink"):e))?r:s)===l?r.call(a,{name:"hyperlink",hash:{},data:i,loc:{start:{line:62,column:13},end:{line:62,column:26}}}):r)+'">\n\t\t\t\t\t<img src="'+c(typeof(r=null!=(r=u(n,"icon")||(null!=e?u(e,"icon"):e))?r:s)===l?r.call(a,{name:"icon",hash:{},data:i,loc:{start:{line:63,column:15},end:{line:63,column:23}}}):r)+'" alt="">\n\t\t\t\t\t<span>'+c(typeof(r=null!=(r=u(n,"title")||(null!=e?u(e,"title"):e))?r:s)===l?r.call(a,{name:"title",hash:{},data:i,loc:{start:{line:64,column:11},end:{line:64,column:20}}}):r)+"</span>\n\t\t\t\t</a>\n\t\t\t</li>\n"},compiler:[8,">= 4.3.0"],main:function(t,e,n,o,i){var r,a=null!=e?e:t.nullContext||{},s=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return(null!=(r=s(n,"if").call(a,null!=(r=null!=e?s(e,"contact"):e)?s(r,"avatar"):r,{name:"if",hash:{},fn:t.program(1,i,0),inverse:t.program(7,i,0),data:i,loc:{start:{line:1,column:0},end:{line:21,column:7}}}))?r:"")+(null!=(r=s(n,"if").call(a,null!=(r=null!=e?s(e,"contact"):e)?s(r,"profileUrl"):r,{name:"if",hash:{},fn:t.program(13,i,0),inverse:t.program(18,i,0),data:i,loc:{start:{line:22,column:0},end:{line:50,column:7}}}))?r:"")+(null!=(r=s(n,"if").call(a,null!=(r=null!=e?s(e,"contact"):e)?s(r,"hasTwoActions"):r,{name:"if",hash:{},fn:t.program(23,i,0),inverse:t.noop,data:i,loc:{start:{line:51,column:0},end:{line:55,column:7}}}))?r:"")+(null!=(r=s(n,"if").call(a,null!=(r=null!=e?s(e,"contact"):e)?s(r,"hasManyActions"):r,{name:"if",hash:{},fn:t.program(25,i,0),inverse:t.noop,data:i,loc:{start:{line:56,column:0},end:{line:70,column:7}}}))?r:"")},useData:!0})},20421:function(t,e,n){var o=n(40202);t.exports=(o.default||o).template({compiler:[8,">= 4.3.0"],main:function(t,e,n,o,i){var r,a=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'<div class="emptycontent">\n\t<div class="icon-search"></div>\n\t<h2>'+t.escapeExpression("function"==typeof(r=null!=(r=a(n,"couldNotLoadText")||(null!=e?a(e,"couldNotLoadText"):e))?r:t.hooks.helperMissing)?r.call(null!=e?e:t.nullContext||{},{name:"couldNotLoadText",hash:{},data:i,loc:{start:{line:3,column:5},end:{line:3,column:25}}}):r)+"</h2>\n</div>\n"},useData:!0})},34083:function(t,e,n){var o=n(40202);t.exports=(o.default||o).template({1:function(t,e,n,o,i){var r,a=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'<div class="emptycontent">\n\t<div class="icon-search"></div>\n\t<h2>'+t.escapeExpression("function"==typeof(r=null!=(r=a(n,"noContactsFoundText")||(null!=e?a(e,"noContactsFoundText"):e))?r:t.hooks.helperMissing)?r.call(null!=e?e:t.nullContext||{},{name:"noContactsFoundText",hash:{},data:i,loc:{start:{line:4,column:5},end:{line:4,column:28}}}):r)+"</h2>\n</div>\n"},3:function(t,e,n,o,i){var r,a=null!=e?e:t.nullContext||{},s=t.hooks.helperMissing,l="function",c=t.escapeExpression,u=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'<div class="footer"><a href="'+c(typeof(r=null!=(r=u(n,"contactsAppURL")||(null!=e?u(e,"contactsAppURL"):e))?r:s)===l?r.call(a,{name:"contactsAppURL",hash:{},data:i,loc:{start:{line:9,column:29},end:{line:9,column:47}}}):r)+'">'+c(typeof(r=null!=(r=u(n,"showAllContactsText")||(null!=e?u(e,"showAllContactsText"):e))?r:s)===l?r.call(a,{name:"showAllContactsText",hash:{},data:i,loc:{start:{line:9,column:49},end:{line:9,column:72}}}):r)+"</a></div>\n"},5:function(t,e,n,o,i){var r,a=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return null!=(r=a(n,"if").call(null!=e?e:t.nullContext||{},null!=e?a(e,"canInstallApp"):e,{name:"if",hash:{},fn:t.program(6,i,0),inverse:t.noop,data:i,loc:{start:{line:10,column:0},end:{line:12,column:0}}}))?r:""},6:function(t,e,n,o,i){var r,a=null!=e?e:t.nullContext||{},s=t.hooks.helperMissing,l="function",c=t.escapeExpression,u=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'<div class="footer"><a href="'+c(typeof(r=null!=(r=u(n,"contactsAppMgmtURL")||(null!=e?u(e,"contactsAppMgmtURL"):e))?r:s)===l?r.call(a,{name:"contactsAppMgmtURL",hash:{},data:i,loc:{start:{line:11,column:29},end:{line:11,column:51}}}):r)+'">'+c(typeof(r=null!=(r=u(n,"contactsAppMgmtText")||(null!=e?u(e,"contactsAppMgmtText"):e))?r:s)===l?r.call(a,{name:"contactsAppMgmtText",hash:{},data:i,loc:{start:{line:11,column:53},end:{line:11,column:76}}}):r)+"</a></div>\n"},compiler:[8,">= 4.3.0"],main:function(t,e,n,o,i){var r,a=null!=e?e:t.nullContext||{},s=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return(null!=(r=s(n,"unless").call(a,null!=(r=null!=e?s(e,"contacts"):e)?s(r,"length"):r,{name:"unless",hash:{},fn:t.program(1,i,0),inverse:t.noop,data:i,loc:{start:{line:1,column:0},end:{line:6,column:11}}}))?r:"")+'<div id="contactsmenu-contacts"></div>\n'+(null!=(r=s(n,"if").call(a,null!=e?s(e,"contactsAppEnabled"):e,{name:"if",hash:{},fn:t.program(3,i,0),inverse:t.program(5,i,0),data:i,loc:{start:{line:8,column:0},end:{line:12,column:7}}}))?r:"")},useData:!0})},95386:function(t,e,n){var o=n(40202);t.exports=(o.default||o).template({compiler:[8,">= 4.3.0"],main:function(t,e,n,o,i){var r,a=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'<div class="emptycontent">\n\t<div class="icon-loading"></div>\n\t<h2>'+t.escapeExpression("function"==typeof(r=null!=(r=a(n,"loadingText")||(null!=e?a(e,"loadingText"):e))?r:t.hooks.helperMissing)?r.call(null!=e?e:t.nullContext||{},{name:"loadingText",hash:{},data:i,loc:{start:{line:3,column:5},end:{line:3,column:20}}}):r)+"</h2>\n</div>\n"},useData:!0})},66115:function(t,e,n){var o=n(40202);t.exports=(o.default||o).template({compiler:[8,">= 4.3.0"],main:function(t,e,n,o,i){var r,a=null!=e?e:t.nullContext||{},s=t.hooks.helperMissing,l="function",c=t.escapeExpression,u=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'<label class="hidden-visually" for="contactsmenu-search">'+c(typeof(r=null!=(r=u(n,"searchContactsText")||(null!=e?u(e,"searchContactsText"):e))?r:s)===l?r.call(a,{name:"searchContactsText",hash:{},data:i,loc:{start:{line:1,column:57},end:{line:1,column:79}}}):r)+'</label>\n<input id="contactsmenu-search" type="search" placeholder="'+c(typeof(r=null!=(r=u(n,"searchContactsText")||(null!=e?u(e,"searchContactsText"):e))?r:s)===l?r.call(a,{name:"searchContactsText",hash:{},data:i,loc:{start:{line:2,column:59},end:{line:2,column:81}}}):r)+'" value="'+c(typeof(r=null!=(r=u(n,"searchTerm")||(null!=e?u(e,"searchTerm"):e))?r:s)===l?r.call(a,{name:"searchTerm",hash:{},data:i,loc:{start:{line:2,column:90},end:{line:2,column:104}}}):r)+'">\n<div class="content">\n</div>\n'},useData:!0})},46700:function(t,e,n){var o={"./af":42786,"./af.js":42786,"./ar":30867,"./ar-dz":14130,"./ar-dz.js":14130,"./ar-kw":96135,"./ar-kw.js":96135,"./ar-ly":56440,"./ar-ly.js":56440,"./ar-ma":47702,"./ar-ma.js":47702,"./ar-sa":16040,"./ar-sa.js":16040,"./ar-tn":37100,"./ar-tn.js":37100,"./ar.js":30867,"./az":31083,"./az.js":31083,"./be":9808,"./be.js":9808,"./bg":68338,"./bg.js":68338,"./bm":67438,"./bm.js":67438,"./bn":8905,"./bn-bd":76225,"./bn-bd.js":76225,"./bn.js":8905,"./bo":11560,"./bo.js":11560,"./br":1278,"./br.js":1278,"./bs":80622,"./bs.js":80622,"./ca":2468,"./ca.js":2468,"./cs":5822,"./cs.js":5822,"./cv":50877,"./cv.js":50877,"./cy":47373,"./cy.js":47373,"./da":24780,"./da.js":24780,"./de":59740,"./de-at":60217,"./de-at.js":60217,"./de-ch":60894,"./de-ch.js":60894,"./de.js":59740,"./dv":5300,"./dv.js":5300,"./el":50837,"./el.js":50837,"./en-au":78348,"./en-au.js":78348,"./en-ca":77925,"./en-ca.js":77925,"./en-gb":22243,"./en-gb.js":22243,"./en-ie":46436,"./en-ie.js":46436,"./en-il":47207,"./en-il.js":47207,"./en-in":44175,"./en-in.js":44175,"./en-nz":76319,"./en-nz.js":76319,"./en-sg":31662,"./en-sg.js":31662,"./eo":92915,"./eo.js":92915,"./es":55655,"./es-do":55251,"./es-do.js":55251,"./es-mx":96112,"./es-mx.js":96112,"./es-us":71146,"./es-us.js":71146,"./es.js":55655,"./et":5603,"./et.js":5603,"./eu":77763,"./eu.js":77763,"./fa":76959,"./fa.js":76959,"./fi":11897,"./fi.js":11897,"./fil":42549,"./fil.js":42549,"./fo":94694,"./fo.js":94694,"./fr":94470,"./fr-ca":63049,"./fr-ca.js":63049,"./fr-ch":52330,"./fr-ch.js":52330,"./fr.js":94470,"./fy":5044,"./fy.js":5044,"./ga":29295,"./ga.js":29295,"./gd":2101,"./gd.js":2101,"./gl":38794,"./gl.js":38794,"./gom-deva":27884,"./gom-deva.js":27884,"./gom-latn":23168,"./gom-latn.js":23168,"./gu":95349,"./gu.js":95349,"./he":24206,"./he.js":24206,"./hi":30094,"./hi.js":30094,"./hr":30316,"./hr.js":30316,"./hu":22138,"./hu.js":22138,"./hy-am":11423,"./hy-am.js":11423,"./id":29218,"./id.js":29218,"./is":90135,"./is.js":90135,"./it":90626,"./it-ch":10150,"./it-ch.js":10150,"./it.js":90626,"./ja":39183,"./ja.js":39183,"./jv":24286,"./jv.js":24286,"./ka":12105,"./ka.js":12105,"./kk":47772,"./kk.js":47772,"./km":18758,"./km.js":18758,"./kn":79282,"./kn.js":79282,"./ko":33730,"./ko.js":33730,"./ku":1408,"./ku.js":1408,"./ky":33291,"./ky.js":33291,"./lb":36841,"./lb.js":36841,"./lo":55466,"./lo.js":55466,"./lt":57010,"./lt.js":57010,"./lv":37595,"./lv.js":37595,"./me":39861,"./me.js":39861,"./mi":35493,"./mi.js":35493,"./mk":95966,"./mk.js":95966,"./ml":87341,"./ml.js":87341,"./mn":5115,"./mn.js":5115,"./mr":10370,"./mr.js":10370,"./ms":9847,"./ms-my":41237,"./ms-my.js":41237,"./ms.js":9847,"./mt":72126,"./mt.js":72126,"./my":56165,"./my.js":56165,"./nb":64924,"./nb.js":64924,"./ne":16744,"./ne.js":16744,"./nl":93901,"./nl-be":59814,"./nl-be.js":59814,"./nl.js":93901,"./nn":83877,"./nn.js":83877,"./oc-lnc":92135,"./oc-lnc.js":92135,"./pa-in":15858,"./pa-in.js":15858,"./pl":64495,"./pl.js":64495,"./pt":89520,"./pt-br":57971,"./pt-br.js":57971,"./pt.js":89520,"./ro":96459,"./ro.js":96459,"./ru":21793,"./ru.js":21793,"./sd":40950,"./sd.js":40950,"./se":10490,"./se.js":10490,"./si":90124,"./si.js":90124,"./sk":64249,"./sk.js":64249,"./sl":14985,"./sl.js":14985,"./sq":51104,"./sq.js":51104,"./sr":49131,"./sr-cyrl":79915,"./sr-cyrl.js":79915,"./sr.js":49131,"./ss":85893,"./ss.js":85893,"./sv":98760,"./sv.js":98760,"./sw":91172,"./sw.js":91172,"./ta":27333,"./ta.js":27333,"./te":23110,"./te.js":23110,"./tet":52095,"./tet.js":52095,"./tg":27321,"./tg.js":27321,"./th":9041,"./th.js":9041,"./tk":19005,"./tk.js":19005,"./tl-ph":75768,"./tl-ph.js":75768,"./tlh":89444,"./tlh.js":89444,"./tr":72397,"./tr.js":72397,"./tzl":28254,"./tzl.js":28254,"./tzm":51106,"./tzm-latn":30699,"./tzm-latn.js":30699,"./tzm.js":51106,"./ug-cn":9288,"./ug-cn.js":9288,"./uk":67691,"./uk.js":67691,"./ur":13795,"./ur.js":13795,"./uz":6791,"./uz-latn":60588,"./uz-latn.js":60588,"./uz.js":6791,"./vi":65666,"./vi.js":65666,"./x-pseudo":14378,"./x-pseudo.js":14378,"./yo":75805,"./yo.js":75805,"./zh-cn":83839,"./zh-cn.js":83839,"./zh-hk":55726,"./zh-hk.js":55726,"./zh-mo":99807,"./zh-mo.js":99807,"./zh-tw":74152,"./zh-tw.js":74152};function i(t){var e=r(t);return n(e)}function r(t){if(!n.o(o,t)){var e=new Error("Cannot find module '"+t+"'");throw e.code="MODULE_NOT_FOUND",e}return o[t]}i.keys=function(){return Object.keys(o)},i.resolve=r,t.exports=i,i.id=46700}},i={};function r(t){var e=i[t];if(void 0!==e)return e.exports;var n=i[t]={id:t,loaded:!1,exports:{}};return o[t].call(n.exports,n,n.exports,r),n.loaded=!0,n.exports}r.m=o,e=[],r.O=function(t,n,o,i){if(!n){var a=1/0;for(u=0;u<e.length;u++){n=e[u][0],o=e[u][1],i=e[u][2];for(var s=!0,l=0;l<n.length;l++)(!1&i||a>=i)&&Object.keys(r.O).every((function(t){return r.O[t](n[l])}))?n.splice(l--,1):(s=!1,i<a&&(a=i));if(s){e.splice(u--,1);var c=o();void 0!==c&&(t=c)}}return t}i=i||0;for(var u=e.length;u>0&&e[u-1][2]>i;u--)e[u]=e[u-1];e[u]=[n,o,i]},r.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return r.d(e,{a:e}),e},r.d=function(t,e){for(var n in e)r.o(e,n)&&!r.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),r.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},r.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},r.nmd=function(t){return t.paths=[],t.children||(t.children=[]),t},r.j=4577,function(){r.b=document.baseURI||self.location.href;var t={4577:0};r.O.j=function(e){return 0===t[e]};var e=function(e,n){var o,i,a=n[0],s=n[1],l=n[2],c=0;if(a.some((function(e){return 0!==t[e]}))){for(o in s)r.o(s,o)&&(r.m[o]=s[o]);if(l)var u=l(r)}for(e&&e(n);c<a.length;c++)i=a[c],r.o(t,i)&&t[i]&&t[i][0](),t[i]=0;return r.O(u)},n=self.webpackChunknextcloud=self.webpackChunknextcloud||[];n.forEach(e.bind(null,0)),n.push=e.bind(null,n.push.bind(n))}(),r.nc=void 0;var a=r.O(void 0,[7874],(function(){return r(39977)}));a=r.O(a)}(); +//# sourceMappingURL=core-login.js.map?v=007946ee388b7b36d0d1
\ No newline at end of file diff --git a/dist/core-login.js.map b/dist/core-login.js.map index 992af7a352a..175238bdd44 100644 --- a/dist/core-login.js.map +++ b/dist/core-login.js.map @@ -1 +1 @@ -{"version":3,"file":"core-login.js?v=dd5f4c072c48f59c21d0","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/core/src/OC/legacy-loader.js","webpack:///nextcloud/core/src/OC/notification.js","webpack:///nextcloud/core/src/OC/xhr-error.js","webpack:///nextcloud/core/src/OC/apps.js","webpack:///nextcloud/core/src/OCP/appconfig.js","webpack:///nextcloud/core/src/OC/appconfig.js","webpack:///nextcloud/core/src/OC/appswebroots.js","webpack:///nextcloud/core/src/OC/backbone-webdav.js","webpack:///nextcloud/core/src/OC/backbone.js","webpack:///nextcloud/core/src/OC/config.js","webpack:///nextcloud/core/src/OC/contactsmenu.js","webpack:///nextcloud/core/src/OC/currentuser.js","webpack:///nextcloud/core/src/OCA/search.js","webpack:///nextcloud/core/src/OCA/index.js","webpack:///nextcloud/core/src/Util/a11y.js","webpack:///nextcloud/core/src/OC/dialogs.js","webpack:///nextcloud/core/src/OC/requesttoken.js","webpack:///nextcloud/core/src/OC/eventsource.js","webpack:///nextcloud/core/src/OC/menu.js","webpack:///nextcloud/core/src/OC/constants.js","webpack:///nextcloud/core/src/OC/admin.js","webpack:///nextcloud/core/src/OC/l10n.js","webpack:///nextcloud/core/src/OC/msg.js","webpack:///nextcloud/core/src/OC/password-confirmation.js","webpack:///nextcloud/core/src/OC/theme.js","webpack:///nextcloud/core/src/OC/util-history.js","webpack:///nextcloud/core/src/OC/util.js","webpack:///nextcloud/core/src/OC/debug.js","webpack:///nextcloud/core/src/OC/webroot.js","webpack:///nextcloud/core/src/OC/get_set.js","webpack:///nextcloud/core/src/OC/index.js","webpack:///nextcloud/core/src/OC/appsettings.js","webpack:///nextcloud/core/src/OC/capabilities.js","webpack:///nextcloud/core/src/OC/host.js","webpack:///nextcloud/core/src/OC/query-string.js","webpack:///nextcloud/core/src/OC/plugins.js","webpack:///nextcloud/core/src/OC/navigation.js","webpack:///nextcloud/core/src/OC/routing.js","webpack://nextcloud/./core/src/views/Login.vue?ae59","webpack:///nextcloud/core/src/components/login/LoginButton.vue?vue&type=script&lang=js&","webpack:///nextcloud/core/src/components/login/LoginButton.vue","webpack://nextcloud/./core/src/components/login/LoginButton.vue?3136","webpack://nextcloud/./core/src/components/login/LoginButton.vue?14f0","webpack://nextcloud/./core/src/components/login/LoginButton.vue?82aa","webpack:///nextcloud/core/src/components/login/LoginForm.vue?vue&type=script&lang=js&","webpack:///nextcloud/core/src/components/login/LoginForm.vue","webpack://nextcloud/./core/src/components/login/LoginForm.vue?a91a","webpack://nextcloud/./core/src/components/login/LoginForm.vue?a678","webpack://nextcloud/./core/src/components/login/LoginForm.vue?4366","webpack:///nextcloud/core/src/components/login/PasswordLessLoginForm.vue","webpack:///nextcloud/core/src/components/login/PasswordLessLoginForm.vue?vue&type=script&lang=js&","webpack:///nextcloud/core/src/services/WebAuthnAuthenticationService.js","webpack://nextcloud/./core/src/components/login/PasswordLessLoginForm.vue?1a33","webpack://nextcloud/./core/src/components/login/PasswordLessLoginForm.vue?09eb","webpack://nextcloud/./core/src/components/login/PasswordLessLoginForm.vue?16ec","webpack:///nextcloud/core/src/components/login/ResetPassword.vue?vue&type=script&lang=js&","webpack:///nextcloud/core/src/components/login/ResetPassword.vue","webpack://nextcloud/./core/src/components/login/ResetPassword.vue?703c","webpack://nextcloud/./core/src/components/login/ResetPassword.vue?9d75","webpack://nextcloud/./core/src/components/login/ResetPassword.vue?7cf3","webpack:///nextcloud/core/src/components/login/UpdatePassword.vue","webpack:///nextcloud/core/src/components/login/UpdatePassword.vue?vue&type=script&lang=js&","webpack://nextcloud/./core/src/components/login/UpdatePassword.vue?4361","webpack://nextcloud/./core/src/components/login/UpdatePassword.vue?30ca","webpack://nextcloud/./core/src/components/login/UpdatePassword.vue?1c8f","webpack:///nextcloud/core/src/views/Login.vue","webpack:///nextcloud/core/src/views/Login.vue?vue&type=script&lang=js&","webpack://nextcloud/./core/src/views/Login.vue?0fcd","webpack://nextcloud/./core/src/views/Login.vue?3468","webpack:///nextcloud/core/src/mixins/Nextcloud.js","webpack:///nextcloud/core/src/login.js","webpack:///nextcloud/core/src/components/login/LoginButton.vue?vue&type=style&index=0&id=756414a8&prod&lang=scss&scoped=true&","webpack:///nextcloud/core/src/components/login/LoginForm.vue?vue&type=style&index=0&id=5bd351bc&prod&lang=scss&scoped=true&","webpack:///nextcloud/core/src/components/login/PasswordLessLoginForm.vue?vue&type=style&index=0&id=20256748&prod&lang=scss&scoped=true&","webpack:///nextcloud/core/src/components/login/ResetPassword.vue?vue&type=style&index=0&id=27cabc60&prod&lang=scss&scoped=true&","webpack:///nextcloud/core/src/views/Login.vue?vue&type=style&index=0&id=7b955242&prod&lang=scss&","webpack:///nextcloud/core/src/components/login/UpdatePassword.vue?vue&type=style&index=0&id=4dc21d74&prod&scoped=true&lang=css&","webpack:///nextcloud/core/src/OC/contactsmenu/contact.handlebars","webpack:///nextcloud/core/src/OC/contactsmenu/error.handlebars","webpack:///nextcloud/core/src/OC/contactsmenu/list.handlebars","webpack:///nextcloud/core/src/OC/contactsmenu/loading.handlebars","webpack:///nextcloud/core/src/OC/contactsmenu/menu.handlebars","webpack:///nextcloud/node_modules/moment/locale|sync|/^\\.\\/.*$","webpack:///nextcloud/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/compat get default export","webpack:///nextcloud/webpack/runtime/define property getters","webpack:///nextcloud/webpack/runtime/global","webpack:///nextcloud/webpack/runtime/hasOwnProperty shorthand","webpack:///nextcloud/webpack/runtime/make namespace object","webpack:///nextcloud/webpack/runtime/node module decorator","webpack:///nextcloud/webpack/runtime/runtimeId","webpack:///nextcloud/webpack/runtime/jsonp chunk loading","webpack:///nextcloud/webpack/runtime/nonce","webpack:///nextcloud/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = function(result, chunkIds, fn, priority) {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every(function(key) { return __webpack_require__.O[key](chunkIds[j]); })) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n/** @typedef {import('jquery')} jQuery */\nimport $ from 'jquery'\nimport { generateFilePath } from '@nextcloud/router'\n\nconst loadedScripts = {}\nconst loadedStyles = []\n\n/**\n * Load a script for the server and load it. If the script is already loaded,\n * the event handler will be called directly\n *\n * @param {string} app the app id to which the script belongs\n * @param {string} script the filename of the script\n * @param {Function} ready event handler to be called when the script is loaded\n * @return {jQuery.Deferred}\n * @deprecated 16.0.0 Use OCP.Loader.loadScript\n */\nexport const addScript = (app, script, ready) => {\n\tconsole.warn('OC.addScript is deprecated, use OCP.Loader.loadScript instead')\n\n\tlet deferred\n\tconst path = generateFilePath(app, 'js', script + '.js')\n\tif (!loadedScripts[path]) {\n\t\tdeferred = $.Deferred()\n\t\t$.getScript(path, () => deferred.resolve())\n\t\tloadedScripts[path] = deferred\n\t} else {\n\t\tif (ready) {\n\t\t\tready()\n\t\t}\n\t}\n\treturn loadedScripts[path]\n}\n\n/**\n * Loads a CSS file\n *\n * @param {string} app the app id to which the css style belongs\n * @param {string} style the filename of the css file\n * @deprecated 16.0.0 Use OCP.Loader.loadStylesheet\n */\nexport const addStyle = (app, style) => {\n\tconsole.warn('OC.addStyle is deprecated, use OCP.Loader.loadStylesheet instead')\n\n\tconst path = generateFilePath(app, 'css', style + '.css')\n\tif (loadedStyles.indexOf(path) === -1) {\n\t\tloadedStyles.push(path)\n\t\tif (document.createStyleSheet) {\n\t\t\tdocument.createStyleSheet(path)\n\t\t} else {\n\t\t\tstyle = $('<link rel=\"stylesheet\" type=\"text/css\" href=\"' + path + '\"/>')\n\t\t\t$('head').append(style)\n\t\t}\n\t}\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Daniel Calviño Sánchez <danxuliu@gmail.com>\n * @author Joas Schilling <coding@schilljs.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n * @author npmbuildbot[bot] \"npmbuildbot[bot]@users.noreply.github.com\"\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport _ from 'underscore'\n/** @typedef {import('jquery')} jQuery */\nimport $ from 'jquery'\nimport { showMessage, TOAST_DEFAULT_TIMEOUT, TOAST_PERMANENT_TIMEOUT } from '@nextcloud/dialogs'\n\n/**\n * @todo Write documentation\n * @deprecated 17.0.0 use the `@nextcloud/dialogs` package instead\n * @namespace OC.Notification\n */\nexport default {\n\n\tupdatableNotification: null,\n\n\tgetDefaultNotificationFunction: null,\n\n\t/**\n\t * @param {Function} callback callback function\n\t * @deprecated 17.0.0 use the `@nextcloud/dialogs` package\n\t */\n\tsetDefault(callback) {\n\t\tthis.getDefaultNotificationFunction = callback\n\t},\n\n\t/**\n\t * Hides a notification.\n\t *\n\t * If a row is given, only hide that one.\n\t * If no row is given, hide all notifications.\n\t *\n\t * @param {jQuery} [$row] notification row\n\t * @param {Function} [callback] callback\n\t * @deprecated 17.0.0 use the `@nextcloud/dialogs` package\n\t */\n\thide($row, callback) {\n\t\tif (_.isFunction($row)) {\n\t\t\t// first arg is the callback\n\t\t\tcallback = $row\n\t\t\t$row = undefined\n\t\t}\n\n\t\tif (!$row) {\n\t\t\tconsole.error('Missing argument $row in OC.Notification.hide() call, caller needs to be adjusted to only dismiss its own notification')\n\t\t\treturn\n\t\t}\n\n\t\t// remove the row directly\n\t\t$row.each(function() {\n\t\t\tif ($(this)[0].toastify) {\n\t\t\t\t$(this)[0].toastify.hideToast()\n\t\t\t} else {\n\t\t\t\tconsole.error('cannot hide toast because object is not set')\n\t\t\t}\n\t\t\tif (this === this.updatableNotification) {\n\t\t\t\tthis.updatableNotification = null\n\t\t\t}\n\t\t})\n\t\tif (callback) {\n\t\t\tcallback.call()\n\t\t}\n\t\tif (this.getDefaultNotificationFunction) {\n\t\t\tthis.getDefaultNotificationFunction()\n\t\t}\n\t},\n\n\t/**\n\t * Shows a notification as HTML without being sanitized before.\n\t * If you pass unsanitized user input this may lead to a XSS vulnerability.\n\t * Consider using show() instead of showHTML()\n\t *\n\t * @param {string} html Message to display\n\t * @param {object} [options] options\n\t * @param {string} [options.type] notification type\n\t * @param {number} [options.timeout=0] timeout value, defaults to 0 (permanent)\n\t * @return {jQuery} jQuery element for notification row\n\t * @deprecated 17.0.0 use the `@nextcloud/dialogs` package\n\t */\n\tshowHtml(html, options) {\n\t\toptions = options || {}\n\t\toptions.isHTML = true\n\t\toptions.timeout = (!options.timeout) ? TOAST_PERMANENT_TIMEOUT : options.timeout\n\t\tconst toast = showMessage(html, options)\n\t\ttoast.toastElement.toastify = toast\n\t\treturn $(toast.toastElement)\n\t},\n\n\t/**\n\t * Shows a sanitized notification\n\t *\n\t * @param {string} text Message to display\n\t * @param {object} [options] options\n\t * @param {string} [options.type] notification type\n\t * @param {number} [options.timeout=0] timeout value, defaults to 0 (permanent)\n\t * @return {jQuery} jQuery element for notification row\n\t * @deprecated 17.0.0 use the `@nextcloud/dialogs` package\n\t */\n\tshow(text, options) {\n\t\tconst escapeHTML = function(text) {\n\t\t\treturn text.toString()\n\t\t\t\t.split('&').join('&')\n\t\t\t\t.split('<').join('<')\n\t\t\t\t.split('>').join('>')\n\t\t\t\t.split('\"').join('"')\n\t\t\t\t.split('\\'').join(''')\n\t\t}\n\n\t\toptions = options || {}\n\t\toptions.timeout = (!options.timeout) ? TOAST_PERMANENT_TIMEOUT : options.timeout\n\t\tconst toast = showMessage(escapeHTML(text), options)\n\t\ttoast.toastElement.toastify = toast\n\t\treturn $(toast.toastElement)\n\t},\n\n\t/**\n\t * Updates (replaces) a sanitized notification.\n\t *\n\t * @param {string} text Message to display\n\t * @return {jQuery} JQuery element for notificaiton row\n\t * @deprecated 17.0.0 use the `@nextcloud/dialogs` package\n\t */\n\tshowUpdate(text) {\n\t\tif (this.updatableNotification) {\n\t\t\tthis.updatableNotification.hideToast()\n\t\t}\n\t\tthis.updatableNotification = showMessage(text, { timeout: TOAST_PERMANENT_TIMEOUT })\n\t\tthis.updatableNotification.toastElement.toastify = this.updatableNotification\n\t\treturn $(this.updatableNotification.toastElement)\n\t},\n\n\t/**\n\t * Shows a notification that disappears after x seconds, default is\n\t * 7 seconds\n\t *\n\t * @param {string} text Message to show\n\t * @param {Array} [options] options array\n\t * @param {number} [options.timeout=7] timeout in seconds, if this is 0 it will show the message permanently\n\t * @param {boolean} [options.isHTML=false] an indicator for HTML notifications (true) or text (false)\n\t * @param {string} [options.type] notification type\n\t * @return {JQuery} the toast element\n\t * @deprecated 17.0.0 use the `@nextcloud/dialogs` package\n\t */\n\tshowTemporary(text, options) {\n\t\toptions = options || {}\n\t\toptions.timeout = options.timeout || TOAST_DEFAULT_TIMEOUT\n\t\tconst toast = showMessage(text, options)\n\t\ttoast.toastElement.toastify = toast\n\t\treturn $(toast.toastElement)\n\t},\n\n\t/**\n\t * Returns whether a notification is hidden.\n\t *\n\t * @return {boolean}\n\t * @deprecated 17.0.0 use the `@nextcloud/dialogs` package\n\t */\n\tisHidden() {\n\t\treturn !$('#content').find('.toastify').length\n\t},\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport _ from 'underscore'\nimport $ from 'jquery'\n\nimport OC from './index'\nimport Notification from './notification'\n\n/**\n * Warn users that the connection to the server was lost temporarily\n *\n * This function is throttled to prevent stacked notfications.\n * After 7sec the first notification is gone, then we can show another one\n * if necessary.\n */\nexport const ajaxConnectionLostHandler = _.throttle(() => {\n\tNotification.showTemporary(t('core', 'Connection to server lost'))\n}, 7 * 1000, { trailing: false })\n\n/**\n * Process ajax error, redirects to main page\n * if an error/auth error status was returned.\n *\n * @param {XMLHttpRequest} xhr xhr request\n */\nexport const processAjaxError = xhr => {\n\t// purposefully aborted request ?\n\t// OC._userIsNavigatingAway needed to distinguish ajax calls cancelled by navigating away\n\t// from calls cancelled by failed cross-domain ajax due to SSO redirect\n\tif (xhr.status === 0 && (xhr.statusText === 'abort' || xhr.statusText === 'timeout' || OC._reloadCalled)) {\n\t\treturn\n\t}\n\n\tif (_.contains([302, 303, 307, 401], xhr.status) && OC.currentUser) {\n\t\t// sometimes \"beforeunload\" happens later, so need to defer the reload a bit\n\t\tsetTimeout(function() {\n\t\t\tif (!OC._userIsNavigatingAway && !OC._reloadCalled) {\n\t\t\t\tlet timer = 0\n\t\t\t\tconst seconds = 5\n\t\t\t\tconst interval = setInterval(function() {\n\t\t\t\t\tNotification.showUpdate(n('core', 'Problem loading page, reloading in %n second', 'Problem loading page, reloading in %n seconds', seconds - timer))\n\t\t\t\t\tif (timer >= seconds) {\n\t\t\t\t\t\tclearInterval(interval)\n\t\t\t\t\t\tOC.reload()\n\t\t\t\t\t}\n\t\t\t\t\ttimer++\n\t\t\t\t}, 1000 // 1 second interval\n\t\t\t\t)\n\n\t\t\t\t// only call reload once\n\t\t\t\tOC._reloadCalled = true\n\t\t\t}\n\t\t}, 100)\n\t} else if (xhr.status === 0) {\n\t\t// Connection lost (e.g. WiFi disconnected or server is down)\n\t\tsetTimeout(function() {\n\t\t\tif (!OC._userIsNavigatingAway && !OC._reloadCalled) {\n\t\t\t\t// TODO: call method above directly\n\t\t\t\tOC._ajaxConnectionLostHandler()\n\t\t\t}\n\t\t}, 100)\n\t}\n}\n\n/**\n * Registers XmlHttpRequest object for global error processing.\n *\n * This means that if this XHR object returns 401 or session timeout errors,\n * the current page will automatically be reloaded.\n *\n * @param {XMLHttpRequest} xhr xhr request\n */\nexport const registerXHRForErrorProcessing = xhr => {\n\tconst loadCallback = () => {\n\t\tif (xhr.readyState !== 4) {\n\t\t\treturn\n\t\t}\n\n\t\tif ((xhr.status >= 200 && xhr.status < 300) || xhr.status === 304) {\n\t\t\treturn\n\t\t}\n\n\t\t// fire jquery global ajax error handler\n\t\t$(document).trigger(new $.Event('ajaxError'), xhr)\n\t}\n\n\tconst errorCallback = () => {\n\t\t// fire jquery global ajax error handler\n\t\t$(document).trigger(new $.Event('ajaxError'), xhr)\n\t}\n\n\tif (xhr.addEventListener) {\n\t\txhr.addEventListener('load', loadCallback)\n\t\txhr.addEventListener('error', errorCallback)\n\t}\n\n}\n","/**\n * @copyright Bernhard Posselt 2014\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport $ from 'jquery'\n\nlet dynamicSlideToggleEnabled = false\n\nconst Apps = {\n\tenableDynamicSlideToggle() {\n\t\tdynamicSlideToggleEnabled = true\n\t},\n}\n\n/**\n * Shows the #app-sidebar and add .with-app-sidebar to subsequent siblings\n *\n * @param {object} [$el] sidebar element to show, defaults to $('#app-sidebar')\n */\nApps.showAppSidebar = function($el) {\n\tconst $appSidebar = $el || $('#app-sidebar')\n\t$appSidebar.removeClass('disappear').show()\n\t$('#app-content').trigger(new $.Event('appresized'))\n}\n\n/**\n * Shows the #app-sidebar and removes .with-app-sidebar from subsequent\n * siblings\n *\n * @param {object} [$el] sidebar element to hide, defaults to $('#app-sidebar')\n */\nApps.hideAppSidebar = function($el) {\n\tconst $appSidebar = $el || $('#app-sidebar')\n\t$appSidebar.hide().addClass('disappear')\n\t$('#app-content').trigger(new $.Event('appresized'))\n}\n\n/**\n * Provides a way to slide down a target area through a button and slide it\n * up if the user clicks somewhere else. Used for the news app settings and\n * add new field.\n *\n * Usage:\n * <button data-apps-slide-toggle=\".slide-area\">slide</button>\n * <div class=\".slide-area\" class=\"hidden\">I'm sliding up</div>\n */\nexport const registerAppsSlideToggle = () => {\n\tlet buttons = $('[data-apps-slide-toggle]')\n\n\tif (buttons.length === 0) {\n\t\t$('#app-navigation').addClass('without-app-settings')\n\t}\n\n\t$(document).click(function(event) {\n\n\t\tif (dynamicSlideToggleEnabled) {\n\t\t\tbuttons = $('[data-apps-slide-toggle]')\n\t\t}\n\n\t\tbuttons.each(function(index, button) {\n\n\t\t\tconst areaSelector = $(button).data('apps-slide-toggle')\n\t\t\tconst area = $(areaSelector)\n\n\t\t\t/**\n\t\t\t *\n\t\t\t */\n\t\t\tfunction hideArea() {\n\t\t\t\tarea.slideUp(OC.menuSpeed * 4, function() {\n\t\t\t\t\tarea.trigger(new $.Event('hide'))\n\t\t\t\t})\n\t\t\t\tarea.removeClass('opened')\n\t\t\t\t$(button).removeClass('opened')\n\t\t\t}\n\n\t\t\t/**\n\t\t\t *\n\t\t\t */\n\t\t\tfunction showArea() {\n\t\t\t\tarea.slideDown(OC.menuSpeed * 4, function() {\n\t\t\t\t\tarea.trigger(new $.Event('show'))\n\t\t\t\t})\n\t\t\t\tarea.addClass('opened')\n\t\t\t\t$(button).addClass('opened')\n\t\t\t\tconst input = $(areaSelector + ' [autofocus]')\n\t\t\t\tif (input.length === 1) {\n\t\t\t\t\tinput.focus()\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// do nothing if the area is animated\n\t\t\tif (!area.is(':animated')) {\n\n\t\t\t\t// button toggles the area\n\t\t\t\tif ($(button).is($(event.target).closest('[data-apps-slide-toggle]'))) {\n\t\t\t\t\tif (area.is(':visible')) {\n\t\t\t\t\t\thideArea()\n\t\t\t\t\t} else {\n\t\t\t\t\t\tshowArea()\n\t\t\t\t\t}\n\n\t\t\t\t\t// all other areas that have not been clicked but are open\n\t\t\t\t\t// should be slid up\n\t\t\t\t} else {\n\t\t\t\t\tconst closest = $(event.target).closest(areaSelector)\n\t\t\t\t\tif (area.is(':visible') && closest[0] !== area[0]) {\n\t\t\t\t\t\thideArea()\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\n\t})\n}\n\nexport default Apps\n","/**\n * @copyright Copyright (c) 2016 Joas Schilling <coding@schilljs.com>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport $ from 'jquery'\nimport { generateOcsUrl } from '@nextcloud/router'\n\nimport OC from '../OC/index'\n\n/**\n * @param {string} method 'post' or 'delete'\n * @param {string} endpoint endpoint\n * @param {object} [options] destructuring object\n * @param {object} [options.data] option data\n * @param {Function} [options.success] success callback\n * @param {Function} [options.error] error callback\n */\nfunction call(method, endpoint, options) {\n\tif ((method === 'post' || method === 'delete') && OC.PasswordConfirmation.requiresPasswordConfirmation()) {\n\t\tOC.PasswordConfirmation.requirePasswordConfirmation(_.bind(call, this, method, endpoint, options))\n\t\treturn\n\t}\n\n\toptions = options || {}\n\t$.ajax({\n\t\ttype: method.toUpperCase(),\n\t\turl: generateOcsUrl('apps/provisioning_api/api/v1/config/apps') + endpoint,\n\t\tdata: options.data || {},\n\t\tsuccess: options.success,\n\t\terror: options.error,\n\t})\n}\n\n/**\n * @param {object} [options] destructuring object\n * @param {Function} [options.success] success callback\n * @since 11.0.0\n */\nexport function getApps(options) {\n\tcall('get', '', options)\n}\n\n/**\n * @param {string} app app id\n * @param {object} [options] destructuring object\n * @param {Function} [options.success] success callback\n * @param {Function} [options.error] error callback\n * @since 11.0.0\n */\nexport function getKeys(app, options) {\n\tcall('get', '/' + app, options)\n}\n\n/**\n * @param {string} app app id\n * @param {string} key key\n * @param {string | Function} defaultValue default value\n * @param {object} [options] destructuring object\n * @param {Function} [options.success] success callback\n * @param {Function} [options.error] error callback\n * @since 11.0.0\n */\nexport function getValue(app, key, defaultValue, options) {\n\toptions = options || {}\n\toptions.data = {\n\t\tdefaultValue,\n\t}\n\n\tcall('get', '/' + app + '/' + key, options)\n}\n\n/**\n * @param {string} app app id\n * @param {string} key key\n * @param {string} value value\n * @param {object} [options] destructuring object\n * @param {Function} [options.success] success callback\n * @param {Function} [options.error] error callback\n * @since 11.0.0\n */\nexport function setValue(app, key, value, options) {\n\toptions = options || {}\n\toptions.data = {\n\t\tvalue,\n\t}\n\n\tcall('post', '/' + app + '/' + key, options)\n}\n\n/**\n * @param {string} app app id\n * @param {string} key key\n * @param {object} [options] destructuring object\n * @param {Function} [options.success] success callback\n * @param {Function} [options.error] error callback\n * @since 11.0.0\n */\nexport function deleteKey(app, key, options) {\n\tcall('delete', '/' + app + '/' + key, options)\n}\n","/**\n * @copyright Copyright (c) 2016 Joas Schilling <coding@schilljs.com>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Joas Schilling <coding@schilljs.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Jörn Friedrich Dreyer <jfd@butonic.de>\n * @author Robin Appelman <robin@icewind.nl>\n * @author Vincent Petry <vincent@nextcloud.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n/* eslint-disable */\n import { getValue, setValue, getApps, getKeys, deleteKey } from '../OCP/appconfig'\n\nexport const appConfig = window.oc_appconfig || {}\n\n/**\n * @namespace\n * @deprecated 16.0.0 Use OCP.AppConfig instead\n */\nexport const AppConfig = {\n\t/**\n\t * @deprecated Use OCP.AppConfig.getValue() instead\n\t */\n\tgetValue: function(app, key, defaultValue, callback) {\n\t\tgetValue(app, key, defaultValue, {\n\t\t\tsuccess: callback\n\t\t})\n\t},\n\n\t/**\n\t * @deprecated Use OCP.AppConfig.setValue() instead\n\t */\n\tsetValue: function(app, key, value) {\n\t\tsetValue(app, key, value)\n\t},\n\n\t/**\n\t * @deprecated Use OCP.AppConfig.getApps() instead\n\t */\n\tgetApps: function(callback) {\n\t\tgetApps({\n\t\t\tsuccess: callback\n\t\t})\n\t},\n\n\t/**\n\t * @deprecated Use OCP.AppConfig.getKeys() instead\n\t */\n\tgetKeys: function(app, callback) {\n\t\tgetKeys(app, {\n\t\t\tsuccess: callback\n\t\t})\n\t},\n\n\t/**\n\t * @deprecated Use OCP.AppConfig.deleteKey() instead\n\t */\n\tdeleteKey: function(app, key) {\n\t\tdeleteKey(app, key)\n\t}\n\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nconst appswebroots = (window._oc_appswebroots !== undefined) ? window._oc_appswebroots : false\n\nexport default appswebroots\n","/**\n * Copyright (c) 2015\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n/* eslint-disable */\nimport _ from 'underscore'\nimport { dav } from 'davclient.js'\n\nconst methodMap = {\n\tcreate: 'POST',\n\tupdate: 'PROPPATCH',\n\tpatch: 'PROPPATCH',\n\tdelete: 'DELETE',\n\tread: 'PROPFIND'\n}\n\n// Throw an error when a URL is needed, and none is supplied.\nfunction urlError() {\n\tthrow new Error('A \"url\" property or function must be specified')\n}\n\n/**\n * Convert a single propfind result to JSON\n *\n * @param {Object} result\n * @param {Object} davProperties properties mapping\n */\nfunction parsePropFindResult(result, davProperties) {\n\tif (_.isArray(result)) {\n\t\treturn _.map(result, function(subResult) {\n\t\t\treturn parsePropFindResult(subResult, davProperties)\n\t\t})\n\t}\n\tvar props = {\n\t\thref: result.href\n\t}\n\n\t_.each(result.propStat, function(propStat) {\n\t\tif (propStat.status !== 'HTTP/1.1 200 OK') {\n\t\t\treturn\n\t\t}\n\n\t\tfor (var key in propStat.properties) {\n\t\t\tvar propKey = key\n\t\t\tif (key in davProperties) {\n\t\t\t\tpropKey = davProperties[key]\n\t\t\t}\n\t\t\tprops[propKey] = propStat.properties[key]\n\t\t}\n\t})\n\n\tif (!props.id) {\n\t\t// parse id from href\n\t\tprops.id = parseIdFromLocation(props.href)\n\t}\n\n\treturn props\n}\n\n/**\n * Parse ID from location\n *\n * @param {string} url url\n * @returns {string} id\n */\nfunction parseIdFromLocation(url) {\n\tvar queryPos = url.indexOf('?')\n\tif (queryPos > 0) {\n\t\turl = url.substr(0, queryPos)\n\t}\n\n\tvar parts = url.split('/')\n\tvar result\n\tdo {\n\t\tresult = parts[parts.length - 1]\n\t\tparts.pop()\n\t\t// note: first result can be empty when there is a trailing slash,\n\t\t// so we take the part before that\n\t} while (!result && parts.length > 0)\n\n\treturn result\n}\n\nfunction isSuccessStatus(status) {\n\treturn status >= 200 && status <= 299\n}\n\nfunction convertModelAttributesToDavProperties(attrs, davProperties) {\n\tvar props = {}\n\tvar key\n\tfor (key in attrs) {\n\t\tvar changedProp = davProperties[key]\n\t\tvar value = attrs[key]\n\t\tif (!changedProp) {\n\t\t\tconsole.warn('No matching DAV property for property \"' + key)\n\t\t\tchangedProp = key\n\t\t}\n\t\tif (_.isBoolean(value) || _.isNumber(value)) {\n\t\t\t// convert to string\n\t\t\tvalue = '' + value\n\t\t}\n\t\tprops[changedProp] = value\n\t}\n\treturn props\n}\n\nfunction callPropFind(client, options, model, headers) {\n\treturn client.propFind(\n\t\toptions.url,\n\t\t_.values(options.davProperties) || [],\n\t\toptions.depth,\n\t\theaders\n\t).then(function(response) {\n\t\tif (isSuccessStatus(response.status)) {\n\t\t\tif (_.isFunction(options.success)) {\n\t\t\t\tvar propsMapping = _.invert(options.davProperties)\n\t\t\t\tvar results = parsePropFindResult(response.body, propsMapping)\n\t\t\t\tif (options.depth > 0) {\n\t\t\t\t\t// discard root entry\n\t\t\t\t\tresults.shift()\n\t\t\t\t}\n\n\t\t\t\toptions.success(results)\n\n\t\t\t}\n\t\t} else if (_.isFunction(options.error)) {\n\t\t\toptions.error(response)\n\t\t}\n\t})\n}\n\nfunction callPropPatch(client, options, model, headers) {\n\treturn client.propPatch(\n\t\toptions.url,\n\t\tconvertModelAttributesToDavProperties(model.changed, options.davProperties),\n\t\theaders\n\t).then(function(result) {\n\t\tif (isSuccessStatus(result.status)) {\n\t\t\tif (_.isFunction(options.success)) {\n\t\t\t\t// pass the object's own values because the server\n\t\t\t\t// does not return the updated model\n\t\t\t\toptions.success(model.toJSON())\n\t\t\t}\n\t\t} else if (_.isFunction(options.error)) {\n\t\t\toptions.error(result)\n\t\t}\n\t})\n\n}\n\nfunction callMkCol(client, options, model, headers) {\n\t// call MKCOL without data, followed by PROPPATCH\n\treturn client.request(\n\t\toptions.type,\n\t\toptions.url,\n\t\theaders,\n\t\tnull\n\t).then(function(result) {\n\t\tif (!isSuccessStatus(result.status)) {\n\t\t\tif (_.isFunction(options.error)) {\n\t\t\t\toptions.error(result)\n\t\t\t}\n\t\t\treturn\n\t\t}\n\n\t\tcallPropPatch(client, options, model, headers)\n\t})\n}\n\nfunction callMethod(client, options, model, headers) {\n\theaders['Content-Type'] = 'application/json'\n\treturn client.request(\n\t\toptions.type,\n\t\toptions.url,\n\t\theaders,\n\t\toptions.data\n\t).then(function(result) {\n\t\tif (!isSuccessStatus(result.status)) {\n\t\t\tif (_.isFunction(options.error)) {\n\t\t\t\toptions.error(result)\n\t\t\t}\n\t\t\treturn\n\t\t}\n\n\t\tif (_.isFunction(options.success)) {\n\t\t\tif (options.type === 'PUT' || options.type === 'POST' || options.type === 'MKCOL') {\n\t\t\t\t// pass the object's own values because the server\n\t\t\t\t// does not return anything\n\t\t\t\tvar responseJson = result.body || model.toJSON()\n\t\t\t\tvar locationHeader = result.xhr.getResponseHeader('Content-Location')\n\t\t\t\tif (options.type === 'POST' && locationHeader) {\n\t\t\t\t\tresponseJson.id = parseIdFromLocation(locationHeader)\n\t\t\t\t}\n\t\t\t\toptions.success(responseJson)\n\t\t\t\treturn\n\t\t\t}\n\t\t\t// if multi-status, parse\n\t\t\tif (result.status === 207) {\n\t\t\t\tvar propsMapping = _.invert(options.davProperties)\n\t\t\t\toptions.success(parsePropFindResult(result.body, propsMapping))\n\t\t\t} else {\n\t\t\t\toptions.success(result.body)\n\t\t\t}\n\t\t}\n\t})\n}\n\nexport const davCall = (options, model) => {\n\tvar client = new dav.Client({\n\t\tbaseUrl: options.url,\n\t\txmlNamespaces: _.extend({\n\t\t\t'DAV:': 'd',\n\t\t\t'http://owncloud.org/ns': 'oc'\n\t\t}, options.xmlNamespaces || {})\n\t})\n\tclient.resolveUrl = function() {\n\t\treturn options.url\n\t}\n\tvar headers = _.extend({\n\t\t'X-Requested-With': 'XMLHttpRequest',\n\t\t'requesttoken': OC.requestToken\n\t}, options.headers)\n\tif (options.type === 'PROPFIND') {\n\t\treturn callPropFind(client, options, model, headers)\n\t} else if (options.type === 'PROPPATCH') {\n\t\treturn callPropPatch(client, options, model, headers)\n\t} else if (options.type === 'MKCOL') {\n\t\treturn callMkCol(client, options, model, headers)\n\t} else {\n\t\treturn callMethod(client, options, model, headers)\n\t}\n}\n\n/**\n * DAV transport\n */\nexport const davSync = Backbone => (method, model, options) => {\n\tvar params = { type: methodMap[method] || method }\n\tvar isCollection = (model instanceof Backbone.Collection)\n\n\tif (method === 'update') {\n\t\t// if a model has an inner collection, it must define an\n\t\t// attribute \"hasInnerCollection\" that evaluates to true\n\t\tif (model.hasInnerCollection) {\n\t\t\t// if the model itself is a Webdav collection, use MKCOL\n\t\t\tparams.type = 'MKCOL'\n\t\t} else if (model.usePUT || (model.collection && model.collection.usePUT)) {\n\t\t\t// use PUT instead of PROPPATCH\n\t\t\tparams.type = 'PUT'\n\t\t}\n\t}\n\n\t// Ensure that we have a URL.\n\tif (!options.url) {\n\t\tparams.url = _.result(model, 'url') || urlError()\n\t}\n\n\t// Ensure that we have the appropriate request data.\n\tif (options.data == null && model && (method === 'create' || method === 'update' || method === 'patch')) {\n\t\tparams.data = JSON.stringify(options.attrs || model.toJSON(options))\n\t}\n\n\t// Don't process data on a non-GET request.\n\tif (params.type !== 'PROPFIND') {\n\t\tparams.processData = false\n\t}\n\n\tif (params.type === 'PROPFIND' || params.type === 'PROPPATCH') {\n\t\tvar davProperties = model.davProperties\n\t\tif (!davProperties && model.model) {\n\t\t\t// use dav properties from model in case of collection\n\t\t\tdavProperties = model.model.prototype.davProperties\n\t\t}\n\t\tif (davProperties) {\n\t\t\tif (_.isFunction(davProperties)) {\n\t\t\t\tparams.davProperties = davProperties.call(model)\n\t\t\t} else {\n\t\t\t\tparams.davProperties = davProperties\n\t\t\t}\n\t\t}\n\n\t\tparams.davProperties = _.extend(params.davProperties || {}, options.davProperties)\n\n\t\tif (_.isUndefined(options.depth)) {\n\t\t\tif (isCollection) {\n\t\t\t\toptions.depth = 1\n\t\t\t} else {\n\t\t\t\toptions.depth = 0\n\t\t\t}\n\t\t}\n\t}\n\n\t// Pass along `textStatus` and `errorThrown` from jQuery.\n\tvar error = options.error\n\toptions.error = function(xhr, textStatus, errorThrown) {\n\t\toptions.textStatus = textStatus\n\t\toptions.errorThrown = errorThrown\n\t\tif (error) {\n\t\t\terror.call(options.context, xhr, textStatus, errorThrown)\n\t\t}\n\t}\n\n\t// Make the request, allowing the user to override any Ajax options.\n\tvar xhr = options.xhr = Backbone.davCall(_.extend(params, options), model)\n\tmodel.trigger('request', model, xhr, options)\n\treturn xhr\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport VendorBackbone from 'backbone'\nimport { davCall, davSync } from './backbone-webdav'\n\nconst Backbone = VendorBackbone.noConflict()\n\n// Patch Backbone for DAV\nObject.assign(Backbone, {\n\tdavCall,\n\tdavSync: davSync(Backbone),\n})\n\nexport default Backbone\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nconst config = window._oc_config || {}\n\nexport default config\n","/**\n * @copyright 2017 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n/* eslint-disable */\nimport _ from 'underscore'\nimport $ from 'jquery'\nimport { Collection, Model, View } from 'backbone'\n\nimport OC from './index'\n\n/**\n * @class Contact\n */\nconst Contact = Model.extend({\n\tdefaults: {\n\t\tfullName: '',\n\t\tlastMessage: '',\n\t\tactions: [],\n\t\thasOneAction: false,\n\t\thasTwoActions: false,\n\t\thasManyActions: false\n\t},\n\n\t/**\n\t * @returns {undefined}\n\t */\n\tinitialize: function() {\n\t\t// Add needed property for easier template rendering\n\t\tif (this.get('actions').length === 0) {\n\t\t\tthis.set('hasOneAction', true)\n\t\t} else if (this.get('actions').length === 1) {\n\t\t\tthis.set('hasTwoActions', true)\n\t\t\tthis.set('secondAction', this.get('actions')[0])\n\t\t} else {\n\t\t\tthis.set('hasManyActions', true)\n\t\t}\n\t}\n})\n\n/**\n * @class ContactCollection\n * @private\n */\nconst ContactCollection = Collection.extend({\n\tmodel: Contact\n})\n\n/**\n * @class ContactsListView\n * @private\n */\nconst ContactsListView = View.extend({\n\n\t/** @type {ContactCollection} */\n\t_collection: undefined,\n\n\t/** @type {array} */\n\t_subViews: [],\n\n\t/**\n\t * @param {object} options\n\t * @returns {undefined}\n\t */\n\tinitialize: function(options) {\n\t\tthis._collection = options.collection\n\t},\n\n\t/**\n\t * @returns {self}\n\t */\n\trender: function() {\n\t\tvar self = this\n\t\tself.$el.html('')\n\t\tself._subViews = []\n\n\t\tself._collection.forEach(function(contact) {\n\t\t\tvar item = new ContactsListItemView({\n\t\t\t\tmodel: contact\n\t\t\t})\n\t\t\titem.render()\n\t\t\tself.$el.append(item.$el)\n\t\t\titem.on('toggle:actionmenu', self._onChildActionMenuToggle, self)\n\t\t\tself._subViews.push(item)\n\t\t})\n\n\t\treturn self\n\t},\n\n\t/**\n\t * Event callback to propagate opening (another) entry's action menu\n\t *\n\t * @param {type} $src\n\t * @returns {undefined}\n\t */\n\t_onChildActionMenuToggle: function($src) {\n\t\tthis._subViews.forEach(function(view) {\n\t\t\tview.trigger('parent:toggle:actionmenu', $src)\n\t\t})\n\t}\n})\n\n/**\n * @class ContactsListItemView\n * @private\n */\nconst ContactsListItemView = View.extend({\n\n\t/** @type {string} */\n\tclassName: 'contact',\n\n\t/** @type {undefined|function} */\n\t_template: undefined,\n\n\t/** @type {Contact} */\n\t_model: undefined,\n\n\t/** @type {boolean} */\n\t_actionMenuShown: false,\n\n\tevents: {\n\t\t'click .icon-more': '_onToggleActionsMenu'\n\t},\n\n\tcontactTemplate: require('./contactsmenu/contact.handlebars'),\n\n\t/**\n\t * @param {object} data\n\t * @returns {undefined}\n\t */\n\ttemplate: function(data) {\n\t\treturn this.contactTemplate(data)\n\t},\n\n\t/**\n\t * @param {object} options\n\t * @returns {undefined}\n\t */\n\tinitialize: function(options) {\n\t\tthis._model = options.model\n\t\tthis.on('parent:toggle:actionmenu', this._onOtherActionMenuOpened, this)\n\t},\n\n\t/**\n\t * @returns {self}\n\t */\n\trender: function() {\n\t\tthis.$el.html(this.template({\n\t\t\tcontact: this._model.toJSON()\n\t\t}))\n\t\tthis.delegateEvents()\n\n\t\t// Show placeholder if no avatar is available (avatar is rendered as img, not div)\n\t\tthis.$('div.avatar').imageplaceholder(this._model.get('fullName'))\n\n\t\t// Show tooltip for top action\n\t\tthis.$('.top-action').tooltip({ placement: 'left' })\n\t\t// Show tooltip for second action\n\t\tthis.$('.second-action').tooltip({ placement: 'left' })\n\n\t\treturn this\n\t},\n\n\t/**\n\t * Toggle the visibility of the action popover menu\n\t *\n\t * @private\n\t * @returns {undefined}\n\t */\n\t_onToggleActionsMenu: function() {\n\t\tthis._actionMenuShown = !this._actionMenuShown\n\t\tif (this._actionMenuShown) {\n\t\t\tthis.$('.menu').show()\n\t\t} else {\n\t\t\tthis.$('.menu').hide()\n\t\t}\n\t\tthis.trigger('toggle:actionmenu', this.$el)\n\t},\n\n\t/**\n\t * @private\n\t * @argument {jQuery} $src\n\t * @returns {undefined}\n\t */\n\t_onOtherActionMenuOpened: function($src) {\n\t\tif (this.$el.is($src)) {\n\t\t\t// Ignore\n\t\t\treturn\n\t\t}\n\t\tthis._actionMenuShown = false\n\t\tthis.$('.menu').hide()\n\t}\n})\n\n/**\n * @class ContactsMenuView\n * @private\n */\nconst ContactsMenuView = View.extend({\n\n\t/** @type {undefined|function} */\n\t_loadingTemplate: undefined,\n\n\t/** @type {undefined|function} */\n\t_errorTemplate: undefined,\n\n\t/** @type {undefined|function} */\n\t_contentTemplate: undefined,\n\n\t/** @type {undefined|function} */\n\t_contactsTemplate: undefined,\n\n\t/** @type {undefined|ContactCollection} */\n\t_contacts: undefined,\n\n\t/** @type {string} */\n\t_searchTerm: '',\n\n\tevents: {\n\t\t'input #contactsmenu-search': '_onSearch'\n\t},\n\n\ttemplates: {\n\t\tloading: require('./contactsmenu/loading.handlebars'),\n\t\terror: require('./contactsmenu/error.handlebars'),\n\t\tmenu: require('./contactsmenu/menu.handlebars'),\n\t\tlist: require('./contactsmenu/list.handlebars')\n\t},\n\n\t/**\n\t * @returns {undefined}\n\t */\n\t_onSearch: _.debounce(function(e) {\n\t\tvar searchTerm = this.$('#contactsmenu-search').val()\n\t\t// IE11 triggers an 'input' event after the view has been rendered\n\t\t// resulting in an endless loading loop. To prevent this, we remember\n\t\t// the last search term to savely ignore some events\n\t\t// See https://github.com/nextcloud/server/issues/5281\n\t\tif (searchTerm !== this._searchTerm) {\n\t\t\tthis.trigger('search', this.$('#contactsmenu-search').val())\n\t\t\tthis._searchTerm = searchTerm\n\t\t}\n\t}, 700),\n\n\t/**\n\t * @param {object} data\n\t * @returns {string}\n\t */\n\tloadingTemplate: function(data) {\n\t\treturn this.templates.loading(data)\n\t},\n\n\t/**\n\t * @param {object} data\n\t * @returns {string}\n\t */\n\terrorTemplate: function(data) {\n\t\treturn this.templates.error(\n\t\t\t_.extend({\n\t\t\t\tcouldNotLoadText: t('core', 'Could not load your contacts')\n\t\t\t}, data)\n\t\t)\n\t},\n\n\t/**\n\t * @param {object} data\n\t * @returns {string}\n\t */\n\tcontentTemplate: function(data) {\n\t\treturn this.templates.menu(\n\t\t\t_.extend({\n\t\t\t\tsearchContactsText: t('core', 'Search contacts …')\n\t\t\t}, data)\n\t\t)\n\t},\n\n\t/**\n\t * @param {object} data\n\t * @returns {string}\n\t */\n\tcontactsTemplate: function(data) {\n\t\treturn this.templates.list(\n\t\t\t_.extend({\n\t\t\t\tnoContactsFoundText: t('core', 'No contacts found'),\n\t\t\t\tshowAllContactsText: t('core', 'Show all contacts …'),\n\t\t\t\tcontactsAppMgmtText: t('core', 'Install the Contacts app')\n\t\t\t}, data)\n\t\t)\n\t},\n\n\t/**\n\t * @param {object} options\n\t * @returns {undefined}\n\t */\n\tinitialize: function(options) {\n\t\tthis.options = options\n\t},\n\n\t/**\n\t * @param {string} text\n\t * @returns {undefined}\n\t */\n\tshowLoading: function(text) {\n\t\tthis.render()\n\t\tthis._contacts = undefined\n\t\tthis.$('.content').html(this.loadingTemplate({\n\t\t\tloadingText: text\n\t\t}))\n\t},\n\n\t/**\n\t * @returns {undefined}\n\t */\n\tshowError: function() {\n\t\tthis.render()\n\t\tthis._contacts = undefined\n\t\tthis.$('.content').html(this.errorTemplate())\n\t},\n\n\t/**\n\t * @param {object} viewData\n\t * @param {string} searchTerm\n\t * @returns {undefined}\n\t */\n\tshowContacts: function(viewData, searchTerm) {\n\t\tthis._contacts = viewData.contacts\n\t\tthis.render({\n\t\t\tcontacts: viewData.contacts\n\t\t})\n\n\t\tvar list = new ContactsListView({\n\t\t\tcollection: viewData.contacts\n\t\t})\n\t\tlist.render()\n\t\tthis.$('.content').html(this.contactsTemplate({\n\t\t\tcontacts: viewData.contacts,\n\t\t\tsearchTerm: searchTerm,\n\t\t\tcontactsAppEnabled: viewData.contactsAppEnabled,\n\t\t\tcontactsAppURL: OC.generateUrl('/apps/contacts'),\n\t\t\tcanInstallApp: OC.isUserAdmin(),\n\t\t\tcontactsAppMgmtURL: OC.generateUrl('/settings/apps/social/contacts')\n\t\t}))\n\t\tthis.$('#contactsmenu-contacts').html(list.$el)\n\t},\n\n\t/**\n\t * @param {object} data\n\t * @returns {self}\n\t */\n\trender: function(data) {\n\t\tvar searchVal = this.$('#contactsmenu-search').val()\n\t\tthis.$el.html(this.contentTemplate(data))\n\n\t\t// Focus search\n\t\tthis.$('#contactsmenu-search').val(searchVal)\n\t\tthis.$('#contactsmenu-search').focus()\n\t\treturn this\n\t}\n\n})\n\n/**\n * @param {Object} options\n * @param {string} options.el\n * @class ContactsMenu\n * @memberOf OC\n */\nconst ContactsMenu = function(options) {\n\tthis.initialize(options)\n}\n\nContactsMenu.prototype = {\n\t/** @type {string} */\n\t$el: undefined,\n\n\t/** @type {ContactsMenuView} */\n\t_view: undefined,\n\n\t/** @type {Promise} */\n\t_contactsPromise: undefined,\n\n\t/**\n\t * @param {Object} options\n\t * @param {string} options.el - the selector of the element to render the menu in\n\t * @returns {undefined}\n\t */\n\tinitialize: function(options) {\n\t\tthis.$el = $(options.el)\n\n\t\tthis._view = new ContactsMenuView({\n\t\t\tel: this.$el,\n\t\t})\n\n\t\tthis._view.on('search', function(searchTerm) {\n\t\t\tthis.loadContacts(searchTerm)\n\t\t}, this)\n\t},\n\n\t/**\n\t * @private\n\t * @param {string|undefined} searchTerm\n\t * @returns {Promise}\n\t */\n\t_getContacts: function(searchTerm) {\n\t\tvar url = OC.generateUrl('/contactsmenu/contacts')\n\t\treturn Promise.resolve($.ajax(url, {\n\t\t\tmethod: 'POST',\n\t\t\tdata: {\n\t\t\t\tfilter: searchTerm\n\t\t\t}\n\t\t}))\n\t},\n\n\t/**\n\t * @param {string|undefined} searchTerm\n\t * @returns {undefined}\n\t */\n\tloadContacts: function(searchTerm) {\n\t\tvar self = this\n\n\t\tif (!self._contactsPromise) {\n\t\t\tself._contactsPromise = self._getContacts(searchTerm)\n\t\t}\n\n\t\tif (_.isUndefined(searchTerm) || searchTerm === '') {\n\t\t\tself._view.showLoading(t('core', 'Loading your contacts …'))\n\t\t} else {\n\t\t\tself._view.showLoading(t('core', 'Looking for {term} …', {\n\t\t\t\tterm: searchTerm\n\t\t\t}))\n\t\t}\n\t\treturn self._contactsPromise.then(function(data) {\n\t\t\t// Convert contact entries to Backbone collection\n\t\t\tdata.contacts = new ContactCollection(data.contacts)\n\n\t\t\tself._view.showContacts(data, searchTerm)\n\t\t}, function(e) {\n\t\t\tself._view.showError()\n\t\t\tconsole.error('There was an error loading your contacts', e)\n\t\t}).then(function() {\n\t\t\t// Delete promise, so that contacts are fetched again when the\n\t\t\t// menu is opened the next time.\n\t\t\tdelete self._contactsPromise\n\t\t}).catch(console.error.bind(this))\n\t}\n}\n\nexport default ContactsMenu\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Joas Schilling <coding@schilljs.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nconst rawUid = document\n\t.getElementsByTagName('head')[0]\n\t.getAttribute('data-user')\nconst displayName = document\n\t.getElementsByTagName('head')[0]\n\t.getAttribute('data-user-displayname')\n\nexport const currentUser = rawUid !== undefined ? rawUid : false\n\nexport const getCurrentUser = () => {\n\treturn {\n\t\tuid: currentUser,\n\t\tdisplayName,\n\t}\n}\n","/**\n * @copyright 2020 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nexport default class Search {\n\n\t/**\n\t * @deprecated 20.0.0, will be removed in Nextcloud 22\n\t */\n\tconstructor() {\n\t\tconsole.warn('OCA.Search is deprecated. Please use the unified search API instead')\n\t}\n\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport Search from './search'\n\n/**\n * Namespace for apps\n *\n * @namespace OCA\n */\nexport default {\n\t/**\n\t * @deprecated 20.0.0, will be removed in Nextcloud 22\n\t */\n\tSearch,\n}\n","/**\n * @copyright 2022 Christopher Ng <chrng8@gmail.com>\n *\n * @author Christopher Ng <chrng8@gmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n/**\n * Return whether the DOM event is an accessible mouse or keyboard element activation\n *\n * @param {Event} event DOM event\n *\n * @return {boolean}\n */\nexport const isA11yActivation = (event) => {\n\tif (event.type === 'click') {\n\t\treturn true\n\t}\n\tif (event.type === 'keydown' && event.key === 'Enter') {\n\t\treturn true\n\t}\n\treturn false\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n * @copyright Copyright (c) 2019 Gary Kim <gary@garykim.dev>\n *\n * @author Bartek Przybylski <bart.p.pl@gmail.com>\n * @author Christopher Schäpers <kondou@ts.unde.re>\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Daniel Calviño Sánchez <danxuliu@gmail.com>\n * @author Daniel Kesselberg <mail@danielkesselberg.de>\n * @author Florian Schunk <florian.schunk@rwth-aachen.de>\n * @author Gary Kim <gary@garykim.dev>\n * @author Hendrik Leppelsack <hendrik@leppelsack.de>\n * @author Jan-Christoph Borchardt <hey@jancborchardt.net>\n * @author Joas Schilling <coding@schilljs.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Jörn Friedrich Dreyer <jfd@butonic.de>\n * @author Julius Härtl <jus@bitgrid.net>\n * @author Loïc Hermann <loic.hermann@sciam.fr>\n * @author Morris Jobke <hey@morrisjobke.de>\n * @author Olivier Paroz <github@oparoz.com>\n * @author Robin Appelman <robin@icewind.nl>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n * @author Sujith Haridasan <Sujith_Haridasan@mentor.com>\n * @author Thomas Citharel <nextcloud@tcit.fr>\n * @author Thomas Müller <thomas.mueller@tmit.eu>\n * @author Thomas Tanghus <thomas@tanghus.net>\n * @author Vincent Petry <vincent@nextcloud.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n/* eslint-disable */\nimport _ from 'underscore'\nimport $ from 'jquery'\n\nimport OC from './index'\nimport OCA from '../OCA/index'\nimport { isA11yActivation } from '../Util/a11y'\n\n/**\n * this class to ease the usage of jquery dialogs\n */\nconst Dialogs = {\n\t// dialog button types\n\tYES_NO_BUTTONS: 70,\n\tOK_BUTTONS: 71,\n\n\tFILEPICKER_TYPE_CHOOSE: 1,\n\tFILEPICKER_TYPE_MOVE: 2,\n\tFILEPICKER_TYPE_COPY: 3,\n\tFILEPICKER_TYPE_COPY_MOVE: 4,\n\tFILEPICKER_TYPE_CUSTOM: 5,\n\n\t// used to name each dialog\n\tdialogsCounter: 0,\n\n\t/**\n\t * displays alert dialog\n\t * @param {string} text content of dialog\n\t * @param {string} title dialog title\n\t * @param {function} callback which will be triggered when user presses OK\n\t * @param {boolean} [modal] make the dialog modal\n\t */\n\talert: function(text, title, callback, modal) {\n\t\tthis.message(\n\t\t\ttext,\n\t\t\ttitle,\n\t\t\t'alert',\n\t\t\tDialogs.OK_BUTTON,\n\t\t\tcallback,\n\t\t\tmodal\n\t\t)\n\t},\n\t/**\n\t * displays info dialog\n\t * @param {string} text content of dialog\n\t * @param {string} title dialog title\n\t * @param {function} callback which will be triggered when user presses OK\n\t * @param {boolean} [modal] make the dialog modal\n\t */\n\tinfo: function(text, title, callback, modal) {\n\t\tthis.message(text, title, 'info', Dialogs.OK_BUTTON, callback, modal)\n\t},\n\n\t/**\n\t * displays confirmation dialog\n\t * @param {string} text content of dialog\n\t * @param {string} title dialog title\n\t * @param {function} callback which will be triggered when user presses OK (true or false would be passed to callback respectively)\n\t * @param {boolean} [modal] make the dialog modal\n\t * @returns {Promise}\n\t */\n\tconfirm: function(text, title, callback, modal) {\n\t\treturn this.message(\n\t\t\ttext,\n\t\t\ttitle,\n\t\t\t'notice',\n\t\t\tDialogs.YES_NO_BUTTONS,\n\t\t\tcallback,\n\t\t\tmodal\n\t\t)\n\t},\n\t/**\n\t * displays confirmation dialog\n\t * @param {string} text content of dialog\n\t * @param {string} title dialog title\n\t * @param {(number|{type: number, confirm: string, cancel: string, confirmClasses: string})} buttons text content of buttons\n\t * @param {function} callback which will be triggered when user presses OK (true or false would be passed to callback respectively)\n\t * @param {boolean} [modal] make the dialog modal\n\t * @returns {Promise}\n\t */\n\tconfirmDestructive: function(text, title, buttons, callback, modal) {\n\t\treturn this.message(\n\t\t\ttext,\n\t\t\ttitle,\n\t\t\t'none',\n\t\t\tbuttons,\n\t\t\tcallback,\n\t\t\tmodal === undefined ? true : modal\n\t\t)\n\t},\n\t/**\n\t * displays confirmation dialog\n\t * @param {string} text content of dialog\n\t * @param {string} title dialog title\n\t * @param {function} callback which will be triggered when user presses OK (true or false would be passed to callback respectively)\n\t * @param {boolean} [modal] make the dialog modal\n\t * @returns {Promise}\n\t */\n\tconfirmHtml: function(text, title, callback, modal) {\n\t\treturn this.message(\n\t\t\ttext,\n\t\t\ttitle,\n\t\t\t'notice',\n\t\t\tDialogs.YES_NO_BUTTONS,\n\t\t\tcallback,\n\t\t\tmodal,\n\t\t\ttrue\n\t\t)\n\t},\n\t/**\n\t * displays prompt dialog\n\t * @param {string} text content of dialog\n\t * @param {string} title dialog title\n\t * @param {function} callback which will be triggered when user presses OK (true or false would be passed to callback respectively)\n\t * @param {boolean} [modal] make the dialog modal\n\t * @param {string} name name of the input field\n\t * @param {boolean} password whether the input should be a password input\n\t * @returns {Promise}\n\t */\n\tprompt: function(text, title, callback, modal, name, password) {\n\t\treturn $.when(this._getMessageTemplate()).then(function($tmpl) {\n\t\t\tvar dialogName = 'oc-dialog-' + Dialogs.dialogsCounter + '-content'\n\t\t\tvar dialogId = '#' + dialogName\n\t\t\tvar $dlg = $tmpl.octemplate({\n\t\t\t\tdialog_name: dialogName,\n\t\t\t\ttitle: title,\n\t\t\t\tmessage: text,\n\t\t\t\ttype: 'notice'\n\t\t\t})\n\t\t\tvar input = $('<input/>')\n\t\t\tinput.attr('type', password ? 'password' : 'text').attr('id', dialogName + '-input').attr('placeholder', name)\n\t\t\tvar label = $('<label/>').attr('for', dialogName + '-input').text(name + ': ')\n\t\t\t$dlg.append(label)\n\t\t\t$dlg.append(input)\n\t\t\tif (modal === undefined) {\n\t\t\t\tmodal = false\n\t\t\t}\n\t\t\t$('body').append($dlg)\n\n\t\t\t// wrap callback in _.once():\n\t\t\t// only call callback once and not twice (button handler and close\n\t\t\t// event) but call it for the close event, if ESC or the x is hit\n\t\t\tif (callback !== undefined) {\n\t\t\t\tcallback = _.once(callback)\n\t\t\t}\n\n\t\t\tvar buttonlist = [{\n\t\t\t\ttext: t('core', 'No'),\n\t\t\t\tclick: function() {\n\t\t\t\t\tif (callback !== undefined) {\n\t\t\t\t\t\t// eslint-disable-next-line standard/no-callback-literal\n\t\t\t\t\t\tcallback(false, input.val())\n\t\t\t\t\t}\n\t\t\t\t\t$(dialogId).ocdialog('close')\n\t\t\t\t}\n\t\t\t}, {\n\t\t\t\ttext: t('core', 'Yes'),\n\t\t\t\tclick: function() {\n\t\t\t\t\tif (callback !== undefined) {\n\t\t\t\t\t\t// eslint-disable-next-line standard/no-callback-literal\n\t\t\t\t\t\tcallback(true, input.val())\n\t\t\t\t\t}\n\t\t\t\t\t$(dialogId).ocdialog('close')\n\t\t\t\t},\n\t\t\t\tdefaultButton: true\n\t\t\t}]\n\n\t\t\t$(dialogId).ocdialog({\n\t\t\t\tcloseOnEscape: true,\n\t\t\t\tmodal: modal,\n\t\t\t\tbuttons: buttonlist,\n\t\t\t\tclose: function() {\n\t\t\t\t\t// callback is already fired if Yes/No is clicked directly\n\t\t\t\t\tif (callback !== undefined) {\n\t\t\t\t\t\t// eslint-disable-next-line standard/no-callback-literal\n\t\t\t\t\t\tcallback(false, input.val())\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t})\n\t\t\tinput.focus()\n\t\t\tDialogs.dialogsCounter++\n\t\t})\n\t},\n\t/**\n\t * show a file picker to pick a file from\n\t *\n\t * In order to pick several types of mime types they need to be passed as an\n\t * array of strings.\n\t *\n\t * When no mime type filter is given only files can be selected. In order to\n\t * be able to select both files and folders \"['*', 'httpd/unix-directory']\"\n\t * should be used instead.\n\t *\n\t * @param {string} title dialog title\n\t * @param {function} callback which will be triggered when user presses Choose\n\t * @param {boolean} [multiselect] whether it should be possible to select multiple files\n\t * @param {string[]} [mimetypeFilter] mimetype to filter by - directories will always be included\n\t * @param {boolean} [modal] make the dialog modal\n\t * @param {string} [type] Type of file picker : Choose, copy, move, copy and move\n\t * @param {string} [path] path to the folder that the the file can be picket from\n\t * @param {Object} [options] additonal options that need to be set\n\t * @param {Function} [options.filter] filter function for advanced filtering\n\t */\n\tfilepicker: function(title, callback, multiselect, mimetypeFilter, modal, type, path, options) {\n\t\tvar self = this\n\n\t\tthis.filepicker.sortField = 'name'\n\t\tthis.filepicker.sortOrder = 'asc'\n\t\t// avoid opening the picker twice\n\t\tif (this.filepicker.loading) {\n\t\t\treturn\n\t\t}\n\n\t\tif (type === undefined) {\n\t\t\ttype = this.FILEPICKER_TYPE_CHOOSE\n\t\t}\n\n\t\tvar emptyText = t('core', 'No files in here')\n\t\tvar newText = t('files', 'New folder')\n\t\tif (type === this.FILEPICKER_TYPE_COPY || type === this.FILEPICKER_TYPE_MOVE || type === this.FILEPICKER_TYPE_COPY_MOVE) {\n\t\t\temptyText = t('core', 'No more subfolders in here')\n\t\t}\n\n\t\tthis.filepicker.loading = true\n\t\tthis.filepicker.filesClient = (OCA.Sharing && OCA.Sharing.PublicApp && OCA.Sharing.PublicApp.fileList) ? OCA.Sharing.PublicApp.fileList.filesClient : OC.Files.getClient()\n\n\t\tthis.filelist = null\n\t\tpath = path || ''\n\t\toptions = Object.assign({\n\t\t\tallowDirectoryChooser: false\n\t\t}, options)\n\n\t\t$.when(this._getFilePickerTemplate()).then(function($tmpl) {\n\t\t\tself.filepicker.loading = false\n\t\t\tvar dialogName = 'oc-dialog-filepicker-content'\n\t\t\tif (self.$filePicker) {\n\t\t\t\tself.$filePicker.ocdialog('close')\n\t\t\t}\n\n\t\t\tif (mimetypeFilter === undefined || mimetypeFilter === null) {\n\t\t\t\tmimetypeFilter = []\n\t\t\t}\n\t\t\tif (typeof (mimetypeFilter) === 'string') {\n\t\t\t\tmimetypeFilter = [mimetypeFilter]\n\t\t\t}\n\n\t\t\tself.$filePicker = $tmpl.octemplate({\n\t\t\t\tdialog_name: dialogName,\n\t\t\t\ttitle: title,\n\t\t\t\temptytext: emptyText,\n\t\t\t\tnewtext: newText,\n\t\t\t\tnameCol: t('core', 'Name'),\n\t\t\t\tsizeCol: t('core', 'Size'),\n\t\t\t\tmodifiedCol: t('core', 'Modified')\n\t\t\t}).data('path', path).data('multiselect', multiselect).data('mimetype', mimetypeFilter).data('allowDirectoryChooser', options.allowDirectoryChooser)\n\t\t\tif (typeof(options.filter) === 'function') {\n\t\t\t\tself.$filePicker.data('filter', options.filter)\n\t\t\t}\n\n\t\t\tif (modal === undefined) {\n\t\t\t\tmodal = false\n\t\t\t}\n\t\t\tif (multiselect === undefined) {\n\t\t\t\tmultiselect = false\n\t\t\t}\n\n\t\t\t$(options?.target ?? 'body').prepend(self.$filePicker)\n\n\t\t\tself.$showGridView = $('button#picker-showgridview')\n\t\t\tself.$showGridView.on('click keydown', function(event) {\n\t\t\t\tif (isA11yActivation(event)) {\n\t\t\t\t\tself._onGridviewChange()\n\t\t\t\t}\n\t\t\t})\n\t\t\tself._getGridSettings()\n\n\t\t\tvar newButton = self.$filePicker.find('.actions.creatable .button-add')\n\t\t\tif (type === self.FILEPICKER_TYPE_CHOOSE && !options.allowDirectoryChooser) {\n\t\t\t\tself.$filePicker.find('.actions.creatable').hide()\n\t\t\t}\n\t\t\tnewButton.on('focus', function() {\n\t\t\t\tself.$filePicker.ocdialog('setEnterCallback', function(event) {\n\t\t\t\t\tevent.stopImmediatePropagation()\n\t\t\t\t\tevent.preventDefault()\n\t\t\t\t\tnewButton.click()\n\t\t\t\t})\n\t\t\t})\n\t\t\tnewButton.on('blur', function() {\n\t\t\t\tself.$filePicker.ocdialog('unsetEnterCallback')\n\t\t\t})\n\n\t\t\tOC.registerMenu(newButton, self.$filePicker.find('.menu'), function() {\n\t\t\t\t$input.tooltip('hide')\n\t\t\t\t$input.focus()\n\t\t\t\tself.$filePicker.ocdialog('setEnterCallback', function(event) {\n\t\t\t\t\tevent.stopImmediatePropagation()\n\t\t\t\t\tevent.preventDefault()\n\t\t\t\t\tself.$filePicker.submit()\n\t\t\t\t})\n\t\t\t\tvar newName = $input.val()\n\t\t\t\tvar lastPos = newName.lastIndexOf('.')\n\t\t\t\tif (lastPos === -1) {\n\t\t\t\t\tlastPos = newName.length\n\t\t\t\t}\n\t\t\t\t$input.selectRange(0, lastPos)\n\t\t\t})\n\t\t\tvar $form = self.$filePicker.find('.filenameform')\n\t\t\tvar $input = $form.find('input[type=\\'text\\']')\n\t\t\tvar $submit = $form.find('input[type=\\'submit\\']')\n\t\t\t$input.on('keydown', function(event) {\n\t\t\t\tif (isA11yActivation(event)) {\n\t\t\t\t\tevent.stopImmediatePropagation()\n\t\t\t\t\tevent.preventDefault()\n\t\t\t\t\t$form.submit()\n\t\t\t\t}\n\t\t\t})\n\t\t\t$submit.on('click', function(event) {\n\t\t\t\tevent.stopImmediatePropagation()\n\t\t\t\tevent.preventDefault()\n\t\t\t\t$form.submit()\n\t\t\t})\n\n\t\t\t/**\n\t\t\t * Checks whether the given file name is valid.\n\t\t\t *\n\t\t\t * @param name file name to check\n\t\t\t * @return true if the file name is valid.\n\t\t\t * @throws a string exception with an error message if\n\t\t\t * the file name is not valid\n\t\t\t *\n\t\t\t * NOTE: This function is duplicated in the files app:\n\t\t\t * https://github.com/nextcloud/server/blob/b9bc2417e7a8dc81feb0abe20359bedaf864f790/apps/files/js/files.js#L127-L148\n\t\t\t */\n\t\t\tvar isFileNameValid = function (name) {\n\t\t\t\tvar trimmedName = name.trim();\n\t\t\t\tif (trimmedName === '.' || trimmedName === '..')\n\t\t\t\t{\n\t\t\t\t\tthrow t('files', '\"{name}\" is an invalid file name.', {name: name})\n\t\t\t\t} else if (trimmedName.length === 0) {\n\t\t\t\t\tthrow t('files', 'File name cannot be empty.')\n\t\t\t\t} else if (trimmedName.indexOf('/') !== -1) {\n\t\t\t\t\tthrow t('files', '\"/\" is not allowed inside a file name.')\n\t\t\t\t} else if (!!(trimmedName.match(OC.config.blacklist_files_regex))) {\n\t\t\t\t\tthrow t('files', '\"{name}\" is not an allowed filetype', {name: name})\n\t\t\t\t}\n\n\t\t\t\treturn true\n\t\t\t}\n\n\t\t\tvar checkInput = function() {\n\t\t\t\tvar filename = $input.val()\n\t\t\t\ttry {\n\t\t\t\t\tif (!isFileNameValid(filename)) {\n\t\t\t\t\t\t// isFileNameValid(filename) throws an exception itself\n\t\t\t\t\t} else if (self.filelist.find(function(file) {\n\t\t\t\t\t\treturn file.name === this\n\t\t\t\t\t}, filename)) {\n\t\t\t\t\t\tthrow t('files', '{newName} already exists', { newName: filename }, undefined, {\n\t\t\t\t\t\t\tescape: false\n\t\t\t\t\t\t})\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn true\n\t\t\t\t\t}\n\t\t\t\t} catch (error) {\n\t\t\t\t\t$input.attr('title', error)\n\t\t\t\t\t$input.tooltip({\n\t\t\t\t\t\tplacement: 'right',\n\t\t\t\t\t\ttrigger: 'manual',\n\t\t\t\t\t\t'container': '.newFolderMenu'\n\t\t\t\t\t})\n\t\t\t\t\t$input.tooltip('_fixTitle')\n\t\t\t\t\t$input.tooltip('show')\n\t\t\t\t\t$input.addClass('error')\n\t\t\t\t}\n\t\t\t\treturn false\n\t\t\t}\n\n\t\t\t$form.on('submit', function(event) {\n\t\t\t\tevent.stopPropagation()\n\t\t\t\tevent.preventDefault()\n\n\t\t\t\tif (checkInput()) {\n\t\t\t\t\tvar newname = $input.val()\n\t\t\t\t\tself.filepicker.filesClient.createDirectory(self.$filePicker.data('path') + \"/\" + newname).always(function (status) {\n\t\t\t\t\t\tself._fillFilePicker(self.$filePicker.data('path') + \"/\" + newname, type)\n\t\t\t\t\t})\n\t\t\t\t\tOC.hideMenus()\n\t\t\t\t\tself.$filePicker.ocdialog('unsetEnterCallback')\n\t\t\t\t\tself.$filePicker.click()\n\t\t\t\t\t$input.val(newText)\n\t\t\t\t}\n\t\t\t})\n\t\t\t$input.on('input', function(event) {\n\t\t\t\t$input.tooltip('hide')\n\t\t\t})\n\n\t\t\tself.$filePicker.ready(function() {\n\t\t\t\tself.$fileListHeader = self.$filePicker.find('.filelist thead tr')\n\t\t\t\tself.$filelist = self.$filePicker.find('.filelist tbody')\n\t\t\t\tself.$filelistContainer = self.$filePicker.find('.filelist-container')\n\t\t\t\tself.$dirTree = self.$filePicker.find('.dirtree')\n\t\t\t\tself.$dirTree.on('click keydown', 'div:not(:last-child)', self, function(event) {\n\t\t\t\t\tif (isA11yActivation(event)) {\n\t\t\t\t\t\tself._handleTreeListSelect(event, type)\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\tself.$filelist.on('click keydown', 'tr', function(event) {\n\t\t\t\t\tif (isA11yActivation(event)) {\n\t\t\t\t\t\tself._handlePickerClick(event, $(this), type)\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\tself.$fileListHeader.on('click keydown', 'a', function(event) {\n\t\t\t\t\tif (isA11yActivation(event)) {\n\t\t\t\t\t\tvar dir = self.$filePicker.data('path')\n\t\t\t\t\t\tself.filepicker.sortField = $(event.currentTarget).data('sort')\n\t\t\t\t\t\tself.filepicker.sortOrder = self.filepicker.sortOrder === 'asc' ? 'desc' : 'asc'\n\t\t\t\t\t\tself._fillFilePicker(dir, type)\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\tself._fillFilePicker(path, type)\n\t\t\t})\n\n\t\t\t// build buttons\n\t\t\tvar functionToCall = function(returnType) {\n\t\t\t\tif (callback !== undefined) {\n\t\t\t\t\tvar datapath\n\t\t\t\t\tif (multiselect === true) {\n\t\t\t\t\t\tdatapath = []\n\t\t\t\t\t\tself.$filelist.find('tr.filepicker_element_selected').each(function(index, element) {\n\t\t\t\t\t\t\tdatapath.push(self.$filePicker.data('path') + '/' + $(element).data('entryname'))\n\t\t\t\t\t\t})\n\t\t\t\t\t} else {\n\t\t\t\t\t\tdatapath = self.$filePicker.data('path')\n\t\t\t\t\t\tvar selectedName = self.$filelist.find('tr.filepicker_element_selected').data('entryname')\n\t\t\t\t\t\tif (selectedName) {\n\t\t\t\t\t\t\tdatapath += '/' + selectedName\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tcallback(datapath, returnType)\n\t\t\t\t\tself.$filePicker.ocdialog('close')\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tvar chooseCallback = function() {\n\t\t\t\tfunctionToCall(Dialogs.FILEPICKER_TYPE_CHOOSE)\n\t\t\t}\n\n\t\t\tvar copyCallback = function() {\n\t\t\t\tfunctionToCall(Dialogs.FILEPICKER_TYPE_COPY)\n\t\t\t}\n\n\t\t\tvar moveCallback = function() {\n\t\t\t\tfunctionToCall(Dialogs.FILEPICKER_TYPE_MOVE)\n\t\t\t}\n\n\t\t\tvar buttonlist = []\n\t\t\tif (type === Dialogs.FILEPICKER_TYPE_CHOOSE) {\n\t\t\t\tbuttonlist.push({\n\t\t\t\t\ttext: t('core', 'Choose'),\n\t\t\t\t\tclick: chooseCallback,\n\t\t\t\t\tdefaultButton: true\n\t\t\t\t})\n\t\t\t} else if (type === Dialogs.FILEPICKER_TYPE_CUSTOM) {\n\t\t\t\toptions.buttons.forEach(function(button) {\n\t\t\t\t\tbuttonlist.push({\n\t\t\t\t\t\ttext: button.text,\n\t\t\t\t\t\tclick: function() {\n\t\t\t\t\t\t\tfunctionToCall(button.type)\n\t\t\t\t\t\t},\n\t\t\t\t\t\tdefaultButton: button.defaultButton\n\t\t\t\t\t})\n\t\t\t\t})\n\t\t\t} else {\n\t\t\t\tif (type === Dialogs.FILEPICKER_TYPE_COPY || type === Dialogs.FILEPICKER_TYPE_COPY_MOVE) {\n\t\t\t\t\tbuttonlist.push({\n\t\t\t\t\t\ttext: t('core', 'Copy'),\n\t\t\t\t\t\tclick: copyCallback,\n\t\t\t\t\t\tdefaultButton: false\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t\tif (type === Dialogs.FILEPICKER_TYPE_MOVE || type === Dialogs.FILEPICKER_TYPE_COPY_MOVE) {\n\t\t\t\t\tbuttonlist.push({\n\t\t\t\t\t\ttext: t('core', 'Move'),\n\t\t\t\t\t\tclick: moveCallback,\n\t\t\t\t\t\tdefaultButton: true\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tself.$filePicker.ocdialog({\n\t\t\t\tcloseOnEscape: true,\n\t\t\t\t// max-width of 600\n\t\t\t\twidth: 600,\n\t\t\t\theight: 500,\n\t\t\t\tmodal: modal,\n\t\t\t\tbuttons: buttonlist,\n\t\t\t\tstyle: {\n\t\t\t\t\tbuttons: 'aside'\n\t\t\t\t},\n\t\t\t\tclose: function() {\n\t\t\t\t\ttry {\n\t\t\t\t\t\t$(this).ocdialog('destroy').remove()\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t}\n\t\t\t\t\tself.$filePicker = null\n\t\t\t\t}\n\t\t\t})\n\n\t\t\t// We can access primary class only from oc-dialog.\n\t\t\t// Hence this is one of the approach to get the choose button.\n\t\t\tvar getOcDialog = self.$filePicker.closest('.oc-dialog')\n\t\t\tvar buttonEnableDisable = getOcDialog.find('.primary')\n\t\t\tif (self.$filePicker.data('mimetype').indexOf('httpd/unix-directory') !== -1 || self.$filePicker.data('allowDirectoryChooser')) {\n\t\t\t\tbuttonEnableDisable.prop('disabled', false)\n\t\t\t} else {\n\t\t\t\tbuttonEnableDisable.prop('disabled', true)\n\t\t\t}\n\t\t})\n\t\t\t.fail(function(status, error) {\n\t\t\t\t// If the method is called while navigating away\n\t\t\t\t// from the page, it is probably not needed ;)\n\t\t\t\tself.filepicker.loading = false\n\t\t\t\tif (status !== 0) {\n\t\t\t\t\talert(t('core', 'Error loading file picker template: {error}', { error: error }))\n\t\t\t\t}\n\t\t\t})\n\t},\n\t/**\n\t * Displays raw dialog\n\t * You better use a wrapper instead ...\n\t */\n\tmessage: function(content, title, dialogType, buttons, callback, modal, allowHtml) {\n\t\treturn $.when(this._getMessageTemplate()).then(function($tmpl) {\n\t\t\tvar dialogName = 'oc-dialog-' + Dialogs.dialogsCounter + '-content'\n\t\t\tvar dialogId = '#' + dialogName\n\t\t\tvar $dlg = $tmpl.octemplate({\n\t\t\t\tdialog_name: dialogName,\n\t\t\t\ttitle: title,\n\t\t\t\tmessage: content,\n\t\t\t\ttype: dialogType\n\t\t\t}, allowHtml ? { escapeFunction: '' } : {})\n\t\t\tif (modal === undefined) {\n\t\t\t\tmodal = false\n\t\t\t}\n\t\t\t$('body').append($dlg)\n\t\t\tvar buttonlist = []\n\t\t\tswitch (buttons) {\n\t\t\tcase Dialogs.YES_NO_BUTTONS:\n\t\t\t\tbuttonlist = [{\n\t\t\t\t\ttext: t('core', 'No'),\n\t\t\t\t\tclick: function() {\n\t\t\t\t\t\tif (callback !== undefined) {\n\t\t\t\t\t\t\tcallback(false)\n\t\t\t\t\t\t}\n\t\t\t\t\t\t$(dialogId).ocdialog('close')\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\ttext: t('core', 'Yes'),\n\t\t\t\t\tclick: function() {\n\t\t\t\t\t\tif (callback !== undefined) {\n\t\t\t\t\t\t\tcallback(true)\n\t\t\t\t\t\t}\n\t\t\t\t\t\t$(dialogId).ocdialog('close')\n\t\t\t\t\t},\n\t\t\t\t\tdefaultButton: true\n\t\t\t\t}]\n\t\t\t\tbreak\n\t\t\tcase Dialogs.OK_BUTTON:\n\t\t\t\tvar functionToCall = function() {\n\t\t\t\t\t$(dialogId).ocdialog('close')\n\t\t\t\t\tif (callback !== undefined) {\n\t\t\t\t\t\tcallback()\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbuttonlist[0] = {\n\t\t\t\t\ttext: t('core', 'OK'),\n\t\t\t\t\tclick: functionToCall,\n\t\t\t\t\tdefaultButton: true\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\tdefault:\n\t\t\t\tif (typeof(buttons) === 'object') {\n\t\t\t\t\tswitch (buttons.type) {\n\t\t\t\t\t\tcase Dialogs.YES_NO_BUTTONS:\n\t\t\t\t\t\t\tbuttonlist = [{\n\t\t\t\t\t\t\t\ttext: buttons.cancel || t('core', 'No'),\n\t\t\t\t\t\t\t\tclick: function() {\n\t\t\t\t\t\t\t\t\tif (callback !== undefined) {\n\t\t\t\t\t\t\t\t\t\tcallback(false)\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t$(dialogId).ocdialog('close')\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\ttext: buttons.confirm || t('core', 'Yes'),\n\t\t\t\t\t\t\t\t\tclick: function() {\n\t\t\t\t\t\t\t\t\t\tif (callback !== undefined) {\n\t\t\t\t\t\t\t\t\t\t\tcallback(true)\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t$(dialogId).ocdialog('close')\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tdefaultButton: true,\n\t\t\t\t\t\t\t\t\tclasses: buttons.confirmClasses\n\t\t\t\t\t\t\t\t}]\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t}\n\n\t\t\t$(dialogId).ocdialog({\n\t\t\t\tcloseOnEscape: true,\n\t\t\t\tcloseCallback: () => { callback && callback(false) },\n\t\t\t\tmodal: modal,\n\t\t\t\tbuttons: buttonlist\n\t\t\t})\n\t\t\tDialogs.dialogsCounter++\n\t\t})\n\t\t\t.fail(function(status, error) {\n\t\t\t\t// If the method is called while navigating away from\n\t\t\t\t// the page, we still want to deliver the message.\n\t\t\t\tif (status === 0) {\n\t\t\t\t\talert(title + ': ' + content)\n\t\t\t\t} else {\n\t\t\t\t\talert(t('core', 'Error loading message template: {error}', { error: error }))\n\t\t\t\t}\n\t\t\t})\n\t},\n\t_fileexistsshown: false,\n\t/**\n\t * Displays file exists dialog\n\t * @param {object} data upload object\n\t * @param {object} original file with name, size and mtime\n\t * @param {object} replacement file with name, size and mtime\n\t * @param {object} controller with onCancel, onSkip, onReplace and onRename methods\n\t * @returns {Promise} jquery promise that resolves after the dialog template was loaded\n\t */\n\tfileexists: function(data, original, replacement, controller) {\n\t\tvar self = this\n\t\tvar dialogDeferred = new $.Deferred()\n\n\t\tvar getCroppedPreview = function(file) {\n\t\t\tvar deferred = new $.Deferred()\n\t\t\t// Only process image files.\n\t\t\tvar type = file.type && file.type.split('/').shift()\n\t\t\tif (window.FileReader && type === 'image') {\n\t\t\t\tvar reader = new FileReader()\n\t\t\t\treader.onload = function(e) {\n\t\t\t\t\tvar blob = new Blob([e.target.result])\n\t\t\t\t\twindow.URL = window.URL || window.webkitURL\n\t\t\t\t\tvar originalUrl = window.URL.createObjectURL(blob)\n\t\t\t\t\tvar image = new Image()\n\t\t\t\t\timage.src = originalUrl\n\t\t\t\t\timage.onload = function() {\n\t\t\t\t\t\tvar url = crop(image)\n\t\t\t\t\t\tdeferred.resolve(url)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treader.readAsArrayBuffer(file)\n\t\t\t} else {\n\t\t\t\tdeferred.reject()\n\t\t\t}\n\t\t\treturn deferred\n\t\t}\n\n\t\tvar crop = function(img) {\n\t\t\tvar canvas = document.createElement('canvas')\n\t\t\tvar targetSize = 96\n\t\t\tvar width = img.width\n\t\t\tvar height = img.height\n\t\t\tvar x; var y; var size\n\n\t\t\t// Calculate the width and height, constraining the proportions\n\t\t\tif (width > height) {\n\t\t\t\ty = 0\n\t\t\t\tx = (width - height) / 2\n\t\t\t} else {\n\t\t\t\ty = (height - width) / 2\n\t\t\t\tx = 0\n\t\t\t}\n\t\t\tsize = Math.min(width, height)\n\n\t\t\t// Set canvas size to the cropped area\n\t\t\tcanvas.width = size\n\t\t\tcanvas.height = size\n\t\t\tvar ctx = canvas.getContext('2d')\n\t\t\tctx.drawImage(img, x, y, size, size, 0, 0, size, size)\n\n\t\t\t// Resize the canvas to match the destination (right size uses 96px)\n\t\t\tresampleHermite(canvas, size, size, targetSize, targetSize)\n\n\t\t\treturn canvas.toDataURL('image/png', 0.7)\n\t\t}\n\n\t\t/**\n\t\t * Fast image resize/resample using Hermite filter with JavaScript.\n\t\t *\n\t\t * @author: ViliusL\n\t\t *\n\t\t * @param {*} canvas\n\t\t * @param {number} W\n\t\t * @param {number} H\n\t\t * @param {number} W2\n\t\t * @param {number} H2\n\t\t */\n\t\tvar resampleHermite = function(canvas, W, H, W2, H2) {\n\t\t\tW2 = Math.round(W2)\n\t\t\tH2 = Math.round(H2)\n\t\t\tvar img = canvas.getContext('2d').getImageData(0, 0, W, H)\n\t\t\tvar img2 = canvas.getContext('2d').getImageData(0, 0, W2, H2)\n\t\t\tvar data = img.data\n\t\t\tvar data2 = img2.data\n\t\t\tvar ratio_w = W / W2\n\t\t\tvar ratio_h = H / H2\n\t\t\tvar ratio_w_half = Math.ceil(ratio_w / 2)\n\t\t\tvar ratio_h_half = Math.ceil(ratio_h / 2)\n\n\t\t\tfor (var j = 0; j < H2; j++) {\n\t\t\t\tfor (var i = 0; i < W2; i++) {\n\t\t\t\t\tvar x2 = (i + j * W2) * 4\n\t\t\t\t\tvar weight = 0\n\t\t\t\t\tvar weights = 0\n\t\t\t\t\tvar weights_alpha = 0\n\t\t\t\t\tvar gx_r = 0\n\t\t\t\t\tvar gx_g = 0\n\t\t\t\t\tvar gx_b = 0\n\t\t\t\t\tvar gx_a = 0\n\t\t\t\t\tvar center_y = (j + 0.5) * ratio_h\n\t\t\t\t\tfor (var yy = Math.floor(j * ratio_h); yy < (j + 1) * ratio_h; yy++) {\n\t\t\t\t\t\tvar dy = Math.abs(center_y - (yy + 0.5)) / ratio_h_half\n\t\t\t\t\t\tvar center_x = (i + 0.5) * ratio_w\n\t\t\t\t\t\tvar w0 = dy * dy // pre-calc part of w\n\t\t\t\t\t\tfor (var xx = Math.floor(i * ratio_w); xx < (i + 1) * ratio_w; xx++) {\n\t\t\t\t\t\t\tvar dx = Math.abs(center_x - (xx + 0.5)) / ratio_w_half\n\t\t\t\t\t\t\tvar w = Math.sqrt(w0 + dx * dx)\n\t\t\t\t\t\t\tif (w >= -1 && w <= 1) {\n\t\t\t\t\t\t\t\t// hermite filter\n\t\t\t\t\t\t\t\tweight = 2 * w * w * w - 3 * w * w + 1\n\t\t\t\t\t\t\t\tif (weight > 0) {\n\t\t\t\t\t\t\t\t\tdx = 4 * (xx + yy * W)\n\t\t\t\t\t\t\t\t\t// alpha\n\t\t\t\t\t\t\t\t\tgx_a += weight * data[dx + 3]\n\t\t\t\t\t\t\t\t\tweights_alpha += weight\n\t\t\t\t\t\t\t\t\t// colors\n\t\t\t\t\t\t\t\t\tif (data[dx + 3] < 255) { weight = weight * data[dx + 3] / 250 }\n\t\t\t\t\t\t\t\t\tgx_r += weight * data[dx]\n\t\t\t\t\t\t\t\t\tgx_g += weight * data[dx + 1]\n\t\t\t\t\t\t\t\t\tgx_b += weight * data[dx + 2]\n\t\t\t\t\t\t\t\t\tweights += weight\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tdata2[x2] = gx_r / weights\n\t\t\t\t\tdata2[x2 + 1] = gx_g / weights\n\t\t\t\t\tdata2[x2 + 2] = gx_b / weights\n\t\t\t\t\tdata2[x2 + 3] = gx_a / weights_alpha\n\t\t\t\t}\n\t\t\t}\n\t\t\tcanvas.getContext('2d').clearRect(0, 0, Math.max(W, W2), Math.max(H, H2))\n\t\t\tcanvas.width = W2\n\t\t\tcanvas.height = H2\n\t\t\tcanvas.getContext('2d').putImageData(img2, 0, 0)\n\t\t}\n\n\t\tvar addConflict = function($conflicts, original, replacement) {\n\n\t\t\tvar $conflict = $conflicts.find('.template').clone().removeClass('template').addClass('conflict')\n\t\t\tvar $originalDiv = $conflict.find('.original')\n\t\t\tvar $replacementDiv = $conflict.find('.replacement')\n\n\t\t\t$conflict.data('data', data)\n\n\t\t\t$conflict.find('.filename').text(original.name)\n\t\t\t$originalDiv.find('.size').text(OC.Util.humanFileSize(original.size))\n\t\t\t$originalDiv.find('.mtime').text(OC.Util.formatDate(original.mtime))\n\t\t\t// ie sucks\n\t\t\tif (replacement.size && replacement.lastModified) {\n\t\t\t\t$replacementDiv.find('.size').text(OC.Util.humanFileSize(replacement.size))\n\t\t\t\t$replacementDiv.find('.mtime').text(OC.Util.formatDate(replacement.lastModified))\n\t\t\t}\n\t\t\tvar path = original.directory + '/' + original.name\n\t\t\tvar urlSpec = {\n\t\t\t\tfile: path,\n\t\t\t\tx: 96,\n\t\t\t\ty: 96,\n\t\t\t\tc: original.etag,\n\t\t\t\tforceIcon: 0\n\t\t\t}\n\t\t\tvar previewpath = Files.generatePreviewUrl(urlSpec)\n\t\t\t// Escaping single quotes\n\t\t\tpreviewpath = previewpath.replace(/'/g, '%27')\n\t\t\t$originalDiv.find('.icon').css({ 'background-image': \"url('\" + previewpath + \"')\" })\n\t\t\tgetCroppedPreview(replacement).then(\n\t\t\t\tfunction(path) {\n\t\t\t\t\t$replacementDiv.find('.icon').css('background-image', 'url(' + path + ')')\n\t\t\t\t}, function() {\n\t\t\t\t\tpath = OC.MimeType.getIconUrl(replacement.type)\n\t\t\t\t\t$replacementDiv.find('.icon').css('background-image', 'url(' + path + ')')\n\t\t\t\t}\n\t\t\t)\n\t\t\t// connect checkboxes with labels\n\t\t\tvar checkboxId = $conflicts.find('.conflict').length\n\t\t\t$originalDiv.find('input:checkbox').attr('id', 'checkbox_original_' + checkboxId)\n\t\t\t$replacementDiv.find('input:checkbox').attr('id', 'checkbox_replacement_' + checkboxId)\n\n\t\t\t$conflicts.append($conflict)\n\n\t\t\t// set more recent mtime bold\n\t\t\t// ie sucks\n\t\t\tif (replacement.lastModified > original.mtime) {\n\t\t\t\t$replacementDiv.find('.mtime').css('font-weight', 'bold')\n\t\t\t} else if (replacement.lastModified < original.mtime) {\n\t\t\t\t$originalDiv.find('.mtime').css('font-weight', 'bold')\n\t\t\t} else {\n\t\t\t\t// TODO add to same mtime collection?\n\t\t\t}\n\n\t\t\t// set bigger size bold\n\t\t\tif (replacement.size && replacement.size > original.size) {\n\t\t\t\t$replacementDiv.find('.size').css('font-weight', 'bold')\n\t\t\t} else if (replacement.size && replacement.size < original.size) {\n\t\t\t\t$originalDiv.find('.size').css('font-weight', 'bold')\n\t\t\t} else {\n\t\t\t\t// TODO add to same size collection?\n\t\t\t}\n\n\t\t\t// TODO show skip action for files with same size and mtime in bottom row\n\n\t\t\t// always keep readonly files\n\n\t\t\tif (original.status === 'readonly') {\n\t\t\t\t$originalDiv\n\t\t\t\t\t.addClass('readonly')\n\t\t\t\t\t.find('input[type=\"checkbox\"]')\n\t\t\t\t\t.prop('checked', true)\n\t\t\t\t\t.prop('disabled', true)\n\t\t\t\t$originalDiv.find('.message')\n\t\t\t\t\t.text(t('core', 'read-only'))\n\t\t\t}\n\t\t}\n\t\t// var selection = controller.getSelection(data.originalFiles);\n\t\t// if (selection.defaultAction) {\n\t\t//\tcontroller[selection.defaultAction](data);\n\t\t// } else {\n\t\tvar dialogName = 'oc-dialog-fileexists-content'\n\t\tvar dialogId = '#' + dialogName\n\t\tif (this._fileexistsshown) {\n\t\t\t// add conflict\n\n\t\t\tvar $conflicts = $(dialogId + ' .conflicts')\n\t\t\taddConflict($conflicts, original, replacement)\n\n\t\t\tvar count = $(dialogId + ' .conflict').length\n\t\t\tvar title = n('core',\n\t\t\t\t'{count} file conflict',\n\t\t\t\t'{count} file conflicts',\n\t\t\t\tcount,\n\t\t\t\t{ count: count }\n\t\t\t)\n\t\t\t$(dialogId).parent().children('.oc-dialog-title').text(title)\n\n\t\t\t// recalculate dimensions\n\t\t\t$(window).trigger('resize')\n\t\t\tdialogDeferred.resolve()\n\t\t} else {\n\t\t\t// create dialog\n\t\t\tthis._fileexistsshown = true\n\t\t\t$.when(this._getFileExistsTemplate()).then(function($tmpl) {\n\t\t\t\tvar title = t('core', 'One file conflict')\n\t\t\t\tvar $dlg = $tmpl.octemplate({\n\t\t\t\t\tdialog_name: dialogName,\n\t\t\t\t\ttitle: title,\n\t\t\t\t\ttype: 'fileexists',\n\n\t\t\t\t\tallnewfiles: t('core', 'New Files'),\n\t\t\t\t\tallexistingfiles: t('core', 'Already existing files'),\n\n\t\t\t\t\twhy: t('core', 'Which files do you want to keep?'),\n\t\t\t\t\twhat: t('core', 'If you select both versions, the copied file will have a number added to its name.')\n\t\t\t\t})\n\t\t\t\t$('body').append($dlg)\n\n\t\t\t\tif (original && replacement) {\n\t\t\t\t\tvar $conflicts = $dlg.find('.conflicts')\n\t\t\t\t\taddConflict($conflicts, original, replacement)\n\t\t\t\t}\n\n\t\t\t\tvar buttonlist = [{\n\t\t\t\t\ttext: t('core', 'Cancel'),\n\t\t\t\t\tclasses: 'cancel',\n\t\t\t\t\tclick: function() {\n\t\t\t\t\t\tif (typeof controller.onCancel !== 'undefined') {\n\t\t\t\t\t\t\tcontroller.onCancel(data)\n\t\t\t\t\t\t}\n\t\t\t\t\t\t$(dialogId).ocdialog('close')\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\ttext: t('core', 'Continue'),\n\t\t\t\t\tclasses: 'continue',\n\t\t\t\t\tclick: function() {\n\t\t\t\t\t\tif (typeof controller.onContinue !== 'undefined') {\n\t\t\t\t\t\t\tcontroller.onContinue($(dialogId + ' .conflict'))\n\t\t\t\t\t\t}\n\t\t\t\t\t\t$(dialogId).ocdialog('close')\n\t\t\t\t\t}\n\t\t\t\t}]\n\n\t\t\t\t$(dialogId).ocdialog({\n\t\t\t\t\twidth: 500,\n\t\t\t\t\tcloseOnEscape: true,\n\t\t\t\t\tmodal: true,\n\t\t\t\t\tbuttons: buttonlist,\n\t\t\t\t\tcloseButton: null,\n\t\t\t\t\tclose: function() {\n\t\t\t\t\t\tself._fileexistsshown = false\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t$(this).ocdialog('destroy').remove()\n\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\t// ignore\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t})\n\n\t\t\t\t$(dialogId).css('height', 'auto')\n\n\t\t\t\tvar $primaryButton = $dlg.closest('.oc-dialog').find('button.continue')\n\t\t\t\t$primaryButton.prop('disabled', true)\n\n\t\t\t\tfunction updatePrimaryButton() {\n\t\t\t\t\tvar checkedCount = $dlg.find('.conflicts .checkbox:checked').length\n\t\t\t\t\t$primaryButton.prop('disabled', checkedCount === 0)\n\t\t\t\t}\n\n\t\t\t\t// add checkbox toggling actions\n\t\t\t\t$(dialogId).find('.allnewfiles').on('click', function() {\n\t\t\t\t\tvar $checkboxes = $(dialogId).find('.conflict .replacement input[type=\"checkbox\"]')\n\t\t\t\t\t$checkboxes.prop('checked', $(this).prop('checked'))\n\t\t\t\t})\n\t\t\t\t$(dialogId).find('.allexistingfiles').on('click', function() {\n\t\t\t\t\tvar $checkboxes = $(dialogId).find('.conflict .original:not(.readonly) input[type=\"checkbox\"]')\n\t\t\t\t\t$checkboxes.prop('checked', $(this).prop('checked'))\n\t\t\t\t})\n\t\t\t\t$(dialogId).find('.conflicts').on('click', '.replacement,.original:not(.readonly)', function() {\n\t\t\t\t\tvar $checkbox = $(this).find('input[type=\"checkbox\"]')\n\t\t\t\t\t$checkbox.prop('checked', !$checkbox.prop('checked'))\n\t\t\t\t})\n\t\t\t\t$(dialogId).find('.conflicts').on('click', '.replacement input[type=\"checkbox\"],.original:not(.readonly) input[type=\"checkbox\"]', function() {\n\t\t\t\t\tvar $checkbox = $(this)\n\t\t\t\t\t$checkbox.prop('checked', !$checkbox.prop('checked'))\n\t\t\t\t})\n\n\t\t\t\t// update counters\n\t\t\t\t$(dialogId).on('click', '.replacement,.allnewfiles', function() {\n\t\t\t\t\tvar count = $(dialogId).find('.conflict .replacement input[type=\"checkbox\"]:checked').length\n\t\t\t\t\tif (count === $(dialogId + ' .conflict').length) {\n\t\t\t\t\t\t$(dialogId).find('.allnewfiles').prop('checked', true)\n\t\t\t\t\t\t$(dialogId).find('.allnewfiles + .count').text(t('core', '(all selected)'))\n\t\t\t\t\t} else if (count > 0) {\n\t\t\t\t\t\t$(dialogId).find('.allnewfiles').prop('checked', false)\n\t\t\t\t\t\t$(dialogId).find('.allnewfiles + .count').text(t('core', '({count} selected)', { count: count }))\n\t\t\t\t\t} else {\n\t\t\t\t\t\t$(dialogId).find('.allnewfiles').prop('checked', false)\n\t\t\t\t\t\t$(dialogId).find('.allnewfiles + .count').text('')\n\t\t\t\t\t}\n\t\t\t\t\tupdatePrimaryButton()\n\t\t\t\t})\n\t\t\t\t$(dialogId).on('click', '.original,.allexistingfiles', function() {\n\t\t\t\t\tvar count = $(dialogId).find('.conflict .original input[type=\"checkbox\"]:checked').length\n\t\t\t\t\tif (count === $(dialogId + ' .conflict').length) {\n\t\t\t\t\t\t$(dialogId).find('.allexistingfiles').prop('checked', true)\n\t\t\t\t\t\t$(dialogId).find('.allexistingfiles + .count').text(t('core', '(all selected)'))\n\t\t\t\t\t} else if (count > 0) {\n\t\t\t\t\t\t$(dialogId).find('.allexistingfiles').prop('checked', false)\n\t\t\t\t\t\t$(dialogId).find('.allexistingfiles + .count')\n\t\t\t\t\t\t\t.text(t('core', '({count} selected)', { count: count }))\n\t\t\t\t\t} else {\n\t\t\t\t\t\t$(dialogId).find('.allexistingfiles').prop('checked', false)\n\t\t\t\t\t\t$(dialogId).find('.allexistingfiles + .count').text('')\n\t\t\t\t\t}\n\t\t\t\t\tupdatePrimaryButton()\n\t\t\t\t})\n\n\t\t\t\tdialogDeferred.resolve()\n\t\t\t})\n\t\t\t\t.fail(function() {\n\t\t\t\t\tdialogDeferred.reject()\n\t\t\t\t\talert(t('core', 'Error loading file exists template'))\n\t\t\t\t})\n\t\t}\n\t\t// }\n\t\treturn dialogDeferred.promise()\n\t},\n\t// get the gridview setting and set the input accordingly\n\t_getGridSettings: function() {\n\t\tconst self = this\n\t\t$.get(OC.generateUrl('/apps/files/api/v1/showgridview'), function(response) {\n\t\t\tself.$showGridView\n\t\t\t\t.removeClass('icon-toggle-filelist icon-toggle-pictures')\n\t\t\t\t.addClass(response.gridview ? 'icon-toggle-filelist' : 'icon-toggle-pictures')\n\t\t\tself.$showGridView.attr(\n\t\t\t\t'aria-label',\n\t\t\t\tresponse.gridview ? t('files', 'Show list view') : t('files', 'Show grid view'),\n\t\t\t)\n\t\t\t$('.list-container').toggleClass('view-grid', response.gridview)\n\t\t})\n\t},\n\t_onGridviewChange: function() {\n\t\tconst isGridView = this.$showGridView.hasClass('icon-toggle-filelist')\n\t\t// only save state if user is logged in\n\t\tif (OC.currentUser) {\n\t\t\t$.post(OC.generateUrl('/apps/files/api/v1/showgridview'), { show: !isGridView })\n\t\t}\n\t\tthis.$showGridView\n\t\t\t.removeClass('icon-toggle-filelist icon-toggle-pictures')\n\t\t\t.addClass(isGridView ? 'icon-toggle-pictures' : 'icon-toggle-filelist')\n\t\tthis.$showGridView.attr(\n\t\t\t'aria-label',\n\t\t\tisGridView ? t('files', 'Show grid view') : t('files', 'Show list view'),\n\t\t)\n\t\tthis.$filePicker.find('.list-container').toggleClass('view-grid', !isGridView)\n\t},\n\t_getFilePickerTemplate: function() {\n\t\tvar defer = $.Deferred()\n\t\tif (!this.$filePickerTemplate) {\n\t\t\tvar self = this\n\t\t\t$.get(OC.filePath('core', 'templates', 'filepicker.html'), function(tmpl) {\n\t\t\t\tself.$filePickerTemplate = $(tmpl)\n\t\t\t\tself.$listTmpl = self.$filePickerTemplate.find('.filelist tbody tr:first-child').detach()\n\t\t\t\tdefer.resolve(self.$filePickerTemplate)\n\t\t\t})\n\t\t\t\t.fail(function(jqXHR, textStatus, errorThrown) {\n\t\t\t\t\tdefer.reject(jqXHR.status, errorThrown)\n\t\t\t\t})\n\t\t} else {\n\t\t\tdefer.resolve(this.$filePickerTemplate)\n\t\t}\n\t\treturn defer.promise()\n\t},\n\t_getMessageTemplate: function() {\n\t\tvar defer = $.Deferred()\n\t\tif (!this.$messageTemplate) {\n\t\t\tvar self = this\n\t\t\t$.get(OC.filePath('core', 'templates', 'message.html'), function(tmpl) {\n\t\t\t\tself.$messageTemplate = $(tmpl)\n\t\t\t\tdefer.resolve(self.$messageTemplate)\n\t\t\t})\n\t\t\t\t.fail(function(jqXHR, textStatus, errorThrown) {\n\t\t\t\t\tdefer.reject(jqXHR.status, errorThrown)\n\t\t\t\t})\n\t\t} else {\n\t\t\tdefer.resolve(this.$messageTemplate)\n\t\t}\n\t\treturn defer.promise()\n\t},\n\t_getFileExistsTemplate: function() {\n\t\tvar defer = $.Deferred()\n\t\tif (!this.$fileexistsTemplate) {\n\t\t\tvar self = this\n\t\t\t$.get(OC.filePath('files', 'templates', 'fileexists.html'), function(tmpl) {\n\t\t\t\tself.$fileexistsTemplate = $(tmpl)\n\t\t\t\tdefer.resolve(self.$fileexistsTemplate)\n\t\t\t})\n\t\t\t\t.fail(function() {\n\t\t\t\t\tdefer.reject()\n\t\t\t\t})\n\t\t} else {\n\t\t\tdefer.resolve(this.$fileexistsTemplate)\n\t\t}\n\t\treturn defer.promise()\n\t},\n\n\t/**\n\t * fills the filepicker with files\n\t */\n\t_fillFilePicker: async function(dir, type) {\n\t\tvar self = this\n\t\tthis.$filelist.empty()\n\t\tthis.$filePicker.find('.emptycontent').hide()\n\t\tthis.$filelistContainer.addClass('icon-loading')\n\t\tthis.$filePicker.data('path', dir)\n\t\tvar filter = this.$filePicker.data('mimetype')\n\t\tvar advancedFilter = this.$filePicker.data('filter')\n\t\tif (typeof (filter) === 'string') {\n\t\t\tfilter = [filter]\n\t\t}\n\t\tself.$fileListHeader.find('.sort-indicator').addClass('hidden').removeClass('icon-triangle-n').removeClass('icon-triangle-s')\n\t\tself.$fileListHeader.find('[data-sort=' + self.filepicker.sortField + '] .sort-indicator').removeClass('hidden')\n\t\tif (self.filepicker.sortOrder === 'asc') {\n\t\t\tself.$fileListHeader.find('[data-sort=' + self.filepicker.sortField + '] .sort-indicator').addClass('icon-triangle-n')\n\t\t} else {\n\t\t\tself.$fileListHeader.find('[data-sort=' + self.filepicker.sortField + '] .sort-indicator').addClass('icon-triangle-s')\n\t\t}\n\n\t\t// Wrap within a method because a promise cannot return multiple values\n\t\t// But the client impleemntation still does it...\n\t\tvar getFolderContents = async function(dir) {\n\t\t\treturn self.filepicker.filesClient.getFolderContents(dir)\n\t\t\t\t.then((status, files) => {\n\t\t\t\t\treturn files\n\t\t\t\t})\n\t\t}\n\n\t\ttry {\n\t\t\tvar files = await getFolderContents(dir)\n\t\t} catch (error) {\n\t\t\t// fallback to root if requested dir is non-existent\n\t\t\tconsole.error('Requested path does not exists, falling back to root')\n\t\t\tvar files = await getFolderContents('/')\n\t\t\tthis.$filePicker.data('path', '/')\n\t\t\tthis._changeButtonsText(type, '')\n\t\t}\n\n\t\tself.filelist = files\n\t\tif (filter && filter.length > 0 && filter.indexOf('*') === -1) {\n\t\t\tfiles = files.filter(function(file) {\n\t\t\t\treturn file.type === 'dir' || filter.indexOf(file.mimetype) !== -1\n\t\t\t})\n\t\t}\n\n\t\tif (advancedFilter) {\n\t\t\tfiles = files.filter(advancedFilter)\n\t\t}\n\n\t\t// Check if the showHidden input field exist and if it exist follow it\n\t\t// Otherwise just show the hidden files\n\t\tconst showHiddenInput = document.getElementById('showHiddenFiles')\n\t\tconst showHidden = showHiddenInput === null || showHiddenInput.value === \"1\"\n\t\tif (!showHidden) {\n\t\t\tfiles = files.filter(function(file) {\n\t\t\t\treturn !file.name.startsWith('.')\n\t\t\t})\n\t\t}\n\n\t\tvar Comparators = {\n\t\t\tname: function(fileInfo1, fileInfo2) {\n\t\t\t\tif (fileInfo1.type === 'dir' && fileInfo2.type !== 'dir') {\n\t\t\t\t\treturn -1\n\t\t\t\t}\n\t\t\t\tif (fileInfo1.type !== 'dir' && fileInfo2.type === 'dir') {\n\t\t\t\t\treturn 1\n\t\t\t\t}\n\t\t\t\treturn OC.Util.naturalSortCompare(fileInfo1.name, fileInfo2.name)\n\t\t\t},\n\t\t\tsize: function(fileInfo1, fileInfo2) {\n\t\t\t\treturn fileInfo1.size - fileInfo2.size\n\t\t\t},\n\t\t\tmtime: function(fileInfo1, fileInfo2) {\n\t\t\t\treturn fileInfo1.mtime - fileInfo2.mtime\n\t\t\t}\n\t\t}\n\t\tvar comparator = Comparators[self.filepicker.sortField] || Comparators.name\n\t\tfiles = files.sort(function(file1, file2) {\n\t\t\tvar isFavorite = function(fileInfo) {\n\t\t\t\treturn fileInfo.tags && fileInfo.tags.indexOf(OC.TAG_FAVORITE) >= 0\n\t\t\t}\n\n\t\t\tif (isFavorite(file1) && !isFavorite(file2)) {\n\t\t\t\treturn -1\n\t\t\t} else if (!isFavorite(file1) && isFavorite(file2)) {\n\t\t\t\treturn 1\n\t\t\t}\n\n\t\t\treturn self.filepicker.sortOrder === 'asc' ? comparator(file1, file2) : -comparator(file1, file2)\n\t\t})\n\n\t\tself._fillSlug()\n\n\t\tif (files.length === 0) {\n\t\t\tself.$filePicker.find('.emptycontent').show()\n\t\t\tself.$fileListHeader.hide()\n\t\t} else {\n\t\t\tself.$filePicker.find('.emptycontent').hide()\n\t\t\tself.$fileListHeader.show()\n\t\t}\n\n\t\tself.$filelist.empty();\n\n\t\t$.each(files, function(idx, entry) {\n\t\t\tif (entry.isEncrypted && entry.mimetype === 'httpd/unix-directory') {\n\t\t\t\tentry.icon = OC.MimeType.getIconUrl('dir-encrypted')\n\t\t\t} else {\n\t\t\t\tentry.icon = OC.MimeType.getIconUrl(entry.mimetype)\n\t\t\t}\n\n\t\t\tvar simpleSize, sizeColor\n\t\t\tif (typeof (entry.size) !== 'undefined' && entry.size >= 0) {\n\t\t\t\tsimpleSize = OC.Util.humanFileSize(parseInt(entry.size, 10), true)\n\t\t\t\tsizeColor = Math.round(160 - Math.pow((entry.size / (1024 * 1024)), 2))\n\t\t\t} else {\n\t\t\t\tsimpleSize = t('files', 'Pending')\n\t\t\t\tsizeColor = 80\n\t\t\t}\n\n\t\t\t// split the filename in half if the size is bigger than 20 char\n\t\t\t// for ellipsis\n\t\t\tif (entry.name.length >= 10) {\n\t\t\t\t// leave maximum 10 letters\n\t\t\t\tvar split = Math.min(Math.floor(entry.name.length / 2), 10)\n\t\t\t\tvar filename1 = entry.name.substr(0, entry.name.length - split)\n\t\t\t\tvar filename2 = entry.name.substr(entry.name.length - split)\n\t\t\t} else {\n\t\t\t\tvar filename1 = entry.name\n\t\t\t\tvar filename2 = ''\n\t\t\t}\n\n\t\t\tvar $row = self.$listTmpl.octemplate({\n\t\t\t\ttype: entry.type,\n\t\t\t\tdir: dir,\n\t\t\t\tfilename: entry.name,\n\t\t\t\tfilename1: filename1,\n\t\t\t\tfilename2: filename2,\n\t\t\t\tdate: OC.Util.relativeModifiedDate(entry.mtime),\n\t\t\t\tsize: simpleSize,\n\t\t\t\tsizeColor: sizeColor,\n\t\t\t\ticon: entry.icon\n\t\t\t})\n\t\t\tif (entry.type === 'file') {\n\t\t\t\tvar urlSpec = {\n\t\t\t\t\tfile: dir + '/' + entry.name,\n\t\t\t\t\tx: 100,\n\t\t\t\t\ty: 100\n\t\t\t\t}\n\t\t\t\tvar img = new Image()\n\t\t\t\tvar previewUrl = OC.generateUrl('/core/preview.png?') + $.param(urlSpec)\n\t\t\t\timg.onload = function() {\n\t\t\t\t\tif (img.width > 5) {\n\t\t\t\t\t\t$row.find('td.filename').attr('style', 'background-image:url(' + previewUrl + ')')\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\timg.src = previewUrl\n\t\t\t}\n\t\t\tself.$filelist.append($row)\n\t\t})\n\n\t\tself.$filelistContainer.removeClass('icon-loading')\n\t},\n\t/**\n\t * fills the tree list with directories\n\t */\n\t_fillSlug: function() {\n\t\tvar addButton = this.$dirTree.find('.actions.creatable').detach()\n\t\tthis.$dirTree.empty()\n\t\tvar self = this\n\n\t\tself.$dirTree.append(addButton)\n\n\t\tvar dir\n\t\tvar path = this.$filePicker.data('path')\n\t\tvar $template = $('<div data-dir=\"{dir}\" tabindex=\"0\"><a>{name}</a></div>').addClass('crumb')\n\t\tif (path) {\n\t\t\tvar paths = path.split('/')\n\t\t\t$.each(paths, function(index, dir) {\n\t\t\t\tdir = paths.pop()\n\t\t\t\tif (dir === '') {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t\tself.$dirTree.prepend($template.octemplate({\n\t\t\t\t\tdir: paths.join('/') + '/' + dir,\n\t\t\t\t\tname: dir\n\t\t\t\t}))\n\t\t\t})\n\t\t}\n\n\t\t$template.octemplate({\n\t\t\tdir: '',\n\t\t\tname: t('core', 'Home'),\n\t\t}, { escapeFunction: null }).prependTo(this.$dirTree)\n\n\t},\n\t/**\n\t * handle selection made in the tree list\n\t */\n\t_handleTreeListSelect: function(event, type) {\n\t\tvar self = event.data\n\t\tvar dir = $(event.target).closest('.crumb').data('dir')\n\t\tself._fillFilePicker(dir, type)\n\t\tvar getOcDialog = (event.target).closest('.oc-dialog')\n\t\tvar buttonEnableDisable = $('.primary', getOcDialog)\n\t\tthis._changeButtonsText(type, dir.split(/[/]+/).pop())\n\t\tif (this.$filePicker.data('mimetype').indexOf('httpd/unix-directory') !== -1 || this.$filePicker.data('allowDirectoryChooser')) {\n\t\t\tbuttonEnableDisable.prop('disabled', false)\n\t\t} else {\n\t\t\tbuttonEnableDisable.prop('disabled', true)\n\t\t}\n\t},\n\t/**\n\t * handle clicks made in the filepicker\n\t */\n\t_handlePickerClick: function(event, $element, type) {\n\t\tvar getOcDialog = this.$filePicker.closest('.oc-dialog')\n\t\tvar buttonEnableDisable = getOcDialog.find('.primary')\n\t\tif ($element.data('type') === 'file') {\n\t\t\tif (this.$filePicker.data('multiselect') !== true || !event.ctrlKey) {\n\t\t\t\tthis.$filelist.find('.filepicker_element_selected').removeClass('filepicker_element_selected')\n\t\t\t}\n\t\t\t$element.toggleClass('filepicker_element_selected')\n\t\t\tbuttonEnableDisable.prop('disabled', false)\n\t\t} else if ($element.data('type') === 'dir') {\n\t\t\tthis._fillFilePicker(this.$filePicker.data('path') + '/' + $element.data('entryname'), type)\n\t\t\tthis._changeButtonsText(type, $element.data('entryname'))\n\t\t\tif (this.$filePicker.data('mimetype').indexOf('httpd/unix-directory') !== -1 || this.$filePicker.data('allowDirectoryChooser')) {\n\t\t\t\tbuttonEnableDisable.prop('disabled', false)\n\t\t\t} else {\n\t\t\t\tbuttonEnableDisable.prop('disabled', true)\n\t\t\t}\n\t\t}\n\t},\n\n\t/**\n\t * Handle\n\t * @param type of action\n\t * @param dir on which to change buttons text\n\t * @private\n\t */\n\t_changeButtonsText: function(type, dir) {\n\t\tvar copyText = dir === '' ? t('core', 'Copy') : t('core', 'Copy to {folder}', { folder: dir })\n\t\tvar moveText = dir === '' ? t('core', 'Move') : t('core', 'Move to {folder}', { folder: dir })\n\t\tvar buttons = $('.oc-dialog-buttonrow button')\n\t\tswitch (type) {\n\t\t\tcase this.FILEPICKER_TYPE_CHOOSE:\n\t\t\t\tbreak\n\t\t\tcase this.FILEPICKER_TYPE_CUSTOM:\n\t\t\t\tbreak\n\t\t\tcase this.FILEPICKER_TYPE_COPY:\n\t\t\t\tbuttons.text(copyText)\n\t\t\t\tbreak\n\t\t\tcase this.FILEPICKER_TYPE_MOVE:\n\t\t\t\tbuttons.text(moveText)\n\t\t\t\tbreak\n\t\t\tcase this.FILEPICKER_TYPE_COPY_MOVE:\n\t\t\t\tbuttons.eq(0).text(copyText)\n\t\t\t\tbuttons.eq(1).text(moveText)\n\t\t\t\tbreak\n\t\t}\n\t}\n}\n\nexport default Dialogs\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { emit } from '@nextcloud/event-bus'\n\n/**\n * @private\n * @param {Document} global the document to read the initial value from\n * @param {Function} emit the function to invoke for every new token\n * @return {object}\n */\nexport const manageToken = (global, emit) => {\n\tlet token = global.getElementsByTagName('head')[0].getAttribute('data-requesttoken')\n\n\treturn {\n\t\tgetToken: () => token,\n\t\tsetToken: newToken => {\n\t\t\ttoken = newToken\n\n\t\t\temit('csrf-token-update', {\n\t\t\t\ttoken,\n\t\t\t})\n\t\t},\n\t}\n}\n\nconst manageFromDocument = manageToken(document, emit)\n\n/**\n * @return {string}\n */\nexport const getToken = manageFromDocument.getToken\n\n/**\n * @param {string} newToken new token\n */\nexport const setToken = manageFromDocument.setToken\n","/**\n * @copyright 2012 Robin Appelman icewind1991@gmail.com\n *\n * @author Arthur Schiwon <blizzz@arthur-schiwon.de>\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Lukas Reschke <lukas@statuscode.ch>\n * @author Robin Appelman <robin@icewind.nl>\n * @author Thomas Müller <thomas.mueller@tmit.eu>\n * @author Vincent Petry <vincent@nextcloud.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n/* eslint-disable */\nimport $ from 'jquery'\n\nimport { getToken } from './requesttoken'\n\n/**\n * Create a new event source\n * @param {string} src\n * @param {object} [data] to be send as GET\n *\n * @constructs OCEventSource\n */\nconst OCEventSource = function(src, data) {\n\tvar dataStr = ''\n\tvar name\n\tvar joinChar\n\tthis.typelessListeners = []\n\tthis.closed = false\n\tthis.listeners = {}\n\tif (data) {\n\t\tfor (name in data) {\n\t\t\tdataStr += name + '=' + encodeURIComponent(data[name]) + '&'\n\t\t}\n\t}\n\tdataStr += 'requesttoken=' + encodeURIComponent(getToken())\n\tif (!this.useFallBack && typeof EventSource !== 'undefined') {\n\t\tjoinChar = '&'\n\t\tif (src.indexOf('?') === -1) {\n\t\t\tjoinChar = '?'\n\t\t}\n\t\tthis.source = new EventSource(src + joinChar + dataStr)\n\t\tthis.source.onmessage = function(e) {\n\t\t\tfor (var i = 0; i < this.typelessListeners.length; i++) {\n\t\t\t\tthis.typelessListeners[i](JSON.parse(e.data))\n\t\t\t}\n\t\t}.bind(this)\n\t} else {\n\t\tvar iframeId = 'oc_eventsource_iframe_' + OCEventSource.iframeCount\n\t\tOCEventSource.fallBackSources[OCEventSource.iframeCount] = this\n\t\tthis.iframe = $('<iframe></iframe>')\n\t\tthis.iframe.attr('id', iframeId)\n\t\tthis.iframe.hide()\n\n\t\tjoinChar = '&'\n\t\tif (src.indexOf('?') === -1) {\n\t\t\tjoinChar = '?'\n\t\t}\n\t\tthis.iframe.attr('src', src + joinChar + 'fallback=true&fallback_id=' + OCEventSource.iframeCount + '&' + dataStr)\n\t\t$('body').append(this.iframe)\n\t\tthis.useFallBack = true\n\t\tOCEventSource.iframeCount++\n\t}\n\t// add close listener\n\tthis.listen('__internal__', function(data) {\n\t\tif (data === 'close') {\n\t\t\tthis.close()\n\t\t}\n\t}.bind(this))\n}\nOCEventSource.fallBackSources = []\nOCEventSource.iframeCount = 0// number of fallback iframes\nOCEventSource.fallBackCallBack = function(id, type, data) {\n\tOCEventSource.fallBackSources[id].fallBackCallBack(type, data)\n}\nOCEventSource.prototype = {\n\ttypelessListeners: [],\n\tiframe: null,\n\tlisteners: {}, // only for fallback\n\tuseFallBack: false,\n\t/**\n\t * Fallback callback for browsers that don't have the\n\t * native EventSource object.\n\t *\n\t * Calls the registered listeners.\n\t *\n\t * @private\n\t * @param {String} type event type\n\t * @param {Object} data received data\n\t */\n\tfallBackCallBack: function(type, data) {\n\t\tvar i\n\t\t// ignore messages that might appear after closing\n\t\tif (this.closed) {\n\t\t\treturn\n\t\t}\n\t\tif (type) {\n\t\t\tif (typeof this.listeners.done !== 'undefined') {\n\t\t\t\tfor (i = 0; i < this.listeners[type].length; i++) {\n\t\t\t\t\tthis.listeners[type][i](data)\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfor (i = 0; i < this.typelessListeners.length; i++) {\n\t\t\t\tthis.typelessListeners[i](data)\n\t\t\t}\n\t\t}\n\t},\n\tlastLength: 0, // for fallback\n\t/**\n\t * Listen to a given type of events.\n\t *\n\t * @param {String} type event type\n\t * @param {Function} callback event callback\n\t */\n\tlisten: function(type, callback) {\n\t\tif (callback && callback.call) {\n\n\t\t\tif (type) {\n\t\t\t\tif (this.useFallBack) {\n\t\t\t\t\tif (!this.listeners[type]) {\n\t\t\t\t\t\tthis.listeners[type] = []\n\t\t\t\t\t}\n\t\t\t\t\tthis.listeners[type].push(callback)\n\t\t\t\t} else {\n\t\t\t\t\tthis.source.addEventListener(type, function(e) {\n\t\t\t\t\t\tif (typeof e.data !== 'undefined') {\n\t\t\t\t\t\t\tcallback(JSON.parse(e.data))\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcallback('')\n\t\t\t\t\t\t}\n\t\t\t\t\t}, false)\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tthis.typelessListeners.push(callback)\n\t\t\t}\n\t\t}\n\t},\n\t/**\n\t * Closes this event source.\n\t */\n\tclose: function() {\n\t\tthis.closed = true\n\t\tif (typeof this.source !== 'undefined') {\n\t\t\tthis.source.close()\n\t\t}\n\t}\n}\n\nexport default OCEventSource\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Daniel Calviño Sánchez <danxuliu@gmail.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport _ from 'underscore'\n/** @typedef {import('jquery')} jQuery */\nimport $ from 'jquery'\n\nimport { menuSpeed } from './constants'\n\nexport let currentMenu = null\nexport let currentMenuToggle = null\n\n/**\n * For menu toggling\n *\n * @param {jQuery} $toggle the toggle element\n * @param {jQuery} $menuEl the menu container element\n * @param {Function | undefined} toggle callback invoked everytime the menu is opened\n * @param {boolean} headerMenu is this a top right header menu?\n * @return {void}\n */\nexport const registerMenu = function($toggle, $menuEl, toggle, headerMenu) {\n\t$menuEl.addClass('menu')\n\tconst isClickableElement = $toggle.prop('tagName') === 'A' || $toggle.prop('tagName') === 'BUTTON'\n\n\t// On link and button, the enter key trigger a click event\n\t// Only use the click to avoid two fired events\n\t$toggle.on(isClickableElement ? 'click.menu' : 'click.menu keyup.menu', function(event) {\n\t\t// prevent the link event (append anchor to URL)\n\t\tevent.preventDefault()\n\n\t\t// allow enter key as a trigger\n\t\tif (event.key && event.key !== 'Enter') {\n\t\t\treturn\n\t\t}\n\n\t\tif ($menuEl.is(currentMenu)) {\n\t\t\thideMenus()\n\t\t\treturn\n\t\t} else if (currentMenu) {\n\t\t\t// another menu was open?\n\t\t\t// close it\n\t\t\thideMenus()\n\t\t}\n\n\t\tif (headerMenu === true) {\n\t\t\t$menuEl.parent().addClass('openedMenu')\n\t\t}\n\n\t\t// Set menu to expanded\n\t\t$toggle.attr('aria-expanded', true)\n\n\t\t$menuEl.slideToggle(menuSpeed, toggle)\n\t\tcurrentMenu = $menuEl\n\t\tcurrentMenuToggle = $toggle\n\t})\n}\n\n/**\n * Unregister a previously registered menu\n *\n * @param {jQuery} $toggle the toggle element\n * @param {jQuery} $menuEl the menu container element\n */\nexport const unregisterMenu = ($toggle, $menuEl) => {\n\t// close menu if opened\n\tif ($menuEl.is(currentMenu)) {\n\t\thideMenus()\n\t}\n\t$toggle.off('click.menu').removeClass('menutoggle')\n\t$menuEl.removeClass('menu')\n}\n\n/**\n * Hides any open menus\n *\n * @param {Function} complete callback when the hiding animation is done\n */\nexport const hideMenus = function(complete) {\n\tif (currentMenu) {\n\t\tconst lastMenu = currentMenu\n\t\tcurrentMenu.trigger(new $.Event('beforeHide'))\n\t\tcurrentMenu.slideUp(menuSpeed, function() {\n\t\t\tlastMenu.trigger(new $.Event('afterHide'))\n\t\t\tif (complete) {\n\t\t\t\tcomplete.apply(this, arguments)\n\t\t\t}\n\t\t})\n\t}\n\n\t// Set menu to closed\n\t$('.menutoggle').attr('aria-expanded', false)\n\tif (currentMenuToggle) {\n\t\tcurrentMenuToggle.attr('aria-expanded', false)\n\t}\n\n\t$('.openedMenu').removeClass('openedMenu')\n\tcurrentMenu = null\n\tcurrentMenuToggle = null\n}\n\n/**\n * Shows a given element as menu\n *\n * @param {object} [$toggle=null] menu toggle\n * @param {object} $menuEl menu element\n * @param {Function} complete callback when the showing animation is done\n */\nexport const showMenu = ($toggle, $menuEl, complete) => {\n\tif ($menuEl.is(currentMenu)) {\n\t\treturn\n\t}\n\thideMenus()\n\tcurrentMenu = $menuEl\n\tcurrentMenuToggle = $toggle\n\t$menuEl.trigger(new $.Event('beforeShow'))\n\t$menuEl.show()\n\t$menuEl.trigger(new $.Event('afterShow'))\n\t// no animation\n\tif (_.isFunction(complete)) {\n\t\tcomplete()\n\t}\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nexport const coreApps = ['', 'admin', 'log', 'core/search', 'core', '3rdparty']\nexport const menuSpeed = 50\nexport const PERMISSION_NONE = 0\nexport const PERMISSION_CREATE = 4\nexport const PERMISSION_READ = 1\nexport const PERMISSION_UPDATE = 2\nexport const PERMISSION_DELETE = 8\nexport const PERMISSION_SHARE = 16\nexport const PERMISSION_ALL = 31\nexport const TAG_FAVORITE = '_$!<Favorite>!$_'\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nconst isAdmin = !!window._oc_isadmin\n\n/**\n * Returns whether the current user is an administrator\n *\n * @return {boolean} true if the user is an admin, false otherwise\n * @since 9.0.0\n */\nexport const isUserAdmin = () => isAdmin\n","/**\n * Copyright (c) 2014 Vincent Petry <pvince81@owncloud.com>\n * Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Daniel Kesselberg <mail@danielkesselberg.de>\n * @author Joas Schilling <coding@schilljs.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Morris Jobke <hey@morrisjobke.de>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n * @author Vincent Petry <vincent@nextcloud.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport Handlebars from 'handlebars'\nimport {\n\tloadTranslations,\n\ttranslate,\n\ttranslatePlural,\n\tregister,\n\tunregister,\n} from '@nextcloud/l10n'\n\n/**\n * L10N namespace with localization functions.\n *\n * @namespace OC.L10n\n * @deprecated 26.0.0 use https://www.npmjs.com/package/@nextcloud/l10n\n */\nconst L10n = {\n\n\t/**\n\t * Load an app's translation bundle if not loaded already.\n\t *\n\t * @deprecated 26.0.0 use `loadTranslations` from https://www.npmjs.com/package/@nextcloud/l10n\n\t *\n\t * @param {string} appName name of the app\n\t * @param {Function} callback callback to be called when\n\t * the translations are loaded\n\t * @return {Promise} promise\n\t */\n\tload: loadTranslations,\n\n\t/**\n\t * Register an app's translation bundle.\n\t *\n\t * @deprecated 26.0.0 use `register` from https://www.npmjs.com/package/@nextcloud/l10\n\t *\n\t * @param {string} appName name of the app\n\t * @param {Object<string, string>} bundle bundle\n\t */\n\tregister,\n\n\t/**\n\t * @private\n\t * @deprecated 26.0.0 use `unregister` from https://www.npmjs.com/package/@nextcloud/l10n\n\t */\n\t_unregister: unregister,\n\n\t/**\n\t * Translate a string\n\t *\n\t * @deprecated 26.0.0 use `translate` from https://www.npmjs.com/package/@nextcloud/l10n\n\t *\n\t * @param {string} app the id of the app for which to translate the string\n\t * @param {string} text the string to translate\n\t * @param {object} [vars] map of placeholder key to value\n\t * @param {number} [count] number to replace %n with\n\t * @param {Array} [options] options array\n\t * @param {boolean} [options.escape=true] enable/disable auto escape of placeholders (by default enabled)\n\t * @param {boolean} [options.sanitize=true] enable/disable sanitization (by default enabled)\n\t * @return {string}\n\t */\n\ttranslate,\n\n\t/**\n\t * Translate a plural string\n\t *\n\t * @deprecated 26.0.0 use `translatePlural` from https://www.npmjs.com/package/@nextcloud/l10n\n\t *\n\t * @param {string} app the id of the app for which to translate the string\n\t * @param {string} textSingular the string to translate for exactly one object\n\t * @param {string} textPlural the string to translate for n objects\n\t * @param {number} count number to determine whether to use singular or plural\n\t * @param {object} [vars] map of placeholder key to value\n\t * @param {Array} [options] options array\n\t * @param {boolean} [options.escape=true] enable/disable auto escape of placeholders (by default enabled)\n\t * @return {string} Translated string\n\t */\n\ttranslatePlural,\n}\n\nexport default L10n\n\nHandlebars.registerHelper('t', function(app, text) {\n\treturn translate(app, text)\n})\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author rakekniven <mark.ziegler@rakekniven.de>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport $ from 'jquery'\n\n/**\n * A little class to manage a status field for a \"saving\" process.\n * It can be used to display a starting message (e.g. \"Saving...\") and then\n * replace it with a green success message or a red error message.\n *\n * @namespace OC.msg\n */\nexport default {\n\t/**\n\t * Displayes a \"Saving...\" message in the given message placeholder\n\t *\n\t * @param {object} selector Placeholder to display the message in\n\t */\n\tstartSaving(selector) {\n\t\tthis.startAction(selector, t('core', 'Saving …'))\n\t},\n\n\t/**\n\t * Displayes a custom message in the given message placeholder\n\t *\n\t * @param {object} selector Placeholder to display the message in\n\t * @param {string} message Plain text message to display (no HTML allowed)\n\t */\n\tstartAction(selector, message) {\n\t\t$(selector).text(message)\n\t\t\t.removeClass('success')\n\t\t\t.removeClass('error')\n\t\t\t.stop(true, true)\n\t\t\t.show()\n\t},\n\n\t/**\n\t * Displayes an success/error message in the given selector\n\t *\n\t * @param {object} selector Placeholder to display the message in\n\t * @param {object} response Response of the server\n\t * @param {object} response.data Data of the servers response\n\t * @param {string} response.data.message Plain text message to display (no HTML allowed)\n\t * @param {string} response.status is being used to decide whether the message\n\t * is displayed as an error/success\n\t */\n\tfinishedSaving(selector, response) {\n\t\tthis.finishedAction(selector, response)\n\t},\n\n\t/**\n\t * Displayes an success/error message in the given selector\n\t *\n\t * @param {object} selector Placeholder to display the message in\n\t * @param {object} response Response of the server\n\t * @param {object} response.data Data of the servers response\n\t * @param {string} response.data.message Plain text message to display (no HTML allowed)\n\t * @param {string} response.status is being used to decide whether the message\n\t * is displayed as an error/success\n\t */\n\tfinishedAction(selector, response) {\n\t\tif (response.status === 'success') {\n\t\t\tthis.finishedSuccess(selector, response.data.message)\n\t\t} else {\n\t\t\tthis.finishedError(selector, response.data.message)\n\t\t}\n\t},\n\n\t/**\n\t * Displayes an success message in the given selector\n\t *\n\t * @param {object} selector Placeholder to display the message in\n\t * @param {string} message Plain text success message to display (no HTML allowed)\n\t */\n\tfinishedSuccess(selector, message) {\n\t\t$(selector).text(message)\n\t\t\t.addClass('success')\n\t\t\t.removeClass('error')\n\t\t\t.stop(true, true)\n\t\t\t.delay(3000)\n\t\t\t.fadeOut(900)\n\t\t\t.show()\n\t},\n\n\t/**\n\t * Displayes an error message in the given selector\n\t *\n\t * @param {object} selector Placeholder to display the message in\n\t * @param {string} message Plain text error message to display (no HTML allowed)\n\t */\n\tfinishedError(selector, message) {\n\t\t$(selector).text(message)\n\t\t\t.addClass('error')\n\t\t\t.removeClass('success')\n\t\t\t.show()\n\t},\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport _ from 'underscore'\nimport $ from 'jquery'\nimport moment from 'moment'\nimport { generateUrl } from '@nextcloud/router'\n\nimport OC from './index'\n\n/**\n * @namespace OC.PasswordConfirmation\n */\nexport default {\n\tcallback: null,\n\n\tpageLoadTime: null,\n\n\tinit() {\n\t\t$('.password-confirm-required').on('click', _.bind(this.requirePasswordConfirmation, this))\n\t\tthis.pageLoadTime = moment.now()\n\t},\n\n\trequiresPasswordConfirmation() {\n\t\tconst serverTimeDiff = this.pageLoadTime - (window.nc_pageLoad * 1000)\n\t\tconst timeSinceLogin = moment.now() - (serverTimeDiff + (window.nc_lastLogin * 1000))\n\n\t\t// if timeSinceLogin > 30 minutes and user backend allows password confirmation\n\t\treturn (window.backendAllowsPasswordConfirmation && timeSinceLogin > 30 * 60 * 1000)\n\t},\n\n\t/**\n\t * @param {Function} callback success callback function\n\t * @param {object} options options\n\t * @param {Function} rejectCallback error callback function\n\t */\n\trequirePasswordConfirmation(callback, options, rejectCallback) {\n\t\toptions = typeof options !== 'undefined' ? options : {}\n\t\tconst defaults = {\n\t\t\ttitle: t('core', 'Authentication required'),\n\t\t\ttext: t(\n\t\t\t\t'core',\n\t\t\t\t'This action requires you to confirm your password'\n\t\t\t),\n\t\t\tconfirm: t('core', 'Confirm'),\n\t\t\tlabel: t('core', 'Password'),\n\t\t\terror: '',\n\t\t}\n\n\t\tconst config = _.extend(defaults, options)\n\n\t\tconst self = this\n\n\t\tif (this.requiresPasswordConfirmation()) {\n\t\t\tOC.dialogs.prompt(\n\t\t\t\tconfig.text,\n\t\t\t\tconfig.title,\n\t\t\t\tfunction(result, password) {\n\t\t\t\t\tif (result && password !== '') {\n\t\t\t\t\t\tself._confirmPassword(password, config)\n\t\t\t\t\t} else if (_.isFunction(rejectCallback)) {\n\t\t\t\t\t\trejectCallback()\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\ttrue,\n\t\t\t\tconfig.label,\n\t\t\t\ttrue\n\t\t\t).then(function() {\n\t\t\t\tconst $dialog = $('.oc-dialog:visible')\n\t\t\t\t$dialog.find('.ui-icon').remove()\n\t\t\t\t$dialog.addClass('password-confirmation')\n\t\t\t\tif (config.error !== '') {\n\t\t\t\t\tconst $error = $('<p></p>').addClass('msg warning').text(config.error)\n\t\t\t\t\t$dialog.find('.oc-dialog-content').append($error)\n\t\t\t\t}\n\t\t\t\t$dialog.find('.oc-dialog-buttonrow').addClass('aside')\n\n\t\t\t\tconst $buttons = $dialog.find('button')\n\t\t\t\t$buttons.eq(0).hide()\n\t\t\t\t$buttons.eq(1).text(config.confirm)\n\t\t\t})\n\t\t}\n\n\t\tthis.callback = callback\n\t},\n\n\t_confirmPassword(password, config) {\n\t\tconst self = this\n\n\t\t$.ajax({\n\t\t\turl: generateUrl('/login/confirm'),\n\t\t\tdata: {\n\t\t\t\tpassword,\n\t\t\t},\n\t\t\ttype: 'POST',\n\t\t\tsuccess(response) {\n\t\t\t\twindow.nc_lastLogin = response.lastLogin\n\n\t\t\t\tif (_.isFunction(self.callback)) {\n\t\t\t\t\tself.callback()\n\t\t\t\t}\n\t\t\t},\n\t\t\terror() {\n\t\t\t\tconfig.error = t('core', 'Failed to authenticate, try again')\n\t\t\t\tOC.PasswordConfirmation.requirePasswordConfirmation(self.callback, config)\n\t\t\t},\n\t\t})\n\t},\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nexport const theme = window._theme || {}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport _ from 'underscore'\nimport OC from './index'\n\n/**\n * Utility class for the history API,\n * includes fallback to using the URL hash when\n * the browser doesn't support the history API.\n *\n * @namespace OC.Util.History\n */\nexport default {\n\n\t_handlers: [],\n\n\t/**\n\t * Push the current URL parameters to the history stack\n\t * and change the visible URL.\n\t * Note: this includes a workaround for IE8/IE9 that uses\n\t * the hash part instead of the search part.\n\t *\n\t * @param {object | string} params to append to the URL, can be either a string\n\t * or a map\n\t * @param {string} [url] URL to be used, otherwise the current URL will be used,\n\t * using the params as query string\n\t * @param {boolean} [replace=false] whether to replace instead of pushing\n\t */\n\t_pushState(params, url, replace) {\n\t\tlet strParams\n\t\tif (typeof (params) === 'string') {\n\t\t\tstrParams = params\n\t\t} else {\n\t\t\tstrParams = OC.buildQueryString(params)\n\t\t}\n\n\t\tif (window.history.pushState) {\n\t\t\turl = url || location.pathname + '?' + strParams\n\t\t\t// Workaround for bug with SVG and window.history.pushState on Firefox < 51\n\t\t\t// https://bugzilla.mozilla.org/show_bug.cgi?id=652991\n\t\t\tconst isFirefox = navigator.userAgent.toLowerCase().indexOf('firefox') > -1\n\t\t\tif (isFirefox && parseInt(navigator.userAgent.split('/').pop()) < 51) {\n\t\t\t\tconst patterns = document.querySelectorAll('[fill^=\"url(#\"], [stroke^=\"url(#\"], [filter^=\"url(#invert\"]')\n\t\t\t\tfor (let i = 0, ii = patterns.length, pattern; i < ii; i++) {\n\t\t\t\t\tpattern = patterns[i]\n\t\t\t\t\t// eslint-disable-next-line no-self-assign\n\t\t\t\t\tpattern.style.fill = pattern.style.fill\n\t\t\t\t\t// eslint-disable-next-line no-self-assign\n\t\t\t\t\tpattern.style.stroke = pattern.style.stroke\n\t\t\t\t\tpattern.removeAttribute('filter')\n\t\t\t\t\tpattern.setAttribute('filter', 'url(#invert)')\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (replace) {\n\t\t\t\twindow.history.replaceState(params, '', url)\n\t\t\t} else {\n\t\t\t\twindow.history.pushState(params, '', url)\n\t\t\t}\n\t\t} else {\n\t\t\t// use URL hash for IE8\n\t\t\twindow.location.hash = '?' + strParams\n\t\t\t// inhibit next onhashchange that just added itself\n\t\t\t// to the event queue\n\t\t\tthis._cancelPop = true\n\t\t}\n\t},\n\n\t/**\n\t * Push the current URL parameters to the history stack\n\t * and change the visible URL.\n\t * Note: this includes a workaround for IE8/IE9 that uses\n\t * the hash part instead of the search part.\n\t *\n\t * @param {object | string} params to append to the URL, can be either a string or a map\n\t * @param {string} [url] URL to be used, otherwise the current URL will be used, using the params as query string\n\t */\n\tpushState(params, url) {\n\t\tthis._pushState(params, url, false)\n\t},\n\n\t/**\n\t * Push the current URL parameters to the history stack\n\t * and change the visible URL.\n\t * Note: this includes a workaround for IE8/IE9 that uses\n\t * the hash part instead of the search part.\n\t *\n\t * @param {object | string} params to append to the URL, can be either a string\n\t * or a map\n\t * @param {string} [url] URL to be used, otherwise the current URL will be used,\n\t * using the params as query string\n\t */\n\treplaceState(params, url) {\n\t\tthis._pushState(params, url, true)\n\t},\n\n\t/**\n\t * Add a popstate handler\n\t *\n\t * @param {Function} handler handler\n\t */\n\taddOnPopStateHandler(handler) {\n\t\tthis._handlers.push(handler)\n\t},\n\n\t/**\n\t * Parse a query string from the hash part of the URL.\n\t * (workaround for IE8 / IE9)\n\t *\n\t * @return {string}\n\t */\n\t_parseHashQuery() {\n\t\tconst hash = window.location.hash\n\t\tconst pos = hash.indexOf('?')\n\t\tif (pos >= 0) {\n\t\t\treturn hash.substr(pos + 1)\n\t\t}\n\t\tif (hash.length) {\n\t\t\t// remove hash sign\n\t\t\treturn hash.substr(1)\n\t\t}\n\t\treturn ''\n\t},\n\n\t_decodeQuery(query) {\n\t\treturn query.replace(/\\+/g, ' ')\n\t},\n\n\t/**\n\t * Parse the query/search part of the URL.\n\t * Also try and parse it from the URL hash (for IE8)\n\t *\n\t * @return {object} map of parameters\n\t */\n\tparseUrlQuery() {\n\t\tconst query = this._parseHashQuery()\n\t\tlet params\n\t\t// try and parse from URL hash first\n\t\tif (query) {\n\t\t\tparams = OC.parseQueryString(this._decodeQuery(query))\n\t\t}\n\t\t// else read from query attributes\n\t\tparams = _.extend(params || {}, OC.parseQueryString(this._decodeQuery(location.search)))\n\t\treturn params || {}\n\t},\n\n\t_onPopState(e) {\n\t\tif (this._cancelPop) {\n\t\t\tthis._cancelPop = false\n\t\t\treturn\n\t\t}\n\t\tlet params\n\t\tif (!this._handlers.length) {\n\t\t\treturn\n\t\t}\n\t\tparams = (e && e.state)\n\t\tif (_.isString(params)) {\n\t\t\tparams = OC.parseQueryString(params)\n\t\t} else if (!params) {\n\t\t\tparams = this.parseUrlQuery() || {}\n\t\t}\n\t\tfor (let i = 0; i < this._handlers.length; i++) {\n\t\t\tthis._handlers[i](params)\n\t\t}\n\t},\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport moment from 'moment'\n\nimport History from './util-history'\nimport OC from './index'\nimport { formatFileSize as humanFileSize } from '@nextcloud/files'\n\n/**\n * @param {any} t -\n */\nfunction chunkify(t) {\n\t// Adapted from http://my.opera.com/GreyWyvern/blog/show.dml/1671288\n\tconst tz = []\n\tlet x = 0\n\tlet y = -1\n\tlet n = 0\n\tlet c\n\n\twhile (x < t.length) {\n\t\tc = t.charAt(x)\n\t\t// only include the dot in strings\n\t\tconst m = ((!n && c === '.') || (c >= '0' && c <= '9'))\n\t\tif (m !== n) {\n\t\t\t// next chunk\n\t\t\ty++\n\t\t\ttz[y] = ''\n\t\t\tn = m\n\t\t}\n\t\ttz[y] += c\n\t\tx++\n\t}\n\treturn tz\n}\n\n/**\n * Utility functions\n *\n * @namespace OC.Util\n */\nexport default {\n\n\tHistory,\n\n\t/**\n\t * @deprecated use https://nextcloud.github.io/nextcloud-files/modules/_humanfilesize_.html#formatfilesize\n\t */\n\thumanFileSize,\n\n\t/**\n\t * Returns a file size in bytes from a humanly readable string\n\t * Makes 2kB to 2048.\n\t * Inspired by computerFileSize in helper.php\n\t *\n\t * @param {string} string file size in human readable format\n\t * @return {number} or null if string could not be parsed\n\t *\n\t *\n\t */\n\tcomputerFileSize(string) {\n\t\tif (typeof string !== 'string') {\n\t\t\treturn null\n\t\t}\n\n\t\tconst s = string.toLowerCase().trim()\n\t\tlet bytes = null\n\n\t\tconst bytesArray = {\n\t\t\tb: 1,\n\t\t\tk: 1024,\n\t\t\tkb: 1024,\n\t\t\tmb: 1024 * 1024,\n\t\t\tm: 1024 * 1024,\n\t\t\tgb: 1024 * 1024 * 1024,\n\t\t\tg: 1024 * 1024 * 1024,\n\t\t\ttb: 1024 * 1024 * 1024 * 1024,\n\t\t\tt: 1024 * 1024 * 1024 * 1024,\n\t\t\tpb: 1024 * 1024 * 1024 * 1024 * 1024,\n\t\t\tp: 1024 * 1024 * 1024 * 1024 * 1024,\n\t\t}\n\n\t\tconst matches = s.match(/^[\\s+]?([0-9]*)(\\.([0-9]+))?( +)?([kmgtp]?b?)$/i)\n\t\tif (matches !== null) {\n\t\t\tbytes = parseFloat(s)\n\t\t\tif (!isFinite(bytes)) {\n\t\t\t\treturn null\n\t\t\t}\n\t\t} else {\n\t\t\treturn null\n\t\t}\n\t\tif (matches[5]) {\n\t\t\tbytes = bytes * bytesArray[matches[5]]\n\t\t}\n\n\t\tbytes = Math.round(bytes)\n\t\treturn bytes\n\t},\n\n\t/**\n\t * @param {string|number} timestamp timestamp\n\t * @param {string} format date format, see momentjs docs\n\t * @return {string} timestamp formatted as requested\n\t */\n\tformatDate(timestamp, format) {\n\t\tif (window.TESTING === undefined) {\n\t\t\tconsole.warn('OC.Util.formatDate is deprecated and will be removed in Nextcloud 21. See @nextcloud/moment')\n\t\t}\n\t\tformat = format || 'LLL'\n\t\treturn moment(timestamp).format(format)\n\t},\n\n\t/**\n\t * @param {string|number} timestamp timestamp\n\t * @return {string} human readable difference from now\n\t */\n\trelativeModifiedDate(timestamp) {\n\t\tif (window.TESTING === undefined) {\n\t\t\tconsole.warn('OC.Util.relativeModifiedDate is deprecated and will be removed in Nextcloud 21. See @nextcloud/moment')\n\t\t}\n\t\tconst diff = moment().diff(moment(timestamp))\n\t\tif (diff >= 0 && diff < 45000) {\n\t\t\treturn t('core', 'seconds ago')\n\t\t}\n\t\treturn moment(timestamp).fromNow()\n\t},\n\n\t/**\n\t * Returns the width of a generic browser scrollbar\n\t *\n\t * @return {number} width of scrollbar\n\t */\n\tgetScrollBarWidth() {\n\t\tif (this._scrollBarWidth) {\n\t\t\treturn this._scrollBarWidth\n\t\t}\n\n\t\tconst inner = document.createElement('p')\n\t\tinner.style.width = '100%'\n\t\tinner.style.height = '200px'\n\n\t\tconst outer = document.createElement('div')\n\t\touter.style.position = 'absolute'\n\t\touter.style.top = '0px'\n\t\touter.style.left = '0px'\n\t\touter.style.visibility = 'hidden'\n\t\touter.style.width = '200px'\n\t\touter.style.height = '150px'\n\t\touter.style.overflow = 'hidden'\n\t\touter.appendChild(inner)\n\n\t\tdocument.body.appendChild(outer)\n\t\tconst w1 = inner.offsetWidth\n\t\touter.style.overflow = 'scroll'\n\t\tlet w2 = inner.offsetWidth\n\t\tif (w1 === w2) {\n\t\t\tw2 = outer.clientWidth\n\t\t}\n\n\t\tdocument.body.removeChild(outer)\n\n\t\tthis._scrollBarWidth = (w1 - w2)\n\n\t\treturn this._scrollBarWidth\n\t},\n\n\t/**\n\t * Remove the time component from a given date\n\t *\n\t * @param {Date} date date\n\t * @return {Date} date with stripped time\n\t */\n\tstripTime(date) {\n\t\t// FIXME: likely to break when crossing DST\n\t\t// would be better to use a library like momentJS\n\t\treturn new Date(date.getFullYear(), date.getMonth(), date.getDate())\n\t},\n\n\t/**\n\t * Compare two strings to provide a natural sort\n\t *\n\t * @param {string} a first string to compare\n\t * @param {string} b second string to compare\n\t * @return {number} -1 if b comes before a, 1 if a comes before b\n\t * or 0 if the strings are identical\n\t */\n\tnaturalSortCompare(a, b) {\n\t\tlet x\n\t\tconst aa = chunkify(a)\n\t\tconst bb = chunkify(b)\n\n\t\tfor (x = 0; aa[x] && bb[x]; x++) {\n\t\t\tif (aa[x] !== bb[x]) {\n\t\t\t\tconst aNum = Number(aa[x]); const bNum = Number(bb[x])\n\t\t\t\t// note: == is correct here\n\t\t\t\t/* eslint-disable-next-line */\n\t\t\t\tif (aNum == aa[x] && bNum == bb[x]) {\n\t\t\t\t\treturn aNum - bNum\n\t\t\t\t} else {\n\t\t\t\t\t// Note: This locale setting isn't supported by all browsers but for the ones\n\t\t\t\t\t// that do there will be more consistency between client-server sorting\n\t\t\t\t\treturn aa[x].localeCompare(bb[x], OC.getLanguage())\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn aa.length - bb.length\n\t},\n\n\t/**\n\t * Calls the callback in a given interval until it returns true\n\t *\n\t * @param {Function} callback function to call on success\n\t * @param {number} interval in milliseconds\n\t */\n\twaitFor(callback, interval) {\n\t\tconst internalCallback = function() {\n\t\t\tif (callback() !== true) {\n\t\t\t\tsetTimeout(internalCallback, interval)\n\t\t\t}\n\t\t}\n\n\t\tinternalCallback()\n\t},\n\n\t/**\n\t * Checks if a cookie with the given name is present and is set to the provided value.\n\t *\n\t * @param {string} name name of the cookie\n\t * @param {string} value value of the cookie\n\t * @return {boolean} true if the cookie with the given name has the given value\n\t */\n\tisCookieSetToValue(name, value) {\n\t\tconst cookies = document.cookie.split(';')\n\t\tfor (let i = 0; i < cookies.length; i++) {\n\t\t\tconst cookie = cookies[i].split('=')\n\t\t\tif (cookie[0].trim() === name && cookie[1].trim() === value) {\n\t\t\t\treturn true\n\t\t\t}\n\t\t}\n\t\treturn false\n\t},\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nconst base = window._oc_debug\n\nexport const debug = base\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nlet webroot = window._oc_webroot\n\nif (typeof webroot === 'undefined') {\n\twebroot = location.pathname\n\tconst pos = webroot.indexOf('/index.php/')\n\tif (pos !== -1) {\n\t\twebroot = webroot.substr(0, pos)\n\t} else {\n\t\twebroot = webroot.substr(0, webroot.lastIndexOf('/'))\n\t}\n}\n\nexport default webroot\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nexport const get = context => name => {\n\tconst namespaces = name.split('.')\n\tconst tail = namespaces.pop()\n\n\tfor (let i = 0; i < namespaces.length; i++) {\n\t\tcontext = context[namespaces[i]]\n\t\tif (!context) {\n\t\t\treturn false\n\t\t}\n\t}\n\treturn context[tail]\n}\n\n/**\n * Set a variable by name\n *\n * @param {string} context context\n * @return {Function} setter\n * @deprecated 19.0.0 use https://lodash.com/docs#set\n */\nexport const set = context => (name, value) => {\n\tconst namespaces = name.split('.')\n\tconst tail = namespaces.pop()\n\n\tfor (let i = 0; i < namespaces.length; i++) {\n\t\tif (!context[namespaces[i]]) {\n\t\t\tcontext[namespaces[i]] = {}\n\t\t}\n\t\tcontext = context[namespaces[i]]\n\t}\n\tcontext[tail] = value\n\treturn value\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { subscribe } from '@nextcloud/event-bus'\n\nimport { addScript, addStyle } from './legacy-loader'\nimport {\n\tajaxConnectionLostHandler,\n\tprocessAjaxError,\n\tregisterXHRForErrorProcessing,\n} from './xhr-error'\nimport Apps from './apps'\nimport { AppConfig, appConfig } from './appconfig'\nimport { appSettings } from './appsettings'\nimport appswebroots from './appswebroots'\nimport Backbone from './backbone'\nimport {\n\tbasename,\n\tdirname,\n\tencodePath,\n\tisSamePath,\n\tjoinPaths,\n} from '@nextcloud/paths'\nimport {\n\tbuild as buildQueryString,\n\tparse as parseQueryString,\n} from './query-string'\nimport Config from './config'\nimport {\n\tcoreApps,\n\tmenuSpeed,\n\tPERMISSION_ALL,\n\tPERMISSION_CREATE,\n\tPERMISSION_DELETE,\n\tPERMISSION_NONE,\n\tPERMISSION_READ,\n\tPERMISSION_SHARE,\n\tPERMISSION_UPDATE,\n\tTAG_FAVORITE,\n} from './constants'\nimport ContactsMenu from './contactsmenu'\nimport { currentUser, getCurrentUser } from './currentuser'\nimport Dialogs from './dialogs'\nimport EventSource from './eventsource'\nimport { get, set } from './get_set'\nimport { getCapabilities } from './capabilities'\nimport {\n\tgetHost,\n\tgetHostName,\n\tgetPort,\n\tgetProtocol,\n} from './host'\nimport {\n\tgetToken as getRequestToken,\n} from './requesttoken'\nimport {\n\thideMenus,\n\tregisterMenu,\n\tshowMenu,\n\tunregisterMenu,\n} from './menu'\nimport { isUserAdmin } from './admin'\nimport L10N from './l10n'\nimport {\n\tgetCanonicalLocale,\n\tgetLanguage,\n\tgetLocale,\n} from '@nextcloud/l10n'\n\nimport {\n\tgenerateUrl,\n\tgenerateFilePath,\n\tgenerateOcsUrl,\n\tgenerateRemoteUrl,\n\tgetRootUrl,\n\timagePath,\n\tlinkTo,\n} from '@nextcloud/router'\n\nimport {\n\tlinkToRemoteBase,\n} from './routing'\nimport msg from './msg'\nimport Notification from './notification'\nimport PasswordConfirmation from './password-confirmation'\nimport Plugins from './plugins'\nimport { theme } from './theme'\nimport Util from './util'\nimport { debug } from './debug'\nimport { redirect, reload } from './navigation'\nimport webroot from './webroot'\n\n/** @namespace OC */\nexport default {\n\t/*\n\t * Constants\n\t */\n\tcoreApps,\n\tmenuSpeed,\n\tPERMISSION_ALL,\n\tPERMISSION_CREATE,\n\tPERMISSION_DELETE,\n\tPERMISSION_NONE,\n\tPERMISSION_READ,\n\tPERMISSION_SHARE,\n\tPERMISSION_UPDATE,\n\tTAG_FAVORITE,\n\n\t/*\n\t * Deprecated helpers to be removed\n\t */\n\t/**\n\t * Check if a user file is allowed to be handled.\n\t *\n\t * @param {string} file to check\n\t * @return {boolean}\n\t * @deprecated 17.0.0\n\t */\n\tfileIsBlacklisted: file => !!(file.match(Config.blacklist_files_regex)),\n\n\taddScript,\n\taddStyle,\n\tApps,\n\tAppConfig,\n\tappConfig,\n\tappSettings,\n\tappswebroots,\n\tBackbone,\n\tContactsMenu,\n\tconfig: Config,\n\t/**\n\t * Currently logged in user or null if none\n\t *\n\t * @type {string}\n\t * @deprecated use `getCurrentUser` from https://www.npmjs.com/package/@nextcloud/auth\n\t */\n\tcurrentUser,\n\tdialogs: Dialogs,\n\tEventSource,\n\t/**\n\t * Returns the currently logged in user or null if there is no logged in\n\t * user (public page mode)\n\t *\n\t * @since 9.0.0\n\t * @deprecated 19.0.0 use `getCurrentUser` from https://www.npmjs.com/package/@nextcloud/auth\n\t */\n\tgetCurrentUser,\n\tisUserAdmin,\n\tL10N,\n\n\t/**\n\t * Ajax error handlers\n\t *\n\t * @todo remove from here and keep internally -> requires new tests\n\t */\n\t_ajaxConnectionLostHandler: ajaxConnectionLostHandler,\n\t_processAjaxError: processAjaxError,\n\tregisterXHRForErrorProcessing,\n\n\t/**\n\t * Capabilities\n\t *\n\t * @type {Array}\n\t * @deprecated 20.0.0 use @nextcloud/capabilities instead\n\t */\n\tgetCapabilities,\n\n\t/*\n\t * Legacy menu helpers\n\t */\n\thideMenus,\n\tregisterMenu,\n\tshowMenu,\n\tunregisterMenu,\n\n\t/*\n\t * Path helpers\n\t */\n\t/**\n\t * @deprecated 18.0.0 use https://www.npmjs.com/package/@nextcloud/paths\n\t */\n\tbasename,\n\t/**\n\t * @deprecated 18.0.0 use https://www.npmjs.com/package/@nextcloud/paths\n\t */\n\tencodePath,\n\t/**\n\t * @deprecated 18.0.0 use https://www.npmjs.com/package/@nextcloud/paths\n\t */\n\tdirname,\n\t/**\n\t * @deprecated 18.0.0 use https://www.npmjs.com/package/@nextcloud/paths\n\t */\n\tisSamePath,\n\t/**\n\t * @deprecated 18.0.0 use https://www.npmjs.com/package/@nextcloud/paths\n\t */\n\tjoinPaths,\n\n\t/**\n\t * Host (url) helpers\n\t */\n\tgetHost,\n\tgetHostName,\n\tgetPort,\n\tgetProtocol,\n\n\t/**\n\t * @deprecated 20.0.0 use `getCanonicalLocale` from https://www.npmjs.com/package/@nextcloud/l10n\n\t */\n\tgetCanonicalLocale,\n\t/**\n\t * @deprecated 26.0.0 use `getLocale` from https://www.npmjs.com/package/@nextcloud/l10n\n\t */\n\tgetLocale,\n\t/**\n\t * @deprecated 26.0.0 use `getLanguage` from https://www.npmjs.com/package/@nextcloud/l10n\n\t */\n\tgetLanguage,\n\n\t/**\n\t * Query string helpers\n\t */\n\tbuildQueryString,\n\tparseQueryString,\n\n\tmsg,\n\tNotification,\n\tPasswordConfirmation,\n\tPlugins,\n\ttheme,\n\tUtil,\n\tdebug,\n\t/**\n\t * @deprecated 19.0.0 use `generateFilePath` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\tfilePath: generateFilePath,\n\t/**\n\t * @deprecated 19.0.0 use `generateUrl` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\tgenerateUrl,\n\t/**\n\t * @deprecated 19.0.0 use https://lodash.com/docs#get\n\t */\n\tget: get(window),\n\t/**\n\t * @deprecated 19.0.0 use https://lodash.com/docs#set\n\t */\n\tset: set(window),\n\t/**\n\t * @deprecated 19.0.0 use `getRootUrl` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\tgetRootPath: getRootUrl,\n\t/**\n\t * @deprecated 19.0.0 use `imagePath` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\timagePath,\n\tredirect,\n\treload,\n\trequestToken: getRequestToken(),\n\t/**\n\t * @deprecated 19.0.0 use `linkTo` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\tlinkTo,\n\t/**\n\t * @param {string} service service name\n\t * @param {number} version OCS API version\n\t * @return {string} OCS API base path\n\t * @deprecated 19.0.0 use `generateOcsUrl` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\tlinkToOCS: (service, version) => {\n\t\treturn generateOcsUrl(service, {}, {\n\t\t\tocsVersion: version || 1,\n\t\t}) + '/'\n\t},\n\t/**\n\t * @deprecated 19.0.0 use `generateRemoteUrl` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\tlinkToRemote: generateRemoteUrl,\n\tlinkToRemoteBase,\n\t/**\n\t * Relative path to Nextcloud root.\n\t * For example: \"/nextcloud\"\n\t *\n\t * @type {string}\n\t *\n\t * @deprecated 19.0.0 use `getRootUrl` from https://www.npmjs.com/package/@nextcloud/router\n\t * @see OC#getRootPath\n\t */\n\twebroot,\n}\n\n// Keep the request token prop in sync\nsubscribe('csrf-token-update', e => {\n\tOC.requestToken = e.token\n\n\t// Logging might help debug (Sentry) issues\n\tconsole.info('OC.requestToken changed', e.token)\n})\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n/* eslint-disable */\nimport $ from 'jquery'\nimport { filePath } from './routing'\nimport { generateFilePath } from \"@nextcloud/router\"\n\n/**\n * Opens a popup with the setting for an app.\n * @param {string} appid The ID of the app e.g. 'calendar', 'contacts' or 'files'.\n * @param {boolean|string} loadJS If true 'js/settings.js' is loaded. If it's a string\n * it will attempt to load a script by that name in the 'js' directory.\n * @param {boolean} [cache] If true the javascript file won't be forced refreshed. Defaults to true.\n * @param {string} [scriptName] The name of the PHP file to load. Defaults to 'settings.php' in\n * the root of the app directory hierarchy.\n *\n * @deprecated 17.0.0 this method is unused and will be removed with Nextcloud 18\n */\nexport const appSettings = args => {\n\tconsole.warn('OC.appSettings is deprecated and will be removed with Nextcloud 18')\n\n\tif (typeof args === 'undefined' || typeof args.appid === 'undefined') {\n\t\tthrow {\n\t\t\tname: 'MissingParameter',\n\t\t\tmessage: 'The parameter appid is missing'\n\t\t}\n\t}\n\tvar props = { scriptName: 'settings.php', cache: true }\n\t$.extend(props, args)\n\tvar settings = $('#appsettings')\n\tif (settings.length === 0) {\n\t\tthrow {\n\t\t\tname: 'MissingDOMElement',\n\t\t\tmessage: 'There has be be an element with id \"appsettings\" for the popup to show.'\n\t\t}\n\t}\n\tvar popup = $('#appsettings_popup')\n\tif (popup.length === 0) {\n\t\t$('body').prepend('<div class=\"popup hidden\" id=\"appsettings_popup\"></div>')\n\t\tpopup = $('#appsettings_popup')\n\t\tpopup.addClass(settings.hasClass('topright') ? 'topright' : 'bottomleft')\n\t}\n\tif (popup.is(':visible')) {\n\t\tpopup.hide().remove()\n\t} else {\n\t\tconst arrowclass = settings.hasClass('topright') ? 'up' : 'left'\n\t\t$.get(generateFilePath(props.appid, '', props.scriptName), function(data) {\n\t\t\tpopup.html(data).ready(function() {\n\t\t\t\tpopup.prepend('<span class=\"arrow ' + arrowclass + '\"></span><h2>' + t('core', 'Settings') + '</h2><a class=\"close\"></a>').show()\n\t\t\t\tpopup.find('.close').bind('click', function() {\n\t\t\t\t\tpopup.remove()\n\t\t\t\t})\n\t\t\t\tif (typeof props.loadJS !== 'undefined') {\n\t\t\t\t\tvar scriptname\n\t\t\t\t\tif (props.loadJS === true) {\n\t\t\t\t\t\tscriptname = 'settings.js'\n\t\t\t\t\t} else if (typeof props.loadJS === 'string') {\n\t\t\t\t\t\tscriptname = props.loadJS\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthrow {\n\t\t\t\t\t\t\tname: 'InvalidParameter',\n\t\t\t\t\t\t\tmessage: 'The \"loadJS\" parameter must be either boolean or a string.'\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (props.cache) {\n\t\t\t\t\t\t$.ajaxSetup({ cache: true })\n\t\t\t\t\t}\n\t\t\t\t\t$.getScript(generateFilePath(props.appid, 'js', scriptname))\n\t\t\t\t\t\t.fail(function(jqxhr, settings, e) {\n\t\t\t\t\t\t\tthrow e\n\t\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}).show()\n\t\t}, 'html')\n\t}\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { getCapabilities as realGetCapabilities } from '@nextcloud/capabilities'\n\n/**\n * Returns the capabilities\n *\n * @return {Array} capabilities\n *\n * @since 14.0.0\n */\nexport const getCapabilities = () => {\n\tconsole.warn('OC.getCapabilities is deprecated and will be removed in Nextcloud 21. See @nextcloud/capabilities')\n\treturn realGetCapabilities()\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nexport const getProtocol = () => window.location.protocol.split(':')[0]\n\n/**\n * Returns the host used to access this Nextcloud instance\n * Host is sometimes the same as the hostname but now always.\n *\n * Examples:\n * http://example.com => example.com\n * https://example.com => example.com\n * http://example.com:8080 => example.com:8080\n *\n * @return {string} host\n *\n * @since 8.2.0\n * @deprecated 17.0.0 use window.location.host directly\n */\nexport const getHost = () => window.location.host\n\n/**\n * Returns the hostname used to access this Nextcloud instance\n * The hostname is always stripped of the port\n *\n * @return {string} hostname\n * @since 9.0.0\n * @deprecated 17.0.0 use window.location.hostname directly\n */\nexport const getHostName = () => window.location.hostname\n\n/**\n * Returns the port number used to access this Nextcloud instance\n *\n * @return {number} port number\n *\n * @since 8.2.0\n * @deprecated 17.0.0 use window.location.port directly\n */\nexport const getPort = () => window.location.port\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport $ from 'jquery'\n\n/**\n * Parses a URL query string into a JS map\n *\n * @param {string} queryString query string in the format param1=1234¶m2=abcde¶m3=xyz\n * @return {Object<string, string>} map containing key/values matching the URL parameters\n */\nexport const parse = queryString => {\n\tlet pos\n\tlet components\n\tconst result = {}\n\tlet key\n\tif (!queryString) {\n\t\treturn null\n\t}\n\tpos = queryString.indexOf('?')\n\tif (pos >= 0) {\n\t\tqueryString = queryString.substr(pos + 1)\n\t}\n\tconst parts = queryString.replace(/\\+/g, '%20').split('&')\n\tfor (let i = 0; i < parts.length; i++) {\n\t\t// split on first equal sign\n\t\tconst part = parts[i]\n\t\tpos = part.indexOf('=')\n\t\tif (pos >= 0) {\n\t\t\tcomponents = [\n\t\t\t\tpart.substr(0, pos),\n\t\t\t\tpart.substr(pos + 1),\n\t\t\t]\n\t\t} else {\n\t\t\t// key only\n\t\t\tcomponents = [part]\n\t\t}\n\t\tif (!components.length) {\n\t\t\tcontinue\n\t\t}\n\t\tkey = decodeURIComponent(components[0])\n\t\tif (!key) {\n\t\t\tcontinue\n\t\t}\n\t\t// if equal sign was there, return string\n\t\tif (components.length > 1) {\n\t\t\tresult[key] = decodeURIComponent(components[1])\n\t\t} else {\n\t\t\t// no equal sign => null value\n\t\t\tresult[key] = null\n\t\t}\n\t}\n\treturn result\n}\n\n/**\n * Builds a URL query from a JS map.\n *\n * @param {Object<string, string>} params map containing key/values matching the URL parameters\n * @return {string} String containing a URL query (without question) mark\n */\nexport const build = params => {\n\tif (!params) {\n\t\treturn ''\n\t}\n\treturn $.map(params, function(value, key) {\n\t\tlet s = encodeURIComponent(key)\n\t\tif (value !== null && typeof (value) !== 'undefined') {\n\t\t\ts += '=' + encodeURIComponent(value)\n\t\t}\n\t\treturn s\n\t}).join('&')\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nexport default {\n\n\t/**\n\t * @type {Array.<OC.Plugin>}\n\t */\n\t_plugins: {},\n\n\t/**\n\t * Register plugin\n\t *\n\t * @param {string} targetName app name / class name to hook into\n\t * @param {OC.Plugin} plugin plugin\n\t */\n\tregister(targetName, plugin) {\n\t\tlet plugins = this._plugins[targetName]\n\t\tif (!plugins) {\n\t\t\tplugins = this._plugins[targetName] = []\n\t\t}\n\t\tplugins.push(plugin)\n\t},\n\n\t/**\n\t * Returns all plugin registered to the given target\n\t * name / app name / class name.\n\t *\n\t * @param {string} targetName app name / class name to hook into\n\t * @return {Array.<OC.Plugin>} array of plugins\n\t */\n\tgetPlugins(targetName) {\n\t\treturn this._plugins[targetName] || []\n\t},\n\n\t/**\n\t * Call attach() on all plugins registered to the given target name.\n\t *\n\t * @param {string} targetName app name / class name\n\t * @param {object} targetObject to be extended\n\t * @param {object} [options] options\n\t */\n\tattach(targetName, targetObject, options) {\n\t\tconst plugins = this.getPlugins(targetName)\n\t\tfor (let i = 0; i < plugins.length; i++) {\n\t\t\tif (plugins[i].attach) {\n\t\t\t\tplugins[i].attach(targetObject, options)\n\t\t\t}\n\t\t}\n\t},\n\n\t/**\n\t * Call detach() on all plugins registered to the given target name.\n\t *\n\t * @param {string} targetName app name / class name\n\t * @param {object} targetObject to be extended\n\t * @param {object} [options] options\n\t */\n\tdetach(targetName, targetObject, options) {\n\t\tconst plugins = this.getPlugins(targetName)\n\t\tfor (let i = 0; i < plugins.length; i++) {\n\t\t\tif (plugins[i].detach) {\n\t\t\t\tplugins[i].detach(targetObject, options)\n\t\t\t}\n\t\t}\n\t},\n\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nexport const redirect = targetURL => { window.location = targetURL }\n\n/**\n * Reloads the current page\n *\n * @deprecated 17.0.0 use window.location.reload directly\n */\nexport const reload = () => { window.location.reload() }\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport {\n\tgetRootUrl as realGetRootUrl,\n} from '@nextcloud/router'\n\n/**\n * Creates a relative url for remote use\n *\n * @param {string} service id\n * @return {string} the url\n */\nexport const linkToRemoteBase = service => {\n\treturn realGetRootUrl() + '/remote.php/' + service\n}\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"guest-box login-box\"},[(!_vm.hideLoginForm || _vm.directLogin)?_c('div',[_c('transition',{attrs:{\"name\":\"fade\",\"mode\":\"out-in\"}},[(!_vm.passwordlessLogin && !_vm.resetPassword && _vm.resetPasswordTarget === '')?_c('div',[_c('LoginForm',{attrs:{\"username\":_vm.user,\"redirect-url\":_vm.redirectUrl,\"direct-login\":_vm.directLogin,\"messages\":_vm.messages,\"errors\":_vm.errors,\"throttle-delay\":_vm.throttleDelay,\"auto-complete-allowed\":_vm.autoCompleteAllowed},on:{\"update:username\":function($event){_vm.user=$event},\"submit\":function($event){_vm.loading = true}}}),_vm._v(\" \"),(_vm.canResetPassword && _vm.resetPasswordLink !== '')?_c('a',{staticClass:\"login-box__link\",attrs:{\"id\":\"lost-password\",\"href\":_vm.resetPasswordLink}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Forgot password?'))+\"\\n\\t\\t\\t\\t\")]):(_vm.canResetPassword && !_vm.resetPassword)?_c('a',{staticClass:\"login-box__link\",attrs:{\"id\":\"lost-password\",\"href\":_vm.resetPasswordLink},on:{\"click\":function($event){$event.preventDefault();_vm.resetPassword = true}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Forgot password?'))+\"\\n\\t\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.hasPasswordless)?[(_vm.countAlternativeLogins)?_c('div',{staticClass:\"alternative-logins\"},[(_vm.hasPasswordless)?_c('a',{staticClass:\"button\",class:{ 'single-alt-login-option': _vm.countAlternativeLogins },attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();_vm.passwordlessLogin = true}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Log in with a device'))+\"\\n\\t\\t\\t\\t\\t\\t\")]):_vm._e()]):_c('a',{attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();_vm.passwordlessLogin = true}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Log in with a device'))+\"\\n\\t\\t\\t\\t\\t\")])]:_vm._e()],2):(!_vm.loading && _vm.passwordlessLogin)?_c('div',{key:\"reset\",staticClass:\"login-additional\"},[_c('PasswordLessLoginForm',{attrs:{\"username\":_vm.user,\"redirect-url\":_vm.redirectUrl,\"auto-complete-allowed\":_vm.autoCompleteAllowed,\"is-https\":_vm.isHttps,\"is-localhost\":_vm.isLocalhost,\"has-public-key-credential\":_vm.hasPublicKeyCredential},on:{\"update:username\":function($event){_vm.user=$event},\"submit\":function($event){_vm.loading = true}}}),_vm._v(\" \"),_c('a',{staticClass:\"login-box__link\",attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();_vm.passwordlessLogin = false}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Back'))+\"\\n\\t\\t\\t\\t\")])],1):(!_vm.loading && _vm.canResetPassword)?_c('div',{key:\"reset\",staticClass:\"login-additional\"},[_c('div',{staticClass:\"lost-password-container\"},[(_vm.resetPassword)?_c('ResetPassword',{attrs:{\"username\":_vm.user,\"reset-password-link\":_vm.resetPasswordLink},on:{\"update:username\":function($event){_vm.user=$event},\"abort\":function($event){_vm.resetPassword = false}}}):_vm._e()],1)]):(_vm.resetPasswordTarget !== '')?_c('div',[_c('UpdatePassword',{attrs:{\"username\":_vm.user,\"reset-password-target\":_vm.resetPasswordTarget},on:{\"update:username\":function($event){_vm.user=$event},\"done\":_vm.passwordResetFinished}})],1):_vm._e()])],1):_c('div',[_c('transition',{attrs:{\"name\":\"fade\",\"mode\":\"out-in\"}},[_c('NcNoteCard',{attrs:{\"type\":\"warning\",\"title\":_vm.t('core', 'Login form is disabled.')}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Please contact your administrator.'))+\"\\n\\t\\t\\t\")])],1)],1),_vm._v(\" \"),_c('div',{staticClass:\"alternative-logins\",attrs:{\"id\":\"alternative-logins\"}},_vm._l((_vm.alternativeLogins),function(alternativeLogin,index){return _c('NcButton',{key:index,class:[alternativeLogin.class],attrs:{\"type\":\"secondary\",\"wide\":true,\"role\":\"link\",\"href\":alternativeLogin.href}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(alternativeLogin.name)+\"\\n\\t\\t\")])}),1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoginButton.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoginButton.vue?vue&type=script&lang=js&\"","<!--\n - @copyright 2020 Christoph Wurst <christoph@winzerhof-wurst.at>\n -\n - @author 2020 Christoph Wurst <christoph@winzerhof-wurst.at>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -->\n\n<template>\n\t<NcButton type=\"primary\"\n\t\tnative-type=\"submit\"\n\t\t:wide=\"true\"\n\t\t@click=\"$emit('click')\">\n\t\t{{ !loading ? value : valueLoading }}\n\t\t<template #icon>\n\t\t\t<div v-if=\"loading\" class=\"submit-wrapper__icon icon-loading-small-dark\" />\n\t\t\t<ArrowRight v-else class=\"submit-wrapper__icon\" />\n\t\t</template>\n\t</NcButton>\n</template>\n\n<script>\nimport NcButton from '@nextcloud/vue/dist/Components/NcButton'\nimport ArrowRight from 'vue-material-design-icons/ArrowRight.vue'\n\nexport default {\n\tname: 'LoginButton',\n\tcomponents: {\n\t\tArrowRight,\n\t\tNcButton,\n\t},\n\tprops: {\n\t\tvalue: {\n\t\t\ttype: String,\n\t\t\tdefault: t('core', 'Log in'),\n\t\t},\n\t\tvalueLoading: {\n\t\t\ttype: String,\n\t\t\tdefault: t('core', 'Logging in …'),\n\t\t},\n\t\tloading: {\n\t\t\ttype: Boolean,\n\t\t\trequired: true,\n\t\t},\n\t\tinvertedColors: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.button-vue {\n\tmargin-top: .5rem;\n}\n</style>\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoginButton.vue?vue&type=style&index=0&id=756414a8&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoginButton.vue?vue&type=style&index=0&id=756414a8&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./LoginButton.vue?vue&type=template&id=756414a8&scoped=true&\"\nimport script from \"./LoginButton.vue?vue&type=script&lang=js&\"\nexport * from \"./LoginButton.vue?vue&type=script&lang=js&\"\nimport style0 from \"./LoginButton.vue?vue&type=style&index=0&id=756414a8&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"756414a8\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('NcButton',{attrs:{\"type\":\"primary\",\"native-type\":\"submit\",\"wide\":true},on:{\"click\":function($event){return _vm.$emit('click')}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [(_vm.loading)?_c('div',{staticClass:\"submit-wrapper__icon icon-loading-small-dark\"}):_c('ArrowRight',{staticClass:\"submit-wrapper__icon\"})]},proxy:true}])},[_vm._v(\"\\n\\t\"+_vm._s(!_vm.loading ? _vm.value : _vm.valueLoading)+\"\\n\\t\")])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoginForm.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoginForm.vue?vue&type=script&lang=js&\"","<!--\n - @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n -\n - @author 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -->\n\n<template>\n\t<form ref=\"loginForm\"\n\t\tclass=\"login-form\"\n\t\tmethod=\"post\"\n\t\tname=\"login\"\n\t\t:action=\"loginActionUrl\"\n\t\t@submit=\"submit\">\n\t\t<fieldset class=\"login-form__fieldset\" data-login-form>\n\t\t\t<NcNoteCard v-if=\"apacheAuthFailed\"\n\t\t\t\t:title=\"t('core', 'Server side authentication failed!')\"\n\t\t\t\ttype=\"warning\">\n\t\t\t\t{{ t('core', 'Please contact your administrator.') }}\n\t\t\t</NcNoteCard>\n\t\t\t<NcNoteCard v-if=\"messages.length > 0\">\n\t\t\t\t<div v-for=\"(message, index) in messages\"\n\t\t\t\t\t:key=\"index\">\n\t\t\t\t\t{{ message }}<br>\n\t\t\t\t</div>\n\t\t\t</NcNoteCard>\n\t\t\t<NcNoteCard v-if=\"internalException\"\n\t\t\t\t:class=\"t('core', 'An internal error occurred.')\"\n\t\t\t\ttype=\"warning\">\n\t\t\t\t{{ t('core', 'Please try again or contact your administrator.') }}\n\t\t\t</NcNoteCard>\n\t\t\t<div id=\"message\"\n\t\t\t\tclass=\"hidden\">\n\t\t\t\t<img class=\"float-spinner\"\n\t\t\t\t\talt=\"\"\n\t\t\t\t\t:src=\"loadingIcon\">\n\t\t\t\t<span id=\"messageText\" />\n\t\t\t\t<!-- the following div ensures that the spinner is always inside the #message div -->\n\t\t\t\t<div style=\"clear: both;\" />\n\t\t\t</div>\n\t\t\t<h2 class=\"login-form__headline\" data-login-form-headline v-html=\"headline\" />\n\t\t\t<NcTextField id=\"user\"\n\t\t\t\tref=\"user\"\n\t\t\t\t:label=\"t('core', 'Account name or email')\"\n\t\t\t\t:label-visible=\"true\"\n\t\t\t\tname=\"user\"\n\t\t\t\t:value.sync=\"user\"\n\t\t\t\t:class=\"{shake: invalidPassword}\"\n\t\t\t\tautocapitalize=\"none\"\n\t\t\t\t:spellchecking=\"false\"\n\t\t\t\t:autocomplete=\"autoCompleteAllowed ? 'username' : 'off'\"\n\t\t\t\trequired\n\t\t\t\tdata-login-form-input-user\n\t\t\t\t@change=\"updateUsername\" />\n\n\t\t\t<NcPasswordField id=\"password\"\n\t\t\t\tref=\"password\"\n\t\t\t\tname=\"password\"\n\t\t\t\t:label-visible=\"true\"\n\t\t\t\t:class=\"{shake: invalidPassword}\"\n\t\t\t\t:value.sync=\"password\"\n\t\t\t\t:spellchecking=\"false\"\n\t\t\t\tautocapitalize=\"none\"\n\t\t\t\t:autocomplete=\"autoCompleteAllowed ? 'current-password' : 'off'\"\n\t\t\t\t:label=\"t('core', 'Password')\"\n\t\t\t\t:helper-text=\"errorLabel\"\n\t\t\t\t:error=\"isError\"\n\t\t\t\tdata-login-form-input-password\n\t\t\t\trequired />\n\n\t\t\t<LoginButton data-login-form-submit :loading=\"loading\" />\n\n\t\t\t<input v-if=\"redirectUrl\"\n\t\t\t\ttype=\"hidden\"\n\t\t\t\tname=\"redirect_url\"\n\t\t\t\t:value=\"redirectUrl\">\n\t\t\t<input type=\"hidden\"\n\t\t\t\tname=\"timezone\"\n\t\t\t\t:value=\"timezone\">\n\t\t\t<input type=\"hidden\"\n\t\t\t\tname=\"timezone_offset\"\n\t\t\t\t:value=\"timezoneOffset\">\n\t\t\t<input type=\"hidden\"\n\t\t\t\tname=\"requesttoken\"\n\t\t\t\t:value=\"OC.requestToken\">\n\t\t\t<input v-if=\"directLogin\"\n\t\t\t\ttype=\"hidden\"\n\t\t\t\tname=\"direct\"\n\t\t\t\tvalue=\"1\">\n\t\t</fieldset>\n\t</form>\n</template>\n\n<script>\nimport { generateUrl, imagePath } from '@nextcloud/router'\n\nimport NcPasswordField from '@nextcloud/vue/dist/Components/NcPasswordField.js'\nimport NcTextField from '@nextcloud/vue/dist/Components/NcTextField.js'\nimport NcNoteCard from '@nextcloud/vue/dist/Components/NcNoteCard.js'\n\nimport LoginButton from './LoginButton.vue'\n\nexport default {\n\tname: 'LoginForm',\n\n\tcomponents: {\n\t\tLoginButton,\n\t\tNcPasswordField,\n\t\tNcTextField,\n\t\tNcNoteCard,\n\t},\n\n\tprops: {\n\t\tusername: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\tredirectUrl: {\n\t\t\ttype: [String, Boolean],\n\t\t\tdefault: false,\n\t\t},\n\t\terrors: {\n\t\t\ttype: Array,\n\t\t\tdefault: () => [],\n\t\t},\n\t\tmessages: {\n\t\t\ttype: Array,\n\t\t\tdefault: () => [],\n\t\t},\n\t\tthrottleDelay: {\n\t\t\ttype: Number,\n\t\t\tdefault: 0,\n\t\t},\n\t\tautoCompleteAllowed: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t\tdirectLogin: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tloading: false,\n\t\t\ttimezone: (new Intl.DateTimeFormat())?.resolvedOptions()?.timeZone,\n\t\t\ttimezoneOffset: (-new Date().getTimezoneOffset() / 60),\n\t\t\theadline: t('core', 'Log in to {productName}', { productName: OC.theme.name }),\n\t\t\tuser: '',\n\t\t\tpassword: '',\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tisError() {\n\t\t\treturn this.invalidPassword || this.userDisabled\n\t\t\t\t|| this.throttleDelay > 5000\n\t\t},\n\t\terrorLabel() {\n\t\t\tif (this.invalidPassword) {\n\t\t\t\treturn t('core', 'Wrong username or password.')\n\t\t\t}\n\t\t\tif (this.userDisabled) {\n\t\t\t\treturn t('core', 'User disabled')\n\t\t\t}\n\t\t\tif (this.throttleDelay > 5000) {\n\t\t\t\treturn t('core', 'We have detected multiple invalid login attempts from your IP. Therefore your next login is throttled up to 30 seconds.')\n\t\t\t}\n\t\t\treturn undefined\n\t\t},\n\t\tapacheAuthFailed() {\n\t\t\treturn this.errors.indexOf('apacheAuthFailed') !== -1\n\t\t},\n\t\tinternalException() {\n\t\t\treturn this.errors.indexOf('internalexception') !== -1\n\t\t},\n\t\tinvalidPassword() {\n\t\t\treturn this.errors.indexOf('invalidpassword') !== -1\n\t\t},\n\t\tuserDisabled() {\n\t\t\treturn this.errors.indexOf('userdisabled') !== -1\n\t\t},\n\t\tloadingIcon() {\n\t\t\treturn imagePath('core', 'loading-dark.gif')\n\t\t},\n\t\tloginActionUrl() {\n\t\t\treturn generateUrl('login')\n\t\t},\n\t},\n\n\tmounted() {\n\t\tif (this.username === '') {\n\t\t\tthis.$refs.user.$refs.inputField.$refs.input.focus()\n\t\t} else {\n\t\t\tthis.user = this.username\n\t\t\tthis.$refs.password.$refs.inputField.$refs.input.focus()\n\t\t}\n\t},\n\n\tmethods: {\n\t\tupdateUsername() {\n\t\t\tthis.$emit('update:username', this.user)\n\t\t},\n\t\tsubmit() {\n\t\t\tthis.loading = true\n\t\t\tthis.$emit('submit')\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.login-form {\n\ttext-align: left;\n\tfont-size: 1rem;\n\n\t&__fieldset {\n\t\twidth: 100%;\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tgap: .5rem;\n\t}\n\n\t&__headline {\n\t\ttext-align: center;\n\t}\n}\n</style>\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoginForm.vue?vue&type=style&index=0&id=5bd351bc&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoginForm.vue?vue&type=style&index=0&id=5bd351bc&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./LoginForm.vue?vue&type=template&id=5bd351bc&scoped=true&\"\nimport script from \"./LoginForm.vue?vue&type=script&lang=js&\"\nexport * from \"./LoginForm.vue?vue&type=script&lang=js&\"\nimport style0 from \"./LoginForm.vue?vue&type=style&index=0&id=5bd351bc&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"5bd351bc\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('form',{ref:\"loginForm\",staticClass:\"login-form\",attrs:{\"method\":\"post\",\"name\":\"login\",\"action\":_vm.loginActionUrl},on:{\"submit\":_vm.submit}},[_c('fieldset',{staticClass:\"login-form__fieldset\",attrs:{\"data-login-form\":\"\"}},[(_vm.apacheAuthFailed)?_c('NcNoteCard',{attrs:{\"title\":_vm.t('core', 'Server side authentication failed!'),\"type\":\"warning\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('core', 'Please contact your administrator.'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.messages.length > 0)?_c('NcNoteCard',_vm._l((_vm.messages),function(message,index){return _c('div',{key:index},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(message)),_c('br')])}),0):_vm._e(),_vm._v(\" \"),(_vm.internalException)?_c('NcNoteCard',{class:_vm.t('core', 'An internal error occurred.'),attrs:{\"type\":\"warning\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('core', 'Please try again or contact your administrator.'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"hidden\",attrs:{\"id\":\"message\"}},[_c('img',{staticClass:\"float-spinner\",attrs:{\"alt\":\"\",\"src\":_vm.loadingIcon}}),_vm._v(\" \"),_c('span',{attrs:{\"id\":\"messageText\"}}),_vm._v(\" \"),_c('div',{staticStyle:{\"clear\":\"both\"}})]),_vm._v(\" \"),_c('h2',{staticClass:\"login-form__headline\",attrs:{\"data-login-form-headline\":\"\"},domProps:{\"innerHTML\":_vm._s(_vm.headline)}}),_vm._v(\" \"),_c('NcTextField',{ref:\"user\",class:{shake: _vm.invalidPassword},attrs:{\"id\":\"user\",\"label\":_vm.t('core', 'Account name or email'),\"label-visible\":true,\"name\":\"user\",\"value\":_vm.user,\"autocapitalize\":\"none\",\"spellchecking\":false,\"autocomplete\":_vm.autoCompleteAllowed ? 'username' : 'off',\"required\":\"\",\"data-login-form-input-user\":\"\"},on:{\"update:value\":function($event){_vm.user=$event},\"change\":_vm.updateUsername}}),_vm._v(\" \"),_c('NcPasswordField',{ref:\"password\",class:{shake: _vm.invalidPassword},attrs:{\"id\":\"password\",\"name\":\"password\",\"label-visible\":true,\"value\":_vm.password,\"spellchecking\":false,\"autocapitalize\":\"none\",\"autocomplete\":_vm.autoCompleteAllowed ? 'current-password' : 'off',\"label\":_vm.t('core', 'Password'),\"helper-text\":_vm.errorLabel,\"error\":_vm.isError,\"data-login-form-input-password\":\"\",\"required\":\"\"},on:{\"update:value\":function($event){_vm.password=$event}}}),_vm._v(\" \"),_c('LoginButton',{attrs:{\"data-login-form-submit\":\"\",\"loading\":_vm.loading}}),_vm._v(\" \"),(_vm.redirectUrl)?_c('input',{attrs:{\"type\":\"hidden\",\"name\":\"redirect_url\"},domProps:{\"value\":_vm.redirectUrl}}):_vm._e(),_vm._v(\" \"),_c('input',{attrs:{\"type\":\"hidden\",\"name\":\"timezone\"},domProps:{\"value\":_vm.timezone}}),_vm._v(\" \"),_c('input',{attrs:{\"type\":\"hidden\",\"name\":\"timezone_offset\"},domProps:{\"value\":_vm.timezoneOffset}}),_vm._v(\" \"),_c('input',{attrs:{\"type\":\"hidden\",\"name\":\"requesttoken\"},domProps:{\"value\":_vm.OC.requestToken}}),_vm._v(\" \"),(_vm.directLogin)?_c('input',{attrs:{\"type\":\"hidden\",\"name\":\"direct\",\"value\":\"1\"}}):_vm._e()],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n\t<form v-if=\"(isHttps || isLocalhost) && hasPublicKeyCredential\"\n\t\tref=\"loginForm\"\n\t\tmethod=\"post\"\n\t\tname=\"login\"\n\t\t@submit.prevent=\"submit\">\n\t\t<fieldset>\n\t\t\t<p class=\"grouptop groupbottom\">\n\t\t\t\t<label for=\"user\" class=\"infield\">{{ t('core', 'Username or\temail') }}</label>\n\t\t\t\t<input id=\"user\"\n\t\t\t\t\tref=\"user\"\n\t\t\t\t\tv-model=\"user\"\n\t\t\t\t\ttype=\"text\"\n\t\t\t\t\tname=\"user\"\n\t\t\t\t\t:autocomplete=\"autoCompleteAllowed ? 'on' : 'off'\"\n\t\t\t\t\t:placeholder=\"t('core', 'Username or email')\"\n\t\t\t\t\t:aria-label=\"t('core', 'Username or email')\"\n\t\t\t\t\trequired\n\t\t\t\t\t@change=\"$emit('update:username', user)\">\n\t\t\t</p>\n\n\t\t\t<div v-if=\"!validCredentials\" class=\"body-login-container update form__message-box\">\n\t\t\t\t{{ t('core', 'Your account is not setup for passwordless login.') }}\n\t\t\t</div>\n\n\t\t\t<LoginButton v-if=\"validCredentials\"\n\t\t\t\t:loading=\"loading\"\n\t\t\t\t@click=\"authenticate\" />\n\t\t</fieldset>\n\t</form>\n\t<div v-else-if=\"!hasPublicKeyCredential\" class=\"body-login-container update\">\n\t\t<InformationIcon size=\"70\" />\n\t\t<h2>{{ t('core', 'Browser not supported') }}</h2>\n\t\t<p class=\"infogroup\">\n\t\t\t{{ t('core', 'Passwordless authentication is not supported in your browser.') }}\n\t\t</p>\n\t</div>\n\t<div v-else-if=\"!isHttps && !isLocalhost\" class=\"body-login-container update\">\n\t\t<LockOpenIcon size=\"70\" />\n\t\t<h2>{{ t('core', 'Your connection is not secure') }}</h2>\n\t\t<p class=\"infogroup\">\n\t\t\t{{ t('core', 'Passwordless authentication is only available over a secure connection.') }}\n\t\t</p>\n\t</div>\n</template>\n\n<script>\nimport {\n\tstartAuthentication,\n\tfinishAuthentication,\n} from '../../services/WebAuthnAuthenticationService'\nimport LoginButton from './LoginButton'\nimport InformationIcon from 'vue-material-design-icons/Information'\nimport LockOpenIcon from 'vue-material-design-icons/LockOpen'\n\nclass NoValidCredentials extends Error {\n\n}\n\nexport default {\n\tname: 'PasswordLessLoginForm',\n\tcomponents: {\n\t\tLoginButton,\n\t\tInformationIcon,\n\t\tLockOpenIcon,\n\t},\n\tprops: {\n\t\tusername: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\tredirectUrl: {\n\t\t\ttype: [String, Boolean],\n\t\t\tdefault: false,\n\t\t},\n\t\tautoCompleteAllowed: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t\tisHttps: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tisLocalhost: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\thasPublicKeyCredential: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tuser: this.username,\n\t\t\tloading: false,\n\t\t\tvalidCredentials: true,\n\t\t}\n\t},\n\tmethods: {\n\t\tauthenticate() {\n\t\t\tconsole.debug('passwordless login initiated')\n\n\t\t\tthis.getAuthenticationData(this.user)\n\t\t\t\t.then(publicKey => {\n\t\t\t\t\tconsole.debug(publicKey)\n\t\t\t\t\treturn publicKey\n\t\t\t\t})\n\t\t\t\t.then(this.sign)\n\t\t\t\t.then(this.completeAuthentication)\n\t\t\t\t.catch(error => {\n\t\t\t\t\tif (error instanceof NoValidCredentials) {\n\t\t\t\t\t\tthis.validCredentials = false\n\t\t\t\t\t\treturn\n\t\t\t\t\t}\n\t\t\t\t\tconsole.debug(error)\n\t\t\t\t})\n\t\t},\n\t\tgetAuthenticationData(uid) {\n\t\t\tconst base64urlDecode = function(input) {\n\t\t\t\t// Replace non-url compatible chars with base64 standard chars\n\t\t\t\tinput = input\n\t\t\t\t\t.replace(/-/g, '+')\n\t\t\t\t\t.replace(/_/g, '/')\n\n\t\t\t\t// Pad out with standard base64 required padding characters\n\t\t\t\tconst pad = input.length % 4\n\t\t\t\tif (pad) {\n\t\t\t\t\tif (pad === 1) {\n\t\t\t\t\t\tthrow new Error('InvalidLengthError: Input base64url string is the wrong length to determine padding')\n\t\t\t\t\t}\n\t\t\t\t\tinput += new Array(5 - pad).join('=')\n\t\t\t\t}\n\n\t\t\t\treturn window.atob(input)\n\t\t\t}\n\n\t\t\treturn startAuthentication(uid)\n\t\t\t\t.then(publicKey => {\n\t\t\t\t\tconsole.debug('Obtained PublicKeyCredentialRequestOptions')\n\t\t\t\t\tconsole.debug(publicKey)\n\n\t\t\t\t\tif (!Object.prototype.hasOwnProperty.call(publicKey, 'allowCredentials')) {\n\t\t\t\t\t\tconsole.debug('No credentials found.')\n\t\t\t\t\t\tthrow new NoValidCredentials()\n\t\t\t\t\t}\n\n\t\t\t\t\tpublicKey.challenge = Uint8Array.from(base64urlDecode(publicKey.challenge), c => c.charCodeAt(0))\n\t\t\t\t\tpublicKey.allowCredentials = publicKey.allowCredentials.map(function(data) {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t...data,\n\t\t\t\t\t\t\tid: Uint8Array.from(base64urlDecode(data.id), c => c.charCodeAt(0)),\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\n\t\t\t\t\tconsole.debug('Converted PublicKeyCredentialRequestOptions')\n\t\t\t\t\tconsole.debug(publicKey)\n\t\t\t\t\treturn publicKey\n\t\t\t\t})\n\t\t\t\t.catch(error => {\n\t\t\t\t\tconsole.debug('Error while obtaining data')\n\t\t\t\t\tthrow error\n\t\t\t\t})\n\t\t},\n\t\tsign(publicKey) {\n\t\t\tconst arrayToBase64String = function(a) {\n\t\t\t\treturn window.btoa(String.fromCharCode(...a))\n\t\t\t}\n\n\t\t\tconst arrayToString = function(a) {\n\t\t\t\treturn String.fromCharCode(...a)\n\t\t\t}\n\n\t\t\treturn navigator.credentials.get({ publicKey })\n\t\t\t\t.then(data => {\n\t\t\t\t\tconsole.debug(data)\n\t\t\t\t\tconsole.debug(new Uint8Array(data.rawId))\n\t\t\t\t\tconsole.debug(arrayToBase64String(new Uint8Array(data.rawId)))\n\t\t\t\t\treturn {\n\t\t\t\t\t\tid: data.id,\n\t\t\t\t\t\ttype: data.type,\n\t\t\t\t\t\trawId: arrayToBase64String(new Uint8Array(data.rawId)),\n\t\t\t\t\t\tresponse: {\n\t\t\t\t\t\t\tauthenticatorData: arrayToBase64String(new Uint8Array(data.response.authenticatorData)),\n\t\t\t\t\t\t\tclientDataJSON: arrayToBase64String(new Uint8Array(data.response.clientDataJSON)),\n\t\t\t\t\t\t\tsignature: arrayToBase64String(new Uint8Array(data.response.signature)),\n\t\t\t\t\t\t\tuserHandle: data.response.userHandle ? arrayToString(new Uint8Array(data.response.userHandle)) : null,\n\t\t\t\t\t\t},\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t.then(challenge => {\n\t\t\t\t\tconsole.debug(challenge)\n\t\t\t\t\treturn challenge\n\t\t\t\t})\n\t\t\t\t.catch(error => {\n\t\t\t\t\tconsole.debug('GOT AN ERROR!')\n\t\t\t\t\tconsole.debug(error) // Example: timeout, interaction refused...\n\t\t\t\t})\n\t\t},\n\t\tcompleteAuthentication(challenge) {\n\t\t\tconsole.debug('TIME TO COMPLETE')\n\n\t\t\tconst redirectUrl = this.redirectUrl\n\n\t\t\treturn finishAuthentication(JSON.stringify(challenge))\n\t\t\t\t.then(({ defaultRedirectUrl }) => {\n\t\t\t\t\tconsole.debug('Logged in redirecting')\n\t\t\t\t\t// Redirect url might be false so || should be used instead of ??.\n\t\t\t\t\twindow.location.href = redirectUrl || defaultRedirectUrl\n\t\t\t\t})\n\t\t\t\t.catch(error => {\n\t\t\t\t\tconsole.debug('GOT AN ERROR WHILE SUBMITTING CHALLENGE!')\n\t\t\t\t\tconsole.debug(error) // Example: timeout, interaction refused...\n\t\t\t\t})\n\t\t},\n\t\tsubmit() {\n\t\t\t// noop\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n\t.body-login-container.update {\n\t\tmargin: 15px 0;\n\n\t\t&.form__message-box {\n\t\t\twidth: 240px;\n\t\t\tmargin: 5px;\n\t\t}\n\t}\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PasswordLessLoginForm.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PasswordLessLoginForm.vue?vue&type=script&lang=js&\"","/**\n * @copyright 2020, Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport Axios from '@nextcloud/axios'\nimport { generateUrl } from '@nextcloud/router'\n\n/**\n * @param {any} loginName -\n */\nexport function startAuthentication(loginName) {\n\tconst url = generateUrl('/login/webauthn/start')\n\n\treturn Axios.post(url, { loginName })\n\t\t.then(resp => resp.data)\n}\n\n/**\n * @param {any} data -\n */\nexport function finishAuthentication(data) {\n\tconst url = generateUrl('/login/webauthn/finish')\n\n\treturn Axios.post(url, { data })\n\t\t.then(resp => resp.data)\n}\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PasswordLessLoginForm.vue?vue&type=style&index=0&id=20256748&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PasswordLessLoginForm.vue?vue&type=style&index=0&id=20256748&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./PasswordLessLoginForm.vue?vue&type=template&id=20256748&scoped=true&\"\nimport script from \"./PasswordLessLoginForm.vue?vue&type=script&lang=js&\"\nexport * from \"./PasswordLessLoginForm.vue?vue&type=script&lang=js&\"\nimport style0 from \"./PasswordLessLoginForm.vue?vue&type=style&index=0&id=20256748&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"20256748\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return ((_vm.isHttps || _vm.isLocalhost) && _vm.hasPublicKeyCredential)?_c('form',{ref:\"loginForm\",attrs:{\"method\":\"post\",\"name\":\"login\"},on:{\"submit\":function($event){$event.preventDefault();return _vm.submit.apply(null, arguments)}}},[_c('fieldset',[_c('p',{staticClass:\"grouptop groupbottom\"},[_c('label',{staticClass:\"infield\",attrs:{\"for\":\"user\"}},[_vm._v(_vm._s(_vm.t('core', 'Username or\temail')))]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.user),expression:\"user\"}],ref:\"user\",attrs:{\"id\":\"user\",\"type\":\"text\",\"name\":\"user\",\"autocomplete\":_vm.autoCompleteAllowed ? 'on' : 'off',\"placeholder\":_vm.t('core', 'Username or email'),\"aria-label\":_vm.t('core', 'Username or email'),\"required\":\"\"},domProps:{\"value\":(_vm.user)},on:{\"change\":function($event){return _vm.$emit('update:username', _vm.user)},\"input\":function($event){if($event.target.composing)return;_vm.user=$event.target.value}}})]),_vm._v(\" \"),(!_vm.validCredentials)?_c('div',{staticClass:\"body-login-container update form__message-box\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('core', 'Your account is not setup for passwordless login.'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.validCredentials)?_c('LoginButton',{attrs:{\"loading\":_vm.loading},on:{\"click\":_vm.authenticate}}):_vm._e()],1)]):(!_vm.hasPublicKeyCredential)?_c('div',{staticClass:\"body-login-container update\"},[_c('InformationIcon',{attrs:{\"size\":\"70\"}}),_vm._v(\" \"),_c('h2',[_vm._v(_vm._s(_vm.t('core', 'Browser not supported')))]),_vm._v(\" \"),_c('p',{staticClass:\"infogroup\"},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('core', 'Passwordless authentication is not supported in your browser.'))+\"\\n\\t\")])],1):(!_vm.isHttps && !_vm.isLocalhost)?_c('div',{staticClass:\"body-login-container update\"},[_c('LockOpenIcon',{attrs:{\"size\":\"70\"}}),_vm._v(\" \"),_c('h2',[_vm._v(_vm._s(_vm.t('core', 'Your connection is not secure')))]),_vm._v(\" \"),_c('p',{staticClass:\"infogroup\"},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('core', 'Passwordless authentication is only available over a secure connection.'))+\"\\n\\t\")])],1):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ResetPassword.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ResetPassword.vue?vue&type=script&lang=js&\"","<!--\n - @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n -\n - @author 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -->\n\n<template>\n\t<form class=\"login-form\" @submit.prevent=\"submit\">\n\t\t<fieldset class=\"login-form__fieldset\">\n\t\t\t<NcTextField id=\"user\"\n\t\t\t\t:value.sync=\"user\"\n\t\t\t\tname=\"user\"\n\t\t\t\tautocapitalize=\"off\"\n\t\t\t\t:label=\"t('core', 'Account name or email')\"\n\t\t\t\t:label-visible=\"true\"\n\t\t\t\trequired\n\t\t\t\t@change=\"updateUsername\" />\n\t\t\t<LoginButton :value=\"t('core', 'Reset password')\" />\n\n\t\t\t<NcNoteCard v-if=\"message === 'send-success'\"\n\t\t\t\ttype=\"success\">\n\t\t\t\t{{ t('core', 'A password reset message has been sent to the email address of this account. If you do not receive it, check your spam/junk folders or ask your local administrator for help.') }}\n\t\t\t\t<br>\n\t\t\t\t{{ t('core', 'If it is not there ask your local administrator.') }}\n\t\t\t</NcNoteCard>\n\t\t\t<NcNoteCard v-else-if=\"message === 'send-error'\"\n\t\t\t\ttype=\"error\">\n\t\t\t\t{{ t('core', 'Couldn\\'t send reset email. Please contact your administrator.') }}\n\t\t\t</NcNoteCard>\n\t\t\t<NcNoteCard v-else-if=\"message === 'reset-error'\"\n\t\t\t\ttype=\"error\">\n\t\t\t\t{{ t('core', 'Password cannot be changed. Please contact your administrator.') }}\n\t\t\t</NcNoteCard>\n\n\t\t\t<a class=\"login-form__link\"\n\t\t\t\thref=\"#\"\n\t\t\t\t@click.prevent=\"$emit('abort')\">\n\t\t\t\t{{ t('core', 'Back to login') }}\n\t\t\t</a>\n\t\t</fieldset>\n\t</form>\n</template>\n\n<script>\nimport axios from '@nextcloud/axios'\nimport { generateUrl } from '@nextcloud/router'\nimport LoginButton from './LoginButton.vue'\nimport NcTextField from '@nextcloud/vue/dist/Components/NcTextField.js'\nimport NcNoteCard from '@nextcloud/vue/dist/Components/NcNoteCard.js'\n\nexport default {\n\tname: 'ResetPassword',\n\tcomponents: {\n\t\tLoginButton,\n\t\tNcNoteCard,\n\t\tNcTextField,\n\t},\n\tprops: {\n\t\tusername: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tresetPasswordLink: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\terror: false,\n\t\t\tloading: false,\n\t\t\tmessage: undefined,\n\t\t\tuser: this.username,\n\t\t}\n\t},\n\twatch: {\n\t\tusername(value) {\n\t\t\tthis.user = value\n\t\t},\n\t},\n\tmethods: {\n\t\tupdateUsername() {\n\t\t\tthis.$emit('update:username', this.user)\n\t\t},\n\t\tsubmit() {\n\t\t\tthis.loading = true\n\t\t\tthis.error = false\n\t\t\tthis.message = ''\n\t\t\tconst url = generateUrl('/lostpassword/email')\n\n\t\t\tconst data = {\n\t\t\t\tuser: this.user,\n\t\t\t}\n\n\t\t\treturn axios.post(url, data)\n\t\t\t\t.then(resp => resp.data)\n\t\t\t\t.then(data => {\n\t\t\t\t\tif (data.status !== 'success') {\n\t\t\t\t\t\tthrow new Error(`got status ${data.status}`)\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.message = 'send-success'\n\t\t\t\t})\n\t\t\t\t.catch(e => {\n\t\t\t\t\tconsole.error('could not send reset email request', e)\n\n\t\t\t\t\tthis.error = true\n\t\t\t\t\tthis.message = 'send-error'\n\t\t\t\t})\n\t\t\t\t.then(() => { this.loading = false })\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.login-form {\n\ttext-align: left;\n\tfont-size: 1rem;\n\n\t&__fieldset {\n\t\twidth: 100%;\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tgap: .5rem;\n\t}\n\n\t&__link {\n\t\tdisplay: block;\n\t\tfont-weight: normal !important;\n\t\tpadding-bottom: 1rem;\n\t\tcursor: pointer;\n\t\tfont-size: var(--default-font-size);\n\t\ttext-align: center;\n\t\tpadding: .5rem 1rem 1rem 1rem;\n\t}\n}\n</style>\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ResetPassword.vue?vue&type=style&index=0&id=27cabc60&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ResetPassword.vue?vue&type=style&index=0&id=27cabc60&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./ResetPassword.vue?vue&type=template&id=27cabc60&scoped=true&\"\nimport script from \"./ResetPassword.vue?vue&type=script&lang=js&\"\nexport * from \"./ResetPassword.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ResetPassword.vue?vue&type=style&index=0&id=27cabc60&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"27cabc60\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('form',{staticClass:\"login-form\",on:{\"submit\":function($event){$event.preventDefault();return _vm.submit.apply(null, arguments)}}},[_c('fieldset',{staticClass:\"login-form__fieldset\"},[_c('NcTextField',{attrs:{\"id\":\"user\",\"value\":_vm.user,\"name\":\"user\",\"autocapitalize\":\"off\",\"label\":_vm.t('core', 'Account name or email'),\"label-visible\":true,\"required\":\"\"},on:{\"update:value\":function($event){_vm.user=$event},\"change\":_vm.updateUsername}}),_vm._v(\" \"),_c('LoginButton',{attrs:{\"value\":_vm.t('core', 'Reset password')}}),_vm._v(\" \"),(_vm.message === 'send-success')?_c('NcNoteCard',{attrs:{\"type\":\"success\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('core', 'A password reset message has been sent to the email address of this account. If you do not receive it, check your spam/junk folders or ask your local administrator for help.'))+\"\\n\\t\\t\\t\"),_c('br'),_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('core', 'If it is not there ask your local administrator.'))+\"\\n\\t\\t\")]):(_vm.message === 'send-error')?_c('NcNoteCard',{attrs:{\"type\":\"error\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('core', 'Couldn\\'t send reset email. Please contact your administrator.'))+\"\\n\\t\\t\")]):(_vm.message === 'reset-error')?_c('NcNoteCard',{attrs:{\"type\":\"error\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('core', 'Password cannot be changed. Please contact your administrator.'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),_c('a',{staticClass:\"login-form__link\",attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();return _vm.$emit('abort')}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('core', 'Back to login'))+\"\\n\\t\\t\")])],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<form @submit.prevent=\"submit\">\n\t\t<fieldset>\n\t\t\t<p>\n\t\t\t\t<label for=\"password\" class=\"infield\">{{ t('core', 'New password') }}</label>\n\t\t\t\t<input id=\"password\"\n\t\t\t\t\tv-model=\"password\"\n\t\t\t\t\ttype=\"password\"\n\t\t\t\t\tname=\"password\"\n\t\t\t\t\tautocomplete=\"new-password\"\n\t\t\t\t\tautocapitalize=\"none\"\n\t\t\t\t\tautocorrect=\"off\"\n\t\t\t\t\trequired\n\t\t\t\t\t:placeholder=\"t('core', 'New password')\">\n\t\t\t</p>\n\n\t\t\t<div v-if=\"encrypted\" class=\"update\">\n\t\t\t\t<p>\n\t\t\t\t\t{{ t('core', 'Your files are encrypted. There will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?') }}\n\t\t\t\t</p>\n\t\t\t\t<input id=\"encrypted-continue\"\n\t\t\t\t\tv-model=\"proceed\"\n\t\t\t\t\ttype=\"checkbox\"\n\t\t\t\t\tclass=\"checkbox\">\n\t\t\t\t<label for=\"encrypted-continue\">\n\t\t\t\t\t{{ t('core', 'I know what I\\'m doing') }}\n\t\t\t\t</label>\n\t\t\t</div>\n\n\t\t\t<LoginButton :loading=\"loading\"\n\t\t\t\t:value=\"t('core', 'Reset password')\"\n\t\t\t\t:value-loading=\"t('core', 'Resetting password')\" />\n\n\t\t\t<p v-if=\"error && message\" :class=\"{warning: error}\">\n\t\t\t\t{{ message }}\n\t\t\t</p>\n\t\t</fieldset>\n\t</form>\n</template>\n\n<script>\nimport Axios from '@nextcloud/axios'\nimport LoginButton from './LoginButton.vue'\n\nexport default {\n\tname: 'UpdatePassword',\n\tcomponents: {\n\t\tLoginButton,\n\t},\n\tprops: {\n\t\tusername: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tresetPasswordTarget: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\terror: false,\n\t\t\tloading: false,\n\t\t\tmessage: undefined,\n\t\t\tuser: this.username,\n\t\t\tpassword: '',\n\t\t\tencrypted: false,\n\t\t\tproceed: false,\n\t\t}\n\t},\n\twatch: {\n\t\tusername(value) {\n\t\t\tthis.user = value\n\t\t},\n\t},\n\tmethods: {\n\t\tasync submit() {\n\t\t\tthis.loading = true\n\t\t\tthis.error = false\n\t\t\tthis.message = ''\n\n\t\t\ttry {\n\t\t\t\tconst { data } = await Axios.post(this.resetPasswordTarget, {\n\t\t\t\t\tpassword: this.password,\n\t\t\t\t\tproceed: this.proceed,\n\t\t\t\t})\n\t\t\t\tif (data && data.status === 'success') {\n\t\t\t\t\tthis.message = 'send-success'\n\t\t\t\t\tthis.$emit('update:username', this.user)\n\t\t\t\t\tthis.$emit('done')\n\t\t\t\t} else if (data && data.encryption) {\n\t\t\t\t\tthis.encrypted = true\n\t\t\t\t} else if (data && data.msg) {\n\t\t\t\t\tthrow new Error(data.msg)\n\t\t\t\t} else {\n\t\t\t\t\tthrow new Error()\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\tthis.error = true\n\t\t\t\tthis.message = e.message ? e.message : t('core', 'Password cannot be changed. Please contact your administrator.')\n\t\t\t} finally {\n\t\t\t\tthis.loading = false\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n\n<style scoped>\n\tfieldset {\n\t\ttext-align: center;\n\t}\n\n\tinput[type=submit] {\n\t\tmargin-top: 20px;\n\t}\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UpdatePassword.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UpdatePassword.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UpdatePassword.vue?vue&type=style&index=0&id=4dc21d74&prod&scoped=true&lang=css&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UpdatePassword.vue?vue&type=style&index=0&id=4dc21d74&prod&scoped=true&lang=css&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./UpdatePassword.vue?vue&type=template&id=4dc21d74&scoped=true&\"\nimport script from \"./UpdatePassword.vue?vue&type=script&lang=js&\"\nexport * from \"./UpdatePassword.vue?vue&type=script&lang=js&\"\nimport style0 from \"./UpdatePassword.vue?vue&type=style&index=0&id=4dc21d74&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"4dc21d74\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('form',{on:{\"submit\":function($event){$event.preventDefault();return _vm.submit.apply(null, arguments)}}},[_c('fieldset',[_c('p',[_c('label',{staticClass:\"infield\",attrs:{\"for\":\"password\"}},[_vm._v(_vm._s(_vm.t('core', 'New password')))]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.password),expression:\"password\"}],attrs:{\"id\":\"password\",\"type\":\"password\",\"name\":\"password\",\"autocomplete\":\"new-password\",\"autocapitalize\":\"none\",\"autocorrect\":\"off\",\"required\":\"\",\"placeholder\":_vm.t('core', 'New password')},domProps:{\"value\":(_vm.password)},on:{\"input\":function($event){if($event.target.composing)return;_vm.password=$event.target.value}}})]),_vm._v(\" \"),(_vm.encrypted)?_c('div',{staticClass:\"update\"},[_c('p',[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Your files are encrypted. There will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.proceed),expression:\"proceed\"}],staticClass:\"checkbox\",attrs:{\"id\":\"encrypted-continue\",\"type\":\"checkbox\"},domProps:{\"checked\":Array.isArray(_vm.proceed)?_vm._i(_vm.proceed,null)>-1:(_vm.proceed)},on:{\"change\":function($event){var $$a=_vm.proceed,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.proceed=$$a.concat([$$v]))}else{$$i>-1&&(_vm.proceed=$$a.slice(0,$$i).concat($$a.slice($$i+1)))}}else{_vm.proceed=$$c}}}}),_vm._v(\" \"),_c('label',{attrs:{\"for\":\"encrypted-continue\"}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'I know what I\\'m doing'))+\"\\n\\t\\t\\t\")])]):_vm._e(),_vm._v(\" \"),_c('LoginButton',{attrs:{\"loading\":_vm.loading,\"value\":_vm.t('core', 'Reset password'),\"value-loading\":_vm.t('core', 'Resetting password')}}),_vm._v(\" \"),(_vm.error && _vm.message)?_c('p',{class:{warning: _vm.error}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.message)+\"\\n\\t\\t\")]):_vm._e()],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n -\n - @author 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -->\n\n<template>\n\t<div class=\"guest-box login-box\">\n\t\t<div v-if=\"!hideLoginForm || directLogin\">\n\t\t\t<transition name=\"fade\" mode=\"out-in\">\n\t\t\t\t<div v-if=\"!passwordlessLogin && !resetPassword && resetPasswordTarget === ''\">\n\t\t\t\t\t<LoginForm :username.sync=\"user\"\n\t\t\t\t\t\t:redirect-url=\"redirectUrl\"\n\t\t\t\t\t\t:direct-login=\"directLogin\"\n\t\t\t\t\t\t:messages=\"messages\"\n\t\t\t\t\t\t:errors=\"errors\"\n\t\t\t\t\t\t:throttle-delay=\"throttleDelay\"\n\t\t\t\t\t\t:auto-complete-allowed=\"autoCompleteAllowed\"\n\t\t\t\t\t\t@submit=\"loading = true\" />\n\t\t\t\t\t<a v-if=\"canResetPassword && resetPasswordLink !== ''\"\n\t\t\t\t\t\tid=\"lost-password\"\n\t\t\t\t\t\tclass=\"login-box__link\"\n\t\t\t\t\t\t:href=\"resetPasswordLink\">\n\t\t\t\t\t\t{{ t('core', 'Forgot password?') }}\n\t\t\t\t\t</a>\n\t\t\t\t\t<a v-else-if=\"canResetPassword && !resetPassword\"\n\t\t\t\t\t\tid=\"lost-password\"\n\t\t\t\t\t\tclass=\"login-box__link\"\n\t\t\t\t\t\t:href=\"resetPasswordLink\"\n\t\t\t\t\t\t@click.prevent=\"resetPassword = true\">\n\t\t\t\t\t\t{{ t('core', 'Forgot password?') }}\n\t\t\t\t\t</a>\n\t\t\t\t\t<template v-if=\"hasPasswordless\">\n\t\t\t\t\t\t<div v-if=\"countAlternativeLogins\"\n\t\t\t\t\t\t\tclass=\"alternative-logins\">\n\t\t\t\t\t\t\t<a v-if=\"hasPasswordless\"\n\t\t\t\t\t\t\t\tclass=\"button\"\n\t\t\t\t\t\t\t\t:class=\"{ 'single-alt-login-option': countAlternativeLogins }\"\n\t\t\t\t\t\t\t\thref=\"#\"\n\t\t\t\t\t\t\t\t@click.prevent=\"passwordlessLogin = true\">\n\t\t\t\t\t\t\t\t{{ t('core', 'Log in with a device') }}\n\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<a v-else\n\t\t\t\t\t\t\thref=\"#\"\n\t\t\t\t\t\t\t@click.prevent=\"passwordlessLogin = true\">\n\t\t\t\t\t\t\t{{ t('core', 'Log in with a device') }}\n\t\t\t\t\t\t</a>\n\t\t\t\t\t</template>\n\t\t\t\t</div>\n\t\t\t\t<div v-else-if=\"!loading && passwordlessLogin\"\n\t\t\t\t\tkey=\"reset\"\n\t\t\t\t\tclass=\"login-additional\">\n\t\t\t\t\t<PasswordLessLoginForm :username.sync=\"user\"\n\t\t\t\t\t\t:redirect-url=\"redirectUrl\"\n\t\t\t\t\t\t:auto-complete-allowed=\"autoCompleteAllowed\"\n\t\t\t\t\t\t:is-https=\"isHttps\"\n\t\t\t\t\t\t:is-localhost=\"isLocalhost\"\n\t\t\t\t\t\t:has-public-key-credential=\"hasPublicKeyCredential\"\n\t\t\t\t\t\t@submit=\"loading = true\" />\n\t\t\t\t\t<a href=\"#\" class=\"login-box__link\" @click.prevent=\"passwordlessLogin = false\">\n\t\t\t\t\t\t{{ t('core', 'Back') }}\n\t\t\t\t\t</a>\n\t\t\t\t</div>\n\t\t\t\t<div v-else-if=\"!loading && canResetPassword\"\n\t\t\t\t\tkey=\"reset\"\n\t\t\t\t\tclass=\"login-additional\">\n\t\t\t\t\t<div class=\"lost-password-container\">\n\t\t\t\t\t\t<ResetPassword v-if=\"resetPassword\"\n\t\t\t\t\t\t\t:username.sync=\"user\"\n\t\t\t\t\t\t\t:reset-password-link=\"resetPasswordLink\"\n\t\t\t\t\t\t\t@abort=\"resetPassword = false\" />\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<div v-else-if=\"resetPasswordTarget !== ''\">\n\t\t\t\t\t<UpdatePassword :username.sync=\"user\"\n\t\t\t\t\t\t:reset-password-target=\"resetPasswordTarget\"\n\t\t\t\t\t\t@done=\"passwordResetFinished\" />\n\t\t\t\t</div>\n\t\t\t</transition>\n\t\t</div>\n\t\t<div v-else>\n\t\t\t<transition name=\"fade\" mode=\"out-in\">\n\t\t\t\t<NcNoteCard type=\"warning\" :title=\"t('core', 'Login form is disabled.')\">\n\t\t\t\t\t{{ t('core', 'Please contact your administrator.') }}\n\t\t\t\t</NcNoteCard>\n\t\t\t</transition>\n\t\t</div>\n\n\t\t<div id=\"alternative-logins\" class=\"alternative-logins\">\n\t\t\t<NcButton v-for=\"(alternativeLogin, index) in alternativeLogins\"\n\t\t\t\t:key=\"index\"\n\t\t\t\ttype=\"secondary\"\n\t\t\t\t:wide=\"true\"\n\t\t\t\t:class=\"[alternativeLogin.class]\"\n\t\t\t\trole=\"link\"\n\t\t\t\t:href=\"alternativeLogin.href\">\n\t\t\t\t{{ alternativeLogin.name }}\n\t\t\t</NcButton>\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nimport { loadState } from '@nextcloud/initial-state'\nimport queryString from 'query-string'\n\nimport LoginForm from '../components/login/LoginForm.vue'\nimport PasswordLessLoginForm from '../components/login/PasswordLessLoginForm.vue'\nimport ResetPassword from '../components/login/ResetPassword.vue'\nimport UpdatePassword from '../components/login/UpdatePassword.vue'\nimport NcButton from '@nextcloud/vue/dist/Components/NcButton.js'\nimport NcNoteCard from '@nextcloud/vue/dist/Components/NcNoteCard.js'\n\nconst query = queryString.parse(location.search)\nif (query.clear === '1') {\n\ttry {\n\t\twindow.localStorage.clear()\n\t\twindow.sessionStorage.clear()\n\t\tconsole.debug('Browser storage cleared')\n\t} catch (e) {\n\t\tconsole.error('Could not clear browser storage', e)\n\t}\n}\n\nexport default {\n\tname: 'Login',\n\n\tcomponents: {\n\t\tLoginForm,\n\t\tPasswordLessLoginForm,\n\t\tResetPassword,\n\t\tUpdatePassword,\n\t\tNcButton,\n\t\tNcNoteCard,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tloading: false,\n\t\t\tuser: loadState('core', 'loginUsername', ''),\n\t\t\tpasswordlessLogin: false,\n\t\t\tresetPassword: false,\n\n\t\t\t// Initial data\n\t\t\terrors: loadState('core', 'loginErrors', []),\n\t\t\tmessages: loadState('core', 'loginMessages', []),\n\t\t\tredirectUrl: loadState('core', 'loginRedirectUrl', false),\n\t\t\tthrottleDelay: loadState('core', 'loginThrottleDelay', 0),\n\t\t\tcanResetPassword: loadState('core', 'loginCanResetPassword', false),\n\t\t\tresetPasswordLink: loadState('core', 'loginResetPasswordLink', ''),\n\t\t\tautoCompleteAllowed: loadState('core', 'loginAutocomplete', true),\n\t\t\tresetPasswordTarget: loadState('core', 'resetPasswordTarget', ''),\n\t\t\tresetPasswordUser: loadState('core', 'resetPasswordUser', ''),\n\t\t\tdirectLogin: query.direct === '1',\n\t\t\thasPasswordless: loadState('core', 'webauthn-available', false),\n\t\t\tcountAlternativeLogins: loadState('core', 'countAlternativeLogins', false),\n\t\t\talternativeLogins: loadState('core', 'alternativeLogins', []),\n\t\t\tisHttps: window.location.protocol === 'https:',\n\t\t\tisLocalhost: window.location.hostname === 'localhost',\n\t\t\thasPublicKeyCredential: typeof (window.PublicKeyCredential) !== 'undefined',\n\t\t\thideLoginForm: loadState('core', 'hideLoginForm', false),\n\t\t}\n\t},\n\n\tmethods: {\n\t\tpasswordResetFinished() {\n\t\t\tthis.resetPasswordTarget = ''\n\t\t\tthis.directLogin = true\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\">\nbody {\n\tfont-size: var(--default-font-size);\n}\n\n.login-box {\n\twidth: 300px;\n\n\t&__link {\n\t\tdisplay: block;\n\t\tpadding: 1rem;\n\t\tfont-size: var(--default-font-size);\n\t\ttext-align: center;\n\t\tfont-weight: normal !important;\n\t}\n}\n.fade-enter-active, .fade-leave-active {\n\ttransition: opacity .3s;\n}\n.fade-enter, .fade-leave-to /* .fade-leave-active below version 2.1.8 */ {\n\topacity: 0;\n}\n\n.alternative-logins {\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 0.75rem;\n\n\t.button-vue {\n\t\tbox-sizing: border-box;\n\t}\n}\n</style>\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Login.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Login.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Login.vue?vue&type=style&index=0&id=7b955242&prod&lang=scss&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Login.vue?vue&type=style&index=0&id=7b955242&prod&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Login.vue?vue&type=template&id=7b955242&\"\nimport script from \"./Login.vue?vue&type=script&lang=js&\"\nexport * from \"./Login.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Login.vue?vue&type=style&index=0&id=7b955242&prod&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport L10n from '../OC/l10n'\nimport OC from '../OC/index'\n\nexport default {\n\tdata() {\n\t\treturn {\n\t\t\tOC,\n\t\t}\n\t},\n\tmethods: {\n\t\tt: L10n.translate.bind(L10n),\n\t\tn: L10n.translatePlural.bind(L10n),\n\t},\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport Vue from 'vue'\n\n// eslint-disable-next-line no-unused-vars\nimport OC from './OC/index' // TODO: Not needed but L10n breaks if removed\nimport LoginView from './views/Login.vue'\nimport Nextcloud from './mixins/Nextcloud'\n\nVue.mixin(Nextcloud)\n\nconst View = Vue.extend(LoginView)\nnew View().$mount('#login')\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".button-vue[data-v-756414a8]{margin-top:.5rem}\", \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/login/LoginButton.vue\"],\"names\":[],\"mappings\":\"AACA,6BACC,gBAAA\",\"sourcesContent\":[\"\\n.button-vue {\\n\\tmargin-top: .5rem;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".login-form[data-v-5bd351bc]{text-align:left;font-size:1rem}.login-form__fieldset[data-v-5bd351bc]{width:100%;display:flex;flex-direction:column;gap:.5rem}.login-form__headline[data-v-5bd351bc]{text-align:center}\", \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/login/LoginForm.vue\"],\"names\":[],\"mappings\":\"AACA,6BACC,eAAA,CACA,cAAA,CAEA,uCACC,UAAA,CACA,YAAA,CACA,qBAAA,CACA,SAAA,CAGD,uCACC,iBAAA\",\"sourcesContent\":[\"\\n.login-form {\\n\\ttext-align: left;\\n\\tfont-size: 1rem;\\n\\n\\t&__fieldset {\\n\\t\\twidth: 100%;\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\tgap: .5rem;\\n\\t}\\n\\n\\t&__headline {\\n\\t\\ttext-align: center;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".body-login-container.update[data-v-20256748]{margin:15px 0}.body-login-container.update.form__message-box[data-v-20256748]{width:240px;margin:5px}\", \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/login/PasswordLessLoginForm.vue\"],\"names\":[],\"mappings\":\"AACA,8CACC,aAAA,CAEA,gEACC,WAAA,CACA,UAAA\",\"sourcesContent\":[\"\\n.body-login-container.update {\\n\\tmargin: 15px 0;\\n\\n\\t&.form__message-box {\\n\\t\\twidth: 240px;\\n\\t\\tmargin: 5px;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".login-form[data-v-27cabc60]{text-align:left;font-size:1rem}.login-form__fieldset[data-v-27cabc60]{width:100%;display:flex;flex-direction:column;gap:.5rem}.login-form__link[data-v-27cabc60]{display:block;font-weight:normal !important;padding-bottom:1rem;cursor:pointer;font-size:var(--default-font-size);text-align:center;padding:.5rem 1rem 1rem 1rem}\", \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/login/ResetPassword.vue\"],\"names\":[],\"mappings\":\"AACA,6BACC,eAAA,CACA,cAAA,CAEA,uCACC,UAAA,CACA,YAAA,CACA,qBAAA,CACA,SAAA,CAGD,mCACC,aAAA,CACA,6BAAA,CACA,mBAAA,CACA,cAAA,CACA,kCAAA,CACA,iBAAA,CACA,4BAAA\",\"sourcesContent\":[\"\\n.login-form {\\n\\ttext-align: left;\\n\\tfont-size: 1rem;\\n\\n\\t&__fieldset {\\n\\t\\twidth: 100%;\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\tgap: .5rem;\\n\\t}\\n\\n\\t&__link {\\n\\t\\tdisplay: block;\\n\\t\\tfont-weight: normal !important;\\n\\t\\tpadding-bottom: 1rem;\\n\\t\\tcursor: pointer;\\n\\t\\tfont-size: var(--default-font-size);\\n\\t\\ttext-align: center;\\n\\t\\tpadding: .5rem 1rem 1rem 1rem;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"body{font-size:var(--default-font-size)}.login-box{width:300px}.login-box__link{display:block;padding:1rem;font-size:var(--default-font-size);text-align:center;font-weight:normal !important}.fade-enter-active,.fade-leave-active{transition:opacity .3s}.fade-enter,.fade-leave-to{opacity:0}.alternative-logins{display:flex;flex-direction:column;gap:.75rem}.alternative-logins .button-vue{box-sizing:border-box}\", \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/views/Login.vue\"],\"names\":[],\"mappings\":\"AACA,KACC,kCAAA,CAGD,WACC,WAAA,CAEA,iBACC,aAAA,CACA,YAAA,CACA,kCAAA,CACA,iBAAA,CACA,6BAAA,CAGF,sCACC,sBAAA,CAED,2BACC,SAAA,CAGD,oBACC,YAAA,CACA,qBAAA,CACA,UAAA,CAEA,gCACC,qBAAA\",\"sourcesContent\":[\"\\nbody {\\n\\tfont-size: var(--default-font-size);\\n}\\n\\n.login-box {\\n\\twidth: 300px;\\n\\n\\t&__link {\\n\\t\\tdisplay: block;\\n\\t\\tpadding: 1rem;\\n\\t\\tfont-size: var(--default-font-size);\\n\\t\\ttext-align: center;\\n\\t\\tfont-weight: normal !important;\\n\\t}\\n}\\n.fade-enter-active, .fade-leave-active {\\n\\ttransition: opacity .3s;\\n}\\n.fade-enter, .fade-leave-to /* .fade-leave-active below version 2.1.8 */ {\\n\\topacity: 0;\\n}\\n\\n.alternative-logins {\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n\\tgap: 0.75rem;\\n\\n\\t.button-vue {\\n\\t\\tbox-sizing: border-box;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"\\nfieldset[data-v-4dc21d74] {\\n\\ttext-align: center;\\n}\\ninput[type=submit][data-v-4dc21d74] {\\n\\tmargin-top: 20px;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/login/UpdatePassword.vue\"],\"names\":[],\"mappings\":\";AA4IA;CACA,kBAAA;AACA;AAEA;CACA,gBAAA;AACA\",\"sourcesContent\":[\"<!--\\n - @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\\n -\\n - @author Julius Härtl <jus@bitgrid.net>\\n -\\n - @license GNU AGPL version 3 or any later version\\n -\\n - This program is free software: you can redistribute it and/or modify\\n - it under the terms of the GNU Affero General Public License as\\n - published by the Free Software Foundation, either version 3 of the\\n - License, or (at your option) any later version.\\n -\\n - This program is distributed in the hope that it will be useful,\\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n - GNU Affero General Public License for more details.\\n -\\n - You should have received a copy of the GNU Affero General Public License\\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\\n -\\n -->\\n\\n<template>\\n\\t<form @submit.prevent=\\\"submit\\\">\\n\\t\\t<fieldset>\\n\\t\\t\\t<p>\\n\\t\\t\\t\\t<label for=\\\"password\\\" class=\\\"infield\\\">{{ t('core', 'New password') }}</label>\\n\\t\\t\\t\\t<input id=\\\"password\\\"\\n\\t\\t\\t\\t\\tv-model=\\\"password\\\"\\n\\t\\t\\t\\t\\ttype=\\\"password\\\"\\n\\t\\t\\t\\t\\tname=\\\"password\\\"\\n\\t\\t\\t\\t\\tautocomplete=\\\"new-password\\\"\\n\\t\\t\\t\\t\\tautocapitalize=\\\"none\\\"\\n\\t\\t\\t\\t\\tautocorrect=\\\"off\\\"\\n\\t\\t\\t\\t\\trequired\\n\\t\\t\\t\\t\\t:placeholder=\\\"t('core', 'New password')\\\">\\n\\t\\t\\t</p>\\n\\n\\t\\t\\t<div v-if=\\\"encrypted\\\" class=\\\"update\\\">\\n\\t\\t\\t\\t<p>\\n\\t\\t\\t\\t\\t{{ t('core', 'Your files are encrypted. There will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?') }}\\n\\t\\t\\t\\t</p>\\n\\t\\t\\t\\t<input id=\\\"encrypted-continue\\\"\\n\\t\\t\\t\\t\\tv-model=\\\"proceed\\\"\\n\\t\\t\\t\\t\\ttype=\\\"checkbox\\\"\\n\\t\\t\\t\\t\\tclass=\\\"checkbox\\\">\\n\\t\\t\\t\\t<label for=\\\"encrypted-continue\\\">\\n\\t\\t\\t\\t\\t{{ t('core', 'I know what I\\\\'m doing') }}\\n\\t\\t\\t\\t</label>\\n\\t\\t\\t</div>\\n\\n\\t\\t\\t<LoginButton :loading=\\\"loading\\\"\\n\\t\\t\\t\\t:value=\\\"t('core', 'Reset password')\\\"\\n\\t\\t\\t\\t:value-loading=\\\"t('core', 'Resetting password')\\\" />\\n\\n\\t\\t\\t<p v-if=\\\"error && message\\\" :class=\\\"{warning: error}\\\">\\n\\t\\t\\t\\t{{ message }}\\n\\t\\t\\t</p>\\n\\t\\t</fieldset>\\n\\t</form>\\n</template>\\n\\n<script>\\nimport Axios from '@nextcloud/axios'\\nimport LoginButton from './LoginButton.vue'\\n\\nexport default {\\n\\tname: 'UpdatePassword',\\n\\tcomponents: {\\n\\t\\tLoginButton,\\n\\t},\\n\\tprops: {\\n\\t\\tusername: {\\n\\t\\t\\ttype: String,\\n\\t\\t\\trequired: true,\\n\\t\\t},\\n\\t\\tresetPasswordTarget: {\\n\\t\\t\\ttype: String,\\n\\t\\t\\trequired: true,\\n\\t\\t},\\n\\t},\\n\\tdata() {\\n\\t\\treturn {\\n\\t\\t\\terror: false,\\n\\t\\t\\tloading: false,\\n\\t\\t\\tmessage: undefined,\\n\\t\\t\\tuser: this.username,\\n\\t\\t\\tpassword: '',\\n\\t\\t\\tencrypted: false,\\n\\t\\t\\tproceed: false,\\n\\t\\t}\\n\\t},\\n\\twatch: {\\n\\t\\tusername(value) {\\n\\t\\t\\tthis.user = value\\n\\t\\t},\\n\\t},\\n\\tmethods: {\\n\\t\\tasync submit() {\\n\\t\\t\\tthis.loading = true\\n\\t\\t\\tthis.error = false\\n\\t\\t\\tthis.message = ''\\n\\n\\t\\t\\ttry {\\n\\t\\t\\t\\tconst { data } = await Axios.post(this.resetPasswordTarget, {\\n\\t\\t\\t\\t\\tpassword: this.password,\\n\\t\\t\\t\\t\\tproceed: this.proceed,\\n\\t\\t\\t\\t})\\n\\t\\t\\t\\tif (data && data.status === 'success') {\\n\\t\\t\\t\\t\\tthis.message = 'send-success'\\n\\t\\t\\t\\t\\tthis.$emit('update:username', this.user)\\n\\t\\t\\t\\t\\tthis.$emit('done')\\n\\t\\t\\t\\t} else if (data && data.encryption) {\\n\\t\\t\\t\\t\\tthis.encrypted = true\\n\\t\\t\\t\\t} else if (data && data.msg) {\\n\\t\\t\\t\\t\\tthrow new Error(data.msg)\\n\\t\\t\\t\\t} else {\\n\\t\\t\\t\\t\\tthrow new Error()\\n\\t\\t\\t\\t}\\n\\t\\t\\t} catch (e) {\\n\\t\\t\\t\\tthis.error = true\\n\\t\\t\\t\\tthis.message = e.message ? e.message : t('core', 'Password cannot be changed. Please contact your administrator.')\\n\\t\\t\\t} finally {\\n\\t\\t\\t\\tthis.loading = false\\n\\t\\t\\t}\\n\\t\\t},\\n\\t},\\n}\\n</script>\\n\\n<style scoped>\\n\\tfieldset {\\n\\t\\ttext-align: center;\\n\\t}\\n\\n\\tinput[type=submit] {\\n\\t\\tmargin-top: 20px;\\n\\t}\\n</style>\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","var Handlebars = require(\"../../../../node_modules/handlebars/runtime.js\");\nfunction __default(obj) { return obj && (obj.__esModule ? obj[\"default\"] : obj); }\nmodule.exports = (Handlebars[\"default\"] || Handlebars).template({\"1\":function(container,depth0,helpers,partials,data) {\n var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return ((stack1 = lookupProperty(helpers,\"if\").call(depth0 != null ? depth0 : (container.nullContext || {}),((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"profileUrl\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(2, data, 0),\"inverse\":container.program(5, data, 0),\"data\":data,\"loc\":{\"start\":{\"line\":2,\"column\":1},\"end\":{\"line\":10,\"column\":8}}})) != null ? stack1 : \"\");\n},\"2\":function(container,depth0,helpers,partials,data) {\n var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return ((stack1 = lookupProperty(helpers,\"if\").call(depth0 != null ? depth0 : (container.nullContext || {}),((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"profileTitle\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(3, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":3,\"column\":2},\"end\":{\"line\":7,\"column\":9}}})) != null ? stack1 : \"\");\n},\"3\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"\t\t\t<a class=\\\"profile-link--avatar\\\" href=\\\"\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"profileUrl\") : stack1), depth0))\n + \"\\\">\\n\t\t\t\t<img src=\\\"\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"avatar\") : stack1), depth0))\n + \"&size=32\\\" class=\\\"avatar\\\" srcset=\\\"\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"avatar\") : stack1), depth0))\n + \"&size=32 1x, \"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"avatar\") : stack1), depth0))\n + \"&size=64 2x, \"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"avatar\") : stack1), depth0))\n + \"&size=128 4x\\\" alt=\\\"\\\">\\n\t\t\t</a>\\n\";\n},\"5\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"\t\t<img src=\\\"\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"avatar\") : stack1), depth0))\n + \"&size=32\\\" class=\\\"avatar\\\" srcset=\\\"\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"avatar\") : stack1), depth0))\n + \"&size=32 1x, \"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"avatar\") : stack1), depth0))\n + \"&size=64 2x, \"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"avatar\") : stack1), depth0))\n + \"&size=128 4x\\\" alt=\\\"\\\">\\n\";\n},\"7\":function(container,depth0,helpers,partials,data) {\n var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return ((stack1 = lookupProperty(helpers,\"if\").call(depth0 != null ? depth0 : (container.nullContext || {}),((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"profileUrl\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(8, data, 0),\"inverse\":container.program(11, data, 0),\"data\":data,\"loc\":{\"start\":{\"line\":12,\"column\":1},\"end\":{\"line\":20,\"column\":8}}})) != null ? stack1 : \"\");\n},\"8\":function(container,depth0,helpers,partials,data) {\n var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return ((stack1 = lookupProperty(helpers,\"if\").call(depth0 != null ? depth0 : (container.nullContext || {}),((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"profileTitle\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(9, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":13,\"column\":2},\"end\":{\"line\":17,\"column\":9}}})) != null ? stack1 : \"\");\n},\"9\":function(container,depth0,helpers,partials,data) {\n var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"\t\t\t<a class=\\\"profile-link--avatar\\\" href=\\\"\"\n + container.escapeExpression(container.lambda(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"profileUrl\") : stack1), depth0))\n + \"\\\">\\n\t\t\t\t<div class=\\\"avatar\\\"></div>\\n\t\t\t</a>\\n\";\n},\"11\":function(container,depth0,helpers,partials,data) {\n return \"\t\t<div class=\\\"avatar\\\"></div>\\n\";\n},\"13\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=depth0 != null ? depth0 : (container.nullContext || {}), lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return ((stack1 = lookupProperty(helpers,\"if\").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"profileTitle\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(14, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":23,\"column\":1},\"end\":{\"line\":29,\"column\":8}}})) != null ? stack1 : \"\")\n + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"topAction\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(16, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":30,\"column\":1},\"end\":{\"line\":34,\"column\":8}}})) != null ? stack1 : \"\");\n},\"14\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"\t\t<a class=\\\"body profile-link--full-name\\\" href=\\\"\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"profileUrl\") : stack1), depth0))\n + \"\\\">\\n\t\t\t<div class=\\\"full-name\\\">\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"fullName\") : stack1), depth0))\n + \"</div>\\n\t\t\t<div class=\\\"last-message\\\">\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"lastMessage\") : stack1), depth0))\n + \"</div>\\n\t\t\t<div class=\\\"email-address\\\">\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"emailAddresses\") : stack1), depth0))\n + \"</div>\\n\t\t</a>\\n\";\n},\"16\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"\t\t<a class=\\\"top-action\\\" href=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"topAction\") : stack1)) != null ? lookupProperty(stack1,\"hyperlink\") : stack1), depth0))\n + \"\\\" title=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"topAction\") : stack1)) != null ? lookupProperty(stack1,\"title\") : stack1), depth0))\n + \"\\\">\\n\t\t\t<img src=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"topAction\") : stack1)) != null ? lookupProperty(stack1,\"icon\") : stack1), depth0))\n + \"\\\" alt=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"topAction\") : stack1)) != null ? lookupProperty(stack1,\"title\") : stack1), depth0))\n + \"\\\">\\n\t\t</a>\\n\";\n},\"18\":function(container,depth0,helpers,partials,data) {\n var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return ((stack1 = lookupProperty(helpers,\"if\").call(depth0 != null ? depth0 : (container.nullContext || {}),((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"topAction\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(19, data, 0),\"inverse\":container.program(21, data, 0),\"data\":data,\"loc\":{\"start\":{\"line\":35,\"column\":0},\"end\":{\"line\":50,\"column\":0}}})) != null ? stack1 : \"\");\n},\"19\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"\t<a class=\\\"body\\\" href=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"topAction\") : stack1)) != null ? lookupProperty(stack1,\"hyperlink\") : stack1), depth0))\n + \"\\\">\\n\t\t<div class=\\\"full-name\\\">\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"fullName\") : stack1), depth0))\n + \"</div>\\n\t\t<div class=\\\"last-message\\\">\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"lastMessage\") : stack1), depth0))\n + \"</div>\\n\t\t<div class=\\\"email-address\\\">\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"emailAddresses\") : stack1), depth0))\n + \"</div>\\n\t</a>\\n \t<a class=\\\"top-action\\\" href=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"topAction\") : stack1)) != null ? lookupProperty(stack1,\"hyperlink\") : stack1), depth0))\n + \"\\\" title=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"topAction\") : stack1)) != null ? lookupProperty(stack1,\"title\") : stack1), depth0))\n + \"\\\">\\n \t\t<img src=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"topAction\") : stack1)) != null ? lookupProperty(stack1,\"icon\") : stack1), depth0))\n + \"\\\" alt=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"topAction\") : stack1)) != null ? lookupProperty(stack1,\"title\") : stack1), depth0))\n + \"\\\">\\n\t</a>\\n\";\n},\"21\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"\t<div class=\\\"body\\\">\\n\t\t<div class=\\\"full-name\\\">\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"fullName\") : stack1), depth0))\n + \"</div>\\n\t\t<div class=\\\"last-message\\\">\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"lastMessage\") : stack1), depth0))\n + \"</div>\\n\t\t<div class=\\\"email-address\\\">\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"emailAddresses\") : stack1), depth0))\n + \"</div>\\n\t</div>\\n\";\n},\"23\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"<a class=\\\"second-action\\\" href=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"secondAction\") : stack1)) != null ? lookupProperty(stack1,\"hyperlink\") : stack1), depth0))\n + \"\\\" title=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"secondAction\") : stack1)) != null ? lookupProperty(stack1,\"title\") : stack1), depth0))\n + \"\\\">\\n\t<img src=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"secondAction\") : stack1)) != null ? lookupProperty(stack1,\"icon\") : stack1), depth0))\n + \"\\\" alt=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"secondAction\") : stack1)) != null ? lookupProperty(stack1,\"title\") : stack1), depth0))\n + \"\\\">\\n</a>\\n\";\n},\"25\":function(container,depth0,helpers,partials,data) {\n var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"\t<button class=\\\"other-actions icon-more\\\"></button>\\n\t<div class=\\\"menu popovermenu\\\">\\n\t\t<ul>\\n\"\n + ((stack1 = lookupProperty(helpers,\"each\").call(depth0 != null ? depth0 : (container.nullContext || {}),((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"actions\") : stack1),{\"name\":\"each\",\"hash\":{},\"fn\":container.program(26, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":60,\"column\":3},\"end\":{\"line\":67,\"column\":12}}})) != null ? stack1 : \"\")\n + \"\t\t</ul>\\n\t</div>\\n\";\n},\"26\":function(container,depth0,helpers,partials,data) {\n var helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"\t\t\t<li>\\n\t\t\t\t<a href=\\\"\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"hyperlink\") || (depth0 != null ? lookupProperty(depth0,\"hyperlink\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"hyperlink\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":62,\"column\":13},\"end\":{\"line\":62,\"column\":26}}}) : helper)))\n + \"\\\">\\n\t\t\t\t\t<img src=\\\"\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"icon\") || (depth0 != null ? lookupProperty(depth0,\"icon\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"icon\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":63,\"column\":15},\"end\":{\"line\":63,\"column\":23}}}) : helper)))\n + \"\\\" alt=\\\"\\\">\\n\t\t\t\t\t<span>\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"title\") || (depth0 != null ? lookupProperty(depth0,\"title\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"title\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":64,\"column\":11},\"end\":{\"line\":64,\"column\":20}}}) : helper)))\n + \"</span>\\n\t\t\t\t</a>\\n\t\t\t</li>\\n\";\n},\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=depth0 != null ? depth0 : (container.nullContext || {}), lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return ((stack1 = lookupProperty(helpers,\"if\").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"avatar\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(1, data, 0),\"inverse\":container.program(7, data, 0),\"data\":data,\"loc\":{\"start\":{\"line\":1,\"column\":0},\"end\":{\"line\":21,\"column\":7}}})) != null ? stack1 : \"\")\n + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"profileUrl\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(13, data, 0),\"inverse\":container.program(18, data, 0),\"data\":data,\"loc\":{\"start\":{\"line\":22,\"column\":0},\"end\":{\"line\":50,\"column\":7}}})) != null ? stack1 : \"\")\n + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"hasTwoActions\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(23, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":51,\"column\":0},\"end\":{\"line\":55,\"column\":7}}})) != null ? stack1 : \"\")\n + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"hasManyActions\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(25, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":56,\"column\":0},\"end\":{\"line\":70,\"column\":7}}})) != null ? stack1 : \"\");\n},\"useData\":true});","var Handlebars = require(\"../../../../node_modules/handlebars/runtime.js\");\nfunction __default(obj) { return obj && (obj.__esModule ? obj[\"default\"] : obj); }\nmodule.exports = (Handlebars[\"default\"] || Handlebars).template({\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var helper, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"<div class=\\\"emptycontent\\\">\\n\t<div class=\\\"icon-search\\\"></div>\\n\t<h2>\"\n + container.escapeExpression(((helper = (helper = lookupProperty(helpers,\"couldNotLoadText\") || (depth0 != null ? lookupProperty(depth0,\"couldNotLoadText\") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"couldNotLoadText\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":3,\"column\":5},\"end\":{\"line\":3,\"column\":25}}}) : helper)))\n + \"</h2>\\n</div>\\n\";\n},\"useData\":true});","var Handlebars = require(\"../../../../node_modules/handlebars/runtime.js\");\nfunction __default(obj) { return obj && (obj.__esModule ? obj[\"default\"] : obj); }\nmodule.exports = (Handlebars[\"default\"] || Handlebars).template({\"1\":function(container,depth0,helpers,partials,data) {\n var helper, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"<div class=\\\"emptycontent\\\">\\n\t<div class=\\\"icon-search\\\"></div>\\n\t<h2>\"\n + container.escapeExpression(((helper = (helper = lookupProperty(helpers,\"noContactsFoundText\") || (depth0 != null ? lookupProperty(depth0,\"noContactsFoundText\") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"noContactsFoundText\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":4,\"column\":5},\"end\":{\"line\":4,\"column\":28}}}) : helper)))\n + \"</h2>\\n</div>\\n\";\n},\"3\":function(container,depth0,helpers,partials,data) {\n var helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"<div class=\\\"footer\\\"><a href=\\\"\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"contactsAppURL\") || (depth0 != null ? lookupProperty(depth0,\"contactsAppURL\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"contactsAppURL\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":9,\"column\":29},\"end\":{\"line\":9,\"column\":47}}}) : helper)))\n + \"\\\">\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"showAllContactsText\") || (depth0 != null ? lookupProperty(depth0,\"showAllContactsText\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"showAllContactsText\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":9,\"column\":49},\"end\":{\"line\":9,\"column\":72}}}) : helper)))\n + \"</a></div>\\n\";\n},\"5\":function(container,depth0,helpers,partials,data) {\n var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return ((stack1 = lookupProperty(helpers,\"if\").call(depth0 != null ? depth0 : (container.nullContext || {}),(depth0 != null ? lookupProperty(depth0,\"canInstallApp\") : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(6, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":10,\"column\":0},\"end\":{\"line\":12,\"column\":0}}})) != null ? stack1 : \"\");\n},\"6\":function(container,depth0,helpers,partials,data) {\n var helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"<div class=\\\"footer\\\"><a href=\\\"\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"contactsAppMgmtURL\") || (depth0 != null ? lookupProperty(depth0,\"contactsAppMgmtURL\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"contactsAppMgmtURL\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":11,\"column\":29},\"end\":{\"line\":11,\"column\":51}}}) : helper)))\n + \"\\\">\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"contactsAppMgmtText\") || (depth0 != null ? lookupProperty(depth0,\"contactsAppMgmtText\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"contactsAppMgmtText\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":11,\"column\":53},\"end\":{\"line\":11,\"column\":76}}}) : helper)))\n + \"</a></div>\\n\";\n},\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=depth0 != null ? depth0 : (container.nullContext || {}), lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return ((stack1 = lookupProperty(helpers,\"unless\").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,\"contacts\") : depth0)) != null ? lookupProperty(stack1,\"length\") : stack1),{\"name\":\"unless\",\"hash\":{},\"fn\":container.program(1, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":1,\"column\":0},\"end\":{\"line\":6,\"column\":11}}})) != null ? stack1 : \"\")\n + \"<div id=\\\"contactsmenu-contacts\\\"></div>\\n\"\n + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,(depth0 != null ? lookupProperty(depth0,\"contactsAppEnabled\") : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(3, data, 0),\"inverse\":container.program(5, data, 0),\"data\":data,\"loc\":{\"start\":{\"line\":8,\"column\":0},\"end\":{\"line\":12,\"column\":7}}})) != null ? stack1 : \"\");\n},\"useData\":true});","var Handlebars = require(\"../../../../node_modules/handlebars/runtime.js\");\nfunction __default(obj) { return obj && (obj.__esModule ? obj[\"default\"] : obj); }\nmodule.exports = (Handlebars[\"default\"] || Handlebars).template({\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var helper, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"<div class=\\\"emptycontent\\\">\\n\t<div class=\\\"icon-loading\\\"></div>\\n\t<h2>\"\n + container.escapeExpression(((helper = (helper = lookupProperty(helpers,\"loadingText\") || (depth0 != null ? lookupProperty(depth0,\"loadingText\") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"loadingText\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":3,\"column\":5},\"end\":{\"line\":3,\"column\":20}}}) : helper)))\n + \"</h2>\\n</div>\\n\";\n},\"useData\":true});","var Handlebars = require(\"../../../../node_modules/handlebars/runtime.js\");\nfunction __default(obj) { return obj && (obj.__esModule ? obj[\"default\"] : obj); }\nmodule.exports = (Handlebars[\"default\"] || Handlebars).template({\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"<label class=\\\"hidden-visually\\\" for=\\\"contactsmenu-search\\\">\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"searchContactsText\") || (depth0 != null ? lookupProperty(depth0,\"searchContactsText\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"searchContactsText\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":1,\"column\":57},\"end\":{\"line\":1,\"column\":79}}}) : helper)))\n + \"</label>\\n<input id=\\\"contactsmenu-search\\\" type=\\\"search\\\" placeholder=\\\"\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"searchContactsText\") || (depth0 != null ? lookupProperty(depth0,\"searchContactsText\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"searchContactsText\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":2,\"column\":59},\"end\":{\"line\":2,\"column\":81}}}) : helper)))\n + \"\\\" value=\\\"\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"searchTerm\") || (depth0 != null ? lookupProperty(depth0,\"searchTerm\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"searchTerm\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":2,\"column\":90},\"end\":{\"line\":2,\"column\":104}}}) : helper)))\n + \"\\\">\\n<div class=\\\"content\\\">\\n</div>\\n\";\n},\"useData\":true});","var map = {\n\t\"./af\": 42786,\n\t\"./af.js\": 42786,\n\t\"./ar\": 30867,\n\t\"./ar-dz\": 14130,\n\t\"./ar-dz.js\": 14130,\n\t\"./ar-kw\": 96135,\n\t\"./ar-kw.js\": 96135,\n\t\"./ar-ly\": 56440,\n\t\"./ar-ly.js\": 56440,\n\t\"./ar-ma\": 47702,\n\t\"./ar-ma.js\": 47702,\n\t\"./ar-sa\": 16040,\n\t\"./ar-sa.js\": 16040,\n\t\"./ar-tn\": 37100,\n\t\"./ar-tn.js\": 37100,\n\t\"./ar.js\": 30867,\n\t\"./az\": 31083,\n\t\"./az.js\": 31083,\n\t\"./be\": 9808,\n\t\"./be.js\": 9808,\n\t\"./bg\": 68338,\n\t\"./bg.js\": 68338,\n\t\"./bm\": 67438,\n\t\"./bm.js\": 67438,\n\t\"./bn\": 8905,\n\t\"./bn-bd\": 76225,\n\t\"./bn-bd.js\": 76225,\n\t\"./bn.js\": 8905,\n\t\"./bo\": 11560,\n\t\"./bo.js\": 11560,\n\t\"./br\": 1278,\n\t\"./br.js\": 1278,\n\t\"./bs\": 80622,\n\t\"./bs.js\": 80622,\n\t\"./ca\": 2468,\n\t\"./ca.js\": 2468,\n\t\"./cs\": 5822,\n\t\"./cs.js\": 5822,\n\t\"./cv\": 50877,\n\t\"./cv.js\": 50877,\n\t\"./cy\": 47373,\n\t\"./cy.js\": 47373,\n\t\"./da\": 24780,\n\t\"./da.js\": 24780,\n\t\"./de\": 59740,\n\t\"./de-at\": 60217,\n\t\"./de-at.js\": 60217,\n\t\"./de-ch\": 60894,\n\t\"./de-ch.js\": 60894,\n\t\"./de.js\": 59740,\n\t\"./dv\": 5300,\n\t\"./dv.js\": 5300,\n\t\"./el\": 50837,\n\t\"./el.js\": 50837,\n\t\"./en-au\": 78348,\n\t\"./en-au.js\": 78348,\n\t\"./en-ca\": 77925,\n\t\"./en-ca.js\": 77925,\n\t\"./en-gb\": 22243,\n\t\"./en-gb.js\": 22243,\n\t\"./en-ie\": 46436,\n\t\"./en-ie.js\": 46436,\n\t\"./en-il\": 47207,\n\t\"./en-il.js\": 47207,\n\t\"./en-in\": 44175,\n\t\"./en-in.js\": 44175,\n\t\"./en-nz\": 76319,\n\t\"./en-nz.js\": 76319,\n\t\"./en-sg\": 31662,\n\t\"./en-sg.js\": 31662,\n\t\"./eo\": 92915,\n\t\"./eo.js\": 92915,\n\t\"./es\": 55655,\n\t\"./es-do\": 55251,\n\t\"./es-do.js\": 55251,\n\t\"./es-mx\": 96112,\n\t\"./es-mx.js\": 96112,\n\t\"./es-us\": 71146,\n\t\"./es-us.js\": 71146,\n\t\"./es.js\": 55655,\n\t\"./et\": 5603,\n\t\"./et.js\": 5603,\n\t\"./eu\": 77763,\n\t\"./eu.js\": 77763,\n\t\"./fa\": 76959,\n\t\"./fa.js\": 76959,\n\t\"./fi\": 11897,\n\t\"./fi.js\": 11897,\n\t\"./fil\": 42549,\n\t\"./fil.js\": 42549,\n\t\"./fo\": 94694,\n\t\"./fo.js\": 94694,\n\t\"./fr\": 94470,\n\t\"./fr-ca\": 63049,\n\t\"./fr-ca.js\": 63049,\n\t\"./fr-ch\": 52330,\n\t\"./fr-ch.js\": 52330,\n\t\"./fr.js\": 94470,\n\t\"./fy\": 5044,\n\t\"./fy.js\": 5044,\n\t\"./ga\": 29295,\n\t\"./ga.js\": 29295,\n\t\"./gd\": 2101,\n\t\"./gd.js\": 2101,\n\t\"./gl\": 38794,\n\t\"./gl.js\": 38794,\n\t\"./gom-deva\": 27884,\n\t\"./gom-deva.js\": 27884,\n\t\"./gom-latn\": 23168,\n\t\"./gom-latn.js\": 23168,\n\t\"./gu\": 95349,\n\t\"./gu.js\": 95349,\n\t\"./he\": 24206,\n\t\"./he.js\": 24206,\n\t\"./hi\": 30094,\n\t\"./hi.js\": 30094,\n\t\"./hr\": 30316,\n\t\"./hr.js\": 30316,\n\t\"./hu\": 22138,\n\t\"./hu.js\": 22138,\n\t\"./hy-am\": 11423,\n\t\"./hy-am.js\": 11423,\n\t\"./id\": 29218,\n\t\"./id.js\": 29218,\n\t\"./is\": 90135,\n\t\"./is.js\": 90135,\n\t\"./it\": 90626,\n\t\"./it-ch\": 10150,\n\t\"./it-ch.js\": 10150,\n\t\"./it.js\": 90626,\n\t\"./ja\": 39183,\n\t\"./ja.js\": 39183,\n\t\"./jv\": 24286,\n\t\"./jv.js\": 24286,\n\t\"./ka\": 12105,\n\t\"./ka.js\": 12105,\n\t\"./kk\": 47772,\n\t\"./kk.js\": 47772,\n\t\"./km\": 18758,\n\t\"./km.js\": 18758,\n\t\"./kn\": 79282,\n\t\"./kn.js\": 79282,\n\t\"./ko\": 33730,\n\t\"./ko.js\": 33730,\n\t\"./ku\": 1408,\n\t\"./ku.js\": 1408,\n\t\"./ky\": 33291,\n\t\"./ky.js\": 33291,\n\t\"./lb\": 36841,\n\t\"./lb.js\": 36841,\n\t\"./lo\": 55466,\n\t\"./lo.js\": 55466,\n\t\"./lt\": 57010,\n\t\"./lt.js\": 57010,\n\t\"./lv\": 37595,\n\t\"./lv.js\": 37595,\n\t\"./me\": 39861,\n\t\"./me.js\": 39861,\n\t\"./mi\": 35493,\n\t\"./mi.js\": 35493,\n\t\"./mk\": 95966,\n\t\"./mk.js\": 95966,\n\t\"./ml\": 87341,\n\t\"./ml.js\": 87341,\n\t\"./mn\": 5115,\n\t\"./mn.js\": 5115,\n\t\"./mr\": 10370,\n\t\"./mr.js\": 10370,\n\t\"./ms\": 9847,\n\t\"./ms-my\": 41237,\n\t\"./ms-my.js\": 41237,\n\t\"./ms.js\": 9847,\n\t\"./mt\": 72126,\n\t\"./mt.js\": 72126,\n\t\"./my\": 56165,\n\t\"./my.js\": 56165,\n\t\"./nb\": 64924,\n\t\"./nb.js\": 64924,\n\t\"./ne\": 16744,\n\t\"./ne.js\": 16744,\n\t\"./nl\": 93901,\n\t\"./nl-be\": 59814,\n\t\"./nl-be.js\": 59814,\n\t\"./nl.js\": 93901,\n\t\"./nn\": 83877,\n\t\"./nn.js\": 83877,\n\t\"./oc-lnc\": 92135,\n\t\"./oc-lnc.js\": 92135,\n\t\"./pa-in\": 15858,\n\t\"./pa-in.js\": 15858,\n\t\"./pl\": 64495,\n\t\"./pl.js\": 64495,\n\t\"./pt\": 89520,\n\t\"./pt-br\": 57971,\n\t\"./pt-br.js\": 57971,\n\t\"./pt.js\": 89520,\n\t\"./ro\": 96459,\n\t\"./ro.js\": 96459,\n\t\"./ru\": 21793,\n\t\"./ru.js\": 21793,\n\t\"./sd\": 40950,\n\t\"./sd.js\": 40950,\n\t\"./se\": 10490,\n\t\"./se.js\": 10490,\n\t\"./si\": 90124,\n\t\"./si.js\": 90124,\n\t\"./sk\": 64249,\n\t\"./sk.js\": 64249,\n\t\"./sl\": 14985,\n\t\"./sl.js\": 14985,\n\t\"./sq\": 51104,\n\t\"./sq.js\": 51104,\n\t\"./sr\": 49131,\n\t\"./sr-cyrl\": 79915,\n\t\"./sr-cyrl.js\": 79915,\n\t\"./sr.js\": 49131,\n\t\"./ss\": 85893,\n\t\"./ss.js\": 85893,\n\t\"./sv\": 98760,\n\t\"./sv.js\": 98760,\n\t\"./sw\": 91172,\n\t\"./sw.js\": 91172,\n\t\"./ta\": 27333,\n\t\"./ta.js\": 27333,\n\t\"./te\": 23110,\n\t\"./te.js\": 23110,\n\t\"./tet\": 52095,\n\t\"./tet.js\": 52095,\n\t\"./tg\": 27321,\n\t\"./tg.js\": 27321,\n\t\"./th\": 9041,\n\t\"./th.js\": 9041,\n\t\"./tk\": 19005,\n\t\"./tk.js\": 19005,\n\t\"./tl-ph\": 75768,\n\t\"./tl-ph.js\": 75768,\n\t\"./tlh\": 89444,\n\t\"./tlh.js\": 89444,\n\t\"./tr\": 72397,\n\t\"./tr.js\": 72397,\n\t\"./tzl\": 28254,\n\t\"./tzl.js\": 28254,\n\t\"./tzm\": 51106,\n\t\"./tzm-latn\": 30699,\n\t\"./tzm-latn.js\": 30699,\n\t\"./tzm.js\": 51106,\n\t\"./ug-cn\": 9288,\n\t\"./ug-cn.js\": 9288,\n\t\"./uk\": 67691,\n\t\"./uk.js\": 67691,\n\t\"./ur\": 13795,\n\t\"./ur.js\": 13795,\n\t\"./uz\": 6791,\n\t\"./uz-latn\": 60588,\n\t\"./uz-latn.js\": 60588,\n\t\"./uz.js\": 6791,\n\t\"./vi\": 65666,\n\t\"./vi.js\": 65666,\n\t\"./x-pseudo\": 14378,\n\t\"./x-pseudo.js\": 14378,\n\t\"./yo\": 75805,\n\t\"./yo.js\": 75805,\n\t\"./zh-cn\": 83839,\n\t\"./zh-cn.js\": 83839,\n\t\"./zh-hk\": 55726,\n\t\"./zh-hk.js\": 55726,\n\t\"./zh-mo\": 99807,\n\t\"./zh-mo.js\": 99807,\n\t\"./zh-tw\": 74152,\n\t\"./zh-tw.js\": 74152\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 46700;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = function(module) {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 4577;","__webpack_require__.b = document.baseURI || self.location.href;\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t4577: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = function(chunkId) { return installedChunks[chunkId] === 0; };\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunknextcloud\"] = self[\"webpackChunknextcloud\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [7874], function() { return __webpack_require__(39977); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","loadedScripts","loadedStyles","updatableNotification","getDefaultNotificationFunction","setDefault","callback","this","hide","$row","_","undefined","each","$","toastify","hideToast","console","error","call","showHtml","html","options","isHTML","timeout","TOAST_PERMANENT_TIMEOUT","toast","showMessage","toastElement","show","text","toString","split","join","escapeHTML","showUpdate","showTemporary","TOAST_DEFAULT_TIMEOUT","isHidden","find","length","ajaxConnectionLostHandler","Notification","t","trailing","enableDynamicSlideToggle","Apps","$el","removeClass","trigger","addClass","method","endpoint","OC","type","toUpperCase","url","generateOcsUrl","data","success","bind","appConfig","window","oc_appconfig","AppConfig","getValue","app","key","defaultValue","setValue","value","getApps","getKeys","deleteKey","_oc_appswebroots","methodMap","create","update","patch","delete","read","parsePropFindResult","result","davProperties","subResult","props","href","propStat","status","properties","propKey","id","parseIdFromLocation","queryPos","indexOf","substr","parts","pop","isSuccessStatus","callPropPatch","client","model","headers","propPatch","attrs","changedProp","warn","convertModelAttributesToDavProperties","changed","then","toJSON","Backbone","VendorBackbone","Object","assign","davCall","dav","baseUrl","xmlNamespaces","resolveUrl","requestToken","propFind","depth","response","propsMapping","results","body","shift","callPropFind","request","callMkCol","responseJson","locationHeader","xhr","getResponseHeader","callMethod","davSync","params","isCollection","Collection","hasInnerCollection","usePUT","collection","Error","urlError","JSON","stringify","processData","prototype","textStatus","errorThrown","context","_oc_config","Contact","Model","defaults","fullName","lastMessage","actions","hasOneAction","hasTwoActions","hasManyActions","initialize","get","set","ContactCollection","ContactsListView","View","_collection","_subViews","render","self","forEach","contact","item","ContactsListItemView","append","on","_onChildActionMenuToggle","push","$src","view","className","_template","_model","_actionMenuShown","events","contactTemplate","require","template","_onOtherActionMenuOpened","delegateEvents","imageplaceholder","tooltip","placement","_onToggleActionsMenu","is","ContactsMenuView","_loadingTemplate","_errorTemplate","_contentTemplate","_contactsTemplate","_contacts","_searchTerm","templates","loading","menu","list","_onSearch","e","searchTerm","val","loadingTemplate","errorTemplate","couldNotLoadText","contentTemplate","searchContactsText","contactsTemplate","noContactsFoundText","showAllContactsText","contactsAppMgmtText","showLoading","loadingText","showError","showContacts","viewData","contacts","contactsAppEnabled","contactsAppURL","canInstallApp","contactsAppMgmtURL","searchVal","focus","ContactsMenu","_view","_contactsPromise","el","loadContacts","_getContacts","Promise","resolve","filter","term","catch","rawUid","document","getElementsByTagName","getAttribute","displayName","currentUser","Search","isA11yActivation","event","global","emit","token","Dialogs","YES_NO_BUTTONS","OK_BUTTONS","FILEPICKER_TYPE_CHOOSE","FILEPICKER_TYPE_MOVE","FILEPICKER_TYPE_COPY","FILEPICKER_TYPE_COPY_MOVE","FILEPICKER_TYPE_CUSTOM","dialogsCounter","alert","title","modal","message","OK_BUTTON","info","confirm","confirmDestructive","buttons","confirmHtml","prompt","name","password","_getMessageTemplate","$tmpl","dialogName","dialogId","$dlg","octemplate","dialog_name","input","attr","label","buttonlist","click","ocdialog","defaultButton","closeOnEscape","close","filepicker","multiselect","mimetypeFilter","path","sortField","sortOrder","emptyText","newText","filesClient","OCA","Sharing","PublicApp","fileList","filelist","allowDirectoryChooser","_getFilePickerTemplate","$filePicker","emptytext","newtext","nameCol","sizeCol","modifiedCol","target","prepend","$showGridView","_onGridviewChange","_getGridSettings","newButton","stopImmediatePropagation","preventDefault","$input","submit","newName","lastPos","lastIndexOf","selectRange","$form","$submit","stopPropagation","filename","trimmedName","trim","match","isFileNameValid","file","escape","checkInput","newname","createDirectory","always","_fillFilePicker","ready","$fileListHeader","$filelist","$filelistContainer","$dirTree","_handleTreeListSelect","_handlePickerClick","dir","currentTarget","functionToCall","returnType","datapath","index","element","selectedName","button","width","height","style","remove","buttonEnableDisable","closest","prop","fail","content","dialogType","allowHtml","escapeFunction","cancel","classes","confirmClasses","closeCallback","_fileexistsshown","fileexists","original","replacement","controller","dialogDeferred","resampleHermite","canvas","W","H","W2","H2","Math","round","img","getContext","getImageData","img2","data2","ratio_w","ratio_h","ratio_w_half","ceil","ratio_h_half","j","i","x2","weight","weights","weights_alpha","gx_r","gx_g","gx_b","gx_a","center_y","yy","floor","dy","abs","center_x","w0","xx","dx","w","sqrt","clearRect","max","putImageData","addConflict","$conflicts","$conflict","clone","$originalDiv","$replacementDiv","size","mtime","lastModified","directory","urlSpec","x","y","c","etag","forceIcon","previewpath","Files","generatePreviewUrl","replace","css","FileReader","reader","onload","blob","Blob","URL","webkitURL","originalUrl","createObjectURL","image","Image","src","createElement","min","drawImage","toDataURL","readAsArrayBuffer","reject","getCroppedPreview","checkboxId","count","n","parent","children","_getFileExistsTemplate","allnewfiles","allexistingfiles","why","what","onCancel","onContinue","closeButton","$primaryButton","updatePrimaryButton","checkedCount","$checkbox","promise","gridview","toggleClass","isGridView","hasClass","defer","$filePickerTemplate","tmpl","$listTmpl","detach","jqXHR","$messageTemplate","$fileexistsTemplate","empty","advancedFilter","getFolderContents","files","_changeButtonsText","mimetype","showHiddenInput","getElementById","startsWith","comparator","Comparators","fileInfo1","fileInfo2","sort","file1","file2","isFavorite","fileInfo","tags","_fillSlug","idx","entry","simpleSize","sizeColor","isEncrypted","icon","parseInt","pow","filename1","filename2","date","previewUrl","addButton","$template","paths","prependTo","getOcDialog","$element","ctrlKey","copyText","folder","moveText","eq","getToken","setToken","newToken","OCEventSource","joinChar","dataStr","typelessListeners","closed","listeners","encodeURIComponent","useFallBack","EventSource","iframeId","iframeCount","fallBackSources","iframe","source","onmessage","parse","listen","fallBackCallBack","done","lastLength","addEventListener","currentMenu","currentMenuToggle","hideMenus","complete","lastMenu","slideUp","apply","arguments","isAdmin","_oc_isadmin","load","loadTranslations","register","_unregister","unregister","translate","translatePlural","Handlebars","startSaving","selector","startAction","stop","finishedSaving","finishedAction","finishedSuccess","finishedError","delay","fadeOut","pageLoadTime","init","requirePasswordConfirmation","moment","requiresPasswordConfirmation","serverTimeDiff","nc_pageLoad","timeSinceLogin","nc_lastLogin","backendAllowsPasswordConfirmation","rejectCallback","config","_confirmPassword","$dialog","$error","$buttons","generateUrl","lastLogin","theme","_theme","_handlers","_pushState","strParams","history","pushState","location","pathname","navigator","userAgent","toLowerCase","pattern","patterns","querySelectorAll","ii","fill","stroke","removeAttribute","setAttribute","replaceState","hash","_cancelPop","addOnPopStateHandler","handler","_parseHashQuery","pos","_decodeQuery","query","parseUrlQuery","search","_onPopState","state","chunkify","tz","charAt","m","History","humanFileSize","computerFileSize","string","s","bytes","matches","parseFloat","isFinite","b","k","kb","mb","gb","g","tb","pb","p","formatDate","timestamp","format","TESTING","relativeModifiedDate","diff","fromNow","getScrollBarWidth","_scrollBarWidth","inner","outer","position","top","left","visibility","overflow","appendChild","w1","offsetWidth","w2","clientWidth","removeChild","stripTime","Date","getFullYear","getMonth","getDate","naturalSortCompare","a","aa","bb","aNum","Number","bNum","localeCompare","waitFor","interval","internalCallback","setTimeout","isCookieSetToValue","cookies","cookie","debug","_oc_debug","webroot","_oc_webroot","coreApps","menuSpeed","PERMISSION_ALL","PERMISSION_CREATE","PERMISSION_DELETE","PERMISSION_NONE","PERMISSION_READ","PERMISSION_SHARE","PERMISSION_UPDATE","TAG_FAVORITE","fileIsBlacklisted","Config","addScript","script","generateFilePath","addStyle","createStyleSheet","appSettings","args","appid","scriptName","cache","settings","popup","arrowclass","loadJS","scriptname","jqxhr","appswebroots","dialogs","getCurrentUser","uid","isUserAdmin","L10N","_ajaxConnectionLostHandler","_processAjaxError","statusText","timer","setInterval","clearInterval","registerXHRForErrorProcessing","readyState","getCapabilities","realGetCapabilities","registerMenu","$toggle","$menuEl","toggle","headerMenu","isClickableElement","slideToggle","showMenu","unregisterMenu","off","basename","encodePath","dirname","isSamePath","joinPaths","getHost","host","getHostName","hostname","getPort","port","getProtocol","protocol","getCanonicalLocale","getLocale","getLanguage","buildQueryString","parseQueryString","queryString","components","part","decodeURIComponent","msg","PasswordConfirmation","Plugins","_plugins","targetName","plugin","plugins","getPlugins","attach","targetObject","Util","filePath","namespaces","tail","getRootPath","getRootUrl","imagePath","redirect","targetURL","reload","getRequestToken","linkTo","linkToOCS","service","version","ocsVersion","linkToRemote","generateRemoteUrl","linkToRemoteBase","realGetRootUrl","subscribe","ArrowRight","NcButton","default","valueLoading","required","invertedColors","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","_vm","_c","_self","$event","$emit","scopedSlots","_u","fn","staticClass","proxy","_v","_s","LoginButton","NcPasswordField","NcTextField","NcNoteCard","username","redirectUrl","errors","messages","throttleDelay","autoCompleteAllowed","directLogin","timezone","timezoneOffset","headline","productName","user","computed","isError","errorLabel","apacheAuthFailed","internalException","invalidPassword","userDisabled","loadingIcon","loginActionUrl","mounted","methods","updateUsername","ref","_e","_l","class","staticStyle","domProps","shake","NoValidCredentials","InformationIcon","LockOpenIcon","isHttps","isLocalhost","hasPublicKeyCredential","validCredentials","authenticate","getAuthenticationData","loginName","Axios","resp","publicKey","sign","rawId","authenticatorData","clientDataJSON","signature","userHandle","completeAuthentication","directives","rawName","expression","composing","resetPasswordLink","watch","resetPasswordTarget","encrypted","proceed","Array","isArray","_i","$$a","$$el","$$c","checked","$$i","concat","slice","warning","clear","LoginForm","PasswordLessLoginForm","ResetPassword","UpdatePassword","passwordlessLogin","resetPassword","canResetPassword","resetPasswordUser","hasPasswordless","countAlternativeLogins","alternativeLogins","hideLoginForm","passwordResetFinished","alternativeLogin","L10n","Vue","Nextcloud","LoginView","$mount","___CSS_LOADER_EXPORT___","module","exports","container","depth0","helpers","partials","stack1","lookupProperty","propertyName","hasOwnProperty","nullContext","program","noop","alias1","lambda","alias2","escapeExpression","helper","hooks","helperMissing","alias3","alias4","map","webpackContext","req","webpackContextResolve","__webpack_require__","o","code","keys","__webpack_module_cache__","moduleId","cachedModule","loaded","__webpack_modules__","O","chunkIds","priority","notFulfilled","Infinity","fulfilled","every","splice","r","getter","__esModule","d","definition","defineProperty","enumerable","globalThis","Function","obj","Symbol","toStringTag","nmd","baseURI","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","nc","__webpack_exports__"],"sourceRoot":""}
\ No newline at end of file +{"version":3,"file":"core-login.js?v=007946ee388b7b36d0d1","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/core/src/OC/legacy-loader.js","webpack:///nextcloud/core/src/OC/notification.js","webpack:///nextcloud/core/src/OC/xhr-error.js","webpack:///nextcloud/core/src/OC/apps.js","webpack:///nextcloud/core/src/OCP/appconfig.js","webpack:///nextcloud/core/src/OC/appconfig.js","webpack:///nextcloud/core/src/OC/appswebroots.js","webpack:///nextcloud/core/src/OC/backbone-webdav.js","webpack:///nextcloud/core/src/OC/backbone.js","webpack:///nextcloud/core/src/OC/config.js","webpack:///nextcloud/core/src/OC/contactsmenu.js","webpack:///nextcloud/core/src/OC/currentuser.js","webpack:///nextcloud/core/src/OCA/search.js","webpack:///nextcloud/core/src/OCA/index.js","webpack:///nextcloud/core/src/Util/a11y.js","webpack:///nextcloud/core/src/OC/dialogs.js","webpack:///nextcloud/core/src/OC/requesttoken.js","webpack:///nextcloud/core/src/OC/eventsource.js","webpack:///nextcloud/core/src/OC/menu.js","webpack:///nextcloud/core/src/OC/constants.js","webpack:///nextcloud/core/src/OC/admin.js","webpack:///nextcloud/core/src/OC/l10n.js","webpack:///nextcloud/core/src/OC/msg.js","webpack:///nextcloud/core/src/OC/password-confirmation.js","webpack:///nextcloud/core/src/OC/theme.js","webpack:///nextcloud/core/src/OC/util-history.js","webpack:///nextcloud/core/src/OC/util.js","webpack:///nextcloud/core/src/OC/debug.js","webpack:///nextcloud/core/src/OC/webroot.js","webpack:///nextcloud/core/src/OC/get_set.js","webpack:///nextcloud/core/src/OC/index.js","webpack:///nextcloud/core/src/OC/appsettings.js","webpack:///nextcloud/core/src/OC/capabilities.js","webpack:///nextcloud/core/src/OC/host.js","webpack:///nextcloud/core/src/OC/query-string.js","webpack:///nextcloud/core/src/OC/plugins.js","webpack:///nextcloud/core/src/OC/navigation.js","webpack:///nextcloud/core/src/OC/routing.js","webpack://nextcloud/./core/src/views/Login.vue?ae59","webpack:///nextcloud/core/src/components/login/LoginButton.vue?vue&type=script&lang=js&","webpack:///nextcloud/core/src/components/login/LoginButton.vue","webpack://nextcloud/./core/src/components/login/LoginButton.vue?3136","webpack://nextcloud/./core/src/components/login/LoginButton.vue?14f0","webpack://nextcloud/./core/src/components/login/LoginButton.vue?82aa","webpack:///nextcloud/core/src/components/login/LoginForm.vue?vue&type=script&lang=js&","webpack:///nextcloud/core/src/components/login/LoginForm.vue","webpack://nextcloud/./core/src/components/login/LoginForm.vue?a91a","webpack://nextcloud/./core/src/components/login/LoginForm.vue?a678","webpack://nextcloud/./core/src/components/login/LoginForm.vue?4366","webpack:///nextcloud/core/src/components/login/PasswordLessLoginForm.vue","webpack:///nextcloud/core/src/components/login/PasswordLessLoginForm.vue?vue&type=script&lang=js&","webpack:///nextcloud/core/src/services/WebAuthnAuthenticationService.js","webpack://nextcloud/./core/src/components/login/PasswordLessLoginForm.vue?1a33","webpack://nextcloud/./core/src/components/login/PasswordLessLoginForm.vue?09eb","webpack://nextcloud/./core/src/components/login/PasswordLessLoginForm.vue?16ec","webpack:///nextcloud/core/src/components/login/ResetPassword.vue?vue&type=script&lang=js&","webpack:///nextcloud/core/src/components/login/ResetPassword.vue","webpack://nextcloud/./core/src/components/login/ResetPassword.vue?703c","webpack://nextcloud/./core/src/components/login/ResetPassword.vue?9d75","webpack://nextcloud/./core/src/components/login/ResetPassword.vue?7cf3","webpack:///nextcloud/core/src/components/login/UpdatePassword.vue","webpack:///nextcloud/core/src/components/login/UpdatePassword.vue?vue&type=script&lang=js&","webpack://nextcloud/./core/src/components/login/UpdatePassword.vue?4361","webpack://nextcloud/./core/src/components/login/UpdatePassword.vue?30ca","webpack://nextcloud/./core/src/components/login/UpdatePassword.vue?1c8f","webpack:///nextcloud/core/src/views/Login.vue","webpack:///nextcloud/core/src/views/Login.vue?vue&type=script&lang=js&","webpack://nextcloud/./core/src/views/Login.vue?0fcd","webpack://nextcloud/./core/src/views/Login.vue?3468","webpack:///nextcloud/core/src/mixins/Nextcloud.js","webpack:///nextcloud/core/src/login.js","webpack:///nextcloud/core/src/components/login/LoginButton.vue?vue&type=style&index=0&id=756414a8&prod&lang=scss&scoped=true&","webpack:///nextcloud/core/src/components/login/LoginForm.vue?vue&type=style&index=0&id=5bd351bc&prod&lang=scss&scoped=true&","webpack:///nextcloud/core/src/components/login/PasswordLessLoginForm.vue?vue&type=style&index=0&id=20256748&prod&lang=scss&scoped=true&","webpack:///nextcloud/core/src/components/login/ResetPassword.vue?vue&type=style&index=0&id=27cabc60&prod&lang=scss&scoped=true&","webpack:///nextcloud/core/src/views/Login.vue?vue&type=style&index=0&id=7b955242&prod&lang=scss&","webpack:///nextcloud/core/src/components/login/UpdatePassword.vue?vue&type=style&index=0&id=4dc21d74&prod&scoped=true&lang=css&","webpack:///nextcloud/core/src/OC/contactsmenu/contact.handlebars","webpack:///nextcloud/core/src/OC/contactsmenu/error.handlebars","webpack:///nextcloud/core/src/OC/contactsmenu/list.handlebars","webpack:///nextcloud/core/src/OC/contactsmenu/loading.handlebars","webpack:///nextcloud/core/src/OC/contactsmenu/menu.handlebars","webpack:///nextcloud/node_modules/moment/locale|sync|/^\\.\\/.*$","webpack:///nextcloud/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/compat get default export","webpack:///nextcloud/webpack/runtime/define property getters","webpack:///nextcloud/webpack/runtime/global","webpack:///nextcloud/webpack/runtime/hasOwnProperty shorthand","webpack:///nextcloud/webpack/runtime/make namespace object","webpack:///nextcloud/webpack/runtime/node module decorator","webpack:///nextcloud/webpack/runtime/runtimeId","webpack:///nextcloud/webpack/runtime/jsonp chunk loading","webpack:///nextcloud/webpack/runtime/nonce","webpack:///nextcloud/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = function(result, chunkIds, fn, priority) {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every(function(key) { return __webpack_require__.O[key](chunkIds[j]); })) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n/** @typedef {import('jquery')} jQuery */\nimport $ from 'jquery'\nimport { generateFilePath } from '@nextcloud/router'\n\nconst loadedScripts = {}\nconst loadedStyles = []\n\n/**\n * Load a script for the server and load it. If the script is already loaded,\n * the event handler will be called directly\n *\n * @param {string} app the app id to which the script belongs\n * @param {string} script the filename of the script\n * @param {Function} ready event handler to be called when the script is loaded\n * @return {jQuery.Deferred}\n * @deprecated 16.0.0 Use OCP.Loader.loadScript\n */\nexport const addScript = (app, script, ready) => {\n\tconsole.warn('OC.addScript is deprecated, use OCP.Loader.loadScript instead')\n\n\tlet deferred\n\tconst path = generateFilePath(app, 'js', script + '.js')\n\tif (!loadedScripts[path]) {\n\t\tdeferred = $.Deferred()\n\t\t$.getScript(path, () => deferred.resolve())\n\t\tloadedScripts[path] = deferred\n\t} else {\n\t\tif (ready) {\n\t\t\tready()\n\t\t}\n\t}\n\treturn loadedScripts[path]\n}\n\n/**\n * Loads a CSS file\n *\n * @param {string} app the app id to which the css style belongs\n * @param {string} style the filename of the css file\n * @deprecated 16.0.0 Use OCP.Loader.loadStylesheet\n */\nexport const addStyle = (app, style) => {\n\tconsole.warn('OC.addStyle is deprecated, use OCP.Loader.loadStylesheet instead')\n\n\tconst path = generateFilePath(app, 'css', style + '.css')\n\tif (loadedStyles.indexOf(path) === -1) {\n\t\tloadedStyles.push(path)\n\t\tif (document.createStyleSheet) {\n\t\t\tdocument.createStyleSheet(path)\n\t\t} else {\n\t\t\tstyle = $('<link rel=\"stylesheet\" type=\"text/css\" href=\"' + path + '\"/>')\n\t\t\t$('head').append(style)\n\t\t}\n\t}\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Daniel Calviño Sánchez <danxuliu@gmail.com>\n * @author Joas Schilling <coding@schilljs.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n * @author npmbuildbot[bot] \"npmbuildbot[bot]@users.noreply.github.com\"\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport _ from 'underscore'\n/** @typedef {import('jquery')} jQuery */\nimport $ from 'jquery'\nimport { showMessage, TOAST_DEFAULT_TIMEOUT, TOAST_PERMANENT_TIMEOUT } from '@nextcloud/dialogs'\n\n/**\n * @todo Write documentation\n * @deprecated 17.0.0 use the `@nextcloud/dialogs` package instead\n * @namespace OC.Notification\n */\nexport default {\n\n\tupdatableNotification: null,\n\n\tgetDefaultNotificationFunction: null,\n\n\t/**\n\t * @param {Function} callback callback function\n\t * @deprecated 17.0.0 use the `@nextcloud/dialogs` package\n\t */\n\tsetDefault(callback) {\n\t\tthis.getDefaultNotificationFunction = callback\n\t},\n\n\t/**\n\t * Hides a notification.\n\t *\n\t * If a row is given, only hide that one.\n\t * If no row is given, hide all notifications.\n\t *\n\t * @param {jQuery} [$row] notification row\n\t * @param {Function} [callback] callback\n\t * @deprecated 17.0.0 use the `@nextcloud/dialogs` package\n\t */\n\thide($row, callback) {\n\t\tif (_.isFunction($row)) {\n\t\t\t// first arg is the callback\n\t\t\tcallback = $row\n\t\t\t$row = undefined\n\t\t}\n\n\t\tif (!$row) {\n\t\t\tconsole.error('Missing argument $row in OC.Notification.hide() call, caller needs to be adjusted to only dismiss its own notification')\n\t\t\treturn\n\t\t}\n\n\t\t// remove the row directly\n\t\t$row.each(function() {\n\t\t\tif ($(this)[0].toastify) {\n\t\t\t\t$(this)[0].toastify.hideToast()\n\t\t\t} else {\n\t\t\t\tconsole.error('cannot hide toast because object is not set')\n\t\t\t}\n\t\t\tif (this === this.updatableNotification) {\n\t\t\t\tthis.updatableNotification = null\n\t\t\t}\n\t\t})\n\t\tif (callback) {\n\t\t\tcallback.call()\n\t\t}\n\t\tif (this.getDefaultNotificationFunction) {\n\t\t\tthis.getDefaultNotificationFunction()\n\t\t}\n\t},\n\n\t/**\n\t * Shows a notification as HTML without being sanitized before.\n\t * If you pass unsanitized user input this may lead to a XSS vulnerability.\n\t * Consider using show() instead of showHTML()\n\t *\n\t * @param {string} html Message to display\n\t * @param {object} [options] options\n\t * @param {string} [options.type] notification type\n\t * @param {number} [options.timeout=0] timeout value, defaults to 0 (permanent)\n\t * @return {jQuery} jQuery element for notification row\n\t * @deprecated 17.0.0 use the `@nextcloud/dialogs` package\n\t */\n\tshowHtml(html, options) {\n\t\toptions = options || {}\n\t\toptions.isHTML = true\n\t\toptions.timeout = (!options.timeout) ? TOAST_PERMANENT_TIMEOUT : options.timeout\n\t\tconst toast = showMessage(html, options)\n\t\ttoast.toastElement.toastify = toast\n\t\treturn $(toast.toastElement)\n\t},\n\n\t/**\n\t * Shows a sanitized notification\n\t *\n\t * @param {string} text Message to display\n\t * @param {object} [options] options\n\t * @param {string} [options.type] notification type\n\t * @param {number} [options.timeout=0] timeout value, defaults to 0 (permanent)\n\t * @return {jQuery} jQuery element for notification row\n\t * @deprecated 17.0.0 use the `@nextcloud/dialogs` package\n\t */\n\tshow(text, options) {\n\t\tconst escapeHTML = function(text) {\n\t\t\treturn text.toString()\n\t\t\t\t.split('&').join('&')\n\t\t\t\t.split('<').join('<')\n\t\t\t\t.split('>').join('>')\n\t\t\t\t.split('\"').join('"')\n\t\t\t\t.split('\\'').join(''')\n\t\t}\n\n\t\toptions = options || {}\n\t\toptions.timeout = (!options.timeout) ? TOAST_PERMANENT_TIMEOUT : options.timeout\n\t\tconst toast = showMessage(escapeHTML(text), options)\n\t\ttoast.toastElement.toastify = toast\n\t\treturn $(toast.toastElement)\n\t},\n\n\t/**\n\t * Updates (replaces) a sanitized notification.\n\t *\n\t * @param {string} text Message to display\n\t * @return {jQuery} JQuery element for notificaiton row\n\t * @deprecated 17.0.0 use the `@nextcloud/dialogs` package\n\t */\n\tshowUpdate(text) {\n\t\tif (this.updatableNotification) {\n\t\t\tthis.updatableNotification.hideToast()\n\t\t}\n\t\tthis.updatableNotification = showMessage(text, { timeout: TOAST_PERMANENT_TIMEOUT })\n\t\tthis.updatableNotification.toastElement.toastify = this.updatableNotification\n\t\treturn $(this.updatableNotification.toastElement)\n\t},\n\n\t/**\n\t * Shows a notification that disappears after x seconds, default is\n\t * 7 seconds\n\t *\n\t * @param {string} text Message to show\n\t * @param {Array} [options] options array\n\t * @param {number} [options.timeout=7] timeout in seconds, if this is 0 it will show the message permanently\n\t * @param {boolean} [options.isHTML=false] an indicator for HTML notifications (true) or text (false)\n\t * @param {string} [options.type] notification type\n\t * @return {JQuery} the toast element\n\t * @deprecated 17.0.0 use the `@nextcloud/dialogs` package\n\t */\n\tshowTemporary(text, options) {\n\t\toptions = options || {}\n\t\toptions.timeout = options.timeout || TOAST_DEFAULT_TIMEOUT\n\t\tconst toast = showMessage(text, options)\n\t\ttoast.toastElement.toastify = toast\n\t\treturn $(toast.toastElement)\n\t},\n\n\t/**\n\t * Returns whether a notification is hidden.\n\t *\n\t * @return {boolean}\n\t * @deprecated 17.0.0 use the `@nextcloud/dialogs` package\n\t */\n\tisHidden() {\n\t\treturn !$('#content').find('.toastify').length\n\t},\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport _ from 'underscore'\nimport $ from 'jquery'\n\nimport OC from './index'\nimport Notification from './notification'\n\n/**\n * Warn users that the connection to the server was lost temporarily\n *\n * This function is throttled to prevent stacked notfications.\n * After 7sec the first notification is gone, then we can show another one\n * if necessary.\n */\nexport const ajaxConnectionLostHandler = _.throttle(() => {\n\tNotification.showTemporary(t('core', 'Connection to server lost'))\n}, 7 * 1000, { trailing: false })\n\n/**\n * Process ajax error, redirects to main page\n * if an error/auth error status was returned.\n *\n * @param {XMLHttpRequest} xhr xhr request\n */\nexport const processAjaxError = xhr => {\n\t// purposefully aborted request ?\n\t// OC._userIsNavigatingAway needed to distinguish ajax calls cancelled by navigating away\n\t// from calls cancelled by failed cross-domain ajax due to SSO redirect\n\tif (xhr.status === 0 && (xhr.statusText === 'abort' || xhr.statusText === 'timeout' || OC._reloadCalled)) {\n\t\treturn\n\t}\n\n\tif (_.contains([302, 303, 307, 401], xhr.status) && OC.currentUser) {\n\t\t// sometimes \"beforeunload\" happens later, so need to defer the reload a bit\n\t\tsetTimeout(function() {\n\t\t\tif (!OC._userIsNavigatingAway && !OC._reloadCalled) {\n\t\t\t\tlet timer = 0\n\t\t\t\tconst seconds = 5\n\t\t\t\tconst interval = setInterval(function() {\n\t\t\t\t\tNotification.showUpdate(n('core', 'Problem loading page, reloading in %n second', 'Problem loading page, reloading in %n seconds', seconds - timer))\n\t\t\t\t\tif (timer >= seconds) {\n\t\t\t\t\t\tclearInterval(interval)\n\t\t\t\t\t\tOC.reload()\n\t\t\t\t\t}\n\t\t\t\t\ttimer++\n\t\t\t\t}, 1000 // 1 second interval\n\t\t\t\t)\n\n\t\t\t\t// only call reload once\n\t\t\t\tOC._reloadCalled = true\n\t\t\t}\n\t\t}, 100)\n\t} else if (xhr.status === 0) {\n\t\t// Connection lost (e.g. WiFi disconnected or server is down)\n\t\tsetTimeout(function() {\n\t\t\tif (!OC._userIsNavigatingAway && !OC._reloadCalled) {\n\t\t\t\t// TODO: call method above directly\n\t\t\t\tOC._ajaxConnectionLostHandler()\n\t\t\t}\n\t\t}, 100)\n\t}\n}\n\n/**\n * Registers XmlHttpRequest object for global error processing.\n *\n * This means that if this XHR object returns 401 or session timeout errors,\n * the current page will automatically be reloaded.\n *\n * @param {XMLHttpRequest} xhr xhr request\n */\nexport const registerXHRForErrorProcessing = xhr => {\n\tconst loadCallback = () => {\n\t\tif (xhr.readyState !== 4) {\n\t\t\treturn\n\t\t}\n\n\t\tif ((xhr.status >= 200 && xhr.status < 300) || xhr.status === 304) {\n\t\t\treturn\n\t\t}\n\n\t\t// fire jquery global ajax error handler\n\t\t$(document).trigger(new $.Event('ajaxError'), xhr)\n\t}\n\n\tconst errorCallback = () => {\n\t\t// fire jquery global ajax error handler\n\t\t$(document).trigger(new $.Event('ajaxError'), xhr)\n\t}\n\n\tif (xhr.addEventListener) {\n\t\txhr.addEventListener('load', loadCallback)\n\t\txhr.addEventListener('error', errorCallback)\n\t}\n\n}\n","/**\n * @copyright Bernhard Posselt 2014\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport $ from 'jquery'\n\nlet dynamicSlideToggleEnabled = false\n\nconst Apps = {\n\tenableDynamicSlideToggle() {\n\t\tdynamicSlideToggleEnabled = true\n\t},\n}\n\n/**\n * Shows the #app-sidebar and add .with-app-sidebar to subsequent siblings\n *\n * @param {object} [$el] sidebar element to show, defaults to $('#app-sidebar')\n */\nApps.showAppSidebar = function($el) {\n\tconst $appSidebar = $el || $('#app-sidebar')\n\t$appSidebar.removeClass('disappear').show()\n\t$('#app-content').trigger(new $.Event('appresized'))\n}\n\n/**\n * Shows the #app-sidebar and removes .with-app-sidebar from subsequent\n * siblings\n *\n * @param {object} [$el] sidebar element to hide, defaults to $('#app-sidebar')\n */\nApps.hideAppSidebar = function($el) {\n\tconst $appSidebar = $el || $('#app-sidebar')\n\t$appSidebar.hide().addClass('disappear')\n\t$('#app-content').trigger(new $.Event('appresized'))\n}\n\n/**\n * Provides a way to slide down a target area through a button and slide it\n * up if the user clicks somewhere else. Used for the news app settings and\n * add new field.\n *\n * Usage:\n * <button data-apps-slide-toggle=\".slide-area\">slide</button>\n * <div class=\".slide-area\" class=\"hidden\">I'm sliding up</div>\n */\nexport const registerAppsSlideToggle = () => {\n\tlet buttons = $('[data-apps-slide-toggle]')\n\n\tif (buttons.length === 0) {\n\t\t$('#app-navigation').addClass('without-app-settings')\n\t}\n\n\t$(document).click(function(event) {\n\n\t\tif (dynamicSlideToggleEnabled) {\n\t\t\tbuttons = $('[data-apps-slide-toggle]')\n\t\t}\n\n\t\tbuttons.each(function(index, button) {\n\n\t\t\tconst areaSelector = $(button).data('apps-slide-toggle')\n\t\t\tconst area = $(areaSelector)\n\n\t\t\t/**\n\t\t\t *\n\t\t\t */\n\t\t\tfunction hideArea() {\n\t\t\t\tarea.slideUp(OC.menuSpeed * 4, function() {\n\t\t\t\t\tarea.trigger(new $.Event('hide'))\n\t\t\t\t})\n\t\t\t\tarea.removeClass('opened')\n\t\t\t\t$(button).removeClass('opened')\n\t\t\t}\n\n\t\t\t/**\n\t\t\t *\n\t\t\t */\n\t\t\tfunction showArea() {\n\t\t\t\tarea.slideDown(OC.menuSpeed * 4, function() {\n\t\t\t\t\tarea.trigger(new $.Event('show'))\n\t\t\t\t})\n\t\t\t\tarea.addClass('opened')\n\t\t\t\t$(button).addClass('opened')\n\t\t\t\tconst input = $(areaSelector + ' [autofocus]')\n\t\t\t\tif (input.length === 1) {\n\t\t\t\t\tinput.focus()\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// do nothing if the area is animated\n\t\t\tif (!area.is(':animated')) {\n\n\t\t\t\t// button toggles the area\n\t\t\t\tif ($(button).is($(event.target).closest('[data-apps-slide-toggle]'))) {\n\t\t\t\t\tif (area.is(':visible')) {\n\t\t\t\t\t\thideArea()\n\t\t\t\t\t} else {\n\t\t\t\t\t\tshowArea()\n\t\t\t\t\t}\n\n\t\t\t\t\t// all other areas that have not been clicked but are open\n\t\t\t\t\t// should be slid up\n\t\t\t\t} else {\n\t\t\t\t\tconst closest = $(event.target).closest(areaSelector)\n\t\t\t\t\tif (area.is(':visible') && closest[0] !== area[0]) {\n\t\t\t\t\t\thideArea()\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\n\t})\n}\n\nexport default Apps\n","/**\n * @copyright Copyright (c) 2016 Joas Schilling <coding@schilljs.com>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport $ from 'jquery'\nimport { generateOcsUrl } from '@nextcloud/router'\n\nimport OC from '../OC/index'\n\n/**\n * @param {string} method 'post' or 'delete'\n * @param {string} endpoint endpoint\n * @param {object} [options] destructuring object\n * @param {object} [options.data] option data\n * @param {Function} [options.success] success callback\n * @param {Function} [options.error] error callback\n */\nfunction call(method, endpoint, options) {\n\tif ((method === 'post' || method === 'delete') && OC.PasswordConfirmation.requiresPasswordConfirmation()) {\n\t\tOC.PasswordConfirmation.requirePasswordConfirmation(_.bind(call, this, method, endpoint, options))\n\t\treturn\n\t}\n\n\toptions = options || {}\n\t$.ajax({\n\t\ttype: method.toUpperCase(),\n\t\turl: generateOcsUrl('apps/provisioning_api/api/v1/config/apps') + endpoint,\n\t\tdata: options.data || {},\n\t\tsuccess: options.success,\n\t\terror: options.error,\n\t})\n}\n\n/**\n * @param {object} [options] destructuring object\n * @param {Function} [options.success] success callback\n * @since 11.0.0\n */\nexport function getApps(options) {\n\tcall('get', '', options)\n}\n\n/**\n * @param {string} app app id\n * @param {object} [options] destructuring object\n * @param {Function} [options.success] success callback\n * @param {Function} [options.error] error callback\n * @since 11.0.0\n */\nexport function getKeys(app, options) {\n\tcall('get', '/' + app, options)\n}\n\n/**\n * @param {string} app app id\n * @param {string} key key\n * @param {string | Function} defaultValue default value\n * @param {object} [options] destructuring object\n * @param {Function} [options.success] success callback\n * @param {Function} [options.error] error callback\n * @since 11.0.0\n */\nexport function getValue(app, key, defaultValue, options) {\n\toptions = options || {}\n\toptions.data = {\n\t\tdefaultValue,\n\t}\n\n\tcall('get', '/' + app + '/' + key, options)\n}\n\n/**\n * @param {string} app app id\n * @param {string} key key\n * @param {string} value value\n * @param {object} [options] destructuring object\n * @param {Function} [options.success] success callback\n * @param {Function} [options.error] error callback\n * @since 11.0.0\n */\nexport function setValue(app, key, value, options) {\n\toptions = options || {}\n\toptions.data = {\n\t\tvalue,\n\t}\n\n\tcall('post', '/' + app + '/' + key, options)\n}\n\n/**\n * @param {string} app app id\n * @param {string} key key\n * @param {object} [options] destructuring object\n * @param {Function} [options.success] success callback\n * @param {Function} [options.error] error callback\n * @since 11.0.0\n */\nexport function deleteKey(app, key, options) {\n\tcall('delete', '/' + app + '/' + key, options)\n}\n","/**\n * @copyright Copyright (c) 2016 Joas Schilling <coding@schilljs.com>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Joas Schilling <coding@schilljs.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Jörn Friedrich Dreyer <jfd@butonic.de>\n * @author Robin Appelman <robin@icewind.nl>\n * @author Vincent Petry <vincent@nextcloud.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n/* eslint-disable */\n import { getValue, setValue, getApps, getKeys, deleteKey } from '../OCP/appconfig'\n\nexport const appConfig = window.oc_appconfig || {}\n\n/**\n * @namespace\n * @deprecated 16.0.0 Use OCP.AppConfig instead\n */\nexport const AppConfig = {\n\t/**\n\t * @deprecated Use OCP.AppConfig.getValue() instead\n\t */\n\tgetValue: function(app, key, defaultValue, callback) {\n\t\tgetValue(app, key, defaultValue, {\n\t\t\tsuccess: callback\n\t\t})\n\t},\n\n\t/**\n\t * @deprecated Use OCP.AppConfig.setValue() instead\n\t */\n\tsetValue: function(app, key, value) {\n\t\tsetValue(app, key, value)\n\t},\n\n\t/**\n\t * @deprecated Use OCP.AppConfig.getApps() instead\n\t */\n\tgetApps: function(callback) {\n\t\tgetApps({\n\t\t\tsuccess: callback\n\t\t})\n\t},\n\n\t/**\n\t * @deprecated Use OCP.AppConfig.getKeys() instead\n\t */\n\tgetKeys: function(app, callback) {\n\t\tgetKeys(app, {\n\t\t\tsuccess: callback\n\t\t})\n\t},\n\n\t/**\n\t * @deprecated Use OCP.AppConfig.deleteKey() instead\n\t */\n\tdeleteKey: function(app, key) {\n\t\tdeleteKey(app, key)\n\t}\n\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nconst appswebroots = (window._oc_appswebroots !== undefined) ? window._oc_appswebroots : false\n\nexport default appswebroots\n","/**\n * Copyright (c) 2015\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n/* eslint-disable */\nimport _ from 'underscore'\nimport { dav } from 'davclient.js'\n\nconst methodMap = {\n\tcreate: 'POST',\n\tupdate: 'PROPPATCH',\n\tpatch: 'PROPPATCH',\n\tdelete: 'DELETE',\n\tread: 'PROPFIND'\n}\n\n// Throw an error when a URL is needed, and none is supplied.\nfunction urlError() {\n\tthrow new Error('A \"url\" property or function must be specified')\n}\n\n/**\n * Convert a single propfind result to JSON\n *\n * @param {Object} result\n * @param {Object} davProperties properties mapping\n */\nfunction parsePropFindResult(result, davProperties) {\n\tif (_.isArray(result)) {\n\t\treturn _.map(result, function(subResult) {\n\t\t\treturn parsePropFindResult(subResult, davProperties)\n\t\t})\n\t}\n\tvar props = {\n\t\thref: result.href\n\t}\n\n\t_.each(result.propStat, function(propStat) {\n\t\tif (propStat.status !== 'HTTP/1.1 200 OK') {\n\t\t\treturn\n\t\t}\n\n\t\tfor (var key in propStat.properties) {\n\t\t\tvar propKey = key\n\t\t\tif (key in davProperties) {\n\t\t\t\tpropKey = davProperties[key]\n\t\t\t}\n\t\t\tprops[propKey] = propStat.properties[key]\n\t\t}\n\t})\n\n\tif (!props.id) {\n\t\t// parse id from href\n\t\tprops.id = parseIdFromLocation(props.href)\n\t}\n\n\treturn props\n}\n\n/**\n * Parse ID from location\n *\n * @param {string} url url\n * @returns {string} id\n */\nfunction parseIdFromLocation(url) {\n\tvar queryPos = url.indexOf('?')\n\tif (queryPos > 0) {\n\t\turl = url.substr(0, queryPos)\n\t}\n\n\tvar parts = url.split('/')\n\tvar result\n\tdo {\n\t\tresult = parts[parts.length - 1]\n\t\tparts.pop()\n\t\t// note: first result can be empty when there is a trailing slash,\n\t\t// so we take the part before that\n\t} while (!result && parts.length > 0)\n\n\treturn result\n}\n\nfunction isSuccessStatus(status) {\n\treturn status >= 200 && status <= 299\n}\n\nfunction convertModelAttributesToDavProperties(attrs, davProperties) {\n\tvar props = {}\n\tvar key\n\tfor (key in attrs) {\n\t\tvar changedProp = davProperties[key]\n\t\tvar value = attrs[key]\n\t\tif (!changedProp) {\n\t\t\tconsole.warn('No matching DAV property for property \"' + key)\n\t\t\tchangedProp = key\n\t\t}\n\t\tif (_.isBoolean(value) || _.isNumber(value)) {\n\t\t\t// convert to string\n\t\t\tvalue = '' + value\n\t\t}\n\t\tprops[changedProp] = value\n\t}\n\treturn props\n}\n\nfunction callPropFind(client, options, model, headers) {\n\treturn client.propFind(\n\t\toptions.url,\n\t\t_.values(options.davProperties) || [],\n\t\toptions.depth,\n\t\theaders\n\t).then(function(response) {\n\t\tif (isSuccessStatus(response.status)) {\n\t\t\tif (_.isFunction(options.success)) {\n\t\t\t\tvar propsMapping = _.invert(options.davProperties)\n\t\t\t\tvar results = parsePropFindResult(response.body, propsMapping)\n\t\t\t\tif (options.depth > 0) {\n\t\t\t\t\t// discard root entry\n\t\t\t\t\tresults.shift()\n\t\t\t\t}\n\n\t\t\t\toptions.success(results)\n\n\t\t\t}\n\t\t} else if (_.isFunction(options.error)) {\n\t\t\toptions.error(response)\n\t\t}\n\t})\n}\n\nfunction callPropPatch(client, options, model, headers) {\n\treturn client.propPatch(\n\t\toptions.url,\n\t\tconvertModelAttributesToDavProperties(model.changed, options.davProperties),\n\t\theaders\n\t).then(function(result) {\n\t\tif (isSuccessStatus(result.status)) {\n\t\t\tif (_.isFunction(options.success)) {\n\t\t\t\t// pass the object's own values because the server\n\t\t\t\t// does not return the updated model\n\t\t\t\toptions.success(model.toJSON())\n\t\t\t}\n\t\t} else if (_.isFunction(options.error)) {\n\t\t\toptions.error(result)\n\t\t}\n\t})\n\n}\n\nfunction callMkCol(client, options, model, headers) {\n\t// call MKCOL without data, followed by PROPPATCH\n\treturn client.request(\n\t\toptions.type,\n\t\toptions.url,\n\t\theaders,\n\t\tnull\n\t).then(function(result) {\n\t\tif (!isSuccessStatus(result.status)) {\n\t\t\tif (_.isFunction(options.error)) {\n\t\t\t\toptions.error(result)\n\t\t\t}\n\t\t\treturn\n\t\t}\n\n\t\tcallPropPatch(client, options, model, headers)\n\t})\n}\n\nfunction callMethod(client, options, model, headers) {\n\theaders['Content-Type'] = 'application/json'\n\treturn client.request(\n\t\toptions.type,\n\t\toptions.url,\n\t\theaders,\n\t\toptions.data\n\t).then(function(result) {\n\t\tif (!isSuccessStatus(result.status)) {\n\t\t\tif (_.isFunction(options.error)) {\n\t\t\t\toptions.error(result)\n\t\t\t}\n\t\t\treturn\n\t\t}\n\n\t\tif (_.isFunction(options.success)) {\n\t\t\tif (options.type === 'PUT' || options.type === 'POST' || options.type === 'MKCOL') {\n\t\t\t\t// pass the object's own values because the server\n\t\t\t\t// does not return anything\n\t\t\t\tvar responseJson = result.body || model.toJSON()\n\t\t\t\tvar locationHeader = result.xhr.getResponseHeader('Content-Location')\n\t\t\t\tif (options.type === 'POST' && locationHeader) {\n\t\t\t\t\tresponseJson.id = parseIdFromLocation(locationHeader)\n\t\t\t\t}\n\t\t\t\toptions.success(responseJson)\n\t\t\t\treturn\n\t\t\t}\n\t\t\t// if multi-status, parse\n\t\t\tif (result.status === 207) {\n\t\t\t\tvar propsMapping = _.invert(options.davProperties)\n\t\t\t\toptions.success(parsePropFindResult(result.body, propsMapping))\n\t\t\t} else {\n\t\t\t\toptions.success(result.body)\n\t\t\t}\n\t\t}\n\t})\n}\n\nexport const davCall = (options, model) => {\n\tvar client = new dav.Client({\n\t\tbaseUrl: options.url,\n\t\txmlNamespaces: _.extend({\n\t\t\t'DAV:': 'd',\n\t\t\t'http://owncloud.org/ns': 'oc'\n\t\t}, options.xmlNamespaces || {})\n\t})\n\tclient.resolveUrl = function() {\n\t\treturn options.url\n\t}\n\tvar headers = _.extend({\n\t\t'X-Requested-With': 'XMLHttpRequest',\n\t\t'requesttoken': OC.requestToken\n\t}, options.headers)\n\tif (options.type === 'PROPFIND') {\n\t\treturn callPropFind(client, options, model, headers)\n\t} else if (options.type === 'PROPPATCH') {\n\t\treturn callPropPatch(client, options, model, headers)\n\t} else if (options.type === 'MKCOL') {\n\t\treturn callMkCol(client, options, model, headers)\n\t} else {\n\t\treturn callMethod(client, options, model, headers)\n\t}\n}\n\n/**\n * DAV transport\n */\nexport const davSync = Backbone => (method, model, options) => {\n\tvar params = { type: methodMap[method] || method }\n\tvar isCollection = (model instanceof Backbone.Collection)\n\n\tif (method === 'update') {\n\t\t// if a model has an inner collection, it must define an\n\t\t// attribute \"hasInnerCollection\" that evaluates to true\n\t\tif (model.hasInnerCollection) {\n\t\t\t// if the model itself is a Webdav collection, use MKCOL\n\t\t\tparams.type = 'MKCOL'\n\t\t} else if (model.usePUT || (model.collection && model.collection.usePUT)) {\n\t\t\t// use PUT instead of PROPPATCH\n\t\t\tparams.type = 'PUT'\n\t\t}\n\t}\n\n\t// Ensure that we have a URL.\n\tif (!options.url) {\n\t\tparams.url = _.result(model, 'url') || urlError()\n\t}\n\n\t// Ensure that we have the appropriate request data.\n\tif (options.data == null && model && (method === 'create' || method === 'update' || method === 'patch')) {\n\t\tparams.data = JSON.stringify(options.attrs || model.toJSON(options))\n\t}\n\n\t// Don't process data on a non-GET request.\n\tif (params.type !== 'PROPFIND') {\n\t\tparams.processData = false\n\t}\n\n\tif (params.type === 'PROPFIND' || params.type === 'PROPPATCH') {\n\t\tvar davProperties = model.davProperties\n\t\tif (!davProperties && model.model) {\n\t\t\t// use dav properties from model in case of collection\n\t\t\tdavProperties = model.model.prototype.davProperties\n\t\t}\n\t\tif (davProperties) {\n\t\t\tif (_.isFunction(davProperties)) {\n\t\t\t\tparams.davProperties = davProperties.call(model)\n\t\t\t} else {\n\t\t\t\tparams.davProperties = davProperties\n\t\t\t}\n\t\t}\n\n\t\tparams.davProperties = _.extend(params.davProperties || {}, options.davProperties)\n\n\t\tif (_.isUndefined(options.depth)) {\n\t\t\tif (isCollection) {\n\t\t\t\toptions.depth = 1\n\t\t\t} else {\n\t\t\t\toptions.depth = 0\n\t\t\t}\n\t\t}\n\t}\n\n\t// Pass along `textStatus` and `errorThrown` from jQuery.\n\tvar error = options.error\n\toptions.error = function(xhr, textStatus, errorThrown) {\n\t\toptions.textStatus = textStatus\n\t\toptions.errorThrown = errorThrown\n\t\tif (error) {\n\t\t\terror.call(options.context, xhr, textStatus, errorThrown)\n\t\t}\n\t}\n\n\t// Make the request, allowing the user to override any Ajax options.\n\tvar xhr = options.xhr = Backbone.davCall(_.extend(params, options), model)\n\tmodel.trigger('request', model, xhr, options)\n\treturn xhr\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport VendorBackbone from 'backbone'\nimport { davCall, davSync } from './backbone-webdav'\n\nconst Backbone = VendorBackbone.noConflict()\n\n// Patch Backbone for DAV\nObject.assign(Backbone, {\n\tdavCall,\n\tdavSync: davSync(Backbone),\n})\n\nexport default Backbone\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nconst config = window._oc_config || {}\n\nexport default config\n","/**\n * @copyright 2017 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n/* eslint-disable */\nimport _ from 'underscore'\nimport $ from 'jquery'\nimport { Collection, Model, View } from 'backbone'\n\nimport OC from './index'\n\n/**\n * @class Contact\n */\nconst Contact = Model.extend({\n\tdefaults: {\n\t\tfullName: '',\n\t\tlastMessage: '',\n\t\tactions: [],\n\t\thasOneAction: false,\n\t\thasTwoActions: false,\n\t\thasManyActions: false\n\t},\n\n\t/**\n\t * @returns {undefined}\n\t */\n\tinitialize: function() {\n\t\t// Add needed property for easier template rendering\n\t\tif (this.get('actions').length === 0) {\n\t\t\tthis.set('hasOneAction', true)\n\t\t} else if (this.get('actions').length === 1) {\n\t\t\tthis.set('hasTwoActions', true)\n\t\t\tthis.set('secondAction', this.get('actions')[0])\n\t\t} else {\n\t\t\tthis.set('hasManyActions', true)\n\t\t}\n\n\t\tconst fullName = this.get('fullName')\n\t\tif (this.get('avatar') && fullName) {\n\t\t\tthis.set('avatarLabel', t('core', 'Avatar of {fullName}', { fullName }))\n\t\t}\n\t}\n})\n\n/**\n * @class ContactCollection\n * @private\n */\nconst ContactCollection = Collection.extend({\n\tmodel: Contact\n})\n\n/**\n * @class ContactsListView\n * @private\n */\nconst ContactsListView = View.extend({\n\n\t/** @type {ContactCollection} */\n\t_collection: undefined,\n\n\t/** @type {array} */\n\t_subViews: [],\n\n\t/**\n\t * @param {object} options\n\t * @returns {undefined}\n\t */\n\tinitialize: function(options) {\n\t\tthis._collection = options.collection\n\t},\n\n\t/**\n\t * @returns {self}\n\t */\n\trender: function() {\n\t\tvar self = this\n\t\tself.$el.html('')\n\t\tself._subViews = []\n\n\t\tself._collection.forEach(function(contact) {\n\t\t\tvar item = new ContactsListItemView({\n\t\t\t\tmodel: contact\n\t\t\t})\n\t\t\titem.render()\n\t\t\tself.$el.append(item.$el)\n\t\t\titem.on('toggle:actionmenu', self._onChildActionMenuToggle, self)\n\t\t\tself._subViews.push(item)\n\t\t})\n\n\t\treturn self\n\t},\n\n\t/**\n\t * Event callback to propagate opening (another) entry's action menu\n\t *\n\t * @param {type} $src\n\t * @returns {undefined}\n\t */\n\t_onChildActionMenuToggle: function($src) {\n\t\tthis._subViews.forEach(function(view) {\n\t\t\tview.trigger('parent:toggle:actionmenu', $src)\n\t\t})\n\t}\n})\n\n/**\n * @class ContactsListItemView\n * @private\n */\nconst ContactsListItemView = View.extend({\n\n\t/** @type {string} */\n\tclassName: 'contact',\n\n\t/** @type {undefined|function} */\n\t_template: undefined,\n\n\t/** @type {Contact} */\n\t_model: undefined,\n\n\t/** @type {boolean} */\n\t_actionMenuShown: false,\n\n\tevents: {\n\t\t'click .icon-more': '_onToggleActionsMenu'\n\t},\n\n\tcontactTemplate: require('./contactsmenu/contact.handlebars'),\n\n\t/**\n\t * @param {object} data\n\t * @returns {undefined}\n\t */\n\ttemplate: function(data) {\n\t\treturn this.contactTemplate(data)\n\t},\n\n\t/**\n\t * @param {object} options\n\t * @returns {undefined}\n\t */\n\tinitialize: function(options) {\n\t\tthis._model = options.model\n\t\tthis.on('parent:toggle:actionmenu', this._onOtherActionMenuOpened, this)\n\t},\n\n\t/**\n\t * @returns {self}\n\t */\n\trender: function() {\n\t\tthis.$el.html(this.template({\n\t\t\tcontact: this._model.toJSON()\n\t\t}))\n\t\tthis.delegateEvents()\n\n\t\t// Show placeholder if no avatar is available (avatar is rendered as img, not div)\n\t\tthis.$('div.avatar').imageplaceholder(this._model.get('fullName'))\n\n\t\t// Show tooltip for top action\n\t\tthis.$('.top-action').tooltip({ placement: 'left' })\n\t\t// Show tooltip for second action\n\t\tthis.$('.second-action').tooltip({ placement: 'left' })\n\n\t\treturn this\n\t},\n\n\t/**\n\t * Toggle the visibility of the action popover menu\n\t *\n\t * @private\n\t * @returns {undefined}\n\t */\n\t_onToggleActionsMenu: function() {\n\t\tthis._actionMenuShown = !this._actionMenuShown\n\t\tif (this._actionMenuShown) {\n\t\t\tthis.$('.menu').show()\n\t\t} else {\n\t\t\tthis.$('.menu').hide()\n\t\t}\n\t\tthis.trigger('toggle:actionmenu', this.$el)\n\t},\n\n\t/**\n\t * @private\n\t * @argument {jQuery} $src\n\t * @returns {undefined}\n\t */\n\t_onOtherActionMenuOpened: function($src) {\n\t\tif (this.$el.is($src)) {\n\t\t\t// Ignore\n\t\t\treturn\n\t\t}\n\t\tthis._actionMenuShown = false\n\t\tthis.$('.menu').hide()\n\t}\n})\n\n/**\n * @class ContactsMenuView\n * @private\n */\nconst ContactsMenuView = View.extend({\n\n\t/** @type {undefined|function} */\n\t_loadingTemplate: undefined,\n\n\t/** @type {undefined|function} */\n\t_errorTemplate: undefined,\n\n\t/** @type {undefined|function} */\n\t_contentTemplate: undefined,\n\n\t/** @type {undefined|function} */\n\t_contactsTemplate: undefined,\n\n\t/** @type {undefined|ContactCollection} */\n\t_contacts: undefined,\n\n\t/** @type {string} */\n\t_searchTerm: '',\n\n\tevents: {\n\t\t'input #contactsmenu-search': '_onSearch'\n\t},\n\n\ttemplates: {\n\t\tloading: require('./contactsmenu/loading.handlebars'),\n\t\terror: require('./contactsmenu/error.handlebars'),\n\t\tmenu: require('./contactsmenu/menu.handlebars'),\n\t\tlist: require('./contactsmenu/list.handlebars')\n\t},\n\n\t/**\n\t * @returns {undefined}\n\t */\n\t_onSearch: _.debounce(function(e) {\n\t\tvar searchTerm = this.$('#contactsmenu-search').val()\n\t\t// IE11 triggers an 'input' event after the view has been rendered\n\t\t// resulting in an endless loading loop. To prevent this, we remember\n\t\t// the last search term to savely ignore some events\n\t\t// See https://github.com/nextcloud/server/issues/5281\n\t\tif (searchTerm !== this._searchTerm) {\n\t\t\tthis.trigger('search', this.$('#contactsmenu-search').val())\n\t\t\tthis._searchTerm = searchTerm\n\t\t}\n\t}, 700),\n\n\t/**\n\t * @param {object} data\n\t * @returns {string}\n\t */\n\tloadingTemplate: function(data) {\n\t\treturn this.templates.loading(data)\n\t},\n\n\t/**\n\t * @param {object} data\n\t * @returns {string}\n\t */\n\terrorTemplate: function(data) {\n\t\treturn this.templates.error(\n\t\t\t_.extend({\n\t\t\t\tcouldNotLoadText: t('core', 'Could not load your contacts')\n\t\t\t}, data)\n\t\t)\n\t},\n\n\t/**\n\t * @param {object} data\n\t * @returns {string}\n\t */\n\tcontentTemplate: function(data) {\n\t\treturn this.templates.menu(\n\t\t\t_.extend({\n\t\t\t\tsearchContactsText: t('core', 'Search contacts …')\n\t\t\t}, data)\n\t\t)\n\t},\n\n\t/**\n\t * @param {object} data\n\t * @returns {string}\n\t */\n\tcontactsTemplate: function(data) {\n\t\treturn this.templates.list(\n\t\t\t_.extend({\n\t\t\t\tnoContactsFoundText: t('core', 'No contacts found'),\n\t\t\t\tshowAllContactsText: t('core', 'Show all contacts …'),\n\t\t\t\tcontactsAppMgmtText: t('core', 'Install the Contacts app')\n\t\t\t}, data)\n\t\t)\n\t},\n\n\t/**\n\t * @param {object} options\n\t * @returns {undefined}\n\t */\n\tinitialize: function(options) {\n\t\tthis.options = options\n\t},\n\n\t/**\n\t * @param {string} text\n\t * @returns {undefined}\n\t */\n\tshowLoading: function(text) {\n\t\tthis.render()\n\t\tthis._contacts = undefined\n\t\tthis.$('.content').html(this.loadingTemplate({\n\t\t\tloadingText: text\n\t\t}))\n\t},\n\n\t/**\n\t * @returns {undefined}\n\t */\n\tshowError: function() {\n\t\tthis.render()\n\t\tthis._contacts = undefined\n\t\tthis.$('.content').html(this.errorTemplate())\n\t},\n\n\t/**\n\t * @param {object} viewData\n\t * @param {string} searchTerm\n\t * @returns {undefined}\n\t */\n\tshowContacts: function(viewData, searchTerm) {\n\t\tthis._contacts = viewData.contacts\n\t\tthis.render({\n\t\t\tcontacts: viewData.contacts\n\t\t})\n\n\t\tvar list = new ContactsListView({\n\t\t\tcollection: viewData.contacts\n\t\t})\n\t\tlist.render()\n\t\tthis.$('.content').html(this.contactsTemplate({\n\t\t\tcontacts: viewData.contacts,\n\t\t\tsearchTerm: searchTerm,\n\t\t\tcontactsAppEnabled: viewData.contactsAppEnabled,\n\t\t\tcontactsAppURL: OC.generateUrl('/apps/contacts'),\n\t\t\tcanInstallApp: OC.isUserAdmin(),\n\t\t\tcontactsAppMgmtURL: OC.generateUrl('/settings/apps/social/contacts')\n\t\t}))\n\t\tthis.$('#contactsmenu-contacts').html(list.$el)\n\t},\n\n\t/**\n\t * @param {object} data\n\t * @returns {self}\n\t */\n\trender: function(data) {\n\t\tvar searchVal = this.$('#contactsmenu-search').val()\n\t\tthis.$el.html(this.contentTemplate(data))\n\n\t\t// Focus search\n\t\tthis.$('#contactsmenu-search').val(searchVal)\n\t\tthis.$('#contactsmenu-search').focus()\n\t\treturn this\n\t}\n\n})\n\n/**\n * @param {Object} options\n * @param {string} options.el\n * @class ContactsMenu\n * @memberOf OC\n */\nconst ContactsMenu = function(options) {\n\tthis.initialize(options)\n}\n\nContactsMenu.prototype = {\n\t/** @type {string} */\n\t$el: undefined,\n\n\t/** @type {ContactsMenuView} */\n\t_view: undefined,\n\n\t/** @type {Promise} */\n\t_contactsPromise: undefined,\n\n\t/**\n\t * @param {Object} options\n\t * @param {string} options.el - the selector of the element to render the menu in\n\t * @returns {undefined}\n\t */\n\tinitialize: function(options) {\n\t\tthis.$el = $(options.el)\n\n\t\tthis._view = new ContactsMenuView({\n\t\t\tel: this.$el,\n\t\t})\n\n\t\tthis._view.on('search', function(searchTerm) {\n\t\t\tthis.loadContacts(searchTerm)\n\t\t}, this)\n\t},\n\n\t/**\n\t * @private\n\t * @param {string|undefined} searchTerm\n\t * @returns {Promise}\n\t */\n\t_getContacts: function(searchTerm) {\n\t\tvar url = OC.generateUrl('/contactsmenu/contacts')\n\t\treturn Promise.resolve($.ajax(url, {\n\t\t\tmethod: 'POST',\n\t\t\tdata: {\n\t\t\t\tfilter: searchTerm\n\t\t\t}\n\t\t}))\n\t},\n\n\t/**\n\t * @param {string|undefined} searchTerm\n\t * @returns {undefined}\n\t */\n\tloadContacts: function(searchTerm) {\n\t\tvar self = this\n\n\t\tif (!self._contactsPromise) {\n\t\t\tself._contactsPromise = self._getContacts(searchTerm)\n\t\t}\n\n\t\tif (_.isUndefined(searchTerm) || searchTerm === '') {\n\t\t\tself._view.showLoading(t('core', 'Loading your contacts …'))\n\t\t} else {\n\t\t\tself._view.showLoading(t('core', 'Looking for {term} …', {\n\t\t\t\tterm: searchTerm\n\t\t\t}))\n\t\t}\n\t\treturn self._contactsPromise.then(function(data) {\n\t\t\t// Convert contact entries to Backbone collection\n\t\t\tdata.contacts = new ContactCollection(data.contacts)\n\n\t\t\tself._view.showContacts(data, searchTerm)\n\t\t}, function(e) {\n\t\t\tself._view.showError()\n\t\t\tconsole.error('There was an error loading your contacts', e)\n\t\t}).then(function() {\n\t\t\t// Delete promise, so that contacts are fetched again when the\n\t\t\t// menu is opened the next time.\n\t\t\tdelete self._contactsPromise\n\t\t}).catch(console.error.bind(this))\n\t}\n}\n\nexport default ContactsMenu\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Joas Schilling <coding@schilljs.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nconst rawUid = document\n\t.getElementsByTagName('head')[0]\n\t.getAttribute('data-user')\nconst displayName = document\n\t.getElementsByTagName('head')[0]\n\t.getAttribute('data-user-displayname')\n\nexport const currentUser = rawUid !== undefined ? rawUid : false\n\nexport const getCurrentUser = () => {\n\treturn {\n\t\tuid: currentUser,\n\t\tdisplayName,\n\t}\n}\n","/**\n * @copyright 2020 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nexport default class Search {\n\n\t/**\n\t * @deprecated 20.0.0, will be removed in Nextcloud 22\n\t */\n\tconstructor() {\n\t\tconsole.warn('OCA.Search is deprecated. Please use the unified search API instead')\n\t}\n\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport Search from './search'\n\n/**\n * Namespace for apps\n *\n * @namespace OCA\n */\nexport default {\n\t/**\n\t * @deprecated 20.0.0, will be removed in Nextcloud 22\n\t */\n\tSearch,\n}\n","/**\n * @copyright 2022 Christopher Ng <chrng8@gmail.com>\n *\n * @author Christopher Ng <chrng8@gmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n/**\n * Return whether the DOM event is an accessible mouse or keyboard element activation\n *\n * @param {Event} event DOM event\n *\n * @return {boolean}\n */\nexport const isA11yActivation = (event) => {\n\tif (event.type === 'click') {\n\t\treturn true\n\t}\n\tif (event.type === 'keydown' && event.key === 'Enter') {\n\t\treturn true\n\t}\n\treturn false\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n * @copyright Copyright (c) 2019 Gary Kim <gary@garykim.dev>\n *\n * @author Bartek Przybylski <bart.p.pl@gmail.com>\n * @author Christopher Schäpers <kondou@ts.unde.re>\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Daniel Calviño Sánchez <danxuliu@gmail.com>\n * @author Daniel Kesselberg <mail@danielkesselberg.de>\n * @author Florian Schunk <florian.schunk@rwth-aachen.de>\n * @author Gary Kim <gary@garykim.dev>\n * @author Hendrik Leppelsack <hendrik@leppelsack.de>\n * @author Jan-Christoph Borchardt <hey@jancborchardt.net>\n * @author Joas Schilling <coding@schilljs.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Jörn Friedrich Dreyer <jfd@butonic.de>\n * @author Julius Härtl <jus@bitgrid.net>\n * @author Loïc Hermann <loic.hermann@sciam.fr>\n * @author Morris Jobke <hey@morrisjobke.de>\n * @author Olivier Paroz <github@oparoz.com>\n * @author Robin Appelman <robin@icewind.nl>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n * @author Sujith Haridasan <Sujith_Haridasan@mentor.com>\n * @author Thomas Citharel <nextcloud@tcit.fr>\n * @author Thomas Müller <thomas.mueller@tmit.eu>\n * @author Thomas Tanghus <thomas@tanghus.net>\n * @author Vincent Petry <vincent@nextcloud.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n/* eslint-disable */\nimport _ from 'underscore'\nimport $ from 'jquery'\n\nimport OC from './index'\nimport OCA from '../OCA/index'\nimport { isA11yActivation } from '../Util/a11y'\n\n/**\n * this class to ease the usage of jquery dialogs\n */\nconst Dialogs = {\n\t// dialog button types\n\tYES_NO_BUTTONS: 70,\n\tOK_BUTTONS: 71,\n\n\tFILEPICKER_TYPE_CHOOSE: 1,\n\tFILEPICKER_TYPE_MOVE: 2,\n\tFILEPICKER_TYPE_COPY: 3,\n\tFILEPICKER_TYPE_COPY_MOVE: 4,\n\tFILEPICKER_TYPE_CUSTOM: 5,\n\n\t// used to name each dialog\n\tdialogsCounter: 0,\n\n\t/**\n\t * displays alert dialog\n\t * @param {string} text content of dialog\n\t * @param {string} title dialog title\n\t * @param {function} callback which will be triggered when user presses OK\n\t * @param {boolean} [modal] make the dialog modal\n\t */\n\talert: function(text, title, callback, modal) {\n\t\tthis.message(\n\t\t\ttext,\n\t\t\ttitle,\n\t\t\t'alert',\n\t\t\tDialogs.OK_BUTTON,\n\t\t\tcallback,\n\t\t\tmodal\n\t\t)\n\t},\n\t/**\n\t * displays info dialog\n\t * @param {string} text content of dialog\n\t * @param {string} title dialog title\n\t * @param {function} callback which will be triggered when user presses OK\n\t * @param {boolean} [modal] make the dialog modal\n\t */\n\tinfo: function(text, title, callback, modal) {\n\t\tthis.message(text, title, 'info', Dialogs.OK_BUTTON, callback, modal)\n\t},\n\n\t/**\n\t * displays confirmation dialog\n\t * @param {string} text content of dialog\n\t * @param {string} title dialog title\n\t * @param {function} callback which will be triggered when user presses OK (true or false would be passed to callback respectively)\n\t * @param {boolean} [modal] make the dialog modal\n\t * @returns {Promise}\n\t */\n\tconfirm: function(text, title, callback, modal) {\n\t\treturn this.message(\n\t\t\ttext,\n\t\t\ttitle,\n\t\t\t'notice',\n\t\t\tDialogs.YES_NO_BUTTONS,\n\t\t\tcallback,\n\t\t\tmodal\n\t\t)\n\t},\n\t/**\n\t * displays confirmation dialog\n\t * @param {string} text content of dialog\n\t * @param {string} title dialog title\n\t * @param {(number|{type: number, confirm: string, cancel: string, confirmClasses: string})} buttons text content of buttons\n\t * @param {function} callback which will be triggered when user presses OK (true or false would be passed to callback respectively)\n\t * @param {boolean} [modal] make the dialog modal\n\t * @returns {Promise}\n\t */\n\tconfirmDestructive: function(text, title, buttons, callback, modal) {\n\t\treturn this.message(\n\t\t\ttext,\n\t\t\ttitle,\n\t\t\t'none',\n\t\t\tbuttons,\n\t\t\tcallback,\n\t\t\tmodal === undefined ? true : modal\n\t\t)\n\t},\n\t/**\n\t * displays confirmation dialog\n\t * @param {string} text content of dialog\n\t * @param {string} title dialog title\n\t * @param {function} callback which will be triggered when user presses OK (true or false would be passed to callback respectively)\n\t * @param {boolean} [modal] make the dialog modal\n\t * @returns {Promise}\n\t */\n\tconfirmHtml: function(text, title, callback, modal) {\n\t\treturn this.message(\n\t\t\ttext,\n\t\t\ttitle,\n\t\t\t'notice',\n\t\t\tDialogs.YES_NO_BUTTONS,\n\t\t\tcallback,\n\t\t\tmodal,\n\t\t\ttrue\n\t\t)\n\t},\n\t/**\n\t * displays prompt dialog\n\t * @param {string} text content of dialog\n\t * @param {string} title dialog title\n\t * @param {function} callback which will be triggered when user presses OK (true or false would be passed to callback respectively)\n\t * @param {boolean} [modal] make the dialog modal\n\t * @param {string} name name of the input field\n\t * @param {boolean} password whether the input should be a password input\n\t * @returns {Promise}\n\t */\n\tprompt: function(text, title, callback, modal, name, password) {\n\t\treturn $.when(this._getMessageTemplate()).then(function($tmpl) {\n\t\t\tvar dialogName = 'oc-dialog-' + Dialogs.dialogsCounter + '-content'\n\t\t\tvar dialogId = '#' + dialogName\n\t\t\tvar $dlg = $tmpl.octemplate({\n\t\t\t\tdialog_name: dialogName,\n\t\t\t\ttitle: title,\n\t\t\t\tmessage: text,\n\t\t\t\ttype: 'notice'\n\t\t\t})\n\t\t\tvar input = $('<input/>')\n\t\t\tinput.attr('type', password ? 'password' : 'text').attr('id', dialogName + '-input').attr('placeholder', name)\n\t\t\tvar label = $('<label/>').attr('for', dialogName + '-input').text(name + ': ')\n\t\t\t$dlg.append(label)\n\t\t\t$dlg.append(input)\n\t\t\tif (modal === undefined) {\n\t\t\t\tmodal = false\n\t\t\t}\n\t\t\t$('body').append($dlg)\n\n\t\t\t// wrap callback in _.once():\n\t\t\t// only call callback once and not twice (button handler and close\n\t\t\t// event) but call it for the close event, if ESC or the x is hit\n\t\t\tif (callback !== undefined) {\n\t\t\t\tcallback = _.once(callback)\n\t\t\t}\n\n\t\t\tvar buttonlist = [{\n\t\t\t\ttext: t('core', 'No'),\n\t\t\t\tclick: function() {\n\t\t\t\t\tif (callback !== undefined) {\n\t\t\t\t\t\t// eslint-disable-next-line standard/no-callback-literal\n\t\t\t\t\t\tcallback(false, input.val())\n\t\t\t\t\t}\n\t\t\t\t\t$(dialogId).ocdialog('close')\n\t\t\t\t}\n\t\t\t}, {\n\t\t\t\ttext: t('core', 'Yes'),\n\t\t\t\tclick: function() {\n\t\t\t\t\tif (callback !== undefined) {\n\t\t\t\t\t\t// eslint-disable-next-line standard/no-callback-literal\n\t\t\t\t\t\tcallback(true, input.val())\n\t\t\t\t\t}\n\t\t\t\t\t$(dialogId).ocdialog('close')\n\t\t\t\t},\n\t\t\t\tdefaultButton: true\n\t\t\t}]\n\n\t\t\t$(dialogId).ocdialog({\n\t\t\t\tcloseOnEscape: true,\n\t\t\t\tmodal: modal,\n\t\t\t\tbuttons: buttonlist,\n\t\t\t\tclose: function() {\n\t\t\t\t\t// callback is already fired if Yes/No is clicked directly\n\t\t\t\t\tif (callback !== undefined) {\n\t\t\t\t\t\t// eslint-disable-next-line standard/no-callback-literal\n\t\t\t\t\t\tcallback(false, input.val())\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t})\n\t\t\tinput.focus()\n\t\t\tDialogs.dialogsCounter++\n\t\t})\n\t},\n\t/**\n\t * show a file picker to pick a file from\n\t *\n\t * In order to pick several types of mime types they need to be passed as an\n\t * array of strings.\n\t *\n\t * When no mime type filter is given only files can be selected. In order to\n\t * be able to select both files and folders \"['*', 'httpd/unix-directory']\"\n\t * should be used instead.\n\t *\n\t * @param {string} title dialog title\n\t * @param {function} callback which will be triggered when user presses Choose\n\t * @param {boolean} [multiselect] whether it should be possible to select multiple files\n\t * @param {string[]} [mimetypeFilter] mimetype to filter by - directories will always be included\n\t * @param {boolean} [modal] make the dialog modal\n\t * @param {string} [type] Type of file picker : Choose, copy, move, copy and move\n\t * @param {string} [path] path to the folder that the the file can be picket from\n\t * @param {Object} [options] additonal options that need to be set\n\t * @param {Function} [options.filter] filter function for advanced filtering\n\t */\n\tfilepicker: function(title, callback, multiselect, mimetypeFilter, modal, type, path, options) {\n\t\tvar self = this\n\n\t\tthis.filepicker.sortField = 'name'\n\t\tthis.filepicker.sortOrder = 'asc'\n\t\t// avoid opening the picker twice\n\t\tif (this.filepicker.loading) {\n\t\t\treturn\n\t\t}\n\n\t\tif (type === undefined) {\n\t\t\ttype = this.FILEPICKER_TYPE_CHOOSE\n\t\t}\n\n\t\tvar emptyText = t('core', 'No files in here')\n\t\tvar newText = t('files', 'New folder')\n\t\tif (type === this.FILEPICKER_TYPE_COPY || type === this.FILEPICKER_TYPE_MOVE || type === this.FILEPICKER_TYPE_COPY_MOVE) {\n\t\t\temptyText = t('core', 'No more subfolders in here')\n\t\t}\n\n\t\tthis.filepicker.loading = true\n\t\tthis.filepicker.filesClient = (OCA.Sharing && OCA.Sharing.PublicApp && OCA.Sharing.PublicApp.fileList) ? OCA.Sharing.PublicApp.fileList.filesClient : OC.Files.getClient()\n\n\t\tthis.filelist = null\n\t\tpath = path || ''\n\t\toptions = Object.assign({\n\t\t\tallowDirectoryChooser: false\n\t\t}, options)\n\n\t\t$.when(this._getFilePickerTemplate()).then(function($tmpl) {\n\t\t\tself.filepicker.loading = false\n\t\t\tvar dialogName = 'oc-dialog-filepicker-content'\n\t\t\tif (self.$filePicker) {\n\t\t\t\tself.$filePicker.ocdialog('close')\n\t\t\t}\n\n\t\t\tif (mimetypeFilter === undefined || mimetypeFilter === null) {\n\t\t\t\tmimetypeFilter = []\n\t\t\t}\n\t\t\tif (typeof (mimetypeFilter) === 'string') {\n\t\t\t\tmimetypeFilter = [mimetypeFilter]\n\t\t\t}\n\n\t\t\tself.$filePicker = $tmpl.octemplate({\n\t\t\t\tdialog_name: dialogName,\n\t\t\t\ttitle: title,\n\t\t\t\temptytext: emptyText,\n\t\t\t\tnewtext: newText,\n\t\t\t\tnameCol: t('core', 'Name'),\n\t\t\t\tsizeCol: t('core', 'Size'),\n\t\t\t\tmodifiedCol: t('core', 'Modified')\n\t\t\t}).data('path', path).data('multiselect', multiselect).data('mimetype', mimetypeFilter).data('allowDirectoryChooser', options.allowDirectoryChooser)\n\t\t\tif (typeof(options.filter) === 'function') {\n\t\t\t\tself.$filePicker.data('filter', options.filter)\n\t\t\t}\n\n\t\t\tif (modal === undefined) {\n\t\t\t\tmodal = false\n\t\t\t}\n\t\t\tif (multiselect === undefined) {\n\t\t\t\tmultiselect = false\n\t\t\t}\n\n\t\t\t$(options?.target ?? 'body').prepend(self.$filePicker)\n\n\t\t\tself.$showGridView = $('button#picker-showgridview')\n\t\t\tself.$showGridView.on('click keydown', function(event) {\n\t\t\t\tif (isA11yActivation(event)) {\n\t\t\t\t\tself._onGridviewChange()\n\t\t\t\t}\n\t\t\t})\n\t\t\tself._getGridSettings()\n\n\t\t\tvar newButton = self.$filePicker.find('.actions.creatable .button-add')\n\t\t\tif (type === self.FILEPICKER_TYPE_CHOOSE && !options.allowDirectoryChooser) {\n\t\t\t\tself.$filePicker.find('.actions.creatable').hide()\n\t\t\t}\n\t\t\tnewButton.on('focus', function() {\n\t\t\t\tself.$filePicker.ocdialog('setEnterCallback', function(event) {\n\t\t\t\t\tevent.stopImmediatePropagation()\n\t\t\t\t\tevent.preventDefault()\n\t\t\t\t\tnewButton.click()\n\t\t\t\t})\n\t\t\t})\n\t\t\tnewButton.on('blur', function() {\n\t\t\t\tself.$filePicker.ocdialog('unsetEnterCallback')\n\t\t\t})\n\n\t\t\tOC.registerMenu(newButton, self.$filePicker.find('.menu'), function() {\n\t\t\t\t$input.tooltip('hide')\n\t\t\t\t$input.focus()\n\t\t\t\tself.$filePicker.ocdialog('setEnterCallback', function(event) {\n\t\t\t\t\tevent.stopImmediatePropagation()\n\t\t\t\t\tevent.preventDefault()\n\t\t\t\t\tself.$filePicker.submit()\n\t\t\t\t})\n\t\t\t\tvar newName = $input.val()\n\t\t\t\tvar lastPos = newName.lastIndexOf('.')\n\t\t\t\tif (lastPos === -1) {\n\t\t\t\t\tlastPos = newName.length\n\t\t\t\t}\n\t\t\t\t$input.selectRange(0, lastPos)\n\t\t\t})\n\t\t\tvar $form = self.$filePicker.find('.filenameform')\n\t\t\tvar $input = $form.find('input[type=\\'text\\']')\n\t\t\tvar $submit = $form.find('input[type=\\'submit\\']')\n\t\t\t$input.on('keydown', function(event) {\n\t\t\t\tif (isA11yActivation(event)) {\n\t\t\t\t\tevent.stopImmediatePropagation()\n\t\t\t\t\tevent.preventDefault()\n\t\t\t\t\t$form.submit()\n\t\t\t\t}\n\t\t\t})\n\t\t\t$submit.on('click', function(event) {\n\t\t\t\tevent.stopImmediatePropagation()\n\t\t\t\tevent.preventDefault()\n\t\t\t\t$form.submit()\n\t\t\t})\n\n\t\t\t/**\n\t\t\t * Checks whether the given file name is valid.\n\t\t\t *\n\t\t\t * @param name file name to check\n\t\t\t * @return true if the file name is valid.\n\t\t\t * @throws a string exception with an error message if\n\t\t\t * the file name is not valid\n\t\t\t *\n\t\t\t * NOTE: This function is duplicated in the files app:\n\t\t\t * https://github.com/nextcloud/server/blob/b9bc2417e7a8dc81feb0abe20359bedaf864f790/apps/files/js/files.js#L127-L148\n\t\t\t */\n\t\t\tvar isFileNameValid = function (name) {\n\t\t\t\tvar trimmedName = name.trim();\n\t\t\t\tif (trimmedName === '.' || trimmedName === '..')\n\t\t\t\t{\n\t\t\t\t\tthrow t('files', '\"{name}\" is an invalid file name.', {name: name})\n\t\t\t\t} else if (trimmedName.length === 0) {\n\t\t\t\t\tthrow t('files', 'File name cannot be empty.')\n\t\t\t\t} else if (trimmedName.indexOf('/') !== -1) {\n\t\t\t\t\tthrow t('files', '\"/\" is not allowed inside a file name.')\n\t\t\t\t} else if (!!(trimmedName.match(OC.config.blacklist_files_regex))) {\n\t\t\t\t\tthrow t('files', '\"{name}\" is not an allowed filetype', {name: name})\n\t\t\t\t}\n\n\t\t\t\treturn true\n\t\t\t}\n\n\t\t\tvar checkInput = function() {\n\t\t\t\tvar filename = $input.val()\n\t\t\t\ttry {\n\t\t\t\t\tif (!isFileNameValid(filename)) {\n\t\t\t\t\t\t// isFileNameValid(filename) throws an exception itself\n\t\t\t\t\t} else if (self.filelist.find(function(file) {\n\t\t\t\t\t\treturn file.name === this\n\t\t\t\t\t}, filename)) {\n\t\t\t\t\t\tthrow t('files', '{newName} already exists', { newName: filename }, undefined, {\n\t\t\t\t\t\t\tescape: false\n\t\t\t\t\t\t})\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn true\n\t\t\t\t\t}\n\t\t\t\t} catch (error) {\n\t\t\t\t\t$input.attr('title', error)\n\t\t\t\t\t$input.tooltip({\n\t\t\t\t\t\tplacement: 'right',\n\t\t\t\t\t\ttrigger: 'manual',\n\t\t\t\t\t\t'container': '.newFolderMenu'\n\t\t\t\t\t})\n\t\t\t\t\t$input.tooltip('_fixTitle')\n\t\t\t\t\t$input.tooltip('show')\n\t\t\t\t\t$input.addClass('error')\n\t\t\t\t}\n\t\t\t\treturn false\n\t\t\t}\n\n\t\t\t$form.on('submit', function(event) {\n\t\t\t\tevent.stopPropagation()\n\t\t\t\tevent.preventDefault()\n\n\t\t\t\tif (checkInput()) {\n\t\t\t\t\tvar newname = $input.val()\n\t\t\t\t\tself.filepicker.filesClient.createDirectory(self.$filePicker.data('path') + \"/\" + newname).always(function (status) {\n\t\t\t\t\t\tself._fillFilePicker(self.$filePicker.data('path') + \"/\" + newname, type)\n\t\t\t\t\t})\n\t\t\t\t\tOC.hideMenus()\n\t\t\t\t\tself.$filePicker.ocdialog('unsetEnterCallback')\n\t\t\t\t\tself.$filePicker.click()\n\t\t\t\t\t$input.val(newText)\n\t\t\t\t}\n\t\t\t})\n\t\t\t$input.on('input', function(event) {\n\t\t\t\t$input.tooltip('hide')\n\t\t\t})\n\n\t\t\tself.$filePicker.ready(function() {\n\t\t\t\tself.$fileListHeader = self.$filePicker.find('.filelist thead tr')\n\t\t\t\tself.$filelist = self.$filePicker.find('.filelist tbody')\n\t\t\t\tself.$filelistContainer = self.$filePicker.find('.filelist-container')\n\t\t\t\tself.$dirTree = self.$filePicker.find('.dirtree')\n\t\t\t\tself.$dirTree.on('click keydown', 'div:not(:last-child)', self, function(event) {\n\t\t\t\t\tif (isA11yActivation(event)) {\n\t\t\t\t\t\tself._handleTreeListSelect(event, type)\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\tself.$filelist.on('click keydown', 'tr', function(event) {\n\t\t\t\t\tif (isA11yActivation(event)) {\n\t\t\t\t\t\tself._handlePickerClick(event, $(this), type)\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\tself.$fileListHeader.on('click keydown', 'a', function(event) {\n\t\t\t\t\tif (isA11yActivation(event)) {\n\t\t\t\t\t\tvar dir = self.$filePicker.data('path')\n\t\t\t\t\t\tself.filepicker.sortField = $(event.currentTarget).data('sort')\n\t\t\t\t\t\tself.filepicker.sortOrder = self.filepicker.sortOrder === 'asc' ? 'desc' : 'asc'\n\t\t\t\t\t\tself._fillFilePicker(dir, type)\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\tself._fillFilePicker(path, type)\n\t\t\t})\n\n\t\t\t// build buttons\n\t\t\tvar functionToCall = function(returnType) {\n\t\t\t\tif (callback !== undefined) {\n\t\t\t\t\tvar datapath\n\t\t\t\t\tif (multiselect === true) {\n\t\t\t\t\t\tdatapath = []\n\t\t\t\t\t\tself.$filelist.find('tr.filepicker_element_selected').each(function(index, element) {\n\t\t\t\t\t\t\tdatapath.push(self.$filePicker.data('path') + '/' + $(element).data('entryname'))\n\t\t\t\t\t\t})\n\t\t\t\t\t} else {\n\t\t\t\t\t\tdatapath = self.$filePicker.data('path')\n\t\t\t\t\t\tvar selectedName = self.$filelist.find('tr.filepicker_element_selected').data('entryname')\n\t\t\t\t\t\tif (selectedName) {\n\t\t\t\t\t\t\tdatapath += '/' + selectedName\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tcallback(datapath, returnType)\n\t\t\t\t\tself.$filePicker.ocdialog('close')\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tvar chooseCallback = function() {\n\t\t\t\tfunctionToCall(Dialogs.FILEPICKER_TYPE_CHOOSE)\n\t\t\t}\n\n\t\t\tvar copyCallback = function() {\n\t\t\t\tfunctionToCall(Dialogs.FILEPICKER_TYPE_COPY)\n\t\t\t}\n\n\t\t\tvar moveCallback = function() {\n\t\t\t\tfunctionToCall(Dialogs.FILEPICKER_TYPE_MOVE)\n\t\t\t}\n\n\t\t\tvar buttonlist = []\n\t\t\tif (type === Dialogs.FILEPICKER_TYPE_CHOOSE) {\n\t\t\t\tbuttonlist.push({\n\t\t\t\t\ttext: t('core', 'Choose'),\n\t\t\t\t\tclick: chooseCallback,\n\t\t\t\t\tdefaultButton: true\n\t\t\t\t})\n\t\t\t} else if (type === Dialogs.FILEPICKER_TYPE_CUSTOM) {\n\t\t\t\toptions.buttons.forEach(function(button) {\n\t\t\t\t\tbuttonlist.push({\n\t\t\t\t\t\ttext: button.text,\n\t\t\t\t\t\tclick: function() {\n\t\t\t\t\t\t\tfunctionToCall(button.type)\n\t\t\t\t\t\t},\n\t\t\t\t\t\tdefaultButton: button.defaultButton\n\t\t\t\t\t})\n\t\t\t\t})\n\t\t\t} else {\n\t\t\t\tif (type === Dialogs.FILEPICKER_TYPE_COPY || type === Dialogs.FILEPICKER_TYPE_COPY_MOVE) {\n\t\t\t\t\tbuttonlist.push({\n\t\t\t\t\t\ttext: t('core', 'Copy'),\n\t\t\t\t\t\tclick: copyCallback,\n\t\t\t\t\t\tdefaultButton: false\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t\tif (type === Dialogs.FILEPICKER_TYPE_MOVE || type === Dialogs.FILEPICKER_TYPE_COPY_MOVE) {\n\t\t\t\t\tbuttonlist.push({\n\t\t\t\t\t\ttext: t('core', 'Move'),\n\t\t\t\t\t\tclick: moveCallback,\n\t\t\t\t\t\tdefaultButton: true\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tself.$filePicker.ocdialog({\n\t\t\t\tcloseOnEscape: true,\n\t\t\t\t// max-width of 600\n\t\t\t\twidth: 600,\n\t\t\t\theight: 500,\n\t\t\t\tmodal: modal,\n\t\t\t\tbuttons: buttonlist,\n\t\t\t\tstyle: {\n\t\t\t\t\tbuttons: 'aside'\n\t\t\t\t},\n\t\t\t\tclose: function() {\n\t\t\t\t\ttry {\n\t\t\t\t\t\t$(this).ocdialog('destroy').remove()\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t}\n\t\t\t\t\tself.$filePicker = null\n\t\t\t\t}\n\t\t\t})\n\n\t\t\t// We can access primary class only from oc-dialog.\n\t\t\t// Hence this is one of the approach to get the choose button.\n\t\t\tvar getOcDialog = self.$filePicker.closest('.oc-dialog')\n\t\t\tvar buttonEnableDisable = getOcDialog.find('.primary')\n\t\t\tif (self.$filePicker.data('mimetype').indexOf('httpd/unix-directory') !== -1 || self.$filePicker.data('allowDirectoryChooser')) {\n\t\t\t\tbuttonEnableDisable.prop('disabled', false)\n\t\t\t} else {\n\t\t\t\tbuttonEnableDisable.prop('disabled', true)\n\t\t\t}\n\t\t})\n\t\t\t.fail(function(status, error) {\n\t\t\t\t// If the method is called while navigating away\n\t\t\t\t// from the page, it is probably not needed ;)\n\t\t\t\tself.filepicker.loading = false\n\t\t\t\tif (status !== 0) {\n\t\t\t\t\talert(t('core', 'Error loading file picker template: {error}', { error: error }))\n\t\t\t\t}\n\t\t\t})\n\t},\n\t/**\n\t * Displays raw dialog\n\t * You better use a wrapper instead ...\n\t */\n\tmessage: function(content, title, dialogType, buttons, callback, modal, allowHtml) {\n\t\treturn $.when(this._getMessageTemplate()).then(function($tmpl) {\n\t\t\tvar dialogName = 'oc-dialog-' + Dialogs.dialogsCounter + '-content'\n\t\t\tvar dialogId = '#' + dialogName\n\t\t\tvar $dlg = $tmpl.octemplate({\n\t\t\t\tdialog_name: dialogName,\n\t\t\t\ttitle: title,\n\t\t\t\tmessage: content,\n\t\t\t\ttype: dialogType\n\t\t\t}, allowHtml ? { escapeFunction: '' } : {})\n\t\t\tif (modal === undefined) {\n\t\t\t\tmodal = false\n\t\t\t}\n\t\t\t$('body').append($dlg)\n\t\t\tvar buttonlist = []\n\t\t\tswitch (buttons) {\n\t\t\tcase Dialogs.YES_NO_BUTTONS:\n\t\t\t\tbuttonlist = [{\n\t\t\t\t\ttext: t('core', 'No'),\n\t\t\t\t\tclick: function() {\n\t\t\t\t\t\tif (callback !== undefined) {\n\t\t\t\t\t\t\tcallback(false)\n\t\t\t\t\t\t}\n\t\t\t\t\t\t$(dialogId).ocdialog('close')\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\ttext: t('core', 'Yes'),\n\t\t\t\t\tclick: function() {\n\t\t\t\t\t\tif (callback !== undefined) {\n\t\t\t\t\t\t\tcallback(true)\n\t\t\t\t\t\t}\n\t\t\t\t\t\t$(dialogId).ocdialog('close')\n\t\t\t\t\t},\n\t\t\t\t\tdefaultButton: true\n\t\t\t\t}]\n\t\t\t\tbreak\n\t\t\tcase Dialogs.OK_BUTTON:\n\t\t\t\tvar functionToCall = function() {\n\t\t\t\t\t$(dialogId).ocdialog('close')\n\t\t\t\t\tif (callback !== undefined) {\n\t\t\t\t\t\tcallback()\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbuttonlist[0] = {\n\t\t\t\t\ttext: t('core', 'OK'),\n\t\t\t\t\tclick: functionToCall,\n\t\t\t\t\tdefaultButton: true\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\tdefault:\n\t\t\t\tif (typeof(buttons) === 'object') {\n\t\t\t\t\tswitch (buttons.type) {\n\t\t\t\t\t\tcase Dialogs.YES_NO_BUTTONS:\n\t\t\t\t\t\t\tbuttonlist = [{\n\t\t\t\t\t\t\t\ttext: buttons.cancel || t('core', 'No'),\n\t\t\t\t\t\t\t\tclick: function() {\n\t\t\t\t\t\t\t\t\tif (callback !== undefined) {\n\t\t\t\t\t\t\t\t\t\tcallback(false)\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t$(dialogId).ocdialog('close')\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\ttext: buttons.confirm || t('core', 'Yes'),\n\t\t\t\t\t\t\t\t\tclick: function() {\n\t\t\t\t\t\t\t\t\t\tif (callback !== undefined) {\n\t\t\t\t\t\t\t\t\t\t\tcallback(true)\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t$(dialogId).ocdialog('close')\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tdefaultButton: true,\n\t\t\t\t\t\t\t\t\tclasses: buttons.confirmClasses\n\t\t\t\t\t\t\t\t}]\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t}\n\n\t\t\t$(dialogId).ocdialog({\n\t\t\t\tcloseOnEscape: true,\n\t\t\t\tcloseCallback: () => { callback && callback(false) },\n\t\t\t\tmodal: modal,\n\t\t\t\tbuttons: buttonlist\n\t\t\t})\n\t\t\tDialogs.dialogsCounter++\n\t\t})\n\t\t\t.fail(function(status, error) {\n\t\t\t\t// If the method is called while navigating away from\n\t\t\t\t// the page, we still want to deliver the message.\n\t\t\t\tif (status === 0) {\n\t\t\t\t\talert(title + ': ' + content)\n\t\t\t\t} else {\n\t\t\t\t\talert(t('core', 'Error loading message template: {error}', { error: error }))\n\t\t\t\t}\n\t\t\t})\n\t},\n\t_fileexistsshown: false,\n\t/**\n\t * Displays file exists dialog\n\t * @param {object} data upload object\n\t * @param {object} original file with name, size and mtime\n\t * @param {object} replacement file with name, size and mtime\n\t * @param {object} controller with onCancel, onSkip, onReplace and onRename methods\n\t * @returns {Promise} jquery promise that resolves after the dialog template was loaded\n\t */\n\tfileexists: function(data, original, replacement, controller) {\n\t\tvar self = this\n\t\tvar dialogDeferred = new $.Deferred()\n\n\t\tvar getCroppedPreview = function(file) {\n\t\t\tvar deferred = new $.Deferred()\n\t\t\t// Only process image files.\n\t\t\tvar type = file.type && file.type.split('/').shift()\n\t\t\tif (window.FileReader && type === 'image') {\n\t\t\t\tvar reader = new FileReader()\n\t\t\t\treader.onload = function(e) {\n\t\t\t\t\tvar blob = new Blob([e.target.result])\n\t\t\t\t\twindow.URL = window.URL || window.webkitURL\n\t\t\t\t\tvar originalUrl = window.URL.createObjectURL(blob)\n\t\t\t\t\tvar image = new Image()\n\t\t\t\t\timage.src = originalUrl\n\t\t\t\t\timage.onload = function() {\n\t\t\t\t\t\tvar url = crop(image)\n\t\t\t\t\t\tdeferred.resolve(url)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treader.readAsArrayBuffer(file)\n\t\t\t} else {\n\t\t\t\tdeferred.reject()\n\t\t\t}\n\t\t\treturn deferred\n\t\t}\n\n\t\tvar crop = function(img) {\n\t\t\tvar canvas = document.createElement('canvas')\n\t\t\tvar targetSize = 96\n\t\t\tvar width = img.width\n\t\t\tvar height = img.height\n\t\t\tvar x; var y; var size\n\n\t\t\t// Calculate the width and height, constraining the proportions\n\t\t\tif (width > height) {\n\t\t\t\ty = 0\n\t\t\t\tx = (width - height) / 2\n\t\t\t} else {\n\t\t\t\ty = (height - width) / 2\n\t\t\t\tx = 0\n\t\t\t}\n\t\t\tsize = Math.min(width, height)\n\n\t\t\t// Set canvas size to the cropped area\n\t\t\tcanvas.width = size\n\t\t\tcanvas.height = size\n\t\t\tvar ctx = canvas.getContext('2d')\n\t\t\tctx.drawImage(img, x, y, size, size, 0, 0, size, size)\n\n\t\t\t// Resize the canvas to match the destination (right size uses 96px)\n\t\t\tresampleHermite(canvas, size, size, targetSize, targetSize)\n\n\t\t\treturn canvas.toDataURL('image/png', 0.7)\n\t\t}\n\n\t\t/**\n\t\t * Fast image resize/resample using Hermite filter with JavaScript.\n\t\t *\n\t\t * @author: ViliusL\n\t\t *\n\t\t * @param {*} canvas\n\t\t * @param {number} W\n\t\t * @param {number} H\n\t\t * @param {number} W2\n\t\t * @param {number} H2\n\t\t */\n\t\tvar resampleHermite = function(canvas, W, H, W2, H2) {\n\t\t\tW2 = Math.round(W2)\n\t\t\tH2 = Math.round(H2)\n\t\t\tvar img = canvas.getContext('2d').getImageData(0, 0, W, H)\n\t\t\tvar img2 = canvas.getContext('2d').getImageData(0, 0, W2, H2)\n\t\t\tvar data = img.data\n\t\t\tvar data2 = img2.data\n\t\t\tvar ratio_w = W / W2\n\t\t\tvar ratio_h = H / H2\n\t\t\tvar ratio_w_half = Math.ceil(ratio_w / 2)\n\t\t\tvar ratio_h_half = Math.ceil(ratio_h / 2)\n\n\t\t\tfor (var j = 0; j < H2; j++) {\n\t\t\t\tfor (var i = 0; i < W2; i++) {\n\t\t\t\t\tvar x2 = (i + j * W2) * 4\n\t\t\t\t\tvar weight = 0\n\t\t\t\t\tvar weights = 0\n\t\t\t\t\tvar weights_alpha = 0\n\t\t\t\t\tvar gx_r = 0\n\t\t\t\t\tvar gx_g = 0\n\t\t\t\t\tvar gx_b = 0\n\t\t\t\t\tvar gx_a = 0\n\t\t\t\t\tvar center_y = (j + 0.5) * ratio_h\n\t\t\t\t\tfor (var yy = Math.floor(j * ratio_h); yy < (j + 1) * ratio_h; yy++) {\n\t\t\t\t\t\tvar dy = Math.abs(center_y - (yy + 0.5)) / ratio_h_half\n\t\t\t\t\t\tvar center_x = (i + 0.5) * ratio_w\n\t\t\t\t\t\tvar w0 = dy * dy // pre-calc part of w\n\t\t\t\t\t\tfor (var xx = Math.floor(i * ratio_w); xx < (i + 1) * ratio_w; xx++) {\n\t\t\t\t\t\t\tvar dx = Math.abs(center_x - (xx + 0.5)) / ratio_w_half\n\t\t\t\t\t\t\tvar w = Math.sqrt(w0 + dx * dx)\n\t\t\t\t\t\t\tif (w >= -1 && w <= 1) {\n\t\t\t\t\t\t\t\t// hermite filter\n\t\t\t\t\t\t\t\tweight = 2 * w * w * w - 3 * w * w + 1\n\t\t\t\t\t\t\t\tif (weight > 0) {\n\t\t\t\t\t\t\t\t\tdx = 4 * (xx + yy * W)\n\t\t\t\t\t\t\t\t\t// alpha\n\t\t\t\t\t\t\t\t\tgx_a += weight * data[dx + 3]\n\t\t\t\t\t\t\t\t\tweights_alpha += weight\n\t\t\t\t\t\t\t\t\t// colors\n\t\t\t\t\t\t\t\t\tif (data[dx + 3] < 255) { weight = weight * data[dx + 3] / 250 }\n\t\t\t\t\t\t\t\t\tgx_r += weight * data[dx]\n\t\t\t\t\t\t\t\t\tgx_g += weight * data[dx + 1]\n\t\t\t\t\t\t\t\t\tgx_b += weight * data[dx + 2]\n\t\t\t\t\t\t\t\t\tweights += weight\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tdata2[x2] = gx_r / weights\n\t\t\t\t\tdata2[x2 + 1] = gx_g / weights\n\t\t\t\t\tdata2[x2 + 2] = gx_b / weights\n\t\t\t\t\tdata2[x2 + 3] = gx_a / weights_alpha\n\t\t\t\t}\n\t\t\t}\n\t\t\tcanvas.getContext('2d').clearRect(0, 0, Math.max(W, W2), Math.max(H, H2))\n\t\t\tcanvas.width = W2\n\t\t\tcanvas.height = H2\n\t\t\tcanvas.getContext('2d').putImageData(img2, 0, 0)\n\t\t}\n\n\t\tvar addConflict = function($conflicts, original, replacement) {\n\n\t\t\tvar $conflict = $conflicts.find('.template').clone().removeClass('template').addClass('conflict')\n\t\t\tvar $originalDiv = $conflict.find('.original')\n\t\t\tvar $replacementDiv = $conflict.find('.replacement')\n\n\t\t\t$conflict.data('data', data)\n\n\t\t\t$conflict.find('.filename').text(original.name)\n\t\t\t$originalDiv.find('.size').text(OC.Util.humanFileSize(original.size))\n\t\t\t$originalDiv.find('.mtime').text(OC.Util.formatDate(original.mtime))\n\t\t\t// ie sucks\n\t\t\tif (replacement.size && replacement.lastModified) {\n\t\t\t\t$replacementDiv.find('.size').text(OC.Util.humanFileSize(replacement.size))\n\t\t\t\t$replacementDiv.find('.mtime').text(OC.Util.formatDate(replacement.lastModified))\n\t\t\t}\n\t\t\tvar path = original.directory + '/' + original.name\n\t\t\tvar urlSpec = {\n\t\t\t\tfile: path,\n\t\t\t\tx: 96,\n\t\t\t\ty: 96,\n\t\t\t\tc: original.etag,\n\t\t\t\tforceIcon: 0\n\t\t\t}\n\t\t\tvar previewpath = Files.generatePreviewUrl(urlSpec)\n\t\t\t// Escaping single quotes\n\t\t\tpreviewpath = previewpath.replace(/'/g, '%27')\n\t\t\t$originalDiv.find('.icon').css({ 'background-image': \"url('\" + previewpath + \"')\" })\n\t\t\tgetCroppedPreview(replacement).then(\n\t\t\t\tfunction(path) {\n\t\t\t\t\t$replacementDiv.find('.icon').css('background-image', 'url(' + path + ')')\n\t\t\t\t}, function() {\n\t\t\t\t\tpath = OC.MimeType.getIconUrl(replacement.type)\n\t\t\t\t\t$replacementDiv.find('.icon').css('background-image', 'url(' + path + ')')\n\t\t\t\t}\n\t\t\t)\n\t\t\t// connect checkboxes with labels\n\t\t\tvar checkboxId = $conflicts.find('.conflict').length\n\t\t\t$originalDiv.find('input:checkbox').attr('id', 'checkbox_original_' + checkboxId)\n\t\t\t$replacementDiv.find('input:checkbox').attr('id', 'checkbox_replacement_' + checkboxId)\n\n\t\t\t$conflicts.append($conflict)\n\n\t\t\t// set more recent mtime bold\n\t\t\t// ie sucks\n\t\t\tif (replacement.lastModified > original.mtime) {\n\t\t\t\t$replacementDiv.find('.mtime').css('font-weight', 'bold')\n\t\t\t} else if (replacement.lastModified < original.mtime) {\n\t\t\t\t$originalDiv.find('.mtime').css('font-weight', 'bold')\n\t\t\t} else {\n\t\t\t\t// TODO add to same mtime collection?\n\t\t\t}\n\n\t\t\t// set bigger size bold\n\t\t\tif (replacement.size && replacement.size > original.size) {\n\t\t\t\t$replacementDiv.find('.size').css('font-weight', 'bold')\n\t\t\t} else if (replacement.size && replacement.size < original.size) {\n\t\t\t\t$originalDiv.find('.size').css('font-weight', 'bold')\n\t\t\t} else {\n\t\t\t\t// TODO add to same size collection?\n\t\t\t}\n\n\t\t\t// TODO show skip action for files with same size and mtime in bottom row\n\n\t\t\t// always keep readonly files\n\n\t\t\tif (original.status === 'readonly') {\n\t\t\t\t$originalDiv\n\t\t\t\t\t.addClass('readonly')\n\t\t\t\t\t.find('input[type=\"checkbox\"]')\n\t\t\t\t\t.prop('checked', true)\n\t\t\t\t\t.prop('disabled', true)\n\t\t\t\t$originalDiv.find('.message')\n\t\t\t\t\t.text(t('core', 'read-only'))\n\t\t\t}\n\t\t}\n\t\t// var selection = controller.getSelection(data.originalFiles);\n\t\t// if (selection.defaultAction) {\n\t\t//\tcontroller[selection.defaultAction](data);\n\t\t// } else {\n\t\tvar dialogName = 'oc-dialog-fileexists-content'\n\t\tvar dialogId = '#' + dialogName\n\t\tif (this._fileexistsshown) {\n\t\t\t// add conflict\n\n\t\t\tvar $conflicts = $(dialogId + ' .conflicts')\n\t\t\taddConflict($conflicts, original, replacement)\n\n\t\t\tvar count = $(dialogId + ' .conflict').length\n\t\t\tvar title = n('core',\n\t\t\t\t'{count} file conflict',\n\t\t\t\t'{count} file conflicts',\n\t\t\t\tcount,\n\t\t\t\t{ count: count }\n\t\t\t)\n\t\t\t$(dialogId).parent().children('.oc-dialog-title').text(title)\n\n\t\t\t// recalculate dimensions\n\t\t\t$(window).trigger('resize')\n\t\t\tdialogDeferred.resolve()\n\t\t} else {\n\t\t\t// create dialog\n\t\t\tthis._fileexistsshown = true\n\t\t\t$.when(this._getFileExistsTemplate()).then(function($tmpl) {\n\t\t\t\tvar title = t('core', 'One file conflict')\n\t\t\t\tvar $dlg = $tmpl.octemplate({\n\t\t\t\t\tdialog_name: dialogName,\n\t\t\t\t\ttitle: title,\n\t\t\t\t\ttype: 'fileexists',\n\n\t\t\t\t\tallnewfiles: t('core', 'New Files'),\n\t\t\t\t\tallexistingfiles: t('core', 'Already existing files'),\n\n\t\t\t\t\twhy: t('core', 'Which files do you want to keep?'),\n\t\t\t\t\twhat: t('core', 'If you select both versions, the copied file will have a number added to its name.')\n\t\t\t\t})\n\t\t\t\t$('body').append($dlg)\n\n\t\t\t\tif (original && replacement) {\n\t\t\t\t\tvar $conflicts = $dlg.find('.conflicts')\n\t\t\t\t\taddConflict($conflicts, original, replacement)\n\t\t\t\t}\n\n\t\t\t\tvar buttonlist = [{\n\t\t\t\t\ttext: t('core', 'Cancel'),\n\t\t\t\t\tclasses: 'cancel',\n\t\t\t\t\tclick: function() {\n\t\t\t\t\t\tif (typeof controller.onCancel !== 'undefined') {\n\t\t\t\t\t\t\tcontroller.onCancel(data)\n\t\t\t\t\t\t}\n\t\t\t\t\t\t$(dialogId).ocdialog('close')\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\ttext: t('core', 'Continue'),\n\t\t\t\t\tclasses: 'continue',\n\t\t\t\t\tclick: function() {\n\t\t\t\t\t\tif (typeof controller.onContinue !== 'undefined') {\n\t\t\t\t\t\t\tcontroller.onContinue($(dialogId + ' .conflict'))\n\t\t\t\t\t\t}\n\t\t\t\t\t\t$(dialogId).ocdialog('close')\n\t\t\t\t\t}\n\t\t\t\t}]\n\n\t\t\t\t$(dialogId).ocdialog({\n\t\t\t\t\twidth: 500,\n\t\t\t\t\tcloseOnEscape: true,\n\t\t\t\t\tmodal: true,\n\t\t\t\t\tbuttons: buttonlist,\n\t\t\t\t\tcloseButton: null,\n\t\t\t\t\tclose: function() {\n\t\t\t\t\t\tself._fileexistsshown = false\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t$(this).ocdialog('destroy').remove()\n\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\t// ignore\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t})\n\n\t\t\t\t$(dialogId).css('height', 'auto')\n\n\t\t\t\tvar $primaryButton = $dlg.closest('.oc-dialog').find('button.continue')\n\t\t\t\t$primaryButton.prop('disabled', true)\n\n\t\t\t\tfunction updatePrimaryButton() {\n\t\t\t\t\tvar checkedCount = $dlg.find('.conflicts .checkbox:checked').length\n\t\t\t\t\t$primaryButton.prop('disabled', checkedCount === 0)\n\t\t\t\t}\n\n\t\t\t\t// add checkbox toggling actions\n\t\t\t\t$(dialogId).find('.allnewfiles').on('click', function() {\n\t\t\t\t\tvar $checkboxes = $(dialogId).find('.conflict .replacement input[type=\"checkbox\"]')\n\t\t\t\t\t$checkboxes.prop('checked', $(this).prop('checked'))\n\t\t\t\t})\n\t\t\t\t$(dialogId).find('.allexistingfiles').on('click', function() {\n\t\t\t\t\tvar $checkboxes = $(dialogId).find('.conflict .original:not(.readonly) input[type=\"checkbox\"]')\n\t\t\t\t\t$checkboxes.prop('checked', $(this).prop('checked'))\n\t\t\t\t})\n\t\t\t\t$(dialogId).find('.conflicts').on('click', '.replacement,.original:not(.readonly)', function() {\n\t\t\t\t\tvar $checkbox = $(this).find('input[type=\"checkbox\"]')\n\t\t\t\t\t$checkbox.prop('checked', !$checkbox.prop('checked'))\n\t\t\t\t})\n\t\t\t\t$(dialogId).find('.conflicts').on('click', '.replacement input[type=\"checkbox\"],.original:not(.readonly) input[type=\"checkbox\"]', function() {\n\t\t\t\t\tvar $checkbox = $(this)\n\t\t\t\t\t$checkbox.prop('checked', !$checkbox.prop('checked'))\n\t\t\t\t})\n\n\t\t\t\t// update counters\n\t\t\t\t$(dialogId).on('click', '.replacement,.allnewfiles', function() {\n\t\t\t\t\tvar count = $(dialogId).find('.conflict .replacement input[type=\"checkbox\"]:checked').length\n\t\t\t\t\tif (count === $(dialogId + ' .conflict').length) {\n\t\t\t\t\t\t$(dialogId).find('.allnewfiles').prop('checked', true)\n\t\t\t\t\t\t$(dialogId).find('.allnewfiles + .count').text(t('core', '(all selected)'))\n\t\t\t\t\t} else if (count > 0) {\n\t\t\t\t\t\t$(dialogId).find('.allnewfiles').prop('checked', false)\n\t\t\t\t\t\t$(dialogId).find('.allnewfiles + .count').text(t('core', '({count} selected)', { count: count }))\n\t\t\t\t\t} else {\n\t\t\t\t\t\t$(dialogId).find('.allnewfiles').prop('checked', false)\n\t\t\t\t\t\t$(dialogId).find('.allnewfiles + .count').text('')\n\t\t\t\t\t}\n\t\t\t\t\tupdatePrimaryButton()\n\t\t\t\t})\n\t\t\t\t$(dialogId).on('click', '.original,.allexistingfiles', function() {\n\t\t\t\t\tvar count = $(dialogId).find('.conflict .original input[type=\"checkbox\"]:checked').length\n\t\t\t\t\tif (count === $(dialogId + ' .conflict').length) {\n\t\t\t\t\t\t$(dialogId).find('.allexistingfiles').prop('checked', true)\n\t\t\t\t\t\t$(dialogId).find('.allexistingfiles + .count').text(t('core', '(all selected)'))\n\t\t\t\t\t} else if (count > 0) {\n\t\t\t\t\t\t$(dialogId).find('.allexistingfiles').prop('checked', false)\n\t\t\t\t\t\t$(dialogId).find('.allexistingfiles + .count')\n\t\t\t\t\t\t\t.text(t('core', '({count} selected)', { count: count }))\n\t\t\t\t\t} else {\n\t\t\t\t\t\t$(dialogId).find('.allexistingfiles').prop('checked', false)\n\t\t\t\t\t\t$(dialogId).find('.allexistingfiles + .count').text('')\n\t\t\t\t\t}\n\t\t\t\t\tupdatePrimaryButton()\n\t\t\t\t})\n\n\t\t\t\tdialogDeferred.resolve()\n\t\t\t})\n\t\t\t\t.fail(function() {\n\t\t\t\t\tdialogDeferred.reject()\n\t\t\t\t\talert(t('core', 'Error loading file exists template'))\n\t\t\t\t})\n\t\t}\n\t\t// }\n\t\treturn dialogDeferred.promise()\n\t},\n\t// get the gridview setting and set the input accordingly\n\t_getGridSettings: function() {\n\t\tconst self = this\n\t\t$.get(OC.generateUrl('/apps/files/api/v1/showgridview'), function(response) {\n\t\t\tself.$showGridView\n\t\t\t\t.removeClass('icon-toggle-filelist icon-toggle-pictures')\n\t\t\t\t.addClass(response.gridview ? 'icon-toggle-filelist' : 'icon-toggle-pictures')\n\t\t\tself.$showGridView.attr(\n\t\t\t\t'aria-label',\n\t\t\t\tresponse.gridview ? t('files', 'Show list view') : t('files', 'Show grid view'),\n\t\t\t)\n\t\t\t$('.list-container').toggleClass('view-grid', response.gridview)\n\t\t})\n\t},\n\t_onGridviewChange: function() {\n\t\tconst isGridView = this.$showGridView.hasClass('icon-toggle-filelist')\n\t\t// only save state if user is logged in\n\t\tif (OC.currentUser) {\n\t\t\t$.post(OC.generateUrl('/apps/files/api/v1/showgridview'), { show: !isGridView })\n\t\t}\n\t\tthis.$showGridView\n\t\t\t.removeClass('icon-toggle-filelist icon-toggle-pictures')\n\t\t\t.addClass(isGridView ? 'icon-toggle-pictures' : 'icon-toggle-filelist')\n\t\tthis.$showGridView.attr(\n\t\t\t'aria-label',\n\t\t\tisGridView ? t('files', 'Show grid view') : t('files', 'Show list view'),\n\t\t)\n\t\tthis.$filePicker.find('.list-container').toggleClass('view-grid', !isGridView)\n\t},\n\t_getFilePickerTemplate: function() {\n\t\tvar defer = $.Deferred()\n\t\tif (!this.$filePickerTemplate) {\n\t\t\tvar self = this\n\t\t\t$.get(OC.filePath('core', 'templates', 'filepicker.html'), function(tmpl) {\n\t\t\t\tself.$filePickerTemplate = $(tmpl)\n\t\t\t\tself.$listTmpl = self.$filePickerTemplate.find('.filelist tbody tr:first-child').detach()\n\t\t\t\tdefer.resolve(self.$filePickerTemplate)\n\t\t\t})\n\t\t\t\t.fail(function(jqXHR, textStatus, errorThrown) {\n\t\t\t\t\tdefer.reject(jqXHR.status, errorThrown)\n\t\t\t\t})\n\t\t} else {\n\t\t\tdefer.resolve(this.$filePickerTemplate)\n\t\t}\n\t\treturn defer.promise()\n\t},\n\t_getMessageTemplate: function() {\n\t\tvar defer = $.Deferred()\n\t\tif (!this.$messageTemplate) {\n\t\t\tvar self = this\n\t\t\t$.get(OC.filePath('core', 'templates', 'message.html'), function(tmpl) {\n\t\t\t\tself.$messageTemplate = $(tmpl)\n\t\t\t\tdefer.resolve(self.$messageTemplate)\n\t\t\t})\n\t\t\t\t.fail(function(jqXHR, textStatus, errorThrown) {\n\t\t\t\t\tdefer.reject(jqXHR.status, errorThrown)\n\t\t\t\t})\n\t\t} else {\n\t\t\tdefer.resolve(this.$messageTemplate)\n\t\t}\n\t\treturn defer.promise()\n\t},\n\t_getFileExistsTemplate: function() {\n\t\tvar defer = $.Deferred()\n\t\tif (!this.$fileexistsTemplate) {\n\t\t\tvar self = this\n\t\t\t$.get(OC.filePath('files', 'templates', 'fileexists.html'), function(tmpl) {\n\t\t\t\tself.$fileexistsTemplate = $(tmpl)\n\t\t\t\tdefer.resolve(self.$fileexistsTemplate)\n\t\t\t})\n\t\t\t\t.fail(function() {\n\t\t\t\t\tdefer.reject()\n\t\t\t\t})\n\t\t} else {\n\t\t\tdefer.resolve(this.$fileexistsTemplate)\n\t\t}\n\t\treturn defer.promise()\n\t},\n\n\t/**\n\t * fills the filepicker with files\n\t */\n\t_fillFilePicker: async function(dir, type) {\n\t\tvar self = this\n\t\tthis.$filelist.empty()\n\t\tthis.$filePicker.find('.emptycontent').hide()\n\t\tthis.$filelistContainer.addClass('icon-loading')\n\t\tthis.$filePicker.data('path', dir)\n\t\tvar filter = this.$filePicker.data('mimetype')\n\t\tvar advancedFilter = this.$filePicker.data('filter')\n\t\tif (typeof (filter) === 'string') {\n\t\t\tfilter = [filter]\n\t\t}\n\t\tself.$fileListHeader.find('.sort-indicator').addClass('hidden').removeClass('icon-triangle-n').removeClass('icon-triangle-s')\n\t\tself.$fileListHeader.find('[data-sort=' + self.filepicker.sortField + '] .sort-indicator').removeClass('hidden')\n\t\tif (self.filepicker.sortOrder === 'asc') {\n\t\t\tself.$fileListHeader.find('[data-sort=' + self.filepicker.sortField + '] .sort-indicator').addClass('icon-triangle-n')\n\t\t} else {\n\t\t\tself.$fileListHeader.find('[data-sort=' + self.filepicker.sortField + '] .sort-indicator').addClass('icon-triangle-s')\n\t\t}\n\n\t\t// Wrap within a method because a promise cannot return multiple values\n\t\t// But the client impleemntation still does it...\n\t\tvar getFolderContents = async function(dir) {\n\t\t\treturn self.filepicker.filesClient.getFolderContents(dir)\n\t\t\t\t.then((status, files) => {\n\t\t\t\t\treturn files\n\t\t\t\t})\n\t\t}\n\n\t\ttry {\n\t\t\tvar files = await getFolderContents(dir)\n\t\t} catch (error) {\n\t\t\t// fallback to root if requested dir is non-existent\n\t\t\tconsole.error('Requested path does not exists, falling back to root')\n\t\t\tvar files = await getFolderContents('/')\n\t\t\tthis.$filePicker.data('path', '/')\n\t\t\tthis._changeButtonsText(type, '')\n\t\t}\n\n\t\tself.filelist = files\n\t\tif (filter && filter.length > 0 && filter.indexOf('*') === -1) {\n\t\t\tfiles = files.filter(function(file) {\n\t\t\t\treturn file.type === 'dir' || filter.indexOf(file.mimetype) !== -1\n\t\t\t})\n\t\t}\n\n\t\tif (advancedFilter) {\n\t\t\tfiles = files.filter(advancedFilter)\n\t\t}\n\n\t\t// Check if the showHidden input field exist and if it exist follow it\n\t\t// Otherwise just show the hidden files\n\t\tconst showHiddenInput = document.getElementById('showHiddenFiles')\n\t\tconst showHidden = showHiddenInput === null || showHiddenInput.value === \"1\"\n\t\tif (!showHidden) {\n\t\t\tfiles = files.filter(function(file) {\n\t\t\t\treturn !file.name.startsWith('.')\n\t\t\t})\n\t\t}\n\n\t\tvar Comparators = {\n\t\t\tname: function(fileInfo1, fileInfo2) {\n\t\t\t\tif (fileInfo1.type === 'dir' && fileInfo2.type !== 'dir') {\n\t\t\t\t\treturn -1\n\t\t\t\t}\n\t\t\t\tif (fileInfo1.type !== 'dir' && fileInfo2.type === 'dir') {\n\t\t\t\t\treturn 1\n\t\t\t\t}\n\t\t\t\treturn OC.Util.naturalSortCompare(fileInfo1.name, fileInfo2.name)\n\t\t\t},\n\t\t\tsize: function(fileInfo1, fileInfo2) {\n\t\t\t\treturn fileInfo1.size - fileInfo2.size\n\t\t\t},\n\t\t\tmtime: function(fileInfo1, fileInfo2) {\n\t\t\t\treturn fileInfo1.mtime - fileInfo2.mtime\n\t\t\t}\n\t\t}\n\t\tvar comparator = Comparators[self.filepicker.sortField] || Comparators.name\n\t\tfiles = files.sort(function(file1, file2) {\n\t\t\tvar isFavorite = function(fileInfo) {\n\t\t\t\treturn fileInfo.tags && fileInfo.tags.indexOf(OC.TAG_FAVORITE) >= 0\n\t\t\t}\n\n\t\t\tif (isFavorite(file1) && !isFavorite(file2)) {\n\t\t\t\treturn -1\n\t\t\t} else if (!isFavorite(file1) && isFavorite(file2)) {\n\t\t\t\treturn 1\n\t\t\t}\n\n\t\t\treturn self.filepicker.sortOrder === 'asc' ? comparator(file1, file2) : -comparator(file1, file2)\n\t\t})\n\n\t\tself._fillSlug()\n\n\t\tif (files.length === 0) {\n\t\t\tself.$filePicker.find('.emptycontent').show()\n\t\t\tself.$fileListHeader.hide()\n\t\t} else {\n\t\t\tself.$filePicker.find('.emptycontent').hide()\n\t\t\tself.$fileListHeader.show()\n\t\t}\n\n\t\tself.$filelist.empty();\n\n\t\t$.each(files, function(idx, entry) {\n\t\t\tif (entry.isEncrypted && entry.mimetype === 'httpd/unix-directory') {\n\t\t\t\tentry.icon = OC.MimeType.getIconUrl('dir-encrypted')\n\t\t\t} else {\n\t\t\t\tentry.icon = OC.MimeType.getIconUrl(entry.mimetype)\n\t\t\t}\n\n\t\t\tvar simpleSize, sizeColor\n\t\t\tif (typeof (entry.size) !== 'undefined' && entry.size >= 0) {\n\t\t\t\tsimpleSize = OC.Util.humanFileSize(parseInt(entry.size, 10), true)\n\t\t\t\tsizeColor = Math.round(160 - Math.pow((entry.size / (1024 * 1024)), 2))\n\t\t\t} else {\n\t\t\t\tsimpleSize = t('files', 'Pending')\n\t\t\t\tsizeColor = 80\n\t\t\t}\n\n\t\t\t// split the filename in half if the size is bigger than 20 char\n\t\t\t// for ellipsis\n\t\t\tif (entry.name.length >= 10) {\n\t\t\t\t// leave maximum 10 letters\n\t\t\t\tvar split = Math.min(Math.floor(entry.name.length / 2), 10)\n\t\t\t\tvar filename1 = entry.name.substr(0, entry.name.length - split)\n\t\t\t\tvar filename2 = entry.name.substr(entry.name.length - split)\n\t\t\t} else {\n\t\t\t\tvar filename1 = entry.name\n\t\t\t\tvar filename2 = ''\n\t\t\t}\n\n\t\t\tvar $row = self.$listTmpl.octemplate({\n\t\t\t\ttype: entry.type,\n\t\t\t\tdir: dir,\n\t\t\t\tfilename: entry.name,\n\t\t\t\tfilename1: filename1,\n\t\t\t\tfilename2: filename2,\n\t\t\t\tdate: OC.Util.relativeModifiedDate(entry.mtime),\n\t\t\t\tsize: simpleSize,\n\t\t\t\tsizeColor: sizeColor,\n\t\t\t\ticon: entry.icon\n\t\t\t})\n\t\t\tif (entry.type === 'file') {\n\t\t\t\tvar urlSpec = {\n\t\t\t\t\tfile: dir + '/' + entry.name,\n\t\t\t\t\tx: 100,\n\t\t\t\t\ty: 100\n\t\t\t\t}\n\t\t\t\tvar img = new Image()\n\t\t\t\tvar previewUrl = OC.generateUrl('/core/preview.png?') + $.param(urlSpec)\n\t\t\t\timg.onload = function() {\n\t\t\t\t\tif (img.width > 5) {\n\t\t\t\t\t\t$row.find('td.filename').attr('style', 'background-image:url(' + previewUrl + ')')\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\timg.src = previewUrl\n\t\t\t}\n\t\t\tself.$filelist.append($row)\n\t\t})\n\n\t\tself.$filelistContainer.removeClass('icon-loading')\n\t},\n\t/**\n\t * fills the tree list with directories\n\t */\n\t_fillSlug: function() {\n\t\tvar addButton = this.$dirTree.find('.actions.creatable').detach()\n\t\tthis.$dirTree.empty()\n\t\tvar self = this\n\n\t\tself.$dirTree.append(addButton)\n\n\t\tvar dir\n\t\tvar path = this.$filePicker.data('path')\n\t\tvar $template = $('<div data-dir=\"{dir}\" tabindex=\"0\"><a>{name}</a></div>').addClass('crumb')\n\t\tif (path) {\n\t\t\tvar paths = path.split('/')\n\t\t\t$.each(paths, function(index, dir) {\n\t\t\t\tdir = paths.pop()\n\t\t\t\tif (dir === '') {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t\tself.$dirTree.prepend($template.octemplate({\n\t\t\t\t\tdir: paths.join('/') + '/' + dir,\n\t\t\t\t\tname: dir\n\t\t\t\t}))\n\t\t\t})\n\t\t}\n\n\t\t$template.octemplate({\n\t\t\tdir: '',\n\t\t\tname: t('core', 'Home'),\n\t\t}, { escapeFunction: null }).prependTo(this.$dirTree)\n\n\t},\n\t/**\n\t * handle selection made in the tree list\n\t */\n\t_handleTreeListSelect: function(event, type) {\n\t\tvar self = event.data\n\t\tvar dir = $(event.target).closest('.crumb').data('dir')\n\t\tself._fillFilePicker(dir, type)\n\t\tvar getOcDialog = (event.target).closest('.oc-dialog')\n\t\tvar buttonEnableDisable = $('.primary', getOcDialog)\n\t\tthis._changeButtonsText(type, dir.split(/[/]+/).pop())\n\t\tif (this.$filePicker.data('mimetype').indexOf('httpd/unix-directory') !== -1 || this.$filePicker.data('allowDirectoryChooser')) {\n\t\t\tbuttonEnableDisable.prop('disabled', false)\n\t\t} else {\n\t\t\tbuttonEnableDisable.prop('disabled', true)\n\t\t}\n\t},\n\t/**\n\t * handle clicks made in the filepicker\n\t */\n\t_handlePickerClick: function(event, $element, type) {\n\t\tvar getOcDialog = this.$filePicker.closest('.oc-dialog')\n\t\tvar buttonEnableDisable = getOcDialog.find('.primary')\n\t\tif ($element.data('type') === 'file') {\n\t\t\tif (this.$filePicker.data('multiselect') !== true || !event.ctrlKey) {\n\t\t\t\tthis.$filelist.find('.filepicker_element_selected').removeClass('filepicker_element_selected')\n\t\t\t}\n\t\t\t$element.toggleClass('filepicker_element_selected')\n\t\t\tbuttonEnableDisable.prop('disabled', false)\n\t\t} else if ($element.data('type') === 'dir') {\n\t\t\tthis._fillFilePicker(this.$filePicker.data('path') + '/' + $element.data('entryname'), type)\n\t\t\tthis._changeButtonsText(type, $element.data('entryname'))\n\t\t\tif (this.$filePicker.data('mimetype').indexOf('httpd/unix-directory') !== -1 || this.$filePicker.data('allowDirectoryChooser')) {\n\t\t\t\tbuttonEnableDisable.prop('disabled', false)\n\t\t\t} else {\n\t\t\t\tbuttonEnableDisable.prop('disabled', true)\n\t\t\t}\n\t\t}\n\t},\n\n\t/**\n\t * Handle\n\t * @param type of action\n\t * @param dir on which to change buttons text\n\t * @private\n\t */\n\t_changeButtonsText: function(type, dir) {\n\t\tvar copyText = dir === '' ? t('core', 'Copy') : t('core', 'Copy to {folder}', { folder: dir })\n\t\tvar moveText = dir === '' ? t('core', 'Move') : t('core', 'Move to {folder}', { folder: dir })\n\t\tvar buttons = $('.oc-dialog-buttonrow button')\n\t\tswitch (type) {\n\t\t\tcase this.FILEPICKER_TYPE_CHOOSE:\n\t\t\t\tbreak\n\t\t\tcase this.FILEPICKER_TYPE_CUSTOM:\n\t\t\t\tbreak\n\t\t\tcase this.FILEPICKER_TYPE_COPY:\n\t\t\t\tbuttons.text(copyText)\n\t\t\t\tbreak\n\t\t\tcase this.FILEPICKER_TYPE_MOVE:\n\t\t\t\tbuttons.text(moveText)\n\t\t\t\tbreak\n\t\t\tcase this.FILEPICKER_TYPE_COPY_MOVE:\n\t\t\t\tbuttons.eq(0).text(copyText)\n\t\t\t\tbuttons.eq(1).text(moveText)\n\t\t\t\tbreak\n\t\t}\n\t}\n}\n\nexport default Dialogs\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { emit } from '@nextcloud/event-bus'\n\n/**\n * @private\n * @param {Document} global the document to read the initial value from\n * @param {Function} emit the function to invoke for every new token\n * @return {object}\n */\nexport const manageToken = (global, emit) => {\n\tlet token = global.getElementsByTagName('head')[0].getAttribute('data-requesttoken')\n\n\treturn {\n\t\tgetToken: () => token,\n\t\tsetToken: newToken => {\n\t\t\ttoken = newToken\n\n\t\t\temit('csrf-token-update', {\n\t\t\t\ttoken,\n\t\t\t})\n\t\t},\n\t}\n}\n\nconst manageFromDocument = manageToken(document, emit)\n\n/**\n * @return {string}\n */\nexport const getToken = manageFromDocument.getToken\n\n/**\n * @param {string} newToken new token\n */\nexport const setToken = manageFromDocument.setToken\n","/**\n * @copyright 2012 Robin Appelman icewind1991@gmail.com\n *\n * @author Arthur Schiwon <blizzz@arthur-schiwon.de>\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Lukas Reschke <lukas@statuscode.ch>\n * @author Robin Appelman <robin@icewind.nl>\n * @author Thomas Müller <thomas.mueller@tmit.eu>\n * @author Vincent Petry <vincent@nextcloud.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n/* eslint-disable */\nimport $ from 'jquery'\n\nimport { getToken } from './requesttoken'\n\n/**\n * Create a new event source\n * @param {string} src\n * @param {object} [data] to be send as GET\n *\n * @constructs OCEventSource\n */\nconst OCEventSource = function(src, data) {\n\tvar dataStr = ''\n\tvar name\n\tvar joinChar\n\tthis.typelessListeners = []\n\tthis.closed = false\n\tthis.listeners = {}\n\tif (data) {\n\t\tfor (name in data) {\n\t\t\tdataStr += name + '=' + encodeURIComponent(data[name]) + '&'\n\t\t}\n\t}\n\tdataStr += 'requesttoken=' + encodeURIComponent(getToken())\n\tif (!this.useFallBack && typeof EventSource !== 'undefined') {\n\t\tjoinChar = '&'\n\t\tif (src.indexOf('?') === -1) {\n\t\t\tjoinChar = '?'\n\t\t}\n\t\tthis.source = new EventSource(src + joinChar + dataStr)\n\t\tthis.source.onmessage = function(e) {\n\t\t\tfor (var i = 0; i < this.typelessListeners.length; i++) {\n\t\t\t\tthis.typelessListeners[i](JSON.parse(e.data))\n\t\t\t}\n\t\t}.bind(this)\n\t} else {\n\t\tvar iframeId = 'oc_eventsource_iframe_' + OCEventSource.iframeCount\n\t\tOCEventSource.fallBackSources[OCEventSource.iframeCount] = this\n\t\tthis.iframe = $('<iframe></iframe>')\n\t\tthis.iframe.attr('id', iframeId)\n\t\tthis.iframe.hide()\n\n\t\tjoinChar = '&'\n\t\tif (src.indexOf('?') === -1) {\n\t\t\tjoinChar = '?'\n\t\t}\n\t\tthis.iframe.attr('src', src + joinChar + 'fallback=true&fallback_id=' + OCEventSource.iframeCount + '&' + dataStr)\n\t\t$('body').append(this.iframe)\n\t\tthis.useFallBack = true\n\t\tOCEventSource.iframeCount++\n\t}\n\t// add close listener\n\tthis.listen('__internal__', function(data) {\n\t\tif (data === 'close') {\n\t\t\tthis.close()\n\t\t}\n\t}.bind(this))\n}\nOCEventSource.fallBackSources = []\nOCEventSource.iframeCount = 0// number of fallback iframes\nOCEventSource.fallBackCallBack = function(id, type, data) {\n\tOCEventSource.fallBackSources[id].fallBackCallBack(type, data)\n}\nOCEventSource.prototype = {\n\ttypelessListeners: [],\n\tiframe: null,\n\tlisteners: {}, // only for fallback\n\tuseFallBack: false,\n\t/**\n\t * Fallback callback for browsers that don't have the\n\t * native EventSource object.\n\t *\n\t * Calls the registered listeners.\n\t *\n\t * @private\n\t * @param {String} type event type\n\t * @param {Object} data received data\n\t */\n\tfallBackCallBack: function(type, data) {\n\t\tvar i\n\t\t// ignore messages that might appear after closing\n\t\tif (this.closed) {\n\t\t\treturn\n\t\t}\n\t\tif (type) {\n\t\t\tif (typeof this.listeners.done !== 'undefined') {\n\t\t\t\tfor (i = 0; i < this.listeners[type].length; i++) {\n\t\t\t\t\tthis.listeners[type][i](data)\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfor (i = 0; i < this.typelessListeners.length; i++) {\n\t\t\t\tthis.typelessListeners[i](data)\n\t\t\t}\n\t\t}\n\t},\n\tlastLength: 0, // for fallback\n\t/**\n\t * Listen to a given type of events.\n\t *\n\t * @param {String} type event type\n\t * @param {Function} callback event callback\n\t */\n\tlisten: function(type, callback) {\n\t\tif (callback && callback.call) {\n\n\t\t\tif (type) {\n\t\t\t\tif (this.useFallBack) {\n\t\t\t\t\tif (!this.listeners[type]) {\n\t\t\t\t\t\tthis.listeners[type] = []\n\t\t\t\t\t}\n\t\t\t\t\tthis.listeners[type].push(callback)\n\t\t\t\t} else {\n\t\t\t\t\tthis.source.addEventListener(type, function(e) {\n\t\t\t\t\t\tif (typeof e.data !== 'undefined') {\n\t\t\t\t\t\t\tcallback(JSON.parse(e.data))\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcallback('')\n\t\t\t\t\t\t}\n\t\t\t\t\t}, false)\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tthis.typelessListeners.push(callback)\n\t\t\t}\n\t\t}\n\t},\n\t/**\n\t * Closes this event source.\n\t */\n\tclose: function() {\n\t\tthis.closed = true\n\t\tif (typeof this.source !== 'undefined') {\n\t\t\tthis.source.close()\n\t\t}\n\t}\n}\n\nexport default OCEventSource\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Daniel Calviño Sánchez <danxuliu@gmail.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport _ from 'underscore'\n/** @typedef {import('jquery')} jQuery */\nimport $ from 'jquery'\n\nimport { menuSpeed } from './constants'\n\nexport let currentMenu = null\nexport let currentMenuToggle = null\n\n/**\n * For menu toggling\n *\n * @param {jQuery} $toggle the toggle element\n * @param {jQuery} $menuEl the menu container element\n * @param {Function | undefined} toggle callback invoked everytime the menu is opened\n * @param {boolean} headerMenu is this a top right header menu?\n * @return {void}\n */\nexport const registerMenu = function($toggle, $menuEl, toggle, headerMenu) {\n\t$menuEl.addClass('menu')\n\tconst isClickableElement = $toggle.prop('tagName') === 'A' || $toggle.prop('tagName') === 'BUTTON'\n\n\t// On link and button, the enter key trigger a click event\n\t// Only use the click to avoid two fired events\n\t$toggle.on(isClickableElement ? 'click.menu' : 'click.menu keyup.menu', function(event) {\n\t\t// prevent the link event (append anchor to URL)\n\t\tevent.preventDefault()\n\n\t\t// allow enter key as a trigger\n\t\tif (event.key && event.key !== 'Enter') {\n\t\t\treturn\n\t\t}\n\n\t\tif ($menuEl.is(currentMenu)) {\n\t\t\thideMenus()\n\t\t\treturn\n\t\t} else if (currentMenu) {\n\t\t\t// another menu was open?\n\t\t\t// close it\n\t\t\thideMenus()\n\t\t}\n\n\t\tif (headerMenu === true) {\n\t\t\t$menuEl.parent().addClass('openedMenu')\n\t\t}\n\n\t\t// Set menu to expanded\n\t\t$toggle.attr('aria-expanded', true)\n\n\t\t$menuEl.slideToggle(menuSpeed, toggle)\n\t\tcurrentMenu = $menuEl\n\t\tcurrentMenuToggle = $toggle\n\t})\n}\n\n/**\n * Unregister a previously registered menu\n *\n * @param {jQuery} $toggle the toggle element\n * @param {jQuery} $menuEl the menu container element\n */\nexport const unregisterMenu = ($toggle, $menuEl) => {\n\t// close menu if opened\n\tif ($menuEl.is(currentMenu)) {\n\t\thideMenus()\n\t}\n\t$toggle.off('click.menu').removeClass('menutoggle')\n\t$menuEl.removeClass('menu')\n}\n\n/**\n * Hides any open menus\n *\n * @param {Function} complete callback when the hiding animation is done\n */\nexport const hideMenus = function(complete) {\n\tif (currentMenu) {\n\t\tconst lastMenu = currentMenu\n\t\tcurrentMenu.trigger(new $.Event('beforeHide'))\n\t\tcurrentMenu.slideUp(menuSpeed, function() {\n\t\t\tlastMenu.trigger(new $.Event('afterHide'))\n\t\t\tif (complete) {\n\t\t\t\tcomplete.apply(this, arguments)\n\t\t\t}\n\t\t})\n\t}\n\n\t// Set menu to closed\n\t$('.menutoggle').attr('aria-expanded', false)\n\tif (currentMenuToggle) {\n\t\tcurrentMenuToggle.attr('aria-expanded', false)\n\t}\n\n\t$('.openedMenu').removeClass('openedMenu')\n\tcurrentMenu = null\n\tcurrentMenuToggle = null\n}\n\n/**\n * Shows a given element as menu\n *\n * @param {object} [$toggle=null] menu toggle\n * @param {object} $menuEl menu element\n * @param {Function} complete callback when the showing animation is done\n */\nexport const showMenu = ($toggle, $menuEl, complete) => {\n\tif ($menuEl.is(currentMenu)) {\n\t\treturn\n\t}\n\thideMenus()\n\tcurrentMenu = $menuEl\n\tcurrentMenuToggle = $toggle\n\t$menuEl.trigger(new $.Event('beforeShow'))\n\t$menuEl.show()\n\t$menuEl.trigger(new $.Event('afterShow'))\n\t// no animation\n\tif (_.isFunction(complete)) {\n\t\tcomplete()\n\t}\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nexport const coreApps = ['', 'admin', 'log', 'core/search', 'core', '3rdparty']\nexport const menuSpeed = 50\nexport const PERMISSION_NONE = 0\nexport const PERMISSION_CREATE = 4\nexport const PERMISSION_READ = 1\nexport const PERMISSION_UPDATE = 2\nexport const PERMISSION_DELETE = 8\nexport const PERMISSION_SHARE = 16\nexport const PERMISSION_ALL = 31\nexport const TAG_FAVORITE = '_$!<Favorite>!$_'\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nconst isAdmin = !!window._oc_isadmin\n\n/**\n * Returns whether the current user is an administrator\n *\n * @return {boolean} true if the user is an admin, false otherwise\n * @since 9.0.0\n */\nexport const isUserAdmin = () => isAdmin\n","/**\n * Copyright (c) 2014 Vincent Petry <pvince81@owncloud.com>\n * Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Daniel Kesselberg <mail@danielkesselberg.de>\n * @author Joas Schilling <coding@schilljs.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Morris Jobke <hey@morrisjobke.de>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n * @author Vincent Petry <vincent@nextcloud.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport Handlebars from 'handlebars'\nimport {\n\tloadTranslations,\n\ttranslate,\n\ttranslatePlural,\n\tregister,\n\tunregister,\n} from '@nextcloud/l10n'\n\n/**\n * L10N namespace with localization functions.\n *\n * @namespace OC.L10n\n * @deprecated 26.0.0 use https://www.npmjs.com/package/@nextcloud/l10n\n */\nconst L10n = {\n\n\t/**\n\t * Load an app's translation bundle if not loaded already.\n\t *\n\t * @deprecated 26.0.0 use `loadTranslations` from https://www.npmjs.com/package/@nextcloud/l10n\n\t *\n\t * @param {string} appName name of the app\n\t * @param {Function} callback callback to be called when\n\t * the translations are loaded\n\t * @return {Promise} promise\n\t */\n\tload: loadTranslations,\n\n\t/**\n\t * Register an app's translation bundle.\n\t *\n\t * @deprecated 26.0.0 use `register` from https://www.npmjs.com/package/@nextcloud/l10\n\t *\n\t * @param {string} appName name of the app\n\t * @param {Object<string, string>} bundle bundle\n\t */\n\tregister,\n\n\t/**\n\t * @private\n\t * @deprecated 26.0.0 use `unregister` from https://www.npmjs.com/package/@nextcloud/l10n\n\t */\n\t_unregister: unregister,\n\n\t/**\n\t * Translate a string\n\t *\n\t * @deprecated 26.0.0 use `translate` from https://www.npmjs.com/package/@nextcloud/l10n\n\t *\n\t * @param {string} app the id of the app for which to translate the string\n\t * @param {string} text the string to translate\n\t * @param {object} [vars] map of placeholder key to value\n\t * @param {number} [count] number to replace %n with\n\t * @param {Array} [options] options array\n\t * @param {boolean} [options.escape=true] enable/disable auto escape of placeholders (by default enabled)\n\t * @param {boolean} [options.sanitize=true] enable/disable sanitization (by default enabled)\n\t * @return {string}\n\t */\n\ttranslate,\n\n\t/**\n\t * Translate a plural string\n\t *\n\t * @deprecated 26.0.0 use `translatePlural` from https://www.npmjs.com/package/@nextcloud/l10n\n\t *\n\t * @param {string} app the id of the app for which to translate the string\n\t * @param {string} textSingular the string to translate for exactly one object\n\t * @param {string} textPlural the string to translate for n objects\n\t * @param {number} count number to determine whether to use singular or plural\n\t * @param {object} [vars] map of placeholder key to value\n\t * @param {Array} [options] options array\n\t * @param {boolean} [options.escape=true] enable/disable auto escape of placeholders (by default enabled)\n\t * @return {string} Translated string\n\t */\n\ttranslatePlural,\n}\n\nexport default L10n\n\nHandlebars.registerHelper('t', function(app, text) {\n\treturn translate(app, text)\n})\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author rakekniven <mark.ziegler@rakekniven.de>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport $ from 'jquery'\n\n/**\n * A little class to manage a status field for a \"saving\" process.\n * It can be used to display a starting message (e.g. \"Saving...\") and then\n * replace it with a green success message or a red error message.\n *\n * @namespace OC.msg\n */\nexport default {\n\t/**\n\t * Displayes a \"Saving...\" message in the given message placeholder\n\t *\n\t * @param {object} selector Placeholder to display the message in\n\t */\n\tstartSaving(selector) {\n\t\tthis.startAction(selector, t('core', 'Saving …'))\n\t},\n\n\t/**\n\t * Displayes a custom message in the given message placeholder\n\t *\n\t * @param {object} selector Placeholder to display the message in\n\t * @param {string} message Plain text message to display (no HTML allowed)\n\t */\n\tstartAction(selector, message) {\n\t\t$(selector).text(message)\n\t\t\t.removeClass('success')\n\t\t\t.removeClass('error')\n\t\t\t.stop(true, true)\n\t\t\t.show()\n\t},\n\n\t/**\n\t * Displayes an success/error message in the given selector\n\t *\n\t * @param {object} selector Placeholder to display the message in\n\t * @param {object} response Response of the server\n\t * @param {object} response.data Data of the servers response\n\t * @param {string} response.data.message Plain text message to display (no HTML allowed)\n\t * @param {string} response.status is being used to decide whether the message\n\t * is displayed as an error/success\n\t */\n\tfinishedSaving(selector, response) {\n\t\tthis.finishedAction(selector, response)\n\t},\n\n\t/**\n\t * Displayes an success/error message in the given selector\n\t *\n\t * @param {object} selector Placeholder to display the message in\n\t * @param {object} response Response of the server\n\t * @param {object} response.data Data of the servers response\n\t * @param {string} response.data.message Plain text message to display (no HTML allowed)\n\t * @param {string} response.status is being used to decide whether the message\n\t * is displayed as an error/success\n\t */\n\tfinishedAction(selector, response) {\n\t\tif (response.status === 'success') {\n\t\t\tthis.finishedSuccess(selector, response.data.message)\n\t\t} else {\n\t\t\tthis.finishedError(selector, response.data.message)\n\t\t}\n\t},\n\n\t/**\n\t * Displayes an success message in the given selector\n\t *\n\t * @param {object} selector Placeholder to display the message in\n\t * @param {string} message Plain text success message to display (no HTML allowed)\n\t */\n\tfinishedSuccess(selector, message) {\n\t\t$(selector).text(message)\n\t\t\t.addClass('success')\n\t\t\t.removeClass('error')\n\t\t\t.stop(true, true)\n\t\t\t.delay(3000)\n\t\t\t.fadeOut(900)\n\t\t\t.show()\n\t},\n\n\t/**\n\t * Displayes an error message in the given selector\n\t *\n\t * @param {object} selector Placeholder to display the message in\n\t * @param {string} message Plain text error message to display (no HTML allowed)\n\t */\n\tfinishedError(selector, message) {\n\t\t$(selector).text(message)\n\t\t\t.addClass('error')\n\t\t\t.removeClass('success')\n\t\t\t.show()\n\t},\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport _ from 'underscore'\nimport $ from 'jquery'\nimport moment from 'moment'\nimport { generateUrl } from '@nextcloud/router'\n\nimport OC from './index'\n\n/**\n * @namespace OC.PasswordConfirmation\n */\nexport default {\n\tcallback: null,\n\n\tpageLoadTime: null,\n\n\tinit() {\n\t\t$('.password-confirm-required').on('click', _.bind(this.requirePasswordConfirmation, this))\n\t\tthis.pageLoadTime = moment.now()\n\t},\n\n\trequiresPasswordConfirmation() {\n\t\tconst serverTimeDiff = this.pageLoadTime - (window.nc_pageLoad * 1000)\n\t\tconst timeSinceLogin = moment.now() - (serverTimeDiff + (window.nc_lastLogin * 1000))\n\n\t\t// if timeSinceLogin > 30 minutes and user backend allows password confirmation\n\t\treturn (window.backendAllowsPasswordConfirmation && timeSinceLogin > 30 * 60 * 1000)\n\t},\n\n\t/**\n\t * @param {Function} callback success callback function\n\t * @param {object} options options\n\t * @param {Function} rejectCallback error callback function\n\t */\n\trequirePasswordConfirmation(callback, options, rejectCallback) {\n\t\toptions = typeof options !== 'undefined' ? options : {}\n\t\tconst defaults = {\n\t\t\ttitle: t('core', 'Authentication required'),\n\t\t\ttext: t(\n\t\t\t\t'core',\n\t\t\t\t'This action requires you to confirm your password'\n\t\t\t),\n\t\t\tconfirm: t('core', 'Confirm'),\n\t\t\tlabel: t('core', 'Password'),\n\t\t\terror: '',\n\t\t}\n\n\t\tconst config = _.extend(defaults, options)\n\n\t\tconst self = this\n\n\t\tif (this.requiresPasswordConfirmation()) {\n\t\t\tOC.dialogs.prompt(\n\t\t\t\tconfig.text,\n\t\t\t\tconfig.title,\n\t\t\t\tfunction(result, password) {\n\t\t\t\t\tif (result && password !== '') {\n\t\t\t\t\t\tself._confirmPassword(password, config)\n\t\t\t\t\t} else if (_.isFunction(rejectCallback)) {\n\t\t\t\t\t\trejectCallback()\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\ttrue,\n\t\t\t\tconfig.label,\n\t\t\t\ttrue\n\t\t\t).then(function() {\n\t\t\t\tconst $dialog = $('.oc-dialog:visible')\n\t\t\t\t$dialog.find('.ui-icon').remove()\n\t\t\t\t$dialog.addClass('password-confirmation')\n\t\t\t\tif (config.error !== '') {\n\t\t\t\t\tconst $error = $('<p></p>').addClass('msg warning').text(config.error)\n\t\t\t\t\t$dialog.find('.oc-dialog-content').append($error)\n\t\t\t\t}\n\t\t\t\t$dialog.find('.oc-dialog-buttonrow').addClass('aside')\n\n\t\t\t\tconst $buttons = $dialog.find('button')\n\t\t\t\t$buttons.eq(0).hide()\n\t\t\t\t$buttons.eq(1).text(config.confirm)\n\t\t\t})\n\t\t}\n\n\t\tthis.callback = callback\n\t},\n\n\t_confirmPassword(password, config) {\n\t\tconst self = this\n\n\t\t$.ajax({\n\t\t\turl: generateUrl('/login/confirm'),\n\t\t\tdata: {\n\t\t\t\tpassword,\n\t\t\t},\n\t\t\ttype: 'POST',\n\t\t\tsuccess(response) {\n\t\t\t\twindow.nc_lastLogin = response.lastLogin\n\n\t\t\t\tif (_.isFunction(self.callback)) {\n\t\t\t\t\tself.callback()\n\t\t\t\t}\n\t\t\t},\n\t\t\terror() {\n\t\t\t\tconfig.error = t('core', 'Failed to authenticate, try again')\n\t\t\t\tOC.PasswordConfirmation.requirePasswordConfirmation(self.callback, config)\n\t\t\t},\n\t\t})\n\t},\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nexport const theme = window._theme || {}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport _ from 'underscore'\nimport OC from './index'\n\n/**\n * Utility class for the history API,\n * includes fallback to using the URL hash when\n * the browser doesn't support the history API.\n *\n * @namespace OC.Util.History\n */\nexport default {\n\n\t_handlers: [],\n\n\t/**\n\t * Push the current URL parameters to the history stack\n\t * and change the visible URL.\n\t * Note: this includes a workaround for IE8/IE9 that uses\n\t * the hash part instead of the search part.\n\t *\n\t * @param {object | string} params to append to the URL, can be either a string\n\t * or a map\n\t * @param {string} [url] URL to be used, otherwise the current URL will be used,\n\t * using the params as query string\n\t * @param {boolean} [replace=false] whether to replace instead of pushing\n\t */\n\t_pushState(params, url, replace) {\n\t\tlet strParams\n\t\tif (typeof (params) === 'string') {\n\t\t\tstrParams = params\n\t\t} else {\n\t\t\tstrParams = OC.buildQueryString(params)\n\t\t}\n\n\t\tif (window.history.pushState) {\n\t\t\turl = url || location.pathname + '?' + strParams\n\t\t\t// Workaround for bug with SVG and window.history.pushState on Firefox < 51\n\t\t\t// https://bugzilla.mozilla.org/show_bug.cgi?id=652991\n\t\t\tconst isFirefox = navigator.userAgent.toLowerCase().indexOf('firefox') > -1\n\t\t\tif (isFirefox && parseInt(navigator.userAgent.split('/').pop()) < 51) {\n\t\t\t\tconst patterns = document.querySelectorAll('[fill^=\"url(#\"], [stroke^=\"url(#\"], [filter^=\"url(#invert\"]')\n\t\t\t\tfor (let i = 0, ii = patterns.length, pattern; i < ii; i++) {\n\t\t\t\t\tpattern = patterns[i]\n\t\t\t\t\t// eslint-disable-next-line no-self-assign\n\t\t\t\t\tpattern.style.fill = pattern.style.fill\n\t\t\t\t\t// eslint-disable-next-line no-self-assign\n\t\t\t\t\tpattern.style.stroke = pattern.style.stroke\n\t\t\t\t\tpattern.removeAttribute('filter')\n\t\t\t\t\tpattern.setAttribute('filter', 'url(#invert)')\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (replace) {\n\t\t\t\twindow.history.replaceState(params, '', url)\n\t\t\t} else {\n\t\t\t\twindow.history.pushState(params, '', url)\n\t\t\t}\n\t\t} else {\n\t\t\t// use URL hash for IE8\n\t\t\twindow.location.hash = '?' + strParams\n\t\t\t// inhibit next onhashchange that just added itself\n\t\t\t// to the event queue\n\t\t\tthis._cancelPop = true\n\t\t}\n\t},\n\n\t/**\n\t * Push the current URL parameters to the history stack\n\t * and change the visible URL.\n\t * Note: this includes a workaround for IE8/IE9 that uses\n\t * the hash part instead of the search part.\n\t *\n\t * @param {object | string} params to append to the URL, can be either a string or a map\n\t * @param {string} [url] URL to be used, otherwise the current URL will be used, using the params as query string\n\t */\n\tpushState(params, url) {\n\t\tthis._pushState(params, url, false)\n\t},\n\n\t/**\n\t * Push the current URL parameters to the history stack\n\t * and change the visible URL.\n\t * Note: this includes a workaround for IE8/IE9 that uses\n\t * the hash part instead of the search part.\n\t *\n\t * @param {object | string} params to append to the URL, can be either a string\n\t * or a map\n\t * @param {string} [url] URL to be used, otherwise the current URL will be used,\n\t * using the params as query string\n\t */\n\treplaceState(params, url) {\n\t\tthis._pushState(params, url, true)\n\t},\n\n\t/**\n\t * Add a popstate handler\n\t *\n\t * @param {Function} handler handler\n\t */\n\taddOnPopStateHandler(handler) {\n\t\tthis._handlers.push(handler)\n\t},\n\n\t/**\n\t * Parse a query string from the hash part of the URL.\n\t * (workaround for IE8 / IE9)\n\t *\n\t * @return {string}\n\t */\n\t_parseHashQuery() {\n\t\tconst hash = window.location.hash\n\t\tconst pos = hash.indexOf('?')\n\t\tif (pos >= 0) {\n\t\t\treturn hash.substr(pos + 1)\n\t\t}\n\t\tif (hash.length) {\n\t\t\t// remove hash sign\n\t\t\treturn hash.substr(1)\n\t\t}\n\t\treturn ''\n\t},\n\n\t_decodeQuery(query) {\n\t\treturn query.replace(/\\+/g, ' ')\n\t},\n\n\t/**\n\t * Parse the query/search part of the URL.\n\t * Also try and parse it from the URL hash (for IE8)\n\t *\n\t * @return {object} map of parameters\n\t */\n\tparseUrlQuery() {\n\t\tconst query = this._parseHashQuery()\n\t\tlet params\n\t\t// try and parse from URL hash first\n\t\tif (query) {\n\t\t\tparams = OC.parseQueryString(this._decodeQuery(query))\n\t\t}\n\t\t// else read from query attributes\n\t\tparams = _.extend(params || {}, OC.parseQueryString(this._decodeQuery(location.search)))\n\t\treturn params || {}\n\t},\n\n\t_onPopState(e) {\n\t\tif (this._cancelPop) {\n\t\t\tthis._cancelPop = false\n\t\t\treturn\n\t\t}\n\t\tlet params\n\t\tif (!this._handlers.length) {\n\t\t\treturn\n\t\t}\n\t\tparams = (e && e.state)\n\t\tif (_.isString(params)) {\n\t\t\tparams = OC.parseQueryString(params)\n\t\t} else if (!params) {\n\t\t\tparams = this.parseUrlQuery() || {}\n\t\t}\n\t\tfor (let i = 0; i < this._handlers.length; i++) {\n\t\t\tthis._handlers[i](params)\n\t\t}\n\t},\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport moment from 'moment'\n\nimport History from './util-history'\nimport OC from './index'\nimport { formatFileSize as humanFileSize } from '@nextcloud/files'\n\n/**\n * @param {any} t -\n */\nfunction chunkify(t) {\n\t// Adapted from http://my.opera.com/GreyWyvern/blog/show.dml/1671288\n\tconst tz = []\n\tlet x = 0\n\tlet y = -1\n\tlet n = 0\n\tlet c\n\n\twhile (x < t.length) {\n\t\tc = t.charAt(x)\n\t\t// only include the dot in strings\n\t\tconst m = ((!n && c === '.') || (c >= '0' && c <= '9'))\n\t\tif (m !== n) {\n\t\t\t// next chunk\n\t\t\ty++\n\t\t\ttz[y] = ''\n\t\t\tn = m\n\t\t}\n\t\ttz[y] += c\n\t\tx++\n\t}\n\treturn tz\n}\n\n/**\n * Utility functions\n *\n * @namespace OC.Util\n */\nexport default {\n\n\tHistory,\n\n\t/**\n\t * @deprecated use https://nextcloud.github.io/nextcloud-files/modules/_humanfilesize_.html#formatfilesize\n\t */\n\thumanFileSize,\n\n\t/**\n\t * Returns a file size in bytes from a humanly readable string\n\t * Makes 2kB to 2048.\n\t * Inspired by computerFileSize in helper.php\n\t *\n\t * @param {string} string file size in human readable format\n\t * @return {number} or null if string could not be parsed\n\t *\n\t *\n\t */\n\tcomputerFileSize(string) {\n\t\tif (typeof string !== 'string') {\n\t\t\treturn null\n\t\t}\n\n\t\tconst s = string.toLowerCase().trim()\n\t\tlet bytes = null\n\n\t\tconst bytesArray = {\n\t\t\tb: 1,\n\t\t\tk: 1024,\n\t\t\tkb: 1024,\n\t\t\tmb: 1024 * 1024,\n\t\t\tm: 1024 * 1024,\n\t\t\tgb: 1024 * 1024 * 1024,\n\t\t\tg: 1024 * 1024 * 1024,\n\t\t\ttb: 1024 * 1024 * 1024 * 1024,\n\t\t\tt: 1024 * 1024 * 1024 * 1024,\n\t\t\tpb: 1024 * 1024 * 1024 * 1024 * 1024,\n\t\t\tp: 1024 * 1024 * 1024 * 1024 * 1024,\n\t\t}\n\n\t\tconst matches = s.match(/^[\\s+]?([0-9]*)(\\.([0-9]+))?( +)?([kmgtp]?b?)$/i)\n\t\tif (matches !== null) {\n\t\t\tbytes = parseFloat(s)\n\t\t\tif (!isFinite(bytes)) {\n\t\t\t\treturn null\n\t\t\t}\n\t\t} else {\n\t\t\treturn null\n\t\t}\n\t\tif (matches[5]) {\n\t\t\tbytes = bytes * bytesArray[matches[5]]\n\t\t}\n\n\t\tbytes = Math.round(bytes)\n\t\treturn bytes\n\t},\n\n\t/**\n\t * @param {string|number} timestamp timestamp\n\t * @param {string} format date format, see momentjs docs\n\t * @return {string} timestamp formatted as requested\n\t */\n\tformatDate(timestamp, format) {\n\t\tif (window.TESTING === undefined) {\n\t\t\tconsole.warn('OC.Util.formatDate is deprecated and will be removed in Nextcloud 21. See @nextcloud/moment')\n\t\t}\n\t\tformat = format || 'LLL'\n\t\treturn moment(timestamp).format(format)\n\t},\n\n\t/**\n\t * @param {string|number} timestamp timestamp\n\t * @return {string} human readable difference from now\n\t */\n\trelativeModifiedDate(timestamp) {\n\t\tif (window.TESTING === undefined) {\n\t\t\tconsole.warn('OC.Util.relativeModifiedDate is deprecated and will be removed in Nextcloud 21. See @nextcloud/moment')\n\t\t}\n\t\tconst diff = moment().diff(moment(timestamp))\n\t\tif (diff >= 0 && diff < 45000) {\n\t\t\treturn t('core', 'seconds ago')\n\t\t}\n\t\treturn moment(timestamp).fromNow()\n\t},\n\n\t/**\n\t * Returns the width of a generic browser scrollbar\n\t *\n\t * @return {number} width of scrollbar\n\t */\n\tgetScrollBarWidth() {\n\t\tif (this._scrollBarWidth) {\n\t\t\treturn this._scrollBarWidth\n\t\t}\n\n\t\tconst inner = document.createElement('p')\n\t\tinner.style.width = '100%'\n\t\tinner.style.height = '200px'\n\n\t\tconst outer = document.createElement('div')\n\t\touter.style.position = 'absolute'\n\t\touter.style.top = '0px'\n\t\touter.style.left = '0px'\n\t\touter.style.visibility = 'hidden'\n\t\touter.style.width = '200px'\n\t\touter.style.height = '150px'\n\t\touter.style.overflow = 'hidden'\n\t\touter.appendChild(inner)\n\n\t\tdocument.body.appendChild(outer)\n\t\tconst w1 = inner.offsetWidth\n\t\touter.style.overflow = 'scroll'\n\t\tlet w2 = inner.offsetWidth\n\t\tif (w1 === w2) {\n\t\t\tw2 = outer.clientWidth\n\t\t}\n\n\t\tdocument.body.removeChild(outer)\n\n\t\tthis._scrollBarWidth = (w1 - w2)\n\n\t\treturn this._scrollBarWidth\n\t},\n\n\t/**\n\t * Remove the time component from a given date\n\t *\n\t * @param {Date} date date\n\t * @return {Date} date with stripped time\n\t */\n\tstripTime(date) {\n\t\t// FIXME: likely to break when crossing DST\n\t\t// would be better to use a library like momentJS\n\t\treturn new Date(date.getFullYear(), date.getMonth(), date.getDate())\n\t},\n\n\t/**\n\t * Compare two strings to provide a natural sort\n\t *\n\t * @param {string} a first string to compare\n\t * @param {string} b second string to compare\n\t * @return {number} -1 if b comes before a, 1 if a comes before b\n\t * or 0 if the strings are identical\n\t */\n\tnaturalSortCompare(a, b) {\n\t\tlet x\n\t\tconst aa = chunkify(a)\n\t\tconst bb = chunkify(b)\n\n\t\tfor (x = 0; aa[x] && bb[x]; x++) {\n\t\t\tif (aa[x] !== bb[x]) {\n\t\t\t\tconst aNum = Number(aa[x]); const bNum = Number(bb[x])\n\t\t\t\t// note: == is correct here\n\t\t\t\t/* eslint-disable-next-line */\n\t\t\t\tif (aNum == aa[x] && bNum == bb[x]) {\n\t\t\t\t\treturn aNum - bNum\n\t\t\t\t} else {\n\t\t\t\t\t// Note: This locale setting isn't supported by all browsers but for the ones\n\t\t\t\t\t// that do there will be more consistency between client-server sorting\n\t\t\t\t\treturn aa[x].localeCompare(bb[x], OC.getLanguage())\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn aa.length - bb.length\n\t},\n\n\t/**\n\t * Calls the callback in a given interval until it returns true\n\t *\n\t * @param {Function} callback function to call on success\n\t * @param {number} interval in milliseconds\n\t */\n\twaitFor(callback, interval) {\n\t\tconst internalCallback = function() {\n\t\t\tif (callback() !== true) {\n\t\t\t\tsetTimeout(internalCallback, interval)\n\t\t\t}\n\t\t}\n\n\t\tinternalCallback()\n\t},\n\n\t/**\n\t * Checks if a cookie with the given name is present and is set to the provided value.\n\t *\n\t * @param {string} name name of the cookie\n\t * @param {string} value value of the cookie\n\t * @return {boolean} true if the cookie with the given name has the given value\n\t */\n\tisCookieSetToValue(name, value) {\n\t\tconst cookies = document.cookie.split(';')\n\t\tfor (let i = 0; i < cookies.length; i++) {\n\t\t\tconst cookie = cookies[i].split('=')\n\t\t\tif (cookie[0].trim() === name && cookie[1].trim() === value) {\n\t\t\t\treturn true\n\t\t\t}\n\t\t}\n\t\treturn false\n\t},\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nconst base = window._oc_debug\n\nexport const debug = base\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nlet webroot = window._oc_webroot\n\nif (typeof webroot === 'undefined') {\n\twebroot = location.pathname\n\tconst pos = webroot.indexOf('/index.php/')\n\tif (pos !== -1) {\n\t\twebroot = webroot.substr(0, pos)\n\t} else {\n\t\twebroot = webroot.substr(0, webroot.lastIndexOf('/'))\n\t}\n}\n\nexport default webroot\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nexport const get = context => name => {\n\tconst namespaces = name.split('.')\n\tconst tail = namespaces.pop()\n\n\tfor (let i = 0; i < namespaces.length; i++) {\n\t\tcontext = context[namespaces[i]]\n\t\tif (!context) {\n\t\t\treturn false\n\t\t}\n\t}\n\treturn context[tail]\n}\n\n/**\n * Set a variable by name\n *\n * @param {string} context context\n * @return {Function} setter\n * @deprecated 19.0.0 use https://lodash.com/docs#set\n */\nexport const set = context => (name, value) => {\n\tconst namespaces = name.split('.')\n\tconst tail = namespaces.pop()\n\n\tfor (let i = 0; i < namespaces.length; i++) {\n\t\tif (!context[namespaces[i]]) {\n\t\t\tcontext[namespaces[i]] = {}\n\t\t}\n\t\tcontext = context[namespaces[i]]\n\t}\n\tcontext[tail] = value\n\treturn value\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { subscribe } from '@nextcloud/event-bus'\n\nimport { addScript, addStyle } from './legacy-loader'\nimport {\n\tajaxConnectionLostHandler,\n\tprocessAjaxError,\n\tregisterXHRForErrorProcessing,\n} from './xhr-error'\nimport Apps from './apps'\nimport { AppConfig, appConfig } from './appconfig'\nimport { appSettings } from './appsettings'\nimport appswebroots from './appswebroots'\nimport Backbone from './backbone'\nimport {\n\tbasename,\n\tdirname,\n\tencodePath,\n\tisSamePath,\n\tjoinPaths,\n} from '@nextcloud/paths'\nimport {\n\tbuild as buildQueryString,\n\tparse as parseQueryString,\n} from './query-string'\nimport Config from './config'\nimport {\n\tcoreApps,\n\tmenuSpeed,\n\tPERMISSION_ALL,\n\tPERMISSION_CREATE,\n\tPERMISSION_DELETE,\n\tPERMISSION_NONE,\n\tPERMISSION_READ,\n\tPERMISSION_SHARE,\n\tPERMISSION_UPDATE,\n\tTAG_FAVORITE,\n} from './constants'\nimport ContactsMenu from './contactsmenu'\nimport { currentUser, getCurrentUser } from './currentuser'\nimport Dialogs from './dialogs'\nimport EventSource from './eventsource'\nimport { get, set } from './get_set'\nimport { getCapabilities } from './capabilities'\nimport {\n\tgetHost,\n\tgetHostName,\n\tgetPort,\n\tgetProtocol,\n} from './host'\nimport {\n\tgetToken as getRequestToken,\n} from './requesttoken'\nimport {\n\thideMenus,\n\tregisterMenu,\n\tshowMenu,\n\tunregisterMenu,\n} from './menu'\nimport { isUserAdmin } from './admin'\nimport L10N from './l10n'\nimport {\n\tgetCanonicalLocale,\n\tgetLanguage,\n\tgetLocale,\n} from '@nextcloud/l10n'\n\nimport {\n\tgenerateUrl,\n\tgenerateFilePath,\n\tgenerateOcsUrl,\n\tgenerateRemoteUrl,\n\tgetRootUrl,\n\timagePath,\n\tlinkTo,\n} from '@nextcloud/router'\n\nimport {\n\tlinkToRemoteBase,\n} from './routing'\nimport msg from './msg'\nimport Notification from './notification'\nimport PasswordConfirmation from './password-confirmation'\nimport Plugins from './plugins'\nimport { theme } from './theme'\nimport Util from './util'\nimport { debug } from './debug'\nimport { redirect, reload } from './navigation'\nimport webroot from './webroot'\n\n/** @namespace OC */\nexport default {\n\t/*\n\t * Constants\n\t */\n\tcoreApps,\n\tmenuSpeed,\n\tPERMISSION_ALL,\n\tPERMISSION_CREATE,\n\tPERMISSION_DELETE,\n\tPERMISSION_NONE,\n\tPERMISSION_READ,\n\tPERMISSION_SHARE,\n\tPERMISSION_UPDATE,\n\tTAG_FAVORITE,\n\n\t/*\n\t * Deprecated helpers to be removed\n\t */\n\t/**\n\t * Check if a user file is allowed to be handled.\n\t *\n\t * @param {string} file to check\n\t * @return {boolean}\n\t * @deprecated 17.0.0\n\t */\n\tfileIsBlacklisted: file => !!(file.match(Config.blacklist_files_regex)),\n\n\taddScript,\n\taddStyle,\n\tApps,\n\tAppConfig,\n\tappConfig,\n\tappSettings,\n\tappswebroots,\n\tBackbone,\n\tContactsMenu,\n\tconfig: Config,\n\t/**\n\t * Currently logged in user or null if none\n\t *\n\t * @type {string}\n\t * @deprecated use `getCurrentUser` from https://www.npmjs.com/package/@nextcloud/auth\n\t */\n\tcurrentUser,\n\tdialogs: Dialogs,\n\tEventSource,\n\t/**\n\t * Returns the currently logged in user or null if there is no logged in\n\t * user (public page mode)\n\t *\n\t * @since 9.0.0\n\t * @deprecated 19.0.0 use `getCurrentUser` from https://www.npmjs.com/package/@nextcloud/auth\n\t */\n\tgetCurrentUser,\n\tisUserAdmin,\n\tL10N,\n\n\t/**\n\t * Ajax error handlers\n\t *\n\t * @todo remove from here and keep internally -> requires new tests\n\t */\n\t_ajaxConnectionLostHandler: ajaxConnectionLostHandler,\n\t_processAjaxError: processAjaxError,\n\tregisterXHRForErrorProcessing,\n\n\t/**\n\t * Capabilities\n\t *\n\t * @type {Array}\n\t * @deprecated 20.0.0 use @nextcloud/capabilities instead\n\t */\n\tgetCapabilities,\n\n\t/*\n\t * Legacy menu helpers\n\t */\n\thideMenus,\n\tregisterMenu,\n\tshowMenu,\n\tunregisterMenu,\n\n\t/*\n\t * Path helpers\n\t */\n\t/**\n\t * @deprecated 18.0.0 use https://www.npmjs.com/package/@nextcloud/paths\n\t */\n\tbasename,\n\t/**\n\t * @deprecated 18.0.0 use https://www.npmjs.com/package/@nextcloud/paths\n\t */\n\tencodePath,\n\t/**\n\t * @deprecated 18.0.0 use https://www.npmjs.com/package/@nextcloud/paths\n\t */\n\tdirname,\n\t/**\n\t * @deprecated 18.0.0 use https://www.npmjs.com/package/@nextcloud/paths\n\t */\n\tisSamePath,\n\t/**\n\t * @deprecated 18.0.0 use https://www.npmjs.com/package/@nextcloud/paths\n\t */\n\tjoinPaths,\n\n\t/**\n\t * Host (url) helpers\n\t */\n\tgetHost,\n\tgetHostName,\n\tgetPort,\n\tgetProtocol,\n\n\t/**\n\t * @deprecated 20.0.0 use `getCanonicalLocale` from https://www.npmjs.com/package/@nextcloud/l10n\n\t */\n\tgetCanonicalLocale,\n\t/**\n\t * @deprecated 26.0.0 use `getLocale` from https://www.npmjs.com/package/@nextcloud/l10n\n\t */\n\tgetLocale,\n\t/**\n\t * @deprecated 26.0.0 use `getLanguage` from https://www.npmjs.com/package/@nextcloud/l10n\n\t */\n\tgetLanguage,\n\n\t/**\n\t * Query string helpers\n\t */\n\tbuildQueryString,\n\tparseQueryString,\n\n\tmsg,\n\tNotification,\n\tPasswordConfirmation,\n\tPlugins,\n\ttheme,\n\tUtil,\n\tdebug,\n\t/**\n\t * @deprecated 19.0.0 use `generateFilePath` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\tfilePath: generateFilePath,\n\t/**\n\t * @deprecated 19.0.0 use `generateUrl` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\tgenerateUrl,\n\t/**\n\t * @deprecated 19.0.0 use https://lodash.com/docs#get\n\t */\n\tget: get(window),\n\t/**\n\t * @deprecated 19.0.0 use https://lodash.com/docs#set\n\t */\n\tset: set(window),\n\t/**\n\t * @deprecated 19.0.0 use `getRootUrl` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\tgetRootPath: getRootUrl,\n\t/**\n\t * @deprecated 19.0.0 use `imagePath` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\timagePath,\n\tredirect,\n\treload,\n\trequestToken: getRequestToken(),\n\t/**\n\t * @deprecated 19.0.0 use `linkTo` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\tlinkTo,\n\t/**\n\t * @param {string} service service name\n\t * @param {number} version OCS API version\n\t * @return {string} OCS API base path\n\t * @deprecated 19.0.0 use `generateOcsUrl` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\tlinkToOCS: (service, version) => {\n\t\treturn generateOcsUrl(service, {}, {\n\t\t\tocsVersion: version || 1,\n\t\t}) + '/'\n\t},\n\t/**\n\t * @deprecated 19.0.0 use `generateRemoteUrl` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\tlinkToRemote: generateRemoteUrl,\n\tlinkToRemoteBase,\n\t/**\n\t * Relative path to Nextcloud root.\n\t * For example: \"/nextcloud\"\n\t *\n\t * @type {string}\n\t *\n\t * @deprecated 19.0.0 use `getRootUrl` from https://www.npmjs.com/package/@nextcloud/router\n\t * @see OC#getRootPath\n\t */\n\twebroot,\n}\n\n// Keep the request token prop in sync\nsubscribe('csrf-token-update', e => {\n\tOC.requestToken = e.token\n\n\t// Logging might help debug (Sentry) issues\n\tconsole.info('OC.requestToken changed', e.token)\n})\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n/* eslint-disable */\nimport $ from 'jquery'\nimport { filePath } from './routing'\nimport { generateFilePath } from \"@nextcloud/router\"\n\n/**\n * Opens a popup with the setting for an app.\n * @param {string} appid The ID of the app e.g. 'calendar', 'contacts' or 'files'.\n * @param {boolean|string} loadJS If true 'js/settings.js' is loaded. If it's a string\n * it will attempt to load a script by that name in the 'js' directory.\n * @param {boolean} [cache] If true the javascript file won't be forced refreshed. Defaults to true.\n * @param {string} [scriptName] The name of the PHP file to load. Defaults to 'settings.php' in\n * the root of the app directory hierarchy.\n *\n * @deprecated 17.0.0 this method is unused and will be removed with Nextcloud 18\n */\nexport const appSettings = args => {\n\tconsole.warn('OC.appSettings is deprecated and will be removed with Nextcloud 18')\n\n\tif (typeof args === 'undefined' || typeof args.appid === 'undefined') {\n\t\tthrow {\n\t\t\tname: 'MissingParameter',\n\t\t\tmessage: 'The parameter appid is missing'\n\t\t}\n\t}\n\tvar props = { scriptName: 'settings.php', cache: true }\n\t$.extend(props, args)\n\tvar settings = $('#appsettings')\n\tif (settings.length === 0) {\n\t\tthrow {\n\t\t\tname: 'MissingDOMElement',\n\t\t\tmessage: 'There has be be an element with id \"appsettings\" for the popup to show.'\n\t\t}\n\t}\n\tvar popup = $('#appsettings_popup')\n\tif (popup.length === 0) {\n\t\t$('body').prepend('<div class=\"popup hidden\" id=\"appsettings_popup\"></div>')\n\t\tpopup = $('#appsettings_popup')\n\t\tpopup.addClass(settings.hasClass('topright') ? 'topright' : 'bottomleft')\n\t}\n\tif (popup.is(':visible')) {\n\t\tpopup.hide().remove()\n\t} else {\n\t\tconst arrowclass = settings.hasClass('topright') ? 'up' : 'left'\n\t\t$.get(generateFilePath(props.appid, '', props.scriptName), function(data) {\n\t\t\tpopup.html(data).ready(function() {\n\t\t\t\tpopup.prepend('<span class=\"arrow ' + arrowclass + '\"></span><h2>' + t('core', 'Settings') + '</h2><a class=\"close\"></a>').show()\n\t\t\t\tpopup.find('.close').bind('click', function() {\n\t\t\t\t\tpopup.remove()\n\t\t\t\t})\n\t\t\t\tif (typeof props.loadJS !== 'undefined') {\n\t\t\t\t\tvar scriptname\n\t\t\t\t\tif (props.loadJS === true) {\n\t\t\t\t\t\tscriptname = 'settings.js'\n\t\t\t\t\t} else if (typeof props.loadJS === 'string') {\n\t\t\t\t\t\tscriptname = props.loadJS\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthrow {\n\t\t\t\t\t\t\tname: 'InvalidParameter',\n\t\t\t\t\t\t\tmessage: 'The \"loadJS\" parameter must be either boolean or a string.'\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (props.cache) {\n\t\t\t\t\t\t$.ajaxSetup({ cache: true })\n\t\t\t\t\t}\n\t\t\t\t\t$.getScript(generateFilePath(props.appid, 'js', scriptname))\n\t\t\t\t\t\t.fail(function(jqxhr, settings, e) {\n\t\t\t\t\t\t\tthrow e\n\t\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}).show()\n\t\t}, 'html')\n\t}\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { getCapabilities as realGetCapabilities } from '@nextcloud/capabilities'\n\n/**\n * Returns the capabilities\n *\n * @return {Array} capabilities\n *\n * @since 14.0.0\n */\nexport const getCapabilities = () => {\n\tconsole.warn('OC.getCapabilities is deprecated and will be removed in Nextcloud 21. See @nextcloud/capabilities')\n\treturn realGetCapabilities()\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nexport const getProtocol = () => window.location.protocol.split(':')[0]\n\n/**\n * Returns the host used to access this Nextcloud instance\n * Host is sometimes the same as the hostname but now always.\n *\n * Examples:\n * http://example.com => example.com\n * https://example.com => example.com\n * http://example.com:8080 => example.com:8080\n *\n * @return {string} host\n *\n * @since 8.2.0\n * @deprecated 17.0.0 use window.location.host directly\n */\nexport const getHost = () => window.location.host\n\n/**\n * Returns the hostname used to access this Nextcloud instance\n * The hostname is always stripped of the port\n *\n * @return {string} hostname\n * @since 9.0.0\n * @deprecated 17.0.0 use window.location.hostname directly\n */\nexport const getHostName = () => window.location.hostname\n\n/**\n * Returns the port number used to access this Nextcloud instance\n *\n * @return {number} port number\n *\n * @since 8.2.0\n * @deprecated 17.0.0 use window.location.port directly\n */\nexport const getPort = () => window.location.port\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport $ from 'jquery'\n\n/**\n * Parses a URL query string into a JS map\n *\n * @param {string} queryString query string in the format param1=1234¶m2=abcde¶m3=xyz\n * @return {Object<string, string>} map containing key/values matching the URL parameters\n */\nexport const parse = queryString => {\n\tlet pos\n\tlet components\n\tconst result = {}\n\tlet key\n\tif (!queryString) {\n\t\treturn null\n\t}\n\tpos = queryString.indexOf('?')\n\tif (pos >= 0) {\n\t\tqueryString = queryString.substr(pos + 1)\n\t}\n\tconst parts = queryString.replace(/\\+/g, '%20').split('&')\n\tfor (let i = 0; i < parts.length; i++) {\n\t\t// split on first equal sign\n\t\tconst part = parts[i]\n\t\tpos = part.indexOf('=')\n\t\tif (pos >= 0) {\n\t\t\tcomponents = [\n\t\t\t\tpart.substr(0, pos),\n\t\t\t\tpart.substr(pos + 1),\n\t\t\t]\n\t\t} else {\n\t\t\t// key only\n\t\t\tcomponents = [part]\n\t\t}\n\t\tif (!components.length) {\n\t\t\tcontinue\n\t\t}\n\t\tkey = decodeURIComponent(components[0])\n\t\tif (!key) {\n\t\t\tcontinue\n\t\t}\n\t\t// if equal sign was there, return string\n\t\tif (components.length > 1) {\n\t\t\tresult[key] = decodeURIComponent(components[1])\n\t\t} else {\n\t\t\t// no equal sign => null value\n\t\t\tresult[key] = null\n\t\t}\n\t}\n\treturn result\n}\n\n/**\n * Builds a URL query from a JS map.\n *\n * @param {Object<string, string>} params map containing key/values matching the URL parameters\n * @return {string} String containing a URL query (without question) mark\n */\nexport const build = params => {\n\tif (!params) {\n\t\treturn ''\n\t}\n\treturn $.map(params, function(value, key) {\n\t\tlet s = encodeURIComponent(key)\n\t\tif (value !== null && typeof (value) !== 'undefined') {\n\t\t\ts += '=' + encodeURIComponent(value)\n\t\t}\n\t\treturn s\n\t}).join('&')\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nexport default {\n\n\t/**\n\t * @type {Array.<OC.Plugin>}\n\t */\n\t_plugins: {},\n\n\t/**\n\t * Register plugin\n\t *\n\t * @param {string} targetName app name / class name to hook into\n\t * @param {OC.Plugin} plugin plugin\n\t */\n\tregister(targetName, plugin) {\n\t\tlet plugins = this._plugins[targetName]\n\t\tif (!plugins) {\n\t\t\tplugins = this._plugins[targetName] = []\n\t\t}\n\t\tplugins.push(plugin)\n\t},\n\n\t/**\n\t * Returns all plugin registered to the given target\n\t * name / app name / class name.\n\t *\n\t * @param {string} targetName app name / class name to hook into\n\t * @return {Array.<OC.Plugin>} array of plugins\n\t */\n\tgetPlugins(targetName) {\n\t\treturn this._plugins[targetName] || []\n\t},\n\n\t/**\n\t * Call attach() on all plugins registered to the given target name.\n\t *\n\t * @param {string} targetName app name / class name\n\t * @param {object} targetObject to be extended\n\t * @param {object} [options] options\n\t */\n\tattach(targetName, targetObject, options) {\n\t\tconst plugins = this.getPlugins(targetName)\n\t\tfor (let i = 0; i < plugins.length; i++) {\n\t\t\tif (plugins[i].attach) {\n\t\t\t\tplugins[i].attach(targetObject, options)\n\t\t\t}\n\t\t}\n\t},\n\n\t/**\n\t * Call detach() on all plugins registered to the given target name.\n\t *\n\t * @param {string} targetName app name / class name\n\t * @param {object} targetObject to be extended\n\t * @param {object} [options] options\n\t */\n\tdetach(targetName, targetObject, options) {\n\t\tconst plugins = this.getPlugins(targetName)\n\t\tfor (let i = 0; i < plugins.length; i++) {\n\t\t\tif (plugins[i].detach) {\n\t\t\t\tplugins[i].detach(targetObject, options)\n\t\t\t}\n\t\t}\n\t},\n\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nexport const redirect = targetURL => { window.location = targetURL }\n\n/**\n * Reloads the current page\n *\n * @deprecated 17.0.0 use window.location.reload directly\n */\nexport const reload = () => { window.location.reload() }\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport {\n\tgetRootUrl as realGetRootUrl,\n} from '@nextcloud/router'\n\n/**\n * Creates a relative url for remote use\n *\n * @param {string} service id\n * @return {string} the url\n */\nexport const linkToRemoteBase = service => {\n\treturn realGetRootUrl() + '/remote.php/' + service\n}\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"guest-box login-box\"},[(!_vm.hideLoginForm || _vm.directLogin)?_c('div',[_c('transition',{attrs:{\"name\":\"fade\",\"mode\":\"out-in\"}},[(!_vm.passwordlessLogin && !_vm.resetPassword && _vm.resetPasswordTarget === '')?_c('div',[_c('LoginForm',{attrs:{\"username\":_vm.user,\"redirect-url\":_vm.redirectUrl,\"direct-login\":_vm.directLogin,\"messages\":_vm.messages,\"errors\":_vm.errors,\"throttle-delay\":_vm.throttleDelay,\"auto-complete-allowed\":_vm.autoCompleteAllowed},on:{\"update:username\":function($event){_vm.user=$event},\"submit\":function($event){_vm.loading = true}}}),_vm._v(\" \"),(_vm.canResetPassword && _vm.resetPasswordLink !== '')?_c('a',{staticClass:\"login-box__link\",attrs:{\"id\":\"lost-password\",\"href\":_vm.resetPasswordLink}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Forgot password?'))+\"\\n\\t\\t\\t\\t\")]):(_vm.canResetPassword && !_vm.resetPassword)?_c('a',{staticClass:\"login-box__link\",attrs:{\"id\":\"lost-password\",\"href\":_vm.resetPasswordLink},on:{\"click\":function($event){$event.preventDefault();_vm.resetPassword = true}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Forgot password?'))+\"\\n\\t\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.hasPasswordless)?[(_vm.countAlternativeLogins)?_c('div',{staticClass:\"alternative-logins\"},[(_vm.hasPasswordless)?_c('a',{staticClass:\"button\",class:{ 'single-alt-login-option': _vm.countAlternativeLogins },attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();_vm.passwordlessLogin = true}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Log in with a device'))+\"\\n\\t\\t\\t\\t\\t\\t\")]):_vm._e()]):_c('a',{attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();_vm.passwordlessLogin = true}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Log in with a device'))+\"\\n\\t\\t\\t\\t\\t\")])]:_vm._e()],2):(!_vm.loading && _vm.passwordlessLogin)?_c('div',{key:\"reset\",staticClass:\"login-additional\"},[_c('PasswordLessLoginForm',{attrs:{\"username\":_vm.user,\"redirect-url\":_vm.redirectUrl,\"auto-complete-allowed\":_vm.autoCompleteAllowed,\"is-https\":_vm.isHttps,\"is-localhost\":_vm.isLocalhost,\"has-public-key-credential\":_vm.hasPublicKeyCredential},on:{\"update:username\":function($event){_vm.user=$event},\"submit\":function($event){_vm.loading = true}}}),_vm._v(\" \"),_c('a',{staticClass:\"login-box__link\",attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();_vm.passwordlessLogin = false}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Back'))+\"\\n\\t\\t\\t\\t\")])],1):(!_vm.loading && _vm.canResetPassword)?_c('div',{key:\"reset\",staticClass:\"login-additional\"},[_c('div',{staticClass:\"lost-password-container\"},[(_vm.resetPassword)?_c('ResetPassword',{attrs:{\"username\":_vm.user,\"reset-password-link\":_vm.resetPasswordLink},on:{\"update:username\":function($event){_vm.user=$event},\"abort\":function($event){_vm.resetPassword = false}}}):_vm._e()],1)]):(_vm.resetPasswordTarget !== '')?_c('div',[_c('UpdatePassword',{attrs:{\"username\":_vm.user,\"reset-password-target\":_vm.resetPasswordTarget},on:{\"update:username\":function($event){_vm.user=$event},\"done\":_vm.passwordResetFinished}})],1):_vm._e()])],1):_c('div',[_c('transition',{attrs:{\"name\":\"fade\",\"mode\":\"out-in\"}},[_c('NcNoteCard',{attrs:{\"type\":\"warning\",\"title\":_vm.t('core', 'Login form is disabled.')}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Please contact your administrator.'))+\"\\n\\t\\t\\t\")])],1)],1),_vm._v(\" \"),_c('div',{staticClass:\"alternative-logins\",attrs:{\"id\":\"alternative-logins\"}},_vm._l((_vm.alternativeLogins),function(alternativeLogin,index){return _c('NcButton',{key:index,class:[alternativeLogin.class],attrs:{\"type\":\"secondary\",\"wide\":true,\"role\":\"link\",\"href\":alternativeLogin.href}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(alternativeLogin.name)+\"\\n\\t\\t\")])}),1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoginButton.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoginButton.vue?vue&type=script&lang=js&\"","<!--\n - @copyright 2020 Christoph Wurst <christoph@winzerhof-wurst.at>\n -\n - @author 2020 Christoph Wurst <christoph@winzerhof-wurst.at>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -->\n\n<template>\n\t<NcButton type=\"primary\"\n\t\tnative-type=\"submit\"\n\t\t:wide=\"true\"\n\t\t@click=\"$emit('click')\">\n\t\t{{ !loading ? value : valueLoading }}\n\t\t<template #icon>\n\t\t\t<div v-if=\"loading\" class=\"submit-wrapper__icon icon-loading-small-dark\" />\n\t\t\t<ArrowRight v-else class=\"submit-wrapper__icon\" />\n\t\t</template>\n\t</NcButton>\n</template>\n\n<script>\nimport NcButton from '@nextcloud/vue/dist/Components/NcButton'\nimport ArrowRight from 'vue-material-design-icons/ArrowRight.vue'\n\nexport default {\n\tname: 'LoginButton',\n\tcomponents: {\n\t\tArrowRight,\n\t\tNcButton,\n\t},\n\tprops: {\n\t\tvalue: {\n\t\t\ttype: String,\n\t\t\tdefault: t('core', 'Log in'),\n\t\t},\n\t\tvalueLoading: {\n\t\t\ttype: String,\n\t\t\tdefault: t('core', 'Logging in …'),\n\t\t},\n\t\tloading: {\n\t\t\ttype: Boolean,\n\t\t\trequired: true,\n\t\t},\n\t\tinvertedColors: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.button-vue {\n\tmargin-top: .5rem;\n}\n</style>\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoginButton.vue?vue&type=style&index=0&id=756414a8&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoginButton.vue?vue&type=style&index=0&id=756414a8&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./LoginButton.vue?vue&type=template&id=756414a8&scoped=true&\"\nimport script from \"./LoginButton.vue?vue&type=script&lang=js&\"\nexport * from \"./LoginButton.vue?vue&type=script&lang=js&\"\nimport style0 from \"./LoginButton.vue?vue&type=style&index=0&id=756414a8&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"756414a8\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('NcButton',{attrs:{\"type\":\"primary\",\"native-type\":\"submit\",\"wide\":true},on:{\"click\":function($event){return _vm.$emit('click')}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [(_vm.loading)?_c('div',{staticClass:\"submit-wrapper__icon icon-loading-small-dark\"}):_c('ArrowRight',{staticClass:\"submit-wrapper__icon\"})]},proxy:true}])},[_vm._v(\"\\n\\t\"+_vm._s(!_vm.loading ? _vm.value : _vm.valueLoading)+\"\\n\\t\")])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoginForm.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoginForm.vue?vue&type=script&lang=js&\"","<!--\n - @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n -\n - @author 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -->\n\n<template>\n\t<form ref=\"loginForm\"\n\t\tclass=\"login-form\"\n\t\tmethod=\"post\"\n\t\tname=\"login\"\n\t\t:action=\"loginActionUrl\"\n\t\t@submit=\"submit\">\n\t\t<fieldset class=\"login-form__fieldset\" data-login-form>\n\t\t\t<NcNoteCard v-if=\"apacheAuthFailed\"\n\t\t\t\t:title=\"t('core', 'Server side authentication failed!')\"\n\t\t\t\ttype=\"warning\">\n\t\t\t\t{{ t('core', 'Please contact your administrator.') }}\n\t\t\t</NcNoteCard>\n\t\t\t<NcNoteCard v-if=\"messages.length > 0\">\n\t\t\t\t<div v-for=\"(message, index) in messages\"\n\t\t\t\t\t:key=\"index\">\n\t\t\t\t\t{{ message }}<br>\n\t\t\t\t</div>\n\t\t\t</NcNoteCard>\n\t\t\t<NcNoteCard v-if=\"internalException\"\n\t\t\t\t:class=\"t('core', 'An internal error occurred.')\"\n\t\t\t\ttype=\"warning\">\n\t\t\t\t{{ t('core', 'Please try again or contact your administrator.') }}\n\t\t\t</NcNoteCard>\n\t\t\t<div id=\"message\"\n\t\t\t\tclass=\"hidden\">\n\t\t\t\t<img class=\"float-spinner\"\n\t\t\t\t\talt=\"\"\n\t\t\t\t\t:src=\"loadingIcon\">\n\t\t\t\t<span id=\"messageText\" />\n\t\t\t\t<!-- the following div ensures that the spinner is always inside the #message div -->\n\t\t\t\t<div style=\"clear: both;\" />\n\t\t\t</div>\n\t\t\t<h2 class=\"login-form__headline\" data-login-form-headline v-html=\"headline\" />\n\t\t\t<NcTextField id=\"user\"\n\t\t\t\tref=\"user\"\n\t\t\t\t:label=\"t('core', 'Account name or email')\"\n\t\t\t\t:label-visible=\"true\"\n\t\t\t\tname=\"user\"\n\t\t\t\t:value.sync=\"user\"\n\t\t\t\t:class=\"{shake: invalidPassword}\"\n\t\t\t\tautocapitalize=\"none\"\n\t\t\t\t:spellchecking=\"false\"\n\t\t\t\t:autocomplete=\"autoCompleteAllowed ? 'username' : 'off'\"\n\t\t\t\trequired\n\t\t\t\tdata-login-form-input-user\n\t\t\t\t@change=\"updateUsername\" />\n\n\t\t\t<NcPasswordField id=\"password\"\n\t\t\t\tref=\"password\"\n\t\t\t\tname=\"password\"\n\t\t\t\t:label-visible=\"true\"\n\t\t\t\t:class=\"{shake: invalidPassword}\"\n\t\t\t\t:value.sync=\"password\"\n\t\t\t\t:spellchecking=\"false\"\n\t\t\t\tautocapitalize=\"none\"\n\t\t\t\t:autocomplete=\"autoCompleteAllowed ? 'current-password' : 'off'\"\n\t\t\t\t:label=\"t('core', 'Password')\"\n\t\t\t\t:helper-text=\"errorLabel\"\n\t\t\t\t:error=\"isError\"\n\t\t\t\tdata-login-form-input-password\n\t\t\t\trequired />\n\n\t\t\t<LoginButton data-login-form-submit :loading=\"loading\" />\n\n\t\t\t<input v-if=\"redirectUrl\"\n\t\t\t\ttype=\"hidden\"\n\t\t\t\tname=\"redirect_url\"\n\t\t\t\t:value=\"redirectUrl\">\n\t\t\t<input type=\"hidden\"\n\t\t\t\tname=\"timezone\"\n\t\t\t\t:value=\"timezone\">\n\t\t\t<input type=\"hidden\"\n\t\t\t\tname=\"timezone_offset\"\n\t\t\t\t:value=\"timezoneOffset\">\n\t\t\t<input type=\"hidden\"\n\t\t\t\tname=\"requesttoken\"\n\t\t\t\t:value=\"OC.requestToken\">\n\t\t\t<input v-if=\"directLogin\"\n\t\t\t\ttype=\"hidden\"\n\t\t\t\tname=\"direct\"\n\t\t\t\tvalue=\"1\">\n\t\t</fieldset>\n\t</form>\n</template>\n\n<script>\nimport { generateUrl, imagePath } from '@nextcloud/router'\n\nimport NcPasswordField from '@nextcloud/vue/dist/Components/NcPasswordField.js'\nimport NcTextField from '@nextcloud/vue/dist/Components/NcTextField.js'\nimport NcNoteCard from '@nextcloud/vue/dist/Components/NcNoteCard.js'\n\nimport LoginButton from './LoginButton.vue'\n\nexport default {\n\tname: 'LoginForm',\n\n\tcomponents: {\n\t\tLoginButton,\n\t\tNcPasswordField,\n\t\tNcTextField,\n\t\tNcNoteCard,\n\t},\n\n\tprops: {\n\t\tusername: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\tredirectUrl: {\n\t\t\ttype: [String, Boolean],\n\t\t\tdefault: false,\n\t\t},\n\t\terrors: {\n\t\t\ttype: Array,\n\t\t\tdefault: () => [],\n\t\t},\n\t\tmessages: {\n\t\t\ttype: Array,\n\t\t\tdefault: () => [],\n\t\t},\n\t\tthrottleDelay: {\n\t\t\ttype: Number,\n\t\t\tdefault: 0,\n\t\t},\n\t\tautoCompleteAllowed: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t\tdirectLogin: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tloading: false,\n\t\t\ttimezone: (new Intl.DateTimeFormat())?.resolvedOptions()?.timeZone,\n\t\t\ttimezoneOffset: (-new Date().getTimezoneOffset() / 60),\n\t\t\theadline: t('core', 'Log in to {productName}', { productName: OC.theme.name }),\n\t\t\tuser: '',\n\t\t\tpassword: '',\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tisError() {\n\t\t\treturn this.invalidPassword || this.userDisabled\n\t\t\t\t|| this.throttleDelay > 5000\n\t\t},\n\t\terrorLabel() {\n\t\t\tif (this.invalidPassword) {\n\t\t\t\treturn t('core', 'Wrong username or password.')\n\t\t\t}\n\t\t\tif (this.userDisabled) {\n\t\t\t\treturn t('core', 'User disabled')\n\t\t\t}\n\t\t\tif (this.throttleDelay > 5000) {\n\t\t\t\treturn t('core', 'We have detected multiple invalid login attempts from your IP. Therefore your next login is throttled up to 30 seconds.')\n\t\t\t}\n\t\t\treturn undefined\n\t\t},\n\t\tapacheAuthFailed() {\n\t\t\treturn this.errors.indexOf('apacheAuthFailed') !== -1\n\t\t},\n\t\tinternalException() {\n\t\t\treturn this.errors.indexOf('internalexception') !== -1\n\t\t},\n\t\tinvalidPassword() {\n\t\t\treturn this.errors.indexOf('invalidpassword') !== -1\n\t\t},\n\t\tuserDisabled() {\n\t\t\treturn this.errors.indexOf('userdisabled') !== -1\n\t\t},\n\t\tloadingIcon() {\n\t\t\treturn imagePath('core', 'loading-dark.gif')\n\t\t},\n\t\tloginActionUrl() {\n\t\t\treturn generateUrl('login')\n\t\t},\n\t},\n\n\tmounted() {\n\t\tif (this.username === '') {\n\t\t\tthis.$refs.user.$refs.inputField.$refs.input.focus()\n\t\t} else {\n\t\t\tthis.user = this.username\n\t\t\tthis.$refs.password.$refs.inputField.$refs.input.focus()\n\t\t}\n\t},\n\n\tmethods: {\n\t\tupdateUsername() {\n\t\t\tthis.$emit('update:username', this.user)\n\t\t},\n\t\tsubmit() {\n\t\t\tthis.loading = true\n\t\t\tthis.$emit('submit')\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.login-form {\n\ttext-align: left;\n\tfont-size: 1rem;\n\n\t&__fieldset {\n\t\twidth: 100%;\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tgap: .5rem;\n\t}\n\n\t&__headline {\n\t\ttext-align: center;\n\t}\n}\n</style>\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoginForm.vue?vue&type=style&index=0&id=5bd351bc&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoginForm.vue?vue&type=style&index=0&id=5bd351bc&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./LoginForm.vue?vue&type=template&id=5bd351bc&scoped=true&\"\nimport script from \"./LoginForm.vue?vue&type=script&lang=js&\"\nexport * from \"./LoginForm.vue?vue&type=script&lang=js&\"\nimport style0 from \"./LoginForm.vue?vue&type=style&index=0&id=5bd351bc&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"5bd351bc\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('form',{ref:\"loginForm\",staticClass:\"login-form\",attrs:{\"method\":\"post\",\"name\":\"login\",\"action\":_vm.loginActionUrl},on:{\"submit\":_vm.submit}},[_c('fieldset',{staticClass:\"login-form__fieldset\",attrs:{\"data-login-form\":\"\"}},[(_vm.apacheAuthFailed)?_c('NcNoteCard',{attrs:{\"title\":_vm.t('core', 'Server side authentication failed!'),\"type\":\"warning\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('core', 'Please contact your administrator.'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.messages.length > 0)?_c('NcNoteCard',_vm._l((_vm.messages),function(message,index){return _c('div',{key:index},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(message)),_c('br')])}),0):_vm._e(),_vm._v(\" \"),(_vm.internalException)?_c('NcNoteCard',{class:_vm.t('core', 'An internal error occurred.'),attrs:{\"type\":\"warning\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('core', 'Please try again or contact your administrator.'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"hidden\",attrs:{\"id\":\"message\"}},[_c('img',{staticClass:\"float-spinner\",attrs:{\"alt\":\"\",\"src\":_vm.loadingIcon}}),_vm._v(\" \"),_c('span',{attrs:{\"id\":\"messageText\"}}),_vm._v(\" \"),_c('div',{staticStyle:{\"clear\":\"both\"}})]),_vm._v(\" \"),_c('h2',{staticClass:\"login-form__headline\",attrs:{\"data-login-form-headline\":\"\"},domProps:{\"innerHTML\":_vm._s(_vm.headline)}}),_vm._v(\" \"),_c('NcTextField',{ref:\"user\",class:{shake: _vm.invalidPassword},attrs:{\"id\":\"user\",\"label\":_vm.t('core', 'Account name or email'),\"label-visible\":true,\"name\":\"user\",\"value\":_vm.user,\"autocapitalize\":\"none\",\"spellchecking\":false,\"autocomplete\":_vm.autoCompleteAllowed ? 'username' : 'off',\"required\":\"\",\"data-login-form-input-user\":\"\"},on:{\"update:value\":function($event){_vm.user=$event},\"change\":_vm.updateUsername}}),_vm._v(\" \"),_c('NcPasswordField',{ref:\"password\",class:{shake: _vm.invalidPassword},attrs:{\"id\":\"password\",\"name\":\"password\",\"label-visible\":true,\"value\":_vm.password,\"spellchecking\":false,\"autocapitalize\":\"none\",\"autocomplete\":_vm.autoCompleteAllowed ? 'current-password' : 'off',\"label\":_vm.t('core', 'Password'),\"helper-text\":_vm.errorLabel,\"error\":_vm.isError,\"data-login-form-input-password\":\"\",\"required\":\"\"},on:{\"update:value\":function($event){_vm.password=$event}}}),_vm._v(\" \"),_c('LoginButton',{attrs:{\"data-login-form-submit\":\"\",\"loading\":_vm.loading}}),_vm._v(\" \"),(_vm.redirectUrl)?_c('input',{attrs:{\"type\":\"hidden\",\"name\":\"redirect_url\"},domProps:{\"value\":_vm.redirectUrl}}):_vm._e(),_vm._v(\" \"),_c('input',{attrs:{\"type\":\"hidden\",\"name\":\"timezone\"},domProps:{\"value\":_vm.timezone}}),_vm._v(\" \"),_c('input',{attrs:{\"type\":\"hidden\",\"name\":\"timezone_offset\"},domProps:{\"value\":_vm.timezoneOffset}}),_vm._v(\" \"),_c('input',{attrs:{\"type\":\"hidden\",\"name\":\"requesttoken\"},domProps:{\"value\":_vm.OC.requestToken}}),_vm._v(\" \"),(_vm.directLogin)?_c('input',{attrs:{\"type\":\"hidden\",\"name\":\"direct\",\"value\":\"1\"}}):_vm._e()],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n\t<form v-if=\"(isHttps || isLocalhost) && hasPublicKeyCredential\"\n\t\tref=\"loginForm\"\n\t\tmethod=\"post\"\n\t\tname=\"login\"\n\t\t@submit.prevent=\"submit\">\n\t\t<fieldset>\n\t\t\t<p class=\"grouptop groupbottom\">\n\t\t\t\t<label for=\"user\" class=\"infield\">{{ t('core', 'Username or\temail') }}</label>\n\t\t\t\t<input id=\"user\"\n\t\t\t\t\tref=\"user\"\n\t\t\t\t\tv-model=\"user\"\n\t\t\t\t\ttype=\"text\"\n\t\t\t\t\tname=\"user\"\n\t\t\t\t\t:autocomplete=\"autoCompleteAllowed ? 'on' : 'off'\"\n\t\t\t\t\t:placeholder=\"t('core', 'Username or email')\"\n\t\t\t\t\t:aria-label=\"t('core', 'Username or email')\"\n\t\t\t\t\trequired\n\t\t\t\t\t@change=\"$emit('update:username', user)\">\n\t\t\t</p>\n\n\t\t\t<div v-if=\"!validCredentials\" class=\"body-login-container update form__message-box\">\n\t\t\t\t{{ t('core', 'Your account is not setup for passwordless login.') }}\n\t\t\t</div>\n\n\t\t\t<LoginButton v-if=\"validCredentials\"\n\t\t\t\t:loading=\"loading\"\n\t\t\t\t@click=\"authenticate\" />\n\t\t</fieldset>\n\t</form>\n\t<div v-else-if=\"!hasPublicKeyCredential\" class=\"body-login-container update\">\n\t\t<InformationIcon size=\"70\" />\n\t\t<h2>{{ t('core', 'Browser not supported') }}</h2>\n\t\t<p class=\"infogroup\">\n\t\t\t{{ t('core', 'Passwordless authentication is not supported in your browser.') }}\n\t\t</p>\n\t</div>\n\t<div v-else-if=\"!isHttps && !isLocalhost\" class=\"body-login-container update\">\n\t\t<LockOpenIcon size=\"70\" />\n\t\t<h2>{{ t('core', 'Your connection is not secure') }}</h2>\n\t\t<p class=\"infogroup\">\n\t\t\t{{ t('core', 'Passwordless authentication is only available over a secure connection.') }}\n\t\t</p>\n\t</div>\n</template>\n\n<script>\nimport {\n\tstartAuthentication,\n\tfinishAuthentication,\n} from '../../services/WebAuthnAuthenticationService'\nimport LoginButton from './LoginButton'\nimport InformationIcon from 'vue-material-design-icons/Information'\nimport LockOpenIcon from 'vue-material-design-icons/LockOpen'\n\nclass NoValidCredentials extends Error {\n\n}\n\nexport default {\n\tname: 'PasswordLessLoginForm',\n\tcomponents: {\n\t\tLoginButton,\n\t\tInformationIcon,\n\t\tLockOpenIcon,\n\t},\n\tprops: {\n\t\tusername: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\tredirectUrl: {\n\t\t\ttype: [String, Boolean],\n\t\t\tdefault: false,\n\t\t},\n\t\tautoCompleteAllowed: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t\tisHttps: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tisLocalhost: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\thasPublicKeyCredential: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tuser: this.username,\n\t\t\tloading: false,\n\t\t\tvalidCredentials: true,\n\t\t}\n\t},\n\tmethods: {\n\t\tauthenticate() {\n\t\t\tconsole.debug('passwordless login initiated')\n\n\t\t\tthis.getAuthenticationData(this.user)\n\t\t\t\t.then(publicKey => {\n\t\t\t\t\tconsole.debug(publicKey)\n\t\t\t\t\treturn publicKey\n\t\t\t\t})\n\t\t\t\t.then(this.sign)\n\t\t\t\t.then(this.completeAuthentication)\n\t\t\t\t.catch(error => {\n\t\t\t\t\tif (error instanceof NoValidCredentials) {\n\t\t\t\t\t\tthis.validCredentials = false\n\t\t\t\t\t\treturn\n\t\t\t\t\t}\n\t\t\t\t\tconsole.debug(error)\n\t\t\t\t})\n\t\t},\n\t\tgetAuthenticationData(uid) {\n\t\t\tconst base64urlDecode = function(input) {\n\t\t\t\t// Replace non-url compatible chars with base64 standard chars\n\t\t\t\tinput = input\n\t\t\t\t\t.replace(/-/g, '+')\n\t\t\t\t\t.replace(/_/g, '/')\n\n\t\t\t\t// Pad out with standard base64 required padding characters\n\t\t\t\tconst pad = input.length % 4\n\t\t\t\tif (pad) {\n\t\t\t\t\tif (pad === 1) {\n\t\t\t\t\t\tthrow new Error('InvalidLengthError: Input base64url string is the wrong length to determine padding')\n\t\t\t\t\t}\n\t\t\t\t\tinput += new Array(5 - pad).join('=')\n\t\t\t\t}\n\n\t\t\t\treturn window.atob(input)\n\t\t\t}\n\n\t\t\treturn startAuthentication(uid)\n\t\t\t\t.then(publicKey => {\n\t\t\t\t\tconsole.debug('Obtained PublicKeyCredentialRequestOptions')\n\t\t\t\t\tconsole.debug(publicKey)\n\n\t\t\t\t\tif (!Object.prototype.hasOwnProperty.call(publicKey, 'allowCredentials')) {\n\t\t\t\t\t\tconsole.debug('No credentials found.')\n\t\t\t\t\t\tthrow new NoValidCredentials()\n\t\t\t\t\t}\n\n\t\t\t\t\tpublicKey.challenge = Uint8Array.from(base64urlDecode(publicKey.challenge), c => c.charCodeAt(0))\n\t\t\t\t\tpublicKey.allowCredentials = publicKey.allowCredentials.map(function(data) {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t...data,\n\t\t\t\t\t\t\tid: Uint8Array.from(base64urlDecode(data.id), c => c.charCodeAt(0)),\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\n\t\t\t\t\tconsole.debug('Converted PublicKeyCredentialRequestOptions')\n\t\t\t\t\tconsole.debug(publicKey)\n\t\t\t\t\treturn publicKey\n\t\t\t\t})\n\t\t\t\t.catch(error => {\n\t\t\t\t\tconsole.debug('Error while obtaining data')\n\t\t\t\t\tthrow error\n\t\t\t\t})\n\t\t},\n\t\tsign(publicKey) {\n\t\t\tconst arrayToBase64String = function(a) {\n\t\t\t\treturn window.btoa(String.fromCharCode(...a))\n\t\t\t}\n\n\t\t\tconst arrayToString = function(a) {\n\t\t\t\treturn String.fromCharCode(...a)\n\t\t\t}\n\n\t\t\treturn navigator.credentials.get({ publicKey })\n\t\t\t\t.then(data => {\n\t\t\t\t\tconsole.debug(data)\n\t\t\t\t\tconsole.debug(new Uint8Array(data.rawId))\n\t\t\t\t\tconsole.debug(arrayToBase64String(new Uint8Array(data.rawId)))\n\t\t\t\t\treturn {\n\t\t\t\t\t\tid: data.id,\n\t\t\t\t\t\ttype: data.type,\n\t\t\t\t\t\trawId: arrayToBase64String(new Uint8Array(data.rawId)),\n\t\t\t\t\t\tresponse: {\n\t\t\t\t\t\t\tauthenticatorData: arrayToBase64String(new Uint8Array(data.response.authenticatorData)),\n\t\t\t\t\t\t\tclientDataJSON: arrayToBase64String(new Uint8Array(data.response.clientDataJSON)),\n\t\t\t\t\t\t\tsignature: arrayToBase64String(new Uint8Array(data.response.signature)),\n\t\t\t\t\t\t\tuserHandle: data.response.userHandle ? arrayToString(new Uint8Array(data.response.userHandle)) : null,\n\t\t\t\t\t\t},\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t.then(challenge => {\n\t\t\t\t\tconsole.debug(challenge)\n\t\t\t\t\treturn challenge\n\t\t\t\t})\n\t\t\t\t.catch(error => {\n\t\t\t\t\tconsole.debug('GOT AN ERROR!')\n\t\t\t\t\tconsole.debug(error) // Example: timeout, interaction refused...\n\t\t\t\t})\n\t\t},\n\t\tcompleteAuthentication(challenge) {\n\t\t\tconsole.debug('TIME TO COMPLETE')\n\n\t\t\tconst redirectUrl = this.redirectUrl\n\n\t\t\treturn finishAuthentication(JSON.stringify(challenge))\n\t\t\t\t.then(({ defaultRedirectUrl }) => {\n\t\t\t\t\tconsole.debug('Logged in redirecting')\n\t\t\t\t\t// Redirect url might be false so || should be used instead of ??.\n\t\t\t\t\twindow.location.href = redirectUrl || defaultRedirectUrl\n\t\t\t\t})\n\t\t\t\t.catch(error => {\n\t\t\t\t\tconsole.debug('GOT AN ERROR WHILE SUBMITTING CHALLENGE!')\n\t\t\t\t\tconsole.debug(error) // Example: timeout, interaction refused...\n\t\t\t\t})\n\t\t},\n\t\tsubmit() {\n\t\t\t// noop\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n\t.body-login-container.update {\n\t\tmargin: 15px 0;\n\n\t\t&.form__message-box {\n\t\t\twidth: 240px;\n\t\t\tmargin: 5px;\n\t\t}\n\t}\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PasswordLessLoginForm.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PasswordLessLoginForm.vue?vue&type=script&lang=js&\"","/**\n * @copyright 2020, Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport Axios from '@nextcloud/axios'\nimport { generateUrl } from '@nextcloud/router'\n\n/**\n * @param {any} loginName -\n */\nexport function startAuthentication(loginName) {\n\tconst url = generateUrl('/login/webauthn/start')\n\n\treturn Axios.post(url, { loginName })\n\t\t.then(resp => resp.data)\n}\n\n/**\n * @param {any} data -\n */\nexport function finishAuthentication(data) {\n\tconst url = generateUrl('/login/webauthn/finish')\n\n\treturn Axios.post(url, { data })\n\t\t.then(resp => resp.data)\n}\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PasswordLessLoginForm.vue?vue&type=style&index=0&id=20256748&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PasswordLessLoginForm.vue?vue&type=style&index=0&id=20256748&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./PasswordLessLoginForm.vue?vue&type=template&id=20256748&scoped=true&\"\nimport script from \"./PasswordLessLoginForm.vue?vue&type=script&lang=js&\"\nexport * from \"./PasswordLessLoginForm.vue?vue&type=script&lang=js&\"\nimport style0 from \"./PasswordLessLoginForm.vue?vue&type=style&index=0&id=20256748&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"20256748\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return ((_vm.isHttps || _vm.isLocalhost) && _vm.hasPublicKeyCredential)?_c('form',{ref:\"loginForm\",attrs:{\"method\":\"post\",\"name\":\"login\"},on:{\"submit\":function($event){$event.preventDefault();return _vm.submit.apply(null, arguments)}}},[_c('fieldset',[_c('p',{staticClass:\"grouptop groupbottom\"},[_c('label',{staticClass:\"infield\",attrs:{\"for\":\"user\"}},[_vm._v(_vm._s(_vm.t('core', 'Username or\temail')))]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.user),expression:\"user\"}],ref:\"user\",attrs:{\"id\":\"user\",\"type\":\"text\",\"name\":\"user\",\"autocomplete\":_vm.autoCompleteAllowed ? 'on' : 'off',\"placeholder\":_vm.t('core', 'Username or email'),\"aria-label\":_vm.t('core', 'Username or email'),\"required\":\"\"},domProps:{\"value\":(_vm.user)},on:{\"change\":function($event){return _vm.$emit('update:username', _vm.user)},\"input\":function($event){if($event.target.composing)return;_vm.user=$event.target.value}}})]),_vm._v(\" \"),(!_vm.validCredentials)?_c('div',{staticClass:\"body-login-container update form__message-box\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('core', 'Your account is not setup for passwordless login.'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.validCredentials)?_c('LoginButton',{attrs:{\"loading\":_vm.loading},on:{\"click\":_vm.authenticate}}):_vm._e()],1)]):(!_vm.hasPublicKeyCredential)?_c('div',{staticClass:\"body-login-container update\"},[_c('InformationIcon',{attrs:{\"size\":\"70\"}}),_vm._v(\" \"),_c('h2',[_vm._v(_vm._s(_vm.t('core', 'Browser not supported')))]),_vm._v(\" \"),_c('p',{staticClass:\"infogroup\"},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('core', 'Passwordless authentication is not supported in your browser.'))+\"\\n\\t\")])],1):(!_vm.isHttps && !_vm.isLocalhost)?_c('div',{staticClass:\"body-login-container update\"},[_c('LockOpenIcon',{attrs:{\"size\":\"70\"}}),_vm._v(\" \"),_c('h2',[_vm._v(_vm._s(_vm.t('core', 'Your connection is not secure')))]),_vm._v(\" \"),_c('p',{staticClass:\"infogroup\"},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('core', 'Passwordless authentication is only available over a secure connection.'))+\"\\n\\t\")])],1):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ResetPassword.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ResetPassword.vue?vue&type=script&lang=js&\"","<!--\n - @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n -\n - @author 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -->\n\n<template>\n\t<form class=\"login-form\" @submit.prevent=\"submit\">\n\t\t<fieldset class=\"login-form__fieldset\">\n\t\t\t<NcTextField id=\"user\"\n\t\t\t\t:value.sync=\"user\"\n\t\t\t\tname=\"user\"\n\t\t\t\tautocapitalize=\"off\"\n\t\t\t\t:label=\"t('core', 'Account name or email')\"\n\t\t\t\t:label-visible=\"true\"\n\t\t\t\trequired\n\t\t\t\t@change=\"updateUsername\" />\n\t\t\t<LoginButton :value=\"t('core', 'Reset password')\" />\n\n\t\t\t<NcNoteCard v-if=\"message === 'send-success'\"\n\t\t\t\ttype=\"success\">\n\t\t\t\t{{ t('core', 'A password reset message has been sent to the email address of this account. If you do not receive it, check your spam/junk folders or ask your local administrator for help.') }}\n\t\t\t\t<br>\n\t\t\t\t{{ t('core', 'If it is not there ask your local administrator.') }}\n\t\t\t</NcNoteCard>\n\t\t\t<NcNoteCard v-else-if=\"message === 'send-error'\"\n\t\t\t\ttype=\"error\">\n\t\t\t\t{{ t('core', 'Couldn\\'t send reset email. Please contact your administrator.') }}\n\t\t\t</NcNoteCard>\n\t\t\t<NcNoteCard v-else-if=\"message === 'reset-error'\"\n\t\t\t\ttype=\"error\">\n\t\t\t\t{{ t('core', 'Password cannot be changed. Please contact your administrator.') }}\n\t\t\t</NcNoteCard>\n\n\t\t\t<a class=\"login-form__link\"\n\t\t\t\thref=\"#\"\n\t\t\t\t@click.prevent=\"$emit('abort')\">\n\t\t\t\t{{ t('core', 'Back to login') }}\n\t\t\t</a>\n\t\t</fieldset>\n\t</form>\n</template>\n\n<script>\nimport axios from '@nextcloud/axios'\nimport { generateUrl } from '@nextcloud/router'\nimport LoginButton from './LoginButton.vue'\nimport NcTextField from '@nextcloud/vue/dist/Components/NcTextField.js'\nimport NcNoteCard from '@nextcloud/vue/dist/Components/NcNoteCard.js'\n\nexport default {\n\tname: 'ResetPassword',\n\tcomponents: {\n\t\tLoginButton,\n\t\tNcNoteCard,\n\t\tNcTextField,\n\t},\n\tprops: {\n\t\tusername: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tresetPasswordLink: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\terror: false,\n\t\t\tloading: false,\n\t\t\tmessage: undefined,\n\t\t\tuser: this.username,\n\t\t}\n\t},\n\twatch: {\n\t\tusername(value) {\n\t\t\tthis.user = value\n\t\t},\n\t},\n\tmethods: {\n\t\tupdateUsername() {\n\t\t\tthis.$emit('update:username', this.user)\n\t\t},\n\t\tsubmit() {\n\t\t\tthis.loading = true\n\t\t\tthis.error = false\n\t\t\tthis.message = ''\n\t\t\tconst url = generateUrl('/lostpassword/email')\n\n\t\t\tconst data = {\n\t\t\t\tuser: this.user,\n\t\t\t}\n\n\t\t\treturn axios.post(url, data)\n\t\t\t\t.then(resp => resp.data)\n\t\t\t\t.then(data => {\n\t\t\t\t\tif (data.status !== 'success') {\n\t\t\t\t\t\tthrow new Error(`got status ${data.status}`)\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.message = 'send-success'\n\t\t\t\t})\n\t\t\t\t.catch(e => {\n\t\t\t\t\tconsole.error('could not send reset email request', e)\n\n\t\t\t\t\tthis.error = true\n\t\t\t\t\tthis.message = 'send-error'\n\t\t\t\t})\n\t\t\t\t.then(() => { this.loading = false })\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.login-form {\n\ttext-align: left;\n\tfont-size: 1rem;\n\n\t&__fieldset {\n\t\twidth: 100%;\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tgap: .5rem;\n\t}\n\n\t&__link {\n\t\tdisplay: block;\n\t\tfont-weight: normal !important;\n\t\tpadding-bottom: 1rem;\n\t\tcursor: pointer;\n\t\tfont-size: var(--default-font-size);\n\t\ttext-align: center;\n\t\tpadding: .5rem 1rem 1rem 1rem;\n\t}\n}\n</style>\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ResetPassword.vue?vue&type=style&index=0&id=27cabc60&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ResetPassword.vue?vue&type=style&index=0&id=27cabc60&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./ResetPassword.vue?vue&type=template&id=27cabc60&scoped=true&\"\nimport script from \"./ResetPassword.vue?vue&type=script&lang=js&\"\nexport * from \"./ResetPassword.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ResetPassword.vue?vue&type=style&index=0&id=27cabc60&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"27cabc60\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('form',{staticClass:\"login-form\",on:{\"submit\":function($event){$event.preventDefault();return _vm.submit.apply(null, arguments)}}},[_c('fieldset',{staticClass:\"login-form__fieldset\"},[_c('NcTextField',{attrs:{\"id\":\"user\",\"value\":_vm.user,\"name\":\"user\",\"autocapitalize\":\"off\",\"label\":_vm.t('core', 'Account name or email'),\"label-visible\":true,\"required\":\"\"},on:{\"update:value\":function($event){_vm.user=$event},\"change\":_vm.updateUsername}}),_vm._v(\" \"),_c('LoginButton',{attrs:{\"value\":_vm.t('core', 'Reset password')}}),_vm._v(\" \"),(_vm.message === 'send-success')?_c('NcNoteCard',{attrs:{\"type\":\"success\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('core', 'A password reset message has been sent to the email address of this account. If you do not receive it, check your spam/junk folders or ask your local administrator for help.'))+\"\\n\\t\\t\\t\"),_c('br'),_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('core', 'If it is not there ask your local administrator.'))+\"\\n\\t\\t\")]):(_vm.message === 'send-error')?_c('NcNoteCard',{attrs:{\"type\":\"error\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('core', 'Couldn\\'t send reset email. Please contact your administrator.'))+\"\\n\\t\\t\")]):(_vm.message === 'reset-error')?_c('NcNoteCard',{attrs:{\"type\":\"error\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('core', 'Password cannot be changed. Please contact your administrator.'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),_c('a',{staticClass:\"login-form__link\",attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();return _vm.$emit('abort')}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('core', 'Back to login'))+\"\\n\\t\\t\")])],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<form @submit.prevent=\"submit\">\n\t\t<fieldset>\n\t\t\t<p>\n\t\t\t\t<label for=\"password\" class=\"infield\">{{ t('core', 'New password') }}</label>\n\t\t\t\t<input id=\"password\"\n\t\t\t\t\tv-model=\"password\"\n\t\t\t\t\ttype=\"password\"\n\t\t\t\t\tname=\"password\"\n\t\t\t\t\tautocomplete=\"new-password\"\n\t\t\t\t\tautocapitalize=\"none\"\n\t\t\t\t\tautocorrect=\"off\"\n\t\t\t\t\trequired\n\t\t\t\t\t:placeholder=\"t('core', 'New password')\">\n\t\t\t</p>\n\n\t\t\t<div v-if=\"encrypted\" class=\"update\">\n\t\t\t\t<p>\n\t\t\t\t\t{{ t('core', 'Your files are encrypted. There will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?') }}\n\t\t\t\t</p>\n\t\t\t\t<input id=\"encrypted-continue\"\n\t\t\t\t\tv-model=\"proceed\"\n\t\t\t\t\ttype=\"checkbox\"\n\t\t\t\t\tclass=\"checkbox\">\n\t\t\t\t<label for=\"encrypted-continue\">\n\t\t\t\t\t{{ t('core', 'I know what I\\'m doing') }}\n\t\t\t\t</label>\n\t\t\t</div>\n\n\t\t\t<LoginButton :loading=\"loading\"\n\t\t\t\t:value=\"t('core', 'Reset password')\"\n\t\t\t\t:value-loading=\"t('core', 'Resetting password')\" />\n\n\t\t\t<p v-if=\"error && message\" :class=\"{warning: error}\">\n\t\t\t\t{{ message }}\n\t\t\t</p>\n\t\t</fieldset>\n\t</form>\n</template>\n\n<script>\nimport Axios from '@nextcloud/axios'\nimport LoginButton from './LoginButton.vue'\n\nexport default {\n\tname: 'UpdatePassword',\n\tcomponents: {\n\t\tLoginButton,\n\t},\n\tprops: {\n\t\tusername: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tresetPasswordTarget: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\terror: false,\n\t\t\tloading: false,\n\t\t\tmessage: undefined,\n\t\t\tuser: this.username,\n\t\t\tpassword: '',\n\t\t\tencrypted: false,\n\t\t\tproceed: false,\n\t\t}\n\t},\n\twatch: {\n\t\tusername(value) {\n\t\t\tthis.user = value\n\t\t},\n\t},\n\tmethods: {\n\t\tasync submit() {\n\t\t\tthis.loading = true\n\t\t\tthis.error = false\n\t\t\tthis.message = ''\n\n\t\t\ttry {\n\t\t\t\tconst { data } = await Axios.post(this.resetPasswordTarget, {\n\t\t\t\t\tpassword: this.password,\n\t\t\t\t\tproceed: this.proceed,\n\t\t\t\t})\n\t\t\t\tif (data && data.status === 'success') {\n\t\t\t\t\tthis.message = 'send-success'\n\t\t\t\t\tthis.$emit('update:username', this.user)\n\t\t\t\t\tthis.$emit('done')\n\t\t\t\t} else if (data && data.encryption) {\n\t\t\t\t\tthis.encrypted = true\n\t\t\t\t} else if (data && data.msg) {\n\t\t\t\t\tthrow new Error(data.msg)\n\t\t\t\t} else {\n\t\t\t\t\tthrow new Error()\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\tthis.error = true\n\t\t\t\tthis.message = e.message ? e.message : t('core', 'Password cannot be changed. Please contact your administrator.')\n\t\t\t} finally {\n\t\t\t\tthis.loading = false\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n\n<style scoped>\n\tfieldset {\n\t\ttext-align: center;\n\t}\n\n\tinput[type=submit] {\n\t\tmargin-top: 20px;\n\t}\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UpdatePassword.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UpdatePassword.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UpdatePassword.vue?vue&type=style&index=0&id=4dc21d74&prod&scoped=true&lang=css&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UpdatePassword.vue?vue&type=style&index=0&id=4dc21d74&prod&scoped=true&lang=css&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./UpdatePassword.vue?vue&type=template&id=4dc21d74&scoped=true&\"\nimport script from \"./UpdatePassword.vue?vue&type=script&lang=js&\"\nexport * from \"./UpdatePassword.vue?vue&type=script&lang=js&\"\nimport style0 from \"./UpdatePassword.vue?vue&type=style&index=0&id=4dc21d74&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"4dc21d74\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('form',{on:{\"submit\":function($event){$event.preventDefault();return _vm.submit.apply(null, arguments)}}},[_c('fieldset',[_c('p',[_c('label',{staticClass:\"infield\",attrs:{\"for\":\"password\"}},[_vm._v(_vm._s(_vm.t('core', 'New password')))]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.password),expression:\"password\"}],attrs:{\"id\":\"password\",\"type\":\"password\",\"name\":\"password\",\"autocomplete\":\"new-password\",\"autocapitalize\":\"none\",\"autocorrect\":\"off\",\"required\":\"\",\"placeholder\":_vm.t('core', 'New password')},domProps:{\"value\":(_vm.password)},on:{\"input\":function($event){if($event.target.composing)return;_vm.password=$event.target.value}}})]),_vm._v(\" \"),(_vm.encrypted)?_c('div',{staticClass:\"update\"},[_c('p',[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Your files are encrypted. There will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.proceed),expression:\"proceed\"}],staticClass:\"checkbox\",attrs:{\"id\":\"encrypted-continue\",\"type\":\"checkbox\"},domProps:{\"checked\":Array.isArray(_vm.proceed)?_vm._i(_vm.proceed,null)>-1:(_vm.proceed)},on:{\"change\":function($event){var $$a=_vm.proceed,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.proceed=$$a.concat([$$v]))}else{$$i>-1&&(_vm.proceed=$$a.slice(0,$$i).concat($$a.slice($$i+1)))}}else{_vm.proceed=$$c}}}}),_vm._v(\" \"),_c('label',{attrs:{\"for\":\"encrypted-continue\"}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'I know what I\\'m doing'))+\"\\n\\t\\t\\t\")])]):_vm._e(),_vm._v(\" \"),_c('LoginButton',{attrs:{\"loading\":_vm.loading,\"value\":_vm.t('core', 'Reset password'),\"value-loading\":_vm.t('core', 'Resetting password')}}),_vm._v(\" \"),(_vm.error && _vm.message)?_c('p',{class:{warning: _vm.error}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.message)+\"\\n\\t\\t\")]):_vm._e()],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n -\n - @author 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -->\n\n<template>\n\t<div class=\"guest-box login-box\">\n\t\t<div v-if=\"!hideLoginForm || directLogin\">\n\t\t\t<transition name=\"fade\" mode=\"out-in\">\n\t\t\t\t<div v-if=\"!passwordlessLogin && !resetPassword && resetPasswordTarget === ''\">\n\t\t\t\t\t<LoginForm :username.sync=\"user\"\n\t\t\t\t\t\t:redirect-url=\"redirectUrl\"\n\t\t\t\t\t\t:direct-login=\"directLogin\"\n\t\t\t\t\t\t:messages=\"messages\"\n\t\t\t\t\t\t:errors=\"errors\"\n\t\t\t\t\t\t:throttle-delay=\"throttleDelay\"\n\t\t\t\t\t\t:auto-complete-allowed=\"autoCompleteAllowed\"\n\t\t\t\t\t\t@submit=\"loading = true\" />\n\t\t\t\t\t<a v-if=\"canResetPassword && resetPasswordLink !== ''\"\n\t\t\t\t\t\tid=\"lost-password\"\n\t\t\t\t\t\tclass=\"login-box__link\"\n\t\t\t\t\t\t:href=\"resetPasswordLink\">\n\t\t\t\t\t\t{{ t('core', 'Forgot password?') }}\n\t\t\t\t\t</a>\n\t\t\t\t\t<a v-else-if=\"canResetPassword && !resetPassword\"\n\t\t\t\t\t\tid=\"lost-password\"\n\t\t\t\t\t\tclass=\"login-box__link\"\n\t\t\t\t\t\t:href=\"resetPasswordLink\"\n\t\t\t\t\t\t@click.prevent=\"resetPassword = true\">\n\t\t\t\t\t\t{{ t('core', 'Forgot password?') }}\n\t\t\t\t\t</a>\n\t\t\t\t\t<template v-if=\"hasPasswordless\">\n\t\t\t\t\t\t<div v-if=\"countAlternativeLogins\"\n\t\t\t\t\t\t\tclass=\"alternative-logins\">\n\t\t\t\t\t\t\t<a v-if=\"hasPasswordless\"\n\t\t\t\t\t\t\t\tclass=\"button\"\n\t\t\t\t\t\t\t\t:class=\"{ 'single-alt-login-option': countAlternativeLogins }\"\n\t\t\t\t\t\t\t\thref=\"#\"\n\t\t\t\t\t\t\t\t@click.prevent=\"passwordlessLogin = true\">\n\t\t\t\t\t\t\t\t{{ t('core', 'Log in with a device') }}\n\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<a v-else\n\t\t\t\t\t\t\thref=\"#\"\n\t\t\t\t\t\t\t@click.prevent=\"passwordlessLogin = true\">\n\t\t\t\t\t\t\t{{ t('core', 'Log in with a device') }}\n\t\t\t\t\t\t</a>\n\t\t\t\t\t</template>\n\t\t\t\t</div>\n\t\t\t\t<div v-else-if=\"!loading && passwordlessLogin\"\n\t\t\t\t\tkey=\"reset\"\n\t\t\t\t\tclass=\"login-additional\">\n\t\t\t\t\t<PasswordLessLoginForm :username.sync=\"user\"\n\t\t\t\t\t\t:redirect-url=\"redirectUrl\"\n\t\t\t\t\t\t:auto-complete-allowed=\"autoCompleteAllowed\"\n\t\t\t\t\t\t:is-https=\"isHttps\"\n\t\t\t\t\t\t:is-localhost=\"isLocalhost\"\n\t\t\t\t\t\t:has-public-key-credential=\"hasPublicKeyCredential\"\n\t\t\t\t\t\t@submit=\"loading = true\" />\n\t\t\t\t\t<a href=\"#\" class=\"login-box__link\" @click.prevent=\"passwordlessLogin = false\">\n\t\t\t\t\t\t{{ t('core', 'Back') }}\n\t\t\t\t\t</a>\n\t\t\t\t</div>\n\t\t\t\t<div v-else-if=\"!loading && canResetPassword\"\n\t\t\t\t\tkey=\"reset\"\n\t\t\t\t\tclass=\"login-additional\">\n\t\t\t\t\t<div class=\"lost-password-container\">\n\t\t\t\t\t\t<ResetPassword v-if=\"resetPassword\"\n\t\t\t\t\t\t\t:username.sync=\"user\"\n\t\t\t\t\t\t\t:reset-password-link=\"resetPasswordLink\"\n\t\t\t\t\t\t\t@abort=\"resetPassword = false\" />\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<div v-else-if=\"resetPasswordTarget !== ''\">\n\t\t\t\t\t<UpdatePassword :username.sync=\"user\"\n\t\t\t\t\t\t:reset-password-target=\"resetPasswordTarget\"\n\t\t\t\t\t\t@done=\"passwordResetFinished\" />\n\t\t\t\t</div>\n\t\t\t</transition>\n\t\t</div>\n\t\t<div v-else>\n\t\t\t<transition name=\"fade\" mode=\"out-in\">\n\t\t\t\t<NcNoteCard type=\"warning\" :title=\"t('core', 'Login form is disabled.')\">\n\t\t\t\t\t{{ t('core', 'Please contact your administrator.') }}\n\t\t\t\t</NcNoteCard>\n\t\t\t</transition>\n\t\t</div>\n\n\t\t<div id=\"alternative-logins\" class=\"alternative-logins\">\n\t\t\t<NcButton v-for=\"(alternativeLogin, index) in alternativeLogins\"\n\t\t\t\t:key=\"index\"\n\t\t\t\ttype=\"secondary\"\n\t\t\t\t:wide=\"true\"\n\t\t\t\t:class=\"[alternativeLogin.class]\"\n\t\t\t\trole=\"link\"\n\t\t\t\t:href=\"alternativeLogin.href\">\n\t\t\t\t{{ alternativeLogin.name }}\n\t\t\t</NcButton>\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nimport { loadState } from '@nextcloud/initial-state'\nimport queryString from 'query-string'\n\nimport LoginForm from '../components/login/LoginForm.vue'\nimport PasswordLessLoginForm from '../components/login/PasswordLessLoginForm.vue'\nimport ResetPassword from '../components/login/ResetPassword.vue'\nimport UpdatePassword from '../components/login/UpdatePassword.vue'\nimport NcButton from '@nextcloud/vue/dist/Components/NcButton.js'\nimport NcNoteCard from '@nextcloud/vue/dist/Components/NcNoteCard.js'\n\nconst query = queryString.parse(location.search)\nif (query.clear === '1') {\n\ttry {\n\t\twindow.localStorage.clear()\n\t\twindow.sessionStorage.clear()\n\t\tconsole.debug('Browser storage cleared')\n\t} catch (e) {\n\t\tconsole.error('Could not clear browser storage', e)\n\t}\n}\n\nexport default {\n\tname: 'Login',\n\n\tcomponents: {\n\t\tLoginForm,\n\t\tPasswordLessLoginForm,\n\t\tResetPassword,\n\t\tUpdatePassword,\n\t\tNcButton,\n\t\tNcNoteCard,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tloading: false,\n\t\t\tuser: loadState('core', 'loginUsername', ''),\n\t\t\tpasswordlessLogin: false,\n\t\t\tresetPassword: false,\n\n\t\t\t// Initial data\n\t\t\terrors: loadState('core', 'loginErrors', []),\n\t\t\tmessages: loadState('core', 'loginMessages', []),\n\t\t\tredirectUrl: loadState('core', 'loginRedirectUrl', false),\n\t\t\tthrottleDelay: loadState('core', 'loginThrottleDelay', 0),\n\t\t\tcanResetPassword: loadState('core', 'loginCanResetPassword', false),\n\t\t\tresetPasswordLink: loadState('core', 'loginResetPasswordLink', ''),\n\t\t\tautoCompleteAllowed: loadState('core', 'loginAutocomplete', true),\n\t\t\tresetPasswordTarget: loadState('core', 'resetPasswordTarget', ''),\n\t\t\tresetPasswordUser: loadState('core', 'resetPasswordUser', ''),\n\t\t\tdirectLogin: query.direct === '1',\n\t\t\thasPasswordless: loadState('core', 'webauthn-available', false),\n\t\t\tcountAlternativeLogins: loadState('core', 'countAlternativeLogins', false),\n\t\t\talternativeLogins: loadState('core', 'alternativeLogins', []),\n\t\t\tisHttps: window.location.protocol === 'https:',\n\t\t\tisLocalhost: window.location.hostname === 'localhost',\n\t\t\thasPublicKeyCredential: typeof (window.PublicKeyCredential) !== 'undefined',\n\t\t\thideLoginForm: loadState('core', 'hideLoginForm', false),\n\t\t}\n\t},\n\n\tmethods: {\n\t\tpasswordResetFinished() {\n\t\t\tthis.resetPasswordTarget = ''\n\t\t\tthis.directLogin = true\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\">\nbody {\n\tfont-size: var(--default-font-size);\n}\n\n.login-box {\n\twidth: 300px;\n\n\t&__link {\n\t\tdisplay: block;\n\t\tpadding: 1rem;\n\t\tfont-size: var(--default-font-size);\n\t\ttext-align: center;\n\t\tfont-weight: normal !important;\n\t}\n}\n.fade-enter-active, .fade-leave-active {\n\ttransition: opacity .3s;\n}\n.fade-enter, .fade-leave-to /* .fade-leave-active below version 2.1.8 */ {\n\topacity: 0;\n}\n\n.alternative-logins {\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 0.75rem;\n\n\t.button-vue {\n\t\tbox-sizing: border-box;\n\t}\n}\n</style>\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Login.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Login.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Login.vue?vue&type=style&index=0&id=7b955242&prod&lang=scss&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Login.vue?vue&type=style&index=0&id=7b955242&prod&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Login.vue?vue&type=template&id=7b955242&\"\nimport script from \"./Login.vue?vue&type=script&lang=js&\"\nexport * from \"./Login.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Login.vue?vue&type=style&index=0&id=7b955242&prod&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport L10n from '../OC/l10n'\nimport OC from '../OC/index'\n\nexport default {\n\tdata() {\n\t\treturn {\n\t\t\tOC,\n\t\t}\n\t},\n\tmethods: {\n\t\tt: L10n.translate.bind(L10n),\n\t\tn: L10n.translatePlural.bind(L10n),\n\t},\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport Vue from 'vue'\n\n// eslint-disable-next-line no-unused-vars\nimport OC from './OC/index' // TODO: Not needed but L10n breaks if removed\nimport LoginView from './views/Login.vue'\nimport Nextcloud from './mixins/Nextcloud'\n\nVue.mixin(Nextcloud)\n\nconst View = Vue.extend(LoginView)\nnew View().$mount('#login')\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".button-vue[data-v-756414a8]{margin-top:.5rem}\", \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/login/LoginButton.vue\"],\"names\":[],\"mappings\":\"AACA,6BACC,gBAAA\",\"sourcesContent\":[\"\\n.button-vue {\\n\\tmargin-top: .5rem;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".login-form[data-v-5bd351bc]{text-align:left;font-size:1rem}.login-form__fieldset[data-v-5bd351bc]{width:100%;display:flex;flex-direction:column;gap:.5rem}.login-form__headline[data-v-5bd351bc]{text-align:center}\", \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/login/LoginForm.vue\"],\"names\":[],\"mappings\":\"AACA,6BACC,eAAA,CACA,cAAA,CAEA,uCACC,UAAA,CACA,YAAA,CACA,qBAAA,CACA,SAAA,CAGD,uCACC,iBAAA\",\"sourcesContent\":[\"\\n.login-form {\\n\\ttext-align: left;\\n\\tfont-size: 1rem;\\n\\n\\t&__fieldset {\\n\\t\\twidth: 100%;\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\tgap: .5rem;\\n\\t}\\n\\n\\t&__headline {\\n\\t\\ttext-align: center;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".body-login-container.update[data-v-20256748]{margin:15px 0}.body-login-container.update.form__message-box[data-v-20256748]{width:240px;margin:5px}\", \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/login/PasswordLessLoginForm.vue\"],\"names\":[],\"mappings\":\"AACA,8CACC,aAAA,CAEA,gEACC,WAAA,CACA,UAAA\",\"sourcesContent\":[\"\\n.body-login-container.update {\\n\\tmargin: 15px 0;\\n\\n\\t&.form__message-box {\\n\\t\\twidth: 240px;\\n\\t\\tmargin: 5px;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".login-form[data-v-27cabc60]{text-align:left;font-size:1rem}.login-form__fieldset[data-v-27cabc60]{width:100%;display:flex;flex-direction:column;gap:.5rem}.login-form__link[data-v-27cabc60]{display:block;font-weight:normal !important;padding-bottom:1rem;cursor:pointer;font-size:var(--default-font-size);text-align:center;padding:.5rem 1rem 1rem 1rem}\", \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/login/ResetPassword.vue\"],\"names\":[],\"mappings\":\"AACA,6BACC,eAAA,CACA,cAAA,CAEA,uCACC,UAAA,CACA,YAAA,CACA,qBAAA,CACA,SAAA,CAGD,mCACC,aAAA,CACA,6BAAA,CACA,mBAAA,CACA,cAAA,CACA,kCAAA,CACA,iBAAA,CACA,4BAAA\",\"sourcesContent\":[\"\\n.login-form {\\n\\ttext-align: left;\\n\\tfont-size: 1rem;\\n\\n\\t&__fieldset {\\n\\t\\twidth: 100%;\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\tgap: .5rem;\\n\\t}\\n\\n\\t&__link {\\n\\t\\tdisplay: block;\\n\\t\\tfont-weight: normal !important;\\n\\t\\tpadding-bottom: 1rem;\\n\\t\\tcursor: pointer;\\n\\t\\tfont-size: var(--default-font-size);\\n\\t\\ttext-align: center;\\n\\t\\tpadding: .5rem 1rem 1rem 1rem;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"body{font-size:var(--default-font-size)}.login-box{width:300px}.login-box__link{display:block;padding:1rem;font-size:var(--default-font-size);text-align:center;font-weight:normal !important}.fade-enter-active,.fade-leave-active{transition:opacity .3s}.fade-enter,.fade-leave-to{opacity:0}.alternative-logins{display:flex;flex-direction:column;gap:.75rem}.alternative-logins .button-vue{box-sizing:border-box}\", \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/views/Login.vue\"],\"names\":[],\"mappings\":\"AACA,KACC,kCAAA,CAGD,WACC,WAAA,CAEA,iBACC,aAAA,CACA,YAAA,CACA,kCAAA,CACA,iBAAA,CACA,6BAAA,CAGF,sCACC,sBAAA,CAED,2BACC,SAAA,CAGD,oBACC,YAAA,CACA,qBAAA,CACA,UAAA,CAEA,gCACC,qBAAA\",\"sourcesContent\":[\"\\nbody {\\n\\tfont-size: var(--default-font-size);\\n}\\n\\n.login-box {\\n\\twidth: 300px;\\n\\n\\t&__link {\\n\\t\\tdisplay: block;\\n\\t\\tpadding: 1rem;\\n\\t\\tfont-size: var(--default-font-size);\\n\\t\\ttext-align: center;\\n\\t\\tfont-weight: normal !important;\\n\\t}\\n}\\n.fade-enter-active, .fade-leave-active {\\n\\ttransition: opacity .3s;\\n}\\n.fade-enter, .fade-leave-to /* .fade-leave-active below version 2.1.8 */ {\\n\\topacity: 0;\\n}\\n\\n.alternative-logins {\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n\\tgap: 0.75rem;\\n\\n\\t.button-vue {\\n\\t\\tbox-sizing: border-box;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"\\nfieldset[data-v-4dc21d74] {\\n\\ttext-align: center;\\n}\\ninput[type=submit][data-v-4dc21d74] {\\n\\tmargin-top: 20px;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/login/UpdatePassword.vue\"],\"names\":[],\"mappings\":\";AA4IA;CACA,kBAAA;AACA;AAEA;CACA,gBAAA;AACA\",\"sourcesContent\":[\"<!--\\n - @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\\n -\\n - @author Julius Härtl <jus@bitgrid.net>\\n -\\n - @license GNU AGPL version 3 or any later version\\n -\\n - This program is free software: you can redistribute it and/or modify\\n - it under the terms of the GNU Affero General Public License as\\n - published by the Free Software Foundation, either version 3 of the\\n - License, or (at your option) any later version.\\n -\\n - This program is distributed in the hope that it will be useful,\\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n - GNU Affero General Public License for more details.\\n -\\n - You should have received a copy of the GNU Affero General Public License\\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\\n -\\n -->\\n\\n<template>\\n\\t<form @submit.prevent=\\\"submit\\\">\\n\\t\\t<fieldset>\\n\\t\\t\\t<p>\\n\\t\\t\\t\\t<label for=\\\"password\\\" class=\\\"infield\\\">{{ t('core', 'New password') }}</label>\\n\\t\\t\\t\\t<input id=\\\"password\\\"\\n\\t\\t\\t\\t\\tv-model=\\\"password\\\"\\n\\t\\t\\t\\t\\ttype=\\\"password\\\"\\n\\t\\t\\t\\t\\tname=\\\"password\\\"\\n\\t\\t\\t\\t\\tautocomplete=\\\"new-password\\\"\\n\\t\\t\\t\\t\\tautocapitalize=\\\"none\\\"\\n\\t\\t\\t\\t\\tautocorrect=\\\"off\\\"\\n\\t\\t\\t\\t\\trequired\\n\\t\\t\\t\\t\\t:placeholder=\\\"t('core', 'New password')\\\">\\n\\t\\t\\t</p>\\n\\n\\t\\t\\t<div v-if=\\\"encrypted\\\" class=\\\"update\\\">\\n\\t\\t\\t\\t<p>\\n\\t\\t\\t\\t\\t{{ t('core', 'Your files are encrypted. There will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?') }}\\n\\t\\t\\t\\t</p>\\n\\t\\t\\t\\t<input id=\\\"encrypted-continue\\\"\\n\\t\\t\\t\\t\\tv-model=\\\"proceed\\\"\\n\\t\\t\\t\\t\\ttype=\\\"checkbox\\\"\\n\\t\\t\\t\\t\\tclass=\\\"checkbox\\\">\\n\\t\\t\\t\\t<label for=\\\"encrypted-continue\\\">\\n\\t\\t\\t\\t\\t{{ t('core', 'I know what I\\\\'m doing') }}\\n\\t\\t\\t\\t</label>\\n\\t\\t\\t</div>\\n\\n\\t\\t\\t<LoginButton :loading=\\\"loading\\\"\\n\\t\\t\\t\\t:value=\\\"t('core', 'Reset password')\\\"\\n\\t\\t\\t\\t:value-loading=\\\"t('core', 'Resetting password')\\\" />\\n\\n\\t\\t\\t<p v-if=\\\"error && message\\\" :class=\\\"{warning: error}\\\">\\n\\t\\t\\t\\t{{ message }}\\n\\t\\t\\t</p>\\n\\t\\t</fieldset>\\n\\t</form>\\n</template>\\n\\n<script>\\nimport Axios from '@nextcloud/axios'\\nimport LoginButton from './LoginButton.vue'\\n\\nexport default {\\n\\tname: 'UpdatePassword',\\n\\tcomponents: {\\n\\t\\tLoginButton,\\n\\t},\\n\\tprops: {\\n\\t\\tusername: {\\n\\t\\t\\ttype: String,\\n\\t\\t\\trequired: true,\\n\\t\\t},\\n\\t\\tresetPasswordTarget: {\\n\\t\\t\\ttype: String,\\n\\t\\t\\trequired: true,\\n\\t\\t},\\n\\t},\\n\\tdata() {\\n\\t\\treturn {\\n\\t\\t\\terror: false,\\n\\t\\t\\tloading: false,\\n\\t\\t\\tmessage: undefined,\\n\\t\\t\\tuser: this.username,\\n\\t\\t\\tpassword: '',\\n\\t\\t\\tencrypted: false,\\n\\t\\t\\tproceed: false,\\n\\t\\t}\\n\\t},\\n\\twatch: {\\n\\t\\tusername(value) {\\n\\t\\t\\tthis.user = value\\n\\t\\t},\\n\\t},\\n\\tmethods: {\\n\\t\\tasync submit() {\\n\\t\\t\\tthis.loading = true\\n\\t\\t\\tthis.error = false\\n\\t\\t\\tthis.message = ''\\n\\n\\t\\t\\ttry {\\n\\t\\t\\t\\tconst { data } = await Axios.post(this.resetPasswordTarget, {\\n\\t\\t\\t\\t\\tpassword: this.password,\\n\\t\\t\\t\\t\\tproceed: this.proceed,\\n\\t\\t\\t\\t})\\n\\t\\t\\t\\tif (data && data.status === 'success') {\\n\\t\\t\\t\\t\\tthis.message = 'send-success'\\n\\t\\t\\t\\t\\tthis.$emit('update:username', this.user)\\n\\t\\t\\t\\t\\tthis.$emit('done')\\n\\t\\t\\t\\t} else if (data && data.encryption) {\\n\\t\\t\\t\\t\\tthis.encrypted = true\\n\\t\\t\\t\\t} else if (data && data.msg) {\\n\\t\\t\\t\\t\\tthrow new Error(data.msg)\\n\\t\\t\\t\\t} else {\\n\\t\\t\\t\\t\\tthrow new Error()\\n\\t\\t\\t\\t}\\n\\t\\t\\t} catch (e) {\\n\\t\\t\\t\\tthis.error = true\\n\\t\\t\\t\\tthis.message = e.message ? e.message : t('core', 'Password cannot be changed. Please contact your administrator.')\\n\\t\\t\\t} finally {\\n\\t\\t\\t\\tthis.loading = false\\n\\t\\t\\t}\\n\\t\\t},\\n\\t},\\n}\\n</script>\\n\\n<style scoped>\\n\\tfieldset {\\n\\t\\ttext-align: center;\\n\\t}\\n\\n\\tinput[type=submit] {\\n\\t\\tmargin-top: 20px;\\n\\t}\\n</style>\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","var Handlebars = require(\"../../../../node_modules/handlebars/runtime.js\");\nfunction __default(obj) { return obj && (obj.__esModule ? obj[\"default\"] : obj); }\nmodule.exports = (Handlebars[\"default\"] || Handlebars).template({\"1\":function(container,depth0,helpers,partials,data) {\n var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return ((stack1 = lookupProperty(helpers,\"if\").call(depth0 != null ? depth0 : (container.nullContext || {}),((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"profileUrl\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(2, data, 0),\"inverse\":container.program(5, data, 0),\"data\":data,\"loc\":{\"start\":{\"line\":2,\"column\":1},\"end\":{\"line\":10,\"column\":8}}})) != null ? stack1 : \"\");\n},\"2\":function(container,depth0,helpers,partials,data) {\n var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return ((stack1 = lookupProperty(helpers,\"if\").call(depth0 != null ? depth0 : (container.nullContext || {}),((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"profileTitle\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(3, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":3,\"column\":2},\"end\":{\"line\":7,\"column\":9}}})) != null ? stack1 : \"\");\n},\"3\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"\t\t\t<a class=\\\"profile-link--avatar\\\" href=\\\"\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"profileUrl\") : stack1), depth0))\n + \"\\\">\\n\t\t\t\t<img src=\\\"\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"avatar\") : stack1), depth0))\n + \"&size=32\\\" class=\\\"avatar\\\" srcset=\\\"\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"avatar\") : stack1), depth0))\n + \"&size=32 1x, \"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"avatar\") : stack1), depth0))\n + \"&size=64 2x, \"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"avatar\") : stack1), depth0))\n + \"&size=128 4x\\\" alt=\\\"\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"avatarLabel\") : stack1), depth0))\n + \"\\\">\\n\t\t\t</a>\\n\";\n},\"5\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"\t\t<img src=\\\"\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"avatar\") : stack1), depth0))\n + \"&size=32\\\" class=\\\"avatar\\\" srcset=\\\"\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"avatar\") : stack1), depth0))\n + \"&size=32 1x, \"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"avatar\") : stack1), depth0))\n + \"&size=64 2x, \"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"avatar\") : stack1), depth0))\n + \"&size=128 4x\\\" alt=\\\"\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"avatarLabel\") : stack1), depth0))\n + \"\\\">\\n\";\n},\"7\":function(container,depth0,helpers,partials,data) {\n var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return ((stack1 = lookupProperty(helpers,\"if\").call(depth0 != null ? depth0 : (container.nullContext || {}),((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"profileUrl\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(8, data, 0),\"inverse\":container.program(11, data, 0),\"data\":data,\"loc\":{\"start\":{\"line\":12,\"column\":1},\"end\":{\"line\":20,\"column\":8}}})) != null ? stack1 : \"\");\n},\"8\":function(container,depth0,helpers,partials,data) {\n var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return ((stack1 = lookupProperty(helpers,\"if\").call(depth0 != null ? depth0 : (container.nullContext || {}),((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"profileTitle\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(9, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":13,\"column\":2},\"end\":{\"line\":17,\"column\":9}}})) != null ? stack1 : \"\");\n},\"9\":function(container,depth0,helpers,partials,data) {\n var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"\t\t\t<a class=\\\"profile-link--avatar\\\" href=\\\"\"\n + container.escapeExpression(container.lambda(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"profileUrl\") : stack1), depth0))\n + \"\\\">\\n\t\t\t\t<div class=\\\"avatar\\\"></div>\\n\t\t\t</a>\\n\";\n},\"11\":function(container,depth0,helpers,partials,data) {\n return \"\t\t<div class=\\\"avatar\\\"></div>\\n\";\n},\"13\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=depth0 != null ? depth0 : (container.nullContext || {}), lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return ((stack1 = lookupProperty(helpers,\"if\").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"profileTitle\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(14, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":23,\"column\":1},\"end\":{\"line\":29,\"column\":8}}})) != null ? stack1 : \"\")\n + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"topAction\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(16, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":30,\"column\":1},\"end\":{\"line\":34,\"column\":8}}})) != null ? stack1 : \"\");\n},\"14\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"\t\t<a class=\\\"body profile-link--full-name\\\" href=\\\"\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"profileUrl\") : stack1), depth0))\n + \"\\\">\\n\t\t\t<div class=\\\"full-name\\\">\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"fullName\") : stack1), depth0))\n + \"</div>\\n\t\t\t<div class=\\\"last-message\\\">\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"lastMessage\") : stack1), depth0))\n + \"</div>\\n\t\t\t<div class=\\\"email-address\\\">\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"emailAddresses\") : stack1), depth0))\n + \"</div>\\n\t\t</a>\\n\";\n},\"16\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"\t\t<a class=\\\"top-action\\\" href=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"topAction\") : stack1)) != null ? lookupProperty(stack1,\"hyperlink\") : stack1), depth0))\n + \"\\\" title=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"topAction\") : stack1)) != null ? lookupProperty(stack1,\"title\") : stack1), depth0))\n + \"\\\">\\n\t\t\t<img src=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"topAction\") : stack1)) != null ? lookupProperty(stack1,\"icon\") : stack1), depth0))\n + \"\\\" alt=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"topAction\") : stack1)) != null ? lookupProperty(stack1,\"title\") : stack1), depth0))\n + \"\\\">\\n\t\t</a>\\n\";\n},\"18\":function(container,depth0,helpers,partials,data) {\n var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return ((stack1 = lookupProperty(helpers,\"if\").call(depth0 != null ? depth0 : (container.nullContext || {}),((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"topAction\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(19, data, 0),\"inverse\":container.program(21, data, 0),\"data\":data,\"loc\":{\"start\":{\"line\":35,\"column\":0},\"end\":{\"line\":50,\"column\":0}}})) != null ? stack1 : \"\");\n},\"19\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"\t<a class=\\\"body\\\" href=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"topAction\") : stack1)) != null ? lookupProperty(stack1,\"hyperlink\") : stack1), depth0))\n + \"\\\">\\n\t\t<div class=\\\"full-name\\\">\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"fullName\") : stack1), depth0))\n + \"</div>\\n\t\t<div class=\\\"last-message\\\">\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"lastMessage\") : stack1), depth0))\n + \"</div>\\n\t\t<div class=\\\"email-address\\\">\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"emailAddresses\") : stack1), depth0))\n + \"</div>\\n\t</a>\\n \t<a class=\\\"top-action\\\" href=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"topAction\") : stack1)) != null ? lookupProperty(stack1,\"hyperlink\") : stack1), depth0))\n + \"\\\" title=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"topAction\") : stack1)) != null ? lookupProperty(stack1,\"title\") : stack1), depth0))\n + \"\\\">\\n \t\t<img src=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"topAction\") : stack1)) != null ? lookupProperty(stack1,\"icon\") : stack1), depth0))\n + \"\\\" alt=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"topAction\") : stack1)) != null ? lookupProperty(stack1,\"title\") : stack1), depth0))\n + \"\\\">\\n\t</a>\\n\";\n},\"21\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"\t<div class=\\\"body\\\">\\n\t\t<div class=\\\"full-name\\\">\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"fullName\") : stack1), depth0))\n + \"</div>\\n\t\t<div class=\\\"last-message\\\">\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"lastMessage\") : stack1), depth0))\n + \"</div>\\n\t\t<div class=\\\"email-address\\\">\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"emailAddresses\") : stack1), depth0))\n + \"</div>\\n\t</div>\\n\";\n},\"23\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"<a class=\\\"second-action\\\" href=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"secondAction\") : stack1)) != null ? lookupProperty(stack1,\"hyperlink\") : stack1), depth0))\n + \"\\\" title=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"secondAction\") : stack1)) != null ? lookupProperty(stack1,\"title\") : stack1), depth0))\n + \"\\\">\\n\t<img src=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"secondAction\") : stack1)) != null ? lookupProperty(stack1,\"icon\") : stack1), depth0))\n + \"\\\" alt=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"secondAction\") : stack1)) != null ? lookupProperty(stack1,\"title\") : stack1), depth0))\n + \"\\\">\\n</a>\\n\";\n},\"25\":function(container,depth0,helpers,partials,data) {\n var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"\t<button class=\\\"other-actions icon-more\\\"></button>\\n\t<div class=\\\"menu popovermenu\\\">\\n\t\t<ul>\\n\"\n + ((stack1 = lookupProperty(helpers,\"each\").call(depth0 != null ? depth0 : (container.nullContext || {}),((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"actions\") : stack1),{\"name\":\"each\",\"hash\":{},\"fn\":container.program(26, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":60,\"column\":3},\"end\":{\"line\":67,\"column\":12}}})) != null ? stack1 : \"\")\n + \"\t\t</ul>\\n\t</div>\\n\";\n},\"26\":function(container,depth0,helpers,partials,data) {\n var helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"\t\t\t<li>\\n\t\t\t\t<a href=\\\"\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"hyperlink\") || (depth0 != null ? lookupProperty(depth0,\"hyperlink\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"hyperlink\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":62,\"column\":13},\"end\":{\"line\":62,\"column\":26}}}) : helper)))\n + \"\\\">\\n\t\t\t\t\t<img src=\\\"\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"icon\") || (depth0 != null ? lookupProperty(depth0,\"icon\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"icon\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":63,\"column\":15},\"end\":{\"line\":63,\"column\":23}}}) : helper)))\n + \"\\\" alt=\\\"\\\">\\n\t\t\t\t\t<span>\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"title\") || (depth0 != null ? lookupProperty(depth0,\"title\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"title\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":64,\"column\":11},\"end\":{\"line\":64,\"column\":20}}}) : helper)))\n + \"</span>\\n\t\t\t\t</a>\\n\t\t\t</li>\\n\";\n},\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=depth0 != null ? depth0 : (container.nullContext || {}), lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return ((stack1 = lookupProperty(helpers,\"if\").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"avatar\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(1, data, 0),\"inverse\":container.program(7, data, 0),\"data\":data,\"loc\":{\"start\":{\"line\":1,\"column\":0},\"end\":{\"line\":21,\"column\":7}}})) != null ? stack1 : \"\")\n + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"profileUrl\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(13, data, 0),\"inverse\":container.program(18, data, 0),\"data\":data,\"loc\":{\"start\":{\"line\":22,\"column\":0},\"end\":{\"line\":50,\"column\":7}}})) != null ? stack1 : \"\")\n + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"hasTwoActions\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(23, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":51,\"column\":0},\"end\":{\"line\":55,\"column\":7}}})) != null ? stack1 : \"\")\n + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"hasManyActions\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(25, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":56,\"column\":0},\"end\":{\"line\":70,\"column\":7}}})) != null ? stack1 : \"\");\n},\"useData\":true});","var Handlebars = require(\"../../../../node_modules/handlebars/runtime.js\");\nfunction __default(obj) { return obj && (obj.__esModule ? obj[\"default\"] : obj); }\nmodule.exports = (Handlebars[\"default\"] || Handlebars).template({\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var helper, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"<div class=\\\"emptycontent\\\">\\n\t<div class=\\\"icon-search\\\"></div>\\n\t<h2>\"\n + container.escapeExpression(((helper = (helper = lookupProperty(helpers,\"couldNotLoadText\") || (depth0 != null ? lookupProperty(depth0,\"couldNotLoadText\") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"couldNotLoadText\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":3,\"column\":5},\"end\":{\"line\":3,\"column\":25}}}) : helper)))\n + \"</h2>\\n</div>\\n\";\n},\"useData\":true});","var Handlebars = require(\"../../../../node_modules/handlebars/runtime.js\");\nfunction __default(obj) { return obj && (obj.__esModule ? obj[\"default\"] : obj); }\nmodule.exports = (Handlebars[\"default\"] || Handlebars).template({\"1\":function(container,depth0,helpers,partials,data) {\n var helper, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"<div class=\\\"emptycontent\\\">\\n\t<div class=\\\"icon-search\\\"></div>\\n\t<h2>\"\n + container.escapeExpression(((helper = (helper = lookupProperty(helpers,\"noContactsFoundText\") || (depth0 != null ? lookupProperty(depth0,\"noContactsFoundText\") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"noContactsFoundText\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":4,\"column\":5},\"end\":{\"line\":4,\"column\":28}}}) : helper)))\n + \"</h2>\\n</div>\\n\";\n},\"3\":function(container,depth0,helpers,partials,data) {\n var helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"<div class=\\\"footer\\\"><a href=\\\"\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"contactsAppURL\") || (depth0 != null ? lookupProperty(depth0,\"contactsAppURL\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"contactsAppURL\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":9,\"column\":29},\"end\":{\"line\":9,\"column\":47}}}) : helper)))\n + \"\\\">\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"showAllContactsText\") || (depth0 != null ? lookupProperty(depth0,\"showAllContactsText\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"showAllContactsText\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":9,\"column\":49},\"end\":{\"line\":9,\"column\":72}}}) : helper)))\n + \"</a></div>\\n\";\n},\"5\":function(container,depth0,helpers,partials,data) {\n var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return ((stack1 = lookupProperty(helpers,\"if\").call(depth0 != null ? depth0 : (container.nullContext || {}),(depth0 != null ? lookupProperty(depth0,\"canInstallApp\") : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(6, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":10,\"column\":0},\"end\":{\"line\":12,\"column\":0}}})) != null ? stack1 : \"\");\n},\"6\":function(container,depth0,helpers,partials,data) {\n var helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"<div class=\\\"footer\\\"><a href=\\\"\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"contactsAppMgmtURL\") || (depth0 != null ? lookupProperty(depth0,\"contactsAppMgmtURL\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"contactsAppMgmtURL\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":11,\"column\":29},\"end\":{\"line\":11,\"column\":51}}}) : helper)))\n + \"\\\">\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"contactsAppMgmtText\") || (depth0 != null ? lookupProperty(depth0,\"contactsAppMgmtText\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"contactsAppMgmtText\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":11,\"column\":53},\"end\":{\"line\":11,\"column\":76}}}) : helper)))\n + \"</a></div>\\n\";\n},\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=depth0 != null ? depth0 : (container.nullContext || {}), lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return ((stack1 = lookupProperty(helpers,\"unless\").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,\"contacts\") : depth0)) != null ? lookupProperty(stack1,\"length\") : stack1),{\"name\":\"unless\",\"hash\":{},\"fn\":container.program(1, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":1,\"column\":0},\"end\":{\"line\":6,\"column\":11}}})) != null ? stack1 : \"\")\n + \"<div id=\\\"contactsmenu-contacts\\\"></div>\\n\"\n + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,(depth0 != null ? lookupProperty(depth0,\"contactsAppEnabled\") : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(3, data, 0),\"inverse\":container.program(5, data, 0),\"data\":data,\"loc\":{\"start\":{\"line\":8,\"column\":0},\"end\":{\"line\":12,\"column\":7}}})) != null ? stack1 : \"\");\n},\"useData\":true});","var Handlebars = require(\"../../../../node_modules/handlebars/runtime.js\");\nfunction __default(obj) { return obj && (obj.__esModule ? obj[\"default\"] : obj); }\nmodule.exports = (Handlebars[\"default\"] || Handlebars).template({\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var helper, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"<div class=\\\"emptycontent\\\">\\n\t<div class=\\\"icon-loading\\\"></div>\\n\t<h2>\"\n + container.escapeExpression(((helper = (helper = lookupProperty(helpers,\"loadingText\") || (depth0 != null ? lookupProperty(depth0,\"loadingText\") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"loadingText\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":3,\"column\":5},\"end\":{\"line\":3,\"column\":20}}}) : helper)))\n + \"</h2>\\n</div>\\n\";\n},\"useData\":true});","var Handlebars = require(\"../../../../node_modules/handlebars/runtime.js\");\nfunction __default(obj) { return obj && (obj.__esModule ? obj[\"default\"] : obj); }\nmodule.exports = (Handlebars[\"default\"] || Handlebars).template({\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"<label class=\\\"hidden-visually\\\" for=\\\"contactsmenu-search\\\">\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"searchContactsText\") || (depth0 != null ? lookupProperty(depth0,\"searchContactsText\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"searchContactsText\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":1,\"column\":57},\"end\":{\"line\":1,\"column\":79}}}) : helper)))\n + \"</label>\\n<input id=\\\"contactsmenu-search\\\" type=\\\"search\\\" placeholder=\\\"\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"searchContactsText\") || (depth0 != null ? lookupProperty(depth0,\"searchContactsText\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"searchContactsText\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":2,\"column\":59},\"end\":{\"line\":2,\"column\":81}}}) : helper)))\n + \"\\\" value=\\\"\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"searchTerm\") || (depth0 != null ? lookupProperty(depth0,\"searchTerm\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"searchTerm\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":2,\"column\":90},\"end\":{\"line\":2,\"column\":104}}}) : helper)))\n + \"\\\">\\n<div class=\\\"content\\\">\\n</div>\\n\";\n},\"useData\":true});","var map = {\n\t\"./af\": 42786,\n\t\"./af.js\": 42786,\n\t\"./ar\": 30867,\n\t\"./ar-dz\": 14130,\n\t\"./ar-dz.js\": 14130,\n\t\"./ar-kw\": 96135,\n\t\"./ar-kw.js\": 96135,\n\t\"./ar-ly\": 56440,\n\t\"./ar-ly.js\": 56440,\n\t\"./ar-ma\": 47702,\n\t\"./ar-ma.js\": 47702,\n\t\"./ar-sa\": 16040,\n\t\"./ar-sa.js\": 16040,\n\t\"./ar-tn\": 37100,\n\t\"./ar-tn.js\": 37100,\n\t\"./ar.js\": 30867,\n\t\"./az\": 31083,\n\t\"./az.js\": 31083,\n\t\"./be\": 9808,\n\t\"./be.js\": 9808,\n\t\"./bg\": 68338,\n\t\"./bg.js\": 68338,\n\t\"./bm\": 67438,\n\t\"./bm.js\": 67438,\n\t\"./bn\": 8905,\n\t\"./bn-bd\": 76225,\n\t\"./bn-bd.js\": 76225,\n\t\"./bn.js\": 8905,\n\t\"./bo\": 11560,\n\t\"./bo.js\": 11560,\n\t\"./br\": 1278,\n\t\"./br.js\": 1278,\n\t\"./bs\": 80622,\n\t\"./bs.js\": 80622,\n\t\"./ca\": 2468,\n\t\"./ca.js\": 2468,\n\t\"./cs\": 5822,\n\t\"./cs.js\": 5822,\n\t\"./cv\": 50877,\n\t\"./cv.js\": 50877,\n\t\"./cy\": 47373,\n\t\"./cy.js\": 47373,\n\t\"./da\": 24780,\n\t\"./da.js\": 24780,\n\t\"./de\": 59740,\n\t\"./de-at\": 60217,\n\t\"./de-at.js\": 60217,\n\t\"./de-ch\": 60894,\n\t\"./de-ch.js\": 60894,\n\t\"./de.js\": 59740,\n\t\"./dv\": 5300,\n\t\"./dv.js\": 5300,\n\t\"./el\": 50837,\n\t\"./el.js\": 50837,\n\t\"./en-au\": 78348,\n\t\"./en-au.js\": 78348,\n\t\"./en-ca\": 77925,\n\t\"./en-ca.js\": 77925,\n\t\"./en-gb\": 22243,\n\t\"./en-gb.js\": 22243,\n\t\"./en-ie\": 46436,\n\t\"./en-ie.js\": 46436,\n\t\"./en-il\": 47207,\n\t\"./en-il.js\": 47207,\n\t\"./en-in\": 44175,\n\t\"./en-in.js\": 44175,\n\t\"./en-nz\": 76319,\n\t\"./en-nz.js\": 76319,\n\t\"./en-sg\": 31662,\n\t\"./en-sg.js\": 31662,\n\t\"./eo\": 92915,\n\t\"./eo.js\": 92915,\n\t\"./es\": 55655,\n\t\"./es-do\": 55251,\n\t\"./es-do.js\": 55251,\n\t\"./es-mx\": 96112,\n\t\"./es-mx.js\": 96112,\n\t\"./es-us\": 71146,\n\t\"./es-us.js\": 71146,\n\t\"./es.js\": 55655,\n\t\"./et\": 5603,\n\t\"./et.js\": 5603,\n\t\"./eu\": 77763,\n\t\"./eu.js\": 77763,\n\t\"./fa\": 76959,\n\t\"./fa.js\": 76959,\n\t\"./fi\": 11897,\n\t\"./fi.js\": 11897,\n\t\"./fil\": 42549,\n\t\"./fil.js\": 42549,\n\t\"./fo\": 94694,\n\t\"./fo.js\": 94694,\n\t\"./fr\": 94470,\n\t\"./fr-ca\": 63049,\n\t\"./fr-ca.js\": 63049,\n\t\"./fr-ch\": 52330,\n\t\"./fr-ch.js\": 52330,\n\t\"./fr.js\": 94470,\n\t\"./fy\": 5044,\n\t\"./fy.js\": 5044,\n\t\"./ga\": 29295,\n\t\"./ga.js\": 29295,\n\t\"./gd\": 2101,\n\t\"./gd.js\": 2101,\n\t\"./gl\": 38794,\n\t\"./gl.js\": 38794,\n\t\"./gom-deva\": 27884,\n\t\"./gom-deva.js\": 27884,\n\t\"./gom-latn\": 23168,\n\t\"./gom-latn.js\": 23168,\n\t\"./gu\": 95349,\n\t\"./gu.js\": 95349,\n\t\"./he\": 24206,\n\t\"./he.js\": 24206,\n\t\"./hi\": 30094,\n\t\"./hi.js\": 30094,\n\t\"./hr\": 30316,\n\t\"./hr.js\": 30316,\n\t\"./hu\": 22138,\n\t\"./hu.js\": 22138,\n\t\"./hy-am\": 11423,\n\t\"./hy-am.js\": 11423,\n\t\"./id\": 29218,\n\t\"./id.js\": 29218,\n\t\"./is\": 90135,\n\t\"./is.js\": 90135,\n\t\"./it\": 90626,\n\t\"./it-ch\": 10150,\n\t\"./it-ch.js\": 10150,\n\t\"./it.js\": 90626,\n\t\"./ja\": 39183,\n\t\"./ja.js\": 39183,\n\t\"./jv\": 24286,\n\t\"./jv.js\": 24286,\n\t\"./ka\": 12105,\n\t\"./ka.js\": 12105,\n\t\"./kk\": 47772,\n\t\"./kk.js\": 47772,\n\t\"./km\": 18758,\n\t\"./km.js\": 18758,\n\t\"./kn\": 79282,\n\t\"./kn.js\": 79282,\n\t\"./ko\": 33730,\n\t\"./ko.js\": 33730,\n\t\"./ku\": 1408,\n\t\"./ku.js\": 1408,\n\t\"./ky\": 33291,\n\t\"./ky.js\": 33291,\n\t\"./lb\": 36841,\n\t\"./lb.js\": 36841,\n\t\"./lo\": 55466,\n\t\"./lo.js\": 55466,\n\t\"./lt\": 57010,\n\t\"./lt.js\": 57010,\n\t\"./lv\": 37595,\n\t\"./lv.js\": 37595,\n\t\"./me\": 39861,\n\t\"./me.js\": 39861,\n\t\"./mi\": 35493,\n\t\"./mi.js\": 35493,\n\t\"./mk\": 95966,\n\t\"./mk.js\": 95966,\n\t\"./ml\": 87341,\n\t\"./ml.js\": 87341,\n\t\"./mn\": 5115,\n\t\"./mn.js\": 5115,\n\t\"./mr\": 10370,\n\t\"./mr.js\": 10370,\n\t\"./ms\": 9847,\n\t\"./ms-my\": 41237,\n\t\"./ms-my.js\": 41237,\n\t\"./ms.js\": 9847,\n\t\"./mt\": 72126,\n\t\"./mt.js\": 72126,\n\t\"./my\": 56165,\n\t\"./my.js\": 56165,\n\t\"./nb\": 64924,\n\t\"./nb.js\": 64924,\n\t\"./ne\": 16744,\n\t\"./ne.js\": 16744,\n\t\"./nl\": 93901,\n\t\"./nl-be\": 59814,\n\t\"./nl-be.js\": 59814,\n\t\"./nl.js\": 93901,\n\t\"./nn\": 83877,\n\t\"./nn.js\": 83877,\n\t\"./oc-lnc\": 92135,\n\t\"./oc-lnc.js\": 92135,\n\t\"./pa-in\": 15858,\n\t\"./pa-in.js\": 15858,\n\t\"./pl\": 64495,\n\t\"./pl.js\": 64495,\n\t\"./pt\": 89520,\n\t\"./pt-br\": 57971,\n\t\"./pt-br.js\": 57971,\n\t\"./pt.js\": 89520,\n\t\"./ro\": 96459,\n\t\"./ro.js\": 96459,\n\t\"./ru\": 21793,\n\t\"./ru.js\": 21793,\n\t\"./sd\": 40950,\n\t\"./sd.js\": 40950,\n\t\"./se\": 10490,\n\t\"./se.js\": 10490,\n\t\"./si\": 90124,\n\t\"./si.js\": 90124,\n\t\"./sk\": 64249,\n\t\"./sk.js\": 64249,\n\t\"./sl\": 14985,\n\t\"./sl.js\": 14985,\n\t\"./sq\": 51104,\n\t\"./sq.js\": 51104,\n\t\"./sr\": 49131,\n\t\"./sr-cyrl\": 79915,\n\t\"./sr-cyrl.js\": 79915,\n\t\"./sr.js\": 49131,\n\t\"./ss\": 85893,\n\t\"./ss.js\": 85893,\n\t\"./sv\": 98760,\n\t\"./sv.js\": 98760,\n\t\"./sw\": 91172,\n\t\"./sw.js\": 91172,\n\t\"./ta\": 27333,\n\t\"./ta.js\": 27333,\n\t\"./te\": 23110,\n\t\"./te.js\": 23110,\n\t\"./tet\": 52095,\n\t\"./tet.js\": 52095,\n\t\"./tg\": 27321,\n\t\"./tg.js\": 27321,\n\t\"./th\": 9041,\n\t\"./th.js\": 9041,\n\t\"./tk\": 19005,\n\t\"./tk.js\": 19005,\n\t\"./tl-ph\": 75768,\n\t\"./tl-ph.js\": 75768,\n\t\"./tlh\": 89444,\n\t\"./tlh.js\": 89444,\n\t\"./tr\": 72397,\n\t\"./tr.js\": 72397,\n\t\"./tzl\": 28254,\n\t\"./tzl.js\": 28254,\n\t\"./tzm\": 51106,\n\t\"./tzm-latn\": 30699,\n\t\"./tzm-latn.js\": 30699,\n\t\"./tzm.js\": 51106,\n\t\"./ug-cn\": 9288,\n\t\"./ug-cn.js\": 9288,\n\t\"./uk\": 67691,\n\t\"./uk.js\": 67691,\n\t\"./ur\": 13795,\n\t\"./ur.js\": 13795,\n\t\"./uz\": 6791,\n\t\"./uz-latn\": 60588,\n\t\"./uz-latn.js\": 60588,\n\t\"./uz.js\": 6791,\n\t\"./vi\": 65666,\n\t\"./vi.js\": 65666,\n\t\"./x-pseudo\": 14378,\n\t\"./x-pseudo.js\": 14378,\n\t\"./yo\": 75805,\n\t\"./yo.js\": 75805,\n\t\"./zh-cn\": 83839,\n\t\"./zh-cn.js\": 83839,\n\t\"./zh-hk\": 55726,\n\t\"./zh-hk.js\": 55726,\n\t\"./zh-mo\": 99807,\n\t\"./zh-mo.js\": 99807,\n\t\"./zh-tw\": 74152,\n\t\"./zh-tw.js\": 74152\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 46700;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = function(module) {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 4577;","__webpack_require__.b = document.baseURI || self.location.href;\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t4577: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = function(chunkId) { return installedChunks[chunkId] === 0; };\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunknextcloud\"] = self[\"webpackChunknextcloud\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [7874], function() { return __webpack_require__(39977); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","loadedScripts","loadedStyles","updatableNotification","getDefaultNotificationFunction","setDefault","callback","this","hide","$row","_","undefined","each","$","toastify","hideToast","console","error","call","showHtml","html","options","isHTML","timeout","TOAST_PERMANENT_TIMEOUT","toast","showMessage","toastElement","show","text","toString","split","join","escapeHTML","showUpdate","showTemporary","TOAST_DEFAULT_TIMEOUT","isHidden","find","length","ajaxConnectionLostHandler","Notification","t","trailing","enableDynamicSlideToggle","Apps","$el","removeClass","trigger","addClass","method","endpoint","OC","type","toUpperCase","url","generateOcsUrl","data","success","bind","appConfig","window","oc_appconfig","AppConfig","getValue","app","key","defaultValue","setValue","value","getApps","getKeys","deleteKey","_oc_appswebroots","methodMap","create","update","patch","delete","read","parsePropFindResult","result","davProperties","subResult","props","href","propStat","status","properties","propKey","id","parseIdFromLocation","queryPos","indexOf","substr","parts","pop","isSuccessStatus","callPropPatch","client","model","headers","propPatch","attrs","changedProp","warn","convertModelAttributesToDavProperties","changed","then","toJSON","Backbone","VendorBackbone","Object","assign","davCall","dav","baseUrl","xmlNamespaces","resolveUrl","requestToken","propFind","depth","response","propsMapping","results","body","shift","callPropFind","request","callMkCol","responseJson","locationHeader","xhr","getResponseHeader","callMethod","davSync","params","isCollection","Collection","hasInnerCollection","usePUT","collection","Error","urlError","JSON","stringify","processData","prototype","textStatus","errorThrown","context","_oc_config","Contact","Model","defaults","fullName","lastMessage","actions","hasOneAction","hasTwoActions","hasManyActions","initialize","get","set","ContactCollection","ContactsListView","View","_collection","_subViews","render","self","forEach","contact","item","ContactsListItemView","append","on","_onChildActionMenuToggle","push","$src","view","className","_template","_model","_actionMenuShown","events","contactTemplate","require","template","_onOtherActionMenuOpened","delegateEvents","imageplaceholder","tooltip","placement","_onToggleActionsMenu","is","ContactsMenuView","_loadingTemplate","_errorTemplate","_contentTemplate","_contactsTemplate","_contacts","_searchTerm","templates","loading","menu","list","_onSearch","e","searchTerm","val","loadingTemplate","errorTemplate","couldNotLoadText","contentTemplate","searchContactsText","contactsTemplate","noContactsFoundText","showAllContactsText","contactsAppMgmtText","showLoading","loadingText","showError","showContacts","viewData","contacts","contactsAppEnabled","contactsAppURL","canInstallApp","contactsAppMgmtURL","searchVal","focus","ContactsMenu","_view","_contactsPromise","el","loadContacts","_getContacts","Promise","resolve","filter","term","catch","rawUid","document","getElementsByTagName","getAttribute","displayName","currentUser","Search","isA11yActivation","event","global","emit","token","Dialogs","YES_NO_BUTTONS","OK_BUTTONS","FILEPICKER_TYPE_CHOOSE","FILEPICKER_TYPE_MOVE","FILEPICKER_TYPE_COPY","FILEPICKER_TYPE_COPY_MOVE","FILEPICKER_TYPE_CUSTOM","dialogsCounter","alert","title","modal","message","OK_BUTTON","info","confirm","confirmDestructive","buttons","confirmHtml","prompt","name","password","_getMessageTemplate","$tmpl","dialogName","dialogId","$dlg","octemplate","dialog_name","input","attr","label","buttonlist","click","ocdialog","defaultButton","closeOnEscape","close","filepicker","multiselect","mimetypeFilter","path","sortField","sortOrder","emptyText","newText","filesClient","OCA","Sharing","PublicApp","fileList","filelist","allowDirectoryChooser","_getFilePickerTemplate","$filePicker","emptytext","newtext","nameCol","sizeCol","modifiedCol","target","prepend","$showGridView","_onGridviewChange","_getGridSettings","newButton","stopImmediatePropagation","preventDefault","$input","submit","newName","lastPos","lastIndexOf","selectRange","$form","$submit","stopPropagation","filename","trimmedName","trim","match","isFileNameValid","file","escape","checkInput","newname","createDirectory","always","_fillFilePicker","ready","$fileListHeader","$filelist","$filelistContainer","$dirTree","_handleTreeListSelect","_handlePickerClick","dir","currentTarget","functionToCall","returnType","datapath","index","element","selectedName","button","width","height","style","remove","buttonEnableDisable","closest","prop","fail","content","dialogType","allowHtml","escapeFunction","cancel","classes","confirmClasses","closeCallback","_fileexistsshown","fileexists","original","replacement","controller","dialogDeferred","resampleHermite","canvas","W","H","W2","H2","Math","round","img","getContext","getImageData","img2","data2","ratio_w","ratio_h","ratio_w_half","ceil","ratio_h_half","j","i","x2","weight","weights","weights_alpha","gx_r","gx_g","gx_b","gx_a","center_y","yy","floor","dy","abs","center_x","w0","xx","dx","w","sqrt","clearRect","max","putImageData","addConflict","$conflicts","$conflict","clone","$originalDiv","$replacementDiv","size","mtime","lastModified","directory","urlSpec","x","y","c","etag","forceIcon","previewpath","Files","generatePreviewUrl","replace","css","FileReader","reader","onload","blob","Blob","URL","webkitURL","originalUrl","createObjectURL","image","Image","src","createElement","min","drawImage","toDataURL","readAsArrayBuffer","reject","getCroppedPreview","checkboxId","count","n","parent","children","_getFileExistsTemplate","allnewfiles","allexistingfiles","why","what","onCancel","onContinue","closeButton","$primaryButton","updatePrimaryButton","checkedCount","$checkbox","promise","gridview","toggleClass","isGridView","hasClass","defer","$filePickerTemplate","tmpl","$listTmpl","detach","jqXHR","$messageTemplate","$fileexistsTemplate","empty","advancedFilter","getFolderContents","files","_changeButtonsText","mimetype","showHiddenInput","getElementById","startsWith","comparator","Comparators","fileInfo1","fileInfo2","sort","file1","file2","isFavorite","fileInfo","tags","_fillSlug","idx","entry","simpleSize","sizeColor","isEncrypted","icon","parseInt","pow","filename1","filename2","date","previewUrl","addButton","$template","paths","prependTo","getOcDialog","$element","ctrlKey","copyText","folder","moveText","eq","getToken","setToken","newToken","OCEventSource","joinChar","dataStr","typelessListeners","closed","listeners","encodeURIComponent","useFallBack","EventSource","iframeId","iframeCount","fallBackSources","iframe","source","onmessage","parse","listen","fallBackCallBack","done","lastLength","addEventListener","currentMenu","currentMenuToggle","hideMenus","complete","lastMenu","slideUp","apply","arguments","isAdmin","_oc_isadmin","load","loadTranslations","register","_unregister","unregister","translate","translatePlural","Handlebars","startSaving","selector","startAction","stop","finishedSaving","finishedAction","finishedSuccess","finishedError","delay","fadeOut","pageLoadTime","init","requirePasswordConfirmation","moment","requiresPasswordConfirmation","serverTimeDiff","nc_pageLoad","timeSinceLogin","nc_lastLogin","backendAllowsPasswordConfirmation","rejectCallback","config","_confirmPassword","$dialog","$error","$buttons","generateUrl","lastLogin","theme","_theme","_handlers","_pushState","strParams","history","pushState","location","pathname","navigator","userAgent","toLowerCase","pattern","patterns","querySelectorAll","ii","fill","stroke","removeAttribute","setAttribute","replaceState","hash","_cancelPop","addOnPopStateHandler","handler","_parseHashQuery","pos","_decodeQuery","query","parseUrlQuery","search","_onPopState","state","chunkify","tz","charAt","m","History","humanFileSize","computerFileSize","string","s","bytes","matches","parseFloat","isFinite","b","k","kb","mb","gb","g","tb","pb","p","formatDate","timestamp","format","TESTING","relativeModifiedDate","diff","fromNow","getScrollBarWidth","_scrollBarWidth","inner","outer","position","top","left","visibility","overflow","appendChild","w1","offsetWidth","w2","clientWidth","removeChild","stripTime","Date","getFullYear","getMonth","getDate","naturalSortCompare","a","aa","bb","aNum","Number","bNum","localeCompare","waitFor","interval","internalCallback","setTimeout","isCookieSetToValue","cookies","cookie","debug","_oc_debug","webroot","_oc_webroot","coreApps","menuSpeed","PERMISSION_ALL","PERMISSION_CREATE","PERMISSION_DELETE","PERMISSION_NONE","PERMISSION_READ","PERMISSION_SHARE","PERMISSION_UPDATE","TAG_FAVORITE","fileIsBlacklisted","Config","addScript","script","generateFilePath","addStyle","createStyleSheet","appSettings","args","appid","scriptName","cache","settings","popup","arrowclass","loadJS","scriptname","jqxhr","appswebroots","dialogs","getCurrentUser","uid","isUserAdmin","L10N","_ajaxConnectionLostHandler","_processAjaxError","statusText","timer","setInterval","clearInterval","registerXHRForErrorProcessing","readyState","getCapabilities","realGetCapabilities","registerMenu","$toggle","$menuEl","toggle","headerMenu","isClickableElement","slideToggle","showMenu","unregisterMenu","off","basename","encodePath","dirname","isSamePath","joinPaths","getHost","host","getHostName","hostname","getPort","port","getProtocol","protocol","getCanonicalLocale","getLocale","getLanguage","buildQueryString","parseQueryString","queryString","components","part","decodeURIComponent","msg","PasswordConfirmation","Plugins","_plugins","targetName","plugin","plugins","getPlugins","attach","targetObject","Util","filePath","namespaces","tail","getRootPath","getRootUrl","imagePath","redirect","targetURL","reload","getRequestToken","linkTo","linkToOCS","service","version","ocsVersion","linkToRemote","generateRemoteUrl","linkToRemoteBase","realGetRootUrl","subscribe","ArrowRight","NcButton","default","valueLoading","required","invertedColors","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","_vm","_c","_self","$event","$emit","scopedSlots","_u","fn","staticClass","proxy","_v","_s","LoginButton","NcPasswordField","NcTextField","NcNoteCard","username","redirectUrl","errors","messages","throttleDelay","autoCompleteAllowed","directLogin","timezone","timezoneOffset","headline","productName","user","computed","isError","errorLabel","apacheAuthFailed","internalException","invalidPassword","userDisabled","loadingIcon","loginActionUrl","mounted","methods","updateUsername","ref","_e","_l","class","staticStyle","domProps","shake","NoValidCredentials","InformationIcon","LockOpenIcon","isHttps","isLocalhost","hasPublicKeyCredential","validCredentials","authenticate","getAuthenticationData","loginName","Axios","resp","publicKey","sign","rawId","authenticatorData","clientDataJSON","signature","userHandle","completeAuthentication","directives","rawName","expression","composing","resetPasswordLink","watch","resetPasswordTarget","encrypted","proceed","Array","isArray","_i","$$a","$$el","$$c","checked","$$i","concat","slice","warning","clear","LoginForm","PasswordLessLoginForm","ResetPassword","UpdatePassword","passwordlessLogin","resetPassword","canResetPassword","resetPasswordUser","hasPasswordless","countAlternativeLogins","alternativeLogins","hideLoginForm","passwordResetFinished","alternativeLogin","L10n","Vue","Nextcloud","LoginView","$mount","___CSS_LOADER_EXPORT___","module","exports","container","depth0","helpers","partials","stack1","lookupProperty","propertyName","hasOwnProperty","nullContext","program","noop","alias1","lambda","alias2","escapeExpression","helper","hooks","helperMissing","alias3","alias4","map","webpackContext","req","webpackContextResolve","__webpack_require__","o","code","keys","__webpack_module_cache__","moduleId","cachedModule","loaded","__webpack_modules__","O","chunkIds","priority","notFulfilled","Infinity","fulfilled","every","splice","r","getter","__esModule","d","definition","defineProperty","enumerable","globalThis","Function","obj","Symbol","toStringTag","nmd","baseURI","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","nc","__webpack_exports__"],"sourceRoot":""}
\ No newline at end of file diff --git a/dist/core-main.js b/dist/core-main.js index 32083ccca03..c0ee90a7765 100644 --- a/dist/core-main.js +++ b/dist/core-main.js @@ -1,3 +1,3 @@ /*! For license information please see core-main.js.LICENSE.txt */ -!function(){var e,i={82777:function(e,i,o){"use strict";var a={};o.r(a),o.d(a,{deleteKey:function(){return B},getApps:function(){return x},getKeys:function(){return k},getValue:function(){return P},setValue:function(){return E}});var r={};o.r(r),o.d(r,{formatLinksPlain:function(){return dn},formatLinksRich:function(){return un},plainToRich:function(){return ln},richToPlain:function(){return cn}});var s={};o.r(s),o.d(s,{dismiss:function(){return fn},query:function(){return pn}});var l=o(19755),c=o.n(l),u=(o(28594),o(35666),o(35202),o(78595)),d=o(79753),A=o(25108),p={},f=[],h=o(18181),m=o(64024),g=o(25108),v={updatableNotification:null,getDefaultNotificationFunction:null,setDefault:function(t){this.getDefaultNotificationFunction=t},hide:function(t,e){h.ZP.isFunction(t)&&(e=t,t=void 0),t?(t.each((function(){c()(this)[0].toastify?c()(this)[0].toastify.hideToast():g.error("cannot hide toast because object is not set"),this===this.updatableNotification&&(this.updatableNotification=null)})),e&&e.call(),this.getDefaultNotificationFunction&&this.getDefaultNotificationFunction()):g.error("Missing argument $row in OC.Notification.hide() call, caller needs to be adjusted to only dismiss its own notification")},showHtml:function(t,e){(e=e||{}).isHTML=!0,e.timeout=e.timeout?e.timeout:m.Rl;var n=(0,m.PV)(t,e);return n.toastElement.toastify=n,c()(n.toastElement)},show:function(t,e){(e=e||{}).timeout=e.timeout?e.timeout:m.Rl;var n=(0,m.PV)(function(t){return t.toString().split("&").join("&").split("<").join("<").split(">").join(">").split('"').join(""").split("'").join("'")}(t),e);return n.toastElement.toastify=n,c()(n.toastElement)},showUpdate:function(t){return this.updatableNotification&&this.updatableNotification.hideToast(),this.updatableNotification=(0,m.PV)(t,{timeout:m.Rl}),this.updatableNotification.toastElement.toastify=this.updatableNotification,c()(this.updatableNotification.toastElement)},showTemporary:function(t,e){(e=e||{}).timeout=e.timeout||m.TN;var n=(0,m.PV)(t,e);return n.toastElement.toastify=n,c()(n.toastElement)},isHidden:function(){return!c()("#content").find(".toastify").length}},C=h.ZP.throttle((function(){v.showTemporary(t("core","Connection to server lost"))}),7e3,{trailing:!1}),b=!1,w={enableDynamicSlideToggle:function(){b=!0},showAppSidebar:function(t){(t||c()("#app-sidebar")).removeClass("disappear").show(),c()("#app-content").trigger(new(c().Event)("appresized"))},hideAppSidebar:function(t){(t||c()("#app-sidebar")).hide().addClass("disappear"),c()("#app-content").trigger(new(c().Event)("appresized"))}};function y(t,e,n){"post"!==t&&"delete"!==t||!Jt.PasswordConfirmation.requiresPasswordConfirmation()?(n=n||{},c().ajax({type:t.toUpperCase(),url:(0,d.generateOcsUrl)("apps/provisioning_api/api/v1/config/apps")+e,data:n.data||{},success:n.success,error:n.error})):Jt.PasswordConfirmation.requirePasswordConfirmation(_.bind(y,this,t,e,n))}function x(t){y("get","",t)}function k(t,e){y("get","/"+t,e)}function P(t,e,n,i){(i=i||{}).data={defaultValue:n},y("get","/"+t+"/"+e,i)}function E(t,e,n,i){(i=i||{}).data={value:n},y("post","/"+t+"/"+e,i)}function B(t,e,n){y("delete","/"+t+"/"+e,n)}var O=window.oc_appconfig||{},D={getValue:function(t,e,n,i){P(t,e,n,{success:i})},setValue:function(t,e,n){E(t,e,n)},getApps:function(t){x({success:t})},getKeys:function(t,e){k(t,{success:e})},deleteKey:function(t,e){B(t,e)}},T=o(25108),I=void 0!==window._oc_appswebroots&&window._oc_appswebroots,j=o(72316),z=o.n(j),S=o(76591),N=o(25108),U={create:"POST",update:"PROPPATCH",patch:"PROPPATCH",delete:"DELETE",read:"PROPFIND"};function M(t,e){if(h.ZP.isArray(t))return h.ZP.map(t,(function(t){return M(t,e)}));var n={href:t.href};return h.ZP.each(t.propStat,(function(t){if("HTTP/1.1 200 OK"===t.status)for(var i in t.properties){var o=i;i in e&&(o=e[i]),n[o]=t.properties[i]}})),n.id||(n.id=L(n.href)),n}function L(t){var e=t.indexOf("?");e>0&&(t=t.substr(0,e));var n,i=t.split("/");do{n=i[i.length-1],i.pop()}while(!n&&i.length>0);return n}function F(t){return t>=200&&t<=299}function R(t,e,n,i){return t.propPatch(e.url,function(t,e){var n,i={};for(n in t){var o=e[n],a=t[n];o||(N.warn('No matching DAV property for property "'+n),o=n),(h.ZP.isBoolean(a)||h.ZP.isNumber(a))&&(a=""+a),i[o]=a}return i}(n.changed,e.davProperties),i).then((function(t){F(t.status)?h.ZP.isFunction(e.success)&&e.success(n.toJSON()):h.ZP.isFunction(e.error)&&e.error(t)}))}var Q=z().noConflict();Object.assign(Q,{davCall:function(t,e){var n=new S.dav.Client({baseUrl:t.url,xmlNamespaces:h.ZP.extend({"DAV:":"d","http://owncloud.org/ns":"oc"},t.xmlNamespaces||{})});n.resolveUrl=function(){return t.url};var i=h.ZP.extend({"X-Requested-With":"XMLHttpRequest",requesttoken:OC.requestToken},t.headers);return"PROPFIND"===t.type?function(t,e,n,i){return t.propFind(e.url,h.ZP.values(e.davProperties)||[],e.depth,i).then((function(t){if(F(t.status)){if(h.ZP.isFunction(e.success)){var n=h.ZP.invert(e.davProperties),i=M(t.body,n);e.depth>0&&i.shift(),e.success(i)}}else h.ZP.isFunction(e.error)&&e.error(t)}))}(n,t,0,i):"PROPPATCH"===t.type?R(n,t,e,i):"MKCOL"===t.type?function(t,e,n,i){return t.request(e.type,e.url,i,null).then((function(o){F(o.status)?R(t,e,n,i):h.ZP.isFunction(e.error)&&e.error(o)}))}(n,t,e,i):function(t,e,n,i){return i["Content-Type"]="application/json",t.request(e.type,e.url,i,e.data).then((function(t){if(F(t.status)){if(h.ZP.isFunction(e.success)){if("PUT"===e.type||"POST"===e.type||"MKCOL"===e.type){var i=t.body||n.toJSON(),o=t.xhr.getResponseHeader("Content-Location");return"POST"===e.type&&o&&(i.id=L(o)),void e.success(i)}if(207===t.status){var a=h.ZP.invert(e.davProperties);e.success(M(t.body,a))}else e.success(t.body)}}else h.ZP.isFunction(e.error)&&e.error(t)}))}(n,t,e,i)},davSync:function(t){return function(e,n,i){var o={type:U[e]||e},a=n instanceof t.Collection;if("update"===e&&(n.hasInnerCollection?o.type="MKCOL":(n.usePUT||n.collection&&n.collection.usePUT)&&(o.type="PUT")),i.url||(o.url=h.ZP.result(n,"url")||function(){throw new Error('A "url" property or function must be specified')}()),null!=i.data||!n||"create"!==e&&"update"!==e&&"patch"!==e||(o.data=JSON.stringify(i.attrs||n.toJSON(i))),"PROPFIND"!==o.type&&(o.processData=!1),"PROPFIND"===o.type||"PROPPATCH"===o.type){var r=n.davProperties;!r&&n.model&&(r=n.model.prototype.davProperties),r&&(h.ZP.isFunction(r)?o.davProperties=r.call(n):o.davProperties=r),o.davProperties=h.ZP.extend(o.davProperties||{},i.davProperties),h.ZP.isUndefined(i.depth)&&(i.depth=a?1:0)}var s=i.error;i.error=function(t,e,n){i.textStatus=e,i.errorThrown=n,s&&s.call(i.context,t,e,n)};var l=i.xhr=t.davCall(h.ZP.extend(o,i),n);return n.trigger("request",n,l,i),l}}(Q)});var G=Q,H=o(65358),K=window._oc_config||{},Z=o(25108),Y=j.Model.extend({defaults:{fullName:"",lastMessage:"",actions:[],hasOneAction:!1,hasTwoActions:!1,hasManyActions:!1},initialize:function(){0===this.get("actions").length?this.set("hasOneAction",!0):1===this.get("actions").length?(this.set("hasTwoActions",!0),this.set("secondAction",this.get("actions")[0])):this.set("hasManyActions",!0)}}),q=j.Collection.extend({model:Y}),W=j.View.extend({_collection:void 0,_subViews:[],initialize:function(t){this._collection=t.collection},render:function(){var t=this;return t.$el.html(""),t._subViews=[],t._collection.forEach((function(e){var n=new J({model:e});n.render(),t.$el.append(n.$el),n.on("toggle:actionmenu",t._onChildActionMenuToggle,t),t._subViews.push(n)})),t},_onChildActionMenuToggle:function(t){this._subViews.forEach((function(e){e.trigger("parent:toggle:actionmenu",t)}))}}),J=j.View.extend({className:"contact",_template:void 0,_model:void 0,_actionMenuShown:!1,events:{"click .icon-more":"_onToggleActionsMenu"},contactTemplate:o(10944),template:function(t){return this.contactTemplate(t)},initialize:function(t){this._model=t.model,this.on("parent:toggle:actionmenu",this._onOtherActionMenuOpened,this)},render:function(){return this.$el.html(this.template({contact:this._model.toJSON()})),this.delegateEvents(),this.$("div.avatar").imageplaceholder(this._model.get("fullName")),this.$(".top-action").tooltip({placement:"left"}),this.$(".second-action").tooltip({placement:"left"}),this},_onToggleActionsMenu:function(){this._actionMenuShown=!this._actionMenuShown,this._actionMenuShown?this.$(".menu").show():this.$(".menu").hide(),this.trigger("toggle:actionmenu",this.$el)},_onOtherActionMenuOpened:function(t){this.$el.is(t)||(this._actionMenuShown=!1,this.$(".menu").hide())}}),V=j.View.extend({_loadingTemplate:void 0,_errorTemplate:void 0,_contentTemplate:void 0,_contactsTemplate:void 0,_contacts:void 0,_searchTerm:"",events:{"input #contactsmenu-search":"_onSearch"},templates:{loading:o(95386),error:o(20421),menu:o(66115),list:o(34083)},_onSearch:h.ZP.debounce((function(t){var e=this.$("#contactsmenu-search").val();e!==this._searchTerm&&(this.trigger("search",this.$("#contactsmenu-search").val()),this._searchTerm=e)}),700),loadingTemplate:function(t){return this.templates.loading(t)},errorTemplate:function(e){return this.templates.error(h.ZP.extend({couldNotLoadText:t("core","Could not load your contacts")},e))},contentTemplate:function(e){return this.templates.menu(h.ZP.extend({searchContactsText:t("core","Search contacts …")},e))},contactsTemplate:function(e){return this.templates.list(h.ZP.extend({noContactsFoundText:t("core","No contacts found"),showAllContactsText:t("core","Show all contacts …"),contactsAppMgmtText:t("core","Install the Contacts app")},e))},initialize:function(t){this.options=t},showLoading:function(t){this.render(),this._contacts=void 0,this.$(".content").html(this.loadingTemplate({loadingText:t}))},showError:function(){this.render(),this._contacts=void 0,this.$(".content").html(this.errorTemplate())},showContacts:function(t,e){this._contacts=t.contacts,this.render({contacts:t.contacts});var n=new W({collection:t.contacts});n.render(),this.$(".content").html(this.contactsTemplate({contacts:t.contacts,searchTerm:e,contactsAppEnabled:t.contactsAppEnabled,contactsAppURL:Jt.generateUrl("/apps/contacts"),canInstallApp:Jt.isUserAdmin(),contactsAppMgmtURL:Jt.generateUrl("/settings/apps/social/contacts")})),this.$("#contactsmenu-contacts").html(n.$el)},render:function(t){var e=this.$("#contactsmenu-search").val();return this.$el.html(this.contentTemplate(t)),this.$("#contactsmenu-search").val(e),this.$("#contactsmenu-search").focus(),this}}),X=function(t){this.initialize(t)};X.prototype={$el:void 0,_view:void 0,_contactsPromise:void 0,initialize:function(t){this.$el=c()(t.el),this._view=new V({el:this.$el}),this._view.on("search",(function(t){this.loadContacts(t)}),this)},_getContacts:function(t){var e=Jt.generateUrl("/contactsmenu/contacts");return Promise.resolve(c().ajax(e,{method:"POST",data:{filter:t}}))},loadContacts:function(e){var n=this;return n._contactsPromise||(n._contactsPromise=n._getContacts(e)),h.ZP.isUndefined(e)||""===e?n._view.showLoading(t("core","Loading your contacts …")):n._view.showLoading(t("core","Looking for {term} …",{term:e})),n._contactsPromise.then((function(t){t.contacts=new q(t.contacts),n._view.showContacts(t,e)}),(function(t){n._view.showError(),Z.error("There was an error loading your contacts",t)})).then((function(){delete n._contactsPromise})).catch(Z.error.bind(this))}};var $=X,tt=document.getElementsByTagName("head")[0].getAttribute("data-user"),et=document.getElementsByTagName("head")[0].getAttribute("data-user-displayname"),nt=void 0!==tt&&tt,it=o(25108);function ot(t){return ot="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},ot(t)}function at(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,(void 0,o=function(t,e){if("object"!==ot(t)||null===t)return t;var n=t[Symbol.toPrimitive];if(void 0!==n){var i=n.call(t,e);if("object"!==ot(i))return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(i.key,"string"),"symbol"===ot(o)?o:String(o)),i)}var o}function rt(t,e,n){return e&&at(t.prototype,e),n&&at(t,n),Object.defineProperty(t,"prototype",{writable:!1}),t}var st={Search:rt((function t(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),it.warn("OCA.Search is deprecated. Please use the unified search API instead")}))},lt=function(t){return"click"===t.type||"keydown"===t.type&&"Enter"===t.key},ct=o(25108);function ut(t,e,n,i,o,a,r){try{var s=t[a](r),l=s.value}catch(t){return void n(t)}s.done?e(l):Promise.resolve(l).then(i,o)}function dt(t){return function(){var e=this,n=arguments;return new Promise((function(i,o){var a=t.apply(e,n);function r(t){ut(a,i,o,r,s,"next",t)}function s(t){ut(a,i,o,r,s,"throw",t)}r(void 0)}))}}function At(t){return At="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},At(t)}var pt,ft,ht,mt,gt={YES_NO_BUTTONS:70,OK_BUTTONS:71,FILEPICKER_TYPE_CHOOSE:1,FILEPICKER_TYPE_MOVE:2,FILEPICKER_TYPE_COPY:3,FILEPICKER_TYPE_COPY_MOVE:4,FILEPICKER_TYPE_CUSTOM:5,dialogsCounter:0,alert:function(t,e,n,i){this.message(t,e,"alert",gt.OK_BUTTON,n,i)},info:function(t,e,n,i){this.message(t,e,"info",gt.OK_BUTTON,n,i)},confirm:function(t,e,n,i){return this.message(t,e,"notice",gt.YES_NO_BUTTONS,n,i)},confirmDestructive:function(t,e,n,i,o){return this.message(t,e,"none",n,i,void 0===o||o)},confirmHtml:function(t,e,n,i){return this.message(t,e,"notice",gt.YES_NO_BUTTONS,n,i,!0)},prompt:function(e,n,i,o,a,r){return c().when(this._getMessageTemplate()).then((function(s){var l="oc-dialog-"+gt.dialogsCounter+"-content",u="#"+l,d=s.octemplate({dialog_name:l,title:n,message:e,type:"notice"}),A=c()("<input/>");A.attr("type",r?"password":"text").attr("id",l+"-input").attr("placeholder",a);var p=c()("<label/>").attr("for",l+"-input").text(a+": ");d.append(p),d.append(A),void 0===o&&(o=!1),c()("body").append(d),void 0!==i&&(i=h.ZP.once(i));var f=[{text:t("core","No"),click:function(){void 0!==i&&i(!1,A.val()),c()(u).ocdialog("close")}},{text:t("core","Yes"),click:function(){void 0!==i&&i(!0,A.val()),c()(u).ocdialog("close")},defaultButton:!0}];c()(u).ocdialog({closeOnEscape:!0,modal:o,buttons:f,close:function(){void 0!==i&&i(!1,A.val())}}),A.focus(),gt.dialogsCounter++}))},filepicker:function(e,n,i,o,a,r,s,l){var u=this;if(this.filepicker.sortField="name",this.filepicker.sortOrder="asc",!this.filepicker.loading){void 0===r&&(r=this.FILEPICKER_TYPE_CHOOSE);var d=t("core","No files in here"),A=t("files","New folder");r!==this.FILEPICKER_TYPE_COPY&&r!==this.FILEPICKER_TYPE_MOVE&&r!==this.FILEPICKER_TYPE_COPY_MOVE||(d=t("core","No more subfolders in here")),this.filepicker.loading=!0,this.filepicker.filesClient=st.Sharing&&st.Sharing.PublicApp&&st.Sharing.PublicApp.fileList?st.Sharing.PublicApp.fileList.filesClient:Jt.Files.getClient(),this.filelist=null,s=s||"",l=Object.assign({allowDirectoryChooser:!1},l),c().when(this._getFilePickerTemplate()).then((function(p){var f,h;u.filepicker.loading=!1,u.$filePicker&&u.$filePicker.ocdialog("close"),null==o&&(o=[]),"string"==typeof o&&(o=[o]),u.$filePicker=p.octemplate({dialog_name:"oc-dialog-filepicker-content",title:e,emptytext:d,newtext:A,nameCol:t("core","Name"),sizeCol:t("core","Size"),modifiedCol:t("core","Modified")}).data("path",s).data("multiselect",i).data("mimetype",o).data("allowDirectoryChooser",l.allowDirectoryChooser),"function"==typeof l.filter&&u.$filePicker.data("filter",l.filter),void 0===a&&(a=!1),void 0===i&&(i=!1),c()(null!==(f=null===(h=l)||void 0===h?void 0:h.target)&&void 0!==f?f:"body").prepend(u.$filePicker),u.$showGridView=c()("button#picker-showgridview"),u.$showGridView.on("click keydown",(function(t){lt(t)&&u._onGridviewChange()})),u._getGridSettings();var m=u.$filePicker.find(".actions.creatable .button-add");r!==u.FILEPICKER_TYPE_CHOOSE||l.allowDirectoryChooser||u.$filePicker.find(".actions.creatable").hide(),m.on("focus",(function(){u.$filePicker.ocdialog("setEnterCallback",(function(t){t.stopImmediatePropagation(),t.preventDefault(),m.click()}))})),m.on("blur",(function(){u.$filePicker.ocdialog("unsetEnterCallback")})),Jt.registerMenu(m,u.$filePicker.find(".menu"),(function(){v.tooltip("hide"),v.focus(),u.$filePicker.ocdialog("setEnterCallback",(function(t){t.stopImmediatePropagation(),t.preventDefault(),u.$filePicker.submit()}));var t=v.val(),e=t.lastIndexOf(".");-1===e&&(e=t.length),v.selectRange(0,e)}));var g=u.$filePicker.find(".filenameform"),v=g.find("input[type='text']"),C=g.find("input[type='submit']");v.on("keydown",(function(t){lt(t)&&(t.stopImmediatePropagation(),t.preventDefault(),g.submit())})),C.on("click",(function(t){t.stopImmediatePropagation(),t.preventDefault(),g.submit()}));g.on("submit",(function(e){if(e.stopPropagation(),e.preventDefault(),function(){var e=v.val();try{if(function(e){var n=e.trim();if("."===n||".."===n)throw t("files",'"{name}" is an invalid file name.',{name:e});if(0===n.length)throw t("files","File name cannot be empty.");if(-1!==n.indexOf("/"))throw t("files",'"/" is not allowed inside a file name.');if(n.match(Jt.config.blacklist_files_regex))throw t("files",'"{name}" is not an allowed filetype',{name:e});return!0}(e)){if(u.filelist.find((function(t){return t.name===this}),e))throw t("files","{newName} already exists",{newName:e},void 0,{escape:!1});return!0}}catch(t){v.attr("title",t),v.tooltip({placement:"right",trigger:"manual",container:".newFolderMenu"}),v.tooltip("_fixTitle"),v.tooltip("show"),v.addClass("error")}return!1}()){var n=v.val();u.filepicker.filesClient.createDirectory(u.$filePicker.data("path")+"/"+n).always((function(t){u._fillFilePicker(u.$filePicker.data("path")+"/"+n,r)})),Jt.hideMenus(),u.$filePicker.ocdialog("unsetEnterCallback"),u.$filePicker.click(),v.val(A)}})),v.on("input",(function(t){v.tooltip("hide")})),u.$filePicker.ready((function(){u.$fileListHeader=u.$filePicker.find(".filelist thead tr"),u.$filelist=u.$filePicker.find(".filelist tbody"),u.$filelistContainer=u.$filePicker.find(".filelist-container"),u.$dirTree=u.$filePicker.find(".dirtree"),u.$dirTree.on("click keydown","div:not(:last-child)",u,(function(t){lt(t)&&u._handleTreeListSelect(t,r)})),u.$filelist.on("click keydown","tr",(function(t){lt(t)&&u._handlePickerClick(t,c()(this),r)})),u.$fileListHeader.on("click keydown","a",(function(t){if(lt(t)){var e=u.$filePicker.data("path");u.filepicker.sortField=c()(t.currentTarget).data("sort"),u.filepicker.sortOrder="asc"===u.filepicker.sortOrder?"desc":"asc",u._fillFilePicker(e,r)}})),u._fillFilePicker(s,r)}));var b=function(t){if(void 0!==n){var e;if(!0===i)e=[],u.$filelist.find("tr.filepicker_element_selected").each((function(t,n){e.push(u.$filePicker.data("path")+"/"+c()(n).data("entryname"))}));else{e=u.$filePicker.data("path");var o=u.$filelist.find("tr.filepicker_element_selected").data("entryname");o&&(e+="/"+o)}n(e,t),u.$filePicker.ocdialog("close")}},w=[];r===gt.FILEPICKER_TYPE_CHOOSE?w.push({text:t("core","Choose"),click:function(){b(gt.FILEPICKER_TYPE_CHOOSE)},defaultButton:!0}):r===gt.FILEPICKER_TYPE_CUSTOM?l.buttons.forEach((function(t){w.push({text:t.text,click:function(){b(t.type)},defaultButton:t.defaultButton})})):(r!==gt.FILEPICKER_TYPE_COPY&&r!==gt.FILEPICKER_TYPE_COPY_MOVE||w.push({text:t("core","Copy"),click:function(){b(gt.FILEPICKER_TYPE_COPY)},defaultButton:!1}),r!==gt.FILEPICKER_TYPE_MOVE&&r!==gt.FILEPICKER_TYPE_COPY_MOVE||w.push({text:t("core","Move"),click:function(){b(gt.FILEPICKER_TYPE_MOVE)},defaultButton:!0})),u.$filePicker.ocdialog({closeOnEscape:!0,width:600,height:500,modal:a,buttons:w,style:{buttons:"aside"},close:function(){try{c()(this).ocdialog("destroy").remove()}catch(t){}u.$filePicker=null}});var y=u.$filePicker.closest(".oc-dialog").find(".primary");-1!==u.$filePicker.data("mimetype").indexOf("httpd/unix-directory")||u.$filePicker.data("allowDirectoryChooser")?y.prop("disabled",!1):y.prop("disabled",!0)})).fail((function(e,n){u.filepicker.loading=!1,0!==e&&alert(t("core","Error loading file picker template: {error}",{error:n}))}))}},message:function(e,n,i,o,a,r,s){return c().when(this._getMessageTemplate()).then((function(l){var u="oc-dialog-"+gt.dialogsCounter+"-content",d="#"+u,A=l.octemplate({dialog_name:u,title:n,message:e,type:i},s?{escapeFunction:""}:{});void 0===r&&(r=!1),c()("body").append(A);var p=[];switch(o){case gt.YES_NO_BUTTONS:p=[{text:t("core","No"),click:function(){void 0!==a&&a(!1),c()(d).ocdialog("close")}},{text:t("core","Yes"),click:function(){void 0!==a&&a(!0),c()(d).ocdialog("close")},defaultButton:!0}];break;case gt.OK_BUTTON:p[0]={text:t("core","OK"),click:function(){c()(d).ocdialog("close"),void 0!==a&&a()},defaultButton:!0};break;default:"object"===At(o)&&o.type===gt.YES_NO_BUTTONS&&(p=[{text:o.cancel||t("core","No"),click:function(){void 0!==a&&a(!1),c()(d).ocdialog("close")}},{text:o.confirm||t("core","Yes"),click:function(){void 0!==a&&a(!0),c()(d).ocdialog("close")},defaultButton:!0,classes:o.confirmClasses}])}c()(d).ocdialog({closeOnEscape:!0,closeCallback:function(){a&&a(!1)},modal:r,buttons:p}),gt.dialogsCounter++})).fail((function(i,o){0===i?alert(n+": "+e):alert(t("core","Error loading message template: {error}",{error:o}))}))},_fileexistsshown:!1,fileexists:function(e,i,o,a){var r=this,s=new(c().Deferred),l=function(t,e,n,i,o){i=Math.round(i),o=Math.round(o);for(var a=t.getContext("2d").getImageData(0,0,e,n),r=t.getContext("2d").getImageData(0,0,i,o),s=a.data,l=r.data,c=e/i,u=n/o,d=Math.ceil(c/2),A=Math.ceil(u/2),p=0;p<o;p++)for(var f=0;f<i;f++){for(var h=4*(f+p*i),m=0,g=0,v=0,C=0,b=0,w=0,y=0,x=(p+.5)*u,k=Math.floor(p*u);k<(p+1)*u;k++)for(var P=Math.abs(x-(k+.5))/A,E=(f+.5)*c,B=P*P,O=Math.floor(f*c);O<(f+1)*c;O++){var D=Math.abs(E-(O+.5))/d,T=Math.sqrt(B+D*D);T>=-1&&T<=1&&(m=2*T*T*T-3*T*T+1)>0&&(y+=m*s[3+(D=4*(O+k*e))],v+=m,s[D+3]<255&&(m=m*s[D+3]/250),C+=m*s[D],b+=m*s[D+1],w+=m*s[D+2],g+=m)}l[h]=C/g,l[h+1]=b/g,l[h+2]=w/g,l[h+3]=y/v}t.getContext("2d").clearRect(0,0,Math.max(e,i),Math.max(n,o)),t.width=i,t.height=o,t.getContext("2d").putImageData(r,0,0)},u=function(n,i,o){var a=n.find(".template").clone().removeClass("template").addClass("conflict"),r=a.find(".original"),s=a.find(".replacement");a.data("data",e),a.find(".filename").text(i.name),r.find(".size").text(Jt.Util.humanFileSize(i.size)),r.find(".mtime").text(Jt.Util.formatDate(i.mtime)),o.size&&o.lastModified&&(s.find(".size").text(Jt.Util.humanFileSize(o.size)),s.find(".mtime").text(Jt.Util.formatDate(o.lastModified)));var u=i.directory+"/"+i.name,d={file:u,x:96,y:96,c:i.etag,forceIcon:0},A=Files.generatePreviewUrl(d);A=A.replace(/'/g,"%27"),r.find(".icon").css({"background-image":"url('"+A+"')"}),function(t){var e=new(c().Deferred),n=t.type&&t.type.split("/").shift();if(window.FileReader&&"image"===n){var i=new FileReader;i.onload=function(t){var n=new Blob([t.target.result]);window.URL=window.URL||window.webkitURL;var i=window.URL.createObjectURL(n),o=new Image;o.src=i,o.onload=function(){var t,n,i,a,r,s,c,u=(t=o,r=document.createElement("canvas"),s=t.width,c=t.height,s>c?(i=0,n=(s-c)/2):(i=(c-s)/2,n=0),a=Math.min(s,c),r.width=a,r.height=a,r.getContext("2d").drawImage(t,n,i,a,a,0,0,a,a),l(r,a,a,96,96),r.toDataURL("image/png",.7));e.resolve(u)}},i.readAsArrayBuffer(t)}else e.reject();return e}(o).then((function(t){s.find(".icon").css("background-image","url("+t+")")}),(function(){u=Jt.MimeType.getIconUrl(o.type),s.find(".icon").css("background-image","url("+u+")")}));var p=n.find(".conflict").length;r.find("input:checkbox").attr("id","checkbox_original_"+p),s.find("input:checkbox").attr("id","checkbox_replacement_"+p),n.append(a),o.lastModified>i.mtime?s.find(".mtime").css("font-weight","bold"):o.lastModified<i.mtime&&r.find(".mtime").css("font-weight","bold"),o.size&&o.size>i.size?s.find(".size").css("font-weight","bold"):o.size&&o.size<i.size&&r.find(".size").css("font-weight","bold"),"readonly"===i.status&&(r.addClass("readonly").find('input[type="checkbox"]').prop("checked",!0).prop("disabled",!0),r.find(".message").text(t("core","read-only")))},d="oc-dialog-fileexists-content",A="#"+d;if(this._fileexistsshown){var p=c()(A+" .conflicts");u(p,i,o);var f=c()(A+" .conflict").length,h=n("core","{count} file conflict","{count} file conflicts",f,{count:f});c()(A).parent().children(".oc-dialog-title").text(h),c()(window).trigger("resize"),s.resolve()}else this._fileexistsshown=!0,c().when(this._getFileExistsTemplate()).then((function(n){var l=t("core","One file conflict"),p=n.octemplate({dialog_name:d,title:l,type:"fileexists",allnewfiles:t("core","New Files"),allexistingfiles:t("core","Already existing files"),why:t("core","Which files do you want to keep?"),what:t("core","If you select both versions, the copied file will have a number added to its name.")});if(c()("body").append(p),i&&o){var f=p.find(".conflicts");u(f,i,o)}var h=[{text:t("core","Cancel"),classes:"cancel",click:function(){void 0!==a.onCancel&&a.onCancel(e),c()(A).ocdialog("close")}},{text:t("core","Continue"),classes:"continue",click:function(){void 0!==a.onContinue&&a.onContinue(c()(A+" .conflict")),c()(A).ocdialog("close")}}];c()(A).ocdialog({width:500,closeOnEscape:!0,modal:!0,buttons:h,closeButton:null,close:function(){r._fileexistsshown=!1;try{c()(this).ocdialog("destroy").remove()}catch(t){}}}),c()(A).css("height","auto");var m=p.closest(".oc-dialog").find("button.continue");function g(){var t=p.find(".conflicts .checkbox:checked").length;m.prop("disabled",0===t)}m.prop("disabled",!0),c()(A).find(".allnewfiles").on("click",(function(){c()(A).find('.conflict .replacement input[type="checkbox"]').prop("checked",c()(this).prop("checked"))})),c()(A).find(".allexistingfiles").on("click",(function(){c()(A).find('.conflict .original:not(.readonly) input[type="checkbox"]').prop("checked",c()(this).prop("checked"))})),c()(A).find(".conflicts").on("click",".replacement,.original:not(.readonly)",(function(){var t=c()(this).find('input[type="checkbox"]');t.prop("checked",!t.prop("checked"))})),c()(A).find(".conflicts").on("click",'.replacement input[type="checkbox"],.original:not(.readonly) input[type="checkbox"]',(function(){var t=c()(this);t.prop("checked",!t.prop("checked"))})),c()(A).on("click",".replacement,.allnewfiles",(function(){var e=c()(A).find('.conflict .replacement input[type="checkbox"]:checked').length;e===c()(A+" .conflict").length?(c()(A).find(".allnewfiles").prop("checked",!0),c()(A).find(".allnewfiles + .count").text(t("core","(all selected)"))):e>0?(c()(A).find(".allnewfiles").prop("checked",!1),c()(A).find(".allnewfiles + .count").text(t("core","({count} selected)",{count:e}))):(c()(A).find(".allnewfiles").prop("checked",!1),c()(A).find(".allnewfiles + .count").text("")),g()})),c()(A).on("click",".original,.allexistingfiles",(function(){var e=c()(A).find('.conflict .original input[type="checkbox"]:checked').length;e===c()(A+" .conflict").length?(c()(A).find(".allexistingfiles").prop("checked",!0),c()(A).find(".allexistingfiles + .count").text(t("core","(all selected)"))):e>0?(c()(A).find(".allexistingfiles").prop("checked",!1),c()(A).find(".allexistingfiles + .count").text(t("core","({count} selected)",{count:e}))):(c()(A).find(".allexistingfiles").prop("checked",!1),c()(A).find(".allexistingfiles + .count").text("")),g()})),s.resolve()})).fail((function(){s.reject(),alert(t("core","Error loading file exists template"))}));return s.promise()},_getGridSettings:function(){var e=this;c().get(Jt.generateUrl("/apps/files/api/v1/showgridview"),(function(n){e.$showGridView.removeClass("icon-toggle-filelist icon-toggle-pictures").addClass(n.gridview?"icon-toggle-filelist":"icon-toggle-pictures"),e.$showGridView.attr("aria-label",n.gridview?t("files","Show list view"):t("files","Show grid view")),c()(".list-container").toggleClass("view-grid",n.gridview)}))},_onGridviewChange:function(){var e=this.$showGridView.hasClass("icon-toggle-filelist");Jt.currentUser&&c().post(Jt.generateUrl("/apps/files/api/v1/showgridview"),{show:!e}),this.$showGridView.removeClass("icon-toggle-filelist icon-toggle-pictures").addClass(e?"icon-toggle-pictures":"icon-toggle-filelist"),this.$showGridView.attr("aria-label",e?t("files","Show grid view"):t("files","Show list view")),this.$filePicker.find(".list-container").toggleClass("view-grid",!e)},_getFilePickerTemplate:function(){var t=c().Deferred();if(this.$filePickerTemplate)t.resolve(this.$filePickerTemplate);else{var e=this;c().get(Jt.filePath("core","templates","filepicker.html"),(function(n){e.$filePickerTemplate=c()(n),e.$listTmpl=e.$filePickerTemplate.find(".filelist tbody tr:first-child").detach(),t.resolve(e.$filePickerTemplate)})).fail((function(e,n,i){t.reject(e.status,i)}))}return t.promise()},_getMessageTemplate:function(){var t=c().Deferred();if(this.$messageTemplate)t.resolve(this.$messageTemplate);else{var e=this;c().get(Jt.filePath("core","templates","message.html"),(function(n){e.$messageTemplate=c()(n),t.resolve(e.$messageTemplate)})).fail((function(e,n,i){t.reject(e.status,i)}))}return t.promise()},_getFileExistsTemplate:function(){var t=c().Deferred();if(this.$fileexistsTemplate)t.resolve(this.$fileexistsTemplate);else{var e=this;c().get(Jt.filePath("files","templates","fileexists.html"),(function(n){e.$fileexistsTemplate=c()(n),t.resolve(e.$fileexistsTemplate)})).fail((function(){t.reject()}))}return t.promise()},_fillFilePicker:(pt=dt(regeneratorRuntime.mark((function e(n,i){var o,a,r,s,l,u,d,A;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return o=this,this.$filelist.empty(),this.$filePicker.find(".emptycontent").hide(),this.$filelistContainer.addClass("icon-loading"),this.$filePicker.data("path",n),a=this.$filePicker.data("mimetype"),r=this.$filePicker.data("filter"),"string"==typeof a&&(a=[a]),o.$fileListHeader.find(".sort-indicator").addClass("hidden").removeClass("icon-triangle-n").removeClass("icon-triangle-s"),o.$fileListHeader.find("[data-sort="+o.filepicker.sortField+"] .sort-indicator").removeClass("hidden"),"asc"===o.filepicker.sortOrder?o.$fileListHeader.find("[data-sort="+o.filepicker.sortField+"] .sort-indicator").addClass("icon-triangle-n"):o.$fileListHeader.find("[data-sort="+o.filepicker.sortField+"] .sort-indicator").addClass("icon-triangle-s"),s=function(){var t=dt(regeneratorRuntime.mark((function t(e){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",o.filepicker.filesClient.getFolderContents(e).then((function(t,e){return e})));case 1:case"end":return t.stop()}}),t)})));return function(e){return t.apply(this,arguments)}}(),e.prev=12,e.next=15,s(n);case 15:l=e.sent,e.next=26;break;case 18:return e.prev=18,e.t0=e.catch(12),ct.error("Requested path does not exists, falling back to root"),e.next=23,s("/");case 23:l=e.sent,this.$filePicker.data("path","/"),this._changeButtonsText(i,"");case 26:o.filelist=l,a&&a.length>0&&-1===a.indexOf("*")&&(l=l.filter((function(t){return"dir"===t.type||-1!==a.indexOf(t.mimetype)}))),r&&(l=l.filter(r)),null===(u=document.getElementById("showHiddenFiles"))||"1"===u.value||(l=l.filter((function(t){return!t.name.startsWith(".")}))),A=(d={name:function(t,e){return"dir"===t.type&&"dir"!==e.type?-1:"dir"!==t.type&&"dir"===e.type?1:Jt.Util.naturalSortCompare(t.name,e.name)},size:function(t,e){return t.size-e.size},mtime:function(t,e){return t.mtime-e.mtime}})[o.filepicker.sortField]||d.name,l=l.sort((function(t,e){var n=function(t){return t.tags&&t.tags.indexOf(Jt.TAG_FAVORITE)>=0};return n(t)&&!n(e)?-1:!n(t)&&n(e)?1:"asc"===o.filepicker.sortOrder?A(t,e):-A(t,e)})),o._fillSlug(),0===l.length?(o.$filePicker.find(".emptycontent").show(),o.$fileListHeader.hide()):(o.$filePicker.find(".emptycontent").hide(),o.$fileListHeader.show()),o.$filelist.empty(),c().each(l,(function(e,i){var a,r;if(i.isEncrypted&&"httpd/unix-directory"===i.mimetype?i.icon=Jt.MimeType.getIconUrl("dir-encrypted"):i.icon=Jt.MimeType.getIconUrl(i.mimetype),void 0!==i.size&&i.size>=0?(a=Jt.Util.humanFileSize(parseInt(i.size,10),!0),r=Math.round(160-Math.pow(i.size/1048576,2))):(a=t("files","Pending"),r=80),i.name.length>=10)var s=Math.min(Math.floor(i.name.length/2),10),l=i.name.substr(0,i.name.length-s),u=i.name.substr(i.name.length-s);else l=i.name,u="";var d=o.$listTmpl.octemplate({type:i.type,dir:n,filename:i.name,filename1:l,filename2:u,date:Jt.Util.relativeModifiedDate(i.mtime),size:a,sizeColor:r,icon:i.icon});if("file"===i.type){var A={file:n+"/"+i.name,x:100,y:100},p=new Image,f=Jt.generateUrl("/core/preview.png?")+c().param(A);p.onload=function(){p.width>5&&d.find("td.filename").attr("style","background-image:url("+f+")")},p.src=f}o.$filelist.append(d)})),o.$filelistContainer.removeClass("icon-loading");case 40:case"end":return e.stop()}}),e,this,[[12,18]])}))),function(t,e){return pt.apply(this,arguments)}),_fillSlug:function(){var e=this.$dirTree.find(".actions.creatable").detach();this.$dirTree.empty();var n=this;n.$dirTree.append(e);var i=this.$filePicker.data("path"),o=c()('<div data-dir="{dir}" tabindex="0"><a>{name}</a></div>').addClass("crumb");if(i){var a=i.split("/");c().each(a,(function(t,e){if(""===(e=a.pop()))return!1;n.$dirTree.prepend(o.octemplate({dir:a.join("/")+"/"+e,name:e}))}))}o.octemplate({dir:"",name:t("core","Home")},{escapeFunction:null}).prependTo(this.$dirTree)},_handleTreeListSelect:function(t,e){var n=t.data,i=c()(t.target).closest(".crumb").data("dir");n._fillFilePicker(i,e);var o=t.target.closest(".oc-dialog"),a=c()(".primary",o);this._changeButtonsText(e,i.split(/[/]+/).pop()),-1!==this.$filePicker.data("mimetype").indexOf("httpd/unix-directory")||this.$filePicker.data("allowDirectoryChooser")?a.prop("disabled",!1):a.prop("disabled",!0)},_handlePickerClick:function(t,e,n){var i=this.$filePicker.closest(".oc-dialog").find(".primary");"file"===e.data("type")?(!0===this.$filePicker.data("multiselect")&&t.ctrlKey||this.$filelist.find(".filepicker_element_selected").removeClass("filepicker_element_selected"),e.toggleClass("filepicker_element_selected"),i.prop("disabled",!1)):"dir"===e.data("type")&&(this._fillFilePicker(this.$filePicker.data("path")+"/"+e.data("entryname"),n),this._changeButtonsText(n,e.data("entryname")),-1!==this.$filePicker.data("mimetype").indexOf("httpd/unix-directory")||this.$filePicker.data("allowDirectoryChooser")?i.prop("disabled",!1):i.prop("disabled",!0))},_changeButtonsText:function(e,n){var i=""===n?t("core","Copy"):t("core","Copy to {folder}",{folder:n}),o=""===n?t("core","Move"):t("core","Move to {folder}",{folder:n}),a=c()(".oc-dialog-buttonrow button");switch(e){case this.FILEPICKER_TYPE_CHOOSE:case this.FILEPICKER_TYPE_CUSTOM:break;case this.FILEPICKER_TYPE_COPY:a.text(i);break;case this.FILEPICKER_TYPE_MOVE:a.text(o);break;case this.FILEPICKER_TYPE_COPY_MOVE:a.eq(0).text(i),a.eq(1).text(o)}}},vt=gt,Ct=(ft=document,ht=u.j8,mt=ft.getElementsByTagName("head")[0].getAttribute("data-requesttoken"),{getToken:function(){return mt},setToken:function(t){ht("csrf-token-update",{token:mt=t})}}),bt=Ct.getToken,wt=Ct.setToken,yt=function t(e,n){var i,o,a="";if(this.typelessListeners=[],this.closed=!1,this.listeners={},n)for(i in n)a+=i+"="+encodeURIComponent(n[i])+"&";if(a+="requesttoken="+encodeURIComponent(bt()),this.useFallBack||"undefined"==typeof EventSource){var r="oc_eventsource_iframe_"+t.iframeCount;t.fallBackSources[t.iframeCount]=this,this.iframe=c()("<iframe></iframe>"),this.iframe.attr("id",r),this.iframe.hide(),o="&",-1===e.indexOf("?")&&(o="?"),this.iframe.attr("src",e+o+"fallback=true&fallback_id="+t.iframeCount+"&"+a),c()("body").append(this.iframe),this.useFallBack=!0,t.iframeCount++}else o="&",-1===e.indexOf("?")&&(o="?"),this.source=new EventSource(e+o+a),this.source.onmessage=function(t){for(var e=0;e<this.typelessListeners.length;e++)this.typelessListeners[e](JSON.parse(t.data))}.bind(this);this.listen("__internal__",function(t){"close"===t&&this.close()}.bind(this))};yt.fallBackSources=[],yt.iframeCount=0,yt.fallBackCallBack=function(t,e,n){yt.fallBackSources[t].fallBackCallBack(e,n)},yt.prototype={typelessListeners:[],iframe:null,listeners:{},useFallBack:!1,fallBackCallBack:function(t,e){var n;if(!this.closed)if(t){if(void 0!==this.listeners.done)for(n=0;n<this.listeners[t].length;n++)this.listeners[t][n](e)}else for(n=0;n<this.typelessListeners.length;n++)this.typelessListeners[n](e)},lastLength:0,listen:function(t,e){e&&e.call&&(t?this.useFallBack?(this.listeners[t]||(this.listeners[t]=[]),this.listeners[t].push(e)):this.source.addEventListener(t,(function(t){void 0!==t.data?e(JSON.parse(t.data)):e("")}),!1):this.typelessListeners.push(e))},close:function(){this.closed=!0,void 0!==this.source&&this.source.close()}};var xt=yt,kt=o(42515),Pt=o(25108),Et=null,Bt=null,Ot=function(t){if(Et){var e=Et;Et.trigger(new(c().Event)("beforeHide")),Et.slideUp(50,(function(){e.trigger(new(c().Event)("afterHide")),t&&t.apply(this,arguments)}))}c()(".menutoggle").attr("aria-expanded",!1),Bt&&Bt.attr("aria-expanded",!1),c()(".openedMenu").removeClass("openedMenu"),Et=null,Bt=null},Dt=!!window._oc_isadmin,Tt=o(86834),It=o.n(Tt),jt=o(31352),_t={load:jt.XJ,register:jt.z2,_unregister:jt.ET,translate:jt.Iu,translatePlural:jt.uN};It().registerHelper("t",(function(t,e){return(0,jt.Iu)(t,e)}));var zt={startSaving:function(e){this.startAction(e,t("core","Saving …"))},startAction:function(t,e){c()(t).text(e).removeClass("success").removeClass("error").stop(!0,!0).show()},finishedSaving:function(t,e){this.finishedAction(t,e)},finishedAction:function(t,e){"success"===e.status?this.finishedSuccess(t,e.data.message):this.finishedError(t,e.data.message)},finishedSuccess:function(t,e){c()(t).text(e).addClass("success").removeClass("error").stop(!0,!0).delay(3e3).fadeOut(900).show()},finishedError:function(t,e){c()(t).text(e).addClass("error").removeClass("success").show()}},St=o(30381),Nt=o.n(St),Ut={callback:null,pageLoadTime:null,init:function(){c()(".password-confirm-required").on("click",h.ZP.bind(this.requirePasswordConfirmation,this)),this.pageLoadTime=Nt().now()},requiresPasswordConfirmation:function(){var t=this.pageLoadTime-1e3*window.nc_pageLoad,e=Nt().now()-(t+1e3*window.nc_lastLogin);return window.backendAllowsPasswordConfirmation&&e>18e5},requirePasswordConfirmation:function(e,n,i){n=void 0!==n?n:{};var o={title:t("core","Authentication required"),text:t("core","This action requires you to confirm your password"),confirm:t("core","Confirm"),label:t("core","Password"),error:""},a=h.ZP.extend(o,n),r=this;this.requiresPasswordConfirmation()&&Jt.dialogs.prompt(a.text,a.title,(function(t,e){t&&""!==e?r._confirmPassword(e,a):h.ZP.isFunction(i)&&i()}),!0,a.label,!0).then((function(){var t=c()(".oc-dialog:visible");if(t.find(".ui-icon").remove(),t.addClass("password-confirmation"),""!==a.error){var e=c()("<p></p>").addClass("msg warning").text(a.error);t.find(".oc-dialog-content").append(e)}t.find(".oc-dialog-buttonrow").addClass("aside");var n=t.find("button");n.eq(0).hide(),n.eq(1).text(a.confirm)})),this.callback=e},_confirmPassword:function(e,n){var i=this;c().ajax({url:(0,d.generateUrl)("/login/confirm"),data:{password:e},type:"POST",success:function(t){window.nc_lastLogin=t.lastLogin,h.ZP.isFunction(i.callback)&&i.callback()},error:function(){n.error=t("core","Failed to authenticate, try again"),Jt.PasswordConfirmation.requirePasswordConfirmation(i.callback,n)}})}},Mt=window._theme||{},Lt={_handlers:[],_pushState:function(t,e,n){var i;if(i="string"==typeof t?t:Jt.buildQueryString(t),window.history.pushState){if(e=e||location.pathname+"?"+i,navigator.userAgent.toLowerCase().indexOf("firefox")>-1&&parseInt(navigator.userAgent.split("/").pop())<51)for(var o,a=document.querySelectorAll('[fill^="url(#"], [stroke^="url(#"], [filter^="url(#invert"]'),r=0,s=a.length;r<s;r++)(o=a[r]).style.fill=o.style.fill,o.style.stroke=o.style.stroke,o.removeAttribute("filter"),o.setAttribute("filter","url(#invert)");n?window.history.replaceState(t,"",e):window.history.pushState(t,"",e)}else window.location.hash="?"+i,this._cancelPop=!0},pushState:function(t,e){this._pushState(t,e,!1)},replaceState:function(t,e){this._pushState(t,e,!0)},addOnPopStateHandler:function(t){this._handlers.push(t)},_parseHashQuery:function(){var t=window.location.hash,e=t.indexOf("?");return e>=0?t.substr(e+1):t.length?t.substr(1):""},_decodeQuery:function(t){return t.replace(/\+/g," ")},parseUrlQuery:function(){var t,e=this._parseHashQuery();return e&&(t=Jt.parseQueryString(this._decodeQuery(e))),(t=h.ZP.extend(t||{},Jt.parseQueryString(this._decodeQuery(location.search))))||{}},_onPopState:function(t){var e;if(this._cancelPop)this._cancelPop=!1;else if(this._handlers.length){e=t&&t.state,h.ZP.isString(e)?e=Jt.parseQueryString(e):e||(e=this.parseUrlQuery()||{});for(var n=0;n<this._handlers.length;n++)this._handlers[n](e)}}},Ft=o(91770),Rt=o(25108);function Qt(t){for(var e,n=[],i=0,o=-1,a=0;i<t.length;){e=t.charAt(i);var r=!a&&"."===e||e>="0"&&e<="9";r!==a&&(n[++o]="",a=r),n[o]+=e,i++}return n}var Gt={History:Lt,humanFileSize:Ft.sS,computerFileSize:function(t){if("string"!=typeof t)return null;var e=t.toLowerCase().trim(),n=null,i=e.match(/^[\s+]?([0-9]*)(\.([0-9]+))?( +)?([kmgtp]?b?)$/i);return null===i?null:(n=parseFloat(e),isFinite(n)?(i[5]&&(n*={b:1,k:1024,kb:1024,mb:1048576,m:1048576,gb:1073741824,g:1073741824,tb:1099511627776,t:1099511627776,pb:0x4000000000000,p:0x4000000000000}[i[5]]),n=Math.round(n)):null)},formatDate:function(t,e){return void 0===window.TESTING&&Rt.warn("OC.Util.formatDate is deprecated and will be removed in Nextcloud 21. See @nextcloud/moment"),e=e||"LLL",Nt()(t).format(e)},relativeModifiedDate:function(e){void 0===window.TESTING&&Rt.warn("OC.Util.relativeModifiedDate is deprecated and will be removed in Nextcloud 21. See @nextcloud/moment");var n=Nt()().diff(Nt()(e));return n>=0&&n<45e3?t("core","seconds ago"):Nt()(e).fromNow()},getScrollBarWidth:function(){if(this._scrollBarWidth)return this._scrollBarWidth;var t=document.createElement("p");t.style.width="100%",t.style.height="200px";var e=document.createElement("div");e.style.position="absolute",e.style.top="0px",e.style.left="0px",e.style.visibility="hidden",e.style.width="200px",e.style.height="150px",e.style.overflow="hidden",e.appendChild(t),document.body.appendChild(e);var n=t.offsetWidth;e.style.overflow="scroll";var i=t.offsetWidth;return n===i&&(i=e.clientWidth),document.body.removeChild(e),this._scrollBarWidth=n-i,this._scrollBarWidth},stripTime:function(t){return new Date(t.getFullYear(),t.getMonth(),t.getDate())},naturalSortCompare:function(t,e){var n,i=Qt(t),o=Qt(e);for(n=0;i[n]&&o[n];n++)if(i[n]!==o[n]){var a=Number(i[n]),r=Number(o[n]);return a==i[n]&&r==o[n]?a-r:i[n].localeCompare(o[n],Jt.getLanguage())}return i.length-o.length},waitFor:function(t,e){!function n(){!0!==t()&&setTimeout(n,e)}()},isCookieSetToValue:function(t,e){for(var n=document.cookie.split(";"),i=0;i<n.length;i++){var o=n[i].split("=");if(o[0].trim()===t&&o[1].trim()===e)return!0}return!1}},Ht=window._oc_debug,Kt=window._oc_webroot;if(void 0===Kt){var Zt=(Kt=location.pathname).indexOf("/index.php/");Kt=-1!==Zt?Kt.substr(0,Zt):Kt.substr(0,Kt.lastIndexOf("/"))}var Yt,qt=Kt,Wt=o(25108),Jt={coreApps:["","admin","log","core/search","core","3rdparty"],menuSpeed:50,PERMISSION_ALL:31,PERMISSION_CREATE:4,PERMISSION_DELETE:8,PERMISSION_NONE:0,PERMISSION_READ:1,PERMISSION_SHARE:16,PERMISSION_UPDATE:2,TAG_FAVORITE:"_$!<Favorite>!$_",fileIsBlacklisted:function(t){return!!t.match(K.blacklist_files_regex)},addScript:function(t,e,n){var i;A.warn("OC.addScript is deprecated, use OCP.Loader.loadScript instead");var o=(0,d.generateFilePath)(t,"js",e+".js");return p[o]?n&&n():(i=c().Deferred(),c().getScript(o,(function(){return i.resolve()})),p[o]=i),p[o]},addStyle:function(t,e){A.warn("OC.addStyle is deprecated, use OCP.Loader.loadStylesheet instead");var n=(0,d.generateFilePath)(t,"css",e+".css");-1===f.indexOf(n)&&(f.push(n),document.createStyleSheet?document.createStyleSheet(n):(e=c()('<link rel="stylesheet" type="text/css" href="'+n+'"/>'),c()("head").append(e)))},Apps:w,AppConfig:D,appConfig:O,appSettings:function(e){if(T.warn("OC.appSettings is deprecated and will be removed with Nextcloud 18"),void 0===e||void 0===e.appid)throw{name:"MissingParameter",message:"The parameter appid is missing"};var n={scriptName:"settings.php",cache:!0};c().extend(n,e);var i=c()("#appsettings");if(0===i.length)throw{name:"MissingDOMElement",message:'There has be be an element with id "appsettings" for the popup to show.'};var o=c()("#appsettings_popup");if(0===o.length&&(c()("body").prepend('<div class="popup hidden" id="appsettings_popup"></div>'),(o=c()("#appsettings_popup")).addClass(i.hasClass("topright")?"topright":"bottomleft")),o.is(":visible"))o.hide().remove();else{var a=i.hasClass("topright")?"up":"left";c().get((0,d.generateFilePath)(n.appid,"",n.scriptName),(function(e){o.html(e).ready((function(){if(o.prepend('<span class="arrow '+a+'"></span><h2>'+t("core","Settings")+'</h2><a class="close"></a>').show(),o.find(".close").bind("click",(function(){o.remove()})),void 0!==n.loadJS){var e;if(!0===n.loadJS)e="settings.js";else{if("string"!=typeof n.loadJS)throw{name:"InvalidParameter",message:'The "loadJS" parameter must be either boolean or a string.'};e=n.loadJS}n.cache&&c().ajaxSetup({cache:!0}),c().getScript((0,d.generateFilePath)(n.appid,"js",e)).fail((function(t,e,n){throw n}))}})).show()}),"html")}},appswebroots:I,Backbone:G,ContactsMenu:$,config:K,currentUser:nt,dialogs:vt,EventSource:xt,getCurrentUser:function(){return{uid:nt,displayName:et}},isUserAdmin:function(){return Dt},L10N:_t,_ajaxConnectionLostHandler:C,_processAjaxError:function(t){(0!==t.status||"abort"!==t.statusText&&"timeout"!==t.statusText&&!Jt._reloadCalled)&&(h.ZP.contains([302,303,307,401],t.status)&&Jt.currentUser?setTimeout((function(){if(!Jt._userIsNavigatingAway&&!Jt._reloadCalled){var t=0,e=setInterval((function(){v.showUpdate(n("core","Problem loading page, reloading in %n second","Problem loading page, reloading in %n seconds",5-t)),t>=5&&(clearInterval(e),Jt.reload()),t++}),1e3);Jt._reloadCalled=!0}}),100):0===t.status&&setTimeout((function(){Jt._userIsNavigatingAway||Jt._reloadCalled||Jt._ajaxConnectionLostHandler()}),100))},registerXHRForErrorProcessing:function(t){t.addEventListener&&(t.addEventListener("load",(function(){4===t.readyState&&(t.status>=200&&t.status<300||304===t.status||c()(document).trigger(new(c().Event)("ajaxError"),t))})),t.addEventListener("error",(function(){c()(document).trigger(new(c().Event)("ajaxError"),t)})))},getCapabilities:function(){return Pt.warn("OC.getCapabilities is deprecated and will be removed in Nextcloud 21. See @nextcloud/capabilities"),(0,kt.getCapabilities)()},hideMenus:Ot,registerMenu:function(t,e,n,i){e.addClass("menu");var o="A"===t.prop("tagName")||"BUTTON"===t.prop("tagName");t.on(o?"click.menu":"click.menu keyup.menu",(function(o){o.preventDefault(),o.key&&"Enter"!==o.key||(e.is(Et)?Ot():(Et&&Ot(),!0===i&&e.parent().addClass("openedMenu"),t.attr("aria-expanded",!0),e.slideToggle(50,n),Et=e,Bt=t))}))},showMenu:function(t,e,n){e.is(Et)||(Ot(),Et=e,Bt=t,e.trigger(new(c().Event)("beforeShow")),e.show(),e.trigger(new(c().Event)("afterShow")),h.ZP.isFunction(n)&&n())},unregisterMenu:function(t,e){e.is(Et)&&Ot(),t.off("click.menu").removeClass("menutoggle"),e.removeClass("menu")},basename:H.EZ,encodePath:H.Ec,dirname:H.XX,isSamePath:H.Mg,joinPaths:H.RQ,getHost:function(){return window.location.host},getHostName:function(){return window.location.hostname},getPort:function(){return window.location.port},getProtocol:function(){return window.location.protocol.split(":")[0]},getCanonicalLocale:jt.aj,getLocale:jt.Kd,getLanguage:jt.G3,buildQueryString:function(t){return t?c().map(t,(function(t,e){var n=encodeURIComponent(e);return null!=t&&(n+="="+encodeURIComponent(t)),n})).join("&"):""},parseQueryString:function(t){var e,n,i,o={};if(!t)return null;(e=t.indexOf("?"))>=0&&(t=t.substr(e+1));for(var a=t.replace(/\+/g,"%20").split("&"),r=0;r<a.length;r++){var s=a[r];(n=(e=s.indexOf("="))>=0?[s.substr(0,e),s.substr(e+1)]:[s]).length&&(i=decodeURIComponent(n[0]))&&(o[i]=n.length>1?decodeURIComponent(n[1]):null)}return o},msg:zt,Notification:v,PasswordConfirmation:Ut,Plugins:{_plugins:{},register:function(t,e){var n=this._plugins[t];n||(n=this._plugins[t]=[]),n.push(e)},getPlugins:function(t){return this._plugins[t]||[]},attach:function(t,e,n){for(var i=this.getPlugins(t),o=0;o<i.length;o++)i[o].attach&&i[o].attach(e,n)},detach:function(t,e,n){for(var i=this.getPlugins(t),o=0;o<i.length;o++)i[o].detach&&i[o].detach(e,n)}},theme:Mt,Util:Gt,debug:Ht,filePath:d.generateFilePath,generateUrl:d.generateUrl,get:(Yt=window,function(t){for(var e=t.split("."),n=e.pop(),i=0;i<e.length;i++)if(!(Yt=Yt[e[i]]))return!1;return Yt[n]}),set:function(t){return function(e,n){for(var i=e.split("."),o=i.pop(),a=0;a<i.length;a++)t[i[a]]||(t[i[a]]={}),t=t[i[a]];return t[o]=n,n}}(window),getRootPath:d.getRootUrl,imagePath:d.imagePath,redirect:function(t){window.location=t},reload:function(){window.location.reload()},requestToken:bt(),linkTo:d.linkTo,linkToOCS:function(t,e){return(0,d.generateOcsUrl)(t,{},{ocsVersion:e||1})+"/"},linkToRemote:d.generateRemoteUrl,linkToRemoteBase:function(t){return(0,d.getRootUrl)()+"/remote.php/"+t},webroot:qt};(0,u.Ld)("csrf-token-update",(function(t){OC.requestToken=t.token,Wt.info("OC.requestToken changed",t.token)}));var Vt=o(79954),Xt=o(45994),$t=o(25108);function te(t,e,n,i,o,a,r){try{var s=t[a](r),l=s.value}catch(t){return void n(t)}s.done?e(l):Promise.resolve(l).then(i,o)}function ee(t){return function(){var e=this,n=arguments;return new Promise((function(i,o){var a=t.apply(e,n);function r(t){te(a,i,o,r,s,"next",t)}function s(t){te(a,i,o,r,s,"throw",t)}r(void 0)}))}}var ne=null,ie=function(){var t=ee(regeneratorRuntime.mark((function t(){var e,n;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return e=(0,d.generateUrl)("/csrftoken"),t.next=3,c().get(e);case 3:return n=t.sent,t.abrupt("return",n.token);case 5:case"end":return t.stop()}}),t)})));return function(){return t.apply(this,arguments)}}(),oe=function(){var t=ee(regeneratorRuntime.mark((function t(){var e;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.prev=0,t.next=3,ie();case 3:e=t.sent,wt(e),t.next=10;break;case 7:t.prev=7,t.t0=t.catch(0),$t.error("session heartbeat failed",t.t0);case 10:case"end":return t.stop()}}),t,null,[[0,7]])})));return function(){return t.apply(this,arguments)}}(),ae=function(){var t=setInterval(oe,1e3*function(){var t=NaN;return ne.session_lifetime&&(t=Math.floor(ne.session_lifetime/2)),Math.min(86400,Math.max(60,isNaN(t)?900:t))}());return $t.info("session heartbeat polling started"),t},re=o(20144),se=o(85750),le=o.n(se),ce={name:"ContactsMenu",components:{Contacts:o(12050).Z,NcHeaderMenu:le()},data:function(){return{contactsMenu:null}},mounted:function(){this.contactsMenu=new Jt.ContactsMenu({el:"#contactsmenu-menu"})},methods:{handleOpen:function(){var t;null===(t=this.contactsMenu)||void 0===t||t.loadContacts()}}},ue=o(93379),de=o.n(ue),Ae=o(7795),pe=o.n(Ae),fe=o(90569),he=o.n(fe),me=o(3565),ge=o.n(me),ve=o(19216),Ce=o.n(ve),be=o(44589),we=o.n(be),ye=o(50893),xe={};xe.styleTagTransform=we(),xe.setAttributes=ge(),xe.insert=he().bind(null,"head"),xe.domAPI=pe(),xe.insertStyleElement=Ce(),de()(ye.Z,xe),ye.Z&&ye.Z.locals&&ye.Z.locals;var ke=o(51900),Pe=(0,ke.Z)(ce,(function(){var t=this,e=t._self._c;return e("NcHeaderMenu",{attrs:{id:"contactsmenu","aria-label":t.t("core","Search contacts")},on:{open:t.handleOpen},scopedSlots:t._u([{key:"trigger",fn:function(){return[e("Contacts",{attrs:{size:20}})]},proxy:!0}])},[t._v(" "),e("div",{attrs:{id:"contactsmenu-menu"}})])}),[],!1,null,"1563c388",null).exports,Ee=o(12945),Be=o.n(Ee),Oe=o(76212),De=o.n(Oe),Te={name:"AppMenu",components:{NcActions:Be(),NcActionLink:De()},data:function(){return{apps:(0,Vt.j)("core","apps",{}),appLimit:0,observer:null}},computed:{appList:function(){return Object.values(this.apps)},mainAppList:function(){return this.appList.slice(0,this.appLimit)},popoverAppList:function(){return this.appList.slice(this.appLimit)},appLabel:function(){return function(e){return e.name+(e.active?" ("+t("core","Currently open")+")":"")+(e.unread>0?" ("+n("core","{count} notification","{count} notifications",e.unread,{count:e.unread})+")":"")}}},mounted:function(){this.observer=new ResizeObserver(this.resize),this.observer.observe(this.$el),this.resize(),(0,u.Ld)("nextcloud:app-menu.refresh",this.setApps)},beforeDestroy:function(){this.observer.disconnect(),(0,u.r1)("nextcloud:app-menu.refresh",this.setApps)},methods:{setNavigationCounter:function(t,e){this.$set(this.apps[t],"unread",e)},setApps:function(t){var e=t.apps;this.apps=e},resize:function(){var t=this.$el.offsetWidth,e=Math.floor(t/50)-1;1==this.appList.length-e&&e--,e<1&&(e=0),this.appLimit=e}}},Ie=Te,je=o(9572),_e={};_e.styleTagTransform=we(),_e.setAttributes=ge(),_e.insert=he().bind(null,"head"),_e.domAPI=pe(),_e.insertStyleElement=Ce(),de()(je.Z,_e),je.Z&&je.Z.locals&&je.Z.locals;var ze=(0,ke.Z)(Ie,(function(){var t=this,e=t._self._c;return e("nav",{staticClass:"app-menu"},[e("ul",{staticClass:"app-menu-main"},t._l(t.mainAppList,(function(n){return e("li",{key:n.id,staticClass:"app-menu-entry",class:{"app-menu-entry__active":n.active},attrs:{"data-app-id":n.id}},[e("a",{class:{"has-unread":n.unread>0},attrs:{href:n.href,"aria-label":t.appLabel(n),title:n.name,"aria-current":!!n.active&&"page",target:n.target?"_blank":void 0,rel:n.target?"noopener noreferrer":void 0}},[e("img",{attrs:{src:n.icon,alt:""}}),t._v(" "),e("div",{staticClass:"app-menu-entry--label"},[t._v("\n\t\t\t\t\t"+t._s(n.name)+"\n\t\t\t\t\t"),n.unread>0?e("span",{staticClass:"hidden-visually unread-counter"},[t._v(t._s(n.unread))]):t._e()])])])})),0),t._v(" "),e("NcActions",{staticClass:"app-menu-more",attrs:{"aria-label":t.t("core","More apps")}},t._l(t.popoverAppList,(function(n){return e("NcActionLink",{key:n.id,staticClass:"app-menu-popover-entry",attrs:{"aria-label":t.appLabel(n),"aria-current":!!n.active&&"page",href:n.href},scopedSlots:t._u([{key:"icon",fn:function(){return[e("div",{staticClass:"app-icon",class:{"has-unread":n.unread>0}},[e("img",{attrs:{src:n.icon,alt:""}})])]},proxy:!0}],null,!0)},[t._v("\n\t\t\t"+t._s(n.name)+"\n\t\t\t"),n.unread>0?e("span",{staticClass:"hidden-visually unread-counter"},[t._v(t._s(n.unread))]):t._e()])})),1)],1)}),[],!1,null,"44a795f6",null).exports,Se=o(75925),Ne=o.n(Se),Ue=o(64192),Me=o.n(Ue),Le=(0,Vt.j)("core","versionHash",""),Fe={name:"UserMenuEntry",components:{NcLoadingIcon:Me()},props:{id:{type:String,required:!0},name:{type:String,required:!0},href:{type:String,required:!0},active:{type:Boolean,required:!0},icon:{type:String,required:!0}},data:function(){return{loading:!1}},computed:{cachedIcon:function(){return"".concat(this.icon,"?v=").concat(Le)}},methods:{handleClick:function(){this.loading=!0}}},Re=o(88951),Qe={};Qe.styleTagTransform=we(),Qe.setAttributes=ge(),Qe.insert=he().bind(null,"head"),Qe.domAPI=pe(),Qe.insertStyleElement=Ce(),de()(Re.Z,Qe),Re.Z&&Re.Z.locals&&Re.Z.locals;var Ge=(0,ke.Z)(Fe,(function(){var t=this,e=t._self._c;return e("li",{staticClass:"menu-entry",attrs:{id:t.id}},[t.href?e("a",{class:{active:t.active},attrs:{href:t.href},on:{click:function(e){return e.ctrlKey||e.shiftKey||e.altKey||e.metaKey?null:t.handleClick.apply(null,arguments)}}},[t.loading?e("NcLoadingIcon",{staticClass:"menu-entry__loading-icon",attrs:{size:18}}):e("img",{attrs:{src:t.cachedIcon,alt:""}}),t._v("\n\t\t"+t._s(t.name)+"\n\t")],1):e("button",[e("img",{attrs:{src:t.cachedIcon,alt:""}}),t._v("\n\t\t"+t._s(t.name)+"\n\t")])])}),[],!1,null,"6e59d13c",null),He=Ge.exports,Ke=(0,Vt.j)("core","settingsNavEntries",[]),Ze={name:"UserMenu",components:{NcAvatar:Ne(),NcHeaderMenu:le(),UserMenuEntry:He},data:function(){var t;return{settingsNavEntries:Ke,userId:null===(t=(0,Xt.ts)())||void 0===t?void 0:t.uid}},mounted:function(){(0,u.j8)("core:user-menu:mounted")}},Ye=o(71445),qe={};qe.styleTagTransform=we(),qe.setAttributes=ge(),qe.insert=he().bind(null,"head"),qe.domAPI=pe(),qe.insertStyleElement=Ce(),de()(Ye.Z,qe),Ye.Z&&Ye.Z.locals&&Ye.Z.locals;var We=(0,ke.Z)(Ze,(function(){var t=this,e=t._self._c;return e("NcHeaderMenu",{staticClass:"user-menu",attrs:{id:"user-menu","aria-label":t.t("core","Open settings menu")},scopedSlots:t._u([{key:"trigger",fn:function(){return[e("NcAvatar",{staticClass:"user-menu__avatar",attrs:{"disable-menu":!0,"disable-tooltip":!0,user:t.userId}})]},proxy:!0}])},[t._v(" "),e("nav",{staticClass:"user-menu__nav",attrs:{"aria-label":t.t("core","Settings menu")}},[e("ul",t._l(t.settingsNavEntries,(function(n){return e("UserMenuEntry",t._b({key:n.id},"UserMenuEntry",n,!1))})),1)])])}),[],!1,null,"6a818bbc",null).exports,Je={zh:"zh-cn",zh_Hans:"zh-cn",zh_Hans_CN:"zh-cn",zh_Hans_HK:"zh-cn",zh_Hans_MO:"zh-cn",zh_Hans_SG:"zh-cn",zh_Hant:"zh-hk",zh_Hant_HK:"zh-hk",zh_Hant_MO:"zh-mo",zh_Hant_TW:"zh-tw"},Ve=Jt.getLocale();Object.prototype.hasOwnProperty.call(Je,Ve)&&(Ve=Je[Ve]),Nt().locale(Ve);var Xe,$e=function(){var t;if(c()(window).on("unload.main",(function(){Jt._unloadCalled=!0})),c()(window).on("beforeunload.main",(function(){setTimeout((function(){Jt._userIsNavigatingAway=!0,setTimeout((function(){Jt._unloadCalled||(Jt._userIsNavigatingAway=!1)}),1e4)}),1)})),c()(document).on("ajaxError.main",(function(t,e,n){n&&n.allowAuthErrors||Jt._processAjaxError(e)})),function(){if(function(){try{ne=(0,Vt.j)("core","config")}catch(t){ne=Jt.config}}(),function(){if(ne.auto_logout&&(0,Xt.ts)()){var t=Date.now();window.addEventListener("mousemove",(function(e){t=Date.now(),localStorage.setItem("lastActive",t)})),window.addEventListener("touchstart",(function(e){t=Date.now(),localStorage.setItem("lastActive",t)})),window.addEventListener("storage",(function(e){"lastActive"===e.key&&(t=e.newValue)})),setInterval((function(){var e=Date.now()-1e3*ne.session_lifetime;if(t<e){$t.info("Inactivity timout reached, logging out");var n=(0,d.generateUrl)("/logout")+"?requesttoken="+encodeURIComponent(bt());window.location=n}}),1e3)}}(),void 0===ne.session_keepalive||ne.session_keepalive){var t=ae();window.addEventListener("online",ee(regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return $t.info("browser is online again, resuming heartbeat"),t=ae(),e.prev=2,e.next=5,oe();case 5:$t.info("session token successfully updated after resuming network"),(0,u.j8)("networkOnline",{success:!0}),e.next=13;break;case 9:e.prev=9,e.t0=e.catch(2),$t.error("could not update session token after resuming network",e.t0),(0,u.j8)("networkOnline",{success:!1});case 13:case"end":return e.stop()}}),e,null,[[2,9]])})))),window.addEventListener("offline",(function(){$t.info("browser is offline, stopping heartbeat"),(0,u.j8)("networkOffline",{}),clearInterval(t),$t.info("session heartbeat polling stopped")}))}else $t.info("session heartbeat disabled")}(),Jt.registerMenu(c()("#expand"),c()("#expanddiv"),!1,!0),c()(document).on("mouseup.closemenus",(function(t){var e=c()(t.target);if(e.closest(".menu").length||e.closest(".menutoggle").length)return!1;Jt.hideMenus()})),function(){re.ZP.mixin({methods:{t:jt.Iu,n:jt.uN}});var t=document.getElementById("header-left__appmenu");if(t){var e=new(re.ZP.extend(ze))({}).$mount(t);Object.assign(OC,{setNavigationCounter:function(t,n){e.setNavigationCounter(t,n)}})}}(),(t=document.getElementById("user-menu"))&&new re.ZP({el:t,render:function(t){return t(We)}}),function(){var t=document.getElementById("contactsmenu");t&&new re.ZP({el:t,render:function(t){return t(Pe)}})}(),c()("#app-navigation").length&&!c()("html").hasClass("lte9")&&!c()("#app-content").hasClass("no-snapper")){var e=new Snap({element:document.getElementById("app-content"),disable:"right",maxPosition:300,minDragDistance:100});c()("#app-content").prepend('<div id="app-navigation-toggle" class="icon-menu" style="display:none" tabindex="0"></div>');var n=!1;e.on("animating",(function(){n=!0})),e.on("animated",(function(){n=!1})),e.on("start",(function(){n=!0})),e.on("end",(function(){n=!1}));var i=e.open,o=e.close,a=function(){n||"closed"!==e.state().state||i("left")},r=function(){n||"closed"===e.state().state||o()};window.TESTING||(e.open=function(){h.ZP.defer(a)},e.close=function(){h.ZP.defer(r)}),c()("#app-navigation-toggle").click((function(t){"left"!==e.state().state&&e.open()})),c()("#app-navigation-toggle").keypress((function(t){"left"===e.state().state?e.close():e.open()})),c()("#app-navigation").delegate("a, :button","click",(function(t){var n=c()(t.target);n.is(".app-navigation-noclose")||n.closest(".app-navigation-noclose").length||n.is(".app-navigation-entry-utils-menu-button")||n.closest(".app-navigation-entry-utils-menu-button").length||n.is(".add-new")||n.closest(".add-new").length||n.is("#app-settings")||n.closest("#app-settings").length||e.close()}));var s=!1,l=!0,A=!1;Jt.allowNavigationBarSlideGesture=function(){l=!0,A&&(e.enable(),s=!0,A=!1)},Jt.disallowNavigationBarSlideGesture=function(){l=!1,s&&(e.disable(!0),s=!1,A=!0)};var p=function(){c()(window).width()>1024?(e.close(),e.disable(),s=!1,A=!1):l?(e.enable(),s=!0,A=!1):A=!0};c()(window).resize(h.ZP.debounce(p,250)),p()}setInterval((function(){c()(".live-relative-timestamp").each((function(){var t=parseInt(c()(this).attr("data-timestamp"),10);c()(this).text(Nt()(t).fromNow())}))}),3e4),Ut.init()},tn=(o(49226),o(41704),o(78312),o(22634),o(3682)),en=o(25108);c().prototype.tooltip=(Xe=c().prototype.tooltip,function(t){try{return Xe.call(this,t)}catch(e){if(e instanceof TypeError&&"destroy"===t)return void 0===window.TESTING&&en.error("Deprecated call $.tooltip('destroy') has been deprecated and should be removed"),Xe.call(this,"dispose");if(e instanceof TypeError&&"fixTitle"===t)return void 0===window.TESTING&&en.error("Deprecated call $.tooltip('fixTitle') has been deprecated and should be removed"),Xe.call(this,"_fixTitle")}});var nn=o(42152),on=o.n(nn),an=o(99560),rn=o.n(an),sn=(o(18553),o(34140),o(75693),o(99205),o(38554),/(\s|^)(https?:\/\/)((?:[-A-Z0-9+_]+\.)+[-A-Z]+(?:\/[-A-Z0-9+&@#%?=~_|!:,.;()]*)*)(\s|$)/gi);function ln(t){return this.formatLinksRich(t)}function cn(t){return this.formatLinksPlain(t)}function un(t){return t.replace(sn,(function(t,e,n,i,o){var a=i;return n?"http://"===n&&(a=n+i):n="https://",e+'<a class="external" target="_blank" rel="noopener noreferrer" href="'+n+i+'">'+a+"</a>"+o}))}function dn(t){var e=c()("<div></div>").html(t);return e.find("a").each((function(){var t=c()(this);t.html(t.attr("href"))})),e.html()}var An=o(25108);function pn(e){var n=(e=e||{}).dismiss||{};c().ajax({type:"GET",url:e.url||(0,d.generateOcsUrl)("core/whatsnew?format=json"),success:e.success||function(e,i,o){!function(e,n,i,o){if(An.debug("querying Whats New data was successful: "+n),An.debug(e),200===i.status){var a,r,s,l,c=document.createElement("div");c.classList.add("popovermenu","open","whatsNewPopover","menu-left");var u=document.createElement("ul");for(var d in a=document.createElement("li"),(r=document.createElement("span")).className="menuitem",(s=document.createElement("span")).innerText=t("core","New in")+" "+e.ocs.data.product,s.className="caption",r.appendChild(s),(l=document.createElement("span")).className="icon-close",l.onclick=function(){fn(e.ocs.data.version,o)},r.appendChild(l),a.appendChild(r),u.appendChild(a),e.ocs.data.whatsNew.regular){var A=e.ocs.data.whatsNew.regular[d];a=document.createElement("li"),(r=document.createElement("span")).className="menuitem",(l=document.createElement("span")).className="icon-checkmark",r.appendChild(l),(s=document.createElement("p")).innerHTML=h.ZP.escape(A),r.appendChild(s),a.appendChild(r),u.appendChild(a)}h.ZP.isUndefined(e.ocs.data.changelogURL)||(a=document.createElement("li"),(r=document.createElement("a")).href=e.ocs.data.changelogURL,r.rel="noreferrer noopener",r.target="_blank",(l=document.createElement("span")).className="icon-link",r.appendChild(l),(s=document.createElement("span")).innerText=t("core","View changelog"),r.appendChild(s),a.appendChild(r),u.appendChild(a)),c.appendChild(u),document.body.appendChild(c)}}(e,i,o,n)},error:e.error||hn})}function fn(t,e){e=e||{},c().ajax({type:"POST",url:e.url||(0,d.generateOcsUrl)("core/whatsnew"),data:{version:encodeURIComponent(t)},success:e.success||mn,error:e.error||gn}),c()(".whatsNewPopover").remove()}function hn(t,e,n){An.debug("querying Whats New Data resulted in an error: "+e+n),An.debug(t)}function mn(t){}function gn(t){An.debug("dismissing Whats New data resulted in an error: "+t)}var vn,Cn,bn,wn,yn={disableKeyboardShortcuts:function(){return(0,Vt.j)("theming","shortcutsDisabled",!1)}},xn=o(95573),kn=o.n(xn),Pn={},En={},Bn={},On={loadScript:function(t,e){var n=t+e;return Object.prototype.hasOwnProperty.call(En,n)?Promise.resolve():(En[n]=!0,new Promise((function(n,i){var o=OC.filePath(t,"js",e),a=document.createElement("script");a.src=o,a.setAttribute("nonce",btoa(OC.requestToken)),a.onload=function(){return n()},a.onerror=function(){return i(new Error("Failed to load script from ".concat(o)))},document.head.appendChild(a)})))},loadStylesheet:function(t,e){var n=t+e;return Object.prototype.hasOwnProperty.call(Bn,n)?Promise.resolve():(Bn[n]=!0,new Promise((function(n,i){var o=OC.filePath(t,"css",e),a=document.createElement("link");a.href=o,a.type="text/css",a.rel="stylesheet",a.onload=function(){return n()},a.onerror=function(){return i(new Error("Failed to load stylesheet from ".concat(o)))},document.head.appendChild(a)})))}},Dn={success:function(t,e){return(0,m.s$)(t,e)},warning:function(t,e){return(0,m.K2)(t,e)},error:function(t,e){return(0,m.x2)(t,e)},info:function(t,e){return(0,m.JQ)(t,e)},message:function(t,e){return(0,m.PV)(t,e)}},Tn={Accessibility:yn,AppConfig:a,Collaboration:{registerType:function(t,e){Pn[t]=e},trigger:function(t){return Pn[t].action()},getTypes:function(){return Object.keys(Pn)},getIcon:function(t){return Pn[t].typeIconClass||""},getLabel:function(t){return kn()(Pn[t].typeString||t)},getLink:function(t,e){return void 0!==Pn[t]?Pn[t].link(e):""}},Comments:r,InitialState:{loadState:Vt.j},Loader:On,Toast:Dn,WhatsNew:s},In=o(25108),jn=function(){void 0===window.TESTING&&In.warn.apply(In,arguments)},_n=function(t,e,n){(Array.isArray(t)?t:[t]).forEach((function(t){void 0!==window[t]&&delete window[t],Object.defineProperty(window,t,{get:function(){return jn(n?"".concat(t," is deprecated: ").concat(n):"".concat(t," is deprecated")),e()}})}))};window._=h.ZP,_n(["$","jQuery"],(function(){return c()}),"The global jQuery is deprecated. It will be removed in a later versions without another warning. Please ship your own."),_n("autosize",(function(){return tn.Z}),"please ship your own, this will be removed in Nextcloud 20"),_n("Backbone",(function(){return z()}),"please ship your own, this will be removed in Nextcloud 20"),_n(["Clipboard","ClipboardJS"],(function(){return on()}),"please ship your own, this will be removed in Nextcloud 20"),window.dav=S.dav,_n("Handlebars",(function(){return It()}),"please ship your own, this will be removed in Nextcloud 20"),_n("md5",(function(){return rn()}),"please ship your own, this will be removed in Nextcloud 20"),_n("moment",(function(){return Nt()}),"please ship your own, this will be removed in Nextcloud 20"),window.OC=Jt,_n("initCore",(function(){return $e}),"this is an internal function"),_n("oc_appswebroots",(function(){return Jt.appswebroots}),"use OC.appswebroots instead, this will be removed in Nextcloud 20"),_n("oc_config",(function(){return Jt.config}),"use OC.config instead, this will be removed in Nextcloud 20"),_n("oc_current_user",(function(){return Jt.getCurrentUser().uid}),"use OC.getCurrentUser().uid instead, this will be removed in Nextcloud 20"),_n("oc_debug",(function(){return Jt.debug}),"use OC.debug instead, this will be removed in Nextcloud 20"),_n("oc_defaults",(function(){return Jt.theme}),"use OC.theme instead, this will be removed in Nextcloud 20"),_n("oc_isadmin",Jt.isUserAdmin,"use OC.isUserAdmin() instead, this will be removed in Nextcloud 20"),_n("oc_requesttoken",(function(){return bt()}),"use OC.requestToken instead, this will be removed in Nextcloud 20"),_n("oc_webroot",(function(){return Jt.webroot}),"use OC.getRootPath() instead, this will be removed in Nextcloud 20"),_n("OCDialogs",(function(){return Jt.dialogs}),"use OC.dialogs instead, this will be removed in Nextcloud 20"),window.OCP=Tn,window.OCA=st,c().fn.select2=(vn=c().fn.select2,Cn="select2",19,bn=vn,wn=function(){return jn("The ".concat(Cn," library is deprecated! It will be removed in nextcloud ").concat(19,".")),bn.apply(this,arguments)},Object.assign(wn,bn),wn),window.t=h.ZP.bind(Jt.L10N.translate,Jt.L10N),window.n=h.ZP.bind(Jt.L10N.translatePlural,Jt.L10N),c().fn.avatar=function(t,e,n,i,o,a){var r=function(t){t.imageplaceholder("?"),t.css("background-color","#b9b9b9")};if(void 0!==t&&(t=String(t)),void 0!==a&&(a=String(a)),void 0===e&&(e=this.height()>0?this.height():this.data("size")>0?this.data("size"):64),this.height(e),this.width(e),void 0===t){if(void 0===this.data("user"))return void r(this);t=this.data("user")}t=String(t).replace(/\//g,"");var s,l=this;s=t===Jt.getCurrentUser().uid?Jt.generateUrl("/avatar/{user}/{size}?v={version}",{user:t,size:Math.ceil(e*window.devicePixelRatio),version:oc_userconfig.avatar.version}):Jt.generateUrl("/avatar/{user}/{size}",{user:t,size:Math.ceil(e*window.devicePixelRatio)});var c=new Image;c.onload=function(){l.clearimageplaceholder(),l.append(c),"function"==typeof o&&o()},c.onerror=function(){l.clearimageplaceholder(),void 0!==a?l.imageplaceholder(t,a):r(l),"function"==typeof o&&o()},e<32?l.addClass("icon-loading-small"):l.addClass("icon-loading"),c.width=e,c.height=e,c.src=s,c.alt=""};var zn=o(47078);c().fn.contactsMenu=function(e,n,i){if(-1!==[0,4,6].indexOf(n)){var o=this;i.append('<div class="menu popovermenu menu-left hidden contactsmenu-popover"> <ul> <li> <a> <span class="icon-loading-small"></span> </a> </li> </ul></div>');var a=i.find("div.contactsmenu-popover");o.on("click keydown",(function(i){if(lt(i)){if(!a.hasClass("hidden"))return a.addClass("hidden"),void a.hide();a.removeClass("hidden"),a.show(),a.hasClass("loaded")||(a.addClass("loaded"),c().ajax(Jt.generateUrl("/contactsmenu/findOne"),{method:"POST",data:{shareType:n,shareWith:e}}).then((function(e){a.find("ul").find("li").addClass("hidden"),(e.topAction?[e.topAction].concat(e.actions):[{hyperlink:"#",title:t("core","No action available")}]).forEach((function(t){a.find("ul").append(zn(t))})),o.trigger("load")}),(function(e){var n;a.find("ul").find("li").addClass("hidden"),n=404===e.status?t("core","No action available"):t("core","Error fetching contact actions"),a.find("ul").append(zn({hyperlink:"#",title:n})),o.trigger("loaderror",e)})))}})),c()(document).click((function(t){var e=a.has(t.target).length>0,n=o.has(t.target).length>0;o.each((function(){c()(this).is(t.target)&&(n=!0)})),e||n||(a.addClass("hidden"),a.hide())}))}},c().fn.exists=function(){return this.length>0},c().fn.filterAttr=function(t,e){return this.filter((function(){return c()(this).attr(t)===e}))},c().widget("oc.ocdialog",{options:{width:"auto",height:"auto",closeButton:!0,closeOnEscape:!0,closeCallback:null,modal:!1},_create:function(){var t=this;this.originalCss={display:this.element[0].style.display,width:this.element[0].style.width,height:this.element[0].style.height},this.originalTitle=this.element.attr("title"),this.options.title=this.options.title||this.originalTitle,this.$dialog=c()('<div class="oc-dialog"></div>').attr({tabIndex:-1,role:"dialog"}).insertBefore(this.element),this.$dialog.append(this.element.detach()),this.element.removeAttr("title").addClass("oc-dialog-content").appendTo(this.$dialog),1===t.element.find("input").length&&t.element.find("input").on("keydown",(function(e){if(lt(e)&&t.$buttonrow){var n=t.$buttonrow.find("button.primary");n&&!n.prop("disabled")&&n.click()}})),this.$dialog.css({display:"inline-block",position:"fixed"}),this.enterCallback=null,c()(document).on("keydown keyup",(function(e){if(e.target===t.$dialog.get(0)||0!==t.$dialog.find(c()(e.target)).length)return 27===e.keyCode&&"keydown"===e.type&&t.options.closeOnEscape?(e.stopImmediatePropagation(),t.close(),!1):13===e.keyCode?(e.stopImmediatePropagation(),null!==t.enterCallback?(t.enterCallback(),e.preventDefault(),!1):"keyup"===e.type&&(e.preventDefault(),!1)):void 0})),this._setOptions(this.options),this._createOverlay()},_init:function(){this.$dialog.focus(),this._trigger("open")},_setOption:function(t,e){var n=this;switch(t){case"title":if(this.$title)this.$title.text(e);else{var i=c()('<h2 class="oc-dialog-title">'+e+"</h2>");this.$title=i.prependTo(this.$dialog)}this._setSizes();break;case"buttons":if(this.$buttonrow)this.$buttonrow.empty();else{var o=c()('<div class="oc-dialog-buttonrow"></div>');this.$buttonrow=o.appendTo(this.$dialog)}1===e.length?this.$buttonrow.addClass("onebutton"):2===e.length?this.$buttonrow.addClass("twobuttons"):3===e.length&&this.$buttonrow.addClass("threebuttons"),c().each(e,(function(t,e){var i=c()("<button>").text(e.text);e.classes&&i.addClass(e.classes),e.defaultButton&&(i.addClass("primary"),n.$defaultButton=i),n.$buttonrow.append(i),i.on("click keydown",(function(t){lt(t)&&e.click.apply(n.element[0],arguments)}))})),this.$buttonrow.find("button").on("focus",(function(t){n.$buttonrow.find("button").removeClass("primary"),c()(this).addClass("primary")})),this._setSizes();break;case"style":void 0!==e.buttons&&this.$buttonrow.addClass(e.buttons);break;case"closeButton":if(e){var a=c()('<a class="oc-dialog-close" tabindex="0"></a>');this.$dialog.prepend(a),a.on("click keydown",(function(t){lt(t)&&(n.options.closeCallback&&n.options.closeCallback(),n.close())}))}else this.$dialog.find(".oc-dialog-close").remove();break;case"width":this.$dialog.css("width",e);break;case"height":this.$dialog.css("height",e);break;case"close":this.closeCB=e}c().Widget.prototype._setOption.apply(this,arguments)},_setOptions:function(t){c().Widget.prototype._setOptions.apply(this,arguments)},_setSizes:function(){var t=0;this.$title&&(t+=this.$title.outerHeight(!0)),this.$buttonrow&&(t+=this.$buttonrow.outerHeight(!0)),this.element.css({height:"calc(100% - "+t+"px)"})},_createOverlay:function(){if(this.options.modal){var t=this,e=c()("#content");0===e.length&&(e=c()(".content")),this.overlay=c()("<div>").addClass("oc-dialog-dim").appendTo(e),this.overlay.on("click keydown keyup",(function(e){e.target!==t.$dialog.get(0)&&0===t.$dialog.find(c()(e.target)).length&&(e.preventDefault(),e.stopPropagation())}))}},_destroyOverlay:function(){this.options.modal&&this.overlay&&(this.overlay.off("click keydown keyup"),this.overlay.remove(),this.overlay=null)},widget:function(){return this.$dialog},setEnterCallback:function(t){this.enterCallback=t},unsetEnterCallback:function(){this.enterCallback=null},close:function(){this._destroyOverlay();var t=this;setTimeout((function(){t._trigger("close",t)}),200),t.$dialog.remove(),this.destroy()},destroy:function(){this.$title&&this.$title.remove(),this.$buttonrow&&this.$buttonrow.remove(),this.originalTitle&&this.element.attr("title",this.originalTitle),this.element.removeClass("oc-dialog-content").css(this.originalCss).detach().insertBefore(this.$dialog),this.$dialog.remove()}});var Sn=o(25108),Nn={init:function(t,e,n){if(this.vars=t,this.options=c().extend({},this.options,e),this.elem=n,"function"==typeof this.options.escapeFunction)for(var i=Object.keys(this.vars),o=0;o<i.length;o++)"string"==typeof this.vars[i[o]]&&(this.vars[i[o]]=this.options.escapeFunction(this.vars[i[o]]));var a=this._build(this.vars);return c()(a)},_build:function(t){var e="text/template"===this.elem.attr("type")?this.elem.html():this.elem.get(0).outerHTML;try{return e.replace(/{([^{}]*)}/g,(function(e,n){var i=t[n];return"string"==typeof i||"number"==typeof i?i:e}))}catch(t){Sn.error(t,"data:",e)}},options:{escapeFunction:kn()}};c().fn.octemplate=function(t,e){if(t=t||{},this.length)return Object.create(Nn).init(t,e,this)};var Un=o(25108),Mn=function(t){var e=t.toLowerCase();function n(t,e,n){this.r=t,this.g=e,this.b=n}function i(t,e,i){var o=[];o.push(e);for(var a=function(t,e){var n=new Array(3);return n[0]=(e[1].r-e[0].r)/t,n[1]=(e[1].g-e[0].g)/t,n[2]=(e[1].b-e[0].b)/t,n}(t,[e,i]),r=1;r<t;r++){var s=parseInt(e.r+a[0]*r),l=parseInt(e.g+a[1]*r),c=parseInt(e.b+a[2]*r);o.push(new n(s,l,c))}return o}null===e.match(/^([0-9a-f]{4}-?){8}$/)&&(e=rn()(e)),e=e.replace(/[^0-9a-f]/g,"");var o=new n(182,70,157),a=new n(221,203,85),r=new n(0,130,201),s=i(6,o,a),l=i(6,a,r),c=i(6,r,o);return s.concat(l).concat(c)[function(t,e){for(var n=0,i=[],o=0;o<t.length;o++)i.push(parseInt(t.charAt(o),16)%16);for(var a in i)n+=i[a];return parseInt(parseInt(n)%18)}(e)]};String.prototype.toRgb=function(){return Un.warn("String.prototype.toRgb is deprecated! It will be removed in Nextcloud 22."),Mn(this)},c().fn.imageplaceholder=function(t,e,n){e=e||t;var i=Mn(t);this.css("background-color","rgb("+i.r+", "+i.g+", "+i.b+")");var o=this.height()||n||32;if(this.height(o),this.width(o),this.css("color","#fff"),this.css("font-weight","normal"),this.css("text-align","center"),this.css("line-height",o+"px"),this.css("font-size",.55*o+"px"),null!==t&&t.length){var a=e.replace(/\s+/g," ").trim().split(" ",2).map((function(t){return t[0].toUpperCase()})).join("");this.html(a)}},c().fn.clearimageplaceholder=function(){this.css("background-color",""),this.css("color",""),this.css("font-weight",""),this.css("text-align",""),this.css("line-height",""),this.css("font-size",""),this.html(""),this.removeClass("icon-loading"),this.removeClass("icon-loading-small")},c()(document).on("ajaxSend",(function(t,e,n){!1===n.crossDomain&&(e.setRequestHeader("requesttoken",bt()),e.setRequestHeader("OCS-APIREQUEST","true"))})),c().fn.selectRange=function(t,e){return this.each((function(){if(this.setSelectionRange)this.focus(),this.setSelectionRange(t,e);else if(this.createTextRange){var n=this.createTextRange();n.collapse(!0),n.moveEnd("character",e),n.moveStart("character",t),n.select()}}))},c().fn.extend({showPassword:function(t){var e={fn:null,args:{}};e.fn=t;var n=function(t,e){e.val(t.val())},i=function(t,e,i){t.is(":checked")?(n(e,i),i.show(),e.hide()):(n(i,e),i.hide(),e.show())};return this.each((function(){var t=c()(this),o=c()(t.data("typetoggle")),a=function(t){var e=c()(t),n=c()("<input />");return n.attr({type:"text",class:e.attr("class"),style:e.attr("style"),size:e.attr("size"),name:e.attr("name")+"-clone",tabindex:e.attr("tabindex"),autocomplete:"off"}),void 0!==e.attr("placeholder")&&n.attr("placeholder",e.attr("placeholder")),n}(t);a.insertAfter(t),e.fn&&(e.args.input=t,e.args.checkbox=o,e.args.clone=a),o.bind("click",(function(){i(o,t,a)})),t.bind("keyup",(function(){n(t,a)})),a.bind("keyup",(function(){n(a,t),t.trigger("keyup")})),a.bind("blur",(function(){t.trigger("focusout")})),i(o,t,a),a.closest("form").submit((function(t){a.prop("type","password")})),e.fn&&e.fn(e.args)}))}}),c().ui.autocomplete.prototype._resizeMenu=function(){this.menu.element.outerWidth(this.element.outerWidth())};var Ln=o(12448),Fn={};Fn.styleTagTransform=we(),Fn.setAttributes=ge(),Fn.insert=he().bind(null,"head"),Fn.domAPI=pe(),Fn.insertStyleElement=Ce(),de()(Ln.Z,Fn),Ln.Z&&Ln.Z.locals&&Ln.Z.locals;var Rn=o(72417),Qn={};Qn.styleTagTransform=we(),Qn.setAttributes=ge(),Qn.insert=he().bind(null,"head"),Qn.domAPI=pe(),Qn.insertStyleElement=Ce(),de()(Rn.Z,Qn),Rn.Z&&Rn.Z.locals&&Rn.Z.locals,c().ajaxSetup({contents:{script:!1}}),c().globalEval=function(){},window.addEventListener("DOMContentLoaded",(function(){var t;$e(),0===(t=c()("[data-apps-slide-toggle]")).length&&c()("#app-navigation").addClass("without-app-settings"),c()(document).click((function(e){b&&(t=c()("[data-apps-slide-toggle]")),t.each((function(t,n){var i=c()(n).data("apps-slide-toggle"),o=c()(i);function a(){o.slideUp(4*OC.menuSpeed,(function(){o.trigger(new(c().Event)("hide"))})),o.removeClass("opened"),c()(n).removeClass("opened")}if(!o.is(":animated"))if(c()(n).is(c()(e.target).closest("[data-apps-slide-toggle]")))o.is(":visible")?a():function(){o.slideDown(4*OC.menuSpeed,(function(){o.trigger(new(c().Event)("show"))})),o.addClass("opened"),c()(n).addClass("opened");var t=c()(i+" [autofocus]");1===t.length&&t.focus()}();else{var r=c()(e.target).closest(i);o.is(":visible")&&r[0]!==o[0]&&a()}}))})),window.history.pushState?window.onpopstate=_.bind(Jt.Util.History._onPopState,Jt.Util.History):c()(window).on("hashchange",_.bind(Jt.Util.History._onPopState,Jt.Util.History))}))},12448:function(t,e,n){"use strict";var i=n(87537),o=n.n(i),a=n(23645),r=n.n(a),s=n(61667),l=n.n(s),c=new URL(n(58188),n.b),u=new URL(n(40337),n.b),d=new URL(n(33178),n.b),A=new URL(n(12081),n.b),p=new URL(n(47868),n.b),f=r()(o()),h=l()(c),m=l()(u),g=l()(d),v=l()(A),C=l()(p);f.push([t.id,".ui-widget-content{border:1px solid var(--color-border);background:var(--color-main-background) none;color:var(--color-main-text)}.ui-widget-content a{color:var(--color-main-text)}.ui-widget-header{border:none;color:var(--color-main-text);background-image:none}.ui-widget-header a{color:var(--color-main-text)}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default{border:1px solid var(--color-border);background:var(--color-main-background) none;font-weight:bold;color:#555}.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited{color:#555}.ui-state-hover,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-hover,.ui-state-focus,.ui-widget-content .ui-state-focus,.ui-widget-header .ui-state-focus{border:1px solid #ddd;background:var(--color-main-background) none;font-weight:bold;color:var(--color-main-text)}.ui-state-hover a,.ui-state-hover a:hover,.ui-state-hover a:link,.ui-state-hover a:visited{color:var(--color-main-text)}.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active{border:1px solid var(--color-primary);background:var(--color-main-background) none;font-weight:bold;color:var(--color-main-text)}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:var(--color-main-text)}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid var(--color-main-background);background:var(--color-main-background) none;color:var(--color-text-light);font-weight:600}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:var(--color-text-lighter)}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:var(--color-error);background:var(--color-error) none;color:#fff}.ui-state-error a,.ui-widget-content .ui-state-error a,.ui-widget-header .ui-state-error a{color:#fff}.ui-state-error-text,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error-text{color:#fff}.ui-state-default .ui-icon{background-image:url("+h+")}.ui-state-hover .ui-icon,.ui-state-focus .ui-icon{background-image:url("+h+")}.ui-state-active .ui-icon{background-image:url("+h+")}.ui-state-highlight .ui-icon{background-image:url("+m+")}.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background-image:url("+g+")}.ui-icon.ui-icon-none{display:none}.ui-widget-overlay{background:#666 url("+v+") 50% 50% repeat;opacity:.5}.ui-widget-shadow{margin:-5px 0 0 -5px;padding:5px;background:#000 url("+C+") 50% 50% repeat-x;opacity:.2;border-radius:5px}.ui-tabs{border:none}.ui-tabs .ui-tabs-nav.ui-corner-all{border-bottom-left-radius:0;border-bottom-right-radius:0}.ui-tabs .ui-tabs-nav{background:none;margin-bottom:15px}.ui-tabs .ui-tabs-nav .ui-state-default{border:none;border-bottom:1px solid rgba(0,0,0,0);font-weight:normal;margin:0 !important;padding:0 !important}.ui-tabs .ui-tabs-nav .ui-state-hover,.ui-tabs .ui-tabs-nav .ui-state-active{border:none;border-bottom:1px solid var(--color-main-text);color:var(--color-main-text)}.ui-tabs .ui-tabs-nav .ui-state-hover a,.ui-tabs .ui-tabs-nav .ui-state-hover a:link,.ui-tabs .ui-tabs-nav .ui-state-hover a:hover,.ui-tabs .ui-tabs-nav .ui-state-hover a:visited,.ui-tabs .ui-tabs-nav .ui-state-active a,.ui-tabs .ui-tabs-nav .ui-state-active a:link,.ui-tabs .ui-tabs-nav .ui-state-active a:hover,.ui-tabs .ui-tabs-nav .ui-state-active a:visited{color:var(--color-main-text)}.ui-tabs .ui-tabs-nav .ui-state-active{font-weight:bold}.ui-autocomplete.ui-menu{padding:0}.ui-autocomplete.ui-menu.item-count-1,.ui-autocomplete.ui-menu.item-count-2{overflow-y:hidden}.ui-autocomplete.ui-menu .ui-menu-item a{color:var(--color-text-lighter);display:block;padding:4px 4px 4px 14px}.ui-autocomplete.ui-menu .ui-menu-item a.ui-state-focus,.ui-autocomplete.ui-menu .ui-menu-item a.ui-state-active{box-shadow:inset 4px 0 var(--color-primary-element);color:var(--color-main-text)}.ui-autocomplete.ui-widget-content{background:var(--color-main-background);border-top:none}.ui-autocomplete.ui-corner-all{border-radius:0;border-bottom-left-radius:var(--border-radius);border-bottom-right-radius:var(--border-radius)}.ui-autocomplete .ui-state-hover,.ui-autocomplete .ui-widget-content .ui-state-hover,.ui-autocomplete .ui-widget-header .ui-state-hover,.ui-autocomplete .ui-state-focus,.ui-autocomplete .ui-widget-content .ui-state-focus,.ui-autocomplete .ui-widget-header .ui-state-focus{border:1px solid rgba(0,0,0,0);background:inherit;color:var(--color-primary-element)}.ui-autocomplete .ui-menu-item a{border-radius:0 !important}.ui-button.primary{background-color:var(--color-primary);color:var(--color-primary-text);border:1px solid var(--color-primary-text)}.ui-button:hover{font-weight:bold !important}.ui-draggable-handle,.ui-selectable{touch-action:pan-y}","",{version:3,sources:["webpack://./core/src/jquery/css/jquery-ui-fixes.scss"],names:[],mappings:"AAEA,mBACC,oCAAA,CACA,4CAAA,CACA,4BAAA,CAED,qBACC,4BAAA,CAED,kBACC,WAAA,CACA,4BAAA,CACA,qBAAA,CAED,oBACC,4BAAA,CAKD,2FAGC,oCAAA,CACA,4CAAA,CACA,gBAAA,CACA,UAAA,CAED,yEAGC,UAAA,CAED,0KAMC,qBAAA,CACA,4CAAA,CACA,gBAAA,CACA,4BAAA,CAED,2FAIC,4BAAA,CAED,wFAGC,qCAAA,CACA,4CAAA,CACA,gBAAA,CACA,4BAAA,CAED,sEAGC,4BAAA,CAKD,iGAGC,6CAAA,CACA,4CAAA,CACA,6BAAA,CACA,eAAA,CAED,uGAGC,+BAAA,CAED,qFAGC,yBAAA,CACA,kCAAA,CACA,UAAA,CAED,2FAGC,UAAA,CAED,oGAGC,UAAA,CAKD,2BACC,wDAAA,CAED,kDAEC,wDAAA,CAED,0BACC,wDAAA,CAED,6BACC,wDAAA,CAED,uDAEC,wDAAA,CAED,sBACC,YAAA,CAMD,mBACC,sEAAA,CACA,UAAA,CAED,kBACC,oBAAA,CACA,WAAA,CACA,wEAAA,CACA,UAAA,CACA,iBAAA,CAID,SACC,WAAA,CAEA,oCACC,2BAAA,CACA,4BAAA,CAGD,sBACC,eAAA,CACA,kBAAA,CAEA,wCACC,WAAA,CACA,qCAAA,CACA,kBAAA,CACA,mBAAA,CACA,oBAAA,CAGD,6EAEC,WAAA,CACA,8CAAA,CACA,4BAAA,CACA,0WACC,4BAAA,CAGF,uCACC,gBAAA,CAOF,yBACC,SAAA,CAIA,4EAEC,iBAAA,CAGD,yCACC,+BAAA,CACA,aAAA,CACA,wBAAA,CAEA,iHACC,mDAAA,CACA,4BAAA,CAKH,mCACC,uCAAA,CACA,eAAA,CAGD,+BACC,eAAA,CACA,8CAAA,CACA,+CAAA,CAGD,gRAKC,8BAAA,CACA,kBAAA,CACA,kCAAA,CAIA,iCACC,0BAAA,CAKH,mBACC,qCAAA,CACA,+BAAA,CACA,0CAAA,CAID,iBACI,2BAAA,CAKJ,oCAEC,kBAAA",sourcesContent:["/* Component containers\n----------------------------------*/\n.ui-widget-content {\n\tborder: 1px solid var(--color-border);\n\tbackground: var(--color-main-background) none;\n\tcolor: var(--color-main-text);\n}\n.ui-widget-content a {\n\tcolor: var(--color-main-text);\n}\n.ui-widget-header {\n\tborder: none;\n\tcolor: var(--color-main-text);\n\tbackground-image: none;\n}\n.ui-widget-header a {\n\tcolor: var(--color-main-text);\n}\n\n/* Interaction states\n----------------------------------*/\n.ui-state-default,\n.ui-widget-content .ui-state-default,\n.ui-widget-header .ui-state-default {\n\tborder: 1px solid var(--color-border);\n\tbackground: var(--color-main-background) none;\n\tfont-weight: bold;\n\tcolor: #555;\n}\n.ui-state-default a,\n.ui-state-default a:link,\n.ui-state-default a:visited {\n\tcolor: #555;\n}\n.ui-state-hover,\n.ui-widget-content .ui-state-hover,\n.ui-widget-header .ui-state-hover,\n.ui-state-focus,\n.ui-widget-content .ui-state-focus,\n.ui-widget-header .ui-state-focus {\n\tborder: 1px solid #ddd;\n\tbackground: var(--color-main-background) none;\n\tfont-weight: bold;\n\tcolor: var(--color-main-text);\n}\n.ui-state-hover a,\n.ui-state-hover a:hover,\n.ui-state-hover a:link,\n.ui-state-hover a:visited {\n\tcolor: var(--color-main-text);\n}\n.ui-state-active,\n.ui-widget-content .ui-state-active,\n.ui-widget-header .ui-state-active {\n\tborder: 1px solid var(--color-primary);\n\tbackground: var(--color-main-background) none;\n\tfont-weight: bold;\n\tcolor: var(--color-main-text);\n}\n.ui-state-active a,\n.ui-state-active a:link,\n.ui-state-active a:visited {\n\tcolor: var(--color-main-text);\n}\n\n/* Interaction Cues\n----------------------------------*/\n.ui-state-highlight,\n.ui-widget-content .ui-state-highlight,\n.ui-widget-header .ui-state-highlight {\n\tborder: 1px solid var(--color-main-background);\n\tbackground: var(--color-main-background) none;\n\tcolor: var(--color-text-light);\n\tfont-weight: 600;\n}\n.ui-state-highlight a,\n.ui-widget-content .ui-state-highlight a,\n.ui-widget-header .ui-state-highlight a {\n\tcolor: var(--color-text-lighter);\n}\n.ui-state-error,\n.ui-widget-content .ui-state-error,\n.ui-widget-header .ui-state-error {\n\tborder: var(--color-error);\n\tbackground: var(--color-error) none;\n\tcolor: #ffffff;\n}\n.ui-state-error a,\n.ui-widget-content .ui-state-error a,\n.ui-widget-header .ui-state-error a {\n\tcolor: #ffffff;\n}\n.ui-state-error-text,\n.ui-widget-content .ui-state-error-text,\n.ui-widget-header .ui-state-error-text {\n\tcolor: #ffffff;\n}\n\n/* Icons\n----------------------------------*/\n.ui-state-default .ui-icon {\n\tbackground-image: url('images/ui-icons_1d2d44_256x240.png');\n}\n.ui-state-hover .ui-icon,\n.ui-state-focus .ui-icon {\n\tbackground-image: url('images/ui-icons_1d2d44_256x240.png');\n}\n.ui-state-active .ui-icon {\n\tbackground-image: url('images/ui-icons_1d2d44_256x240.png');\n}\n.ui-state-highlight .ui-icon {\n\tbackground-image: url('images/ui-icons_ffffff_256x240.png');\n}\n.ui-state-error .ui-icon,\n.ui-state-error-text .ui-icon {\n\tbackground-image: url('images/ui-icons_ffd27a_256x240.png');\n}\n.ui-icon.ui-icon-none {\n\tdisplay: none;\n}\n\n/* Misc visuals\n----------------------------------*/\n/* Overlays */\n.ui-widget-overlay {\n\tbackground: #666666 url('images/ui-bg_diagonals-thick_20_666666_40x40.png') 50% 50% repeat;\n\topacity: .5;\n}\n.ui-widget-shadow {\n\tmargin: -5px 0 0 -5px;\n\tpadding: 5px;\n\tbackground: #000000 url('images/ui-bg_flat_10_000000_40x100.png') 50% 50% repeat-x;\n\topacity: .2;\n\tborder-radius: 5px;\n}\n\n/* Tabs customizations */\n.ui-tabs {\n\tborder: none;\n\n\t.ui-tabs-nav.ui-corner-all {\n\t\tborder-bottom-left-radius: 0;\n\t\tborder-bottom-right-radius: 0;\n\t}\n\n\t.ui-tabs-nav {\n\t\tbackground: none;\n\t\tmargin-bottom: 15px;\n\n\t\t.ui-state-default {\n\t\t\tborder: none;\n\t\t\tborder-bottom: 1px solid transparent;\n\t\t\tfont-weight: normal;\n\t\t\tmargin: 0 !important;\n\t\t\tpadding: 0 !important;\n\t\t}\n\n\t\t.ui-state-hover,\n\t\t.ui-state-active {\n\t\t\tborder: none;\n\t\t\tborder-bottom: 1px solid var(--color-main-text);\n\t\t\tcolor: var(--color-main-text);\n\t\t\ta, a:link, a:hover, a:visited {\n\t\t\t\tcolor: var(--color-main-text);\n\t\t\t}\n\t\t}\n\t\t.ui-state-active {\n\t\t\tfont-weight: bold;\n\t\t}\n\t}\n}\n\n/* Select menus */\n.ui-autocomplete {\n\t&.ui-menu {\n\t\tpadding: 0;\n\n\t\t/* scrolling starts from three items,\n\t\t * so hide overflow and scrollbars for a clean layout */\n\t\t&.item-count-1,\n\t\t&.item-count-2 {\n\t\t\toverflow-y: hidden;\n\t\t}\n\n\t\t.ui-menu-item a {\n\t\t\tcolor: var(--color-text-lighter);\n\t\t\tdisplay: block;\n\t\t\tpadding: 4px 4px 4px 14px;\n\n\t\t\t&.ui-state-focus, &.ui-state-active {\n\t\t\t\tbox-shadow: inset 4px 0 var(--color-primary-element);\n\t\t\t\tcolor: var(--color-main-text);\n\t\t\t}\n\t\t}\n\t}\n\n\t&.ui-widget-content {\n\t\tbackground: var(--color-main-background);\n\t\tborder-top: none;\n\t}\n\n\t&.ui-corner-all {\n\t\tborder-radius: 0;\n\t\tborder-bottom-left-radius: var(--border-radius);\n\t\tborder-bottom-right-radius: var(--border-radius);\n\t}\n\n\t.ui-state-hover, .ui-widget-content .ui-state-hover,\n\t.ui-widget-header .ui-state-hover,\n\t.ui-state-focus,\n\t.ui-widget-content .ui-state-focus,\n\t.ui-widget-header .ui-state-focus {\n\t\tborder: 1px solid transparent;\n\t\tbackground: inherit;\n\t\tcolor: var(--color-primary-element);\n\t}\n\n\t.ui-menu-item {\n\t\ta {\n\t\t\tborder-radius: 0 !important;\n\t\t}\n\t}\n}\n\n.ui-button.primary {\n\tbackground-color: var(--color-primary);\n\tcolor: var(--color-primary-text);\n\tborder: 1px solid var(--color-primary-text);\n}\n\n// fix ui-buttons on hover\n.ui-button:hover {\n font-weight:bold !important;\n}\n\n\n/* DRAGGABLE */\n.ui-draggable-handle,\n.ui-selectable {\n\ttouch-action: pan-y;\n}\n"],sourceRoot:""}]),e.Z=f},72417:function(t,e,n){"use strict";var i=n(87537),o=n.n(i),a=n(23645),r=n.n(a)()(o());r.push([t.id,".oc-dialog{background:var(--color-main-background);color:var(--color-text-light);border-radius:var(--border-radius-large);box-shadow:0 0 30px var(--color-box-shadow);padding:24px;z-index:10000;font-size:100%;box-sizing:border-box;min-width:200px;top:50%;left:50%;transform:translate(-50%, -50%);max-height:calc(100% - 20px);max-width:calc(100% - 20px);overflow:auto}.oc-dialog-title{background:var(--color-main-background)}.oc-dialog-buttonrow{position:relative;display:flex;background:rgba(0,0,0,0);right:0;bottom:0;padding:0;padding-top:10px;box-sizing:border-box;width:100%;background-image:linear-gradient(rgba(255, 255, 255, 0), var(--color-main-background))}.oc-dialog-buttonrow.twobuttons{justify-content:space-between}.oc-dialog-buttonrow.onebutton,.oc-dialog-buttonrow.twobuttons.aside{justify-content:flex-end}.oc-dialog-buttonrow button{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;height:44px;min-width:44px}.oc-dialog-close{position:absolute;top:0;right:0;padding:25px;background:var(--icon-close-dark) no-repeat center;opacity:.5;border-radius:var(--border-radius-pill)}.oc-dialog-close:hover,.oc-dialog-close:focus,.oc-dialog-close:active{opacity:1}.oc-dialog-dim{background-color:#000;opacity:.2;z-index:9999;position:fixed;top:0;left:0;width:100%;height:100%}body.theme--dark .oc-dialog-dim{opacity:.8}.oc-dialog-content{width:100%;max-width:550px}.oc-dialog.password-confirmation .oc-dialog-content{width:auto}.oc-dialog.password-confirmation .oc-dialog-content input[type=password]{width:100%}.oc-dialog.password-confirmation .oc-dialog-content label{display:none}","",{version:3,sources:["webpack://./core/src/jquery/css/jquery.ocdialog.scss"],names:[],mappings:"AAAA,WACC,uCAAA,CACA,6BAAA,CACA,wCAAA,CACA,2CAAA,CACA,YAAA,CACA,aAAA,CACA,cAAA,CACA,qBAAA,CACA,eAAA,CACA,OAAA,CACA,QAAA,CACA,+BAAA,CACA,4BAAA,CACA,2BAAA,CACA,aAAA,CAED,iBACC,uCAAA,CAED,qBACC,iBAAA,CACA,YAAA,CACA,wBAAA,CACA,OAAA,CACA,QAAA,CACA,SAAA,CACA,gBAAA,CACA,qBAAA,CACA,UAAA,CACA,sFAAA,CAEA,gCACO,6BAAA,CAGP,qEAEC,wBAAA,CAGD,4BACI,kBAAA,CACA,eAAA,CACH,sBAAA,CACA,WAAA,CACA,cAAA,CAIF,iBACC,iBAAA,CACA,KAAA,CACA,OAAA,CACA,YAAA,CACA,kDAAA,CACA,UAAA,CACA,uCAAA,CAEA,sEAGC,SAAA,CAIF,eACC,qBAAA,CACA,UAAA,CACA,YAAA,CACA,cAAA,CACA,KAAA,CACA,MAAA,CACA,UAAA,CACA,WAAA,CAGD,gCACC,UAAA,CAGD,mBACC,UAAA,CACA,eAAA,CAIA,oDACC,UAAA,CAEA,yEACC,UAAA,CAED,0DACC,YAAA",sourcesContent:[".oc-dialog {\n\tbackground: var(--color-main-background);\n\tcolor: var(--color-text-light);\n\tborder-radius: var(--border-radius-large);\n\tbox-shadow: 0 0 30px var(--color-box-shadow);\n\tpadding: 24px;\n\tz-index: 10000;\n\tfont-size: 100%;\n\tbox-sizing: border-box;\n\tmin-width: 200px;\n\ttop: 50%;\n\tleft: 50%;\n\ttransform: translate(-50%, -50%);\n\tmax-height: calc(100% - 20px);\n\tmax-width: calc(100% - 20px);\n\toverflow: auto;\n}\n.oc-dialog-title {\n\tbackground: var(--color-main-background);\n}\n.oc-dialog-buttonrow {\n\tposition: relative;\n\tdisplay: flex;\n\tbackground: transparent;\n\tright: 0;\n\tbottom: 0;\n\tpadding: 0;\n\tpadding-top: 10px;\n\tbox-sizing: border-box;\n\twidth: 100%;\n\tbackground-image: linear-gradient(rgba(255, 255, 255, 0.0), var(--color-main-background));\n\n\t&.twobuttons {\n justify-content: space-between;\n }\n\n\t&.onebutton,\n\t&.twobuttons.aside {\n\t\tjustify-content: flex-end;\n\t}\n\n\tbutton {\n\t white-space: nowrap;\n\t overflow: hidden;\n\t\ttext-overflow: ellipsis;\n\t\theight: 44px;\n\t\tmin-width: 44px;\n\t}\n}\n\n.oc-dialog-close {\n\tposition: absolute;\n\ttop: 0;\n\tright: 0;\n\tpadding: 25px;\n\tbackground: var(--icon-close-dark) no-repeat center;\n\topacity: .5;\n\tborder-radius: var(--border-radius-pill);\n\n\t&:hover,\n\t&:focus,\n\t&:active {\n\t\topacity: 1;\n\t}\n}\n\n.oc-dialog-dim {\n\tbackground-color: #000;\n\topacity: .2;\n\tz-index: 9999;\n\tposition: fixed;\n\ttop: 0;\n\tleft: 0;\n\twidth: 100%;\n\theight: 100%;\n}\n\nbody.theme--dark .oc-dialog-dim {\n\topacity: .8;\n}\n\n.oc-dialog-content {\n\twidth: 100%;\n\tmax-width: 550px;\n}\n\n.oc-dialog.password-confirmation {\n\t.oc-dialog-content {\n\t\twidth: auto;\n\n\t\tinput[type=password] {\n\t\t\twidth: 100%;\n\t\t}\n\t\tlabel {\n\t\t\tdisplay: none;\n\t\t}\n\t}\n}\n"],sourceRoot:""}]),e.Z=r},9572:function(t,e,n){"use strict";var i=n(87537),o=n.n(i),a=n(23645),r=n.n(a)()(o());r.push([t.id,'.app-menu[data-v-44a795f6]{width:100%;display:flex;flex-shrink:1;flex-wrap:wrap}.app-menu-main[data-v-44a795f6]{display:flex;flex-wrap:nowrap}.app-menu-main .app-menu-entry[data-v-44a795f6]{width:50px;height:50px;position:relative;display:flex;opacity:.7;filter:var(--background-image-invert-if-bright)}.app-menu-main .app-menu-entry.app-menu-entry__active[data-v-44a795f6]{opacity:1}.app-menu-main .app-menu-entry.app-menu-entry__active[data-v-44a795f6]::before{content:" ";position:absolute;pointer-events:none;border-bottom-color:var(--color-main-background);transform:translateX(-50%);width:12px;height:5px;border-radius:3px;background-color:var(--color-primary-text);left:50%;bottom:6px;display:block;transition:all .1s ease-in-out;opacity:1}.app-menu-main .app-menu-entry.app-menu-entry__active .app-menu-entry--label[data-v-44a795f6]{font-weight:bold}.app-menu-main .app-menu-entry a[data-v-44a795f6]{width:calc(100% - 4px);height:calc(100% - 4px);margin:2px;color:var(--color-primary-text);position:relative}.app-menu-main .app-menu-entry img[data-v-44a795f6]{transition:margin .1s ease-in-out;width:20px;height:20px;padding:calc((100% - 20px)/2);box-sizing:content-box}.app-menu-main .app-menu-entry .app-menu-entry--label[data-v-44a795f6]{opacity:0;position:absolute;font-size:12px;color:var(--color-primary-text);text-align:center;bottom:-5px;left:50%;top:45%;display:block;min-width:100%;transform:translateX(-50%);transition:all .1s ease-in-out;width:100%;text-overflow:ellipsis;overflow:hidden;letter-spacing:-0.5px}.app-menu-main .app-menu-entry[data-v-44a795f6]:hover,.app-menu-main .app-menu-entry[data-v-44a795f6]:focus-within{opacity:1}.app-menu-main .app-menu-entry:hover .app-menu-entry--label[data-v-44a795f6],.app-menu-main .app-menu-entry:focus-within .app-menu-entry--label[data-v-44a795f6]{opacity:1;font-weight:bolder;bottom:0;width:100%;text-overflow:ellipsis;overflow:hidden}.app-menu-main[data-v-44a795f6]:hover,.app-menu-main[data-v-44a795f6]:focus-within,.app-menu-main .app-menu-entry[data-v-44a795f6]:hover,.app-menu-main .app-menu-entry[data-v-44a795f6]:focus{opacity:1}.app-menu-main:hover img[data-v-44a795f6],.app-menu-main:focus-within img[data-v-44a795f6],.app-menu-main .app-menu-entry:hover img[data-v-44a795f6],.app-menu-main .app-menu-entry:focus img[data-v-44a795f6]{margin-top:-8px}.app-menu-main:hover .app-menu-entry--label[data-v-44a795f6],.app-menu-main:focus-within .app-menu-entry--label[data-v-44a795f6],.app-menu-main .app-menu-entry:hover .app-menu-entry--label[data-v-44a795f6],.app-menu-main .app-menu-entry:focus .app-menu-entry--label[data-v-44a795f6]{opacity:1;bottom:0}.app-menu-main[data-v-44a795f6]:hover::before,.app-menu-main:hover .app-menu-entry[data-v-44a795f6]::before,.app-menu-main[data-v-44a795f6]:focus-within::before,.app-menu-main:focus-within .app-menu-entry[data-v-44a795f6]::before,.app-menu-main .app-menu-entry[data-v-44a795f6]:hover::before,.app-menu-main .app-menu-entry:hover .app-menu-entry[data-v-44a795f6]::before,.app-menu-main .app-menu-entry[data-v-44a795f6]:focus::before,.app-menu-main .app-menu-entry:focus .app-menu-entry[data-v-44a795f6]::before{opacity:0}[data-v-44a795f6] .app-menu-more .button-vue--vue-tertiary{color:var(--color-primary-text);opacity:.7;margin:3px;filter:var(--background-image-invert-if-bright)}[data-v-44a795f6] .app-menu-more .button-vue--vue-tertiary:hover{opacity:1;background-color:rgba(0,0,0,0) !important}[data-v-44a795f6] .app-menu-more .button-vue--vue-tertiary:focus-visible{opacity:1;outline:none !important}.app-menu-popover-entry .app-icon[data-v-44a795f6]{position:relative;height:44px}.app-menu-popover-entry .app-icon.has-unread[data-v-44a795f6]::after{background-color:var(--color-main-text)}.app-menu-popover-entry .app-icon img[data-v-44a795f6]{width:20px;height:20px;padding:15px}.has-unread[data-v-44a795f6]::after{content:"";width:8px;height:8px;background-color:var(--color-primary-text);border-radius:50%;position:absolute;display:block;top:10px;right:10px}.unread-counter[data-v-44a795f6]{display:none}',"",{version:3,sources:["webpack://./core/src/components/AppMenu.vue"],names:[],mappings:"AAGA,2BACC,UAAA,CACA,YAAA,CACA,aAAA,CACA,cAAA,CAED,gCACC,YAAA,CACA,gBAAA,CAEA,gDACC,UAAA,CACA,WAAA,CACA,iBAAA,CACA,YAAA,CACA,UAAA,CACA,+CAAA,CAEA,uEACC,SAAA,CAEA,+EACC,WAAA,CACA,iBAAA,CACA,mBAAA,CACA,gDAAA,CACA,0BAAA,CACA,UAAA,CACA,UAAA,CACA,iBAAA,CACA,0CAAA,CACA,QAAA,CACA,UAAA,CACA,aAAA,CACA,8BAAA,CACA,SAAA,CAGD,8FACC,gBAAA,CAIF,kDACC,sBAAA,CACA,uBAAA,CACA,UAAA,CACA,+BAAA,CACA,iBAAA,CAGD,oDACC,iCAAA,CACA,UAvDgB,CAwDhB,WAxDgB,CAyDhB,6BAAA,CACA,sBAAA,CAGD,uEACC,SAAA,CACA,iBAAA,CACA,cAAA,CACA,+BAAA,CACA,iBAAA,CACA,WAAA,CACA,QAAA,CACA,OAAA,CACA,aAAA,CACA,cAAA,CACA,0BAAA,CACA,8BAAA,CACA,UAAA,CACA,sBAAA,CACA,eAAA,CACA,qBAAA,CAGD,mHAEC,SAAA,CACA,iKACC,SAAA,CACA,kBAAA,CACA,QAAA,CACA,UAAA,CACA,sBAAA,CACA,eAAA,CAOH,+LAIC,SAAA,CAEA,+MACC,eAAA,CAGD,2RACC,SAAA,CACA,QAAA,CAGD,8fACC,SAAA,CAKH,2DACC,+BAAA,CACA,UAAA,CACA,UAAA,CACA,+CAAA,CAEA,iEACC,SAAA,CACA,yCAAA,CAGD,yEACC,SAAA,CACA,uBAAA,CAKD,mDACC,iBAAA,CACA,WAAA,CAEA,qEACC,uCAAA,CAGD,uDACC,UAhJgB,CAiJhB,WAjJgB,CAkJhB,YAAA,CAKH,oCACC,UAAA,CACA,SAAA,CACA,UAAA,CACA,0CAAA,CACA,iBAAA,CACA,iBAAA,CACA,aAAA,CACA,QAAA,CACA,UAAA,CAGD,iCACC,YAAA",sourcesContent:['\n$header-icon-size: 20px;\n\n.app-menu {\n\twidth: 100%;\n\tdisplay: flex;\n\tflex-shrink: 1;\n\tflex-wrap: wrap;\n}\n.app-menu-main {\n\tdisplay: flex;\n\tflex-wrap: nowrap;\n\n\t.app-menu-entry {\n\t\twidth: 50px;\n\t\theight: 50px;\n\t\tposition: relative;\n\t\tdisplay: flex;\n\t\topacity: .7;\n\t\tfilter: var(--background-image-invert-if-bright);\n\n\t\t&.app-menu-entry__active {\n\t\t\topacity: 1;\n\n\t\t\t&::before {\n\t\t\t\tcontent: " ";\n\t\t\t\tposition: absolute;\n\t\t\t\tpointer-events: none;\n\t\t\t\tborder-bottom-color: var(--color-main-background);\n\t\t\t\ttransform: translateX(-50%);\n\t\t\t\twidth: 12px;\n\t\t\t\theight: 5px;\n\t\t\t\tborder-radius: 3px;\n\t\t\t\tbackground-color: var(--color-primary-text);\n\t\t\t\tleft: 50%;\n\t\t\t\tbottom: 6px;\n\t\t\t\tdisplay: block;\n\t\t\t\ttransition: all 0.1s ease-in-out;\n\t\t\t\topacity: 1;\n\t\t\t}\n\n\t\t\t.app-menu-entry--label {\n\t\t\t\tfont-weight: bold;\n\t\t\t}\n\t\t}\n\n\t\ta {\n\t\t\twidth: calc(100% - 4px);\n\t\t\theight: calc(100% - 4px);\n\t\t\tmargin: 2px;\n\t\t\tcolor: var(--color-primary-text);\n\t\t\tposition: relative;\n\t\t}\n\n\t\timg {\n\t\t\ttransition: margin 0.1s ease-in-out;\n\t\t\twidth: $header-icon-size;\n\t\t\theight: $header-icon-size;\n\t\t\tpadding: calc((100% - $header-icon-size) / 2);\n\t\t\tbox-sizing: content-box;\n\t\t}\n\n\t\t.app-menu-entry--label {\n\t\t\topacity: 0;\n\t\t\tposition: absolute;\n\t\t\tfont-size: 12px;\n\t\t\tcolor: var(--color-primary-text);\n\t\t\ttext-align: center;\n\t\t\tbottom: -5px;\n\t\t\tleft: 50%;\n\t\t\ttop: 45%;\n\t\t\tdisplay: block;\n\t\t\tmin-width: 100%;\n\t\t\ttransform: translateX(-50%);\n\t\t\ttransition: all 0.1s ease-in-out;\n\t\t\twidth: 100%;\n\t\t\ttext-overflow: ellipsis;\n\t\t\toverflow: hidden;\n\t\t\tletter-spacing: -0.5px;\n\t\t}\n\n\t\t&:hover,\n\t\t&:focus-within {\n\t\t\topacity: 1;\n\t\t\t.app-menu-entry--label {\n\t\t\t\topacity: 1;\n\t\t\t\tfont-weight: bolder;\n\t\t\t\tbottom: 0;\n\t\t\t\twidth: 100%;\n\t\t\t\ttext-overflow: ellipsis;\n\t\t\t\toverflow: hidden;\n\t\t\t}\n\t\t}\n\n\t}\n\n\t// Show labels\n\t&:hover,\n\t&:focus-within,\n\t.app-menu-entry:hover,\n\t.app-menu-entry:focus {\n\t\topacity: 1;\n\n\t\timg {\n\t\t\tmargin-top: -8px;\n\t\t}\n\n\t\t.app-menu-entry--label {\n\t\t\topacity: 1;\n\t\t\tbottom: 0;\n\t\t}\n\n\t\t&::before, .app-menu-entry::before {\n\t\t\topacity: 0;\n\t\t}\n\t}\n}\n\n::v-deep .app-menu-more .button-vue--vue-tertiary {\n\tcolor: var(--color-primary-text);\n\topacity: .7;\n\tmargin: 3px;\n\tfilter: var(--background-image-invert-if-bright);\n\n\t&:hover {\n\t\topacity: 1;\n\t\tbackground-color: transparent !important;\n\t}\n\n\t&:focus-visible {\n\t\topacity: 1;\n\t\toutline: none !important;\n\t}\n}\n\n.app-menu-popover-entry {\n\t.app-icon {\n\t\tposition: relative;\n\t\theight: 44px;\n\n\t\t&.has-unread::after {\n\t\t\tbackground-color: var(--color-main-text);\n\t\t}\n\n\t\timg {\n\t\t\twidth: $header-icon-size;\n\t\t\theight: $header-icon-size;\n\t\t\tpadding: calc((50px - $header-icon-size) / 2);\n\t\t}\n\t}\n}\n\n.has-unread::after {\n\tcontent: "";\n\twidth: 8px;\n\theight: 8px;\n\tbackground-color: var(--color-primary-text);\n\tborder-radius: 50%;\n\tposition: absolute;\n\tdisplay: block;\n\ttop: 10px;\n\tright: 10px;\n}\n\n.unread-counter {\n\tdisplay: none;\n}\n'],sourceRoot:""}]),e.Z=r},88951:function(t,e,n){"use strict";var i=n(87537),o=n.n(i),a=n(23645),r=n.n(a)()(o());r.push([t.id,".menu-entry__loading-icon[data-v-6e59d13c]{margin-right:8px}","",{version:3,sources:["webpack://./core/src/components/UserMenu/UserMenuEntry.vue"],names:[],mappings:"AAEC,2CACC,gBAAA",sourcesContent:["\n.menu-entry {\n\t&__loading-icon {\n\t\tmargin-right: 8px;\n\t}\n}\n"],sourceRoot:""}]),e.Z=r},50893:function(t,e,n){"use strict";var i=n(87537),o=n.n(i),a=n(23645),r=n.n(a)()(o());r.push([t.id,"#contactsmenu-menu[data-v-1563c388]{height:calc(100vh - 150px);max-height:302px;min-height:175px;width:350px}#contactsmenu-menu[data-v-1563c388] .emptycontent{margin-top:5vh !important;margin-bottom:1.5vh}#contactsmenu-menu[data-v-1563c388] .emptycontent .icon-loading,#contactsmenu-menu[data-v-1563c388] .emptycontent .icon-search{display:inline-block}#contactsmenu-menu[data-v-1563c388] #contactsmenu-search{width:calc(100% - 16px);margin:8px;height:34px}#contactsmenu-menu[data-v-1563c388] .content{height:calc(100vh - 150px - 50px);max-height:250px;min-height:125px;overflow-y:auto}#contactsmenu-menu[data-v-1563c388] .content .footer{text-align:center}#contactsmenu-menu[data-v-1563c388] .content .footer a{display:block;width:100%;padding:12px 0;opacity:.5}#contactsmenu-menu[data-v-1563c388] a{padding:2px}#contactsmenu-menu[data-v-1563c388] a:focus-visible{box-shadow:inset 0 0 0 2px var(--color-main-text) !important}#contactsmenu-menu[data-v-1563c388] .contact{display:flex;position:relative;align-items:center;padding:3px 3px 3px 10px}#contactsmenu-menu[data-v-1563c388] .contact .avatar{height:32px;width:32px;display:inline-block}#contactsmenu-menu[data-v-1563c388] .contact .body{flex-grow:1;padding-left:8px;min-width:0}#contactsmenu-menu[data-v-1563c388] .contact .body div{position:relative;width:100%;overflow-x:hidden;text-overflow:ellipsis}#contactsmenu-menu[data-v-1563c388] .contact .body .last-message,#contactsmenu-menu[data-v-1563c388] .contact .body .email-address{color:var(--color-text-maxcontrast)}#contactsmenu-menu[data-v-1563c388] .contact .top-action,#contactsmenu-menu[data-v-1563c388] .contact .second-action,#contactsmenu-menu[data-v-1563c388] .contact .other-actions{width:16px;height:16px;opacity:.5;cursor:pointer}#contactsmenu-menu[data-v-1563c388] .contact .top-action:not(button),#contactsmenu-menu[data-v-1563c388] .contact .second-action:not(button),#contactsmenu-menu[data-v-1563c388] .contact .other-actions:not(button){padding:14px}#contactsmenu-menu[data-v-1563c388] .contact .top-action img,#contactsmenu-menu[data-v-1563c388] .contact .second-action img,#contactsmenu-menu[data-v-1563c388] .contact .other-actions img{filter:var(--background-invert-if-dark)}#contactsmenu-menu[data-v-1563c388] .contact .top-action:hover,#contactsmenu-menu[data-v-1563c388] .contact .top-action:active,#contactsmenu-menu[data-v-1563c388] .contact .top-action:focus,#contactsmenu-menu[data-v-1563c388] .contact .second-action:hover,#contactsmenu-menu[data-v-1563c388] .contact .second-action:active,#contactsmenu-menu[data-v-1563c388] .contact .second-action:focus,#contactsmenu-menu[data-v-1563c388] .contact .other-actions:hover,#contactsmenu-menu[data-v-1563c388] .contact .other-actions:active,#contactsmenu-menu[data-v-1563c388] .contact .other-actions:focus{opacity:1}#contactsmenu-menu[data-v-1563c388] .contact button.other-actions{width:44px}#contactsmenu-menu[data-v-1563c388] .contact button.other-actions:focus{border-color:rgba(0,0,0,0);box-shadow:0 0 0 2px var(--color-main-text)}#contactsmenu-menu[data-v-1563c388] .contact button.other-actions:focus-visible{border-radius:var(--border-radius-pill)}#contactsmenu-menu[data-v-1563c388] .contact .menu{top:47px;margin-right:13px}#contactsmenu-menu[data-v-1563c388] .contact .popovermenu::after{right:2px}","",{version:3,sources:["webpack://./core/src/views/ContactsMenu.vue"],names:[],mappings:"AACA,oCAEC,0BAAA,CACA,gBAAA,CACA,gBAAA,CACA,WAAA,CAGC,kDACC,yBAAA,CACA,mBAAA,CACA,+HAEC,oBAAA,CAIF,yDACC,uBAAA,CACA,UAAA,CACA,WAAA,CAGD,6CAEC,iCAAA,CACA,gBAAA,CACA,gBAAA,CACA,eAAA,CAEA,qDACC,iBAAA,CAEA,uDACC,aAAA,CACA,UAAA,CACA,cAAA,CACA,UAAA,CAKH,sCACC,WAAA,CAEA,oDACC,4DAAA,CAIF,6CACC,YAAA,CACA,iBAAA,CACA,kBAAA,CACA,wBAAA,CAEA,qDACC,WAAA,CACA,UAAA,CACA,oBAAA,CAGD,mDACC,WAAA,CACA,gBAAA,CACA,WAAA,CAEA,uDACC,iBAAA,CACA,UAAA,CACA,iBAAA,CACA,sBAAA,CAGD,mIACC,mCAAA,CAIF,iLACC,UAAA,CACA,WAAA,CACA,UAAA,CACA,cAAA,CAEA,qNACC,YAAA,CAED,6LACC,uCAAA,CAGD,4kBAGC,SAAA,CAIF,kEACC,UAAA,CAEA,wEACC,0BAAA,CACA,2CAAA,CAGD,gFACC,uCAAA,CAKF,mDACC,QAAA,CACA,iBAAA,CAED,iEACC,SAAA",sourcesContent:["\n#contactsmenu-menu {\n\t/* show 2.5 to 4.5 entries depending on the screen height */\n\theight: calc(100vh - 50px * 3);\n\tmax-height: calc(50px * 6 + 2px);\n\tmin-height: calc(50px * 3.5);\n\twidth: 350px;\n\n\t&:deep {\n\t\t.emptycontent {\n\t\t\tmargin-top: 5vh !important;\n\t\t\tmargin-bottom: 1.5vh;\n\t\t\t.icon-loading,\n\t\t\t.icon-search {\n\t\t\t\tdisplay: inline-block;\n\t\t\t}\n\t\t}\n\n\t\t#contactsmenu-search {\n\t\t\twidth: calc(100% - 16px);\n\t\t\tmargin: 8px;\n\t\t\theight: 34px;\n\t\t}\n\n\t\t.content {\n\t\t\t/* fixed max height of the parent container without the search input */\n\t\t\theight: calc(100vh - 50px * 3 - 50px);\n\t\t\tmax-height: calc(50px * 5);\n\t\t\tmin-height: calc(50px * 3.5 - 50px);\n\t\t\toverflow-y: auto;\n\n\t\t\t.footer {\n\t\t\t\ttext-align: center;\n\n\t\t\t\ta {\n\t\t\t\t\tdisplay: block;\n\t\t\t\t\twidth: 100%;\n\t\t\t\t\tpadding: 12px 0;\n\t\t\t\t\topacity: .5;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\ta {\n\t\t\tpadding: 2px;\n\n\t\t\t&:focus-visible {\n\t\t\t\tbox-shadow: inset 0 0 0 2px var(--color-main-text) !important; // override rule in core/css/headers.scss #header a:focus-visible\n\t\t\t}\n\t\t}\n\n\t\t.contact {\n\t\t\tdisplay: flex;\n\t\t\tposition: relative;\n\t\t\talign-items: center;\n\t\t\tpadding: 3px 3px 3px 10px;\n\n\t\t\t.avatar {\n\t\t\t\theight: 32px;\n\t\t\t\twidth: 32px;\n\t\t\t\tdisplay: inline-block;\n\t\t\t}\n\n\t\t\t.body {\n\t\t\t\tflex-grow: 1;\n\t\t\t\tpadding-left: 8px;\n\t\t\t\tmin-width: 0;\n\n\t\t\t\tdiv {\n\t\t\t\t\tposition: relative;\n\t\t\t\t\twidth: 100%;\n\t\t\t\t\toverflow-x: hidden;\n\t\t\t\t\ttext-overflow: ellipsis;\n\t\t\t\t}\n\n\t\t\t\t.last-message, .email-address {\n\t\t\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t.top-action, .second-action, .other-actions {\n\t\t\t\twidth: 16px;\n\t\t\t\theight: 16px;\n\t\t\t\topacity: .5;\n\t\t\t\tcursor: pointer;\n\n\t\t\t\t&:not(button) {\n\t\t\t\t\tpadding: 14px;\n\t\t\t\t}\n\t\t\t\timg {\n\t\t\t\t\tfilter: var(--background-invert-if-dark);\n\t\t\t\t}\n\n\t\t\t\t&:hover,\n\t\t\t\t&:active,\n\t\t\t\t&:focus {\n\t\t\t\t\topacity: 1;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tbutton.other-actions {\n\t\t\t\twidth: 44px;\n\n\t\t\t\t&:focus {\n\t\t\t\t\tborder-color: transparent;\n\t\t\t\t\tbox-shadow: 0 0 0 2px var(--color-main-text);\n\t\t\t\t}\n\n\t\t\t\t&:focus-visible {\n\t\t\t\t\tborder-radius: var(--border-radius-pill);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t/* actions menu */\n\t\t\t.menu {\n\t\t\t\ttop: 47px;\n\t\t\t\tmargin-right: 13px;\n\t\t\t}\n\t\t\t.popovermenu::after {\n\t\t\t\tright: 2px;\n\t\t\t}\n\t\t}\n\t}\n}\n"],sourceRoot:""}]),e.Z=r},71445:function(t,e,n){"use strict";var i=n(87537),o=n.n(i),a=n(23645),r=n.n(a)()(o());r.push([t.id,".user-menu[data-v-6a818bbc]{margin-right:12px}.user-menu[data-v-6a818bbc] .header-menu__trigger{opacity:1 !important}.user-menu[data-v-6a818bbc] .header-menu__trigger:focus-visible .user-menu__avatar{border:2px solid var(--color-primary-text)}.user-menu[data-v-6a818bbc] .header-menu__carret{display:none !important}.user-menu[data-v-6a818bbc] .header-menu__content{width:fit-content !important}.user-menu__avatar[data-v-6a818bbc]:active,.user-menu__avatar[data-v-6a818bbc]:focus,.user-menu__avatar[data-v-6a818bbc]:hover{border:2px solid var(--color-primary-text)}.user-menu__nav[data-v-6a818bbc]{display:flex;width:100%}.user-menu__nav ul[data-v-6a818bbc]{display:flex;flex-direction:column;gap:2px}.user-menu__nav ul[data-v-6a818bbc] li a,.user-menu__nav ul[data-v-6a818bbc] li button{border-radius:6px;display:inline-flex;align-items:center;height:var(--header-menu-item-height);color:var(--color-main-text);padding:10px 8px;box-sizing:border-box;white-space:nowrap;position:relative;width:100%}.user-menu__nav ul[data-v-6a818bbc] li a:hover,.user-menu__nav ul[data-v-6a818bbc] li button:hover{background-color:var(--color-background-hover)}.user-menu__nav ul[data-v-6a818bbc] li a:focus-visible,.user-menu__nav ul[data-v-6a818bbc] li button:focus-visible{background-color:var(--color-background-hover) !important;box-shadow:inset 0 0 0 2px var(--color-primary) !important;outline:none !important}.user-menu__nav ul[data-v-6a818bbc] li a:active,.user-menu__nav ul[data-v-6a818bbc] li a.active,.user-menu__nav ul[data-v-6a818bbc] li button:active,.user-menu__nav ul[data-v-6a818bbc] li button.active{background-color:var(--color-primary-light)}.user-menu__nav ul[data-v-6a818bbc] li a span,.user-menu__nav ul[data-v-6a818bbc] li button span{padding-bottom:0;color:var(--color-main-text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:110px}.user-menu__nav ul[data-v-6a818bbc] li a img,.user-menu__nav ul[data-v-6a818bbc] li button img{width:16px;height:16px;margin-right:10px}.user-menu__nav ul[data-v-6a818bbc] li a img,.user-menu__nav ul[data-v-6a818bbc] li a svg,.user-menu__nav ul[data-v-6a818bbc] li button img,.user-menu__nav ul[data-v-6a818bbc] li button svg{opacity:.7;filter:var(--background-invert-if-dark)}.user-menu__nav ul[data-v-6a818bbc] li button{background-color:rgba(0,0,0,0);border:none;font-weight:normal;margin:0}","",{version:3,sources:["webpack://./core/src/views/UserMenu.vue"],names:[],mappings:"AACA,4BACC,iBAAA,CAIE,kDACC,oBAAA,CAEC,mFACC,0CAAA,CAKH,iDACC,uBAAA,CAGD,kDACC,4BAAA,CAMF,+HAGC,0CAAA,CAIF,iCACC,YAAA,CACA,UAAA,CAEA,oCACC,YAAA,CACA,qBAAA,CACA,OAAA,CAIE,uFAEC,iBAAA,CACA,mBAAA,CACA,kBAAA,CACA,qCAAA,CACA,4BAAA,CACA,gBAAA,CACA,qBAAA,CACA,kBAAA,CACA,iBAAA,CACA,UAAA,CAEA,mGACC,8CAAA,CAGD,mHACC,yDAAA,CACA,0DAAA,CACA,uBAAA,CAGD,0MAEC,2CAAA,CAGD,iGACC,gBAAA,CACA,4BAAA,CACA,kBAAA,CACA,eAAA,CACA,sBAAA,CACA,eAAA,CAGD,+FACC,UAAA,CACA,WAAA,CACA,iBAAA,CAGD,8LAEC,UAAA,CACA,uCAAA,CAKF,8CACC,8BAAA,CACA,WAAA,CACA,kBAAA,CACA,QAAA",sourcesContent:["\n.user-menu {\n\tmargin-right: 12px;\n\n\t&:deep {\n\t\t.header-menu {\n\t\t\t&__trigger {\n\t\t\t\topacity: 1 !important;\n\t\t\t\t&:focus-visible {\n\t\t\t\t\t.user-menu__avatar {\n\t\t\t\t\t\tborder: 2px solid var(--color-primary-text);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t&__carret {\n\t\t\t\tdisplay: none !important;\n\t\t\t}\n\n\t\t\t&__content {\n\t\t\t\twidth: fit-content !important;\n\t\t\t}\n\t\t}\n\t}\n\n\t&__avatar {\n\t\t&:active,\n\t\t&:focus,\n\t\t&:hover {\n\t\t\tborder: 2px solid var(--color-primary-text);\n\t\t}\n\t}\n\n\t&__nav {\n\t\tdisplay: flex;\n\t\twidth: 100%;\n\n\t\tul {\n\t\t\tdisplay: flex;\n\t\t\tflex-direction: column;\n\t\t\tgap: 2px;\n\n\t\t\t&:deep {\n\t\t\t\tli {\n\t\t\t\t\ta,\n\t\t\t\t\tbutton {\n\t\t\t\t\t\tborder-radius: 6px;\n\t\t\t\t\t\tdisplay: inline-flex;\n\t\t\t\t\t\talign-items: center;\n\t\t\t\t\t\theight: var(--header-menu-item-height);\n\t\t\t\t\t\tcolor: var(--color-main-text);\n\t\t\t\t\t\tpadding: 10px 8px;\n\t\t\t\t\t\tbox-sizing: border-box;\n\t\t\t\t\t\twhite-space: nowrap;\n\t\t\t\t\t\tposition: relative;\n\t\t\t\t\t\twidth: 100%;\n\n\t\t\t\t\t\t&:hover {\n\t\t\t\t\t\t\tbackground-color: var(--color-background-hover);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t&:focus-visible {\n\t\t\t\t\t\t\tbackground-color: var(--color-background-hover) !important;\n\t\t\t\t\t\t\tbox-shadow: inset 0 0 0 2px var(--color-primary) !important;\n\t\t\t\t\t\t\toutline: none !important;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t&:active,\n\t\t\t\t\t\t&.active {\n\t\t\t\t\t\t\tbackground-color: var(--color-primary-light);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tspan {\n\t\t\t\t\t\t\tpadding-bottom: 0;\n\t\t\t\t\t\t\tcolor: var(--color-main-text);\n\t\t\t\t\t\t\twhite-space: nowrap;\n\t\t\t\t\t\t\toverflow: hidden;\n\t\t\t\t\t\t\ttext-overflow: ellipsis;\n\t\t\t\t\t\t\tmax-width: 110px;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\timg {\n\t\t\t\t\t\t\twidth: 16px;\n\t\t\t\t\t\t\theight: 16px;\n\t\t\t\t\t\t\tmargin-right: 10px;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\timg,\n\t\t\t\t\t\tsvg {\n\t\t\t\t\t\t\topacity: .7;\n\t\t\t\t\t\t\tfilter: var(--background-invert-if-dark);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Override global button styles\n\t\t\t\t\tbutton {\n\t\t\t\t\t\tbackground-color: transparent;\n\t\t\t\t\t\tborder: none;\n\t\t\t\t\t\tfont-weight: normal;\n\t\t\t\t\t\tmargin: 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n"],sourceRoot:""}]),e.Z=r},10944:function(t,e,n){var i=n(40202);t.exports=(i.default||i).template({1:function(t,e,n,i,o){var a,r=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return null!=(a=r(n,"if").call(null!=e?e:t.nullContext||{},null!=(a=null!=e?r(e,"contact"):e)?r(a,"profileUrl"):a,{name:"if",hash:{},fn:t.program(2,o,0),inverse:t.program(5,o,0),data:o,loc:{start:{line:2,column:1},end:{line:10,column:8}}}))?a:""},2:function(t,e,n,i,o){var a,r=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return null!=(a=r(n,"if").call(null!=e?e:t.nullContext||{},null!=(a=null!=e?r(e,"contact"):e)?r(a,"profileTitle"):a,{name:"if",hash:{},fn:t.program(3,o,0),inverse:t.noop,data:o,loc:{start:{line:3,column:2},end:{line:7,column:9}}}))?a:""},3:function(t,e,n,i,o){var a,r=t.lambda,s=t.escapeExpression,l=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'\t\t\t<a class="profile-link--avatar" href="'+s(r(null!=(a=null!=e?l(e,"contact"):e)?l(a,"profileUrl"):a,e))+'">\n\t\t\t\t<img src="'+s(r(null!=(a=null!=e?l(e,"contact"):e)?l(a,"avatar"):a,e))+'&size=32" class="avatar" srcset="'+s(r(null!=(a=null!=e?l(e,"contact"):e)?l(a,"avatar"):a,e))+"&size=32 1x, "+s(r(null!=(a=null!=e?l(e,"contact"):e)?l(a,"avatar"):a,e))+"&size=64 2x, "+s(r(null!=(a=null!=e?l(e,"contact"):e)?l(a,"avatar"):a,e))+'&size=128 4x" alt="">\n\t\t\t</a>\n'},5:function(t,e,n,i,o){var a,r=t.lambda,s=t.escapeExpression,l=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'\t\t<img src="'+s(r(null!=(a=null!=e?l(e,"contact"):e)?l(a,"avatar"):a,e))+'&size=32" class="avatar" srcset="'+s(r(null!=(a=null!=e?l(e,"contact"):e)?l(a,"avatar"):a,e))+"&size=32 1x, "+s(r(null!=(a=null!=e?l(e,"contact"):e)?l(a,"avatar"):a,e))+"&size=64 2x, "+s(r(null!=(a=null!=e?l(e,"contact"):e)?l(a,"avatar"):a,e))+'&size=128 4x" alt="">\n'},7:function(t,e,n,i,o){var a,r=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return null!=(a=r(n,"if").call(null!=e?e:t.nullContext||{},null!=(a=null!=e?r(e,"contact"):e)?r(a,"profileUrl"):a,{name:"if",hash:{},fn:t.program(8,o,0),inverse:t.program(11,o,0),data:o,loc:{start:{line:12,column:1},end:{line:20,column:8}}}))?a:""},8:function(t,e,n,i,o){var a,r=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return null!=(a=r(n,"if").call(null!=e?e:t.nullContext||{},null!=(a=null!=e?r(e,"contact"):e)?r(a,"profileTitle"):a,{name:"if",hash:{},fn:t.program(9,o,0),inverse:t.noop,data:o,loc:{start:{line:13,column:2},end:{line:17,column:9}}}))?a:""},9:function(t,e,n,i,o){var a,r=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'\t\t\t<a class="profile-link--avatar" href="'+t.escapeExpression(t.lambda(null!=(a=null!=e?r(e,"contact"):e)?r(a,"profileUrl"):a,e))+'">\n\t\t\t\t<div class="avatar"></div>\n\t\t\t</a>\n'},11:function(t,e,n,i,o){return'\t\t<div class="avatar"></div>\n'},13:function(t,e,n,i,o){var a,r=null!=e?e:t.nullContext||{},s=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return(null!=(a=s(n,"if").call(r,null!=(a=null!=e?s(e,"contact"):e)?s(a,"profileTitle"):a,{name:"if",hash:{},fn:t.program(14,o,0),inverse:t.noop,data:o,loc:{start:{line:23,column:1},end:{line:29,column:8}}}))?a:"")+(null!=(a=s(n,"if").call(r,null!=(a=null!=e?s(e,"contact"):e)?s(a,"topAction"):a,{name:"if",hash:{},fn:t.program(16,o,0),inverse:t.noop,data:o,loc:{start:{line:30,column:1},end:{line:34,column:8}}}))?a:"")},14:function(t,e,n,i,o){var a,r=t.lambda,s=t.escapeExpression,l=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'\t\t<a class="body profile-link--full-name" href="'+s(r(null!=(a=null!=e?l(e,"contact"):e)?l(a,"profileUrl"):a,e))+'">\n\t\t\t<div class="full-name">'+s(r(null!=(a=null!=e?l(e,"contact"):e)?l(a,"fullName"):a,e))+'</div>\n\t\t\t<div class="last-message">'+s(r(null!=(a=null!=e?l(e,"contact"):e)?l(a,"lastMessage"):a,e))+'</div>\n\t\t\t<div class="email-address">'+s(r(null!=(a=null!=e?l(e,"contact"):e)?l(a,"emailAddresses"):a,e))+"</div>\n\t\t</a>\n"},16:function(t,e,n,i,o){var a,r=t.lambda,s=t.escapeExpression,l=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'\t\t<a class="top-action" href="'+s(r(null!=(a=null!=(a=null!=e?l(e,"contact"):e)?l(a,"topAction"):a)?l(a,"hyperlink"):a,e))+'" title="'+s(r(null!=(a=null!=(a=null!=e?l(e,"contact"):e)?l(a,"topAction"):a)?l(a,"title"):a,e))+'">\n\t\t\t<img src="'+s(r(null!=(a=null!=(a=null!=e?l(e,"contact"):e)?l(a,"topAction"):a)?l(a,"icon"):a,e))+'" alt="'+s(r(null!=(a=null!=(a=null!=e?l(e,"contact"):e)?l(a,"topAction"):a)?l(a,"title"):a,e))+'">\n\t\t</a>\n'},18:function(t,e,n,i,o){var a,r=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return null!=(a=r(n,"if").call(null!=e?e:t.nullContext||{},null!=(a=null!=e?r(e,"contact"):e)?r(a,"topAction"):a,{name:"if",hash:{},fn:t.program(19,o,0),inverse:t.program(21,o,0),data:o,loc:{start:{line:35,column:0},end:{line:50,column:0}}}))?a:""},19:function(t,e,n,i,o){var a,r=t.lambda,s=t.escapeExpression,l=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'\t<a class="body" href="'+s(r(null!=(a=null!=(a=null!=e?l(e,"contact"):e)?l(a,"topAction"):a)?l(a,"hyperlink"):a,e))+'">\n\t\t<div class="full-name">'+s(r(null!=(a=null!=e?l(e,"contact"):e)?l(a,"fullName"):a,e))+'</div>\n\t\t<div class="last-message">'+s(r(null!=(a=null!=e?l(e,"contact"):e)?l(a,"lastMessage"):a,e))+'</div>\n\t\t<div class="email-address">'+s(r(null!=(a=null!=e?l(e,"contact"):e)?l(a,"emailAddresses"):a,e))+'</div>\n\t</a>\n \t<a class="top-action" href="'+s(r(null!=(a=null!=(a=null!=e?l(e,"contact"):e)?l(a,"topAction"):a)?l(a,"hyperlink"):a,e))+'" title="'+s(r(null!=(a=null!=(a=null!=e?l(e,"contact"):e)?l(a,"topAction"):a)?l(a,"title"):a,e))+'">\n \t\t<img src="'+s(r(null!=(a=null!=(a=null!=e?l(e,"contact"):e)?l(a,"topAction"):a)?l(a,"icon"):a,e))+'" alt="'+s(r(null!=(a=null!=(a=null!=e?l(e,"contact"):e)?l(a,"topAction"):a)?l(a,"title"):a,e))+'">\n\t</a>\n'},21:function(t,e,n,i,o){var a,r=t.lambda,s=t.escapeExpression,l=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'\t<div class="body">\n\t\t<div class="full-name">'+s(r(null!=(a=null!=e?l(e,"contact"):e)?l(a,"fullName"):a,e))+'</div>\n\t\t<div class="last-message">'+s(r(null!=(a=null!=e?l(e,"contact"):e)?l(a,"lastMessage"):a,e))+'</div>\n\t\t<div class="email-address">'+s(r(null!=(a=null!=e?l(e,"contact"):e)?l(a,"emailAddresses"):a,e))+"</div>\n\t</div>\n"},23:function(t,e,n,i,o){var a,r=t.lambda,s=t.escapeExpression,l=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'<a class="second-action" href="'+s(r(null!=(a=null!=(a=null!=e?l(e,"contact"):e)?l(a,"secondAction"):a)?l(a,"hyperlink"):a,e))+'" title="'+s(r(null!=(a=null!=(a=null!=e?l(e,"contact"):e)?l(a,"secondAction"):a)?l(a,"title"):a,e))+'">\n\t<img src="'+s(r(null!=(a=null!=(a=null!=e?l(e,"contact"):e)?l(a,"secondAction"):a)?l(a,"icon"):a,e))+'" alt="'+s(r(null!=(a=null!=(a=null!=e?l(e,"contact"):e)?l(a,"secondAction"):a)?l(a,"title"):a,e))+'">\n</a>\n'},25:function(t,e,n,i,o){var a,r=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'\t<button class="other-actions icon-more"></button>\n\t<div class="menu popovermenu">\n\t\t<ul>\n'+(null!=(a=r(n,"each").call(null!=e?e:t.nullContext||{},null!=(a=null!=e?r(e,"contact"):e)?r(a,"actions"):a,{name:"each",hash:{},fn:t.program(26,o,0),inverse:t.noop,data:o,loc:{start:{line:60,column:3},end:{line:67,column:12}}}))?a:"")+"\t\t</ul>\n\t</div>\n"},26:function(t,e,n,i,o){var a,r=null!=e?e:t.nullContext||{},s=t.hooks.helperMissing,l="function",c=t.escapeExpression,u=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'\t\t\t<li>\n\t\t\t\t<a href="'+c(typeof(a=null!=(a=u(n,"hyperlink")||(null!=e?u(e,"hyperlink"):e))?a:s)===l?a.call(r,{name:"hyperlink",hash:{},data:o,loc:{start:{line:62,column:13},end:{line:62,column:26}}}):a)+'">\n\t\t\t\t\t<img src="'+c(typeof(a=null!=(a=u(n,"icon")||(null!=e?u(e,"icon"):e))?a:s)===l?a.call(r,{name:"icon",hash:{},data:o,loc:{start:{line:63,column:15},end:{line:63,column:23}}}):a)+'" alt="">\n\t\t\t\t\t<span>'+c(typeof(a=null!=(a=u(n,"title")||(null!=e?u(e,"title"):e))?a:s)===l?a.call(r,{name:"title",hash:{},data:o,loc:{start:{line:64,column:11},end:{line:64,column:20}}}):a)+"</span>\n\t\t\t\t</a>\n\t\t\t</li>\n"},compiler:[8,">= 4.3.0"],main:function(t,e,n,i,o){var a,r=null!=e?e:t.nullContext||{},s=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return(null!=(a=s(n,"if").call(r,null!=(a=null!=e?s(e,"contact"):e)?s(a,"avatar"):a,{name:"if",hash:{},fn:t.program(1,o,0),inverse:t.program(7,o,0),data:o,loc:{start:{line:1,column:0},end:{line:21,column:7}}}))?a:"")+(null!=(a=s(n,"if").call(r,null!=(a=null!=e?s(e,"contact"):e)?s(a,"profileUrl"):a,{name:"if",hash:{},fn:t.program(13,o,0),inverse:t.program(18,o,0),data:o,loc:{start:{line:22,column:0},end:{line:50,column:7}}}))?a:"")+(null!=(a=s(n,"if").call(r,null!=(a=null!=e?s(e,"contact"):e)?s(a,"hasTwoActions"):a,{name:"if",hash:{},fn:t.program(23,o,0),inverse:t.noop,data:o,loc:{start:{line:51,column:0},end:{line:55,column:7}}}))?a:"")+(null!=(a=s(n,"if").call(r,null!=(a=null!=e?s(e,"contact"):e)?s(a,"hasManyActions"):a,{name:"if",hash:{},fn:t.program(25,o,0),inverse:t.noop,data:o,loc:{start:{line:56,column:0},end:{line:70,column:7}}}))?a:"")},useData:!0})},20421:function(t,e,n){var i=n(40202);t.exports=(i.default||i).template({compiler:[8,">= 4.3.0"],main:function(t,e,n,i,o){var a,r=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'<div class="emptycontent">\n\t<div class="icon-search"></div>\n\t<h2>'+t.escapeExpression("function"==typeof(a=null!=(a=r(n,"couldNotLoadText")||(null!=e?r(e,"couldNotLoadText"):e))?a:t.hooks.helperMissing)?a.call(null!=e?e:t.nullContext||{},{name:"couldNotLoadText",hash:{},data:o,loc:{start:{line:3,column:5},end:{line:3,column:25}}}):a)+"</h2>\n</div>\n"},useData:!0})},34083:function(t,e,n){var i=n(40202);t.exports=(i.default||i).template({1:function(t,e,n,i,o){var a,r=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'<div class="emptycontent">\n\t<div class="icon-search"></div>\n\t<h2>'+t.escapeExpression("function"==typeof(a=null!=(a=r(n,"noContactsFoundText")||(null!=e?r(e,"noContactsFoundText"):e))?a:t.hooks.helperMissing)?a.call(null!=e?e:t.nullContext||{},{name:"noContactsFoundText",hash:{},data:o,loc:{start:{line:4,column:5},end:{line:4,column:28}}}):a)+"</h2>\n</div>\n"},3:function(t,e,n,i,o){var a,r=null!=e?e:t.nullContext||{},s=t.hooks.helperMissing,l="function",c=t.escapeExpression,u=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'<div class="footer"><a href="'+c(typeof(a=null!=(a=u(n,"contactsAppURL")||(null!=e?u(e,"contactsAppURL"):e))?a:s)===l?a.call(r,{name:"contactsAppURL",hash:{},data:o,loc:{start:{line:9,column:29},end:{line:9,column:47}}}):a)+'">'+c(typeof(a=null!=(a=u(n,"showAllContactsText")||(null!=e?u(e,"showAllContactsText"):e))?a:s)===l?a.call(r,{name:"showAllContactsText",hash:{},data:o,loc:{start:{line:9,column:49},end:{line:9,column:72}}}):a)+"</a></div>\n"},5:function(t,e,n,i,o){var a,r=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return null!=(a=r(n,"if").call(null!=e?e:t.nullContext||{},null!=e?r(e,"canInstallApp"):e,{name:"if",hash:{},fn:t.program(6,o,0),inverse:t.noop,data:o,loc:{start:{line:10,column:0},end:{line:12,column:0}}}))?a:""},6:function(t,e,n,i,o){var a,r=null!=e?e:t.nullContext||{},s=t.hooks.helperMissing,l="function",c=t.escapeExpression,u=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'<div class="footer"><a href="'+c(typeof(a=null!=(a=u(n,"contactsAppMgmtURL")||(null!=e?u(e,"contactsAppMgmtURL"):e))?a:s)===l?a.call(r,{name:"contactsAppMgmtURL",hash:{},data:o,loc:{start:{line:11,column:29},end:{line:11,column:51}}}):a)+'">'+c(typeof(a=null!=(a=u(n,"contactsAppMgmtText")||(null!=e?u(e,"contactsAppMgmtText"):e))?a:s)===l?a.call(r,{name:"contactsAppMgmtText",hash:{},data:o,loc:{start:{line:11,column:53},end:{line:11,column:76}}}):a)+"</a></div>\n"},compiler:[8,">= 4.3.0"],main:function(t,e,n,i,o){var a,r=null!=e?e:t.nullContext||{},s=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return(null!=(a=s(n,"unless").call(r,null!=(a=null!=e?s(e,"contacts"):e)?s(a,"length"):a,{name:"unless",hash:{},fn:t.program(1,o,0),inverse:t.noop,data:o,loc:{start:{line:1,column:0},end:{line:6,column:11}}}))?a:"")+'<div id="contactsmenu-contacts"></div>\n'+(null!=(a=s(n,"if").call(r,null!=e?s(e,"contactsAppEnabled"):e,{name:"if",hash:{},fn:t.program(3,o,0),inverse:t.program(5,o,0),data:o,loc:{start:{line:8,column:0},end:{line:12,column:7}}}))?a:"")},useData:!0})},95386:function(t,e,n){var i=n(40202);t.exports=(i.default||i).template({compiler:[8,">= 4.3.0"],main:function(t,e,n,i,o){var a,r=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'<div class="emptycontent">\n\t<div class="icon-loading"></div>\n\t<h2>'+t.escapeExpression("function"==typeof(a=null!=(a=r(n,"loadingText")||(null!=e?r(e,"loadingText"):e))?a:t.hooks.helperMissing)?a.call(null!=e?e:t.nullContext||{},{name:"loadingText",hash:{},data:o,loc:{start:{line:3,column:5},end:{line:3,column:20}}}):a)+"</h2>\n</div>\n"},useData:!0})},66115:function(t,e,n){var i=n(40202);t.exports=(i.default||i).template({compiler:[8,">= 4.3.0"],main:function(t,e,n,i,o){var a,r=null!=e?e:t.nullContext||{},s=t.hooks.helperMissing,l="function",c=t.escapeExpression,u=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'<label class="hidden-visually" for="contactsmenu-search">'+c(typeof(a=null!=(a=u(n,"searchContactsText")||(null!=e?u(e,"searchContactsText"):e))?a:s)===l?a.call(r,{name:"searchContactsText",hash:{},data:o,loc:{start:{line:1,column:57},end:{line:1,column:79}}}):a)+'</label>\n<input id="contactsmenu-search" type="search" placeholder="'+c(typeof(a=null!=(a=u(n,"searchContactsText")||(null!=e?u(e,"searchContactsText"):e))?a:s)===l?a.call(r,{name:"searchContactsText",hash:{},data:o,loc:{start:{line:2,column:59},end:{line:2,column:81}}}):a)+'" value="'+c(typeof(a=null!=(a=u(n,"searchTerm")||(null!=e?u(e,"searchTerm"):e))?a:s)===l?a.call(r,{name:"searchTerm",hash:{},data:o,loc:{start:{line:2,column:90},end:{line:2,column:104}}}):a)+'">\n<div class="content">\n</div>\n'},useData:!0})},47078:function(t,e,n){var i=n(40202);t.exports=(i.default||i).template({1:function(t,e,n,i,o){var a,r=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'<img src="'+t.escapeExpression("function"==typeof(a=null!=(a=r(n,"icon")||(null!=e?r(e,"icon"):e))?a:t.hooks.helperMissing)?a.call(null!=e?e:t.nullContext||{},{name:"icon",hash:{},data:o,loc:{start:{line:3,column:24},end:{line:3,column:32}}}):a)+'">'},compiler:[8,">= 4.3.0"],main:function(t,e,n,i,o){var a,r,s=null!=e?e:t.nullContext||{},l=t.hooks.helperMissing,c="function",u=t.escapeExpression,d=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'<li>\n\t<a href="'+u(typeof(r=null!=(r=d(n,"hyperlink")||(null!=e?d(e,"hyperlink"):e))?r:l)===c?r.call(s,{name:"hyperlink",hash:{},data:o,loc:{start:{line:2,column:10},end:{line:2,column:23}}}):r)+'">\n\t\t'+(null!=(a=d(n,"if").call(s,null!=e?d(e,"icon"):e,{name:"if",hash:{},fn:t.program(1,o,0),inverse:t.noop,data:o,loc:{start:{line:3,column:2},end:{line:3,column:41}}}))?a:"")+"\n\t\t<span>"+u(typeof(r=null!=(r=d(n,"title")||(null!=e?d(e,"title"):e))?r:l)===c?r.call(s,{name:"title",hash:{},data:o,loc:{start:{line:4,column:8},end:{line:4,column:17}}}):r)+"</span>\n\t</a>\n</li>\n"},useData:!0})},46700:function(t,e,n){var i={"./af":42786,"./af.js":42786,"./ar":30867,"./ar-dz":14130,"./ar-dz.js":14130,"./ar-kw":96135,"./ar-kw.js":96135,"./ar-ly":56440,"./ar-ly.js":56440,"./ar-ma":47702,"./ar-ma.js":47702,"./ar-sa":16040,"./ar-sa.js":16040,"./ar-tn":37100,"./ar-tn.js":37100,"./ar.js":30867,"./az":31083,"./az.js":31083,"./be":9808,"./be.js":9808,"./bg":68338,"./bg.js":68338,"./bm":67438,"./bm.js":67438,"./bn":8905,"./bn-bd":76225,"./bn-bd.js":76225,"./bn.js":8905,"./bo":11560,"./bo.js":11560,"./br":1278,"./br.js":1278,"./bs":80622,"./bs.js":80622,"./ca":2468,"./ca.js":2468,"./cs":5822,"./cs.js":5822,"./cv":50877,"./cv.js":50877,"./cy":47373,"./cy.js":47373,"./da":24780,"./da.js":24780,"./de":59740,"./de-at":60217,"./de-at.js":60217,"./de-ch":60894,"./de-ch.js":60894,"./de.js":59740,"./dv":5300,"./dv.js":5300,"./el":50837,"./el.js":50837,"./en-au":78348,"./en-au.js":78348,"./en-ca":77925,"./en-ca.js":77925,"./en-gb":22243,"./en-gb.js":22243,"./en-ie":46436,"./en-ie.js":46436,"./en-il":47207,"./en-il.js":47207,"./en-in":44175,"./en-in.js":44175,"./en-nz":76319,"./en-nz.js":76319,"./en-sg":31662,"./en-sg.js":31662,"./eo":92915,"./eo.js":92915,"./es":55655,"./es-do":55251,"./es-do.js":55251,"./es-mx":96112,"./es-mx.js":96112,"./es-us":71146,"./es-us.js":71146,"./es.js":55655,"./et":5603,"./et.js":5603,"./eu":77763,"./eu.js":77763,"./fa":76959,"./fa.js":76959,"./fi":11897,"./fi.js":11897,"./fil":42549,"./fil.js":42549,"./fo":94694,"./fo.js":94694,"./fr":94470,"./fr-ca":63049,"./fr-ca.js":63049,"./fr-ch":52330,"./fr-ch.js":52330,"./fr.js":94470,"./fy":5044,"./fy.js":5044,"./ga":29295,"./ga.js":29295,"./gd":2101,"./gd.js":2101,"./gl":38794,"./gl.js":38794,"./gom-deva":27884,"./gom-deva.js":27884,"./gom-latn":23168,"./gom-latn.js":23168,"./gu":95349,"./gu.js":95349,"./he":24206,"./he.js":24206,"./hi":30094,"./hi.js":30094,"./hr":30316,"./hr.js":30316,"./hu":22138,"./hu.js":22138,"./hy-am":11423,"./hy-am.js":11423,"./id":29218,"./id.js":29218,"./is":90135,"./is.js":90135,"./it":90626,"./it-ch":10150,"./it-ch.js":10150,"./it.js":90626,"./ja":39183,"./ja.js":39183,"./jv":24286,"./jv.js":24286,"./ka":12105,"./ka.js":12105,"./kk":47772,"./kk.js":47772,"./km":18758,"./km.js":18758,"./kn":79282,"./kn.js":79282,"./ko":33730,"./ko.js":33730,"./ku":1408,"./ku.js":1408,"./ky":33291,"./ky.js":33291,"./lb":36841,"./lb.js":36841,"./lo":55466,"./lo.js":55466,"./lt":57010,"./lt.js":57010,"./lv":37595,"./lv.js":37595,"./me":39861,"./me.js":39861,"./mi":35493,"./mi.js":35493,"./mk":95966,"./mk.js":95966,"./ml":87341,"./ml.js":87341,"./mn":5115,"./mn.js":5115,"./mr":10370,"./mr.js":10370,"./ms":9847,"./ms-my":41237,"./ms-my.js":41237,"./ms.js":9847,"./mt":72126,"./mt.js":72126,"./my":56165,"./my.js":56165,"./nb":64924,"./nb.js":64924,"./ne":16744,"./ne.js":16744,"./nl":93901,"./nl-be":59814,"./nl-be.js":59814,"./nl.js":93901,"./nn":83877,"./nn.js":83877,"./oc-lnc":92135,"./oc-lnc.js":92135,"./pa-in":15858,"./pa-in.js":15858,"./pl":64495,"./pl.js":64495,"./pt":89520,"./pt-br":57971,"./pt-br.js":57971,"./pt.js":89520,"./ro":96459,"./ro.js":96459,"./ru":21793,"./ru.js":21793,"./sd":40950,"./sd.js":40950,"./se":10490,"./se.js":10490,"./si":90124,"./si.js":90124,"./sk":64249,"./sk.js":64249,"./sl":14985,"./sl.js":14985,"./sq":51104,"./sq.js":51104,"./sr":49131,"./sr-cyrl":79915,"./sr-cyrl.js":79915,"./sr.js":49131,"./ss":85893,"./ss.js":85893,"./sv":98760,"./sv.js":98760,"./sw":91172,"./sw.js":91172,"./ta":27333,"./ta.js":27333,"./te":23110,"./te.js":23110,"./tet":52095,"./tet.js":52095,"./tg":27321,"./tg.js":27321,"./th":9041,"./th.js":9041,"./tk":19005,"./tk.js":19005,"./tl-ph":75768,"./tl-ph.js":75768,"./tlh":89444,"./tlh.js":89444,"./tr":72397,"./tr.js":72397,"./tzl":28254,"./tzl.js":28254,"./tzm":51106,"./tzm-latn":30699,"./tzm-latn.js":30699,"./tzm.js":51106,"./ug-cn":9288,"./ug-cn.js":9288,"./uk":67691,"./uk.js":67691,"./ur":13795,"./ur.js":13795,"./uz":6791,"./uz-latn":60588,"./uz-latn.js":60588,"./uz.js":6791,"./vi":65666,"./vi.js":65666,"./x-pseudo":14378,"./x-pseudo.js":14378,"./yo":75805,"./yo.js":75805,"./zh-cn":83839,"./zh-cn.js":83839,"./zh-hk":55726,"./zh-hk.js":55726,"./zh-mo":99807,"./zh-mo.js":99807,"./zh-tw":74152,"./zh-tw.js":74152};function o(t){var e=a(t);return n(e)}function a(t){if(!n.o(i,t)){var e=new Error("Cannot find module '"+t+"'");throw e.code="MODULE_NOT_FOUND",e}return i[t]}o.keys=function(){return Object.keys(i)},o.resolve=a,t.exports=o,o.id=46700},12081:function(t){"use strict";t.exports="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAAoAQMAAAC2MCouAAAABlBMVEVmZmZ1dXVT6N0BAAAAUklEQVQIW8XNsQ3AIAwF0bMoKBmBURgNj8YojEBJEcXwu2yQ+p507BTeWDnozPISjPpY4O0W6CqEisUtiG/EF+IT8YG4fznihnhCPCNeEK/89D1Gd22TNOyXVAAAAABJRU5ErkJggg=="},47868:function(t){"use strict";t.exports="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAABkAQMAAADOquA5AAAAA1BMVEUAAACnej3aAAAADklEQVQYGWMYBaOABgAAAlgAARbiVEcAAAAASUVORK5CYII="},58188:function(t){"use strict";t.exports="data:image/png;base64,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"},33178:function(t){"use strict";t.exports="data:image/png;base64,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"},40337:function(t){"use strict";t.exports="data:image/png;base64,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"},98811:function(t){"use strict";t.exports="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7"},27373:function(t){"use strict";t.exports="data:image/gif;base64,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"}},o={};function a(t){var e=o[t];if(void 0!==e)return e.exports;var n=o[t]={id:t,loaded:!1,exports:{}};return i[t].call(n.exports,n,n.exports,a),n.loaded=!0,n.exports}a.m=i,e=[],a.O=function(t,n,i,o){if(!n){var r=1/0;for(u=0;u<e.length;u++){n=e[u][0],i=e[u][1],o=e[u][2];for(var s=!0,l=0;l<n.length;l++)(!1&o||r>=o)&&Object.keys(a.O).every((function(t){return a.O[t](n[l])}))?n.splice(l--,1):(s=!1,o<r&&(r=o));if(s){e.splice(u--,1);var c=i();void 0!==c&&(t=c)}}return t}o=o||0;for(var u=e.length;u>0&&e[u-1][2]>o;u--)e[u]=e[u-1];e[u]=[n,i,o]},a.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return a.d(e,{a:e}),e},a.d=function(t,e){for(var n in e)a.o(e,n)&&!a.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},a.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),a.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},a.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},a.nmd=function(t){return t.paths=[],t.children||(t.children=[]),t},a.j=2943,function(){a.b=document.baseURI||self.location.href;var t={2943:0};a.O.j=function(e){return 0===t[e]};var e=function(e,n){var i,o,r=n[0],s=n[1],l=n[2],c=0;if(r.some((function(e){return 0!==t[e]}))){for(i in s)a.o(s,i)&&(a.m[i]=s[i]);if(l)var u=l(a)}for(e&&e(n);c<r.length;c++)o=r[c],a.o(t,o)&&t[o]&&t[o][0](),t[o]=0;return a.O(u)},n=self.webpackChunknextcloud=self.webpackChunknextcloud||[];n.forEach(e.bind(null,0)),n.push=e.bind(null,n.push.bind(n))}(),a.nc=void 0;var r=a.O(void 0,[7874],(function(){return a(82777)}));r=a.O(r)}(); -//# sourceMappingURL=core-main.js.map?v=597fc0a4d0a9a6f07234
\ No newline at end of file +!function(){var e,i={82777:function(e,i,o){"use strict";var a={};o.r(a),o.d(a,{deleteKey:function(){return B},getApps:function(){return x},getKeys:function(){return k},getValue:function(){return P},setValue:function(){return E}});var r={};o.r(r),o.d(r,{formatLinksPlain:function(){return dn},formatLinksRich:function(){return un},plainToRich:function(){return ln},richToPlain:function(){return cn}});var s={};o.r(s),o.d(s,{dismiss:function(){return fn},query:function(){return pn}});var l=o(19755),c=o.n(l),u=(o(28594),o(35666),o(35202),o(78595)),d=o(79753),A=o(25108),p={},f=[],h=o(18181),m=o(64024),g=o(25108),v={updatableNotification:null,getDefaultNotificationFunction:null,setDefault:function(t){this.getDefaultNotificationFunction=t},hide:function(t,e){h.ZP.isFunction(t)&&(e=t,t=void 0),t?(t.each((function(){c()(this)[0].toastify?c()(this)[0].toastify.hideToast():g.error("cannot hide toast because object is not set"),this===this.updatableNotification&&(this.updatableNotification=null)})),e&&e.call(),this.getDefaultNotificationFunction&&this.getDefaultNotificationFunction()):g.error("Missing argument $row in OC.Notification.hide() call, caller needs to be adjusted to only dismiss its own notification")},showHtml:function(t,e){(e=e||{}).isHTML=!0,e.timeout=e.timeout?e.timeout:m.Rl;var n=(0,m.PV)(t,e);return n.toastElement.toastify=n,c()(n.toastElement)},show:function(t,e){(e=e||{}).timeout=e.timeout?e.timeout:m.Rl;var n=(0,m.PV)(function(t){return t.toString().split("&").join("&").split("<").join("<").split(">").join(">").split('"').join(""").split("'").join("'")}(t),e);return n.toastElement.toastify=n,c()(n.toastElement)},showUpdate:function(t){return this.updatableNotification&&this.updatableNotification.hideToast(),this.updatableNotification=(0,m.PV)(t,{timeout:m.Rl}),this.updatableNotification.toastElement.toastify=this.updatableNotification,c()(this.updatableNotification.toastElement)},showTemporary:function(t,e){(e=e||{}).timeout=e.timeout||m.TN;var n=(0,m.PV)(t,e);return n.toastElement.toastify=n,c()(n.toastElement)},isHidden:function(){return!c()("#content").find(".toastify").length}},C=h.ZP.throttle((function(){v.showTemporary(t("core","Connection to server lost"))}),7e3,{trailing:!1}),b=!1,w={enableDynamicSlideToggle:function(){b=!0},showAppSidebar:function(t){(t||c()("#app-sidebar")).removeClass("disappear").show(),c()("#app-content").trigger(new(c().Event)("appresized"))},hideAppSidebar:function(t){(t||c()("#app-sidebar")).hide().addClass("disappear"),c()("#app-content").trigger(new(c().Event)("appresized"))}};function y(t,e,n){"post"!==t&&"delete"!==t||!Jt.PasswordConfirmation.requiresPasswordConfirmation()?(n=n||{},c().ajax({type:t.toUpperCase(),url:(0,d.generateOcsUrl)("apps/provisioning_api/api/v1/config/apps")+e,data:n.data||{},success:n.success,error:n.error})):Jt.PasswordConfirmation.requirePasswordConfirmation(_.bind(y,this,t,e,n))}function x(t){y("get","",t)}function k(t,e){y("get","/"+t,e)}function P(t,e,n,i){(i=i||{}).data={defaultValue:n},y("get","/"+t+"/"+e,i)}function E(t,e,n,i){(i=i||{}).data={value:n},y("post","/"+t+"/"+e,i)}function B(t,e,n){y("delete","/"+t+"/"+e,n)}var O=window.oc_appconfig||{},D={getValue:function(t,e,n,i){P(t,e,n,{success:i})},setValue:function(t,e,n){E(t,e,n)},getApps:function(t){x({success:t})},getKeys:function(t,e){k(t,{success:e})},deleteKey:function(t,e){B(t,e)}},T=o(25108),I=void 0!==window._oc_appswebroots&&window._oc_appswebroots,j=o(72316),z=o.n(j),S=o(76591),N=o(25108),U={create:"POST",update:"PROPPATCH",patch:"PROPPATCH",delete:"DELETE",read:"PROPFIND"};function M(t,e){if(h.ZP.isArray(t))return h.ZP.map(t,(function(t){return M(t,e)}));var n={href:t.href};return h.ZP.each(t.propStat,(function(t){if("HTTP/1.1 200 OK"===t.status)for(var i in t.properties){var o=i;i in e&&(o=e[i]),n[o]=t.properties[i]}})),n.id||(n.id=L(n.href)),n}function L(t){var e=t.indexOf("?");e>0&&(t=t.substr(0,e));var n,i=t.split("/");do{n=i[i.length-1],i.pop()}while(!n&&i.length>0);return n}function F(t){return t>=200&&t<=299}function R(t,e,n,i){return t.propPatch(e.url,function(t,e){var n,i={};for(n in t){var o=e[n],a=t[n];o||(N.warn('No matching DAV property for property "'+n),o=n),(h.ZP.isBoolean(a)||h.ZP.isNumber(a))&&(a=""+a),i[o]=a}return i}(n.changed,e.davProperties),i).then((function(t){F(t.status)?h.ZP.isFunction(e.success)&&e.success(n.toJSON()):h.ZP.isFunction(e.error)&&e.error(t)}))}var Q=z().noConflict();Object.assign(Q,{davCall:function(t,e){var n=new S.dav.Client({baseUrl:t.url,xmlNamespaces:h.ZP.extend({"DAV:":"d","http://owncloud.org/ns":"oc"},t.xmlNamespaces||{})});n.resolveUrl=function(){return t.url};var i=h.ZP.extend({"X-Requested-With":"XMLHttpRequest",requesttoken:OC.requestToken},t.headers);return"PROPFIND"===t.type?function(t,e,n,i){return t.propFind(e.url,h.ZP.values(e.davProperties)||[],e.depth,i).then((function(t){if(F(t.status)){if(h.ZP.isFunction(e.success)){var n=h.ZP.invert(e.davProperties),i=M(t.body,n);e.depth>0&&i.shift(),e.success(i)}}else h.ZP.isFunction(e.error)&&e.error(t)}))}(n,t,0,i):"PROPPATCH"===t.type?R(n,t,e,i):"MKCOL"===t.type?function(t,e,n,i){return t.request(e.type,e.url,i,null).then((function(o){F(o.status)?R(t,e,n,i):h.ZP.isFunction(e.error)&&e.error(o)}))}(n,t,e,i):function(t,e,n,i){return i["Content-Type"]="application/json",t.request(e.type,e.url,i,e.data).then((function(t){if(F(t.status)){if(h.ZP.isFunction(e.success)){if("PUT"===e.type||"POST"===e.type||"MKCOL"===e.type){var i=t.body||n.toJSON(),o=t.xhr.getResponseHeader("Content-Location");return"POST"===e.type&&o&&(i.id=L(o)),void e.success(i)}if(207===t.status){var a=h.ZP.invert(e.davProperties);e.success(M(t.body,a))}else e.success(t.body)}}else h.ZP.isFunction(e.error)&&e.error(t)}))}(n,t,e,i)},davSync:function(t){return function(e,n,i){var o={type:U[e]||e},a=n instanceof t.Collection;if("update"===e&&(n.hasInnerCollection?o.type="MKCOL":(n.usePUT||n.collection&&n.collection.usePUT)&&(o.type="PUT")),i.url||(o.url=h.ZP.result(n,"url")||function(){throw new Error('A "url" property or function must be specified')}()),null!=i.data||!n||"create"!==e&&"update"!==e&&"patch"!==e||(o.data=JSON.stringify(i.attrs||n.toJSON(i))),"PROPFIND"!==o.type&&(o.processData=!1),"PROPFIND"===o.type||"PROPPATCH"===o.type){var r=n.davProperties;!r&&n.model&&(r=n.model.prototype.davProperties),r&&(h.ZP.isFunction(r)?o.davProperties=r.call(n):o.davProperties=r),o.davProperties=h.ZP.extend(o.davProperties||{},i.davProperties),h.ZP.isUndefined(i.depth)&&(i.depth=a?1:0)}var s=i.error;i.error=function(t,e,n){i.textStatus=e,i.errorThrown=n,s&&s.call(i.context,t,e,n)};var l=i.xhr=t.davCall(h.ZP.extend(o,i),n);return n.trigger("request",n,l,i),l}}(Q)});var G=Q,H=o(65358),K=window._oc_config||{},Z=o(25108),Y=j.Model.extend({defaults:{fullName:"",lastMessage:"",actions:[],hasOneAction:!1,hasTwoActions:!1,hasManyActions:!1},initialize:function(){0===this.get("actions").length?this.set("hasOneAction",!0):1===this.get("actions").length?(this.set("hasTwoActions",!0),this.set("secondAction",this.get("actions")[0])):this.set("hasManyActions",!0);var e=this.get("fullName");this.get("avatar")&&e&&this.set("avatarLabel",t("core","Avatar of {fullName}",{fullName:e}))}}),q=j.Collection.extend({model:Y}),W=j.View.extend({_collection:void 0,_subViews:[],initialize:function(t){this._collection=t.collection},render:function(){var t=this;return t.$el.html(""),t._subViews=[],t._collection.forEach((function(e){var n=new J({model:e});n.render(),t.$el.append(n.$el),n.on("toggle:actionmenu",t._onChildActionMenuToggle,t),t._subViews.push(n)})),t},_onChildActionMenuToggle:function(t){this._subViews.forEach((function(e){e.trigger("parent:toggle:actionmenu",t)}))}}),J=j.View.extend({className:"contact",_template:void 0,_model:void 0,_actionMenuShown:!1,events:{"click .icon-more":"_onToggleActionsMenu"},contactTemplate:o(10944),template:function(t){return this.contactTemplate(t)},initialize:function(t){this._model=t.model,this.on("parent:toggle:actionmenu",this._onOtherActionMenuOpened,this)},render:function(){return this.$el.html(this.template({contact:this._model.toJSON()})),this.delegateEvents(),this.$("div.avatar").imageplaceholder(this._model.get("fullName")),this.$(".top-action").tooltip({placement:"left"}),this.$(".second-action").tooltip({placement:"left"}),this},_onToggleActionsMenu:function(){this._actionMenuShown=!this._actionMenuShown,this._actionMenuShown?this.$(".menu").show():this.$(".menu").hide(),this.trigger("toggle:actionmenu",this.$el)},_onOtherActionMenuOpened:function(t){this.$el.is(t)||(this._actionMenuShown=!1,this.$(".menu").hide())}}),V=j.View.extend({_loadingTemplate:void 0,_errorTemplate:void 0,_contentTemplate:void 0,_contactsTemplate:void 0,_contacts:void 0,_searchTerm:"",events:{"input #contactsmenu-search":"_onSearch"},templates:{loading:o(95386),error:o(20421),menu:o(66115),list:o(34083)},_onSearch:h.ZP.debounce((function(t){var e=this.$("#contactsmenu-search").val();e!==this._searchTerm&&(this.trigger("search",this.$("#contactsmenu-search").val()),this._searchTerm=e)}),700),loadingTemplate:function(t){return this.templates.loading(t)},errorTemplate:function(e){return this.templates.error(h.ZP.extend({couldNotLoadText:t("core","Could not load your contacts")},e))},contentTemplate:function(e){return this.templates.menu(h.ZP.extend({searchContactsText:t("core","Search contacts …")},e))},contactsTemplate:function(e){return this.templates.list(h.ZP.extend({noContactsFoundText:t("core","No contacts found"),showAllContactsText:t("core","Show all contacts …"),contactsAppMgmtText:t("core","Install the Contacts app")},e))},initialize:function(t){this.options=t},showLoading:function(t){this.render(),this._contacts=void 0,this.$(".content").html(this.loadingTemplate({loadingText:t}))},showError:function(){this.render(),this._contacts=void 0,this.$(".content").html(this.errorTemplate())},showContacts:function(t,e){this._contacts=t.contacts,this.render({contacts:t.contacts});var n=new W({collection:t.contacts});n.render(),this.$(".content").html(this.contactsTemplate({contacts:t.contacts,searchTerm:e,contactsAppEnabled:t.contactsAppEnabled,contactsAppURL:Jt.generateUrl("/apps/contacts"),canInstallApp:Jt.isUserAdmin(),contactsAppMgmtURL:Jt.generateUrl("/settings/apps/social/contacts")})),this.$("#contactsmenu-contacts").html(n.$el)},render:function(t){var e=this.$("#contactsmenu-search").val();return this.$el.html(this.contentTemplate(t)),this.$("#contactsmenu-search").val(e),this.$("#contactsmenu-search").focus(),this}}),X=function(t){this.initialize(t)};X.prototype={$el:void 0,_view:void 0,_contactsPromise:void 0,initialize:function(t){this.$el=c()(t.el),this._view=new V({el:this.$el}),this._view.on("search",(function(t){this.loadContacts(t)}),this)},_getContacts:function(t){var e=Jt.generateUrl("/contactsmenu/contacts");return Promise.resolve(c().ajax(e,{method:"POST",data:{filter:t}}))},loadContacts:function(e){var n=this;return n._contactsPromise||(n._contactsPromise=n._getContacts(e)),h.ZP.isUndefined(e)||""===e?n._view.showLoading(t("core","Loading your contacts …")):n._view.showLoading(t("core","Looking for {term} …",{term:e})),n._contactsPromise.then((function(t){t.contacts=new q(t.contacts),n._view.showContacts(t,e)}),(function(t){n._view.showError(),Z.error("There was an error loading your contacts",t)})).then((function(){delete n._contactsPromise})).catch(Z.error.bind(this))}};var $=X,tt=document.getElementsByTagName("head")[0].getAttribute("data-user"),et=document.getElementsByTagName("head")[0].getAttribute("data-user-displayname"),nt=void 0!==tt&&tt,it=o(25108);function ot(t){return ot="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},ot(t)}function at(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,(void 0,o=function(t,e){if("object"!==ot(t)||null===t)return t;var n=t[Symbol.toPrimitive];if(void 0!==n){var i=n.call(t,e);if("object"!==ot(i))return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(i.key,"string"),"symbol"===ot(o)?o:String(o)),i)}var o}function rt(t,e,n){return e&&at(t.prototype,e),n&&at(t,n),Object.defineProperty(t,"prototype",{writable:!1}),t}var st={Search:rt((function t(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),it.warn("OCA.Search is deprecated. Please use the unified search API instead")}))},lt=function(t){return"click"===t.type||"keydown"===t.type&&"Enter"===t.key},ct=o(25108);function ut(t,e,n,i,o,a,r){try{var s=t[a](r),l=s.value}catch(t){return void n(t)}s.done?e(l):Promise.resolve(l).then(i,o)}function dt(t){return function(){var e=this,n=arguments;return new Promise((function(i,o){var a=t.apply(e,n);function r(t){ut(a,i,o,r,s,"next",t)}function s(t){ut(a,i,o,r,s,"throw",t)}r(void 0)}))}}function At(t){return At="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},At(t)}var pt,ft,ht,mt,gt={YES_NO_BUTTONS:70,OK_BUTTONS:71,FILEPICKER_TYPE_CHOOSE:1,FILEPICKER_TYPE_MOVE:2,FILEPICKER_TYPE_COPY:3,FILEPICKER_TYPE_COPY_MOVE:4,FILEPICKER_TYPE_CUSTOM:5,dialogsCounter:0,alert:function(t,e,n,i){this.message(t,e,"alert",gt.OK_BUTTON,n,i)},info:function(t,e,n,i){this.message(t,e,"info",gt.OK_BUTTON,n,i)},confirm:function(t,e,n,i){return this.message(t,e,"notice",gt.YES_NO_BUTTONS,n,i)},confirmDestructive:function(t,e,n,i,o){return this.message(t,e,"none",n,i,void 0===o||o)},confirmHtml:function(t,e,n,i){return this.message(t,e,"notice",gt.YES_NO_BUTTONS,n,i,!0)},prompt:function(e,n,i,o,a,r){return c().when(this._getMessageTemplate()).then((function(s){var l="oc-dialog-"+gt.dialogsCounter+"-content",u="#"+l,d=s.octemplate({dialog_name:l,title:n,message:e,type:"notice"}),A=c()("<input/>");A.attr("type",r?"password":"text").attr("id",l+"-input").attr("placeholder",a);var p=c()("<label/>").attr("for",l+"-input").text(a+": ");d.append(p),d.append(A),void 0===o&&(o=!1),c()("body").append(d),void 0!==i&&(i=h.ZP.once(i));var f=[{text:t("core","No"),click:function(){void 0!==i&&i(!1,A.val()),c()(u).ocdialog("close")}},{text:t("core","Yes"),click:function(){void 0!==i&&i(!0,A.val()),c()(u).ocdialog("close")},defaultButton:!0}];c()(u).ocdialog({closeOnEscape:!0,modal:o,buttons:f,close:function(){void 0!==i&&i(!1,A.val())}}),A.focus(),gt.dialogsCounter++}))},filepicker:function(e,n,i,o,a,r,s,l){var u=this;if(this.filepicker.sortField="name",this.filepicker.sortOrder="asc",!this.filepicker.loading){void 0===r&&(r=this.FILEPICKER_TYPE_CHOOSE);var d=t("core","No files in here"),A=t("files","New folder");r!==this.FILEPICKER_TYPE_COPY&&r!==this.FILEPICKER_TYPE_MOVE&&r!==this.FILEPICKER_TYPE_COPY_MOVE||(d=t("core","No more subfolders in here")),this.filepicker.loading=!0,this.filepicker.filesClient=st.Sharing&&st.Sharing.PublicApp&&st.Sharing.PublicApp.fileList?st.Sharing.PublicApp.fileList.filesClient:Jt.Files.getClient(),this.filelist=null,s=s||"",l=Object.assign({allowDirectoryChooser:!1},l),c().when(this._getFilePickerTemplate()).then((function(p){var f,h;u.filepicker.loading=!1,u.$filePicker&&u.$filePicker.ocdialog("close"),null==o&&(o=[]),"string"==typeof o&&(o=[o]),u.$filePicker=p.octemplate({dialog_name:"oc-dialog-filepicker-content",title:e,emptytext:d,newtext:A,nameCol:t("core","Name"),sizeCol:t("core","Size"),modifiedCol:t("core","Modified")}).data("path",s).data("multiselect",i).data("mimetype",o).data("allowDirectoryChooser",l.allowDirectoryChooser),"function"==typeof l.filter&&u.$filePicker.data("filter",l.filter),void 0===a&&(a=!1),void 0===i&&(i=!1),c()(null!==(f=null===(h=l)||void 0===h?void 0:h.target)&&void 0!==f?f:"body").prepend(u.$filePicker),u.$showGridView=c()("button#picker-showgridview"),u.$showGridView.on("click keydown",(function(t){lt(t)&&u._onGridviewChange()})),u._getGridSettings();var m=u.$filePicker.find(".actions.creatable .button-add");r!==u.FILEPICKER_TYPE_CHOOSE||l.allowDirectoryChooser||u.$filePicker.find(".actions.creatable").hide(),m.on("focus",(function(){u.$filePicker.ocdialog("setEnterCallback",(function(t){t.stopImmediatePropagation(),t.preventDefault(),m.click()}))})),m.on("blur",(function(){u.$filePicker.ocdialog("unsetEnterCallback")})),Jt.registerMenu(m,u.$filePicker.find(".menu"),(function(){v.tooltip("hide"),v.focus(),u.$filePicker.ocdialog("setEnterCallback",(function(t){t.stopImmediatePropagation(),t.preventDefault(),u.$filePicker.submit()}));var t=v.val(),e=t.lastIndexOf(".");-1===e&&(e=t.length),v.selectRange(0,e)}));var g=u.$filePicker.find(".filenameform"),v=g.find("input[type='text']"),C=g.find("input[type='submit']");v.on("keydown",(function(t){lt(t)&&(t.stopImmediatePropagation(),t.preventDefault(),g.submit())})),C.on("click",(function(t){t.stopImmediatePropagation(),t.preventDefault(),g.submit()}));g.on("submit",(function(e){if(e.stopPropagation(),e.preventDefault(),function(){var e=v.val();try{if(function(e){var n=e.trim();if("."===n||".."===n)throw t("files",'"{name}" is an invalid file name.',{name:e});if(0===n.length)throw t("files","File name cannot be empty.");if(-1!==n.indexOf("/"))throw t("files",'"/" is not allowed inside a file name.');if(n.match(Jt.config.blacklist_files_regex))throw t("files",'"{name}" is not an allowed filetype',{name:e});return!0}(e)){if(u.filelist.find((function(t){return t.name===this}),e))throw t("files","{newName} already exists",{newName:e},void 0,{escape:!1});return!0}}catch(t){v.attr("title",t),v.tooltip({placement:"right",trigger:"manual",container:".newFolderMenu"}),v.tooltip("_fixTitle"),v.tooltip("show"),v.addClass("error")}return!1}()){var n=v.val();u.filepicker.filesClient.createDirectory(u.$filePicker.data("path")+"/"+n).always((function(t){u._fillFilePicker(u.$filePicker.data("path")+"/"+n,r)})),Jt.hideMenus(),u.$filePicker.ocdialog("unsetEnterCallback"),u.$filePicker.click(),v.val(A)}})),v.on("input",(function(t){v.tooltip("hide")})),u.$filePicker.ready((function(){u.$fileListHeader=u.$filePicker.find(".filelist thead tr"),u.$filelist=u.$filePicker.find(".filelist tbody"),u.$filelistContainer=u.$filePicker.find(".filelist-container"),u.$dirTree=u.$filePicker.find(".dirtree"),u.$dirTree.on("click keydown","div:not(:last-child)",u,(function(t){lt(t)&&u._handleTreeListSelect(t,r)})),u.$filelist.on("click keydown","tr",(function(t){lt(t)&&u._handlePickerClick(t,c()(this),r)})),u.$fileListHeader.on("click keydown","a",(function(t){if(lt(t)){var e=u.$filePicker.data("path");u.filepicker.sortField=c()(t.currentTarget).data("sort"),u.filepicker.sortOrder="asc"===u.filepicker.sortOrder?"desc":"asc",u._fillFilePicker(e,r)}})),u._fillFilePicker(s,r)}));var b=function(t){if(void 0!==n){var e;if(!0===i)e=[],u.$filelist.find("tr.filepicker_element_selected").each((function(t,n){e.push(u.$filePicker.data("path")+"/"+c()(n).data("entryname"))}));else{e=u.$filePicker.data("path");var o=u.$filelist.find("tr.filepicker_element_selected").data("entryname");o&&(e+="/"+o)}n(e,t),u.$filePicker.ocdialog("close")}},w=[];r===gt.FILEPICKER_TYPE_CHOOSE?w.push({text:t("core","Choose"),click:function(){b(gt.FILEPICKER_TYPE_CHOOSE)},defaultButton:!0}):r===gt.FILEPICKER_TYPE_CUSTOM?l.buttons.forEach((function(t){w.push({text:t.text,click:function(){b(t.type)},defaultButton:t.defaultButton})})):(r!==gt.FILEPICKER_TYPE_COPY&&r!==gt.FILEPICKER_TYPE_COPY_MOVE||w.push({text:t("core","Copy"),click:function(){b(gt.FILEPICKER_TYPE_COPY)},defaultButton:!1}),r!==gt.FILEPICKER_TYPE_MOVE&&r!==gt.FILEPICKER_TYPE_COPY_MOVE||w.push({text:t("core","Move"),click:function(){b(gt.FILEPICKER_TYPE_MOVE)},defaultButton:!0})),u.$filePicker.ocdialog({closeOnEscape:!0,width:600,height:500,modal:a,buttons:w,style:{buttons:"aside"},close:function(){try{c()(this).ocdialog("destroy").remove()}catch(t){}u.$filePicker=null}});var y=u.$filePicker.closest(".oc-dialog").find(".primary");-1!==u.$filePicker.data("mimetype").indexOf("httpd/unix-directory")||u.$filePicker.data("allowDirectoryChooser")?y.prop("disabled",!1):y.prop("disabled",!0)})).fail((function(e,n){u.filepicker.loading=!1,0!==e&&alert(t("core","Error loading file picker template: {error}",{error:n}))}))}},message:function(e,n,i,o,a,r,s){return c().when(this._getMessageTemplate()).then((function(l){var u="oc-dialog-"+gt.dialogsCounter+"-content",d="#"+u,A=l.octemplate({dialog_name:u,title:n,message:e,type:i},s?{escapeFunction:""}:{});void 0===r&&(r=!1),c()("body").append(A);var p=[];switch(o){case gt.YES_NO_BUTTONS:p=[{text:t("core","No"),click:function(){void 0!==a&&a(!1),c()(d).ocdialog("close")}},{text:t("core","Yes"),click:function(){void 0!==a&&a(!0),c()(d).ocdialog("close")},defaultButton:!0}];break;case gt.OK_BUTTON:p[0]={text:t("core","OK"),click:function(){c()(d).ocdialog("close"),void 0!==a&&a()},defaultButton:!0};break;default:"object"===At(o)&&o.type===gt.YES_NO_BUTTONS&&(p=[{text:o.cancel||t("core","No"),click:function(){void 0!==a&&a(!1),c()(d).ocdialog("close")}},{text:o.confirm||t("core","Yes"),click:function(){void 0!==a&&a(!0),c()(d).ocdialog("close")},defaultButton:!0,classes:o.confirmClasses}])}c()(d).ocdialog({closeOnEscape:!0,closeCallback:function(){a&&a(!1)},modal:r,buttons:p}),gt.dialogsCounter++})).fail((function(i,o){0===i?alert(n+": "+e):alert(t("core","Error loading message template: {error}",{error:o}))}))},_fileexistsshown:!1,fileexists:function(e,i,o,a){var r=this,s=new(c().Deferred),l=function(t,e,n,i,o){i=Math.round(i),o=Math.round(o);for(var a=t.getContext("2d").getImageData(0,0,e,n),r=t.getContext("2d").getImageData(0,0,i,o),s=a.data,l=r.data,c=e/i,u=n/o,d=Math.ceil(c/2),A=Math.ceil(u/2),p=0;p<o;p++)for(var f=0;f<i;f++){for(var h=4*(f+p*i),m=0,g=0,v=0,C=0,b=0,w=0,y=0,x=(p+.5)*u,k=Math.floor(p*u);k<(p+1)*u;k++)for(var P=Math.abs(x-(k+.5))/A,E=(f+.5)*c,B=P*P,O=Math.floor(f*c);O<(f+1)*c;O++){var D=Math.abs(E-(O+.5))/d,T=Math.sqrt(B+D*D);T>=-1&&T<=1&&(m=2*T*T*T-3*T*T+1)>0&&(y+=m*s[3+(D=4*(O+k*e))],v+=m,s[D+3]<255&&(m=m*s[D+3]/250),C+=m*s[D],b+=m*s[D+1],w+=m*s[D+2],g+=m)}l[h]=C/g,l[h+1]=b/g,l[h+2]=w/g,l[h+3]=y/v}t.getContext("2d").clearRect(0,0,Math.max(e,i),Math.max(n,o)),t.width=i,t.height=o,t.getContext("2d").putImageData(r,0,0)},u=function(n,i,o){var a=n.find(".template").clone().removeClass("template").addClass("conflict"),r=a.find(".original"),s=a.find(".replacement");a.data("data",e),a.find(".filename").text(i.name),r.find(".size").text(Jt.Util.humanFileSize(i.size)),r.find(".mtime").text(Jt.Util.formatDate(i.mtime)),o.size&&o.lastModified&&(s.find(".size").text(Jt.Util.humanFileSize(o.size)),s.find(".mtime").text(Jt.Util.formatDate(o.lastModified)));var u=i.directory+"/"+i.name,d={file:u,x:96,y:96,c:i.etag,forceIcon:0},A=Files.generatePreviewUrl(d);A=A.replace(/'/g,"%27"),r.find(".icon").css({"background-image":"url('"+A+"')"}),function(t){var e=new(c().Deferred),n=t.type&&t.type.split("/").shift();if(window.FileReader&&"image"===n){var i=new FileReader;i.onload=function(t){var n=new Blob([t.target.result]);window.URL=window.URL||window.webkitURL;var i=window.URL.createObjectURL(n),o=new Image;o.src=i,o.onload=function(){var t,n,i,a,r,s,c,u=(t=o,r=document.createElement("canvas"),s=t.width,c=t.height,s>c?(i=0,n=(s-c)/2):(i=(c-s)/2,n=0),a=Math.min(s,c),r.width=a,r.height=a,r.getContext("2d").drawImage(t,n,i,a,a,0,0,a,a),l(r,a,a,96,96),r.toDataURL("image/png",.7));e.resolve(u)}},i.readAsArrayBuffer(t)}else e.reject();return e}(o).then((function(t){s.find(".icon").css("background-image","url("+t+")")}),(function(){u=Jt.MimeType.getIconUrl(o.type),s.find(".icon").css("background-image","url("+u+")")}));var p=n.find(".conflict").length;r.find("input:checkbox").attr("id","checkbox_original_"+p),s.find("input:checkbox").attr("id","checkbox_replacement_"+p),n.append(a),o.lastModified>i.mtime?s.find(".mtime").css("font-weight","bold"):o.lastModified<i.mtime&&r.find(".mtime").css("font-weight","bold"),o.size&&o.size>i.size?s.find(".size").css("font-weight","bold"):o.size&&o.size<i.size&&r.find(".size").css("font-weight","bold"),"readonly"===i.status&&(r.addClass("readonly").find('input[type="checkbox"]').prop("checked",!0).prop("disabled",!0),r.find(".message").text(t("core","read-only")))},d="oc-dialog-fileexists-content",A="#"+d;if(this._fileexistsshown){var p=c()(A+" .conflicts");u(p,i,o);var f=c()(A+" .conflict").length,h=n("core","{count} file conflict","{count} file conflicts",f,{count:f});c()(A).parent().children(".oc-dialog-title").text(h),c()(window).trigger("resize"),s.resolve()}else this._fileexistsshown=!0,c().when(this._getFileExistsTemplate()).then((function(n){var l=t("core","One file conflict"),p=n.octemplate({dialog_name:d,title:l,type:"fileexists",allnewfiles:t("core","New Files"),allexistingfiles:t("core","Already existing files"),why:t("core","Which files do you want to keep?"),what:t("core","If you select both versions, the copied file will have a number added to its name.")});if(c()("body").append(p),i&&o){var f=p.find(".conflicts");u(f,i,o)}var h=[{text:t("core","Cancel"),classes:"cancel",click:function(){void 0!==a.onCancel&&a.onCancel(e),c()(A).ocdialog("close")}},{text:t("core","Continue"),classes:"continue",click:function(){void 0!==a.onContinue&&a.onContinue(c()(A+" .conflict")),c()(A).ocdialog("close")}}];c()(A).ocdialog({width:500,closeOnEscape:!0,modal:!0,buttons:h,closeButton:null,close:function(){r._fileexistsshown=!1;try{c()(this).ocdialog("destroy").remove()}catch(t){}}}),c()(A).css("height","auto");var m=p.closest(".oc-dialog").find("button.continue");function g(){var t=p.find(".conflicts .checkbox:checked").length;m.prop("disabled",0===t)}m.prop("disabled",!0),c()(A).find(".allnewfiles").on("click",(function(){c()(A).find('.conflict .replacement input[type="checkbox"]').prop("checked",c()(this).prop("checked"))})),c()(A).find(".allexistingfiles").on("click",(function(){c()(A).find('.conflict .original:not(.readonly) input[type="checkbox"]').prop("checked",c()(this).prop("checked"))})),c()(A).find(".conflicts").on("click",".replacement,.original:not(.readonly)",(function(){var t=c()(this).find('input[type="checkbox"]');t.prop("checked",!t.prop("checked"))})),c()(A).find(".conflicts").on("click",'.replacement input[type="checkbox"],.original:not(.readonly) input[type="checkbox"]',(function(){var t=c()(this);t.prop("checked",!t.prop("checked"))})),c()(A).on("click",".replacement,.allnewfiles",(function(){var e=c()(A).find('.conflict .replacement input[type="checkbox"]:checked').length;e===c()(A+" .conflict").length?(c()(A).find(".allnewfiles").prop("checked",!0),c()(A).find(".allnewfiles + .count").text(t("core","(all selected)"))):e>0?(c()(A).find(".allnewfiles").prop("checked",!1),c()(A).find(".allnewfiles + .count").text(t("core","({count} selected)",{count:e}))):(c()(A).find(".allnewfiles").prop("checked",!1),c()(A).find(".allnewfiles + .count").text("")),g()})),c()(A).on("click",".original,.allexistingfiles",(function(){var e=c()(A).find('.conflict .original input[type="checkbox"]:checked').length;e===c()(A+" .conflict").length?(c()(A).find(".allexistingfiles").prop("checked",!0),c()(A).find(".allexistingfiles + .count").text(t("core","(all selected)"))):e>0?(c()(A).find(".allexistingfiles").prop("checked",!1),c()(A).find(".allexistingfiles + .count").text(t("core","({count} selected)",{count:e}))):(c()(A).find(".allexistingfiles").prop("checked",!1),c()(A).find(".allexistingfiles + .count").text("")),g()})),s.resolve()})).fail((function(){s.reject(),alert(t("core","Error loading file exists template"))}));return s.promise()},_getGridSettings:function(){var e=this;c().get(Jt.generateUrl("/apps/files/api/v1/showgridview"),(function(n){e.$showGridView.removeClass("icon-toggle-filelist icon-toggle-pictures").addClass(n.gridview?"icon-toggle-filelist":"icon-toggle-pictures"),e.$showGridView.attr("aria-label",n.gridview?t("files","Show list view"):t("files","Show grid view")),c()(".list-container").toggleClass("view-grid",n.gridview)}))},_onGridviewChange:function(){var e=this.$showGridView.hasClass("icon-toggle-filelist");Jt.currentUser&&c().post(Jt.generateUrl("/apps/files/api/v1/showgridview"),{show:!e}),this.$showGridView.removeClass("icon-toggle-filelist icon-toggle-pictures").addClass(e?"icon-toggle-pictures":"icon-toggle-filelist"),this.$showGridView.attr("aria-label",e?t("files","Show grid view"):t("files","Show list view")),this.$filePicker.find(".list-container").toggleClass("view-grid",!e)},_getFilePickerTemplate:function(){var t=c().Deferred();if(this.$filePickerTemplate)t.resolve(this.$filePickerTemplate);else{var e=this;c().get(Jt.filePath("core","templates","filepicker.html"),(function(n){e.$filePickerTemplate=c()(n),e.$listTmpl=e.$filePickerTemplate.find(".filelist tbody tr:first-child").detach(),t.resolve(e.$filePickerTemplate)})).fail((function(e,n,i){t.reject(e.status,i)}))}return t.promise()},_getMessageTemplate:function(){var t=c().Deferred();if(this.$messageTemplate)t.resolve(this.$messageTemplate);else{var e=this;c().get(Jt.filePath("core","templates","message.html"),(function(n){e.$messageTemplate=c()(n),t.resolve(e.$messageTemplate)})).fail((function(e,n,i){t.reject(e.status,i)}))}return t.promise()},_getFileExistsTemplate:function(){var t=c().Deferred();if(this.$fileexistsTemplate)t.resolve(this.$fileexistsTemplate);else{var e=this;c().get(Jt.filePath("files","templates","fileexists.html"),(function(n){e.$fileexistsTemplate=c()(n),t.resolve(e.$fileexistsTemplate)})).fail((function(){t.reject()}))}return t.promise()},_fillFilePicker:(pt=dt(regeneratorRuntime.mark((function e(n,i){var o,a,r,s,l,u,d,A;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return o=this,this.$filelist.empty(),this.$filePicker.find(".emptycontent").hide(),this.$filelistContainer.addClass("icon-loading"),this.$filePicker.data("path",n),a=this.$filePicker.data("mimetype"),r=this.$filePicker.data("filter"),"string"==typeof a&&(a=[a]),o.$fileListHeader.find(".sort-indicator").addClass("hidden").removeClass("icon-triangle-n").removeClass("icon-triangle-s"),o.$fileListHeader.find("[data-sort="+o.filepicker.sortField+"] .sort-indicator").removeClass("hidden"),"asc"===o.filepicker.sortOrder?o.$fileListHeader.find("[data-sort="+o.filepicker.sortField+"] .sort-indicator").addClass("icon-triangle-n"):o.$fileListHeader.find("[data-sort="+o.filepicker.sortField+"] .sort-indicator").addClass("icon-triangle-s"),s=function(){var t=dt(regeneratorRuntime.mark((function t(e){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",o.filepicker.filesClient.getFolderContents(e).then((function(t,e){return e})));case 1:case"end":return t.stop()}}),t)})));return function(e){return t.apply(this,arguments)}}(),e.prev=12,e.next=15,s(n);case 15:l=e.sent,e.next=26;break;case 18:return e.prev=18,e.t0=e.catch(12),ct.error("Requested path does not exists, falling back to root"),e.next=23,s("/");case 23:l=e.sent,this.$filePicker.data("path","/"),this._changeButtonsText(i,"");case 26:o.filelist=l,a&&a.length>0&&-1===a.indexOf("*")&&(l=l.filter((function(t){return"dir"===t.type||-1!==a.indexOf(t.mimetype)}))),r&&(l=l.filter(r)),null===(u=document.getElementById("showHiddenFiles"))||"1"===u.value||(l=l.filter((function(t){return!t.name.startsWith(".")}))),A=(d={name:function(t,e){return"dir"===t.type&&"dir"!==e.type?-1:"dir"!==t.type&&"dir"===e.type?1:Jt.Util.naturalSortCompare(t.name,e.name)},size:function(t,e){return t.size-e.size},mtime:function(t,e){return t.mtime-e.mtime}})[o.filepicker.sortField]||d.name,l=l.sort((function(t,e){var n=function(t){return t.tags&&t.tags.indexOf(Jt.TAG_FAVORITE)>=0};return n(t)&&!n(e)?-1:!n(t)&&n(e)?1:"asc"===o.filepicker.sortOrder?A(t,e):-A(t,e)})),o._fillSlug(),0===l.length?(o.$filePicker.find(".emptycontent").show(),o.$fileListHeader.hide()):(o.$filePicker.find(".emptycontent").hide(),o.$fileListHeader.show()),o.$filelist.empty(),c().each(l,(function(e,i){var a,r;if(i.isEncrypted&&"httpd/unix-directory"===i.mimetype?i.icon=Jt.MimeType.getIconUrl("dir-encrypted"):i.icon=Jt.MimeType.getIconUrl(i.mimetype),void 0!==i.size&&i.size>=0?(a=Jt.Util.humanFileSize(parseInt(i.size,10),!0),r=Math.round(160-Math.pow(i.size/1048576,2))):(a=t("files","Pending"),r=80),i.name.length>=10)var s=Math.min(Math.floor(i.name.length/2),10),l=i.name.substr(0,i.name.length-s),u=i.name.substr(i.name.length-s);else l=i.name,u="";var d=o.$listTmpl.octemplate({type:i.type,dir:n,filename:i.name,filename1:l,filename2:u,date:Jt.Util.relativeModifiedDate(i.mtime),size:a,sizeColor:r,icon:i.icon});if("file"===i.type){var A={file:n+"/"+i.name,x:100,y:100},p=new Image,f=Jt.generateUrl("/core/preview.png?")+c().param(A);p.onload=function(){p.width>5&&d.find("td.filename").attr("style","background-image:url("+f+")")},p.src=f}o.$filelist.append(d)})),o.$filelistContainer.removeClass("icon-loading");case 40:case"end":return e.stop()}}),e,this,[[12,18]])}))),function(t,e){return pt.apply(this,arguments)}),_fillSlug:function(){var e=this.$dirTree.find(".actions.creatable").detach();this.$dirTree.empty();var n=this;n.$dirTree.append(e);var i=this.$filePicker.data("path"),o=c()('<div data-dir="{dir}" tabindex="0"><a>{name}</a></div>').addClass("crumb");if(i){var a=i.split("/");c().each(a,(function(t,e){if(""===(e=a.pop()))return!1;n.$dirTree.prepend(o.octemplate({dir:a.join("/")+"/"+e,name:e}))}))}o.octemplate({dir:"",name:t("core","Home")},{escapeFunction:null}).prependTo(this.$dirTree)},_handleTreeListSelect:function(t,e){var n=t.data,i=c()(t.target).closest(".crumb").data("dir");n._fillFilePicker(i,e);var o=t.target.closest(".oc-dialog"),a=c()(".primary",o);this._changeButtonsText(e,i.split(/[/]+/).pop()),-1!==this.$filePicker.data("mimetype").indexOf("httpd/unix-directory")||this.$filePicker.data("allowDirectoryChooser")?a.prop("disabled",!1):a.prop("disabled",!0)},_handlePickerClick:function(t,e,n){var i=this.$filePicker.closest(".oc-dialog").find(".primary");"file"===e.data("type")?(!0===this.$filePicker.data("multiselect")&&t.ctrlKey||this.$filelist.find(".filepicker_element_selected").removeClass("filepicker_element_selected"),e.toggleClass("filepicker_element_selected"),i.prop("disabled",!1)):"dir"===e.data("type")&&(this._fillFilePicker(this.$filePicker.data("path")+"/"+e.data("entryname"),n),this._changeButtonsText(n,e.data("entryname")),-1!==this.$filePicker.data("mimetype").indexOf("httpd/unix-directory")||this.$filePicker.data("allowDirectoryChooser")?i.prop("disabled",!1):i.prop("disabled",!0))},_changeButtonsText:function(e,n){var i=""===n?t("core","Copy"):t("core","Copy to {folder}",{folder:n}),o=""===n?t("core","Move"):t("core","Move to {folder}",{folder:n}),a=c()(".oc-dialog-buttonrow button");switch(e){case this.FILEPICKER_TYPE_CHOOSE:case this.FILEPICKER_TYPE_CUSTOM:break;case this.FILEPICKER_TYPE_COPY:a.text(i);break;case this.FILEPICKER_TYPE_MOVE:a.text(o);break;case this.FILEPICKER_TYPE_COPY_MOVE:a.eq(0).text(i),a.eq(1).text(o)}}},vt=gt,Ct=(ft=document,ht=u.j8,mt=ft.getElementsByTagName("head")[0].getAttribute("data-requesttoken"),{getToken:function(){return mt},setToken:function(t){ht("csrf-token-update",{token:mt=t})}}),bt=Ct.getToken,wt=Ct.setToken,yt=function t(e,n){var i,o,a="";if(this.typelessListeners=[],this.closed=!1,this.listeners={},n)for(i in n)a+=i+"="+encodeURIComponent(n[i])+"&";if(a+="requesttoken="+encodeURIComponent(bt()),this.useFallBack||"undefined"==typeof EventSource){var r="oc_eventsource_iframe_"+t.iframeCount;t.fallBackSources[t.iframeCount]=this,this.iframe=c()("<iframe></iframe>"),this.iframe.attr("id",r),this.iframe.hide(),o="&",-1===e.indexOf("?")&&(o="?"),this.iframe.attr("src",e+o+"fallback=true&fallback_id="+t.iframeCount+"&"+a),c()("body").append(this.iframe),this.useFallBack=!0,t.iframeCount++}else o="&",-1===e.indexOf("?")&&(o="?"),this.source=new EventSource(e+o+a),this.source.onmessage=function(t){for(var e=0;e<this.typelessListeners.length;e++)this.typelessListeners[e](JSON.parse(t.data))}.bind(this);this.listen("__internal__",function(t){"close"===t&&this.close()}.bind(this))};yt.fallBackSources=[],yt.iframeCount=0,yt.fallBackCallBack=function(t,e,n){yt.fallBackSources[t].fallBackCallBack(e,n)},yt.prototype={typelessListeners:[],iframe:null,listeners:{},useFallBack:!1,fallBackCallBack:function(t,e){var n;if(!this.closed)if(t){if(void 0!==this.listeners.done)for(n=0;n<this.listeners[t].length;n++)this.listeners[t][n](e)}else for(n=0;n<this.typelessListeners.length;n++)this.typelessListeners[n](e)},lastLength:0,listen:function(t,e){e&&e.call&&(t?this.useFallBack?(this.listeners[t]||(this.listeners[t]=[]),this.listeners[t].push(e)):this.source.addEventListener(t,(function(t){void 0!==t.data?e(JSON.parse(t.data)):e("")}),!1):this.typelessListeners.push(e))},close:function(){this.closed=!0,void 0!==this.source&&this.source.close()}};var xt=yt,kt=o(42515),Pt=o(25108),Et=null,Bt=null,Ot=function(t){if(Et){var e=Et;Et.trigger(new(c().Event)("beforeHide")),Et.slideUp(50,(function(){e.trigger(new(c().Event)("afterHide")),t&&t.apply(this,arguments)}))}c()(".menutoggle").attr("aria-expanded",!1),Bt&&Bt.attr("aria-expanded",!1),c()(".openedMenu").removeClass("openedMenu"),Et=null,Bt=null},Dt=!!window._oc_isadmin,Tt=o(86834),It=o.n(Tt),jt=o(31352),_t={load:jt.XJ,register:jt.z2,_unregister:jt.ET,translate:jt.Iu,translatePlural:jt.uN};It().registerHelper("t",(function(t,e){return(0,jt.Iu)(t,e)}));var zt={startSaving:function(e){this.startAction(e,t("core","Saving …"))},startAction:function(t,e){c()(t).text(e).removeClass("success").removeClass("error").stop(!0,!0).show()},finishedSaving:function(t,e){this.finishedAction(t,e)},finishedAction:function(t,e){"success"===e.status?this.finishedSuccess(t,e.data.message):this.finishedError(t,e.data.message)},finishedSuccess:function(t,e){c()(t).text(e).addClass("success").removeClass("error").stop(!0,!0).delay(3e3).fadeOut(900).show()},finishedError:function(t,e){c()(t).text(e).addClass("error").removeClass("success").show()}},St=o(30381),Nt=o.n(St),Ut={callback:null,pageLoadTime:null,init:function(){c()(".password-confirm-required").on("click",h.ZP.bind(this.requirePasswordConfirmation,this)),this.pageLoadTime=Nt().now()},requiresPasswordConfirmation:function(){var t=this.pageLoadTime-1e3*window.nc_pageLoad,e=Nt().now()-(t+1e3*window.nc_lastLogin);return window.backendAllowsPasswordConfirmation&&e>18e5},requirePasswordConfirmation:function(e,n,i){n=void 0!==n?n:{};var o={title:t("core","Authentication required"),text:t("core","This action requires you to confirm your password"),confirm:t("core","Confirm"),label:t("core","Password"),error:""},a=h.ZP.extend(o,n),r=this;this.requiresPasswordConfirmation()&&Jt.dialogs.prompt(a.text,a.title,(function(t,e){t&&""!==e?r._confirmPassword(e,a):h.ZP.isFunction(i)&&i()}),!0,a.label,!0).then((function(){var t=c()(".oc-dialog:visible");if(t.find(".ui-icon").remove(),t.addClass("password-confirmation"),""!==a.error){var e=c()("<p></p>").addClass("msg warning").text(a.error);t.find(".oc-dialog-content").append(e)}t.find(".oc-dialog-buttonrow").addClass("aside");var n=t.find("button");n.eq(0).hide(),n.eq(1).text(a.confirm)})),this.callback=e},_confirmPassword:function(e,n){var i=this;c().ajax({url:(0,d.generateUrl)("/login/confirm"),data:{password:e},type:"POST",success:function(t){window.nc_lastLogin=t.lastLogin,h.ZP.isFunction(i.callback)&&i.callback()},error:function(){n.error=t("core","Failed to authenticate, try again"),Jt.PasswordConfirmation.requirePasswordConfirmation(i.callback,n)}})}},Mt=window._theme||{},Lt={_handlers:[],_pushState:function(t,e,n){var i;if(i="string"==typeof t?t:Jt.buildQueryString(t),window.history.pushState){if(e=e||location.pathname+"?"+i,navigator.userAgent.toLowerCase().indexOf("firefox")>-1&&parseInt(navigator.userAgent.split("/").pop())<51)for(var o,a=document.querySelectorAll('[fill^="url(#"], [stroke^="url(#"], [filter^="url(#invert"]'),r=0,s=a.length;r<s;r++)(o=a[r]).style.fill=o.style.fill,o.style.stroke=o.style.stroke,o.removeAttribute("filter"),o.setAttribute("filter","url(#invert)");n?window.history.replaceState(t,"",e):window.history.pushState(t,"",e)}else window.location.hash="?"+i,this._cancelPop=!0},pushState:function(t,e){this._pushState(t,e,!1)},replaceState:function(t,e){this._pushState(t,e,!0)},addOnPopStateHandler:function(t){this._handlers.push(t)},_parseHashQuery:function(){var t=window.location.hash,e=t.indexOf("?");return e>=0?t.substr(e+1):t.length?t.substr(1):""},_decodeQuery:function(t){return t.replace(/\+/g," ")},parseUrlQuery:function(){var t,e=this._parseHashQuery();return e&&(t=Jt.parseQueryString(this._decodeQuery(e))),(t=h.ZP.extend(t||{},Jt.parseQueryString(this._decodeQuery(location.search))))||{}},_onPopState:function(t){var e;if(this._cancelPop)this._cancelPop=!1;else if(this._handlers.length){e=t&&t.state,h.ZP.isString(e)?e=Jt.parseQueryString(e):e||(e=this.parseUrlQuery()||{});for(var n=0;n<this._handlers.length;n++)this._handlers[n](e)}}},Ft=o(91770),Rt=o(25108);function Qt(t){for(var e,n=[],i=0,o=-1,a=0;i<t.length;){e=t.charAt(i);var r=!a&&"."===e||e>="0"&&e<="9";r!==a&&(n[++o]="",a=r),n[o]+=e,i++}return n}var Gt={History:Lt,humanFileSize:Ft.sS,computerFileSize:function(t){if("string"!=typeof t)return null;var e=t.toLowerCase().trim(),n=null,i=e.match(/^[\s+]?([0-9]*)(\.([0-9]+))?( +)?([kmgtp]?b?)$/i);return null===i?null:(n=parseFloat(e),isFinite(n)?(i[5]&&(n*={b:1,k:1024,kb:1024,mb:1048576,m:1048576,gb:1073741824,g:1073741824,tb:1099511627776,t:1099511627776,pb:0x4000000000000,p:0x4000000000000}[i[5]]),n=Math.round(n)):null)},formatDate:function(t,e){return void 0===window.TESTING&&Rt.warn("OC.Util.formatDate is deprecated and will be removed in Nextcloud 21. See @nextcloud/moment"),e=e||"LLL",Nt()(t).format(e)},relativeModifiedDate:function(e){void 0===window.TESTING&&Rt.warn("OC.Util.relativeModifiedDate is deprecated and will be removed in Nextcloud 21. See @nextcloud/moment");var n=Nt()().diff(Nt()(e));return n>=0&&n<45e3?t("core","seconds ago"):Nt()(e).fromNow()},getScrollBarWidth:function(){if(this._scrollBarWidth)return this._scrollBarWidth;var t=document.createElement("p");t.style.width="100%",t.style.height="200px";var e=document.createElement("div");e.style.position="absolute",e.style.top="0px",e.style.left="0px",e.style.visibility="hidden",e.style.width="200px",e.style.height="150px",e.style.overflow="hidden",e.appendChild(t),document.body.appendChild(e);var n=t.offsetWidth;e.style.overflow="scroll";var i=t.offsetWidth;return n===i&&(i=e.clientWidth),document.body.removeChild(e),this._scrollBarWidth=n-i,this._scrollBarWidth},stripTime:function(t){return new Date(t.getFullYear(),t.getMonth(),t.getDate())},naturalSortCompare:function(t,e){var n,i=Qt(t),o=Qt(e);for(n=0;i[n]&&o[n];n++)if(i[n]!==o[n]){var a=Number(i[n]),r=Number(o[n]);return a==i[n]&&r==o[n]?a-r:i[n].localeCompare(o[n],Jt.getLanguage())}return i.length-o.length},waitFor:function(t,e){!function n(){!0!==t()&&setTimeout(n,e)}()},isCookieSetToValue:function(t,e){for(var n=document.cookie.split(";"),i=0;i<n.length;i++){var o=n[i].split("=");if(o[0].trim()===t&&o[1].trim()===e)return!0}return!1}},Ht=window._oc_debug,Kt=window._oc_webroot;if(void 0===Kt){var Zt=(Kt=location.pathname).indexOf("/index.php/");Kt=-1!==Zt?Kt.substr(0,Zt):Kt.substr(0,Kt.lastIndexOf("/"))}var Yt,qt=Kt,Wt=o(25108),Jt={coreApps:["","admin","log","core/search","core","3rdparty"],menuSpeed:50,PERMISSION_ALL:31,PERMISSION_CREATE:4,PERMISSION_DELETE:8,PERMISSION_NONE:0,PERMISSION_READ:1,PERMISSION_SHARE:16,PERMISSION_UPDATE:2,TAG_FAVORITE:"_$!<Favorite>!$_",fileIsBlacklisted:function(t){return!!t.match(K.blacklist_files_regex)},addScript:function(t,e,n){var i;A.warn("OC.addScript is deprecated, use OCP.Loader.loadScript instead");var o=(0,d.generateFilePath)(t,"js",e+".js");return p[o]?n&&n():(i=c().Deferred(),c().getScript(o,(function(){return i.resolve()})),p[o]=i),p[o]},addStyle:function(t,e){A.warn("OC.addStyle is deprecated, use OCP.Loader.loadStylesheet instead");var n=(0,d.generateFilePath)(t,"css",e+".css");-1===f.indexOf(n)&&(f.push(n),document.createStyleSheet?document.createStyleSheet(n):(e=c()('<link rel="stylesheet" type="text/css" href="'+n+'"/>'),c()("head").append(e)))},Apps:w,AppConfig:D,appConfig:O,appSettings:function(e){if(T.warn("OC.appSettings is deprecated and will be removed with Nextcloud 18"),void 0===e||void 0===e.appid)throw{name:"MissingParameter",message:"The parameter appid is missing"};var n={scriptName:"settings.php",cache:!0};c().extend(n,e);var i=c()("#appsettings");if(0===i.length)throw{name:"MissingDOMElement",message:'There has be be an element with id "appsettings" for the popup to show.'};var o=c()("#appsettings_popup");if(0===o.length&&(c()("body").prepend('<div class="popup hidden" id="appsettings_popup"></div>'),(o=c()("#appsettings_popup")).addClass(i.hasClass("topright")?"topright":"bottomleft")),o.is(":visible"))o.hide().remove();else{var a=i.hasClass("topright")?"up":"left";c().get((0,d.generateFilePath)(n.appid,"",n.scriptName),(function(e){o.html(e).ready((function(){if(o.prepend('<span class="arrow '+a+'"></span><h2>'+t("core","Settings")+'</h2><a class="close"></a>').show(),o.find(".close").bind("click",(function(){o.remove()})),void 0!==n.loadJS){var e;if(!0===n.loadJS)e="settings.js";else{if("string"!=typeof n.loadJS)throw{name:"InvalidParameter",message:'The "loadJS" parameter must be either boolean or a string.'};e=n.loadJS}n.cache&&c().ajaxSetup({cache:!0}),c().getScript((0,d.generateFilePath)(n.appid,"js",e)).fail((function(t,e,n){throw n}))}})).show()}),"html")}},appswebroots:I,Backbone:G,ContactsMenu:$,config:K,currentUser:nt,dialogs:vt,EventSource:xt,getCurrentUser:function(){return{uid:nt,displayName:et}},isUserAdmin:function(){return Dt},L10N:_t,_ajaxConnectionLostHandler:C,_processAjaxError:function(t){(0!==t.status||"abort"!==t.statusText&&"timeout"!==t.statusText&&!Jt._reloadCalled)&&(h.ZP.contains([302,303,307,401],t.status)&&Jt.currentUser?setTimeout((function(){if(!Jt._userIsNavigatingAway&&!Jt._reloadCalled){var t=0,e=setInterval((function(){v.showUpdate(n("core","Problem loading page, reloading in %n second","Problem loading page, reloading in %n seconds",5-t)),t>=5&&(clearInterval(e),Jt.reload()),t++}),1e3);Jt._reloadCalled=!0}}),100):0===t.status&&setTimeout((function(){Jt._userIsNavigatingAway||Jt._reloadCalled||Jt._ajaxConnectionLostHandler()}),100))},registerXHRForErrorProcessing:function(t){t.addEventListener&&(t.addEventListener("load",(function(){4===t.readyState&&(t.status>=200&&t.status<300||304===t.status||c()(document).trigger(new(c().Event)("ajaxError"),t))})),t.addEventListener("error",(function(){c()(document).trigger(new(c().Event)("ajaxError"),t)})))},getCapabilities:function(){return Pt.warn("OC.getCapabilities is deprecated and will be removed in Nextcloud 21. See @nextcloud/capabilities"),(0,kt.getCapabilities)()},hideMenus:Ot,registerMenu:function(t,e,n,i){e.addClass("menu");var o="A"===t.prop("tagName")||"BUTTON"===t.prop("tagName");t.on(o?"click.menu":"click.menu keyup.menu",(function(o){o.preventDefault(),o.key&&"Enter"!==o.key||(e.is(Et)?Ot():(Et&&Ot(),!0===i&&e.parent().addClass("openedMenu"),t.attr("aria-expanded",!0),e.slideToggle(50,n),Et=e,Bt=t))}))},showMenu:function(t,e,n){e.is(Et)||(Ot(),Et=e,Bt=t,e.trigger(new(c().Event)("beforeShow")),e.show(),e.trigger(new(c().Event)("afterShow")),h.ZP.isFunction(n)&&n())},unregisterMenu:function(t,e){e.is(Et)&&Ot(),t.off("click.menu").removeClass("menutoggle"),e.removeClass("menu")},basename:H.EZ,encodePath:H.Ec,dirname:H.XX,isSamePath:H.Mg,joinPaths:H.RQ,getHost:function(){return window.location.host},getHostName:function(){return window.location.hostname},getPort:function(){return window.location.port},getProtocol:function(){return window.location.protocol.split(":")[0]},getCanonicalLocale:jt.aj,getLocale:jt.Kd,getLanguage:jt.G3,buildQueryString:function(t){return t?c().map(t,(function(t,e){var n=encodeURIComponent(e);return null!=t&&(n+="="+encodeURIComponent(t)),n})).join("&"):""},parseQueryString:function(t){var e,n,i,o={};if(!t)return null;(e=t.indexOf("?"))>=0&&(t=t.substr(e+1));for(var a=t.replace(/\+/g,"%20").split("&"),r=0;r<a.length;r++){var s=a[r];(n=(e=s.indexOf("="))>=0?[s.substr(0,e),s.substr(e+1)]:[s]).length&&(i=decodeURIComponent(n[0]))&&(o[i]=n.length>1?decodeURIComponent(n[1]):null)}return o},msg:zt,Notification:v,PasswordConfirmation:Ut,Plugins:{_plugins:{},register:function(t,e){var n=this._plugins[t];n||(n=this._plugins[t]=[]),n.push(e)},getPlugins:function(t){return this._plugins[t]||[]},attach:function(t,e,n){for(var i=this.getPlugins(t),o=0;o<i.length;o++)i[o].attach&&i[o].attach(e,n)},detach:function(t,e,n){for(var i=this.getPlugins(t),o=0;o<i.length;o++)i[o].detach&&i[o].detach(e,n)}},theme:Mt,Util:Gt,debug:Ht,filePath:d.generateFilePath,generateUrl:d.generateUrl,get:(Yt=window,function(t){for(var e=t.split("."),n=e.pop(),i=0;i<e.length;i++)if(!(Yt=Yt[e[i]]))return!1;return Yt[n]}),set:function(t){return function(e,n){for(var i=e.split("."),o=i.pop(),a=0;a<i.length;a++)t[i[a]]||(t[i[a]]={}),t=t[i[a]];return t[o]=n,n}}(window),getRootPath:d.getRootUrl,imagePath:d.imagePath,redirect:function(t){window.location=t},reload:function(){window.location.reload()},requestToken:bt(),linkTo:d.linkTo,linkToOCS:function(t,e){return(0,d.generateOcsUrl)(t,{},{ocsVersion:e||1})+"/"},linkToRemote:d.generateRemoteUrl,linkToRemoteBase:function(t){return(0,d.getRootUrl)()+"/remote.php/"+t},webroot:qt};(0,u.Ld)("csrf-token-update",(function(t){OC.requestToken=t.token,Wt.info("OC.requestToken changed",t.token)}));var Vt=o(79954),Xt=o(45994),$t=o(25108);function te(t,e,n,i,o,a,r){try{var s=t[a](r),l=s.value}catch(t){return void n(t)}s.done?e(l):Promise.resolve(l).then(i,o)}function ee(t){return function(){var e=this,n=arguments;return new Promise((function(i,o){var a=t.apply(e,n);function r(t){te(a,i,o,r,s,"next",t)}function s(t){te(a,i,o,r,s,"throw",t)}r(void 0)}))}}var ne=null,ie=function(){var t=ee(regeneratorRuntime.mark((function t(){var e,n;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return e=(0,d.generateUrl)("/csrftoken"),t.next=3,c().get(e);case 3:return n=t.sent,t.abrupt("return",n.token);case 5:case"end":return t.stop()}}),t)})));return function(){return t.apply(this,arguments)}}(),oe=function(){var t=ee(regeneratorRuntime.mark((function t(){var e;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.prev=0,t.next=3,ie();case 3:e=t.sent,wt(e),t.next=10;break;case 7:t.prev=7,t.t0=t.catch(0),$t.error("session heartbeat failed",t.t0);case 10:case"end":return t.stop()}}),t,null,[[0,7]])})));return function(){return t.apply(this,arguments)}}(),ae=function(){var t=setInterval(oe,1e3*function(){var t=NaN;return ne.session_lifetime&&(t=Math.floor(ne.session_lifetime/2)),Math.min(86400,Math.max(60,isNaN(t)?900:t))}());return $t.info("session heartbeat polling started"),t},re=o(20144),se=o(85750),le=o.n(se),ce={name:"ContactsMenu",components:{Contacts:o(12050).Z,NcHeaderMenu:le()},data:function(){return{contactsMenu:null}},mounted:function(){this.contactsMenu=new Jt.ContactsMenu({el:"#contactsmenu-menu"})},methods:{handleOpen:function(){var t;null===(t=this.contactsMenu)||void 0===t||t.loadContacts()}}},ue=o(93379),de=o.n(ue),Ae=o(7795),pe=o.n(Ae),fe=o(90569),he=o.n(fe),me=o(3565),ge=o.n(me),ve=o(19216),Ce=o.n(ve),be=o(44589),we=o.n(be),ye=o(50893),xe={};xe.styleTagTransform=we(),xe.setAttributes=ge(),xe.insert=he().bind(null,"head"),xe.domAPI=pe(),xe.insertStyleElement=Ce(),de()(ye.Z,xe),ye.Z&&ye.Z.locals&&ye.Z.locals;var ke=o(51900),Pe=(0,ke.Z)(ce,(function(){var t=this,e=t._self._c;return e("NcHeaderMenu",{attrs:{id:"contactsmenu","aria-label":t.t("core","Search contacts")},on:{open:t.handleOpen},scopedSlots:t._u([{key:"trigger",fn:function(){return[e("Contacts",{attrs:{size:20}})]},proxy:!0}])},[t._v(" "),e("div",{attrs:{id:"contactsmenu-menu"}})])}),[],!1,null,"1563c388",null).exports,Ee=o(12945),Be=o.n(Ee),Oe=o(76212),De=o.n(Oe),Te={name:"AppMenu",components:{NcActions:Be(),NcActionLink:De()},data:function(){return{apps:(0,Vt.j)("core","apps",{}),appLimit:0,observer:null}},computed:{appList:function(){return Object.values(this.apps)},mainAppList:function(){return this.appList.slice(0,this.appLimit)},popoverAppList:function(){return this.appList.slice(this.appLimit)},appLabel:function(){return function(e){return e.name+(e.active?" ("+t("core","Currently open")+")":"")+(e.unread>0?" ("+n("core","{count} notification","{count} notifications",e.unread,{count:e.unread})+")":"")}}},mounted:function(){this.observer=new ResizeObserver(this.resize),this.observer.observe(this.$el),this.resize(),(0,u.Ld)("nextcloud:app-menu.refresh",this.setApps)},beforeDestroy:function(){this.observer.disconnect(),(0,u.r1)("nextcloud:app-menu.refresh",this.setApps)},methods:{setNavigationCounter:function(t,e){this.$set(this.apps[t],"unread",e)},setApps:function(t){var e=t.apps;this.apps=e},resize:function(){var t=this.$el.offsetWidth,e=Math.floor(t/50)-1;1==this.appList.length-e&&e--,e<1&&(e=0),this.appLimit=e}}},Ie=Te,je=o(9572),_e={};_e.styleTagTransform=we(),_e.setAttributes=ge(),_e.insert=he().bind(null,"head"),_e.domAPI=pe(),_e.insertStyleElement=Ce(),de()(je.Z,_e),je.Z&&je.Z.locals&&je.Z.locals;var ze=(0,ke.Z)(Ie,(function(){var t=this,e=t._self._c;return e("nav",{staticClass:"app-menu"},[e("ul",{staticClass:"app-menu-main"},t._l(t.mainAppList,(function(n){return e("li",{key:n.id,staticClass:"app-menu-entry",class:{"app-menu-entry__active":n.active},attrs:{"data-app-id":n.id}},[e("a",{class:{"has-unread":n.unread>0},attrs:{href:n.href,"aria-label":t.appLabel(n),title:n.name,"aria-current":!!n.active&&"page",target:n.target?"_blank":void 0,rel:n.target?"noopener noreferrer":void 0}},[e("img",{attrs:{src:n.icon,alt:""}}),t._v(" "),e("div",{staticClass:"app-menu-entry--label"},[t._v("\n\t\t\t\t\t"+t._s(n.name)+"\n\t\t\t\t\t"),n.unread>0?e("span",{staticClass:"hidden-visually unread-counter"},[t._v(t._s(n.unread))]):t._e()])])])})),0),t._v(" "),e("NcActions",{staticClass:"app-menu-more",attrs:{"aria-label":t.t("core","More apps")}},t._l(t.popoverAppList,(function(n){return e("NcActionLink",{key:n.id,staticClass:"app-menu-popover-entry",attrs:{"aria-label":t.appLabel(n),"aria-current":!!n.active&&"page",href:n.href},scopedSlots:t._u([{key:"icon",fn:function(){return[e("div",{staticClass:"app-icon",class:{"has-unread":n.unread>0}},[e("img",{attrs:{src:n.icon,alt:""}})])]},proxy:!0}],null,!0)},[t._v("\n\t\t\t"+t._s(n.name)+"\n\t\t\t"),n.unread>0?e("span",{staticClass:"hidden-visually unread-counter"},[t._v(t._s(n.unread))]):t._e()])})),1)],1)}),[],!1,null,"44a795f6",null).exports,Se=o(75925),Ne=o.n(Se),Ue=o(64192),Me=o.n(Ue),Le=(0,Vt.j)("core","versionHash",""),Fe={name:"UserMenuEntry",components:{NcLoadingIcon:Me()},props:{id:{type:String,required:!0},name:{type:String,required:!0},href:{type:String,required:!0},active:{type:Boolean,required:!0},icon:{type:String,required:!0}},data:function(){return{loading:!1}},computed:{cachedIcon:function(){return"".concat(this.icon,"?v=").concat(Le)}},methods:{handleClick:function(){this.loading=!0}}},Re=o(88951),Qe={};Qe.styleTagTransform=we(),Qe.setAttributes=ge(),Qe.insert=he().bind(null,"head"),Qe.domAPI=pe(),Qe.insertStyleElement=Ce(),de()(Re.Z,Qe),Re.Z&&Re.Z.locals&&Re.Z.locals;var Ge=(0,ke.Z)(Fe,(function(){var t=this,e=t._self._c;return e("li",{staticClass:"menu-entry",attrs:{id:t.id}},[t.href?e("a",{class:{active:t.active},attrs:{href:t.href},on:{click:function(e){return e.ctrlKey||e.shiftKey||e.altKey||e.metaKey?null:t.handleClick.apply(null,arguments)}}},[t.loading?e("NcLoadingIcon",{staticClass:"menu-entry__loading-icon",attrs:{size:18}}):e("img",{attrs:{src:t.cachedIcon,alt:""}}),t._v("\n\t\t"+t._s(t.name)+"\n\t")],1):e("button",[e("img",{attrs:{src:t.cachedIcon,alt:""}}),t._v("\n\t\t"+t._s(t.name)+"\n\t")])])}),[],!1,null,"6e59d13c",null),He=Ge.exports,Ke=(0,Vt.j)("core","settingsNavEntries",[]),Ze={name:"UserMenu",components:{NcAvatar:Ne(),NcHeaderMenu:le(),UserMenuEntry:He},data:function(){var t;return{settingsNavEntries:Ke,userId:null===(t=(0,Xt.ts)())||void 0===t?void 0:t.uid}},mounted:function(){(0,u.j8)("core:user-menu:mounted")}},Ye=o(71445),qe={};qe.styleTagTransform=we(),qe.setAttributes=ge(),qe.insert=he().bind(null,"head"),qe.domAPI=pe(),qe.insertStyleElement=Ce(),de()(Ye.Z,qe),Ye.Z&&Ye.Z.locals&&Ye.Z.locals;var We=(0,ke.Z)(Ze,(function(){var t=this,e=t._self._c;return e("NcHeaderMenu",{staticClass:"user-menu",attrs:{id:"user-menu","aria-label":t.t("core","Open settings menu")},scopedSlots:t._u([{key:"trigger",fn:function(){return[e("NcAvatar",{staticClass:"user-menu__avatar",attrs:{"disable-menu":!0,"disable-tooltip":!0,user:t.userId}})]},proxy:!0}])},[t._v(" "),e("nav",{staticClass:"user-menu__nav",attrs:{"aria-label":t.t("core","Settings menu")}},[e("ul",t._l(t.settingsNavEntries,(function(n){return e("UserMenuEntry",t._b({key:n.id},"UserMenuEntry",n,!1))})),1)])])}),[],!1,null,"6a818bbc",null).exports,Je={zh:"zh-cn",zh_Hans:"zh-cn",zh_Hans_CN:"zh-cn",zh_Hans_HK:"zh-cn",zh_Hans_MO:"zh-cn",zh_Hans_SG:"zh-cn",zh_Hant:"zh-hk",zh_Hant_HK:"zh-hk",zh_Hant_MO:"zh-mo",zh_Hant_TW:"zh-tw"},Ve=Jt.getLocale();Object.prototype.hasOwnProperty.call(Je,Ve)&&(Ve=Je[Ve]),Nt().locale(Ve);var Xe,$e=function(){var t;if(c()(window).on("unload.main",(function(){Jt._unloadCalled=!0})),c()(window).on("beforeunload.main",(function(){setTimeout((function(){Jt._userIsNavigatingAway=!0,setTimeout((function(){Jt._unloadCalled||(Jt._userIsNavigatingAway=!1)}),1e4)}),1)})),c()(document).on("ajaxError.main",(function(t,e,n){n&&n.allowAuthErrors||Jt._processAjaxError(e)})),function(){if(function(){try{ne=(0,Vt.j)("core","config")}catch(t){ne=Jt.config}}(),function(){if(ne.auto_logout&&(0,Xt.ts)()){var t=Date.now();window.addEventListener("mousemove",(function(e){t=Date.now(),localStorage.setItem("lastActive",t)})),window.addEventListener("touchstart",(function(e){t=Date.now(),localStorage.setItem("lastActive",t)})),window.addEventListener("storage",(function(e){"lastActive"===e.key&&(t=e.newValue)})),setInterval((function(){var e=Date.now()-1e3*ne.session_lifetime;if(t<e){$t.info("Inactivity timout reached, logging out");var n=(0,d.generateUrl)("/logout")+"?requesttoken="+encodeURIComponent(bt());window.location=n}}),1e3)}}(),void 0===ne.session_keepalive||ne.session_keepalive){var t=ae();window.addEventListener("online",ee(regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return $t.info("browser is online again, resuming heartbeat"),t=ae(),e.prev=2,e.next=5,oe();case 5:$t.info("session token successfully updated after resuming network"),(0,u.j8)("networkOnline",{success:!0}),e.next=13;break;case 9:e.prev=9,e.t0=e.catch(2),$t.error("could not update session token after resuming network",e.t0),(0,u.j8)("networkOnline",{success:!1});case 13:case"end":return e.stop()}}),e,null,[[2,9]])})))),window.addEventListener("offline",(function(){$t.info("browser is offline, stopping heartbeat"),(0,u.j8)("networkOffline",{}),clearInterval(t),$t.info("session heartbeat polling stopped")}))}else $t.info("session heartbeat disabled")}(),Jt.registerMenu(c()("#expand"),c()("#expanddiv"),!1,!0),c()(document).on("mouseup.closemenus",(function(t){var e=c()(t.target);if(e.closest(".menu").length||e.closest(".menutoggle").length)return!1;Jt.hideMenus()})),function(){re.ZP.mixin({methods:{t:jt.Iu,n:jt.uN}});var t=document.getElementById("header-left__appmenu");if(t){var e=new(re.ZP.extend(ze))({}).$mount(t);Object.assign(OC,{setNavigationCounter:function(t,n){e.setNavigationCounter(t,n)}})}}(),(t=document.getElementById("user-menu"))&&new re.ZP({el:t,render:function(t){return t(We)}}),function(){var t=document.getElementById("contactsmenu");t&&new re.ZP({el:t,render:function(t){return t(Pe)}})}(),c()("#app-navigation").length&&!c()("html").hasClass("lte9")&&!c()("#app-content").hasClass("no-snapper")){var e=new Snap({element:document.getElementById("app-content"),disable:"right",maxPosition:300,minDragDistance:100});c()("#app-content").prepend('<div id="app-navigation-toggle" class="icon-menu" style="display:none" tabindex="0"></div>');var n=!1;e.on("animating",(function(){n=!0})),e.on("animated",(function(){n=!1})),e.on("start",(function(){n=!0})),e.on("end",(function(){n=!1}));var i=e.open,o=e.close,a=function(){n||"closed"!==e.state().state||i("left")},r=function(){n||"closed"===e.state().state||o()};window.TESTING||(e.open=function(){h.ZP.defer(a)},e.close=function(){h.ZP.defer(r)}),c()("#app-navigation-toggle").click((function(t){"left"!==e.state().state&&e.open()})),c()("#app-navigation-toggle").keypress((function(t){"left"===e.state().state?e.close():e.open()})),c()("#app-navigation").delegate("a, :button","click",(function(t){var n=c()(t.target);n.is(".app-navigation-noclose")||n.closest(".app-navigation-noclose").length||n.is(".app-navigation-entry-utils-menu-button")||n.closest(".app-navigation-entry-utils-menu-button").length||n.is(".add-new")||n.closest(".add-new").length||n.is("#app-settings")||n.closest("#app-settings").length||e.close()}));var s=!1,l=!0,A=!1;Jt.allowNavigationBarSlideGesture=function(){l=!0,A&&(e.enable(),s=!0,A=!1)},Jt.disallowNavigationBarSlideGesture=function(){l=!1,s&&(e.disable(!0),s=!1,A=!0)};var p=function(){c()(window).width()>1024?(e.close(),e.disable(),s=!1,A=!1):l?(e.enable(),s=!0,A=!1):A=!0};c()(window).resize(h.ZP.debounce(p,250)),p()}setInterval((function(){c()(".live-relative-timestamp").each((function(){var t=parseInt(c()(this).attr("data-timestamp"),10);c()(this).text(Nt()(t).fromNow())}))}),3e4),Ut.init()},tn=(o(49226),o(41704),o(78312),o(22634),o(3682)),en=o(25108);c().prototype.tooltip=(Xe=c().prototype.tooltip,function(t){try{return Xe.call(this,t)}catch(e){if(e instanceof TypeError&&"destroy"===t)return void 0===window.TESTING&&en.error("Deprecated call $.tooltip('destroy') has been deprecated and should be removed"),Xe.call(this,"dispose");if(e instanceof TypeError&&"fixTitle"===t)return void 0===window.TESTING&&en.error("Deprecated call $.tooltip('fixTitle') has been deprecated and should be removed"),Xe.call(this,"_fixTitle")}});var nn=o(42152),on=o.n(nn),an=o(99560),rn=o.n(an),sn=(o(18553),o(34140),o(75693),o(99205),o(38554),/(\s|^)(https?:\/\/)((?:[-A-Z0-9+_]+\.)+[-A-Z]+(?:\/[-A-Z0-9+&@#%?=~_|!:,.;()]*)*)(\s|$)/gi);function ln(t){return this.formatLinksRich(t)}function cn(t){return this.formatLinksPlain(t)}function un(t){return t.replace(sn,(function(t,e,n,i,o){var a=i;return n?"http://"===n&&(a=n+i):n="https://",e+'<a class="external" target="_blank" rel="noopener noreferrer" href="'+n+i+'">'+a+"</a>"+o}))}function dn(t){var e=c()("<div></div>").html(t);return e.find("a").each((function(){var t=c()(this);t.html(t.attr("href"))})),e.html()}var An=o(25108);function pn(e){var n=(e=e||{}).dismiss||{};c().ajax({type:"GET",url:e.url||(0,d.generateOcsUrl)("core/whatsnew?format=json"),success:e.success||function(e,i,o){!function(e,n,i,o){if(An.debug("querying Whats New data was successful: "+n),An.debug(e),200===i.status){var a,r,s,l,c=document.createElement("div");c.classList.add("popovermenu","open","whatsNewPopover","menu-left");var u=document.createElement("ul");for(var d in a=document.createElement("li"),(r=document.createElement("span")).className="menuitem",(s=document.createElement("span")).innerText=t("core","New in")+" "+e.ocs.data.product,s.className="caption",r.appendChild(s),(l=document.createElement("span")).className="icon-close",l.onclick=function(){fn(e.ocs.data.version,o)},r.appendChild(l),a.appendChild(r),u.appendChild(a),e.ocs.data.whatsNew.regular){var A=e.ocs.data.whatsNew.regular[d];a=document.createElement("li"),(r=document.createElement("span")).className="menuitem",(l=document.createElement("span")).className="icon-checkmark",r.appendChild(l),(s=document.createElement("p")).innerHTML=h.ZP.escape(A),r.appendChild(s),a.appendChild(r),u.appendChild(a)}h.ZP.isUndefined(e.ocs.data.changelogURL)||(a=document.createElement("li"),(r=document.createElement("a")).href=e.ocs.data.changelogURL,r.rel="noreferrer noopener",r.target="_blank",(l=document.createElement("span")).className="icon-link",r.appendChild(l),(s=document.createElement("span")).innerText=t("core","View changelog"),r.appendChild(s),a.appendChild(r),u.appendChild(a)),c.appendChild(u),document.body.appendChild(c)}}(e,i,o,n)},error:e.error||hn})}function fn(t,e){e=e||{},c().ajax({type:"POST",url:e.url||(0,d.generateOcsUrl)("core/whatsnew"),data:{version:encodeURIComponent(t)},success:e.success||mn,error:e.error||gn}),c()(".whatsNewPopover").remove()}function hn(t,e,n){An.debug("querying Whats New Data resulted in an error: "+e+n),An.debug(t)}function mn(t){}function gn(t){An.debug("dismissing Whats New data resulted in an error: "+t)}var vn,Cn,bn,wn,yn={disableKeyboardShortcuts:function(){return(0,Vt.j)("theming","shortcutsDisabled",!1)}},xn=o(95573),kn=o.n(xn),Pn={},En={},Bn={},On={loadScript:function(t,e){var n=t+e;return Object.prototype.hasOwnProperty.call(En,n)?Promise.resolve():(En[n]=!0,new Promise((function(n,i){var o=OC.filePath(t,"js",e),a=document.createElement("script");a.src=o,a.setAttribute("nonce",btoa(OC.requestToken)),a.onload=function(){return n()},a.onerror=function(){return i(new Error("Failed to load script from ".concat(o)))},document.head.appendChild(a)})))},loadStylesheet:function(t,e){var n=t+e;return Object.prototype.hasOwnProperty.call(Bn,n)?Promise.resolve():(Bn[n]=!0,new Promise((function(n,i){var o=OC.filePath(t,"css",e),a=document.createElement("link");a.href=o,a.type="text/css",a.rel="stylesheet",a.onload=function(){return n()},a.onerror=function(){return i(new Error("Failed to load stylesheet from ".concat(o)))},document.head.appendChild(a)})))}},Dn={success:function(t,e){return(0,m.s$)(t,e)},warning:function(t,e){return(0,m.K2)(t,e)},error:function(t,e){return(0,m.x2)(t,e)},info:function(t,e){return(0,m.JQ)(t,e)},message:function(t,e){return(0,m.PV)(t,e)}},Tn={Accessibility:yn,AppConfig:a,Collaboration:{registerType:function(t,e){Pn[t]=e},trigger:function(t){return Pn[t].action()},getTypes:function(){return Object.keys(Pn)},getIcon:function(t){return Pn[t].typeIconClass||""},getLabel:function(t){return kn()(Pn[t].typeString||t)},getLink:function(t,e){return void 0!==Pn[t]?Pn[t].link(e):""}},Comments:r,InitialState:{loadState:Vt.j},Loader:On,Toast:Dn,WhatsNew:s},In=o(25108),jn=function(){void 0===window.TESTING&&In.warn.apply(In,arguments)},_n=function(t,e,n){(Array.isArray(t)?t:[t]).forEach((function(t){void 0!==window[t]&&delete window[t],Object.defineProperty(window,t,{get:function(){return jn(n?"".concat(t," is deprecated: ").concat(n):"".concat(t," is deprecated")),e()}})}))};window._=h.ZP,_n(["$","jQuery"],(function(){return c()}),"The global jQuery is deprecated. It will be removed in a later versions without another warning. Please ship your own."),_n("autosize",(function(){return tn.Z}),"please ship your own, this will be removed in Nextcloud 20"),_n("Backbone",(function(){return z()}),"please ship your own, this will be removed in Nextcloud 20"),_n(["Clipboard","ClipboardJS"],(function(){return on()}),"please ship your own, this will be removed in Nextcloud 20"),window.dav=S.dav,_n("Handlebars",(function(){return It()}),"please ship your own, this will be removed in Nextcloud 20"),_n("md5",(function(){return rn()}),"please ship your own, this will be removed in Nextcloud 20"),_n("moment",(function(){return Nt()}),"please ship your own, this will be removed in Nextcloud 20"),window.OC=Jt,_n("initCore",(function(){return $e}),"this is an internal function"),_n("oc_appswebroots",(function(){return Jt.appswebroots}),"use OC.appswebroots instead, this will be removed in Nextcloud 20"),_n("oc_config",(function(){return Jt.config}),"use OC.config instead, this will be removed in Nextcloud 20"),_n("oc_current_user",(function(){return Jt.getCurrentUser().uid}),"use OC.getCurrentUser().uid instead, this will be removed in Nextcloud 20"),_n("oc_debug",(function(){return Jt.debug}),"use OC.debug instead, this will be removed in Nextcloud 20"),_n("oc_defaults",(function(){return Jt.theme}),"use OC.theme instead, this will be removed in Nextcloud 20"),_n("oc_isadmin",Jt.isUserAdmin,"use OC.isUserAdmin() instead, this will be removed in Nextcloud 20"),_n("oc_requesttoken",(function(){return bt()}),"use OC.requestToken instead, this will be removed in Nextcloud 20"),_n("oc_webroot",(function(){return Jt.webroot}),"use OC.getRootPath() instead, this will be removed in Nextcloud 20"),_n("OCDialogs",(function(){return Jt.dialogs}),"use OC.dialogs instead, this will be removed in Nextcloud 20"),window.OCP=Tn,window.OCA=st,c().fn.select2=(vn=c().fn.select2,Cn="select2",19,bn=vn,wn=function(){return jn("The ".concat(Cn," library is deprecated! It will be removed in nextcloud ").concat(19,".")),bn.apply(this,arguments)},Object.assign(wn,bn),wn),window.t=h.ZP.bind(Jt.L10N.translate,Jt.L10N),window.n=h.ZP.bind(Jt.L10N.translatePlural,Jt.L10N),c().fn.avatar=function(t,e,n,i,o,a){var r=function(t){t.imageplaceholder("?"),t.css("background-color","#b9b9b9")};if(void 0!==t&&(t=String(t)),void 0!==a&&(a=String(a)),void 0===e&&(e=this.height()>0?this.height():this.data("size")>0?this.data("size"):64),this.height(e),this.width(e),void 0===t){if(void 0===this.data("user"))return void r(this);t=this.data("user")}t=String(t).replace(/\//g,"");var s,l=this;s=t===Jt.getCurrentUser().uid?Jt.generateUrl("/avatar/{user}/{size}?v={version}",{user:t,size:Math.ceil(e*window.devicePixelRatio),version:oc_userconfig.avatar.version}):Jt.generateUrl("/avatar/{user}/{size}",{user:t,size:Math.ceil(e*window.devicePixelRatio)});var c=new Image;c.onload=function(){l.clearimageplaceholder(),l.append(c),"function"==typeof o&&o()},c.onerror=function(){l.clearimageplaceholder(),void 0!==a?l.imageplaceholder(t,a):r(l),"function"==typeof o&&o()},e<32?l.addClass("icon-loading-small"):l.addClass("icon-loading"),c.width=e,c.height=e,c.src=s,c.alt=""};var zn=o(47078);c().fn.contactsMenu=function(e,n,i){if(-1!==[0,4,6].indexOf(n)){var o=this;i.append('<div class="menu popovermenu menu-left hidden contactsmenu-popover"> <ul> <li> <a> <span class="icon-loading-small"></span> </a> </li> </ul></div>');var a=i.find("div.contactsmenu-popover");o.on("click keydown",(function(i){if(lt(i)){if(!a.hasClass("hidden"))return a.addClass("hidden"),void a.hide();a.removeClass("hidden"),a.show(),a.hasClass("loaded")||(a.addClass("loaded"),c().ajax(Jt.generateUrl("/contactsmenu/findOne"),{method:"POST",data:{shareType:n,shareWith:e}}).then((function(e){a.find("ul").find("li").addClass("hidden"),(e.topAction?[e.topAction].concat(e.actions):[{hyperlink:"#",title:t("core","No action available")}]).forEach((function(t){a.find("ul").append(zn(t))})),o.trigger("load")}),(function(e){var n;a.find("ul").find("li").addClass("hidden"),n=404===e.status?t("core","No action available"):t("core","Error fetching contact actions"),a.find("ul").append(zn({hyperlink:"#",title:n})),o.trigger("loaderror",e)})))}})),c()(document).click((function(t){var e=a.has(t.target).length>0,n=o.has(t.target).length>0;o.each((function(){c()(this).is(t.target)&&(n=!0)})),e||n||(a.addClass("hidden"),a.hide())}))}},c().fn.exists=function(){return this.length>0},c().fn.filterAttr=function(t,e){return this.filter((function(){return c()(this).attr(t)===e}))},c().widget("oc.ocdialog",{options:{width:"auto",height:"auto",closeButton:!0,closeOnEscape:!0,closeCallback:null,modal:!1},_create:function(){var t=this;this.originalCss={display:this.element[0].style.display,width:this.element[0].style.width,height:this.element[0].style.height},this.originalTitle=this.element.attr("title"),this.options.title=this.options.title||this.originalTitle,this.$dialog=c()('<div class="oc-dialog"></div>').attr({tabIndex:-1,role:"dialog"}).insertBefore(this.element),this.$dialog.append(this.element.detach()),this.element.removeAttr("title").addClass("oc-dialog-content").appendTo(this.$dialog),1===t.element.find("input").length&&t.element.find("input").on("keydown",(function(e){if(lt(e)&&t.$buttonrow){var n=t.$buttonrow.find("button.primary");n&&!n.prop("disabled")&&n.click()}})),this.$dialog.css({display:"inline-block",position:"fixed"}),this.enterCallback=null,c()(document).on("keydown keyup",(function(e){if(e.target===t.$dialog.get(0)||0!==t.$dialog.find(c()(e.target)).length)return 27===e.keyCode&&"keydown"===e.type&&t.options.closeOnEscape?(e.stopImmediatePropagation(),t.close(),!1):13===e.keyCode?(e.stopImmediatePropagation(),null!==t.enterCallback?(t.enterCallback(),e.preventDefault(),!1):"keyup"===e.type&&(e.preventDefault(),!1)):void 0})),this._setOptions(this.options),this._createOverlay()},_init:function(){this.$dialog.focus(),this._trigger("open")},_setOption:function(t,e){var n=this;switch(t){case"title":if(this.$title)this.$title.text(e);else{var i=c()('<h2 class="oc-dialog-title">'+e+"</h2>");this.$title=i.prependTo(this.$dialog)}this._setSizes();break;case"buttons":if(this.$buttonrow)this.$buttonrow.empty();else{var o=c()('<div class="oc-dialog-buttonrow"></div>');this.$buttonrow=o.appendTo(this.$dialog)}1===e.length?this.$buttonrow.addClass("onebutton"):2===e.length?this.$buttonrow.addClass("twobuttons"):3===e.length&&this.$buttonrow.addClass("threebuttons"),c().each(e,(function(t,e){var i=c()("<button>").text(e.text);e.classes&&i.addClass(e.classes),e.defaultButton&&(i.addClass("primary"),n.$defaultButton=i),n.$buttonrow.append(i),i.on("click keydown",(function(t){lt(t)&&e.click.apply(n.element[0],arguments)}))})),this.$buttonrow.find("button").on("focus",(function(t){n.$buttonrow.find("button").removeClass("primary"),c()(this).addClass("primary")})),this._setSizes();break;case"style":void 0!==e.buttons&&this.$buttonrow.addClass(e.buttons);break;case"closeButton":if(e){var a=c()('<a class="oc-dialog-close" tabindex="0"></a>');this.$dialog.prepend(a),a.on("click keydown",(function(t){lt(t)&&(n.options.closeCallback&&n.options.closeCallback(),n.close())}))}else this.$dialog.find(".oc-dialog-close").remove();break;case"width":this.$dialog.css("width",e);break;case"height":this.$dialog.css("height",e);break;case"close":this.closeCB=e}c().Widget.prototype._setOption.apply(this,arguments)},_setOptions:function(t){c().Widget.prototype._setOptions.apply(this,arguments)},_setSizes:function(){var t=0;this.$title&&(t+=this.$title.outerHeight(!0)),this.$buttonrow&&(t+=this.$buttonrow.outerHeight(!0)),this.element.css({height:"calc(100% - "+t+"px)"})},_createOverlay:function(){if(this.options.modal){var t=this,e=c()("#content");0===e.length&&(e=c()(".content")),this.overlay=c()("<div>").addClass("oc-dialog-dim").appendTo(e),this.overlay.on("click keydown keyup",(function(e){e.target!==t.$dialog.get(0)&&0===t.$dialog.find(c()(e.target)).length&&(e.preventDefault(),e.stopPropagation())}))}},_destroyOverlay:function(){this.options.modal&&this.overlay&&(this.overlay.off("click keydown keyup"),this.overlay.remove(),this.overlay=null)},widget:function(){return this.$dialog},setEnterCallback:function(t){this.enterCallback=t},unsetEnterCallback:function(){this.enterCallback=null},close:function(){this._destroyOverlay();var t=this;setTimeout((function(){t._trigger("close",t)}),200),t.$dialog.remove(),this.destroy()},destroy:function(){this.$title&&this.$title.remove(),this.$buttonrow&&this.$buttonrow.remove(),this.originalTitle&&this.element.attr("title",this.originalTitle),this.element.removeClass("oc-dialog-content").css(this.originalCss).detach().insertBefore(this.$dialog),this.$dialog.remove()}});var Sn=o(25108),Nn={init:function(t,e,n){if(this.vars=t,this.options=c().extend({},this.options,e),this.elem=n,"function"==typeof this.options.escapeFunction)for(var i=Object.keys(this.vars),o=0;o<i.length;o++)"string"==typeof this.vars[i[o]]&&(this.vars[i[o]]=this.options.escapeFunction(this.vars[i[o]]));var a=this._build(this.vars);return c()(a)},_build:function(t){var e="text/template"===this.elem.attr("type")?this.elem.html():this.elem.get(0).outerHTML;try{return e.replace(/{([^{}]*)}/g,(function(e,n){var i=t[n];return"string"==typeof i||"number"==typeof i?i:e}))}catch(t){Sn.error(t,"data:",e)}},options:{escapeFunction:kn()}};c().fn.octemplate=function(t,e){if(t=t||{},this.length)return Object.create(Nn).init(t,e,this)};var Un=o(25108),Mn=function(t){var e=t.toLowerCase();function n(t,e,n){this.r=t,this.g=e,this.b=n}function i(t,e,i){var o=[];o.push(e);for(var a=function(t,e){var n=new Array(3);return n[0]=(e[1].r-e[0].r)/t,n[1]=(e[1].g-e[0].g)/t,n[2]=(e[1].b-e[0].b)/t,n}(t,[e,i]),r=1;r<t;r++){var s=parseInt(e.r+a[0]*r),l=parseInt(e.g+a[1]*r),c=parseInt(e.b+a[2]*r);o.push(new n(s,l,c))}return o}null===e.match(/^([0-9a-f]{4}-?){8}$/)&&(e=rn()(e)),e=e.replace(/[^0-9a-f]/g,"");var o=new n(182,70,157),a=new n(221,203,85),r=new n(0,130,201),s=i(6,o,a),l=i(6,a,r),c=i(6,r,o);return s.concat(l).concat(c)[function(t,e){for(var n=0,i=[],o=0;o<t.length;o++)i.push(parseInt(t.charAt(o),16)%16);for(var a in i)n+=i[a];return parseInt(parseInt(n)%18)}(e)]};String.prototype.toRgb=function(){return Un.warn("String.prototype.toRgb is deprecated! It will be removed in Nextcloud 22."),Mn(this)},c().fn.imageplaceholder=function(t,e,n){e=e||t;var i=Mn(t);this.css("background-color","rgb("+i.r+", "+i.g+", "+i.b+")");var o=this.height()||n||32;if(this.height(o),this.width(o),this.css("color","#fff"),this.css("font-weight","normal"),this.css("text-align","center"),this.css("line-height",o+"px"),this.css("font-size",.55*o+"px"),null!==t&&t.length){var a=e.replace(/\s+/g," ").trim().split(" ",2).map((function(t){return t[0].toUpperCase()})).join("");this.html(a)}},c().fn.clearimageplaceholder=function(){this.css("background-color",""),this.css("color",""),this.css("font-weight",""),this.css("text-align",""),this.css("line-height",""),this.css("font-size",""),this.html(""),this.removeClass("icon-loading"),this.removeClass("icon-loading-small")},c()(document).on("ajaxSend",(function(t,e,n){!1===n.crossDomain&&(e.setRequestHeader("requesttoken",bt()),e.setRequestHeader("OCS-APIREQUEST","true"))})),c().fn.selectRange=function(t,e){return this.each((function(){if(this.setSelectionRange)this.focus(),this.setSelectionRange(t,e);else if(this.createTextRange){var n=this.createTextRange();n.collapse(!0),n.moveEnd("character",e),n.moveStart("character",t),n.select()}}))},c().fn.extend({showPassword:function(t){var e={fn:null,args:{}};e.fn=t;var n=function(t,e){e.val(t.val())},i=function(t,e,i){t.is(":checked")?(n(e,i),i.show(),e.hide()):(n(i,e),i.hide(),e.show())};return this.each((function(){var t=c()(this),o=c()(t.data("typetoggle")),a=function(t){var e=c()(t),n=c()("<input />");return n.attr({type:"text",class:e.attr("class"),style:e.attr("style"),size:e.attr("size"),name:e.attr("name")+"-clone",tabindex:e.attr("tabindex"),autocomplete:"off"}),void 0!==e.attr("placeholder")&&n.attr("placeholder",e.attr("placeholder")),n}(t);a.insertAfter(t),e.fn&&(e.args.input=t,e.args.checkbox=o,e.args.clone=a),o.bind("click",(function(){i(o,t,a)})),t.bind("keyup",(function(){n(t,a)})),a.bind("keyup",(function(){n(a,t),t.trigger("keyup")})),a.bind("blur",(function(){t.trigger("focusout")})),i(o,t,a),a.closest("form").submit((function(t){a.prop("type","password")})),e.fn&&e.fn(e.args)}))}}),c().ui.autocomplete.prototype._resizeMenu=function(){this.menu.element.outerWidth(this.element.outerWidth())};var Ln=o(12448),Fn={};Fn.styleTagTransform=we(),Fn.setAttributes=ge(),Fn.insert=he().bind(null,"head"),Fn.domAPI=pe(),Fn.insertStyleElement=Ce(),de()(Ln.Z,Fn),Ln.Z&&Ln.Z.locals&&Ln.Z.locals;var Rn=o(72417),Qn={};Qn.styleTagTransform=we(),Qn.setAttributes=ge(),Qn.insert=he().bind(null,"head"),Qn.domAPI=pe(),Qn.insertStyleElement=Ce(),de()(Rn.Z,Qn),Rn.Z&&Rn.Z.locals&&Rn.Z.locals,c().ajaxSetup({contents:{script:!1}}),c().globalEval=function(){},window.addEventListener("DOMContentLoaded",(function(){var t;$e(),0===(t=c()("[data-apps-slide-toggle]")).length&&c()("#app-navigation").addClass("without-app-settings"),c()(document).click((function(e){b&&(t=c()("[data-apps-slide-toggle]")),t.each((function(t,n){var i=c()(n).data("apps-slide-toggle"),o=c()(i);function a(){o.slideUp(4*OC.menuSpeed,(function(){o.trigger(new(c().Event)("hide"))})),o.removeClass("opened"),c()(n).removeClass("opened")}if(!o.is(":animated"))if(c()(n).is(c()(e.target).closest("[data-apps-slide-toggle]")))o.is(":visible")?a():function(){o.slideDown(4*OC.menuSpeed,(function(){o.trigger(new(c().Event)("show"))})),o.addClass("opened"),c()(n).addClass("opened");var t=c()(i+" [autofocus]");1===t.length&&t.focus()}();else{var r=c()(e.target).closest(i);o.is(":visible")&&r[0]!==o[0]&&a()}}))})),window.history.pushState?window.onpopstate=_.bind(Jt.Util.History._onPopState,Jt.Util.History):c()(window).on("hashchange",_.bind(Jt.Util.History._onPopState,Jt.Util.History))}))},12448:function(t,e,n){"use strict";var i=n(87537),o=n.n(i),a=n(23645),r=n.n(a),s=n(61667),l=n.n(s),c=new URL(n(58188),n.b),u=new URL(n(40337),n.b),d=new URL(n(33178),n.b),A=new URL(n(12081),n.b),p=new URL(n(47868),n.b),f=r()(o()),h=l()(c),m=l()(u),g=l()(d),v=l()(A),C=l()(p);f.push([t.id,".ui-widget-content{border:1px solid var(--color-border);background:var(--color-main-background) none;color:var(--color-main-text)}.ui-widget-content a{color:var(--color-main-text)}.ui-widget-header{border:none;color:var(--color-main-text);background-image:none}.ui-widget-header a{color:var(--color-main-text)}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default{border:1px solid var(--color-border);background:var(--color-main-background) none;font-weight:bold;color:#555}.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited{color:#555}.ui-state-hover,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-hover,.ui-state-focus,.ui-widget-content .ui-state-focus,.ui-widget-header .ui-state-focus{border:1px solid #ddd;background:var(--color-main-background) none;font-weight:bold;color:var(--color-main-text)}.ui-state-hover a,.ui-state-hover a:hover,.ui-state-hover a:link,.ui-state-hover a:visited{color:var(--color-main-text)}.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active{border:1px solid var(--color-primary);background:var(--color-main-background) none;font-weight:bold;color:var(--color-main-text)}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:var(--color-main-text)}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid var(--color-main-background);background:var(--color-main-background) none;color:var(--color-text-light);font-weight:600}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:var(--color-text-lighter)}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:var(--color-error);background:var(--color-error) none;color:#fff}.ui-state-error a,.ui-widget-content .ui-state-error a,.ui-widget-header .ui-state-error a{color:#fff}.ui-state-error-text,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error-text{color:#fff}.ui-state-default .ui-icon{background-image:url("+h+")}.ui-state-hover .ui-icon,.ui-state-focus .ui-icon{background-image:url("+h+")}.ui-state-active .ui-icon{background-image:url("+h+")}.ui-state-highlight .ui-icon{background-image:url("+m+")}.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background-image:url("+g+")}.ui-icon.ui-icon-none{display:none}.ui-widget-overlay{background:#666 url("+v+") 50% 50% repeat;opacity:.5}.ui-widget-shadow{margin:-5px 0 0 -5px;padding:5px;background:#000 url("+C+") 50% 50% repeat-x;opacity:.2;border-radius:5px}.ui-tabs{border:none}.ui-tabs .ui-tabs-nav.ui-corner-all{border-bottom-left-radius:0;border-bottom-right-radius:0}.ui-tabs .ui-tabs-nav{background:none;margin-bottom:15px}.ui-tabs .ui-tabs-nav .ui-state-default{border:none;border-bottom:1px solid rgba(0,0,0,0);font-weight:normal;margin:0 !important;padding:0 !important}.ui-tabs .ui-tabs-nav .ui-state-hover,.ui-tabs .ui-tabs-nav .ui-state-active{border:none;border-bottom:1px solid var(--color-main-text);color:var(--color-main-text)}.ui-tabs .ui-tabs-nav .ui-state-hover a,.ui-tabs .ui-tabs-nav .ui-state-hover a:link,.ui-tabs .ui-tabs-nav .ui-state-hover a:hover,.ui-tabs .ui-tabs-nav .ui-state-hover a:visited,.ui-tabs .ui-tabs-nav .ui-state-active a,.ui-tabs .ui-tabs-nav .ui-state-active a:link,.ui-tabs .ui-tabs-nav .ui-state-active a:hover,.ui-tabs .ui-tabs-nav .ui-state-active a:visited{color:var(--color-main-text)}.ui-tabs .ui-tabs-nav .ui-state-active{font-weight:bold}.ui-autocomplete.ui-menu{padding:0}.ui-autocomplete.ui-menu.item-count-1,.ui-autocomplete.ui-menu.item-count-2{overflow-y:hidden}.ui-autocomplete.ui-menu .ui-menu-item a{color:var(--color-text-lighter);display:block;padding:4px 4px 4px 14px}.ui-autocomplete.ui-menu .ui-menu-item a.ui-state-focus,.ui-autocomplete.ui-menu .ui-menu-item a.ui-state-active{box-shadow:inset 4px 0 var(--color-primary-element);color:var(--color-main-text)}.ui-autocomplete.ui-widget-content{background:var(--color-main-background);border-top:none}.ui-autocomplete.ui-corner-all{border-radius:0;border-bottom-left-radius:var(--border-radius);border-bottom-right-radius:var(--border-radius)}.ui-autocomplete .ui-state-hover,.ui-autocomplete .ui-widget-content .ui-state-hover,.ui-autocomplete .ui-widget-header .ui-state-hover,.ui-autocomplete .ui-state-focus,.ui-autocomplete .ui-widget-content .ui-state-focus,.ui-autocomplete .ui-widget-header .ui-state-focus{border:1px solid rgba(0,0,0,0);background:inherit;color:var(--color-primary-element)}.ui-autocomplete .ui-menu-item a{border-radius:0 !important}.ui-button.primary{background-color:var(--color-primary);color:var(--color-primary-text);border:1px solid var(--color-primary-text)}.ui-button:hover{font-weight:bold !important}.ui-draggable-handle,.ui-selectable{touch-action:pan-y}","",{version:3,sources:["webpack://./core/src/jquery/css/jquery-ui-fixes.scss"],names:[],mappings:"AAEA,mBACC,oCAAA,CACA,4CAAA,CACA,4BAAA,CAED,qBACC,4BAAA,CAED,kBACC,WAAA,CACA,4BAAA,CACA,qBAAA,CAED,oBACC,4BAAA,CAKD,2FAGC,oCAAA,CACA,4CAAA,CACA,gBAAA,CACA,UAAA,CAED,yEAGC,UAAA,CAED,0KAMC,qBAAA,CACA,4CAAA,CACA,gBAAA,CACA,4BAAA,CAED,2FAIC,4BAAA,CAED,wFAGC,qCAAA,CACA,4CAAA,CACA,gBAAA,CACA,4BAAA,CAED,sEAGC,4BAAA,CAKD,iGAGC,6CAAA,CACA,4CAAA,CACA,6BAAA,CACA,eAAA,CAED,uGAGC,+BAAA,CAED,qFAGC,yBAAA,CACA,kCAAA,CACA,UAAA,CAED,2FAGC,UAAA,CAED,oGAGC,UAAA,CAKD,2BACC,wDAAA,CAED,kDAEC,wDAAA,CAED,0BACC,wDAAA,CAED,6BACC,wDAAA,CAED,uDAEC,wDAAA,CAED,sBACC,YAAA,CAMD,mBACC,sEAAA,CACA,UAAA,CAED,kBACC,oBAAA,CACA,WAAA,CACA,wEAAA,CACA,UAAA,CACA,iBAAA,CAID,SACC,WAAA,CAEA,oCACC,2BAAA,CACA,4BAAA,CAGD,sBACC,eAAA,CACA,kBAAA,CAEA,wCACC,WAAA,CACA,qCAAA,CACA,kBAAA,CACA,mBAAA,CACA,oBAAA,CAGD,6EAEC,WAAA,CACA,8CAAA,CACA,4BAAA,CACA,0WACC,4BAAA,CAGF,uCACC,gBAAA,CAOF,yBACC,SAAA,CAIA,4EAEC,iBAAA,CAGD,yCACC,+BAAA,CACA,aAAA,CACA,wBAAA,CAEA,iHACC,mDAAA,CACA,4BAAA,CAKH,mCACC,uCAAA,CACA,eAAA,CAGD,+BACC,eAAA,CACA,8CAAA,CACA,+CAAA,CAGD,gRAKC,8BAAA,CACA,kBAAA,CACA,kCAAA,CAIA,iCACC,0BAAA,CAKH,mBACC,qCAAA,CACA,+BAAA,CACA,0CAAA,CAID,iBACI,2BAAA,CAKJ,oCAEC,kBAAA",sourcesContent:["/* Component containers\n----------------------------------*/\n.ui-widget-content {\n\tborder: 1px solid var(--color-border);\n\tbackground: var(--color-main-background) none;\n\tcolor: var(--color-main-text);\n}\n.ui-widget-content a {\n\tcolor: var(--color-main-text);\n}\n.ui-widget-header {\n\tborder: none;\n\tcolor: var(--color-main-text);\n\tbackground-image: none;\n}\n.ui-widget-header a {\n\tcolor: var(--color-main-text);\n}\n\n/* Interaction states\n----------------------------------*/\n.ui-state-default,\n.ui-widget-content .ui-state-default,\n.ui-widget-header .ui-state-default {\n\tborder: 1px solid var(--color-border);\n\tbackground: var(--color-main-background) none;\n\tfont-weight: bold;\n\tcolor: #555;\n}\n.ui-state-default a,\n.ui-state-default a:link,\n.ui-state-default a:visited {\n\tcolor: #555;\n}\n.ui-state-hover,\n.ui-widget-content .ui-state-hover,\n.ui-widget-header .ui-state-hover,\n.ui-state-focus,\n.ui-widget-content .ui-state-focus,\n.ui-widget-header .ui-state-focus {\n\tborder: 1px solid #ddd;\n\tbackground: var(--color-main-background) none;\n\tfont-weight: bold;\n\tcolor: var(--color-main-text);\n}\n.ui-state-hover a,\n.ui-state-hover a:hover,\n.ui-state-hover a:link,\n.ui-state-hover a:visited {\n\tcolor: var(--color-main-text);\n}\n.ui-state-active,\n.ui-widget-content .ui-state-active,\n.ui-widget-header .ui-state-active {\n\tborder: 1px solid var(--color-primary);\n\tbackground: var(--color-main-background) none;\n\tfont-weight: bold;\n\tcolor: var(--color-main-text);\n}\n.ui-state-active a,\n.ui-state-active a:link,\n.ui-state-active a:visited {\n\tcolor: var(--color-main-text);\n}\n\n/* Interaction Cues\n----------------------------------*/\n.ui-state-highlight,\n.ui-widget-content .ui-state-highlight,\n.ui-widget-header .ui-state-highlight {\n\tborder: 1px solid var(--color-main-background);\n\tbackground: var(--color-main-background) none;\n\tcolor: var(--color-text-light);\n\tfont-weight: 600;\n}\n.ui-state-highlight a,\n.ui-widget-content .ui-state-highlight a,\n.ui-widget-header .ui-state-highlight a {\n\tcolor: var(--color-text-lighter);\n}\n.ui-state-error,\n.ui-widget-content .ui-state-error,\n.ui-widget-header .ui-state-error {\n\tborder: var(--color-error);\n\tbackground: var(--color-error) none;\n\tcolor: #ffffff;\n}\n.ui-state-error a,\n.ui-widget-content .ui-state-error a,\n.ui-widget-header .ui-state-error a {\n\tcolor: #ffffff;\n}\n.ui-state-error-text,\n.ui-widget-content .ui-state-error-text,\n.ui-widget-header .ui-state-error-text {\n\tcolor: #ffffff;\n}\n\n/* Icons\n----------------------------------*/\n.ui-state-default .ui-icon {\n\tbackground-image: url('images/ui-icons_1d2d44_256x240.png');\n}\n.ui-state-hover .ui-icon,\n.ui-state-focus .ui-icon {\n\tbackground-image: url('images/ui-icons_1d2d44_256x240.png');\n}\n.ui-state-active .ui-icon {\n\tbackground-image: url('images/ui-icons_1d2d44_256x240.png');\n}\n.ui-state-highlight .ui-icon {\n\tbackground-image: url('images/ui-icons_ffffff_256x240.png');\n}\n.ui-state-error .ui-icon,\n.ui-state-error-text .ui-icon {\n\tbackground-image: url('images/ui-icons_ffd27a_256x240.png');\n}\n.ui-icon.ui-icon-none {\n\tdisplay: none;\n}\n\n/* Misc visuals\n----------------------------------*/\n/* Overlays */\n.ui-widget-overlay {\n\tbackground: #666666 url('images/ui-bg_diagonals-thick_20_666666_40x40.png') 50% 50% repeat;\n\topacity: .5;\n}\n.ui-widget-shadow {\n\tmargin: -5px 0 0 -5px;\n\tpadding: 5px;\n\tbackground: #000000 url('images/ui-bg_flat_10_000000_40x100.png') 50% 50% repeat-x;\n\topacity: .2;\n\tborder-radius: 5px;\n}\n\n/* Tabs customizations */\n.ui-tabs {\n\tborder: none;\n\n\t.ui-tabs-nav.ui-corner-all {\n\t\tborder-bottom-left-radius: 0;\n\t\tborder-bottom-right-radius: 0;\n\t}\n\n\t.ui-tabs-nav {\n\t\tbackground: none;\n\t\tmargin-bottom: 15px;\n\n\t\t.ui-state-default {\n\t\t\tborder: none;\n\t\t\tborder-bottom: 1px solid transparent;\n\t\t\tfont-weight: normal;\n\t\t\tmargin: 0 !important;\n\t\t\tpadding: 0 !important;\n\t\t}\n\n\t\t.ui-state-hover,\n\t\t.ui-state-active {\n\t\t\tborder: none;\n\t\t\tborder-bottom: 1px solid var(--color-main-text);\n\t\t\tcolor: var(--color-main-text);\n\t\t\ta, a:link, a:hover, a:visited {\n\t\t\t\tcolor: var(--color-main-text);\n\t\t\t}\n\t\t}\n\t\t.ui-state-active {\n\t\t\tfont-weight: bold;\n\t\t}\n\t}\n}\n\n/* Select menus */\n.ui-autocomplete {\n\t&.ui-menu {\n\t\tpadding: 0;\n\n\t\t/* scrolling starts from three items,\n\t\t * so hide overflow and scrollbars for a clean layout */\n\t\t&.item-count-1,\n\t\t&.item-count-2 {\n\t\t\toverflow-y: hidden;\n\t\t}\n\n\t\t.ui-menu-item a {\n\t\t\tcolor: var(--color-text-lighter);\n\t\t\tdisplay: block;\n\t\t\tpadding: 4px 4px 4px 14px;\n\n\t\t\t&.ui-state-focus, &.ui-state-active {\n\t\t\t\tbox-shadow: inset 4px 0 var(--color-primary-element);\n\t\t\t\tcolor: var(--color-main-text);\n\t\t\t}\n\t\t}\n\t}\n\n\t&.ui-widget-content {\n\t\tbackground: var(--color-main-background);\n\t\tborder-top: none;\n\t}\n\n\t&.ui-corner-all {\n\t\tborder-radius: 0;\n\t\tborder-bottom-left-radius: var(--border-radius);\n\t\tborder-bottom-right-radius: var(--border-radius);\n\t}\n\n\t.ui-state-hover, .ui-widget-content .ui-state-hover,\n\t.ui-widget-header .ui-state-hover,\n\t.ui-state-focus,\n\t.ui-widget-content .ui-state-focus,\n\t.ui-widget-header .ui-state-focus {\n\t\tborder: 1px solid transparent;\n\t\tbackground: inherit;\n\t\tcolor: var(--color-primary-element);\n\t}\n\n\t.ui-menu-item {\n\t\ta {\n\t\t\tborder-radius: 0 !important;\n\t\t}\n\t}\n}\n\n.ui-button.primary {\n\tbackground-color: var(--color-primary);\n\tcolor: var(--color-primary-text);\n\tborder: 1px solid var(--color-primary-text);\n}\n\n// fix ui-buttons on hover\n.ui-button:hover {\n font-weight:bold !important;\n}\n\n\n/* DRAGGABLE */\n.ui-draggable-handle,\n.ui-selectable {\n\ttouch-action: pan-y;\n}\n"],sourceRoot:""}]),e.Z=f},72417:function(t,e,n){"use strict";var i=n(87537),o=n.n(i),a=n(23645),r=n.n(a)()(o());r.push([t.id,".oc-dialog{background:var(--color-main-background);color:var(--color-text-light);border-radius:var(--border-radius-large);box-shadow:0 0 30px var(--color-box-shadow);padding:24px;z-index:10000;font-size:100%;box-sizing:border-box;min-width:200px;top:50%;left:50%;transform:translate(-50%, -50%);max-height:calc(100% - 20px);max-width:calc(100% - 20px);overflow:auto}.oc-dialog-title{background:var(--color-main-background)}.oc-dialog-buttonrow{position:relative;display:flex;background:rgba(0,0,0,0);right:0;bottom:0;padding:0;padding-top:10px;box-sizing:border-box;width:100%;background-image:linear-gradient(rgba(255, 255, 255, 0), var(--color-main-background))}.oc-dialog-buttonrow.twobuttons{justify-content:space-between}.oc-dialog-buttonrow.onebutton,.oc-dialog-buttonrow.twobuttons.aside{justify-content:flex-end}.oc-dialog-buttonrow button{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;height:44px;min-width:44px}.oc-dialog-close{position:absolute;top:0;right:0;padding:25px;background:var(--icon-close-dark) no-repeat center;opacity:.5;border-radius:var(--border-radius-pill)}.oc-dialog-close:hover,.oc-dialog-close:focus,.oc-dialog-close:active{opacity:1}.oc-dialog-dim{background-color:#000;opacity:.2;z-index:9999;position:fixed;top:0;left:0;width:100%;height:100%}body.theme--dark .oc-dialog-dim{opacity:.8}.oc-dialog-content{width:100%;max-width:550px}.oc-dialog.password-confirmation .oc-dialog-content{width:auto}.oc-dialog.password-confirmation .oc-dialog-content input[type=password]{width:100%}.oc-dialog.password-confirmation .oc-dialog-content label{display:none}","",{version:3,sources:["webpack://./core/src/jquery/css/jquery.ocdialog.scss"],names:[],mappings:"AAAA,WACC,uCAAA,CACA,6BAAA,CACA,wCAAA,CACA,2CAAA,CACA,YAAA,CACA,aAAA,CACA,cAAA,CACA,qBAAA,CACA,eAAA,CACA,OAAA,CACA,QAAA,CACA,+BAAA,CACA,4BAAA,CACA,2BAAA,CACA,aAAA,CAED,iBACC,uCAAA,CAED,qBACC,iBAAA,CACA,YAAA,CACA,wBAAA,CACA,OAAA,CACA,QAAA,CACA,SAAA,CACA,gBAAA,CACA,qBAAA,CACA,UAAA,CACA,sFAAA,CAEA,gCACO,6BAAA,CAGP,qEAEC,wBAAA,CAGD,4BACI,kBAAA,CACA,eAAA,CACH,sBAAA,CACA,WAAA,CACA,cAAA,CAIF,iBACC,iBAAA,CACA,KAAA,CACA,OAAA,CACA,YAAA,CACA,kDAAA,CACA,UAAA,CACA,uCAAA,CAEA,sEAGC,SAAA,CAIF,eACC,qBAAA,CACA,UAAA,CACA,YAAA,CACA,cAAA,CACA,KAAA,CACA,MAAA,CACA,UAAA,CACA,WAAA,CAGD,gCACC,UAAA,CAGD,mBACC,UAAA,CACA,eAAA,CAIA,oDACC,UAAA,CAEA,yEACC,UAAA,CAED,0DACC,YAAA",sourcesContent:[".oc-dialog {\n\tbackground: var(--color-main-background);\n\tcolor: var(--color-text-light);\n\tborder-radius: var(--border-radius-large);\n\tbox-shadow: 0 0 30px var(--color-box-shadow);\n\tpadding: 24px;\n\tz-index: 10000;\n\tfont-size: 100%;\n\tbox-sizing: border-box;\n\tmin-width: 200px;\n\ttop: 50%;\n\tleft: 50%;\n\ttransform: translate(-50%, -50%);\n\tmax-height: calc(100% - 20px);\n\tmax-width: calc(100% - 20px);\n\toverflow: auto;\n}\n.oc-dialog-title {\n\tbackground: var(--color-main-background);\n}\n.oc-dialog-buttonrow {\n\tposition: relative;\n\tdisplay: flex;\n\tbackground: transparent;\n\tright: 0;\n\tbottom: 0;\n\tpadding: 0;\n\tpadding-top: 10px;\n\tbox-sizing: border-box;\n\twidth: 100%;\n\tbackground-image: linear-gradient(rgba(255, 255, 255, 0.0), var(--color-main-background));\n\n\t&.twobuttons {\n justify-content: space-between;\n }\n\n\t&.onebutton,\n\t&.twobuttons.aside {\n\t\tjustify-content: flex-end;\n\t}\n\n\tbutton {\n\t white-space: nowrap;\n\t overflow: hidden;\n\t\ttext-overflow: ellipsis;\n\t\theight: 44px;\n\t\tmin-width: 44px;\n\t}\n}\n\n.oc-dialog-close {\n\tposition: absolute;\n\ttop: 0;\n\tright: 0;\n\tpadding: 25px;\n\tbackground: var(--icon-close-dark) no-repeat center;\n\topacity: .5;\n\tborder-radius: var(--border-radius-pill);\n\n\t&:hover,\n\t&:focus,\n\t&:active {\n\t\topacity: 1;\n\t}\n}\n\n.oc-dialog-dim {\n\tbackground-color: #000;\n\topacity: .2;\n\tz-index: 9999;\n\tposition: fixed;\n\ttop: 0;\n\tleft: 0;\n\twidth: 100%;\n\theight: 100%;\n}\n\nbody.theme--dark .oc-dialog-dim {\n\topacity: .8;\n}\n\n.oc-dialog-content {\n\twidth: 100%;\n\tmax-width: 550px;\n}\n\n.oc-dialog.password-confirmation {\n\t.oc-dialog-content {\n\t\twidth: auto;\n\n\t\tinput[type=password] {\n\t\t\twidth: 100%;\n\t\t}\n\t\tlabel {\n\t\t\tdisplay: none;\n\t\t}\n\t}\n}\n"],sourceRoot:""}]),e.Z=r},9572:function(t,e,n){"use strict";var i=n(87537),o=n.n(i),a=n(23645),r=n.n(a)()(o());r.push([t.id,'.app-menu[data-v-44a795f6]{width:100%;display:flex;flex-shrink:1;flex-wrap:wrap}.app-menu-main[data-v-44a795f6]{display:flex;flex-wrap:nowrap}.app-menu-main .app-menu-entry[data-v-44a795f6]{width:50px;height:50px;position:relative;display:flex;opacity:.7;filter:var(--background-image-invert-if-bright)}.app-menu-main .app-menu-entry.app-menu-entry__active[data-v-44a795f6]{opacity:1}.app-menu-main .app-menu-entry.app-menu-entry__active[data-v-44a795f6]::before{content:" ";position:absolute;pointer-events:none;border-bottom-color:var(--color-main-background);transform:translateX(-50%);width:12px;height:5px;border-radius:3px;background-color:var(--color-primary-text);left:50%;bottom:6px;display:block;transition:all .1s ease-in-out;opacity:1}.app-menu-main .app-menu-entry.app-menu-entry__active .app-menu-entry--label[data-v-44a795f6]{font-weight:bold}.app-menu-main .app-menu-entry a[data-v-44a795f6]{width:calc(100% - 4px);height:calc(100% - 4px);margin:2px;color:var(--color-primary-text);position:relative}.app-menu-main .app-menu-entry img[data-v-44a795f6]{transition:margin .1s ease-in-out;width:20px;height:20px;padding:calc((100% - 20px)/2);box-sizing:content-box}.app-menu-main .app-menu-entry .app-menu-entry--label[data-v-44a795f6]{opacity:0;position:absolute;font-size:12px;color:var(--color-primary-text);text-align:center;bottom:-5px;left:50%;top:45%;display:block;min-width:100%;transform:translateX(-50%);transition:all .1s ease-in-out;width:100%;text-overflow:ellipsis;overflow:hidden;letter-spacing:-0.5px}.app-menu-main .app-menu-entry[data-v-44a795f6]:hover,.app-menu-main .app-menu-entry[data-v-44a795f6]:focus-within{opacity:1}.app-menu-main .app-menu-entry:hover .app-menu-entry--label[data-v-44a795f6],.app-menu-main .app-menu-entry:focus-within .app-menu-entry--label[data-v-44a795f6]{opacity:1;font-weight:bolder;bottom:0;width:100%;text-overflow:ellipsis;overflow:hidden}.app-menu-main[data-v-44a795f6]:hover,.app-menu-main[data-v-44a795f6]:focus-within,.app-menu-main .app-menu-entry[data-v-44a795f6]:hover,.app-menu-main .app-menu-entry[data-v-44a795f6]:focus{opacity:1}.app-menu-main:hover img[data-v-44a795f6],.app-menu-main:focus-within img[data-v-44a795f6],.app-menu-main .app-menu-entry:hover img[data-v-44a795f6],.app-menu-main .app-menu-entry:focus img[data-v-44a795f6]{margin-top:-8px}.app-menu-main:hover .app-menu-entry--label[data-v-44a795f6],.app-menu-main:focus-within .app-menu-entry--label[data-v-44a795f6],.app-menu-main .app-menu-entry:hover .app-menu-entry--label[data-v-44a795f6],.app-menu-main .app-menu-entry:focus .app-menu-entry--label[data-v-44a795f6]{opacity:1;bottom:0}.app-menu-main[data-v-44a795f6]:hover::before,.app-menu-main:hover .app-menu-entry[data-v-44a795f6]::before,.app-menu-main[data-v-44a795f6]:focus-within::before,.app-menu-main:focus-within .app-menu-entry[data-v-44a795f6]::before,.app-menu-main .app-menu-entry[data-v-44a795f6]:hover::before,.app-menu-main .app-menu-entry:hover .app-menu-entry[data-v-44a795f6]::before,.app-menu-main .app-menu-entry[data-v-44a795f6]:focus::before,.app-menu-main .app-menu-entry:focus .app-menu-entry[data-v-44a795f6]::before{opacity:0}[data-v-44a795f6] .app-menu-more .button-vue--vue-tertiary{color:var(--color-primary-text);opacity:.7;margin:3px;filter:var(--background-image-invert-if-bright)}[data-v-44a795f6] .app-menu-more .button-vue--vue-tertiary:hover{opacity:1;background-color:rgba(0,0,0,0) !important}[data-v-44a795f6] .app-menu-more .button-vue--vue-tertiary:focus-visible{opacity:1;outline:none !important}.app-menu-popover-entry .app-icon[data-v-44a795f6]{position:relative;height:44px}.app-menu-popover-entry .app-icon.has-unread[data-v-44a795f6]::after{background-color:var(--color-main-text)}.app-menu-popover-entry .app-icon img[data-v-44a795f6]{width:20px;height:20px;padding:15px}.has-unread[data-v-44a795f6]::after{content:"";width:8px;height:8px;background-color:var(--color-primary-text);border-radius:50%;position:absolute;display:block;top:10px;right:10px}.unread-counter[data-v-44a795f6]{display:none}',"",{version:3,sources:["webpack://./core/src/components/AppMenu.vue"],names:[],mappings:"AAGA,2BACC,UAAA,CACA,YAAA,CACA,aAAA,CACA,cAAA,CAED,gCACC,YAAA,CACA,gBAAA,CAEA,gDACC,UAAA,CACA,WAAA,CACA,iBAAA,CACA,YAAA,CACA,UAAA,CACA,+CAAA,CAEA,uEACC,SAAA,CAEA,+EACC,WAAA,CACA,iBAAA,CACA,mBAAA,CACA,gDAAA,CACA,0BAAA,CACA,UAAA,CACA,UAAA,CACA,iBAAA,CACA,0CAAA,CACA,QAAA,CACA,UAAA,CACA,aAAA,CACA,8BAAA,CACA,SAAA,CAGD,8FACC,gBAAA,CAIF,kDACC,sBAAA,CACA,uBAAA,CACA,UAAA,CACA,+BAAA,CACA,iBAAA,CAGD,oDACC,iCAAA,CACA,UAvDgB,CAwDhB,WAxDgB,CAyDhB,6BAAA,CACA,sBAAA,CAGD,uEACC,SAAA,CACA,iBAAA,CACA,cAAA,CACA,+BAAA,CACA,iBAAA,CACA,WAAA,CACA,QAAA,CACA,OAAA,CACA,aAAA,CACA,cAAA,CACA,0BAAA,CACA,8BAAA,CACA,UAAA,CACA,sBAAA,CACA,eAAA,CACA,qBAAA,CAGD,mHAEC,SAAA,CACA,iKACC,SAAA,CACA,kBAAA,CACA,QAAA,CACA,UAAA,CACA,sBAAA,CACA,eAAA,CAOH,+LAIC,SAAA,CAEA,+MACC,eAAA,CAGD,2RACC,SAAA,CACA,QAAA,CAGD,8fACC,SAAA,CAKH,2DACC,+BAAA,CACA,UAAA,CACA,UAAA,CACA,+CAAA,CAEA,iEACC,SAAA,CACA,yCAAA,CAGD,yEACC,SAAA,CACA,uBAAA,CAKD,mDACC,iBAAA,CACA,WAAA,CAEA,qEACC,uCAAA,CAGD,uDACC,UAhJgB,CAiJhB,WAjJgB,CAkJhB,YAAA,CAKH,oCACC,UAAA,CACA,SAAA,CACA,UAAA,CACA,0CAAA,CACA,iBAAA,CACA,iBAAA,CACA,aAAA,CACA,QAAA,CACA,UAAA,CAGD,iCACC,YAAA",sourcesContent:['\n$header-icon-size: 20px;\n\n.app-menu {\n\twidth: 100%;\n\tdisplay: flex;\n\tflex-shrink: 1;\n\tflex-wrap: wrap;\n}\n.app-menu-main {\n\tdisplay: flex;\n\tflex-wrap: nowrap;\n\n\t.app-menu-entry {\n\t\twidth: 50px;\n\t\theight: 50px;\n\t\tposition: relative;\n\t\tdisplay: flex;\n\t\topacity: .7;\n\t\tfilter: var(--background-image-invert-if-bright);\n\n\t\t&.app-menu-entry__active {\n\t\t\topacity: 1;\n\n\t\t\t&::before {\n\t\t\t\tcontent: " ";\n\t\t\t\tposition: absolute;\n\t\t\t\tpointer-events: none;\n\t\t\t\tborder-bottom-color: var(--color-main-background);\n\t\t\t\ttransform: translateX(-50%);\n\t\t\t\twidth: 12px;\n\t\t\t\theight: 5px;\n\t\t\t\tborder-radius: 3px;\n\t\t\t\tbackground-color: var(--color-primary-text);\n\t\t\t\tleft: 50%;\n\t\t\t\tbottom: 6px;\n\t\t\t\tdisplay: block;\n\t\t\t\ttransition: all 0.1s ease-in-out;\n\t\t\t\topacity: 1;\n\t\t\t}\n\n\t\t\t.app-menu-entry--label {\n\t\t\t\tfont-weight: bold;\n\t\t\t}\n\t\t}\n\n\t\ta {\n\t\t\twidth: calc(100% - 4px);\n\t\t\theight: calc(100% - 4px);\n\t\t\tmargin: 2px;\n\t\t\tcolor: var(--color-primary-text);\n\t\t\tposition: relative;\n\t\t}\n\n\t\timg {\n\t\t\ttransition: margin 0.1s ease-in-out;\n\t\t\twidth: $header-icon-size;\n\t\t\theight: $header-icon-size;\n\t\t\tpadding: calc((100% - $header-icon-size) / 2);\n\t\t\tbox-sizing: content-box;\n\t\t}\n\n\t\t.app-menu-entry--label {\n\t\t\topacity: 0;\n\t\t\tposition: absolute;\n\t\t\tfont-size: 12px;\n\t\t\tcolor: var(--color-primary-text);\n\t\t\ttext-align: center;\n\t\t\tbottom: -5px;\n\t\t\tleft: 50%;\n\t\t\ttop: 45%;\n\t\t\tdisplay: block;\n\t\t\tmin-width: 100%;\n\t\t\ttransform: translateX(-50%);\n\t\t\ttransition: all 0.1s ease-in-out;\n\t\t\twidth: 100%;\n\t\t\ttext-overflow: ellipsis;\n\t\t\toverflow: hidden;\n\t\t\tletter-spacing: -0.5px;\n\t\t}\n\n\t\t&:hover,\n\t\t&:focus-within {\n\t\t\topacity: 1;\n\t\t\t.app-menu-entry--label {\n\t\t\t\topacity: 1;\n\t\t\t\tfont-weight: bolder;\n\t\t\t\tbottom: 0;\n\t\t\t\twidth: 100%;\n\t\t\t\ttext-overflow: ellipsis;\n\t\t\t\toverflow: hidden;\n\t\t\t}\n\t\t}\n\n\t}\n\n\t// Show labels\n\t&:hover,\n\t&:focus-within,\n\t.app-menu-entry:hover,\n\t.app-menu-entry:focus {\n\t\topacity: 1;\n\n\t\timg {\n\t\t\tmargin-top: -8px;\n\t\t}\n\n\t\t.app-menu-entry--label {\n\t\t\topacity: 1;\n\t\t\tbottom: 0;\n\t\t}\n\n\t\t&::before, .app-menu-entry::before {\n\t\t\topacity: 0;\n\t\t}\n\t}\n}\n\n::v-deep .app-menu-more .button-vue--vue-tertiary {\n\tcolor: var(--color-primary-text);\n\topacity: .7;\n\tmargin: 3px;\n\tfilter: var(--background-image-invert-if-bright);\n\n\t&:hover {\n\t\topacity: 1;\n\t\tbackground-color: transparent !important;\n\t}\n\n\t&:focus-visible {\n\t\topacity: 1;\n\t\toutline: none !important;\n\t}\n}\n\n.app-menu-popover-entry {\n\t.app-icon {\n\t\tposition: relative;\n\t\theight: 44px;\n\n\t\t&.has-unread::after {\n\t\t\tbackground-color: var(--color-main-text);\n\t\t}\n\n\t\timg {\n\t\t\twidth: $header-icon-size;\n\t\t\theight: $header-icon-size;\n\t\t\tpadding: calc((50px - $header-icon-size) / 2);\n\t\t}\n\t}\n}\n\n.has-unread::after {\n\tcontent: "";\n\twidth: 8px;\n\theight: 8px;\n\tbackground-color: var(--color-primary-text);\n\tborder-radius: 50%;\n\tposition: absolute;\n\tdisplay: block;\n\ttop: 10px;\n\tright: 10px;\n}\n\n.unread-counter {\n\tdisplay: none;\n}\n'],sourceRoot:""}]),e.Z=r},88951:function(t,e,n){"use strict";var i=n(87537),o=n.n(i),a=n(23645),r=n.n(a)()(o());r.push([t.id,".menu-entry__loading-icon[data-v-6e59d13c]{margin-right:8px}","",{version:3,sources:["webpack://./core/src/components/UserMenu/UserMenuEntry.vue"],names:[],mappings:"AAEC,2CACC,gBAAA",sourcesContent:["\n.menu-entry {\n\t&__loading-icon {\n\t\tmargin-right: 8px;\n\t}\n}\n"],sourceRoot:""}]),e.Z=r},50893:function(t,e,n){"use strict";var i=n(87537),o=n.n(i),a=n(23645),r=n.n(a)()(o());r.push([t.id,"#contactsmenu-menu[data-v-1563c388]{height:calc(100vh - 150px);max-height:302px;min-height:175px;width:350px}#contactsmenu-menu[data-v-1563c388] .emptycontent{margin-top:5vh !important;margin-bottom:1.5vh}#contactsmenu-menu[data-v-1563c388] .emptycontent .icon-loading,#contactsmenu-menu[data-v-1563c388] .emptycontent .icon-search{display:inline-block}#contactsmenu-menu[data-v-1563c388] #contactsmenu-search{width:calc(100% - 16px);margin:8px;height:34px}#contactsmenu-menu[data-v-1563c388] .content{height:calc(100vh - 150px - 50px);max-height:250px;min-height:125px;overflow-y:auto}#contactsmenu-menu[data-v-1563c388] .content .footer{text-align:center}#contactsmenu-menu[data-v-1563c388] .content .footer a{display:block;width:100%;padding:12px 0;opacity:.5}#contactsmenu-menu[data-v-1563c388] a{padding:2px}#contactsmenu-menu[data-v-1563c388] a:focus-visible{box-shadow:inset 0 0 0 2px var(--color-main-text) !important}#contactsmenu-menu[data-v-1563c388] .contact{display:flex;position:relative;align-items:center;padding:3px 3px 3px 10px}#contactsmenu-menu[data-v-1563c388] .contact .avatar{height:32px;width:32px;display:inline-block}#contactsmenu-menu[data-v-1563c388] .contact .body{flex-grow:1;padding-left:8px;min-width:0}#contactsmenu-menu[data-v-1563c388] .contact .body div{position:relative;width:100%;overflow-x:hidden;text-overflow:ellipsis}#contactsmenu-menu[data-v-1563c388] .contact .body .last-message,#contactsmenu-menu[data-v-1563c388] .contact .body .email-address{color:var(--color-text-maxcontrast)}#contactsmenu-menu[data-v-1563c388] .contact .top-action,#contactsmenu-menu[data-v-1563c388] .contact .second-action,#contactsmenu-menu[data-v-1563c388] .contact .other-actions{width:16px;height:16px;opacity:.5;cursor:pointer}#contactsmenu-menu[data-v-1563c388] .contact .top-action:not(button),#contactsmenu-menu[data-v-1563c388] .contact .second-action:not(button),#contactsmenu-menu[data-v-1563c388] .contact .other-actions:not(button){padding:14px}#contactsmenu-menu[data-v-1563c388] .contact .top-action img,#contactsmenu-menu[data-v-1563c388] .contact .second-action img,#contactsmenu-menu[data-v-1563c388] .contact .other-actions img{filter:var(--background-invert-if-dark)}#contactsmenu-menu[data-v-1563c388] .contact .top-action:hover,#contactsmenu-menu[data-v-1563c388] .contact .top-action:active,#contactsmenu-menu[data-v-1563c388] .contact .top-action:focus,#contactsmenu-menu[data-v-1563c388] .contact .second-action:hover,#contactsmenu-menu[data-v-1563c388] .contact .second-action:active,#contactsmenu-menu[data-v-1563c388] .contact .second-action:focus,#contactsmenu-menu[data-v-1563c388] .contact .other-actions:hover,#contactsmenu-menu[data-v-1563c388] .contact .other-actions:active,#contactsmenu-menu[data-v-1563c388] .contact .other-actions:focus{opacity:1}#contactsmenu-menu[data-v-1563c388] .contact button.other-actions{width:44px}#contactsmenu-menu[data-v-1563c388] .contact button.other-actions:focus{border-color:rgba(0,0,0,0);box-shadow:0 0 0 2px var(--color-main-text)}#contactsmenu-menu[data-v-1563c388] .contact button.other-actions:focus-visible{border-radius:var(--border-radius-pill)}#contactsmenu-menu[data-v-1563c388] .contact .menu{top:47px;margin-right:13px}#contactsmenu-menu[data-v-1563c388] .contact .popovermenu::after{right:2px}","",{version:3,sources:["webpack://./core/src/views/ContactsMenu.vue"],names:[],mappings:"AACA,oCAEC,0BAAA,CACA,gBAAA,CACA,gBAAA,CACA,WAAA,CAGC,kDACC,yBAAA,CACA,mBAAA,CACA,+HAEC,oBAAA,CAIF,yDACC,uBAAA,CACA,UAAA,CACA,WAAA,CAGD,6CAEC,iCAAA,CACA,gBAAA,CACA,gBAAA,CACA,eAAA,CAEA,qDACC,iBAAA,CAEA,uDACC,aAAA,CACA,UAAA,CACA,cAAA,CACA,UAAA,CAKH,sCACC,WAAA,CAEA,oDACC,4DAAA,CAIF,6CACC,YAAA,CACA,iBAAA,CACA,kBAAA,CACA,wBAAA,CAEA,qDACC,WAAA,CACA,UAAA,CACA,oBAAA,CAGD,mDACC,WAAA,CACA,gBAAA,CACA,WAAA,CAEA,uDACC,iBAAA,CACA,UAAA,CACA,iBAAA,CACA,sBAAA,CAGD,mIACC,mCAAA,CAIF,iLACC,UAAA,CACA,WAAA,CACA,UAAA,CACA,cAAA,CAEA,qNACC,YAAA,CAED,6LACC,uCAAA,CAGD,4kBAGC,SAAA,CAIF,kEACC,UAAA,CAEA,wEACC,0BAAA,CACA,2CAAA,CAGD,gFACC,uCAAA,CAKF,mDACC,QAAA,CACA,iBAAA,CAED,iEACC,SAAA",sourcesContent:["\n#contactsmenu-menu {\n\t/* show 2.5 to 4.5 entries depending on the screen height */\n\theight: calc(100vh - 50px * 3);\n\tmax-height: calc(50px * 6 + 2px);\n\tmin-height: calc(50px * 3.5);\n\twidth: 350px;\n\n\t&:deep {\n\t\t.emptycontent {\n\t\t\tmargin-top: 5vh !important;\n\t\t\tmargin-bottom: 1.5vh;\n\t\t\t.icon-loading,\n\t\t\t.icon-search {\n\t\t\t\tdisplay: inline-block;\n\t\t\t}\n\t\t}\n\n\t\t#contactsmenu-search {\n\t\t\twidth: calc(100% - 16px);\n\t\t\tmargin: 8px;\n\t\t\theight: 34px;\n\t\t}\n\n\t\t.content {\n\t\t\t/* fixed max height of the parent container without the search input */\n\t\t\theight: calc(100vh - 50px * 3 - 50px);\n\t\t\tmax-height: calc(50px * 5);\n\t\t\tmin-height: calc(50px * 3.5 - 50px);\n\t\t\toverflow-y: auto;\n\n\t\t\t.footer {\n\t\t\t\ttext-align: center;\n\n\t\t\t\ta {\n\t\t\t\t\tdisplay: block;\n\t\t\t\t\twidth: 100%;\n\t\t\t\t\tpadding: 12px 0;\n\t\t\t\t\topacity: .5;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\ta {\n\t\t\tpadding: 2px;\n\n\t\t\t&:focus-visible {\n\t\t\t\tbox-shadow: inset 0 0 0 2px var(--color-main-text) !important; // override rule in core/css/headers.scss #header a:focus-visible\n\t\t\t}\n\t\t}\n\n\t\t.contact {\n\t\t\tdisplay: flex;\n\t\t\tposition: relative;\n\t\t\talign-items: center;\n\t\t\tpadding: 3px 3px 3px 10px;\n\n\t\t\t.avatar {\n\t\t\t\theight: 32px;\n\t\t\t\twidth: 32px;\n\t\t\t\tdisplay: inline-block;\n\t\t\t}\n\n\t\t\t.body {\n\t\t\t\tflex-grow: 1;\n\t\t\t\tpadding-left: 8px;\n\t\t\t\tmin-width: 0;\n\n\t\t\t\tdiv {\n\t\t\t\t\tposition: relative;\n\t\t\t\t\twidth: 100%;\n\t\t\t\t\toverflow-x: hidden;\n\t\t\t\t\ttext-overflow: ellipsis;\n\t\t\t\t}\n\n\t\t\t\t.last-message, .email-address {\n\t\t\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t.top-action, .second-action, .other-actions {\n\t\t\t\twidth: 16px;\n\t\t\t\theight: 16px;\n\t\t\t\topacity: .5;\n\t\t\t\tcursor: pointer;\n\n\t\t\t\t&:not(button) {\n\t\t\t\t\tpadding: 14px;\n\t\t\t\t}\n\t\t\t\timg {\n\t\t\t\t\tfilter: var(--background-invert-if-dark);\n\t\t\t\t}\n\n\t\t\t\t&:hover,\n\t\t\t\t&:active,\n\t\t\t\t&:focus {\n\t\t\t\t\topacity: 1;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tbutton.other-actions {\n\t\t\t\twidth: 44px;\n\n\t\t\t\t&:focus {\n\t\t\t\t\tborder-color: transparent;\n\t\t\t\t\tbox-shadow: 0 0 0 2px var(--color-main-text);\n\t\t\t\t}\n\n\t\t\t\t&:focus-visible {\n\t\t\t\t\tborder-radius: var(--border-radius-pill);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t/* actions menu */\n\t\t\t.menu {\n\t\t\t\ttop: 47px;\n\t\t\t\tmargin-right: 13px;\n\t\t\t}\n\t\t\t.popovermenu::after {\n\t\t\t\tright: 2px;\n\t\t\t}\n\t\t}\n\t}\n}\n"],sourceRoot:""}]),e.Z=r},71445:function(t,e,n){"use strict";var i=n(87537),o=n.n(i),a=n(23645),r=n.n(a)()(o());r.push([t.id,".user-menu[data-v-6a818bbc]{margin-right:12px}.user-menu[data-v-6a818bbc] .header-menu__trigger{opacity:1 !important}.user-menu[data-v-6a818bbc] .header-menu__trigger:focus-visible .user-menu__avatar{border:2px solid var(--color-primary-text)}.user-menu[data-v-6a818bbc] .header-menu__carret{display:none !important}.user-menu[data-v-6a818bbc] .header-menu__content{width:fit-content !important}.user-menu__avatar[data-v-6a818bbc]:active,.user-menu__avatar[data-v-6a818bbc]:focus,.user-menu__avatar[data-v-6a818bbc]:hover{border:2px solid var(--color-primary-text)}.user-menu__nav[data-v-6a818bbc]{display:flex;width:100%}.user-menu__nav ul[data-v-6a818bbc]{display:flex;flex-direction:column;gap:2px}.user-menu__nav ul[data-v-6a818bbc] li a,.user-menu__nav ul[data-v-6a818bbc] li button{border-radius:6px;display:inline-flex;align-items:center;height:var(--header-menu-item-height);color:var(--color-main-text);padding:10px 8px;box-sizing:border-box;white-space:nowrap;position:relative;width:100%}.user-menu__nav ul[data-v-6a818bbc] li a:hover,.user-menu__nav ul[data-v-6a818bbc] li button:hover{background-color:var(--color-background-hover)}.user-menu__nav ul[data-v-6a818bbc] li a:focus-visible,.user-menu__nav ul[data-v-6a818bbc] li button:focus-visible{background-color:var(--color-background-hover) !important;box-shadow:inset 0 0 0 2px var(--color-primary) !important;outline:none !important}.user-menu__nav ul[data-v-6a818bbc] li a:active,.user-menu__nav ul[data-v-6a818bbc] li a.active,.user-menu__nav ul[data-v-6a818bbc] li button:active,.user-menu__nav ul[data-v-6a818bbc] li button.active{background-color:var(--color-primary-light)}.user-menu__nav ul[data-v-6a818bbc] li a span,.user-menu__nav ul[data-v-6a818bbc] li button span{padding-bottom:0;color:var(--color-main-text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:110px}.user-menu__nav ul[data-v-6a818bbc] li a img,.user-menu__nav ul[data-v-6a818bbc] li button img{width:16px;height:16px;margin-right:10px}.user-menu__nav ul[data-v-6a818bbc] li a img,.user-menu__nav ul[data-v-6a818bbc] li a svg,.user-menu__nav ul[data-v-6a818bbc] li button img,.user-menu__nav ul[data-v-6a818bbc] li button svg{opacity:.7;filter:var(--background-invert-if-dark)}.user-menu__nav ul[data-v-6a818bbc] li button{background-color:rgba(0,0,0,0);border:none;font-weight:normal;margin:0}","",{version:3,sources:["webpack://./core/src/views/UserMenu.vue"],names:[],mappings:"AACA,4BACC,iBAAA,CAIE,kDACC,oBAAA,CAEC,mFACC,0CAAA,CAKH,iDACC,uBAAA,CAGD,kDACC,4BAAA,CAMF,+HAGC,0CAAA,CAIF,iCACC,YAAA,CACA,UAAA,CAEA,oCACC,YAAA,CACA,qBAAA,CACA,OAAA,CAIE,uFAEC,iBAAA,CACA,mBAAA,CACA,kBAAA,CACA,qCAAA,CACA,4BAAA,CACA,gBAAA,CACA,qBAAA,CACA,kBAAA,CACA,iBAAA,CACA,UAAA,CAEA,mGACC,8CAAA,CAGD,mHACC,yDAAA,CACA,0DAAA,CACA,uBAAA,CAGD,0MAEC,2CAAA,CAGD,iGACC,gBAAA,CACA,4BAAA,CACA,kBAAA,CACA,eAAA,CACA,sBAAA,CACA,eAAA,CAGD,+FACC,UAAA,CACA,WAAA,CACA,iBAAA,CAGD,8LAEC,UAAA,CACA,uCAAA,CAKF,8CACC,8BAAA,CACA,WAAA,CACA,kBAAA,CACA,QAAA",sourcesContent:["\n.user-menu {\n\tmargin-right: 12px;\n\n\t&:deep {\n\t\t.header-menu {\n\t\t\t&__trigger {\n\t\t\t\topacity: 1 !important;\n\t\t\t\t&:focus-visible {\n\t\t\t\t\t.user-menu__avatar {\n\t\t\t\t\t\tborder: 2px solid var(--color-primary-text);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t&__carret {\n\t\t\t\tdisplay: none !important;\n\t\t\t}\n\n\t\t\t&__content {\n\t\t\t\twidth: fit-content !important;\n\t\t\t}\n\t\t}\n\t}\n\n\t&__avatar {\n\t\t&:active,\n\t\t&:focus,\n\t\t&:hover {\n\t\t\tborder: 2px solid var(--color-primary-text);\n\t\t}\n\t}\n\n\t&__nav {\n\t\tdisplay: flex;\n\t\twidth: 100%;\n\n\t\tul {\n\t\t\tdisplay: flex;\n\t\t\tflex-direction: column;\n\t\t\tgap: 2px;\n\n\t\t\t&:deep {\n\t\t\t\tli {\n\t\t\t\t\ta,\n\t\t\t\t\tbutton {\n\t\t\t\t\t\tborder-radius: 6px;\n\t\t\t\t\t\tdisplay: inline-flex;\n\t\t\t\t\t\talign-items: center;\n\t\t\t\t\t\theight: var(--header-menu-item-height);\n\t\t\t\t\t\tcolor: var(--color-main-text);\n\t\t\t\t\t\tpadding: 10px 8px;\n\t\t\t\t\t\tbox-sizing: border-box;\n\t\t\t\t\t\twhite-space: nowrap;\n\t\t\t\t\t\tposition: relative;\n\t\t\t\t\t\twidth: 100%;\n\n\t\t\t\t\t\t&:hover {\n\t\t\t\t\t\t\tbackground-color: var(--color-background-hover);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t&:focus-visible {\n\t\t\t\t\t\t\tbackground-color: var(--color-background-hover) !important;\n\t\t\t\t\t\t\tbox-shadow: inset 0 0 0 2px var(--color-primary) !important;\n\t\t\t\t\t\t\toutline: none !important;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t&:active,\n\t\t\t\t\t\t&.active {\n\t\t\t\t\t\t\tbackground-color: var(--color-primary-light);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tspan {\n\t\t\t\t\t\t\tpadding-bottom: 0;\n\t\t\t\t\t\t\tcolor: var(--color-main-text);\n\t\t\t\t\t\t\twhite-space: nowrap;\n\t\t\t\t\t\t\toverflow: hidden;\n\t\t\t\t\t\t\ttext-overflow: ellipsis;\n\t\t\t\t\t\t\tmax-width: 110px;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\timg {\n\t\t\t\t\t\t\twidth: 16px;\n\t\t\t\t\t\t\theight: 16px;\n\t\t\t\t\t\t\tmargin-right: 10px;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\timg,\n\t\t\t\t\t\tsvg {\n\t\t\t\t\t\t\topacity: .7;\n\t\t\t\t\t\t\tfilter: var(--background-invert-if-dark);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Override global button styles\n\t\t\t\t\tbutton {\n\t\t\t\t\t\tbackground-color: transparent;\n\t\t\t\t\t\tborder: none;\n\t\t\t\t\t\tfont-weight: normal;\n\t\t\t\t\t\tmargin: 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n"],sourceRoot:""}]),e.Z=r},10944:function(t,e,n){var i=n(40202);t.exports=(i.default||i).template({1:function(t,e,n,i,o){var a,r=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return null!=(a=r(n,"if").call(null!=e?e:t.nullContext||{},null!=(a=null!=e?r(e,"contact"):e)?r(a,"profileUrl"):a,{name:"if",hash:{},fn:t.program(2,o,0),inverse:t.program(5,o,0),data:o,loc:{start:{line:2,column:1},end:{line:10,column:8}}}))?a:""},2:function(t,e,n,i,o){var a,r=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return null!=(a=r(n,"if").call(null!=e?e:t.nullContext||{},null!=(a=null!=e?r(e,"contact"):e)?r(a,"profileTitle"):a,{name:"if",hash:{},fn:t.program(3,o,0),inverse:t.noop,data:o,loc:{start:{line:3,column:2},end:{line:7,column:9}}}))?a:""},3:function(t,e,n,i,o){var a,r=t.lambda,s=t.escapeExpression,l=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'\t\t\t<a class="profile-link--avatar" href="'+s(r(null!=(a=null!=e?l(e,"contact"):e)?l(a,"profileUrl"):a,e))+'">\n\t\t\t\t<img src="'+s(r(null!=(a=null!=e?l(e,"contact"):e)?l(a,"avatar"):a,e))+'&size=32" class="avatar" srcset="'+s(r(null!=(a=null!=e?l(e,"contact"):e)?l(a,"avatar"):a,e))+"&size=32 1x, "+s(r(null!=(a=null!=e?l(e,"contact"):e)?l(a,"avatar"):a,e))+"&size=64 2x, "+s(r(null!=(a=null!=e?l(e,"contact"):e)?l(a,"avatar"):a,e))+'&size=128 4x" alt="'+s(r(null!=(a=null!=e?l(e,"contact"):e)?l(a,"avatarLabel"):a,e))+'">\n\t\t\t</a>\n'},5:function(t,e,n,i,o){var a,r=t.lambda,s=t.escapeExpression,l=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'\t\t<img src="'+s(r(null!=(a=null!=e?l(e,"contact"):e)?l(a,"avatar"):a,e))+'&size=32" class="avatar" srcset="'+s(r(null!=(a=null!=e?l(e,"contact"):e)?l(a,"avatar"):a,e))+"&size=32 1x, "+s(r(null!=(a=null!=e?l(e,"contact"):e)?l(a,"avatar"):a,e))+"&size=64 2x, "+s(r(null!=(a=null!=e?l(e,"contact"):e)?l(a,"avatar"):a,e))+'&size=128 4x" alt="'+s(r(null!=(a=null!=e?l(e,"contact"):e)?l(a,"avatarLabel"):a,e))+'">\n'},7:function(t,e,n,i,o){var a,r=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return null!=(a=r(n,"if").call(null!=e?e:t.nullContext||{},null!=(a=null!=e?r(e,"contact"):e)?r(a,"profileUrl"):a,{name:"if",hash:{},fn:t.program(8,o,0),inverse:t.program(11,o,0),data:o,loc:{start:{line:12,column:1},end:{line:20,column:8}}}))?a:""},8:function(t,e,n,i,o){var a,r=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return null!=(a=r(n,"if").call(null!=e?e:t.nullContext||{},null!=(a=null!=e?r(e,"contact"):e)?r(a,"profileTitle"):a,{name:"if",hash:{},fn:t.program(9,o,0),inverse:t.noop,data:o,loc:{start:{line:13,column:2},end:{line:17,column:9}}}))?a:""},9:function(t,e,n,i,o){var a,r=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'\t\t\t<a class="profile-link--avatar" href="'+t.escapeExpression(t.lambda(null!=(a=null!=e?r(e,"contact"):e)?r(a,"profileUrl"):a,e))+'">\n\t\t\t\t<div class="avatar"></div>\n\t\t\t</a>\n'},11:function(t,e,n,i,o){return'\t\t<div class="avatar"></div>\n'},13:function(t,e,n,i,o){var a,r=null!=e?e:t.nullContext||{},s=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return(null!=(a=s(n,"if").call(r,null!=(a=null!=e?s(e,"contact"):e)?s(a,"profileTitle"):a,{name:"if",hash:{},fn:t.program(14,o,0),inverse:t.noop,data:o,loc:{start:{line:23,column:1},end:{line:29,column:8}}}))?a:"")+(null!=(a=s(n,"if").call(r,null!=(a=null!=e?s(e,"contact"):e)?s(a,"topAction"):a,{name:"if",hash:{},fn:t.program(16,o,0),inverse:t.noop,data:o,loc:{start:{line:30,column:1},end:{line:34,column:8}}}))?a:"")},14:function(t,e,n,i,o){var a,r=t.lambda,s=t.escapeExpression,l=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'\t\t<a class="body profile-link--full-name" href="'+s(r(null!=(a=null!=e?l(e,"contact"):e)?l(a,"profileUrl"):a,e))+'">\n\t\t\t<div class="full-name">'+s(r(null!=(a=null!=e?l(e,"contact"):e)?l(a,"fullName"):a,e))+'</div>\n\t\t\t<div class="last-message">'+s(r(null!=(a=null!=e?l(e,"contact"):e)?l(a,"lastMessage"):a,e))+'</div>\n\t\t\t<div class="email-address">'+s(r(null!=(a=null!=e?l(e,"contact"):e)?l(a,"emailAddresses"):a,e))+"</div>\n\t\t</a>\n"},16:function(t,e,n,i,o){var a,r=t.lambda,s=t.escapeExpression,l=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'\t\t<a class="top-action" href="'+s(r(null!=(a=null!=(a=null!=e?l(e,"contact"):e)?l(a,"topAction"):a)?l(a,"hyperlink"):a,e))+'" title="'+s(r(null!=(a=null!=(a=null!=e?l(e,"contact"):e)?l(a,"topAction"):a)?l(a,"title"):a,e))+'">\n\t\t\t<img src="'+s(r(null!=(a=null!=(a=null!=e?l(e,"contact"):e)?l(a,"topAction"):a)?l(a,"icon"):a,e))+'" alt="'+s(r(null!=(a=null!=(a=null!=e?l(e,"contact"):e)?l(a,"topAction"):a)?l(a,"title"):a,e))+'">\n\t\t</a>\n'},18:function(t,e,n,i,o){var a,r=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return null!=(a=r(n,"if").call(null!=e?e:t.nullContext||{},null!=(a=null!=e?r(e,"contact"):e)?r(a,"topAction"):a,{name:"if",hash:{},fn:t.program(19,o,0),inverse:t.program(21,o,0),data:o,loc:{start:{line:35,column:0},end:{line:50,column:0}}}))?a:""},19:function(t,e,n,i,o){var a,r=t.lambda,s=t.escapeExpression,l=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'\t<a class="body" href="'+s(r(null!=(a=null!=(a=null!=e?l(e,"contact"):e)?l(a,"topAction"):a)?l(a,"hyperlink"):a,e))+'">\n\t\t<div class="full-name">'+s(r(null!=(a=null!=e?l(e,"contact"):e)?l(a,"fullName"):a,e))+'</div>\n\t\t<div class="last-message">'+s(r(null!=(a=null!=e?l(e,"contact"):e)?l(a,"lastMessage"):a,e))+'</div>\n\t\t<div class="email-address">'+s(r(null!=(a=null!=e?l(e,"contact"):e)?l(a,"emailAddresses"):a,e))+'</div>\n\t</a>\n \t<a class="top-action" href="'+s(r(null!=(a=null!=(a=null!=e?l(e,"contact"):e)?l(a,"topAction"):a)?l(a,"hyperlink"):a,e))+'" title="'+s(r(null!=(a=null!=(a=null!=e?l(e,"contact"):e)?l(a,"topAction"):a)?l(a,"title"):a,e))+'">\n \t\t<img src="'+s(r(null!=(a=null!=(a=null!=e?l(e,"contact"):e)?l(a,"topAction"):a)?l(a,"icon"):a,e))+'" alt="'+s(r(null!=(a=null!=(a=null!=e?l(e,"contact"):e)?l(a,"topAction"):a)?l(a,"title"):a,e))+'">\n\t</a>\n'},21:function(t,e,n,i,o){var a,r=t.lambda,s=t.escapeExpression,l=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'\t<div class="body">\n\t\t<div class="full-name">'+s(r(null!=(a=null!=e?l(e,"contact"):e)?l(a,"fullName"):a,e))+'</div>\n\t\t<div class="last-message">'+s(r(null!=(a=null!=e?l(e,"contact"):e)?l(a,"lastMessage"):a,e))+'</div>\n\t\t<div class="email-address">'+s(r(null!=(a=null!=e?l(e,"contact"):e)?l(a,"emailAddresses"):a,e))+"</div>\n\t</div>\n"},23:function(t,e,n,i,o){var a,r=t.lambda,s=t.escapeExpression,l=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'<a class="second-action" href="'+s(r(null!=(a=null!=(a=null!=e?l(e,"contact"):e)?l(a,"secondAction"):a)?l(a,"hyperlink"):a,e))+'" title="'+s(r(null!=(a=null!=(a=null!=e?l(e,"contact"):e)?l(a,"secondAction"):a)?l(a,"title"):a,e))+'">\n\t<img src="'+s(r(null!=(a=null!=(a=null!=e?l(e,"contact"):e)?l(a,"secondAction"):a)?l(a,"icon"):a,e))+'" alt="'+s(r(null!=(a=null!=(a=null!=e?l(e,"contact"):e)?l(a,"secondAction"):a)?l(a,"title"):a,e))+'">\n</a>\n'},25:function(t,e,n,i,o){var a,r=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'\t<button class="other-actions icon-more"></button>\n\t<div class="menu popovermenu">\n\t\t<ul>\n'+(null!=(a=r(n,"each").call(null!=e?e:t.nullContext||{},null!=(a=null!=e?r(e,"contact"):e)?r(a,"actions"):a,{name:"each",hash:{},fn:t.program(26,o,0),inverse:t.noop,data:o,loc:{start:{line:60,column:3},end:{line:67,column:12}}}))?a:"")+"\t\t</ul>\n\t</div>\n"},26:function(t,e,n,i,o){var a,r=null!=e?e:t.nullContext||{},s=t.hooks.helperMissing,l="function",c=t.escapeExpression,u=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'\t\t\t<li>\n\t\t\t\t<a href="'+c(typeof(a=null!=(a=u(n,"hyperlink")||(null!=e?u(e,"hyperlink"):e))?a:s)===l?a.call(r,{name:"hyperlink",hash:{},data:o,loc:{start:{line:62,column:13},end:{line:62,column:26}}}):a)+'">\n\t\t\t\t\t<img src="'+c(typeof(a=null!=(a=u(n,"icon")||(null!=e?u(e,"icon"):e))?a:s)===l?a.call(r,{name:"icon",hash:{},data:o,loc:{start:{line:63,column:15},end:{line:63,column:23}}}):a)+'" alt="">\n\t\t\t\t\t<span>'+c(typeof(a=null!=(a=u(n,"title")||(null!=e?u(e,"title"):e))?a:s)===l?a.call(r,{name:"title",hash:{},data:o,loc:{start:{line:64,column:11},end:{line:64,column:20}}}):a)+"</span>\n\t\t\t\t</a>\n\t\t\t</li>\n"},compiler:[8,">= 4.3.0"],main:function(t,e,n,i,o){var a,r=null!=e?e:t.nullContext||{},s=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return(null!=(a=s(n,"if").call(r,null!=(a=null!=e?s(e,"contact"):e)?s(a,"avatar"):a,{name:"if",hash:{},fn:t.program(1,o,0),inverse:t.program(7,o,0),data:o,loc:{start:{line:1,column:0},end:{line:21,column:7}}}))?a:"")+(null!=(a=s(n,"if").call(r,null!=(a=null!=e?s(e,"contact"):e)?s(a,"profileUrl"):a,{name:"if",hash:{},fn:t.program(13,o,0),inverse:t.program(18,o,0),data:o,loc:{start:{line:22,column:0},end:{line:50,column:7}}}))?a:"")+(null!=(a=s(n,"if").call(r,null!=(a=null!=e?s(e,"contact"):e)?s(a,"hasTwoActions"):a,{name:"if",hash:{},fn:t.program(23,o,0),inverse:t.noop,data:o,loc:{start:{line:51,column:0},end:{line:55,column:7}}}))?a:"")+(null!=(a=s(n,"if").call(r,null!=(a=null!=e?s(e,"contact"):e)?s(a,"hasManyActions"):a,{name:"if",hash:{},fn:t.program(25,o,0),inverse:t.noop,data:o,loc:{start:{line:56,column:0},end:{line:70,column:7}}}))?a:"")},useData:!0})},20421:function(t,e,n){var i=n(40202);t.exports=(i.default||i).template({compiler:[8,">= 4.3.0"],main:function(t,e,n,i,o){var a,r=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'<div class="emptycontent">\n\t<div class="icon-search"></div>\n\t<h2>'+t.escapeExpression("function"==typeof(a=null!=(a=r(n,"couldNotLoadText")||(null!=e?r(e,"couldNotLoadText"):e))?a:t.hooks.helperMissing)?a.call(null!=e?e:t.nullContext||{},{name:"couldNotLoadText",hash:{},data:o,loc:{start:{line:3,column:5},end:{line:3,column:25}}}):a)+"</h2>\n</div>\n"},useData:!0})},34083:function(t,e,n){var i=n(40202);t.exports=(i.default||i).template({1:function(t,e,n,i,o){var a,r=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'<div class="emptycontent">\n\t<div class="icon-search"></div>\n\t<h2>'+t.escapeExpression("function"==typeof(a=null!=(a=r(n,"noContactsFoundText")||(null!=e?r(e,"noContactsFoundText"):e))?a:t.hooks.helperMissing)?a.call(null!=e?e:t.nullContext||{},{name:"noContactsFoundText",hash:{},data:o,loc:{start:{line:4,column:5},end:{line:4,column:28}}}):a)+"</h2>\n</div>\n"},3:function(t,e,n,i,o){var a,r=null!=e?e:t.nullContext||{},s=t.hooks.helperMissing,l="function",c=t.escapeExpression,u=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'<div class="footer"><a href="'+c(typeof(a=null!=(a=u(n,"contactsAppURL")||(null!=e?u(e,"contactsAppURL"):e))?a:s)===l?a.call(r,{name:"contactsAppURL",hash:{},data:o,loc:{start:{line:9,column:29},end:{line:9,column:47}}}):a)+'">'+c(typeof(a=null!=(a=u(n,"showAllContactsText")||(null!=e?u(e,"showAllContactsText"):e))?a:s)===l?a.call(r,{name:"showAllContactsText",hash:{},data:o,loc:{start:{line:9,column:49},end:{line:9,column:72}}}):a)+"</a></div>\n"},5:function(t,e,n,i,o){var a,r=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return null!=(a=r(n,"if").call(null!=e?e:t.nullContext||{},null!=e?r(e,"canInstallApp"):e,{name:"if",hash:{},fn:t.program(6,o,0),inverse:t.noop,data:o,loc:{start:{line:10,column:0},end:{line:12,column:0}}}))?a:""},6:function(t,e,n,i,o){var a,r=null!=e?e:t.nullContext||{},s=t.hooks.helperMissing,l="function",c=t.escapeExpression,u=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'<div class="footer"><a href="'+c(typeof(a=null!=(a=u(n,"contactsAppMgmtURL")||(null!=e?u(e,"contactsAppMgmtURL"):e))?a:s)===l?a.call(r,{name:"contactsAppMgmtURL",hash:{},data:o,loc:{start:{line:11,column:29},end:{line:11,column:51}}}):a)+'">'+c(typeof(a=null!=(a=u(n,"contactsAppMgmtText")||(null!=e?u(e,"contactsAppMgmtText"):e))?a:s)===l?a.call(r,{name:"contactsAppMgmtText",hash:{},data:o,loc:{start:{line:11,column:53},end:{line:11,column:76}}}):a)+"</a></div>\n"},compiler:[8,">= 4.3.0"],main:function(t,e,n,i,o){var a,r=null!=e?e:t.nullContext||{},s=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return(null!=(a=s(n,"unless").call(r,null!=(a=null!=e?s(e,"contacts"):e)?s(a,"length"):a,{name:"unless",hash:{},fn:t.program(1,o,0),inverse:t.noop,data:o,loc:{start:{line:1,column:0},end:{line:6,column:11}}}))?a:"")+'<div id="contactsmenu-contacts"></div>\n'+(null!=(a=s(n,"if").call(r,null!=e?s(e,"contactsAppEnabled"):e,{name:"if",hash:{},fn:t.program(3,o,0),inverse:t.program(5,o,0),data:o,loc:{start:{line:8,column:0},end:{line:12,column:7}}}))?a:"")},useData:!0})},95386:function(t,e,n){var i=n(40202);t.exports=(i.default||i).template({compiler:[8,">= 4.3.0"],main:function(t,e,n,i,o){var a,r=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'<div class="emptycontent">\n\t<div class="icon-loading"></div>\n\t<h2>'+t.escapeExpression("function"==typeof(a=null!=(a=r(n,"loadingText")||(null!=e?r(e,"loadingText"):e))?a:t.hooks.helperMissing)?a.call(null!=e?e:t.nullContext||{},{name:"loadingText",hash:{},data:o,loc:{start:{line:3,column:5},end:{line:3,column:20}}}):a)+"</h2>\n</div>\n"},useData:!0})},66115:function(t,e,n){var i=n(40202);t.exports=(i.default||i).template({compiler:[8,">= 4.3.0"],main:function(t,e,n,i,o){var a,r=null!=e?e:t.nullContext||{},s=t.hooks.helperMissing,l="function",c=t.escapeExpression,u=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'<label class="hidden-visually" for="contactsmenu-search">'+c(typeof(a=null!=(a=u(n,"searchContactsText")||(null!=e?u(e,"searchContactsText"):e))?a:s)===l?a.call(r,{name:"searchContactsText",hash:{},data:o,loc:{start:{line:1,column:57},end:{line:1,column:79}}}):a)+'</label>\n<input id="contactsmenu-search" type="search" placeholder="'+c(typeof(a=null!=(a=u(n,"searchContactsText")||(null!=e?u(e,"searchContactsText"):e))?a:s)===l?a.call(r,{name:"searchContactsText",hash:{},data:o,loc:{start:{line:2,column:59},end:{line:2,column:81}}}):a)+'" value="'+c(typeof(a=null!=(a=u(n,"searchTerm")||(null!=e?u(e,"searchTerm"):e))?a:s)===l?a.call(r,{name:"searchTerm",hash:{},data:o,loc:{start:{line:2,column:90},end:{line:2,column:104}}}):a)+'">\n<div class="content">\n</div>\n'},useData:!0})},47078:function(t,e,n){var i=n(40202);t.exports=(i.default||i).template({1:function(t,e,n,i,o){var a,r=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'<img src="'+t.escapeExpression("function"==typeof(a=null!=(a=r(n,"icon")||(null!=e?r(e,"icon"):e))?a:t.hooks.helperMissing)?a.call(null!=e?e:t.nullContext||{},{name:"icon",hash:{},data:o,loc:{start:{line:3,column:24},end:{line:3,column:32}}}):a)+'">'},compiler:[8,">= 4.3.0"],main:function(t,e,n,i,o){var a,r,s=null!=e?e:t.nullContext||{},l=t.hooks.helperMissing,c="function",u=t.escapeExpression,d=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'<li>\n\t<a href="'+u(typeof(r=null!=(r=d(n,"hyperlink")||(null!=e?d(e,"hyperlink"):e))?r:l)===c?r.call(s,{name:"hyperlink",hash:{},data:o,loc:{start:{line:2,column:10},end:{line:2,column:23}}}):r)+'">\n\t\t'+(null!=(a=d(n,"if").call(s,null!=e?d(e,"icon"):e,{name:"if",hash:{},fn:t.program(1,o,0),inverse:t.noop,data:o,loc:{start:{line:3,column:2},end:{line:3,column:41}}}))?a:"")+"\n\t\t<span>"+u(typeof(r=null!=(r=d(n,"title")||(null!=e?d(e,"title"):e))?r:l)===c?r.call(s,{name:"title",hash:{},data:o,loc:{start:{line:4,column:8},end:{line:4,column:17}}}):r)+"</span>\n\t</a>\n</li>\n"},useData:!0})},46700:function(t,e,n){var i={"./af":42786,"./af.js":42786,"./ar":30867,"./ar-dz":14130,"./ar-dz.js":14130,"./ar-kw":96135,"./ar-kw.js":96135,"./ar-ly":56440,"./ar-ly.js":56440,"./ar-ma":47702,"./ar-ma.js":47702,"./ar-sa":16040,"./ar-sa.js":16040,"./ar-tn":37100,"./ar-tn.js":37100,"./ar.js":30867,"./az":31083,"./az.js":31083,"./be":9808,"./be.js":9808,"./bg":68338,"./bg.js":68338,"./bm":67438,"./bm.js":67438,"./bn":8905,"./bn-bd":76225,"./bn-bd.js":76225,"./bn.js":8905,"./bo":11560,"./bo.js":11560,"./br":1278,"./br.js":1278,"./bs":80622,"./bs.js":80622,"./ca":2468,"./ca.js":2468,"./cs":5822,"./cs.js":5822,"./cv":50877,"./cv.js":50877,"./cy":47373,"./cy.js":47373,"./da":24780,"./da.js":24780,"./de":59740,"./de-at":60217,"./de-at.js":60217,"./de-ch":60894,"./de-ch.js":60894,"./de.js":59740,"./dv":5300,"./dv.js":5300,"./el":50837,"./el.js":50837,"./en-au":78348,"./en-au.js":78348,"./en-ca":77925,"./en-ca.js":77925,"./en-gb":22243,"./en-gb.js":22243,"./en-ie":46436,"./en-ie.js":46436,"./en-il":47207,"./en-il.js":47207,"./en-in":44175,"./en-in.js":44175,"./en-nz":76319,"./en-nz.js":76319,"./en-sg":31662,"./en-sg.js":31662,"./eo":92915,"./eo.js":92915,"./es":55655,"./es-do":55251,"./es-do.js":55251,"./es-mx":96112,"./es-mx.js":96112,"./es-us":71146,"./es-us.js":71146,"./es.js":55655,"./et":5603,"./et.js":5603,"./eu":77763,"./eu.js":77763,"./fa":76959,"./fa.js":76959,"./fi":11897,"./fi.js":11897,"./fil":42549,"./fil.js":42549,"./fo":94694,"./fo.js":94694,"./fr":94470,"./fr-ca":63049,"./fr-ca.js":63049,"./fr-ch":52330,"./fr-ch.js":52330,"./fr.js":94470,"./fy":5044,"./fy.js":5044,"./ga":29295,"./ga.js":29295,"./gd":2101,"./gd.js":2101,"./gl":38794,"./gl.js":38794,"./gom-deva":27884,"./gom-deva.js":27884,"./gom-latn":23168,"./gom-latn.js":23168,"./gu":95349,"./gu.js":95349,"./he":24206,"./he.js":24206,"./hi":30094,"./hi.js":30094,"./hr":30316,"./hr.js":30316,"./hu":22138,"./hu.js":22138,"./hy-am":11423,"./hy-am.js":11423,"./id":29218,"./id.js":29218,"./is":90135,"./is.js":90135,"./it":90626,"./it-ch":10150,"./it-ch.js":10150,"./it.js":90626,"./ja":39183,"./ja.js":39183,"./jv":24286,"./jv.js":24286,"./ka":12105,"./ka.js":12105,"./kk":47772,"./kk.js":47772,"./km":18758,"./km.js":18758,"./kn":79282,"./kn.js":79282,"./ko":33730,"./ko.js":33730,"./ku":1408,"./ku.js":1408,"./ky":33291,"./ky.js":33291,"./lb":36841,"./lb.js":36841,"./lo":55466,"./lo.js":55466,"./lt":57010,"./lt.js":57010,"./lv":37595,"./lv.js":37595,"./me":39861,"./me.js":39861,"./mi":35493,"./mi.js":35493,"./mk":95966,"./mk.js":95966,"./ml":87341,"./ml.js":87341,"./mn":5115,"./mn.js":5115,"./mr":10370,"./mr.js":10370,"./ms":9847,"./ms-my":41237,"./ms-my.js":41237,"./ms.js":9847,"./mt":72126,"./mt.js":72126,"./my":56165,"./my.js":56165,"./nb":64924,"./nb.js":64924,"./ne":16744,"./ne.js":16744,"./nl":93901,"./nl-be":59814,"./nl-be.js":59814,"./nl.js":93901,"./nn":83877,"./nn.js":83877,"./oc-lnc":92135,"./oc-lnc.js":92135,"./pa-in":15858,"./pa-in.js":15858,"./pl":64495,"./pl.js":64495,"./pt":89520,"./pt-br":57971,"./pt-br.js":57971,"./pt.js":89520,"./ro":96459,"./ro.js":96459,"./ru":21793,"./ru.js":21793,"./sd":40950,"./sd.js":40950,"./se":10490,"./se.js":10490,"./si":90124,"./si.js":90124,"./sk":64249,"./sk.js":64249,"./sl":14985,"./sl.js":14985,"./sq":51104,"./sq.js":51104,"./sr":49131,"./sr-cyrl":79915,"./sr-cyrl.js":79915,"./sr.js":49131,"./ss":85893,"./ss.js":85893,"./sv":98760,"./sv.js":98760,"./sw":91172,"./sw.js":91172,"./ta":27333,"./ta.js":27333,"./te":23110,"./te.js":23110,"./tet":52095,"./tet.js":52095,"./tg":27321,"./tg.js":27321,"./th":9041,"./th.js":9041,"./tk":19005,"./tk.js":19005,"./tl-ph":75768,"./tl-ph.js":75768,"./tlh":89444,"./tlh.js":89444,"./tr":72397,"./tr.js":72397,"./tzl":28254,"./tzl.js":28254,"./tzm":51106,"./tzm-latn":30699,"./tzm-latn.js":30699,"./tzm.js":51106,"./ug-cn":9288,"./ug-cn.js":9288,"./uk":67691,"./uk.js":67691,"./ur":13795,"./ur.js":13795,"./uz":6791,"./uz-latn":60588,"./uz-latn.js":60588,"./uz.js":6791,"./vi":65666,"./vi.js":65666,"./x-pseudo":14378,"./x-pseudo.js":14378,"./yo":75805,"./yo.js":75805,"./zh-cn":83839,"./zh-cn.js":83839,"./zh-hk":55726,"./zh-hk.js":55726,"./zh-mo":99807,"./zh-mo.js":99807,"./zh-tw":74152,"./zh-tw.js":74152};function o(t){var e=a(t);return n(e)}function a(t){if(!n.o(i,t)){var e=new Error("Cannot find module '"+t+"'");throw e.code="MODULE_NOT_FOUND",e}return i[t]}o.keys=function(){return Object.keys(i)},o.resolve=a,t.exports=o,o.id=46700},12081:function(t){"use strict";t.exports="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAAoAQMAAAC2MCouAAAABlBMVEVmZmZ1dXVT6N0BAAAAUklEQVQIW8XNsQ3AIAwF0bMoKBmBURgNj8YojEBJEcXwu2yQ+p507BTeWDnozPISjPpY4O0W6CqEisUtiG/EF+IT8YG4fznihnhCPCNeEK/89D1Gd22TNOyXVAAAAABJRU5ErkJggg=="},47868:function(t){"use strict";t.exports="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAABkAQMAAADOquA5AAAAA1BMVEUAAACnej3aAAAADklEQVQYGWMYBaOABgAAAlgAARbiVEcAAAAASUVORK5CYII="},58188:function(t){"use strict";t.exports="data:image/png;base64,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"},33178:function(t){"use strict";t.exports="data:image/png;base64,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"},40337:function(t){"use strict";t.exports="data:image/png;base64,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"},98811:function(t){"use strict";t.exports="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7"},27373:function(t){"use strict";t.exports="data:image/gif;base64,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"}},o={};function a(t){var e=o[t];if(void 0!==e)return e.exports;var n=o[t]={id:t,loaded:!1,exports:{}};return i[t].call(n.exports,n,n.exports,a),n.loaded=!0,n.exports}a.m=i,e=[],a.O=function(t,n,i,o){if(!n){var r=1/0;for(u=0;u<e.length;u++){n=e[u][0],i=e[u][1],o=e[u][2];for(var s=!0,l=0;l<n.length;l++)(!1&o||r>=o)&&Object.keys(a.O).every((function(t){return a.O[t](n[l])}))?n.splice(l--,1):(s=!1,o<r&&(r=o));if(s){e.splice(u--,1);var c=i();void 0!==c&&(t=c)}}return t}o=o||0;for(var u=e.length;u>0&&e[u-1][2]>o;u--)e[u]=e[u-1];e[u]=[n,i,o]},a.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return a.d(e,{a:e}),e},a.d=function(t,e){for(var n in e)a.o(e,n)&&!a.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},a.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),a.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},a.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},a.nmd=function(t){return t.paths=[],t.children||(t.children=[]),t},a.j=2943,function(){a.b=document.baseURI||self.location.href;var t={2943:0};a.O.j=function(e){return 0===t[e]};var e=function(e,n){var i,o,r=n[0],s=n[1],l=n[2],c=0;if(r.some((function(e){return 0!==t[e]}))){for(i in s)a.o(s,i)&&(a.m[i]=s[i]);if(l)var u=l(a)}for(e&&e(n);c<r.length;c++)o=r[c],a.o(t,o)&&t[o]&&t[o][0](),t[o]=0;return a.O(u)},n=self.webpackChunknextcloud=self.webpackChunknextcloud||[];n.forEach(e.bind(null,0)),n.push=e.bind(null,n.push.bind(n))}(),a.nc=void 0;var r=a.O(void 0,[7874],(function(){return a(82777)}));r=a.O(r)}(); +//# sourceMappingURL=core-main.js.map?v=6d1451f0e4b4569bb29a
\ No newline at end of file diff --git a/dist/core-main.js.map b/dist/core-main.js.map index f2bed761272..c842c56bdd0 100644 --- a/dist/core-main.js.map +++ b/dist/core-main.js.map @@ -1 +1 @@ -{"version":3,"file":"core-main.js?v=597fc0a4d0a9a6f07234","mappings":";gBAAIA,yiBC4BEC,EAAgB,CAAC,EACjBC,EAAe,oCCQrB,GAECC,sBAAuB,KAEvBC,+BAAgC,KAMhCC,WAAU,SAACC,GACVC,KAAKH,+BAAiCE,CACvC,EAYAE,KAAI,SAACC,EAAMH,GACNI,EAAAA,GAAAA,WAAaD,KAEhBH,EAAWG,EACXA,OAAOE,GAGHF,GAMLA,EAAKG,MAAK,WACLC,IAAEN,MAAM,GAAGO,SACdD,IAAEN,MAAM,GAAGO,SAASC,YAEpBC,EAAQC,MAAM,+CAEXV,OAASA,KAAKJ,wBACjBI,KAAKJ,sBAAwB,KAE/B,IACIG,GACHA,EAASY,OAENX,KAAKH,gCACRG,KAAKH,kCAnBLY,EAAQC,MAAM,yHAqBhB,EAcAE,SAAQ,SAACC,EAAMC,IACdA,EAAUA,GAAW,CAAC,GACdC,QAAS,EACjBD,EAAQE,QAAYF,EAAQE,QAAqCF,EAAQE,QAAlCC,EAAAA,GACvC,IAAMC,GAAQC,EAAAA,EAAAA,IAAYN,EAAMC,GAEhC,OADAI,EAAME,aAAab,SAAWW,EACvBZ,IAAEY,EAAME,aAChB,EAYAC,KAAI,SAACC,EAAMR,IAUVA,EAAUA,GAAW,CAAC,GACdE,QAAYF,EAAQE,QAAqCF,EAAQE,QAAlCC,EAAAA,GACvC,IAAMC,GAAQC,EAAAA,EAAAA,IAXK,SAASG,GAC3B,OAAOA,EAAKC,WACVC,MAAM,KAAKC,KAAK,SAChBD,MAAM,KAAKC,KAAK,QAChBD,MAAM,KAAKC,KAAK,QAChBD,MAAM,KAAKC,KAAK,UAChBD,MAAM,KAAMC,KAAK,SACpB,CAI0BC,CAAWJ,GAAOR,GAE5C,OADAI,EAAME,aAAab,SAAWW,EACvBZ,IAAEY,EAAME,aAChB,EASAO,WAAU,SAACL,GAMV,OALItB,KAAKJ,uBACRI,KAAKJ,sBAAsBY,YAE5BR,KAAKJ,uBAAwBuB,EAAAA,EAAAA,IAAYG,EAAM,CAAEN,QAASC,EAAAA,KAC1DjB,KAAKJ,sBAAsBwB,aAAab,SAAWP,KAAKJ,sBACjDU,IAAEN,KAAKJ,sBAAsBwB,aACrC,EAcAQ,cAAa,SAACN,EAAMR,IACnBA,EAAUA,GAAW,CAAC,GACdE,QAAUF,EAAQE,SAAWa,EAAAA,GACrC,IAAMX,GAAQC,EAAAA,EAAAA,IAAYG,EAAMR,GAEhC,OADAI,EAAME,aAAab,SAAWW,EACvBZ,IAAEY,EAAME,aAChB,EAQAU,SAAQ,WACP,OAAQxB,IAAE,YAAYyB,KAAK,aAAaC,MACzC,GCpJYC,EAA4B9B,EAAAA,GAAAA,UAAW,WACnD+B,EAAAA,cAA2BC,EAAE,OAAQ,6BACtC,GAAG,IAAU,CAAEC,UAAU,ICbrBC,GAA4B,EA6GhC,EA3Ga,CACZC,yBAAwB,WACvBD,GAA4B,CAC7B,EAQDE,eAAsB,SAASC,IACVA,GAAOlC,IAAE,iBACjBmC,YAAY,aAAapB,OACrCf,IAAE,gBAAgBoC,QAAQ,IAAIpC,IAAAA,OAAQ,cACvC,EAQAiC,eAAsB,SAASC,IACVA,GAAOlC,IAAE,iBACjBL,OAAO0C,SAAS,aAC5BrC,IAAE,gBAAgBoC,QAAQ,IAAIpC,IAAAA,OAAQ,cACvC,GClBA,SAASK,EAAKiC,EAAQC,EAAU/B,GACf,SAAX8B,GAAgC,WAAXA,IAAwBE,GAAAA,qBAAAA,gCAKlDhC,EAAUA,GAAW,CAAC,EACtBR,IAAAA,KAAO,CACNyC,KAAMH,EAAOI,cACbC,KAAKC,EAAAA,EAAAA,gBAAe,4CAA8CL,EAClEM,KAAMrC,EAAQqC,MAAQ,CAAC,EACvBC,QAAStC,EAAQsC,QACjB1C,MAAOI,EAAQJ,SAVfoC,GAAAA,qBAAAA,4BAAoD3C,EAAEkD,KAAK1C,EAAMX,KAAM4C,EAAQC,EAAU/B,GAY3F,CAOO,SAASwC,EAAQxC,GACvBH,EAAK,MAAO,GAAIG,EACjB,CASO,SAASyC,EAAQC,EAAK1C,GAC5BH,EAAK,MAAO,IAAM6C,EAAK1C,EACxB,CAWO,SAAS2C,EAASD,EAAKE,EAAKC,EAAc7C,IAChDA,EAAUA,GAAW,CAAC,GACdqC,KAAO,CACdQ,aAAAA,GAGDhD,EAAK,MAAO,IAAM6C,EAAM,IAAME,EAAK5C,EACpC,CAWO,SAAS8C,EAASJ,EAAKE,EAAKG,EAAO/C,IACzCA,EAAUA,GAAW,CAAC,GACdqC,KAAO,CACdU,MAAAA,GAGDlD,EAAK,OAAQ,IAAM6C,EAAM,IAAME,EAAK5C,EACrC,CAUO,SAASgD,EAAUN,EAAKE,EAAK5C,GACnCH,EAAK,SAAU,IAAM6C,EAAM,IAAME,EAAK5C,EACvC,CCxFO,IAAMiD,EAAYC,OAAOC,cAAgB,CAAC,EAMpCC,EAAY,CAIxBT,SAAU,SAASD,EAAKE,EAAKC,EAAc5D,GAC1C0D,EAASD,EAAKE,EAAKC,EAAc,CAChCP,QAASrD,GAEX,EAKA6D,SAAU,SAASJ,EAAKE,EAAKG,GAC5BD,EAASJ,EAAKE,EAAKG,EACpB,EAKAP,QAAS,SAASvD,GACjBuD,EAAQ,CACPF,QAASrD,GAEX,EAKAwD,QAAS,SAASC,EAAKzD,GACtBwD,EAAQC,EAAK,CACZJ,QAASrD,GAEX,EAKA+D,UAAW,SAASN,EAAKE,GACxBI,EAAUN,EAAKE,EAChB,cCpDD,OAFkDtD,IAA5B4D,OAAOG,kBAAkCH,OAAOG,2DCMhEC,EAAY,CACjBC,OAAQ,OACRC,OAAQ,YACRC,MAAO,YACPC,OAAQ,SACRC,KAAM,YAcP,SAASC,EAAoBC,EAAQC,GACpC,GAAIzE,EAAAA,GAAAA,QAAUwE,GACb,OAAOxE,EAAAA,GAAAA,IAAMwE,GAAQ,SAASE,GAC7B,OAAOH,EAAoBG,EAAWD,EACvC,IAED,IAAIE,EAAQ,CACXC,KAAMJ,EAAOI,MAsBd,OAnBA5E,EAAAA,GAAAA,KAAOwE,EAAOK,UAAU,SAASA,GAChC,GAAwB,oBAApBA,EAASC,OAIb,IAAK,IAAIvB,KAAOsB,EAASE,WAAY,CACpC,IAAIC,EAAUzB,EACVA,KAAOkB,IACVO,EAAUP,EAAclB,IAEzBoB,EAAMK,GAAWH,EAASE,WAAWxB,EACtC,CACD,IAEKoB,EAAMM,KAEVN,EAAMM,GAAKC,EAAoBP,EAAMC,OAG/BD,CACR,CAQA,SAASO,EAAoBpC,GAC5B,IAAIqC,EAAWrC,EAAIsC,QAAQ,KACvBD,EAAW,IACdrC,EAAMA,EAAIuC,OAAO,EAAGF,IAGrB,IACIX,EADAc,EAAQxC,EAAIzB,MAAM,KAEtB,GACCmD,EAASc,EAAMA,EAAMzD,OAAS,GAC9ByD,EAAMC,aAGGf,GAAUc,EAAMzD,OAAS,GAEnC,OAAO2C,CACR,CAEA,SAASgB,EAAgBV,GACxB,OAAOA,GAAU,KAAOA,GAAU,GACnC,CA8CA,SAASW,EAAcC,EAAQ/E,EAASgF,EAAOC,GAC9C,OAAOF,EAAOG,UACblF,EAAQmC,IA9CV,SAA+CgD,EAAOrB,GACrD,IACIlB,EADAoB,EAAQ,CAAC,EAEb,IAAKpB,KAAOuC,EAAO,CAClB,IAAIC,EAActB,EAAclB,GAC5BG,EAAQoC,EAAMvC,GACbwC,IACJzF,EAAQ0F,KAAK,0CAA4CzC,GACzDwC,EAAcxC,IAEXvD,EAAAA,GAAAA,UAAY0D,IAAU1D,EAAAA,GAAAA,SAAW0D,MAEpCA,EAAQ,GAAKA,GAEdiB,EAAMoB,GAAerC,CACtB,CACA,OAAOiB,CACR,CA8BEsB,CAAsCN,EAAMO,QAASvF,EAAQ8D,eAC7DmB,GACCO,MAAK,SAAS3B,GACXgB,EAAgBhB,EAAOM,QACtB9E,EAAAA,GAAAA,WAAaW,EAAQsC,UAGxBtC,EAAQsC,QAAQ0C,EAAMS,UAEbpG,EAAAA,GAAAA,WAAaW,EAAQJ,QAC/BI,EAAQJ,MAAMiE,EAEhB,GAED,CA2DO,ICzMD6B,EAAWC,IAAAA,aAGjBC,OAAOC,OAAOH,EAAU,CACvBI,QDqMsB,SAAC9F,EAASgF,GAChC,IAAID,EAAS,IAAIgB,EAAAA,IAAAA,OAAW,CAC3BC,QAAShG,EAAQmC,IACjB8D,cAAe5G,EAAAA,GAAAA,OAAS,CACvB,OAAQ,IACR,yBAA0B,MACxBW,EAAQiG,eAAiB,CAAC,KAE9BlB,EAAOmB,WAAa,WACnB,OAAOlG,EAAQmC,GAChB,EACA,IAAI8C,EAAU5F,EAAAA,GAAAA,OAAS,CACtB,mBAAoB,iBACpB,aAAgB2C,GAAGmE,cACjBnG,EAAQiF,SACX,MAAqB,aAAjBjF,EAAQiC,KApHb,SAAsB8C,EAAQ/E,EAASgF,EAAOC,GAC7C,OAAOF,EAAOqB,SACbpG,EAAQmC,IACR9C,EAAAA,GAAAA,OAASW,EAAQ8D,gBAAkB,GACnC9D,EAAQqG,MACRpB,GACCO,MAAK,SAASc,GACf,GAAIzB,EAAgByB,EAASnC,SAC5B,GAAI9E,EAAAA,GAAAA,WAAaW,EAAQsC,SAAU,CAClC,IAAIiE,EAAelH,EAAAA,GAAAA,OAASW,EAAQ8D,eAChC0C,EAAU5C,EAAoB0C,EAASG,KAAMF,GAC7CvG,EAAQqG,MAAQ,GAEnBG,EAAQE,QAGT1G,EAAQsC,QAAQkE,EAEjB,OACUnH,EAAAA,GAAAA,WAAaW,EAAQJ,QAC/BI,EAAQJ,MAAM0G,EAEhB,GACD,CA8FSK,CAAa5B,EAAQ/E,EAASgF,EAAOC,GACjB,cAAjBjF,EAAQiC,KACX6C,EAAcC,EAAQ/E,EAASgF,EAAOC,GAClB,UAAjBjF,EAAQiC,KA5EpB,SAAmB8C,EAAQ/E,EAASgF,EAAOC,GAE1C,OAAOF,EAAO6B,QACb5G,EAAQiC,KACRjC,EAAQmC,IACR8C,EACA,MACCO,MAAK,SAAS3B,GACVgB,EAAgBhB,EAAOM,QAO5BW,EAAcC,EAAQ/E,EAASgF,EAAOC,GANjC5F,EAAAA,GAAAA,WAAaW,EAAQJ,QACxBI,EAAQJ,MAAMiE,EAMjB,GACD,CA4DSgD,CAAU9B,EAAQ/E,EAASgF,EAAOC,GA1D3C,SAAoBF,EAAQ/E,EAASgF,EAAOC,GAE3C,OADAA,EAAQ,gBAAkB,mBACnBF,EAAO6B,QACb5G,EAAQiC,KACRjC,EAAQmC,IACR8C,EACAjF,EAAQqC,MACPmD,MAAK,SAAS3B,GACf,GAAKgB,EAAgBhB,EAAOM,SAO5B,GAAI9E,EAAAA,GAAAA,WAAaW,EAAQsC,SAAU,CAClC,GAAqB,QAAjBtC,EAAQiC,MAAmC,SAAjBjC,EAAQiC,MAAoC,UAAjBjC,EAAQiC,KAAkB,CAGlF,IAAI6E,EAAejD,EAAO4C,MAAQzB,EAAMS,SACpCsB,EAAiBlD,EAAOmD,IAAIC,kBAAkB,oBAKlD,MAJqB,SAAjBjH,EAAQiC,MAAmB8E,IAC9BD,EAAaxC,GAAKC,EAAoBwC,SAEvC/G,EAAQsC,QAAQwE,EAEjB,CAEA,GAAsB,MAAlBjD,EAAOM,OAAgB,CAC1B,IAAIoC,EAAelH,EAAAA,GAAAA,OAASW,EAAQ8D,eACpC9D,EAAQsC,QAAQsB,EAAoBC,EAAO4C,KAAMF,GAClD,MACCvG,EAAQsC,QAAQuB,EAAO4C,KAEzB,OAzBKpH,EAAAA,GAAAA,WAAaW,EAAQJ,QACxBI,EAAQJ,MAAMiE,EAyBjB,GACD,CAwBSqD,CAAWnC,EAAQ/E,EAASgF,EAAOC,EAE5C,EC5NCkC,QDiOsB,SAAAzB,GAAQ,OAAI,SAAC5D,EAAQkD,EAAOhF,GAClD,IAAIoH,EAAS,CAAEnF,KAAMqB,EAAUxB,IAAWA,GACtCuF,EAAgBrC,aAAiBU,EAAS4B,WA6B9C,GA3Be,WAAXxF,IAGCkD,EAAMuC,mBAETH,EAAOnF,KAAO,SACJ+C,EAAMwC,QAAWxC,EAAMyC,YAAczC,EAAMyC,WAAWD,UAEhEJ,EAAOnF,KAAO,QAKXjC,EAAQmC,MACZiF,EAAOjF,IAAM9C,EAAAA,GAAAA,OAAS2F,EAAO,QA7O/B,WACC,MAAM,IAAI0C,MAAM,iDACjB,CA2OyCC,IAIpB,MAAhB3H,EAAQqC,OAAgB2C,GAAqB,WAAXlD,GAAkC,WAAXA,GAAkC,UAAXA,IACnFsF,EAAO/E,KAAOuF,KAAKC,UAAU7H,EAAQmF,OAASH,EAAMS,OAAOzF,KAIxC,aAAhBoH,EAAOnF,OACVmF,EAAOU,aAAc,GAGF,aAAhBV,EAAOnF,MAAuC,cAAhBmF,EAAOnF,KAAsB,CAC9D,IAAI6B,EAAgBkB,EAAMlB,eACrBA,GAAiBkB,EAAMA,QAE3BlB,EAAgBkB,EAAMA,MAAM+C,UAAUjE,eAEnCA,IACCzE,EAAAA,GAAAA,WAAayE,GAChBsD,EAAOtD,cAAgBA,EAAcjE,KAAKmF,GAE1CoC,EAAOtD,cAAgBA,GAIzBsD,EAAOtD,cAAgBzE,EAAAA,GAAAA,OAAS+H,EAAOtD,eAAiB,CAAC,EAAG9D,EAAQ8D,eAEhEzE,EAAAA,GAAAA,YAAcW,EAAQqG,SAExBrG,EAAQqG,MADLgB,EACa,EAEA,EAGnB,CAGA,IAAIzH,EAAQI,EAAQJ,MACpBI,EAAQJ,MAAQ,SAASoH,EAAKgB,EAAYC,GACzCjI,EAAQgI,WAAaA,EACrBhI,EAAQiI,YAAcA,EAClBrI,GACHA,EAAMC,KAAKG,EAAQkI,QAASlB,EAAKgB,EAAYC,EAE/C,EAGA,IAAIjB,EAAMhH,EAAQgH,IAAMtB,EAASI,QAAQzG,EAAAA,GAAAA,OAAS+H,EAAQpH,GAAUgF,GAEpE,OADAA,EAAMpD,QAAQ,UAAWoD,EAAOgC,EAAKhH,GAC9BgH,CACR,CAAC,CCvSSG,CAAQzB,KAGlB,mBCVA,EAFexC,OAAOiF,YAAc,CAAC,aCY/BC,EAAUC,EAAAA,MAAAA,OAAa,CAC5BC,SAAU,CACTC,SAAU,GACVC,YAAa,GACbC,QAAS,GACTC,cAAc,EACdC,eAAe,EACfC,gBAAgB,GAMjBC,WAAY,WAEwB,IAA/B3J,KAAK4J,IAAI,WAAW5H,OACvBhC,KAAK6J,IAAI,gBAAgB,GACgB,IAA/B7J,KAAK4J,IAAI,WAAW5H,QAC9BhC,KAAK6J,IAAI,iBAAiB,GAC1B7J,KAAK6J,IAAI,eAAgB7J,KAAK4J,IAAI,WAAW,KAE7C5J,KAAK6J,IAAI,kBAAkB,EAE7B,IAOKC,EAAoB1B,EAAAA,WAAAA,OAAkB,CAC3CtC,MAAOoD,IAOFa,EAAmBC,EAAAA,KAAAA,OAAY,CAGpCC,iBAAa7J,EAGb8J,UAAW,GAMXP,WAAY,SAAS7I,GACpBd,KAAKiK,YAAcnJ,EAAQyH,UAC5B,EAKA4B,OAAQ,WACP,IAAIC,EAAOpK,KAcX,OAbAoK,EAAK5H,IAAI3B,KAAK,IACduJ,EAAKF,UAAY,GAEjBE,EAAKH,YAAYI,SAAQ,SAASC,GACjC,IAAIC,EAAO,IAAIC,EAAqB,CACnC1E,MAAOwE,IAERC,EAAKJ,SACLC,EAAK5H,IAAIiI,OAAOF,EAAK/H,KACrB+H,EAAKG,GAAG,oBAAqBN,EAAKO,yBAA0BP,GAC5DA,EAAKF,UAAUU,KAAKL,EACrB,IAEOH,CACR,EAQAO,yBAA0B,SAASE,GAClC7K,KAAKkK,UAAUG,SAAQ,SAASS,GAC/BA,EAAKpI,QAAQ,2BAA4BmI,EAC1C,GACD,IAOKL,EAAuBR,EAAAA,KAAAA,OAAY,CAGxCe,UAAW,UAGXC,eAAW5K,EAGX6K,YAAQ7K,EAGR8K,kBAAkB,EAElBC,OAAQ,CACP,mBAAoB,wBAGrBC,gBAAiBC,EAAQ,OAMzBC,SAAU,SAASnI,GAClB,OAAOnD,KAAKoL,gBAAgBjI,EAC7B,EAMAwG,WAAY,SAAS7I,GACpBd,KAAKiL,OAASnK,EAAQgF,MACtB9F,KAAK0K,GAAG,2BAA4B1K,KAAKuL,yBAA0BvL,KACpE,EAKAmK,OAAQ,WAcP,OAbAnK,KAAKwC,IAAI3B,KAAKb,KAAKsL,SAAS,CAC3BhB,QAAStK,KAAKiL,OAAO1E,YAEtBvG,KAAKwL,iBAGLxL,KAAKM,EAAE,cAAcmL,iBAAiBzL,KAAKiL,OAAOrB,IAAI,aAGtD5J,KAAKM,EAAE,eAAeoL,QAAQ,CAAEC,UAAW,SAE3C3L,KAAKM,EAAE,kBAAkBoL,QAAQ,CAAEC,UAAW,SAEvC3L,IACR,EAQA4L,qBAAsB,WACrB5L,KAAKkL,kBAAoBlL,KAAKkL,iBAC1BlL,KAAKkL,iBACRlL,KAAKM,EAAE,SAASe,OAEhBrB,KAAKM,EAAE,SAASL,OAEjBD,KAAK0C,QAAQ,oBAAqB1C,KAAKwC,IACxC,EAOA+I,yBAA0B,SAASV,GAC9B7K,KAAKwC,IAAIqJ,GAAGhB,KAIhB7K,KAAKkL,kBAAmB,EACxBlL,KAAKM,EAAE,SAASL,OACjB,IAOK6L,EAAmB9B,EAAAA,KAAAA,OAAY,CAGpC+B,sBAAkB3L,EAGlB4L,oBAAgB5L,EAGhB6L,sBAAkB7L,EAGlB8L,uBAAmB9L,EAGnB+L,eAAW/L,EAGXgM,YAAa,GAEbjB,OAAQ,CACP,6BAA8B,aAG/BkB,UAAW,CACVC,QAASjB,EAAQ,OACjB3K,MAAO2K,EAAQ,OACfkB,KAAMlB,EAAQ,OACdmB,KAAMnB,EAAQ,QAMfoB,UAAWtM,EAAAA,GAAAA,UAAW,SAASuM,GAC9B,IAAIC,EAAa3M,KAAKM,EAAE,wBAAwBsM,MAK5CD,IAAe3M,KAAKoM,cACvBpM,KAAK0C,QAAQ,SAAU1C,KAAKM,EAAE,wBAAwBsM,OACtD5M,KAAKoM,YAAcO,EAErB,GAAG,KAMHE,gBAAiB,SAAS1J,GACzB,OAAOnD,KAAKqM,UAAUC,QAAQnJ,EAC/B,EAMA2J,cAAe,SAAS3J,GACvB,OAAOnD,KAAKqM,UAAU3L,MACrBP,EAAAA,GAAAA,OAAS,CACR4M,iBAAkB5K,EAAE,OAAQ,iCAC1BgB,GAEL,EAMA6J,gBAAiB,SAAS7J,GACzB,OAAOnD,KAAKqM,UAAUE,KACrBpM,EAAAA,GAAAA,OAAS,CACR8M,mBAAoB9K,EAAE,OAAQ,sBAC5BgB,GAEL,EAMA+J,iBAAkB,SAAS/J,GAC1B,OAAOnD,KAAKqM,UAAUG,KACrBrM,EAAAA,GAAAA,OAAS,CACRgN,oBAAqBhL,EAAE,OAAQ,qBAC/BiL,oBAAqBjL,EAAE,OAAQ,uBAC/BkL,oBAAqBlL,EAAE,OAAQ,6BAC7BgB,GAEL,EAMAwG,WAAY,SAAS7I,GACpBd,KAAKc,QAAUA,CAChB,EAMAwM,YAAa,SAAShM,GACrBtB,KAAKmK,SACLnK,KAAKmM,eAAY/L,EACjBJ,KAAKM,EAAE,YAAYO,KAAKb,KAAK6M,gBAAgB,CAC5CU,YAAajM,IAEf,EAKAkM,UAAW,WACVxN,KAAKmK,SACLnK,KAAKmM,eAAY/L,EACjBJ,KAAKM,EAAE,YAAYO,KAAKb,KAAK8M,gBAC9B,EAOAW,aAAc,SAASC,EAAUf,GAChC3M,KAAKmM,UAAYuB,EAASC,SAC1B3N,KAAKmK,OAAO,CACXwD,SAAUD,EAASC,WAGpB,IAAInB,EAAO,IAAIzC,EAAiB,CAC/BxB,WAAYmF,EAASC,WAEtBnB,EAAKrC,SACLnK,KAAKM,EAAE,YAAYO,KAAKb,KAAKkN,iBAAiB,CAC7CS,SAAUD,EAASC,SACnBhB,WAAYA,EACZiB,mBAAoBF,EAASE,mBAC7BC,eAAgB/K,GAAAA,YAAe,kBAC/BgL,cAAehL,GAAAA,cACfiL,mBAAoBjL,GAAAA,YAAe,qCAEpC9C,KAAKM,EAAE,0BAA0BO,KAAK2L,EAAKhK,IAC5C,EAMA2H,OAAQ,SAAShH,GAChB,IAAI6K,EAAYhO,KAAKM,EAAE,wBAAwBsM,MAM/C,OALA5M,KAAKwC,IAAI3B,KAAKb,KAAKgN,gBAAgB7J,IAGnCnD,KAAKM,EAAE,wBAAwBsM,IAAIoB,GACnChO,KAAKM,EAAE,wBAAwB2N,QACxBjO,IACR,IAUKkO,EAAe,SAASpN,GAC7Bd,KAAK2J,WAAW7I,EACjB,EAEAoN,EAAarF,UAAY,CAExBrG,SAAKpC,EAGL+N,WAAO/N,EAGPgO,sBAAkBhO,EAOlBuJ,WAAY,SAAS7I,GACpBd,KAAKwC,IAAMlC,IAAEQ,EAAQuN,IAErBrO,KAAKmO,MAAQ,IAAIrC,EAAiB,CACjCuC,GAAIrO,KAAKwC,MAGVxC,KAAKmO,MAAMzD,GAAG,UAAU,SAASiC,GAChC3M,KAAKsO,aAAa3B,EACnB,GAAG3M,KACJ,EAOAuO,aAAc,SAAS5B,GACtB,IAAI1J,EAAMH,GAAAA,YAAe,0BACzB,OAAO0L,QAAQC,QAAQnO,IAAAA,KAAO2C,EAAK,CAClCL,OAAQ,OACRO,KAAM,CACLuL,OAAQ/B,KAGX,EAMA2B,aAAc,SAAS3B,GACtB,IAAIvC,EAAOpK,KAaX,OAXKoK,EAAKgE,mBACThE,EAAKgE,iBAAmBhE,EAAKmE,aAAa5B,IAGvCxM,EAAAA,GAAAA,YAAcwM,IAA8B,KAAfA,EAChCvC,EAAK+D,MAAMb,YAAYnL,EAAE,OAAQ,4BAEjCiI,EAAK+D,MAAMb,YAAYnL,EAAE,OAAQ,uBAAwB,CACxDwM,KAAMhC,KAGDvC,EAAKgE,iBAAiB9H,MAAK,SAASnD,GAE1CA,EAAKwK,SAAW,IAAI7D,EAAkB3G,EAAKwK,UAE3CvD,EAAK+D,MAAMV,aAAatK,EAAMwJ,EAC/B,IAAG,SAASD,GACXtC,EAAK+D,MAAMX,YACX/M,EAAQC,MAAM,2CAA4CgM,EAC3D,IAAGpG,MAAK,kBAGA8D,EAAKgE,gBACb,IAAGQ,MAAMnO,EAAQC,MAAM2C,KAAKrD,MAC7B,GAGD,QC5bM6O,GAASC,SACbC,qBAAqB,QAAQ,GAC7BC,aAAa,aACTC,GAAcH,SAClBC,qBAAqB,QAAQ,GAC7BC,aAAa,yBAEFE,QAAyB9O,IAAXyO,IAAuBA,0yBC9BlD,IC6BA,IAICM,ODX0B,IAK1B,0GAAc,SACb1O,GAAQ0F,KAAK,sEACd,KEAYiJ,GAAmB,SAACC,GAChC,MAAmB,UAAfA,EAAMtM,MAGS,YAAfsM,EAAMtM,MAAoC,UAAdsM,EAAM3L,GAIvC,ujBCmBA,IA0iCgB,GCnkCY4L,GAAQC,GAC/BC,GDwBCC,GAAU,CAEfC,eAAgB,GAChBC,WAAY,GAEZC,uBAAwB,EACxBC,qBAAsB,EACtBC,qBAAsB,EACtBC,0BAA2B,EAC3BC,uBAAwB,EAGxBC,eAAgB,EAShBC,MAAO,SAAS5O,EAAM6O,EAAOpQ,EAAUqQ,GACtCpQ,KAAKqQ,QACJ/O,EACA6O,EACA,QACAV,GAAQa,UACRvQ,EACAqQ,EAEF,EAQAG,KAAM,SAASjP,EAAM6O,EAAOpQ,EAAUqQ,GACrCpQ,KAAKqQ,QAAQ/O,EAAM6O,EAAO,OAAQV,GAAQa,UAAWvQ,EAAUqQ,EAChE,EAUAI,QAAS,SAASlP,EAAM6O,EAAOpQ,EAAUqQ,GACxC,OAAOpQ,KAAKqQ,QACX/O,EACA6O,EACA,SACAV,GAAQC,eACR3P,EACAqQ,EAEF,EAUAK,mBAAoB,SAASnP,EAAM6O,EAAOO,EAAS3Q,EAAUqQ,GAC5D,OAAOpQ,KAAKqQ,QACX/O,EACA6O,EACA,OACAO,EACA3Q,OACUK,IAAVgQ,GAA6BA,EAE/B,EASAO,YAAa,SAASrP,EAAM6O,EAAOpQ,EAAUqQ,GAC5C,OAAOpQ,KAAKqQ,QACX/O,EACA6O,EACA,SACAV,GAAQC,eACR3P,EACAqQ,GACA,EAEF,EAWAQ,OAAQ,SAAStP,EAAM6O,EAAOpQ,EAAUqQ,EAAOS,EAAMC,GACpD,OAAOxQ,IAAAA,KAAON,KAAK+Q,uBAAuBzK,MAAK,SAAS0K,GACvD,IAAIC,EAAa,aAAexB,GAAQQ,eAAiB,WACrDiB,EAAW,IAAMD,EACjBE,EAAOH,EAAMI,WAAW,CAC3BC,YAAaJ,EACbd,MAAOA,EACPE,QAAS/O,EACTyB,KAAM,WAEHuO,EAAQhR,IAAE,YACdgR,EAAMC,KAAK,OAAQT,EAAW,WAAa,QAAQS,KAAK,KAAMN,EAAa,UAAUM,KAAK,cAAeV,GACzG,IAAIW,EAAQlR,IAAE,YAAYiR,KAAK,MAAON,EAAa,UAAU3P,KAAKuP,EAAO,MACzEM,EAAK1G,OAAO+G,GACZL,EAAK1G,OAAO6G,QACElR,IAAVgQ,IACHA,GAAQ,GAET9P,IAAE,QAAQmK,OAAO0G,QAKA/Q,IAAbL,IACHA,EAAWI,EAAAA,GAAAA,KAAOJ,IAGnB,IAAI0R,EAAa,CAAC,CACjBnQ,KAAMa,EAAE,OAAQ,MAChBuP,MAAO,gBACWtR,IAAbL,GAEHA,GAAS,EAAOuR,EAAM1E,OAEvBtM,IAAE4Q,GAAUS,SAAS,QACtB,GACE,CACFrQ,KAAMa,EAAE,OAAQ,OAChBuP,MAAO,gBACWtR,IAAbL,GAEHA,GAAS,EAAMuR,EAAM1E,OAEtBtM,IAAE4Q,GAAUS,SAAS,QACtB,EACAC,eAAe,IAGhBtR,IAAE4Q,GAAUS,SAAS,CACpBE,eAAe,EACfzB,MAAOA,EACPM,QAASe,EACTK,MAAO,gBAEW1R,IAAbL,GAEHA,GAAS,EAAOuR,EAAM1E,MAExB,IAED0E,EAAMrD,QACNwB,GAAQQ,gBACT,GACD,EAqBA8B,WAAY,SAAS5B,EAAOpQ,EAAUiS,EAAaC,EAAgB7B,EAAOrN,EAAMmP,EAAMpR,GACrF,IAAIsJ,EAAOpK,KAKX,GAHAA,KAAK+R,WAAWI,UAAY,OAC5BnS,KAAK+R,WAAWK,UAAY,OAExBpS,KAAK+R,WAAWzF,QAApB,MAIalM,IAAT2C,IACHA,EAAO/C,KAAK4P,wBAGb,IAAIyC,EAAYlQ,EAAE,OAAQ,oBACtBmQ,EAAUnQ,EAAE,QAAS,cACrBY,IAAS/C,KAAK8P,sBAAwB/M,IAAS/C,KAAK6P,sBAAwB9M,IAAS/C,KAAK+P,4BAC7FsC,EAAYlQ,EAAE,OAAQ,+BAGvBnC,KAAK+R,WAAWzF,SAAU,EAC1BtM,KAAK+R,WAAWQ,YAAeC,GAAIC,SAAWD,GAAIC,QAAQC,WAAaF,GAAIC,QAAQC,UAAUC,SAAYH,GAAIC,QAAQC,UAAUC,SAASJ,YAAczP,GAAAA,MAAAA,YAEtJ9C,KAAK4S,SAAW,KAChBV,EAAOA,GAAQ,GACfpR,EAAU4F,OAAOC,OAAO,CACvBkM,uBAAuB,GACrB/R,GAEHR,IAAAA,KAAON,KAAK8S,0BAA0BxM,MAAK,SAAS0K,GAAO,QAC1D5G,EAAK2H,WAAWzF,SAAU,EAEtBlC,EAAK2I,aACR3I,EAAK2I,YAAYpB,SAAS,SAGvBM,UACHA,EAAiB,IAEc,iBAApBA,IACXA,EAAiB,CAACA,IAGnB7H,EAAK2I,YAAc/B,EAAMI,WAAW,CACnCC,YAbgB,+BAchBlB,MAAOA,EACP6C,UAAWX,EACXY,QAASX,EACTY,QAAS/Q,EAAE,OAAQ,QACnBgR,QAAShR,EAAE,OAAQ,QACnBiR,YAAajR,EAAE,OAAQ,cACrBgB,KAAK,OAAQ+O,GAAM/O,KAAK,cAAe6O,GAAa7O,KAAK,WAAY8O,GAAgB9O,KAAK,wBAAyBrC,EAAQ+R,uBAC/F,mBAApB/R,EAAQ4N,QAClBtE,EAAK2I,YAAY5P,KAAK,SAAUrC,EAAQ4N,aAG3BtO,IAAVgQ,IACHA,GAAQ,QAEWhQ,IAAhB4R,IACHA,GAAc,GAGf1R,IAAiB,QAAhB,EAAQ,QAAR,EAACQ,SAAO,aAAP,EAASuS,cAAM,QAAI,QAAQC,QAAQlJ,EAAK2I,aAE1C3I,EAAKmJ,cAAgBjT,IAAE,8BACvB8J,EAAKmJ,cAAc7I,GAAG,iBAAiB,SAAS2E,GAC3CD,GAAiBC,IACpBjF,EAAKoJ,mBAEP,IACApJ,EAAKqJ,mBAEL,IAAIC,EAAYtJ,EAAK2I,YAAYhR,KAAK,kCAClCgB,IAASqH,EAAKwF,wBAA2B9O,EAAQ+R,uBACpDzI,EAAK2I,YAAYhR,KAAK,sBAAsB9B,OAE7CyT,EAAUhJ,GAAG,SAAS,WACrBN,EAAK2I,YAAYpB,SAAS,oBAAoB,SAAStC,GACtDA,EAAMsE,2BACNtE,EAAMuE,iBACNF,EAAUhC,OACX,GACD,IACAgC,EAAUhJ,GAAG,QAAQ,WACpBN,EAAK2I,YAAYpB,SAAS,qBAC3B,IAEA7O,GAAAA,aAAgB4Q,EAAWtJ,EAAK2I,YAAYhR,KAAK,UAAU,WAC1D8R,EAAOnI,QAAQ,QACfmI,EAAO5F,QACP7D,EAAK2I,YAAYpB,SAAS,oBAAoB,SAAStC,GACtDA,EAAMsE,2BACNtE,EAAMuE,iBACNxJ,EAAK2I,YAAYe,QAClB,IACA,IAAIC,EAAUF,EAAOjH,MACjBoH,EAAUD,EAAQE,YAAY,MACjB,IAAbD,IACHA,EAAUD,EAAQ/R,QAEnB6R,EAAOK,YAAY,EAAGF,EACvB,IACA,IAAIG,EAAQ/J,EAAK2I,YAAYhR,KAAK,iBAC9B8R,EAASM,EAAMpS,KAAK,sBACpBqS,EAAUD,EAAMpS,KAAK,wBACzB8R,EAAOnJ,GAAG,WAAW,SAAS2E,GACzBD,GAAiBC,KACpBA,EAAMsE,2BACNtE,EAAMuE,iBACNO,EAAML,SAER,IACAM,EAAQ1J,GAAG,SAAS,SAAS2E,GAC5BA,EAAMsE,2BACNtE,EAAMuE,iBACNO,EAAML,QACP,IAyDAK,EAAMzJ,GAAG,UAAU,SAAS2E,GAI3B,GAHAA,EAAMgF,kBACNhF,EAAMuE,iBA9BU,WAChB,IAAIU,EAAWT,EAAOjH,MACtB,IACC,GAnBoB,SAAUiE,GAC/B,IAAI0D,EAAc1D,EAAK2D,OACvB,GAAoB,MAAhBD,GAAuC,OAAhBA,EAE1B,MAAMpS,EAAE,QAAS,oCAAqC,CAAC0O,KAAMA,IACvD,GAA2B,IAAvB0D,EAAYvS,OACtB,MAAMG,EAAE,QAAS,8BACX,IAAkC,IAA9BoS,EAAYhP,QAAQ,KAC9B,MAAMpD,EAAE,QAAS,0CACX,GAAOoS,EAAYE,MAAM3R,GAAAA,OAAAA,uBAC/B,MAAMX,EAAE,QAAS,sCAAuC,CAAC0O,KAAMA,IAGhE,OAAO,CACR,CAKO6D,CAAgBJ,GAEd,IAAIlK,EAAKwI,SAAS7Q,MAAK,SAAS4S,GACtC,OAAOA,EAAK9D,OAAS7Q,IACtB,GAAGsU,GACF,MAAMnS,EAAE,QAAS,2BAA4B,CAAE4R,QAASO,QAAYlU,EAAW,CAC9EwU,QAAQ,IAGT,OAAO,CACR,CAWD,CAVE,MAAOlU,GACRmT,EAAOtC,KAAK,QAAS7Q,GACrBmT,EAAOnI,QAAQ,CACdC,UAAW,QACXjJ,QAAS,SACT,UAAa,mBAEdmR,EAAOnI,QAAQ,aACfmI,EAAOnI,QAAQ,QACfmI,EAAOlR,SAAS,QACjB,CACA,OAAO,CACR,CAMKkS,GAAc,CACjB,IAAIC,EAAUjB,EAAOjH,MACrBxC,EAAK2H,WAAWQ,YAAYwC,gBAAgB3K,EAAK2I,YAAY5P,KAAK,QAAU,IAAM2R,GAASE,QAAO,SAAU/P,GAC3GmF,EAAK6K,gBAAgB7K,EAAK2I,YAAY5P,KAAK,QAAU,IAAM2R,EAAS/R,EACrE,IACAD,GAAAA,YACAsH,EAAK2I,YAAYpB,SAAS,sBAC1BvH,EAAK2I,YAAYrB,QACjBmC,EAAOjH,IAAI0F,EACZ,CACD,IACAuB,EAAOnJ,GAAG,SAAS,SAAS2E,GAC3BwE,EAAOnI,QAAQ,OAChB,IAEAtB,EAAK2I,YAAYmC,OAAM,WACtB9K,EAAK+K,gBAAkB/K,EAAK2I,YAAYhR,KAAK,sBAC7CqI,EAAKgL,UAAYhL,EAAK2I,YAAYhR,KAAK,mBACvCqI,EAAKiL,mBAAqBjL,EAAK2I,YAAYhR,KAAK,uBAChDqI,EAAKkL,SAAWlL,EAAK2I,YAAYhR,KAAK,YACtCqI,EAAKkL,SAAS5K,GAAG,gBAAiB,uBAAwBN,GAAM,SAASiF,GACpED,GAAiBC,IACpBjF,EAAKmL,sBAAsBlG,EAAOtM,EAEpC,IACAqH,EAAKgL,UAAU1K,GAAG,gBAAiB,MAAM,SAAS2E,GAC7CD,GAAiBC,IACpBjF,EAAKoL,mBAAmBnG,EAAO/O,IAAEN,MAAO+C,EAE1C,IACAqH,EAAK+K,gBAAgBzK,GAAG,gBAAiB,KAAK,SAAS2E,GACtD,GAAID,GAAiBC,GAAQ,CAC5B,IAAIoG,EAAMrL,EAAK2I,YAAY5P,KAAK,QAChCiH,EAAK2H,WAAWI,UAAY7R,IAAE+O,EAAMqG,eAAevS,KAAK,QACxDiH,EAAK2H,WAAWK,UAA0C,QAA9BhI,EAAK2H,WAAWK,UAAsB,OAAS,MAC3EhI,EAAK6K,gBAAgBQ,EAAK1S,EAC3B,CACD,IACAqH,EAAK6K,gBAAgB/C,EAAMnP,EAC5B,IAGA,IAAI4S,EAAiB,SAASC,GAC7B,QAAiBxV,IAAbL,EAAwB,CAC3B,IAAI8V,EACJ,IAAoB,IAAhB7D,EACH6D,EAAW,GACXzL,EAAKgL,UAAUrT,KAAK,kCAAkC1B,MAAK,SAASyV,EAAOC,GAC1EF,EAASjL,KAAKR,EAAK2I,YAAY5P,KAAK,QAAU,IAAM7C,IAAEyV,GAAS5S,KAAK,aACrE,QACM,CACN0S,EAAWzL,EAAK2I,YAAY5P,KAAK,QACjC,IAAI6S,EAAe5L,EAAKgL,UAAUrT,KAAK,kCAAkCoB,KAAK,aAC1E6S,IACHH,GAAY,IAAMG,EAEpB,CACAjW,EAAS8V,EAAUD,GACnBxL,EAAK2I,YAAYpB,SAAS,QAC3B,CACD,EAcIF,EAAa,GACb1O,IAAS0M,GAAQG,uBACpB6B,EAAW7G,KAAK,CACftJ,KAAMa,EAAE,OAAQ,UAChBuP,MAhBmB,WACpBiE,EAAelG,GAAQG,uBACxB,EAeEgC,eAAe,IAEN7O,IAAS0M,GAAQO,uBAC3BlP,EAAQ4P,QAAQrG,SAAQ,SAAS4L,GAChCxE,EAAW7G,KAAK,CACftJ,KAAM2U,EAAO3U,KACboQ,MAAO,WACNiE,EAAeM,EAAOlT,KACvB,EACA6O,cAAeqE,EAAOrE,eAExB,KAEI7O,IAAS0M,GAAQK,sBAAwB/M,IAAS0M,GAAQM,2BAC7D0B,EAAW7G,KAAK,CACftJ,KAAMa,EAAE,OAAQ,QAChBuP,MA7BgB,WAClBiE,EAAelG,GAAQK,qBACxB,EA4BG8B,eAAe,IAGb7O,IAAS0M,GAAQI,sBAAwB9M,IAAS0M,GAAQM,2BAC7D0B,EAAW7G,KAAK,CACftJ,KAAMa,EAAE,OAAQ,QAChBuP,MAhCgB,WAClBiE,EAAelG,GAAQI,qBACxB,EA+BG+B,eAAe,KAKlBxH,EAAK2I,YAAYpB,SAAS,CACzBE,eAAe,EAEfqE,MAAO,IACPC,OAAQ,IACR/F,MAAOA,EACPM,QAASe,EACT2E,MAAO,CACN1F,QAAS,SAEVoB,MAAO,WACN,IACCxR,IAAEN,MAAM2R,SAAS,WAAW0E,QAE7B,CADE,MAAO3J,GACT,CACAtC,EAAK2I,YAAc,IACpB,IAKD,IACIuD,EADclM,EAAK2I,YAAYwD,QAAQ,cACLxU,KAAK,aACgC,IAAvEqI,EAAK2I,YAAY5P,KAAK,YAAYoC,QAAQ,yBAAkC6E,EAAK2I,YAAY5P,KAAK,yBACrGmT,EAAoBE,KAAK,YAAY,GAErCF,EAAoBE,KAAK,YAAY,EAEvC,IACEC,MAAK,SAASxR,EAAQvE,GAGtB0J,EAAK2H,WAAWzF,SAAU,EACX,IAAXrH,GACHiL,MAAM/N,EAAE,OAAQ,8CAA+C,CAAEzB,MAAOA,IAE1E,GA1TD,CA2TD,EAKA2P,QAAS,SAASqG,EAASvG,EAAOwG,EAAYjG,EAAS3Q,EAAUqQ,EAAOwG,GACvE,OAAOtW,IAAAA,KAAON,KAAK+Q,uBAAuBzK,MAAK,SAAS0K,GACvD,IAAIC,EAAa,aAAexB,GAAQQ,eAAiB,WACrDiB,EAAW,IAAMD,EACjBE,EAAOH,EAAMI,WAAW,CAC3BC,YAAaJ,EACbd,MAAOA,EACPE,QAASqG,EACT3T,KAAM4T,GACJC,EAAY,CAAEC,eAAgB,IAAO,CAAC,QAC3BzW,IAAVgQ,IACHA,GAAQ,GAET9P,IAAE,QAAQmK,OAAO0G,GACjB,IAAIM,EAAa,GACjB,OAAQf,GACR,KAAKjB,GAAQC,eACZ+B,EAAa,CAAC,CACbnQ,KAAMa,EAAE,OAAQ,MAChBuP,MAAO,gBACWtR,IAAbL,GACHA,GAAS,GAEVO,IAAE4Q,GAAUS,SAAS,QACtB,GAED,CACCrQ,KAAMa,EAAE,OAAQ,OAChBuP,MAAO,gBACWtR,IAAbL,GACHA,GAAS,GAEVO,IAAE4Q,GAAUS,SAAS,QACtB,EACAC,eAAe,IAEhB,MACD,KAAKnC,GAAQa,UAOZmB,EAAW,GAAK,CACfnQ,KAAMa,EAAE,OAAQ,MAChBuP,MARoB,WACpBpR,IAAE4Q,GAAUS,SAAS,cACJvR,IAAbL,GACHA,GAEF,EAIC6R,eAAe,GAEhB,MACD,QACyB,WAApB,GAAOlB,IACFA,EAAQ3N,OACV0M,GAAQC,iBACZ+B,EAAa,CAAC,CACbnQ,KAAMoP,EAAQoG,QAAU3U,EAAE,OAAQ,MAClCuP,MAAO,gBACWtR,IAAbL,GACHA,GAAS,GAEVO,IAAE4Q,GAAUS,SAAS,QACtB,GAEA,CACCrQ,KAAMoP,EAAQF,SAAWrO,EAAE,OAAQ,OACnCuP,MAAO,gBACWtR,IAAbL,GACHA,GAAS,GAEVO,IAAE4Q,GAAUS,SAAS,QACtB,EACAC,eAAe,EACfmF,QAASrG,EAAQsG,kBAQvB1W,IAAE4Q,GAAUS,SAAS,CACpBE,eAAe,EACfoF,cAAe,WAAQlX,GAAYA,GAAS,EAAO,EACnDqQ,MAAOA,EACPM,QAASe,IAEVhC,GAAQQ,gBACT,IACEwG,MAAK,SAASxR,EAAQvE,GAGP,IAAXuE,EACHiL,MAAMC,EAAQ,KAAOuG,GAErBxG,MAAM/N,EAAE,OAAQ,0CAA2C,CAAEzB,MAAOA,IAEtE,GACF,EACAwW,kBAAkB,EASlBC,WAAY,SAAShU,EAAMiU,EAAUC,EAAaC,GACjD,IAAIlN,EAAOpK,KACPuX,EAAiB,IAAIjX,IAAAA,UAkErBkX,EAAkB,SAASC,EAAQC,EAAGC,EAAGC,EAAIC,GAChDD,EAAKE,KAAKC,MAAMH,GAChBC,EAAKC,KAAKC,MAAMF,GAUhB,IATA,IAAIG,EAAMP,EAAOQ,WAAW,MAAMC,aAAa,EAAG,EAAGR,EAAGC,GACpDQ,EAAOV,EAAOQ,WAAW,MAAMC,aAAa,EAAG,EAAGN,EAAIC,GACtD1U,EAAO6U,EAAI7U,KACXiV,EAAQD,EAAKhV,KACbkV,EAAUX,EAAIE,EACdU,EAAUX,EAAIE,EACdU,EAAeT,KAAKU,KAAKH,EAAU,GACnCI,EAAeX,KAAKU,KAAKF,EAAU,GAE9BI,EAAI,EAAGA,EAAIb,EAAIa,IACvB,IAAK,IAAIC,EAAI,EAAGA,EAAIf,EAAIe,IAAK,CAU5B,IATA,IAAIC,EAAoB,GAAdD,EAAID,EAAId,GACdiB,EAAS,EACTC,EAAU,EACVC,EAAgB,EAChBC,EAAO,EACPC,EAAO,EACPC,EAAO,EACPC,EAAO,EACPC,GAAYV,EAAI,IAAOJ,EAClBe,EAAKvB,KAAKwB,MAAMZ,EAAIJ,GAAUe,GAAMX,EAAI,GAAKJ,EAASe,IAI9D,IAHA,IAAIE,EAAKzB,KAAK0B,IAAIJ,GAAYC,EAAK,KAAQZ,EACvCgB,GAAYd,EAAI,IAAON,EACvBqB,EAAKH,EAAKA,EACLI,EAAK7B,KAAKwB,MAAMX,EAAIN,GAAUsB,GAAMhB,EAAI,GAAKN,EAASsB,IAAM,CACpE,IAAIC,EAAK9B,KAAK0B,IAAIC,GAAYE,EAAK,KAAQpB,EACvCsB,EAAI/B,KAAKgC,KAAKJ,EAAKE,EAAKA,GACxBC,IAAM,GAAKA,GAAK,IAEnBhB,EAAS,EAAIgB,EAAIA,EAAIA,EAAI,EAAIA,EAAIA,EAAI,GACxB,IAGZV,GAAQN,EAAS1V,EAAU,GAF3ByW,EAAK,GAAKD,EAAKN,EAAK3B,KAGpBqB,GAAiBF,EAEb1V,EAAKyW,EAAK,GAAK,MAAOf,EAASA,EAAS1V,EAAKyW,EAAK,GAAK,KAC3DZ,GAAQH,EAAS1V,EAAKyW,GACtBX,GAAQJ,EAAS1V,EAAKyW,EAAK,GAC3BV,GAAQL,EAAS1V,EAAKyW,EAAK,GAC3Bd,GAAWD,EAGd,CAEDT,EAAMQ,GAAMI,EAAOF,EACnBV,EAAMQ,EAAK,GAAKK,EAAOH,EACvBV,EAAMQ,EAAK,GAAKM,EAAOJ,EACvBV,EAAMQ,EAAK,GAAKO,EAAOJ,CACxB,CAEDtB,EAAOQ,WAAW,MAAM8B,UAAU,EAAG,EAAGjC,KAAKkC,IAAItC,EAAGE,GAAKE,KAAKkC,IAAIrC,EAAGE,IACrEJ,EAAOvB,MAAQ0B,EACfH,EAAOtB,OAAS0B,EAChBJ,EAAOQ,WAAW,MAAMgC,aAAa9B,EAAM,EAAG,EAC/C,EAEI+B,EAAc,SAASC,EAAY/C,EAAUC,GAEhD,IAAI+C,EAAYD,EAAWpY,KAAK,aAAasY,QAAQ5X,YAAY,YAAYE,SAAS,YAClF2X,EAAeF,EAAUrY,KAAK,aAC9BwY,EAAkBH,EAAUrY,KAAK,gBAErCqY,EAAUjX,KAAK,OAAQA,GAEvBiX,EAAUrY,KAAK,aAAaT,KAAK8V,EAASvG,MAC1CyJ,EAAavY,KAAK,SAAST,KAAKwB,GAAAA,KAAAA,cAAsBsU,EAASoD,OAC/DF,EAAavY,KAAK,UAAUT,KAAKwB,GAAAA,KAAAA,WAAmBsU,EAASqD,QAEzDpD,EAAYmD,MAAQnD,EAAYqD,eACnCH,EAAgBxY,KAAK,SAAST,KAAKwB,GAAAA,KAAAA,cAAsBuU,EAAYmD,OACrED,EAAgBxY,KAAK,UAAUT,KAAKwB,GAAAA,KAAAA,WAAmBuU,EAAYqD,gBAEpE,IAAIxI,EAAOkF,EAASuD,UAAY,IAAMvD,EAASvG,KAC3C+J,EAAU,CACbjG,KAAMzC,EACN2I,EAAG,GACHC,EAAG,GACHC,EAAG3D,EAAS4D,KACZC,UAAW,GAERC,EAAcC,MAAMC,mBAAmBR,GAE3CM,EAAcA,EAAYG,QAAQ,KAAM,OACxCf,EAAavY,KAAK,SAASuZ,IAAI,CAAE,mBAAoB,QAAUJ,EAAc,OAvJtD,SAASvG,GAChC,IAAIlV,EAAW,IAAIa,IAAAA,UAEfyC,EAAO4R,EAAK5R,MAAQ4R,EAAK5R,KAAKvB,MAAM,KAAKgG,QAC7C,GAAIxD,OAAOuX,YAAuB,UAATxY,EAAkB,CAC1C,IAAIyY,EAAS,IAAID,WACjBC,EAAOC,OAAS,SAAS/O,GACxB,IAAIgP,EAAO,IAAIC,KAAK,CAACjP,EAAE2G,OAAO1O,SAC9BX,OAAO4X,IAAM5X,OAAO4X,KAAO5X,OAAO6X,UAClC,IAAIC,EAAc9X,OAAO4X,IAAIG,gBAAgBL,GACzCM,EAAQ,IAAIC,MAChBD,EAAME,IAAMJ,EACZE,EAAMP,OAAS,WACd,IAWgBzD,EAKf6C,EAAOC,EAAON,EAJd/C,EAEAvB,EACAC,EAfGlT,GAWY+U,EAXDgE,EAYdvE,EAAS3I,SAASqN,cAAc,UAEhCjG,EAAQ8B,EAAI9B,MACZC,EAAS6B,EAAI7B,OAIbD,EAAQC,GACX2E,EAAI,EACJD,GAAK3E,EAAQC,GAAU,IAEvB2E,GAAK3E,EAASD,GAAS,EACvB2E,EAAI,GAELL,EAAO1C,KAAKsE,IAAIlG,EAAOC,GAGvBsB,EAAOvB,MAAQsE,EACf/C,EAAOtB,OAASqE,EACN/C,EAAOQ,WAAW,MACxBoE,UAAUrE,EAAK6C,EAAGC,EAAGN,EAAMA,EAAM,EAAG,EAAGA,EAAMA,GAGjDhD,EAAgBC,EAAQ+C,EAAMA,EAtBb,OAwBV/C,EAAO6E,UAAU,YAAa,KApClC7c,EAASgP,QAAQxL,EAClB,CACD,EACAuY,EAAOe,kBAAkB5H,EAC1B,MACClV,EAAS+c,SAEV,OAAO/c,CACR,CAkICgd,CAAkBpF,GAAa/Q,MAC9B,SAAS4L,GACRqI,EAAgBxY,KAAK,SAASuZ,IAAI,mBAAoB,OAASpJ,EAAO,IACvE,IAAG,WACFA,EAAOpP,GAAAA,SAAAA,WAAuBuU,EAAYtU,MAC1CwX,EAAgBxY,KAAK,SAASuZ,IAAI,mBAAoB,OAASpJ,EAAO,IACvE,IAGD,IAAIwK,EAAavC,EAAWpY,KAAK,aAAaC,OAC9CsY,EAAavY,KAAK,kBAAkBwP,KAAK,KAAM,qBAAuBmL,GACtEnC,EAAgBxY,KAAK,kBAAkBwP,KAAK,KAAM,wBAA0BmL,GAE5EvC,EAAW1P,OAAO2P,GAId/C,EAAYqD,aAAetD,EAASqD,MACvCF,EAAgBxY,KAAK,UAAUuZ,IAAI,cAAe,QACxCjE,EAAYqD,aAAetD,EAASqD,OAC9CH,EAAavY,KAAK,UAAUuZ,IAAI,cAAe,QAM5CjE,EAAYmD,MAAQnD,EAAYmD,KAAOpD,EAASoD,KACnDD,EAAgBxY,KAAK,SAASuZ,IAAI,cAAe,QACvCjE,EAAYmD,MAAQnD,EAAYmD,KAAOpD,EAASoD,MAC1DF,EAAavY,KAAK,SAASuZ,IAAI,cAAe,QASvB,aAApBlE,EAASnS,SACZqV,EACE3X,SAAS,YACTZ,KAAK,0BACLyU,KAAK,WAAW,GAChBA,KAAK,YAAY,GACnB8D,EAAavY,KAAK,YAChBT,KAAKa,EAAE,OAAQ,cAEnB,EAKI8O,EAAa,+BACbC,EAAW,IAAMD,EACrB,GAAIjR,KAAKkX,iBAAkB,CAG1B,IAAIiD,EAAa7Z,IAAE4Q,EAAW,eAC9BgJ,EAAYC,EAAY/C,EAAUC,GAElC,IAAIsF,EAAQrc,IAAE4Q,EAAW,cAAclP,OACnCmO,EAAQyM,EAAE,OACb,wBACA,yBACAD,EACA,CAAEA,MAAOA,IAEVrc,IAAE4Q,GAAU2L,SAASC,SAAS,oBAAoBxb,KAAK6O,GAGvD7P,IAAE0D,QAAQtB,QAAQ,UAClB6U,EAAe9I,SAChB,MAECzO,KAAKkX,kBAAmB,EACxB5W,IAAAA,KAAON,KAAK+c,0BAA0BzW,MAAK,SAAS0K,GACnD,IAAIb,EAAQhO,EAAE,OAAQ,qBAClBgP,EAAOH,EAAMI,WAAW,CAC3BC,YAAaJ,EACbd,MAAOA,EACPpN,KAAM,aAENia,YAAa7a,EAAE,OAAQ,aACvB8a,iBAAkB9a,EAAE,OAAQ,0BAE5B+a,IAAK/a,EAAE,OAAQ,oCACfgb,KAAMhb,EAAE,OAAQ,wFAIjB,GAFA7B,IAAE,QAAQmK,OAAO0G,GAEbiG,GAAYC,EAAa,CAC5B,IAAI8C,EAAahJ,EAAKpP,KAAK,cAC3BmY,EAAYC,EAAY/C,EAAUC,EACnC,CAEA,IAAI5F,EAAa,CAAC,CACjBnQ,KAAMa,EAAE,OAAQ,UAChB4U,QAAS,SACTrF,MAAO,gBAC6B,IAAxB4F,EAAW8F,UACrB9F,EAAW8F,SAASja,GAErB7C,IAAE4Q,GAAUS,SAAS,QACtB,GAED,CACCrQ,KAAMa,EAAE,OAAQ,YAChB4U,QAAS,WACTrF,MAAO,gBAC+B,IAA1B4F,EAAW+F,YACrB/F,EAAW+F,WAAW/c,IAAE4Q,EAAW,eAEpC5Q,IAAE4Q,GAAUS,SAAS,QACtB,IAGDrR,IAAE4Q,GAAUS,SAAS,CACpBuE,MAAO,IACPrE,eAAe,EACfzB,OAAO,EACPM,QAASe,EACT6L,YAAa,KACbxL,MAAO,WACN1H,EAAK8M,kBAAmB,EACxB,IACC5W,IAAEN,MAAM2R,SAAS,WAAW0E,QAE5B,CADC,MAAO3J,GACR,CAEF,IAGDpM,IAAE4Q,GAAUoK,IAAI,SAAU,QAE1B,IAAIiC,EAAiBpM,EAAKoF,QAAQ,cAAcxU,KAAK,mBAGrD,SAASyb,IACR,IAAIC,EAAetM,EAAKpP,KAAK,gCAAgCC,OAC7Dub,EAAe/G,KAAK,WAA6B,IAAjBiH,EACjC,CALAF,EAAe/G,KAAK,YAAY,GAQhClW,IAAE4Q,GAAUnP,KAAK,gBAAgB2I,GAAG,SAAS,WAC1BpK,IAAE4Q,GAAUnP,KAAK,iDACvByU,KAAK,UAAWlW,IAAEN,MAAMwW,KAAK,WAC1C,IACAlW,IAAE4Q,GAAUnP,KAAK,qBAAqB2I,GAAG,SAAS,WAC/BpK,IAAE4Q,GAAUnP,KAAK,6DACvByU,KAAK,UAAWlW,IAAEN,MAAMwW,KAAK,WAC1C,IACAlW,IAAE4Q,GAAUnP,KAAK,cAAc2I,GAAG,QAAS,yCAAyC,WACnF,IAAIgT,EAAYpd,IAAEN,MAAM+B,KAAK,0BAC7B2b,EAAUlH,KAAK,WAAYkH,EAAUlH,KAAK,WAC3C,IACAlW,IAAE4Q,GAAUnP,KAAK,cAAc2I,GAAG,QAAS,uFAAuF,WACjI,IAAIgT,EAAYpd,IAAEN,MAClB0d,EAAUlH,KAAK,WAAYkH,EAAUlH,KAAK,WAC3C,IAGAlW,IAAE4Q,GAAUxG,GAAG,QAAS,6BAA6B,WACpD,IAAIiS,EAAQrc,IAAE4Q,GAAUnP,KAAK,yDAAyDC,OAClF2a,IAAUrc,IAAE4Q,EAAW,cAAclP,QACxC1B,IAAE4Q,GAAUnP,KAAK,gBAAgByU,KAAK,WAAW,GACjDlW,IAAE4Q,GAAUnP,KAAK,yBAAyBT,KAAKa,EAAE,OAAQ,oBAC/Cwa,EAAQ,GAClBrc,IAAE4Q,GAAUnP,KAAK,gBAAgByU,KAAK,WAAW,GACjDlW,IAAE4Q,GAAUnP,KAAK,yBAAyBT,KAAKa,EAAE,OAAQ,qBAAsB,CAAEwa,MAAOA,OAExFrc,IAAE4Q,GAAUnP,KAAK,gBAAgByU,KAAK,WAAW,GACjDlW,IAAE4Q,GAAUnP,KAAK,yBAAyBT,KAAK,KAEhDkc,GACD,IACAld,IAAE4Q,GAAUxG,GAAG,QAAS,+BAA+B,WACtD,IAAIiS,EAAQrc,IAAE4Q,GAAUnP,KAAK,sDAAsDC,OAC/E2a,IAAUrc,IAAE4Q,EAAW,cAAclP,QACxC1B,IAAE4Q,GAAUnP,KAAK,qBAAqByU,KAAK,WAAW,GACtDlW,IAAE4Q,GAAUnP,KAAK,8BAA8BT,KAAKa,EAAE,OAAQ,oBACpDwa,EAAQ,GAClBrc,IAAE4Q,GAAUnP,KAAK,qBAAqByU,KAAK,WAAW,GACtDlW,IAAE4Q,GAAUnP,KAAK,8BACfT,KAAKa,EAAE,OAAQ,qBAAsB,CAAEwa,MAAOA,OAEhDrc,IAAE4Q,GAAUnP,KAAK,qBAAqByU,KAAK,WAAW,GACtDlW,IAAE4Q,GAAUnP,KAAK,8BAA8BT,KAAK,KAErDkc,GACD,IAEAjG,EAAe9I,SAChB,IACEgI,MAAK,WACLc,EAAeiF,SACftM,MAAM/N,EAAE,OAAQ,sCACjB,IAGF,OAAOoV,EAAeoG,SACvB,EAEAlK,iBAAkB,WACjB,IAAMrJ,EAAOpK,KACbM,IAAAA,IAAMwC,GAAAA,YAAe,oCAAoC,SAASsE,GACjEgD,EAAKmJ,cACH9Q,YAAY,6CACZE,SAASyE,EAASwW,SAAW,uBAAyB,wBACxDxT,EAAKmJ,cAAchC,KAClB,aACAnK,EAASwW,SAAWzb,EAAE,QAAS,kBAAoBA,EAAE,QAAS,mBAE/D7B,IAAE,mBAAmBud,YAAY,YAAazW,EAASwW,SACxD,GACD,EACApK,kBAAmB,WAClB,IAAMsK,EAAa9d,KAAKuT,cAAcwK,SAAS,wBAE3Cjb,GAAAA,aACHxC,IAAAA,KAAOwC,GAAAA,YAAe,mCAAoC,CAAEzB,MAAOyc,IAEpE9d,KAAKuT,cACH9Q,YAAY,6CACZE,SAASmb,EAAa,uBAAyB,wBACjD9d,KAAKuT,cAAchC,KAClB,aACAuM,EAAa3b,EAAE,QAAS,kBAAoBA,EAAE,QAAS,mBAExDnC,KAAK+S,YAAYhR,KAAK,mBAAmB8b,YAAY,aAAcC,EACpE,EACAhL,uBAAwB,WACvB,IAAIkL,EAAQ1d,IAAAA,WACZ,GAAKN,KAAKie,oBAWTD,EAAMvP,QAAQzO,KAAKie,yBAXW,CAC9B,IAAI7T,EAAOpK,KACXM,IAAAA,IAAMwC,GAAAA,SAAY,OAAQ,YAAa,oBAAoB,SAASob,GACnE9T,EAAK6T,oBAAsB3d,IAAE4d,GAC7B9T,EAAK+T,UAAY/T,EAAK6T,oBAAoBlc,KAAK,kCAAkCqc,SACjFJ,EAAMvP,QAAQrE,EAAK6T,oBACpB,IACExH,MAAK,SAAS4H,EAAOvV,EAAYC,GACjCiV,EAAMxB,OAAO6B,EAAMpZ,OAAQ8D,EAC5B,GACF,CAGA,OAAOiV,EAAML,SACd,EACA5M,oBAAqB,WACpB,IAAIiN,EAAQ1d,IAAAA,WACZ,GAAKN,KAAKse,iBAUTN,EAAMvP,QAAQzO,KAAKse,sBAVQ,CAC3B,IAAIlU,EAAOpK,KACXM,IAAAA,IAAMwC,GAAAA,SAAY,OAAQ,YAAa,iBAAiB,SAASob,GAChE9T,EAAKkU,iBAAmBhe,IAAE4d,GAC1BF,EAAMvP,QAAQrE,EAAKkU,iBACpB,IACE7H,MAAK,SAAS4H,EAAOvV,EAAYC,GACjCiV,EAAMxB,OAAO6B,EAAMpZ,OAAQ8D,EAC5B,GACF,CAGA,OAAOiV,EAAML,SACd,EACAZ,uBAAwB,WACvB,IAAIiB,EAAQ1d,IAAAA,WACZ,GAAKN,KAAKue,oBAUTP,EAAMvP,QAAQzO,KAAKue,yBAVW,CAC9B,IAAInU,EAAOpK,KACXM,IAAAA,IAAMwC,GAAAA,SAAY,QAAS,YAAa,oBAAoB,SAASob,GACpE9T,EAAKmU,oBAAsBje,IAAE4d,GAC7BF,EAAMvP,QAAQrE,EAAKmU,oBACpB,IACE9H,MAAK,WACLuH,EAAMxB,QACP,GACF,CAGA,OAAOwB,EAAML,SACd,EAKA1I,iBAAe,+BAAE,WAAeQ,EAAK1S,GAAI,oGAqBnB,OApBjBqH,EAAOpK,KACXA,KAAKoV,UAAUoJ,QACfxe,KAAK+S,YAAYhR,KAAK,iBAAiB9B,OACvCD,KAAKqV,mBAAmB1S,SAAS,gBACjC3C,KAAK+S,YAAY5P,KAAK,OAAQsS,GAC1B/G,EAAS1O,KAAK+S,YAAY5P,KAAK,YAC/Bsb,EAAiBze,KAAK+S,YAAY5P,KAAK,UACnB,iBAAZuL,IACXA,EAAS,CAACA,IAEXtE,EAAK+K,gBAAgBpT,KAAK,mBAAmBY,SAAS,UAAUF,YAAY,mBAAmBA,YAAY,mBAC3G2H,EAAK+K,gBAAgBpT,KAAK,cAAgBqI,EAAK2H,WAAWI,UAAY,qBAAqB1P,YAAY,UACrE,QAA9B2H,EAAK2H,WAAWK,UACnBhI,EAAK+K,gBAAgBpT,KAAK,cAAgBqI,EAAK2H,WAAWI,UAAY,qBAAqBxP,SAAS,mBAEpGyH,EAAK+K,gBAAgBpT,KAAK,cAAgBqI,EAAK2H,WAAWI,UAAY,qBAAqBxP,SAAS,mBAKjG+b,EAAiB,6CAAG,WAAejJ,GAAG,yGAClCrL,EAAK2H,WAAWQ,YAAYmM,kBAAkBjJ,GACnDnP,MAAK,SAACrB,EAAQ0Z,GACd,OAAOA,CACR,KAAE,2CACH,gBALoB,0DAQFD,EAAkBjJ,GAAI,QAApCkJ,EAAQ,EAAH,6BAG4D,OAH5D,2BAGTle,GAAQC,MAAM,wDAAuD,UACnDge,EAAkB,KAAI,QAApCC,EAAQ,EAAH,KACT3e,KAAK+S,YAAY5P,KAAK,OAAQ,KAC9BnD,KAAK4e,mBAAmB7b,EAAM,IAAG,QAGlCqH,EAAKwI,SAAW+L,EACZjQ,GAAUA,EAAO1M,OAAS,IAA8B,IAAzB0M,EAAOnJ,QAAQ,OACjDoZ,EAAQA,EAAMjQ,QAAO,SAASiG,GAC7B,MAAqB,QAAdA,EAAK5R,OAAqD,IAAnC2L,EAAOnJ,QAAQoP,EAAKkK,SACnD,KAGGJ,IACHE,EAAQA,EAAMjQ,OAAO+P,IAMiB,QADjCK,EAAkBhQ,SAASiQ,eAAe,qBACyB,MAA1BD,EAAgBjb,QAE9D8a,EAAQA,EAAMjQ,QAAO,SAASiG,GAC7B,OAAQA,EAAK9D,KAAKmO,WAAW,IAC9B,KAoBGC,GAjBAC,EAAc,CACjBrO,KAAM,SAASsO,EAAWC,GACzB,MAAuB,QAAnBD,EAAUpc,MAAqC,QAAnBqc,EAAUrc,MACjC,EAEc,QAAnBoc,EAAUpc,MAAqC,QAAnBqc,EAAUrc,KAClC,EAEDD,GAAAA,KAAAA,mBAA2Bqc,EAAUtO,KAAMuO,EAAUvO,KAC7D,EACA2J,KAAM,SAAS2E,EAAWC,GACzB,OAAOD,EAAU3E,KAAO4E,EAAU5E,IACnC,EACAC,MAAO,SAAS0E,EAAWC,GAC1B,OAAOD,EAAU1E,MAAQ2E,EAAU3E,KACpC,IAE4BrQ,EAAK2H,WAAWI,YAAc+M,EAAYrO,KACvE8N,EAAQA,EAAMU,MAAK,SAASC,EAAOC,GAClC,IAAIC,EAAa,SAASC,GACzB,OAAOA,EAASC,MAAQD,EAASC,KAAKna,QAAQzC,GAAAA,eAAoB,CACnE,EAEA,OAAI0c,EAAWF,KAAWE,EAAWD,IAC5B,GACGC,EAAWF,IAAUE,EAAWD,GACpC,EAG6B,QAA9BnV,EAAK2H,WAAWK,UAAsB6M,EAAWK,EAAOC,IAAUN,EAAWK,EAAOC,EAC5F,IAEAnV,EAAKuV,YAEgB,IAAjBhB,EAAM3c,QACToI,EAAK2I,YAAYhR,KAAK,iBAAiBV,OACvC+I,EAAK+K,gBAAgBlV,SAErBmK,EAAK2I,YAAYhR,KAAK,iBAAiB9B,OACvCmK,EAAK+K,gBAAgB9T,QAGtB+I,EAAKgL,UAAUoJ,QAEfle,IAAAA,KAAOqe,GAAO,SAASiB,EAAKC,GAO3B,IAAIC,EAAYC,EAWhB,GAjBIF,EAAMG,aAAkC,yBAAnBH,EAAMhB,SAC9BgB,EAAMI,KAAOnd,GAAAA,SAAAA,WAAuB,iBAEpC+c,EAAMI,KAAOnd,GAAAA,SAAAA,WAAuB+c,EAAMhB,eAIf,IAAhBgB,EAAMrF,MAAyBqF,EAAMrF,MAAQ,GACxDsF,EAAahd,GAAAA,KAAAA,cAAsBod,SAASL,EAAMrF,KAAM,KAAK,GAC7DuF,EAAYjI,KAAKC,MAAM,IAAMD,KAAKqI,IAAKN,EAAMrF,KAAO,QAAgB,MAEpEsF,EAAa3d,EAAE,QAAS,WACxB4d,EAAY,IAKTF,EAAMhP,KAAK7O,QAAU,GAExB,IAAIR,EAAQsW,KAAKsE,IAAItE,KAAKwB,MAAMuG,EAAMhP,KAAK7O,OAAS,GAAI,IACpDoe,EAAYP,EAAMhP,KAAKrL,OAAO,EAAGqa,EAAMhP,KAAK7O,OAASR,GACrD6e,EAAYR,EAAMhP,KAAKrL,OAAOqa,EAAMhP,KAAK7O,OAASR,QAElD4e,EAAYP,EAAMhP,KAClBwP,EAAY,GAGjB,IAAIngB,EAAOkK,EAAK+T,UAAU/M,WAAW,CACpCrO,KAAM8c,EAAM9c,KACZ0S,IAAKA,EACLnB,SAAUuL,EAAMhP,KAChBuP,UAAWA,EACXC,UAAWA,EACXC,KAAMxd,GAAAA,KAAAA,qBAA6B+c,EAAMpF,OACzCD,KAAMsF,EACNC,UAAWA,EACXE,KAAMJ,EAAMI,OAEb,GAAmB,SAAfJ,EAAM9c,KAAiB,CAC1B,IAAI6X,EAAU,CACbjG,KAAMc,EAAM,IAAMoK,EAAMhP,KACxBgK,EAAG,IACHC,EAAG,KAEA9C,EAAM,IAAIiE,MACVsE,EAAazd,GAAAA,YAAe,sBAAwBxC,IAAAA,MAAQsa,GAChE5C,EAAIyD,OAAS,WACRzD,EAAI9B,MAAQ,GACfhW,EAAK6B,KAAK,eAAewP,KAAK,QAAS,wBAA0BgP,EAAa,IAEhF,EACAvI,EAAIkE,IAAMqE,CACX,CACAnW,EAAKgL,UAAU3K,OAAOvK,EACvB,IAEAkK,EAAKiL,mBAAmB5S,YAAY,gBAAe,2DACnD,gDAIDkd,UAAW,WACV,IAAIa,EAAYxgB,KAAKsV,SAASvT,KAAK,sBAAsBqc,SACzDpe,KAAKsV,SAASkJ,QACd,IAAIpU,EAAOpK,KAEXoK,EAAKkL,SAAS7K,OAAO+V,GAGrB,IAAItO,EAAOlS,KAAK+S,YAAY5P,KAAK,QAC7Bsd,EAAYngB,IAAE,0DAA0DqC,SAAS,SACrF,GAAIuP,EAAM,CACT,IAAIwO,EAAQxO,EAAK1Q,MAAM,KACvBlB,IAAAA,KAAOogB,GAAO,SAAS5K,EAAOL,GAE7B,GAAY,MADZA,EAAMiL,EAAMhb,OAEX,OAAO,EAER0E,EAAKkL,SAAShC,QAAQmN,EAAUrP,WAAW,CAC1CqE,IAAKiL,EAAMjf,KAAK,KAAO,IAAMgU,EAC7B5E,KAAM4E,IAER,GACD,CAEAgL,EAAUrP,WAAW,CACpBqE,IAAK,GACL5E,KAAM1O,EAAE,OAAQ,SACd,CAAE0U,eAAgB,OAAQ8J,UAAU3gB,KAAKsV,SAE7C,EAIAC,sBAAuB,SAASlG,EAAOtM,GACtC,IAAIqH,EAAOiF,EAAMlM,KACbsS,EAAMnV,IAAE+O,EAAMgE,QAAQkD,QAAQ,UAAUpT,KAAK,OACjDiH,EAAK6K,gBAAgBQ,EAAK1S,GAC1B,IAAI6d,EAAevR,EAAMgE,OAAQkD,QAAQ,cACrCD,EAAsBhW,IAAE,WAAYsgB,GACxC5gB,KAAK4e,mBAAmB7b,EAAM0S,EAAIjU,MAAM,QAAQkE,QAC2B,IAAvE1F,KAAK+S,YAAY5P,KAAK,YAAYoC,QAAQ,yBAAkCvF,KAAK+S,YAAY5P,KAAK,yBACrGmT,EAAoBE,KAAK,YAAY,GAErCF,EAAoBE,KAAK,YAAY,EAEvC,EAIAhB,mBAAoB,SAASnG,EAAOwR,EAAU9d,GAC7C,IACIuT,EADctW,KAAK+S,YAAYwD,QAAQ,cACLxU,KAAK,YACb,SAA1B8e,EAAS1d,KAAK,UAC4B,IAAzCnD,KAAK+S,YAAY5P,KAAK,gBAA4BkM,EAAMyR,SAC3D9gB,KAAKoV,UAAUrT,KAAK,gCAAgCU,YAAY,+BAEjEoe,EAAShD,YAAY,+BACrBvH,EAAoBE,KAAK,YAAY,IACD,QAA1BqK,EAAS1d,KAAK,UACxBnD,KAAKiV,gBAAgBjV,KAAK+S,YAAY5P,KAAK,QAAU,IAAM0d,EAAS1d,KAAK,aAAcJ,GACvF/C,KAAK4e,mBAAmB7b,EAAM8d,EAAS1d,KAAK,eAC+B,IAAvEnD,KAAK+S,YAAY5P,KAAK,YAAYoC,QAAQ,yBAAkCvF,KAAK+S,YAAY5P,KAAK,yBACrGmT,EAAoBE,KAAK,YAAY,GAErCF,EAAoBE,KAAK,YAAY,GAGxC,EAQAoI,mBAAoB,SAAS7b,EAAM0S,GAClC,IAAIsL,EAAmB,KAARtL,EAAatT,EAAE,OAAQ,QAAUA,EAAE,OAAQ,mBAAoB,CAAE6e,OAAQvL,IACpFwL,EAAmB,KAARxL,EAAatT,EAAE,OAAQ,QAAUA,EAAE,OAAQ,mBAAoB,CAAE6e,OAAQvL,IACpF/E,EAAUpQ,IAAE,+BAChB,OAAQyC,GACP,KAAK/C,KAAK4P,uBAEV,KAAK5P,KAAKgQ,uBACT,MACD,KAAKhQ,KAAK8P,qBACTY,EAAQpP,KAAKyf,GACb,MACD,KAAK/gB,KAAK6P,qBACTa,EAAQpP,KAAK2f,GACb,MACD,KAAKjhB,KAAK+P,0BACTW,EAAQwQ,GAAG,GAAG5f,KAAKyf,GACnBrQ,EAAQwQ,GAAG,GAAG5f,KAAK2f,GAGtB,GAGD,MC3zCME,IAfsB7R,GAeWR,SAfHS,GAeaA,EAAAA,GAd5CC,GAAQF,GAAOP,qBAAqB,QAAQ,GAAGC,aAAa,qBAEzD,CACNoS,SAAU,kBAAM5R,EAAK,EACrB6R,SAAU,SAAAC,GAGT/R,GAAK,oBAAqB,CACzBC,MAHDA,GAAQ8R,GAKT,IASWF,GAAWD,GAAmBC,SAK9BC,GAAWF,GAAmBE,SChBrCE,GAAgB,SAAhBA,EAAyBrF,EAAK/Y,GACnC,IACI0N,EACA2Q,EAFAC,EAAU,GAMd,GAHAzhB,KAAK0hB,kBAAoB,GACzB1hB,KAAK2hB,QAAS,EACd3hB,KAAK4hB,UAAY,CAAC,EACdze,EACH,IAAK0N,KAAQ1N,EACZse,GAAW5Q,EAAO,IAAMgR,mBAAmB1e,EAAK0N,IAAS,IAI3D,GADA4Q,GAAW,gBAAkBI,mBAAmBT,MAC3CphB,KAAK8hB,aAAsC,oBAAhBC,YAWzB,CACN,IAAIC,EAAW,yBAA2BT,EAAcU,YACxDV,EAAcW,gBAAgBX,EAAcU,aAAejiB,KAC3DA,KAAKmiB,OAAS7hB,IAAE,qBAChBN,KAAKmiB,OAAO5Q,KAAK,KAAMyQ,GACvBhiB,KAAKmiB,OAAOliB,OAEZuhB,EAAW,KACe,IAAtBtF,EAAI3W,QAAQ,OACfic,EAAW,KAEZxhB,KAAKmiB,OAAO5Q,KAAK,MAAO2K,EAAMsF,EAAW,6BAA+BD,EAAcU,YAAc,IAAMR,GAC1GnhB,IAAE,QAAQmK,OAAOzK,KAAKmiB,QACtBniB,KAAK8hB,aAAc,EACnBP,EAAcU,aACf,MAzBCT,EAAW,KACe,IAAtBtF,EAAI3W,QAAQ,OACfic,EAAW,KAEZxhB,KAAKoiB,OAAS,IAAIL,YAAY7F,EAAMsF,EAAWC,GAC/CzhB,KAAKoiB,OAAOC,UAAY,SAAS3V,GAChC,IAAK,IAAIiM,EAAI,EAAGA,EAAI3Y,KAAK0hB,kBAAkB1f,OAAQ2W,IAClD3Y,KAAK0hB,kBAAkB/I,GAAGjQ,KAAK4Z,MAAM5V,EAAEvJ,MAEzC,EAAEE,KAAKrD,MAkBRA,KAAKuiB,OAAO,eAAgB,SAASpf,GACvB,UAATA,GACHnD,KAAK8R,OAEP,EAAEzO,KAAKrD,MACR,EACAuhB,GAAcW,gBAAkB,GAChCX,GAAcU,YAAc,EAC5BV,GAAciB,iBAAmB,SAASpd,EAAIrC,EAAMI,GACnDoe,GAAcW,gBAAgB9c,GAAIod,iBAAiBzf,EAAMI,EAC1D,EACAoe,GAAc1Y,UAAY,CACzB6Y,kBAAmB,GACnBS,OAAQ,KACRP,UAAW,CAAC,EACZE,aAAa,EAWbU,iBAAkB,SAASzf,EAAMI,GAChC,IAAIwV,EAEJ,IAAI3Y,KAAK2hB,OAGT,GAAI5e,GACH,QAAmC,IAAxB/C,KAAK4hB,UAAUa,KACzB,IAAK9J,EAAI,EAAGA,EAAI3Y,KAAK4hB,UAAU7e,GAAMf,OAAQ2W,IAC5C3Y,KAAK4hB,UAAU7e,GAAM4V,GAAGxV,QAI1B,IAAKwV,EAAI,EAAGA,EAAI3Y,KAAK0hB,kBAAkB1f,OAAQ2W,IAC9C3Y,KAAK0hB,kBAAkB/I,GAAGxV,EAG7B,EACAuf,WAAY,EAOZH,OAAQ,SAASxf,EAAMhD,GAClBA,GAAYA,EAASY,OAEpBoC,EACC/C,KAAK8hB,aACH9hB,KAAK4hB,UAAU7e,KACnB/C,KAAK4hB,UAAU7e,GAAQ,IAExB/C,KAAK4hB,UAAU7e,GAAM6H,KAAK7K,IAE1BC,KAAKoiB,OAAOO,iBAAiB5f,GAAM,SAAS2J,QACrB,IAAXA,EAAEvJ,KACZpD,EAAS2I,KAAK4Z,MAAM5V,EAAEvJ,OAEtBpD,EAAS,GAEX,IAAG,GAGJC,KAAK0hB,kBAAkB9W,KAAK7K,GAG/B,EAIA+R,MAAO,WACN9R,KAAK2hB,QAAS,OACa,IAAhB3hB,KAAKoiB,QACfpiB,KAAKoiB,OAAOtQ,OAEd,GAGD,kCCxIW8Q,GAAc,KACdC,GAAoB,KAoElBC,GAAY,SAASC,GACjC,GAAIH,GAAa,CAChB,IAAMI,EAAWJ,GACjBA,GAAYlgB,QAAQ,IAAIpC,IAAAA,OAAQ,eAChCsiB,GAAYK,QC/EW,ID+EQ,WAC9BD,EAAStgB,QAAQ,IAAIpC,IAAAA,OAAQ,cACzByiB,GACHA,EAASG,MAAMljB,KAAMmjB,UAEvB,GACD,CAGA7iB,IAAE,eAAeiR,KAAK,iBAAiB,GACnCsR,IACHA,GAAkBtR,KAAK,iBAAiB,GAGzCjR,IAAE,eAAemC,YAAY,cAC7BmgB,GAAc,KACdC,GAAoB,IACrB,EEjGMO,KAAYpf,OAAOqf,+CCoFzB,GA/Da,CAYZC,KAAMC,GAAAA,GAUNC,SAAAA,GAAAA,GAMAC,YAAaC,GAAAA,GAgBbC,UAAAA,GAAAA,GAgBAC,gBAAAA,GAAAA,IAKDC,KAAAA,eAA0B,KAAK,SAASrgB,EAAKlC,GAC5C,OAAOqiB,EAAAA,GAAAA,IAAUngB,EAAKlC,EACvB,IC9EA,QAMCwiB,YAAW,SAACC,GACX/jB,KAAKgkB,YAAYD,EAAU5hB,EAAE,OAAQ,YACtC,EAQA6hB,YAAW,SAACD,EAAU1T,GACrB/P,IAAEyjB,GAAUziB,KAAK+O,GACf5N,YAAY,WACZA,YAAY,SACZwhB,MAAK,GAAM,GACX5iB,MACH,EAYA6iB,eAAc,SAACH,EAAU3c,GACxBpH,KAAKmkB,eAAeJ,EAAU3c,EAC/B,EAYA+c,eAAc,SAACJ,EAAU3c,GACA,YAApBA,EAASnC,OACZjF,KAAKokB,gBAAgBL,EAAU3c,EAASjE,KAAKkN,SAE7CrQ,KAAKqkB,cAAcN,EAAU3c,EAASjE,KAAKkN,QAE7C,EAQA+T,gBAAe,SAACL,EAAU1T,GACzB/P,IAAEyjB,GAAUziB,KAAK+O,GACf1N,SAAS,WACTF,YAAY,SACZwhB,MAAK,GAAM,GACXK,MAAM,KACNC,QAAQ,KACRljB,MACH,EAQAgjB,cAAa,SAACN,EAAU1T,GACvB/P,IAAEyjB,GAAUziB,KAAK+O,GACf1N,SAAS,SACTF,YAAY,WACZpB,MACH,0BClFD,IACCtB,SAAU,KAEVykB,aAAc,KAEdC,KAAI,WACHnkB,IAAE,8BAA8BoK,GAAG,QAASvK,EAAAA,GAAAA,KAAOH,KAAK0kB,4BAA6B1kB,OACrFA,KAAKwkB,aAAeG,KAAAA,KACrB,EAEAC,6BAA4B,WAC3B,IAAMC,EAAiB7kB,KAAKwkB,aAAqC,IAArBxgB,OAAO8gB,YAC7CC,EAAiBJ,KAAAA,OAAgBE,EAAwC,IAAtB7gB,OAAOghB,cAGhE,OAAQhhB,OAAOihB,mCAAqCF,EAAiB,IACtE,EAOAL,4BAA2B,SAAC3kB,EAAUe,EAASokB,GAC9CpkB,OAA6B,IAAZA,EAA0BA,EAAU,CAAC,EACtD,IAAMsI,EAAW,CAChB+G,MAAOhO,EAAE,OAAQ,2BACjBb,KAAMa,EACL,OACA,qDAEDqO,QAASrO,EAAE,OAAQ,WACnBqP,MAAOrP,EAAE,OAAQ,YACjBzB,MAAO,IAGFykB,EAAShlB,EAAAA,GAAAA,OAASiJ,EAAUtI,GAE5BsJ,EAAOpK,KAETA,KAAK4kB,gCACR9hB,GAAAA,QAAAA,OACCqiB,EAAO7jB,KACP6jB,EAAOhV,OACP,SAASxL,EAAQmM,GACZnM,GAAuB,KAAbmM,EACb1G,EAAKgb,iBAAiBtU,EAAUqU,GACtBhlB,EAAAA,GAAAA,WAAa+kB,IACvBA,GAEF,IACA,EACAC,EAAO3T,OACP,GACClL,MAAK,WACN,IAAM+e,EAAU/kB,IAAE,sBAGlB,GAFA+kB,EAAQtjB,KAAK,YAAYsU,SACzBgP,EAAQ1iB,SAAS,yBACI,KAAjBwiB,EAAOzkB,MAAc,CACxB,IAAM4kB,EAAShlB,IAAE,WAAWqC,SAAS,eAAerB,KAAK6jB,EAAOzkB,OAChE2kB,EAAQtjB,KAAK,sBAAsB0I,OAAO6a,EAC3C,CACAD,EAAQtjB,KAAK,wBAAwBY,SAAS,SAE9C,IAAM4iB,EAAWF,EAAQtjB,KAAK,UAC9BwjB,EAASrE,GAAG,GAAGjhB,OACfslB,EAASrE,GAAG,GAAG5f,KAAK6jB,EAAO3U,QAC5B,IAGDxQ,KAAKD,SAAWA,CACjB,EAEAqlB,iBAAgB,SAACtU,EAAUqU,GAC1B,IAAM/a,EAAOpK,KAEbM,IAAAA,KAAO,CACN2C,KAAKuiB,EAAAA,EAAAA,aAAY,kBACjBriB,KAAM,CACL2N,SAAAA,GAED/N,KAAM,OACNK,QAAO,SAACgE,GACPpD,OAAOghB,aAAe5d,EAASqe,UAE3BtlB,EAAAA,GAAAA,WAAaiK,EAAKrK,WACrBqK,EAAKrK,UAEP,EACAW,MAAK,WACJykB,EAAOzkB,MAAQyB,EAAE,OAAQ,qCACzBW,GAAAA,qBAAAA,4BAAoDsH,EAAKrK,SAAUolB,EACpE,GAEF,GC1GYO,GAAQ1hB,OAAO2hB,QAAU,CAAC,ECWvC,IAECC,UAAW,GAcXC,WAAU,SAAC3d,EAAQjF,EAAKoY,GACvB,IAAIyK,EAOJ,GALCA,EADuB,iBAAZ5d,EACCA,EAEApF,GAAAA,iBAAoBoF,GAG7BlE,OAAO+hB,QAAQC,UAAW,CAK7B,GAJA/iB,EAAMA,GAAOgjB,SAASC,SAAW,IAAMJ,EAGrBK,UAAUC,UAAUC,cAAc9gB,QAAQ,YAAc,GACzD2a,SAASiG,UAAUC,UAAU5kB,MAAM,KAAKkE,OAAS,GAEjE,IADA,IACsC4gB,EADhCC,EAAWzX,SAAS0X,iBAAiB,+DAClC7N,EAAI,EAAG8N,EAAKF,EAASvkB,OAAiB2W,EAAI8N,EAAI9N,KACtD2N,EAAUC,EAAS5N,IAEXvC,MAAMsQ,KAAOJ,EAAQlQ,MAAMsQ,KAEnCJ,EAAQlQ,MAAMuQ,OAASL,EAAQlQ,MAAMuQ,OACrCL,EAAQM,gBAAgB,UACxBN,EAAQO,aAAa,SAAU,gBAG7BxL,EACHrX,OAAO+hB,QAAQe,aAAa5e,EAAQ,GAAIjF,GAExCe,OAAO+hB,QAAQC,UAAU9d,EAAQ,GAAIjF,EAEvC,MAECe,OAAOiiB,SAASc,KAAO,IAAMjB,EAG7B9lB,KAAKgnB,YAAa,CAEpB,EAWAhB,UAAS,SAAC9d,EAAQjF,GACjBjD,KAAK6lB,WAAW3d,EAAQjF,GAAK,EAC9B,EAaA6jB,aAAY,SAAC5e,EAAQjF,GACpBjD,KAAK6lB,WAAW3d,EAAQjF,GAAK,EAC9B,EAOAgkB,qBAAoB,SAACC,GACpBlnB,KAAK4lB,UAAUhb,KAAKsc,EACrB,EAQAC,gBAAe,WACd,IAAMJ,EAAO/iB,OAAOiiB,SAASc,KACvBK,EAAML,EAAKxhB,QAAQ,KACzB,OAAI6hB,GAAO,EACHL,EAAKvhB,OAAO4hB,EAAM,GAEtBL,EAAK/kB,OAED+kB,EAAKvhB,OAAO,GAEb,EACR,EAEA6hB,aAAY,SAACC,GACZ,OAAOA,EAAMjM,QAAQ,MAAO,IAC7B,EAQAkM,cAAa,WACZ,IACIrf,EADEof,EAAQtnB,KAAKmnB,kBAQnB,OALIG,IACHpf,EAASpF,GAAAA,iBAAoB9C,KAAKqnB,aAAaC,MAGhDpf,EAAS/H,EAAAA,GAAAA,OAAS+H,GAAU,CAAC,EAAGpF,GAAAA,iBAAoB9C,KAAKqnB,aAAapB,SAASuB,YAC9D,CAAC,CACnB,EAEAC,YAAW,SAAC/a,GAKX,IAAIxE,EAJJ,GAAIlI,KAAKgnB,WACRhnB,KAAKgnB,YAAa,OAInB,GAAKhnB,KAAK4lB,UAAU5jB,OAApB,CAGAkG,EAAUwE,GAAKA,EAAEgb,MACbvnB,EAAAA,GAAAA,SAAW+H,GACdA,EAASpF,GAAAA,iBAAoBoF,GAClBA,IACXA,EAASlI,KAAKunB,iBAAmB,CAAC,GAEnC,IAAK,IAAI5O,EAAI,EAAGA,EAAI3Y,KAAK4lB,UAAU5jB,OAAQ2W,IAC1C3Y,KAAK4lB,UAAUjN,GAAGzQ,EARnB,CAUD,2BCxJD,SAASyf,GAASxlB,GAQjB,IANA,IAII4Y,EAJE6M,EAAK,GACP/M,EAAI,EACJC,GAAK,EACL8B,EAAI,EAGD/B,EAAI1Y,EAAEH,QAAQ,CACpB+Y,EAAI5Y,EAAE0lB,OAAOhN,GAEb,IAAMiN,GAAOlL,GAAW,MAAN7B,GAAeA,GAAK,KAAOA,GAAK,IAC9C+M,IAAMlL,IAGTgL,IADA9M,GACQ,GACR8B,EAAIkL,GAELF,EAAG9M,IAAMC,EACTF,GACD,CACA,OAAO+M,CACR,CAOA,QAECG,QAAAA,GAKAC,cAAAA,GAAAA,GAYAC,iBAAgB,SAACC,GAChB,GAAsB,iBAAXA,EACV,OAAO,KAGR,IAAMC,EAAID,EAAO7B,cAAc7R,OAC3B4T,EAAQ,KAgBNC,EAAUF,EAAE1T,MAAM,mDACxB,OAAgB,OAAZ4T,EAMI,MALPD,EAAQE,WAAWH,GACdI,SAASH,IAMXC,EAAQ,KACXD,GAxBkB,CAClBI,EAAG,EACHC,EAAG,KACHC,GAAI,KACJC,GAAI,QACJb,EAAG,QACHc,GAAI,WACJC,EAAG,WACHC,GAAI,cACJ3mB,EAAG,cACH4mB,GAAI,gBACJC,EAAG,iBAawBX,EAAQ,KAGpCD,EAAQtQ,KAAKC,MAAMqQ,IATV,KAWV,EAOAa,WAAU,SAACC,EAAWC,GAKrB,YAJuB/oB,IAAnB4D,OAAOolB,SACV3oB,GAAQ0F,KAAK,+FAEdgjB,EAASA,GAAU,MACZxE,KAAOuE,GAAWC,OAAOA,EACjC,EAMAE,qBAAoB,SAACH,QACG9oB,IAAnB4D,OAAOolB,SACV3oB,GAAQ0F,KAAK,yGAEd,IAAMmjB,EAAO3E,OAAS2E,KAAK3E,KAAOuE,IAClC,OAAII,GAAQ,GAAKA,EAAO,KAChBnnB,EAAE,OAAQ,eAEXwiB,KAAOuE,GAAWK,SAC1B,EAOAC,kBAAiB,WAChB,GAAIxpB,KAAKypB,gBACR,OAAOzpB,KAAKypB,gBAGb,IAAMC,EAAQ5a,SAASqN,cAAc,KACrCuN,EAAMtT,MAAMF,MAAQ,OACpBwT,EAAMtT,MAAMD,OAAS,QAErB,IAAMwT,EAAQ7a,SAASqN,cAAc,OACrCwN,EAAMvT,MAAMwT,SAAW,WACvBD,EAAMvT,MAAMyT,IAAM,MAClBF,EAAMvT,MAAM0T,KAAO,MACnBH,EAAMvT,MAAM2T,WAAa,SACzBJ,EAAMvT,MAAMF,MAAQ,QACpByT,EAAMvT,MAAMD,OAAS,QACrBwT,EAAMvT,MAAM4T,SAAW,SACvBL,EAAMM,YAAYP,GAElB5a,SAASvH,KAAK0iB,YAAYN,GAC1B,IAAMO,EAAKR,EAAMS,YACjBR,EAAMvT,MAAM4T,SAAW,SACvB,IAAII,EAAKV,EAAMS,YASf,OARID,IAAOE,IACVA,EAAKT,EAAMU,aAGZvb,SAASvH,KAAK+iB,YAAYX,GAE1B3pB,KAAKypB,gBAAmBS,EAAKE,EAEtBpqB,KAAKypB,eACb,EAQAc,UAAS,SAACjK,GAGT,OAAO,IAAIkK,KAAKlK,EAAKmK,cAAenK,EAAKoK,WAAYpK,EAAKqK,UAC3D,EAUAC,mBAAkB,SAACC,EAAGrC,GACrB,IAAI3N,EACEiQ,EAAKnD,GAASkD,GACdE,EAAKpD,GAASa,GAEpB,IAAK3N,EAAI,EAAGiQ,EAAGjQ,IAAMkQ,EAAGlQ,GAAIA,IAC3B,GAAIiQ,EAAGjQ,KAAOkQ,EAAGlQ,GAAI,CACpB,IAAMmQ,EAAOC,OAAOH,EAAGjQ,IAAWqQ,EAAOD,OAAOF,EAAGlQ,IAGnD,OAAImQ,GAAQF,EAAGjQ,IAAMqQ,GAAQH,EAAGlQ,GACxBmQ,EAAOE,EAIPJ,EAAGjQ,GAAGsQ,cAAcJ,EAAGlQ,GAAI/X,GAAAA,cAEpC,CAED,OAAOgoB,EAAG9oB,OAAS+oB,EAAG/oB,MACvB,EAQAopB,QAAO,SAACrrB,EAAUsrB,IACQ,SAAnBC,KACc,IAAfvrB,KACHwrB,WAAWD,EAAkBD,EAE/B,CAEAC,EACD,EASAE,mBAAkB,SAAC3a,EAAMhN,GAExB,IADA,IAAM4nB,EAAU3c,SAAS4c,OAAOlqB,MAAM,KAC7BmX,EAAI,EAAGA,EAAI8S,EAAQzpB,OAAQ2W,IAAK,CACxC,IAAM+S,EAASD,EAAQ9S,GAAGnX,MAAM,KAChC,GAAIkqB,EAAO,GAAGlX,SAAW3D,GAAQ6a,EAAO,GAAGlX,SAAW3Q,EACrD,OAAO,CAET,CACA,OAAO,CACR,GC5OY8nB,GAFA3nB,OAAO4nB,UCAhBC,GAAU7nB,OAAO8nB,YAErB,QAAuB,IAAZD,GAAyB,CAEnC,IAAMzE,IADNyE,GAAU5F,SAASC,UACC3gB,QAAQ,eAE3BsmB,IADY,IAATzE,GACOyE,GAAQrmB,OAAO,EAAG4hB,IAElByE,GAAQrmB,OAAO,EAAGqmB,GAAQ5X,YAAY,KAElD,CAEA,ICXmBjL,GDWnB,kBEgFA,IAIC+iB,SX/FuB,CAAC,GAAI,QAAS,MAAO,cAAe,OAAQ,YWgGnEC,UX/FwB,GWgGxBC,eXzF6B,GW0F7BC,kBX/FgC,EWgGhCC,kBX7FgC,EW8FhCC,gBXlG8B,EWmG9BC,gBXjG8B,EWkG9BC,iBX/F+B,GWgG/BC,kBXlGgC,EWmGhCC,aX/F2B,mBW2G3BC,kBAAmB,SAAA9X,GAAI,QAAOA,EAAKF,MAAMiY,EAAAA,sBAA8B,EAEvEC,U9BpGwB,SAACnpB,EAAKopB,EAAQ1X,GAGtC,IAAIzV,EAFJgB,EAAQ0F,KAAK,iEAGb,IAAM+L,GAAO2a,EAAAA,EAAAA,kBAAiBrpB,EAAK,KAAMopB,EAAS,OAUlD,OATKltB,EAAcwS,GAKdgD,GACHA,KALDzV,EAAWa,IAAAA,WACXA,IAAAA,UAAY4R,GAAM,kBAAMzS,EAASgP,SAAS,IAC1C/O,EAAcwS,GAAQzS,GAMhBC,EAAcwS,EACtB,E8BsFC4a,S9B7EuB,SAACtpB,EAAK4S,GAC7B3V,EAAQ0F,KAAK,oEAEb,IAAM+L,GAAO2a,EAAAA,EAAAA,kBAAiBrpB,EAAK,MAAO4S,EAAQ,SACd,IAAhCzW,EAAa4F,QAAQ2M,KACxBvS,EAAaiL,KAAKsH,GACdpD,SAASie,iBACZje,SAASie,iBAAiB7a,IAE1BkE,EAAQ9V,IAAE,gDAAkD4R,EAAO,OACnE5R,IAAE,QAAQmK,OAAO2L,IAGpB,E8BiEC7T,KAAAA,EACA2B,UAAAA,EACAH,UAAAA,EACAipB,YC3G0B,SAAAC,GAG1B,GAFAxsB,EAAQ0F,KAAK,2EAEO,IAAT8mB,QAA8C,IAAfA,EAAKC,MAC9C,KAAM,CACLrc,KAAM,mBACNR,QAAS,kCAGX,IAAIvL,EAAQ,CAAEqoB,WAAY,eAAgBC,OAAO,GACjD9sB,IAAAA,OAASwE,EAAOmoB,GAChB,IAAII,EAAW/sB,IAAE,gBACjB,GAAwB,IAApB+sB,EAASrrB,OACZ,KAAM,CACL6O,KAAM,oBACNR,QAAS,2EAGX,IAAIid,EAAQhtB,IAAE,sBAMd,GALqB,IAAjBgtB,EAAMtrB,SACT1B,IAAE,QAAQgT,QAAQ,4DAClBga,EAAQhtB,IAAE,uBACJqC,SAAS0qB,EAAStP,SAAS,YAAc,WAAa,eAEzDuP,EAAMzhB,GAAG,YACZyhB,EAAMrtB,OAAOoW,aACP,CACN,IAAMkX,EAAaF,EAAStP,SAAS,YAAc,KAAO,OAC1Dzd,IAAAA,KAAMusB,EAAAA,EAAAA,kBAAiB/nB,EAAMooB,MAAO,GAAIpoB,EAAMqoB,aAAa,SAAShqB,GACnEmqB,EAAMzsB,KAAKsC,GAAM+R,OAAM,WAKtB,GAJAoY,EAAMha,QAAQ,sBAAwBia,EAAa,gBAAkBprB,EAAE,OAAQ,YAAc,8BAA8Bd,OAC3HisB,EAAMvrB,KAAK,UAAUsB,KAAK,SAAS,WAClCiqB,EAAMjX,QACP,SAC4B,IAAjBvR,EAAM0oB,OAAwB,CACxC,IAAIC,EACJ,IAAqB,IAAjB3oB,EAAM0oB,OACTC,EAAa,kBACP,IAA4B,iBAAjB3oB,EAAM0oB,OAGvB,KAAM,CACL3c,KAAM,mBACNR,QAAS,8DAJVod,EAAa3oB,EAAM0oB,MAMpB,CACI1oB,EAAMsoB,OACT9sB,IAAAA,UAAY,CAAE8sB,OAAO,IAEtB9sB,IAAAA,WAAYusB,EAAAA,EAAAA,kBAAiB/nB,EAAMooB,MAAO,KAAMO,IAC9ChX,MAAK,SAASiX,EAAOL,EAAU3gB,GAC/B,MAAMA,CACP,GACF,CACD,IAAGrL,MACJ,GAAG,OACJ,CACD,EDmDCssB,aAAAA,EACAnnB,SAAAA,EACA0H,aAAAA,EACAiX,OAAQuH,EAORxd,YAAAA,GACA0e,QAASne,GACTsS,YAAAA,GAQA8L,enBvI6B,WAC7B,MAAO,CACNC,IAAK5e,GACLD,YAAAA,GAEF,EmBmIC8e,YVzI0B,WAAH,OAAS3K,EAAO,EU0IvC4K,KAAAA,GAOAC,2BAA4BhsB,EAC5BisB,kB5BnI+B,SAAApmB,IAIZ,IAAfA,EAAI7C,QAAoC,UAAnB6C,EAAIqmB,YAA6C,YAAnBrmB,EAAIqmB,aAA4BrrB,GAAAA,iBAInF3C,EAAAA,GAAAA,SAAW,CAAC,IAAK,IAAK,IAAK,KAAM2H,EAAI7C,SAAWnC,GAAAA,YAEnDyoB,YAAW,WACV,IAAKzoB,GAAAA,wBAA6BA,GAAAA,cAAkB,CACnD,IAAIsrB,EAAQ,EAEN/C,EAAWgD,aAAY,WAC5BnsB,EAAAA,WAAwB0a,EAAE,OAAQ,+CAAgD,gDAFnE,EAE8HwR,IACzIA,GAHW,IAIdE,cAAcjD,GACdvoB,GAAAA,UAEDsrB,GACD,GAAG,KAIHtrB,GAAAA,eAAmB,CACpB,CACD,GAAG,KACsB,IAAfgF,EAAI7C,QAEdsmB,YAAW,WACLzoB,GAAAA,uBAA6BA,GAAAA,eAEjCA,GAAAA,4BAEF,GAAG,KAEL,E4B+FCyrB,8B5BrF4C,SAAAzmB,GAmBxCA,EAAI6a,mBACP7a,EAAI6a,iBAAiB,QAnBD,WACG,IAAnB7a,EAAI0mB,aAIH1mB,EAAI7C,QAAU,KAAO6C,EAAI7C,OAAS,KAAuB,MAAf6C,EAAI7C,QAKnD3E,IAAEwO,UAAUpM,QAAQ,IAAIpC,IAAAA,OAAQ,aAAcwH,GAC/C,IASCA,EAAI6a,iBAAiB,SAPA,WAErBriB,IAAEwO,UAAUpM,QAAQ,IAAIpC,IAAAA,OAAQ,aAAcwH,EAC/C,IAOD,E4BqEC2mB,gBEzJ8B,WAE9B,OADAhuB,GAAQ0F,KAAK,sGACNuoB,EAAAA,GAAAA,kBACR,EF2JC5L,UAAAA,GACA6L,aZtJ2B,SAASC,EAASC,EAASC,EAAQC,GAC9DF,EAAQlsB,SAAS,QACjB,IAAMqsB,EAAiD,MAA5BJ,EAAQpY,KAAK,YAAkD,WAA5BoY,EAAQpY,KAAK,WAI3EoY,EAAQlkB,GAAGskB,EAAqB,aAAe,yBAAyB,SAAS3f,GAEhFA,EAAMuE,iBAGFvE,EAAM3L,KAAqB,UAAd2L,EAAM3L,MAInBmrB,EAAQhjB,GAAG+W,IACdE,MAEUF,IAGVE,MAGkB,IAAfiM,GACHF,EAAQhS,SAASla,SAAS,cAI3BisB,EAAQrd,KAAK,iBAAiB,GAE9Bsd,EAAQI,YCjDe,GDiDQH,GAC/BlM,GAAciM,EACdhM,GAAoB+L,GACrB,GACD,EYoHCM,SZhEuB,SAACN,EAASC,EAAS9L,GACtC8L,EAAQhjB,GAAG+W,MAGfE,KACAF,GAAciM,EACdhM,GAAoB+L,EACpBC,EAAQnsB,QAAQ,IAAIpC,IAAAA,OAAQ,eAC5BuuB,EAAQxtB,OACRwtB,EAAQnsB,QAAQ,IAAIpC,IAAAA,OAAQ,cAExBH,EAAAA,GAAAA,WAAa4iB,IAChBA,IAEF,EYmDCoM,eZ7G6B,SAACP,EAASC,GAEnCA,EAAQhjB,GAAG+W,KACdE,KAED8L,EAAQQ,IAAI,cAAc3sB,YAAY,cACtCosB,EAAQpsB,YAAY,OACrB,EY8GC4sB,SAAAA,EAAAA,GAIAC,WAAAA,EAAAA,GAIAC,QAAAA,EAAAA,GAIAC,WAAAA,EAAAA,GAIAC,UAAAA,EAAAA,GAKAC,QGxLsB,WAAH,OAAS1rB,OAAOiiB,SAAS0J,IAAI,EHyLhDC,YG/K0B,WAAH,OAAS5rB,OAAOiiB,SAAS4J,QAAQ,EHgLxDC,QGtKsB,WAAH,OAAS9rB,OAAOiiB,SAAS8J,IAAI,EHuKhDC,YG3M0B,WAAH,OAAShsB,OAAOiiB,SAASgK,SAASzuB,MAAM,KAAK,EAAE,EHgNtE0uB,mBAAAA,GAAAA,GAIAC,UAAAA,GAAAA,GAIAC,YAAAA,GAAAA,GAKAC,iBIlKoB,SAAAnoB,GACpB,OAAKA,EAGE5H,IAAAA,IAAM4H,GAAQ,SAASrE,EAAOH,GACpC,IAAIykB,EAAItG,mBAAmBne,GAI3B,OAHIG,UACHskB,GAAK,IAAMtG,mBAAmBhe,IAExBskB,CACR,IAAG1mB,KAAK,KARA,EAST,EJwJC6uB,iBIrNoB,SAAAC,GACpB,IAAInJ,EACAoJ,EAEA9sB,EADEiB,EAAS,CAAC,EAEhB,IAAK4rB,EACJ,OAAO,MAERnJ,EAAMmJ,EAAYhrB,QAAQ,OACf,IACVgrB,EAAcA,EAAY/qB,OAAO4hB,EAAM,IAGxC,IADA,IAAM3hB,EAAQ8qB,EAAYlV,QAAQ,MAAO,OAAO7Z,MAAM,KAC7CmX,EAAI,EAAGA,EAAIlT,EAAMzD,OAAQ2W,IAAK,CAEtC,IAAM8X,EAAOhrB,EAAMkT,IAGlB6X,GAFDpJ,EAAMqJ,EAAKlrB,QAAQ,OACR,EACG,CACZkrB,EAAKjrB,OAAO,EAAG4hB,GACfqJ,EAAKjrB,OAAO4hB,EAAM,IAIN,CAACqJ,IAECzuB,SAGhB0B,EAAMgtB,mBAAmBF,EAAW,OAMnC7rB,EAAOjB,GADJ8sB,EAAWxuB,OAAS,EACT0uB,mBAAmBF,EAAW,IAG9B,KAEhB,CACA,OAAO7rB,CACR,EJ6KCgsB,IAAAA,GACAzuB,aAAAA,EACA0uB,qBAAAA,GACAC,QKnOD,CAKCC,SAAU,CAAC,EAQXtN,SAAQ,SAACuN,EAAYC,GACpB,IAAIC,EAAUjxB,KAAK8wB,SAASC,GACvBE,IACJA,EAAUjxB,KAAK8wB,SAASC,GAAc,IAEvCE,EAAQrmB,KAAKomB,EACd,EASAE,WAAU,SAACH,GACV,OAAO/wB,KAAK8wB,SAASC,IAAe,EACrC,EASAI,OAAM,SAACJ,EAAYK,EAActwB,GAEhC,IADA,IAAMmwB,EAAUjxB,KAAKkxB,WAAWH,GACvBpY,EAAI,EAAGA,EAAIsY,EAAQjvB,OAAQ2W,IAC/BsY,EAAQtY,GAAGwY,QACdF,EAAQtY,GAAGwY,OAAOC,EAActwB,EAGnC,EASAsd,OAAM,SAAC2S,EAAYK,EAActwB,GAEhC,IADA,IAAMmwB,EAAUjxB,KAAKkxB,WAAWH,GACvBpY,EAAI,EAAGA,EAAIsY,EAAQjvB,OAAQ2W,IAC/BsY,EAAQtY,GAAGyF,QACd6S,EAAQtY,GAAGyF,OAAOgT,EAActwB,EAGnC,GLsKA4kB,MAAAA,GACA2L,KAAAA,GACA1F,MAAAA,GAIA2F,SAAUzE,EAAAA,iBAIVrH,YAAAA,EAAAA,YAIA5b,KDlPkBZ,GCkPThF,ODlPoB,SAAA6M,GAI7B,IAHA,IAAM0gB,EAAa1gB,EAAKrP,MAAM,KACxBgwB,EAAOD,EAAW7rB,MAEfiT,EAAI,EAAGA,EAAI4Y,EAAWvvB,OAAQ2W,IAEtC,KADA3P,GAAUA,GAAQuoB,EAAW5Y,KAE5B,OAAO,EAGT,OAAO3P,GAAQwoB,EAChB,GC2OC3nB,IDlOkB,SAAAb,GAAO,OAAI,SAAC6H,EAAMhN,GAIpC,IAHA,IAAM0tB,EAAa1gB,EAAKrP,MAAM,KACxBgwB,EAAOD,EAAW7rB,MAEfiT,EAAI,EAAGA,EAAI4Y,EAAWvvB,OAAQ2W,IACjC3P,EAAQuoB,EAAW5Y,MACvB3P,EAAQuoB,EAAW5Y,IAAM,CAAC,GAE3B3P,EAAUA,EAAQuoB,EAAW5Y,IAG9B,OADA3P,EAAQwoB,GAAQ3tB,EACTA,CACR,CAAC,CCsNKgG,CAAI7F,QAITytB,YAAaC,EAAAA,WAIbC,UAAAA,EAAAA,UACAC,SM/PuB,SAAAC,GAAe7tB,OAAOiiB,SAAW4L,CAAU,ENgQlEC,OMzPqB,WAAQ9tB,OAAOiiB,SAAS6L,QAAS,EN0PtD7qB,aAAc8qB,KAIdC,OAAAA,EAAAA,OAOAC,UAAW,SAACC,EAASC,GACpB,OAAOjvB,EAAAA,EAAAA,gBAAegvB,EAAS,CAAC,EAAG,CAClCE,WAAYD,GAAW,IACnB,GACN,EAIAE,aAAcC,EAAAA,kBACdC,iBO1Q+B,SAAAL,GAC/B,OAAOM,EAAAA,EAAAA,cAAmB,eAAiBN,CAC5C,EPkRCrG,QAAAA,KAID4G,EAAAA,EAAAA,IAAU,qBAAqB,SAAA/lB,GAC9B5J,GAAGmE,aAAeyF,EAAE8C,MAGpB/O,GAAQ8P,KAAK,0BAA2B7D,EAAE8C,MAC3C,4WQ7RA,IAAI2V,GAAS,KA6CP/D,GAAQ,6CAAG,qGAKhB,OAJMne,GAAMuiB,EAAAA,EAAAA,aAAY,cAIxB,SACmBllB,IAAAA,IAAM2C,GAAI,OAAnB,OAAJyvB,EAAO,EAAH,uBAEHA,EAAKljB,OAAK,2CACjB,kBATa,mCAWRmjB,GAAI,6CAAG,4HAESvR,KAAU,OAAxB5R,EAAQ,EAAH,KACXojB,GAAgBpjB,GAAM,gDAEtB/O,GAAQC,MAAM,2BAA4B,EAAF,IAAI,yDAE7C,kBAPS,mCASJmyB,GAAe,WACpB,IAAMxH,EAAWgD,YAAYsE,GAAsB,IArChC,WACnB,IAAItH,EAAWyH,IAMf,OALI3N,GAAO4N,mBACV1H,EAAWvT,KAAKwB,MAAM6L,GAAO4N,iBAAmB,IAI1Cjb,KAAKsE,IACX,MACAtE,KAAKkC,IACJ,GACAgZ,MAAM3H,GAAY,IAAMA,GAG3B,CAuBoC4H,IAInC,OAFAxyB,GAAQ8P,KAAK,qCAEN8a,CACR,qCCzGmL,GCwCnL,CACAxa,KAAAA,eAEA2f,WAAAA,CACA0C,kBAAAA,EACAC,aAAAA,MAGAhwB,KAAAA,WACA,OACAiwB,aAAAA,KAEA,EAEAC,QAAAA,WAEA,uCACAhlB,GAAAA,sBAEA,EAEAilB,QAAAA,CACAC,WAAAA,WAAA,MACA,0DACA,wJCrDIzyB,GAAU,CAAC,EAEfA,GAAQ0yB,kBAAoB,KAC5B1yB,GAAQ2yB,cAAgB,KAElB3yB,GAAQ4yB,OAAS,UAAc,KAAM,QAE3C5yB,GAAQ6yB,OAAS,KACjB7yB,GAAQ8yB,mBAAqB,KAEhB,KAAI,KAAS9yB,IAKJ,MAAW,aAAiB,YALlD,gBCFA,IAXgB,QACd,ICTW,WAAkB,IAAI+yB,EAAI7zB,KAAK8zB,EAAGD,EAAIE,MAAMD,GAAG,OAAOA,EAAG,eAAe,CAAC7tB,MAAM,CAAC,GAAK,eAAe,aAAa4tB,EAAI1xB,EAAE,OAAQ,oBAAoBuI,GAAG,CAAC,KAAOmpB,EAAIN,YAAYS,YAAYH,EAAII,GAAG,CAAC,CAACvwB,IAAI,UAAUwwB,GAAG,WAAW,MAAO,CAACJ,EAAG,WAAW,CAAC7tB,MAAM,CAAC,KAAO,MAAM,EAAEkuB,OAAM,MAAS,CAACN,EAAIO,GAAG,KAAKN,EAAG,MAAM,CAAC7tB,MAAM,CAAC,GAAK,wBAC3U,GACsB,IDUpB,EACA,KACA,WACA,MAI8B,sDEkDhC,IACA4K,KAAAA,UACA2f,WAAAA,CACA6D,UAAAA,KAAAC,aAAAA,MAEAnxB,KAAAA,WACA,OACAoxB,MAAAA,EAAAA,GAAAA,GAAAA,OAAAA,OAAAA,CAAAA,GACAC,SAAAA,EACAC,SAAAA,KAEA,EACAC,SAAAA,CACAC,QAAAA,WACA,+BACA,EACAC,YAAAA,WACA,0CACA,EACAC,eAAAA,WACA,wCACA,EACAC,SAAAA,WACA,kCACAtxB,EAAAA,OAAAA,KAAAA,EAAAA,OAAAA,kBAAAA,IAAAA,KACAA,EAAAA,OAAAA,EAAAA,KAAAA,EAAAA,OAAAA,uBAAAA,wBAAAA,EAAAA,OAAAA,CAAAmZ,MAAAA,EAAAA,SAAA,QACA,GAEA0W,QAAAA,WACA,8CACA,gCACA,eACAZ,EAAAA,EAAAA,IAAAA,6BAAAA,KAAAA,QACA,EACAsC,cAAAA,WACA,4BACAC,EAAAA,EAAAA,IAAAA,6BAAAA,KAAAA,QACA,EACA1B,QAAAA,CACA2B,qBAAAA,SAAAA,EAAAA,GACA,kCACA,EACAC,QAAAA,SAAAA,GAAA,aACA,WACA,EACAC,OAAAA,WACA,2BACA,qBAEA,GADA,uBAEAC,IAEA,MACAA,EAAAA,GAEA,eACA,IC7H8K,iBCW1K,GAAU,CAAC,EAEf,GAAQ5B,kBAAoB,KAC5B,GAAQC,cAAgB,KAElB,GAAQC,OAAS,UAAc,KAAM,QAE3C,GAAQC,OAAS,KACjB,GAAQC,mBAAqB,KAEhB,KAAI,KAAS,IAKJ,MAAW,aAAiB,YALlD,ICFA,IAXgB,QACd,ICTW,WAAkB,IAAIC,EAAI7zB,KAAK8zB,EAAGD,EAAIE,MAAMD,GAAG,OAAOA,EAAG,MAAM,CAACuB,YAAY,YAAY,CAACvB,EAAG,KAAK,CAACuB,YAAY,iBAAiBxB,EAAIyB,GAAIzB,EAAIe,aAAa,SAASpxB,GAAK,OAAOswB,EAAG,KAAK,CAACpwB,IAAIF,EAAI4B,GAAGiwB,YAAY,iBAAiBE,MAAM,CAAE,yBAA0B/xB,EAAIgyB,QAASvvB,MAAM,CAAC,cAAczC,EAAI4B,KAAK,CAAC0uB,EAAG,IAAI,CAACyB,MAAM,CAAE,aAAc/xB,EAAIiyB,OAAS,GAAIxvB,MAAM,CAAC,KAAOzC,EAAIuB,KAAK,aAAa8uB,EAAIiB,SAAStxB,GAAK,MAAQA,EAAIqN,KAAK,iBAAerN,EAAIgyB,QAAS,OAAe,OAAShyB,EAAI6P,OAAS,cAAWjT,EAAU,IAAMoD,EAAI6P,OAAS,2BAAwBjT,IAAY,CAAC0zB,EAAG,MAAM,CAAC7tB,MAAM,CAAC,IAAMzC,EAAIyc,KAAK,IAAM,MAAM4T,EAAIO,GAAG,KAAKN,EAAG,MAAM,CAACuB,YAAY,yBAAyB,CAACxB,EAAIO,GAAG,eAAeP,EAAI6B,GAAGlyB,EAAIqN,MAAM,gBAAiBrN,EAAIiyB,OAAS,EAAG3B,EAAG,OAAO,CAACuB,YAAY,kCAAkC,CAACxB,EAAIO,GAAGP,EAAI6B,GAAGlyB,EAAIiyB,WAAW5B,EAAI8B,UAAU,IAAG,GAAG9B,EAAIO,GAAG,KAAKN,EAAG,YAAY,CAACuB,YAAY,gBAAgBpvB,MAAM,CAAC,aAAa4tB,EAAI1xB,EAAE,OAAQ,eAAe0xB,EAAIyB,GAAIzB,EAAIgB,gBAAgB,SAASrxB,GAAK,OAAOswB,EAAG,eAAe,CAACpwB,IAAIF,EAAI4B,GAAGiwB,YAAY,yBAAyBpvB,MAAM,CAAC,aAAa4tB,EAAIiB,SAAStxB,GAAK,iBAAeA,EAAIgyB,QAAS,OAAe,KAAOhyB,EAAIuB,MAAMivB,YAAYH,EAAII,GAAG,CAAC,CAACvwB,IAAI,OAAOwwB,GAAG,WAAW,MAAO,CAACJ,EAAG,MAAM,CAACuB,YAAY,WAAWE,MAAM,CAAE,aAAc/xB,EAAIiyB,OAAS,IAAK,CAAC3B,EAAG,MAAM,CAAC7tB,MAAM,CAAC,IAAMzC,EAAIyc,KAAK,IAAM,QAAQ,EAAEkU,OAAM,IAAO,MAAK,IAAO,CAACN,EAAIO,GAAG,WAAWP,EAAI6B,GAAGlyB,EAAIqN,MAAM,YAAarN,EAAIiyB,OAAS,EAAG3B,EAAG,OAAO,CAACuB,YAAY,kCAAkC,CAACxB,EAAIO,GAAGP,EAAI6B,GAAGlyB,EAAIiyB,WAAW5B,EAAI8B,MAAM,IAAG,IAAI,EACzgD,GACsB,IDUpB,EACA,KACA,WACA,MAI8B,sDE4BhC,qCC/C0L,GDiD1L,CACA9kB,KAAAA,gBAEA2f,WAAAA,CACAoF,cAAAA,MAGA9wB,MAAAA,CACAM,GAAAA,CACArC,KAAAA,OACA8yB,UAAAA,GAEAhlB,KAAAA,CACA9N,KAAAA,OACA8yB,UAAAA,GAEA9wB,KAAAA,CACAhC,KAAAA,OACA8yB,UAAAA,GAEAL,OAAAA,CACAzyB,KAAAA,QACA8yB,UAAAA,GAEA5V,KAAAA,CACAld,KAAAA,OACA8yB,UAAAA,IAIA1yB,KAAAA,WACA,OACAmJ,SAAAA,EAEA,EAEAooB,SAAAA,CACAoB,WAAAA,WACA,2CACA,GAGAxC,QAAAA,CACAyC,YAAAA,WACA,eACA,gBEnFI,GAAU,CAAC,EAEf,GAAQvC,kBAAoB,KAC5B,GAAQC,cAAgB,KAElB,GAAQC,OAAS,UAAc,KAAM,QAE3C,GAAQC,OAAS,KACjB,GAAQC,mBAAqB,KAEhB,KAAI,KAAS,IAKJ,MAAW,aAAiB,YALlD,ICbI,IAAY,QACd,ICTW,WAAkB,IAAIC,EAAI7zB,KAAK8zB,EAAGD,EAAIE,MAAMD,GAAG,OAAOA,EAAG,KAAK,CAACuB,YAAY,aAAapvB,MAAM,CAAC,GAAK4tB,EAAIzuB,KAAK,CAAEyuB,EAAI9uB,KAAM+uB,EAAG,IAAI,CAACyB,MAAM,CAAEC,OAAQ3B,EAAI2B,QAASvvB,MAAM,CAAC,KAAO4tB,EAAI9uB,MAAM2F,GAAG,CAAC,MAAQ,SAASsrB,GAAQ,OAAGA,EAAOlV,SAASkV,EAAOC,UAAUD,EAAOE,QAAQF,EAAOG,QAAe,KAAYtC,EAAIkC,YAAY7S,MAAM,KAAMC,UAAU,IAAI,CAAE0Q,EAAIvnB,QAASwnB,EAAG,gBAAgB,CAACuB,YAAY,2BAA2BpvB,MAAM,CAAC,KAAO,MAAM6tB,EAAG,MAAM,CAAC7tB,MAAM,CAAC,IAAM4tB,EAAIiC,WAAW,IAAM,MAAMjC,EAAIO,GAAG,SAASP,EAAI6B,GAAG7B,EAAIhjB,MAAM,SAAS,GAAGijB,EAAG,SAAS,CAACA,EAAG,MAAM,CAAC7tB,MAAM,CAAC,IAAM4tB,EAAIiC,WAAW,IAAM,MAAMjC,EAAIO,GAAG,SAASP,EAAI6B,GAAG7B,EAAIhjB,MAAM,WAC5nB,GACsB,IDUpB,EACA,KACA,WACA,MAIF,GAAe,GAAiB,QEkChC,4CCrD+K,GDuD/K,CACAA,KAAAA,WAEA2f,WAAAA,CACA4F,SAAAA,KACAjD,aAAAA,KACAkD,cAAAA,IAGAlzB,KAAAA,WAAA,MACA,OACAmzB,mBAAAA,GACAC,OAAAA,QAAAA,GAAAA,EAAAA,GAAAA,aAAAA,IAAAA,OAAAA,EAAAA,EAAAA,IAEA,EAEAlD,QAAAA,YACA9jB,EAAAA,EAAAA,IAAAA,yBACA,eE9DI,GAAU,CAAC,EAEf,GAAQikB,kBAAoB,KAC5B,GAAQC,cAAgB,KAElB,GAAQC,OAAS,UAAc,KAAM,QAE3C,GAAQC,OAAS,KACjB,GAAQC,mBAAqB,KAEhB,KAAI,KAAS,IAKJ,MAAW,aAAiB,YALlD,ICFA,IAXgB,QACd,ICTW,WAAkB,IAAIC,EAAI7zB,KAAK8zB,EAAGD,EAAIE,MAAMD,GAAG,OAAOA,EAAG,eAAe,CAACuB,YAAY,YAAYpvB,MAAM,CAAC,GAAK,YAAY,aAAa4tB,EAAI1xB,EAAE,OAAQ,uBAAuB6xB,YAAYH,EAAII,GAAG,CAAC,CAACvwB,IAAI,UAAUwwB,GAAG,WAAW,MAAO,CAACJ,EAAG,WAAW,CAACuB,YAAY,oBAAoBpvB,MAAM,CAAC,gBAAe,EAAK,mBAAkB,EAAK,KAAO4tB,EAAI0C,UAAU,EAAEpC,OAAM,MAAS,CAACN,EAAIO,GAAG,KAAKN,EAAG,MAAM,CAACuB,YAAY,iBAAiBpvB,MAAM,CAAC,aAAa4tB,EAAI1xB,EAAE,OAAQ,mBAAmB,CAAC2xB,EAAG,KAAKD,EAAIyB,GAAIzB,EAAIyC,oBAAoB,SAASzW,GAAO,OAAOiU,EAAG,gBAAgBD,EAAI2C,GAAG,CAAC9yB,IAAImc,EAAMza,IAAI,gBAAgBya,GAAM,GAAO,IAAG,MAC1mB,GACsB,IDUpB,EACA,KACA,WACA,MAI8B,QEmC1B4W,GAAgB,CACrBC,GAAI,QACJC,QAAS,QACTC,WAAY,QACZC,WAAY,QACZC,WAAY,QACZC,WAAY,QACZC,QAAS,QACTC,WAAY,QACZC,WAAY,QACZC,WAAY,SAETC,GAASt0B,GAAAA,YACT4D,OAAOmC,UAAUwuB,eAAe12B,KAAK81B,GAAeW,MACvDA,GAASX,GAAcW,KAMxBzS,KAAAA,OAAcyS,IAKP,ICrDyB1rB,GDqDnB4rB,GAAW,WEpDH,IACdC,EFqGN,GAjDAj3B,IAAE0D,QAAQ0G,GAAG,eAAe,WAAQ5H,GAAAA,eAAmB,CAAK,IAC5DxC,IAAE0D,QAAQ0G,GAAG,qBAAqB,WAOjC6gB,YAAW,WACVzoB,GAAAA,uBAA2B,EAK3ByoB,YAAW,WACLzoB,GAAAA,gBACJA,GAAAA,uBAA2B,EAE7B,GAAG,IACJ,GAAG,EACJ,IACAxC,IAAEwO,UAAUpE,GAAG,kBAAkB,SAAS2E,EAAO3H,EAAS2lB,GACrDA,GAAYA,EAASmK,iBAGzB10B,GAAAA,kBAAqB4E,EACtB,IrBsCmC,WAKnC,GA9GkB,WAClB,IACCyd,IAASsS,EAAAA,GAAAA,GAAU,OAAQ,SAI5B,CAHE,MAAO/qB,GAERyY,GAASriB,GAAAA,MACV,CACD,CAmGC40B,GAtC0B,WAC1B,GAAKvS,GAAOwS,cAAgB9J,EAAAA,GAAAA,MAA5B,CAIA,IAAI+J,EAAapN,KAAKqN,MACtB7zB,OAAO2e,iBAAiB,aAAa,SAAAjW,GACpCkrB,EAAapN,KAAKqN,MAClBC,aAAaC,QAAQ,aAAcH,EACpC,IAEA5zB,OAAO2e,iBAAiB,cAAc,SAAAjW,GACrCkrB,EAAapN,KAAKqN,MAClBC,aAAaC,QAAQ,aAAcH,EACpC,IAEA5zB,OAAO2e,iBAAiB,WAAW,SAAAjW,GACpB,eAAVA,EAAEhJ,MAGNk0B,EAAalrB,EAAEsrB,SAChB,IAEA3J,aAAY,WACX,IAAMrtB,EAAUwpB,KAAKqN,MAAkC,IAA1B1S,GAAO4N,iBACpC,GAAI6E,EAAa52B,EAAS,CACzBP,GAAQ8P,KAAK,0CACb,IAAM0nB,GAAYzS,EAAAA,EAAAA,aAAY,WAAa,iBAAmB3D,mBAAmBkQ,MACjF/tB,OAAOiiB,SAAWgS,CACnB,CACD,GAAG,IA3BH,CA4BD,CASCC,QA7FoC93B,IAA7B+kB,GAAOgT,mBACRhT,GAAOgT,kBA8Fb,CAIA,IAAI9M,EAAWwH,KAEf7uB,OAAO2e,iBAAiB,SAAQ,4BAAE,6FAER,OADzBliB,GAAQ8P,KAAK,+CACb8a,EAAWwH,KAAc,kBAElBF,KAAM,OACZlyB,GAAQ8P,KAAK,8DAGbhB,EAAAA,EAAAA,IAAK,gBAAiB,CACrBnM,SAAS,IACR,gDAEF3C,GAAQC,MAAM,wDAAyD,EAAF,KAGrE6O,EAAAA,EAAAA,IAAK,gBAAiB,CACrBnM,SAAS,IACR,0DAGJY,OAAO2e,iBAAiB,WAAW,WAClCliB,GAAQ8P,KAAK,2CAGbhB,EAAAA,EAAAA,IAAK,iBAAkB,CAAC,GAExB+e,cAAcjD,GACd5qB,GAAQ8P,KAAK,oCACd,GA/BA,MAFC9P,GAAQ8P,KAAK,6BAkCf,CqB5EC6nB,GAEAt1B,GAAAA,aAAgBxC,IAAE,WAAYA,IAAE,eAAe,GAAO,GAGtDA,IAAEwO,UAAUpE,GAAG,sBAAsB,SAAA2E,GACpC,IAAM7M,EAAMlC,IAAE+O,EAAMgE,QACpB,GAAI7Q,EAAI+T,QAAQ,SAASvU,QAAUQ,EAAI+T,QAAQ,eAAevU,OAE7D,OAAO,EAGRc,GAAAA,WACD,IG5FoB,WAEpBu1B,GAAAA,GAAAA,MAAU,CACT/E,QAAS,CACRnxB,EAAAA,GAAAA,GACAya,EAAAA,GAAAA,MAIF,IAAM0b,EAAYxpB,SAASiQ,eAAe,wBAC1C,GAAKuZ,EAAL,CAIA,IACMC,EAAU,IADGF,GAAAA,GAAAA,OAAWG,IACd,CAAe,CAAC,GAAGC,OAAOH,GAE1C5xB,OAAOC,OAAO7D,GAAI,CACjBmyB,qBAAoB,SAAC7vB,EAAIszB,GACxBH,EAAQtD,qBAAqB7vB,EAAIszB,EAClC,GAPD,CAUD,CHuECC,IE/FMpB,EAAazoB,SAASiQ,eAAe,eAG1C,IAAIsZ,GAAAA,GAAI,CACPhqB,GAAIkpB,EACJptB,OAAQ,SAAAyuB,GAAC,OAAIA,EAAEC,GAAS,IEFN,WACpB,IAAMtB,EAAazoB,SAASiQ,eAAe,gBACvCwY,GAEH,IAAIc,GAAAA,GAAI,CACPhqB,GAAIkpB,EACJptB,OAAQ,SAAAyuB,GAAC,OAAIA,EAAE1qB,GAAa,GAG/B,CJqFC4qB,GAIIx4B,IAAE,mBAAmB0B,SAAW1B,IAAE,QAAQyd,SAAS,UAClDzd,IAAE,gBAAgByd,SAAS,cAAe,CAG9C,IAAMgb,EAAU,IAAIC,KAAK,CACxBjjB,QAASjH,SAASiQ,eAAe,eACjCka,QAAS,QACTC,YAAa,IACbC,gBAAiB,MAGlB74B,IAAE,gBAAgBgT,QAAQ,8FAK1B,IAAI8lB,GAAY,EAChBL,EAAQruB,GAAG,aAAa,WAGvB0uB,GAAY,CACb,IACAL,EAAQruB,GAAG,YAAY,WACtB0uB,GAAY,CACb,IACAL,EAAQruB,GAAG,SAAS,WAEnB0uB,GAAY,CACb,IACAL,EAAQruB,GAAG,OAAO,WAEjB0uB,GAAY,CACb,IAQA,IAAMC,EAAiBN,EAAQO,KACzBC,EAAkBR,EAAQjnB,MAC1B0nB,EAAe,WAChBJ,GAAuC,WAA1BL,EAAQrR,QAAQA,OAGjC2R,EAAe,OAChB,EAEMI,EAAgB,WACjBL,GAAuC,WAA1BL,EAAQrR,QAAQA,OAGjC6R,GACD,EAOKv1B,OAAOolB,UACX2P,EAAQO,KAAO,WACdn5B,EAAAA,GAAAA,MAAQq5B,EACT,EACAT,EAAQjnB,MAAQ,WACf3R,EAAAA,GAAAA,MAAQs5B,EACT,GAGDn5B,IAAE,0BAA0BoR,OAAM,SAAChF,GAEJ,SAA1BqsB,EAAQrR,QAAQA,OACnBqR,EAAQO,MAEV,IACAh5B,IAAE,0BAA0Bo5B,UAAS,SAAAhtB,GACN,SAA1BqsB,EAAQrR,QAAQA,MACnBqR,EAAQjnB,QAERinB,EAAQO,MAEV,IAGuBh5B,IAAE,mBACVq5B,SAAS,aAAc,SAAS,SAAAtqB,GAC9C,IAAMuqB,EAAUt5B,IAAE+O,EAAMgE,QAEpBumB,EAAQ/tB,GAAG,4BACX+tB,EAAQrjB,QAAQ,2BAA2BvU,QAG3C43B,EAAQ/tB,GAAG,4CACX+tB,EAAQrjB,QAAQ,2CAA2CvU,QAG3D43B,EAAQ/tB,GAAG,aACX+tB,EAAQrjB,QAAQ,YAAYvU,QAG5B43B,EAAQ/tB,GAAG,kBACX+tB,EAAQrjB,QAAQ,iBAAiBvU,QAGrC+2B,EAAQjnB,OACT,IAEA,IAAI+nB,GAAmC,EACnCC,GAAmC,EACnCC,GAAyC,EAE7Cj3B,GAAAA,+BAAoC,WACnCg3B,GAAmC,EAE/BC,IACHhB,EAAQiB,SAERH,GAAmC,EACnCE,GAAyC,EAE3C,EAEAj3B,GAAAA,kCAAuC,WACtCg3B,GAAmC,EAE/BD,IAEHd,EAAQE,SADe,GAGvBY,GAAmC,EACnCE,GAAyC,EAE3C,EAEA,IAAME,EAAsB,WACvB35B,IAAE0D,QAAQkS,QAlOa,MAmO1B6iB,EAAQjnB,QACRinB,EAAQE,UAERY,GAAmC,EACnCE,GAAyC,GAC/BD,GACVf,EAAQiB,SAERH,GAAmC,EACnCE,GAAyC,GAEzCA,GAAyC,CAE3C,EAEAz5B,IAAE0D,QAAQmxB,OAAOh1B,EAAAA,GAAAA,SAAW85B,EAAqB,MAGjDA,GAED,CAnPA5L,aAAY,WACX/tB,IAAE,4BAA4BD,MAAK,WAClC,IAAM6oB,EAAYhJ,SAAS5f,IAAEN,MAAMuR,KAAK,kBAAmB,IAC3DjR,IAAEN,MAAMsB,KAAKqjB,KAAOuE,GAAWK,UAChC,GACD,GAAG,KAiPHqH,GAAAA,MACD,+DCxQAtwB,IAAAA,UAAAA,SAAgCoL,GAmB7BpL,IAAAA,UAAAA,QAlBK,SAAS6kB,GACf,IACC,OAAOzZ,GAAQ/K,KAAKX,KAAMmlB,EAc3B,CAbE,MAAO+U,GACR,GAAIA,aAAcC,WAAwB,YAAXhV,EAI9B,YAHuB/kB,IAAnB4D,OAAOolB,SACV3oB,GAAQC,MAAM,kFAERgL,GAAQ/K,KAAKX,KAAM,WAE3B,GAAIk6B,aAAcC,WAAwB,aAAXhV,EAI9B,YAHuB/kB,IAAnB4D,OAAOolB,SACV3oB,GAAQC,MAAM,mFAERgL,GAAQ/K,KAAKX,KAAM,YAE5B,CACD,qDIRKo6B,iDAAW,6FAKV,SAASC,GAAY3jB,GAC3B,OAAO1W,KAAKs6B,gBAAgB5jB,EAC7B,CAKO,SAAS6jB,GAAY7jB,GAC3B,OAAO1W,KAAKw6B,iBAAiB9jB,EAC9B,CAKO,SAAS4jB,GAAgB5jB,GAC/B,OAAOA,EAAQ2E,QAAQ+e,IAAU,SAASj6B,EAAGs6B,EAAcxK,EAAUhtB,EAAKy3B,GACzE,IAAIC,EAAW13B,EAOf,OANKgtB,EAEmB,YAAbA,IACV0K,EAAW1K,EAAWhtB,GAFtBgtB,EAAW,WAKLwK,EAAe,uEAAyExK,EAAWhtB,EAAM,KAAO03B,EAAW,OAASD,CAC5I,GACD,CAKO,SAASF,GAAiB9jB,GAChC,IAAMkkB,EAAWt6B,IAAE,eAAeO,KAAK6V,GAKvC,OAJAkkB,EAAS74B,KAAK,KAAK1B,MAAK,WACvB,IAAMw6B,EAAQv6B,IAAEN,MAChB66B,EAAMh6B,KAAKg6B,EAAMtpB,KAAK,QACvB,IACOqpB,EAAS/5B,MACjB,iBChDO,SAASymB,GAAMxmB,GAErB,IAAMg6B,GADNh6B,EAAUA,GAAW,CAAC,GACSi6B,SAAW,CAAC,EAC3Cz6B,IAAAA,KAAO,CACNyC,KAAM,MACNE,IAAKnC,EAAQmC,MAAOC,EAAAA,EAAAA,gBAAe,6BACnCE,QAAStC,EAAQsC,SAAW,SAASD,EAAMgrB,EAAYrmB,IA8BzD,SAAwB3E,EAAMgrB,EAAYrmB,EAAKgzB,GAI9C,GAHAr6B,GAAQkrB,MAAM,2CAA6CwC,GAC3D1tB,GAAQkrB,MAAMxoB,GAEK,MAAf2E,EAAI7C,OAAR,CAIA,IAAIsF,EAAMywB,EAAU15B,EAAM2e,EAEpBgb,EAAMnsB,SAASqN,cAAc,OACnC8e,EAAIC,UAAUC,IAAI,cAAe,OAAQ,kBAAmB,aAE5D,IAAM3uB,EAAOsC,SAASqN,cAAc,MAuBpC,IAAK,IAAMxD,KApBXpO,EAAOuE,SAASqN,cAAc,OAC9B6e,EAAWlsB,SAASqN,cAAc,SACzBpR,UAAY,YAErBzJ,EAAOwN,SAASqN,cAAc,SACzBif,UAAYj5B,EAAE,OAAQ,UAAY,IAAMgB,EAAKk4B,IAAIl4B,KAAKm4B,QAC3Dh6B,EAAKyJ,UAAY,UACjBiwB,EAAS/Q,YAAY3oB,IAErB2e,EAAOnR,SAASqN,cAAc,SACzBpR,UAAY,aACjBkV,EAAKsb,QAAU,WACdR,GAAQ53B,EAAKk4B,IAAIl4B,KAAKgvB,QAAS2I,EAChC,EACAE,EAAS/Q,YAAYhK,GAErB1V,EAAK0f,YAAY+Q,GACjBxuB,EAAKyd,YAAY1f,GAGDpH,EAAKk4B,IAAIl4B,KAAKq4B,SAASC,QAAS,CAC/C,IAAMC,EAAmBv4B,EAAKk4B,IAAIl4B,KAAKq4B,SAASC,QAAQ9iB,GACxDpO,EAAOuE,SAASqN,cAAc,OAE9B6e,EAAWlsB,SAASqN,cAAc,SACzBpR,UAAY,YAErBkV,EAAOnR,SAASqN,cAAc,SACzBpR,UAAY,iBACjBiwB,EAAS/Q,YAAYhK,IAErB3e,EAAOwN,SAASqN,cAAc,MACzBwf,UAAYx7B,EAAAA,GAAAA,OAASu7B,GAC1BV,EAAS/Q,YAAY3oB,GAErBiJ,EAAK0f,YAAY+Q,GACjBxuB,EAAKyd,YAAY1f,EAClB,CAGKpK,EAAAA,GAAAA,YAAcgD,EAAKk4B,IAAIl4B,KAAKy4B,gBAChCrxB,EAAOuE,SAASqN,cAAc,OAE9B6e,EAAWlsB,SAASqN,cAAc,MACzBpX,KAAO5B,EAAKk4B,IAAIl4B,KAAKy4B,aAC9BZ,EAASa,IAAM,sBACfb,EAAS3nB,OAAS,UAElB4M,EAAOnR,SAASqN,cAAc,SACzBpR,UAAY,YACjBiwB,EAAS/Q,YAAYhK,IAErB3e,EAAOwN,SAASqN,cAAc,SACzBif,UAAYj5B,EAAE,OAAQ,kBAC3B64B,EAAS/Q,YAAY3oB,GAErBiJ,EAAK0f,YAAY+Q,GACjBxuB,EAAKyd,YAAY1f,IAGlB0wB,EAAIhR,YAAYzd,GAChBsC,SAASvH,KAAK0iB,YAAYgR,EAvE1B,CAwED,CA3GGa,CAAe34B,EAAMgrB,EAAYrmB,EAAKgzB,EACvC,EACAp6B,MAAOI,EAAQJ,OAASq7B,IAE1B,CAMO,SAAShB,GAAQ5I,EAASrxB,GAChCA,EAAUA,GAAW,CAAC,EACtBR,IAAAA,KAAO,CACNyC,KAAM,OACNE,IAAKnC,EAAQmC,MAAOC,EAAAA,EAAAA,gBAAe,iBACnCC,KAAM,CAAEgvB,QAAStQ,mBAAmBsQ,IACpC/uB,QAAStC,EAAQsC,SAAW44B,GAC5Bt7B,MAAOI,EAAQJ,OAASu7B,KAGzB37B,IAAE,oBAAoB+V,QACvB,CA6FA,SAAS0lB,GAAalhB,EAAG1Y,EAAGuK,GAC3BjM,GAAQkrB,MAAM,iDAAmDxpB,EAAIuK,GACrEjM,GAAQkrB,MAAM9Q,EACf,CAKA,SAASmhB,GAAiB74B,GACzB,CAMD,SAAS84B,GAAe94B,GACvB1C,GAAQkrB,MAAM,mDAAqDxoB,EACpE,CChJA,IC+CmB+4B,GAAMC,GAClBC,GACAC,GDjDP,IAICC,yBAAwB,WACvB,OAAO7E,EAAAA,GAAAA,GAAU,UAAW,qBAAqB,EAClD,0BEKK8E,GAAQ,CAAC,ECXT78B,GAAgB,CAAC,EACjB88B,GAAoB,CAAC,EAK3B,IASCC,WAAU,SAACj5B,EAAKmR,GACf,IAAMjR,EAAMF,EAAMmR,EAClB,OAAIjO,OAAOmC,UAAUwuB,eAAe12B,KAAKjB,GAAegE,GAChD8K,QAAQC,WAEhB/O,GAAcgE,IAAO,EACd,IAAI8K,SAAQ,SAASC,EAAS+N,GACpC,IAAMkgB,EAAa55B,GAAGwuB,SAAS9tB,EAAK,KAAMmR,GACpCiY,EAAS9d,SAASqN,cAAc,UACtCyQ,EAAO1Q,IAAMwgB,EACb9P,EAAO/F,aAAa,QAAS8V,KAAK75B,GAAGmE,eACrC2lB,EAAOnR,OAAS,kBAAMhN,GAAS,EAC/Bme,EAAOgQ,QAAU,kBAAMpgB,EAAO,IAAIhU,MAAM,8BAAD,OAA+Bk0B,IAAc,EACpF5tB,SAAS+tB,KAAK5S,YAAY2C,EAC3B,IACD,EASAkQ,eAAc,SAACt5B,EAAKmR,GACnB,IAAMjR,EAAMF,EAAMmR,EAClB,OAAIjO,OAAOmC,UAAUwuB,eAAe12B,KAAK67B,GAAmB94B,GACpD8K,QAAQC,WAEhB+tB,GAAkB94B,IAAO,EAClB,IAAI8K,SAAQ,SAASC,EAAS+N,GACpC,IAAMugB,EAAYj6B,GAAGwuB,SAAS9tB,EAAK,MAAOmR,GACpCqoB,EAAOluB,SAASqN,cAAc,QACpC6gB,EAAKj4B,KAAOg4B,EACZC,EAAKj6B,KAAO,WACZi6B,EAAKnB,IAAM,aACXmB,EAAKvhB,OAAS,kBAAMhN,GAAS,EAC7BuuB,EAAKJ,QAAU,kBAAMpgB,EAAO,IAAIhU,MAAM,kCAAD,OAAmCu0B,IAAa,EACrFjuB,SAAS+tB,KAAK5S,YAAY+S,EAC3B,IACD,GCjDD,IAQC55B,QAAO,SAAC9B,EAAMR,GACb,OAAOm8B,EAAAA,EAAAA,IAAY37B,EAAMR,EAC1B,EAQAo8B,QAAO,SAAC57B,EAAMR,GACb,OAAOq8B,EAAAA,EAAAA,IAAY77B,EAAMR,EAC1B,EAQAJ,MAAK,SAACY,EAAMR,GACX,OAAO0M,EAAAA,EAAAA,IAAUlM,EAAMR,EACxB,EAQAyP,KAAI,SAACjP,EAAMR,GACV,OAAOs8B,EAAAA,EAAAA,IAAS97B,EAAMR,EACvB,EAQAuP,QAAO,SAAC/O,EAAMR,GACb,OAAOK,EAAAA,EAAAA,IAAYG,EAAMR,EAC1B,GC5CD,IACCu8B,cAAAA,GACAn5B,UAAAA,EACAo5B,cHkBD,CAMCC,aAAY,SAACx6B,EAAMy6B,GAClBjB,GAAMx5B,GAAQy6B,CACf,EACA96B,QAAO,SAACK,GACP,OAAOw5B,GAAMx5B,GAAM06B,QACpB,EACAC,SAAQ,WACP,OAAOh3B,OAAOi3B,KAAKpB,GACpB,EACAqB,QAAO,SAAC76B,GACP,OAAOw5B,GAAMx5B,GAAM86B,eAAiB,EACrC,EACAC,SAAQ,SAAC/6B,GACR,OAAOrB,KAAW66B,GAAMx5B,GAAMg7B,YAAch7B,EAC7C,EACAi7B,QAAO,SAACj7B,EAAMqC,GAEb,YAA8B,IAAhBm3B,GAAMx5B,GAAwBw5B,GAAMx5B,GAAMi6B,KAAK53B,GAAM,EACpE,GGzCA64B,SAAAA,EACAC,aAAc,CAIbzG,UAAAA,GAAAA,GAED0G,OAAAA,GAIAC,MAAAA,GACAC,SAAAA,eJIKC,GAAmB,gBACDl+B,IAAnB4D,OAAOolB,SACV3oB,GAAQ0F,KAAK+c,MAAMziB,GAAS0iB,UAE9B,EAqBMob,GAAoB,SAACjvB,EAAQkvB,EAAI7N,IACrC8N,MAAMC,QAAQpvB,GAAUA,EAAS,CAACA,IAASjF,SAAQ,SAAAiF,QAC5BlP,IAAnB4D,OAAOsL,WACHtL,OAAOsL,GAEf5I,OAAOi4B,eAAe36B,OAAQsL,EAAQ,CACrC1F,IAAK,WAOJ,OALC00B,GADG3N,EACc,GAAD,OAAIrhB,EAAM,2BAAmBqhB,GAE5B,GAAD,OAAIrhB,EAAM,mBAGpBkvB,GACR,GAEF,GACD,EAEAx6B,OAAO7D,EAAIA,EAAAA,GACXo+B,GAAkB,CAAC,IAAK,WAAW,kBAAMj+B,GAAC,GAAE,0HAC5Ci+B,GAAkB,YAAY,kBAAMK,GAAAA,CAAQ,GAAE,8DAC9CL,GAAkB,YAAY,kBAAM/3B,GAAQ,GAAE,8DAC9C+3B,GAAkB,CAAC,YAAa,gBAAgB,kBAAMM,IAAW,GAAE,8DACnE76B,OAAO6C,IAAMA,EAAAA,IACb03B,GAAkB,cAAc,kBAAM1a,IAAU,GAAE,8DAClD0a,GAAkB,OAAO,kBAAMO,IAAG,GAAE,8DACpCP,GAAkB,UAAU,kBAAM5Z,IAAM,GAAE,8DAE1C3gB,OAAOlB,GAAKA,GACZy7B,GAAkB,YAAY,kBAAMjH,EAAQ,GAAE,gCAC9CiH,GAAkB,mBAAmB,kBAAMz7B,GAAAA,YAAe,GAAE,qEAC5Dy7B,GAAkB,aAAa,kBAAMz7B,GAAAA,MAAS,GAAE,+DAChDy7B,GAAkB,mBAAmB,kBAAMz7B,GAAAA,iBAAoBgrB,GAAG,GAAE,6EACpEyQ,GAAkB,YAAY,kBAAMz7B,GAAAA,KAAQ,GAAE,8DAC9Cy7B,GAAkB,eAAe,kBAAMz7B,GAAAA,KAAQ,GAAE,8DACjDy7B,GAAkB,aAAcz7B,GAAAA,YAAgB,sEAChDy7B,GAAkB,mBAAmB,kBAAMxM,IAAiB,GAAE,qEAC9DwM,GAAkB,cAAc,kBAAMz7B,GAAAA,OAAU,GAAE,sEAClDy7B,GAAkB,aAAa,kBAAMz7B,GAAAA,OAAU,GAAE,gEACjDkB,OAAO+6B,IAAMA,GACb/6B,OAAOwO,IAAMA,GACblS,IAAAA,GAAAA,SApDmB47B,GAoDM57B,IAAAA,GAAAA,QApDA67B,GAoDc,UAAW,GAnD3CC,GAAUF,GACVG,GAAU,WAEf,OADAiC,GAAiB,OAAD,OAAQnC,GAAQ,mEAiDgB,GAjDkD,MAC3FC,GAAQlZ,MAAMljB,KAAMmjB,UAC5B,EACAzc,OAAOC,OAAO01B,GAASD,IAChBC,IAwDRr4B,OAAO7B,EAAIhC,EAAAA,GAAAA,KAAO2C,GAAAA,KAAAA,UAAmBA,GAAAA,MAYrCkB,OAAO4Y,EAAIzc,EAAAA,GAAAA,KAAO2C,GAAAA,KAAAA,gBAAyBA,GAAAA,MK9E3CxC,IAAAA,GAAAA,OAAc,SAAS0+B,EAAMxkB,EAAMykB,EAAQC,EAAan/B,EAAUo/B,GACjE,IAAMC,EAA0B,SAAS/rB,GACxCA,EAAO5H,iBAAiB,KACxB4H,EAAOiI,IAAI,mBAAoB,UAChC,EAsBA,QApBsB,IAAV0jB,IACXA,EAAOK,OAAOL,SAEc,IAAjBG,IACXA,EAAcE,OAAOF,SAGA,IAAV3kB,IAEVA,EADGxa,KAAKmW,SAAW,EACZnW,KAAKmW,SACFnW,KAAKmD,KAAK,QAAU,EACvBnD,KAAKmD,KAAK,QAEV,IAITnD,KAAKmW,OAAOqE,GACZxa,KAAKkW,MAAMsE,QAEW,IAAVwkB,EAAuB,CAClC,QAAmC,IAAvBh/B,KAAKmD,KAAK,QAIrB,YADAi8B,EAAwBp/B,MAFxBg/B,EAAOh/B,KAAKmD,KAAK,OAKnB,CAGA67B,EAAOK,OAAOL,GAAM3jB,QAAQ,MAAO,IAEnC,IACIpY,EADEq8B,EAAOt/B,KAKZiD,EADG+7B,IAASl8B,GAAAA,iBAAoBgrB,IAC1BhrB,GAAAA,YACL,oCACA,CACCk8B,KAAAA,EACAxkB,KAAM1C,KAAKU,KAAKgC,EAAOxW,OAAOu7B,kBAC9BpN,QAASqN,cAAcC,OAAOtN,UAG1BrvB,GAAAA,YACL,wBACA,CACCk8B,KAAAA,EACAxkB,KAAM1C,KAAKU,KAAKgC,EAAOxW,OAAOu7B,oBAIjC,IAAMvnB,EAAM,IAAIiE,MAGhBjE,EAAIyD,OAAS,WACZ6jB,EAAKI,wBACLJ,EAAK70B,OAAOuN,GAEY,mBAAbjY,GACVA,GAEF,EAIAiY,EAAI4kB,QAAU,WACb0C,EAAKI,6BACwB,IAAjBP,EACXG,EAAK7zB,iBAAiBuzB,EAAMG,GAE5BC,EAAwBE,GAGD,mBAAbv/B,GACVA,GAEF,EAEIya,EAAO,GACV8kB,EAAK38B,SAAS,sBAEd28B,EAAK38B,SAAS,gBAEfqV,EAAI9B,MAAQsE,EACZxC,EAAI7B,OAASqE,EACbxC,EAAIkE,IAAMjZ,EACV+U,EAAI2nB,IAAM,EACX,ECtIA,IAWMC,GAAgBv0B,EAAQ,OAE9B/K,IAAAA,GAAAA,aAAoB,SAASu/B,EAAWC,EAAWC,GAGlD,IAAyC,IADpB,CAAC,EAAG,EAAG,GACXx6B,QAAQu6B,GAAzB,CAIA,IAAMR,EAAOt/B,KACb+/B,EAASt1B,OArBG,+MAsBZ,IAAMu1B,EAAQD,EAASh+B,KAAK,4BAE5Bu9B,EAAK50B,GAAG,iBAAiB,SAAS2E,GACjC,GAAKD,GAAiBC,GAAtB,CAIA,IAAK2wB,EAAMjiB,SAAS,UAGnB,OAFAiiB,EAAMr9B,SAAS,eACfq9B,EAAM//B,OAIP+/B,EAAMv9B,YAAY,UAClBu9B,EAAM3+B,OAEF2+B,EAAMjiB,SAAS,YAInBiiB,EAAMr9B,SAAS,UACfrC,IAAAA,KAAOwC,GAAAA,YAAe,yBAA0B,CAC/CF,OAAQ,OACRO,KAAM,CACL28B,UAAAA,EACAD,UAAAA,KAECv5B,MAAK,SAASnD,GAChB68B,EAAMj+B,KAAK,MAAMA,KAAK,MAAMY,SAAS,WAGhCQ,EAAK88B,UAMC,CAAC98B,EAAK88B,WAAWC,OAAO/8B,EAAKoG,SAL7B,CAAC,CACV42B,UAAW,IACXhwB,MAAOhO,EAAE,OAAQ,0BAMXkI,SAAQ,SAASozB,GACxBuC,EAAMj+B,KAAK,MAAM0I,OAAOm1B,GAAcnC,GACvC,IAEA6B,EAAK58B,QAAQ,OACd,IAAG,SAAS2b,GAGX,IAAIlO,EAFJ6vB,EAAMj+B,KAAK,MAAMA,KAAK,MAAMY,SAAS,UAIpCwN,EADoB,MAAjBkO,EAAMpZ,OACD9C,EAAE,OAAQ,uBAEVA,EAAE,OAAQ,kCAGnB69B,EAAMj+B,KAAK,MAAM0I,OAAOm1B,GAAc,CACrCO,UAAW,IACXhwB,MAAAA,KAGDmvB,EAAK58B,QAAQ,YAAa2b,EAC3B,IAxDA,CAyDD,IAEA/d,IAAEwO,UAAU4C,OAAM,SAASrC,GAC1B,IAAM+wB,EAAeJ,EAAMK,IAAIhxB,EAAMgE,QAAQrR,OAAS,EAClDs+B,EAAiBhB,EAAKe,IAAIhxB,EAAMgE,QAAQrR,OAAS,EAErDs9B,EAAKj/B,MAAK,WACLC,IAAEN,MAAM6L,GAAGwD,EAAMgE,UACpBitB,GAAgB,EAElB,IAEIF,GAAeE,IAInBN,EAAMr9B,SAAS,UACfq9B,EAAM//B,OACP,GApFA,CAqFD,ECpGAK,IAAAA,GAAAA,OAAc,WACb,OAAON,KAAKgC,OAAS,CACtB,ECFA1B,IAAAA,GAAAA,WAAkB,SAASigC,EAAUC,GACpC,OAAOxgC,KAAK0O,QAAO,WAClB,OAAOpO,IAAEN,MAAMuR,KAAKgvB,KAAcC,CACnC,GACD,ECRAlgC,IAAAA,OAAS,cAAe,CACvBQ,QAAS,CACRoV,MAAO,OACPC,OAAQ,OACRmH,aAAa,EACbzL,eAAe,EACfoF,cAAe,KACf7G,OAAO,GAERqwB,QAAO,WACN,IAAMr2B,EAAOpK,KAEbA,KAAK0gC,YAAc,CAClBC,QAAS3gC,KAAK+V,QAAQ,GAAGK,MAAMuqB,QAC/BzqB,MAAOlW,KAAK+V,QAAQ,GAAGK,MAAMF,MAC7BC,OAAQnW,KAAK+V,QAAQ,GAAGK,MAAMD,QAG/BnW,KAAK4gC,cAAgB5gC,KAAK+V,QAAQxE,KAAK,SACvCvR,KAAKc,QAAQqP,MAAQnQ,KAAKc,QAAQqP,OAASnQ,KAAK4gC,cAEhD5gC,KAAKqlB,QAAU/kB,IAAE,iCACfiR,KAAK,CAELsvB,UAAW,EACXC,KAAM,WAENC,aAAa/gC,KAAK+V,SACpB/V,KAAKqlB,QAAQ5a,OAAOzK,KAAK+V,QAAQqI,UACjCpe,KAAK+V,QAAQirB,WAAW,SAASr+B,SAAS,qBAAqBo9B,SAAS//B,KAAKqlB,SAGnC,IAAtCjb,EAAK2L,QAAQhU,KAAK,SAASC,QACfoI,EAAK2L,QAAQhU,KAAK,SAC1B2I,GAAG,WAAW,SAAS2E,GAC7B,GAAID,GAAiBC,IAChBjF,EAAK62B,WAAY,CACpB,IAAMC,EAAU92B,EAAK62B,WAAWl/B,KAAK,kBACjCm/B,IAAYA,EAAQ1qB,KAAK,aAC5B0qB,EAAQxvB,OAEV,CAEF,IAGD1R,KAAKqlB,QAAQ/J,IAAI,CAChBqlB,QAAS,eACT/W,SAAU,UAGX5pB,KAAKmhC,cAAgB,KAErB7gC,IAAEwO,UAAUpE,GAAG,iBAAiB,SAAS2E,GACxC,GACCA,EAAMgE,SAAWjJ,EAAKib,QAAQzb,IAAI,IACe,IAA9CQ,EAAKib,QAAQtjB,KAAKzB,IAAE+O,EAAMgE,SAASrR,OAKvC,OACmB,KAAlBqN,EAAM+xB,SACY,YAAf/xB,EAAMtM,MACNqH,EAAKtJ,QAAQ+Q,eAEhBxC,EAAMsE,2BACNvJ,EAAK0H,SACE,GAGc,KAAlBzC,EAAM+xB,SACT/xB,EAAMsE,2BACqB,OAAvBvJ,EAAK+2B,eACR/2B,EAAK+2B,gBACL9xB,EAAMuE,kBACC,GAEW,UAAfvE,EAAMtM,OACTsM,EAAMuE,kBACC,SATT,CAaD,IAEA5T,KAAKqhC,YAAYrhC,KAAKc,SACtBd,KAAKshC,gBACN,EACAC,MAAK,WACJvhC,KAAKqlB,QAAQpX,QACbjO,KAAKwhC,SAAS,OACf,EACAC,WAAU,SAAC/9B,EAAKG,GACf,IAAMuG,EAAOpK,KACb,OAAQ0D,GACR,IAAK,QACJ,GAAI1D,KAAK0hC,OACR1hC,KAAK0hC,OAAOpgC,KAAKuC,OACX,CACN,IAAM69B,EAASphC,IAAE,+BACbuD,EACA,SACJ7D,KAAK0hC,OAASA,EAAO/gB,UAAU3gB,KAAKqlB,QACrC,CACArlB,KAAK2hC,YACL,MACD,IAAK,UACJ,GAAI3hC,KAAKihC,WACRjhC,KAAKihC,WAAWziB,YACV,CACN,IAAMyiB,EAAa3gC,IAAE,2CACrBN,KAAKihC,WAAaA,EAAWlB,SAAS//B,KAAKqlB,QAC5C,CACqB,IAAjBxhB,EAAM7B,OACThC,KAAKihC,WAAWt+B,SAAS,aACE,IAAjBkB,EAAM7B,OAChBhC,KAAKihC,WAAWt+B,SAAS,cACE,IAAjBkB,EAAM7B,QAChBhC,KAAKihC,WAAWt+B,SAAS,gBAE1BrC,IAAAA,KAAOuD,GAAO,SAAS+b,EAAKhT,GAC3B,IAAMs0B,EAAU5gC,IAAE,YAAYgB,KAAKsL,EAAItL,MACnCsL,EAAImK,SACPmqB,EAAQv+B,SAASiK,EAAImK,SAElBnK,EAAIgF,gBACPsvB,EAAQv+B,SAAS,WACjByH,EAAKw3B,eAAiBV,GAEvB92B,EAAK62B,WAAWx2B,OAAOy2B,GACvBA,EAAQx2B,GAAG,iBAAiB,SAAS2E,GAChCD,GAAiBC,IACpBzC,EAAI8E,MAAMwR,MAAM9Y,EAAK2L,QAAQ,GAAIoN,UAEnC,GACD,IACAnjB,KAAKihC,WAAWl/B,KAAK,UACnB2I,GAAG,SAAS,SAAS2E,GACrBjF,EAAK62B,WAAWl/B,KAAK,UAAUU,YAAY,WAC3CnC,IAAEN,MAAM2C,SAAS,UAClB,IACD3C,KAAK2hC,YACL,MACD,IAAK,aACkBvhC,IAAlByD,EAAM6M,SACT1Q,KAAKihC,WAAWt+B,SAASkB,EAAM6M,SAEhC,MACD,IAAK,cACJ,GAAI7M,EAAO,CACV,IAAMg+B,EAAevhC,IAAE,gDACvBN,KAAKqlB,QAAQ/R,QAAQuuB,GACrBA,EAAan3B,GAAG,iBAAiB,SAAS2E,GACrCD,GAAiBC,KACpBjF,EAAKtJ,QAAQmW,eAAiB7M,EAAKtJ,QAAQmW,gBAC3C7M,EAAK0H,QAEP,GACD,MACC9R,KAAKqlB,QAAQtjB,KAAK,oBAAoBsU,SAEvC,MACD,IAAK,QACJrW,KAAKqlB,QAAQ/J,IAAI,QAASzX,GAC1B,MACD,IAAK,SACJ7D,KAAKqlB,QAAQ/J,IAAI,SAAUzX,GAC3B,MACD,IAAK,QACJ7D,KAAK8hC,QAAUj+B,EAIhBvD,IAAAA,OAAAA,UAAAA,WAAAA,MAAoCN,KAAMmjB,UAC3C,EACAke,YAAW,SAACvgC,GAEXR,IAAAA,OAAAA,UAAAA,YAAAA,MAAqCN,KAAMmjB,UAC5C,EACAwe,UAAS,WACR,IAAII,EAAa,EACb/hC,KAAK0hC,SACRK,GAAc/hC,KAAK0hC,OAAOM,aAAY,IAEnChiC,KAAKihC,aACRc,GAAc/hC,KAAKihC,WAAWe,aAAY,IAE3ChiC,KAAK+V,QAAQuF,IAAI,CAChBnF,OAAQ,eAAiB4rB,EAAa,OAExC,EACAT,eAAc,WACb,GAAKthC,KAAKc,QAAQsP,MAAlB,CAIA,IAAMhG,EAAOpK,KACTiiC,EAAa3hC,IAAE,YACO,IAAtB2hC,EAAWjgC,SAEdigC,EAAa3hC,IAAE,aAEhBN,KAAKkiC,QAAU5hC,IAAE,SACfqC,SAAS,iBACTo9B,SAASkC,GACXjiC,KAAKkiC,QAAQx3B,GAAG,uBAAuB,SAAS2E,GAC3CA,EAAMgE,SAAWjJ,EAAKib,QAAQzb,IAAI,IAAoD,IAA9CQ,EAAKib,QAAQtjB,KAAKzB,IAAE+O,EAAMgE,SAASrR,SAC9EqN,EAAMuE,iBACNvE,EAAMgF,kBAGR,GAjBA,CAkBD,EACA8tB,gBAAe,WACTniC,KAAKc,QAAQsP,OAIdpQ,KAAKkiC,UACRliC,KAAKkiC,QAAQ9S,IAAI,uBACjBpvB,KAAKkiC,QAAQ7rB,SACbrW,KAAKkiC,QAAU,KAEjB,EACAE,OAAM,WACL,OAAOpiC,KAAKqlB,OACb,EACAgd,iBAAgB,SAACtiC,GAChBC,KAAKmhC,cAAgBphC,CACtB,EACAuiC,mBAAkB,WACjBtiC,KAAKmhC,cAAgB,IACtB,EACArvB,MAAK,WACJ9R,KAAKmiC,kBACL,IAAM/3B,EAAOpK,KAEburB,YAAW,WACVnhB,EAAKo3B,SAAS,QAASp3B,EACxB,GAAG,KAEHA,EAAKib,QAAQhP,SACbrW,KAAKuiC,SACN,EACAA,QAAO,WACFviC,KAAK0hC,QACR1hC,KAAK0hC,OAAOrrB,SAETrW,KAAKihC,YACRjhC,KAAKihC,WAAW5qB,SAGbrW,KAAK4gC,eACR5gC,KAAK+V,QAAQxE,KAAK,QAASvR,KAAK4gC,eAEjC5gC,KAAK+V,QAAQtT,YAAY,qBACvB6Y,IAAItb,KAAK0gC,aAAatiB,SAAS2iB,aAAa/gC,KAAKqlB,SACnDrlB,KAAKqlB,QAAQhP,QACd,oBC9MKmsB,GAAW,CAChB/d,KAAI,SAACge,EAAM3hC,EAAS4hC,GAQnB,GANA1iC,KAAKyiC,KAAOA,EACZziC,KAAKc,QAAUR,IAAAA,OAAS,CAAC,EAAGN,KAAKc,QAASA,GAE1Cd,KAAK0iC,KAAOA,EAG+B,mBAAhC1iC,KAAKc,QAAQ+V,eAEvB,IADA,IAAM8mB,EAAOj3B,OAAOi3B,KAAK39B,KAAKyiC,MACrB/+B,EAAM,EAAGA,EAAMi6B,EAAK37B,OAAQ0B,IACA,iBAAzB1D,KAAKyiC,KAAK9E,EAAKj6B,MACzB1D,KAAKyiC,KAAK9E,EAAKj6B,IANL1D,KAMkBc,QAAQ+V,eAAe7W,KAAKyiC,KAAK9E,EAAKj6B,MAKrE,IAAMi/B,EAAQ3iC,KAAK4iC,OAAO5iC,KAAKyiC,MAC/B,OAAOniC,IAAEqiC,EACV,EAEAC,OAAM,SAACC,GACN,IAAM1/B,EAAkC,kBAA3BnD,KAAK0iC,KAAKnxB,KAAK,QAA8BvR,KAAK0iC,KAAK7hC,OAASb,KAAK0iC,KAAK94B,IAAI,GAAGk5B,UAC9F,IACC,OAAO3/B,EAAKkY,QAAQ,eACnB,SAASwP,EAAGrC,GACX,IAAMua,EAAIF,EAAEra,GACZ,MAAoB,iBAANua,GAA+B,iBAANA,EAAiBA,EAAIlY,CAC7D,GAIF,CAFE,MAAOne,GACRjM,GAAQC,MAAMgM,EAAG,QAASvJ,EAC3B,CACD,EACArC,QAAS,CACR+V,eAAgBnV,OAIlBpB,IAAAA,GAAAA,WAAkB,SAASmiC,EAAM3hC,GAEhC,GADA2hC,EAAOA,GAAQ,CAAC,EACZziC,KAAKgC,OAER,OADkB0E,OAAOrC,OAAOm+B,IACf/d,KAAKge,EAAM3hC,EAASd,KAEvC,kBC3DMgjC,GAAQ,SAAC7a,GAEd,IAAIpB,EAAOoB,EAAE9B,cASb,SAAS4c,EAAMF,EAAGla,EAAGL,GACpBxoB,KAAK+iC,EAAIA,EACT/iC,KAAK6oB,EAAIA,EACT7oB,KAAKwoB,EAAIA,CACV,CAUA,SAAS0a,EAAWC,EAAOC,EAAQC,GAClC,IAAIC,EAAU,GACdA,EAAQ14B,KAAKw4B,GAEb,IADA,IAAIG,EAXL,SAAkBJ,EAAOK,GACxB,IAAID,EAAO,IAAI9E,MAAM,GAIrB,OAHA8E,EAAK,IAAMC,EAAK,GAAGT,EAAIS,EAAK,GAAGT,GAAKI,EACpCI,EAAK,IAAMC,EAAK,GAAG3a,EAAI2a,EAAK,GAAG3a,GAAKsa,EACpCI,EAAK,IAAMC,EAAK,GAAGhb,EAAIgb,EAAK,GAAGhb,GAAK2a,EAC7BI,CACR,CAKYE,CAASN,EAAO,CAACC,EAAQC,IAC3B1qB,EAAI,EAAGA,EAAIwqB,EAAOxqB,IAAK,CAC/B,IAAIoqB,EAAI7iB,SAASkjB,EAAOL,EAAKQ,EAAK,GAAK5qB,GACnCkQ,EAAI3I,SAASkjB,EAAOva,EAAK0a,EAAK,GAAK5qB,GACnC6P,EAAItI,SAASkjB,EAAO5a,EAAK+a,EAAK,GAAK5qB,GACvC2qB,EAAQ14B,KAAK,IAAIq4B,EAAMF,EAAGla,EAAGL,GAC9B,CACA,OAAO8a,CACR,CA/B2C,OAAvCvc,EAAKtS,MAAM,0BACdsS,EAAO+X,KAAI/X,IAGZA,EAAOA,EAAK1L,QAAQ,aAAc,IA6BlC,IAAMqoB,EAAM,IAAIT,EAAM,IAAK,GAAI,KACzBU,EAAS,IAAIV,EAAM,IAAK,IAAK,IAC7BW,EAAO,IAAIX,EAAM,EAAG,IAAK,KAKzBY,EAAWX,EAFH,EAEqBQ,EAAKC,GAClCG,EAAWZ,EAHH,EAGqBS,EAAQC,GACrCG,EAAWb,EAJH,EAIqBU,EAAMF,GAuBzC,OArBqBG,EAAS3D,OAAO4D,GAAU5D,OAAO6D,GAGtD,SAAmBhd,EAAMid,GAKxB,IAJA,IAAIC,EAAW,EACXt/B,EAAS,GAGJgU,EAAI,EAAGA,EAAIoO,EAAK/kB,OAAQ2W,IAEhChU,EAAOiG,KAAKsV,SAAS6G,EAAKc,OAAOlP,GAAI,IAAM,IAG5C,IAAK,IAAID,KAAK/T,EACbs/B,GAAYt/B,EAAO+T,GAIpB,OAAOwH,SAASA,SAAS+jB,GAGUd,GAFpC,CAEoBe,CAAUnd,GAC/B,EAEAsY,OAAOx2B,UAAUm6B,MAAQ,WAGxB,OAFAviC,GAAQ0F,KAAK,6EAEN68B,GAAMhjC,KACd,EAEAM,IAAAA,GAAAA,iBAAwB,SAAS6jC,EAAM7iC,EAAMkZ,GAC5ClZ,EAAOA,GAAQ6iC,EAGf,IAAIC,EAAMpB,GAAMmB,GAChBnkC,KAAKsb,IAAI,mBAAoB,OAAS8oB,EAAIrB,EAAI,KAAOqB,EAAIvb,EAAI,KAAOub,EAAI5b,EAAI,KAG5E,IAAIrS,EAASnW,KAAKmW,UAAYqE,GAAQ,GAatC,GAZAxa,KAAKmW,OAAOA,GACZnW,KAAKkW,MAAMC,GAGXnW,KAAKsb,IAAI,QAAS,QAClBtb,KAAKsb,IAAI,cAAe,UACxBtb,KAAKsb,IAAI,aAAc,UAGvBtb,KAAKsb,IAAI,cAAenF,EAAS,MACjCnW,KAAKsb,IAAI,YAAuB,IAATnF,EAAiB,MAE3B,OAATguB,GAAiBA,EAAKniC,OAAQ,CACjC,IAAIqiC,EAAkB/iC,EAAK+Z,QAAQ,OAAQ,KAAK7G,OAAOhT,MAAM,IAAK,GAAG8iC,KAAI,SAACC,GAAI,OAAKA,EAAK,GAAGvhC,aAAa,IAAEvB,KAAK,IAC/GzB,KAAKa,KAAKwjC,EACX,CACD,EAEA/jC,IAAAA,GAAAA,sBAA6B,WAC5BN,KAAKsb,IAAI,mBAAoB,IAC7Btb,KAAKsb,IAAI,QAAS,IAClBtb,KAAKsb,IAAI,cAAe,IACxBtb,KAAKsb,IAAI,aAAc,IACvBtb,KAAKsb,IAAI,cAAe,IACxBtb,KAAKsb,IAAI,YAAa,IACtBtb,KAAKa,KAAK,IACVb,KAAKyC,YAAY,gBACjBzC,KAAKyC,YAAY,qBAClB,EC7JAnC,IAAEwO,UAAUpE,GAAG,YAAY,SAAS85B,EAAK18B,EAAKulB,IAChB,IAAzBA,EAASoX,cACZ38B,EAAI48B,iBAAiB,eAAgBtjB,MACrCtZ,EAAI48B,iBAAiB,iBAAkB,QAEzC,ICCApkC,IAAAA,GAAAA,YAAmB,SAASqkC,EAAOC,GAClC,OAAO5kC,KAAKK,MAAK,WAChB,GAAIL,KAAK6kC,kBACR7kC,KAAKiO,QACLjO,KAAK6kC,kBAAkBF,EAAOC,QACxB,GAAI5kC,KAAK8kC,gBAAiB,CAChC,IAAMC,EAAQ/kC,KAAK8kC,kBACnBC,EAAMC,UAAS,GACfD,EAAME,QAAQ,YAAaL,GAC3BG,EAAMG,UAAU,YAAaP,GAC7BI,EAAMI,QACP,CACD,GACD,ECRA7kC,IAAAA,GAAAA,OAAY,CACX8kC,aAAY,SAACrqB,GAGZ,IAAMhb,EAAW,CAAEm0B,GAAI,KAAMjH,KAAM,CAAC,GACpCltB,EAASm0B,GAAKnZ,EAGd,IA2BMzW,EAAS,SAASumB,EAAGrC,GAC1BA,EAAE5b,IAAIie,EAAEje,MACT,EAGMy4B,EAAW,SAASC,EAAUza,EAAGrC,GAElC8c,EAASz5B,GAAG,aACfvH,EAAOumB,EAAGrC,GACVA,EAAEnnB,OACFwpB,EAAE5qB,SAEFqE,EAAOkkB,EAAGqC,GACVrC,EAAEvoB,OACF4qB,EAAExpB,OAGJ,EAEA,OAAOrB,KAAKK,MAAK,WAEhB,IAAMwT,EAASvT,IAAEN,MACX0d,EAAYpd,IAAEuT,EAAO1Q,KAAK,eAG1BoiC,EApDc,SAASxvB,GAE7B,IAAM8K,EAAWvgB,IAAEyV,GAEbwvB,EAASjlC,IAAE,aAkBjB,OAdAilC,EAAOh0B,KAAK,CACXxO,KAAM,OACNwyB,MAAO1U,EAAStP,KAAK,SACrB6E,MAAOyK,EAAStP,KAAK,SACrBiJ,KAAMqG,EAAStP,KAAK,QACpBV,KAAMgQ,EAAStP,KAAK,QAAU,SAC9Bi0B,SAAU3kB,EAAStP,KAAK,YACxBk0B,aAAc,aAGsBrlC,IAAjCygB,EAAStP,KAAK,gBACjBg0B,EAAOh0B,KAAK,cAAesP,EAAStP,KAAK,gBAGnCg0B,CAER,CA4BgBG,CAAa7xB,GAC5B0xB,EAAOI,YAAY9xB,GAGf9T,EAASm0B,KACZn0B,EAASktB,KAAK3b,MAAQuC,EACtB9T,EAASktB,KAAKqY,SAAW5nB,EACzB3d,EAASktB,KAAK5S,MAAQkrB,GAGvB7nB,EAAUra,KAAK,SAAS,WACvBgiC,EAAS3nB,EAAW7J,EAAQ0xB,EAC7B,IAEA1xB,EAAOxQ,KAAK,SAAS,WACpBiB,EAAOuP,EAAQ0xB,EAChB,IAEAA,EAAOliC,KAAK,SAAS,WACpBiB,EAAOihC,EAAQ1xB,GAIfA,EAAOnR,QAAQ,QAEhB,IAIA6iC,EAAOliC,KAAK,QAAQ,WACnBwQ,EAAOnR,QAAQ,WAChB,IAEA2iC,EAAS3nB,EAAW7J,EAAQ0xB,GAI5BA,EAAOhvB,QAAQ,QAAQzC,QAAO,SAASpH,GAItC64B,EAAO/uB,KAAK,OAAQ,WACrB,IAEIzW,EAASm0B,IACZn0B,EAASm0B,GAAGn0B,EAASktB,KAGvB,GACD,ICxHD3sB,IAAAA,GAAAA,aAAAA,UAAAA,YAA0C,WAC9BN,KAAKuM,KAAKwJ,QAClB6vB,WAAW5lC,KAAK+V,QAAQ6vB,aAC5B,kBCnBI,GAAU,CAAC,EAEf,GAAQpS,kBAAoB,KAC5B,GAAQC,cAAgB,KAElB,GAAQC,OAAS,UAAc,KAAM,QAE3C,GAAQC,OAAS,KACjB,GAAQC,mBAAqB,KAEhB,KAAI,KAAS,IAKJ,MAAW,aAAiB,YALlD,gBCVI,GAAU,CAAC,EAEf,GAAQJ,kBAAoB,KAC5B,GAAQC,cAAgB,KAElB,GAAQC,OAAS,UAAc,KAAM,QAE3C,GAAQC,OAAS,KACjB,GAAQC,mBAAqB,KAEhB,KAAI,KAAS,IAKJ,MAAW,aAAiB,YCwBlDtzB,IAAAA,UAAY,CACXulC,SAAU,CACTjZ,QAAQ,KAWVtsB,IAAAA,WAAe,WACf,ECzBA0D,OAAO2e,iBAAiB,oBAAoB,WnF0BL,IAClCjS,EmF1BJ4mB,KnF4BuB,KAFnB5mB,EAAUpQ,IAAE,6BAEJ0B,QACX1B,IAAE,mBAAmBqC,SAAS,wBAG/BrC,IAAEwO,UAAU4C,OAAM,SAASrC,GAEtBhN,IACHqO,EAAUpQ,IAAE,6BAGboQ,EAAQrQ,MAAK,SAASyV,EAAOG,GAE5B,IAAM6vB,EAAexlC,IAAE2V,GAAQ9S,KAAK,qBAC9B4iC,EAAOzlC,IAAEwlC,GAKf,SAASE,IACRD,EAAK9iB,QAAuB,EAAfngB,GAAGkpB,WAAe,WAC9B+Z,EAAKrjC,QAAQ,IAAIpC,IAAAA,OAAQ,QAC1B,IACAylC,EAAKtjC,YAAY,UACjBnC,IAAE2V,GAAQxT,YAAY,SACvB,CAkBA,IAAKsjC,EAAKl6B,GAAG,aAGZ,GAAIvL,IAAE2V,GAAQpK,GAAGvL,IAAE+O,EAAMgE,QAAQkD,QAAQ,6BACpCwvB,EAAKl6B,GAAG,YACXm6B,IAlBH,WACCD,EAAKE,UAAyB,EAAfnjC,GAAGkpB,WAAe,WAChC+Z,EAAKrjC,QAAQ,IAAIpC,IAAAA,OAAQ,QAC1B,IACAylC,EAAKpjC,SAAS,UACdrC,IAAE2V,GAAQtT,SAAS,UACnB,IAAM2O,EAAQhR,IAAEwlC,EAAe,gBACV,IAAjBx0B,EAAMtP,QACTsP,EAAMrD,OAER,CAUGi4B,OAKK,CACN,IAAM3vB,EAAUjW,IAAE+O,EAAMgE,QAAQkD,QAAQuvB,GACpCC,EAAKl6B,GAAG,aAAe0K,EAAQ,KAAOwvB,EAAK,IAC9CC,GAEF,CAEF,GAED,ImFvFIhiC,OAAO+hB,QAAQC,UAClBhiB,OAAOmiC,WAAahmC,EAAEkD,KAAKP,GAAAA,KAAAA,QAAAA,YAA6BA,GAAAA,KAAAA,SAExDxC,IAAE0D,QAAQ0G,GAAG,aAAcvK,EAAEkD,KAAKP,GAAAA,KAAAA,QAAAA,YAA6BA,GAAAA,KAAAA,SAEjE,wGC7CIsjC,EAAgC,IAAIxqB,IAAI,cACxCyqB,EAAgC,IAAIzqB,IAAI,cACxC0qB,EAAgC,IAAI1qB,IAAI,cACxC2qB,EAAgC,IAAI3qB,IAAI,cACxC4qB,EAAgC,IAAI5qB,IAAI,cACxC6qB,EAA0B,IAA4B,KACtDC,EAAqC,IAAgCN,GACrEO,EAAqC,IAAgCN,GACrEO,EAAqC,IAAgCN,GACrEO,EAAqC,IAAgCN,GACrEO,EAAqC,IAAgCN,GAEzEC,EAAwB77B,KAAK,CAACm8B,EAAO3hC,GAAI,wjEAA0jEshC,EAAqC,4EAA8EA,EAAqC,oDAAsDA,EAAqC,uDAAyDC,EAAqC,iFAAmFC,EAAqC,+EAAiFC,EAAqC,sGAAwGC,EAAqC,6vEAA8vE,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,wDAAwD,MAAQ,GAAG,SAAW,0mCAA0mC,eAAiB,CAAC,mvLAAmvL,WAAa,MAElhY,6ECfIL,QAA0B,GAA4B,KAE1DA,EAAwB77B,KAAK,CAACm8B,EAAO3hC,GAAI,+jDAAgkD,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,wDAAwD,MAAQ,GAAG,SAAW,gpBAAgpB,eAAiB,CAAC,kzDAAkzD,WAAa,MAEnrI,4ECJIqhC,QAA0B,GAA4B,KAE1DA,EAAwB77B,KAAK,CAACm8B,EAAO3hC,GAAI,88HAAm9H,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,+CAA+C,MAAQ,GAAG,SAAW,okCAAokC,eAAiB,CAAC,uvGAA2vG,WAAa,MAE17Q,6ECJIqhC,QAA0B,GAA4B,KAE1DA,EAAwB77B,KAAK,CAACm8B,EAAO3hC,GAAI,+DAAgE,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,8DAA8D,MAAQ,GAAG,SAAW,mBAAmB,eAAiB,CAAC,0EAA0E,WAAa,MAEpV,6ECJIqhC,QAA0B,GAA4B,KAE1DA,EAAwB77B,KAAK,CAACm8B,EAAO3hC,GAAI,suGAAuuG,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,+CAA+C,MAAQ,GAAG,SAAW,2pBAA2pB,eAAiB,CAAC,8iFAA8iF,WAAa,MAExlN,6ECJIqhC,QAA0B,GAA4B,KAE1DA,EAAwB77B,KAAK,CAACm8B,EAAO3hC,GAAI,yzEAA0zE,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,2CAA2C,MAAQ,GAAG,SAAW,yhBAAyhB,eAAiB,CAAC,4zEAA4zE,WAAa,MAEnzK,6BCPA,IAAIye,EAAa,EAAQ,OAEzBkjB,EAAOC,SAAWnjB,EAAoB,SAAKA,GAAYvY,SAAS,CAAC,EAAI,SAASgtB,EAAU2O,EAAOC,EAAQC,EAAShkC,GAC5G,IAAIikC,EAAQC,EAAiB/O,EAAU+O,gBAAkB,SAASxqB,EAAQyqB,GACtE,GAAI5gC,OAAOmC,UAAUwuB,eAAe12B,KAAKkc,EAAQyqB,GAC/C,OAAOzqB,EAAOyqB,EAGpB,EAEF,OAAoa,OAA3ZF,EAASC,EAAeH,EAAQ,MAAMvmC,KAAe,MAAVsmC,EAAiBA,EAAU3O,EAAUiP,aAAe,CAAC,EAA+E,OAA1EH,EAAoB,MAAVH,EAAiBI,EAAeJ,EAAO,WAAaA,GAAmBI,EAAeD,EAAO,cAAgBA,EAAQ,CAAC,KAAO,KAAK,KAAO,CAAC,EAAE,GAAK9O,EAAUkP,QAAQ,EAAGrkC,EAAM,GAAG,QAAUm1B,EAAUkP,QAAQ,EAAGrkC,EAAM,GAAG,KAAOA,EAAK,IAAM,CAAC,MAAQ,CAAC,KAAO,EAAE,OAAS,GAAG,IAAM,CAAC,KAAO,GAAG,OAAS,OAAiBikC,EAAS,EACtb,EAAE,EAAI,SAAS9O,EAAU2O,EAAOC,EAAQC,EAAShkC,GAC7C,IAAIikC,EAAQC,EAAiB/O,EAAU+O,gBAAkB,SAASxqB,EAAQyqB,GACtE,GAAI5gC,OAAOmC,UAAUwuB,eAAe12B,KAAKkc,EAAQyqB,GAC/C,OAAOzqB,EAAOyqB,EAGpB,EAEF,OAAsZ,OAA7YF,EAASC,EAAeH,EAAQ,MAAMvmC,KAAe,MAAVsmC,EAAiBA,EAAU3O,EAAUiP,aAAe,CAAC,EAA+E,OAA1EH,EAAoB,MAAVH,EAAiBI,EAAeJ,EAAO,WAAaA,GAAmBI,EAAeD,EAAO,gBAAkBA,EAAQ,CAAC,KAAO,KAAK,KAAO,CAAC,EAAE,GAAK9O,EAAUkP,QAAQ,EAAGrkC,EAAM,GAAG,QAAUm1B,EAAUmP,KAAK,KAAOtkC,EAAK,IAAM,CAAC,MAAQ,CAAC,KAAO,EAAE,OAAS,GAAG,IAAM,CAAC,KAAO,EAAE,OAAS,OAAiBikC,EAAS,EACxa,EAAE,EAAI,SAAS9O,EAAU2O,EAAOC,EAAQC,EAAShkC,GAC7C,IAAIikC,EAAQM,EAAOpP,EAAUqP,OAAQC,EAAOtP,EAAUuP,iBAAkBR,EAAiB/O,EAAU+O,gBAAkB,SAASxqB,EAAQyqB,GAClI,GAAI5gC,OAAOmC,UAAUwuB,eAAe12B,KAAKkc,EAAQyqB,GAC/C,OAAOzqB,EAAOyqB,EAGpB,EAEF,MAAO,+CACHM,EAAOF,EAAmF,OAA1EN,EAAoB,MAAVH,EAAiBI,EAAeJ,EAAO,WAAaA,GAAmBI,EAAeD,EAAO,cAAgBA,EAASH,IAChJ,yBACAW,EAAOF,EAAmF,OAA1EN,EAAoB,MAAVH,EAAiBI,EAAeJ,EAAO,WAAaA,GAAmBI,EAAeD,EAAO,UAAYA,EAASH,IAC5I,oCACAW,EAAOF,EAAmF,OAA1EN,EAAoB,MAAVH,EAAiBI,EAAeJ,EAAO,WAAaA,GAAmBI,EAAeD,EAAO,UAAYA,EAASH,IAC5I,gBACAW,EAAOF,EAAmF,OAA1EN,EAAoB,MAAVH,EAAiBI,EAAeJ,EAAO,WAAaA,GAAmBI,EAAeD,EAAO,UAAYA,EAASH,IAC5I,gBACAW,EAAOF,EAAmF,OAA1EN,EAAoB,MAAVH,EAAiBI,EAAeJ,EAAO,WAAaA,GAAmBI,EAAeD,EAAO,UAAYA,EAASH,IAC5I,qCACN,EAAE,EAAI,SAAS3O,EAAU2O,EAAOC,EAAQC,EAAShkC,GAC7C,IAAIikC,EAAQM,EAAOpP,EAAUqP,OAAQC,EAAOtP,EAAUuP,iBAAkBR,EAAiB/O,EAAU+O,gBAAkB,SAASxqB,EAAQyqB,GAClI,GAAI5gC,OAAOmC,UAAUwuB,eAAe12B,KAAKkc,EAAQyqB,GAC/C,OAAOzqB,EAAOyqB,EAGpB,EAEF,MAAO,iBACHM,EAAOF,EAAmF,OAA1EN,EAAoB,MAAVH,EAAiBI,EAAeJ,EAAO,WAAaA,GAAmBI,EAAeD,EAAO,UAAYA,EAASH,IAC5I,oCACAW,EAAOF,EAAmF,OAA1EN,EAAoB,MAAVH,EAAiBI,EAAeJ,EAAO,WAAaA,GAAmBI,EAAeD,EAAO,UAAYA,EAASH,IAC5I,gBACAW,EAAOF,EAAmF,OAA1EN,EAAoB,MAAVH,EAAiBI,EAAeJ,EAAO,WAAaA,GAAmBI,EAAeD,EAAO,UAAYA,EAASH,IAC5I,gBACAW,EAAOF,EAAmF,OAA1EN,EAAoB,MAAVH,EAAiBI,EAAeJ,EAAO,WAAaA,GAAmBI,EAAeD,EAAO,UAAYA,EAASH,IAC5I,yBACN,EAAE,EAAI,SAAS3O,EAAU2O,EAAOC,EAAQC,EAAShkC,GAC7C,IAAIikC,EAAQC,EAAiB/O,EAAU+O,gBAAkB,SAASxqB,EAAQyqB,GACtE,GAAI5gC,OAAOmC,UAAUwuB,eAAe12B,KAAKkc,EAAQyqB,GAC/C,OAAOzqB,EAAOyqB,EAGpB,EAEF,OAAsa,OAA7ZF,EAASC,EAAeH,EAAQ,MAAMvmC,KAAe,MAAVsmC,EAAiBA,EAAU3O,EAAUiP,aAAe,CAAC,EAA+E,OAA1EH,EAAoB,MAAVH,EAAiBI,EAAeJ,EAAO,WAAaA,GAAmBI,EAAeD,EAAO,cAAgBA,EAAQ,CAAC,KAAO,KAAK,KAAO,CAAC,EAAE,GAAK9O,EAAUkP,QAAQ,EAAGrkC,EAAM,GAAG,QAAUm1B,EAAUkP,QAAQ,GAAIrkC,EAAM,GAAG,KAAOA,EAAK,IAAM,CAAC,MAAQ,CAAC,KAAO,GAAG,OAAS,GAAG,IAAM,CAAC,KAAO,GAAG,OAAS,OAAiBikC,EAAS,EACxb,EAAE,EAAI,SAAS9O,EAAU2O,EAAOC,EAAQC,EAAShkC,GAC7C,IAAIikC,EAAQC,EAAiB/O,EAAU+O,gBAAkB,SAASxqB,EAAQyqB,GACtE,GAAI5gC,OAAOmC,UAAUwuB,eAAe12B,KAAKkc,EAAQyqB,GAC/C,OAAOzqB,EAAOyqB,EAGpB,EAEF,OAAwZ,OAA/YF,EAASC,EAAeH,EAAQ,MAAMvmC,KAAe,MAAVsmC,EAAiBA,EAAU3O,EAAUiP,aAAe,CAAC,EAA+E,OAA1EH,EAAoB,MAAVH,EAAiBI,EAAeJ,EAAO,WAAaA,GAAmBI,EAAeD,EAAO,gBAAkBA,EAAQ,CAAC,KAAO,KAAK,KAAO,CAAC,EAAE,GAAK9O,EAAUkP,QAAQ,EAAGrkC,EAAM,GAAG,QAAUm1B,EAAUmP,KAAK,KAAOtkC,EAAK,IAAM,CAAC,MAAQ,CAAC,KAAO,GAAG,OAAS,GAAG,IAAM,CAAC,KAAO,GAAG,OAAS,OAAiBikC,EAAS,EAC1a,EAAE,EAAI,SAAS9O,EAAU2O,EAAOC,EAAQC,EAAShkC,GAC7C,IAAIikC,EAAQC,EAAiB/O,EAAU+O,gBAAkB,SAASxqB,EAAQyqB,GACtE,GAAI5gC,OAAOmC,UAAUwuB,eAAe12B,KAAKkc,EAAQyqB,GAC/C,OAAOzqB,EAAOyqB,EAGpB,EAEF,MAAO,+CACHhP,EAAUuP,iBAAiBvP,EAAUqP,OAAmF,OAA1EP,EAAoB,MAAVH,EAAiBI,EAAeJ,EAAO,WAAaA,GAAmBI,EAAeD,EAAO,cAAgBA,EAASH,IAC9K,sDACN,EAAE,GAAK,SAAS3O,EAAU2O,EAAOC,EAAQC,EAAShkC,GAC9C,MAAO,kCACX,EAAE,GAAK,SAASm1B,EAAU2O,EAAOC,EAAQC,EAAShkC,GAC9C,IAAIikC,EAAQM,EAAiB,MAAVT,EAAiBA,EAAU3O,EAAUiP,aAAe,CAAC,EAAIF,EAAiB/O,EAAU+O,gBAAkB,SAASxqB,EAAQyqB,GACtI,GAAI5gC,OAAOmC,UAAUwuB,eAAe12B,KAAKkc,EAAQyqB,GAC/C,OAAOzqB,EAAOyqB,EAGpB,EAEF,OAAwW,OAA/VF,EAASC,EAAeH,EAAQ,MAAMvmC,KAAK+mC,EAAmF,OAA1EN,EAAoB,MAAVH,EAAiBI,EAAeJ,EAAO,WAAaA,GAAmBI,EAAeD,EAAO,gBAAkBA,EAAQ,CAAC,KAAO,KAAK,KAAO,CAAC,EAAE,GAAK9O,EAAUkP,QAAQ,GAAIrkC,EAAM,GAAG,QAAUm1B,EAAUmP,KAAK,KAAOtkC,EAAK,IAAM,CAAC,MAAQ,CAAC,KAAO,GAAG,OAAS,GAAG,IAAM,CAAC,KAAO,GAAG,OAAS,OAAiBikC,EAAS,KACtB,OAA5VA,EAASC,EAAeH,EAAQ,MAAMvmC,KAAK+mC,EAAmF,OAA1EN,EAAoB,MAAVH,EAAiBI,EAAeJ,EAAO,WAAaA,GAAmBI,EAAeD,EAAO,aAAeA,EAAQ,CAAC,KAAO,KAAK,KAAO,CAAC,EAAE,GAAK9O,EAAUkP,QAAQ,GAAIrkC,EAAM,GAAG,QAAUm1B,EAAUmP,KAAK,KAAOtkC,EAAK,IAAM,CAAC,MAAQ,CAAC,KAAO,GAAG,OAAS,GAAG,IAAM,CAAC,KAAO,GAAG,OAAS,OAAiBikC,EAAS,GACpX,EAAE,GAAK,SAAS9O,EAAU2O,EAAOC,EAAQC,EAAShkC,GAC9C,IAAIikC,EAAQM,EAAOpP,EAAUqP,OAAQC,EAAOtP,EAAUuP,iBAAkBR,EAAiB/O,EAAU+O,gBAAkB,SAASxqB,EAAQyqB,GAClI,GAAI5gC,OAAOmC,UAAUwuB,eAAe12B,KAAKkc,EAAQyqB,GAC/C,OAAOzqB,EAAOyqB,EAGpB,EAEF,MAAO,qDACHM,EAAOF,EAAmF,OAA1EN,EAAoB,MAAVH,EAAiBI,EAAeJ,EAAO,WAAaA,GAAmBI,EAAeD,EAAO,cAAgBA,EAASH,IAChJ,oCACAW,EAAOF,EAAmF,OAA1EN,EAAoB,MAAVH,EAAiBI,EAAeJ,EAAO,WAAaA,GAAmBI,EAAeD,EAAO,YAAcA,EAASH,IAC9I,2CACAW,EAAOF,EAAmF,OAA1EN,EAAoB,MAAVH,EAAiBI,EAAeJ,EAAO,WAAaA,GAAmBI,EAAeD,EAAO,eAAiBA,EAASH,IACjJ,4CACAW,EAAOF,EAAmF,OAA1EN,EAAoB,MAAVH,EAAiBI,EAAeJ,EAAO,WAAaA,GAAmBI,EAAeD,EAAO,kBAAoBA,EAASH,IACpJ,oBACN,EAAE,GAAK,SAAS3O,EAAU2O,EAAOC,EAAQC,EAAShkC,GAC9C,IAAIikC,EAAQM,EAAOpP,EAAUqP,OAAQC,EAAOtP,EAAUuP,iBAAkBR,EAAiB/O,EAAU+O,gBAAkB,SAASxqB,EAAQyqB,GAClI,GAAI5gC,OAAOmC,UAAUwuB,eAAe12B,KAAKkc,EAAQyqB,GAC/C,OAAOzqB,EAAOyqB,EAGpB,EAEF,MAAO,mCACHM,EAAOF,EAAsJ,OAA7IN,EAAqF,OAA1EA,EAAoB,MAAVH,EAAiBI,EAAeJ,EAAO,WAAaA,GAAmBI,EAAeD,EAAO,aAAeA,GAAmBC,EAAeD,EAAO,aAAeA,EAASH,IAClN,YACAW,EAAOF,EAAsJ,OAA7IN,EAAqF,OAA1EA,EAAoB,MAAVH,EAAiBI,EAAeJ,EAAO,WAAaA,GAAmBI,EAAeD,EAAO,aAAeA,GAAmBC,EAAeD,EAAO,SAAWA,EAASH,IAC9M,uBACAW,EAAOF,EAAsJ,OAA7IN,EAAqF,OAA1EA,EAAoB,MAAVH,EAAiBI,EAAeJ,EAAO,WAAaA,GAAmBI,EAAeD,EAAO,aAAeA,GAAmBC,EAAeD,EAAO,QAAUA,EAASH,IAC7M,UACAW,EAAOF,EAAsJ,OAA7IN,EAAqF,OAA1EA,EAAoB,MAAVH,EAAiBI,EAAeJ,EAAO,WAAaA,GAAmBI,EAAeD,EAAO,aAAeA,GAAmBC,EAAeD,EAAO,SAAWA,EAASH,IAC9M,gBACN,EAAE,GAAK,SAAS3O,EAAU2O,EAAOC,EAAQC,EAAShkC,GAC9C,IAAIikC,EAAQC,EAAiB/O,EAAU+O,gBAAkB,SAASxqB,EAAQyqB,GACtE,GAAI5gC,OAAOmC,UAAUwuB,eAAe12B,KAAKkc,EAAQyqB,GAC/C,OAAOzqB,EAAOyqB,EAGpB,EAEF,OAAsa,OAA7ZF,EAASC,EAAeH,EAAQ,MAAMvmC,KAAe,MAAVsmC,EAAiBA,EAAU3O,EAAUiP,aAAe,CAAC,EAA+E,OAA1EH,EAAoB,MAAVH,EAAiBI,EAAeJ,EAAO,WAAaA,GAAmBI,EAAeD,EAAO,aAAeA,EAAQ,CAAC,KAAO,KAAK,KAAO,CAAC,EAAE,GAAK9O,EAAUkP,QAAQ,GAAIrkC,EAAM,GAAG,QAAUm1B,EAAUkP,QAAQ,GAAIrkC,EAAM,GAAG,KAAOA,EAAK,IAAM,CAAC,MAAQ,CAAC,KAAO,GAAG,OAAS,GAAG,IAAM,CAAC,KAAO,GAAG,OAAS,OAAiBikC,EAAS,EACxb,EAAE,GAAK,SAAS9O,EAAU2O,EAAOC,EAAQC,EAAShkC,GAC9C,IAAIikC,EAAQM,EAAOpP,EAAUqP,OAAQC,EAAOtP,EAAUuP,iBAAkBR,EAAiB/O,EAAU+O,gBAAkB,SAASxqB,EAAQyqB,GAClI,GAAI5gC,OAAOmC,UAAUwuB,eAAe12B,KAAKkc,EAAQyqB,GAC/C,OAAOzqB,EAAOyqB,EAGpB,EAEF,MAAO,2BACHM,EAAOF,EAAsJ,OAA7IN,EAAqF,OAA1EA,EAAoB,MAAVH,EAAiBI,EAAeJ,EAAO,WAAaA,GAAmBI,EAAeD,EAAO,aAAeA,GAAmBC,EAAeD,EAAO,aAAeA,EAASH,IAClN,kCACAW,EAAOF,EAAmF,OAA1EN,EAAoB,MAAVH,EAAiBI,EAAeJ,EAAO,WAAaA,GAAmBI,EAAeD,EAAO,YAAcA,EAASH,IAC9I,yCACAW,EAAOF,EAAmF,OAA1EN,EAAoB,MAAVH,EAAiBI,EAAeJ,EAAO,WAAaA,GAAmBI,EAAeD,EAAO,eAAiBA,EAASH,IACjJ,0CACAW,EAAOF,EAAmF,OAA1EN,EAAoB,MAAVH,EAAiBI,EAAeJ,EAAO,WAAaA,GAAmBI,EAAeD,EAAO,kBAAoBA,EAASH,IACpJ,mDACAW,EAAOF,EAAsJ,OAA7IN,EAAqF,OAA1EA,EAAoB,MAAVH,EAAiBI,EAAeJ,EAAO,WAAaA,GAAmBI,EAAeD,EAAO,aAAeA,GAAmBC,EAAeD,EAAO,aAAeA,EAASH,IAClN,YACAW,EAAOF,EAAsJ,OAA7IN,EAAqF,OAA1EA,EAAoB,MAAVH,EAAiBI,EAAeJ,EAAO,WAAaA,GAAmBI,EAAeD,EAAO,aAAeA,GAAmBC,EAAeD,EAAO,SAAWA,EAASH,IAC9M,uBACAW,EAAOF,EAAsJ,OAA7IN,EAAqF,OAA1EA,EAAoB,MAAVH,EAAiBI,EAAeJ,EAAO,WAAaA,GAAmBI,EAAeD,EAAO,aAAeA,GAAmBC,EAAeD,EAAO,QAAUA,EAASH,IAC7M,UACAW,EAAOF,EAAsJ,OAA7IN,EAAqF,OAA1EA,EAAoB,MAAVH,EAAiBI,EAAeJ,EAAO,WAAaA,GAAmBI,EAAeD,EAAO,aAAeA,GAAmBC,EAAeD,EAAO,SAAWA,EAASH,IAC9M,cACN,EAAE,GAAK,SAAS3O,EAAU2O,EAAOC,EAAQC,EAAShkC,GAC9C,IAAIikC,EAAQM,EAAOpP,EAAUqP,OAAQC,EAAOtP,EAAUuP,iBAAkBR,EAAiB/O,EAAU+O,gBAAkB,SAASxqB,EAAQyqB,GAClI,GAAI5gC,OAAOmC,UAAUwuB,eAAe12B,KAAKkc,EAAQyqB,GAC/C,OAAOzqB,EAAOyqB,EAGpB,EAEF,MAAO,oDACHM,EAAOF,EAAmF,OAA1EN,EAAoB,MAAVH,EAAiBI,EAAeJ,EAAO,WAAaA,GAAmBI,EAAeD,EAAO,YAAcA,EAASH,IAC9I,yCACAW,EAAOF,EAAmF,OAA1EN,EAAoB,MAAVH,EAAiBI,EAAeJ,EAAO,WAAaA,GAAmBI,EAAeD,EAAO,eAAiBA,EAASH,IACjJ,0CACAW,EAAOF,EAAmF,OAA1EN,EAAoB,MAAVH,EAAiBI,EAAeJ,EAAO,WAAaA,GAAmBI,EAAeD,EAAO,kBAAoBA,EAASH,IACpJ,oBACN,EAAE,GAAK,SAAS3O,EAAU2O,EAAOC,EAAQC,EAAShkC,GAC9C,IAAIikC,EAAQM,EAAOpP,EAAUqP,OAAQC,EAAOtP,EAAUuP,iBAAkBR,EAAiB/O,EAAU+O,gBAAkB,SAASxqB,EAAQyqB,GAClI,GAAI5gC,OAAOmC,UAAUwuB,eAAe12B,KAAKkc,EAAQyqB,GAC/C,OAAOzqB,EAAOyqB,EAGpB,EAEF,MAAO,kCACHM,EAAOF,EAAyJ,OAAhJN,EAAqF,OAA1EA,EAAoB,MAAVH,EAAiBI,EAAeJ,EAAO,WAAaA,GAAmBI,EAAeD,EAAO,gBAAkBA,GAAmBC,EAAeD,EAAO,aAAeA,EAASH,IACrN,YACAW,EAAOF,EAAyJ,OAAhJN,EAAqF,OAA1EA,EAAoB,MAAVH,EAAiBI,EAAeJ,EAAO,WAAaA,GAAmBI,EAAeD,EAAO,gBAAkBA,GAAmBC,EAAeD,EAAO,SAAWA,EAASH,IACjN,mBACAW,EAAOF,EAAyJ,OAAhJN,EAAqF,OAA1EA,EAAoB,MAAVH,EAAiBI,EAAeJ,EAAO,WAAaA,GAAmBI,EAAeD,EAAO,gBAAkBA,GAAmBC,EAAeD,EAAO,QAAUA,EAASH,IAChN,UACAW,EAAOF,EAAyJ,OAAhJN,EAAqF,OAA1EA,EAAoB,MAAVH,EAAiBI,EAAeJ,EAAO,WAAaA,GAAmBI,EAAeD,EAAO,gBAAkBA,GAAmBC,EAAeD,EAAO,SAAWA,EAASH,IACjN,YACN,EAAE,GAAK,SAAS3O,EAAU2O,EAAOC,EAAQC,EAAShkC,GAC9C,IAAIikC,EAAQC,EAAiB/O,EAAU+O,gBAAkB,SAASxqB,EAAQyqB,GACtE,GAAI5gC,OAAOmC,UAAUwuB,eAAe12B,KAAKkc,EAAQyqB,GAC/C,OAAOzqB,EAAOyqB,EAGpB,EAEF,MAAO,qGAC+Y,OAAhZF,EAASC,EAAeH,EAAQ,QAAQvmC,KAAe,MAAVsmC,EAAiBA,EAAU3O,EAAUiP,aAAe,CAAC,EAA+E,OAA1EH,EAAoB,MAAVH,EAAiBI,EAAeJ,EAAO,WAAaA,GAAmBI,EAAeD,EAAO,WAAaA,EAAQ,CAAC,KAAO,OAAO,KAAO,CAAC,EAAE,GAAK9O,EAAUkP,QAAQ,GAAIrkC,EAAM,GAAG,QAAUm1B,EAAUmP,KAAK,KAAOtkC,EAAK,IAAM,CAAC,MAAQ,CAAC,KAAO,GAAG,OAAS,GAAG,IAAM,CAAC,KAAO,GAAG,OAAS,QAAkBikC,EAAS,IACla,uBACN,EAAE,GAAK,SAAS9O,EAAU2O,EAAOC,EAAQC,EAAShkC,GAC9C,IAAI2kC,EAAQJ,EAAiB,MAAVT,EAAiBA,EAAU3O,EAAUiP,aAAe,CAAC,EAAIK,EAAOtP,EAAUyP,MAAMC,cAAeC,EAAO,WAAYC,EAAO5P,EAAUuP,iBAAkBR,EAAiB/O,EAAU+O,gBAAkB,SAASxqB,EAAQyqB,GAClO,GAAI5gC,OAAOmC,UAAUwuB,eAAe12B,KAAKkc,EAAQyqB,GAC/C,OAAOzqB,EAAOyqB,EAGpB,EAEF,MAAO,gCACHY,SAASJ,EAA6H,OAAnHA,EAAST,EAAeH,EAAQ,eAA2B,MAAVD,EAAiBI,EAAeJ,EAAO,aAAeA,IAAmBa,EAASF,KAA2BK,EAASH,EAAOnnC,KAAK+mC,EAAO,CAAC,KAAO,YAAY,KAAO,CAAC,EAAE,KAAOvkC,EAAK,IAAM,CAAC,MAAQ,CAAC,KAAO,GAAG,OAAS,IAAI,IAAM,CAAC,KAAO,GAAG,OAAS,OAAS2kC,GACjU,2BACAI,SAASJ,EAAmH,OAAzGA,EAAST,EAAeH,EAAQ,UAAsB,MAAVD,EAAiBI,EAAeJ,EAAO,QAAUA,IAAmBa,EAASF,KAA2BK,EAASH,EAAOnnC,KAAK+mC,EAAO,CAAC,KAAO,OAAO,KAAO,CAAC,EAAE,KAAOvkC,EAAK,IAAM,CAAC,MAAQ,CAAC,KAAO,GAAG,OAAS,IAAI,IAAM,CAAC,KAAO,GAAG,OAAS,OAAS2kC,GAClT,8BACAI,SAASJ,EAAqH,OAA3GA,EAAST,EAAeH,EAAQ,WAAuB,MAAVD,EAAiBI,EAAeJ,EAAO,SAAWA,IAAmBa,EAASF,KAA2BK,EAASH,EAAOnnC,KAAK+mC,EAAO,CAAC,KAAO,QAAQ,KAAO,CAAC,EAAE,KAAOvkC,EAAK,IAAM,CAAC,MAAQ,CAAC,KAAO,GAAG,OAAS,IAAI,IAAM,CAAC,KAAO,GAAG,OAAS,OAAS2kC,GACrT,sCACN,EAAE,SAAW,CAAC,EAAE,YAAY,KAAO,SAASxP,EAAU2O,EAAOC,EAAQC,EAAShkC,GAC1E,IAAIikC,EAAQM,EAAiB,MAAVT,EAAiBA,EAAU3O,EAAUiP,aAAe,CAAC,EAAIF,EAAiB/O,EAAU+O,gBAAkB,SAASxqB,EAAQyqB,GACtI,GAAI5gC,OAAOmC,UAAUwuB,eAAe12B,KAAKkc,EAAQyqB,GAC/C,OAAOzqB,EAAOyqB,EAGpB,EAEF,OAA+W,OAAtWF,EAASC,EAAeH,EAAQ,MAAMvmC,KAAK+mC,EAAmF,OAA1EN,EAAoB,MAAVH,EAAiBI,EAAeJ,EAAO,WAAaA,GAAmBI,EAAeD,EAAO,UAAYA,EAAQ,CAAC,KAAO,KAAK,KAAO,CAAC,EAAE,GAAK9O,EAAUkP,QAAQ,EAAGrkC,EAAM,GAAG,QAAUm1B,EAAUkP,QAAQ,EAAGrkC,EAAM,GAAG,KAAOA,EAAK,IAAM,CAAC,MAAQ,CAAC,KAAO,EAAE,OAAS,GAAG,IAAM,CAAC,KAAO,GAAG,OAAS,OAAiBikC,EAAS,KACZ,OAA7WA,EAASC,EAAeH,EAAQ,MAAMvmC,KAAK+mC,EAAmF,OAA1EN,EAAoB,MAAVH,EAAiBI,EAAeJ,EAAO,WAAaA,GAAmBI,EAAeD,EAAO,cAAgBA,EAAQ,CAAC,KAAO,KAAK,KAAO,CAAC,EAAE,GAAK9O,EAAUkP,QAAQ,GAAIrkC,EAAM,GAAG,QAAUm1B,EAAUkP,QAAQ,GAAIrkC,EAAM,GAAG,KAAOA,EAAK,IAAM,CAAC,MAAQ,CAAC,KAAO,GAAG,OAAS,GAAG,IAAM,CAAC,KAAO,GAAG,OAAS,OAAiBikC,EAAS,KAC7B,OAAhWA,EAASC,EAAeH,EAAQ,MAAMvmC,KAAK+mC,EAAmF,OAA1EN,EAAoB,MAAVH,EAAiBI,EAAeJ,EAAO,WAAaA,GAAmBI,EAAeD,EAAO,iBAAmBA,EAAQ,CAAC,KAAO,KAAK,KAAO,CAAC,EAAE,GAAK9O,EAAUkP,QAAQ,GAAIrkC,EAAM,GAAG,QAAUm1B,EAAUmP,KAAK,KAAOtkC,EAAK,IAAM,CAAC,MAAQ,CAAC,KAAO,GAAG,OAAS,GAAG,IAAM,CAAC,KAAO,GAAG,OAAS,OAAiBikC,EAAS,KACf,OAAjWA,EAASC,EAAeH,EAAQ,MAAMvmC,KAAK+mC,EAAmF,OAA1EN,EAAoB,MAAVH,EAAiBI,EAAeJ,EAAO,WAAaA,GAAmBI,EAAeD,EAAO,kBAAoBA,EAAQ,CAAC,KAAO,KAAK,KAAO,CAAC,EAAE,GAAK9O,EAAUkP,QAAQ,GAAIrkC,EAAM,GAAG,QAAUm1B,EAAUmP,KAAK,KAAOtkC,EAAK,IAAM,CAAC,MAAQ,CAAC,KAAO,GAAG,OAAS,GAAG,IAAM,CAAC,KAAO,GAAG,OAAS,OAAiBikC,EAAS,GACzX,EAAE,SAAU,2BC3OZ,IAAIvjB,EAAa,EAAQ,OAEzBkjB,EAAOC,SAAWnjB,EAAoB,SAAKA,GAAYvY,SAAS,CAAC,SAAW,CAAC,EAAE,YAAY,KAAO,SAASgtB,EAAU2O,EAAOC,EAAQC,EAAShkC,GACzI,IAAI2kC,EAAQT,EAAiB/O,EAAU+O,gBAAkB,SAASxqB,EAAQyqB,GACtE,GAAI5gC,OAAOmC,UAAUwuB,eAAe12B,KAAKkc,EAAQyqB,GAC/C,OAAOzqB,EAAOyqB,EAGpB,EAEF,MAAO,wEACHhP,EAAUuP,iBAAgO,mBAA7MC,EAA2I,OAAjIA,EAAST,EAAeH,EAAQ,sBAAkC,MAAVD,EAAiBI,EAAeJ,EAAO,oBAAsBA,IAAmBa,EAASxP,EAAUyP,MAAMC,eAA+CF,EAAOnnC,KAAe,MAAVsmC,EAAiBA,EAAU3O,EAAUiP,aAAe,CAAC,EAAG,CAAC,KAAO,mBAAmB,KAAO,CAAC,EAAE,KAAOpkC,EAAK,IAAM,CAAC,MAAQ,CAAC,KAAO,EAAE,OAAS,GAAG,IAAM,CAAC,KAAO,EAAE,OAAS,OAAS2kC,GACnb,iBACN,EAAE,SAAU,2BCbZ,IAAIjkB,EAAa,EAAQ,OAEzBkjB,EAAOC,SAAWnjB,EAAoB,SAAKA,GAAYvY,SAAS,CAAC,EAAI,SAASgtB,EAAU2O,EAAOC,EAAQC,EAAShkC,GAC5G,IAAI2kC,EAAQT,EAAiB/O,EAAU+O,gBAAkB,SAASxqB,EAAQyqB,GACtE,GAAI5gC,OAAOmC,UAAUwuB,eAAe12B,KAAKkc,EAAQyqB,GAC/C,OAAOzqB,EAAOyqB,EAGpB,EAEF,MAAO,wEACHhP,EAAUuP,iBAAsO,mBAAnNC,EAAiJ,OAAvIA,EAAST,EAAeH,EAAQ,yBAAqC,MAAVD,EAAiBI,EAAeJ,EAAO,uBAAyBA,IAAmBa,EAASxP,EAAUyP,MAAMC,eAA+CF,EAAOnnC,KAAe,MAAVsmC,EAAiBA,EAAU3O,EAAUiP,aAAe,CAAC,EAAG,CAAC,KAAO,sBAAsB,KAAO,CAAC,EAAE,KAAOpkC,EAAK,IAAM,CAAC,MAAQ,CAAC,KAAO,EAAE,OAAS,GAAG,IAAM,CAAC,KAAO,EAAE,OAAS,OAAS2kC,GAC5b,iBACN,EAAE,EAAI,SAASxP,EAAU2O,EAAOC,EAAQC,EAAShkC,GAC7C,IAAI2kC,EAAQJ,EAAiB,MAAVT,EAAiBA,EAAU3O,EAAUiP,aAAe,CAAC,EAAIK,EAAOtP,EAAUyP,MAAMC,cAAeC,EAAO,WAAYC,EAAO5P,EAAUuP,iBAAkBR,EAAiB/O,EAAU+O,gBAAkB,SAASxqB,EAAQyqB,GAClO,GAAI5gC,OAAOmC,UAAUwuB,eAAe12B,KAAKkc,EAAQyqB,GAC/C,OAAOzqB,EAAOyqB,EAGpB,EAEF,MAAO,gCACHY,SAASJ,EAAuI,OAA7HA,EAAST,EAAeH,EAAQ,oBAAgC,MAAVD,EAAiBI,EAAeJ,EAAO,kBAAoBA,IAAmBa,EAASF,KAA2BK,EAASH,EAAOnnC,KAAK+mC,EAAO,CAAC,KAAO,iBAAiB,KAAO,CAAC,EAAE,KAAOvkC,EAAK,IAAM,CAAC,MAAQ,CAAC,KAAO,EAAE,OAAS,IAAI,IAAM,CAAC,KAAO,EAAE,OAAS,OAAS2kC,GAC9U,KACAI,SAASJ,EAAiJ,OAAvIA,EAAST,EAAeH,EAAQ,yBAAqC,MAAVD,EAAiBI,EAAeJ,EAAO,uBAAyBA,IAAmBa,EAASF,KAA2BK,EAASH,EAAOnnC,KAAK+mC,EAAO,CAAC,KAAO,sBAAsB,KAAO,CAAC,EAAE,KAAOvkC,EAAK,IAAM,CAAC,MAAQ,CAAC,KAAO,EAAE,OAAS,IAAI,IAAM,CAAC,KAAO,EAAE,OAAS,OAAS2kC,GAC7V,cACN,EAAE,EAAI,SAASxP,EAAU2O,EAAOC,EAAQC,EAAShkC,GAC7C,IAAIikC,EAAQC,EAAiB/O,EAAU+O,gBAAkB,SAASxqB,EAAQyqB,GACtE,GAAI5gC,OAAOmC,UAAUwuB,eAAe12B,KAAKkc,EAAQyqB,GAC/C,OAAOzqB,EAAOyqB,EAGpB,EAEF,OAAwV,OAA/UF,EAASC,EAAeH,EAAQ,MAAMvmC,KAAe,MAAVsmC,EAAiBA,EAAU3O,EAAUiP,aAAe,CAAC,EAAc,MAAVN,EAAiBI,EAAeJ,EAAO,iBAAmBA,EAAQ,CAAC,KAAO,KAAK,KAAO,CAAC,EAAE,GAAK3O,EAAUkP,QAAQ,EAAGrkC,EAAM,GAAG,QAAUm1B,EAAUmP,KAAK,KAAOtkC,EAAK,IAAM,CAAC,MAAQ,CAAC,KAAO,GAAG,OAAS,GAAG,IAAM,CAAC,KAAO,GAAG,OAAS,OAAiBikC,EAAS,EAC1W,EAAE,EAAI,SAAS9O,EAAU2O,EAAOC,EAAQC,EAAShkC,GAC7C,IAAI2kC,EAAQJ,EAAiB,MAAVT,EAAiBA,EAAU3O,EAAUiP,aAAe,CAAC,EAAIK,EAAOtP,EAAUyP,MAAMC,cAAeC,EAAO,WAAYC,EAAO5P,EAAUuP,iBAAkBR,EAAiB/O,EAAU+O,gBAAkB,SAASxqB,EAAQyqB,GAClO,GAAI5gC,OAAOmC,UAAUwuB,eAAe12B,KAAKkc,EAAQyqB,GAC/C,OAAOzqB,EAAOyqB,EAGpB,EAEF,MAAO,gCACHY,SAASJ,EAA+I,OAArIA,EAAST,EAAeH,EAAQ,wBAAoC,MAAVD,EAAiBI,EAAeJ,EAAO,sBAAwBA,IAAmBa,EAASF,KAA2BK,EAASH,EAAOnnC,KAAK+mC,EAAO,CAAC,KAAO,qBAAqB,KAAO,CAAC,EAAE,KAAOvkC,EAAK,IAAM,CAAC,MAAQ,CAAC,KAAO,GAAG,OAAS,IAAI,IAAM,CAAC,KAAO,GAAG,OAAS,OAAS2kC,GAC5V,KACAI,SAASJ,EAAiJ,OAAvIA,EAAST,EAAeH,EAAQ,yBAAqC,MAAVD,EAAiBI,EAAeJ,EAAO,uBAAyBA,IAAmBa,EAASF,KAA2BK,EAASH,EAAOnnC,KAAK+mC,EAAO,CAAC,KAAO,sBAAsB,KAAO,CAAC,EAAE,KAAOvkC,EAAK,IAAM,CAAC,MAAQ,CAAC,KAAO,GAAG,OAAS,IAAI,IAAM,CAAC,KAAO,GAAG,OAAS,OAAS2kC,GAC/V,cACN,EAAE,SAAW,CAAC,EAAE,YAAY,KAAO,SAASxP,EAAU2O,EAAOC,EAAQC,EAAShkC,GAC1E,IAAIikC,EAAQM,EAAiB,MAAVT,EAAiBA,EAAU3O,EAAUiP,aAAe,CAAC,EAAIF,EAAiB/O,EAAU+O,gBAAkB,SAASxqB,EAAQyqB,GACtI,GAAI5gC,OAAOmC,UAAUwuB,eAAe12B,KAAKkc,EAAQyqB,GAC/C,OAAOzqB,EAAOyqB,EAGpB,EAEF,OAAyW,OAAhWF,EAASC,EAAeH,EAAQ,UAAUvmC,KAAK+mC,EAAoF,OAA3EN,EAAoB,MAAVH,EAAiBI,EAAeJ,EAAO,YAAcA,GAAmBI,EAAeD,EAAO,UAAYA,EAAQ,CAAC,KAAO,SAAS,KAAO,CAAC,EAAE,GAAK9O,EAAUkP,QAAQ,EAAGrkC,EAAM,GAAG,QAAUm1B,EAAUmP,KAAK,KAAOtkC,EAAK,IAAM,CAAC,MAAQ,CAAC,KAAO,EAAE,OAAS,GAAG,IAAM,CAAC,KAAO,EAAE,OAAS,QAAkBikC,EAAS,IACrX,4CACmT,OAAjTA,EAASC,EAAeH,EAAQ,MAAMvmC,KAAK+mC,EAAkB,MAAVT,EAAiBI,EAAeJ,EAAO,sBAAwBA,EAAQ,CAAC,KAAO,KAAK,KAAO,CAAC,EAAE,GAAK3O,EAAUkP,QAAQ,EAAGrkC,EAAM,GAAG,QAAUm1B,EAAUkP,QAAQ,EAAGrkC,EAAM,GAAG,KAAOA,EAAK,IAAM,CAAC,MAAQ,CAAC,KAAO,EAAE,OAAS,GAAG,IAAM,CAAC,KAAO,GAAG,OAAS,OAAiBikC,EAAS,GACzU,EAAE,SAAU,2BC3DZ,IAAIvjB,EAAa,EAAQ,OAEzBkjB,EAAOC,SAAWnjB,EAAoB,SAAKA,GAAYvY,SAAS,CAAC,SAAW,CAAC,EAAE,YAAY,KAAO,SAASgtB,EAAU2O,EAAOC,EAAQC,EAAShkC,GACzI,IAAI2kC,EAAQT,EAAiB/O,EAAU+O,gBAAkB,SAASxqB,EAAQyqB,GACtE,GAAI5gC,OAAOmC,UAAUwuB,eAAe12B,KAAKkc,EAAQyqB,GAC/C,OAAOzqB,EAAOyqB,EAGpB,EAEF,MAAO,yEACHhP,EAAUuP,iBAAsN,mBAAnMC,EAAiI,OAAvHA,EAAST,EAAeH,EAAQ,iBAA6B,MAAVD,EAAiBI,EAAeJ,EAAO,eAAiBA,IAAmBa,EAASxP,EAAUyP,MAAMC,eAA+CF,EAAOnnC,KAAe,MAAVsmC,EAAiBA,EAAU3O,EAAUiP,aAAe,CAAC,EAAG,CAAC,KAAO,cAAc,KAAO,CAAC,EAAE,KAAOpkC,EAAK,IAAM,CAAC,MAAQ,CAAC,KAAO,EAAE,OAAS,GAAG,IAAM,CAAC,KAAO,EAAE,OAAS,OAAS2kC,GACpa,iBACN,EAAE,SAAU,2BCbZ,IAAIjkB,EAAa,EAAQ,OAEzBkjB,EAAOC,SAAWnjB,EAAoB,SAAKA,GAAYvY,SAAS,CAAC,SAAW,CAAC,EAAE,YAAY,KAAO,SAASgtB,EAAU2O,EAAOC,EAAQC,EAAShkC,GACzI,IAAI2kC,EAAQJ,EAAiB,MAAVT,EAAiBA,EAAU3O,EAAUiP,aAAe,CAAC,EAAIK,EAAOtP,EAAUyP,MAAMC,cAAeC,EAAO,WAAYC,EAAO5P,EAAUuP,iBAAkBR,EAAiB/O,EAAU+O,gBAAkB,SAASxqB,EAAQyqB,GAClO,GAAI5gC,OAAOmC,UAAUwuB,eAAe12B,KAAKkc,EAAQyqB,GAC/C,OAAOzqB,EAAOyqB,EAGpB,EAEF,MAAO,4DACHY,SAASJ,EAA+I,OAArIA,EAAST,EAAeH,EAAQ,wBAAoC,MAAVD,EAAiBI,EAAeJ,EAAO,sBAAwBA,IAAmBa,EAASF,KAA2BK,EAASH,EAAOnnC,KAAK+mC,EAAO,CAAC,KAAO,qBAAqB,KAAO,CAAC,EAAE,KAAOvkC,EAAK,IAAM,CAAC,MAAQ,CAAC,KAAO,EAAE,OAAS,IAAI,IAAM,CAAC,KAAO,EAAE,OAAS,OAAS2kC,GAC1V,wEACAI,SAASJ,EAA+I,OAArIA,EAAST,EAAeH,EAAQ,wBAAoC,MAAVD,EAAiBI,EAAeJ,EAAO,sBAAwBA,IAAmBa,EAASF,KAA2BK,EAASH,EAAOnnC,KAAK+mC,EAAO,CAAC,KAAO,qBAAqB,KAAO,CAAC,EAAE,KAAOvkC,EAAK,IAAM,CAAC,MAAQ,CAAC,KAAO,EAAE,OAAS,IAAI,IAAM,CAAC,KAAO,EAAE,OAAS,OAAS2kC,GAC1V,YACAI,SAASJ,EAA+H,OAArHA,EAAST,EAAeH,EAAQ,gBAA4B,MAAVD,EAAiBI,EAAeJ,EAAO,cAAgBA,IAAmBa,EAASF,KAA2BK,EAASH,EAAOnnC,KAAK+mC,EAAO,CAAC,KAAO,aAAa,KAAO,CAAC,EAAE,KAAOvkC,EAAK,IAAM,CAAC,MAAQ,CAAC,KAAO,EAAE,OAAS,IAAI,IAAM,CAAC,KAAO,EAAE,OAAS,QAAU2kC,GACnU,qCACN,EAAE,SAAU,2BCjBZ,IAAIjkB,EAAa,EAAQ,OAEzBkjB,EAAOC,SAAWnjB,EAAoB,SAAKA,GAAYvY,SAAS,CAAC,EAAI,SAASgtB,EAAU2O,EAAOC,EAAQC,EAAShkC,GAC5G,IAAI2kC,EAAQT,EAAiB/O,EAAU+O,gBAAkB,SAASxqB,EAAQyqB,GACtE,GAAI5gC,OAAOmC,UAAUwuB,eAAe12B,KAAKkc,EAAQyqB,GAC/C,OAAOzqB,EAAOyqB,EAGpB,EAEF,MAAO,aACHhP,EAAUuP,iBAAwM,mBAArLC,EAAmH,OAAzGA,EAAST,EAAeH,EAAQ,UAAsB,MAAVD,EAAiBI,EAAeJ,EAAO,QAAUA,IAAmBa,EAASxP,EAAUyP,MAAMC,eAA+CF,EAAOnnC,KAAe,MAAVsmC,EAAiBA,EAAU3O,EAAUiP,aAAe,CAAC,EAAG,CAAC,KAAO,OAAO,KAAO,CAAC,EAAE,KAAOpkC,EAAK,IAAM,CAAC,MAAQ,CAAC,KAAO,EAAE,OAAS,IAAI,IAAM,CAAC,KAAO,EAAE,OAAS,OAAS2kC,GAChZ,IACN,EAAE,SAAW,CAAC,EAAE,YAAY,KAAO,SAASxP,EAAU2O,EAAOC,EAAQC,EAAShkC,GAC1E,IAAIikC,EAAQU,EAAQJ,EAAiB,MAAVT,EAAiBA,EAAU3O,EAAUiP,aAAe,CAAC,EAAIK,EAAOtP,EAAUyP,MAAMC,cAAeC,EAAO,WAAYC,EAAO5P,EAAUuP,iBAAkBR,EAAiB/O,EAAU+O,gBAAkB,SAASxqB,EAAQyqB,GAC1O,GAAI5gC,OAAOmC,UAAUwuB,eAAe12B,KAAKkc,EAAQyqB,GAC/C,OAAOzqB,EAAOyqB,EAGpB,EAEF,MAAO,oBACHY,SAASJ,EAA6H,OAAnHA,EAAST,EAAeH,EAAQ,eAA2B,MAAVD,EAAiBI,EAAeJ,EAAO,aAAeA,IAAmBa,EAASF,KAA2BK,EAASH,EAAOnnC,KAAK+mC,EAAO,CAAC,KAAO,YAAY,KAAO,CAAC,EAAE,KAAOvkC,EAAK,IAAM,CAAC,MAAQ,CAAC,KAAO,EAAE,OAAS,IAAI,IAAM,CAAC,KAAO,EAAE,OAAS,OAAS2kC,GAC/T,YACsR,OAApRV,EAASC,EAAeH,EAAQ,MAAMvmC,KAAK+mC,EAAkB,MAAVT,EAAiBI,EAAeJ,EAAO,QAAUA,EAAQ,CAAC,KAAO,KAAK,KAAO,CAAC,EAAE,GAAK3O,EAAUkP,QAAQ,EAAGrkC,EAAM,GAAG,QAAUm1B,EAAUmP,KAAK,KAAOtkC,EAAK,IAAM,CAAC,MAAQ,CAAC,KAAO,EAAE,OAAS,GAAG,IAAM,CAAC,KAAO,EAAE,OAAS,QAAkBikC,EAAS,IACtS,eACAc,SAASJ,EAAqH,OAA3GA,EAAST,EAAeH,EAAQ,WAAuB,MAAVD,EAAiBI,EAAeJ,EAAO,SAAWA,IAAmBa,EAASF,KAA2BK,EAASH,EAAOnnC,KAAK+mC,EAAO,CAAC,KAAO,QAAQ,KAAO,CAAC,EAAE,KAAOvkC,EAAK,IAAM,CAAC,MAAQ,CAAC,KAAO,EAAE,OAAS,GAAG,IAAM,CAAC,KAAO,EAAE,OAAS,OAAS2kC,GAClT,0BACN,EAAE,SAAU,2BC5BZ,IAAIxD,EAAM,CACT,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,KACR,UAAW,KACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,KACR,UAAW,MACX,aAAc,MACd,UAAW,KACX,OAAQ,MACR,UAAW,MACX,OAAQ,KACR,UAAW,KACX,OAAQ,MACR,UAAW,MACX,OAAQ,KACR,UAAW,KACX,OAAQ,KACR,UAAW,KACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,OAAQ,KACR,UAAW,KACX,OAAQ,MACR,UAAW,MACX,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,OAAQ,KACR,UAAW,KACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,QAAS,MACT,WAAY,MACZ,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,OAAQ,KACR,UAAW,KACX,OAAQ,MACR,UAAW,MACX,OAAQ,KACR,UAAW,KACX,OAAQ,MACR,UAAW,MACX,aAAc,MACd,gBAAiB,MACjB,aAAc,MACd,gBAAiB,MACjB,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,UAAW,MACX,aAAc,MACd,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,aAAc,MACd,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,KACR,UAAW,KACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,KACR,UAAW,KACX,OAAQ,MACR,UAAW,MACX,OAAQ,KACR,UAAW,MACX,aAAc,MACd,UAAW,KACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,aAAc,MACd,UAAW,MACX,OAAQ,MACR,UAAW,MACX,WAAY,MACZ,cAAe,MACf,UAAW,MACX,aAAc,MACd,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,aAAc,MACd,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,YAAa,MACb,eAAgB,MAChB,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,QAAS,MACT,WAAY,MACZ,OAAQ,MACR,UAAW,MACX,OAAQ,KACR,UAAW,KACX,OAAQ,MACR,UAAW,MACX,UAAW,MACX,aAAc,MACd,QAAS,MACT,WAAY,MACZ,OAAQ,MACR,UAAW,MACX,QAAS,MACT,WAAY,MACZ,QAAS,MACT,aAAc,MACd,gBAAiB,MACjB,WAAY,MACZ,UAAW,KACX,aAAc,KACd,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,KACR,YAAa,MACb,eAAgB,MAChB,UAAW,KACX,OAAQ,MACR,UAAW,MACX,aAAc,MACd,gBAAiB,MACjB,OAAQ,MACR,UAAW,MACX,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,OAIf,SAAS6D,EAAeC,GACvB,IAAIhjC,EAAKijC,EAAsBD,GAC/B,OAAOE,EAAoBljC,EAC5B,CACA,SAASijC,EAAsBD,GAC9B,IAAIE,EAAoBzF,EAAEyB,EAAK8D,GAAM,CACpC,IAAI17B,EAAI,IAAIlE,MAAM,uBAAyB4/B,EAAM,KAEjD,MADA17B,EAAE67B,KAAO,mBACH77B,CACP,CACA,OAAO43B,EAAI8D,EACZ,CACAD,EAAexK,KAAO,WACrB,OAAOj3B,OAAOi3B,KAAK2G,EACpB,EACA6D,EAAe15B,QAAU45B,EACzBtB,EAAOC,QAAUmB,EACjBA,EAAe/iC,GAAK,6giBClShBojC,EAA2B,CAAC,EAGhC,SAASF,EAAoBG,GAE5B,IAAIC,EAAeF,EAAyBC,GAC5C,QAAqBroC,IAAjBsoC,EACH,OAAOA,EAAa1B,QAGrB,IAAID,EAASyB,EAAyBC,GAAY,CACjDrjC,GAAIqjC,EACJE,QAAQ,EACR3B,QAAS,CAAC,GAUX,OANA4B,EAAoBH,GAAU9nC,KAAKomC,EAAOC,QAASD,EAAQA,EAAOC,QAASsB,GAG3EvB,EAAO4B,QAAS,EAGT5B,EAAOC,OACf,CAGAsB,EAAoBxgB,EAAI8gB,ErG5BpBnpC,EAAW,GACf6oC,EAAoBO,EAAI,SAASlkC,EAAQmkC,EAAU5U,EAAI6U,GACtD,IAAGD,EAAH,CAMA,IAAIE,EAAeC,IACnB,IAAStwB,EAAI,EAAGA,EAAIlZ,EAASuC,OAAQ2W,IAAK,CACrCmwB,EAAWrpC,EAASkZ,GAAG,GACvBub,EAAKz0B,EAASkZ,GAAG,GACjBowB,EAAWtpC,EAASkZ,GAAG,GAE3B,IAJA,IAGIuwB,GAAY,EACPxwB,EAAI,EAAGA,EAAIowB,EAAS9mC,OAAQ0W,MACpB,EAAXqwB,GAAsBC,GAAgBD,IAAariC,OAAOi3B,KAAK2K,EAAoBO,GAAGM,OAAM,SAASzlC,GAAO,OAAO4kC,EAAoBO,EAAEnlC,GAAKolC,EAASpwB,GAAK,IAChKowB,EAASM,OAAO1wB,IAAK,IAErBwwB,GAAY,EACTH,EAAWC,IAAcA,EAAeD,IAG7C,GAAGG,EAAW,CACbzpC,EAAS2pC,OAAOzwB,IAAK,GACrB,IAAIoqB,EAAI7O,SACE9zB,IAAN2iC,IAAiBp+B,EAASo+B,EAC/B,CACD,CACA,OAAOp+B,CArBP,CAJCokC,EAAWA,GAAY,EACvB,IAAI,IAAIpwB,EAAIlZ,EAASuC,OAAQ2W,EAAI,GAAKlZ,EAASkZ,EAAI,GAAG,GAAKowB,EAAUpwB,IAAKlZ,EAASkZ,GAAKlZ,EAASkZ,EAAI,GACrGlZ,EAASkZ,GAAK,CAACmwB,EAAU5U,EAAI6U,EAwB/B,EsG5BAT,EAAoB1rB,EAAI,SAASmqB,GAChC,IAAIsC,EAAStC,GAAUA,EAAOuC,WAC7B,WAAa,OAAOvC,EAAgB,OAAG,EACvC,WAAa,OAAOA,CAAQ,EAE7B,OADAuB,EAAoBiB,EAAEF,EAAQ,CAAExe,EAAGwe,IAC5BA,CACR,ECNAf,EAAoBiB,EAAI,SAASvC,EAASwC,GACzC,IAAI,IAAI9lC,KAAO8lC,EACXlB,EAAoBzF,EAAE2G,EAAY9lC,KAAS4kC,EAAoBzF,EAAEmE,EAAStjC,IAC5EgD,OAAOi4B,eAAeqI,EAAStjC,EAAK,CAAE+lC,YAAY,EAAM7/B,IAAK4/B,EAAW9lC,IAG3E,ECPA4kC,EAAoBzf,EAAI,WACvB,GAA0B,iBAAf6gB,WAAyB,OAAOA,WAC3C,IACC,OAAO1pC,MAAQ,IAAI2pC,SAAS,cAAb,EAGhB,CAFE,MAAOj9B,GACR,GAAsB,iBAAX1I,OAAqB,OAAOA,MACxC,CACA,CAPuB,GCAxBskC,EAAoBzF,EAAI,SAAS+G,EAAKpzB,GAAQ,OAAO9P,OAAOmC,UAAUwuB,eAAe12B,KAAKipC,EAAKpzB,EAAO,ECCtG8xB,EAAoBvF,EAAI,SAASiE,GACX,oBAAX6C,QAA0BA,OAAOC,aAC1CpjC,OAAOi4B,eAAeqI,EAAS6C,OAAOC,YAAa,CAAEjmC,MAAO,WAE7D6C,OAAOi4B,eAAeqI,EAAS,aAAc,CAAEnjC,OAAO,GACvD,ECNAykC,EAAoByB,IAAM,SAAShD,GAGlC,OAFAA,EAAOrmB,MAAQ,GACVqmB,EAAOjqB,WAAUiqB,EAAOjqB,SAAW,IACjCiqB,CACR,ECJAuB,EAAoB5vB,EAAI,gBCAxB4vB,EAAoB9f,EAAI1Z,SAASk7B,SAAW5/B,KAAK6b,SAASlhB,KAK1D,IAAIklC,EAAkB,CACrB,KAAM,GAaP3B,EAAoBO,EAAEnwB,EAAI,SAASwxB,GAAW,OAAoC,IAA7BD,EAAgBC,EAAgB,EAGrF,IAAIC,EAAuB,SAASC,EAA4BjnC,GAC/D,IAKIslC,EAAUyB,EALVpB,EAAW3lC,EAAK,GAChBknC,EAAclnC,EAAK,GACnBmnC,EAAUnnC,EAAK,GAGIwV,EAAI,EAC3B,GAAGmwB,EAASyB,MAAK,SAASnlC,GAAM,OAA+B,IAAxB6kC,EAAgB7kC,EAAW,IAAI,CACrE,IAAIqjC,KAAY4B,EACZ/B,EAAoBzF,EAAEwH,EAAa5B,KACrCH,EAAoBxgB,EAAE2gB,GAAY4B,EAAY5B,IAGhD,GAAG6B,EAAS,IAAI3lC,EAAS2lC,EAAQhC,EAClC,CAEA,IADG8B,GAA4BA,EAA2BjnC,GACrDwV,EAAImwB,EAAS9mC,OAAQ2W,IACzBuxB,EAAUpB,EAASnwB,GAChB2vB,EAAoBzF,EAAEoH,EAAiBC,IAAYD,EAAgBC,IACrED,EAAgBC,GAAS,KAE1BD,EAAgBC,GAAW,EAE5B,OAAO5B,EAAoBO,EAAElkC,EAC9B,EAEI6lC,EAAqBpgC,KAA4B,sBAAIA,KAA4B,uBAAK,GAC1FogC,EAAmBngC,QAAQ8/B,EAAqB9mC,KAAK,KAAM,IAC3DmnC,EAAmB5/B,KAAOu/B,EAAqB9mC,KAAK,KAAMmnC,EAAmB5/B,KAAKvH,KAAKmnC,OClDvFlC,EAAoBmC,QAAKrqC,ECGzB,IAAIsqC,EAAsBpC,EAAoBO,OAAEzoC,EAAW,CAAC,OAAO,WAAa,OAAOkoC,EAAoB,MAAQ,IACnHoC,EAAsBpC,EAAoBO,EAAE6B","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/core/src/OC/legacy-loader.js","webpack:///nextcloud/core/src/OC/notification.js","webpack:///nextcloud/core/src/OC/xhr-error.js","webpack:///nextcloud/core/src/OC/apps.js","webpack:///nextcloud/core/src/OCP/appconfig.js","webpack:///nextcloud/core/src/OC/appconfig.js","webpack:///nextcloud/core/src/OC/appswebroots.js","webpack:///nextcloud/core/src/OC/backbone-webdav.js","webpack:///nextcloud/core/src/OC/backbone.js","webpack:///nextcloud/core/src/OC/config.js","webpack:///nextcloud/core/src/OC/contactsmenu.js","webpack:///nextcloud/core/src/OC/currentuser.js","webpack:///nextcloud/core/src/OCA/search.js","webpack:///nextcloud/core/src/OCA/index.js","webpack:///nextcloud/core/src/Util/a11y.js","webpack:///nextcloud/core/src/OC/dialogs.js","webpack:///nextcloud/core/src/OC/requesttoken.js","webpack:///nextcloud/core/src/OC/eventsource.js","webpack:///nextcloud/core/src/OC/menu.js","webpack:///nextcloud/core/src/OC/constants.js","webpack:///nextcloud/core/src/OC/admin.js","webpack:///nextcloud/core/src/OC/l10n.js","webpack:///nextcloud/core/src/OC/msg.js","webpack:///nextcloud/core/src/OC/password-confirmation.js","webpack:///nextcloud/core/src/OC/theme.js","webpack:///nextcloud/core/src/OC/util-history.js","webpack:///nextcloud/core/src/OC/util.js","webpack:///nextcloud/core/src/OC/debug.js","webpack:///nextcloud/core/src/OC/webroot.js","webpack:///nextcloud/core/src/OC/get_set.js","webpack:///nextcloud/core/src/OC/index.js","webpack:///nextcloud/core/src/OC/appsettings.js","webpack:///nextcloud/core/src/OC/capabilities.js","webpack:///nextcloud/core/src/OC/host.js","webpack:///nextcloud/core/src/OC/query-string.js","webpack:///nextcloud/core/src/OC/plugins.js","webpack:///nextcloud/core/src/OC/navigation.js","webpack:///nextcloud/core/src/OC/routing.js","webpack:///nextcloud/core/src/session-heartbeat.js","webpack:///nextcloud/core/src/views/ContactsMenu.vue?vue&type=script&lang=js&","webpack:///nextcloud/core/src/views/ContactsMenu.vue","webpack://nextcloud/./core/src/views/ContactsMenu.vue?41d6","webpack://nextcloud/./core/src/views/ContactsMenu.vue?1de5","webpack://nextcloud/./core/src/views/ContactsMenu.vue?f71b","webpack:///nextcloud/core/src/components/AppMenu.vue","webpack:///nextcloud/core/src/components/AppMenu.vue?vue&type=script&lang=js&","webpack://nextcloud/./core/src/components/AppMenu.vue?8eda","webpack://nextcloud/./core/src/components/AppMenu.vue?95cf","webpack://nextcloud/./core/src/components/AppMenu.vue?d0fd","webpack:///nextcloud/core/src/components/UserMenu/UserMenuEntry.vue","webpack:///nextcloud/core/src/components/UserMenu/UserMenuEntry.vue?vue&type=script&lang=js&","webpack://nextcloud/./core/src/components/UserMenu/UserMenuEntry.vue?6a6f","webpack://nextcloud/./core/src/components/UserMenu/UserMenuEntry.vue?a480","webpack://nextcloud/./core/src/components/UserMenu/UserMenuEntry.vue?4de1","webpack:///nextcloud/core/src/views/UserMenu.vue","webpack:///nextcloud/core/src/views/UserMenu.vue?vue&type=script&lang=js&","webpack://nextcloud/./core/src/views/UserMenu.vue?3de1","webpack://nextcloud/./core/src/views/UserMenu.vue?5d6d","webpack://nextcloud/./core/src/views/UserMenu.vue?4b20","webpack:///nextcloud/core/src/init.js","webpack:///nextcloud/core/src/Polyfill/tooltip.js","webpack:///nextcloud/core/src/components/UserMenu.js","webpack:///nextcloud/core/src/components/MainMenu.js","webpack:///nextcloud/core/src/components/ContactsMenu.js","webpack:///nextcloud/core/src/OCP/comments.js","webpack:///nextcloud/core/src/OCP/whatsnew.js","webpack:///nextcloud/core/src/OCP/accessibility.js","webpack:///nextcloud/core/src/globals.js","webpack:///nextcloud/core/src/OCP/collaboration.js","webpack:///nextcloud/core/src/OCP/loader.js","webpack:///nextcloud/core/src/OCP/toast.js","webpack:///nextcloud/core/src/OCP/index.js","webpack:///nextcloud/core/src/jquery/avatar.js","webpack:///nextcloud/core/src/jquery/contactsmenu.js","webpack:///nextcloud/core/src/jquery/exists.js","webpack:///nextcloud/core/src/jquery/filterattr.js","webpack:///nextcloud/core/src/jquery/ocdialog.js","webpack:///nextcloud/core/src/jquery/octemplate.js","webpack:///nextcloud/core/src/jquery/placeholder.js","webpack:///nextcloud/core/src/jquery/requesttoken.js","webpack:///nextcloud/core/src/jquery/selectrange.js","webpack:///nextcloud/core/src/jquery/showpassword.js","webpack:///nextcloud/core/src/jquery/ui-fixes.js","webpack://nextcloud/./core/src/jquery/css/jquery-ui-fixes.scss?a4c2","webpack://nextcloud/./core/src/jquery/css/jquery.ocdialog.scss?5718","webpack:///nextcloud/core/src/jquery/index.js","webpack:///nextcloud/core/src/main.js","webpack:///nextcloud/core/src/jquery/css/jquery-ui-fixes.scss","webpack:///nextcloud/core/src/jquery/css/jquery.ocdialog.scss","webpack:///nextcloud/core/src/components/AppMenu.vue?vue&type=style&index=0&id=44a795f6&prod&lang=scss&scoped=true&","webpack:///nextcloud/core/src/components/UserMenu/UserMenuEntry.vue?vue&type=style&index=0&id=6e59d13c&prod&lang=scss&scoped=true&","webpack:///nextcloud/core/src/views/ContactsMenu.vue?vue&type=style&index=0&id=1563c388&prod&lang=scss&scoped=true&","webpack:///nextcloud/core/src/views/UserMenu.vue?vue&type=style&index=0&id=6a818bbc&prod&lang=scss&scoped=true&","webpack:///nextcloud/core/src/OC/contactsmenu/contact.handlebars","webpack:///nextcloud/core/src/OC/contactsmenu/error.handlebars","webpack:///nextcloud/core/src/OC/contactsmenu/list.handlebars","webpack:///nextcloud/core/src/OC/contactsmenu/loading.handlebars","webpack:///nextcloud/core/src/OC/contactsmenu/menu.handlebars","webpack:///nextcloud/core/src/jquery/contactsmenu/jquery_entry.handlebars","webpack:///nextcloud/node_modules/moment/locale|sync|/^\\.\\/.*$","webpack:///nextcloud/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/compat get default export","webpack:///nextcloud/webpack/runtime/define property getters","webpack:///nextcloud/webpack/runtime/global","webpack:///nextcloud/webpack/runtime/hasOwnProperty shorthand","webpack:///nextcloud/webpack/runtime/make namespace object","webpack:///nextcloud/webpack/runtime/node module decorator","webpack:///nextcloud/webpack/runtime/runtimeId","webpack:///nextcloud/webpack/runtime/jsonp chunk loading","webpack:///nextcloud/webpack/runtime/nonce","webpack:///nextcloud/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = function(result, chunkIds, fn, priority) {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every(function(key) { return __webpack_require__.O[key](chunkIds[j]); })) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n/** @typedef {import('jquery')} jQuery */\nimport $ from 'jquery'\nimport { generateFilePath } from '@nextcloud/router'\n\nconst loadedScripts = {}\nconst loadedStyles = []\n\n/**\n * Load a script for the server and load it. If the script is already loaded,\n * the event handler will be called directly\n *\n * @param {string} app the app id to which the script belongs\n * @param {string} script the filename of the script\n * @param {Function} ready event handler to be called when the script is loaded\n * @return {jQuery.Deferred}\n * @deprecated 16.0.0 Use OCP.Loader.loadScript\n */\nexport const addScript = (app, script, ready) => {\n\tconsole.warn('OC.addScript is deprecated, use OCP.Loader.loadScript instead')\n\n\tlet deferred\n\tconst path = generateFilePath(app, 'js', script + '.js')\n\tif (!loadedScripts[path]) {\n\t\tdeferred = $.Deferred()\n\t\t$.getScript(path, () => deferred.resolve())\n\t\tloadedScripts[path] = deferred\n\t} else {\n\t\tif (ready) {\n\t\t\tready()\n\t\t}\n\t}\n\treturn loadedScripts[path]\n}\n\n/**\n * Loads a CSS file\n *\n * @param {string} app the app id to which the css style belongs\n * @param {string} style the filename of the css file\n * @deprecated 16.0.0 Use OCP.Loader.loadStylesheet\n */\nexport const addStyle = (app, style) => {\n\tconsole.warn('OC.addStyle is deprecated, use OCP.Loader.loadStylesheet instead')\n\n\tconst path = generateFilePath(app, 'css', style + '.css')\n\tif (loadedStyles.indexOf(path) === -1) {\n\t\tloadedStyles.push(path)\n\t\tif (document.createStyleSheet) {\n\t\t\tdocument.createStyleSheet(path)\n\t\t} else {\n\t\t\tstyle = $('<link rel=\"stylesheet\" type=\"text/css\" href=\"' + path + '\"/>')\n\t\t\t$('head').append(style)\n\t\t}\n\t}\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Daniel Calviño Sánchez <danxuliu@gmail.com>\n * @author Joas Schilling <coding@schilljs.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n * @author npmbuildbot[bot] \"npmbuildbot[bot]@users.noreply.github.com\"\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport _ from 'underscore'\n/** @typedef {import('jquery')} jQuery */\nimport $ from 'jquery'\nimport { showMessage, TOAST_DEFAULT_TIMEOUT, TOAST_PERMANENT_TIMEOUT } from '@nextcloud/dialogs'\n\n/**\n * @todo Write documentation\n * @deprecated 17.0.0 use the `@nextcloud/dialogs` package instead\n * @namespace OC.Notification\n */\nexport default {\n\n\tupdatableNotification: null,\n\n\tgetDefaultNotificationFunction: null,\n\n\t/**\n\t * @param {Function} callback callback function\n\t * @deprecated 17.0.0 use the `@nextcloud/dialogs` package\n\t */\n\tsetDefault(callback) {\n\t\tthis.getDefaultNotificationFunction = callback\n\t},\n\n\t/**\n\t * Hides a notification.\n\t *\n\t * If a row is given, only hide that one.\n\t * If no row is given, hide all notifications.\n\t *\n\t * @param {jQuery} [$row] notification row\n\t * @param {Function} [callback] callback\n\t * @deprecated 17.0.0 use the `@nextcloud/dialogs` package\n\t */\n\thide($row, callback) {\n\t\tif (_.isFunction($row)) {\n\t\t\t// first arg is the callback\n\t\t\tcallback = $row\n\t\t\t$row = undefined\n\t\t}\n\n\t\tif (!$row) {\n\t\t\tconsole.error('Missing argument $row in OC.Notification.hide() call, caller needs to be adjusted to only dismiss its own notification')\n\t\t\treturn\n\t\t}\n\n\t\t// remove the row directly\n\t\t$row.each(function() {\n\t\t\tif ($(this)[0].toastify) {\n\t\t\t\t$(this)[0].toastify.hideToast()\n\t\t\t} else {\n\t\t\t\tconsole.error('cannot hide toast because object is not set')\n\t\t\t}\n\t\t\tif (this === this.updatableNotification) {\n\t\t\t\tthis.updatableNotification = null\n\t\t\t}\n\t\t})\n\t\tif (callback) {\n\t\t\tcallback.call()\n\t\t}\n\t\tif (this.getDefaultNotificationFunction) {\n\t\t\tthis.getDefaultNotificationFunction()\n\t\t}\n\t},\n\n\t/**\n\t * Shows a notification as HTML without being sanitized before.\n\t * If you pass unsanitized user input this may lead to a XSS vulnerability.\n\t * Consider using show() instead of showHTML()\n\t *\n\t * @param {string} html Message to display\n\t * @param {object} [options] options\n\t * @param {string} [options.type] notification type\n\t * @param {number} [options.timeout=0] timeout value, defaults to 0 (permanent)\n\t * @return {jQuery} jQuery element for notification row\n\t * @deprecated 17.0.0 use the `@nextcloud/dialogs` package\n\t */\n\tshowHtml(html, options) {\n\t\toptions = options || {}\n\t\toptions.isHTML = true\n\t\toptions.timeout = (!options.timeout) ? TOAST_PERMANENT_TIMEOUT : options.timeout\n\t\tconst toast = showMessage(html, options)\n\t\ttoast.toastElement.toastify = toast\n\t\treturn $(toast.toastElement)\n\t},\n\n\t/**\n\t * Shows a sanitized notification\n\t *\n\t * @param {string} text Message to display\n\t * @param {object} [options] options\n\t * @param {string} [options.type] notification type\n\t * @param {number} [options.timeout=0] timeout value, defaults to 0 (permanent)\n\t * @return {jQuery} jQuery element for notification row\n\t * @deprecated 17.0.0 use the `@nextcloud/dialogs` package\n\t */\n\tshow(text, options) {\n\t\tconst escapeHTML = function(text) {\n\t\t\treturn text.toString()\n\t\t\t\t.split('&').join('&')\n\t\t\t\t.split('<').join('<')\n\t\t\t\t.split('>').join('>')\n\t\t\t\t.split('\"').join('"')\n\t\t\t\t.split('\\'').join(''')\n\t\t}\n\n\t\toptions = options || {}\n\t\toptions.timeout = (!options.timeout) ? TOAST_PERMANENT_TIMEOUT : options.timeout\n\t\tconst toast = showMessage(escapeHTML(text), options)\n\t\ttoast.toastElement.toastify = toast\n\t\treturn $(toast.toastElement)\n\t},\n\n\t/**\n\t * Updates (replaces) a sanitized notification.\n\t *\n\t * @param {string} text Message to display\n\t * @return {jQuery} JQuery element for notificaiton row\n\t * @deprecated 17.0.0 use the `@nextcloud/dialogs` package\n\t */\n\tshowUpdate(text) {\n\t\tif (this.updatableNotification) {\n\t\t\tthis.updatableNotification.hideToast()\n\t\t}\n\t\tthis.updatableNotification = showMessage(text, { timeout: TOAST_PERMANENT_TIMEOUT })\n\t\tthis.updatableNotification.toastElement.toastify = this.updatableNotification\n\t\treturn $(this.updatableNotification.toastElement)\n\t},\n\n\t/**\n\t * Shows a notification that disappears after x seconds, default is\n\t * 7 seconds\n\t *\n\t * @param {string} text Message to show\n\t * @param {Array} [options] options array\n\t * @param {number} [options.timeout=7] timeout in seconds, if this is 0 it will show the message permanently\n\t * @param {boolean} [options.isHTML=false] an indicator for HTML notifications (true) or text (false)\n\t * @param {string} [options.type] notification type\n\t * @return {JQuery} the toast element\n\t * @deprecated 17.0.0 use the `@nextcloud/dialogs` package\n\t */\n\tshowTemporary(text, options) {\n\t\toptions = options || {}\n\t\toptions.timeout = options.timeout || TOAST_DEFAULT_TIMEOUT\n\t\tconst toast = showMessage(text, options)\n\t\ttoast.toastElement.toastify = toast\n\t\treturn $(toast.toastElement)\n\t},\n\n\t/**\n\t * Returns whether a notification is hidden.\n\t *\n\t * @return {boolean}\n\t * @deprecated 17.0.0 use the `@nextcloud/dialogs` package\n\t */\n\tisHidden() {\n\t\treturn !$('#content').find('.toastify').length\n\t},\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport _ from 'underscore'\nimport $ from 'jquery'\n\nimport OC from './index'\nimport Notification from './notification'\n\n/**\n * Warn users that the connection to the server was lost temporarily\n *\n * This function is throttled to prevent stacked notfications.\n * After 7sec the first notification is gone, then we can show another one\n * if necessary.\n */\nexport const ajaxConnectionLostHandler = _.throttle(() => {\n\tNotification.showTemporary(t('core', 'Connection to server lost'))\n}, 7 * 1000, { trailing: false })\n\n/**\n * Process ajax error, redirects to main page\n * if an error/auth error status was returned.\n *\n * @param {XMLHttpRequest} xhr xhr request\n */\nexport const processAjaxError = xhr => {\n\t// purposefully aborted request ?\n\t// OC._userIsNavigatingAway needed to distinguish ajax calls cancelled by navigating away\n\t// from calls cancelled by failed cross-domain ajax due to SSO redirect\n\tif (xhr.status === 0 && (xhr.statusText === 'abort' || xhr.statusText === 'timeout' || OC._reloadCalled)) {\n\t\treturn\n\t}\n\n\tif (_.contains([302, 303, 307, 401], xhr.status) && OC.currentUser) {\n\t\t// sometimes \"beforeunload\" happens later, so need to defer the reload a bit\n\t\tsetTimeout(function() {\n\t\t\tif (!OC._userIsNavigatingAway && !OC._reloadCalled) {\n\t\t\t\tlet timer = 0\n\t\t\t\tconst seconds = 5\n\t\t\t\tconst interval = setInterval(function() {\n\t\t\t\t\tNotification.showUpdate(n('core', 'Problem loading page, reloading in %n second', 'Problem loading page, reloading in %n seconds', seconds - timer))\n\t\t\t\t\tif (timer >= seconds) {\n\t\t\t\t\t\tclearInterval(interval)\n\t\t\t\t\t\tOC.reload()\n\t\t\t\t\t}\n\t\t\t\t\ttimer++\n\t\t\t\t}, 1000 // 1 second interval\n\t\t\t\t)\n\n\t\t\t\t// only call reload once\n\t\t\t\tOC._reloadCalled = true\n\t\t\t}\n\t\t}, 100)\n\t} else if (xhr.status === 0) {\n\t\t// Connection lost (e.g. WiFi disconnected or server is down)\n\t\tsetTimeout(function() {\n\t\t\tif (!OC._userIsNavigatingAway && !OC._reloadCalled) {\n\t\t\t\t// TODO: call method above directly\n\t\t\t\tOC._ajaxConnectionLostHandler()\n\t\t\t}\n\t\t}, 100)\n\t}\n}\n\n/**\n * Registers XmlHttpRequest object for global error processing.\n *\n * This means that if this XHR object returns 401 or session timeout errors,\n * the current page will automatically be reloaded.\n *\n * @param {XMLHttpRequest} xhr xhr request\n */\nexport const registerXHRForErrorProcessing = xhr => {\n\tconst loadCallback = () => {\n\t\tif (xhr.readyState !== 4) {\n\t\t\treturn\n\t\t}\n\n\t\tif ((xhr.status >= 200 && xhr.status < 300) || xhr.status === 304) {\n\t\t\treturn\n\t\t}\n\n\t\t// fire jquery global ajax error handler\n\t\t$(document).trigger(new $.Event('ajaxError'), xhr)\n\t}\n\n\tconst errorCallback = () => {\n\t\t// fire jquery global ajax error handler\n\t\t$(document).trigger(new $.Event('ajaxError'), xhr)\n\t}\n\n\tif (xhr.addEventListener) {\n\t\txhr.addEventListener('load', loadCallback)\n\t\txhr.addEventListener('error', errorCallback)\n\t}\n\n}\n","/**\n * @copyright Bernhard Posselt 2014\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport $ from 'jquery'\n\nlet dynamicSlideToggleEnabled = false\n\nconst Apps = {\n\tenableDynamicSlideToggle() {\n\t\tdynamicSlideToggleEnabled = true\n\t},\n}\n\n/**\n * Shows the #app-sidebar and add .with-app-sidebar to subsequent siblings\n *\n * @param {object} [$el] sidebar element to show, defaults to $('#app-sidebar')\n */\nApps.showAppSidebar = function($el) {\n\tconst $appSidebar = $el || $('#app-sidebar')\n\t$appSidebar.removeClass('disappear').show()\n\t$('#app-content').trigger(new $.Event('appresized'))\n}\n\n/**\n * Shows the #app-sidebar and removes .with-app-sidebar from subsequent\n * siblings\n *\n * @param {object} [$el] sidebar element to hide, defaults to $('#app-sidebar')\n */\nApps.hideAppSidebar = function($el) {\n\tconst $appSidebar = $el || $('#app-sidebar')\n\t$appSidebar.hide().addClass('disappear')\n\t$('#app-content').trigger(new $.Event('appresized'))\n}\n\n/**\n * Provides a way to slide down a target area through a button and slide it\n * up if the user clicks somewhere else. Used for the news app settings and\n * add new field.\n *\n * Usage:\n * <button data-apps-slide-toggle=\".slide-area\">slide</button>\n * <div class=\".slide-area\" class=\"hidden\">I'm sliding up</div>\n */\nexport const registerAppsSlideToggle = () => {\n\tlet buttons = $('[data-apps-slide-toggle]')\n\n\tif (buttons.length === 0) {\n\t\t$('#app-navigation').addClass('without-app-settings')\n\t}\n\n\t$(document).click(function(event) {\n\n\t\tif (dynamicSlideToggleEnabled) {\n\t\t\tbuttons = $('[data-apps-slide-toggle]')\n\t\t}\n\n\t\tbuttons.each(function(index, button) {\n\n\t\t\tconst areaSelector = $(button).data('apps-slide-toggle')\n\t\t\tconst area = $(areaSelector)\n\n\t\t\t/**\n\t\t\t *\n\t\t\t */\n\t\t\tfunction hideArea() {\n\t\t\t\tarea.slideUp(OC.menuSpeed * 4, function() {\n\t\t\t\t\tarea.trigger(new $.Event('hide'))\n\t\t\t\t})\n\t\t\t\tarea.removeClass('opened')\n\t\t\t\t$(button).removeClass('opened')\n\t\t\t}\n\n\t\t\t/**\n\t\t\t *\n\t\t\t */\n\t\t\tfunction showArea() {\n\t\t\t\tarea.slideDown(OC.menuSpeed * 4, function() {\n\t\t\t\t\tarea.trigger(new $.Event('show'))\n\t\t\t\t})\n\t\t\t\tarea.addClass('opened')\n\t\t\t\t$(button).addClass('opened')\n\t\t\t\tconst input = $(areaSelector + ' [autofocus]')\n\t\t\t\tif (input.length === 1) {\n\t\t\t\t\tinput.focus()\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// do nothing if the area is animated\n\t\t\tif (!area.is(':animated')) {\n\n\t\t\t\t// button toggles the area\n\t\t\t\tif ($(button).is($(event.target).closest('[data-apps-slide-toggle]'))) {\n\t\t\t\t\tif (area.is(':visible')) {\n\t\t\t\t\t\thideArea()\n\t\t\t\t\t} else {\n\t\t\t\t\t\tshowArea()\n\t\t\t\t\t}\n\n\t\t\t\t\t// all other areas that have not been clicked but are open\n\t\t\t\t\t// should be slid up\n\t\t\t\t} else {\n\t\t\t\t\tconst closest = $(event.target).closest(areaSelector)\n\t\t\t\t\tif (area.is(':visible') && closest[0] !== area[0]) {\n\t\t\t\t\t\thideArea()\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\n\t})\n}\n\nexport default Apps\n","/**\n * @copyright Copyright (c) 2016 Joas Schilling <coding@schilljs.com>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport $ from 'jquery'\nimport { generateOcsUrl } from '@nextcloud/router'\n\nimport OC from '../OC/index'\n\n/**\n * @param {string} method 'post' or 'delete'\n * @param {string} endpoint endpoint\n * @param {object} [options] destructuring object\n * @param {object} [options.data] option data\n * @param {Function} [options.success] success callback\n * @param {Function} [options.error] error callback\n */\nfunction call(method, endpoint, options) {\n\tif ((method === 'post' || method === 'delete') && OC.PasswordConfirmation.requiresPasswordConfirmation()) {\n\t\tOC.PasswordConfirmation.requirePasswordConfirmation(_.bind(call, this, method, endpoint, options))\n\t\treturn\n\t}\n\n\toptions = options || {}\n\t$.ajax({\n\t\ttype: method.toUpperCase(),\n\t\turl: generateOcsUrl('apps/provisioning_api/api/v1/config/apps') + endpoint,\n\t\tdata: options.data || {},\n\t\tsuccess: options.success,\n\t\terror: options.error,\n\t})\n}\n\n/**\n * @param {object} [options] destructuring object\n * @param {Function} [options.success] success callback\n * @since 11.0.0\n */\nexport function getApps(options) {\n\tcall('get', '', options)\n}\n\n/**\n * @param {string} app app id\n * @param {object} [options] destructuring object\n * @param {Function} [options.success] success callback\n * @param {Function} [options.error] error callback\n * @since 11.0.0\n */\nexport function getKeys(app, options) {\n\tcall('get', '/' + app, options)\n}\n\n/**\n * @param {string} app app id\n * @param {string} key key\n * @param {string | Function} defaultValue default value\n * @param {object} [options] destructuring object\n * @param {Function} [options.success] success callback\n * @param {Function} [options.error] error callback\n * @since 11.0.0\n */\nexport function getValue(app, key, defaultValue, options) {\n\toptions = options || {}\n\toptions.data = {\n\t\tdefaultValue,\n\t}\n\n\tcall('get', '/' + app + '/' + key, options)\n}\n\n/**\n * @param {string} app app id\n * @param {string} key key\n * @param {string} value value\n * @param {object} [options] destructuring object\n * @param {Function} [options.success] success callback\n * @param {Function} [options.error] error callback\n * @since 11.0.0\n */\nexport function setValue(app, key, value, options) {\n\toptions = options || {}\n\toptions.data = {\n\t\tvalue,\n\t}\n\n\tcall('post', '/' + app + '/' + key, options)\n}\n\n/**\n * @param {string} app app id\n * @param {string} key key\n * @param {object} [options] destructuring object\n * @param {Function} [options.success] success callback\n * @param {Function} [options.error] error callback\n * @since 11.0.0\n */\nexport function deleteKey(app, key, options) {\n\tcall('delete', '/' + app + '/' + key, options)\n}\n","/**\n * @copyright Copyright (c) 2016 Joas Schilling <coding@schilljs.com>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Joas Schilling <coding@schilljs.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Jörn Friedrich Dreyer <jfd@butonic.de>\n * @author Robin Appelman <robin@icewind.nl>\n * @author Vincent Petry <vincent@nextcloud.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n/* eslint-disable */\n import { getValue, setValue, getApps, getKeys, deleteKey } from '../OCP/appconfig'\n\nexport const appConfig = window.oc_appconfig || {}\n\n/**\n * @namespace\n * @deprecated 16.0.0 Use OCP.AppConfig instead\n */\nexport const AppConfig = {\n\t/**\n\t * @deprecated Use OCP.AppConfig.getValue() instead\n\t */\n\tgetValue: function(app, key, defaultValue, callback) {\n\t\tgetValue(app, key, defaultValue, {\n\t\t\tsuccess: callback\n\t\t})\n\t},\n\n\t/**\n\t * @deprecated Use OCP.AppConfig.setValue() instead\n\t */\n\tsetValue: function(app, key, value) {\n\t\tsetValue(app, key, value)\n\t},\n\n\t/**\n\t * @deprecated Use OCP.AppConfig.getApps() instead\n\t */\n\tgetApps: function(callback) {\n\t\tgetApps({\n\t\t\tsuccess: callback\n\t\t})\n\t},\n\n\t/**\n\t * @deprecated Use OCP.AppConfig.getKeys() instead\n\t */\n\tgetKeys: function(app, callback) {\n\t\tgetKeys(app, {\n\t\t\tsuccess: callback\n\t\t})\n\t},\n\n\t/**\n\t * @deprecated Use OCP.AppConfig.deleteKey() instead\n\t */\n\tdeleteKey: function(app, key) {\n\t\tdeleteKey(app, key)\n\t}\n\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nconst appswebroots = (window._oc_appswebroots !== undefined) ? window._oc_appswebroots : false\n\nexport default appswebroots\n","/**\n * Copyright (c) 2015\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n/* eslint-disable */\nimport _ from 'underscore'\nimport { dav } from 'davclient.js'\n\nconst methodMap = {\n\tcreate: 'POST',\n\tupdate: 'PROPPATCH',\n\tpatch: 'PROPPATCH',\n\tdelete: 'DELETE',\n\tread: 'PROPFIND'\n}\n\n// Throw an error when a URL is needed, and none is supplied.\nfunction urlError() {\n\tthrow new Error('A \"url\" property or function must be specified')\n}\n\n/**\n * Convert a single propfind result to JSON\n *\n * @param {Object} result\n * @param {Object} davProperties properties mapping\n */\nfunction parsePropFindResult(result, davProperties) {\n\tif (_.isArray(result)) {\n\t\treturn _.map(result, function(subResult) {\n\t\t\treturn parsePropFindResult(subResult, davProperties)\n\t\t})\n\t}\n\tvar props = {\n\t\thref: result.href\n\t}\n\n\t_.each(result.propStat, function(propStat) {\n\t\tif (propStat.status !== 'HTTP/1.1 200 OK') {\n\t\t\treturn\n\t\t}\n\n\t\tfor (var key in propStat.properties) {\n\t\t\tvar propKey = key\n\t\t\tif (key in davProperties) {\n\t\t\t\tpropKey = davProperties[key]\n\t\t\t}\n\t\t\tprops[propKey] = propStat.properties[key]\n\t\t}\n\t})\n\n\tif (!props.id) {\n\t\t// parse id from href\n\t\tprops.id = parseIdFromLocation(props.href)\n\t}\n\n\treturn props\n}\n\n/**\n * Parse ID from location\n *\n * @param {string} url url\n * @returns {string} id\n */\nfunction parseIdFromLocation(url) {\n\tvar queryPos = url.indexOf('?')\n\tif (queryPos > 0) {\n\t\turl = url.substr(0, queryPos)\n\t}\n\n\tvar parts = url.split('/')\n\tvar result\n\tdo {\n\t\tresult = parts[parts.length - 1]\n\t\tparts.pop()\n\t\t// note: first result can be empty when there is a trailing slash,\n\t\t// so we take the part before that\n\t} while (!result && parts.length > 0)\n\n\treturn result\n}\n\nfunction isSuccessStatus(status) {\n\treturn status >= 200 && status <= 299\n}\n\nfunction convertModelAttributesToDavProperties(attrs, davProperties) {\n\tvar props = {}\n\tvar key\n\tfor (key in attrs) {\n\t\tvar changedProp = davProperties[key]\n\t\tvar value = attrs[key]\n\t\tif (!changedProp) {\n\t\t\tconsole.warn('No matching DAV property for property \"' + key)\n\t\t\tchangedProp = key\n\t\t}\n\t\tif (_.isBoolean(value) || _.isNumber(value)) {\n\t\t\t// convert to string\n\t\t\tvalue = '' + value\n\t\t}\n\t\tprops[changedProp] = value\n\t}\n\treturn props\n}\n\nfunction callPropFind(client, options, model, headers) {\n\treturn client.propFind(\n\t\toptions.url,\n\t\t_.values(options.davProperties) || [],\n\t\toptions.depth,\n\t\theaders\n\t).then(function(response) {\n\t\tif (isSuccessStatus(response.status)) {\n\t\t\tif (_.isFunction(options.success)) {\n\t\t\t\tvar propsMapping = _.invert(options.davProperties)\n\t\t\t\tvar results = parsePropFindResult(response.body, propsMapping)\n\t\t\t\tif (options.depth > 0) {\n\t\t\t\t\t// discard root entry\n\t\t\t\t\tresults.shift()\n\t\t\t\t}\n\n\t\t\t\toptions.success(results)\n\n\t\t\t}\n\t\t} else if (_.isFunction(options.error)) {\n\t\t\toptions.error(response)\n\t\t}\n\t})\n}\n\nfunction callPropPatch(client, options, model, headers) {\n\treturn client.propPatch(\n\t\toptions.url,\n\t\tconvertModelAttributesToDavProperties(model.changed, options.davProperties),\n\t\theaders\n\t).then(function(result) {\n\t\tif (isSuccessStatus(result.status)) {\n\t\t\tif (_.isFunction(options.success)) {\n\t\t\t\t// pass the object's own values because the server\n\t\t\t\t// does not return the updated model\n\t\t\t\toptions.success(model.toJSON())\n\t\t\t}\n\t\t} else if (_.isFunction(options.error)) {\n\t\t\toptions.error(result)\n\t\t}\n\t})\n\n}\n\nfunction callMkCol(client, options, model, headers) {\n\t// call MKCOL without data, followed by PROPPATCH\n\treturn client.request(\n\t\toptions.type,\n\t\toptions.url,\n\t\theaders,\n\t\tnull\n\t).then(function(result) {\n\t\tif (!isSuccessStatus(result.status)) {\n\t\t\tif (_.isFunction(options.error)) {\n\t\t\t\toptions.error(result)\n\t\t\t}\n\t\t\treturn\n\t\t}\n\n\t\tcallPropPatch(client, options, model, headers)\n\t})\n}\n\nfunction callMethod(client, options, model, headers) {\n\theaders['Content-Type'] = 'application/json'\n\treturn client.request(\n\t\toptions.type,\n\t\toptions.url,\n\t\theaders,\n\t\toptions.data\n\t).then(function(result) {\n\t\tif (!isSuccessStatus(result.status)) {\n\t\t\tif (_.isFunction(options.error)) {\n\t\t\t\toptions.error(result)\n\t\t\t}\n\t\t\treturn\n\t\t}\n\n\t\tif (_.isFunction(options.success)) {\n\t\t\tif (options.type === 'PUT' || options.type === 'POST' || options.type === 'MKCOL') {\n\t\t\t\t// pass the object's own values because the server\n\t\t\t\t// does not return anything\n\t\t\t\tvar responseJson = result.body || model.toJSON()\n\t\t\t\tvar locationHeader = result.xhr.getResponseHeader('Content-Location')\n\t\t\t\tif (options.type === 'POST' && locationHeader) {\n\t\t\t\t\tresponseJson.id = parseIdFromLocation(locationHeader)\n\t\t\t\t}\n\t\t\t\toptions.success(responseJson)\n\t\t\t\treturn\n\t\t\t}\n\t\t\t// if multi-status, parse\n\t\t\tif (result.status === 207) {\n\t\t\t\tvar propsMapping = _.invert(options.davProperties)\n\t\t\t\toptions.success(parsePropFindResult(result.body, propsMapping))\n\t\t\t} else {\n\t\t\t\toptions.success(result.body)\n\t\t\t}\n\t\t}\n\t})\n}\n\nexport const davCall = (options, model) => {\n\tvar client = new dav.Client({\n\t\tbaseUrl: options.url,\n\t\txmlNamespaces: _.extend({\n\t\t\t'DAV:': 'd',\n\t\t\t'http://owncloud.org/ns': 'oc'\n\t\t}, options.xmlNamespaces || {})\n\t})\n\tclient.resolveUrl = function() {\n\t\treturn options.url\n\t}\n\tvar headers = _.extend({\n\t\t'X-Requested-With': 'XMLHttpRequest',\n\t\t'requesttoken': OC.requestToken\n\t}, options.headers)\n\tif (options.type === 'PROPFIND') {\n\t\treturn callPropFind(client, options, model, headers)\n\t} else if (options.type === 'PROPPATCH') {\n\t\treturn callPropPatch(client, options, model, headers)\n\t} else if (options.type === 'MKCOL') {\n\t\treturn callMkCol(client, options, model, headers)\n\t} else {\n\t\treturn callMethod(client, options, model, headers)\n\t}\n}\n\n/**\n * DAV transport\n */\nexport const davSync = Backbone => (method, model, options) => {\n\tvar params = { type: methodMap[method] || method }\n\tvar isCollection = (model instanceof Backbone.Collection)\n\n\tif (method === 'update') {\n\t\t// if a model has an inner collection, it must define an\n\t\t// attribute \"hasInnerCollection\" that evaluates to true\n\t\tif (model.hasInnerCollection) {\n\t\t\t// if the model itself is a Webdav collection, use MKCOL\n\t\t\tparams.type = 'MKCOL'\n\t\t} else if (model.usePUT || (model.collection && model.collection.usePUT)) {\n\t\t\t// use PUT instead of PROPPATCH\n\t\t\tparams.type = 'PUT'\n\t\t}\n\t}\n\n\t// Ensure that we have a URL.\n\tif (!options.url) {\n\t\tparams.url = _.result(model, 'url') || urlError()\n\t}\n\n\t// Ensure that we have the appropriate request data.\n\tif (options.data == null && model && (method === 'create' || method === 'update' || method === 'patch')) {\n\t\tparams.data = JSON.stringify(options.attrs || model.toJSON(options))\n\t}\n\n\t// Don't process data on a non-GET request.\n\tif (params.type !== 'PROPFIND') {\n\t\tparams.processData = false\n\t}\n\n\tif (params.type === 'PROPFIND' || params.type === 'PROPPATCH') {\n\t\tvar davProperties = model.davProperties\n\t\tif (!davProperties && model.model) {\n\t\t\t// use dav properties from model in case of collection\n\t\t\tdavProperties = model.model.prototype.davProperties\n\t\t}\n\t\tif (davProperties) {\n\t\t\tif (_.isFunction(davProperties)) {\n\t\t\t\tparams.davProperties = davProperties.call(model)\n\t\t\t} else {\n\t\t\t\tparams.davProperties = davProperties\n\t\t\t}\n\t\t}\n\n\t\tparams.davProperties = _.extend(params.davProperties || {}, options.davProperties)\n\n\t\tif (_.isUndefined(options.depth)) {\n\t\t\tif (isCollection) {\n\t\t\t\toptions.depth = 1\n\t\t\t} else {\n\t\t\t\toptions.depth = 0\n\t\t\t}\n\t\t}\n\t}\n\n\t// Pass along `textStatus` and `errorThrown` from jQuery.\n\tvar error = options.error\n\toptions.error = function(xhr, textStatus, errorThrown) {\n\t\toptions.textStatus = textStatus\n\t\toptions.errorThrown = errorThrown\n\t\tif (error) {\n\t\t\terror.call(options.context, xhr, textStatus, errorThrown)\n\t\t}\n\t}\n\n\t// Make the request, allowing the user to override any Ajax options.\n\tvar xhr = options.xhr = Backbone.davCall(_.extend(params, options), model)\n\tmodel.trigger('request', model, xhr, options)\n\treturn xhr\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport VendorBackbone from 'backbone'\nimport { davCall, davSync } from './backbone-webdav'\n\nconst Backbone = VendorBackbone.noConflict()\n\n// Patch Backbone for DAV\nObject.assign(Backbone, {\n\tdavCall,\n\tdavSync: davSync(Backbone),\n})\n\nexport default Backbone\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nconst config = window._oc_config || {}\n\nexport default config\n","/**\n * @copyright 2017 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n/* eslint-disable */\nimport _ from 'underscore'\nimport $ from 'jquery'\nimport { Collection, Model, View } from 'backbone'\n\nimport OC from './index'\n\n/**\n * @class Contact\n */\nconst Contact = Model.extend({\n\tdefaults: {\n\t\tfullName: '',\n\t\tlastMessage: '',\n\t\tactions: [],\n\t\thasOneAction: false,\n\t\thasTwoActions: false,\n\t\thasManyActions: false\n\t},\n\n\t/**\n\t * @returns {undefined}\n\t */\n\tinitialize: function() {\n\t\t// Add needed property for easier template rendering\n\t\tif (this.get('actions').length === 0) {\n\t\t\tthis.set('hasOneAction', true)\n\t\t} else if (this.get('actions').length === 1) {\n\t\t\tthis.set('hasTwoActions', true)\n\t\t\tthis.set('secondAction', this.get('actions')[0])\n\t\t} else {\n\t\t\tthis.set('hasManyActions', true)\n\t\t}\n\t}\n})\n\n/**\n * @class ContactCollection\n * @private\n */\nconst ContactCollection = Collection.extend({\n\tmodel: Contact\n})\n\n/**\n * @class ContactsListView\n * @private\n */\nconst ContactsListView = View.extend({\n\n\t/** @type {ContactCollection} */\n\t_collection: undefined,\n\n\t/** @type {array} */\n\t_subViews: [],\n\n\t/**\n\t * @param {object} options\n\t * @returns {undefined}\n\t */\n\tinitialize: function(options) {\n\t\tthis._collection = options.collection\n\t},\n\n\t/**\n\t * @returns {self}\n\t */\n\trender: function() {\n\t\tvar self = this\n\t\tself.$el.html('')\n\t\tself._subViews = []\n\n\t\tself._collection.forEach(function(contact) {\n\t\t\tvar item = new ContactsListItemView({\n\t\t\t\tmodel: contact\n\t\t\t})\n\t\t\titem.render()\n\t\t\tself.$el.append(item.$el)\n\t\t\titem.on('toggle:actionmenu', self._onChildActionMenuToggle, self)\n\t\t\tself._subViews.push(item)\n\t\t})\n\n\t\treturn self\n\t},\n\n\t/**\n\t * Event callback to propagate opening (another) entry's action menu\n\t *\n\t * @param {type} $src\n\t * @returns {undefined}\n\t */\n\t_onChildActionMenuToggle: function($src) {\n\t\tthis._subViews.forEach(function(view) {\n\t\t\tview.trigger('parent:toggle:actionmenu', $src)\n\t\t})\n\t}\n})\n\n/**\n * @class ContactsListItemView\n * @private\n */\nconst ContactsListItemView = View.extend({\n\n\t/** @type {string} */\n\tclassName: 'contact',\n\n\t/** @type {undefined|function} */\n\t_template: undefined,\n\n\t/** @type {Contact} */\n\t_model: undefined,\n\n\t/** @type {boolean} */\n\t_actionMenuShown: false,\n\n\tevents: {\n\t\t'click .icon-more': '_onToggleActionsMenu'\n\t},\n\n\tcontactTemplate: require('./contactsmenu/contact.handlebars'),\n\n\t/**\n\t * @param {object} data\n\t * @returns {undefined}\n\t */\n\ttemplate: function(data) {\n\t\treturn this.contactTemplate(data)\n\t},\n\n\t/**\n\t * @param {object} options\n\t * @returns {undefined}\n\t */\n\tinitialize: function(options) {\n\t\tthis._model = options.model\n\t\tthis.on('parent:toggle:actionmenu', this._onOtherActionMenuOpened, this)\n\t},\n\n\t/**\n\t * @returns {self}\n\t */\n\trender: function() {\n\t\tthis.$el.html(this.template({\n\t\t\tcontact: this._model.toJSON()\n\t\t}))\n\t\tthis.delegateEvents()\n\n\t\t// Show placeholder if no avatar is available (avatar is rendered as img, not div)\n\t\tthis.$('div.avatar').imageplaceholder(this._model.get('fullName'))\n\n\t\t// Show tooltip for top action\n\t\tthis.$('.top-action').tooltip({ placement: 'left' })\n\t\t// Show tooltip for second action\n\t\tthis.$('.second-action').tooltip({ placement: 'left' })\n\n\t\treturn this\n\t},\n\n\t/**\n\t * Toggle the visibility of the action popover menu\n\t *\n\t * @private\n\t * @returns {undefined}\n\t */\n\t_onToggleActionsMenu: function() {\n\t\tthis._actionMenuShown = !this._actionMenuShown\n\t\tif (this._actionMenuShown) {\n\t\t\tthis.$('.menu').show()\n\t\t} else {\n\t\t\tthis.$('.menu').hide()\n\t\t}\n\t\tthis.trigger('toggle:actionmenu', this.$el)\n\t},\n\n\t/**\n\t * @private\n\t * @argument {jQuery} $src\n\t * @returns {undefined}\n\t */\n\t_onOtherActionMenuOpened: function($src) {\n\t\tif (this.$el.is($src)) {\n\t\t\t// Ignore\n\t\t\treturn\n\t\t}\n\t\tthis._actionMenuShown = false\n\t\tthis.$('.menu').hide()\n\t}\n})\n\n/**\n * @class ContactsMenuView\n * @private\n */\nconst ContactsMenuView = View.extend({\n\n\t/** @type {undefined|function} */\n\t_loadingTemplate: undefined,\n\n\t/** @type {undefined|function} */\n\t_errorTemplate: undefined,\n\n\t/** @type {undefined|function} */\n\t_contentTemplate: undefined,\n\n\t/** @type {undefined|function} */\n\t_contactsTemplate: undefined,\n\n\t/** @type {undefined|ContactCollection} */\n\t_contacts: undefined,\n\n\t/** @type {string} */\n\t_searchTerm: '',\n\n\tevents: {\n\t\t'input #contactsmenu-search': '_onSearch'\n\t},\n\n\ttemplates: {\n\t\tloading: require('./contactsmenu/loading.handlebars'),\n\t\terror: require('./contactsmenu/error.handlebars'),\n\t\tmenu: require('./contactsmenu/menu.handlebars'),\n\t\tlist: require('./contactsmenu/list.handlebars')\n\t},\n\n\t/**\n\t * @returns {undefined}\n\t */\n\t_onSearch: _.debounce(function(e) {\n\t\tvar searchTerm = this.$('#contactsmenu-search').val()\n\t\t// IE11 triggers an 'input' event after the view has been rendered\n\t\t// resulting in an endless loading loop. To prevent this, we remember\n\t\t// the last search term to savely ignore some events\n\t\t// See https://github.com/nextcloud/server/issues/5281\n\t\tif (searchTerm !== this._searchTerm) {\n\t\t\tthis.trigger('search', this.$('#contactsmenu-search').val())\n\t\t\tthis._searchTerm = searchTerm\n\t\t}\n\t}, 700),\n\n\t/**\n\t * @param {object} data\n\t * @returns {string}\n\t */\n\tloadingTemplate: function(data) {\n\t\treturn this.templates.loading(data)\n\t},\n\n\t/**\n\t * @param {object} data\n\t * @returns {string}\n\t */\n\terrorTemplate: function(data) {\n\t\treturn this.templates.error(\n\t\t\t_.extend({\n\t\t\t\tcouldNotLoadText: t('core', 'Could not load your contacts')\n\t\t\t}, data)\n\t\t)\n\t},\n\n\t/**\n\t * @param {object} data\n\t * @returns {string}\n\t */\n\tcontentTemplate: function(data) {\n\t\treturn this.templates.menu(\n\t\t\t_.extend({\n\t\t\t\tsearchContactsText: t('core', 'Search contacts …')\n\t\t\t}, data)\n\t\t)\n\t},\n\n\t/**\n\t * @param {object} data\n\t * @returns {string}\n\t */\n\tcontactsTemplate: function(data) {\n\t\treturn this.templates.list(\n\t\t\t_.extend({\n\t\t\t\tnoContactsFoundText: t('core', 'No contacts found'),\n\t\t\t\tshowAllContactsText: t('core', 'Show all contacts …'),\n\t\t\t\tcontactsAppMgmtText: t('core', 'Install the Contacts app')\n\t\t\t}, data)\n\t\t)\n\t},\n\n\t/**\n\t * @param {object} options\n\t * @returns {undefined}\n\t */\n\tinitialize: function(options) {\n\t\tthis.options = options\n\t},\n\n\t/**\n\t * @param {string} text\n\t * @returns {undefined}\n\t */\n\tshowLoading: function(text) {\n\t\tthis.render()\n\t\tthis._contacts = undefined\n\t\tthis.$('.content').html(this.loadingTemplate({\n\t\t\tloadingText: text\n\t\t}))\n\t},\n\n\t/**\n\t * @returns {undefined}\n\t */\n\tshowError: function() {\n\t\tthis.render()\n\t\tthis._contacts = undefined\n\t\tthis.$('.content').html(this.errorTemplate())\n\t},\n\n\t/**\n\t * @param {object} viewData\n\t * @param {string} searchTerm\n\t * @returns {undefined}\n\t */\n\tshowContacts: function(viewData, searchTerm) {\n\t\tthis._contacts = viewData.contacts\n\t\tthis.render({\n\t\t\tcontacts: viewData.contacts\n\t\t})\n\n\t\tvar list = new ContactsListView({\n\t\t\tcollection: viewData.contacts\n\t\t})\n\t\tlist.render()\n\t\tthis.$('.content').html(this.contactsTemplate({\n\t\t\tcontacts: viewData.contacts,\n\t\t\tsearchTerm: searchTerm,\n\t\t\tcontactsAppEnabled: viewData.contactsAppEnabled,\n\t\t\tcontactsAppURL: OC.generateUrl('/apps/contacts'),\n\t\t\tcanInstallApp: OC.isUserAdmin(),\n\t\t\tcontactsAppMgmtURL: OC.generateUrl('/settings/apps/social/contacts')\n\t\t}))\n\t\tthis.$('#contactsmenu-contacts').html(list.$el)\n\t},\n\n\t/**\n\t * @param {object} data\n\t * @returns {self}\n\t */\n\trender: function(data) {\n\t\tvar searchVal = this.$('#contactsmenu-search').val()\n\t\tthis.$el.html(this.contentTemplate(data))\n\n\t\t// Focus search\n\t\tthis.$('#contactsmenu-search').val(searchVal)\n\t\tthis.$('#contactsmenu-search').focus()\n\t\treturn this\n\t}\n\n})\n\n/**\n * @param {Object} options\n * @param {string} options.el\n * @class ContactsMenu\n * @memberOf OC\n */\nconst ContactsMenu = function(options) {\n\tthis.initialize(options)\n}\n\nContactsMenu.prototype = {\n\t/** @type {string} */\n\t$el: undefined,\n\n\t/** @type {ContactsMenuView} */\n\t_view: undefined,\n\n\t/** @type {Promise} */\n\t_contactsPromise: undefined,\n\n\t/**\n\t * @param {Object} options\n\t * @param {string} options.el - the selector of the element to render the menu in\n\t * @returns {undefined}\n\t */\n\tinitialize: function(options) {\n\t\tthis.$el = $(options.el)\n\n\t\tthis._view = new ContactsMenuView({\n\t\t\tel: this.$el,\n\t\t})\n\n\t\tthis._view.on('search', function(searchTerm) {\n\t\t\tthis.loadContacts(searchTerm)\n\t\t}, this)\n\t},\n\n\t/**\n\t * @private\n\t * @param {string|undefined} searchTerm\n\t * @returns {Promise}\n\t */\n\t_getContacts: function(searchTerm) {\n\t\tvar url = OC.generateUrl('/contactsmenu/contacts')\n\t\treturn Promise.resolve($.ajax(url, {\n\t\t\tmethod: 'POST',\n\t\t\tdata: {\n\t\t\t\tfilter: searchTerm\n\t\t\t}\n\t\t}))\n\t},\n\n\t/**\n\t * @param {string|undefined} searchTerm\n\t * @returns {undefined}\n\t */\n\tloadContacts: function(searchTerm) {\n\t\tvar self = this\n\n\t\tif (!self._contactsPromise) {\n\t\t\tself._contactsPromise = self._getContacts(searchTerm)\n\t\t}\n\n\t\tif (_.isUndefined(searchTerm) || searchTerm === '') {\n\t\t\tself._view.showLoading(t('core', 'Loading your contacts …'))\n\t\t} else {\n\t\t\tself._view.showLoading(t('core', 'Looking for {term} …', {\n\t\t\t\tterm: searchTerm\n\t\t\t}))\n\t\t}\n\t\treturn self._contactsPromise.then(function(data) {\n\t\t\t// Convert contact entries to Backbone collection\n\t\t\tdata.contacts = new ContactCollection(data.contacts)\n\n\t\t\tself._view.showContacts(data, searchTerm)\n\t\t}, function(e) {\n\t\t\tself._view.showError()\n\t\t\tconsole.error('There was an error loading your contacts', e)\n\t\t}).then(function() {\n\t\t\t// Delete promise, so that contacts are fetched again when the\n\t\t\t// menu is opened the next time.\n\t\t\tdelete self._contactsPromise\n\t\t}).catch(console.error.bind(this))\n\t}\n}\n\nexport default ContactsMenu\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Joas Schilling <coding@schilljs.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nconst rawUid = document\n\t.getElementsByTagName('head')[0]\n\t.getAttribute('data-user')\nconst displayName = document\n\t.getElementsByTagName('head')[0]\n\t.getAttribute('data-user-displayname')\n\nexport const currentUser = rawUid !== undefined ? rawUid : false\n\nexport const getCurrentUser = () => {\n\treturn {\n\t\tuid: currentUser,\n\t\tdisplayName,\n\t}\n}\n","/**\n * @copyright 2020 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nexport default class Search {\n\n\t/**\n\t * @deprecated 20.0.0, will be removed in Nextcloud 22\n\t */\n\tconstructor() {\n\t\tconsole.warn('OCA.Search is deprecated. Please use the unified search API instead')\n\t}\n\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport Search from './search'\n\n/**\n * Namespace for apps\n *\n * @namespace OCA\n */\nexport default {\n\t/**\n\t * @deprecated 20.0.0, will be removed in Nextcloud 22\n\t */\n\tSearch,\n}\n","/**\n * @copyright 2022 Christopher Ng <chrng8@gmail.com>\n *\n * @author Christopher Ng <chrng8@gmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n/**\n * Return whether the DOM event is an accessible mouse or keyboard element activation\n *\n * @param {Event} event DOM event\n *\n * @return {boolean}\n */\nexport const isA11yActivation = (event) => {\n\tif (event.type === 'click') {\n\t\treturn true\n\t}\n\tif (event.type === 'keydown' && event.key === 'Enter') {\n\t\treturn true\n\t}\n\treturn false\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n * @copyright Copyright (c) 2019 Gary Kim <gary@garykim.dev>\n *\n * @author Bartek Przybylski <bart.p.pl@gmail.com>\n * @author Christopher Schäpers <kondou@ts.unde.re>\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Daniel Calviño Sánchez <danxuliu@gmail.com>\n * @author Daniel Kesselberg <mail@danielkesselberg.de>\n * @author Florian Schunk <florian.schunk@rwth-aachen.de>\n * @author Gary Kim <gary@garykim.dev>\n * @author Hendrik Leppelsack <hendrik@leppelsack.de>\n * @author Jan-Christoph Borchardt <hey@jancborchardt.net>\n * @author Joas Schilling <coding@schilljs.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Jörn Friedrich Dreyer <jfd@butonic.de>\n * @author Julius Härtl <jus@bitgrid.net>\n * @author Loïc Hermann <loic.hermann@sciam.fr>\n * @author Morris Jobke <hey@morrisjobke.de>\n * @author Olivier Paroz <github@oparoz.com>\n * @author Robin Appelman <robin@icewind.nl>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n * @author Sujith Haridasan <Sujith_Haridasan@mentor.com>\n * @author Thomas Citharel <nextcloud@tcit.fr>\n * @author Thomas Müller <thomas.mueller@tmit.eu>\n * @author Thomas Tanghus <thomas@tanghus.net>\n * @author Vincent Petry <vincent@nextcloud.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n/* eslint-disable */\nimport _ from 'underscore'\nimport $ from 'jquery'\n\nimport OC from './index'\nimport OCA from '../OCA/index'\nimport { isA11yActivation } from '../Util/a11y'\n\n/**\n * this class to ease the usage of jquery dialogs\n */\nconst Dialogs = {\n\t// dialog button types\n\tYES_NO_BUTTONS: 70,\n\tOK_BUTTONS: 71,\n\n\tFILEPICKER_TYPE_CHOOSE: 1,\n\tFILEPICKER_TYPE_MOVE: 2,\n\tFILEPICKER_TYPE_COPY: 3,\n\tFILEPICKER_TYPE_COPY_MOVE: 4,\n\tFILEPICKER_TYPE_CUSTOM: 5,\n\n\t// used to name each dialog\n\tdialogsCounter: 0,\n\n\t/**\n\t * displays alert dialog\n\t * @param {string} text content of dialog\n\t * @param {string} title dialog title\n\t * @param {function} callback which will be triggered when user presses OK\n\t * @param {boolean} [modal] make the dialog modal\n\t */\n\talert: function(text, title, callback, modal) {\n\t\tthis.message(\n\t\t\ttext,\n\t\t\ttitle,\n\t\t\t'alert',\n\t\t\tDialogs.OK_BUTTON,\n\t\t\tcallback,\n\t\t\tmodal\n\t\t)\n\t},\n\t/**\n\t * displays info dialog\n\t * @param {string} text content of dialog\n\t * @param {string} title dialog title\n\t * @param {function} callback which will be triggered when user presses OK\n\t * @param {boolean} [modal] make the dialog modal\n\t */\n\tinfo: function(text, title, callback, modal) {\n\t\tthis.message(text, title, 'info', Dialogs.OK_BUTTON, callback, modal)\n\t},\n\n\t/**\n\t * displays confirmation dialog\n\t * @param {string} text content of dialog\n\t * @param {string} title dialog title\n\t * @param {function} callback which will be triggered when user presses OK (true or false would be passed to callback respectively)\n\t * @param {boolean} [modal] make the dialog modal\n\t * @returns {Promise}\n\t */\n\tconfirm: function(text, title, callback, modal) {\n\t\treturn this.message(\n\t\t\ttext,\n\t\t\ttitle,\n\t\t\t'notice',\n\t\t\tDialogs.YES_NO_BUTTONS,\n\t\t\tcallback,\n\t\t\tmodal\n\t\t)\n\t},\n\t/**\n\t * displays confirmation dialog\n\t * @param {string} text content of dialog\n\t * @param {string} title dialog title\n\t * @param {(number|{type: number, confirm: string, cancel: string, confirmClasses: string})} buttons text content of buttons\n\t * @param {function} callback which will be triggered when user presses OK (true or false would be passed to callback respectively)\n\t * @param {boolean} [modal] make the dialog modal\n\t * @returns {Promise}\n\t */\n\tconfirmDestructive: function(text, title, buttons, callback, modal) {\n\t\treturn this.message(\n\t\t\ttext,\n\t\t\ttitle,\n\t\t\t'none',\n\t\t\tbuttons,\n\t\t\tcallback,\n\t\t\tmodal === undefined ? true : modal\n\t\t)\n\t},\n\t/**\n\t * displays confirmation dialog\n\t * @param {string} text content of dialog\n\t * @param {string} title dialog title\n\t * @param {function} callback which will be triggered when user presses OK (true or false would be passed to callback respectively)\n\t * @param {boolean} [modal] make the dialog modal\n\t * @returns {Promise}\n\t */\n\tconfirmHtml: function(text, title, callback, modal) {\n\t\treturn this.message(\n\t\t\ttext,\n\t\t\ttitle,\n\t\t\t'notice',\n\t\t\tDialogs.YES_NO_BUTTONS,\n\t\t\tcallback,\n\t\t\tmodal,\n\t\t\ttrue\n\t\t)\n\t},\n\t/**\n\t * displays prompt dialog\n\t * @param {string} text content of dialog\n\t * @param {string} title dialog title\n\t * @param {function} callback which will be triggered when user presses OK (true or false would be passed to callback respectively)\n\t * @param {boolean} [modal] make the dialog modal\n\t * @param {string} name name of the input field\n\t * @param {boolean} password whether the input should be a password input\n\t * @returns {Promise}\n\t */\n\tprompt: function(text, title, callback, modal, name, password) {\n\t\treturn $.when(this._getMessageTemplate()).then(function($tmpl) {\n\t\t\tvar dialogName = 'oc-dialog-' + Dialogs.dialogsCounter + '-content'\n\t\t\tvar dialogId = '#' + dialogName\n\t\t\tvar $dlg = $tmpl.octemplate({\n\t\t\t\tdialog_name: dialogName,\n\t\t\t\ttitle: title,\n\t\t\t\tmessage: text,\n\t\t\t\ttype: 'notice'\n\t\t\t})\n\t\t\tvar input = $('<input/>')\n\t\t\tinput.attr('type', password ? 'password' : 'text').attr('id', dialogName + '-input').attr('placeholder', name)\n\t\t\tvar label = $('<label/>').attr('for', dialogName + '-input').text(name + ': ')\n\t\t\t$dlg.append(label)\n\t\t\t$dlg.append(input)\n\t\t\tif (modal === undefined) {\n\t\t\t\tmodal = false\n\t\t\t}\n\t\t\t$('body').append($dlg)\n\n\t\t\t// wrap callback in _.once():\n\t\t\t// only call callback once and not twice (button handler and close\n\t\t\t// event) but call it for the close event, if ESC or the x is hit\n\t\t\tif (callback !== undefined) {\n\t\t\t\tcallback = _.once(callback)\n\t\t\t}\n\n\t\t\tvar buttonlist = [{\n\t\t\t\ttext: t('core', 'No'),\n\t\t\t\tclick: function() {\n\t\t\t\t\tif (callback !== undefined) {\n\t\t\t\t\t\t// eslint-disable-next-line standard/no-callback-literal\n\t\t\t\t\t\tcallback(false, input.val())\n\t\t\t\t\t}\n\t\t\t\t\t$(dialogId).ocdialog('close')\n\t\t\t\t}\n\t\t\t}, {\n\t\t\t\ttext: t('core', 'Yes'),\n\t\t\t\tclick: function() {\n\t\t\t\t\tif (callback !== undefined) {\n\t\t\t\t\t\t// eslint-disable-next-line standard/no-callback-literal\n\t\t\t\t\t\tcallback(true, input.val())\n\t\t\t\t\t}\n\t\t\t\t\t$(dialogId).ocdialog('close')\n\t\t\t\t},\n\t\t\t\tdefaultButton: true\n\t\t\t}]\n\n\t\t\t$(dialogId).ocdialog({\n\t\t\t\tcloseOnEscape: true,\n\t\t\t\tmodal: modal,\n\t\t\t\tbuttons: buttonlist,\n\t\t\t\tclose: function() {\n\t\t\t\t\t// callback is already fired if Yes/No is clicked directly\n\t\t\t\t\tif (callback !== undefined) {\n\t\t\t\t\t\t// eslint-disable-next-line standard/no-callback-literal\n\t\t\t\t\t\tcallback(false, input.val())\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t})\n\t\t\tinput.focus()\n\t\t\tDialogs.dialogsCounter++\n\t\t})\n\t},\n\t/**\n\t * show a file picker to pick a file from\n\t *\n\t * In order to pick several types of mime types they need to be passed as an\n\t * array of strings.\n\t *\n\t * When no mime type filter is given only files can be selected. In order to\n\t * be able to select both files and folders \"['*', 'httpd/unix-directory']\"\n\t * should be used instead.\n\t *\n\t * @param {string} title dialog title\n\t * @param {function} callback which will be triggered when user presses Choose\n\t * @param {boolean} [multiselect] whether it should be possible to select multiple files\n\t * @param {string[]} [mimetypeFilter] mimetype to filter by - directories will always be included\n\t * @param {boolean} [modal] make the dialog modal\n\t * @param {string} [type] Type of file picker : Choose, copy, move, copy and move\n\t * @param {string} [path] path to the folder that the the file can be picket from\n\t * @param {Object} [options] additonal options that need to be set\n\t * @param {Function} [options.filter] filter function for advanced filtering\n\t */\n\tfilepicker: function(title, callback, multiselect, mimetypeFilter, modal, type, path, options) {\n\t\tvar self = this\n\n\t\tthis.filepicker.sortField = 'name'\n\t\tthis.filepicker.sortOrder = 'asc'\n\t\t// avoid opening the picker twice\n\t\tif (this.filepicker.loading) {\n\t\t\treturn\n\t\t}\n\n\t\tif (type === undefined) {\n\t\t\ttype = this.FILEPICKER_TYPE_CHOOSE\n\t\t}\n\n\t\tvar emptyText = t('core', 'No files in here')\n\t\tvar newText = t('files', 'New folder')\n\t\tif (type === this.FILEPICKER_TYPE_COPY || type === this.FILEPICKER_TYPE_MOVE || type === this.FILEPICKER_TYPE_COPY_MOVE) {\n\t\t\temptyText = t('core', 'No more subfolders in here')\n\t\t}\n\n\t\tthis.filepicker.loading = true\n\t\tthis.filepicker.filesClient = (OCA.Sharing && OCA.Sharing.PublicApp && OCA.Sharing.PublicApp.fileList) ? OCA.Sharing.PublicApp.fileList.filesClient : OC.Files.getClient()\n\n\t\tthis.filelist = null\n\t\tpath = path || ''\n\t\toptions = Object.assign({\n\t\t\tallowDirectoryChooser: false\n\t\t}, options)\n\n\t\t$.when(this._getFilePickerTemplate()).then(function($tmpl) {\n\t\t\tself.filepicker.loading = false\n\t\t\tvar dialogName = 'oc-dialog-filepicker-content'\n\t\t\tif (self.$filePicker) {\n\t\t\t\tself.$filePicker.ocdialog('close')\n\t\t\t}\n\n\t\t\tif (mimetypeFilter === undefined || mimetypeFilter === null) {\n\t\t\t\tmimetypeFilter = []\n\t\t\t}\n\t\t\tif (typeof (mimetypeFilter) === 'string') {\n\t\t\t\tmimetypeFilter = [mimetypeFilter]\n\t\t\t}\n\n\t\t\tself.$filePicker = $tmpl.octemplate({\n\t\t\t\tdialog_name: dialogName,\n\t\t\t\ttitle: title,\n\t\t\t\temptytext: emptyText,\n\t\t\t\tnewtext: newText,\n\t\t\t\tnameCol: t('core', 'Name'),\n\t\t\t\tsizeCol: t('core', 'Size'),\n\t\t\t\tmodifiedCol: t('core', 'Modified')\n\t\t\t}).data('path', path).data('multiselect', multiselect).data('mimetype', mimetypeFilter).data('allowDirectoryChooser', options.allowDirectoryChooser)\n\t\t\tif (typeof(options.filter) === 'function') {\n\t\t\t\tself.$filePicker.data('filter', options.filter)\n\t\t\t}\n\n\t\t\tif (modal === undefined) {\n\t\t\t\tmodal = false\n\t\t\t}\n\t\t\tif (multiselect === undefined) {\n\t\t\t\tmultiselect = false\n\t\t\t}\n\n\t\t\t$(options?.target ?? 'body').prepend(self.$filePicker)\n\n\t\t\tself.$showGridView = $('button#picker-showgridview')\n\t\t\tself.$showGridView.on('click keydown', function(event) {\n\t\t\t\tif (isA11yActivation(event)) {\n\t\t\t\t\tself._onGridviewChange()\n\t\t\t\t}\n\t\t\t})\n\t\t\tself._getGridSettings()\n\n\t\t\tvar newButton = self.$filePicker.find('.actions.creatable .button-add')\n\t\t\tif (type === self.FILEPICKER_TYPE_CHOOSE && !options.allowDirectoryChooser) {\n\t\t\t\tself.$filePicker.find('.actions.creatable').hide()\n\t\t\t}\n\t\t\tnewButton.on('focus', function() {\n\t\t\t\tself.$filePicker.ocdialog('setEnterCallback', function(event) {\n\t\t\t\t\tevent.stopImmediatePropagation()\n\t\t\t\t\tevent.preventDefault()\n\t\t\t\t\tnewButton.click()\n\t\t\t\t})\n\t\t\t})\n\t\t\tnewButton.on('blur', function() {\n\t\t\t\tself.$filePicker.ocdialog('unsetEnterCallback')\n\t\t\t})\n\n\t\t\tOC.registerMenu(newButton, self.$filePicker.find('.menu'), function() {\n\t\t\t\t$input.tooltip('hide')\n\t\t\t\t$input.focus()\n\t\t\t\tself.$filePicker.ocdialog('setEnterCallback', function(event) {\n\t\t\t\t\tevent.stopImmediatePropagation()\n\t\t\t\t\tevent.preventDefault()\n\t\t\t\t\tself.$filePicker.submit()\n\t\t\t\t})\n\t\t\t\tvar newName = $input.val()\n\t\t\t\tvar lastPos = newName.lastIndexOf('.')\n\t\t\t\tif (lastPos === -1) {\n\t\t\t\t\tlastPos = newName.length\n\t\t\t\t}\n\t\t\t\t$input.selectRange(0, lastPos)\n\t\t\t})\n\t\t\tvar $form = self.$filePicker.find('.filenameform')\n\t\t\tvar $input = $form.find('input[type=\\'text\\']')\n\t\t\tvar $submit = $form.find('input[type=\\'submit\\']')\n\t\t\t$input.on('keydown', function(event) {\n\t\t\t\tif (isA11yActivation(event)) {\n\t\t\t\t\tevent.stopImmediatePropagation()\n\t\t\t\t\tevent.preventDefault()\n\t\t\t\t\t$form.submit()\n\t\t\t\t}\n\t\t\t})\n\t\t\t$submit.on('click', function(event) {\n\t\t\t\tevent.stopImmediatePropagation()\n\t\t\t\tevent.preventDefault()\n\t\t\t\t$form.submit()\n\t\t\t})\n\n\t\t\t/**\n\t\t\t * Checks whether the given file name is valid.\n\t\t\t *\n\t\t\t * @param name file name to check\n\t\t\t * @return true if the file name is valid.\n\t\t\t * @throws a string exception with an error message if\n\t\t\t * the file name is not valid\n\t\t\t *\n\t\t\t * NOTE: This function is duplicated in the files app:\n\t\t\t * https://github.com/nextcloud/server/blob/b9bc2417e7a8dc81feb0abe20359bedaf864f790/apps/files/js/files.js#L127-L148\n\t\t\t */\n\t\t\tvar isFileNameValid = function (name) {\n\t\t\t\tvar trimmedName = name.trim();\n\t\t\t\tif (trimmedName === '.' || trimmedName === '..')\n\t\t\t\t{\n\t\t\t\t\tthrow t('files', '\"{name}\" is an invalid file name.', {name: name})\n\t\t\t\t} else if (trimmedName.length === 0) {\n\t\t\t\t\tthrow t('files', 'File name cannot be empty.')\n\t\t\t\t} else if (trimmedName.indexOf('/') !== -1) {\n\t\t\t\t\tthrow t('files', '\"/\" is not allowed inside a file name.')\n\t\t\t\t} else if (!!(trimmedName.match(OC.config.blacklist_files_regex))) {\n\t\t\t\t\tthrow t('files', '\"{name}\" is not an allowed filetype', {name: name})\n\t\t\t\t}\n\n\t\t\t\treturn true\n\t\t\t}\n\n\t\t\tvar checkInput = function() {\n\t\t\t\tvar filename = $input.val()\n\t\t\t\ttry {\n\t\t\t\t\tif (!isFileNameValid(filename)) {\n\t\t\t\t\t\t// isFileNameValid(filename) throws an exception itself\n\t\t\t\t\t} else if (self.filelist.find(function(file) {\n\t\t\t\t\t\treturn file.name === this\n\t\t\t\t\t}, filename)) {\n\t\t\t\t\t\tthrow t('files', '{newName} already exists', { newName: filename }, undefined, {\n\t\t\t\t\t\t\tescape: false\n\t\t\t\t\t\t})\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn true\n\t\t\t\t\t}\n\t\t\t\t} catch (error) {\n\t\t\t\t\t$input.attr('title', error)\n\t\t\t\t\t$input.tooltip({\n\t\t\t\t\t\tplacement: 'right',\n\t\t\t\t\t\ttrigger: 'manual',\n\t\t\t\t\t\t'container': '.newFolderMenu'\n\t\t\t\t\t})\n\t\t\t\t\t$input.tooltip('_fixTitle')\n\t\t\t\t\t$input.tooltip('show')\n\t\t\t\t\t$input.addClass('error')\n\t\t\t\t}\n\t\t\t\treturn false\n\t\t\t}\n\n\t\t\t$form.on('submit', function(event) {\n\t\t\t\tevent.stopPropagation()\n\t\t\t\tevent.preventDefault()\n\n\t\t\t\tif (checkInput()) {\n\t\t\t\t\tvar newname = $input.val()\n\t\t\t\t\tself.filepicker.filesClient.createDirectory(self.$filePicker.data('path') + \"/\" + newname).always(function (status) {\n\t\t\t\t\t\tself._fillFilePicker(self.$filePicker.data('path') + \"/\" + newname, type)\n\t\t\t\t\t})\n\t\t\t\t\tOC.hideMenus()\n\t\t\t\t\tself.$filePicker.ocdialog('unsetEnterCallback')\n\t\t\t\t\tself.$filePicker.click()\n\t\t\t\t\t$input.val(newText)\n\t\t\t\t}\n\t\t\t})\n\t\t\t$input.on('input', function(event) {\n\t\t\t\t$input.tooltip('hide')\n\t\t\t})\n\n\t\t\tself.$filePicker.ready(function() {\n\t\t\t\tself.$fileListHeader = self.$filePicker.find('.filelist thead tr')\n\t\t\t\tself.$filelist = self.$filePicker.find('.filelist tbody')\n\t\t\t\tself.$filelistContainer = self.$filePicker.find('.filelist-container')\n\t\t\t\tself.$dirTree = self.$filePicker.find('.dirtree')\n\t\t\t\tself.$dirTree.on('click keydown', 'div:not(:last-child)', self, function(event) {\n\t\t\t\t\tif (isA11yActivation(event)) {\n\t\t\t\t\t\tself._handleTreeListSelect(event, type)\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\tself.$filelist.on('click keydown', 'tr', function(event) {\n\t\t\t\t\tif (isA11yActivation(event)) {\n\t\t\t\t\t\tself._handlePickerClick(event, $(this), type)\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\tself.$fileListHeader.on('click keydown', 'a', function(event) {\n\t\t\t\t\tif (isA11yActivation(event)) {\n\t\t\t\t\t\tvar dir = self.$filePicker.data('path')\n\t\t\t\t\t\tself.filepicker.sortField = $(event.currentTarget).data('sort')\n\t\t\t\t\t\tself.filepicker.sortOrder = self.filepicker.sortOrder === 'asc' ? 'desc' : 'asc'\n\t\t\t\t\t\tself._fillFilePicker(dir, type)\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\tself._fillFilePicker(path, type)\n\t\t\t})\n\n\t\t\t// build buttons\n\t\t\tvar functionToCall = function(returnType) {\n\t\t\t\tif (callback !== undefined) {\n\t\t\t\t\tvar datapath\n\t\t\t\t\tif (multiselect === true) {\n\t\t\t\t\t\tdatapath = []\n\t\t\t\t\t\tself.$filelist.find('tr.filepicker_element_selected').each(function(index, element) {\n\t\t\t\t\t\t\tdatapath.push(self.$filePicker.data('path') + '/' + $(element).data('entryname'))\n\t\t\t\t\t\t})\n\t\t\t\t\t} else {\n\t\t\t\t\t\tdatapath = self.$filePicker.data('path')\n\t\t\t\t\t\tvar selectedName = self.$filelist.find('tr.filepicker_element_selected').data('entryname')\n\t\t\t\t\t\tif (selectedName) {\n\t\t\t\t\t\t\tdatapath += '/' + selectedName\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tcallback(datapath, returnType)\n\t\t\t\t\tself.$filePicker.ocdialog('close')\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tvar chooseCallback = function() {\n\t\t\t\tfunctionToCall(Dialogs.FILEPICKER_TYPE_CHOOSE)\n\t\t\t}\n\n\t\t\tvar copyCallback = function() {\n\t\t\t\tfunctionToCall(Dialogs.FILEPICKER_TYPE_COPY)\n\t\t\t}\n\n\t\t\tvar moveCallback = function() {\n\t\t\t\tfunctionToCall(Dialogs.FILEPICKER_TYPE_MOVE)\n\t\t\t}\n\n\t\t\tvar buttonlist = []\n\t\t\tif (type === Dialogs.FILEPICKER_TYPE_CHOOSE) {\n\t\t\t\tbuttonlist.push({\n\t\t\t\t\ttext: t('core', 'Choose'),\n\t\t\t\t\tclick: chooseCallback,\n\t\t\t\t\tdefaultButton: true\n\t\t\t\t})\n\t\t\t} else if (type === Dialogs.FILEPICKER_TYPE_CUSTOM) {\n\t\t\t\toptions.buttons.forEach(function(button) {\n\t\t\t\t\tbuttonlist.push({\n\t\t\t\t\t\ttext: button.text,\n\t\t\t\t\t\tclick: function() {\n\t\t\t\t\t\t\tfunctionToCall(button.type)\n\t\t\t\t\t\t},\n\t\t\t\t\t\tdefaultButton: button.defaultButton\n\t\t\t\t\t})\n\t\t\t\t})\n\t\t\t} else {\n\t\t\t\tif (type === Dialogs.FILEPICKER_TYPE_COPY || type === Dialogs.FILEPICKER_TYPE_COPY_MOVE) {\n\t\t\t\t\tbuttonlist.push({\n\t\t\t\t\t\ttext: t('core', 'Copy'),\n\t\t\t\t\t\tclick: copyCallback,\n\t\t\t\t\t\tdefaultButton: false\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t\tif (type === Dialogs.FILEPICKER_TYPE_MOVE || type === Dialogs.FILEPICKER_TYPE_COPY_MOVE) {\n\t\t\t\t\tbuttonlist.push({\n\t\t\t\t\t\ttext: t('core', 'Move'),\n\t\t\t\t\t\tclick: moveCallback,\n\t\t\t\t\t\tdefaultButton: true\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tself.$filePicker.ocdialog({\n\t\t\t\tcloseOnEscape: true,\n\t\t\t\t// max-width of 600\n\t\t\t\twidth: 600,\n\t\t\t\theight: 500,\n\t\t\t\tmodal: modal,\n\t\t\t\tbuttons: buttonlist,\n\t\t\t\tstyle: {\n\t\t\t\t\tbuttons: 'aside'\n\t\t\t\t},\n\t\t\t\tclose: function() {\n\t\t\t\t\ttry {\n\t\t\t\t\t\t$(this).ocdialog('destroy').remove()\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t}\n\t\t\t\t\tself.$filePicker = null\n\t\t\t\t}\n\t\t\t})\n\n\t\t\t// We can access primary class only from oc-dialog.\n\t\t\t// Hence this is one of the approach to get the choose button.\n\t\t\tvar getOcDialog = self.$filePicker.closest('.oc-dialog')\n\t\t\tvar buttonEnableDisable = getOcDialog.find('.primary')\n\t\t\tif (self.$filePicker.data('mimetype').indexOf('httpd/unix-directory') !== -1 || self.$filePicker.data('allowDirectoryChooser')) {\n\t\t\t\tbuttonEnableDisable.prop('disabled', false)\n\t\t\t} else {\n\t\t\t\tbuttonEnableDisable.prop('disabled', true)\n\t\t\t}\n\t\t})\n\t\t\t.fail(function(status, error) {\n\t\t\t\t// If the method is called while navigating away\n\t\t\t\t// from the page, it is probably not needed ;)\n\t\t\t\tself.filepicker.loading = false\n\t\t\t\tif (status !== 0) {\n\t\t\t\t\talert(t('core', 'Error loading file picker template: {error}', { error: error }))\n\t\t\t\t}\n\t\t\t})\n\t},\n\t/**\n\t * Displays raw dialog\n\t * You better use a wrapper instead ...\n\t */\n\tmessage: function(content, title, dialogType, buttons, callback, modal, allowHtml) {\n\t\treturn $.when(this._getMessageTemplate()).then(function($tmpl) {\n\t\t\tvar dialogName = 'oc-dialog-' + Dialogs.dialogsCounter + '-content'\n\t\t\tvar dialogId = '#' + dialogName\n\t\t\tvar $dlg = $tmpl.octemplate({\n\t\t\t\tdialog_name: dialogName,\n\t\t\t\ttitle: title,\n\t\t\t\tmessage: content,\n\t\t\t\ttype: dialogType\n\t\t\t}, allowHtml ? { escapeFunction: '' } : {})\n\t\t\tif (modal === undefined) {\n\t\t\t\tmodal = false\n\t\t\t}\n\t\t\t$('body').append($dlg)\n\t\t\tvar buttonlist = []\n\t\t\tswitch (buttons) {\n\t\t\tcase Dialogs.YES_NO_BUTTONS:\n\t\t\t\tbuttonlist = [{\n\t\t\t\t\ttext: t('core', 'No'),\n\t\t\t\t\tclick: function() {\n\t\t\t\t\t\tif (callback !== undefined) {\n\t\t\t\t\t\t\tcallback(false)\n\t\t\t\t\t\t}\n\t\t\t\t\t\t$(dialogId).ocdialog('close')\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\ttext: t('core', 'Yes'),\n\t\t\t\t\tclick: function() {\n\t\t\t\t\t\tif (callback !== undefined) {\n\t\t\t\t\t\t\tcallback(true)\n\t\t\t\t\t\t}\n\t\t\t\t\t\t$(dialogId).ocdialog('close')\n\t\t\t\t\t},\n\t\t\t\t\tdefaultButton: true\n\t\t\t\t}]\n\t\t\t\tbreak\n\t\t\tcase Dialogs.OK_BUTTON:\n\t\t\t\tvar functionToCall = function() {\n\t\t\t\t\t$(dialogId).ocdialog('close')\n\t\t\t\t\tif (callback !== undefined) {\n\t\t\t\t\t\tcallback()\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbuttonlist[0] = {\n\t\t\t\t\ttext: t('core', 'OK'),\n\t\t\t\t\tclick: functionToCall,\n\t\t\t\t\tdefaultButton: true\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\tdefault:\n\t\t\t\tif (typeof(buttons) === 'object') {\n\t\t\t\t\tswitch (buttons.type) {\n\t\t\t\t\t\tcase Dialogs.YES_NO_BUTTONS:\n\t\t\t\t\t\t\tbuttonlist = [{\n\t\t\t\t\t\t\t\ttext: buttons.cancel || t('core', 'No'),\n\t\t\t\t\t\t\t\tclick: function() {\n\t\t\t\t\t\t\t\t\tif (callback !== undefined) {\n\t\t\t\t\t\t\t\t\t\tcallback(false)\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t$(dialogId).ocdialog('close')\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\ttext: buttons.confirm || t('core', 'Yes'),\n\t\t\t\t\t\t\t\t\tclick: function() {\n\t\t\t\t\t\t\t\t\t\tif (callback !== undefined) {\n\t\t\t\t\t\t\t\t\t\t\tcallback(true)\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t$(dialogId).ocdialog('close')\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tdefaultButton: true,\n\t\t\t\t\t\t\t\t\tclasses: buttons.confirmClasses\n\t\t\t\t\t\t\t\t}]\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t}\n\n\t\t\t$(dialogId).ocdialog({\n\t\t\t\tcloseOnEscape: true,\n\t\t\t\tcloseCallback: () => { callback && callback(false) },\n\t\t\t\tmodal: modal,\n\t\t\t\tbuttons: buttonlist\n\t\t\t})\n\t\t\tDialogs.dialogsCounter++\n\t\t})\n\t\t\t.fail(function(status, error) {\n\t\t\t\t// If the method is called while navigating away from\n\t\t\t\t// the page, we still want to deliver the message.\n\t\t\t\tif (status === 0) {\n\t\t\t\t\talert(title + ': ' + content)\n\t\t\t\t} else {\n\t\t\t\t\talert(t('core', 'Error loading message template: {error}', { error: error }))\n\t\t\t\t}\n\t\t\t})\n\t},\n\t_fileexistsshown: false,\n\t/**\n\t * Displays file exists dialog\n\t * @param {object} data upload object\n\t * @param {object} original file with name, size and mtime\n\t * @param {object} replacement file with name, size and mtime\n\t * @param {object} controller with onCancel, onSkip, onReplace and onRename methods\n\t * @returns {Promise} jquery promise that resolves after the dialog template was loaded\n\t */\n\tfileexists: function(data, original, replacement, controller) {\n\t\tvar self = this\n\t\tvar dialogDeferred = new $.Deferred()\n\n\t\tvar getCroppedPreview = function(file) {\n\t\t\tvar deferred = new $.Deferred()\n\t\t\t// Only process image files.\n\t\t\tvar type = file.type && file.type.split('/').shift()\n\t\t\tif (window.FileReader && type === 'image') {\n\t\t\t\tvar reader = new FileReader()\n\t\t\t\treader.onload = function(e) {\n\t\t\t\t\tvar blob = new Blob([e.target.result])\n\t\t\t\t\twindow.URL = window.URL || window.webkitURL\n\t\t\t\t\tvar originalUrl = window.URL.createObjectURL(blob)\n\t\t\t\t\tvar image = new Image()\n\t\t\t\t\timage.src = originalUrl\n\t\t\t\t\timage.onload = function() {\n\t\t\t\t\t\tvar url = crop(image)\n\t\t\t\t\t\tdeferred.resolve(url)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treader.readAsArrayBuffer(file)\n\t\t\t} else {\n\t\t\t\tdeferred.reject()\n\t\t\t}\n\t\t\treturn deferred\n\t\t}\n\n\t\tvar crop = function(img) {\n\t\t\tvar canvas = document.createElement('canvas')\n\t\t\tvar targetSize = 96\n\t\t\tvar width = img.width\n\t\t\tvar height = img.height\n\t\t\tvar x; var y; var size\n\n\t\t\t// Calculate the width and height, constraining the proportions\n\t\t\tif (width > height) {\n\t\t\t\ty = 0\n\t\t\t\tx = (width - height) / 2\n\t\t\t} else {\n\t\t\t\ty = (height - width) / 2\n\t\t\t\tx = 0\n\t\t\t}\n\t\t\tsize = Math.min(width, height)\n\n\t\t\t// Set canvas size to the cropped area\n\t\t\tcanvas.width = size\n\t\t\tcanvas.height = size\n\t\t\tvar ctx = canvas.getContext('2d')\n\t\t\tctx.drawImage(img, x, y, size, size, 0, 0, size, size)\n\n\t\t\t// Resize the canvas to match the destination (right size uses 96px)\n\t\t\tresampleHermite(canvas, size, size, targetSize, targetSize)\n\n\t\t\treturn canvas.toDataURL('image/png', 0.7)\n\t\t}\n\n\t\t/**\n\t\t * Fast image resize/resample using Hermite filter with JavaScript.\n\t\t *\n\t\t * @author: ViliusL\n\t\t *\n\t\t * @param {*} canvas\n\t\t * @param {number} W\n\t\t * @param {number} H\n\t\t * @param {number} W2\n\t\t * @param {number} H2\n\t\t */\n\t\tvar resampleHermite = function(canvas, W, H, W2, H2) {\n\t\t\tW2 = Math.round(W2)\n\t\t\tH2 = Math.round(H2)\n\t\t\tvar img = canvas.getContext('2d').getImageData(0, 0, W, H)\n\t\t\tvar img2 = canvas.getContext('2d').getImageData(0, 0, W2, H2)\n\t\t\tvar data = img.data\n\t\t\tvar data2 = img2.data\n\t\t\tvar ratio_w = W / W2\n\t\t\tvar ratio_h = H / H2\n\t\t\tvar ratio_w_half = Math.ceil(ratio_w / 2)\n\t\t\tvar ratio_h_half = Math.ceil(ratio_h / 2)\n\n\t\t\tfor (var j = 0; j < H2; j++) {\n\t\t\t\tfor (var i = 0; i < W2; i++) {\n\t\t\t\t\tvar x2 = (i + j * W2) * 4\n\t\t\t\t\tvar weight = 0\n\t\t\t\t\tvar weights = 0\n\t\t\t\t\tvar weights_alpha = 0\n\t\t\t\t\tvar gx_r = 0\n\t\t\t\t\tvar gx_g = 0\n\t\t\t\t\tvar gx_b = 0\n\t\t\t\t\tvar gx_a = 0\n\t\t\t\t\tvar center_y = (j + 0.5) * ratio_h\n\t\t\t\t\tfor (var yy = Math.floor(j * ratio_h); yy < (j + 1) * ratio_h; yy++) {\n\t\t\t\t\t\tvar dy = Math.abs(center_y - (yy + 0.5)) / ratio_h_half\n\t\t\t\t\t\tvar center_x = (i + 0.5) * ratio_w\n\t\t\t\t\t\tvar w0 = dy * dy // pre-calc part of w\n\t\t\t\t\t\tfor (var xx = Math.floor(i * ratio_w); xx < (i + 1) * ratio_w; xx++) {\n\t\t\t\t\t\t\tvar dx = Math.abs(center_x - (xx + 0.5)) / ratio_w_half\n\t\t\t\t\t\t\tvar w = Math.sqrt(w0 + dx * dx)\n\t\t\t\t\t\t\tif (w >= -1 && w <= 1) {\n\t\t\t\t\t\t\t\t// hermite filter\n\t\t\t\t\t\t\t\tweight = 2 * w * w * w - 3 * w * w + 1\n\t\t\t\t\t\t\t\tif (weight > 0) {\n\t\t\t\t\t\t\t\t\tdx = 4 * (xx + yy * W)\n\t\t\t\t\t\t\t\t\t// alpha\n\t\t\t\t\t\t\t\t\tgx_a += weight * data[dx + 3]\n\t\t\t\t\t\t\t\t\tweights_alpha += weight\n\t\t\t\t\t\t\t\t\t// colors\n\t\t\t\t\t\t\t\t\tif (data[dx + 3] < 255) { weight = weight * data[dx + 3] / 250 }\n\t\t\t\t\t\t\t\t\tgx_r += weight * data[dx]\n\t\t\t\t\t\t\t\t\tgx_g += weight * data[dx + 1]\n\t\t\t\t\t\t\t\t\tgx_b += weight * data[dx + 2]\n\t\t\t\t\t\t\t\t\tweights += weight\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tdata2[x2] = gx_r / weights\n\t\t\t\t\tdata2[x2 + 1] = gx_g / weights\n\t\t\t\t\tdata2[x2 + 2] = gx_b / weights\n\t\t\t\t\tdata2[x2 + 3] = gx_a / weights_alpha\n\t\t\t\t}\n\t\t\t}\n\t\t\tcanvas.getContext('2d').clearRect(0, 0, Math.max(W, W2), Math.max(H, H2))\n\t\t\tcanvas.width = W2\n\t\t\tcanvas.height = H2\n\t\t\tcanvas.getContext('2d').putImageData(img2, 0, 0)\n\t\t}\n\n\t\tvar addConflict = function($conflicts, original, replacement) {\n\n\t\t\tvar $conflict = $conflicts.find('.template').clone().removeClass('template').addClass('conflict')\n\t\t\tvar $originalDiv = $conflict.find('.original')\n\t\t\tvar $replacementDiv = $conflict.find('.replacement')\n\n\t\t\t$conflict.data('data', data)\n\n\t\t\t$conflict.find('.filename').text(original.name)\n\t\t\t$originalDiv.find('.size').text(OC.Util.humanFileSize(original.size))\n\t\t\t$originalDiv.find('.mtime').text(OC.Util.formatDate(original.mtime))\n\t\t\t// ie sucks\n\t\t\tif (replacement.size && replacement.lastModified) {\n\t\t\t\t$replacementDiv.find('.size').text(OC.Util.humanFileSize(replacement.size))\n\t\t\t\t$replacementDiv.find('.mtime').text(OC.Util.formatDate(replacement.lastModified))\n\t\t\t}\n\t\t\tvar path = original.directory + '/' + original.name\n\t\t\tvar urlSpec = {\n\t\t\t\tfile: path,\n\t\t\t\tx: 96,\n\t\t\t\ty: 96,\n\t\t\t\tc: original.etag,\n\t\t\t\tforceIcon: 0\n\t\t\t}\n\t\t\tvar previewpath = Files.generatePreviewUrl(urlSpec)\n\t\t\t// Escaping single quotes\n\t\t\tpreviewpath = previewpath.replace(/'/g, '%27')\n\t\t\t$originalDiv.find('.icon').css({ 'background-image': \"url('\" + previewpath + \"')\" })\n\t\t\tgetCroppedPreview(replacement).then(\n\t\t\t\tfunction(path) {\n\t\t\t\t\t$replacementDiv.find('.icon').css('background-image', 'url(' + path + ')')\n\t\t\t\t}, function() {\n\t\t\t\t\tpath = OC.MimeType.getIconUrl(replacement.type)\n\t\t\t\t\t$replacementDiv.find('.icon').css('background-image', 'url(' + path + ')')\n\t\t\t\t}\n\t\t\t)\n\t\t\t// connect checkboxes with labels\n\t\t\tvar checkboxId = $conflicts.find('.conflict').length\n\t\t\t$originalDiv.find('input:checkbox').attr('id', 'checkbox_original_' + checkboxId)\n\t\t\t$replacementDiv.find('input:checkbox').attr('id', 'checkbox_replacement_' + checkboxId)\n\n\t\t\t$conflicts.append($conflict)\n\n\t\t\t// set more recent mtime bold\n\t\t\t// ie sucks\n\t\t\tif (replacement.lastModified > original.mtime) {\n\t\t\t\t$replacementDiv.find('.mtime').css('font-weight', 'bold')\n\t\t\t} else if (replacement.lastModified < original.mtime) {\n\t\t\t\t$originalDiv.find('.mtime').css('font-weight', 'bold')\n\t\t\t} else {\n\t\t\t\t// TODO add to same mtime collection?\n\t\t\t}\n\n\t\t\t// set bigger size bold\n\t\t\tif (replacement.size && replacement.size > original.size) {\n\t\t\t\t$replacementDiv.find('.size').css('font-weight', 'bold')\n\t\t\t} else if (replacement.size && replacement.size < original.size) {\n\t\t\t\t$originalDiv.find('.size').css('font-weight', 'bold')\n\t\t\t} else {\n\t\t\t\t// TODO add to same size collection?\n\t\t\t}\n\n\t\t\t// TODO show skip action for files with same size and mtime in bottom row\n\n\t\t\t// always keep readonly files\n\n\t\t\tif (original.status === 'readonly') {\n\t\t\t\t$originalDiv\n\t\t\t\t\t.addClass('readonly')\n\t\t\t\t\t.find('input[type=\"checkbox\"]')\n\t\t\t\t\t.prop('checked', true)\n\t\t\t\t\t.prop('disabled', true)\n\t\t\t\t$originalDiv.find('.message')\n\t\t\t\t\t.text(t('core', 'read-only'))\n\t\t\t}\n\t\t}\n\t\t// var selection = controller.getSelection(data.originalFiles);\n\t\t// if (selection.defaultAction) {\n\t\t//\tcontroller[selection.defaultAction](data);\n\t\t// } else {\n\t\tvar dialogName = 'oc-dialog-fileexists-content'\n\t\tvar dialogId = '#' + dialogName\n\t\tif (this._fileexistsshown) {\n\t\t\t// add conflict\n\n\t\t\tvar $conflicts = $(dialogId + ' .conflicts')\n\t\t\taddConflict($conflicts, original, replacement)\n\n\t\t\tvar count = $(dialogId + ' .conflict').length\n\t\t\tvar title = n('core',\n\t\t\t\t'{count} file conflict',\n\t\t\t\t'{count} file conflicts',\n\t\t\t\tcount,\n\t\t\t\t{ count: count }\n\t\t\t)\n\t\t\t$(dialogId).parent().children('.oc-dialog-title').text(title)\n\n\t\t\t// recalculate dimensions\n\t\t\t$(window).trigger('resize')\n\t\t\tdialogDeferred.resolve()\n\t\t} else {\n\t\t\t// create dialog\n\t\t\tthis._fileexistsshown = true\n\t\t\t$.when(this._getFileExistsTemplate()).then(function($tmpl) {\n\t\t\t\tvar title = t('core', 'One file conflict')\n\t\t\t\tvar $dlg = $tmpl.octemplate({\n\t\t\t\t\tdialog_name: dialogName,\n\t\t\t\t\ttitle: title,\n\t\t\t\t\ttype: 'fileexists',\n\n\t\t\t\t\tallnewfiles: t('core', 'New Files'),\n\t\t\t\t\tallexistingfiles: t('core', 'Already existing files'),\n\n\t\t\t\t\twhy: t('core', 'Which files do you want to keep?'),\n\t\t\t\t\twhat: t('core', 'If you select both versions, the copied file will have a number added to its name.')\n\t\t\t\t})\n\t\t\t\t$('body').append($dlg)\n\n\t\t\t\tif (original && replacement) {\n\t\t\t\t\tvar $conflicts = $dlg.find('.conflicts')\n\t\t\t\t\taddConflict($conflicts, original, replacement)\n\t\t\t\t}\n\n\t\t\t\tvar buttonlist = [{\n\t\t\t\t\ttext: t('core', 'Cancel'),\n\t\t\t\t\tclasses: 'cancel',\n\t\t\t\t\tclick: function() {\n\t\t\t\t\t\tif (typeof controller.onCancel !== 'undefined') {\n\t\t\t\t\t\t\tcontroller.onCancel(data)\n\t\t\t\t\t\t}\n\t\t\t\t\t\t$(dialogId).ocdialog('close')\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\ttext: t('core', 'Continue'),\n\t\t\t\t\tclasses: 'continue',\n\t\t\t\t\tclick: function() {\n\t\t\t\t\t\tif (typeof controller.onContinue !== 'undefined') {\n\t\t\t\t\t\t\tcontroller.onContinue($(dialogId + ' .conflict'))\n\t\t\t\t\t\t}\n\t\t\t\t\t\t$(dialogId).ocdialog('close')\n\t\t\t\t\t}\n\t\t\t\t}]\n\n\t\t\t\t$(dialogId).ocdialog({\n\t\t\t\t\twidth: 500,\n\t\t\t\t\tcloseOnEscape: true,\n\t\t\t\t\tmodal: true,\n\t\t\t\t\tbuttons: buttonlist,\n\t\t\t\t\tcloseButton: null,\n\t\t\t\t\tclose: function() {\n\t\t\t\t\t\tself._fileexistsshown = false\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t$(this).ocdialog('destroy').remove()\n\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\t// ignore\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t})\n\n\t\t\t\t$(dialogId).css('height', 'auto')\n\n\t\t\t\tvar $primaryButton = $dlg.closest('.oc-dialog').find('button.continue')\n\t\t\t\t$primaryButton.prop('disabled', true)\n\n\t\t\t\tfunction updatePrimaryButton() {\n\t\t\t\t\tvar checkedCount = $dlg.find('.conflicts .checkbox:checked').length\n\t\t\t\t\t$primaryButton.prop('disabled', checkedCount === 0)\n\t\t\t\t}\n\n\t\t\t\t// add checkbox toggling actions\n\t\t\t\t$(dialogId).find('.allnewfiles').on('click', function() {\n\t\t\t\t\tvar $checkboxes = $(dialogId).find('.conflict .replacement input[type=\"checkbox\"]')\n\t\t\t\t\t$checkboxes.prop('checked', $(this).prop('checked'))\n\t\t\t\t})\n\t\t\t\t$(dialogId).find('.allexistingfiles').on('click', function() {\n\t\t\t\t\tvar $checkboxes = $(dialogId).find('.conflict .original:not(.readonly) input[type=\"checkbox\"]')\n\t\t\t\t\t$checkboxes.prop('checked', $(this).prop('checked'))\n\t\t\t\t})\n\t\t\t\t$(dialogId).find('.conflicts').on('click', '.replacement,.original:not(.readonly)', function() {\n\t\t\t\t\tvar $checkbox = $(this).find('input[type=\"checkbox\"]')\n\t\t\t\t\t$checkbox.prop('checked', !$checkbox.prop('checked'))\n\t\t\t\t})\n\t\t\t\t$(dialogId).find('.conflicts').on('click', '.replacement input[type=\"checkbox\"],.original:not(.readonly) input[type=\"checkbox\"]', function() {\n\t\t\t\t\tvar $checkbox = $(this)\n\t\t\t\t\t$checkbox.prop('checked', !$checkbox.prop('checked'))\n\t\t\t\t})\n\n\t\t\t\t// update counters\n\t\t\t\t$(dialogId).on('click', '.replacement,.allnewfiles', function() {\n\t\t\t\t\tvar count = $(dialogId).find('.conflict .replacement input[type=\"checkbox\"]:checked').length\n\t\t\t\t\tif (count === $(dialogId + ' .conflict').length) {\n\t\t\t\t\t\t$(dialogId).find('.allnewfiles').prop('checked', true)\n\t\t\t\t\t\t$(dialogId).find('.allnewfiles + .count').text(t('core', '(all selected)'))\n\t\t\t\t\t} else if (count > 0) {\n\t\t\t\t\t\t$(dialogId).find('.allnewfiles').prop('checked', false)\n\t\t\t\t\t\t$(dialogId).find('.allnewfiles + .count').text(t('core', '({count} selected)', { count: count }))\n\t\t\t\t\t} else {\n\t\t\t\t\t\t$(dialogId).find('.allnewfiles').prop('checked', false)\n\t\t\t\t\t\t$(dialogId).find('.allnewfiles + .count').text('')\n\t\t\t\t\t}\n\t\t\t\t\tupdatePrimaryButton()\n\t\t\t\t})\n\t\t\t\t$(dialogId).on('click', '.original,.allexistingfiles', function() {\n\t\t\t\t\tvar count = $(dialogId).find('.conflict .original input[type=\"checkbox\"]:checked').length\n\t\t\t\t\tif (count === $(dialogId + ' .conflict').length) {\n\t\t\t\t\t\t$(dialogId).find('.allexistingfiles').prop('checked', true)\n\t\t\t\t\t\t$(dialogId).find('.allexistingfiles + .count').text(t('core', '(all selected)'))\n\t\t\t\t\t} else if (count > 0) {\n\t\t\t\t\t\t$(dialogId).find('.allexistingfiles').prop('checked', false)\n\t\t\t\t\t\t$(dialogId).find('.allexistingfiles + .count')\n\t\t\t\t\t\t\t.text(t('core', '({count} selected)', { count: count }))\n\t\t\t\t\t} else {\n\t\t\t\t\t\t$(dialogId).find('.allexistingfiles').prop('checked', false)\n\t\t\t\t\t\t$(dialogId).find('.allexistingfiles + .count').text('')\n\t\t\t\t\t}\n\t\t\t\t\tupdatePrimaryButton()\n\t\t\t\t})\n\n\t\t\t\tdialogDeferred.resolve()\n\t\t\t})\n\t\t\t\t.fail(function() {\n\t\t\t\t\tdialogDeferred.reject()\n\t\t\t\t\talert(t('core', 'Error loading file exists template'))\n\t\t\t\t})\n\t\t}\n\t\t// }\n\t\treturn dialogDeferred.promise()\n\t},\n\t// get the gridview setting and set the input accordingly\n\t_getGridSettings: function() {\n\t\tconst self = this\n\t\t$.get(OC.generateUrl('/apps/files/api/v1/showgridview'), function(response) {\n\t\t\tself.$showGridView\n\t\t\t\t.removeClass('icon-toggle-filelist icon-toggle-pictures')\n\t\t\t\t.addClass(response.gridview ? 'icon-toggle-filelist' : 'icon-toggle-pictures')\n\t\t\tself.$showGridView.attr(\n\t\t\t\t'aria-label',\n\t\t\t\tresponse.gridview ? t('files', 'Show list view') : t('files', 'Show grid view'),\n\t\t\t)\n\t\t\t$('.list-container').toggleClass('view-grid', response.gridview)\n\t\t})\n\t},\n\t_onGridviewChange: function() {\n\t\tconst isGridView = this.$showGridView.hasClass('icon-toggle-filelist')\n\t\t// only save state if user is logged in\n\t\tif (OC.currentUser) {\n\t\t\t$.post(OC.generateUrl('/apps/files/api/v1/showgridview'), { show: !isGridView })\n\t\t}\n\t\tthis.$showGridView\n\t\t\t.removeClass('icon-toggle-filelist icon-toggle-pictures')\n\t\t\t.addClass(isGridView ? 'icon-toggle-pictures' : 'icon-toggle-filelist')\n\t\tthis.$showGridView.attr(\n\t\t\t'aria-label',\n\t\t\tisGridView ? t('files', 'Show grid view') : t('files', 'Show list view'),\n\t\t)\n\t\tthis.$filePicker.find('.list-container').toggleClass('view-grid', !isGridView)\n\t},\n\t_getFilePickerTemplate: function() {\n\t\tvar defer = $.Deferred()\n\t\tif (!this.$filePickerTemplate) {\n\t\t\tvar self = this\n\t\t\t$.get(OC.filePath('core', 'templates', 'filepicker.html'), function(tmpl) {\n\t\t\t\tself.$filePickerTemplate = $(tmpl)\n\t\t\t\tself.$listTmpl = self.$filePickerTemplate.find('.filelist tbody tr:first-child').detach()\n\t\t\t\tdefer.resolve(self.$filePickerTemplate)\n\t\t\t})\n\t\t\t\t.fail(function(jqXHR, textStatus, errorThrown) {\n\t\t\t\t\tdefer.reject(jqXHR.status, errorThrown)\n\t\t\t\t})\n\t\t} else {\n\t\t\tdefer.resolve(this.$filePickerTemplate)\n\t\t}\n\t\treturn defer.promise()\n\t},\n\t_getMessageTemplate: function() {\n\t\tvar defer = $.Deferred()\n\t\tif (!this.$messageTemplate) {\n\t\t\tvar self = this\n\t\t\t$.get(OC.filePath('core', 'templates', 'message.html'), function(tmpl) {\n\t\t\t\tself.$messageTemplate = $(tmpl)\n\t\t\t\tdefer.resolve(self.$messageTemplate)\n\t\t\t})\n\t\t\t\t.fail(function(jqXHR, textStatus, errorThrown) {\n\t\t\t\t\tdefer.reject(jqXHR.status, errorThrown)\n\t\t\t\t})\n\t\t} else {\n\t\t\tdefer.resolve(this.$messageTemplate)\n\t\t}\n\t\treturn defer.promise()\n\t},\n\t_getFileExistsTemplate: function() {\n\t\tvar defer = $.Deferred()\n\t\tif (!this.$fileexistsTemplate) {\n\t\t\tvar self = this\n\t\t\t$.get(OC.filePath('files', 'templates', 'fileexists.html'), function(tmpl) {\n\t\t\t\tself.$fileexistsTemplate = $(tmpl)\n\t\t\t\tdefer.resolve(self.$fileexistsTemplate)\n\t\t\t})\n\t\t\t\t.fail(function() {\n\t\t\t\t\tdefer.reject()\n\t\t\t\t})\n\t\t} else {\n\t\t\tdefer.resolve(this.$fileexistsTemplate)\n\t\t}\n\t\treturn defer.promise()\n\t},\n\n\t/**\n\t * fills the filepicker with files\n\t */\n\t_fillFilePicker: async function(dir, type) {\n\t\tvar self = this\n\t\tthis.$filelist.empty()\n\t\tthis.$filePicker.find('.emptycontent').hide()\n\t\tthis.$filelistContainer.addClass('icon-loading')\n\t\tthis.$filePicker.data('path', dir)\n\t\tvar filter = this.$filePicker.data('mimetype')\n\t\tvar advancedFilter = this.$filePicker.data('filter')\n\t\tif (typeof (filter) === 'string') {\n\t\t\tfilter = [filter]\n\t\t}\n\t\tself.$fileListHeader.find('.sort-indicator').addClass('hidden').removeClass('icon-triangle-n').removeClass('icon-triangle-s')\n\t\tself.$fileListHeader.find('[data-sort=' + self.filepicker.sortField + '] .sort-indicator').removeClass('hidden')\n\t\tif (self.filepicker.sortOrder === 'asc') {\n\t\t\tself.$fileListHeader.find('[data-sort=' + self.filepicker.sortField + '] .sort-indicator').addClass('icon-triangle-n')\n\t\t} else {\n\t\t\tself.$fileListHeader.find('[data-sort=' + self.filepicker.sortField + '] .sort-indicator').addClass('icon-triangle-s')\n\t\t}\n\n\t\t// Wrap within a method because a promise cannot return multiple values\n\t\t// But the client impleemntation still does it...\n\t\tvar getFolderContents = async function(dir) {\n\t\t\treturn self.filepicker.filesClient.getFolderContents(dir)\n\t\t\t\t.then((status, files) => {\n\t\t\t\t\treturn files\n\t\t\t\t})\n\t\t}\n\n\t\ttry {\n\t\t\tvar files = await getFolderContents(dir)\n\t\t} catch (error) {\n\t\t\t// fallback to root if requested dir is non-existent\n\t\t\tconsole.error('Requested path does not exists, falling back to root')\n\t\t\tvar files = await getFolderContents('/')\n\t\t\tthis.$filePicker.data('path', '/')\n\t\t\tthis._changeButtonsText(type, '')\n\t\t}\n\n\t\tself.filelist = files\n\t\tif (filter && filter.length > 0 && filter.indexOf('*') === -1) {\n\t\t\tfiles = files.filter(function(file) {\n\t\t\t\treturn file.type === 'dir' || filter.indexOf(file.mimetype) !== -1\n\t\t\t})\n\t\t}\n\n\t\tif (advancedFilter) {\n\t\t\tfiles = files.filter(advancedFilter)\n\t\t}\n\n\t\t// Check if the showHidden input field exist and if it exist follow it\n\t\t// Otherwise just show the hidden files\n\t\tconst showHiddenInput = document.getElementById('showHiddenFiles')\n\t\tconst showHidden = showHiddenInput === null || showHiddenInput.value === \"1\"\n\t\tif (!showHidden) {\n\t\t\tfiles = files.filter(function(file) {\n\t\t\t\treturn !file.name.startsWith('.')\n\t\t\t})\n\t\t}\n\n\t\tvar Comparators = {\n\t\t\tname: function(fileInfo1, fileInfo2) {\n\t\t\t\tif (fileInfo1.type === 'dir' && fileInfo2.type !== 'dir') {\n\t\t\t\t\treturn -1\n\t\t\t\t}\n\t\t\t\tif (fileInfo1.type !== 'dir' && fileInfo2.type === 'dir') {\n\t\t\t\t\treturn 1\n\t\t\t\t}\n\t\t\t\treturn OC.Util.naturalSortCompare(fileInfo1.name, fileInfo2.name)\n\t\t\t},\n\t\t\tsize: function(fileInfo1, fileInfo2) {\n\t\t\t\treturn fileInfo1.size - fileInfo2.size\n\t\t\t},\n\t\t\tmtime: function(fileInfo1, fileInfo2) {\n\t\t\t\treturn fileInfo1.mtime - fileInfo2.mtime\n\t\t\t}\n\t\t}\n\t\tvar comparator = Comparators[self.filepicker.sortField] || Comparators.name\n\t\tfiles = files.sort(function(file1, file2) {\n\t\t\tvar isFavorite = function(fileInfo) {\n\t\t\t\treturn fileInfo.tags && fileInfo.tags.indexOf(OC.TAG_FAVORITE) >= 0\n\t\t\t}\n\n\t\t\tif (isFavorite(file1) && !isFavorite(file2)) {\n\t\t\t\treturn -1\n\t\t\t} else if (!isFavorite(file1) && isFavorite(file2)) {\n\t\t\t\treturn 1\n\t\t\t}\n\n\t\t\treturn self.filepicker.sortOrder === 'asc' ? comparator(file1, file2) : -comparator(file1, file2)\n\t\t})\n\n\t\tself._fillSlug()\n\n\t\tif (files.length === 0) {\n\t\t\tself.$filePicker.find('.emptycontent').show()\n\t\t\tself.$fileListHeader.hide()\n\t\t} else {\n\t\t\tself.$filePicker.find('.emptycontent').hide()\n\t\t\tself.$fileListHeader.show()\n\t\t}\n\n\t\tself.$filelist.empty();\n\n\t\t$.each(files, function(idx, entry) {\n\t\t\tif (entry.isEncrypted && entry.mimetype === 'httpd/unix-directory') {\n\t\t\t\tentry.icon = OC.MimeType.getIconUrl('dir-encrypted')\n\t\t\t} else {\n\t\t\t\tentry.icon = OC.MimeType.getIconUrl(entry.mimetype)\n\t\t\t}\n\n\t\t\tvar simpleSize, sizeColor\n\t\t\tif (typeof (entry.size) !== 'undefined' && entry.size >= 0) {\n\t\t\t\tsimpleSize = OC.Util.humanFileSize(parseInt(entry.size, 10), true)\n\t\t\t\tsizeColor = Math.round(160 - Math.pow((entry.size / (1024 * 1024)), 2))\n\t\t\t} else {\n\t\t\t\tsimpleSize = t('files', 'Pending')\n\t\t\t\tsizeColor = 80\n\t\t\t}\n\n\t\t\t// split the filename in half if the size is bigger than 20 char\n\t\t\t// for ellipsis\n\t\t\tif (entry.name.length >= 10) {\n\t\t\t\t// leave maximum 10 letters\n\t\t\t\tvar split = Math.min(Math.floor(entry.name.length / 2), 10)\n\t\t\t\tvar filename1 = entry.name.substr(0, entry.name.length - split)\n\t\t\t\tvar filename2 = entry.name.substr(entry.name.length - split)\n\t\t\t} else {\n\t\t\t\tvar filename1 = entry.name\n\t\t\t\tvar filename2 = ''\n\t\t\t}\n\n\t\t\tvar $row = self.$listTmpl.octemplate({\n\t\t\t\ttype: entry.type,\n\t\t\t\tdir: dir,\n\t\t\t\tfilename: entry.name,\n\t\t\t\tfilename1: filename1,\n\t\t\t\tfilename2: filename2,\n\t\t\t\tdate: OC.Util.relativeModifiedDate(entry.mtime),\n\t\t\t\tsize: simpleSize,\n\t\t\t\tsizeColor: sizeColor,\n\t\t\t\ticon: entry.icon\n\t\t\t})\n\t\t\tif (entry.type === 'file') {\n\t\t\t\tvar urlSpec = {\n\t\t\t\t\tfile: dir + '/' + entry.name,\n\t\t\t\t\tx: 100,\n\t\t\t\t\ty: 100\n\t\t\t\t}\n\t\t\t\tvar img = new Image()\n\t\t\t\tvar previewUrl = OC.generateUrl('/core/preview.png?') + $.param(urlSpec)\n\t\t\t\timg.onload = function() {\n\t\t\t\t\tif (img.width > 5) {\n\t\t\t\t\t\t$row.find('td.filename').attr('style', 'background-image:url(' + previewUrl + ')')\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\timg.src = previewUrl\n\t\t\t}\n\t\t\tself.$filelist.append($row)\n\t\t})\n\n\t\tself.$filelistContainer.removeClass('icon-loading')\n\t},\n\t/**\n\t * fills the tree list with directories\n\t */\n\t_fillSlug: function() {\n\t\tvar addButton = this.$dirTree.find('.actions.creatable').detach()\n\t\tthis.$dirTree.empty()\n\t\tvar self = this\n\n\t\tself.$dirTree.append(addButton)\n\n\t\tvar dir\n\t\tvar path = this.$filePicker.data('path')\n\t\tvar $template = $('<div data-dir=\"{dir}\" tabindex=\"0\"><a>{name}</a></div>').addClass('crumb')\n\t\tif (path) {\n\t\t\tvar paths = path.split('/')\n\t\t\t$.each(paths, function(index, dir) {\n\t\t\t\tdir = paths.pop()\n\t\t\t\tif (dir === '') {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t\tself.$dirTree.prepend($template.octemplate({\n\t\t\t\t\tdir: paths.join('/') + '/' + dir,\n\t\t\t\t\tname: dir\n\t\t\t\t}))\n\t\t\t})\n\t\t}\n\n\t\t$template.octemplate({\n\t\t\tdir: '',\n\t\t\tname: t('core', 'Home'),\n\t\t}, { escapeFunction: null }).prependTo(this.$dirTree)\n\n\t},\n\t/**\n\t * handle selection made in the tree list\n\t */\n\t_handleTreeListSelect: function(event, type) {\n\t\tvar self = event.data\n\t\tvar dir = $(event.target).closest('.crumb').data('dir')\n\t\tself._fillFilePicker(dir, type)\n\t\tvar getOcDialog = (event.target).closest('.oc-dialog')\n\t\tvar buttonEnableDisable = $('.primary', getOcDialog)\n\t\tthis._changeButtonsText(type, dir.split(/[/]+/).pop())\n\t\tif (this.$filePicker.data('mimetype').indexOf('httpd/unix-directory') !== -1 || this.$filePicker.data('allowDirectoryChooser')) {\n\t\t\tbuttonEnableDisable.prop('disabled', false)\n\t\t} else {\n\t\t\tbuttonEnableDisable.prop('disabled', true)\n\t\t}\n\t},\n\t/**\n\t * handle clicks made in the filepicker\n\t */\n\t_handlePickerClick: function(event, $element, type) {\n\t\tvar getOcDialog = this.$filePicker.closest('.oc-dialog')\n\t\tvar buttonEnableDisable = getOcDialog.find('.primary')\n\t\tif ($element.data('type') === 'file') {\n\t\t\tif (this.$filePicker.data('multiselect') !== true || !event.ctrlKey) {\n\t\t\t\tthis.$filelist.find('.filepicker_element_selected').removeClass('filepicker_element_selected')\n\t\t\t}\n\t\t\t$element.toggleClass('filepicker_element_selected')\n\t\t\tbuttonEnableDisable.prop('disabled', false)\n\t\t} else if ($element.data('type') === 'dir') {\n\t\t\tthis._fillFilePicker(this.$filePicker.data('path') + '/' + $element.data('entryname'), type)\n\t\t\tthis._changeButtonsText(type, $element.data('entryname'))\n\t\t\tif (this.$filePicker.data('mimetype').indexOf('httpd/unix-directory') !== -1 || this.$filePicker.data('allowDirectoryChooser')) {\n\t\t\t\tbuttonEnableDisable.prop('disabled', false)\n\t\t\t} else {\n\t\t\t\tbuttonEnableDisable.prop('disabled', true)\n\t\t\t}\n\t\t}\n\t},\n\n\t/**\n\t * Handle\n\t * @param type of action\n\t * @param dir on which to change buttons text\n\t * @private\n\t */\n\t_changeButtonsText: function(type, dir) {\n\t\tvar copyText = dir === '' ? t('core', 'Copy') : t('core', 'Copy to {folder}', { folder: dir })\n\t\tvar moveText = dir === '' ? t('core', 'Move') : t('core', 'Move to {folder}', { folder: dir })\n\t\tvar buttons = $('.oc-dialog-buttonrow button')\n\t\tswitch (type) {\n\t\t\tcase this.FILEPICKER_TYPE_CHOOSE:\n\t\t\t\tbreak\n\t\t\tcase this.FILEPICKER_TYPE_CUSTOM:\n\t\t\t\tbreak\n\t\t\tcase this.FILEPICKER_TYPE_COPY:\n\t\t\t\tbuttons.text(copyText)\n\t\t\t\tbreak\n\t\t\tcase this.FILEPICKER_TYPE_MOVE:\n\t\t\t\tbuttons.text(moveText)\n\t\t\t\tbreak\n\t\t\tcase this.FILEPICKER_TYPE_COPY_MOVE:\n\t\t\t\tbuttons.eq(0).text(copyText)\n\t\t\t\tbuttons.eq(1).text(moveText)\n\t\t\t\tbreak\n\t\t}\n\t}\n}\n\nexport default Dialogs\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { emit } from '@nextcloud/event-bus'\n\n/**\n * @private\n * @param {Document} global the document to read the initial value from\n * @param {Function} emit the function to invoke for every new token\n * @return {object}\n */\nexport const manageToken = (global, emit) => {\n\tlet token = global.getElementsByTagName('head')[0].getAttribute('data-requesttoken')\n\n\treturn {\n\t\tgetToken: () => token,\n\t\tsetToken: newToken => {\n\t\t\ttoken = newToken\n\n\t\t\temit('csrf-token-update', {\n\t\t\t\ttoken,\n\t\t\t})\n\t\t},\n\t}\n}\n\nconst manageFromDocument = manageToken(document, emit)\n\n/**\n * @return {string}\n */\nexport const getToken = manageFromDocument.getToken\n\n/**\n * @param {string} newToken new token\n */\nexport const setToken = manageFromDocument.setToken\n","/**\n * @copyright 2012 Robin Appelman icewind1991@gmail.com\n *\n * @author Arthur Schiwon <blizzz@arthur-schiwon.de>\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Lukas Reschke <lukas@statuscode.ch>\n * @author Robin Appelman <robin@icewind.nl>\n * @author Thomas Müller <thomas.mueller@tmit.eu>\n * @author Vincent Petry <vincent@nextcloud.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n/* eslint-disable */\nimport $ from 'jquery'\n\nimport { getToken } from './requesttoken'\n\n/**\n * Create a new event source\n * @param {string} src\n * @param {object} [data] to be send as GET\n *\n * @constructs OCEventSource\n */\nconst OCEventSource = function(src, data) {\n\tvar dataStr = ''\n\tvar name\n\tvar joinChar\n\tthis.typelessListeners = []\n\tthis.closed = false\n\tthis.listeners = {}\n\tif (data) {\n\t\tfor (name in data) {\n\t\t\tdataStr += name + '=' + encodeURIComponent(data[name]) + '&'\n\t\t}\n\t}\n\tdataStr += 'requesttoken=' + encodeURIComponent(getToken())\n\tif (!this.useFallBack && typeof EventSource !== 'undefined') {\n\t\tjoinChar = '&'\n\t\tif (src.indexOf('?') === -1) {\n\t\t\tjoinChar = '?'\n\t\t}\n\t\tthis.source = new EventSource(src + joinChar + dataStr)\n\t\tthis.source.onmessage = function(e) {\n\t\t\tfor (var i = 0; i < this.typelessListeners.length; i++) {\n\t\t\t\tthis.typelessListeners[i](JSON.parse(e.data))\n\t\t\t}\n\t\t}.bind(this)\n\t} else {\n\t\tvar iframeId = 'oc_eventsource_iframe_' + OCEventSource.iframeCount\n\t\tOCEventSource.fallBackSources[OCEventSource.iframeCount] = this\n\t\tthis.iframe = $('<iframe></iframe>')\n\t\tthis.iframe.attr('id', iframeId)\n\t\tthis.iframe.hide()\n\n\t\tjoinChar = '&'\n\t\tif (src.indexOf('?') === -1) {\n\t\t\tjoinChar = '?'\n\t\t}\n\t\tthis.iframe.attr('src', src + joinChar + 'fallback=true&fallback_id=' + OCEventSource.iframeCount + '&' + dataStr)\n\t\t$('body').append(this.iframe)\n\t\tthis.useFallBack = true\n\t\tOCEventSource.iframeCount++\n\t}\n\t// add close listener\n\tthis.listen('__internal__', function(data) {\n\t\tif (data === 'close') {\n\t\t\tthis.close()\n\t\t}\n\t}.bind(this))\n}\nOCEventSource.fallBackSources = []\nOCEventSource.iframeCount = 0// number of fallback iframes\nOCEventSource.fallBackCallBack = function(id, type, data) {\n\tOCEventSource.fallBackSources[id].fallBackCallBack(type, data)\n}\nOCEventSource.prototype = {\n\ttypelessListeners: [],\n\tiframe: null,\n\tlisteners: {}, // only for fallback\n\tuseFallBack: false,\n\t/**\n\t * Fallback callback for browsers that don't have the\n\t * native EventSource object.\n\t *\n\t * Calls the registered listeners.\n\t *\n\t * @private\n\t * @param {String} type event type\n\t * @param {Object} data received data\n\t */\n\tfallBackCallBack: function(type, data) {\n\t\tvar i\n\t\t// ignore messages that might appear after closing\n\t\tif (this.closed) {\n\t\t\treturn\n\t\t}\n\t\tif (type) {\n\t\t\tif (typeof this.listeners.done !== 'undefined') {\n\t\t\t\tfor (i = 0; i < this.listeners[type].length; i++) {\n\t\t\t\t\tthis.listeners[type][i](data)\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfor (i = 0; i < this.typelessListeners.length; i++) {\n\t\t\t\tthis.typelessListeners[i](data)\n\t\t\t}\n\t\t}\n\t},\n\tlastLength: 0, // for fallback\n\t/**\n\t * Listen to a given type of events.\n\t *\n\t * @param {String} type event type\n\t * @param {Function} callback event callback\n\t */\n\tlisten: function(type, callback) {\n\t\tif (callback && callback.call) {\n\n\t\t\tif (type) {\n\t\t\t\tif (this.useFallBack) {\n\t\t\t\t\tif (!this.listeners[type]) {\n\t\t\t\t\t\tthis.listeners[type] = []\n\t\t\t\t\t}\n\t\t\t\t\tthis.listeners[type].push(callback)\n\t\t\t\t} else {\n\t\t\t\t\tthis.source.addEventListener(type, function(e) {\n\t\t\t\t\t\tif (typeof e.data !== 'undefined') {\n\t\t\t\t\t\t\tcallback(JSON.parse(e.data))\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcallback('')\n\t\t\t\t\t\t}\n\t\t\t\t\t}, false)\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tthis.typelessListeners.push(callback)\n\t\t\t}\n\t\t}\n\t},\n\t/**\n\t * Closes this event source.\n\t */\n\tclose: function() {\n\t\tthis.closed = true\n\t\tif (typeof this.source !== 'undefined') {\n\t\t\tthis.source.close()\n\t\t}\n\t}\n}\n\nexport default OCEventSource\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Daniel Calviño Sánchez <danxuliu@gmail.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport _ from 'underscore'\n/** @typedef {import('jquery')} jQuery */\nimport $ from 'jquery'\n\nimport { menuSpeed } from './constants'\n\nexport let currentMenu = null\nexport let currentMenuToggle = null\n\n/**\n * For menu toggling\n *\n * @param {jQuery} $toggle the toggle element\n * @param {jQuery} $menuEl the menu container element\n * @param {Function | undefined} toggle callback invoked everytime the menu is opened\n * @param {boolean} headerMenu is this a top right header menu?\n * @return {void}\n */\nexport const registerMenu = function($toggle, $menuEl, toggle, headerMenu) {\n\t$menuEl.addClass('menu')\n\tconst isClickableElement = $toggle.prop('tagName') === 'A' || $toggle.prop('tagName') === 'BUTTON'\n\n\t// On link and button, the enter key trigger a click event\n\t// Only use the click to avoid two fired events\n\t$toggle.on(isClickableElement ? 'click.menu' : 'click.menu keyup.menu', function(event) {\n\t\t// prevent the link event (append anchor to URL)\n\t\tevent.preventDefault()\n\n\t\t// allow enter key as a trigger\n\t\tif (event.key && event.key !== 'Enter') {\n\t\t\treturn\n\t\t}\n\n\t\tif ($menuEl.is(currentMenu)) {\n\t\t\thideMenus()\n\t\t\treturn\n\t\t} else if (currentMenu) {\n\t\t\t// another menu was open?\n\t\t\t// close it\n\t\t\thideMenus()\n\t\t}\n\n\t\tif (headerMenu === true) {\n\t\t\t$menuEl.parent().addClass('openedMenu')\n\t\t}\n\n\t\t// Set menu to expanded\n\t\t$toggle.attr('aria-expanded', true)\n\n\t\t$menuEl.slideToggle(menuSpeed, toggle)\n\t\tcurrentMenu = $menuEl\n\t\tcurrentMenuToggle = $toggle\n\t})\n}\n\n/**\n * Unregister a previously registered menu\n *\n * @param {jQuery} $toggle the toggle element\n * @param {jQuery} $menuEl the menu container element\n */\nexport const unregisterMenu = ($toggle, $menuEl) => {\n\t// close menu if opened\n\tif ($menuEl.is(currentMenu)) {\n\t\thideMenus()\n\t}\n\t$toggle.off('click.menu').removeClass('menutoggle')\n\t$menuEl.removeClass('menu')\n}\n\n/**\n * Hides any open menus\n *\n * @param {Function} complete callback when the hiding animation is done\n */\nexport const hideMenus = function(complete) {\n\tif (currentMenu) {\n\t\tconst lastMenu = currentMenu\n\t\tcurrentMenu.trigger(new $.Event('beforeHide'))\n\t\tcurrentMenu.slideUp(menuSpeed, function() {\n\t\t\tlastMenu.trigger(new $.Event('afterHide'))\n\t\t\tif (complete) {\n\t\t\t\tcomplete.apply(this, arguments)\n\t\t\t}\n\t\t})\n\t}\n\n\t// Set menu to closed\n\t$('.menutoggle').attr('aria-expanded', false)\n\tif (currentMenuToggle) {\n\t\tcurrentMenuToggle.attr('aria-expanded', false)\n\t}\n\n\t$('.openedMenu').removeClass('openedMenu')\n\tcurrentMenu = null\n\tcurrentMenuToggle = null\n}\n\n/**\n * Shows a given element as menu\n *\n * @param {object} [$toggle=null] menu toggle\n * @param {object} $menuEl menu element\n * @param {Function} complete callback when the showing animation is done\n */\nexport const showMenu = ($toggle, $menuEl, complete) => {\n\tif ($menuEl.is(currentMenu)) {\n\t\treturn\n\t}\n\thideMenus()\n\tcurrentMenu = $menuEl\n\tcurrentMenuToggle = $toggle\n\t$menuEl.trigger(new $.Event('beforeShow'))\n\t$menuEl.show()\n\t$menuEl.trigger(new $.Event('afterShow'))\n\t// no animation\n\tif (_.isFunction(complete)) {\n\t\tcomplete()\n\t}\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nexport const coreApps = ['', 'admin', 'log', 'core/search', 'core', '3rdparty']\nexport const menuSpeed = 50\nexport const PERMISSION_NONE = 0\nexport const PERMISSION_CREATE = 4\nexport const PERMISSION_READ = 1\nexport const PERMISSION_UPDATE = 2\nexport const PERMISSION_DELETE = 8\nexport const PERMISSION_SHARE = 16\nexport const PERMISSION_ALL = 31\nexport const TAG_FAVORITE = '_$!<Favorite>!$_'\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nconst isAdmin = !!window._oc_isadmin\n\n/**\n * Returns whether the current user is an administrator\n *\n * @return {boolean} true if the user is an admin, false otherwise\n * @since 9.0.0\n */\nexport const isUserAdmin = () => isAdmin\n","/**\n * Copyright (c) 2014 Vincent Petry <pvince81@owncloud.com>\n * Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Daniel Kesselberg <mail@danielkesselberg.de>\n * @author Joas Schilling <coding@schilljs.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Morris Jobke <hey@morrisjobke.de>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n * @author Vincent Petry <vincent@nextcloud.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport Handlebars from 'handlebars'\nimport {\n\tloadTranslations,\n\ttranslate,\n\ttranslatePlural,\n\tregister,\n\tunregister,\n} from '@nextcloud/l10n'\n\n/**\n * L10N namespace with localization functions.\n *\n * @namespace OC.L10n\n * @deprecated 26.0.0 use https://www.npmjs.com/package/@nextcloud/l10n\n */\nconst L10n = {\n\n\t/**\n\t * Load an app's translation bundle if not loaded already.\n\t *\n\t * @deprecated 26.0.0 use `loadTranslations` from https://www.npmjs.com/package/@nextcloud/l10n\n\t *\n\t * @param {string} appName name of the app\n\t * @param {Function} callback callback to be called when\n\t * the translations are loaded\n\t * @return {Promise} promise\n\t */\n\tload: loadTranslations,\n\n\t/**\n\t * Register an app's translation bundle.\n\t *\n\t * @deprecated 26.0.0 use `register` from https://www.npmjs.com/package/@nextcloud/l10\n\t *\n\t * @param {string} appName name of the app\n\t * @param {Object<string, string>} bundle bundle\n\t */\n\tregister,\n\n\t/**\n\t * @private\n\t * @deprecated 26.0.0 use `unregister` from https://www.npmjs.com/package/@nextcloud/l10n\n\t */\n\t_unregister: unregister,\n\n\t/**\n\t * Translate a string\n\t *\n\t * @deprecated 26.0.0 use `translate` from https://www.npmjs.com/package/@nextcloud/l10n\n\t *\n\t * @param {string} app the id of the app for which to translate the string\n\t * @param {string} text the string to translate\n\t * @param {object} [vars] map of placeholder key to value\n\t * @param {number} [count] number to replace %n with\n\t * @param {Array} [options] options array\n\t * @param {boolean} [options.escape=true] enable/disable auto escape of placeholders (by default enabled)\n\t * @param {boolean} [options.sanitize=true] enable/disable sanitization (by default enabled)\n\t * @return {string}\n\t */\n\ttranslate,\n\n\t/**\n\t * Translate a plural string\n\t *\n\t * @deprecated 26.0.0 use `translatePlural` from https://www.npmjs.com/package/@nextcloud/l10n\n\t *\n\t * @param {string} app the id of the app for which to translate the string\n\t * @param {string} textSingular the string to translate for exactly one object\n\t * @param {string} textPlural the string to translate for n objects\n\t * @param {number} count number to determine whether to use singular or plural\n\t * @param {object} [vars] map of placeholder key to value\n\t * @param {Array} [options] options array\n\t * @param {boolean} [options.escape=true] enable/disable auto escape of placeholders (by default enabled)\n\t * @return {string} Translated string\n\t */\n\ttranslatePlural,\n}\n\nexport default L10n\n\nHandlebars.registerHelper('t', function(app, text) {\n\treturn translate(app, text)\n})\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author rakekniven <mark.ziegler@rakekniven.de>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport $ from 'jquery'\n\n/**\n * A little class to manage a status field for a \"saving\" process.\n * It can be used to display a starting message (e.g. \"Saving...\") and then\n * replace it with a green success message or a red error message.\n *\n * @namespace OC.msg\n */\nexport default {\n\t/**\n\t * Displayes a \"Saving...\" message in the given message placeholder\n\t *\n\t * @param {object} selector Placeholder to display the message in\n\t */\n\tstartSaving(selector) {\n\t\tthis.startAction(selector, t('core', 'Saving …'))\n\t},\n\n\t/**\n\t * Displayes a custom message in the given message placeholder\n\t *\n\t * @param {object} selector Placeholder to display the message in\n\t * @param {string} message Plain text message to display (no HTML allowed)\n\t */\n\tstartAction(selector, message) {\n\t\t$(selector).text(message)\n\t\t\t.removeClass('success')\n\t\t\t.removeClass('error')\n\t\t\t.stop(true, true)\n\t\t\t.show()\n\t},\n\n\t/**\n\t * Displayes an success/error message in the given selector\n\t *\n\t * @param {object} selector Placeholder to display the message in\n\t * @param {object} response Response of the server\n\t * @param {object} response.data Data of the servers response\n\t * @param {string} response.data.message Plain text message to display (no HTML allowed)\n\t * @param {string} response.status is being used to decide whether the message\n\t * is displayed as an error/success\n\t */\n\tfinishedSaving(selector, response) {\n\t\tthis.finishedAction(selector, response)\n\t},\n\n\t/**\n\t * Displayes an success/error message in the given selector\n\t *\n\t * @param {object} selector Placeholder to display the message in\n\t * @param {object} response Response of the server\n\t * @param {object} response.data Data of the servers response\n\t * @param {string} response.data.message Plain text message to display (no HTML allowed)\n\t * @param {string} response.status is being used to decide whether the message\n\t * is displayed as an error/success\n\t */\n\tfinishedAction(selector, response) {\n\t\tif (response.status === 'success') {\n\t\t\tthis.finishedSuccess(selector, response.data.message)\n\t\t} else {\n\t\t\tthis.finishedError(selector, response.data.message)\n\t\t}\n\t},\n\n\t/**\n\t * Displayes an success message in the given selector\n\t *\n\t * @param {object} selector Placeholder to display the message in\n\t * @param {string} message Plain text success message to display (no HTML allowed)\n\t */\n\tfinishedSuccess(selector, message) {\n\t\t$(selector).text(message)\n\t\t\t.addClass('success')\n\t\t\t.removeClass('error')\n\t\t\t.stop(true, true)\n\t\t\t.delay(3000)\n\t\t\t.fadeOut(900)\n\t\t\t.show()\n\t},\n\n\t/**\n\t * Displayes an error message in the given selector\n\t *\n\t * @param {object} selector Placeholder to display the message in\n\t * @param {string} message Plain text error message to display (no HTML allowed)\n\t */\n\tfinishedError(selector, message) {\n\t\t$(selector).text(message)\n\t\t\t.addClass('error')\n\t\t\t.removeClass('success')\n\t\t\t.show()\n\t},\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport _ from 'underscore'\nimport $ from 'jquery'\nimport moment from 'moment'\nimport { generateUrl } from '@nextcloud/router'\n\nimport OC from './index'\n\n/**\n * @namespace OC.PasswordConfirmation\n */\nexport default {\n\tcallback: null,\n\n\tpageLoadTime: null,\n\n\tinit() {\n\t\t$('.password-confirm-required').on('click', _.bind(this.requirePasswordConfirmation, this))\n\t\tthis.pageLoadTime = moment.now()\n\t},\n\n\trequiresPasswordConfirmation() {\n\t\tconst serverTimeDiff = this.pageLoadTime - (window.nc_pageLoad * 1000)\n\t\tconst timeSinceLogin = moment.now() - (serverTimeDiff + (window.nc_lastLogin * 1000))\n\n\t\t// if timeSinceLogin > 30 minutes and user backend allows password confirmation\n\t\treturn (window.backendAllowsPasswordConfirmation && timeSinceLogin > 30 * 60 * 1000)\n\t},\n\n\t/**\n\t * @param {Function} callback success callback function\n\t * @param {object} options options\n\t * @param {Function} rejectCallback error callback function\n\t */\n\trequirePasswordConfirmation(callback, options, rejectCallback) {\n\t\toptions = typeof options !== 'undefined' ? options : {}\n\t\tconst defaults = {\n\t\t\ttitle: t('core', 'Authentication required'),\n\t\t\ttext: t(\n\t\t\t\t'core',\n\t\t\t\t'This action requires you to confirm your password'\n\t\t\t),\n\t\t\tconfirm: t('core', 'Confirm'),\n\t\t\tlabel: t('core', 'Password'),\n\t\t\terror: '',\n\t\t}\n\n\t\tconst config = _.extend(defaults, options)\n\n\t\tconst self = this\n\n\t\tif (this.requiresPasswordConfirmation()) {\n\t\t\tOC.dialogs.prompt(\n\t\t\t\tconfig.text,\n\t\t\t\tconfig.title,\n\t\t\t\tfunction(result, password) {\n\t\t\t\t\tif (result && password !== '') {\n\t\t\t\t\t\tself._confirmPassword(password, config)\n\t\t\t\t\t} else if (_.isFunction(rejectCallback)) {\n\t\t\t\t\t\trejectCallback()\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\ttrue,\n\t\t\t\tconfig.label,\n\t\t\t\ttrue\n\t\t\t).then(function() {\n\t\t\t\tconst $dialog = $('.oc-dialog:visible')\n\t\t\t\t$dialog.find('.ui-icon').remove()\n\t\t\t\t$dialog.addClass('password-confirmation')\n\t\t\t\tif (config.error !== '') {\n\t\t\t\t\tconst $error = $('<p></p>').addClass('msg warning').text(config.error)\n\t\t\t\t\t$dialog.find('.oc-dialog-content').append($error)\n\t\t\t\t}\n\t\t\t\t$dialog.find('.oc-dialog-buttonrow').addClass('aside')\n\n\t\t\t\tconst $buttons = $dialog.find('button')\n\t\t\t\t$buttons.eq(0).hide()\n\t\t\t\t$buttons.eq(1).text(config.confirm)\n\t\t\t})\n\t\t}\n\n\t\tthis.callback = callback\n\t},\n\n\t_confirmPassword(password, config) {\n\t\tconst self = this\n\n\t\t$.ajax({\n\t\t\turl: generateUrl('/login/confirm'),\n\t\t\tdata: {\n\t\t\t\tpassword,\n\t\t\t},\n\t\t\ttype: 'POST',\n\t\t\tsuccess(response) {\n\t\t\t\twindow.nc_lastLogin = response.lastLogin\n\n\t\t\t\tif (_.isFunction(self.callback)) {\n\t\t\t\t\tself.callback()\n\t\t\t\t}\n\t\t\t},\n\t\t\terror() {\n\t\t\t\tconfig.error = t('core', 'Failed to authenticate, try again')\n\t\t\t\tOC.PasswordConfirmation.requirePasswordConfirmation(self.callback, config)\n\t\t\t},\n\t\t})\n\t},\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nexport const theme = window._theme || {}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport _ from 'underscore'\nimport OC from './index'\n\n/**\n * Utility class for the history API,\n * includes fallback to using the URL hash when\n * the browser doesn't support the history API.\n *\n * @namespace OC.Util.History\n */\nexport default {\n\n\t_handlers: [],\n\n\t/**\n\t * Push the current URL parameters to the history stack\n\t * and change the visible URL.\n\t * Note: this includes a workaround for IE8/IE9 that uses\n\t * the hash part instead of the search part.\n\t *\n\t * @param {object | string} params to append to the URL, can be either a string\n\t * or a map\n\t * @param {string} [url] URL to be used, otherwise the current URL will be used,\n\t * using the params as query string\n\t * @param {boolean} [replace=false] whether to replace instead of pushing\n\t */\n\t_pushState(params, url, replace) {\n\t\tlet strParams\n\t\tif (typeof (params) === 'string') {\n\t\t\tstrParams = params\n\t\t} else {\n\t\t\tstrParams = OC.buildQueryString(params)\n\t\t}\n\n\t\tif (window.history.pushState) {\n\t\t\turl = url || location.pathname + '?' + strParams\n\t\t\t// Workaround for bug with SVG and window.history.pushState on Firefox < 51\n\t\t\t// https://bugzilla.mozilla.org/show_bug.cgi?id=652991\n\t\t\tconst isFirefox = navigator.userAgent.toLowerCase().indexOf('firefox') > -1\n\t\t\tif (isFirefox && parseInt(navigator.userAgent.split('/').pop()) < 51) {\n\t\t\t\tconst patterns = document.querySelectorAll('[fill^=\"url(#\"], [stroke^=\"url(#\"], [filter^=\"url(#invert\"]')\n\t\t\t\tfor (let i = 0, ii = patterns.length, pattern; i < ii; i++) {\n\t\t\t\t\tpattern = patterns[i]\n\t\t\t\t\t// eslint-disable-next-line no-self-assign\n\t\t\t\t\tpattern.style.fill = pattern.style.fill\n\t\t\t\t\t// eslint-disable-next-line no-self-assign\n\t\t\t\t\tpattern.style.stroke = pattern.style.stroke\n\t\t\t\t\tpattern.removeAttribute('filter')\n\t\t\t\t\tpattern.setAttribute('filter', 'url(#invert)')\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (replace) {\n\t\t\t\twindow.history.replaceState(params, '', url)\n\t\t\t} else {\n\t\t\t\twindow.history.pushState(params, '', url)\n\t\t\t}\n\t\t} else {\n\t\t\t// use URL hash for IE8\n\t\t\twindow.location.hash = '?' + strParams\n\t\t\t// inhibit next onhashchange that just added itself\n\t\t\t// to the event queue\n\t\t\tthis._cancelPop = true\n\t\t}\n\t},\n\n\t/**\n\t * Push the current URL parameters to the history stack\n\t * and change the visible URL.\n\t * Note: this includes a workaround for IE8/IE9 that uses\n\t * the hash part instead of the search part.\n\t *\n\t * @param {object | string} params to append to the URL, can be either a string or a map\n\t * @param {string} [url] URL to be used, otherwise the current URL will be used, using the params as query string\n\t */\n\tpushState(params, url) {\n\t\tthis._pushState(params, url, false)\n\t},\n\n\t/**\n\t * Push the current URL parameters to the history stack\n\t * and change the visible URL.\n\t * Note: this includes a workaround for IE8/IE9 that uses\n\t * the hash part instead of the search part.\n\t *\n\t * @param {object | string} params to append to the URL, can be either a string\n\t * or a map\n\t * @param {string} [url] URL to be used, otherwise the current URL will be used,\n\t * using the params as query string\n\t */\n\treplaceState(params, url) {\n\t\tthis._pushState(params, url, true)\n\t},\n\n\t/**\n\t * Add a popstate handler\n\t *\n\t * @param {Function} handler handler\n\t */\n\taddOnPopStateHandler(handler) {\n\t\tthis._handlers.push(handler)\n\t},\n\n\t/**\n\t * Parse a query string from the hash part of the URL.\n\t * (workaround for IE8 / IE9)\n\t *\n\t * @return {string}\n\t */\n\t_parseHashQuery() {\n\t\tconst hash = window.location.hash\n\t\tconst pos = hash.indexOf('?')\n\t\tif (pos >= 0) {\n\t\t\treturn hash.substr(pos + 1)\n\t\t}\n\t\tif (hash.length) {\n\t\t\t// remove hash sign\n\t\t\treturn hash.substr(1)\n\t\t}\n\t\treturn ''\n\t},\n\n\t_decodeQuery(query) {\n\t\treturn query.replace(/\\+/g, ' ')\n\t},\n\n\t/**\n\t * Parse the query/search part of the URL.\n\t * Also try and parse it from the URL hash (for IE8)\n\t *\n\t * @return {object} map of parameters\n\t */\n\tparseUrlQuery() {\n\t\tconst query = this._parseHashQuery()\n\t\tlet params\n\t\t// try and parse from URL hash first\n\t\tif (query) {\n\t\t\tparams = OC.parseQueryString(this._decodeQuery(query))\n\t\t}\n\t\t// else read from query attributes\n\t\tparams = _.extend(params || {}, OC.parseQueryString(this._decodeQuery(location.search)))\n\t\treturn params || {}\n\t},\n\n\t_onPopState(e) {\n\t\tif (this._cancelPop) {\n\t\t\tthis._cancelPop = false\n\t\t\treturn\n\t\t}\n\t\tlet params\n\t\tif (!this._handlers.length) {\n\t\t\treturn\n\t\t}\n\t\tparams = (e && e.state)\n\t\tif (_.isString(params)) {\n\t\t\tparams = OC.parseQueryString(params)\n\t\t} else if (!params) {\n\t\t\tparams = this.parseUrlQuery() || {}\n\t\t}\n\t\tfor (let i = 0; i < this._handlers.length; i++) {\n\t\t\tthis._handlers[i](params)\n\t\t}\n\t},\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport moment from 'moment'\n\nimport History from './util-history'\nimport OC from './index'\nimport { formatFileSize as humanFileSize } from '@nextcloud/files'\n\n/**\n * @param {any} t -\n */\nfunction chunkify(t) {\n\t// Adapted from http://my.opera.com/GreyWyvern/blog/show.dml/1671288\n\tconst tz = []\n\tlet x = 0\n\tlet y = -1\n\tlet n = 0\n\tlet c\n\n\twhile (x < t.length) {\n\t\tc = t.charAt(x)\n\t\t// only include the dot in strings\n\t\tconst m = ((!n && c === '.') || (c >= '0' && c <= '9'))\n\t\tif (m !== n) {\n\t\t\t// next chunk\n\t\t\ty++\n\t\t\ttz[y] = ''\n\t\t\tn = m\n\t\t}\n\t\ttz[y] += c\n\t\tx++\n\t}\n\treturn tz\n}\n\n/**\n * Utility functions\n *\n * @namespace OC.Util\n */\nexport default {\n\n\tHistory,\n\n\t/**\n\t * @deprecated use https://nextcloud.github.io/nextcloud-files/modules/_humanfilesize_.html#formatfilesize\n\t */\n\thumanFileSize,\n\n\t/**\n\t * Returns a file size in bytes from a humanly readable string\n\t * Makes 2kB to 2048.\n\t * Inspired by computerFileSize in helper.php\n\t *\n\t * @param {string} string file size in human readable format\n\t * @return {number} or null if string could not be parsed\n\t *\n\t *\n\t */\n\tcomputerFileSize(string) {\n\t\tif (typeof string !== 'string') {\n\t\t\treturn null\n\t\t}\n\n\t\tconst s = string.toLowerCase().trim()\n\t\tlet bytes = null\n\n\t\tconst bytesArray = {\n\t\t\tb: 1,\n\t\t\tk: 1024,\n\t\t\tkb: 1024,\n\t\t\tmb: 1024 * 1024,\n\t\t\tm: 1024 * 1024,\n\t\t\tgb: 1024 * 1024 * 1024,\n\t\t\tg: 1024 * 1024 * 1024,\n\t\t\ttb: 1024 * 1024 * 1024 * 1024,\n\t\t\tt: 1024 * 1024 * 1024 * 1024,\n\t\t\tpb: 1024 * 1024 * 1024 * 1024 * 1024,\n\t\t\tp: 1024 * 1024 * 1024 * 1024 * 1024,\n\t\t}\n\n\t\tconst matches = s.match(/^[\\s+]?([0-9]*)(\\.([0-9]+))?( +)?([kmgtp]?b?)$/i)\n\t\tif (matches !== null) {\n\t\t\tbytes = parseFloat(s)\n\t\t\tif (!isFinite(bytes)) {\n\t\t\t\treturn null\n\t\t\t}\n\t\t} else {\n\t\t\treturn null\n\t\t}\n\t\tif (matches[5]) {\n\t\t\tbytes = bytes * bytesArray[matches[5]]\n\t\t}\n\n\t\tbytes = Math.round(bytes)\n\t\treturn bytes\n\t},\n\n\t/**\n\t * @param {string|number} timestamp timestamp\n\t * @param {string} format date format, see momentjs docs\n\t * @return {string} timestamp formatted as requested\n\t */\n\tformatDate(timestamp, format) {\n\t\tif (window.TESTING === undefined) {\n\t\t\tconsole.warn('OC.Util.formatDate is deprecated and will be removed in Nextcloud 21. See @nextcloud/moment')\n\t\t}\n\t\tformat = format || 'LLL'\n\t\treturn moment(timestamp).format(format)\n\t},\n\n\t/**\n\t * @param {string|number} timestamp timestamp\n\t * @return {string} human readable difference from now\n\t */\n\trelativeModifiedDate(timestamp) {\n\t\tif (window.TESTING === undefined) {\n\t\t\tconsole.warn('OC.Util.relativeModifiedDate is deprecated and will be removed in Nextcloud 21. See @nextcloud/moment')\n\t\t}\n\t\tconst diff = moment().diff(moment(timestamp))\n\t\tif (diff >= 0 && diff < 45000) {\n\t\t\treturn t('core', 'seconds ago')\n\t\t}\n\t\treturn moment(timestamp).fromNow()\n\t},\n\n\t/**\n\t * Returns the width of a generic browser scrollbar\n\t *\n\t * @return {number} width of scrollbar\n\t */\n\tgetScrollBarWidth() {\n\t\tif (this._scrollBarWidth) {\n\t\t\treturn this._scrollBarWidth\n\t\t}\n\n\t\tconst inner = document.createElement('p')\n\t\tinner.style.width = '100%'\n\t\tinner.style.height = '200px'\n\n\t\tconst outer = document.createElement('div')\n\t\touter.style.position = 'absolute'\n\t\touter.style.top = '0px'\n\t\touter.style.left = '0px'\n\t\touter.style.visibility = 'hidden'\n\t\touter.style.width = '200px'\n\t\touter.style.height = '150px'\n\t\touter.style.overflow = 'hidden'\n\t\touter.appendChild(inner)\n\n\t\tdocument.body.appendChild(outer)\n\t\tconst w1 = inner.offsetWidth\n\t\touter.style.overflow = 'scroll'\n\t\tlet w2 = inner.offsetWidth\n\t\tif (w1 === w2) {\n\t\t\tw2 = outer.clientWidth\n\t\t}\n\n\t\tdocument.body.removeChild(outer)\n\n\t\tthis._scrollBarWidth = (w1 - w2)\n\n\t\treturn this._scrollBarWidth\n\t},\n\n\t/**\n\t * Remove the time component from a given date\n\t *\n\t * @param {Date} date date\n\t * @return {Date} date with stripped time\n\t */\n\tstripTime(date) {\n\t\t// FIXME: likely to break when crossing DST\n\t\t// would be better to use a library like momentJS\n\t\treturn new Date(date.getFullYear(), date.getMonth(), date.getDate())\n\t},\n\n\t/**\n\t * Compare two strings to provide a natural sort\n\t *\n\t * @param {string} a first string to compare\n\t * @param {string} b second string to compare\n\t * @return {number} -1 if b comes before a, 1 if a comes before b\n\t * or 0 if the strings are identical\n\t */\n\tnaturalSortCompare(a, b) {\n\t\tlet x\n\t\tconst aa = chunkify(a)\n\t\tconst bb = chunkify(b)\n\n\t\tfor (x = 0; aa[x] && bb[x]; x++) {\n\t\t\tif (aa[x] !== bb[x]) {\n\t\t\t\tconst aNum = Number(aa[x]); const bNum = Number(bb[x])\n\t\t\t\t// note: == is correct here\n\t\t\t\t/* eslint-disable-next-line */\n\t\t\t\tif (aNum == aa[x] && bNum == bb[x]) {\n\t\t\t\t\treturn aNum - bNum\n\t\t\t\t} else {\n\t\t\t\t\t// Note: This locale setting isn't supported by all browsers but for the ones\n\t\t\t\t\t// that do there will be more consistency between client-server sorting\n\t\t\t\t\treturn aa[x].localeCompare(bb[x], OC.getLanguage())\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn aa.length - bb.length\n\t},\n\n\t/**\n\t * Calls the callback in a given interval until it returns true\n\t *\n\t * @param {Function} callback function to call on success\n\t * @param {number} interval in milliseconds\n\t */\n\twaitFor(callback, interval) {\n\t\tconst internalCallback = function() {\n\t\t\tif (callback() !== true) {\n\t\t\t\tsetTimeout(internalCallback, interval)\n\t\t\t}\n\t\t}\n\n\t\tinternalCallback()\n\t},\n\n\t/**\n\t * Checks if a cookie with the given name is present and is set to the provided value.\n\t *\n\t * @param {string} name name of the cookie\n\t * @param {string} value value of the cookie\n\t * @return {boolean} true if the cookie with the given name has the given value\n\t */\n\tisCookieSetToValue(name, value) {\n\t\tconst cookies = document.cookie.split(';')\n\t\tfor (let i = 0; i < cookies.length; i++) {\n\t\t\tconst cookie = cookies[i].split('=')\n\t\t\tif (cookie[0].trim() === name && cookie[1].trim() === value) {\n\t\t\t\treturn true\n\t\t\t}\n\t\t}\n\t\treturn false\n\t},\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nconst base = window._oc_debug\n\nexport const debug = base\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nlet webroot = window._oc_webroot\n\nif (typeof webroot === 'undefined') {\n\twebroot = location.pathname\n\tconst pos = webroot.indexOf('/index.php/')\n\tif (pos !== -1) {\n\t\twebroot = webroot.substr(0, pos)\n\t} else {\n\t\twebroot = webroot.substr(0, webroot.lastIndexOf('/'))\n\t}\n}\n\nexport default webroot\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nexport const get = context => name => {\n\tconst namespaces = name.split('.')\n\tconst tail = namespaces.pop()\n\n\tfor (let i = 0; i < namespaces.length; i++) {\n\t\tcontext = context[namespaces[i]]\n\t\tif (!context) {\n\t\t\treturn false\n\t\t}\n\t}\n\treturn context[tail]\n}\n\n/**\n * Set a variable by name\n *\n * @param {string} context context\n * @return {Function} setter\n * @deprecated 19.0.0 use https://lodash.com/docs#set\n */\nexport const set = context => (name, value) => {\n\tconst namespaces = name.split('.')\n\tconst tail = namespaces.pop()\n\n\tfor (let i = 0; i < namespaces.length; i++) {\n\t\tif (!context[namespaces[i]]) {\n\t\t\tcontext[namespaces[i]] = {}\n\t\t}\n\t\tcontext = context[namespaces[i]]\n\t}\n\tcontext[tail] = value\n\treturn value\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { subscribe } from '@nextcloud/event-bus'\n\nimport { addScript, addStyle } from './legacy-loader'\nimport {\n\tajaxConnectionLostHandler,\n\tprocessAjaxError,\n\tregisterXHRForErrorProcessing,\n} from './xhr-error'\nimport Apps from './apps'\nimport { AppConfig, appConfig } from './appconfig'\nimport { appSettings } from './appsettings'\nimport appswebroots from './appswebroots'\nimport Backbone from './backbone'\nimport {\n\tbasename,\n\tdirname,\n\tencodePath,\n\tisSamePath,\n\tjoinPaths,\n} from '@nextcloud/paths'\nimport {\n\tbuild as buildQueryString,\n\tparse as parseQueryString,\n} from './query-string'\nimport Config from './config'\nimport {\n\tcoreApps,\n\tmenuSpeed,\n\tPERMISSION_ALL,\n\tPERMISSION_CREATE,\n\tPERMISSION_DELETE,\n\tPERMISSION_NONE,\n\tPERMISSION_READ,\n\tPERMISSION_SHARE,\n\tPERMISSION_UPDATE,\n\tTAG_FAVORITE,\n} from './constants'\nimport ContactsMenu from './contactsmenu'\nimport { currentUser, getCurrentUser } from './currentuser'\nimport Dialogs from './dialogs'\nimport EventSource from './eventsource'\nimport { get, set } from './get_set'\nimport { getCapabilities } from './capabilities'\nimport {\n\tgetHost,\n\tgetHostName,\n\tgetPort,\n\tgetProtocol,\n} from './host'\nimport {\n\tgetToken as getRequestToken,\n} from './requesttoken'\nimport {\n\thideMenus,\n\tregisterMenu,\n\tshowMenu,\n\tunregisterMenu,\n} from './menu'\nimport { isUserAdmin } from './admin'\nimport L10N from './l10n'\nimport {\n\tgetCanonicalLocale,\n\tgetLanguage,\n\tgetLocale,\n} from '@nextcloud/l10n'\n\nimport {\n\tgenerateUrl,\n\tgenerateFilePath,\n\tgenerateOcsUrl,\n\tgenerateRemoteUrl,\n\tgetRootUrl,\n\timagePath,\n\tlinkTo,\n} from '@nextcloud/router'\n\nimport {\n\tlinkToRemoteBase,\n} from './routing'\nimport msg from './msg'\nimport Notification from './notification'\nimport PasswordConfirmation from './password-confirmation'\nimport Plugins from './plugins'\nimport { theme } from './theme'\nimport Util from './util'\nimport { debug } from './debug'\nimport { redirect, reload } from './navigation'\nimport webroot from './webroot'\n\n/** @namespace OC */\nexport default {\n\t/*\n\t * Constants\n\t */\n\tcoreApps,\n\tmenuSpeed,\n\tPERMISSION_ALL,\n\tPERMISSION_CREATE,\n\tPERMISSION_DELETE,\n\tPERMISSION_NONE,\n\tPERMISSION_READ,\n\tPERMISSION_SHARE,\n\tPERMISSION_UPDATE,\n\tTAG_FAVORITE,\n\n\t/*\n\t * Deprecated helpers to be removed\n\t */\n\t/**\n\t * Check if a user file is allowed to be handled.\n\t *\n\t * @param {string} file to check\n\t * @return {boolean}\n\t * @deprecated 17.0.0\n\t */\n\tfileIsBlacklisted: file => !!(file.match(Config.blacklist_files_regex)),\n\n\taddScript,\n\taddStyle,\n\tApps,\n\tAppConfig,\n\tappConfig,\n\tappSettings,\n\tappswebroots,\n\tBackbone,\n\tContactsMenu,\n\tconfig: Config,\n\t/**\n\t * Currently logged in user or null if none\n\t *\n\t * @type {string}\n\t * @deprecated use `getCurrentUser` from https://www.npmjs.com/package/@nextcloud/auth\n\t */\n\tcurrentUser,\n\tdialogs: Dialogs,\n\tEventSource,\n\t/**\n\t * Returns the currently logged in user or null if there is no logged in\n\t * user (public page mode)\n\t *\n\t * @since 9.0.0\n\t * @deprecated 19.0.0 use `getCurrentUser` from https://www.npmjs.com/package/@nextcloud/auth\n\t */\n\tgetCurrentUser,\n\tisUserAdmin,\n\tL10N,\n\n\t/**\n\t * Ajax error handlers\n\t *\n\t * @todo remove from here and keep internally -> requires new tests\n\t */\n\t_ajaxConnectionLostHandler: ajaxConnectionLostHandler,\n\t_processAjaxError: processAjaxError,\n\tregisterXHRForErrorProcessing,\n\n\t/**\n\t * Capabilities\n\t *\n\t * @type {Array}\n\t * @deprecated 20.0.0 use @nextcloud/capabilities instead\n\t */\n\tgetCapabilities,\n\n\t/*\n\t * Legacy menu helpers\n\t */\n\thideMenus,\n\tregisterMenu,\n\tshowMenu,\n\tunregisterMenu,\n\n\t/*\n\t * Path helpers\n\t */\n\t/**\n\t * @deprecated 18.0.0 use https://www.npmjs.com/package/@nextcloud/paths\n\t */\n\tbasename,\n\t/**\n\t * @deprecated 18.0.0 use https://www.npmjs.com/package/@nextcloud/paths\n\t */\n\tencodePath,\n\t/**\n\t * @deprecated 18.0.0 use https://www.npmjs.com/package/@nextcloud/paths\n\t */\n\tdirname,\n\t/**\n\t * @deprecated 18.0.0 use https://www.npmjs.com/package/@nextcloud/paths\n\t */\n\tisSamePath,\n\t/**\n\t * @deprecated 18.0.0 use https://www.npmjs.com/package/@nextcloud/paths\n\t */\n\tjoinPaths,\n\n\t/**\n\t * Host (url) helpers\n\t */\n\tgetHost,\n\tgetHostName,\n\tgetPort,\n\tgetProtocol,\n\n\t/**\n\t * @deprecated 20.0.0 use `getCanonicalLocale` from https://www.npmjs.com/package/@nextcloud/l10n\n\t */\n\tgetCanonicalLocale,\n\t/**\n\t * @deprecated 26.0.0 use `getLocale` from https://www.npmjs.com/package/@nextcloud/l10n\n\t */\n\tgetLocale,\n\t/**\n\t * @deprecated 26.0.0 use `getLanguage` from https://www.npmjs.com/package/@nextcloud/l10n\n\t */\n\tgetLanguage,\n\n\t/**\n\t * Query string helpers\n\t */\n\tbuildQueryString,\n\tparseQueryString,\n\n\tmsg,\n\tNotification,\n\tPasswordConfirmation,\n\tPlugins,\n\ttheme,\n\tUtil,\n\tdebug,\n\t/**\n\t * @deprecated 19.0.0 use `generateFilePath` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\tfilePath: generateFilePath,\n\t/**\n\t * @deprecated 19.0.0 use `generateUrl` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\tgenerateUrl,\n\t/**\n\t * @deprecated 19.0.0 use https://lodash.com/docs#get\n\t */\n\tget: get(window),\n\t/**\n\t * @deprecated 19.0.0 use https://lodash.com/docs#set\n\t */\n\tset: set(window),\n\t/**\n\t * @deprecated 19.0.0 use `getRootUrl` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\tgetRootPath: getRootUrl,\n\t/**\n\t * @deprecated 19.0.0 use `imagePath` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\timagePath,\n\tredirect,\n\treload,\n\trequestToken: getRequestToken(),\n\t/**\n\t * @deprecated 19.0.0 use `linkTo` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\tlinkTo,\n\t/**\n\t * @param {string} service service name\n\t * @param {number} version OCS API version\n\t * @return {string} OCS API base path\n\t * @deprecated 19.0.0 use `generateOcsUrl` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\tlinkToOCS: (service, version) => {\n\t\treturn generateOcsUrl(service, {}, {\n\t\t\tocsVersion: version || 1,\n\t\t}) + '/'\n\t},\n\t/**\n\t * @deprecated 19.0.0 use `generateRemoteUrl` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\tlinkToRemote: generateRemoteUrl,\n\tlinkToRemoteBase,\n\t/**\n\t * Relative path to Nextcloud root.\n\t * For example: \"/nextcloud\"\n\t *\n\t * @type {string}\n\t *\n\t * @deprecated 19.0.0 use `getRootUrl` from https://www.npmjs.com/package/@nextcloud/router\n\t * @see OC#getRootPath\n\t */\n\twebroot,\n}\n\n// Keep the request token prop in sync\nsubscribe('csrf-token-update', e => {\n\tOC.requestToken = e.token\n\n\t// Logging might help debug (Sentry) issues\n\tconsole.info('OC.requestToken changed', e.token)\n})\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n/* eslint-disable */\nimport $ from 'jquery'\nimport { filePath } from './routing'\nimport { generateFilePath } from \"@nextcloud/router\"\n\n/**\n * Opens a popup with the setting for an app.\n * @param {string} appid The ID of the app e.g. 'calendar', 'contacts' or 'files'.\n * @param {boolean|string} loadJS If true 'js/settings.js' is loaded. If it's a string\n * it will attempt to load a script by that name in the 'js' directory.\n * @param {boolean} [cache] If true the javascript file won't be forced refreshed. Defaults to true.\n * @param {string} [scriptName] The name of the PHP file to load. Defaults to 'settings.php' in\n * the root of the app directory hierarchy.\n *\n * @deprecated 17.0.0 this method is unused and will be removed with Nextcloud 18\n */\nexport const appSettings = args => {\n\tconsole.warn('OC.appSettings is deprecated and will be removed with Nextcloud 18')\n\n\tif (typeof args === 'undefined' || typeof args.appid === 'undefined') {\n\t\tthrow {\n\t\t\tname: 'MissingParameter',\n\t\t\tmessage: 'The parameter appid is missing'\n\t\t}\n\t}\n\tvar props = { scriptName: 'settings.php', cache: true }\n\t$.extend(props, args)\n\tvar settings = $('#appsettings')\n\tif (settings.length === 0) {\n\t\tthrow {\n\t\t\tname: 'MissingDOMElement',\n\t\t\tmessage: 'There has be be an element with id \"appsettings\" for the popup to show.'\n\t\t}\n\t}\n\tvar popup = $('#appsettings_popup')\n\tif (popup.length === 0) {\n\t\t$('body').prepend('<div class=\"popup hidden\" id=\"appsettings_popup\"></div>')\n\t\tpopup = $('#appsettings_popup')\n\t\tpopup.addClass(settings.hasClass('topright') ? 'topright' : 'bottomleft')\n\t}\n\tif (popup.is(':visible')) {\n\t\tpopup.hide().remove()\n\t} else {\n\t\tconst arrowclass = settings.hasClass('topright') ? 'up' : 'left'\n\t\t$.get(generateFilePath(props.appid, '', props.scriptName), function(data) {\n\t\t\tpopup.html(data).ready(function() {\n\t\t\t\tpopup.prepend('<span class=\"arrow ' + arrowclass + '\"></span><h2>' + t('core', 'Settings') + '</h2><a class=\"close\"></a>').show()\n\t\t\t\tpopup.find('.close').bind('click', function() {\n\t\t\t\t\tpopup.remove()\n\t\t\t\t})\n\t\t\t\tif (typeof props.loadJS !== 'undefined') {\n\t\t\t\t\tvar scriptname\n\t\t\t\t\tif (props.loadJS === true) {\n\t\t\t\t\t\tscriptname = 'settings.js'\n\t\t\t\t\t} else if (typeof props.loadJS === 'string') {\n\t\t\t\t\t\tscriptname = props.loadJS\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthrow {\n\t\t\t\t\t\t\tname: 'InvalidParameter',\n\t\t\t\t\t\t\tmessage: 'The \"loadJS\" parameter must be either boolean or a string.'\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (props.cache) {\n\t\t\t\t\t\t$.ajaxSetup({ cache: true })\n\t\t\t\t\t}\n\t\t\t\t\t$.getScript(generateFilePath(props.appid, 'js', scriptname))\n\t\t\t\t\t\t.fail(function(jqxhr, settings, e) {\n\t\t\t\t\t\t\tthrow e\n\t\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}).show()\n\t\t}, 'html')\n\t}\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { getCapabilities as realGetCapabilities } from '@nextcloud/capabilities'\n\n/**\n * Returns the capabilities\n *\n * @return {Array} capabilities\n *\n * @since 14.0.0\n */\nexport const getCapabilities = () => {\n\tconsole.warn('OC.getCapabilities is deprecated and will be removed in Nextcloud 21. See @nextcloud/capabilities')\n\treturn realGetCapabilities()\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nexport const getProtocol = () => window.location.protocol.split(':')[0]\n\n/**\n * Returns the host used to access this Nextcloud instance\n * Host is sometimes the same as the hostname but now always.\n *\n * Examples:\n * http://example.com => example.com\n * https://example.com => example.com\n * http://example.com:8080 => example.com:8080\n *\n * @return {string} host\n *\n * @since 8.2.0\n * @deprecated 17.0.0 use window.location.host directly\n */\nexport const getHost = () => window.location.host\n\n/**\n * Returns the hostname used to access this Nextcloud instance\n * The hostname is always stripped of the port\n *\n * @return {string} hostname\n * @since 9.0.0\n * @deprecated 17.0.0 use window.location.hostname directly\n */\nexport const getHostName = () => window.location.hostname\n\n/**\n * Returns the port number used to access this Nextcloud instance\n *\n * @return {number} port number\n *\n * @since 8.2.0\n * @deprecated 17.0.0 use window.location.port directly\n */\nexport const getPort = () => window.location.port\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport $ from 'jquery'\n\n/**\n * Parses a URL query string into a JS map\n *\n * @param {string} queryString query string in the format param1=1234¶m2=abcde¶m3=xyz\n * @return {Object<string, string>} map containing key/values matching the URL parameters\n */\nexport const parse = queryString => {\n\tlet pos\n\tlet components\n\tconst result = {}\n\tlet key\n\tif (!queryString) {\n\t\treturn null\n\t}\n\tpos = queryString.indexOf('?')\n\tif (pos >= 0) {\n\t\tqueryString = queryString.substr(pos + 1)\n\t}\n\tconst parts = queryString.replace(/\\+/g, '%20').split('&')\n\tfor (let i = 0; i < parts.length; i++) {\n\t\t// split on first equal sign\n\t\tconst part = parts[i]\n\t\tpos = part.indexOf('=')\n\t\tif (pos >= 0) {\n\t\t\tcomponents = [\n\t\t\t\tpart.substr(0, pos),\n\t\t\t\tpart.substr(pos + 1),\n\t\t\t]\n\t\t} else {\n\t\t\t// key only\n\t\t\tcomponents = [part]\n\t\t}\n\t\tif (!components.length) {\n\t\t\tcontinue\n\t\t}\n\t\tkey = decodeURIComponent(components[0])\n\t\tif (!key) {\n\t\t\tcontinue\n\t\t}\n\t\t// if equal sign was there, return string\n\t\tif (components.length > 1) {\n\t\t\tresult[key] = decodeURIComponent(components[1])\n\t\t} else {\n\t\t\t// no equal sign => null value\n\t\t\tresult[key] = null\n\t\t}\n\t}\n\treturn result\n}\n\n/**\n * Builds a URL query from a JS map.\n *\n * @param {Object<string, string>} params map containing key/values matching the URL parameters\n * @return {string} String containing a URL query (without question) mark\n */\nexport const build = params => {\n\tif (!params) {\n\t\treturn ''\n\t}\n\treturn $.map(params, function(value, key) {\n\t\tlet s = encodeURIComponent(key)\n\t\tif (value !== null && typeof (value) !== 'undefined') {\n\t\t\ts += '=' + encodeURIComponent(value)\n\t\t}\n\t\treturn s\n\t}).join('&')\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nexport default {\n\n\t/**\n\t * @type {Array.<OC.Plugin>}\n\t */\n\t_plugins: {},\n\n\t/**\n\t * Register plugin\n\t *\n\t * @param {string} targetName app name / class name to hook into\n\t * @param {OC.Plugin} plugin plugin\n\t */\n\tregister(targetName, plugin) {\n\t\tlet plugins = this._plugins[targetName]\n\t\tif (!plugins) {\n\t\t\tplugins = this._plugins[targetName] = []\n\t\t}\n\t\tplugins.push(plugin)\n\t},\n\n\t/**\n\t * Returns all plugin registered to the given target\n\t * name / app name / class name.\n\t *\n\t * @param {string} targetName app name / class name to hook into\n\t * @return {Array.<OC.Plugin>} array of plugins\n\t */\n\tgetPlugins(targetName) {\n\t\treturn this._plugins[targetName] || []\n\t},\n\n\t/**\n\t * Call attach() on all plugins registered to the given target name.\n\t *\n\t * @param {string} targetName app name / class name\n\t * @param {object} targetObject to be extended\n\t * @param {object} [options] options\n\t */\n\tattach(targetName, targetObject, options) {\n\t\tconst plugins = this.getPlugins(targetName)\n\t\tfor (let i = 0; i < plugins.length; i++) {\n\t\t\tif (plugins[i].attach) {\n\t\t\t\tplugins[i].attach(targetObject, options)\n\t\t\t}\n\t\t}\n\t},\n\n\t/**\n\t * Call detach() on all plugins registered to the given target name.\n\t *\n\t * @param {string} targetName app name / class name\n\t * @param {object} targetObject to be extended\n\t * @param {object} [options] options\n\t */\n\tdetach(targetName, targetObject, options) {\n\t\tconst plugins = this.getPlugins(targetName)\n\t\tfor (let i = 0; i < plugins.length; i++) {\n\t\t\tif (plugins[i].detach) {\n\t\t\t\tplugins[i].detach(targetObject, options)\n\t\t\t}\n\t\t}\n\t},\n\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nexport const redirect = targetURL => { window.location = targetURL }\n\n/**\n * Reloads the current page\n *\n * @deprecated 17.0.0 use window.location.reload directly\n */\nexport const reload = () => { window.location.reload() }\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport {\n\tgetRootUrl as realGetRootUrl,\n} from '@nextcloud/router'\n\n/**\n * Creates a relative url for remote use\n *\n * @param {string} service id\n * @return {string} the url\n */\nexport const linkToRemoteBase = service => {\n\treturn realGetRootUrl() + '/remote.php/' + service\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport $ from 'jquery'\nimport { emit } from '@nextcloud/event-bus'\nimport { loadState } from '@nextcloud/initial-state'\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { generateUrl } from '@nextcloud/router'\n\nimport OC from './OC'\nimport { setToken as setRequestToken, getToken as getRequestToken } from './OC/requesttoken'\n\nlet config = null\n/**\n * The legacy jsunit tests overwrite OC.config before calling initCore\n * therefore we need to wait with assigning the config fallback until initCore calls initSessionHeartBeat\n */\nconst loadConfig = () => {\n\ttry {\n\t\tconfig = loadState('core', 'config')\n\t} catch (e) {\n\t\t// This fallback is just for our legacy jsunit tests since we have no way to mock loadState calls\n\t\tconfig = OC.config\n\t}\n}\n\n/**\n * session heartbeat (defaults to enabled)\n *\n * @return {boolean}\n */\nconst keepSessionAlive = () => {\n\treturn config.session_keepalive === undefined\n\t\t|| !!config.session_keepalive\n}\n\n/**\n * get interval in seconds\n *\n * @return {number}\n */\nconst getInterval = () => {\n\tlet interval = NaN\n\tif (config.session_lifetime) {\n\t\tinterval = Math.floor(config.session_lifetime / 2)\n\t}\n\n\t// minimum one minute, max 24 hours, default 15 minutes\n\treturn Math.min(\n\t\t24 * 3600,\n\t\tMath.max(\n\t\t\t60,\n\t\t\tisNaN(interval) ? 900 : interval\n\t\t)\n\t)\n}\n\nconst getToken = async () => {\n\tconst url = generateUrl('/csrftoken')\n\n\t// Not using Axios here as Axios is not stubbable with the sinon fake server\n\t// see https://stackoverflow.com/questions/41516044/sinon-mocha-test-with-async-ajax-calls-didnt-return-promises\n\t// see js/tests/specs/coreSpec.js for the tests\n\tconst resp = await $.get(url)\n\n\treturn resp.token\n}\n\nconst poll = async () => {\n\ttry {\n\t\tconst token = await getToken()\n\t\tsetRequestToken(token)\n\t} catch (e) {\n\t\tconsole.error('session heartbeat failed', e)\n\t}\n}\n\nconst startPolling = () => {\n\tconst interval = setInterval(poll, getInterval() * 1000)\n\n\tconsole.info('session heartbeat polling started')\n\n\treturn interval\n}\n\nconst registerAutoLogout = () => {\n\tif (!config.auto_logout || !getCurrentUser()) {\n\t\treturn\n\t}\n\n\tlet lastActive = Date.now()\n\twindow.addEventListener('mousemove', e => {\n\t\tlastActive = Date.now()\n\t\tlocalStorage.setItem('lastActive', lastActive)\n\t})\n\n\twindow.addEventListener('touchstart', e => {\n\t\tlastActive = Date.now()\n\t\tlocalStorage.setItem('lastActive', lastActive)\n\t})\n\n\twindow.addEventListener('storage', e => {\n\t\tif (e.key !== 'lastActive') {\n\t\t\treturn\n\t\t}\n\t\tlastActive = e.newValue\n\t})\n\n\tsetInterval(function() {\n\t\tconst timeout = Date.now() - config.session_lifetime * 1000\n\t\tif (lastActive < timeout) {\n\t\t\tconsole.info('Inactivity timout reached, logging out')\n\t\t\tconst logoutUrl = generateUrl('/logout') + '?requesttoken=' + encodeURIComponent(getRequestToken())\n\t\t\twindow.location = logoutUrl\n\t\t}\n\t}, 1000)\n}\n\n/**\n * Calls the server periodically to ensure that session and CSRF\n * token doesn't expire\n */\nexport const initSessionHeartBeat = () => {\n\tloadConfig()\n\n\tregisterAutoLogout()\n\n\tif (!keepSessionAlive()) {\n\t\tconsole.info('session heartbeat disabled')\n\t\treturn\n\t}\n\tlet interval = startPolling()\n\n\twindow.addEventListener('online', async () => {\n\t\tconsole.info('browser is online again, resuming heartbeat')\n\t\tinterval = startPolling()\n\t\ttry {\n\t\t\tawait poll()\n\t\t\tconsole.info('session token successfully updated after resuming network')\n\n\t\t\t// Let apps know we're online and requests will have the new token\n\t\t\temit('networkOnline', {\n\t\t\t\tsuccess: true,\n\t\t\t})\n\t\t} catch (e) {\n\t\t\tconsole.error('could not update session token after resuming network', e)\n\n\t\t\t// Let apps know we're online but requests might have an outdated token\n\t\t\temit('networkOnline', {\n\t\t\t\tsuccess: false,\n\t\t\t})\n\t\t}\n\t})\n\twindow.addEventListener('offline', () => {\n\t\tconsole.info('browser is offline, stopping heartbeat')\n\n\t\t// Let apps know we're offline\n\t\temit('networkOffline', {})\n\n\t\tclearInterval(interval)\n\t\tconsole.info('session heartbeat polling stopped')\n\t})\n}\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ContactsMenu.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ContactsMenu.vue?vue&type=script&lang=js&\"","<!--\n - @copyright 2023 Christopher Ng <chrng8@gmail.com>\n -\n - @author Christopher Ng <chrng8@gmail.com>\n -\n - @license AGPL-3.0-or-later\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n-->\n\n<template>\n\t<NcHeaderMenu id=\"contactsmenu\"\n\t\t:aria-label=\"t('core', 'Search contacts')\"\n\t\t@open=\"handleOpen\">\n\t\t<template #trigger>\n\t\t\t<Contacts :size=\"20\" />\n\t\t</template>\n\t\t<div id=\"contactsmenu-menu\" />\n\t</NcHeaderMenu>\n</template>\n\n<script>\nimport NcHeaderMenu from '@nextcloud/vue/dist/Components/NcHeaderMenu.js'\n\nimport Contacts from 'vue-material-design-icons/Contacts.vue'\n\nimport OC from '../OC/index.js'\n\nexport default {\n\tname: 'ContactsMenu',\n\n\tcomponents: {\n\t\tContacts,\n\t\tNcHeaderMenu,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tcontactsMenu: null,\n\t\t}\n\t},\n\n\tmounted() {\n\t\t// eslint-disable-next-line no-new\n\t\tthis.contactsMenu = new OC.ContactsMenu({\n\t\t\tel: '#contactsmenu-menu',\n\t\t})\n\t},\n\n\tmethods: {\n\t\thandleOpen() {\n\t\t\tthis.contactsMenu?.loadContacts()\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n#contactsmenu-menu {\n\t/* show 2.5 to 4.5 entries depending on the screen height */\n\theight: calc(100vh - 50px * 3);\n\tmax-height: calc(50px * 6 + 2px);\n\tmin-height: calc(50px * 3.5);\n\twidth: 350px;\n\n\t&:deep {\n\t\t.emptycontent {\n\t\t\tmargin-top: 5vh !important;\n\t\t\tmargin-bottom: 1.5vh;\n\t\t\t.icon-loading,\n\t\t\t.icon-search {\n\t\t\t\tdisplay: inline-block;\n\t\t\t}\n\t\t}\n\n\t\t#contactsmenu-search {\n\t\t\twidth: calc(100% - 16px);\n\t\t\tmargin: 8px;\n\t\t\theight: 34px;\n\t\t}\n\n\t\t.content {\n\t\t\t/* fixed max height of the parent container without the search input */\n\t\t\theight: calc(100vh - 50px * 3 - 50px);\n\t\t\tmax-height: calc(50px * 5);\n\t\t\tmin-height: calc(50px * 3.5 - 50px);\n\t\t\toverflow-y: auto;\n\n\t\t\t.footer {\n\t\t\t\ttext-align: center;\n\n\t\t\t\ta {\n\t\t\t\t\tdisplay: block;\n\t\t\t\t\twidth: 100%;\n\t\t\t\t\tpadding: 12px 0;\n\t\t\t\t\topacity: .5;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\ta {\n\t\t\tpadding: 2px;\n\n\t\t\t&:focus-visible {\n\t\t\t\tbox-shadow: inset 0 0 0 2px var(--color-main-text) !important; // override rule in core/css/headers.scss #header a:focus-visible\n\t\t\t}\n\t\t}\n\n\t\t.contact {\n\t\t\tdisplay: flex;\n\t\t\tposition: relative;\n\t\t\talign-items: center;\n\t\t\tpadding: 3px 3px 3px 10px;\n\n\t\t\t.avatar {\n\t\t\t\theight: 32px;\n\t\t\t\twidth: 32px;\n\t\t\t\tdisplay: inline-block;\n\t\t\t}\n\n\t\t\t.body {\n\t\t\t\tflex-grow: 1;\n\t\t\t\tpadding-left: 8px;\n\t\t\t\tmin-width: 0;\n\n\t\t\t\tdiv {\n\t\t\t\t\tposition: relative;\n\t\t\t\t\twidth: 100%;\n\t\t\t\t\toverflow-x: hidden;\n\t\t\t\t\ttext-overflow: ellipsis;\n\t\t\t\t}\n\n\t\t\t\t.last-message, .email-address {\n\t\t\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t.top-action, .second-action, .other-actions {\n\t\t\t\twidth: 16px;\n\t\t\t\theight: 16px;\n\t\t\t\topacity: .5;\n\t\t\t\tcursor: pointer;\n\n\t\t\t\t&:not(button) {\n\t\t\t\t\tpadding: 14px;\n\t\t\t\t}\n\t\t\t\timg {\n\t\t\t\t\tfilter: var(--background-invert-if-dark);\n\t\t\t\t}\n\n\t\t\t\t&:hover,\n\t\t\t\t&:active,\n\t\t\t\t&:focus {\n\t\t\t\t\topacity: 1;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tbutton.other-actions {\n\t\t\t\twidth: 44px;\n\n\t\t\t\t&:focus {\n\t\t\t\t\tborder-color: transparent;\n\t\t\t\t\tbox-shadow: 0 0 0 2px var(--color-main-text);\n\t\t\t\t}\n\n\t\t\t\t&:focus-visible {\n\t\t\t\t\tborder-radius: var(--border-radius-pill);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t/* actions menu */\n\t\t\t.menu {\n\t\t\t\ttop: 47px;\n\t\t\t\tmargin-right: 13px;\n\t\t\t}\n\t\t\t.popovermenu::after {\n\t\t\t\tright: 2px;\n\t\t\t}\n\t\t}\n\t}\n}\n</style>\n","\n import API from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ContactsMenu.vue?vue&type=style&index=0&id=1563c388&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ContactsMenu.vue?vue&type=style&index=0&id=1563c388&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./ContactsMenu.vue?vue&type=template&id=1563c388&scoped=true&\"\nimport script from \"./ContactsMenu.vue?vue&type=script&lang=js&\"\nexport * from \"./ContactsMenu.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ContactsMenu.vue?vue&type=style&index=0&id=1563c388&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1563c388\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('NcHeaderMenu',{attrs:{\"id\":\"contactsmenu\",\"aria-label\":_vm.t('core', 'Search contacts')},on:{\"open\":_vm.handleOpen},scopedSlots:_vm._u([{key:\"trigger\",fn:function(){return [_c('Contacts',{attrs:{\"size\":20}})]},proxy:true}])},[_vm._v(\" \"),_c('div',{attrs:{\"id\":\"contactsmenu-menu\"}})])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright Copyright (c) 2022 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -->\n\n<template>\n\t<nav class=\"app-menu\">\n\t\t<ul class=\"app-menu-main\">\n\t\t\t<li v-for=\"app in mainAppList\"\n\t\t\t\t:key=\"app.id\"\n\t\t\t\t:data-app-id=\"app.id\"\n\t\t\t\tclass=\"app-menu-entry\"\n\t\t\t\t:class=\"{ 'app-menu-entry__active': app.active }\">\n\t\t\t\t<a :href=\"app.href\"\n\t\t\t\t\t:class=\"{ 'has-unread': app.unread > 0 }\"\n\t\t\t\t\t:aria-label=\"appLabel(app)\"\n\t\t\t\t\t:title=\"app.name\"\n\t\t\t\t\t:aria-current=\"app.active ? 'page' : false\"\n\t\t\t\t\t:target=\"app.target ? '_blank' : undefined\"\n\t\t\t\t\t:rel=\"app.target ? 'noopener noreferrer' : undefined\">\n\t\t\t\t\t<img :src=\"app.icon\" alt=\"\">\n\t\t\t\t\t<div class=\"app-menu-entry--label\">\n\t\t\t\t\t\t{{ app.name }}\n\t\t\t\t\t\t<span v-if=\"app.unread > 0\" class=\"hidden-visually unread-counter\">{{ app.unread }}</span>\n\t\t\t\t\t</div>\n\t\t\t\t</a>\n\t\t\t</li>\n\t\t</ul>\n\t\t<NcActions class=\"app-menu-more\" :aria-label=\"t('core', 'More apps')\">\n\t\t\t<NcActionLink v-for=\"app in popoverAppList\"\n\t\t\t\t:key=\"app.id\"\n\t\t\t\t:aria-label=\"appLabel(app)\"\n\t\t\t\t:aria-current=\"app.active ? 'page' : false\"\n\t\t\t\t:href=\"app.href\"\n\t\t\t\tclass=\"app-menu-popover-entry\">\n\t\t\t\t<template #icon>\n\t\t\t\t\t<div class=\"app-icon\" :class=\"{ 'has-unread': app.unread > 0 }\">\n\t\t\t\t\t\t<img :src=\"app.icon\" alt=\"\">\n\t\t\t\t\t</div>\n\t\t\t\t</template>\n\t\t\t\t{{ app.name }}\n\t\t\t\t<span v-if=\"app.unread > 0\" class=\"hidden-visually unread-counter\">{{ app.unread }}</span>\n\t\t\t</NcActionLink>\n\t\t</NcActions>\n\t</nav>\n</template>\n\n<script>\nimport { loadState } from '@nextcloud/initial-state'\nimport { subscribe, unsubscribe } from '@nextcloud/event-bus'\nimport NcActions from '@nextcloud/vue/dist/Components/NcActions'\nimport NcActionLink from '@nextcloud/vue/dist/Components/NcActionLink'\n\nexport default {\n\tname: 'AppMenu',\n\tcomponents: {\n\t\tNcActions, NcActionLink,\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tapps: loadState('core', 'apps', {}),\n\t\t\tappLimit: 0,\n\t\t\tobserver: null,\n\t\t}\n\t},\n\tcomputed: {\n\t\tappList() {\n\t\t\treturn Object.values(this.apps)\n\t\t},\n\t\tmainAppList() {\n\t\t\treturn this.appList.slice(0, this.appLimit)\n\t\t},\n\t\tpopoverAppList() {\n\t\t\treturn this.appList.slice(this.appLimit)\n\t\t},\n\t\tappLabel() {\n\t\t\treturn (app) => app.name\n\t\t\t\t+ (app.active ? ' (' + t('core', 'Currently open') + ')' : '')\n\t\t\t\t+ (app.unread > 0 ? ' (' + n('core', '{count} notification', '{count} notifications', app.unread, { count: app.unread }) + ')' : '')\n\t\t},\n\t},\n\tmounted() {\n\t\tthis.observer = new ResizeObserver(this.resize)\n\t\tthis.observer.observe(this.$el)\n\t\tthis.resize()\n\t\tsubscribe('nextcloud:app-menu.refresh', this.setApps)\n\t},\n\tbeforeDestroy() {\n\t\tthis.observer.disconnect()\n\t\tunsubscribe('nextcloud:app-menu.refresh', this.setApps)\n\t},\n\tmethods: {\n\t\tsetNavigationCounter(id, counter) {\n\t\t\tthis.$set(this.apps[id], 'unread', counter)\n\t\t},\n\t\tsetApps({ apps }) {\n\t\t\tthis.apps = apps\n\t\t},\n\t\tresize() {\n\t\t\tconst availableWidth = this.$el.offsetWidth\n\t\t\tlet appCount = Math.floor(availableWidth / 50) - 1\n\t\t\tconst popoverAppCount = this.appList.length - appCount\n\t\t\tif (popoverAppCount === 1) {\n\t\t\t\tappCount--\n\t\t\t}\n\t\t\tif (appCount < 1) {\n\t\t\t\tappCount = 0\n\t\t\t}\n\t\t\tthis.appLimit = appCount\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n$header-icon-size: 20px;\n\n.app-menu {\n\twidth: 100%;\n\tdisplay: flex;\n\tflex-shrink: 1;\n\tflex-wrap: wrap;\n}\n.app-menu-main {\n\tdisplay: flex;\n\tflex-wrap: nowrap;\n\n\t.app-menu-entry {\n\t\twidth: 50px;\n\t\theight: 50px;\n\t\tposition: relative;\n\t\tdisplay: flex;\n\t\topacity: .7;\n\t\tfilter: var(--background-image-invert-if-bright);\n\n\t\t&.app-menu-entry__active {\n\t\t\topacity: 1;\n\n\t\t\t&::before {\n\t\t\t\tcontent: \" \";\n\t\t\t\tposition: absolute;\n\t\t\t\tpointer-events: none;\n\t\t\t\tborder-bottom-color: var(--color-main-background);\n\t\t\t\ttransform: translateX(-50%);\n\t\t\t\twidth: 12px;\n\t\t\t\theight: 5px;\n\t\t\t\tborder-radius: 3px;\n\t\t\t\tbackground-color: var(--color-primary-text);\n\t\t\t\tleft: 50%;\n\t\t\t\tbottom: 6px;\n\t\t\t\tdisplay: block;\n\t\t\t\ttransition: all 0.1s ease-in-out;\n\t\t\t\topacity: 1;\n\t\t\t}\n\n\t\t\t.app-menu-entry--label {\n\t\t\t\tfont-weight: bold;\n\t\t\t}\n\t\t}\n\n\t\ta {\n\t\t\twidth: calc(100% - 4px);\n\t\t\theight: calc(100% - 4px);\n\t\t\tmargin: 2px;\n\t\t\tcolor: var(--color-primary-text);\n\t\t\tposition: relative;\n\t\t}\n\n\t\timg {\n\t\t\ttransition: margin 0.1s ease-in-out;\n\t\t\twidth: $header-icon-size;\n\t\t\theight: $header-icon-size;\n\t\t\tpadding: calc((100% - $header-icon-size) / 2);\n\t\t\tbox-sizing: content-box;\n\t\t}\n\n\t\t.app-menu-entry--label {\n\t\t\topacity: 0;\n\t\t\tposition: absolute;\n\t\t\tfont-size: 12px;\n\t\t\tcolor: var(--color-primary-text);\n\t\t\ttext-align: center;\n\t\t\tbottom: -5px;\n\t\t\tleft: 50%;\n\t\t\ttop: 45%;\n\t\t\tdisplay: block;\n\t\t\tmin-width: 100%;\n\t\t\ttransform: translateX(-50%);\n\t\t\ttransition: all 0.1s ease-in-out;\n\t\t\twidth: 100%;\n\t\t\ttext-overflow: ellipsis;\n\t\t\toverflow: hidden;\n\t\t\tletter-spacing: -0.5px;\n\t\t}\n\n\t\t&:hover,\n\t\t&:focus-within {\n\t\t\topacity: 1;\n\t\t\t.app-menu-entry--label {\n\t\t\t\topacity: 1;\n\t\t\t\tfont-weight: bolder;\n\t\t\t\tbottom: 0;\n\t\t\t\twidth: 100%;\n\t\t\t\ttext-overflow: ellipsis;\n\t\t\t\toverflow: hidden;\n\t\t\t}\n\t\t}\n\n\t}\n\n\t// Show labels\n\t&:hover,\n\t&:focus-within,\n\t.app-menu-entry:hover,\n\t.app-menu-entry:focus {\n\t\topacity: 1;\n\n\t\timg {\n\t\t\tmargin-top: -8px;\n\t\t}\n\n\t\t.app-menu-entry--label {\n\t\t\topacity: 1;\n\t\t\tbottom: 0;\n\t\t}\n\n\t\t&::before, .app-menu-entry::before {\n\t\t\topacity: 0;\n\t\t}\n\t}\n}\n\n::v-deep .app-menu-more .button-vue--vue-tertiary {\n\tcolor: var(--color-primary-text);\n\topacity: .7;\n\tmargin: 3px;\n\tfilter: var(--background-image-invert-if-bright);\n\n\t&:hover {\n\t\topacity: 1;\n\t\tbackground-color: transparent !important;\n\t}\n\n\t&:focus-visible {\n\t\topacity: 1;\n\t\toutline: none !important;\n\t}\n}\n\n.app-menu-popover-entry {\n\t.app-icon {\n\t\tposition: relative;\n\t\theight: 44px;\n\n\t\t&.has-unread::after {\n\t\t\tbackground-color: var(--color-main-text);\n\t\t}\n\n\t\timg {\n\t\t\twidth: $header-icon-size;\n\t\t\theight: $header-icon-size;\n\t\t\tpadding: calc((50px - $header-icon-size) / 2);\n\t\t}\n\t}\n}\n\n.has-unread::after {\n\tcontent: \"\";\n\twidth: 8px;\n\theight: 8px;\n\tbackground-color: var(--color-primary-text);\n\tborder-radius: 50%;\n\tposition: absolute;\n\tdisplay: block;\n\ttop: 10px;\n\tright: 10px;\n}\n\n.unread-counter {\n\tdisplay: none;\n}\n</style>\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppMenu.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppMenu.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppMenu.vue?vue&type=style&index=0&id=44a795f6&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppMenu.vue?vue&type=style&index=0&id=44a795f6&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./AppMenu.vue?vue&type=template&id=44a795f6&scoped=true&\"\nimport script from \"./AppMenu.vue?vue&type=script&lang=js&\"\nexport * from \"./AppMenu.vue?vue&type=script&lang=js&\"\nimport style0 from \"./AppMenu.vue?vue&type=style&index=0&id=44a795f6&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"44a795f6\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('nav',{staticClass:\"app-menu\"},[_c('ul',{staticClass:\"app-menu-main\"},_vm._l((_vm.mainAppList),function(app){return _c('li',{key:app.id,staticClass:\"app-menu-entry\",class:{ 'app-menu-entry__active': app.active },attrs:{\"data-app-id\":app.id}},[_c('a',{class:{ 'has-unread': app.unread > 0 },attrs:{\"href\":app.href,\"aria-label\":_vm.appLabel(app),\"title\":app.name,\"aria-current\":app.active ? 'page' : false,\"target\":app.target ? '_blank' : undefined,\"rel\":app.target ? 'noopener noreferrer' : undefined}},[_c('img',{attrs:{\"src\":app.icon,\"alt\":\"\"}}),_vm._v(\" \"),_c('div',{staticClass:\"app-menu-entry--label\"},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(app.name)+\"\\n\\t\\t\\t\\t\\t\"),(app.unread > 0)?_c('span',{staticClass:\"hidden-visually unread-counter\"},[_vm._v(_vm._s(app.unread))]):_vm._e()])])])}),0),_vm._v(\" \"),_c('NcActions',{staticClass:\"app-menu-more\",attrs:{\"aria-label\":_vm.t('core', 'More apps')}},_vm._l((_vm.popoverAppList),function(app){return _c('NcActionLink',{key:app.id,staticClass:\"app-menu-popover-entry\",attrs:{\"aria-label\":_vm.appLabel(app),\"aria-current\":app.active ? 'page' : false,\"href\":app.href},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('div',{staticClass:\"app-icon\",class:{ 'has-unread': app.unread > 0 }},[_c('img',{attrs:{\"src\":app.icon,\"alt\":\"\"}})])]},proxy:true}],null,true)},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(app.name)+\"\\n\\t\\t\\t\"),(app.unread > 0)?_c('span',{staticClass:\"hidden-visually unread-counter\"},[_vm._v(_vm._s(app.unread))]):_vm._e()])}),1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright 2023 Christopher Ng <chrng8@gmail.com>\n -\n - @author Christopher Ng <chrng8@gmail.com>\n -\n - @license AGPL-3.0-or-later\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n-->\n\n<template>\n\t<li :id=\"id\"\n\t\tclass=\"menu-entry\">\n\t\t<a v-if=\"href\"\n\t\t\t:href=\"href\"\n\t\t\t:class=\"{ active }\"\n\t\t\t@click.exact=\"handleClick\">\n\t\t\t<NcLoadingIcon v-if=\"loading\"\n\t\t\t\tclass=\"menu-entry__loading-icon\"\n\t\t\t\t:size=\"18\" />\n\t\t\t<img v-else :src=\"cachedIcon\" alt=\"\" />\n\t\t\t{{ name }}\n\t\t</a>\n\t\t<button v-else>\n\t\t\t<img :src=\"cachedIcon\" alt=\"\" />\n\t\t\t{{ name }}\n\t\t</button>\n\t</li>\n</template>\n\n<script>\nimport { loadState } from '@nextcloud/initial-state'\n\nimport NcLoadingIcon from '@nextcloud/vue/dist/Components/NcLoadingIcon.js'\n\nconst versionHash = loadState('core', 'versionHash', '')\n\nexport default {\n\tname: 'UserMenuEntry',\n\n\tcomponents: {\n\t\tNcLoadingIcon,\n\t},\n\n\tprops: {\n\t\tid: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tname: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\thref: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tactive: {\n\t\t\ttype: Boolean,\n\t\t\trequired: true,\n\t\t},\n\t\ticon: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tloading: false,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tcachedIcon() {\n\t\t\treturn `${this.icon}?v=${versionHash}`\n\t\t},\n\t},\n\n\tmethods: {\n\t\thandleClick() {\n\t\t\tthis.loading = true\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.menu-entry {\n\t&__loading-icon {\n\t\tmargin-right: 8px;\n\t}\n}\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserMenuEntry.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserMenuEntry.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserMenuEntry.vue?vue&type=style&index=0&id=6e59d13c&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserMenuEntry.vue?vue&type=style&index=0&id=6e59d13c&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./UserMenuEntry.vue?vue&type=template&id=6e59d13c&scoped=true&\"\nimport script from \"./UserMenuEntry.vue?vue&type=script&lang=js&\"\nexport * from \"./UserMenuEntry.vue?vue&type=script&lang=js&\"\nimport style0 from \"./UserMenuEntry.vue?vue&type=style&index=0&id=6e59d13c&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"6e59d13c\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('li',{staticClass:\"menu-entry\",attrs:{\"id\":_vm.id}},[(_vm.href)?_c('a',{class:{ active: _vm.active },attrs:{\"href\":_vm.href},on:{\"click\":function($event){if($event.ctrlKey||$event.shiftKey||$event.altKey||$event.metaKey)return null;return _vm.handleClick.apply(null, arguments)}}},[(_vm.loading)?_c('NcLoadingIcon',{staticClass:\"menu-entry__loading-icon\",attrs:{\"size\":18}}):_c('img',{attrs:{\"src\":_vm.cachedIcon,\"alt\":\"\"}}),_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.name)+\"\\n\\t\")],1):_c('button',[_c('img',{attrs:{\"src\":_vm.cachedIcon,\"alt\":\"\"}}),_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.name)+\"\\n\\t\")])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright 2023 Christopher Ng <chrng8@gmail.com>\n -\n - @author Christopher Ng <chrng8@gmail.com>\n -\n - @license AGPL-3.0-or-later\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n-->\n\n<template>\n\t<NcHeaderMenu id=\"user-menu\"\n\t\tclass=\"user-menu\"\n\t\t:aria-label=\"t('core', 'Open settings menu')\">\n\t\t<template #trigger>\n\t\t\t<NcAvatar class=\"user-menu__avatar\"\n\t\t\t\t:disable-menu=\"true\"\n\t\t\t\t:disable-tooltip=\"true\"\n\t\t\t\t:user=\"userId\" />\n\t\t</template>\n\t\t<nav class=\"user-menu__nav\"\n\t\t\t:aria-label=\"t('core', 'Settings menu')\">\n\t\t\t<ul>\n\t\t\t\t<UserMenuEntry v-for=\"entry in settingsNavEntries\"\n\t\t\t\t\tv-bind=\"entry\"\n\t\t\t\t\t:key=\"entry.id\" />\n\t\t\t</ul>\n\t\t</nav>\n\t</NcHeaderMenu>\n</template>\n\n<script>\nimport { emit } from '@nextcloud/event-bus'\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { loadState } from '@nextcloud/initial-state'\n\nimport NcAvatar from '@nextcloud/vue/dist/Components/NcAvatar.js'\nimport NcHeaderMenu from '@nextcloud/vue/dist/Components/NcHeaderMenu.js'\n\nimport UserMenuEntry from '../components/UserMenu/UserMenuEntry.vue'\n\nconst settingsNavEntries = loadState('core', 'settingsNavEntries', [])\n\nexport default {\n\tname: 'UserMenu',\n\n\tcomponents: {\n\t\tNcAvatar,\n\t\tNcHeaderMenu,\n\t\tUserMenuEntry,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tsettingsNavEntries,\n\t\t\tuserId: getCurrentUser()?.uid,\n\t\t}\n\t},\n\n\tmounted() {\n\t\temit('core:user-menu:mounted')\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.user-menu {\n\tmargin-right: 12px;\n\n\t&:deep {\n\t\t.header-menu {\n\t\t\t&__trigger {\n\t\t\t\topacity: 1 !important;\n\t\t\t\t&:focus-visible {\n\t\t\t\t\t.user-menu__avatar {\n\t\t\t\t\t\tborder: 2px solid var(--color-primary-text);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t&__carret {\n\t\t\t\tdisplay: none !important;\n\t\t\t}\n\n\t\t\t&__content {\n\t\t\t\twidth: fit-content !important;\n\t\t\t}\n\t\t}\n\t}\n\n\t&__avatar {\n\t\t&:active,\n\t\t&:focus,\n\t\t&:hover {\n\t\t\tborder: 2px solid var(--color-primary-text);\n\t\t}\n\t}\n\n\t&__nav {\n\t\tdisplay: flex;\n\t\twidth: 100%;\n\n\t\tul {\n\t\t\tdisplay: flex;\n\t\t\tflex-direction: column;\n\t\t\tgap: 2px;\n\n\t\t\t&:deep {\n\t\t\t\tli {\n\t\t\t\t\ta,\n\t\t\t\t\tbutton {\n\t\t\t\t\t\tborder-radius: 6px;\n\t\t\t\t\t\tdisplay: inline-flex;\n\t\t\t\t\t\talign-items: center;\n\t\t\t\t\t\theight: var(--header-menu-item-height);\n\t\t\t\t\t\tcolor: var(--color-main-text);\n\t\t\t\t\t\tpadding: 10px 8px;\n\t\t\t\t\t\tbox-sizing: border-box;\n\t\t\t\t\t\twhite-space: nowrap;\n\t\t\t\t\t\tposition: relative;\n\t\t\t\t\t\twidth: 100%;\n\n\t\t\t\t\t\t&:hover {\n\t\t\t\t\t\t\tbackground-color: var(--color-background-hover);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t&:focus-visible {\n\t\t\t\t\t\t\tbackground-color: var(--color-background-hover) !important;\n\t\t\t\t\t\t\tbox-shadow: inset 0 0 0 2px var(--color-primary) !important;\n\t\t\t\t\t\t\toutline: none !important;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t&:active,\n\t\t\t\t\t\t&.active {\n\t\t\t\t\t\t\tbackground-color: var(--color-primary-light);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tspan {\n\t\t\t\t\t\t\tpadding-bottom: 0;\n\t\t\t\t\t\t\tcolor: var(--color-main-text);\n\t\t\t\t\t\t\twhite-space: nowrap;\n\t\t\t\t\t\t\toverflow: hidden;\n\t\t\t\t\t\t\ttext-overflow: ellipsis;\n\t\t\t\t\t\t\tmax-width: 110px;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\timg {\n\t\t\t\t\t\t\twidth: 16px;\n\t\t\t\t\t\t\theight: 16px;\n\t\t\t\t\t\t\tmargin-right: 10px;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\timg,\n\t\t\t\t\t\tsvg {\n\t\t\t\t\t\t\topacity: .7;\n\t\t\t\t\t\t\tfilter: var(--background-invert-if-dark);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Override global button styles\n\t\t\t\t\tbutton {\n\t\t\t\t\t\tbackground-color: transparent;\n\t\t\t\t\t\tborder: none;\n\t\t\t\t\t\tfont-weight: normal;\n\t\t\t\t\t\tmargin: 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n</style>\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserMenu.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserMenu.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserMenu.vue?vue&type=style&index=0&id=6a818bbc&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserMenu.vue?vue&type=style&index=0&id=6a818bbc&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./UserMenu.vue?vue&type=template&id=6a818bbc&scoped=true&\"\nimport script from \"./UserMenu.vue?vue&type=script&lang=js&\"\nexport * from \"./UserMenu.vue?vue&type=script&lang=js&\"\nimport style0 from \"./UserMenu.vue?vue&type=style&index=0&id=6a818bbc&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"6a818bbc\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('NcHeaderMenu',{staticClass:\"user-menu\",attrs:{\"id\":\"user-menu\",\"aria-label\":_vm.t('core', 'Open settings menu')},scopedSlots:_vm._u([{key:\"trigger\",fn:function(){return [_c('NcAvatar',{staticClass:\"user-menu__avatar\",attrs:{\"disable-menu\":true,\"disable-tooltip\":true,\"user\":_vm.userId}})]},proxy:true}])},[_vm._v(\" \"),_c('nav',{staticClass:\"user-menu__nav\",attrs:{\"aria-label\":_vm.t('core', 'Settings menu')}},[_c('ul',_vm._l((_vm.settingsNavEntries),function(entry){return _c('UserMenuEntry',_vm._b({key:entry.id},'UserMenuEntry',entry,false))}),1)])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Jan-Christoph Borchardt <hey@jancborchardt.net>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author nacho <nacho@ownyourbits.com>\n * @author Vincent Petry <vincent@nextcloud.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n/* globals Snap */\nimport _ from 'underscore'\nimport $ from 'jquery'\nimport moment from 'moment'\n\nimport { initSessionHeartBeat } from './session-heartbeat.js'\nimport OC from './OC/index.js'\nimport { setUp as setUpContactsMenu } from './components/ContactsMenu.js'\nimport { setUp as setUpMainMenu } from './components/MainMenu.js'\nimport { setUp as setUpUserMenu } from './components/UserMenu.js'\nimport PasswordConfirmation from './OC/password-confirmation.js'\n\n// keep in sync with core/css/variables.scss\nconst breakpointMobileWidth = 1024\n\nconst initLiveTimestamps = () => {\n\t// Update live timestamps every 30 seconds\n\tsetInterval(() => {\n\t\t$('.live-relative-timestamp').each(function() {\n\t\t\tconst timestamp = parseInt($(this).attr('data-timestamp'), 10)\n\t\t\t$(this).text(moment(timestamp).fromNow())\n\t\t})\n\t}, 30 * 1000)\n}\n\n/**\n * Moment doesn't have aliases for every locale and doesn't parse some locale IDs correctly so we need to alias them\n */\nconst localeAliases = {\n\tzh: 'zh-cn',\n\tzh_Hans: 'zh-cn',\n\tzh_Hans_CN: 'zh-cn',\n\tzh_Hans_HK: 'zh-cn',\n\tzh_Hans_MO: 'zh-cn',\n\tzh_Hans_SG: 'zh-cn',\n\tzh_Hant: 'zh-hk',\n\tzh_Hant_HK: 'zh-hk',\n\tzh_Hant_MO: 'zh-mo',\n\tzh_Hant_TW: 'zh-tw',\n}\nlet locale = OC.getLocale()\nif (Object.prototype.hasOwnProperty.call(localeAliases, locale)) {\n\tlocale = localeAliases[locale]\n}\n\n/**\n * Set users locale to moment.js as soon as possible\n */\nmoment.locale(locale)\n\n/**\n * Initializes core\n */\nexport const initCore = () => {\n\t$(window).on('unload.main', () => { OC._unloadCalled = true })\n\t$(window).on('beforeunload.main', () => {\n\t\t// super-trick thanks to http://stackoverflow.com/a/4651049\n\t\t// in case another handler displays a confirmation dialog (ex: navigating away\n\t\t// during an upload), there are two possible outcomes: user clicked \"ok\" or\n\t\t// \"cancel\"\n\n\t\t// first timeout handler is called after unload dialog is closed\n\t\tsetTimeout(() => {\n\t\t\tOC._userIsNavigatingAway = true\n\n\t\t\t// second timeout event is only called if user cancelled (Chrome),\n\t\t\t// but in other browsers it might still be triggered, so need to\n\t\t\t// set a higher delay...\n\t\t\tsetTimeout(() => {\n\t\t\t\tif (!OC._unloadCalled) {\n\t\t\t\t\tOC._userIsNavigatingAway = false\n\t\t\t\t}\n\t\t\t}, 10000)\n\t\t}, 1)\n\t})\n\t$(document).on('ajaxError.main', function(event, request, settings) {\n\t\tif (settings && settings.allowAuthErrors) {\n\t\t\treturn\n\t\t}\n\t\tOC._processAjaxError(request)\n\t})\n\n\tinitSessionHeartBeat()\n\n\tOC.registerMenu($('#expand'), $('#expanddiv'), false, true)\n\n\t// toggle for menus\n\t$(document).on('mouseup.closemenus', event => {\n\t\tconst $el = $(event.target)\n\t\tif ($el.closest('.menu').length || $el.closest('.menutoggle').length) {\n\t\t\t// don't close when clicking on the menu directly or a menu toggle\n\t\t\treturn false\n\t\t}\n\n\t\tOC.hideMenus()\n\t})\n\n\tsetUpMainMenu()\n\tsetUpUserMenu()\n\tsetUpContactsMenu()\n\n\t// just add snapper for logged in users\n\t// and if the app doesn't handle the nav slider itself\n\tif ($('#app-navigation').length && !$('html').hasClass('lte9')\n\t\t&& !$('#app-content').hasClass('no-snapper')) {\n\n\t\t// App sidebar on mobile\n\t\tconst snapper = new Snap({\n\t\t\telement: document.getElementById('app-content'),\n\t\t\tdisable: 'right',\n\t\t\tmaxPosition: 300, // $navigation-width\n\t\t\tminDragDistance: 100,\n\t\t})\n\n\t\t$('#app-content').prepend('<div id=\"app-navigation-toggle\" class=\"icon-menu\" style=\"display:none\" tabindex=\"0\"></div>')\n\n\t\t// keep track whether snapper is currently animating, and\n\t\t// prevent to call open or close while that is the case\n\t\t// to avoid duplicating events (snap.js doesn't check this)\n\t\tlet animating = false\n\t\tsnapper.on('animating', () => {\n\t\t\t// we need this because the trigger button\n\t\t\t// is also implicitly wired to close by snapper\n\t\t\tanimating = true\n\t\t})\n\t\tsnapper.on('animated', () => {\n\t\t\tanimating = false\n\t\t})\n\t\tsnapper.on('start', () => {\n\t\t\t// we need this because dragging triggers that\n\t\t\tanimating = true\n\t\t})\n\t\tsnapper.on('end', () => {\n\t\t\t// we need this because dragging stop triggers that\n\t\t\tanimating = false\n\t\t})\n\n\t\t// These are necessary because calling open or close\n\t\t// on snapper during an animation makes it trigger an\n\t\t// unfinishable animation, which itself will continue\n\t\t// triggering animating events and cause high CPU load,\n\t\t//\n\t\t// Ref https://github.com/jakiestfu/Snap.js/issues/216\n\t\tconst oldSnapperOpen = snapper.open\n\t\tconst oldSnapperClose = snapper.close\n\t\tconst _snapperOpen = () => {\n\t\t\tif (animating || snapper.state().state !== 'closed') {\n\t\t\t\treturn\n\t\t\t}\n\t\t\toldSnapperOpen('left')\n\t\t}\n\n\t\tconst _snapperClose = () => {\n\t\t\tif (animating || snapper.state().state === 'closed') {\n\t\t\t\treturn\n\t\t\t}\n\t\t\toldSnapperClose()\n\t\t}\n\n\t\t// Needs to be deferred to properly catch in-between\n\t\t// events that snap.js is triggering after dragging.\n\t\t//\n\t\t// Skipped when running unit tests as we are not testing\n\t\t// the snap.js workarounds...\n\t\tif (!window.TESTING) {\n\t\t\tsnapper.open = () => {\n\t\t\t\t_.defer(_snapperOpen)\n\t\t\t}\n\t\t\tsnapper.close = () => {\n\t\t\t\t_.defer(_snapperClose)\n\t\t\t}\n\t\t}\n\n\t\t$('#app-navigation-toggle').click((e) => {\n\t\t\t// close is implicit in the button by snap.js\n\t\t\tif (snapper.state().state !== 'left') {\n\t\t\t\tsnapper.open()\n\t\t\t}\n\t\t})\n\t\t$('#app-navigation-toggle').keypress(e => {\n\t\t\tif (snapper.state().state === 'left') {\n\t\t\t\tsnapper.close()\n\t\t\t} else {\n\t\t\t\tsnapper.open()\n\t\t\t}\n\t\t})\n\n\t\t// close sidebar when switching navigation entry\n\t\tconst $appNavigation = $('#app-navigation')\n\t\t$appNavigation.delegate('a, :button', 'click', event => {\n\t\t\tconst $target = $(event.target)\n\t\t\t// don't hide navigation when changing settings or adding things\n\t\t\tif ($target.is('.app-navigation-noclose')\n\t\t\t\t|| $target.closest('.app-navigation-noclose').length) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tif ($target.is('.app-navigation-entry-utils-menu-button')\n\t\t\t\t|| $target.closest('.app-navigation-entry-utils-menu-button').length) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tif ($target.is('.add-new')\n\t\t\t\t|| $target.closest('.add-new').length) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tif ($target.is('#app-settings')\n\t\t\t\t|| $target.closest('#app-settings').length) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tsnapper.close()\n\t\t})\n\n\t\tlet navigationBarSlideGestureEnabled = false\n\t\tlet navigationBarSlideGestureAllowed = true\n\t\tlet navigationBarSlideGestureEnablePending = false\n\n\t\tOC.allowNavigationBarSlideGesture = () => {\n\t\t\tnavigationBarSlideGestureAllowed = true\n\n\t\t\tif (navigationBarSlideGestureEnablePending) {\n\t\t\t\tsnapper.enable()\n\n\t\t\t\tnavigationBarSlideGestureEnabled = true\n\t\t\t\tnavigationBarSlideGestureEnablePending = false\n\t\t\t}\n\t\t}\n\n\t\tOC.disallowNavigationBarSlideGesture = () => {\n\t\t\tnavigationBarSlideGestureAllowed = false\n\n\t\t\tif (navigationBarSlideGestureEnabled) {\n\t\t\t\tconst endCurrentDrag = true\n\t\t\t\tsnapper.disable(endCurrentDrag)\n\n\t\t\t\tnavigationBarSlideGestureEnabled = false\n\t\t\t\tnavigationBarSlideGestureEnablePending = true\n\t\t\t}\n\t\t}\n\n\t\tconst toggleSnapperOnSize = () => {\n\t\t\tif ($(window).width() > breakpointMobileWidth) {\n\t\t\t\tsnapper.close()\n\t\t\t\tsnapper.disable()\n\n\t\t\t\tnavigationBarSlideGestureEnabled = false\n\t\t\t\tnavigationBarSlideGestureEnablePending = false\n\t\t\t} else if (navigationBarSlideGestureAllowed) {\n\t\t\t\tsnapper.enable()\n\n\t\t\t\tnavigationBarSlideGestureEnabled = true\n\t\t\t\tnavigationBarSlideGestureEnablePending = false\n\t\t\t} else {\n\t\t\t\tnavigationBarSlideGestureEnablePending = true\n\t\t\t}\n\t\t}\n\n\t\t$(window).resize(_.debounce(toggleSnapperOnSize, 250))\n\n\t\t// initial call\n\t\ttoggleSnapperOnSize()\n\n\t}\n\n\tinitLiveTimestamps()\n\tPasswordConfirmation.init()\n}\n","/**\n * @copyright 2019 Julius Härtl <jus@bitgrid.net>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport $ from 'jquery'\n\n$.prototype.tooltip = (function(tooltip) {\n\treturn function(config) {\n\t\ttry {\n\t\t\treturn tooltip.call(this, config)\n\t\t} catch (ex) {\n\t\t\tif (ex instanceof TypeError && config === 'destroy') {\n\t\t\t\tif (window.TESTING === undefined) {\n\t\t\t\t\tconsole.error('Deprecated call $.tooltip(\\'destroy\\') has been deprecated and should be removed')\n\t\t\t\t}\n\t\t\t\treturn tooltip.call(this, 'dispose')\n\t\t\t}\n\t\t\tif (ex instanceof TypeError && config === 'fixTitle') {\n\t\t\t\tif (window.TESTING === undefined) {\n\t\t\t\t\tconsole.error('Deprecated call $.tooltip(\\'fixTitle\\') has been deprecated and should be removed')\n\t\t\t\t}\n\t\t\t\treturn tooltip.call(this, '_fixTitle')\n\t\t\t}\n\t\t}\n\t}\n})($.prototype.tooltip)\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Christopher Ng <chrng8@gmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport Vue from 'vue'\n\nimport UserMenu from '../views/UserMenu.vue'\n\nexport const setUp = () => {\n\tconst mountPoint = document.getElementById('user-menu')\n\tif (mountPoint) {\n\t\t// eslint-disable-next-line no-new\n\t\tnew Vue({\n\t\t\tel: mountPoint,\n\t\t\trender: h => h(UserMenu),\n\t\t})\n\t}\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { translate as t, translatePlural as n } from '@nextcloud/l10n'\nimport Vue from 'vue'\n\nimport AppMenu from './AppMenu.vue'\n\nexport const setUp = () => {\n\n\tVue.mixin({\n\t\tmethods: {\n\t\t\tt,\n\t\t\tn,\n\t\t},\n\t})\n\n\tconst container = document.getElementById('header-left__appmenu')\n\tif (!container) {\n\t\t// no container, possibly we're on a public page\n\t\treturn\n\t}\n\tconst AppMenuApp = Vue.extend(AppMenu)\n\tconst appMenu = new AppMenuApp({}).$mount(container)\n\n\tObject.assign(OC, {\n\t\tsetNavigationCounter(id, counter) {\n\t\t\tappMenu.setNavigationCounter(id, counter)\n\t\t},\n\t})\n\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Christopher Ng <chrng8@gmail.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport Vue from 'vue'\n\nimport ContactsMenu from '../views/ContactsMenu.vue'\n\n/**\n * @todo move to contacts menu code https://github.com/orgs/nextcloud/projects/31#card-21213129\n */\nexport const setUp = () => {\n\tconst mountPoint = document.getElementById('contactsmenu')\n\tif (mountPoint) {\n\t\t// eslint-disable-next-line no-new\n\t\tnew Vue({\n\t\t\tel: mountPoint,\n\t\t\trender: h => h(ContactsMenu),\n\t\t})\n\t}\n}\n","/**\n * @copyright (c) 2017 Arthur Schiwon <blizzz@arthur-schiwon.de>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport $ from 'jquery'\n\n/*\n * Detects links:\n * Either the http(s) protocol is given or two strings, basically limited to ascii with the last\n * word being at least one digit long,\n * followed by at least another character\n *\n * The downside: anything not ascii is excluded. Not sure how common it is in areas using different\n * alphabets… the upside: fake domains with similar looking characters won't be formatted as links\n *\n * This is a copy of the backend regex in IURLGenerator, make sure to adjust both when changing\n */\nconst urlRegex = /(\\s|^)(https?:\\/\\/)((?:[-A-Z0-9+_]+\\.)+[-A-Z]+(?:\\/[-A-Z0-9+&@#%?=~_|!:,.;()]*)*)(\\s|$)/ig\n\n/**\n * @param {any} content -\n */\nexport function plainToRich(content) {\n\treturn this.formatLinksRich(content)\n}\n\n/**\n * @param {any} content -\n */\nexport function richToPlain(content) {\n\treturn this.formatLinksPlain(content)\n}\n\n/**\n * @param {any} content -\n */\nexport function formatLinksRich(content) {\n\treturn content.replace(urlRegex, function(_, leadingSpace, protocol, url, trailingSpace) {\n\t\tlet linkText = url\n\t\tif (!protocol) {\n\t\t\tprotocol = 'https://'\n\t\t} else if (protocol === 'http://') {\n\t\t\tlinkText = protocol + url\n\t\t}\n\n\t\treturn leadingSpace + '<a class=\"external\" target=\"_blank\" rel=\"noopener noreferrer\" href=\"' + protocol + url + '\">' + linkText + '</a>' + trailingSpace\n\t})\n}\n\n/**\n * @param {any} content -\n */\nexport function formatLinksPlain(content) {\n\tconst $content = $('<div></div>').html(content)\n\t$content.find('a').each(function() {\n\t\tconst $this = $(this)\n\t\t$this.html($this.attr('href'))\n\t})\n\treturn $content.html()\n}\n","/**\n * @copyright (c) 2017 Arthur Schiwon <blizzz@arthur-schiwon.de>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport _ from 'underscore'\nimport $ from 'jquery'\nimport { generateOcsUrl } from '@nextcloud/router'\n\n/**\n * @param {any} options -\n */\nexport function query(options) {\n\toptions = options || {}\n\tconst dismissOptions = options.dismiss || {}\n\t$.ajax({\n\t\ttype: 'GET',\n\t\turl: options.url || generateOcsUrl('core/whatsnew?format=json'),\n\t\tsuccess: options.success || function(data, statusText, xhr) {\n\t\t\tonQuerySuccess(data, statusText, xhr, dismissOptions)\n\t\t},\n\t\terror: options.error || onQueryError,\n\t})\n}\n\n/**\n * @param {any} version -\n * @param {any} options -\n */\nexport function dismiss(version, options) {\n\toptions = options || {}\n\t$.ajax({\n\t\ttype: 'POST',\n\t\turl: options.url || generateOcsUrl('core/whatsnew'),\n\t\tdata: { version: encodeURIComponent(version) },\n\t\tsuccess: options.success || onDismissSuccess,\n\t\terror: options.error || onDismissError,\n\t})\n\t// remove element immediately\n\t$('.whatsNewPopover').remove()\n}\n\n/**\n * @param {any} data -\n * @param {any} statusText -\n * @param {any} xhr -\n * @param {any} dismissOptions -\n */\nfunction onQuerySuccess(data, statusText, xhr, dismissOptions) {\n\tconsole.debug('querying Whats New data was successful: ' + statusText)\n\tconsole.debug(data)\n\n\tif (xhr.status !== 200) {\n\t\treturn\n\t}\n\n\tlet item, menuItem, text, icon\n\n\tconst div = document.createElement('div')\n\tdiv.classList.add('popovermenu', 'open', 'whatsNewPopover', 'menu-left')\n\n\tconst list = document.createElement('ul')\n\n\t// header\n\titem = document.createElement('li')\n\tmenuItem = document.createElement('span')\n\tmenuItem.className = 'menuitem'\n\n\ttext = document.createElement('span')\n\ttext.innerText = t('core', 'New in') + ' ' + data.ocs.data.product\n\ttext.className = 'caption'\n\tmenuItem.appendChild(text)\n\n\ticon = document.createElement('span')\n\ticon.className = 'icon-close'\n\ticon.onclick = function() {\n\t\tdismiss(data.ocs.data.version, dismissOptions)\n\t}\n\tmenuItem.appendChild(icon)\n\n\titem.appendChild(menuItem)\n\tlist.appendChild(item)\n\n\t// Highlights\n\tfor (const i in data.ocs.data.whatsNew.regular) {\n\t\tconst whatsNewTextItem = data.ocs.data.whatsNew.regular[i]\n\t\titem = document.createElement('li')\n\n\t\tmenuItem = document.createElement('span')\n\t\tmenuItem.className = 'menuitem'\n\n\t\ticon = document.createElement('span')\n\t\ticon.className = 'icon-checkmark'\n\t\tmenuItem.appendChild(icon)\n\n\t\ttext = document.createElement('p')\n\t\ttext.innerHTML = _.escape(whatsNewTextItem)\n\t\tmenuItem.appendChild(text)\n\n\t\titem.appendChild(menuItem)\n\t\tlist.appendChild(item)\n\t}\n\n\t// Changelog URL\n\tif (!_.isUndefined(data.ocs.data.changelogURL)) {\n\t\titem = document.createElement('li')\n\n\t\tmenuItem = document.createElement('a')\n\t\tmenuItem.href = data.ocs.data.changelogURL\n\t\tmenuItem.rel = 'noreferrer noopener'\n\t\tmenuItem.target = '_blank'\n\n\t\ticon = document.createElement('span')\n\t\ticon.className = 'icon-link'\n\t\tmenuItem.appendChild(icon)\n\n\t\ttext = document.createElement('span')\n\t\ttext.innerText = t('core', 'View changelog')\n\t\tmenuItem.appendChild(text)\n\n\t\titem.appendChild(menuItem)\n\t\tlist.appendChild(item)\n\t}\n\n\tdiv.appendChild(list)\n\tdocument.body.appendChild(div)\n}\n\n/**\n * @param {any} x -\n * @param {any} t -\n * @param {any} e -\n */\nfunction onQueryError(x, t, e) {\n\tconsole.debug('querying Whats New Data resulted in an error: ' + t + e)\n\tconsole.debug(x)\n}\n\n/**\n * @param {any} data -\n */\nfunction onDismissSuccess(data) {\n\t// noop\n}\n\n/**\n * @param {any} data -\n */\nfunction onDismissError(data) {\n\tconsole.debug('dismissing Whats New data resulted in an error: ' + data)\n}\n","/**\n * @copyright Copyright (c) 2022 Joas Schilling <coding@schilljs.com>\n *\n * @author Joas Schilling <coding@schilljs.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { loadState } from '@nextcloud/initial-state'\n\nexport default {\n\t/**\n\t * @return {boolean} Whether the user opted-out of shortcuts so that they should not be registered\n\t */\n\tdisableKeyboardShortcuts() {\n\t\treturn loadState('theming', 'shortcutsDisabled', false)\n\t},\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n/* eslint-disable @nextcloud/no-deprecations */\nimport { initCore } from './init'\n\nimport _ from 'underscore'\nimport $ from 'jquery'\nimport 'jquery-migrate/dist/jquery-migrate.min'\n// TODO: switch to `jquery-ui` package and import widgets and effects individually\n// `jquery-ui-dist` is used as a workaround for the issue of missing effects\nimport 'jquery-ui-dist/jquery-ui'\nimport 'jquery-ui-dist/jquery-ui.css'\nimport 'jquery-ui-dist/jquery-ui.theme.css'\n// END TODO\nimport autosize from 'autosize'\nimport Backbone from 'backbone'\nimport './Polyfill/tooltip'\nimport ClipboardJS from 'clipboard'\nimport { dav } from 'davclient.js'\nimport Handlebars from 'handlebars'\nimport md5 from 'blueimp-md5'\nimport moment from 'moment'\nimport 'select2'\nimport 'select2/select2.css'\nimport 'snap.js/dist/snap'\nimport 'strengthify'\nimport 'strengthify/strengthify.css'\n\nimport OC from './OC/index'\nimport OCP from './OCP/index'\nimport OCA from './OCA/index'\nimport { getToken as getRequestToken } from './OC/requesttoken'\n\nconst warnIfNotTesting = function() {\n\tif (window.TESTING === undefined) {\n\t\tconsole.warn.apply(console, arguments)\n\t}\n}\n\n/**\n * Mark a function as deprecated and automatically\n * warn if used!\n *\n * @param {Function} func the library to deprecate\n * @param {string} funcName the name of the library\n * @param {number} version the version this gets removed\n * @return {Function}\n */\nconst deprecate = (func, funcName, version) => {\n\tconst oldFunc = func\n\tconst newFunc = function() {\n\t\twarnIfNotTesting(`The ${funcName} library is deprecated! It will be removed in nextcloud ${version}.`)\n\t\treturn oldFunc.apply(this, arguments)\n\t}\n\tObject.assign(newFunc, oldFunc)\n\treturn newFunc\n}\n\nconst setDeprecatedProp = (global, cb, msg) => {\n\t(Array.isArray(global) ? global : [global]).forEach(global => {\n\t\tif (window[global] !== undefined) {\n\t\t\tdelete window[global]\n\t\t}\n\t\tObject.defineProperty(window, global, {\n\t\t\tget: () => {\n\t\t\t\tif (msg) {\n\t\t\t\t\twarnIfNotTesting(`${global} is deprecated: ${msg}`)\n\t\t\t\t} else {\n\t\t\t\t\twarnIfNotTesting(`${global} is deprecated`)\n\t\t\t\t}\n\n\t\t\t\treturn cb()\n\t\t\t},\n\t\t})\n\t})\n}\n\nwindow._ = _\nsetDeprecatedProp(['$', 'jQuery'], () => $, 'The global jQuery is deprecated. It will be removed in a later versions without another warning. Please ship your own.')\nsetDeprecatedProp('autosize', () => autosize, 'please ship your own, this will be removed in Nextcloud 20')\nsetDeprecatedProp('Backbone', () => Backbone, 'please ship your own, this will be removed in Nextcloud 20')\nsetDeprecatedProp(['Clipboard', 'ClipboardJS'], () => ClipboardJS, 'please ship your own, this will be removed in Nextcloud 20')\nwindow.dav = dav\nsetDeprecatedProp('Handlebars', () => Handlebars, 'please ship your own, this will be removed in Nextcloud 20')\nsetDeprecatedProp('md5', () => md5, 'please ship your own, this will be removed in Nextcloud 20')\nsetDeprecatedProp('moment', () => moment, 'please ship your own, this will be removed in Nextcloud 20')\n\nwindow.OC = OC\nsetDeprecatedProp('initCore', () => initCore, 'this is an internal function')\nsetDeprecatedProp('oc_appswebroots', () => OC.appswebroots, 'use OC.appswebroots instead, this will be removed in Nextcloud 20')\nsetDeprecatedProp('oc_config', () => OC.config, 'use OC.config instead, this will be removed in Nextcloud 20')\nsetDeprecatedProp('oc_current_user', () => OC.getCurrentUser().uid, 'use OC.getCurrentUser().uid instead, this will be removed in Nextcloud 20')\nsetDeprecatedProp('oc_debug', () => OC.debug, 'use OC.debug instead, this will be removed in Nextcloud 20')\nsetDeprecatedProp('oc_defaults', () => OC.theme, 'use OC.theme instead, this will be removed in Nextcloud 20')\nsetDeprecatedProp('oc_isadmin', OC.isUserAdmin, 'use OC.isUserAdmin() instead, this will be removed in Nextcloud 20')\nsetDeprecatedProp('oc_requesttoken', () => getRequestToken(), 'use OC.requestToken instead, this will be removed in Nextcloud 20')\nsetDeprecatedProp('oc_webroot', () => OC.webroot, 'use OC.getRootPath() instead, this will be removed in Nextcloud 20')\nsetDeprecatedProp('OCDialogs', () => OC.dialogs, 'use OC.dialogs instead, this will be removed in Nextcloud 20')\nwindow.OCP = OCP\nwindow.OCA = OCA\n$.fn.select2 = deprecate($.fn.select2, 'select2', 19)\n\n/**\n * translate a string\n *\n * @param {string} app the id of the app for which to translate the string\n * @param {string} text the string to translate\n * @param [vars] map of placeholder key to value\n * @param {number} [count] number to replace %n with\n * @return {string}\n */\nwindow.t = _.bind(OC.L10N.translate, OC.L10N)\n\n/**\n * translate a string\n *\n * @param {string} app the id of the app for which to translate the string\n * @param {string} text_singular the string to translate for exactly one object\n * @param {string} text_plural the string to translate for n objects\n * @param {number} count number to determine whether to use singular or plural\n * @param [vars] map of placeholder key to value\n * @return {string} Translated string\n */\nwindow.n = _.bind(OC.L10N.translatePlural, OC.L10N)\n","/**\n * @copyright Copyright (c) 2018 Julius Härtl <jus@bitgrid.net>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport escapeHTML from 'escape-html'\n\n/**\n * @typedef TypeDefinition\n * @function {Function} action This action is executed to let the user select a resource\n * @param {string} icon Contains the icon css class for the type\n * @function Object() { [native code] }\n */\n\n/**\n * @type {TypeDefinition[]}\n */\nconst types = {}\n\n/**\n * Those translations will be used by the vue component but they should be shipped with the server\n * FIXME: Those translations should be added to the library\n *\n * @return {Array}\n */\nexport const l10nProjects = () => {\n\treturn [\n\t\tt('core', 'Add to a project'),\n\t\tt('core', 'Show details'),\n\t\tt('core', 'Hide details'),\n\t\tt('core', 'Rename project'),\n\t\tt('core', 'Failed to rename the project'),\n\t\tt('core', 'Failed to create a project'),\n\t\tt('core', 'Failed to add the item to the project'),\n\t\tt('core', 'Connect items to a project to make them easier to find'),\n\t\tt('core', 'Type to search for existing projects'),\n\t]\n}\n\nexport default {\n\t/**\n\t *\n\t * @param {string} type type\n\t * @param {TypeDefinition} typeDefinition typeDefinition\n\t */\n\tregisterType(type, typeDefinition) {\n\t\ttypes[type] = typeDefinition\n\t},\n\ttrigger(type) {\n\t\treturn types[type].action()\n\t},\n\tgetTypes() {\n\t\treturn Object.keys(types)\n\t},\n\tgetIcon(type) {\n\t\treturn types[type].typeIconClass || ''\n\t},\n\tgetLabel(type) {\n\t\treturn escapeHTML(types[type].typeString || type)\n\t},\n\tgetLink(type, id) {\n\t\t/* TODO: Allow action to be executed instead of href as well */\n\t\treturn typeof types[type] !== 'undefined' ? types[type].link(id) : ''\n\t},\n}\n","/**\n * @copyright Copyright (c) 2018 Julius Härtl <jus@bitgrid.net>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nconst loadedScripts = {}\nconst loadedStylesheets = {}\n/**\n * @namespace OCP\n * @class Loader\n */\nexport default {\n\n\t/**\n\t * Load a script asynchronously\n\t *\n\t * @param {string} app the app name\n\t * @param {string} file the script file name\n\t * @return {Promise}\n\t */\n\tloadScript(app, file) {\n\t\tconst key = app + file\n\t\tif (Object.prototype.hasOwnProperty.call(loadedScripts, key)) {\n\t\t\treturn Promise.resolve()\n\t\t}\n\t\tloadedScripts[key] = true\n\t\treturn new Promise(function(resolve, reject) {\n\t\t\tconst scriptPath = OC.filePath(app, 'js', file)\n\t\t\tconst script = document.createElement('script')\n\t\t\tscript.src = scriptPath\n\t\t\tscript.setAttribute('nonce', btoa(OC.requestToken))\n\t\t\tscript.onload = () => resolve()\n\t\t\tscript.onerror = () => reject(new Error(`Failed to load script from ${scriptPath}`))\n\t\t\tdocument.head.appendChild(script)\n\t\t})\n\t},\n\n\t/**\n\t * Load a stylesheet file asynchronously\n\t *\n\t * @param {string} app the app name\n\t * @param {string} file the script file name\n\t * @return {Promise}\n\t */\n\tloadStylesheet(app, file) {\n\t\tconst key = app + file\n\t\tif (Object.prototype.hasOwnProperty.call(loadedStylesheets, key)) {\n\t\t\treturn Promise.resolve()\n\t\t}\n\t\tloadedStylesheets[key] = true\n\t\treturn new Promise(function(resolve, reject) {\n\t\t\tconst stylePath = OC.filePath(app, 'css', file)\n\t\t\tconst link = document.createElement('link')\n\t\t\tlink.href = stylePath\n\t\t\tlink.type = 'text/css'\n\t\t\tlink.rel = 'stylesheet'\n\t\t\tlink.onload = () => resolve()\n\t\t\tlink.onerror = () => reject(new Error(`Failed to load stylesheet from ${stylePath}`))\n\t\t\tdocument.head.appendChild(link)\n\t\t})\n\t},\n}\n","/**\n * @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport {\n\tshowError,\n\tshowInfo, showMessage,\n\tshowSuccess,\n\tshowWarning,\n} from '@nextcloud/dialogs'\n\nexport default {\n\t/**\n\t * @deprecated 19.0.0 use `showSuccess` from the `@nextcloud/dialogs` package instead\n\t *\n\t * @param {string} text the toast text\n\t * @param {object} options options\n\t * @return {Toast}\n\t */\n\tsuccess(text, options) {\n\t\treturn showSuccess(text, options)\n\t},\n\t/**\n\t * @deprecated 19.0.0 use `showWarning` from the `@nextcloud/dialogs` package instead\n\t *\n\t * @param {string} text the toast text\n\t * @param {object} options options\n\t * @return {Toast}\n\t */\n\twarning(text, options) {\n\t\treturn showWarning(text, options)\n\t},\n\t/**\n\t * @deprecated 19.0.0 use `showError` from the `@nextcloud/dialogs` package instead\n\t *\n\t * @param {string} text the toast text\n\t * @param {object} options options\n\t * @return {Toast}\n\t */\n\terror(text, options) {\n\t\treturn showError(text, options)\n\t},\n\t/**\n\t * @deprecated 19.0.0 use `showInfo` from the `@nextcloud/dialogs` package instead\n\t *\n\t * @param {string} text the toast text\n\t * @param {object} options options\n\t * @return {Toast}\n\t */\n\tinfo(text, options) {\n\t\treturn showInfo(text, options)\n\t},\n\t/**\n\t * @deprecated 19.0.0 use `showMessage` from the `@nextcloud/dialogs` package instead\n\t *\n\t * @param {string} text the toast text\n\t * @param {object} options options\n\t * @return {Toast}\n\t */\n\tmessage(text, options) {\n\t\treturn showMessage(text, options)\n\t},\n\n}\n","/**\n * @copyright Copyright (c) 2016 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { loadState } from '@nextcloud/initial-state'\n\nimport * as AppConfig from './appconfig'\nimport * as Comments from './comments'\nimport * as WhatsNew from './whatsnew'\n\nimport Accessibility from './accessibility'\nimport Collaboration from './collaboration'\nimport Loader from './loader'\nimport Toast from './toast'\n\n/** @namespace OCP */\nexport default {\n\tAccessibility,\n\tAppConfig,\n\tCollaboration,\n\tComments,\n\tInitialState: {\n\t\t/**\n\t\t * @deprecated 18.0.0 add https://www.npmjs.com/package/@nextcloud/initial-state to your app\n\t\t */\n\t\tloadState,\n\t},\n\tLoader,\n\t/**\n\t * @deprecated 19.0.0 use the `@nextcloud/dialogs` package instead\n\t */\n\tToast,\n\tWhatsNew,\n}\n","/**\n * @copyright 2018 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport $ from 'jquery'\n\nimport OC from '../OC'\n\n/**\n * This plugin inserts the right avatar for the user, depending on, whether a\n * custom avatar is uploaded - which it uses then - or not, and display a\n * placeholder with the first letter of the users name instead.\n * For this it queries the core_avatar_get route, thus this plugin is fit very\n * tightly for owncloud, and it may not work anywhere else.\n *\n * You may use this on any <div></div>\n * Here I'm using <div class=\"avatardiv\"></div> as an example.\n *\n * There are 5 ways to call this:\n *\n * 1. $('.avatardiv').avatar('jdoe', 128);\n * This will make the div to jdoe's fitting avatar, with a size of 128px.\n *\n * 2. $('.avatardiv').avatar('jdoe');\n * This will make the div to jdoe's fitting avatar. If the div already has a\n * height, it will be used for the avatars size. Otherwise this plugin will\n * search for 'size' DOM data, to use for avatar size. If neither are available\n * it will default to 64px.\n *\n * 3. $('.avatardiv').avatar();\n * This will search the DOM for 'user' data, to use as the username. If there\n * is no username available it will default to a placeholder with the value of\n * \"?\". The size will be determined the same way, as the second example.\n *\n * 4. $('.avatardiv').avatar('jdoe', 128, true);\n * This will behave like the first example, except it will also append random\n * hashes to the custom avatar images, to force image reloading in IE8.\n *\n * 5. $('.avatardiv').avatar('jdoe', 128, undefined, true);\n * This will behave like the first example, but it will hide the avatardiv, if\n * it will display the default placeholder. undefined is the ie8fix from\n * example 4 and can be either true, or false/undefined, to be ignored.\n *\n * 6. $('.avatardiv').avatar('jdoe', 128, undefined, true, callback);\n * This will behave like the above example, but it will call the function\n * defined in callback after the avatar is placed into the DOM.\n *\n */\n\n$.fn.avatar = function(user, size, ie8fix, hidedefault, callback, displayname) {\n\tconst setAvatarForUnknownUser = function(target) {\n\t\ttarget.imageplaceholder('?')\n\t\ttarget.css('background-color', '#b9b9b9')\n\t}\n\n\tif (typeof (user) !== 'undefined') {\n\t\tuser = String(user)\n\t}\n\tif (typeof (displayname) !== 'undefined') {\n\t\tdisplayname = String(displayname)\n\t}\n\n\tif (typeof (size) === 'undefined') {\n\t\tif (this.height() > 0) {\n\t\t\tsize = this.height()\n\t\t} else if (this.data('size') > 0) {\n\t\t\tsize = this.data('size')\n\t\t} else {\n\t\t\tsize = 64\n\t\t}\n\t}\n\n\tthis.height(size)\n\tthis.width(size)\n\n\tif (typeof (user) === 'undefined') {\n\t\tif (typeof (this.data('user')) !== 'undefined') {\n\t\t\tuser = this.data('user')\n\t\t} else {\n\t\t\tsetAvatarForUnknownUser(this)\n\t\t\treturn\n\t\t}\n\t}\n\n\t// sanitize\n\tuser = String(user).replace(/\\//g, '')\n\n\tconst $div = this\n\tlet url\n\n\t// If this is our own avatar we have to use the version attribute\n\tif (user === OC.getCurrentUser().uid) {\n\t\turl = OC.generateUrl(\n\t\t\t'/avatar/{user}/{size}?v={version}',\n\t\t\t{\n\t\t\t\tuser,\n\t\t\t\tsize: Math.ceil(size * window.devicePixelRatio),\n\t\t\t\tversion: oc_userconfig.avatar.version,\n\t\t\t})\n\t} else {\n\t\turl = OC.generateUrl(\n\t\t\t'/avatar/{user}/{size}',\n\t\t\t{\n\t\t\t\tuser,\n\t\t\t\tsize: Math.ceil(size * window.devicePixelRatio),\n\t\t\t})\n\t}\n\n\tconst img = new Image()\n\n\t// If the new image loads successfully set it.\n\timg.onload = function() {\n\t\t$div.clearimageplaceholder()\n\t\t$div.append(img)\n\n\t\tif (typeof callback === 'function') {\n\t\t\tcallback()\n\t\t}\n\t}\n\t// Fallback when avatar loading fails:\n\t// Use old placeholder when a displayname attribute is defined,\n\t// otherwise show the unknown user placeholder.\n\timg.onerror = function() {\n\t\t$div.clearimageplaceholder()\n\t\tif (typeof (displayname) !== 'undefined') {\n\t\t\t$div.imageplaceholder(user, displayname)\n\t\t} else {\n\t\t\tsetAvatarForUnknownUser($div)\n\t\t}\n\n\t\tif (typeof callback === 'function') {\n\t\t\tcallback()\n\t\t}\n\t}\n\n\tif (size < 32) {\n\t\t$div.addClass('icon-loading-small')\n\t} else {\n\t\t$div.addClass('icon-loading')\n\t}\n\timg.width = size\n\timg.height = size\n\timg.src = url\n\timg.alt = ''\n}\n","/**\n * @copyright 2018 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport $ from 'jquery'\n\nimport OC from '../OC'\nimport { isA11yActivation } from '../Util/a11y.js'\n\nconst LIST = ''\n\t+ '<div class=\"menu popovermenu menu-left hidden contactsmenu-popover\">'\n\t+ ' <ul>'\n\t+ ' <li>'\n\t+ ' <a>'\n\t+ ' <span class=\"icon-loading-small\"></span>'\n\t+ ' </a>'\n\t+ ' </li>'\n\t+ ' </ul>'\n\t+ '</div>'\n\nconst entryTemplate = require('./contactsmenu/jquery_entry.handlebars')\n\n$.fn.contactsMenu = function(shareWith, shareType, appendTo) {\n\t// 0 - user, 4 - email, 6 - remote\n\tconst allowedTypes = [0, 4, 6]\n\tif (allowedTypes.indexOf(shareType) === -1) {\n\t\treturn\n\t}\n\n\tconst $div = this\n\tappendTo.append(LIST)\n\tconst $list = appendTo.find('div.contactsmenu-popover')\n\n\t$div.on('click keydown', function(event) {\n\t\tif (!isA11yActivation(event)) {\n\t\t\treturn\n\t\t}\n\n\t\tif (!$list.hasClass('hidden')) {\n\t\t\t$list.addClass('hidden')\n\t\t\t$list.hide()\n\t\t\treturn\n\t\t}\n\n\t\t$list.removeClass('hidden')\n\t\t$list.show()\n\n\t\tif ($list.hasClass('loaded')) {\n\t\t\treturn\n\t\t}\n\n\t\t$list.addClass('loaded')\n\t\t$.ajax(OC.generateUrl('/contactsmenu/findOne'), {\n\t\t\tmethod: 'POST',\n\t\t\tdata: {\n\t\t\t\tshareType,\n\t\t\t\tshareWith,\n\t\t\t},\n\t\t}).then(function(data) {\n\t\t\t$list.find('ul').find('li').addClass('hidden')\n\n\t\t\tlet actions\n\t\t\tif (!data.topAction) {\n\t\t\t\tactions = [{\n\t\t\t\t\thyperlink: '#',\n\t\t\t\t\ttitle: t('core', 'No action available'),\n\t\t\t\t}]\n\t\t\t} else {\n\t\t\t\tactions = [data.topAction].concat(data.actions)\n\t\t\t}\n\n\t\t\tactions.forEach(function(action) {\n\t\t\t\t$list.find('ul').append(entryTemplate(action))\n\t\t\t})\n\n\t\t\t$div.trigger('load')\n\t\t}, function(jqXHR) {\n\t\t\t$list.find('ul').find('li').addClass('hidden')\n\n\t\t\tlet title\n\t\t\tif (jqXHR.status === 404) {\n\t\t\t\ttitle = t('core', 'No action available')\n\t\t\t} else {\n\t\t\t\ttitle = t('core', 'Error fetching contact actions')\n\t\t\t}\n\n\t\t\t$list.find('ul').append(entryTemplate({\n\t\t\t\thyperlink: '#',\n\t\t\t\ttitle,\n\t\t\t}))\n\n\t\t\t$div.trigger('loaderror', jqXHR)\n\t\t})\n\t})\n\n\t$(document).click(function(event) {\n\t\tconst clickedList = ($list.has(event.target).length > 0)\n\t\tlet clickedTarget = ($div.has(event.target).length > 0)\n\n\t\t$div.each(function() {\n\t\t\tif ($(this).is(event.target)) {\n\t\t\t\tclickedTarget = true\n\t\t\t}\n\t\t})\n\n\t\tif (clickedList || clickedTarget) {\n\t\t\treturn\n\t\t}\n\n\t\t$list.addClass('hidden')\n\t\t$list.hide()\n\t})\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport $ from 'jquery'\n\n/**\n * check if an element exists.\n * allows you to write if ($('#myid').exists()) to increase readability\n *\n * @see {@link http://stackoverflow.com/questions/31044/is-there-an-exists-function-for-jquery}\n * @return {boolean}\n */\n$.fn.exists = function() {\n\treturn this.length > 0\n}\n","/**\n * @copyright 2018 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport $ from 'jquery'\n\n/**\n * Filter jQuery selector by attribute value\n *\n * @param {string} attrName attribute name\n * @param {string} attrValue attribute value\n * @return {void}\n */\n$.fn.filterAttr = function(attrName, attrValue) {\n\treturn this.filter(function() {\n\t\treturn $(this).attr(attrName) === attrValue\n\t})\n}\n","/**\n * @copyright 2018 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Gary Kim <gary@garykim.dev>\n * @author Joas Schilling <coding@schilljs.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport $ from 'jquery'\nimport { isA11yActivation } from '../Util/a11y'\n\n$.widget('oc.ocdialog', {\n\toptions: {\n\t\twidth: 'auto',\n\t\theight: 'auto',\n\t\tcloseButton: true,\n\t\tcloseOnEscape: true,\n\t\tcloseCallback: null,\n\t\tmodal: false,\n\t},\n\t_create() {\n\t\tconst self = this\n\n\t\tthis.originalCss = {\n\t\t\tdisplay: this.element[0].style.display,\n\t\t\twidth: this.element[0].style.width,\n\t\t\theight: this.element[0].style.height,\n\t\t}\n\n\t\tthis.originalTitle = this.element.attr('title')\n\t\tthis.options.title = this.options.title || this.originalTitle\n\n\t\tthis.$dialog = $('<div class=\"oc-dialog\"></div>')\n\t\t\t.attr({\n\t\t\t\t// Setting tabIndex makes the div focusable\n\t\t\t\ttabIndex: -1,\n\t\t\t\trole: 'dialog',\n\t\t\t})\n\t\t\t.insertBefore(this.element)\n\t\tthis.$dialog.append(this.element.detach())\n\t\tthis.element.removeAttr('title').addClass('oc-dialog-content').appendTo(this.$dialog)\n\n\t\t// Activate the primary button on enter if there is a single input\n\t\tif (self.element.find('input').length === 1) {\n\t\t\tconst $input = self.element.find('input')\n\t\t\t$input.on('keydown', function(event) {\n\t\t\t\tif (isA11yActivation(event)) {\n\t\t\t\t\tif (self.$buttonrow) {\n\t\t\t\t\t\tconst $button = self.$buttonrow.find('button.primary')\n\t\t\t\t\t\tif ($button && !$button.prop('disabled')) {\n\t\t\t\t\t\t\t$button.click()\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t})\n\t\t}\n\n\t\tthis.$dialog.css({\n\t\t\tdisplay: 'inline-block',\n\t\t\tposition: 'fixed',\n\t\t})\n\n\t\tthis.enterCallback = null\n\n\t\t$(document).on('keydown keyup', function(event) {\n\t\t\tif (\n\t\t\t\tevent.target !== self.$dialog.get(0)\n\t\t\t\t&& self.$dialog.find($(event.target)).length === 0\n\t\t\t) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\t// Escape\n\t\t\tif (\n\t\t\t\tevent.keyCode === 27\n\t\t\t\t&& event.type === 'keydown'\n\t\t\t\t&& self.options.closeOnEscape\n\t\t\t) {\n\t\t\t\tevent.stopImmediatePropagation()\n\t\t\t\tself.close()\n\t\t\t\treturn false\n\t\t\t}\n\t\t\t// Enter\n\t\t\tif (event.keyCode === 13) {\n\t\t\t\tevent.stopImmediatePropagation()\n\t\t\t\tif (self.enterCallback !== null) {\n\t\t\t\t\tself.enterCallback()\n\t\t\t\t\tevent.preventDefault()\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t\tif (event.type === 'keyup') {\n\t\t\t\t\tevent.preventDefault()\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t\treturn false\n\t\t\t}\n\t\t})\n\n\t\tthis._setOptions(this.options)\n\t\tthis._createOverlay()\n\t},\n\t_init() {\n\t\tthis.$dialog.focus()\n\t\tthis._trigger('open')\n\t},\n\t_setOption(key, value) {\n\t\tconst self = this\n\t\tswitch (key) {\n\t\tcase 'title':\n\t\t\tif (this.$title) {\n\t\t\t\tthis.$title.text(value)\n\t\t\t} else {\n\t\t\t\tconst $title = $('<h2 class=\"oc-dialog-title\">'\n\t\t\t\t\t\t+ value\n\t\t\t\t\t\t+ '</h2>')\n\t\t\t\tthis.$title = $title.prependTo(this.$dialog)\n\t\t\t}\n\t\t\tthis._setSizes()\n\t\t\tbreak\n\t\tcase 'buttons':\n\t\t\tif (this.$buttonrow) {\n\t\t\t\tthis.$buttonrow.empty()\n\t\t\t} else {\n\t\t\t\tconst $buttonrow = $('<div class=\"oc-dialog-buttonrow\"></div>')\n\t\t\t\tthis.$buttonrow = $buttonrow.appendTo(this.$dialog)\n\t\t\t}\n\t\t\tif (value.length === 1) {\n\t\t\t\tthis.$buttonrow.addClass('onebutton')\n\t\t\t} else if (value.length === 2) {\n\t\t\t\tthis.$buttonrow.addClass('twobuttons')\n\t\t\t} else if (value.length === 3) {\n\t\t\t\tthis.$buttonrow.addClass('threebuttons')\n\t\t\t}\n\t\t\t$.each(value, function(idx, val) {\n\t\t\t\tconst $button = $('<button>').text(val.text)\n\t\t\t\tif (val.classes) {\n\t\t\t\t\t$button.addClass(val.classes)\n\t\t\t\t}\n\t\t\t\tif (val.defaultButton) {\n\t\t\t\t\t$button.addClass('primary')\n\t\t\t\t\tself.$defaultButton = $button\n\t\t\t\t}\n\t\t\t\tself.$buttonrow.append($button)\n\t\t\t\t$button.on('click keydown', function(event) {\n\t\t\t\t\tif (isA11yActivation(event)) {\n\t\t\t\t\t\tval.click.apply(self.element[0], arguments)\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t})\n\t\t\tthis.$buttonrow.find('button')\n\t\t\t\t.on('focus', function(event) {\n\t\t\t\t\tself.$buttonrow.find('button').removeClass('primary')\n\t\t\t\t\t$(this).addClass('primary')\n\t\t\t\t})\n\t\t\tthis._setSizes()\n\t\t\tbreak\n\t\tcase 'style':\n\t\t\tif (value.buttons !== undefined) {\n\t\t\t\tthis.$buttonrow.addClass(value.buttons)\n\t\t\t}\n\t\t\tbreak\n\t\tcase 'closeButton':\n\t\t\tif (value) {\n\t\t\t\tconst $closeButton = $('<a class=\"oc-dialog-close\" tabindex=\"0\"></a>')\n\t\t\t\tthis.$dialog.prepend($closeButton)\n\t\t\t\t$closeButton.on('click keydown', function(event) {\n\t\t\t\t\tif (isA11yActivation(event)) {\n\t\t\t\t\t\tself.options.closeCallback && self.options.closeCallback()\n\t\t\t\t\t\tself.close()\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t} else {\n\t\t\t\tthis.$dialog.find('.oc-dialog-close').remove()\n\t\t\t}\n\t\t\tbreak\n\t\tcase 'width':\n\t\t\tthis.$dialog.css('width', value)\n\t\t\tbreak\n\t\tcase 'height':\n\t\t\tthis.$dialog.css('height', value)\n\t\t\tbreak\n\t\tcase 'close':\n\t\t\tthis.closeCB = value\n\t\t\tbreak\n\t\t}\n\t\t// this._super(key, value);\n\t\t$.Widget.prototype._setOption.apply(this, arguments)\n\t},\n\t_setOptions(options) {\n\t\t// this._super(options);\n\t\t$.Widget.prototype._setOptions.apply(this, arguments)\n\t},\n\t_setSizes() {\n\t\tlet lessHeight = 0\n\t\tif (this.$title) {\n\t\t\tlessHeight += this.$title.outerHeight(true)\n\t\t}\n\t\tif (this.$buttonrow) {\n\t\t\tlessHeight += this.$buttonrow.outerHeight(true)\n\t\t}\n\t\tthis.element.css({\n\t\t\theight: 'calc(100% - ' + lessHeight + 'px)',\n\t\t})\n\t},\n\t_createOverlay() {\n\t\tif (!this.options.modal) {\n\t\t\treturn\n\t\t}\n\n\t\tconst self = this\n\t\tlet contentDiv = $('#content')\n\t\tif (contentDiv.length === 0) {\n\t\t\t// nextcloud-vue compatibility\n\t\t\tcontentDiv = $('.content')\n\t\t}\n\t\tthis.overlay = $('<div>')\n\t\t\t.addClass('oc-dialog-dim')\n\t\t\t.appendTo(contentDiv)\n\t\tthis.overlay.on('click keydown keyup', function(event) {\n\t\t\tif (event.target !== self.$dialog.get(0) && self.$dialog.find($(event.target)).length === 0) {\n\t\t\t\tevent.preventDefault()\n\t\t\t\tevent.stopPropagation()\n\n\t\t\t}\n\t\t})\n\t},\n\t_destroyOverlay() {\n\t\tif (!this.options.modal) {\n\t\t\treturn\n\t\t}\n\n\t\tif (this.overlay) {\n\t\t\tthis.overlay.off('click keydown keyup')\n\t\t\tthis.overlay.remove()\n\t\t\tthis.overlay = null\n\t\t}\n\t},\n\twidget() {\n\t\treturn this.$dialog\n\t},\n\tsetEnterCallback(callback) {\n\t\tthis.enterCallback = callback\n\t},\n\tunsetEnterCallback() {\n\t\tthis.enterCallback = null\n\t},\n\tclose() {\n\t\tthis._destroyOverlay()\n\t\tconst self = this\n\t\t// Ugly hack to catch remaining keyup events.\n\t\tsetTimeout(function() {\n\t\t\tself._trigger('close', self)\n\t\t}, 200)\n\n\t\tself.$dialog.remove()\n\t\tthis.destroy()\n\t},\n\tdestroy() {\n\t\tif (this.$title) {\n\t\t\tthis.$title.remove()\n\t\t}\n\t\tif (this.$buttonrow) {\n\t\t\tthis.$buttonrow.remove()\n\t\t}\n\n\t\tif (this.originalTitle) {\n\t\t\tthis.element.attr('title', this.originalTitle)\n\t\t}\n\t\tthis.element.removeClass('oc-dialog-content')\n\t\t\t.css(this.originalCss).detach().insertBefore(this.$dialog)\n\t\tthis.$dialog.remove()\n\t},\n})\n","/**\n * @copyright Copyright (c) 2016 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport $ from 'jquery'\nimport escapeHTML from 'escape-html'\n\n/**\n * jQuery plugin for micro templates\n *\n * Strings are automatically escaped, but that can be disabled by setting\n * escapeFunction to null.\n *\n * Usage examples:\n *\n * var htmlStr = '<p>Bake, uncovered, until the {greasystuff} is melted and the {pasta} is heated through, about {min} minutes.</p>'\n * $(htmlStr).octemplate({greasystuff: 'cheese', pasta: 'macaroni', min: 10});\n *\n * var htmlStr = '<p>Welcome back {user}</p>';\n * $(htmlStr).octemplate({user: 'John Q. Public'}, {escapeFunction: null});\n *\n * Be aware that the target string must be wrapped in an HTML element for the\n * plugin to work. The following won't work:\n *\n * var textStr = 'Welcome back {user}';\n * $(textStr).octemplate({user: 'John Q. Public'});\n *\n * For anything larger than one-liners, you can use a simple $.get() ajax\n * request to get the template, or you can embed them it the page using the\n * text/template type:\n *\n * <script id=\"contactListItemTemplate\" type=\"text/template\">\n * <tr class=\"contact\" data-id=\"{id}\">\n * <td class=\"name\">\n * <input type=\"checkbox\" name=\"id\" value=\"{id}\" /><span class=\"nametext\">{name}</span>\n * </td>\n * <td class=\"email\">\n * <a href=\"mailto:{email}\">{email}</a>\n * </td>\n * <td class=\"phone\">{phone}</td>\n * </tr>\n * </script>\n *\n * var $tmpl = $('#contactListItemTemplate');\n * var contacts = // fetched in some ajax call\n *\n * $.each(contacts, function(idx, contact) {\n * $contactList.append(\n * $tmpl.octemplate({\n * id: contact.getId(),\n * name: contact.getDisplayName(),\n * email: contact.getPreferredEmail(),\n * phone: contact.getPreferredPhone(),\n * });\n * );\n * });\n */\n/**\n * Object Template\n * Inspired by micro templating done by e.g. underscore.js\n */\nconst Template = {\n\tinit(vars, options, elem) {\n\t\t// Mix in the passed in options with the default options\n\t\tthis.vars = vars\n\t\tthis.options = $.extend({}, this.options, options)\n\n\t\tthis.elem = elem\n\t\tconst self = this\n\n\t\tif (typeof this.options.escapeFunction === 'function') {\n\t\t\tconst keys = Object.keys(this.vars)\n\t\t\tfor (let key = 0; key < keys.length; key++) {\n\t\t\t\tif (typeof this.vars[keys[key]] === 'string') {\n\t\t\t\t\tthis.vars[keys[key]] = self.options.escapeFunction(this.vars[keys[key]])\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tconst _html = this._build(this.vars)\n\t\treturn $(_html)\n\t},\n\t// From stackoverflow.com/questions/1408289/best-way-to-do-variable-interpolation-in-javascript\n\t_build(o) {\n\t\tconst data = this.elem.attr('type') === 'text/template' ? this.elem.html() : this.elem.get(0).outerHTML\n\t\ttry {\n\t\t\treturn data.replace(/{([^{}]*)}/g,\n\t\t\t\tfunction(a, b) {\n\t\t\t\t\tconst r = o[b]\n\t\t\t\t\treturn typeof r === 'string' || typeof r === 'number' ? r : a\n\t\t\t\t}\n\t\t\t)\n\t\t} catch (e) {\n\t\t\tconsole.error(e, 'data:', data)\n\t\t}\n\t},\n\toptions: {\n\t\tescapeFunction: escapeHTML,\n\t},\n}\n\n$.fn.octemplate = function(vars, options) {\n\tvars = vars || {}\n\tif (this.length) {\n\t\tconst _template = Object.create(Template)\n\t\treturn _template.init(vars, options, this)\n\t}\n}\n","/**\n * @copyright 2016-2018 John Molakvoæ <skjnldsv@protonmail.com>\n * @copyright 2013 Morris Jobke <morris.jobke@gmail.com>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n * @author Sergey Shliakhov <husband.sergey@gmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n/* eslint-disable */\nimport $ from 'jquery'\nimport md5 from 'blueimp-md5'\n\n/*\n * Adds a background color to the element called on and adds the first character\n * of the passed in string. This string is also the seed for the generation of\n * the background color.\n *\n * You have following HTML:\n *\n * <div id=\"albumart\"></div>\n *\n * And call this from Javascript:\n *\n * $('#albumart').imageplaceholder('The Album Title');\n *\n * Which will result in:\n *\n * <div id=\"albumart\" style=\"background-color: rgb(121, 90, 171); ... \">T</div>\n *\n * You may also call it like this, to have a different background, than the seed:\n *\n * $('#albumart').imageplaceholder('The Album Title', 'Album Title');\n *\n * Resulting in:\n *\n * <div id=\"albumart\" style=\"background-color: rgb(121, 90, 171); ... \">A</div>\n *\n */\n\n/*\n* Alternatively, you can use the prototype function to convert your string to rgb colors:\n*\n* \"a6741a86aded5611a8e46ce16f2ad646\".toRgb()\n*\n* Will return the rgb parameters within the following object:\n*\n* Color {r: 208, g: 158, b: 109}\n*\n*/\n\nconst toRgb = (s) => {\n\t// Normalize hash\n\tvar hash = s.toLowerCase()\n\n\t// Already a md5 hash?\n\tif (hash.match(/^([0-9a-f]{4}-?){8}$/) === null) {\n\t\thash = md5(hash)\n\t}\n\n\thash = hash.replace(/[^0-9a-f]/g, '')\n\n\tfunction Color(r, g, b) {\n\t\tthis.r = r\n\t\tthis.g = g\n\t\tthis.b = b\n\t}\n\n\tfunction stepCalc(steps, ends) {\n\t\tvar step = new Array(3)\n\t\tstep[0] = (ends[1].r - ends[0].r) / steps\n\t\tstep[1] = (ends[1].g - ends[0].g) / steps\n\t\tstep[2] = (ends[1].b - ends[0].b) / steps\n\t\treturn step\n\t}\n\n\tfunction mixPalette(steps, color1, color2) {\n\t\tvar palette = []\n\t\tpalette.push(color1)\n\t\tvar step = stepCalc(steps, [color1, color2])\n\t\tfor (var i = 1; i < steps; i++) {\n\t\t\tvar r = parseInt(color1.r + (step[0] * i))\n\t\t\tvar g = parseInt(color1.g + (step[1] * i))\n\t\t\tvar b = parseInt(color1.b + (step[2] * i))\n\t\t\tpalette.push(new Color(r, g, b))\n\t\t}\n\t\treturn palette\n\t}\n\n\tconst red = new Color(182, 70, 157);\n\tconst yellow = new Color(221, 203, 85);\n\tconst blue = new Color(0, 130, 201); // Nextcloud blue\n\t// Number of steps to go from a color to another\n\t// 3 colors * 6 will result in 18 generated colors\n\tconst steps = 6;\n\n\tconst palette1 = mixPalette(steps, red, yellow);\n\tconst palette2 = mixPalette(steps, yellow, blue);\n\tconst palette3 = mixPalette(steps, blue, red);\n\n\tconst finalPalette = palette1.concat(palette2).concat(palette3);\n\n\t// Convert a string to an integer evenly\n\tfunction hashToInt(hash, maximum) {\n\t\tvar finalInt = 0\n\t\tvar result = []\n\n\t\t// Splitting evenly the string\n\t\tfor (var i = 0; i < hash.length; i++) {\n\t\t\t// chars in md5 goes up to f, hex:16\n\t\t\tresult.push(parseInt(hash.charAt(i), 16) % 16)\n\t\t}\n\t\t// Adds up all results\n\t\tfor (var j in result) {\n\t\t\tfinalInt += result[j]\n\t\t}\n\t\t// chars in md5 goes up to f, hex:16\n\t\t// make sure we're always using int in our operation\n\t\treturn parseInt(parseInt(finalInt) % maximum)\n\t}\n\n\treturn finalPalette[hashToInt(hash, steps * 3)]\n}\n\nString.prototype.toRgb = function() {\n\tconsole.warn('String.prototype.toRgb is deprecated! It will be removed in Nextcloud 22.')\n\n\treturn toRgb(this)\n}\n\n$.fn.imageplaceholder = function(seed, text, size) {\n\ttext = text || seed\n\n\t// Compute the hash\n\tvar rgb = toRgb(seed)\n\tthis.css('background-color', 'rgb(' + rgb.r + ', ' + rgb.g + ', ' + rgb.b + ')')\n\n\t// Placeholders are square\n\tvar height = this.height() || size || 32\n\tthis.height(height)\n\tthis.width(height)\n\n\t// CSS rules\n\tthis.css('color', '#fff')\n\tthis.css('font-weight', 'normal')\n\tthis.css('text-align', 'center')\n\n\t// calculate the height\n\tthis.css('line-height', height + 'px')\n\tthis.css('font-size', (height * 0.55) + 'px')\n\n\tif (seed !== null && seed.length) {\n\t\tvar placeholderText = text.replace(/\\s+/g, ' ').trim().split(' ', 2).map((word) => word[0].toUpperCase()).join('')\n\t\tthis.html(placeholderText);\n\t}\n}\n\n$.fn.clearimageplaceholder = function() {\n\tthis.css('background-color', '')\n\tthis.css('color', '')\n\tthis.css('font-weight', '')\n\tthis.css('text-align', '')\n\tthis.css('line-height', '')\n\tthis.css('font-size', '')\n\tthis.html('')\n\tthis.removeClass('icon-loading')\n\tthis.removeClass('icon-loading-small')\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport $ from 'jquery'\n\nimport { getToken } from '../OC/requesttoken'\n\n$(document).on('ajaxSend', function(elm, xhr, settings) {\n\tif (settings.crossDomain === false) {\n\t\txhr.setRequestHeader('requesttoken', getToken())\n\t\txhr.setRequestHeader('OCS-APIREQUEST', 'true')\n\t}\n})\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport $ from 'jquery'\n\n/**\n * select a range in an input field\n *\n * @see {@link http://stackoverflow.com/questions/499126/jquery-set-cursor-position-in-text-area}\n * @param {number} start start selection from\n * @param {number} end number of char from start\n * @return {void}\n */\n$.fn.selectRange = function(start, end) {\n\treturn this.each(function() {\n\t\tif (this.setSelectionRange) {\n\t\t\tthis.focus()\n\t\t\tthis.setSelectionRange(start, end)\n\t\t} else if (this.createTextRange) {\n\t\t\tconst range = this.createTextRange()\n\t\t\trange.collapse(true)\n\t\t\trange.moveEnd('character', end)\n\t\t\trange.moveStart('character', start)\n\t\t\trange.select()\n\t\t}\n\t})\n}\n","/**\n * @copyright 2018 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport $ from 'jquery'\n\n/**\n * @name Show Password\n * @description\n * @version 1.3.0\n * @requires Jquery 1.5\n *\n * @author Jan Jarfalk <jan.jarfalk@unwrongest.com>\n * author-website http://www.unwrongest.com\n *\n * special-thanks Michel Gratton\n *\n * @license MIT\n */\n$.fn.extend({\n\tshowPassword(c) {\n\n\t\t// Setup callback object\n\t\tconst callback = { fn: null, args: {} }\n\t\tcallback.fn = c\n\n\t\t// Clones passwords and turn the clones into text inputs\n\t\tconst cloneElement = function(element) {\n\n\t\t\tconst $element = $(element)\n\n\t\t\tconst $clone = $('<input />')\n\n\t\t\t// Name added for JQuery Validation compatibility\n\t\t\t// Element name is required to avoid script warning.\n\t\t\t$clone.attr({\n\t\t\t\ttype: 'text',\n\t\t\t\tclass: $element.attr('class'),\n\t\t\t\tstyle: $element.attr('style'),\n\t\t\t\tsize: $element.attr('size'),\n\t\t\t\tname: $element.attr('name') + '-clone',\n\t\t\t\ttabindex: $element.attr('tabindex'),\n\t\t\t\tautocomplete: 'off',\n\t\t\t})\n\n\t\t\tif ($element.attr('placeholder') !== undefined) {\n\t\t\t\t$clone.attr('placeholder', $element.attr('placeholder'))\n\t\t\t}\n\n\t\t\treturn $clone\n\n\t\t}\n\n\t\t// Transfers values between two elements\n\t\tconst update = function(a, b) {\n\t\t\tb.val(a.val())\n\t\t}\n\n\t\t// Shows a or b depending on checkbox\n\t\tconst setState = function(checkbox, a, b) {\n\n\t\t\tif (checkbox.is(':checked')) {\n\t\t\t\tupdate(a, b)\n\t\t\t\tb.show()\n\t\t\t\ta.hide()\n\t\t\t} else {\n\t\t\t\tupdate(b, a)\n\t\t\t\tb.hide()\n\t\t\t\ta.show()\n\t\t\t}\n\n\t\t}\n\n\t\treturn this.each(function() {\n\n\t\t\tconst $input = $(this)\n\t\t\tconst $checkbox = $($input.data('typetoggle'))\n\n\t\t\t// Create clone\n\t\t\tconst $clone = cloneElement($input)\n\t\t\t$clone.insertAfter($input)\n\n\t\t\t// Set callback arguments\n\t\t\tif (callback.fn) {\n\t\t\t\tcallback.args.input = $input\n\t\t\t\tcallback.args.checkbox = $checkbox\n\t\t\t\tcallback.args.clone = $clone\n\t\t\t}\n\n\t\t\t$checkbox.bind('click', function() {\n\t\t\t\tsetState($checkbox, $input, $clone)\n\t\t\t})\n\n\t\t\t$input.bind('keyup', function() {\n\t\t\t\tupdate($input, $clone)\n\t\t\t})\n\n\t\t\t$clone.bind('keyup', function() {\n\t\t\t\tupdate($clone, $input)\n\n\t\t\t\t// Added for JQuery Validation compatibility\n\t\t\t\t// This will trigger validation if it's ON for keyup event\n\t\t\t\t$input.trigger('keyup')\n\n\t\t\t})\n\n\t\t\t// Added for JQuery Validation compatibility\n\t\t\t// This will trigger validation if it's ON for blur event\n\t\t\t$clone.bind('blur', function() {\n\t\t\t\t$input.trigger('focusout')\n\t\t\t})\n\n\t\t\tsetState($checkbox, $input, $clone)\n\n\t\t\t// set type of password field clone (type=text) to password right on submit\n\t\t\t// to prevent browser save the value of this field\n\t\t\t$clone.closest('form').submit(function(e) {\n\t\t\t\t// .prop has to be used, because .attr throws\n\t\t\t\t// an error while changing a type of an input\n\t\t\t\t// element\n\t\t\t\t$clone.prop('type', 'password')\n\t\t\t})\n\n\t\t\tif (callback.fn) {\n\t\t\t\tcallback.fn(callback.args)\n\t\t\t}\n\n\t\t})\n\t},\n})\n","/**\n * @copyright Copyright (c) 2016 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport $ from 'jquery'\n\n// Set autocomplete width the same as the related input\n// See http://stackoverflow.com/a/11845718\n$.ui.autocomplete.prototype._resizeMenu = function() {\n\tconst ul = this.menu.element\n\tul.outerWidth(this.element.outerWidth())\n}\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/dist/cjs.js!./jquery-ui-fixes.scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/dist/cjs.js!./jquery-ui-fixes.scss\";\n export default content && content.locals ? content.locals : undefined;\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/dist/cjs.js!./jquery.ocdialog.scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/dist/cjs.js!./jquery.ocdialog.scss\";\n export default content && content.locals ? content.locals : undefined;\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport $ from 'jquery'\n\nimport './avatar'\nimport './contactsmenu'\nimport './exists'\nimport './filterattr'\nimport './ocdialog'\nimport './octemplate'\nimport './placeholder'\nimport './requesttoken'\nimport './selectrange'\nimport './showpassword'\nimport './ui-fixes'\n\nimport './css/jquery-ui-fixes.scss'\nimport './css/jquery.ocdialog.scss'\n\n/**\n * Disable automatic evaluation of responses for $.ajax() functions (and its\n * higher-level alternatives like $.get() and $.post()).\n *\n * If a response to a $.ajax() request returns a content type of \"application/javascript\"\n * JQuery would previously execute the response body. This is a pretty unexpected\n * behaviour and can result in a bypass of our Content-Security-Policy as well as\n * multiple unexpected XSS vectors.\n */\n$.ajaxSetup({\n\tcontents: {\n\t\tscript: false,\n\t},\n})\n\n/**\n * Disable execution of eval in jQuery. We do require an allowed eval CSP\n * configuration at the moment for handlebars et al. But for jQuery there is\n * not much of a reason to execute JavaScript directly via eval.\n *\n * This thus mitigates some unexpected XSS vectors.\n */\n$.globalEval = function() {\n}\n","/**\n * @copyright 2018 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport $ from 'jquery'\nimport 'core-js/stable'\nimport 'regenerator-runtime/runtime'\nimport './Polyfill/index.js'\n\n// If you remove the line below, tests won't pass\n// eslint-disable-next-line no-unused-vars\nimport OC from './OC/index.js'\n\nimport './globals.js'\nimport './jquery/index.js'\nimport { initCore } from './init.js'\nimport { registerAppsSlideToggle } from './OC/apps.js'\n\nwindow.addEventListener('DOMContentLoaded', function() {\n\tinitCore()\n\tregisterAppsSlideToggle()\n\n\t// fallback to hashchange when no history support\n\tif (window.history.pushState) {\n\t\twindow.onpopstate = _.bind(OC.Util.History._onPopState, OC.Util.History)\n\t} else {\n\t\t$(window).on('hashchange', _.bind(OC.Util.History._onPopState, OC.Util.History))\n\t}\n})\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nimport ___CSS_LOADER_GET_URL_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/getUrl.js\";\nvar ___CSS_LOADER_URL_IMPORT_0___ = new URL(\"images/ui-icons_1d2d44_256x240.png\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_1___ = new URL(\"images/ui-icons_ffffff_256x240.png\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_2___ = new URL(\"images/ui-icons_ffd27a_256x240.png\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_3___ = new URL(\"images/ui-bg_diagonals-thick_20_666666_40x40.png\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_4___ = new URL(\"images/ui-bg_flat_10_000000_40x100.png\", import.meta.url);\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___);\nvar ___CSS_LOADER_URL_REPLACEMENT_1___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_1___);\nvar ___CSS_LOADER_URL_REPLACEMENT_2___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_2___);\nvar ___CSS_LOADER_URL_REPLACEMENT_3___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_3___);\nvar ___CSS_LOADER_URL_REPLACEMENT_4___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_4___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".ui-widget-content{border:1px solid var(--color-border);background:var(--color-main-background) none;color:var(--color-main-text)}.ui-widget-content a{color:var(--color-main-text)}.ui-widget-header{border:none;color:var(--color-main-text);background-image:none}.ui-widget-header a{color:var(--color-main-text)}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default{border:1px solid var(--color-border);background:var(--color-main-background) none;font-weight:bold;color:#555}.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited{color:#555}.ui-state-hover,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-hover,.ui-state-focus,.ui-widget-content .ui-state-focus,.ui-widget-header .ui-state-focus{border:1px solid #ddd;background:var(--color-main-background) none;font-weight:bold;color:var(--color-main-text)}.ui-state-hover a,.ui-state-hover a:hover,.ui-state-hover a:link,.ui-state-hover a:visited{color:var(--color-main-text)}.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active{border:1px solid var(--color-primary);background:var(--color-main-background) none;font-weight:bold;color:var(--color-main-text)}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:var(--color-main-text)}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid var(--color-main-background);background:var(--color-main-background) none;color:var(--color-text-light);font-weight:600}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:var(--color-text-lighter)}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:var(--color-error);background:var(--color-error) none;color:#fff}.ui-state-error a,.ui-widget-content .ui-state-error a,.ui-widget-header .ui-state-error a{color:#fff}.ui-state-error-text,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error-text{color:#fff}.ui-state-default .ui-icon{background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \")}.ui-state-hover .ui-icon,.ui-state-focus .ui-icon{background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \")}.ui-state-active .ui-icon{background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \")}.ui-state-highlight .ui-icon{background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_1___ + \")}.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_2___ + \")}.ui-icon.ui-icon-none{display:none}.ui-widget-overlay{background:#666 url(\" + ___CSS_LOADER_URL_REPLACEMENT_3___ + \") 50% 50% repeat;opacity:.5}.ui-widget-shadow{margin:-5px 0 0 -5px;padding:5px;background:#000 url(\" + ___CSS_LOADER_URL_REPLACEMENT_4___ + \") 50% 50% repeat-x;opacity:.2;border-radius:5px}.ui-tabs{border:none}.ui-tabs .ui-tabs-nav.ui-corner-all{border-bottom-left-radius:0;border-bottom-right-radius:0}.ui-tabs .ui-tabs-nav{background:none;margin-bottom:15px}.ui-tabs .ui-tabs-nav .ui-state-default{border:none;border-bottom:1px solid rgba(0,0,0,0);font-weight:normal;margin:0 !important;padding:0 !important}.ui-tabs .ui-tabs-nav .ui-state-hover,.ui-tabs .ui-tabs-nav .ui-state-active{border:none;border-bottom:1px solid var(--color-main-text);color:var(--color-main-text)}.ui-tabs .ui-tabs-nav .ui-state-hover a,.ui-tabs .ui-tabs-nav .ui-state-hover a:link,.ui-tabs .ui-tabs-nav .ui-state-hover a:hover,.ui-tabs .ui-tabs-nav .ui-state-hover a:visited,.ui-tabs .ui-tabs-nav .ui-state-active a,.ui-tabs .ui-tabs-nav .ui-state-active a:link,.ui-tabs .ui-tabs-nav .ui-state-active a:hover,.ui-tabs .ui-tabs-nav .ui-state-active a:visited{color:var(--color-main-text)}.ui-tabs .ui-tabs-nav .ui-state-active{font-weight:bold}.ui-autocomplete.ui-menu{padding:0}.ui-autocomplete.ui-menu.item-count-1,.ui-autocomplete.ui-menu.item-count-2{overflow-y:hidden}.ui-autocomplete.ui-menu .ui-menu-item a{color:var(--color-text-lighter);display:block;padding:4px 4px 4px 14px}.ui-autocomplete.ui-menu .ui-menu-item a.ui-state-focus,.ui-autocomplete.ui-menu .ui-menu-item a.ui-state-active{box-shadow:inset 4px 0 var(--color-primary-element);color:var(--color-main-text)}.ui-autocomplete.ui-widget-content{background:var(--color-main-background);border-top:none}.ui-autocomplete.ui-corner-all{border-radius:0;border-bottom-left-radius:var(--border-radius);border-bottom-right-radius:var(--border-radius)}.ui-autocomplete .ui-state-hover,.ui-autocomplete .ui-widget-content .ui-state-hover,.ui-autocomplete .ui-widget-header .ui-state-hover,.ui-autocomplete .ui-state-focus,.ui-autocomplete .ui-widget-content .ui-state-focus,.ui-autocomplete .ui-widget-header .ui-state-focus{border:1px solid rgba(0,0,0,0);background:inherit;color:var(--color-primary-element)}.ui-autocomplete .ui-menu-item a{border-radius:0 !important}.ui-button.primary{background-color:var(--color-primary);color:var(--color-primary-text);border:1px solid var(--color-primary-text)}.ui-button:hover{font-weight:bold !important}.ui-draggable-handle,.ui-selectable{touch-action:pan-y}\", \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/jquery/css/jquery-ui-fixes.scss\"],\"names\":[],\"mappings\":\"AAEA,mBACC,oCAAA,CACA,4CAAA,CACA,4BAAA,CAED,qBACC,4BAAA,CAED,kBACC,WAAA,CACA,4BAAA,CACA,qBAAA,CAED,oBACC,4BAAA,CAKD,2FAGC,oCAAA,CACA,4CAAA,CACA,gBAAA,CACA,UAAA,CAED,yEAGC,UAAA,CAED,0KAMC,qBAAA,CACA,4CAAA,CACA,gBAAA,CACA,4BAAA,CAED,2FAIC,4BAAA,CAED,wFAGC,qCAAA,CACA,4CAAA,CACA,gBAAA,CACA,4BAAA,CAED,sEAGC,4BAAA,CAKD,iGAGC,6CAAA,CACA,4CAAA,CACA,6BAAA,CACA,eAAA,CAED,uGAGC,+BAAA,CAED,qFAGC,yBAAA,CACA,kCAAA,CACA,UAAA,CAED,2FAGC,UAAA,CAED,oGAGC,UAAA,CAKD,2BACC,wDAAA,CAED,kDAEC,wDAAA,CAED,0BACC,wDAAA,CAED,6BACC,wDAAA,CAED,uDAEC,wDAAA,CAED,sBACC,YAAA,CAMD,mBACC,sEAAA,CACA,UAAA,CAED,kBACC,oBAAA,CACA,WAAA,CACA,wEAAA,CACA,UAAA,CACA,iBAAA,CAID,SACC,WAAA,CAEA,oCACC,2BAAA,CACA,4BAAA,CAGD,sBACC,eAAA,CACA,kBAAA,CAEA,wCACC,WAAA,CACA,qCAAA,CACA,kBAAA,CACA,mBAAA,CACA,oBAAA,CAGD,6EAEC,WAAA,CACA,8CAAA,CACA,4BAAA,CACA,0WACC,4BAAA,CAGF,uCACC,gBAAA,CAOF,yBACC,SAAA,CAIA,4EAEC,iBAAA,CAGD,yCACC,+BAAA,CACA,aAAA,CACA,wBAAA,CAEA,iHACC,mDAAA,CACA,4BAAA,CAKH,mCACC,uCAAA,CACA,eAAA,CAGD,+BACC,eAAA,CACA,8CAAA,CACA,+CAAA,CAGD,gRAKC,8BAAA,CACA,kBAAA,CACA,kCAAA,CAIA,iCACC,0BAAA,CAKH,mBACC,qCAAA,CACA,+BAAA,CACA,0CAAA,CAID,iBACI,2BAAA,CAKJ,oCAEC,kBAAA\",\"sourcesContent\":[\"/* Component containers\\n----------------------------------*/\\n.ui-widget-content {\\n\\tborder: 1px solid var(--color-border);\\n\\tbackground: var(--color-main-background) none;\\n\\tcolor: var(--color-main-text);\\n}\\n.ui-widget-content a {\\n\\tcolor: var(--color-main-text);\\n}\\n.ui-widget-header {\\n\\tborder: none;\\n\\tcolor: var(--color-main-text);\\n\\tbackground-image: none;\\n}\\n.ui-widget-header a {\\n\\tcolor: var(--color-main-text);\\n}\\n\\n/* Interaction states\\n----------------------------------*/\\n.ui-state-default,\\n.ui-widget-content .ui-state-default,\\n.ui-widget-header .ui-state-default {\\n\\tborder: 1px solid var(--color-border);\\n\\tbackground: var(--color-main-background) none;\\n\\tfont-weight: bold;\\n\\tcolor: #555;\\n}\\n.ui-state-default a,\\n.ui-state-default a:link,\\n.ui-state-default a:visited {\\n\\tcolor: #555;\\n}\\n.ui-state-hover,\\n.ui-widget-content .ui-state-hover,\\n.ui-widget-header .ui-state-hover,\\n.ui-state-focus,\\n.ui-widget-content .ui-state-focus,\\n.ui-widget-header .ui-state-focus {\\n\\tborder: 1px solid #ddd;\\n\\tbackground: var(--color-main-background) none;\\n\\tfont-weight: bold;\\n\\tcolor: var(--color-main-text);\\n}\\n.ui-state-hover a,\\n.ui-state-hover a:hover,\\n.ui-state-hover a:link,\\n.ui-state-hover a:visited {\\n\\tcolor: var(--color-main-text);\\n}\\n.ui-state-active,\\n.ui-widget-content .ui-state-active,\\n.ui-widget-header .ui-state-active {\\n\\tborder: 1px solid var(--color-primary);\\n\\tbackground: var(--color-main-background) none;\\n\\tfont-weight: bold;\\n\\tcolor: var(--color-main-text);\\n}\\n.ui-state-active a,\\n.ui-state-active a:link,\\n.ui-state-active a:visited {\\n\\tcolor: var(--color-main-text);\\n}\\n\\n/* Interaction Cues\\n----------------------------------*/\\n.ui-state-highlight,\\n.ui-widget-content .ui-state-highlight,\\n.ui-widget-header .ui-state-highlight {\\n\\tborder: 1px solid var(--color-main-background);\\n\\tbackground: var(--color-main-background) none;\\n\\tcolor: var(--color-text-light);\\n\\tfont-weight: 600;\\n}\\n.ui-state-highlight a,\\n.ui-widget-content .ui-state-highlight a,\\n.ui-widget-header .ui-state-highlight a {\\n\\tcolor: var(--color-text-lighter);\\n}\\n.ui-state-error,\\n.ui-widget-content .ui-state-error,\\n.ui-widget-header .ui-state-error {\\n\\tborder: var(--color-error);\\n\\tbackground: var(--color-error) none;\\n\\tcolor: #ffffff;\\n}\\n.ui-state-error a,\\n.ui-widget-content .ui-state-error a,\\n.ui-widget-header .ui-state-error a {\\n\\tcolor: #ffffff;\\n}\\n.ui-state-error-text,\\n.ui-widget-content .ui-state-error-text,\\n.ui-widget-header .ui-state-error-text {\\n\\tcolor: #ffffff;\\n}\\n\\n/* Icons\\n----------------------------------*/\\n.ui-state-default .ui-icon {\\n\\tbackground-image: url('images/ui-icons_1d2d44_256x240.png');\\n}\\n.ui-state-hover .ui-icon,\\n.ui-state-focus .ui-icon {\\n\\tbackground-image: url('images/ui-icons_1d2d44_256x240.png');\\n}\\n.ui-state-active .ui-icon {\\n\\tbackground-image: url('images/ui-icons_1d2d44_256x240.png');\\n}\\n.ui-state-highlight .ui-icon {\\n\\tbackground-image: url('images/ui-icons_ffffff_256x240.png');\\n}\\n.ui-state-error .ui-icon,\\n.ui-state-error-text .ui-icon {\\n\\tbackground-image: url('images/ui-icons_ffd27a_256x240.png');\\n}\\n.ui-icon.ui-icon-none {\\n\\tdisplay: none;\\n}\\n\\n/* Misc visuals\\n----------------------------------*/\\n/* Overlays */\\n.ui-widget-overlay {\\n\\tbackground: #666666 url('images/ui-bg_diagonals-thick_20_666666_40x40.png') 50% 50% repeat;\\n\\topacity: .5;\\n}\\n.ui-widget-shadow {\\n\\tmargin: -5px 0 0 -5px;\\n\\tpadding: 5px;\\n\\tbackground: #000000 url('images/ui-bg_flat_10_000000_40x100.png') 50% 50% repeat-x;\\n\\topacity: .2;\\n\\tborder-radius: 5px;\\n}\\n\\n/* Tabs customizations */\\n.ui-tabs {\\n\\tborder: none;\\n\\n\\t.ui-tabs-nav.ui-corner-all {\\n\\t\\tborder-bottom-left-radius: 0;\\n\\t\\tborder-bottom-right-radius: 0;\\n\\t}\\n\\n\\t.ui-tabs-nav {\\n\\t\\tbackground: none;\\n\\t\\tmargin-bottom: 15px;\\n\\n\\t\\t.ui-state-default {\\n\\t\\t\\tborder: none;\\n\\t\\t\\tborder-bottom: 1px solid transparent;\\n\\t\\t\\tfont-weight: normal;\\n\\t\\t\\tmargin: 0 !important;\\n\\t\\t\\tpadding: 0 !important;\\n\\t\\t}\\n\\n\\t\\t.ui-state-hover,\\n\\t\\t.ui-state-active {\\n\\t\\t\\tborder: none;\\n\\t\\t\\tborder-bottom: 1px solid var(--color-main-text);\\n\\t\\t\\tcolor: var(--color-main-text);\\n\\t\\t\\ta, a:link, a:hover, a:visited {\\n\\t\\t\\t\\tcolor: var(--color-main-text);\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\t.ui-state-active {\\n\\t\\t\\tfont-weight: bold;\\n\\t\\t}\\n\\t}\\n}\\n\\n/* Select menus */\\n.ui-autocomplete {\\n\\t&.ui-menu {\\n\\t\\tpadding: 0;\\n\\n\\t\\t/* scrolling starts from three items,\\n\\t\\t * so hide overflow and scrollbars for a clean layout */\\n\\t\\t&.item-count-1,\\n\\t\\t&.item-count-2 {\\n\\t\\t\\toverflow-y: hidden;\\n\\t\\t}\\n\\n\\t\\t.ui-menu-item a {\\n\\t\\t\\tcolor: var(--color-text-lighter);\\n\\t\\t\\tdisplay: block;\\n\\t\\t\\tpadding: 4px 4px 4px 14px;\\n\\n\\t\\t\\t&.ui-state-focus, &.ui-state-active {\\n\\t\\t\\t\\tbox-shadow: inset 4px 0 var(--color-primary-element);\\n\\t\\t\\t\\tcolor: var(--color-main-text);\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t&.ui-widget-content {\\n\\t\\tbackground: var(--color-main-background);\\n\\t\\tborder-top: none;\\n\\t}\\n\\n\\t&.ui-corner-all {\\n\\t\\tborder-radius: 0;\\n\\t\\tborder-bottom-left-radius: var(--border-radius);\\n\\t\\tborder-bottom-right-radius: var(--border-radius);\\n\\t}\\n\\n\\t.ui-state-hover, .ui-widget-content .ui-state-hover,\\n\\t.ui-widget-header .ui-state-hover,\\n\\t.ui-state-focus,\\n\\t.ui-widget-content .ui-state-focus,\\n\\t.ui-widget-header .ui-state-focus {\\n\\t\\tborder: 1px solid transparent;\\n\\t\\tbackground: inherit;\\n\\t\\tcolor: var(--color-primary-element);\\n\\t}\\n\\n\\t.ui-menu-item {\\n\\t\\ta {\\n\\t\\t\\tborder-radius: 0 !important;\\n\\t\\t}\\n\\t}\\n}\\n\\n.ui-button.primary {\\n\\tbackground-color: var(--color-primary);\\n\\tcolor: var(--color-primary-text);\\n\\tborder: 1px solid var(--color-primary-text);\\n}\\n\\n// fix ui-buttons on hover\\n.ui-button:hover {\\n font-weight:bold !important;\\n}\\n\\n\\n/* DRAGGABLE */\\n.ui-draggable-handle,\\n.ui-selectable {\\n\\ttouch-action: pan-y;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".oc-dialog{background:var(--color-main-background);color:var(--color-text-light);border-radius:var(--border-radius-large);box-shadow:0 0 30px var(--color-box-shadow);padding:24px;z-index:10000;font-size:100%;box-sizing:border-box;min-width:200px;top:50%;left:50%;transform:translate(-50%, -50%);max-height:calc(100% - 20px);max-width:calc(100% - 20px);overflow:auto}.oc-dialog-title{background:var(--color-main-background)}.oc-dialog-buttonrow{position:relative;display:flex;background:rgba(0,0,0,0);right:0;bottom:0;padding:0;padding-top:10px;box-sizing:border-box;width:100%;background-image:linear-gradient(rgba(255, 255, 255, 0), var(--color-main-background))}.oc-dialog-buttonrow.twobuttons{justify-content:space-between}.oc-dialog-buttonrow.onebutton,.oc-dialog-buttonrow.twobuttons.aside{justify-content:flex-end}.oc-dialog-buttonrow button{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;height:44px;min-width:44px}.oc-dialog-close{position:absolute;top:0;right:0;padding:25px;background:var(--icon-close-dark) no-repeat center;opacity:.5;border-radius:var(--border-radius-pill)}.oc-dialog-close:hover,.oc-dialog-close:focus,.oc-dialog-close:active{opacity:1}.oc-dialog-dim{background-color:#000;opacity:.2;z-index:9999;position:fixed;top:0;left:0;width:100%;height:100%}body.theme--dark .oc-dialog-dim{opacity:.8}.oc-dialog-content{width:100%;max-width:550px}.oc-dialog.password-confirmation .oc-dialog-content{width:auto}.oc-dialog.password-confirmation .oc-dialog-content input[type=password]{width:100%}.oc-dialog.password-confirmation .oc-dialog-content label{display:none}\", \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/jquery/css/jquery.ocdialog.scss\"],\"names\":[],\"mappings\":\"AAAA,WACC,uCAAA,CACA,6BAAA,CACA,wCAAA,CACA,2CAAA,CACA,YAAA,CACA,aAAA,CACA,cAAA,CACA,qBAAA,CACA,eAAA,CACA,OAAA,CACA,QAAA,CACA,+BAAA,CACA,4BAAA,CACA,2BAAA,CACA,aAAA,CAED,iBACC,uCAAA,CAED,qBACC,iBAAA,CACA,YAAA,CACA,wBAAA,CACA,OAAA,CACA,QAAA,CACA,SAAA,CACA,gBAAA,CACA,qBAAA,CACA,UAAA,CACA,sFAAA,CAEA,gCACO,6BAAA,CAGP,qEAEC,wBAAA,CAGD,4BACI,kBAAA,CACA,eAAA,CACH,sBAAA,CACA,WAAA,CACA,cAAA,CAIF,iBACC,iBAAA,CACA,KAAA,CACA,OAAA,CACA,YAAA,CACA,kDAAA,CACA,UAAA,CACA,uCAAA,CAEA,sEAGC,SAAA,CAIF,eACC,qBAAA,CACA,UAAA,CACA,YAAA,CACA,cAAA,CACA,KAAA,CACA,MAAA,CACA,UAAA,CACA,WAAA,CAGD,gCACC,UAAA,CAGD,mBACC,UAAA,CACA,eAAA,CAIA,oDACC,UAAA,CAEA,yEACC,UAAA,CAED,0DACC,YAAA\",\"sourcesContent\":[\".oc-dialog {\\n\\tbackground: var(--color-main-background);\\n\\tcolor: var(--color-text-light);\\n\\tborder-radius: var(--border-radius-large);\\n\\tbox-shadow: 0 0 30px var(--color-box-shadow);\\n\\tpadding: 24px;\\n\\tz-index: 10000;\\n\\tfont-size: 100%;\\n\\tbox-sizing: border-box;\\n\\tmin-width: 200px;\\n\\ttop: 50%;\\n\\tleft: 50%;\\n\\ttransform: translate(-50%, -50%);\\n\\tmax-height: calc(100% - 20px);\\n\\tmax-width: calc(100% - 20px);\\n\\toverflow: auto;\\n}\\n.oc-dialog-title {\\n\\tbackground: var(--color-main-background);\\n}\\n.oc-dialog-buttonrow {\\n\\tposition: relative;\\n\\tdisplay: flex;\\n\\tbackground: transparent;\\n\\tright: 0;\\n\\tbottom: 0;\\n\\tpadding: 0;\\n\\tpadding-top: 10px;\\n\\tbox-sizing: border-box;\\n\\twidth: 100%;\\n\\tbackground-image: linear-gradient(rgba(255, 255, 255, 0.0), var(--color-main-background));\\n\\n\\t&.twobuttons {\\n justify-content: space-between;\\n }\\n\\n\\t&.onebutton,\\n\\t&.twobuttons.aside {\\n\\t\\tjustify-content: flex-end;\\n\\t}\\n\\n\\tbutton {\\n\\t white-space: nowrap;\\n\\t overflow: hidden;\\n\\t\\ttext-overflow: ellipsis;\\n\\t\\theight: 44px;\\n\\t\\tmin-width: 44px;\\n\\t}\\n}\\n\\n.oc-dialog-close {\\n\\tposition: absolute;\\n\\ttop: 0;\\n\\tright: 0;\\n\\tpadding: 25px;\\n\\tbackground: var(--icon-close-dark) no-repeat center;\\n\\topacity: .5;\\n\\tborder-radius: var(--border-radius-pill);\\n\\n\\t&:hover,\\n\\t&:focus,\\n\\t&:active {\\n\\t\\topacity: 1;\\n\\t}\\n}\\n\\n.oc-dialog-dim {\\n\\tbackground-color: #000;\\n\\topacity: .2;\\n\\tz-index: 9999;\\n\\tposition: fixed;\\n\\ttop: 0;\\n\\tleft: 0;\\n\\twidth: 100%;\\n\\theight: 100%;\\n}\\n\\nbody.theme--dark .oc-dialog-dim {\\n\\topacity: .8;\\n}\\n\\n.oc-dialog-content {\\n\\twidth: 100%;\\n\\tmax-width: 550px;\\n}\\n\\n.oc-dialog.password-confirmation {\\n\\t.oc-dialog-content {\\n\\t\\twidth: auto;\\n\\n\\t\\tinput[type=password] {\\n\\t\\t\\twidth: 100%;\\n\\t\\t}\\n\\t\\tlabel {\\n\\t\\t\\tdisplay: none;\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".app-menu[data-v-44a795f6]{width:100%;display:flex;flex-shrink:1;flex-wrap:wrap}.app-menu-main[data-v-44a795f6]{display:flex;flex-wrap:nowrap}.app-menu-main .app-menu-entry[data-v-44a795f6]{width:50px;height:50px;position:relative;display:flex;opacity:.7;filter:var(--background-image-invert-if-bright)}.app-menu-main .app-menu-entry.app-menu-entry__active[data-v-44a795f6]{opacity:1}.app-menu-main .app-menu-entry.app-menu-entry__active[data-v-44a795f6]::before{content:\\\" \\\";position:absolute;pointer-events:none;border-bottom-color:var(--color-main-background);transform:translateX(-50%);width:12px;height:5px;border-radius:3px;background-color:var(--color-primary-text);left:50%;bottom:6px;display:block;transition:all .1s ease-in-out;opacity:1}.app-menu-main .app-menu-entry.app-menu-entry__active .app-menu-entry--label[data-v-44a795f6]{font-weight:bold}.app-menu-main .app-menu-entry a[data-v-44a795f6]{width:calc(100% - 4px);height:calc(100% - 4px);margin:2px;color:var(--color-primary-text);position:relative}.app-menu-main .app-menu-entry img[data-v-44a795f6]{transition:margin .1s ease-in-out;width:20px;height:20px;padding:calc((100% - 20px)/2);box-sizing:content-box}.app-menu-main .app-menu-entry .app-menu-entry--label[data-v-44a795f6]{opacity:0;position:absolute;font-size:12px;color:var(--color-primary-text);text-align:center;bottom:-5px;left:50%;top:45%;display:block;min-width:100%;transform:translateX(-50%);transition:all .1s ease-in-out;width:100%;text-overflow:ellipsis;overflow:hidden;letter-spacing:-0.5px}.app-menu-main .app-menu-entry[data-v-44a795f6]:hover,.app-menu-main .app-menu-entry[data-v-44a795f6]:focus-within{opacity:1}.app-menu-main .app-menu-entry:hover .app-menu-entry--label[data-v-44a795f6],.app-menu-main .app-menu-entry:focus-within .app-menu-entry--label[data-v-44a795f6]{opacity:1;font-weight:bolder;bottom:0;width:100%;text-overflow:ellipsis;overflow:hidden}.app-menu-main[data-v-44a795f6]:hover,.app-menu-main[data-v-44a795f6]:focus-within,.app-menu-main .app-menu-entry[data-v-44a795f6]:hover,.app-menu-main .app-menu-entry[data-v-44a795f6]:focus{opacity:1}.app-menu-main:hover img[data-v-44a795f6],.app-menu-main:focus-within img[data-v-44a795f6],.app-menu-main .app-menu-entry:hover img[data-v-44a795f6],.app-menu-main .app-menu-entry:focus img[data-v-44a795f6]{margin-top:-8px}.app-menu-main:hover .app-menu-entry--label[data-v-44a795f6],.app-menu-main:focus-within .app-menu-entry--label[data-v-44a795f6],.app-menu-main .app-menu-entry:hover .app-menu-entry--label[data-v-44a795f6],.app-menu-main .app-menu-entry:focus .app-menu-entry--label[data-v-44a795f6]{opacity:1;bottom:0}.app-menu-main[data-v-44a795f6]:hover::before,.app-menu-main:hover .app-menu-entry[data-v-44a795f6]::before,.app-menu-main[data-v-44a795f6]:focus-within::before,.app-menu-main:focus-within .app-menu-entry[data-v-44a795f6]::before,.app-menu-main .app-menu-entry[data-v-44a795f6]:hover::before,.app-menu-main .app-menu-entry:hover .app-menu-entry[data-v-44a795f6]::before,.app-menu-main .app-menu-entry[data-v-44a795f6]:focus::before,.app-menu-main .app-menu-entry:focus .app-menu-entry[data-v-44a795f6]::before{opacity:0}[data-v-44a795f6] .app-menu-more .button-vue--vue-tertiary{color:var(--color-primary-text);opacity:.7;margin:3px;filter:var(--background-image-invert-if-bright)}[data-v-44a795f6] .app-menu-more .button-vue--vue-tertiary:hover{opacity:1;background-color:rgba(0,0,0,0) !important}[data-v-44a795f6] .app-menu-more .button-vue--vue-tertiary:focus-visible{opacity:1;outline:none !important}.app-menu-popover-entry .app-icon[data-v-44a795f6]{position:relative;height:44px}.app-menu-popover-entry .app-icon.has-unread[data-v-44a795f6]::after{background-color:var(--color-main-text)}.app-menu-popover-entry .app-icon img[data-v-44a795f6]{width:20px;height:20px;padding:15px}.has-unread[data-v-44a795f6]::after{content:\\\"\\\";width:8px;height:8px;background-color:var(--color-primary-text);border-radius:50%;position:absolute;display:block;top:10px;right:10px}.unread-counter[data-v-44a795f6]{display:none}\", \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/AppMenu.vue\"],\"names\":[],\"mappings\":\"AAGA,2BACC,UAAA,CACA,YAAA,CACA,aAAA,CACA,cAAA,CAED,gCACC,YAAA,CACA,gBAAA,CAEA,gDACC,UAAA,CACA,WAAA,CACA,iBAAA,CACA,YAAA,CACA,UAAA,CACA,+CAAA,CAEA,uEACC,SAAA,CAEA,+EACC,WAAA,CACA,iBAAA,CACA,mBAAA,CACA,gDAAA,CACA,0BAAA,CACA,UAAA,CACA,UAAA,CACA,iBAAA,CACA,0CAAA,CACA,QAAA,CACA,UAAA,CACA,aAAA,CACA,8BAAA,CACA,SAAA,CAGD,8FACC,gBAAA,CAIF,kDACC,sBAAA,CACA,uBAAA,CACA,UAAA,CACA,+BAAA,CACA,iBAAA,CAGD,oDACC,iCAAA,CACA,UAvDgB,CAwDhB,WAxDgB,CAyDhB,6BAAA,CACA,sBAAA,CAGD,uEACC,SAAA,CACA,iBAAA,CACA,cAAA,CACA,+BAAA,CACA,iBAAA,CACA,WAAA,CACA,QAAA,CACA,OAAA,CACA,aAAA,CACA,cAAA,CACA,0BAAA,CACA,8BAAA,CACA,UAAA,CACA,sBAAA,CACA,eAAA,CACA,qBAAA,CAGD,mHAEC,SAAA,CACA,iKACC,SAAA,CACA,kBAAA,CACA,QAAA,CACA,UAAA,CACA,sBAAA,CACA,eAAA,CAOH,+LAIC,SAAA,CAEA,+MACC,eAAA,CAGD,2RACC,SAAA,CACA,QAAA,CAGD,8fACC,SAAA,CAKH,2DACC,+BAAA,CACA,UAAA,CACA,UAAA,CACA,+CAAA,CAEA,iEACC,SAAA,CACA,yCAAA,CAGD,yEACC,SAAA,CACA,uBAAA,CAKD,mDACC,iBAAA,CACA,WAAA,CAEA,qEACC,uCAAA,CAGD,uDACC,UAhJgB,CAiJhB,WAjJgB,CAkJhB,YAAA,CAKH,oCACC,UAAA,CACA,SAAA,CACA,UAAA,CACA,0CAAA,CACA,iBAAA,CACA,iBAAA,CACA,aAAA,CACA,QAAA,CACA,UAAA,CAGD,iCACC,YAAA\",\"sourcesContent\":[\"\\n$header-icon-size: 20px;\\n\\n.app-menu {\\n\\twidth: 100%;\\n\\tdisplay: flex;\\n\\tflex-shrink: 1;\\n\\tflex-wrap: wrap;\\n}\\n.app-menu-main {\\n\\tdisplay: flex;\\n\\tflex-wrap: nowrap;\\n\\n\\t.app-menu-entry {\\n\\t\\twidth: 50px;\\n\\t\\theight: 50px;\\n\\t\\tposition: relative;\\n\\t\\tdisplay: flex;\\n\\t\\topacity: .7;\\n\\t\\tfilter: var(--background-image-invert-if-bright);\\n\\n\\t\\t&.app-menu-entry__active {\\n\\t\\t\\topacity: 1;\\n\\n\\t\\t\\t&::before {\\n\\t\\t\\t\\tcontent: \\\" \\\";\\n\\t\\t\\t\\tposition: absolute;\\n\\t\\t\\t\\tpointer-events: none;\\n\\t\\t\\t\\tborder-bottom-color: var(--color-main-background);\\n\\t\\t\\t\\ttransform: translateX(-50%);\\n\\t\\t\\t\\twidth: 12px;\\n\\t\\t\\t\\theight: 5px;\\n\\t\\t\\t\\tborder-radius: 3px;\\n\\t\\t\\t\\tbackground-color: var(--color-primary-text);\\n\\t\\t\\t\\tleft: 50%;\\n\\t\\t\\t\\tbottom: 6px;\\n\\t\\t\\t\\tdisplay: block;\\n\\t\\t\\t\\ttransition: all 0.1s ease-in-out;\\n\\t\\t\\t\\topacity: 1;\\n\\t\\t\\t}\\n\\n\\t\\t\\t.app-menu-entry--label {\\n\\t\\t\\t\\tfont-weight: bold;\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\ta {\\n\\t\\t\\twidth: calc(100% - 4px);\\n\\t\\t\\theight: calc(100% - 4px);\\n\\t\\t\\tmargin: 2px;\\n\\t\\t\\tcolor: var(--color-primary-text);\\n\\t\\t\\tposition: relative;\\n\\t\\t}\\n\\n\\t\\timg {\\n\\t\\t\\ttransition: margin 0.1s ease-in-out;\\n\\t\\t\\twidth: $header-icon-size;\\n\\t\\t\\theight: $header-icon-size;\\n\\t\\t\\tpadding: calc((100% - $header-icon-size) / 2);\\n\\t\\t\\tbox-sizing: content-box;\\n\\t\\t}\\n\\n\\t\\t.app-menu-entry--label {\\n\\t\\t\\topacity: 0;\\n\\t\\t\\tposition: absolute;\\n\\t\\t\\tfont-size: 12px;\\n\\t\\t\\tcolor: var(--color-primary-text);\\n\\t\\t\\ttext-align: center;\\n\\t\\t\\tbottom: -5px;\\n\\t\\t\\tleft: 50%;\\n\\t\\t\\ttop: 45%;\\n\\t\\t\\tdisplay: block;\\n\\t\\t\\tmin-width: 100%;\\n\\t\\t\\ttransform: translateX(-50%);\\n\\t\\t\\ttransition: all 0.1s ease-in-out;\\n\\t\\t\\twidth: 100%;\\n\\t\\t\\ttext-overflow: ellipsis;\\n\\t\\t\\toverflow: hidden;\\n\\t\\t\\tletter-spacing: -0.5px;\\n\\t\\t}\\n\\n\\t\\t&:hover,\\n\\t\\t&:focus-within {\\n\\t\\t\\topacity: 1;\\n\\t\\t\\t.app-menu-entry--label {\\n\\t\\t\\t\\topacity: 1;\\n\\t\\t\\t\\tfont-weight: bolder;\\n\\t\\t\\t\\tbottom: 0;\\n\\t\\t\\t\\twidth: 100%;\\n\\t\\t\\t\\ttext-overflow: ellipsis;\\n\\t\\t\\t\\toverflow: hidden;\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t}\\n\\n\\t// Show labels\\n\\t&:hover,\\n\\t&:focus-within,\\n\\t.app-menu-entry:hover,\\n\\t.app-menu-entry:focus {\\n\\t\\topacity: 1;\\n\\n\\t\\timg {\\n\\t\\t\\tmargin-top: -8px;\\n\\t\\t}\\n\\n\\t\\t.app-menu-entry--label {\\n\\t\\t\\topacity: 1;\\n\\t\\t\\tbottom: 0;\\n\\t\\t}\\n\\n\\t\\t&::before, .app-menu-entry::before {\\n\\t\\t\\topacity: 0;\\n\\t\\t}\\n\\t}\\n}\\n\\n::v-deep .app-menu-more .button-vue--vue-tertiary {\\n\\tcolor: var(--color-primary-text);\\n\\topacity: .7;\\n\\tmargin: 3px;\\n\\tfilter: var(--background-image-invert-if-bright);\\n\\n\\t&:hover {\\n\\t\\topacity: 1;\\n\\t\\tbackground-color: transparent !important;\\n\\t}\\n\\n\\t&:focus-visible {\\n\\t\\topacity: 1;\\n\\t\\toutline: none !important;\\n\\t}\\n}\\n\\n.app-menu-popover-entry {\\n\\t.app-icon {\\n\\t\\tposition: relative;\\n\\t\\theight: 44px;\\n\\n\\t\\t&.has-unread::after {\\n\\t\\t\\tbackground-color: var(--color-main-text);\\n\\t\\t}\\n\\n\\t\\timg {\\n\\t\\t\\twidth: $header-icon-size;\\n\\t\\t\\theight: $header-icon-size;\\n\\t\\t\\tpadding: calc((50px - $header-icon-size) / 2);\\n\\t\\t}\\n\\t}\\n}\\n\\n.has-unread::after {\\n\\tcontent: \\\"\\\";\\n\\twidth: 8px;\\n\\theight: 8px;\\n\\tbackground-color: var(--color-primary-text);\\n\\tborder-radius: 50%;\\n\\tposition: absolute;\\n\\tdisplay: block;\\n\\ttop: 10px;\\n\\tright: 10px;\\n}\\n\\n.unread-counter {\\n\\tdisplay: none;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".menu-entry__loading-icon[data-v-6e59d13c]{margin-right:8px}\", \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/UserMenu/UserMenuEntry.vue\"],\"names\":[],\"mappings\":\"AAEC,2CACC,gBAAA\",\"sourcesContent\":[\"\\n.menu-entry {\\n\\t&__loading-icon {\\n\\t\\tmargin-right: 8px;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"#contactsmenu-menu[data-v-1563c388]{height:calc(100vh - 150px);max-height:302px;min-height:175px;width:350px}#contactsmenu-menu[data-v-1563c388] .emptycontent{margin-top:5vh !important;margin-bottom:1.5vh}#contactsmenu-menu[data-v-1563c388] .emptycontent .icon-loading,#contactsmenu-menu[data-v-1563c388] .emptycontent .icon-search{display:inline-block}#contactsmenu-menu[data-v-1563c388] #contactsmenu-search{width:calc(100% - 16px);margin:8px;height:34px}#contactsmenu-menu[data-v-1563c388] .content{height:calc(100vh - 150px - 50px);max-height:250px;min-height:125px;overflow-y:auto}#contactsmenu-menu[data-v-1563c388] .content .footer{text-align:center}#contactsmenu-menu[data-v-1563c388] .content .footer a{display:block;width:100%;padding:12px 0;opacity:.5}#contactsmenu-menu[data-v-1563c388] a{padding:2px}#contactsmenu-menu[data-v-1563c388] a:focus-visible{box-shadow:inset 0 0 0 2px var(--color-main-text) !important}#contactsmenu-menu[data-v-1563c388] .contact{display:flex;position:relative;align-items:center;padding:3px 3px 3px 10px}#contactsmenu-menu[data-v-1563c388] .contact .avatar{height:32px;width:32px;display:inline-block}#contactsmenu-menu[data-v-1563c388] .contact .body{flex-grow:1;padding-left:8px;min-width:0}#contactsmenu-menu[data-v-1563c388] .contact .body div{position:relative;width:100%;overflow-x:hidden;text-overflow:ellipsis}#contactsmenu-menu[data-v-1563c388] .contact .body .last-message,#contactsmenu-menu[data-v-1563c388] .contact .body .email-address{color:var(--color-text-maxcontrast)}#contactsmenu-menu[data-v-1563c388] .contact .top-action,#contactsmenu-menu[data-v-1563c388] .contact .second-action,#contactsmenu-menu[data-v-1563c388] .contact .other-actions{width:16px;height:16px;opacity:.5;cursor:pointer}#contactsmenu-menu[data-v-1563c388] .contact .top-action:not(button),#contactsmenu-menu[data-v-1563c388] .contact .second-action:not(button),#contactsmenu-menu[data-v-1563c388] .contact .other-actions:not(button){padding:14px}#contactsmenu-menu[data-v-1563c388] .contact .top-action img,#contactsmenu-menu[data-v-1563c388] .contact .second-action img,#contactsmenu-menu[data-v-1563c388] .contact .other-actions img{filter:var(--background-invert-if-dark)}#contactsmenu-menu[data-v-1563c388] .contact .top-action:hover,#contactsmenu-menu[data-v-1563c388] .contact .top-action:active,#contactsmenu-menu[data-v-1563c388] .contact .top-action:focus,#contactsmenu-menu[data-v-1563c388] .contact .second-action:hover,#contactsmenu-menu[data-v-1563c388] .contact .second-action:active,#contactsmenu-menu[data-v-1563c388] .contact .second-action:focus,#contactsmenu-menu[data-v-1563c388] .contact .other-actions:hover,#contactsmenu-menu[data-v-1563c388] .contact .other-actions:active,#contactsmenu-menu[data-v-1563c388] .contact .other-actions:focus{opacity:1}#contactsmenu-menu[data-v-1563c388] .contact button.other-actions{width:44px}#contactsmenu-menu[data-v-1563c388] .contact button.other-actions:focus{border-color:rgba(0,0,0,0);box-shadow:0 0 0 2px var(--color-main-text)}#contactsmenu-menu[data-v-1563c388] .contact button.other-actions:focus-visible{border-radius:var(--border-radius-pill)}#contactsmenu-menu[data-v-1563c388] .contact .menu{top:47px;margin-right:13px}#contactsmenu-menu[data-v-1563c388] .contact .popovermenu::after{right:2px}\", \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/views/ContactsMenu.vue\"],\"names\":[],\"mappings\":\"AACA,oCAEC,0BAAA,CACA,gBAAA,CACA,gBAAA,CACA,WAAA,CAGC,kDACC,yBAAA,CACA,mBAAA,CACA,+HAEC,oBAAA,CAIF,yDACC,uBAAA,CACA,UAAA,CACA,WAAA,CAGD,6CAEC,iCAAA,CACA,gBAAA,CACA,gBAAA,CACA,eAAA,CAEA,qDACC,iBAAA,CAEA,uDACC,aAAA,CACA,UAAA,CACA,cAAA,CACA,UAAA,CAKH,sCACC,WAAA,CAEA,oDACC,4DAAA,CAIF,6CACC,YAAA,CACA,iBAAA,CACA,kBAAA,CACA,wBAAA,CAEA,qDACC,WAAA,CACA,UAAA,CACA,oBAAA,CAGD,mDACC,WAAA,CACA,gBAAA,CACA,WAAA,CAEA,uDACC,iBAAA,CACA,UAAA,CACA,iBAAA,CACA,sBAAA,CAGD,mIACC,mCAAA,CAIF,iLACC,UAAA,CACA,WAAA,CACA,UAAA,CACA,cAAA,CAEA,qNACC,YAAA,CAED,6LACC,uCAAA,CAGD,4kBAGC,SAAA,CAIF,kEACC,UAAA,CAEA,wEACC,0BAAA,CACA,2CAAA,CAGD,gFACC,uCAAA,CAKF,mDACC,QAAA,CACA,iBAAA,CAED,iEACC,SAAA\",\"sourcesContent\":[\"\\n#contactsmenu-menu {\\n\\t/* show 2.5 to 4.5 entries depending on the screen height */\\n\\theight: calc(100vh - 50px * 3);\\n\\tmax-height: calc(50px * 6 + 2px);\\n\\tmin-height: calc(50px * 3.5);\\n\\twidth: 350px;\\n\\n\\t&:deep {\\n\\t\\t.emptycontent {\\n\\t\\t\\tmargin-top: 5vh !important;\\n\\t\\t\\tmargin-bottom: 1.5vh;\\n\\t\\t\\t.icon-loading,\\n\\t\\t\\t.icon-search {\\n\\t\\t\\t\\tdisplay: inline-block;\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t#contactsmenu-search {\\n\\t\\t\\twidth: calc(100% - 16px);\\n\\t\\t\\tmargin: 8px;\\n\\t\\t\\theight: 34px;\\n\\t\\t}\\n\\n\\t\\t.content {\\n\\t\\t\\t/* fixed max height of the parent container without the search input */\\n\\t\\t\\theight: calc(100vh - 50px * 3 - 50px);\\n\\t\\t\\tmax-height: calc(50px * 5);\\n\\t\\t\\tmin-height: calc(50px * 3.5 - 50px);\\n\\t\\t\\toverflow-y: auto;\\n\\n\\t\\t\\t.footer {\\n\\t\\t\\t\\ttext-align: center;\\n\\n\\t\\t\\t\\ta {\\n\\t\\t\\t\\t\\tdisplay: block;\\n\\t\\t\\t\\t\\twidth: 100%;\\n\\t\\t\\t\\t\\tpadding: 12px 0;\\n\\t\\t\\t\\t\\topacity: .5;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\ta {\\n\\t\\t\\tpadding: 2px;\\n\\n\\t\\t\\t&:focus-visible {\\n\\t\\t\\t\\tbox-shadow: inset 0 0 0 2px var(--color-main-text) !important; // override rule in core/css/headers.scss #header a:focus-visible\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t.contact {\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\tposition: relative;\\n\\t\\t\\talign-items: center;\\n\\t\\t\\tpadding: 3px 3px 3px 10px;\\n\\n\\t\\t\\t.avatar {\\n\\t\\t\\t\\theight: 32px;\\n\\t\\t\\t\\twidth: 32px;\\n\\t\\t\\t\\tdisplay: inline-block;\\n\\t\\t\\t}\\n\\n\\t\\t\\t.body {\\n\\t\\t\\t\\tflex-grow: 1;\\n\\t\\t\\t\\tpadding-left: 8px;\\n\\t\\t\\t\\tmin-width: 0;\\n\\n\\t\\t\\t\\tdiv {\\n\\t\\t\\t\\t\\tposition: relative;\\n\\t\\t\\t\\t\\twidth: 100%;\\n\\t\\t\\t\\t\\toverflow-x: hidden;\\n\\t\\t\\t\\t\\ttext-overflow: ellipsis;\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t.last-message, .email-address {\\n\\t\\t\\t\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\n\\t\\t\\t.top-action, .second-action, .other-actions {\\n\\t\\t\\t\\twidth: 16px;\\n\\t\\t\\t\\theight: 16px;\\n\\t\\t\\t\\topacity: .5;\\n\\t\\t\\t\\tcursor: pointer;\\n\\n\\t\\t\\t\\t&:not(button) {\\n\\t\\t\\t\\t\\tpadding: 14px;\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\timg {\\n\\t\\t\\t\\t\\tfilter: var(--background-invert-if-dark);\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t&:hover,\\n\\t\\t\\t\\t&:active,\\n\\t\\t\\t\\t&:focus {\\n\\t\\t\\t\\t\\topacity: 1;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\n\\t\\t\\tbutton.other-actions {\\n\\t\\t\\t\\twidth: 44px;\\n\\n\\t\\t\\t\\t&:focus {\\n\\t\\t\\t\\t\\tborder-color: transparent;\\n\\t\\t\\t\\t\\tbox-shadow: 0 0 0 2px var(--color-main-text);\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t&:focus-visible {\\n\\t\\t\\t\\t\\tborder-radius: var(--border-radius-pill);\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\n\\t\\t\\t/* actions menu */\\n\\t\\t\\t.menu {\\n\\t\\t\\t\\ttop: 47px;\\n\\t\\t\\t\\tmargin-right: 13px;\\n\\t\\t\\t}\\n\\t\\t\\t.popovermenu::after {\\n\\t\\t\\t\\tright: 2px;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".user-menu[data-v-6a818bbc]{margin-right:12px}.user-menu[data-v-6a818bbc] .header-menu__trigger{opacity:1 !important}.user-menu[data-v-6a818bbc] .header-menu__trigger:focus-visible .user-menu__avatar{border:2px solid var(--color-primary-text)}.user-menu[data-v-6a818bbc] .header-menu__carret{display:none !important}.user-menu[data-v-6a818bbc] .header-menu__content{width:fit-content !important}.user-menu__avatar[data-v-6a818bbc]:active,.user-menu__avatar[data-v-6a818bbc]:focus,.user-menu__avatar[data-v-6a818bbc]:hover{border:2px solid var(--color-primary-text)}.user-menu__nav[data-v-6a818bbc]{display:flex;width:100%}.user-menu__nav ul[data-v-6a818bbc]{display:flex;flex-direction:column;gap:2px}.user-menu__nav ul[data-v-6a818bbc] li a,.user-menu__nav ul[data-v-6a818bbc] li button{border-radius:6px;display:inline-flex;align-items:center;height:var(--header-menu-item-height);color:var(--color-main-text);padding:10px 8px;box-sizing:border-box;white-space:nowrap;position:relative;width:100%}.user-menu__nav ul[data-v-6a818bbc] li a:hover,.user-menu__nav ul[data-v-6a818bbc] li button:hover{background-color:var(--color-background-hover)}.user-menu__nav ul[data-v-6a818bbc] li a:focus-visible,.user-menu__nav ul[data-v-6a818bbc] li button:focus-visible{background-color:var(--color-background-hover) !important;box-shadow:inset 0 0 0 2px var(--color-primary) !important;outline:none !important}.user-menu__nav ul[data-v-6a818bbc] li a:active,.user-menu__nav ul[data-v-6a818bbc] li a.active,.user-menu__nav ul[data-v-6a818bbc] li button:active,.user-menu__nav ul[data-v-6a818bbc] li button.active{background-color:var(--color-primary-light)}.user-menu__nav ul[data-v-6a818bbc] li a span,.user-menu__nav ul[data-v-6a818bbc] li button span{padding-bottom:0;color:var(--color-main-text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:110px}.user-menu__nav ul[data-v-6a818bbc] li a img,.user-menu__nav ul[data-v-6a818bbc] li button img{width:16px;height:16px;margin-right:10px}.user-menu__nav ul[data-v-6a818bbc] li a img,.user-menu__nav ul[data-v-6a818bbc] li a svg,.user-menu__nav ul[data-v-6a818bbc] li button img,.user-menu__nav ul[data-v-6a818bbc] li button svg{opacity:.7;filter:var(--background-invert-if-dark)}.user-menu__nav ul[data-v-6a818bbc] li button{background-color:rgba(0,0,0,0);border:none;font-weight:normal;margin:0}\", \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/views/UserMenu.vue\"],\"names\":[],\"mappings\":\"AACA,4BACC,iBAAA,CAIE,kDACC,oBAAA,CAEC,mFACC,0CAAA,CAKH,iDACC,uBAAA,CAGD,kDACC,4BAAA,CAMF,+HAGC,0CAAA,CAIF,iCACC,YAAA,CACA,UAAA,CAEA,oCACC,YAAA,CACA,qBAAA,CACA,OAAA,CAIE,uFAEC,iBAAA,CACA,mBAAA,CACA,kBAAA,CACA,qCAAA,CACA,4BAAA,CACA,gBAAA,CACA,qBAAA,CACA,kBAAA,CACA,iBAAA,CACA,UAAA,CAEA,mGACC,8CAAA,CAGD,mHACC,yDAAA,CACA,0DAAA,CACA,uBAAA,CAGD,0MAEC,2CAAA,CAGD,iGACC,gBAAA,CACA,4BAAA,CACA,kBAAA,CACA,eAAA,CACA,sBAAA,CACA,eAAA,CAGD,+FACC,UAAA,CACA,WAAA,CACA,iBAAA,CAGD,8LAEC,UAAA,CACA,uCAAA,CAKF,8CACC,8BAAA,CACA,WAAA,CACA,kBAAA,CACA,QAAA\",\"sourcesContent\":[\"\\n.user-menu {\\n\\tmargin-right: 12px;\\n\\n\\t&:deep {\\n\\t\\t.header-menu {\\n\\t\\t\\t&__trigger {\\n\\t\\t\\t\\topacity: 1 !important;\\n\\t\\t\\t\\t&:focus-visible {\\n\\t\\t\\t\\t\\t.user-menu__avatar {\\n\\t\\t\\t\\t\\t\\tborder: 2px solid var(--color-primary-text);\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\n\\t\\t\\t&__carret {\\n\\t\\t\\t\\tdisplay: none !important;\\n\\t\\t\\t}\\n\\n\\t\\t\\t&__content {\\n\\t\\t\\t\\twidth: fit-content !important;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t&__avatar {\\n\\t\\t&:active,\\n\\t\\t&:focus,\\n\\t\\t&:hover {\\n\\t\\t\\tborder: 2px solid var(--color-primary-text);\\n\\t\\t}\\n\\t}\\n\\n\\t&__nav {\\n\\t\\tdisplay: flex;\\n\\t\\twidth: 100%;\\n\\n\\t\\tul {\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\tflex-direction: column;\\n\\t\\t\\tgap: 2px;\\n\\n\\t\\t\\t&:deep {\\n\\t\\t\\t\\tli {\\n\\t\\t\\t\\t\\ta,\\n\\t\\t\\t\\t\\tbutton {\\n\\t\\t\\t\\t\\t\\tborder-radius: 6px;\\n\\t\\t\\t\\t\\t\\tdisplay: inline-flex;\\n\\t\\t\\t\\t\\t\\talign-items: center;\\n\\t\\t\\t\\t\\t\\theight: var(--header-menu-item-height);\\n\\t\\t\\t\\t\\t\\tcolor: var(--color-main-text);\\n\\t\\t\\t\\t\\t\\tpadding: 10px 8px;\\n\\t\\t\\t\\t\\t\\tbox-sizing: border-box;\\n\\t\\t\\t\\t\\t\\twhite-space: nowrap;\\n\\t\\t\\t\\t\\t\\tposition: relative;\\n\\t\\t\\t\\t\\t\\twidth: 100%;\\n\\n\\t\\t\\t\\t\\t\\t&:hover {\\n\\t\\t\\t\\t\\t\\t\\tbackground-color: var(--color-background-hover);\\n\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t\\t&:focus-visible {\\n\\t\\t\\t\\t\\t\\t\\tbackground-color: var(--color-background-hover) !important;\\n\\t\\t\\t\\t\\t\\t\\tbox-shadow: inset 0 0 0 2px var(--color-primary) !important;\\n\\t\\t\\t\\t\\t\\t\\toutline: none !important;\\n\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t\\t&:active,\\n\\t\\t\\t\\t\\t\\t&.active {\\n\\t\\t\\t\\t\\t\\t\\tbackground-color: var(--color-primary-light);\\n\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t\\tspan {\\n\\t\\t\\t\\t\\t\\t\\tpadding-bottom: 0;\\n\\t\\t\\t\\t\\t\\t\\tcolor: var(--color-main-text);\\n\\t\\t\\t\\t\\t\\t\\twhite-space: nowrap;\\n\\t\\t\\t\\t\\t\\t\\toverflow: hidden;\\n\\t\\t\\t\\t\\t\\t\\ttext-overflow: ellipsis;\\n\\t\\t\\t\\t\\t\\t\\tmax-width: 110px;\\n\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t\\timg {\\n\\t\\t\\t\\t\\t\\t\\twidth: 16px;\\n\\t\\t\\t\\t\\t\\t\\theight: 16px;\\n\\t\\t\\t\\t\\t\\t\\tmargin-right: 10px;\\n\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t\\timg,\\n\\t\\t\\t\\t\\t\\tsvg {\\n\\t\\t\\t\\t\\t\\t\\topacity: .7;\\n\\t\\t\\t\\t\\t\\t\\tfilter: var(--background-invert-if-dark);\\n\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t// Override global button styles\\n\\t\\t\\t\\t\\tbutton {\\n\\t\\t\\t\\t\\t\\tbackground-color: transparent;\\n\\t\\t\\t\\t\\t\\tborder: none;\\n\\t\\t\\t\\t\\t\\tfont-weight: normal;\\n\\t\\t\\t\\t\\t\\tmargin: 0;\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","var Handlebars = require(\"../../../../node_modules/handlebars/runtime.js\");\nfunction __default(obj) { return obj && (obj.__esModule ? obj[\"default\"] : obj); }\nmodule.exports = (Handlebars[\"default\"] || Handlebars).template({\"1\":function(container,depth0,helpers,partials,data) {\n var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return ((stack1 = lookupProperty(helpers,\"if\").call(depth0 != null ? depth0 : (container.nullContext || {}),((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"profileUrl\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(2, data, 0),\"inverse\":container.program(5, data, 0),\"data\":data,\"loc\":{\"start\":{\"line\":2,\"column\":1},\"end\":{\"line\":10,\"column\":8}}})) != null ? stack1 : \"\");\n},\"2\":function(container,depth0,helpers,partials,data) {\n var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return ((stack1 = lookupProperty(helpers,\"if\").call(depth0 != null ? depth0 : (container.nullContext || {}),((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"profileTitle\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(3, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":3,\"column\":2},\"end\":{\"line\":7,\"column\":9}}})) != null ? stack1 : \"\");\n},\"3\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"\t\t\t<a class=\\\"profile-link--avatar\\\" href=\\\"\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"profileUrl\") : stack1), depth0))\n + \"\\\">\\n\t\t\t\t<img src=\\\"\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"avatar\") : stack1), depth0))\n + \"&size=32\\\" class=\\\"avatar\\\" srcset=\\\"\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"avatar\") : stack1), depth0))\n + \"&size=32 1x, \"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"avatar\") : stack1), depth0))\n + \"&size=64 2x, \"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"avatar\") : stack1), depth0))\n + \"&size=128 4x\\\" alt=\\\"\\\">\\n\t\t\t</a>\\n\";\n},\"5\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"\t\t<img src=\\\"\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"avatar\") : stack1), depth0))\n + \"&size=32\\\" class=\\\"avatar\\\" srcset=\\\"\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"avatar\") : stack1), depth0))\n + \"&size=32 1x, \"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"avatar\") : stack1), depth0))\n + \"&size=64 2x, \"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"avatar\") : stack1), depth0))\n + \"&size=128 4x\\\" alt=\\\"\\\">\\n\";\n},\"7\":function(container,depth0,helpers,partials,data) {\n var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return ((stack1 = lookupProperty(helpers,\"if\").call(depth0 != null ? depth0 : (container.nullContext || {}),((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"profileUrl\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(8, data, 0),\"inverse\":container.program(11, data, 0),\"data\":data,\"loc\":{\"start\":{\"line\":12,\"column\":1},\"end\":{\"line\":20,\"column\":8}}})) != null ? stack1 : \"\");\n},\"8\":function(container,depth0,helpers,partials,data) {\n var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return ((stack1 = lookupProperty(helpers,\"if\").call(depth0 != null ? depth0 : (container.nullContext || {}),((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"profileTitle\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(9, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":13,\"column\":2},\"end\":{\"line\":17,\"column\":9}}})) != null ? stack1 : \"\");\n},\"9\":function(container,depth0,helpers,partials,data) {\n var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"\t\t\t<a class=\\\"profile-link--avatar\\\" href=\\\"\"\n + container.escapeExpression(container.lambda(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"profileUrl\") : stack1), depth0))\n + \"\\\">\\n\t\t\t\t<div class=\\\"avatar\\\"></div>\\n\t\t\t</a>\\n\";\n},\"11\":function(container,depth0,helpers,partials,data) {\n return \"\t\t<div class=\\\"avatar\\\"></div>\\n\";\n},\"13\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=depth0 != null ? depth0 : (container.nullContext || {}), lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return ((stack1 = lookupProperty(helpers,\"if\").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"profileTitle\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(14, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":23,\"column\":1},\"end\":{\"line\":29,\"column\":8}}})) != null ? stack1 : \"\")\n + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"topAction\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(16, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":30,\"column\":1},\"end\":{\"line\":34,\"column\":8}}})) != null ? stack1 : \"\");\n},\"14\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"\t\t<a class=\\\"body profile-link--full-name\\\" href=\\\"\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"profileUrl\") : stack1), depth0))\n + \"\\\">\\n\t\t\t<div class=\\\"full-name\\\">\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"fullName\") : stack1), depth0))\n + \"</div>\\n\t\t\t<div class=\\\"last-message\\\">\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"lastMessage\") : stack1), depth0))\n + \"</div>\\n\t\t\t<div class=\\\"email-address\\\">\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"emailAddresses\") : stack1), depth0))\n + \"</div>\\n\t\t</a>\\n\";\n},\"16\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"\t\t<a class=\\\"top-action\\\" href=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"topAction\") : stack1)) != null ? lookupProperty(stack1,\"hyperlink\") : stack1), depth0))\n + \"\\\" title=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"topAction\") : stack1)) != null ? lookupProperty(stack1,\"title\") : stack1), depth0))\n + \"\\\">\\n\t\t\t<img src=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"topAction\") : stack1)) != null ? lookupProperty(stack1,\"icon\") : stack1), depth0))\n + \"\\\" alt=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"topAction\") : stack1)) != null ? lookupProperty(stack1,\"title\") : stack1), depth0))\n + \"\\\">\\n\t\t</a>\\n\";\n},\"18\":function(container,depth0,helpers,partials,data) {\n var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return ((stack1 = lookupProperty(helpers,\"if\").call(depth0 != null ? depth0 : (container.nullContext || {}),((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"topAction\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(19, data, 0),\"inverse\":container.program(21, data, 0),\"data\":data,\"loc\":{\"start\":{\"line\":35,\"column\":0},\"end\":{\"line\":50,\"column\":0}}})) != null ? stack1 : \"\");\n},\"19\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"\t<a class=\\\"body\\\" href=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"topAction\") : stack1)) != null ? lookupProperty(stack1,\"hyperlink\") : stack1), depth0))\n + \"\\\">\\n\t\t<div class=\\\"full-name\\\">\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"fullName\") : stack1), depth0))\n + \"</div>\\n\t\t<div class=\\\"last-message\\\">\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"lastMessage\") : stack1), depth0))\n + \"</div>\\n\t\t<div class=\\\"email-address\\\">\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"emailAddresses\") : stack1), depth0))\n + \"</div>\\n\t</a>\\n \t<a class=\\\"top-action\\\" href=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"topAction\") : stack1)) != null ? lookupProperty(stack1,\"hyperlink\") : stack1), depth0))\n + \"\\\" title=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"topAction\") : stack1)) != null ? lookupProperty(stack1,\"title\") : stack1), depth0))\n + \"\\\">\\n \t\t<img src=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"topAction\") : stack1)) != null ? lookupProperty(stack1,\"icon\") : stack1), depth0))\n + \"\\\" alt=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"topAction\") : stack1)) != null ? lookupProperty(stack1,\"title\") : stack1), depth0))\n + \"\\\">\\n\t</a>\\n\";\n},\"21\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"\t<div class=\\\"body\\\">\\n\t\t<div class=\\\"full-name\\\">\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"fullName\") : stack1), depth0))\n + \"</div>\\n\t\t<div class=\\\"last-message\\\">\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"lastMessage\") : stack1), depth0))\n + \"</div>\\n\t\t<div class=\\\"email-address\\\">\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"emailAddresses\") : stack1), depth0))\n + \"</div>\\n\t</div>\\n\";\n},\"23\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"<a class=\\\"second-action\\\" href=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"secondAction\") : stack1)) != null ? lookupProperty(stack1,\"hyperlink\") : stack1), depth0))\n + \"\\\" title=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"secondAction\") : stack1)) != null ? lookupProperty(stack1,\"title\") : stack1), depth0))\n + \"\\\">\\n\t<img src=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"secondAction\") : stack1)) != null ? lookupProperty(stack1,\"icon\") : stack1), depth0))\n + \"\\\" alt=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"secondAction\") : stack1)) != null ? lookupProperty(stack1,\"title\") : stack1), depth0))\n + \"\\\">\\n</a>\\n\";\n},\"25\":function(container,depth0,helpers,partials,data) {\n var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"\t<button class=\\\"other-actions icon-more\\\"></button>\\n\t<div class=\\\"menu popovermenu\\\">\\n\t\t<ul>\\n\"\n + ((stack1 = lookupProperty(helpers,\"each\").call(depth0 != null ? depth0 : (container.nullContext || {}),((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"actions\") : stack1),{\"name\":\"each\",\"hash\":{},\"fn\":container.program(26, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":60,\"column\":3},\"end\":{\"line\":67,\"column\":12}}})) != null ? stack1 : \"\")\n + \"\t\t</ul>\\n\t</div>\\n\";\n},\"26\":function(container,depth0,helpers,partials,data) {\n var helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"\t\t\t<li>\\n\t\t\t\t<a href=\\\"\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"hyperlink\") || (depth0 != null ? lookupProperty(depth0,\"hyperlink\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"hyperlink\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":62,\"column\":13},\"end\":{\"line\":62,\"column\":26}}}) : helper)))\n + \"\\\">\\n\t\t\t\t\t<img src=\\\"\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"icon\") || (depth0 != null ? lookupProperty(depth0,\"icon\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"icon\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":63,\"column\":15},\"end\":{\"line\":63,\"column\":23}}}) : helper)))\n + \"\\\" alt=\\\"\\\">\\n\t\t\t\t\t<span>\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"title\") || (depth0 != null ? lookupProperty(depth0,\"title\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"title\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":64,\"column\":11},\"end\":{\"line\":64,\"column\":20}}}) : helper)))\n + \"</span>\\n\t\t\t\t</a>\\n\t\t\t</li>\\n\";\n},\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=depth0 != null ? depth0 : (container.nullContext || {}), lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return ((stack1 = lookupProperty(helpers,\"if\").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"avatar\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(1, data, 0),\"inverse\":container.program(7, data, 0),\"data\":data,\"loc\":{\"start\":{\"line\":1,\"column\":0},\"end\":{\"line\":21,\"column\":7}}})) != null ? stack1 : \"\")\n + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"profileUrl\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(13, data, 0),\"inverse\":container.program(18, data, 0),\"data\":data,\"loc\":{\"start\":{\"line\":22,\"column\":0},\"end\":{\"line\":50,\"column\":7}}})) != null ? stack1 : \"\")\n + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"hasTwoActions\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(23, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":51,\"column\":0},\"end\":{\"line\":55,\"column\":7}}})) != null ? stack1 : \"\")\n + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"hasManyActions\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(25, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":56,\"column\":0},\"end\":{\"line\":70,\"column\":7}}})) != null ? stack1 : \"\");\n},\"useData\":true});","var Handlebars = require(\"../../../../node_modules/handlebars/runtime.js\");\nfunction __default(obj) { return obj && (obj.__esModule ? obj[\"default\"] : obj); }\nmodule.exports = (Handlebars[\"default\"] || Handlebars).template({\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var helper, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"<div class=\\\"emptycontent\\\">\\n\t<div class=\\\"icon-search\\\"></div>\\n\t<h2>\"\n + container.escapeExpression(((helper = (helper = lookupProperty(helpers,\"couldNotLoadText\") || (depth0 != null ? lookupProperty(depth0,\"couldNotLoadText\") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"couldNotLoadText\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":3,\"column\":5},\"end\":{\"line\":3,\"column\":25}}}) : helper)))\n + \"</h2>\\n</div>\\n\";\n},\"useData\":true});","var Handlebars = require(\"../../../../node_modules/handlebars/runtime.js\");\nfunction __default(obj) { return obj && (obj.__esModule ? obj[\"default\"] : obj); }\nmodule.exports = (Handlebars[\"default\"] || Handlebars).template({\"1\":function(container,depth0,helpers,partials,data) {\n var helper, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"<div class=\\\"emptycontent\\\">\\n\t<div class=\\\"icon-search\\\"></div>\\n\t<h2>\"\n + container.escapeExpression(((helper = (helper = lookupProperty(helpers,\"noContactsFoundText\") || (depth0 != null ? lookupProperty(depth0,\"noContactsFoundText\") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"noContactsFoundText\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":4,\"column\":5},\"end\":{\"line\":4,\"column\":28}}}) : helper)))\n + \"</h2>\\n</div>\\n\";\n},\"3\":function(container,depth0,helpers,partials,data) {\n var helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"<div class=\\\"footer\\\"><a href=\\\"\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"contactsAppURL\") || (depth0 != null ? lookupProperty(depth0,\"contactsAppURL\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"contactsAppURL\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":9,\"column\":29},\"end\":{\"line\":9,\"column\":47}}}) : helper)))\n + \"\\\">\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"showAllContactsText\") || (depth0 != null ? lookupProperty(depth0,\"showAllContactsText\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"showAllContactsText\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":9,\"column\":49},\"end\":{\"line\":9,\"column\":72}}}) : helper)))\n + \"</a></div>\\n\";\n},\"5\":function(container,depth0,helpers,partials,data) {\n var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return ((stack1 = lookupProperty(helpers,\"if\").call(depth0 != null ? depth0 : (container.nullContext || {}),(depth0 != null ? lookupProperty(depth0,\"canInstallApp\") : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(6, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":10,\"column\":0},\"end\":{\"line\":12,\"column\":0}}})) != null ? stack1 : \"\");\n},\"6\":function(container,depth0,helpers,partials,data) {\n var helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"<div class=\\\"footer\\\"><a href=\\\"\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"contactsAppMgmtURL\") || (depth0 != null ? lookupProperty(depth0,\"contactsAppMgmtURL\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"contactsAppMgmtURL\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":11,\"column\":29},\"end\":{\"line\":11,\"column\":51}}}) : helper)))\n + \"\\\">\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"contactsAppMgmtText\") || (depth0 != null ? lookupProperty(depth0,\"contactsAppMgmtText\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"contactsAppMgmtText\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":11,\"column\":53},\"end\":{\"line\":11,\"column\":76}}}) : helper)))\n + \"</a></div>\\n\";\n},\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=depth0 != null ? depth0 : (container.nullContext || {}), lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return ((stack1 = lookupProperty(helpers,\"unless\").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,\"contacts\") : depth0)) != null ? lookupProperty(stack1,\"length\") : stack1),{\"name\":\"unless\",\"hash\":{},\"fn\":container.program(1, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":1,\"column\":0},\"end\":{\"line\":6,\"column\":11}}})) != null ? stack1 : \"\")\n + \"<div id=\\\"contactsmenu-contacts\\\"></div>\\n\"\n + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,(depth0 != null ? lookupProperty(depth0,\"contactsAppEnabled\") : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(3, data, 0),\"inverse\":container.program(5, data, 0),\"data\":data,\"loc\":{\"start\":{\"line\":8,\"column\":0},\"end\":{\"line\":12,\"column\":7}}})) != null ? stack1 : \"\");\n},\"useData\":true});","var Handlebars = require(\"../../../../node_modules/handlebars/runtime.js\");\nfunction __default(obj) { return obj && (obj.__esModule ? obj[\"default\"] : obj); }\nmodule.exports = (Handlebars[\"default\"] || Handlebars).template({\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var helper, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"<div class=\\\"emptycontent\\\">\\n\t<div class=\\\"icon-loading\\\"></div>\\n\t<h2>\"\n + container.escapeExpression(((helper = (helper = lookupProperty(helpers,\"loadingText\") || (depth0 != null ? lookupProperty(depth0,\"loadingText\") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"loadingText\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":3,\"column\":5},\"end\":{\"line\":3,\"column\":20}}}) : helper)))\n + \"</h2>\\n</div>\\n\";\n},\"useData\":true});","var Handlebars = require(\"../../../../node_modules/handlebars/runtime.js\");\nfunction __default(obj) { return obj && (obj.__esModule ? obj[\"default\"] : obj); }\nmodule.exports = (Handlebars[\"default\"] || Handlebars).template({\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"<label class=\\\"hidden-visually\\\" for=\\\"contactsmenu-search\\\">\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"searchContactsText\") || (depth0 != null ? lookupProperty(depth0,\"searchContactsText\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"searchContactsText\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":1,\"column\":57},\"end\":{\"line\":1,\"column\":79}}}) : helper)))\n + \"</label>\\n<input id=\\\"contactsmenu-search\\\" type=\\\"search\\\" placeholder=\\\"\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"searchContactsText\") || (depth0 != null ? lookupProperty(depth0,\"searchContactsText\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"searchContactsText\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":2,\"column\":59},\"end\":{\"line\":2,\"column\":81}}}) : helper)))\n + \"\\\" value=\\\"\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"searchTerm\") || (depth0 != null ? lookupProperty(depth0,\"searchTerm\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"searchTerm\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":2,\"column\":90},\"end\":{\"line\":2,\"column\":104}}}) : helper)))\n + \"\\\">\\n<div class=\\\"content\\\">\\n</div>\\n\";\n},\"useData\":true});","var Handlebars = require(\"../../../../node_modules/handlebars/runtime.js\");\nfunction __default(obj) { return obj && (obj.__esModule ? obj[\"default\"] : obj); }\nmodule.exports = (Handlebars[\"default\"] || Handlebars).template({\"1\":function(container,depth0,helpers,partials,data) {\n var helper, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"<img src=\\\"\"\n + container.escapeExpression(((helper = (helper = lookupProperty(helpers,\"icon\") || (depth0 != null ? lookupProperty(depth0,\"icon\") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"icon\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":3,\"column\":24},\"end\":{\"line\":3,\"column\":32}}}) : helper)))\n + \"\\\">\";\n},\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"<li>\\n\t<a href=\\\"\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"hyperlink\") || (depth0 != null ? lookupProperty(depth0,\"hyperlink\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"hyperlink\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":2,\"column\":10},\"end\":{\"line\":2,\"column\":23}}}) : helper)))\n + \"\\\">\\n\t\t\"\n + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,(depth0 != null ? lookupProperty(depth0,\"icon\") : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(1, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":3,\"column\":2},\"end\":{\"line\":3,\"column\":41}}})) != null ? stack1 : \"\")\n + \"\\n\t\t<span>\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"title\") || (depth0 != null ? lookupProperty(depth0,\"title\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"title\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":4,\"column\":8},\"end\":{\"line\":4,\"column\":17}}}) : helper)))\n + \"</span>\\n\t</a>\\n</li>\\n\";\n},\"useData\":true});","var map = {\n\t\"./af\": 42786,\n\t\"./af.js\": 42786,\n\t\"./ar\": 30867,\n\t\"./ar-dz\": 14130,\n\t\"./ar-dz.js\": 14130,\n\t\"./ar-kw\": 96135,\n\t\"./ar-kw.js\": 96135,\n\t\"./ar-ly\": 56440,\n\t\"./ar-ly.js\": 56440,\n\t\"./ar-ma\": 47702,\n\t\"./ar-ma.js\": 47702,\n\t\"./ar-sa\": 16040,\n\t\"./ar-sa.js\": 16040,\n\t\"./ar-tn\": 37100,\n\t\"./ar-tn.js\": 37100,\n\t\"./ar.js\": 30867,\n\t\"./az\": 31083,\n\t\"./az.js\": 31083,\n\t\"./be\": 9808,\n\t\"./be.js\": 9808,\n\t\"./bg\": 68338,\n\t\"./bg.js\": 68338,\n\t\"./bm\": 67438,\n\t\"./bm.js\": 67438,\n\t\"./bn\": 8905,\n\t\"./bn-bd\": 76225,\n\t\"./bn-bd.js\": 76225,\n\t\"./bn.js\": 8905,\n\t\"./bo\": 11560,\n\t\"./bo.js\": 11560,\n\t\"./br\": 1278,\n\t\"./br.js\": 1278,\n\t\"./bs\": 80622,\n\t\"./bs.js\": 80622,\n\t\"./ca\": 2468,\n\t\"./ca.js\": 2468,\n\t\"./cs\": 5822,\n\t\"./cs.js\": 5822,\n\t\"./cv\": 50877,\n\t\"./cv.js\": 50877,\n\t\"./cy\": 47373,\n\t\"./cy.js\": 47373,\n\t\"./da\": 24780,\n\t\"./da.js\": 24780,\n\t\"./de\": 59740,\n\t\"./de-at\": 60217,\n\t\"./de-at.js\": 60217,\n\t\"./de-ch\": 60894,\n\t\"./de-ch.js\": 60894,\n\t\"./de.js\": 59740,\n\t\"./dv\": 5300,\n\t\"./dv.js\": 5300,\n\t\"./el\": 50837,\n\t\"./el.js\": 50837,\n\t\"./en-au\": 78348,\n\t\"./en-au.js\": 78348,\n\t\"./en-ca\": 77925,\n\t\"./en-ca.js\": 77925,\n\t\"./en-gb\": 22243,\n\t\"./en-gb.js\": 22243,\n\t\"./en-ie\": 46436,\n\t\"./en-ie.js\": 46436,\n\t\"./en-il\": 47207,\n\t\"./en-il.js\": 47207,\n\t\"./en-in\": 44175,\n\t\"./en-in.js\": 44175,\n\t\"./en-nz\": 76319,\n\t\"./en-nz.js\": 76319,\n\t\"./en-sg\": 31662,\n\t\"./en-sg.js\": 31662,\n\t\"./eo\": 92915,\n\t\"./eo.js\": 92915,\n\t\"./es\": 55655,\n\t\"./es-do\": 55251,\n\t\"./es-do.js\": 55251,\n\t\"./es-mx\": 96112,\n\t\"./es-mx.js\": 96112,\n\t\"./es-us\": 71146,\n\t\"./es-us.js\": 71146,\n\t\"./es.js\": 55655,\n\t\"./et\": 5603,\n\t\"./et.js\": 5603,\n\t\"./eu\": 77763,\n\t\"./eu.js\": 77763,\n\t\"./fa\": 76959,\n\t\"./fa.js\": 76959,\n\t\"./fi\": 11897,\n\t\"./fi.js\": 11897,\n\t\"./fil\": 42549,\n\t\"./fil.js\": 42549,\n\t\"./fo\": 94694,\n\t\"./fo.js\": 94694,\n\t\"./fr\": 94470,\n\t\"./fr-ca\": 63049,\n\t\"./fr-ca.js\": 63049,\n\t\"./fr-ch\": 52330,\n\t\"./fr-ch.js\": 52330,\n\t\"./fr.js\": 94470,\n\t\"./fy\": 5044,\n\t\"./fy.js\": 5044,\n\t\"./ga\": 29295,\n\t\"./ga.js\": 29295,\n\t\"./gd\": 2101,\n\t\"./gd.js\": 2101,\n\t\"./gl\": 38794,\n\t\"./gl.js\": 38794,\n\t\"./gom-deva\": 27884,\n\t\"./gom-deva.js\": 27884,\n\t\"./gom-latn\": 23168,\n\t\"./gom-latn.js\": 23168,\n\t\"./gu\": 95349,\n\t\"./gu.js\": 95349,\n\t\"./he\": 24206,\n\t\"./he.js\": 24206,\n\t\"./hi\": 30094,\n\t\"./hi.js\": 30094,\n\t\"./hr\": 30316,\n\t\"./hr.js\": 30316,\n\t\"./hu\": 22138,\n\t\"./hu.js\": 22138,\n\t\"./hy-am\": 11423,\n\t\"./hy-am.js\": 11423,\n\t\"./id\": 29218,\n\t\"./id.js\": 29218,\n\t\"./is\": 90135,\n\t\"./is.js\": 90135,\n\t\"./it\": 90626,\n\t\"./it-ch\": 10150,\n\t\"./it-ch.js\": 10150,\n\t\"./it.js\": 90626,\n\t\"./ja\": 39183,\n\t\"./ja.js\": 39183,\n\t\"./jv\": 24286,\n\t\"./jv.js\": 24286,\n\t\"./ka\": 12105,\n\t\"./ka.js\": 12105,\n\t\"./kk\": 47772,\n\t\"./kk.js\": 47772,\n\t\"./km\": 18758,\n\t\"./km.js\": 18758,\n\t\"./kn\": 79282,\n\t\"./kn.js\": 79282,\n\t\"./ko\": 33730,\n\t\"./ko.js\": 33730,\n\t\"./ku\": 1408,\n\t\"./ku.js\": 1408,\n\t\"./ky\": 33291,\n\t\"./ky.js\": 33291,\n\t\"./lb\": 36841,\n\t\"./lb.js\": 36841,\n\t\"./lo\": 55466,\n\t\"./lo.js\": 55466,\n\t\"./lt\": 57010,\n\t\"./lt.js\": 57010,\n\t\"./lv\": 37595,\n\t\"./lv.js\": 37595,\n\t\"./me\": 39861,\n\t\"./me.js\": 39861,\n\t\"./mi\": 35493,\n\t\"./mi.js\": 35493,\n\t\"./mk\": 95966,\n\t\"./mk.js\": 95966,\n\t\"./ml\": 87341,\n\t\"./ml.js\": 87341,\n\t\"./mn\": 5115,\n\t\"./mn.js\": 5115,\n\t\"./mr\": 10370,\n\t\"./mr.js\": 10370,\n\t\"./ms\": 9847,\n\t\"./ms-my\": 41237,\n\t\"./ms-my.js\": 41237,\n\t\"./ms.js\": 9847,\n\t\"./mt\": 72126,\n\t\"./mt.js\": 72126,\n\t\"./my\": 56165,\n\t\"./my.js\": 56165,\n\t\"./nb\": 64924,\n\t\"./nb.js\": 64924,\n\t\"./ne\": 16744,\n\t\"./ne.js\": 16744,\n\t\"./nl\": 93901,\n\t\"./nl-be\": 59814,\n\t\"./nl-be.js\": 59814,\n\t\"./nl.js\": 93901,\n\t\"./nn\": 83877,\n\t\"./nn.js\": 83877,\n\t\"./oc-lnc\": 92135,\n\t\"./oc-lnc.js\": 92135,\n\t\"./pa-in\": 15858,\n\t\"./pa-in.js\": 15858,\n\t\"./pl\": 64495,\n\t\"./pl.js\": 64495,\n\t\"./pt\": 89520,\n\t\"./pt-br\": 57971,\n\t\"./pt-br.js\": 57971,\n\t\"./pt.js\": 89520,\n\t\"./ro\": 96459,\n\t\"./ro.js\": 96459,\n\t\"./ru\": 21793,\n\t\"./ru.js\": 21793,\n\t\"./sd\": 40950,\n\t\"./sd.js\": 40950,\n\t\"./se\": 10490,\n\t\"./se.js\": 10490,\n\t\"./si\": 90124,\n\t\"./si.js\": 90124,\n\t\"./sk\": 64249,\n\t\"./sk.js\": 64249,\n\t\"./sl\": 14985,\n\t\"./sl.js\": 14985,\n\t\"./sq\": 51104,\n\t\"./sq.js\": 51104,\n\t\"./sr\": 49131,\n\t\"./sr-cyrl\": 79915,\n\t\"./sr-cyrl.js\": 79915,\n\t\"./sr.js\": 49131,\n\t\"./ss\": 85893,\n\t\"./ss.js\": 85893,\n\t\"./sv\": 98760,\n\t\"./sv.js\": 98760,\n\t\"./sw\": 91172,\n\t\"./sw.js\": 91172,\n\t\"./ta\": 27333,\n\t\"./ta.js\": 27333,\n\t\"./te\": 23110,\n\t\"./te.js\": 23110,\n\t\"./tet\": 52095,\n\t\"./tet.js\": 52095,\n\t\"./tg\": 27321,\n\t\"./tg.js\": 27321,\n\t\"./th\": 9041,\n\t\"./th.js\": 9041,\n\t\"./tk\": 19005,\n\t\"./tk.js\": 19005,\n\t\"./tl-ph\": 75768,\n\t\"./tl-ph.js\": 75768,\n\t\"./tlh\": 89444,\n\t\"./tlh.js\": 89444,\n\t\"./tr\": 72397,\n\t\"./tr.js\": 72397,\n\t\"./tzl\": 28254,\n\t\"./tzl.js\": 28254,\n\t\"./tzm\": 51106,\n\t\"./tzm-latn\": 30699,\n\t\"./tzm-latn.js\": 30699,\n\t\"./tzm.js\": 51106,\n\t\"./ug-cn\": 9288,\n\t\"./ug-cn.js\": 9288,\n\t\"./uk\": 67691,\n\t\"./uk.js\": 67691,\n\t\"./ur\": 13795,\n\t\"./ur.js\": 13795,\n\t\"./uz\": 6791,\n\t\"./uz-latn\": 60588,\n\t\"./uz-latn.js\": 60588,\n\t\"./uz.js\": 6791,\n\t\"./vi\": 65666,\n\t\"./vi.js\": 65666,\n\t\"./x-pseudo\": 14378,\n\t\"./x-pseudo.js\": 14378,\n\t\"./yo\": 75805,\n\t\"./yo.js\": 75805,\n\t\"./zh-cn\": 83839,\n\t\"./zh-cn.js\": 83839,\n\t\"./zh-hk\": 55726,\n\t\"./zh-hk.js\": 55726,\n\t\"./zh-mo\": 99807,\n\t\"./zh-mo.js\": 99807,\n\t\"./zh-tw\": 74152,\n\t\"./zh-tw.js\": 74152\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 46700;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = function(module) {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 2943;","__webpack_require__.b = document.baseURI || self.location.href;\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t2943: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = function(chunkId) { return installedChunks[chunkId] === 0; };\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunknextcloud\"] = self[\"webpackChunknextcloud\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [7874], function() { return __webpack_require__(82777); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","loadedScripts","loadedStyles","updatableNotification","getDefaultNotificationFunction","setDefault","callback","this","hide","$row","_","undefined","each","$","toastify","hideToast","console","error","call","showHtml","html","options","isHTML","timeout","TOAST_PERMANENT_TIMEOUT","toast","showMessage","toastElement","show","text","toString","split","join","escapeHTML","showUpdate","showTemporary","TOAST_DEFAULT_TIMEOUT","isHidden","find","length","ajaxConnectionLostHandler","Notification","t","trailing","dynamicSlideToggleEnabled","enableDynamicSlideToggle","Apps","$el","removeClass","trigger","addClass","method","endpoint","OC","type","toUpperCase","url","generateOcsUrl","data","success","bind","getApps","getKeys","app","getValue","key","defaultValue","setValue","value","deleteKey","appConfig","window","oc_appconfig","AppConfig","_oc_appswebroots","methodMap","create","update","patch","delete","read","parsePropFindResult","result","davProperties","subResult","props","href","propStat","status","properties","propKey","id","parseIdFromLocation","queryPos","indexOf","substr","parts","pop","isSuccessStatus","callPropPatch","client","model","headers","propPatch","attrs","changedProp","warn","convertModelAttributesToDavProperties","changed","then","toJSON","Backbone","VendorBackbone","Object","assign","davCall","dav","baseUrl","xmlNamespaces","resolveUrl","requestToken","propFind","depth","response","propsMapping","results","body","shift","callPropFind","request","callMkCol","responseJson","locationHeader","xhr","getResponseHeader","callMethod","davSync","params","isCollection","Collection","hasInnerCollection","usePUT","collection","Error","urlError","JSON","stringify","processData","prototype","textStatus","errorThrown","context","_oc_config","Contact","Model","defaults","fullName","lastMessage","actions","hasOneAction","hasTwoActions","hasManyActions","initialize","get","set","ContactCollection","ContactsListView","View","_collection","_subViews","render","self","forEach","contact","item","ContactsListItemView","append","on","_onChildActionMenuToggle","push","$src","view","className","_template","_model","_actionMenuShown","events","contactTemplate","require","template","_onOtherActionMenuOpened","delegateEvents","imageplaceholder","tooltip","placement","_onToggleActionsMenu","is","ContactsMenuView","_loadingTemplate","_errorTemplate","_contentTemplate","_contactsTemplate","_contacts","_searchTerm","templates","loading","menu","list","_onSearch","e","searchTerm","val","loadingTemplate","errorTemplate","couldNotLoadText","contentTemplate","searchContactsText","contactsTemplate","noContactsFoundText","showAllContactsText","contactsAppMgmtText","showLoading","loadingText","showError","showContacts","viewData","contacts","contactsAppEnabled","contactsAppURL","canInstallApp","contactsAppMgmtURL","searchVal","focus","ContactsMenu","_view","_contactsPromise","el","loadContacts","_getContacts","Promise","resolve","filter","term","catch","rawUid","document","getElementsByTagName","getAttribute","displayName","currentUser","Search","isA11yActivation","event","global","emit","token","Dialogs","YES_NO_BUTTONS","OK_BUTTONS","FILEPICKER_TYPE_CHOOSE","FILEPICKER_TYPE_MOVE","FILEPICKER_TYPE_COPY","FILEPICKER_TYPE_COPY_MOVE","FILEPICKER_TYPE_CUSTOM","dialogsCounter","alert","title","modal","message","OK_BUTTON","info","confirm","confirmDestructive","buttons","confirmHtml","prompt","name","password","_getMessageTemplate","$tmpl","dialogName","dialogId","$dlg","octemplate","dialog_name","input","attr","label","buttonlist","click","ocdialog","defaultButton","closeOnEscape","close","filepicker","multiselect","mimetypeFilter","path","sortField","sortOrder","emptyText","newText","filesClient","OCA","Sharing","PublicApp","fileList","filelist","allowDirectoryChooser","_getFilePickerTemplate","$filePicker","emptytext","newtext","nameCol","sizeCol","modifiedCol","target","prepend","$showGridView","_onGridviewChange","_getGridSettings","newButton","stopImmediatePropagation","preventDefault","$input","submit","newName","lastPos","lastIndexOf","selectRange","$form","$submit","stopPropagation","filename","trimmedName","trim","match","isFileNameValid","file","escape","checkInput","newname","createDirectory","always","_fillFilePicker","ready","$fileListHeader","$filelist","$filelistContainer","$dirTree","_handleTreeListSelect","_handlePickerClick","dir","currentTarget","functionToCall","returnType","datapath","index","element","selectedName","button","width","height","style","remove","buttonEnableDisable","closest","prop","fail","content","dialogType","allowHtml","escapeFunction","cancel","classes","confirmClasses","closeCallback","_fileexistsshown","fileexists","original","replacement","controller","dialogDeferred","resampleHermite","canvas","W","H","W2","H2","Math","round","img","getContext","getImageData","img2","data2","ratio_w","ratio_h","ratio_w_half","ceil","ratio_h_half","j","i","x2","weight","weights","weights_alpha","gx_r","gx_g","gx_b","gx_a","center_y","yy","floor","dy","abs","center_x","w0","xx","dx","w","sqrt","clearRect","max","putImageData","addConflict","$conflicts","$conflict","clone","$originalDiv","$replacementDiv","size","mtime","lastModified","directory","urlSpec","x","y","c","etag","forceIcon","previewpath","Files","generatePreviewUrl","replace","css","FileReader","reader","onload","blob","Blob","URL","webkitURL","originalUrl","createObjectURL","image","Image","src","createElement","min","drawImage","toDataURL","readAsArrayBuffer","reject","getCroppedPreview","checkboxId","count","n","parent","children","_getFileExistsTemplate","allnewfiles","allexistingfiles","why","what","onCancel","onContinue","closeButton","$primaryButton","updatePrimaryButton","checkedCount","$checkbox","promise","gridview","toggleClass","isGridView","hasClass","defer","$filePickerTemplate","tmpl","$listTmpl","detach","jqXHR","$messageTemplate","$fileexistsTemplate","empty","advancedFilter","getFolderContents","files","_changeButtonsText","mimetype","showHiddenInput","getElementById","startsWith","comparator","Comparators","fileInfo1","fileInfo2","sort","file1","file2","isFavorite","fileInfo","tags","_fillSlug","idx","entry","simpleSize","sizeColor","isEncrypted","icon","parseInt","pow","filename1","filename2","date","previewUrl","addButton","$template","paths","prependTo","getOcDialog","$element","ctrlKey","copyText","folder","moveText","eq","manageFromDocument","getToken","setToken","newToken","OCEventSource","joinChar","dataStr","typelessListeners","closed","listeners","encodeURIComponent","useFallBack","EventSource","iframeId","iframeCount","fallBackSources","iframe","source","onmessage","parse","listen","fallBackCallBack","done","lastLength","addEventListener","currentMenu","currentMenuToggle","hideMenus","complete","lastMenu","slideUp","apply","arguments","isAdmin","_oc_isadmin","load","loadTranslations","register","_unregister","unregister","translate","translatePlural","Handlebars","startSaving","selector","startAction","stop","finishedSaving","finishedAction","finishedSuccess","finishedError","delay","fadeOut","pageLoadTime","init","requirePasswordConfirmation","moment","requiresPasswordConfirmation","serverTimeDiff","nc_pageLoad","timeSinceLogin","nc_lastLogin","backendAllowsPasswordConfirmation","rejectCallback","config","_confirmPassword","$dialog","$error","$buttons","generateUrl","lastLogin","theme","_theme","_handlers","_pushState","strParams","history","pushState","location","pathname","navigator","userAgent","toLowerCase","pattern","patterns","querySelectorAll","ii","fill","stroke","removeAttribute","setAttribute","replaceState","hash","_cancelPop","addOnPopStateHandler","handler","_parseHashQuery","pos","_decodeQuery","query","parseUrlQuery","search","_onPopState","state","chunkify","tz","charAt","m","History","humanFileSize","computerFileSize","string","s","bytes","matches","parseFloat","isFinite","b","k","kb","mb","gb","g","tb","pb","p","formatDate","timestamp","format","TESTING","relativeModifiedDate","diff","fromNow","getScrollBarWidth","_scrollBarWidth","inner","outer","position","top","left","visibility","overflow","appendChild","w1","offsetWidth","w2","clientWidth","removeChild","stripTime","Date","getFullYear","getMonth","getDate","naturalSortCompare","a","aa","bb","aNum","Number","bNum","localeCompare","waitFor","interval","internalCallback","setTimeout","isCookieSetToValue","cookies","cookie","debug","_oc_debug","webroot","_oc_webroot","coreApps","menuSpeed","PERMISSION_ALL","PERMISSION_CREATE","PERMISSION_DELETE","PERMISSION_NONE","PERMISSION_READ","PERMISSION_SHARE","PERMISSION_UPDATE","TAG_FAVORITE","fileIsBlacklisted","Config","addScript","script","generateFilePath","addStyle","createStyleSheet","appSettings","args","appid","scriptName","cache","settings","popup","arrowclass","loadJS","scriptname","jqxhr","appswebroots","dialogs","getCurrentUser","uid","isUserAdmin","L10N","_ajaxConnectionLostHandler","_processAjaxError","statusText","timer","setInterval","clearInterval","registerXHRForErrorProcessing","readyState","getCapabilities","realGetCapabilities","registerMenu","$toggle","$menuEl","toggle","headerMenu","isClickableElement","slideToggle","showMenu","unregisterMenu","off","basename","encodePath","dirname","isSamePath","joinPaths","getHost","host","getHostName","hostname","getPort","port","getProtocol","protocol","getCanonicalLocale","getLocale","getLanguage","buildQueryString","parseQueryString","queryString","components","part","decodeURIComponent","msg","PasswordConfirmation","Plugins","_plugins","targetName","plugin","plugins","getPlugins","attach","targetObject","Util","filePath","namespaces","tail","getRootPath","getRootUrl","imagePath","redirect","targetURL","reload","getRequestToken","linkTo","linkToOCS","service","version","ocsVersion","linkToRemote","generateRemoteUrl","linkToRemoteBase","realGetRootUrl","subscribe","resp","poll","setRequestToken","startPolling","NaN","session_lifetime","isNaN","getInterval","Contacts","NcHeaderMenu","contactsMenu","mounted","methods","handleOpen","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","_vm","_c","_self","scopedSlots","_u","fn","proxy","_v","NcActions","NcActionLink","apps","appLimit","observer","computed","appList","mainAppList","popoverAppList","appLabel","beforeDestroy","unsubscribe","setNavigationCounter","setApps","resize","appCount","staticClass","_l","class","active","unread","_s","_e","NcLoadingIcon","required","cachedIcon","handleClick","$event","shiftKey","altKey","metaKey","NcAvatar","UserMenuEntry","settingsNavEntries","userId","_b","localeAliases","zh","zh_Hans","zh_Hans_CN","zh_Hans_HK","zh_Hans_MO","zh_Hans_SG","zh_Hant","zh_Hant_HK","zh_Hant_MO","zh_Hant_TW","locale","hasOwnProperty","initCore","mountPoint","allowAuthErrors","loadState","loadConfig","auto_logout","lastActive","now","localStorage","setItem","newValue","logoutUrl","registerAutoLogout","session_keepalive","initSessionHeartBeat","Vue","container","appMenu","AppMenu","$mount","counter","setUpMainMenu","h","UserMenu","setUpContactsMenu","snapper","Snap","disable","maxPosition","minDragDistance","animating","oldSnapperOpen","open","oldSnapperClose","_snapperOpen","_snapperClose","keypress","delegate","$target","navigationBarSlideGestureEnabled","navigationBarSlideGestureAllowed","navigationBarSlideGestureEnablePending","enable","toggleSnapperOnSize","ex","TypeError","urlRegex","plainToRich","formatLinksRich","richToPlain","formatLinksPlain","leadingSpace","trailingSpace","linkText","$content","$this","dismissOptions","dismiss","menuItem","div","classList","add","innerText","ocs","product","onclick","whatsNew","regular","whatsNewTextItem","innerHTML","changelogURL","rel","onQuerySuccess","onQueryError","onDismissSuccess","onDismissError","func","funcName","oldFunc","newFunc","disableKeyboardShortcuts","types","loadedStylesheets","loadScript","scriptPath","btoa","onerror","head","loadStylesheet","stylePath","link","showSuccess","warning","showWarning","showInfo","Accessibility","Collaboration","registerType","typeDefinition","action","getTypes","keys","getIcon","typeIconClass","getLabel","typeString","getLink","Comments","InitialState","Loader","Toast","WhatsNew","warnIfNotTesting","setDeprecatedProp","cb","Array","isArray","defineProperty","autosize","ClipboardJS","md5","OCP","user","ie8fix","hidedefault","displayname","setAvatarForUnknownUser","String","$div","devicePixelRatio","oc_userconfig","avatar","clearimageplaceholder","alt","entryTemplate","shareWith","shareType","appendTo","$list","topAction","concat","hyperlink","clickedList","has","clickedTarget","attrName","attrValue","_create","originalCss","display","originalTitle","tabIndex","role","insertBefore","removeAttr","$buttonrow","$button","enterCallback","keyCode","_setOptions","_createOverlay","_init","_trigger","_setOption","$title","_setSizes","$defaultButton","$closeButton","closeCB","lessHeight","outerHeight","contentDiv","overlay","_destroyOverlay","widget","setEnterCallback","unsetEnterCallback","destroy","Template","vars","elem","_html","_build","o","outerHTML","r","toRgb","Color","mixPalette","steps","color1","color2","palette","step","ends","stepCalc","red","yellow","blue","palette1","palette2","palette3","maximum","finalInt","hashToInt","seed","rgb","placeholderText","map","word","elm","crossDomain","setRequestHeader","start","end","setSelectionRange","createTextRange","range","collapse","moveEnd","moveStart","select","showPassword","setState","checkbox","$clone","tabindex","autocomplete","cloneElement","insertAfter","outerWidth","contents","areaSelector","area","hideArea","slideDown","showArea","onpopstate","___CSS_LOADER_URL_IMPORT_0___","___CSS_LOADER_URL_IMPORT_1___","___CSS_LOADER_URL_IMPORT_2___","___CSS_LOADER_URL_IMPORT_3___","___CSS_LOADER_URL_IMPORT_4___","___CSS_LOADER_EXPORT___","___CSS_LOADER_URL_REPLACEMENT_0___","___CSS_LOADER_URL_REPLACEMENT_1___","___CSS_LOADER_URL_REPLACEMENT_2___","___CSS_LOADER_URL_REPLACEMENT_3___","___CSS_LOADER_URL_REPLACEMENT_4___","module","exports","depth0","helpers","partials","stack1","lookupProperty","propertyName","nullContext","program","noop","alias1","lambda","alias2","escapeExpression","helper","hooks","helperMissing","alias3","alias4","webpackContext","req","webpackContextResolve","__webpack_require__","code","__webpack_module_cache__","moduleId","cachedModule","loaded","__webpack_modules__","O","chunkIds","priority","notFulfilled","Infinity","fulfilled","every","splice","getter","__esModule","d","definition","enumerable","globalThis","Function","obj","Symbol","toStringTag","nmd","baseURI","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","nc","__webpack_exports__"],"sourceRoot":""}
\ No newline at end of file +{"version":3,"file":"core-main.js?v=6d1451f0e4b4569bb29a","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/core/src/OC/legacy-loader.js","webpack:///nextcloud/core/src/OC/notification.js","webpack:///nextcloud/core/src/OC/xhr-error.js","webpack:///nextcloud/core/src/OC/apps.js","webpack:///nextcloud/core/src/OCP/appconfig.js","webpack:///nextcloud/core/src/OC/appconfig.js","webpack:///nextcloud/core/src/OC/appswebroots.js","webpack:///nextcloud/core/src/OC/backbone-webdav.js","webpack:///nextcloud/core/src/OC/backbone.js","webpack:///nextcloud/core/src/OC/config.js","webpack:///nextcloud/core/src/OC/contactsmenu.js","webpack:///nextcloud/core/src/OC/currentuser.js","webpack:///nextcloud/core/src/OCA/search.js","webpack:///nextcloud/core/src/OCA/index.js","webpack:///nextcloud/core/src/Util/a11y.js","webpack:///nextcloud/core/src/OC/dialogs.js","webpack:///nextcloud/core/src/OC/requesttoken.js","webpack:///nextcloud/core/src/OC/eventsource.js","webpack:///nextcloud/core/src/OC/menu.js","webpack:///nextcloud/core/src/OC/constants.js","webpack:///nextcloud/core/src/OC/admin.js","webpack:///nextcloud/core/src/OC/l10n.js","webpack:///nextcloud/core/src/OC/msg.js","webpack:///nextcloud/core/src/OC/password-confirmation.js","webpack:///nextcloud/core/src/OC/theme.js","webpack:///nextcloud/core/src/OC/util-history.js","webpack:///nextcloud/core/src/OC/util.js","webpack:///nextcloud/core/src/OC/debug.js","webpack:///nextcloud/core/src/OC/webroot.js","webpack:///nextcloud/core/src/OC/get_set.js","webpack:///nextcloud/core/src/OC/index.js","webpack:///nextcloud/core/src/OC/appsettings.js","webpack:///nextcloud/core/src/OC/capabilities.js","webpack:///nextcloud/core/src/OC/host.js","webpack:///nextcloud/core/src/OC/query-string.js","webpack:///nextcloud/core/src/OC/plugins.js","webpack:///nextcloud/core/src/OC/navigation.js","webpack:///nextcloud/core/src/OC/routing.js","webpack:///nextcloud/core/src/session-heartbeat.js","webpack:///nextcloud/core/src/views/ContactsMenu.vue?vue&type=script&lang=js&","webpack:///nextcloud/core/src/views/ContactsMenu.vue","webpack://nextcloud/./core/src/views/ContactsMenu.vue?41d6","webpack://nextcloud/./core/src/views/ContactsMenu.vue?1de5","webpack://nextcloud/./core/src/views/ContactsMenu.vue?f71b","webpack:///nextcloud/core/src/components/AppMenu.vue","webpack:///nextcloud/core/src/components/AppMenu.vue?vue&type=script&lang=js&","webpack://nextcloud/./core/src/components/AppMenu.vue?8eda","webpack://nextcloud/./core/src/components/AppMenu.vue?95cf","webpack://nextcloud/./core/src/components/AppMenu.vue?d0fd","webpack:///nextcloud/core/src/components/UserMenu/UserMenuEntry.vue","webpack:///nextcloud/core/src/components/UserMenu/UserMenuEntry.vue?vue&type=script&lang=js&","webpack://nextcloud/./core/src/components/UserMenu/UserMenuEntry.vue?6a6f","webpack://nextcloud/./core/src/components/UserMenu/UserMenuEntry.vue?a480","webpack://nextcloud/./core/src/components/UserMenu/UserMenuEntry.vue?4de1","webpack:///nextcloud/core/src/views/UserMenu.vue","webpack:///nextcloud/core/src/views/UserMenu.vue?vue&type=script&lang=js&","webpack://nextcloud/./core/src/views/UserMenu.vue?3de1","webpack://nextcloud/./core/src/views/UserMenu.vue?5d6d","webpack://nextcloud/./core/src/views/UserMenu.vue?4b20","webpack:///nextcloud/core/src/init.js","webpack:///nextcloud/core/src/Polyfill/tooltip.js","webpack:///nextcloud/core/src/components/UserMenu.js","webpack:///nextcloud/core/src/components/MainMenu.js","webpack:///nextcloud/core/src/components/ContactsMenu.js","webpack:///nextcloud/core/src/OCP/comments.js","webpack:///nextcloud/core/src/OCP/whatsnew.js","webpack:///nextcloud/core/src/OCP/accessibility.js","webpack:///nextcloud/core/src/globals.js","webpack:///nextcloud/core/src/OCP/collaboration.js","webpack:///nextcloud/core/src/OCP/loader.js","webpack:///nextcloud/core/src/OCP/toast.js","webpack:///nextcloud/core/src/OCP/index.js","webpack:///nextcloud/core/src/jquery/avatar.js","webpack:///nextcloud/core/src/jquery/contactsmenu.js","webpack:///nextcloud/core/src/jquery/exists.js","webpack:///nextcloud/core/src/jquery/filterattr.js","webpack:///nextcloud/core/src/jquery/ocdialog.js","webpack:///nextcloud/core/src/jquery/octemplate.js","webpack:///nextcloud/core/src/jquery/placeholder.js","webpack:///nextcloud/core/src/jquery/requesttoken.js","webpack:///nextcloud/core/src/jquery/selectrange.js","webpack:///nextcloud/core/src/jquery/showpassword.js","webpack:///nextcloud/core/src/jquery/ui-fixes.js","webpack://nextcloud/./core/src/jquery/css/jquery-ui-fixes.scss?a4c2","webpack://nextcloud/./core/src/jquery/css/jquery.ocdialog.scss?5718","webpack:///nextcloud/core/src/jquery/index.js","webpack:///nextcloud/core/src/main.js","webpack:///nextcloud/core/src/jquery/css/jquery-ui-fixes.scss","webpack:///nextcloud/core/src/jquery/css/jquery.ocdialog.scss","webpack:///nextcloud/core/src/components/AppMenu.vue?vue&type=style&index=0&id=44a795f6&prod&lang=scss&scoped=true&","webpack:///nextcloud/core/src/components/UserMenu/UserMenuEntry.vue?vue&type=style&index=0&id=6e59d13c&prod&lang=scss&scoped=true&","webpack:///nextcloud/core/src/views/ContactsMenu.vue?vue&type=style&index=0&id=1563c388&prod&lang=scss&scoped=true&","webpack:///nextcloud/core/src/views/UserMenu.vue?vue&type=style&index=0&id=6a818bbc&prod&lang=scss&scoped=true&","webpack:///nextcloud/core/src/OC/contactsmenu/contact.handlebars","webpack:///nextcloud/core/src/OC/contactsmenu/error.handlebars","webpack:///nextcloud/core/src/OC/contactsmenu/list.handlebars","webpack:///nextcloud/core/src/OC/contactsmenu/loading.handlebars","webpack:///nextcloud/core/src/OC/contactsmenu/menu.handlebars","webpack:///nextcloud/core/src/jquery/contactsmenu/jquery_entry.handlebars","webpack:///nextcloud/node_modules/moment/locale|sync|/^\\.\\/.*$","webpack:///nextcloud/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/compat get default export","webpack:///nextcloud/webpack/runtime/define property getters","webpack:///nextcloud/webpack/runtime/global","webpack:///nextcloud/webpack/runtime/hasOwnProperty shorthand","webpack:///nextcloud/webpack/runtime/make namespace object","webpack:///nextcloud/webpack/runtime/node module decorator","webpack:///nextcloud/webpack/runtime/runtimeId","webpack:///nextcloud/webpack/runtime/jsonp chunk loading","webpack:///nextcloud/webpack/runtime/nonce","webpack:///nextcloud/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = function(result, chunkIds, fn, priority) {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every(function(key) { return __webpack_require__.O[key](chunkIds[j]); })) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n/** @typedef {import('jquery')} jQuery */\nimport $ from 'jquery'\nimport { generateFilePath } from '@nextcloud/router'\n\nconst loadedScripts = {}\nconst loadedStyles = []\n\n/**\n * Load a script for the server and load it. If the script is already loaded,\n * the event handler will be called directly\n *\n * @param {string} app the app id to which the script belongs\n * @param {string} script the filename of the script\n * @param {Function} ready event handler to be called when the script is loaded\n * @return {jQuery.Deferred}\n * @deprecated 16.0.0 Use OCP.Loader.loadScript\n */\nexport const addScript = (app, script, ready) => {\n\tconsole.warn('OC.addScript is deprecated, use OCP.Loader.loadScript instead')\n\n\tlet deferred\n\tconst path = generateFilePath(app, 'js', script + '.js')\n\tif (!loadedScripts[path]) {\n\t\tdeferred = $.Deferred()\n\t\t$.getScript(path, () => deferred.resolve())\n\t\tloadedScripts[path] = deferred\n\t} else {\n\t\tif (ready) {\n\t\t\tready()\n\t\t}\n\t}\n\treturn loadedScripts[path]\n}\n\n/**\n * Loads a CSS file\n *\n * @param {string} app the app id to which the css style belongs\n * @param {string} style the filename of the css file\n * @deprecated 16.0.0 Use OCP.Loader.loadStylesheet\n */\nexport const addStyle = (app, style) => {\n\tconsole.warn('OC.addStyle is deprecated, use OCP.Loader.loadStylesheet instead')\n\n\tconst path = generateFilePath(app, 'css', style + '.css')\n\tif (loadedStyles.indexOf(path) === -1) {\n\t\tloadedStyles.push(path)\n\t\tif (document.createStyleSheet) {\n\t\t\tdocument.createStyleSheet(path)\n\t\t} else {\n\t\t\tstyle = $('<link rel=\"stylesheet\" type=\"text/css\" href=\"' + path + '\"/>')\n\t\t\t$('head').append(style)\n\t\t}\n\t}\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Daniel Calviño Sánchez <danxuliu@gmail.com>\n * @author Joas Schilling <coding@schilljs.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n * @author npmbuildbot[bot] \"npmbuildbot[bot]@users.noreply.github.com\"\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport _ from 'underscore'\n/** @typedef {import('jquery')} jQuery */\nimport $ from 'jquery'\nimport { showMessage, TOAST_DEFAULT_TIMEOUT, TOAST_PERMANENT_TIMEOUT } from '@nextcloud/dialogs'\n\n/**\n * @todo Write documentation\n * @deprecated 17.0.0 use the `@nextcloud/dialogs` package instead\n * @namespace OC.Notification\n */\nexport default {\n\n\tupdatableNotification: null,\n\n\tgetDefaultNotificationFunction: null,\n\n\t/**\n\t * @param {Function} callback callback function\n\t * @deprecated 17.0.0 use the `@nextcloud/dialogs` package\n\t */\n\tsetDefault(callback) {\n\t\tthis.getDefaultNotificationFunction = callback\n\t},\n\n\t/**\n\t * Hides a notification.\n\t *\n\t * If a row is given, only hide that one.\n\t * If no row is given, hide all notifications.\n\t *\n\t * @param {jQuery} [$row] notification row\n\t * @param {Function} [callback] callback\n\t * @deprecated 17.0.0 use the `@nextcloud/dialogs` package\n\t */\n\thide($row, callback) {\n\t\tif (_.isFunction($row)) {\n\t\t\t// first arg is the callback\n\t\t\tcallback = $row\n\t\t\t$row = undefined\n\t\t}\n\n\t\tif (!$row) {\n\t\t\tconsole.error('Missing argument $row in OC.Notification.hide() call, caller needs to be adjusted to only dismiss its own notification')\n\t\t\treturn\n\t\t}\n\n\t\t// remove the row directly\n\t\t$row.each(function() {\n\t\t\tif ($(this)[0].toastify) {\n\t\t\t\t$(this)[0].toastify.hideToast()\n\t\t\t} else {\n\t\t\t\tconsole.error('cannot hide toast because object is not set')\n\t\t\t}\n\t\t\tif (this === this.updatableNotification) {\n\t\t\t\tthis.updatableNotification = null\n\t\t\t}\n\t\t})\n\t\tif (callback) {\n\t\t\tcallback.call()\n\t\t}\n\t\tif (this.getDefaultNotificationFunction) {\n\t\t\tthis.getDefaultNotificationFunction()\n\t\t}\n\t},\n\n\t/**\n\t * Shows a notification as HTML without being sanitized before.\n\t * If you pass unsanitized user input this may lead to a XSS vulnerability.\n\t * Consider using show() instead of showHTML()\n\t *\n\t * @param {string} html Message to display\n\t * @param {object} [options] options\n\t * @param {string} [options.type] notification type\n\t * @param {number} [options.timeout=0] timeout value, defaults to 0 (permanent)\n\t * @return {jQuery} jQuery element for notification row\n\t * @deprecated 17.0.0 use the `@nextcloud/dialogs` package\n\t */\n\tshowHtml(html, options) {\n\t\toptions = options || {}\n\t\toptions.isHTML = true\n\t\toptions.timeout = (!options.timeout) ? TOAST_PERMANENT_TIMEOUT : options.timeout\n\t\tconst toast = showMessage(html, options)\n\t\ttoast.toastElement.toastify = toast\n\t\treturn $(toast.toastElement)\n\t},\n\n\t/**\n\t * Shows a sanitized notification\n\t *\n\t * @param {string} text Message to display\n\t * @param {object} [options] options\n\t * @param {string} [options.type] notification type\n\t * @param {number} [options.timeout=0] timeout value, defaults to 0 (permanent)\n\t * @return {jQuery} jQuery element for notification row\n\t * @deprecated 17.0.0 use the `@nextcloud/dialogs` package\n\t */\n\tshow(text, options) {\n\t\tconst escapeHTML = function(text) {\n\t\t\treturn text.toString()\n\t\t\t\t.split('&').join('&')\n\t\t\t\t.split('<').join('<')\n\t\t\t\t.split('>').join('>')\n\t\t\t\t.split('\"').join('"')\n\t\t\t\t.split('\\'').join(''')\n\t\t}\n\n\t\toptions = options || {}\n\t\toptions.timeout = (!options.timeout) ? TOAST_PERMANENT_TIMEOUT : options.timeout\n\t\tconst toast = showMessage(escapeHTML(text), options)\n\t\ttoast.toastElement.toastify = toast\n\t\treturn $(toast.toastElement)\n\t},\n\n\t/**\n\t * Updates (replaces) a sanitized notification.\n\t *\n\t * @param {string} text Message to display\n\t * @return {jQuery} JQuery element for notificaiton row\n\t * @deprecated 17.0.0 use the `@nextcloud/dialogs` package\n\t */\n\tshowUpdate(text) {\n\t\tif (this.updatableNotification) {\n\t\t\tthis.updatableNotification.hideToast()\n\t\t}\n\t\tthis.updatableNotification = showMessage(text, { timeout: TOAST_PERMANENT_TIMEOUT })\n\t\tthis.updatableNotification.toastElement.toastify = this.updatableNotification\n\t\treturn $(this.updatableNotification.toastElement)\n\t},\n\n\t/**\n\t * Shows a notification that disappears after x seconds, default is\n\t * 7 seconds\n\t *\n\t * @param {string} text Message to show\n\t * @param {Array} [options] options array\n\t * @param {number} [options.timeout=7] timeout in seconds, if this is 0 it will show the message permanently\n\t * @param {boolean} [options.isHTML=false] an indicator for HTML notifications (true) or text (false)\n\t * @param {string} [options.type] notification type\n\t * @return {JQuery} the toast element\n\t * @deprecated 17.0.0 use the `@nextcloud/dialogs` package\n\t */\n\tshowTemporary(text, options) {\n\t\toptions = options || {}\n\t\toptions.timeout = options.timeout || TOAST_DEFAULT_TIMEOUT\n\t\tconst toast = showMessage(text, options)\n\t\ttoast.toastElement.toastify = toast\n\t\treturn $(toast.toastElement)\n\t},\n\n\t/**\n\t * Returns whether a notification is hidden.\n\t *\n\t * @return {boolean}\n\t * @deprecated 17.0.0 use the `@nextcloud/dialogs` package\n\t */\n\tisHidden() {\n\t\treturn !$('#content').find('.toastify').length\n\t},\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport _ from 'underscore'\nimport $ from 'jquery'\n\nimport OC from './index'\nimport Notification from './notification'\n\n/**\n * Warn users that the connection to the server was lost temporarily\n *\n * This function is throttled to prevent stacked notfications.\n * After 7sec the first notification is gone, then we can show another one\n * if necessary.\n */\nexport const ajaxConnectionLostHandler = _.throttle(() => {\n\tNotification.showTemporary(t('core', 'Connection to server lost'))\n}, 7 * 1000, { trailing: false })\n\n/**\n * Process ajax error, redirects to main page\n * if an error/auth error status was returned.\n *\n * @param {XMLHttpRequest} xhr xhr request\n */\nexport const processAjaxError = xhr => {\n\t// purposefully aborted request ?\n\t// OC._userIsNavigatingAway needed to distinguish ajax calls cancelled by navigating away\n\t// from calls cancelled by failed cross-domain ajax due to SSO redirect\n\tif (xhr.status === 0 && (xhr.statusText === 'abort' || xhr.statusText === 'timeout' || OC._reloadCalled)) {\n\t\treturn\n\t}\n\n\tif (_.contains([302, 303, 307, 401], xhr.status) && OC.currentUser) {\n\t\t// sometimes \"beforeunload\" happens later, so need to defer the reload a bit\n\t\tsetTimeout(function() {\n\t\t\tif (!OC._userIsNavigatingAway && !OC._reloadCalled) {\n\t\t\t\tlet timer = 0\n\t\t\t\tconst seconds = 5\n\t\t\t\tconst interval = setInterval(function() {\n\t\t\t\t\tNotification.showUpdate(n('core', 'Problem loading page, reloading in %n second', 'Problem loading page, reloading in %n seconds', seconds - timer))\n\t\t\t\t\tif (timer >= seconds) {\n\t\t\t\t\t\tclearInterval(interval)\n\t\t\t\t\t\tOC.reload()\n\t\t\t\t\t}\n\t\t\t\t\ttimer++\n\t\t\t\t}, 1000 // 1 second interval\n\t\t\t\t)\n\n\t\t\t\t// only call reload once\n\t\t\t\tOC._reloadCalled = true\n\t\t\t}\n\t\t}, 100)\n\t} else if (xhr.status === 0) {\n\t\t// Connection lost (e.g. WiFi disconnected or server is down)\n\t\tsetTimeout(function() {\n\t\t\tif (!OC._userIsNavigatingAway && !OC._reloadCalled) {\n\t\t\t\t// TODO: call method above directly\n\t\t\t\tOC._ajaxConnectionLostHandler()\n\t\t\t}\n\t\t}, 100)\n\t}\n}\n\n/**\n * Registers XmlHttpRequest object for global error processing.\n *\n * This means that if this XHR object returns 401 or session timeout errors,\n * the current page will automatically be reloaded.\n *\n * @param {XMLHttpRequest} xhr xhr request\n */\nexport const registerXHRForErrorProcessing = xhr => {\n\tconst loadCallback = () => {\n\t\tif (xhr.readyState !== 4) {\n\t\t\treturn\n\t\t}\n\n\t\tif ((xhr.status >= 200 && xhr.status < 300) || xhr.status === 304) {\n\t\t\treturn\n\t\t}\n\n\t\t// fire jquery global ajax error handler\n\t\t$(document).trigger(new $.Event('ajaxError'), xhr)\n\t}\n\n\tconst errorCallback = () => {\n\t\t// fire jquery global ajax error handler\n\t\t$(document).trigger(new $.Event('ajaxError'), xhr)\n\t}\n\n\tif (xhr.addEventListener) {\n\t\txhr.addEventListener('load', loadCallback)\n\t\txhr.addEventListener('error', errorCallback)\n\t}\n\n}\n","/**\n * @copyright Bernhard Posselt 2014\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport $ from 'jquery'\n\nlet dynamicSlideToggleEnabled = false\n\nconst Apps = {\n\tenableDynamicSlideToggle() {\n\t\tdynamicSlideToggleEnabled = true\n\t},\n}\n\n/**\n * Shows the #app-sidebar and add .with-app-sidebar to subsequent siblings\n *\n * @param {object} [$el] sidebar element to show, defaults to $('#app-sidebar')\n */\nApps.showAppSidebar = function($el) {\n\tconst $appSidebar = $el || $('#app-sidebar')\n\t$appSidebar.removeClass('disappear').show()\n\t$('#app-content').trigger(new $.Event('appresized'))\n}\n\n/**\n * Shows the #app-sidebar and removes .with-app-sidebar from subsequent\n * siblings\n *\n * @param {object} [$el] sidebar element to hide, defaults to $('#app-sidebar')\n */\nApps.hideAppSidebar = function($el) {\n\tconst $appSidebar = $el || $('#app-sidebar')\n\t$appSidebar.hide().addClass('disappear')\n\t$('#app-content').trigger(new $.Event('appresized'))\n}\n\n/**\n * Provides a way to slide down a target area through a button and slide it\n * up if the user clicks somewhere else. Used for the news app settings and\n * add new field.\n *\n * Usage:\n * <button data-apps-slide-toggle=\".slide-area\">slide</button>\n * <div class=\".slide-area\" class=\"hidden\">I'm sliding up</div>\n */\nexport const registerAppsSlideToggle = () => {\n\tlet buttons = $('[data-apps-slide-toggle]')\n\n\tif (buttons.length === 0) {\n\t\t$('#app-navigation').addClass('without-app-settings')\n\t}\n\n\t$(document).click(function(event) {\n\n\t\tif (dynamicSlideToggleEnabled) {\n\t\t\tbuttons = $('[data-apps-slide-toggle]')\n\t\t}\n\n\t\tbuttons.each(function(index, button) {\n\n\t\t\tconst areaSelector = $(button).data('apps-slide-toggle')\n\t\t\tconst area = $(areaSelector)\n\n\t\t\t/**\n\t\t\t *\n\t\t\t */\n\t\t\tfunction hideArea() {\n\t\t\t\tarea.slideUp(OC.menuSpeed * 4, function() {\n\t\t\t\t\tarea.trigger(new $.Event('hide'))\n\t\t\t\t})\n\t\t\t\tarea.removeClass('opened')\n\t\t\t\t$(button).removeClass('opened')\n\t\t\t}\n\n\t\t\t/**\n\t\t\t *\n\t\t\t */\n\t\t\tfunction showArea() {\n\t\t\t\tarea.slideDown(OC.menuSpeed * 4, function() {\n\t\t\t\t\tarea.trigger(new $.Event('show'))\n\t\t\t\t})\n\t\t\t\tarea.addClass('opened')\n\t\t\t\t$(button).addClass('opened')\n\t\t\t\tconst input = $(areaSelector + ' [autofocus]')\n\t\t\t\tif (input.length === 1) {\n\t\t\t\t\tinput.focus()\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// do nothing if the area is animated\n\t\t\tif (!area.is(':animated')) {\n\n\t\t\t\t// button toggles the area\n\t\t\t\tif ($(button).is($(event.target).closest('[data-apps-slide-toggle]'))) {\n\t\t\t\t\tif (area.is(':visible')) {\n\t\t\t\t\t\thideArea()\n\t\t\t\t\t} else {\n\t\t\t\t\t\tshowArea()\n\t\t\t\t\t}\n\n\t\t\t\t\t// all other areas that have not been clicked but are open\n\t\t\t\t\t// should be slid up\n\t\t\t\t} else {\n\t\t\t\t\tconst closest = $(event.target).closest(areaSelector)\n\t\t\t\t\tif (area.is(':visible') && closest[0] !== area[0]) {\n\t\t\t\t\t\thideArea()\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\n\t})\n}\n\nexport default Apps\n","/**\n * @copyright Copyright (c) 2016 Joas Schilling <coding@schilljs.com>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport $ from 'jquery'\nimport { generateOcsUrl } from '@nextcloud/router'\n\nimport OC from '../OC/index'\n\n/**\n * @param {string} method 'post' or 'delete'\n * @param {string} endpoint endpoint\n * @param {object} [options] destructuring object\n * @param {object} [options.data] option data\n * @param {Function} [options.success] success callback\n * @param {Function} [options.error] error callback\n */\nfunction call(method, endpoint, options) {\n\tif ((method === 'post' || method === 'delete') && OC.PasswordConfirmation.requiresPasswordConfirmation()) {\n\t\tOC.PasswordConfirmation.requirePasswordConfirmation(_.bind(call, this, method, endpoint, options))\n\t\treturn\n\t}\n\n\toptions = options || {}\n\t$.ajax({\n\t\ttype: method.toUpperCase(),\n\t\turl: generateOcsUrl('apps/provisioning_api/api/v1/config/apps') + endpoint,\n\t\tdata: options.data || {},\n\t\tsuccess: options.success,\n\t\terror: options.error,\n\t})\n}\n\n/**\n * @param {object} [options] destructuring object\n * @param {Function} [options.success] success callback\n * @since 11.0.0\n */\nexport function getApps(options) {\n\tcall('get', '', options)\n}\n\n/**\n * @param {string} app app id\n * @param {object} [options] destructuring object\n * @param {Function} [options.success] success callback\n * @param {Function} [options.error] error callback\n * @since 11.0.0\n */\nexport function getKeys(app, options) {\n\tcall('get', '/' + app, options)\n}\n\n/**\n * @param {string} app app id\n * @param {string} key key\n * @param {string | Function} defaultValue default value\n * @param {object} [options] destructuring object\n * @param {Function} [options.success] success callback\n * @param {Function} [options.error] error callback\n * @since 11.0.0\n */\nexport function getValue(app, key, defaultValue, options) {\n\toptions = options || {}\n\toptions.data = {\n\t\tdefaultValue,\n\t}\n\n\tcall('get', '/' + app + '/' + key, options)\n}\n\n/**\n * @param {string} app app id\n * @param {string} key key\n * @param {string} value value\n * @param {object} [options] destructuring object\n * @param {Function} [options.success] success callback\n * @param {Function} [options.error] error callback\n * @since 11.0.0\n */\nexport function setValue(app, key, value, options) {\n\toptions = options || {}\n\toptions.data = {\n\t\tvalue,\n\t}\n\n\tcall('post', '/' + app + '/' + key, options)\n}\n\n/**\n * @param {string} app app id\n * @param {string} key key\n * @param {object} [options] destructuring object\n * @param {Function} [options.success] success callback\n * @param {Function} [options.error] error callback\n * @since 11.0.0\n */\nexport function deleteKey(app, key, options) {\n\tcall('delete', '/' + app + '/' + key, options)\n}\n","/**\n * @copyright Copyright (c) 2016 Joas Schilling <coding@schilljs.com>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Joas Schilling <coding@schilljs.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Jörn Friedrich Dreyer <jfd@butonic.de>\n * @author Robin Appelman <robin@icewind.nl>\n * @author Vincent Petry <vincent@nextcloud.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n/* eslint-disable */\n import { getValue, setValue, getApps, getKeys, deleteKey } from '../OCP/appconfig'\n\nexport const appConfig = window.oc_appconfig || {}\n\n/**\n * @namespace\n * @deprecated 16.0.0 Use OCP.AppConfig instead\n */\nexport const AppConfig = {\n\t/**\n\t * @deprecated Use OCP.AppConfig.getValue() instead\n\t */\n\tgetValue: function(app, key, defaultValue, callback) {\n\t\tgetValue(app, key, defaultValue, {\n\t\t\tsuccess: callback\n\t\t})\n\t},\n\n\t/**\n\t * @deprecated Use OCP.AppConfig.setValue() instead\n\t */\n\tsetValue: function(app, key, value) {\n\t\tsetValue(app, key, value)\n\t},\n\n\t/**\n\t * @deprecated Use OCP.AppConfig.getApps() instead\n\t */\n\tgetApps: function(callback) {\n\t\tgetApps({\n\t\t\tsuccess: callback\n\t\t})\n\t},\n\n\t/**\n\t * @deprecated Use OCP.AppConfig.getKeys() instead\n\t */\n\tgetKeys: function(app, callback) {\n\t\tgetKeys(app, {\n\t\t\tsuccess: callback\n\t\t})\n\t},\n\n\t/**\n\t * @deprecated Use OCP.AppConfig.deleteKey() instead\n\t */\n\tdeleteKey: function(app, key) {\n\t\tdeleteKey(app, key)\n\t}\n\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nconst appswebroots = (window._oc_appswebroots !== undefined) ? window._oc_appswebroots : false\n\nexport default appswebroots\n","/**\n * Copyright (c) 2015\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n/* eslint-disable */\nimport _ from 'underscore'\nimport { dav } from 'davclient.js'\n\nconst methodMap = {\n\tcreate: 'POST',\n\tupdate: 'PROPPATCH',\n\tpatch: 'PROPPATCH',\n\tdelete: 'DELETE',\n\tread: 'PROPFIND'\n}\n\n// Throw an error when a URL is needed, and none is supplied.\nfunction urlError() {\n\tthrow new Error('A \"url\" property or function must be specified')\n}\n\n/**\n * Convert a single propfind result to JSON\n *\n * @param {Object} result\n * @param {Object} davProperties properties mapping\n */\nfunction parsePropFindResult(result, davProperties) {\n\tif (_.isArray(result)) {\n\t\treturn _.map(result, function(subResult) {\n\t\t\treturn parsePropFindResult(subResult, davProperties)\n\t\t})\n\t}\n\tvar props = {\n\t\thref: result.href\n\t}\n\n\t_.each(result.propStat, function(propStat) {\n\t\tif (propStat.status !== 'HTTP/1.1 200 OK') {\n\t\t\treturn\n\t\t}\n\n\t\tfor (var key in propStat.properties) {\n\t\t\tvar propKey = key\n\t\t\tif (key in davProperties) {\n\t\t\t\tpropKey = davProperties[key]\n\t\t\t}\n\t\t\tprops[propKey] = propStat.properties[key]\n\t\t}\n\t})\n\n\tif (!props.id) {\n\t\t// parse id from href\n\t\tprops.id = parseIdFromLocation(props.href)\n\t}\n\n\treturn props\n}\n\n/**\n * Parse ID from location\n *\n * @param {string} url url\n * @returns {string} id\n */\nfunction parseIdFromLocation(url) {\n\tvar queryPos = url.indexOf('?')\n\tif (queryPos > 0) {\n\t\turl = url.substr(0, queryPos)\n\t}\n\n\tvar parts = url.split('/')\n\tvar result\n\tdo {\n\t\tresult = parts[parts.length - 1]\n\t\tparts.pop()\n\t\t// note: first result can be empty when there is a trailing slash,\n\t\t// so we take the part before that\n\t} while (!result && parts.length > 0)\n\n\treturn result\n}\n\nfunction isSuccessStatus(status) {\n\treturn status >= 200 && status <= 299\n}\n\nfunction convertModelAttributesToDavProperties(attrs, davProperties) {\n\tvar props = {}\n\tvar key\n\tfor (key in attrs) {\n\t\tvar changedProp = davProperties[key]\n\t\tvar value = attrs[key]\n\t\tif (!changedProp) {\n\t\t\tconsole.warn('No matching DAV property for property \"' + key)\n\t\t\tchangedProp = key\n\t\t}\n\t\tif (_.isBoolean(value) || _.isNumber(value)) {\n\t\t\t// convert to string\n\t\t\tvalue = '' + value\n\t\t}\n\t\tprops[changedProp] = value\n\t}\n\treturn props\n}\n\nfunction callPropFind(client, options, model, headers) {\n\treturn client.propFind(\n\t\toptions.url,\n\t\t_.values(options.davProperties) || [],\n\t\toptions.depth,\n\t\theaders\n\t).then(function(response) {\n\t\tif (isSuccessStatus(response.status)) {\n\t\t\tif (_.isFunction(options.success)) {\n\t\t\t\tvar propsMapping = _.invert(options.davProperties)\n\t\t\t\tvar results = parsePropFindResult(response.body, propsMapping)\n\t\t\t\tif (options.depth > 0) {\n\t\t\t\t\t// discard root entry\n\t\t\t\t\tresults.shift()\n\t\t\t\t}\n\n\t\t\t\toptions.success(results)\n\n\t\t\t}\n\t\t} else if (_.isFunction(options.error)) {\n\t\t\toptions.error(response)\n\t\t}\n\t})\n}\n\nfunction callPropPatch(client, options, model, headers) {\n\treturn client.propPatch(\n\t\toptions.url,\n\t\tconvertModelAttributesToDavProperties(model.changed, options.davProperties),\n\t\theaders\n\t).then(function(result) {\n\t\tif (isSuccessStatus(result.status)) {\n\t\t\tif (_.isFunction(options.success)) {\n\t\t\t\t// pass the object's own values because the server\n\t\t\t\t// does not return the updated model\n\t\t\t\toptions.success(model.toJSON())\n\t\t\t}\n\t\t} else if (_.isFunction(options.error)) {\n\t\t\toptions.error(result)\n\t\t}\n\t})\n\n}\n\nfunction callMkCol(client, options, model, headers) {\n\t// call MKCOL without data, followed by PROPPATCH\n\treturn client.request(\n\t\toptions.type,\n\t\toptions.url,\n\t\theaders,\n\t\tnull\n\t).then(function(result) {\n\t\tif (!isSuccessStatus(result.status)) {\n\t\t\tif (_.isFunction(options.error)) {\n\t\t\t\toptions.error(result)\n\t\t\t}\n\t\t\treturn\n\t\t}\n\n\t\tcallPropPatch(client, options, model, headers)\n\t})\n}\n\nfunction callMethod(client, options, model, headers) {\n\theaders['Content-Type'] = 'application/json'\n\treturn client.request(\n\t\toptions.type,\n\t\toptions.url,\n\t\theaders,\n\t\toptions.data\n\t).then(function(result) {\n\t\tif (!isSuccessStatus(result.status)) {\n\t\t\tif (_.isFunction(options.error)) {\n\t\t\t\toptions.error(result)\n\t\t\t}\n\t\t\treturn\n\t\t}\n\n\t\tif (_.isFunction(options.success)) {\n\t\t\tif (options.type === 'PUT' || options.type === 'POST' || options.type === 'MKCOL') {\n\t\t\t\t// pass the object's own values because the server\n\t\t\t\t// does not return anything\n\t\t\t\tvar responseJson = result.body || model.toJSON()\n\t\t\t\tvar locationHeader = result.xhr.getResponseHeader('Content-Location')\n\t\t\t\tif (options.type === 'POST' && locationHeader) {\n\t\t\t\t\tresponseJson.id = parseIdFromLocation(locationHeader)\n\t\t\t\t}\n\t\t\t\toptions.success(responseJson)\n\t\t\t\treturn\n\t\t\t}\n\t\t\t// if multi-status, parse\n\t\t\tif (result.status === 207) {\n\t\t\t\tvar propsMapping = _.invert(options.davProperties)\n\t\t\t\toptions.success(parsePropFindResult(result.body, propsMapping))\n\t\t\t} else {\n\t\t\t\toptions.success(result.body)\n\t\t\t}\n\t\t}\n\t})\n}\n\nexport const davCall = (options, model) => {\n\tvar client = new dav.Client({\n\t\tbaseUrl: options.url,\n\t\txmlNamespaces: _.extend({\n\t\t\t'DAV:': 'd',\n\t\t\t'http://owncloud.org/ns': 'oc'\n\t\t}, options.xmlNamespaces || {})\n\t})\n\tclient.resolveUrl = function() {\n\t\treturn options.url\n\t}\n\tvar headers = _.extend({\n\t\t'X-Requested-With': 'XMLHttpRequest',\n\t\t'requesttoken': OC.requestToken\n\t}, options.headers)\n\tif (options.type === 'PROPFIND') {\n\t\treturn callPropFind(client, options, model, headers)\n\t} else if (options.type === 'PROPPATCH') {\n\t\treturn callPropPatch(client, options, model, headers)\n\t} else if (options.type === 'MKCOL') {\n\t\treturn callMkCol(client, options, model, headers)\n\t} else {\n\t\treturn callMethod(client, options, model, headers)\n\t}\n}\n\n/**\n * DAV transport\n */\nexport const davSync = Backbone => (method, model, options) => {\n\tvar params = { type: methodMap[method] || method }\n\tvar isCollection = (model instanceof Backbone.Collection)\n\n\tif (method === 'update') {\n\t\t// if a model has an inner collection, it must define an\n\t\t// attribute \"hasInnerCollection\" that evaluates to true\n\t\tif (model.hasInnerCollection) {\n\t\t\t// if the model itself is a Webdav collection, use MKCOL\n\t\t\tparams.type = 'MKCOL'\n\t\t} else if (model.usePUT || (model.collection && model.collection.usePUT)) {\n\t\t\t// use PUT instead of PROPPATCH\n\t\t\tparams.type = 'PUT'\n\t\t}\n\t}\n\n\t// Ensure that we have a URL.\n\tif (!options.url) {\n\t\tparams.url = _.result(model, 'url') || urlError()\n\t}\n\n\t// Ensure that we have the appropriate request data.\n\tif (options.data == null && model && (method === 'create' || method === 'update' || method === 'patch')) {\n\t\tparams.data = JSON.stringify(options.attrs || model.toJSON(options))\n\t}\n\n\t// Don't process data on a non-GET request.\n\tif (params.type !== 'PROPFIND') {\n\t\tparams.processData = false\n\t}\n\n\tif (params.type === 'PROPFIND' || params.type === 'PROPPATCH') {\n\t\tvar davProperties = model.davProperties\n\t\tif (!davProperties && model.model) {\n\t\t\t// use dav properties from model in case of collection\n\t\t\tdavProperties = model.model.prototype.davProperties\n\t\t}\n\t\tif (davProperties) {\n\t\t\tif (_.isFunction(davProperties)) {\n\t\t\t\tparams.davProperties = davProperties.call(model)\n\t\t\t} else {\n\t\t\t\tparams.davProperties = davProperties\n\t\t\t}\n\t\t}\n\n\t\tparams.davProperties = _.extend(params.davProperties || {}, options.davProperties)\n\n\t\tif (_.isUndefined(options.depth)) {\n\t\t\tif (isCollection) {\n\t\t\t\toptions.depth = 1\n\t\t\t} else {\n\t\t\t\toptions.depth = 0\n\t\t\t}\n\t\t}\n\t}\n\n\t// Pass along `textStatus` and `errorThrown` from jQuery.\n\tvar error = options.error\n\toptions.error = function(xhr, textStatus, errorThrown) {\n\t\toptions.textStatus = textStatus\n\t\toptions.errorThrown = errorThrown\n\t\tif (error) {\n\t\t\terror.call(options.context, xhr, textStatus, errorThrown)\n\t\t}\n\t}\n\n\t// Make the request, allowing the user to override any Ajax options.\n\tvar xhr = options.xhr = Backbone.davCall(_.extend(params, options), model)\n\tmodel.trigger('request', model, xhr, options)\n\treturn xhr\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport VendorBackbone from 'backbone'\nimport { davCall, davSync } from './backbone-webdav'\n\nconst Backbone = VendorBackbone.noConflict()\n\n// Patch Backbone for DAV\nObject.assign(Backbone, {\n\tdavCall,\n\tdavSync: davSync(Backbone),\n})\n\nexport default Backbone\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nconst config = window._oc_config || {}\n\nexport default config\n","/**\n * @copyright 2017 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n/* eslint-disable */\nimport _ from 'underscore'\nimport $ from 'jquery'\nimport { Collection, Model, View } from 'backbone'\n\nimport OC from './index'\n\n/**\n * @class Contact\n */\nconst Contact = Model.extend({\n\tdefaults: {\n\t\tfullName: '',\n\t\tlastMessage: '',\n\t\tactions: [],\n\t\thasOneAction: false,\n\t\thasTwoActions: false,\n\t\thasManyActions: false\n\t},\n\n\t/**\n\t * @returns {undefined}\n\t */\n\tinitialize: function() {\n\t\t// Add needed property for easier template rendering\n\t\tif (this.get('actions').length === 0) {\n\t\t\tthis.set('hasOneAction', true)\n\t\t} else if (this.get('actions').length === 1) {\n\t\t\tthis.set('hasTwoActions', true)\n\t\t\tthis.set('secondAction', this.get('actions')[0])\n\t\t} else {\n\t\t\tthis.set('hasManyActions', true)\n\t\t}\n\n\t\tconst fullName = this.get('fullName')\n\t\tif (this.get('avatar') && fullName) {\n\t\t\tthis.set('avatarLabel', t('core', 'Avatar of {fullName}', { fullName }))\n\t\t}\n\t}\n})\n\n/**\n * @class ContactCollection\n * @private\n */\nconst ContactCollection = Collection.extend({\n\tmodel: Contact\n})\n\n/**\n * @class ContactsListView\n * @private\n */\nconst ContactsListView = View.extend({\n\n\t/** @type {ContactCollection} */\n\t_collection: undefined,\n\n\t/** @type {array} */\n\t_subViews: [],\n\n\t/**\n\t * @param {object} options\n\t * @returns {undefined}\n\t */\n\tinitialize: function(options) {\n\t\tthis._collection = options.collection\n\t},\n\n\t/**\n\t * @returns {self}\n\t */\n\trender: function() {\n\t\tvar self = this\n\t\tself.$el.html('')\n\t\tself._subViews = []\n\n\t\tself._collection.forEach(function(contact) {\n\t\t\tvar item = new ContactsListItemView({\n\t\t\t\tmodel: contact\n\t\t\t})\n\t\t\titem.render()\n\t\t\tself.$el.append(item.$el)\n\t\t\titem.on('toggle:actionmenu', self._onChildActionMenuToggle, self)\n\t\t\tself._subViews.push(item)\n\t\t})\n\n\t\treturn self\n\t},\n\n\t/**\n\t * Event callback to propagate opening (another) entry's action menu\n\t *\n\t * @param {type} $src\n\t * @returns {undefined}\n\t */\n\t_onChildActionMenuToggle: function($src) {\n\t\tthis._subViews.forEach(function(view) {\n\t\t\tview.trigger('parent:toggle:actionmenu', $src)\n\t\t})\n\t}\n})\n\n/**\n * @class ContactsListItemView\n * @private\n */\nconst ContactsListItemView = View.extend({\n\n\t/** @type {string} */\n\tclassName: 'contact',\n\n\t/** @type {undefined|function} */\n\t_template: undefined,\n\n\t/** @type {Contact} */\n\t_model: undefined,\n\n\t/** @type {boolean} */\n\t_actionMenuShown: false,\n\n\tevents: {\n\t\t'click .icon-more': '_onToggleActionsMenu'\n\t},\n\n\tcontactTemplate: require('./contactsmenu/contact.handlebars'),\n\n\t/**\n\t * @param {object} data\n\t * @returns {undefined}\n\t */\n\ttemplate: function(data) {\n\t\treturn this.contactTemplate(data)\n\t},\n\n\t/**\n\t * @param {object} options\n\t * @returns {undefined}\n\t */\n\tinitialize: function(options) {\n\t\tthis._model = options.model\n\t\tthis.on('parent:toggle:actionmenu', this._onOtherActionMenuOpened, this)\n\t},\n\n\t/**\n\t * @returns {self}\n\t */\n\trender: function() {\n\t\tthis.$el.html(this.template({\n\t\t\tcontact: this._model.toJSON()\n\t\t}))\n\t\tthis.delegateEvents()\n\n\t\t// Show placeholder if no avatar is available (avatar is rendered as img, not div)\n\t\tthis.$('div.avatar').imageplaceholder(this._model.get('fullName'))\n\n\t\t// Show tooltip for top action\n\t\tthis.$('.top-action').tooltip({ placement: 'left' })\n\t\t// Show tooltip for second action\n\t\tthis.$('.second-action').tooltip({ placement: 'left' })\n\n\t\treturn this\n\t},\n\n\t/**\n\t * Toggle the visibility of the action popover menu\n\t *\n\t * @private\n\t * @returns {undefined}\n\t */\n\t_onToggleActionsMenu: function() {\n\t\tthis._actionMenuShown = !this._actionMenuShown\n\t\tif (this._actionMenuShown) {\n\t\t\tthis.$('.menu').show()\n\t\t} else {\n\t\t\tthis.$('.menu').hide()\n\t\t}\n\t\tthis.trigger('toggle:actionmenu', this.$el)\n\t},\n\n\t/**\n\t * @private\n\t * @argument {jQuery} $src\n\t * @returns {undefined}\n\t */\n\t_onOtherActionMenuOpened: function($src) {\n\t\tif (this.$el.is($src)) {\n\t\t\t// Ignore\n\t\t\treturn\n\t\t}\n\t\tthis._actionMenuShown = false\n\t\tthis.$('.menu').hide()\n\t}\n})\n\n/**\n * @class ContactsMenuView\n * @private\n */\nconst ContactsMenuView = View.extend({\n\n\t/** @type {undefined|function} */\n\t_loadingTemplate: undefined,\n\n\t/** @type {undefined|function} */\n\t_errorTemplate: undefined,\n\n\t/** @type {undefined|function} */\n\t_contentTemplate: undefined,\n\n\t/** @type {undefined|function} */\n\t_contactsTemplate: undefined,\n\n\t/** @type {undefined|ContactCollection} */\n\t_contacts: undefined,\n\n\t/** @type {string} */\n\t_searchTerm: '',\n\n\tevents: {\n\t\t'input #contactsmenu-search': '_onSearch'\n\t},\n\n\ttemplates: {\n\t\tloading: require('./contactsmenu/loading.handlebars'),\n\t\terror: require('./contactsmenu/error.handlebars'),\n\t\tmenu: require('./contactsmenu/menu.handlebars'),\n\t\tlist: require('./contactsmenu/list.handlebars')\n\t},\n\n\t/**\n\t * @returns {undefined}\n\t */\n\t_onSearch: _.debounce(function(e) {\n\t\tvar searchTerm = this.$('#contactsmenu-search').val()\n\t\t// IE11 triggers an 'input' event after the view has been rendered\n\t\t// resulting in an endless loading loop. To prevent this, we remember\n\t\t// the last search term to savely ignore some events\n\t\t// See https://github.com/nextcloud/server/issues/5281\n\t\tif (searchTerm !== this._searchTerm) {\n\t\t\tthis.trigger('search', this.$('#contactsmenu-search').val())\n\t\t\tthis._searchTerm = searchTerm\n\t\t}\n\t}, 700),\n\n\t/**\n\t * @param {object} data\n\t * @returns {string}\n\t */\n\tloadingTemplate: function(data) {\n\t\treturn this.templates.loading(data)\n\t},\n\n\t/**\n\t * @param {object} data\n\t * @returns {string}\n\t */\n\terrorTemplate: function(data) {\n\t\treturn this.templates.error(\n\t\t\t_.extend({\n\t\t\t\tcouldNotLoadText: t('core', 'Could not load your contacts')\n\t\t\t}, data)\n\t\t)\n\t},\n\n\t/**\n\t * @param {object} data\n\t * @returns {string}\n\t */\n\tcontentTemplate: function(data) {\n\t\treturn this.templates.menu(\n\t\t\t_.extend({\n\t\t\t\tsearchContactsText: t('core', 'Search contacts …')\n\t\t\t}, data)\n\t\t)\n\t},\n\n\t/**\n\t * @param {object} data\n\t * @returns {string}\n\t */\n\tcontactsTemplate: function(data) {\n\t\treturn this.templates.list(\n\t\t\t_.extend({\n\t\t\t\tnoContactsFoundText: t('core', 'No contacts found'),\n\t\t\t\tshowAllContactsText: t('core', 'Show all contacts …'),\n\t\t\t\tcontactsAppMgmtText: t('core', 'Install the Contacts app')\n\t\t\t}, data)\n\t\t)\n\t},\n\n\t/**\n\t * @param {object} options\n\t * @returns {undefined}\n\t */\n\tinitialize: function(options) {\n\t\tthis.options = options\n\t},\n\n\t/**\n\t * @param {string} text\n\t * @returns {undefined}\n\t */\n\tshowLoading: function(text) {\n\t\tthis.render()\n\t\tthis._contacts = undefined\n\t\tthis.$('.content').html(this.loadingTemplate({\n\t\t\tloadingText: text\n\t\t}))\n\t},\n\n\t/**\n\t * @returns {undefined}\n\t */\n\tshowError: function() {\n\t\tthis.render()\n\t\tthis._contacts = undefined\n\t\tthis.$('.content').html(this.errorTemplate())\n\t},\n\n\t/**\n\t * @param {object} viewData\n\t * @param {string} searchTerm\n\t * @returns {undefined}\n\t */\n\tshowContacts: function(viewData, searchTerm) {\n\t\tthis._contacts = viewData.contacts\n\t\tthis.render({\n\t\t\tcontacts: viewData.contacts\n\t\t})\n\n\t\tvar list = new ContactsListView({\n\t\t\tcollection: viewData.contacts\n\t\t})\n\t\tlist.render()\n\t\tthis.$('.content').html(this.contactsTemplate({\n\t\t\tcontacts: viewData.contacts,\n\t\t\tsearchTerm: searchTerm,\n\t\t\tcontactsAppEnabled: viewData.contactsAppEnabled,\n\t\t\tcontactsAppURL: OC.generateUrl('/apps/contacts'),\n\t\t\tcanInstallApp: OC.isUserAdmin(),\n\t\t\tcontactsAppMgmtURL: OC.generateUrl('/settings/apps/social/contacts')\n\t\t}))\n\t\tthis.$('#contactsmenu-contacts').html(list.$el)\n\t},\n\n\t/**\n\t * @param {object} data\n\t * @returns {self}\n\t */\n\trender: function(data) {\n\t\tvar searchVal = this.$('#contactsmenu-search').val()\n\t\tthis.$el.html(this.contentTemplate(data))\n\n\t\t// Focus search\n\t\tthis.$('#contactsmenu-search').val(searchVal)\n\t\tthis.$('#contactsmenu-search').focus()\n\t\treturn this\n\t}\n\n})\n\n/**\n * @param {Object} options\n * @param {string} options.el\n * @class ContactsMenu\n * @memberOf OC\n */\nconst ContactsMenu = function(options) {\n\tthis.initialize(options)\n}\n\nContactsMenu.prototype = {\n\t/** @type {string} */\n\t$el: undefined,\n\n\t/** @type {ContactsMenuView} */\n\t_view: undefined,\n\n\t/** @type {Promise} */\n\t_contactsPromise: undefined,\n\n\t/**\n\t * @param {Object} options\n\t * @param {string} options.el - the selector of the element to render the menu in\n\t * @returns {undefined}\n\t */\n\tinitialize: function(options) {\n\t\tthis.$el = $(options.el)\n\n\t\tthis._view = new ContactsMenuView({\n\t\t\tel: this.$el,\n\t\t})\n\n\t\tthis._view.on('search', function(searchTerm) {\n\t\t\tthis.loadContacts(searchTerm)\n\t\t}, this)\n\t},\n\n\t/**\n\t * @private\n\t * @param {string|undefined} searchTerm\n\t * @returns {Promise}\n\t */\n\t_getContacts: function(searchTerm) {\n\t\tvar url = OC.generateUrl('/contactsmenu/contacts')\n\t\treturn Promise.resolve($.ajax(url, {\n\t\t\tmethod: 'POST',\n\t\t\tdata: {\n\t\t\t\tfilter: searchTerm\n\t\t\t}\n\t\t}))\n\t},\n\n\t/**\n\t * @param {string|undefined} searchTerm\n\t * @returns {undefined}\n\t */\n\tloadContacts: function(searchTerm) {\n\t\tvar self = this\n\n\t\tif (!self._contactsPromise) {\n\t\t\tself._contactsPromise = self._getContacts(searchTerm)\n\t\t}\n\n\t\tif (_.isUndefined(searchTerm) || searchTerm === '') {\n\t\t\tself._view.showLoading(t('core', 'Loading your contacts …'))\n\t\t} else {\n\t\t\tself._view.showLoading(t('core', 'Looking for {term} …', {\n\t\t\t\tterm: searchTerm\n\t\t\t}))\n\t\t}\n\t\treturn self._contactsPromise.then(function(data) {\n\t\t\t// Convert contact entries to Backbone collection\n\t\t\tdata.contacts = new ContactCollection(data.contacts)\n\n\t\t\tself._view.showContacts(data, searchTerm)\n\t\t}, function(e) {\n\t\t\tself._view.showError()\n\t\t\tconsole.error('There was an error loading your contacts', e)\n\t\t}).then(function() {\n\t\t\t// Delete promise, so that contacts are fetched again when the\n\t\t\t// menu is opened the next time.\n\t\t\tdelete self._contactsPromise\n\t\t}).catch(console.error.bind(this))\n\t}\n}\n\nexport default ContactsMenu\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Joas Schilling <coding@schilljs.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nconst rawUid = document\n\t.getElementsByTagName('head')[0]\n\t.getAttribute('data-user')\nconst displayName = document\n\t.getElementsByTagName('head')[0]\n\t.getAttribute('data-user-displayname')\n\nexport const currentUser = rawUid !== undefined ? rawUid : false\n\nexport const getCurrentUser = () => {\n\treturn {\n\t\tuid: currentUser,\n\t\tdisplayName,\n\t}\n}\n","/**\n * @copyright 2020 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nexport default class Search {\n\n\t/**\n\t * @deprecated 20.0.0, will be removed in Nextcloud 22\n\t */\n\tconstructor() {\n\t\tconsole.warn('OCA.Search is deprecated. Please use the unified search API instead')\n\t}\n\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport Search from './search'\n\n/**\n * Namespace for apps\n *\n * @namespace OCA\n */\nexport default {\n\t/**\n\t * @deprecated 20.0.0, will be removed in Nextcloud 22\n\t */\n\tSearch,\n}\n","/**\n * @copyright 2022 Christopher Ng <chrng8@gmail.com>\n *\n * @author Christopher Ng <chrng8@gmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n/**\n * Return whether the DOM event is an accessible mouse or keyboard element activation\n *\n * @param {Event} event DOM event\n *\n * @return {boolean}\n */\nexport const isA11yActivation = (event) => {\n\tif (event.type === 'click') {\n\t\treturn true\n\t}\n\tif (event.type === 'keydown' && event.key === 'Enter') {\n\t\treturn true\n\t}\n\treturn false\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n * @copyright Copyright (c) 2019 Gary Kim <gary@garykim.dev>\n *\n * @author Bartek Przybylski <bart.p.pl@gmail.com>\n * @author Christopher Schäpers <kondou@ts.unde.re>\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Daniel Calviño Sánchez <danxuliu@gmail.com>\n * @author Daniel Kesselberg <mail@danielkesselberg.de>\n * @author Florian Schunk <florian.schunk@rwth-aachen.de>\n * @author Gary Kim <gary@garykim.dev>\n * @author Hendrik Leppelsack <hendrik@leppelsack.de>\n * @author Jan-Christoph Borchardt <hey@jancborchardt.net>\n * @author Joas Schilling <coding@schilljs.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Jörn Friedrich Dreyer <jfd@butonic.de>\n * @author Julius Härtl <jus@bitgrid.net>\n * @author Loïc Hermann <loic.hermann@sciam.fr>\n * @author Morris Jobke <hey@morrisjobke.de>\n * @author Olivier Paroz <github@oparoz.com>\n * @author Robin Appelman <robin@icewind.nl>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n * @author Sujith Haridasan <Sujith_Haridasan@mentor.com>\n * @author Thomas Citharel <nextcloud@tcit.fr>\n * @author Thomas Müller <thomas.mueller@tmit.eu>\n * @author Thomas Tanghus <thomas@tanghus.net>\n * @author Vincent Petry <vincent@nextcloud.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n/* eslint-disable */\nimport _ from 'underscore'\nimport $ from 'jquery'\n\nimport OC from './index'\nimport OCA from '../OCA/index'\nimport { isA11yActivation } from '../Util/a11y'\n\n/**\n * this class to ease the usage of jquery dialogs\n */\nconst Dialogs = {\n\t// dialog button types\n\tYES_NO_BUTTONS: 70,\n\tOK_BUTTONS: 71,\n\n\tFILEPICKER_TYPE_CHOOSE: 1,\n\tFILEPICKER_TYPE_MOVE: 2,\n\tFILEPICKER_TYPE_COPY: 3,\n\tFILEPICKER_TYPE_COPY_MOVE: 4,\n\tFILEPICKER_TYPE_CUSTOM: 5,\n\n\t// used to name each dialog\n\tdialogsCounter: 0,\n\n\t/**\n\t * displays alert dialog\n\t * @param {string} text content of dialog\n\t * @param {string} title dialog title\n\t * @param {function} callback which will be triggered when user presses OK\n\t * @param {boolean} [modal] make the dialog modal\n\t */\n\talert: function(text, title, callback, modal) {\n\t\tthis.message(\n\t\t\ttext,\n\t\t\ttitle,\n\t\t\t'alert',\n\t\t\tDialogs.OK_BUTTON,\n\t\t\tcallback,\n\t\t\tmodal\n\t\t)\n\t},\n\t/**\n\t * displays info dialog\n\t * @param {string} text content of dialog\n\t * @param {string} title dialog title\n\t * @param {function} callback which will be triggered when user presses OK\n\t * @param {boolean} [modal] make the dialog modal\n\t */\n\tinfo: function(text, title, callback, modal) {\n\t\tthis.message(text, title, 'info', Dialogs.OK_BUTTON, callback, modal)\n\t},\n\n\t/**\n\t * displays confirmation dialog\n\t * @param {string} text content of dialog\n\t * @param {string} title dialog title\n\t * @param {function} callback which will be triggered when user presses OK (true or false would be passed to callback respectively)\n\t * @param {boolean} [modal] make the dialog modal\n\t * @returns {Promise}\n\t */\n\tconfirm: function(text, title, callback, modal) {\n\t\treturn this.message(\n\t\t\ttext,\n\t\t\ttitle,\n\t\t\t'notice',\n\t\t\tDialogs.YES_NO_BUTTONS,\n\t\t\tcallback,\n\t\t\tmodal\n\t\t)\n\t},\n\t/**\n\t * displays confirmation dialog\n\t * @param {string} text content of dialog\n\t * @param {string} title dialog title\n\t * @param {(number|{type: number, confirm: string, cancel: string, confirmClasses: string})} buttons text content of buttons\n\t * @param {function} callback which will be triggered when user presses OK (true or false would be passed to callback respectively)\n\t * @param {boolean} [modal] make the dialog modal\n\t * @returns {Promise}\n\t */\n\tconfirmDestructive: function(text, title, buttons, callback, modal) {\n\t\treturn this.message(\n\t\t\ttext,\n\t\t\ttitle,\n\t\t\t'none',\n\t\t\tbuttons,\n\t\t\tcallback,\n\t\t\tmodal === undefined ? true : modal\n\t\t)\n\t},\n\t/**\n\t * displays confirmation dialog\n\t * @param {string} text content of dialog\n\t * @param {string} title dialog title\n\t * @param {function} callback which will be triggered when user presses OK (true or false would be passed to callback respectively)\n\t * @param {boolean} [modal] make the dialog modal\n\t * @returns {Promise}\n\t */\n\tconfirmHtml: function(text, title, callback, modal) {\n\t\treturn this.message(\n\t\t\ttext,\n\t\t\ttitle,\n\t\t\t'notice',\n\t\t\tDialogs.YES_NO_BUTTONS,\n\t\t\tcallback,\n\t\t\tmodal,\n\t\t\ttrue\n\t\t)\n\t},\n\t/**\n\t * displays prompt dialog\n\t * @param {string} text content of dialog\n\t * @param {string} title dialog title\n\t * @param {function} callback which will be triggered when user presses OK (true or false would be passed to callback respectively)\n\t * @param {boolean} [modal] make the dialog modal\n\t * @param {string} name name of the input field\n\t * @param {boolean} password whether the input should be a password input\n\t * @returns {Promise}\n\t */\n\tprompt: function(text, title, callback, modal, name, password) {\n\t\treturn $.when(this._getMessageTemplate()).then(function($tmpl) {\n\t\t\tvar dialogName = 'oc-dialog-' + Dialogs.dialogsCounter + '-content'\n\t\t\tvar dialogId = '#' + dialogName\n\t\t\tvar $dlg = $tmpl.octemplate({\n\t\t\t\tdialog_name: dialogName,\n\t\t\t\ttitle: title,\n\t\t\t\tmessage: text,\n\t\t\t\ttype: 'notice'\n\t\t\t})\n\t\t\tvar input = $('<input/>')\n\t\t\tinput.attr('type', password ? 'password' : 'text').attr('id', dialogName + '-input').attr('placeholder', name)\n\t\t\tvar label = $('<label/>').attr('for', dialogName + '-input').text(name + ': ')\n\t\t\t$dlg.append(label)\n\t\t\t$dlg.append(input)\n\t\t\tif (modal === undefined) {\n\t\t\t\tmodal = false\n\t\t\t}\n\t\t\t$('body').append($dlg)\n\n\t\t\t// wrap callback in _.once():\n\t\t\t// only call callback once and not twice (button handler and close\n\t\t\t// event) but call it for the close event, if ESC or the x is hit\n\t\t\tif (callback !== undefined) {\n\t\t\t\tcallback = _.once(callback)\n\t\t\t}\n\n\t\t\tvar buttonlist = [{\n\t\t\t\ttext: t('core', 'No'),\n\t\t\t\tclick: function() {\n\t\t\t\t\tif (callback !== undefined) {\n\t\t\t\t\t\t// eslint-disable-next-line standard/no-callback-literal\n\t\t\t\t\t\tcallback(false, input.val())\n\t\t\t\t\t}\n\t\t\t\t\t$(dialogId).ocdialog('close')\n\t\t\t\t}\n\t\t\t}, {\n\t\t\t\ttext: t('core', 'Yes'),\n\t\t\t\tclick: function() {\n\t\t\t\t\tif (callback !== undefined) {\n\t\t\t\t\t\t// eslint-disable-next-line standard/no-callback-literal\n\t\t\t\t\t\tcallback(true, input.val())\n\t\t\t\t\t}\n\t\t\t\t\t$(dialogId).ocdialog('close')\n\t\t\t\t},\n\t\t\t\tdefaultButton: true\n\t\t\t}]\n\n\t\t\t$(dialogId).ocdialog({\n\t\t\t\tcloseOnEscape: true,\n\t\t\t\tmodal: modal,\n\t\t\t\tbuttons: buttonlist,\n\t\t\t\tclose: function() {\n\t\t\t\t\t// callback is already fired if Yes/No is clicked directly\n\t\t\t\t\tif (callback !== undefined) {\n\t\t\t\t\t\t// eslint-disable-next-line standard/no-callback-literal\n\t\t\t\t\t\tcallback(false, input.val())\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t})\n\t\t\tinput.focus()\n\t\t\tDialogs.dialogsCounter++\n\t\t})\n\t},\n\t/**\n\t * show a file picker to pick a file from\n\t *\n\t * In order to pick several types of mime types they need to be passed as an\n\t * array of strings.\n\t *\n\t * When no mime type filter is given only files can be selected. In order to\n\t * be able to select both files and folders \"['*', 'httpd/unix-directory']\"\n\t * should be used instead.\n\t *\n\t * @param {string} title dialog title\n\t * @param {function} callback which will be triggered when user presses Choose\n\t * @param {boolean} [multiselect] whether it should be possible to select multiple files\n\t * @param {string[]} [mimetypeFilter] mimetype to filter by - directories will always be included\n\t * @param {boolean} [modal] make the dialog modal\n\t * @param {string} [type] Type of file picker : Choose, copy, move, copy and move\n\t * @param {string} [path] path to the folder that the the file can be picket from\n\t * @param {Object} [options] additonal options that need to be set\n\t * @param {Function} [options.filter] filter function for advanced filtering\n\t */\n\tfilepicker: function(title, callback, multiselect, mimetypeFilter, modal, type, path, options) {\n\t\tvar self = this\n\n\t\tthis.filepicker.sortField = 'name'\n\t\tthis.filepicker.sortOrder = 'asc'\n\t\t// avoid opening the picker twice\n\t\tif (this.filepicker.loading) {\n\t\t\treturn\n\t\t}\n\n\t\tif (type === undefined) {\n\t\t\ttype = this.FILEPICKER_TYPE_CHOOSE\n\t\t}\n\n\t\tvar emptyText = t('core', 'No files in here')\n\t\tvar newText = t('files', 'New folder')\n\t\tif (type === this.FILEPICKER_TYPE_COPY || type === this.FILEPICKER_TYPE_MOVE || type === this.FILEPICKER_TYPE_COPY_MOVE) {\n\t\t\temptyText = t('core', 'No more subfolders in here')\n\t\t}\n\n\t\tthis.filepicker.loading = true\n\t\tthis.filepicker.filesClient = (OCA.Sharing && OCA.Sharing.PublicApp && OCA.Sharing.PublicApp.fileList) ? OCA.Sharing.PublicApp.fileList.filesClient : OC.Files.getClient()\n\n\t\tthis.filelist = null\n\t\tpath = path || ''\n\t\toptions = Object.assign({\n\t\t\tallowDirectoryChooser: false\n\t\t}, options)\n\n\t\t$.when(this._getFilePickerTemplate()).then(function($tmpl) {\n\t\t\tself.filepicker.loading = false\n\t\t\tvar dialogName = 'oc-dialog-filepicker-content'\n\t\t\tif (self.$filePicker) {\n\t\t\t\tself.$filePicker.ocdialog('close')\n\t\t\t}\n\n\t\t\tif (mimetypeFilter === undefined || mimetypeFilter === null) {\n\t\t\t\tmimetypeFilter = []\n\t\t\t}\n\t\t\tif (typeof (mimetypeFilter) === 'string') {\n\t\t\t\tmimetypeFilter = [mimetypeFilter]\n\t\t\t}\n\n\t\t\tself.$filePicker = $tmpl.octemplate({\n\t\t\t\tdialog_name: dialogName,\n\t\t\t\ttitle: title,\n\t\t\t\temptytext: emptyText,\n\t\t\t\tnewtext: newText,\n\t\t\t\tnameCol: t('core', 'Name'),\n\t\t\t\tsizeCol: t('core', 'Size'),\n\t\t\t\tmodifiedCol: t('core', 'Modified')\n\t\t\t}).data('path', path).data('multiselect', multiselect).data('mimetype', mimetypeFilter).data('allowDirectoryChooser', options.allowDirectoryChooser)\n\t\t\tif (typeof(options.filter) === 'function') {\n\t\t\t\tself.$filePicker.data('filter', options.filter)\n\t\t\t}\n\n\t\t\tif (modal === undefined) {\n\t\t\t\tmodal = false\n\t\t\t}\n\t\t\tif (multiselect === undefined) {\n\t\t\t\tmultiselect = false\n\t\t\t}\n\n\t\t\t$(options?.target ?? 'body').prepend(self.$filePicker)\n\n\t\t\tself.$showGridView = $('button#picker-showgridview')\n\t\t\tself.$showGridView.on('click keydown', function(event) {\n\t\t\t\tif (isA11yActivation(event)) {\n\t\t\t\t\tself._onGridviewChange()\n\t\t\t\t}\n\t\t\t})\n\t\t\tself._getGridSettings()\n\n\t\t\tvar newButton = self.$filePicker.find('.actions.creatable .button-add')\n\t\t\tif (type === self.FILEPICKER_TYPE_CHOOSE && !options.allowDirectoryChooser) {\n\t\t\t\tself.$filePicker.find('.actions.creatable').hide()\n\t\t\t}\n\t\t\tnewButton.on('focus', function() {\n\t\t\t\tself.$filePicker.ocdialog('setEnterCallback', function(event) {\n\t\t\t\t\tevent.stopImmediatePropagation()\n\t\t\t\t\tevent.preventDefault()\n\t\t\t\t\tnewButton.click()\n\t\t\t\t})\n\t\t\t})\n\t\t\tnewButton.on('blur', function() {\n\t\t\t\tself.$filePicker.ocdialog('unsetEnterCallback')\n\t\t\t})\n\n\t\t\tOC.registerMenu(newButton, self.$filePicker.find('.menu'), function() {\n\t\t\t\t$input.tooltip('hide')\n\t\t\t\t$input.focus()\n\t\t\t\tself.$filePicker.ocdialog('setEnterCallback', function(event) {\n\t\t\t\t\tevent.stopImmediatePropagation()\n\t\t\t\t\tevent.preventDefault()\n\t\t\t\t\tself.$filePicker.submit()\n\t\t\t\t})\n\t\t\t\tvar newName = $input.val()\n\t\t\t\tvar lastPos = newName.lastIndexOf('.')\n\t\t\t\tif (lastPos === -1) {\n\t\t\t\t\tlastPos = newName.length\n\t\t\t\t}\n\t\t\t\t$input.selectRange(0, lastPos)\n\t\t\t})\n\t\t\tvar $form = self.$filePicker.find('.filenameform')\n\t\t\tvar $input = $form.find('input[type=\\'text\\']')\n\t\t\tvar $submit = $form.find('input[type=\\'submit\\']')\n\t\t\t$input.on('keydown', function(event) {\n\t\t\t\tif (isA11yActivation(event)) {\n\t\t\t\t\tevent.stopImmediatePropagation()\n\t\t\t\t\tevent.preventDefault()\n\t\t\t\t\t$form.submit()\n\t\t\t\t}\n\t\t\t})\n\t\t\t$submit.on('click', function(event) {\n\t\t\t\tevent.stopImmediatePropagation()\n\t\t\t\tevent.preventDefault()\n\t\t\t\t$form.submit()\n\t\t\t})\n\n\t\t\t/**\n\t\t\t * Checks whether the given file name is valid.\n\t\t\t *\n\t\t\t * @param name file name to check\n\t\t\t * @return true if the file name is valid.\n\t\t\t * @throws a string exception with an error message if\n\t\t\t * the file name is not valid\n\t\t\t *\n\t\t\t * NOTE: This function is duplicated in the files app:\n\t\t\t * https://github.com/nextcloud/server/blob/b9bc2417e7a8dc81feb0abe20359bedaf864f790/apps/files/js/files.js#L127-L148\n\t\t\t */\n\t\t\tvar isFileNameValid = function (name) {\n\t\t\t\tvar trimmedName = name.trim();\n\t\t\t\tif (trimmedName === '.' || trimmedName === '..')\n\t\t\t\t{\n\t\t\t\t\tthrow t('files', '\"{name}\" is an invalid file name.', {name: name})\n\t\t\t\t} else if (trimmedName.length === 0) {\n\t\t\t\t\tthrow t('files', 'File name cannot be empty.')\n\t\t\t\t} else if (trimmedName.indexOf('/') !== -1) {\n\t\t\t\t\tthrow t('files', '\"/\" is not allowed inside a file name.')\n\t\t\t\t} else if (!!(trimmedName.match(OC.config.blacklist_files_regex))) {\n\t\t\t\t\tthrow t('files', '\"{name}\" is not an allowed filetype', {name: name})\n\t\t\t\t}\n\n\t\t\t\treturn true\n\t\t\t}\n\n\t\t\tvar checkInput = function() {\n\t\t\t\tvar filename = $input.val()\n\t\t\t\ttry {\n\t\t\t\t\tif (!isFileNameValid(filename)) {\n\t\t\t\t\t\t// isFileNameValid(filename) throws an exception itself\n\t\t\t\t\t} else if (self.filelist.find(function(file) {\n\t\t\t\t\t\treturn file.name === this\n\t\t\t\t\t}, filename)) {\n\t\t\t\t\t\tthrow t('files', '{newName} already exists', { newName: filename }, undefined, {\n\t\t\t\t\t\t\tescape: false\n\t\t\t\t\t\t})\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn true\n\t\t\t\t\t}\n\t\t\t\t} catch (error) {\n\t\t\t\t\t$input.attr('title', error)\n\t\t\t\t\t$input.tooltip({\n\t\t\t\t\t\tplacement: 'right',\n\t\t\t\t\t\ttrigger: 'manual',\n\t\t\t\t\t\t'container': '.newFolderMenu'\n\t\t\t\t\t})\n\t\t\t\t\t$input.tooltip('_fixTitle')\n\t\t\t\t\t$input.tooltip('show')\n\t\t\t\t\t$input.addClass('error')\n\t\t\t\t}\n\t\t\t\treturn false\n\t\t\t}\n\n\t\t\t$form.on('submit', function(event) {\n\t\t\t\tevent.stopPropagation()\n\t\t\t\tevent.preventDefault()\n\n\t\t\t\tif (checkInput()) {\n\t\t\t\t\tvar newname = $input.val()\n\t\t\t\t\tself.filepicker.filesClient.createDirectory(self.$filePicker.data('path') + \"/\" + newname).always(function (status) {\n\t\t\t\t\t\tself._fillFilePicker(self.$filePicker.data('path') + \"/\" + newname, type)\n\t\t\t\t\t})\n\t\t\t\t\tOC.hideMenus()\n\t\t\t\t\tself.$filePicker.ocdialog('unsetEnterCallback')\n\t\t\t\t\tself.$filePicker.click()\n\t\t\t\t\t$input.val(newText)\n\t\t\t\t}\n\t\t\t})\n\t\t\t$input.on('input', function(event) {\n\t\t\t\t$input.tooltip('hide')\n\t\t\t})\n\n\t\t\tself.$filePicker.ready(function() {\n\t\t\t\tself.$fileListHeader = self.$filePicker.find('.filelist thead tr')\n\t\t\t\tself.$filelist = self.$filePicker.find('.filelist tbody')\n\t\t\t\tself.$filelistContainer = self.$filePicker.find('.filelist-container')\n\t\t\t\tself.$dirTree = self.$filePicker.find('.dirtree')\n\t\t\t\tself.$dirTree.on('click keydown', 'div:not(:last-child)', self, function(event) {\n\t\t\t\t\tif (isA11yActivation(event)) {\n\t\t\t\t\t\tself._handleTreeListSelect(event, type)\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\tself.$filelist.on('click keydown', 'tr', function(event) {\n\t\t\t\t\tif (isA11yActivation(event)) {\n\t\t\t\t\t\tself._handlePickerClick(event, $(this), type)\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\tself.$fileListHeader.on('click keydown', 'a', function(event) {\n\t\t\t\t\tif (isA11yActivation(event)) {\n\t\t\t\t\t\tvar dir = self.$filePicker.data('path')\n\t\t\t\t\t\tself.filepicker.sortField = $(event.currentTarget).data('sort')\n\t\t\t\t\t\tself.filepicker.sortOrder = self.filepicker.sortOrder === 'asc' ? 'desc' : 'asc'\n\t\t\t\t\t\tself._fillFilePicker(dir, type)\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\tself._fillFilePicker(path, type)\n\t\t\t})\n\n\t\t\t// build buttons\n\t\t\tvar functionToCall = function(returnType) {\n\t\t\t\tif (callback !== undefined) {\n\t\t\t\t\tvar datapath\n\t\t\t\t\tif (multiselect === true) {\n\t\t\t\t\t\tdatapath = []\n\t\t\t\t\t\tself.$filelist.find('tr.filepicker_element_selected').each(function(index, element) {\n\t\t\t\t\t\t\tdatapath.push(self.$filePicker.data('path') + '/' + $(element).data('entryname'))\n\t\t\t\t\t\t})\n\t\t\t\t\t} else {\n\t\t\t\t\t\tdatapath = self.$filePicker.data('path')\n\t\t\t\t\t\tvar selectedName = self.$filelist.find('tr.filepicker_element_selected').data('entryname')\n\t\t\t\t\t\tif (selectedName) {\n\t\t\t\t\t\t\tdatapath += '/' + selectedName\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tcallback(datapath, returnType)\n\t\t\t\t\tself.$filePicker.ocdialog('close')\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tvar chooseCallback = function() {\n\t\t\t\tfunctionToCall(Dialogs.FILEPICKER_TYPE_CHOOSE)\n\t\t\t}\n\n\t\t\tvar copyCallback = function() {\n\t\t\t\tfunctionToCall(Dialogs.FILEPICKER_TYPE_COPY)\n\t\t\t}\n\n\t\t\tvar moveCallback = function() {\n\t\t\t\tfunctionToCall(Dialogs.FILEPICKER_TYPE_MOVE)\n\t\t\t}\n\n\t\t\tvar buttonlist = []\n\t\t\tif (type === Dialogs.FILEPICKER_TYPE_CHOOSE) {\n\t\t\t\tbuttonlist.push({\n\t\t\t\t\ttext: t('core', 'Choose'),\n\t\t\t\t\tclick: chooseCallback,\n\t\t\t\t\tdefaultButton: true\n\t\t\t\t})\n\t\t\t} else if (type === Dialogs.FILEPICKER_TYPE_CUSTOM) {\n\t\t\t\toptions.buttons.forEach(function(button) {\n\t\t\t\t\tbuttonlist.push({\n\t\t\t\t\t\ttext: button.text,\n\t\t\t\t\t\tclick: function() {\n\t\t\t\t\t\t\tfunctionToCall(button.type)\n\t\t\t\t\t\t},\n\t\t\t\t\t\tdefaultButton: button.defaultButton\n\t\t\t\t\t})\n\t\t\t\t})\n\t\t\t} else {\n\t\t\t\tif (type === Dialogs.FILEPICKER_TYPE_COPY || type === Dialogs.FILEPICKER_TYPE_COPY_MOVE) {\n\t\t\t\t\tbuttonlist.push({\n\t\t\t\t\t\ttext: t('core', 'Copy'),\n\t\t\t\t\t\tclick: copyCallback,\n\t\t\t\t\t\tdefaultButton: false\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t\tif (type === Dialogs.FILEPICKER_TYPE_MOVE || type === Dialogs.FILEPICKER_TYPE_COPY_MOVE) {\n\t\t\t\t\tbuttonlist.push({\n\t\t\t\t\t\ttext: t('core', 'Move'),\n\t\t\t\t\t\tclick: moveCallback,\n\t\t\t\t\t\tdefaultButton: true\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tself.$filePicker.ocdialog({\n\t\t\t\tcloseOnEscape: true,\n\t\t\t\t// max-width of 600\n\t\t\t\twidth: 600,\n\t\t\t\theight: 500,\n\t\t\t\tmodal: modal,\n\t\t\t\tbuttons: buttonlist,\n\t\t\t\tstyle: {\n\t\t\t\t\tbuttons: 'aside'\n\t\t\t\t},\n\t\t\t\tclose: function() {\n\t\t\t\t\ttry {\n\t\t\t\t\t\t$(this).ocdialog('destroy').remove()\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t}\n\t\t\t\t\tself.$filePicker = null\n\t\t\t\t}\n\t\t\t})\n\n\t\t\t// We can access primary class only from oc-dialog.\n\t\t\t// Hence this is one of the approach to get the choose button.\n\t\t\tvar getOcDialog = self.$filePicker.closest('.oc-dialog')\n\t\t\tvar buttonEnableDisable = getOcDialog.find('.primary')\n\t\t\tif (self.$filePicker.data('mimetype').indexOf('httpd/unix-directory') !== -1 || self.$filePicker.data('allowDirectoryChooser')) {\n\t\t\t\tbuttonEnableDisable.prop('disabled', false)\n\t\t\t} else {\n\t\t\t\tbuttonEnableDisable.prop('disabled', true)\n\t\t\t}\n\t\t})\n\t\t\t.fail(function(status, error) {\n\t\t\t\t// If the method is called while navigating away\n\t\t\t\t// from the page, it is probably not needed ;)\n\t\t\t\tself.filepicker.loading = false\n\t\t\t\tif (status !== 0) {\n\t\t\t\t\talert(t('core', 'Error loading file picker template: {error}', { error: error }))\n\t\t\t\t}\n\t\t\t})\n\t},\n\t/**\n\t * Displays raw dialog\n\t * You better use a wrapper instead ...\n\t */\n\tmessage: function(content, title, dialogType, buttons, callback, modal, allowHtml) {\n\t\treturn $.when(this._getMessageTemplate()).then(function($tmpl) {\n\t\t\tvar dialogName = 'oc-dialog-' + Dialogs.dialogsCounter + '-content'\n\t\t\tvar dialogId = '#' + dialogName\n\t\t\tvar $dlg = $tmpl.octemplate({\n\t\t\t\tdialog_name: dialogName,\n\t\t\t\ttitle: title,\n\t\t\t\tmessage: content,\n\t\t\t\ttype: dialogType\n\t\t\t}, allowHtml ? { escapeFunction: '' } : {})\n\t\t\tif (modal === undefined) {\n\t\t\t\tmodal = false\n\t\t\t}\n\t\t\t$('body').append($dlg)\n\t\t\tvar buttonlist = []\n\t\t\tswitch (buttons) {\n\t\t\tcase Dialogs.YES_NO_BUTTONS:\n\t\t\t\tbuttonlist = [{\n\t\t\t\t\ttext: t('core', 'No'),\n\t\t\t\t\tclick: function() {\n\t\t\t\t\t\tif (callback !== undefined) {\n\t\t\t\t\t\t\tcallback(false)\n\t\t\t\t\t\t}\n\t\t\t\t\t\t$(dialogId).ocdialog('close')\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\ttext: t('core', 'Yes'),\n\t\t\t\t\tclick: function() {\n\t\t\t\t\t\tif (callback !== undefined) {\n\t\t\t\t\t\t\tcallback(true)\n\t\t\t\t\t\t}\n\t\t\t\t\t\t$(dialogId).ocdialog('close')\n\t\t\t\t\t},\n\t\t\t\t\tdefaultButton: true\n\t\t\t\t}]\n\t\t\t\tbreak\n\t\t\tcase Dialogs.OK_BUTTON:\n\t\t\t\tvar functionToCall = function() {\n\t\t\t\t\t$(dialogId).ocdialog('close')\n\t\t\t\t\tif (callback !== undefined) {\n\t\t\t\t\t\tcallback()\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbuttonlist[0] = {\n\t\t\t\t\ttext: t('core', 'OK'),\n\t\t\t\t\tclick: functionToCall,\n\t\t\t\t\tdefaultButton: true\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\tdefault:\n\t\t\t\tif (typeof(buttons) === 'object') {\n\t\t\t\t\tswitch (buttons.type) {\n\t\t\t\t\t\tcase Dialogs.YES_NO_BUTTONS:\n\t\t\t\t\t\t\tbuttonlist = [{\n\t\t\t\t\t\t\t\ttext: buttons.cancel || t('core', 'No'),\n\t\t\t\t\t\t\t\tclick: function() {\n\t\t\t\t\t\t\t\t\tif (callback !== undefined) {\n\t\t\t\t\t\t\t\t\t\tcallback(false)\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t$(dialogId).ocdialog('close')\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\ttext: buttons.confirm || t('core', 'Yes'),\n\t\t\t\t\t\t\t\t\tclick: function() {\n\t\t\t\t\t\t\t\t\t\tif (callback !== undefined) {\n\t\t\t\t\t\t\t\t\t\t\tcallback(true)\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t$(dialogId).ocdialog('close')\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tdefaultButton: true,\n\t\t\t\t\t\t\t\t\tclasses: buttons.confirmClasses\n\t\t\t\t\t\t\t\t}]\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t}\n\n\t\t\t$(dialogId).ocdialog({\n\t\t\t\tcloseOnEscape: true,\n\t\t\t\tcloseCallback: () => { callback && callback(false) },\n\t\t\t\tmodal: modal,\n\t\t\t\tbuttons: buttonlist\n\t\t\t})\n\t\t\tDialogs.dialogsCounter++\n\t\t})\n\t\t\t.fail(function(status, error) {\n\t\t\t\t// If the method is called while navigating away from\n\t\t\t\t// the page, we still want to deliver the message.\n\t\t\t\tif (status === 0) {\n\t\t\t\t\talert(title + ': ' + content)\n\t\t\t\t} else {\n\t\t\t\t\talert(t('core', 'Error loading message template: {error}', { error: error }))\n\t\t\t\t}\n\t\t\t})\n\t},\n\t_fileexistsshown: false,\n\t/**\n\t * Displays file exists dialog\n\t * @param {object} data upload object\n\t * @param {object} original file with name, size and mtime\n\t * @param {object} replacement file with name, size and mtime\n\t * @param {object} controller with onCancel, onSkip, onReplace and onRename methods\n\t * @returns {Promise} jquery promise that resolves after the dialog template was loaded\n\t */\n\tfileexists: function(data, original, replacement, controller) {\n\t\tvar self = this\n\t\tvar dialogDeferred = new $.Deferred()\n\n\t\tvar getCroppedPreview = function(file) {\n\t\t\tvar deferred = new $.Deferred()\n\t\t\t// Only process image files.\n\t\t\tvar type = file.type && file.type.split('/').shift()\n\t\t\tif (window.FileReader && type === 'image') {\n\t\t\t\tvar reader = new FileReader()\n\t\t\t\treader.onload = function(e) {\n\t\t\t\t\tvar blob = new Blob([e.target.result])\n\t\t\t\t\twindow.URL = window.URL || window.webkitURL\n\t\t\t\t\tvar originalUrl = window.URL.createObjectURL(blob)\n\t\t\t\t\tvar image = new Image()\n\t\t\t\t\timage.src = originalUrl\n\t\t\t\t\timage.onload = function() {\n\t\t\t\t\t\tvar url = crop(image)\n\t\t\t\t\t\tdeferred.resolve(url)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treader.readAsArrayBuffer(file)\n\t\t\t} else {\n\t\t\t\tdeferred.reject()\n\t\t\t}\n\t\t\treturn deferred\n\t\t}\n\n\t\tvar crop = function(img) {\n\t\t\tvar canvas = document.createElement('canvas')\n\t\t\tvar targetSize = 96\n\t\t\tvar width = img.width\n\t\t\tvar height = img.height\n\t\t\tvar x; var y; var size\n\n\t\t\t// Calculate the width and height, constraining the proportions\n\t\t\tif (width > height) {\n\t\t\t\ty = 0\n\t\t\t\tx = (width - height) / 2\n\t\t\t} else {\n\t\t\t\ty = (height - width) / 2\n\t\t\t\tx = 0\n\t\t\t}\n\t\t\tsize = Math.min(width, height)\n\n\t\t\t// Set canvas size to the cropped area\n\t\t\tcanvas.width = size\n\t\t\tcanvas.height = size\n\t\t\tvar ctx = canvas.getContext('2d')\n\t\t\tctx.drawImage(img, x, y, size, size, 0, 0, size, size)\n\n\t\t\t// Resize the canvas to match the destination (right size uses 96px)\n\t\t\tresampleHermite(canvas, size, size, targetSize, targetSize)\n\n\t\t\treturn canvas.toDataURL('image/png', 0.7)\n\t\t}\n\n\t\t/**\n\t\t * Fast image resize/resample using Hermite filter with JavaScript.\n\t\t *\n\t\t * @author: ViliusL\n\t\t *\n\t\t * @param {*} canvas\n\t\t * @param {number} W\n\t\t * @param {number} H\n\t\t * @param {number} W2\n\t\t * @param {number} H2\n\t\t */\n\t\tvar resampleHermite = function(canvas, W, H, W2, H2) {\n\t\t\tW2 = Math.round(W2)\n\t\t\tH2 = Math.round(H2)\n\t\t\tvar img = canvas.getContext('2d').getImageData(0, 0, W, H)\n\t\t\tvar img2 = canvas.getContext('2d').getImageData(0, 0, W2, H2)\n\t\t\tvar data = img.data\n\t\t\tvar data2 = img2.data\n\t\t\tvar ratio_w = W / W2\n\t\t\tvar ratio_h = H / H2\n\t\t\tvar ratio_w_half = Math.ceil(ratio_w / 2)\n\t\t\tvar ratio_h_half = Math.ceil(ratio_h / 2)\n\n\t\t\tfor (var j = 0; j < H2; j++) {\n\t\t\t\tfor (var i = 0; i < W2; i++) {\n\t\t\t\t\tvar x2 = (i + j * W2) * 4\n\t\t\t\t\tvar weight = 0\n\t\t\t\t\tvar weights = 0\n\t\t\t\t\tvar weights_alpha = 0\n\t\t\t\t\tvar gx_r = 0\n\t\t\t\t\tvar gx_g = 0\n\t\t\t\t\tvar gx_b = 0\n\t\t\t\t\tvar gx_a = 0\n\t\t\t\t\tvar center_y = (j + 0.5) * ratio_h\n\t\t\t\t\tfor (var yy = Math.floor(j * ratio_h); yy < (j + 1) * ratio_h; yy++) {\n\t\t\t\t\t\tvar dy = Math.abs(center_y - (yy + 0.5)) / ratio_h_half\n\t\t\t\t\t\tvar center_x = (i + 0.5) * ratio_w\n\t\t\t\t\t\tvar w0 = dy * dy // pre-calc part of w\n\t\t\t\t\t\tfor (var xx = Math.floor(i * ratio_w); xx < (i + 1) * ratio_w; xx++) {\n\t\t\t\t\t\t\tvar dx = Math.abs(center_x - (xx + 0.5)) / ratio_w_half\n\t\t\t\t\t\t\tvar w = Math.sqrt(w0 + dx * dx)\n\t\t\t\t\t\t\tif (w >= -1 && w <= 1) {\n\t\t\t\t\t\t\t\t// hermite filter\n\t\t\t\t\t\t\t\tweight = 2 * w * w * w - 3 * w * w + 1\n\t\t\t\t\t\t\t\tif (weight > 0) {\n\t\t\t\t\t\t\t\t\tdx = 4 * (xx + yy * W)\n\t\t\t\t\t\t\t\t\t// alpha\n\t\t\t\t\t\t\t\t\tgx_a += weight * data[dx + 3]\n\t\t\t\t\t\t\t\t\tweights_alpha += weight\n\t\t\t\t\t\t\t\t\t// colors\n\t\t\t\t\t\t\t\t\tif (data[dx + 3] < 255) { weight = weight * data[dx + 3] / 250 }\n\t\t\t\t\t\t\t\t\tgx_r += weight * data[dx]\n\t\t\t\t\t\t\t\t\tgx_g += weight * data[dx + 1]\n\t\t\t\t\t\t\t\t\tgx_b += weight * data[dx + 2]\n\t\t\t\t\t\t\t\t\tweights += weight\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tdata2[x2] = gx_r / weights\n\t\t\t\t\tdata2[x2 + 1] = gx_g / weights\n\t\t\t\t\tdata2[x2 + 2] = gx_b / weights\n\t\t\t\t\tdata2[x2 + 3] = gx_a / weights_alpha\n\t\t\t\t}\n\t\t\t}\n\t\t\tcanvas.getContext('2d').clearRect(0, 0, Math.max(W, W2), Math.max(H, H2))\n\t\t\tcanvas.width = W2\n\t\t\tcanvas.height = H2\n\t\t\tcanvas.getContext('2d').putImageData(img2, 0, 0)\n\t\t}\n\n\t\tvar addConflict = function($conflicts, original, replacement) {\n\n\t\t\tvar $conflict = $conflicts.find('.template').clone().removeClass('template').addClass('conflict')\n\t\t\tvar $originalDiv = $conflict.find('.original')\n\t\t\tvar $replacementDiv = $conflict.find('.replacement')\n\n\t\t\t$conflict.data('data', data)\n\n\t\t\t$conflict.find('.filename').text(original.name)\n\t\t\t$originalDiv.find('.size').text(OC.Util.humanFileSize(original.size))\n\t\t\t$originalDiv.find('.mtime').text(OC.Util.formatDate(original.mtime))\n\t\t\t// ie sucks\n\t\t\tif (replacement.size && replacement.lastModified) {\n\t\t\t\t$replacementDiv.find('.size').text(OC.Util.humanFileSize(replacement.size))\n\t\t\t\t$replacementDiv.find('.mtime').text(OC.Util.formatDate(replacement.lastModified))\n\t\t\t}\n\t\t\tvar path = original.directory + '/' + original.name\n\t\t\tvar urlSpec = {\n\t\t\t\tfile: path,\n\t\t\t\tx: 96,\n\t\t\t\ty: 96,\n\t\t\t\tc: original.etag,\n\t\t\t\tforceIcon: 0\n\t\t\t}\n\t\t\tvar previewpath = Files.generatePreviewUrl(urlSpec)\n\t\t\t// Escaping single quotes\n\t\t\tpreviewpath = previewpath.replace(/'/g, '%27')\n\t\t\t$originalDiv.find('.icon').css({ 'background-image': \"url('\" + previewpath + \"')\" })\n\t\t\tgetCroppedPreview(replacement).then(\n\t\t\t\tfunction(path) {\n\t\t\t\t\t$replacementDiv.find('.icon').css('background-image', 'url(' + path + ')')\n\t\t\t\t}, function() {\n\t\t\t\t\tpath = OC.MimeType.getIconUrl(replacement.type)\n\t\t\t\t\t$replacementDiv.find('.icon').css('background-image', 'url(' + path + ')')\n\t\t\t\t}\n\t\t\t)\n\t\t\t// connect checkboxes with labels\n\t\t\tvar checkboxId = $conflicts.find('.conflict').length\n\t\t\t$originalDiv.find('input:checkbox').attr('id', 'checkbox_original_' + checkboxId)\n\t\t\t$replacementDiv.find('input:checkbox').attr('id', 'checkbox_replacement_' + checkboxId)\n\n\t\t\t$conflicts.append($conflict)\n\n\t\t\t// set more recent mtime bold\n\t\t\t// ie sucks\n\t\t\tif (replacement.lastModified > original.mtime) {\n\t\t\t\t$replacementDiv.find('.mtime').css('font-weight', 'bold')\n\t\t\t} else if (replacement.lastModified < original.mtime) {\n\t\t\t\t$originalDiv.find('.mtime').css('font-weight', 'bold')\n\t\t\t} else {\n\t\t\t\t// TODO add to same mtime collection?\n\t\t\t}\n\n\t\t\t// set bigger size bold\n\t\t\tif (replacement.size && replacement.size > original.size) {\n\t\t\t\t$replacementDiv.find('.size').css('font-weight', 'bold')\n\t\t\t} else if (replacement.size && replacement.size < original.size) {\n\t\t\t\t$originalDiv.find('.size').css('font-weight', 'bold')\n\t\t\t} else {\n\t\t\t\t// TODO add to same size collection?\n\t\t\t}\n\n\t\t\t// TODO show skip action for files with same size and mtime in bottom row\n\n\t\t\t// always keep readonly files\n\n\t\t\tif (original.status === 'readonly') {\n\t\t\t\t$originalDiv\n\t\t\t\t\t.addClass('readonly')\n\t\t\t\t\t.find('input[type=\"checkbox\"]')\n\t\t\t\t\t.prop('checked', true)\n\t\t\t\t\t.prop('disabled', true)\n\t\t\t\t$originalDiv.find('.message')\n\t\t\t\t\t.text(t('core', 'read-only'))\n\t\t\t}\n\t\t}\n\t\t// var selection = controller.getSelection(data.originalFiles);\n\t\t// if (selection.defaultAction) {\n\t\t//\tcontroller[selection.defaultAction](data);\n\t\t// } else {\n\t\tvar dialogName = 'oc-dialog-fileexists-content'\n\t\tvar dialogId = '#' + dialogName\n\t\tif (this._fileexistsshown) {\n\t\t\t// add conflict\n\n\t\t\tvar $conflicts = $(dialogId + ' .conflicts')\n\t\t\taddConflict($conflicts, original, replacement)\n\n\t\t\tvar count = $(dialogId + ' .conflict').length\n\t\t\tvar title = n('core',\n\t\t\t\t'{count} file conflict',\n\t\t\t\t'{count} file conflicts',\n\t\t\t\tcount,\n\t\t\t\t{ count: count }\n\t\t\t)\n\t\t\t$(dialogId).parent().children('.oc-dialog-title').text(title)\n\n\t\t\t// recalculate dimensions\n\t\t\t$(window).trigger('resize')\n\t\t\tdialogDeferred.resolve()\n\t\t} else {\n\t\t\t// create dialog\n\t\t\tthis._fileexistsshown = true\n\t\t\t$.when(this._getFileExistsTemplate()).then(function($tmpl) {\n\t\t\t\tvar title = t('core', 'One file conflict')\n\t\t\t\tvar $dlg = $tmpl.octemplate({\n\t\t\t\t\tdialog_name: dialogName,\n\t\t\t\t\ttitle: title,\n\t\t\t\t\ttype: 'fileexists',\n\n\t\t\t\t\tallnewfiles: t('core', 'New Files'),\n\t\t\t\t\tallexistingfiles: t('core', 'Already existing files'),\n\n\t\t\t\t\twhy: t('core', 'Which files do you want to keep?'),\n\t\t\t\t\twhat: t('core', 'If you select both versions, the copied file will have a number added to its name.')\n\t\t\t\t})\n\t\t\t\t$('body').append($dlg)\n\n\t\t\t\tif (original && replacement) {\n\t\t\t\t\tvar $conflicts = $dlg.find('.conflicts')\n\t\t\t\t\taddConflict($conflicts, original, replacement)\n\t\t\t\t}\n\n\t\t\t\tvar buttonlist = [{\n\t\t\t\t\ttext: t('core', 'Cancel'),\n\t\t\t\t\tclasses: 'cancel',\n\t\t\t\t\tclick: function() {\n\t\t\t\t\t\tif (typeof controller.onCancel !== 'undefined') {\n\t\t\t\t\t\t\tcontroller.onCancel(data)\n\t\t\t\t\t\t}\n\t\t\t\t\t\t$(dialogId).ocdialog('close')\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\ttext: t('core', 'Continue'),\n\t\t\t\t\tclasses: 'continue',\n\t\t\t\t\tclick: function() {\n\t\t\t\t\t\tif (typeof controller.onContinue !== 'undefined') {\n\t\t\t\t\t\t\tcontroller.onContinue($(dialogId + ' .conflict'))\n\t\t\t\t\t\t}\n\t\t\t\t\t\t$(dialogId).ocdialog('close')\n\t\t\t\t\t}\n\t\t\t\t}]\n\n\t\t\t\t$(dialogId).ocdialog({\n\t\t\t\t\twidth: 500,\n\t\t\t\t\tcloseOnEscape: true,\n\t\t\t\t\tmodal: true,\n\t\t\t\t\tbuttons: buttonlist,\n\t\t\t\t\tcloseButton: null,\n\t\t\t\t\tclose: function() {\n\t\t\t\t\t\tself._fileexistsshown = false\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t$(this).ocdialog('destroy').remove()\n\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\t// ignore\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t})\n\n\t\t\t\t$(dialogId).css('height', 'auto')\n\n\t\t\t\tvar $primaryButton = $dlg.closest('.oc-dialog').find('button.continue')\n\t\t\t\t$primaryButton.prop('disabled', true)\n\n\t\t\t\tfunction updatePrimaryButton() {\n\t\t\t\t\tvar checkedCount = $dlg.find('.conflicts .checkbox:checked').length\n\t\t\t\t\t$primaryButton.prop('disabled', checkedCount === 0)\n\t\t\t\t}\n\n\t\t\t\t// add checkbox toggling actions\n\t\t\t\t$(dialogId).find('.allnewfiles').on('click', function() {\n\t\t\t\t\tvar $checkboxes = $(dialogId).find('.conflict .replacement input[type=\"checkbox\"]')\n\t\t\t\t\t$checkboxes.prop('checked', $(this).prop('checked'))\n\t\t\t\t})\n\t\t\t\t$(dialogId).find('.allexistingfiles').on('click', function() {\n\t\t\t\t\tvar $checkboxes = $(dialogId).find('.conflict .original:not(.readonly) input[type=\"checkbox\"]')\n\t\t\t\t\t$checkboxes.prop('checked', $(this).prop('checked'))\n\t\t\t\t})\n\t\t\t\t$(dialogId).find('.conflicts').on('click', '.replacement,.original:not(.readonly)', function() {\n\t\t\t\t\tvar $checkbox = $(this).find('input[type=\"checkbox\"]')\n\t\t\t\t\t$checkbox.prop('checked', !$checkbox.prop('checked'))\n\t\t\t\t})\n\t\t\t\t$(dialogId).find('.conflicts').on('click', '.replacement input[type=\"checkbox\"],.original:not(.readonly) input[type=\"checkbox\"]', function() {\n\t\t\t\t\tvar $checkbox = $(this)\n\t\t\t\t\t$checkbox.prop('checked', !$checkbox.prop('checked'))\n\t\t\t\t})\n\n\t\t\t\t// update counters\n\t\t\t\t$(dialogId).on('click', '.replacement,.allnewfiles', function() {\n\t\t\t\t\tvar count = $(dialogId).find('.conflict .replacement input[type=\"checkbox\"]:checked').length\n\t\t\t\t\tif (count === $(dialogId + ' .conflict').length) {\n\t\t\t\t\t\t$(dialogId).find('.allnewfiles').prop('checked', true)\n\t\t\t\t\t\t$(dialogId).find('.allnewfiles + .count').text(t('core', '(all selected)'))\n\t\t\t\t\t} else if (count > 0) {\n\t\t\t\t\t\t$(dialogId).find('.allnewfiles').prop('checked', false)\n\t\t\t\t\t\t$(dialogId).find('.allnewfiles + .count').text(t('core', '({count} selected)', { count: count }))\n\t\t\t\t\t} else {\n\t\t\t\t\t\t$(dialogId).find('.allnewfiles').prop('checked', false)\n\t\t\t\t\t\t$(dialogId).find('.allnewfiles + .count').text('')\n\t\t\t\t\t}\n\t\t\t\t\tupdatePrimaryButton()\n\t\t\t\t})\n\t\t\t\t$(dialogId).on('click', '.original,.allexistingfiles', function() {\n\t\t\t\t\tvar count = $(dialogId).find('.conflict .original input[type=\"checkbox\"]:checked').length\n\t\t\t\t\tif (count === $(dialogId + ' .conflict').length) {\n\t\t\t\t\t\t$(dialogId).find('.allexistingfiles').prop('checked', true)\n\t\t\t\t\t\t$(dialogId).find('.allexistingfiles + .count').text(t('core', '(all selected)'))\n\t\t\t\t\t} else if (count > 0) {\n\t\t\t\t\t\t$(dialogId).find('.allexistingfiles').prop('checked', false)\n\t\t\t\t\t\t$(dialogId).find('.allexistingfiles + .count')\n\t\t\t\t\t\t\t.text(t('core', '({count} selected)', { count: count }))\n\t\t\t\t\t} else {\n\t\t\t\t\t\t$(dialogId).find('.allexistingfiles').prop('checked', false)\n\t\t\t\t\t\t$(dialogId).find('.allexistingfiles + .count').text('')\n\t\t\t\t\t}\n\t\t\t\t\tupdatePrimaryButton()\n\t\t\t\t})\n\n\t\t\t\tdialogDeferred.resolve()\n\t\t\t})\n\t\t\t\t.fail(function() {\n\t\t\t\t\tdialogDeferred.reject()\n\t\t\t\t\talert(t('core', 'Error loading file exists template'))\n\t\t\t\t})\n\t\t}\n\t\t// }\n\t\treturn dialogDeferred.promise()\n\t},\n\t// get the gridview setting and set the input accordingly\n\t_getGridSettings: function() {\n\t\tconst self = this\n\t\t$.get(OC.generateUrl('/apps/files/api/v1/showgridview'), function(response) {\n\t\t\tself.$showGridView\n\t\t\t\t.removeClass('icon-toggle-filelist icon-toggle-pictures')\n\t\t\t\t.addClass(response.gridview ? 'icon-toggle-filelist' : 'icon-toggle-pictures')\n\t\t\tself.$showGridView.attr(\n\t\t\t\t'aria-label',\n\t\t\t\tresponse.gridview ? t('files', 'Show list view') : t('files', 'Show grid view'),\n\t\t\t)\n\t\t\t$('.list-container').toggleClass('view-grid', response.gridview)\n\t\t})\n\t},\n\t_onGridviewChange: function() {\n\t\tconst isGridView = this.$showGridView.hasClass('icon-toggle-filelist')\n\t\t// only save state if user is logged in\n\t\tif (OC.currentUser) {\n\t\t\t$.post(OC.generateUrl('/apps/files/api/v1/showgridview'), { show: !isGridView })\n\t\t}\n\t\tthis.$showGridView\n\t\t\t.removeClass('icon-toggle-filelist icon-toggle-pictures')\n\t\t\t.addClass(isGridView ? 'icon-toggle-pictures' : 'icon-toggle-filelist')\n\t\tthis.$showGridView.attr(\n\t\t\t'aria-label',\n\t\t\tisGridView ? t('files', 'Show grid view') : t('files', 'Show list view'),\n\t\t)\n\t\tthis.$filePicker.find('.list-container').toggleClass('view-grid', !isGridView)\n\t},\n\t_getFilePickerTemplate: function() {\n\t\tvar defer = $.Deferred()\n\t\tif (!this.$filePickerTemplate) {\n\t\t\tvar self = this\n\t\t\t$.get(OC.filePath('core', 'templates', 'filepicker.html'), function(tmpl) {\n\t\t\t\tself.$filePickerTemplate = $(tmpl)\n\t\t\t\tself.$listTmpl = self.$filePickerTemplate.find('.filelist tbody tr:first-child').detach()\n\t\t\t\tdefer.resolve(self.$filePickerTemplate)\n\t\t\t})\n\t\t\t\t.fail(function(jqXHR, textStatus, errorThrown) {\n\t\t\t\t\tdefer.reject(jqXHR.status, errorThrown)\n\t\t\t\t})\n\t\t} else {\n\t\t\tdefer.resolve(this.$filePickerTemplate)\n\t\t}\n\t\treturn defer.promise()\n\t},\n\t_getMessageTemplate: function() {\n\t\tvar defer = $.Deferred()\n\t\tif (!this.$messageTemplate) {\n\t\t\tvar self = this\n\t\t\t$.get(OC.filePath('core', 'templates', 'message.html'), function(tmpl) {\n\t\t\t\tself.$messageTemplate = $(tmpl)\n\t\t\t\tdefer.resolve(self.$messageTemplate)\n\t\t\t})\n\t\t\t\t.fail(function(jqXHR, textStatus, errorThrown) {\n\t\t\t\t\tdefer.reject(jqXHR.status, errorThrown)\n\t\t\t\t})\n\t\t} else {\n\t\t\tdefer.resolve(this.$messageTemplate)\n\t\t}\n\t\treturn defer.promise()\n\t},\n\t_getFileExistsTemplate: function() {\n\t\tvar defer = $.Deferred()\n\t\tif (!this.$fileexistsTemplate) {\n\t\t\tvar self = this\n\t\t\t$.get(OC.filePath('files', 'templates', 'fileexists.html'), function(tmpl) {\n\t\t\t\tself.$fileexistsTemplate = $(tmpl)\n\t\t\t\tdefer.resolve(self.$fileexistsTemplate)\n\t\t\t})\n\t\t\t\t.fail(function() {\n\t\t\t\t\tdefer.reject()\n\t\t\t\t})\n\t\t} else {\n\t\t\tdefer.resolve(this.$fileexistsTemplate)\n\t\t}\n\t\treturn defer.promise()\n\t},\n\n\t/**\n\t * fills the filepicker with files\n\t */\n\t_fillFilePicker: async function(dir, type) {\n\t\tvar self = this\n\t\tthis.$filelist.empty()\n\t\tthis.$filePicker.find('.emptycontent').hide()\n\t\tthis.$filelistContainer.addClass('icon-loading')\n\t\tthis.$filePicker.data('path', dir)\n\t\tvar filter = this.$filePicker.data('mimetype')\n\t\tvar advancedFilter = this.$filePicker.data('filter')\n\t\tif (typeof (filter) === 'string') {\n\t\t\tfilter = [filter]\n\t\t}\n\t\tself.$fileListHeader.find('.sort-indicator').addClass('hidden').removeClass('icon-triangle-n').removeClass('icon-triangle-s')\n\t\tself.$fileListHeader.find('[data-sort=' + self.filepicker.sortField + '] .sort-indicator').removeClass('hidden')\n\t\tif (self.filepicker.sortOrder === 'asc') {\n\t\t\tself.$fileListHeader.find('[data-sort=' + self.filepicker.sortField + '] .sort-indicator').addClass('icon-triangle-n')\n\t\t} else {\n\t\t\tself.$fileListHeader.find('[data-sort=' + self.filepicker.sortField + '] .sort-indicator').addClass('icon-triangle-s')\n\t\t}\n\n\t\t// Wrap within a method because a promise cannot return multiple values\n\t\t// But the client impleemntation still does it...\n\t\tvar getFolderContents = async function(dir) {\n\t\t\treturn self.filepicker.filesClient.getFolderContents(dir)\n\t\t\t\t.then((status, files) => {\n\t\t\t\t\treturn files\n\t\t\t\t})\n\t\t}\n\n\t\ttry {\n\t\t\tvar files = await getFolderContents(dir)\n\t\t} catch (error) {\n\t\t\t// fallback to root if requested dir is non-existent\n\t\t\tconsole.error('Requested path does not exists, falling back to root')\n\t\t\tvar files = await getFolderContents('/')\n\t\t\tthis.$filePicker.data('path', '/')\n\t\t\tthis._changeButtonsText(type, '')\n\t\t}\n\n\t\tself.filelist = files\n\t\tif (filter && filter.length > 0 && filter.indexOf('*') === -1) {\n\t\t\tfiles = files.filter(function(file) {\n\t\t\t\treturn file.type === 'dir' || filter.indexOf(file.mimetype) !== -1\n\t\t\t})\n\t\t}\n\n\t\tif (advancedFilter) {\n\t\t\tfiles = files.filter(advancedFilter)\n\t\t}\n\n\t\t// Check if the showHidden input field exist and if it exist follow it\n\t\t// Otherwise just show the hidden files\n\t\tconst showHiddenInput = document.getElementById('showHiddenFiles')\n\t\tconst showHidden = showHiddenInput === null || showHiddenInput.value === \"1\"\n\t\tif (!showHidden) {\n\t\t\tfiles = files.filter(function(file) {\n\t\t\t\treturn !file.name.startsWith('.')\n\t\t\t})\n\t\t}\n\n\t\tvar Comparators = {\n\t\t\tname: function(fileInfo1, fileInfo2) {\n\t\t\t\tif (fileInfo1.type === 'dir' && fileInfo2.type !== 'dir') {\n\t\t\t\t\treturn -1\n\t\t\t\t}\n\t\t\t\tif (fileInfo1.type !== 'dir' && fileInfo2.type === 'dir') {\n\t\t\t\t\treturn 1\n\t\t\t\t}\n\t\t\t\treturn OC.Util.naturalSortCompare(fileInfo1.name, fileInfo2.name)\n\t\t\t},\n\t\t\tsize: function(fileInfo1, fileInfo2) {\n\t\t\t\treturn fileInfo1.size - fileInfo2.size\n\t\t\t},\n\t\t\tmtime: function(fileInfo1, fileInfo2) {\n\t\t\t\treturn fileInfo1.mtime - fileInfo2.mtime\n\t\t\t}\n\t\t}\n\t\tvar comparator = Comparators[self.filepicker.sortField] || Comparators.name\n\t\tfiles = files.sort(function(file1, file2) {\n\t\t\tvar isFavorite = function(fileInfo) {\n\t\t\t\treturn fileInfo.tags && fileInfo.tags.indexOf(OC.TAG_FAVORITE) >= 0\n\t\t\t}\n\n\t\t\tif (isFavorite(file1) && !isFavorite(file2)) {\n\t\t\t\treturn -1\n\t\t\t} else if (!isFavorite(file1) && isFavorite(file2)) {\n\t\t\t\treturn 1\n\t\t\t}\n\n\t\t\treturn self.filepicker.sortOrder === 'asc' ? comparator(file1, file2) : -comparator(file1, file2)\n\t\t})\n\n\t\tself._fillSlug()\n\n\t\tif (files.length === 0) {\n\t\t\tself.$filePicker.find('.emptycontent').show()\n\t\t\tself.$fileListHeader.hide()\n\t\t} else {\n\t\t\tself.$filePicker.find('.emptycontent').hide()\n\t\t\tself.$fileListHeader.show()\n\t\t}\n\n\t\tself.$filelist.empty();\n\n\t\t$.each(files, function(idx, entry) {\n\t\t\tif (entry.isEncrypted && entry.mimetype === 'httpd/unix-directory') {\n\t\t\t\tentry.icon = OC.MimeType.getIconUrl('dir-encrypted')\n\t\t\t} else {\n\t\t\t\tentry.icon = OC.MimeType.getIconUrl(entry.mimetype)\n\t\t\t}\n\n\t\t\tvar simpleSize, sizeColor\n\t\t\tif (typeof (entry.size) !== 'undefined' && entry.size >= 0) {\n\t\t\t\tsimpleSize = OC.Util.humanFileSize(parseInt(entry.size, 10), true)\n\t\t\t\tsizeColor = Math.round(160 - Math.pow((entry.size / (1024 * 1024)), 2))\n\t\t\t} else {\n\t\t\t\tsimpleSize = t('files', 'Pending')\n\t\t\t\tsizeColor = 80\n\t\t\t}\n\n\t\t\t// split the filename in half if the size is bigger than 20 char\n\t\t\t// for ellipsis\n\t\t\tif (entry.name.length >= 10) {\n\t\t\t\t// leave maximum 10 letters\n\t\t\t\tvar split = Math.min(Math.floor(entry.name.length / 2), 10)\n\t\t\t\tvar filename1 = entry.name.substr(0, entry.name.length - split)\n\t\t\t\tvar filename2 = entry.name.substr(entry.name.length - split)\n\t\t\t} else {\n\t\t\t\tvar filename1 = entry.name\n\t\t\t\tvar filename2 = ''\n\t\t\t}\n\n\t\t\tvar $row = self.$listTmpl.octemplate({\n\t\t\t\ttype: entry.type,\n\t\t\t\tdir: dir,\n\t\t\t\tfilename: entry.name,\n\t\t\t\tfilename1: filename1,\n\t\t\t\tfilename2: filename2,\n\t\t\t\tdate: OC.Util.relativeModifiedDate(entry.mtime),\n\t\t\t\tsize: simpleSize,\n\t\t\t\tsizeColor: sizeColor,\n\t\t\t\ticon: entry.icon\n\t\t\t})\n\t\t\tif (entry.type === 'file') {\n\t\t\t\tvar urlSpec = {\n\t\t\t\t\tfile: dir + '/' + entry.name,\n\t\t\t\t\tx: 100,\n\t\t\t\t\ty: 100\n\t\t\t\t}\n\t\t\t\tvar img = new Image()\n\t\t\t\tvar previewUrl = OC.generateUrl('/core/preview.png?') + $.param(urlSpec)\n\t\t\t\timg.onload = function() {\n\t\t\t\t\tif (img.width > 5) {\n\t\t\t\t\t\t$row.find('td.filename').attr('style', 'background-image:url(' + previewUrl + ')')\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\timg.src = previewUrl\n\t\t\t}\n\t\t\tself.$filelist.append($row)\n\t\t})\n\n\t\tself.$filelistContainer.removeClass('icon-loading')\n\t},\n\t/**\n\t * fills the tree list with directories\n\t */\n\t_fillSlug: function() {\n\t\tvar addButton = this.$dirTree.find('.actions.creatable').detach()\n\t\tthis.$dirTree.empty()\n\t\tvar self = this\n\n\t\tself.$dirTree.append(addButton)\n\n\t\tvar dir\n\t\tvar path = this.$filePicker.data('path')\n\t\tvar $template = $('<div data-dir=\"{dir}\" tabindex=\"0\"><a>{name}</a></div>').addClass('crumb')\n\t\tif (path) {\n\t\t\tvar paths = path.split('/')\n\t\t\t$.each(paths, function(index, dir) {\n\t\t\t\tdir = paths.pop()\n\t\t\t\tif (dir === '') {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t\tself.$dirTree.prepend($template.octemplate({\n\t\t\t\t\tdir: paths.join('/') + '/' + dir,\n\t\t\t\t\tname: dir\n\t\t\t\t}))\n\t\t\t})\n\t\t}\n\n\t\t$template.octemplate({\n\t\t\tdir: '',\n\t\t\tname: t('core', 'Home'),\n\t\t}, { escapeFunction: null }).prependTo(this.$dirTree)\n\n\t},\n\t/**\n\t * handle selection made in the tree list\n\t */\n\t_handleTreeListSelect: function(event, type) {\n\t\tvar self = event.data\n\t\tvar dir = $(event.target).closest('.crumb').data('dir')\n\t\tself._fillFilePicker(dir, type)\n\t\tvar getOcDialog = (event.target).closest('.oc-dialog')\n\t\tvar buttonEnableDisable = $('.primary', getOcDialog)\n\t\tthis._changeButtonsText(type, dir.split(/[/]+/).pop())\n\t\tif (this.$filePicker.data('mimetype').indexOf('httpd/unix-directory') !== -1 || this.$filePicker.data('allowDirectoryChooser')) {\n\t\t\tbuttonEnableDisable.prop('disabled', false)\n\t\t} else {\n\t\t\tbuttonEnableDisable.prop('disabled', true)\n\t\t}\n\t},\n\t/**\n\t * handle clicks made in the filepicker\n\t */\n\t_handlePickerClick: function(event, $element, type) {\n\t\tvar getOcDialog = this.$filePicker.closest('.oc-dialog')\n\t\tvar buttonEnableDisable = getOcDialog.find('.primary')\n\t\tif ($element.data('type') === 'file') {\n\t\t\tif (this.$filePicker.data('multiselect') !== true || !event.ctrlKey) {\n\t\t\t\tthis.$filelist.find('.filepicker_element_selected').removeClass('filepicker_element_selected')\n\t\t\t}\n\t\t\t$element.toggleClass('filepicker_element_selected')\n\t\t\tbuttonEnableDisable.prop('disabled', false)\n\t\t} else if ($element.data('type') === 'dir') {\n\t\t\tthis._fillFilePicker(this.$filePicker.data('path') + '/' + $element.data('entryname'), type)\n\t\t\tthis._changeButtonsText(type, $element.data('entryname'))\n\t\t\tif (this.$filePicker.data('mimetype').indexOf('httpd/unix-directory') !== -1 || this.$filePicker.data('allowDirectoryChooser')) {\n\t\t\t\tbuttonEnableDisable.prop('disabled', false)\n\t\t\t} else {\n\t\t\t\tbuttonEnableDisable.prop('disabled', true)\n\t\t\t}\n\t\t}\n\t},\n\n\t/**\n\t * Handle\n\t * @param type of action\n\t * @param dir on which to change buttons text\n\t * @private\n\t */\n\t_changeButtonsText: function(type, dir) {\n\t\tvar copyText = dir === '' ? t('core', 'Copy') : t('core', 'Copy to {folder}', { folder: dir })\n\t\tvar moveText = dir === '' ? t('core', 'Move') : t('core', 'Move to {folder}', { folder: dir })\n\t\tvar buttons = $('.oc-dialog-buttonrow button')\n\t\tswitch (type) {\n\t\t\tcase this.FILEPICKER_TYPE_CHOOSE:\n\t\t\t\tbreak\n\t\t\tcase this.FILEPICKER_TYPE_CUSTOM:\n\t\t\t\tbreak\n\t\t\tcase this.FILEPICKER_TYPE_COPY:\n\t\t\t\tbuttons.text(copyText)\n\t\t\t\tbreak\n\t\t\tcase this.FILEPICKER_TYPE_MOVE:\n\t\t\t\tbuttons.text(moveText)\n\t\t\t\tbreak\n\t\t\tcase this.FILEPICKER_TYPE_COPY_MOVE:\n\t\t\t\tbuttons.eq(0).text(copyText)\n\t\t\t\tbuttons.eq(1).text(moveText)\n\t\t\t\tbreak\n\t\t}\n\t}\n}\n\nexport default Dialogs\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { emit } from '@nextcloud/event-bus'\n\n/**\n * @private\n * @param {Document} global the document to read the initial value from\n * @param {Function} emit the function to invoke for every new token\n * @return {object}\n */\nexport const manageToken = (global, emit) => {\n\tlet token = global.getElementsByTagName('head')[0].getAttribute('data-requesttoken')\n\n\treturn {\n\t\tgetToken: () => token,\n\t\tsetToken: newToken => {\n\t\t\ttoken = newToken\n\n\t\t\temit('csrf-token-update', {\n\t\t\t\ttoken,\n\t\t\t})\n\t\t},\n\t}\n}\n\nconst manageFromDocument = manageToken(document, emit)\n\n/**\n * @return {string}\n */\nexport const getToken = manageFromDocument.getToken\n\n/**\n * @param {string} newToken new token\n */\nexport const setToken = manageFromDocument.setToken\n","/**\n * @copyright 2012 Robin Appelman icewind1991@gmail.com\n *\n * @author Arthur Schiwon <blizzz@arthur-schiwon.de>\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Lukas Reschke <lukas@statuscode.ch>\n * @author Robin Appelman <robin@icewind.nl>\n * @author Thomas Müller <thomas.mueller@tmit.eu>\n * @author Vincent Petry <vincent@nextcloud.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n/* eslint-disable */\nimport $ from 'jquery'\n\nimport { getToken } from './requesttoken'\n\n/**\n * Create a new event source\n * @param {string} src\n * @param {object} [data] to be send as GET\n *\n * @constructs OCEventSource\n */\nconst OCEventSource = function(src, data) {\n\tvar dataStr = ''\n\tvar name\n\tvar joinChar\n\tthis.typelessListeners = []\n\tthis.closed = false\n\tthis.listeners = {}\n\tif (data) {\n\t\tfor (name in data) {\n\t\t\tdataStr += name + '=' + encodeURIComponent(data[name]) + '&'\n\t\t}\n\t}\n\tdataStr += 'requesttoken=' + encodeURIComponent(getToken())\n\tif (!this.useFallBack && typeof EventSource !== 'undefined') {\n\t\tjoinChar = '&'\n\t\tif (src.indexOf('?') === -1) {\n\t\t\tjoinChar = '?'\n\t\t}\n\t\tthis.source = new EventSource(src + joinChar + dataStr)\n\t\tthis.source.onmessage = function(e) {\n\t\t\tfor (var i = 0; i < this.typelessListeners.length; i++) {\n\t\t\t\tthis.typelessListeners[i](JSON.parse(e.data))\n\t\t\t}\n\t\t}.bind(this)\n\t} else {\n\t\tvar iframeId = 'oc_eventsource_iframe_' + OCEventSource.iframeCount\n\t\tOCEventSource.fallBackSources[OCEventSource.iframeCount] = this\n\t\tthis.iframe = $('<iframe></iframe>')\n\t\tthis.iframe.attr('id', iframeId)\n\t\tthis.iframe.hide()\n\n\t\tjoinChar = '&'\n\t\tif (src.indexOf('?') === -1) {\n\t\t\tjoinChar = '?'\n\t\t}\n\t\tthis.iframe.attr('src', src + joinChar + 'fallback=true&fallback_id=' + OCEventSource.iframeCount + '&' + dataStr)\n\t\t$('body').append(this.iframe)\n\t\tthis.useFallBack = true\n\t\tOCEventSource.iframeCount++\n\t}\n\t// add close listener\n\tthis.listen('__internal__', function(data) {\n\t\tif (data === 'close') {\n\t\t\tthis.close()\n\t\t}\n\t}.bind(this))\n}\nOCEventSource.fallBackSources = []\nOCEventSource.iframeCount = 0// number of fallback iframes\nOCEventSource.fallBackCallBack = function(id, type, data) {\n\tOCEventSource.fallBackSources[id].fallBackCallBack(type, data)\n}\nOCEventSource.prototype = {\n\ttypelessListeners: [],\n\tiframe: null,\n\tlisteners: {}, // only for fallback\n\tuseFallBack: false,\n\t/**\n\t * Fallback callback for browsers that don't have the\n\t * native EventSource object.\n\t *\n\t * Calls the registered listeners.\n\t *\n\t * @private\n\t * @param {String} type event type\n\t * @param {Object} data received data\n\t */\n\tfallBackCallBack: function(type, data) {\n\t\tvar i\n\t\t// ignore messages that might appear after closing\n\t\tif (this.closed) {\n\t\t\treturn\n\t\t}\n\t\tif (type) {\n\t\t\tif (typeof this.listeners.done !== 'undefined') {\n\t\t\t\tfor (i = 0; i < this.listeners[type].length; i++) {\n\t\t\t\t\tthis.listeners[type][i](data)\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfor (i = 0; i < this.typelessListeners.length; i++) {\n\t\t\t\tthis.typelessListeners[i](data)\n\t\t\t}\n\t\t}\n\t},\n\tlastLength: 0, // for fallback\n\t/**\n\t * Listen to a given type of events.\n\t *\n\t * @param {String} type event type\n\t * @param {Function} callback event callback\n\t */\n\tlisten: function(type, callback) {\n\t\tif (callback && callback.call) {\n\n\t\t\tif (type) {\n\t\t\t\tif (this.useFallBack) {\n\t\t\t\t\tif (!this.listeners[type]) {\n\t\t\t\t\t\tthis.listeners[type] = []\n\t\t\t\t\t}\n\t\t\t\t\tthis.listeners[type].push(callback)\n\t\t\t\t} else {\n\t\t\t\t\tthis.source.addEventListener(type, function(e) {\n\t\t\t\t\t\tif (typeof e.data !== 'undefined') {\n\t\t\t\t\t\t\tcallback(JSON.parse(e.data))\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcallback('')\n\t\t\t\t\t\t}\n\t\t\t\t\t}, false)\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tthis.typelessListeners.push(callback)\n\t\t\t}\n\t\t}\n\t},\n\t/**\n\t * Closes this event source.\n\t */\n\tclose: function() {\n\t\tthis.closed = true\n\t\tif (typeof this.source !== 'undefined') {\n\t\t\tthis.source.close()\n\t\t}\n\t}\n}\n\nexport default OCEventSource\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Daniel Calviño Sánchez <danxuliu@gmail.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport _ from 'underscore'\n/** @typedef {import('jquery')} jQuery */\nimport $ from 'jquery'\n\nimport { menuSpeed } from './constants'\n\nexport let currentMenu = null\nexport let currentMenuToggle = null\n\n/**\n * For menu toggling\n *\n * @param {jQuery} $toggle the toggle element\n * @param {jQuery} $menuEl the menu container element\n * @param {Function | undefined} toggle callback invoked everytime the menu is opened\n * @param {boolean} headerMenu is this a top right header menu?\n * @return {void}\n */\nexport const registerMenu = function($toggle, $menuEl, toggle, headerMenu) {\n\t$menuEl.addClass('menu')\n\tconst isClickableElement = $toggle.prop('tagName') === 'A' || $toggle.prop('tagName') === 'BUTTON'\n\n\t// On link and button, the enter key trigger a click event\n\t// Only use the click to avoid two fired events\n\t$toggle.on(isClickableElement ? 'click.menu' : 'click.menu keyup.menu', function(event) {\n\t\t// prevent the link event (append anchor to URL)\n\t\tevent.preventDefault()\n\n\t\t// allow enter key as a trigger\n\t\tif (event.key && event.key !== 'Enter') {\n\t\t\treturn\n\t\t}\n\n\t\tif ($menuEl.is(currentMenu)) {\n\t\t\thideMenus()\n\t\t\treturn\n\t\t} else if (currentMenu) {\n\t\t\t// another menu was open?\n\t\t\t// close it\n\t\t\thideMenus()\n\t\t}\n\n\t\tif (headerMenu === true) {\n\t\t\t$menuEl.parent().addClass('openedMenu')\n\t\t}\n\n\t\t// Set menu to expanded\n\t\t$toggle.attr('aria-expanded', true)\n\n\t\t$menuEl.slideToggle(menuSpeed, toggle)\n\t\tcurrentMenu = $menuEl\n\t\tcurrentMenuToggle = $toggle\n\t})\n}\n\n/**\n * Unregister a previously registered menu\n *\n * @param {jQuery} $toggle the toggle element\n * @param {jQuery} $menuEl the menu container element\n */\nexport const unregisterMenu = ($toggle, $menuEl) => {\n\t// close menu if opened\n\tif ($menuEl.is(currentMenu)) {\n\t\thideMenus()\n\t}\n\t$toggle.off('click.menu').removeClass('menutoggle')\n\t$menuEl.removeClass('menu')\n}\n\n/**\n * Hides any open menus\n *\n * @param {Function} complete callback when the hiding animation is done\n */\nexport const hideMenus = function(complete) {\n\tif (currentMenu) {\n\t\tconst lastMenu = currentMenu\n\t\tcurrentMenu.trigger(new $.Event('beforeHide'))\n\t\tcurrentMenu.slideUp(menuSpeed, function() {\n\t\t\tlastMenu.trigger(new $.Event('afterHide'))\n\t\t\tif (complete) {\n\t\t\t\tcomplete.apply(this, arguments)\n\t\t\t}\n\t\t})\n\t}\n\n\t// Set menu to closed\n\t$('.menutoggle').attr('aria-expanded', false)\n\tif (currentMenuToggle) {\n\t\tcurrentMenuToggle.attr('aria-expanded', false)\n\t}\n\n\t$('.openedMenu').removeClass('openedMenu')\n\tcurrentMenu = null\n\tcurrentMenuToggle = null\n}\n\n/**\n * Shows a given element as menu\n *\n * @param {object} [$toggle=null] menu toggle\n * @param {object} $menuEl menu element\n * @param {Function} complete callback when the showing animation is done\n */\nexport const showMenu = ($toggle, $menuEl, complete) => {\n\tif ($menuEl.is(currentMenu)) {\n\t\treturn\n\t}\n\thideMenus()\n\tcurrentMenu = $menuEl\n\tcurrentMenuToggle = $toggle\n\t$menuEl.trigger(new $.Event('beforeShow'))\n\t$menuEl.show()\n\t$menuEl.trigger(new $.Event('afterShow'))\n\t// no animation\n\tif (_.isFunction(complete)) {\n\t\tcomplete()\n\t}\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nexport const coreApps = ['', 'admin', 'log', 'core/search', 'core', '3rdparty']\nexport const menuSpeed = 50\nexport const PERMISSION_NONE = 0\nexport const PERMISSION_CREATE = 4\nexport const PERMISSION_READ = 1\nexport const PERMISSION_UPDATE = 2\nexport const PERMISSION_DELETE = 8\nexport const PERMISSION_SHARE = 16\nexport const PERMISSION_ALL = 31\nexport const TAG_FAVORITE = '_$!<Favorite>!$_'\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nconst isAdmin = !!window._oc_isadmin\n\n/**\n * Returns whether the current user is an administrator\n *\n * @return {boolean} true if the user is an admin, false otherwise\n * @since 9.0.0\n */\nexport const isUserAdmin = () => isAdmin\n","/**\n * Copyright (c) 2014 Vincent Petry <pvince81@owncloud.com>\n * Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Daniel Kesselberg <mail@danielkesselberg.de>\n * @author Joas Schilling <coding@schilljs.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Morris Jobke <hey@morrisjobke.de>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n * @author Vincent Petry <vincent@nextcloud.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport Handlebars from 'handlebars'\nimport {\n\tloadTranslations,\n\ttranslate,\n\ttranslatePlural,\n\tregister,\n\tunregister,\n} from '@nextcloud/l10n'\n\n/**\n * L10N namespace with localization functions.\n *\n * @namespace OC.L10n\n * @deprecated 26.0.0 use https://www.npmjs.com/package/@nextcloud/l10n\n */\nconst L10n = {\n\n\t/**\n\t * Load an app's translation bundle if not loaded already.\n\t *\n\t * @deprecated 26.0.0 use `loadTranslations` from https://www.npmjs.com/package/@nextcloud/l10n\n\t *\n\t * @param {string} appName name of the app\n\t * @param {Function} callback callback to be called when\n\t * the translations are loaded\n\t * @return {Promise} promise\n\t */\n\tload: loadTranslations,\n\n\t/**\n\t * Register an app's translation bundle.\n\t *\n\t * @deprecated 26.0.0 use `register` from https://www.npmjs.com/package/@nextcloud/l10\n\t *\n\t * @param {string} appName name of the app\n\t * @param {Object<string, string>} bundle bundle\n\t */\n\tregister,\n\n\t/**\n\t * @private\n\t * @deprecated 26.0.0 use `unregister` from https://www.npmjs.com/package/@nextcloud/l10n\n\t */\n\t_unregister: unregister,\n\n\t/**\n\t * Translate a string\n\t *\n\t * @deprecated 26.0.0 use `translate` from https://www.npmjs.com/package/@nextcloud/l10n\n\t *\n\t * @param {string} app the id of the app for which to translate the string\n\t * @param {string} text the string to translate\n\t * @param {object} [vars] map of placeholder key to value\n\t * @param {number} [count] number to replace %n with\n\t * @param {Array} [options] options array\n\t * @param {boolean} [options.escape=true] enable/disable auto escape of placeholders (by default enabled)\n\t * @param {boolean} [options.sanitize=true] enable/disable sanitization (by default enabled)\n\t * @return {string}\n\t */\n\ttranslate,\n\n\t/**\n\t * Translate a plural string\n\t *\n\t * @deprecated 26.0.0 use `translatePlural` from https://www.npmjs.com/package/@nextcloud/l10n\n\t *\n\t * @param {string} app the id of the app for which to translate the string\n\t * @param {string} textSingular the string to translate for exactly one object\n\t * @param {string} textPlural the string to translate for n objects\n\t * @param {number} count number to determine whether to use singular or plural\n\t * @param {object} [vars] map of placeholder key to value\n\t * @param {Array} [options] options array\n\t * @param {boolean} [options.escape=true] enable/disable auto escape of placeholders (by default enabled)\n\t * @return {string} Translated string\n\t */\n\ttranslatePlural,\n}\n\nexport default L10n\n\nHandlebars.registerHelper('t', function(app, text) {\n\treturn translate(app, text)\n})\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author rakekniven <mark.ziegler@rakekniven.de>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport $ from 'jquery'\n\n/**\n * A little class to manage a status field for a \"saving\" process.\n * It can be used to display a starting message (e.g. \"Saving...\") and then\n * replace it with a green success message or a red error message.\n *\n * @namespace OC.msg\n */\nexport default {\n\t/**\n\t * Displayes a \"Saving...\" message in the given message placeholder\n\t *\n\t * @param {object} selector Placeholder to display the message in\n\t */\n\tstartSaving(selector) {\n\t\tthis.startAction(selector, t('core', 'Saving …'))\n\t},\n\n\t/**\n\t * Displayes a custom message in the given message placeholder\n\t *\n\t * @param {object} selector Placeholder to display the message in\n\t * @param {string} message Plain text message to display (no HTML allowed)\n\t */\n\tstartAction(selector, message) {\n\t\t$(selector).text(message)\n\t\t\t.removeClass('success')\n\t\t\t.removeClass('error')\n\t\t\t.stop(true, true)\n\t\t\t.show()\n\t},\n\n\t/**\n\t * Displayes an success/error message in the given selector\n\t *\n\t * @param {object} selector Placeholder to display the message in\n\t * @param {object} response Response of the server\n\t * @param {object} response.data Data of the servers response\n\t * @param {string} response.data.message Plain text message to display (no HTML allowed)\n\t * @param {string} response.status is being used to decide whether the message\n\t * is displayed as an error/success\n\t */\n\tfinishedSaving(selector, response) {\n\t\tthis.finishedAction(selector, response)\n\t},\n\n\t/**\n\t * Displayes an success/error message in the given selector\n\t *\n\t * @param {object} selector Placeholder to display the message in\n\t * @param {object} response Response of the server\n\t * @param {object} response.data Data of the servers response\n\t * @param {string} response.data.message Plain text message to display (no HTML allowed)\n\t * @param {string} response.status is being used to decide whether the message\n\t * is displayed as an error/success\n\t */\n\tfinishedAction(selector, response) {\n\t\tif (response.status === 'success') {\n\t\t\tthis.finishedSuccess(selector, response.data.message)\n\t\t} else {\n\t\t\tthis.finishedError(selector, response.data.message)\n\t\t}\n\t},\n\n\t/**\n\t * Displayes an success message in the given selector\n\t *\n\t * @param {object} selector Placeholder to display the message in\n\t * @param {string} message Plain text success message to display (no HTML allowed)\n\t */\n\tfinishedSuccess(selector, message) {\n\t\t$(selector).text(message)\n\t\t\t.addClass('success')\n\t\t\t.removeClass('error')\n\t\t\t.stop(true, true)\n\t\t\t.delay(3000)\n\t\t\t.fadeOut(900)\n\t\t\t.show()\n\t},\n\n\t/**\n\t * Displayes an error message in the given selector\n\t *\n\t * @param {object} selector Placeholder to display the message in\n\t * @param {string} message Plain text error message to display (no HTML allowed)\n\t */\n\tfinishedError(selector, message) {\n\t\t$(selector).text(message)\n\t\t\t.addClass('error')\n\t\t\t.removeClass('success')\n\t\t\t.show()\n\t},\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport _ from 'underscore'\nimport $ from 'jquery'\nimport moment from 'moment'\nimport { generateUrl } from '@nextcloud/router'\n\nimport OC from './index'\n\n/**\n * @namespace OC.PasswordConfirmation\n */\nexport default {\n\tcallback: null,\n\n\tpageLoadTime: null,\n\n\tinit() {\n\t\t$('.password-confirm-required').on('click', _.bind(this.requirePasswordConfirmation, this))\n\t\tthis.pageLoadTime = moment.now()\n\t},\n\n\trequiresPasswordConfirmation() {\n\t\tconst serverTimeDiff = this.pageLoadTime - (window.nc_pageLoad * 1000)\n\t\tconst timeSinceLogin = moment.now() - (serverTimeDiff + (window.nc_lastLogin * 1000))\n\n\t\t// if timeSinceLogin > 30 minutes and user backend allows password confirmation\n\t\treturn (window.backendAllowsPasswordConfirmation && timeSinceLogin > 30 * 60 * 1000)\n\t},\n\n\t/**\n\t * @param {Function} callback success callback function\n\t * @param {object} options options\n\t * @param {Function} rejectCallback error callback function\n\t */\n\trequirePasswordConfirmation(callback, options, rejectCallback) {\n\t\toptions = typeof options !== 'undefined' ? options : {}\n\t\tconst defaults = {\n\t\t\ttitle: t('core', 'Authentication required'),\n\t\t\ttext: t(\n\t\t\t\t'core',\n\t\t\t\t'This action requires you to confirm your password'\n\t\t\t),\n\t\t\tconfirm: t('core', 'Confirm'),\n\t\t\tlabel: t('core', 'Password'),\n\t\t\terror: '',\n\t\t}\n\n\t\tconst config = _.extend(defaults, options)\n\n\t\tconst self = this\n\n\t\tif (this.requiresPasswordConfirmation()) {\n\t\t\tOC.dialogs.prompt(\n\t\t\t\tconfig.text,\n\t\t\t\tconfig.title,\n\t\t\t\tfunction(result, password) {\n\t\t\t\t\tif (result && password !== '') {\n\t\t\t\t\t\tself._confirmPassword(password, config)\n\t\t\t\t\t} else if (_.isFunction(rejectCallback)) {\n\t\t\t\t\t\trejectCallback()\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\ttrue,\n\t\t\t\tconfig.label,\n\t\t\t\ttrue\n\t\t\t).then(function() {\n\t\t\t\tconst $dialog = $('.oc-dialog:visible')\n\t\t\t\t$dialog.find('.ui-icon').remove()\n\t\t\t\t$dialog.addClass('password-confirmation')\n\t\t\t\tif (config.error !== '') {\n\t\t\t\t\tconst $error = $('<p></p>').addClass('msg warning').text(config.error)\n\t\t\t\t\t$dialog.find('.oc-dialog-content').append($error)\n\t\t\t\t}\n\t\t\t\t$dialog.find('.oc-dialog-buttonrow').addClass('aside')\n\n\t\t\t\tconst $buttons = $dialog.find('button')\n\t\t\t\t$buttons.eq(0).hide()\n\t\t\t\t$buttons.eq(1).text(config.confirm)\n\t\t\t})\n\t\t}\n\n\t\tthis.callback = callback\n\t},\n\n\t_confirmPassword(password, config) {\n\t\tconst self = this\n\n\t\t$.ajax({\n\t\t\turl: generateUrl('/login/confirm'),\n\t\t\tdata: {\n\t\t\t\tpassword,\n\t\t\t},\n\t\t\ttype: 'POST',\n\t\t\tsuccess(response) {\n\t\t\t\twindow.nc_lastLogin = response.lastLogin\n\n\t\t\t\tif (_.isFunction(self.callback)) {\n\t\t\t\t\tself.callback()\n\t\t\t\t}\n\t\t\t},\n\t\t\terror() {\n\t\t\t\tconfig.error = t('core', 'Failed to authenticate, try again')\n\t\t\t\tOC.PasswordConfirmation.requirePasswordConfirmation(self.callback, config)\n\t\t\t},\n\t\t})\n\t},\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nexport const theme = window._theme || {}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport _ from 'underscore'\nimport OC from './index'\n\n/**\n * Utility class for the history API,\n * includes fallback to using the URL hash when\n * the browser doesn't support the history API.\n *\n * @namespace OC.Util.History\n */\nexport default {\n\n\t_handlers: [],\n\n\t/**\n\t * Push the current URL parameters to the history stack\n\t * and change the visible URL.\n\t * Note: this includes a workaround for IE8/IE9 that uses\n\t * the hash part instead of the search part.\n\t *\n\t * @param {object | string} params to append to the URL, can be either a string\n\t * or a map\n\t * @param {string} [url] URL to be used, otherwise the current URL will be used,\n\t * using the params as query string\n\t * @param {boolean} [replace=false] whether to replace instead of pushing\n\t */\n\t_pushState(params, url, replace) {\n\t\tlet strParams\n\t\tif (typeof (params) === 'string') {\n\t\t\tstrParams = params\n\t\t} else {\n\t\t\tstrParams = OC.buildQueryString(params)\n\t\t}\n\n\t\tif (window.history.pushState) {\n\t\t\turl = url || location.pathname + '?' + strParams\n\t\t\t// Workaround for bug with SVG and window.history.pushState on Firefox < 51\n\t\t\t// https://bugzilla.mozilla.org/show_bug.cgi?id=652991\n\t\t\tconst isFirefox = navigator.userAgent.toLowerCase().indexOf('firefox') > -1\n\t\t\tif (isFirefox && parseInt(navigator.userAgent.split('/').pop()) < 51) {\n\t\t\t\tconst patterns = document.querySelectorAll('[fill^=\"url(#\"], [stroke^=\"url(#\"], [filter^=\"url(#invert\"]')\n\t\t\t\tfor (let i = 0, ii = patterns.length, pattern; i < ii; i++) {\n\t\t\t\t\tpattern = patterns[i]\n\t\t\t\t\t// eslint-disable-next-line no-self-assign\n\t\t\t\t\tpattern.style.fill = pattern.style.fill\n\t\t\t\t\t// eslint-disable-next-line no-self-assign\n\t\t\t\t\tpattern.style.stroke = pattern.style.stroke\n\t\t\t\t\tpattern.removeAttribute('filter')\n\t\t\t\t\tpattern.setAttribute('filter', 'url(#invert)')\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (replace) {\n\t\t\t\twindow.history.replaceState(params, '', url)\n\t\t\t} else {\n\t\t\t\twindow.history.pushState(params, '', url)\n\t\t\t}\n\t\t} else {\n\t\t\t// use URL hash for IE8\n\t\t\twindow.location.hash = '?' + strParams\n\t\t\t// inhibit next onhashchange that just added itself\n\t\t\t// to the event queue\n\t\t\tthis._cancelPop = true\n\t\t}\n\t},\n\n\t/**\n\t * Push the current URL parameters to the history stack\n\t * and change the visible URL.\n\t * Note: this includes a workaround for IE8/IE9 that uses\n\t * the hash part instead of the search part.\n\t *\n\t * @param {object | string} params to append to the URL, can be either a string or a map\n\t * @param {string} [url] URL to be used, otherwise the current URL will be used, using the params as query string\n\t */\n\tpushState(params, url) {\n\t\tthis._pushState(params, url, false)\n\t},\n\n\t/**\n\t * Push the current URL parameters to the history stack\n\t * and change the visible URL.\n\t * Note: this includes a workaround for IE8/IE9 that uses\n\t * the hash part instead of the search part.\n\t *\n\t * @param {object | string} params to append to the URL, can be either a string\n\t * or a map\n\t * @param {string} [url] URL to be used, otherwise the current URL will be used,\n\t * using the params as query string\n\t */\n\treplaceState(params, url) {\n\t\tthis._pushState(params, url, true)\n\t},\n\n\t/**\n\t * Add a popstate handler\n\t *\n\t * @param {Function} handler handler\n\t */\n\taddOnPopStateHandler(handler) {\n\t\tthis._handlers.push(handler)\n\t},\n\n\t/**\n\t * Parse a query string from the hash part of the URL.\n\t * (workaround for IE8 / IE9)\n\t *\n\t * @return {string}\n\t */\n\t_parseHashQuery() {\n\t\tconst hash = window.location.hash\n\t\tconst pos = hash.indexOf('?')\n\t\tif (pos >= 0) {\n\t\t\treturn hash.substr(pos + 1)\n\t\t}\n\t\tif (hash.length) {\n\t\t\t// remove hash sign\n\t\t\treturn hash.substr(1)\n\t\t}\n\t\treturn ''\n\t},\n\n\t_decodeQuery(query) {\n\t\treturn query.replace(/\\+/g, ' ')\n\t},\n\n\t/**\n\t * Parse the query/search part of the URL.\n\t * Also try and parse it from the URL hash (for IE8)\n\t *\n\t * @return {object} map of parameters\n\t */\n\tparseUrlQuery() {\n\t\tconst query = this._parseHashQuery()\n\t\tlet params\n\t\t// try and parse from URL hash first\n\t\tif (query) {\n\t\t\tparams = OC.parseQueryString(this._decodeQuery(query))\n\t\t}\n\t\t// else read from query attributes\n\t\tparams = _.extend(params || {}, OC.parseQueryString(this._decodeQuery(location.search)))\n\t\treturn params || {}\n\t},\n\n\t_onPopState(e) {\n\t\tif (this._cancelPop) {\n\t\t\tthis._cancelPop = false\n\t\t\treturn\n\t\t}\n\t\tlet params\n\t\tif (!this._handlers.length) {\n\t\t\treturn\n\t\t}\n\t\tparams = (e && e.state)\n\t\tif (_.isString(params)) {\n\t\t\tparams = OC.parseQueryString(params)\n\t\t} else if (!params) {\n\t\t\tparams = this.parseUrlQuery() || {}\n\t\t}\n\t\tfor (let i = 0; i < this._handlers.length; i++) {\n\t\t\tthis._handlers[i](params)\n\t\t}\n\t},\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport moment from 'moment'\n\nimport History from './util-history'\nimport OC from './index'\nimport { formatFileSize as humanFileSize } from '@nextcloud/files'\n\n/**\n * @param {any} t -\n */\nfunction chunkify(t) {\n\t// Adapted from http://my.opera.com/GreyWyvern/blog/show.dml/1671288\n\tconst tz = []\n\tlet x = 0\n\tlet y = -1\n\tlet n = 0\n\tlet c\n\n\twhile (x < t.length) {\n\t\tc = t.charAt(x)\n\t\t// only include the dot in strings\n\t\tconst m = ((!n && c === '.') || (c >= '0' && c <= '9'))\n\t\tif (m !== n) {\n\t\t\t// next chunk\n\t\t\ty++\n\t\t\ttz[y] = ''\n\t\t\tn = m\n\t\t}\n\t\ttz[y] += c\n\t\tx++\n\t}\n\treturn tz\n}\n\n/**\n * Utility functions\n *\n * @namespace OC.Util\n */\nexport default {\n\n\tHistory,\n\n\t/**\n\t * @deprecated use https://nextcloud.github.io/nextcloud-files/modules/_humanfilesize_.html#formatfilesize\n\t */\n\thumanFileSize,\n\n\t/**\n\t * Returns a file size in bytes from a humanly readable string\n\t * Makes 2kB to 2048.\n\t * Inspired by computerFileSize in helper.php\n\t *\n\t * @param {string} string file size in human readable format\n\t * @return {number} or null if string could not be parsed\n\t *\n\t *\n\t */\n\tcomputerFileSize(string) {\n\t\tif (typeof string !== 'string') {\n\t\t\treturn null\n\t\t}\n\n\t\tconst s = string.toLowerCase().trim()\n\t\tlet bytes = null\n\n\t\tconst bytesArray = {\n\t\t\tb: 1,\n\t\t\tk: 1024,\n\t\t\tkb: 1024,\n\t\t\tmb: 1024 * 1024,\n\t\t\tm: 1024 * 1024,\n\t\t\tgb: 1024 * 1024 * 1024,\n\t\t\tg: 1024 * 1024 * 1024,\n\t\t\ttb: 1024 * 1024 * 1024 * 1024,\n\t\t\tt: 1024 * 1024 * 1024 * 1024,\n\t\t\tpb: 1024 * 1024 * 1024 * 1024 * 1024,\n\t\t\tp: 1024 * 1024 * 1024 * 1024 * 1024,\n\t\t}\n\n\t\tconst matches = s.match(/^[\\s+]?([0-9]*)(\\.([0-9]+))?( +)?([kmgtp]?b?)$/i)\n\t\tif (matches !== null) {\n\t\t\tbytes = parseFloat(s)\n\t\t\tif (!isFinite(bytes)) {\n\t\t\t\treturn null\n\t\t\t}\n\t\t} else {\n\t\t\treturn null\n\t\t}\n\t\tif (matches[5]) {\n\t\t\tbytes = bytes * bytesArray[matches[5]]\n\t\t}\n\n\t\tbytes = Math.round(bytes)\n\t\treturn bytes\n\t},\n\n\t/**\n\t * @param {string|number} timestamp timestamp\n\t * @param {string} format date format, see momentjs docs\n\t * @return {string} timestamp formatted as requested\n\t */\n\tformatDate(timestamp, format) {\n\t\tif (window.TESTING === undefined) {\n\t\t\tconsole.warn('OC.Util.formatDate is deprecated and will be removed in Nextcloud 21. See @nextcloud/moment')\n\t\t}\n\t\tformat = format || 'LLL'\n\t\treturn moment(timestamp).format(format)\n\t},\n\n\t/**\n\t * @param {string|number} timestamp timestamp\n\t * @return {string} human readable difference from now\n\t */\n\trelativeModifiedDate(timestamp) {\n\t\tif (window.TESTING === undefined) {\n\t\t\tconsole.warn('OC.Util.relativeModifiedDate is deprecated and will be removed in Nextcloud 21. See @nextcloud/moment')\n\t\t}\n\t\tconst diff = moment().diff(moment(timestamp))\n\t\tif (diff >= 0 && diff < 45000) {\n\t\t\treturn t('core', 'seconds ago')\n\t\t}\n\t\treturn moment(timestamp).fromNow()\n\t},\n\n\t/**\n\t * Returns the width of a generic browser scrollbar\n\t *\n\t * @return {number} width of scrollbar\n\t */\n\tgetScrollBarWidth() {\n\t\tif (this._scrollBarWidth) {\n\t\t\treturn this._scrollBarWidth\n\t\t}\n\n\t\tconst inner = document.createElement('p')\n\t\tinner.style.width = '100%'\n\t\tinner.style.height = '200px'\n\n\t\tconst outer = document.createElement('div')\n\t\touter.style.position = 'absolute'\n\t\touter.style.top = '0px'\n\t\touter.style.left = '0px'\n\t\touter.style.visibility = 'hidden'\n\t\touter.style.width = '200px'\n\t\touter.style.height = '150px'\n\t\touter.style.overflow = 'hidden'\n\t\touter.appendChild(inner)\n\n\t\tdocument.body.appendChild(outer)\n\t\tconst w1 = inner.offsetWidth\n\t\touter.style.overflow = 'scroll'\n\t\tlet w2 = inner.offsetWidth\n\t\tif (w1 === w2) {\n\t\t\tw2 = outer.clientWidth\n\t\t}\n\n\t\tdocument.body.removeChild(outer)\n\n\t\tthis._scrollBarWidth = (w1 - w2)\n\n\t\treturn this._scrollBarWidth\n\t},\n\n\t/**\n\t * Remove the time component from a given date\n\t *\n\t * @param {Date} date date\n\t * @return {Date} date with stripped time\n\t */\n\tstripTime(date) {\n\t\t// FIXME: likely to break when crossing DST\n\t\t// would be better to use a library like momentJS\n\t\treturn new Date(date.getFullYear(), date.getMonth(), date.getDate())\n\t},\n\n\t/**\n\t * Compare two strings to provide a natural sort\n\t *\n\t * @param {string} a first string to compare\n\t * @param {string} b second string to compare\n\t * @return {number} -1 if b comes before a, 1 if a comes before b\n\t * or 0 if the strings are identical\n\t */\n\tnaturalSortCompare(a, b) {\n\t\tlet x\n\t\tconst aa = chunkify(a)\n\t\tconst bb = chunkify(b)\n\n\t\tfor (x = 0; aa[x] && bb[x]; x++) {\n\t\t\tif (aa[x] !== bb[x]) {\n\t\t\t\tconst aNum = Number(aa[x]); const bNum = Number(bb[x])\n\t\t\t\t// note: == is correct here\n\t\t\t\t/* eslint-disable-next-line */\n\t\t\t\tif (aNum == aa[x] && bNum == bb[x]) {\n\t\t\t\t\treturn aNum - bNum\n\t\t\t\t} else {\n\t\t\t\t\t// Note: This locale setting isn't supported by all browsers but for the ones\n\t\t\t\t\t// that do there will be more consistency between client-server sorting\n\t\t\t\t\treturn aa[x].localeCompare(bb[x], OC.getLanguage())\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn aa.length - bb.length\n\t},\n\n\t/**\n\t * Calls the callback in a given interval until it returns true\n\t *\n\t * @param {Function} callback function to call on success\n\t * @param {number} interval in milliseconds\n\t */\n\twaitFor(callback, interval) {\n\t\tconst internalCallback = function() {\n\t\t\tif (callback() !== true) {\n\t\t\t\tsetTimeout(internalCallback, interval)\n\t\t\t}\n\t\t}\n\n\t\tinternalCallback()\n\t},\n\n\t/**\n\t * Checks if a cookie with the given name is present and is set to the provided value.\n\t *\n\t * @param {string} name name of the cookie\n\t * @param {string} value value of the cookie\n\t * @return {boolean} true if the cookie with the given name has the given value\n\t */\n\tisCookieSetToValue(name, value) {\n\t\tconst cookies = document.cookie.split(';')\n\t\tfor (let i = 0; i < cookies.length; i++) {\n\t\t\tconst cookie = cookies[i].split('=')\n\t\t\tif (cookie[0].trim() === name && cookie[1].trim() === value) {\n\t\t\t\treturn true\n\t\t\t}\n\t\t}\n\t\treturn false\n\t},\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nconst base = window._oc_debug\n\nexport const debug = base\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nlet webroot = window._oc_webroot\n\nif (typeof webroot === 'undefined') {\n\twebroot = location.pathname\n\tconst pos = webroot.indexOf('/index.php/')\n\tif (pos !== -1) {\n\t\twebroot = webroot.substr(0, pos)\n\t} else {\n\t\twebroot = webroot.substr(0, webroot.lastIndexOf('/'))\n\t}\n}\n\nexport default webroot\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nexport const get = context => name => {\n\tconst namespaces = name.split('.')\n\tconst tail = namespaces.pop()\n\n\tfor (let i = 0; i < namespaces.length; i++) {\n\t\tcontext = context[namespaces[i]]\n\t\tif (!context) {\n\t\t\treturn false\n\t\t}\n\t}\n\treturn context[tail]\n}\n\n/**\n * Set a variable by name\n *\n * @param {string} context context\n * @return {Function} setter\n * @deprecated 19.0.0 use https://lodash.com/docs#set\n */\nexport const set = context => (name, value) => {\n\tconst namespaces = name.split('.')\n\tconst tail = namespaces.pop()\n\n\tfor (let i = 0; i < namespaces.length; i++) {\n\t\tif (!context[namespaces[i]]) {\n\t\t\tcontext[namespaces[i]] = {}\n\t\t}\n\t\tcontext = context[namespaces[i]]\n\t}\n\tcontext[tail] = value\n\treturn value\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { subscribe } from '@nextcloud/event-bus'\n\nimport { addScript, addStyle } from './legacy-loader'\nimport {\n\tajaxConnectionLostHandler,\n\tprocessAjaxError,\n\tregisterXHRForErrorProcessing,\n} from './xhr-error'\nimport Apps from './apps'\nimport { AppConfig, appConfig } from './appconfig'\nimport { appSettings } from './appsettings'\nimport appswebroots from './appswebroots'\nimport Backbone from './backbone'\nimport {\n\tbasename,\n\tdirname,\n\tencodePath,\n\tisSamePath,\n\tjoinPaths,\n} from '@nextcloud/paths'\nimport {\n\tbuild as buildQueryString,\n\tparse as parseQueryString,\n} from './query-string'\nimport Config from './config'\nimport {\n\tcoreApps,\n\tmenuSpeed,\n\tPERMISSION_ALL,\n\tPERMISSION_CREATE,\n\tPERMISSION_DELETE,\n\tPERMISSION_NONE,\n\tPERMISSION_READ,\n\tPERMISSION_SHARE,\n\tPERMISSION_UPDATE,\n\tTAG_FAVORITE,\n} from './constants'\nimport ContactsMenu from './contactsmenu'\nimport { currentUser, getCurrentUser } from './currentuser'\nimport Dialogs from './dialogs'\nimport EventSource from './eventsource'\nimport { get, set } from './get_set'\nimport { getCapabilities } from './capabilities'\nimport {\n\tgetHost,\n\tgetHostName,\n\tgetPort,\n\tgetProtocol,\n} from './host'\nimport {\n\tgetToken as getRequestToken,\n} from './requesttoken'\nimport {\n\thideMenus,\n\tregisterMenu,\n\tshowMenu,\n\tunregisterMenu,\n} from './menu'\nimport { isUserAdmin } from './admin'\nimport L10N from './l10n'\nimport {\n\tgetCanonicalLocale,\n\tgetLanguage,\n\tgetLocale,\n} from '@nextcloud/l10n'\n\nimport {\n\tgenerateUrl,\n\tgenerateFilePath,\n\tgenerateOcsUrl,\n\tgenerateRemoteUrl,\n\tgetRootUrl,\n\timagePath,\n\tlinkTo,\n} from '@nextcloud/router'\n\nimport {\n\tlinkToRemoteBase,\n} from './routing'\nimport msg from './msg'\nimport Notification from './notification'\nimport PasswordConfirmation from './password-confirmation'\nimport Plugins from './plugins'\nimport { theme } from './theme'\nimport Util from './util'\nimport { debug } from './debug'\nimport { redirect, reload } from './navigation'\nimport webroot from './webroot'\n\n/** @namespace OC */\nexport default {\n\t/*\n\t * Constants\n\t */\n\tcoreApps,\n\tmenuSpeed,\n\tPERMISSION_ALL,\n\tPERMISSION_CREATE,\n\tPERMISSION_DELETE,\n\tPERMISSION_NONE,\n\tPERMISSION_READ,\n\tPERMISSION_SHARE,\n\tPERMISSION_UPDATE,\n\tTAG_FAVORITE,\n\n\t/*\n\t * Deprecated helpers to be removed\n\t */\n\t/**\n\t * Check if a user file is allowed to be handled.\n\t *\n\t * @param {string} file to check\n\t * @return {boolean}\n\t * @deprecated 17.0.0\n\t */\n\tfileIsBlacklisted: file => !!(file.match(Config.blacklist_files_regex)),\n\n\taddScript,\n\taddStyle,\n\tApps,\n\tAppConfig,\n\tappConfig,\n\tappSettings,\n\tappswebroots,\n\tBackbone,\n\tContactsMenu,\n\tconfig: Config,\n\t/**\n\t * Currently logged in user or null if none\n\t *\n\t * @type {string}\n\t * @deprecated use `getCurrentUser` from https://www.npmjs.com/package/@nextcloud/auth\n\t */\n\tcurrentUser,\n\tdialogs: Dialogs,\n\tEventSource,\n\t/**\n\t * Returns the currently logged in user or null if there is no logged in\n\t * user (public page mode)\n\t *\n\t * @since 9.0.0\n\t * @deprecated 19.0.0 use `getCurrentUser` from https://www.npmjs.com/package/@nextcloud/auth\n\t */\n\tgetCurrentUser,\n\tisUserAdmin,\n\tL10N,\n\n\t/**\n\t * Ajax error handlers\n\t *\n\t * @todo remove from here and keep internally -> requires new tests\n\t */\n\t_ajaxConnectionLostHandler: ajaxConnectionLostHandler,\n\t_processAjaxError: processAjaxError,\n\tregisterXHRForErrorProcessing,\n\n\t/**\n\t * Capabilities\n\t *\n\t * @type {Array}\n\t * @deprecated 20.0.0 use @nextcloud/capabilities instead\n\t */\n\tgetCapabilities,\n\n\t/*\n\t * Legacy menu helpers\n\t */\n\thideMenus,\n\tregisterMenu,\n\tshowMenu,\n\tunregisterMenu,\n\n\t/*\n\t * Path helpers\n\t */\n\t/**\n\t * @deprecated 18.0.0 use https://www.npmjs.com/package/@nextcloud/paths\n\t */\n\tbasename,\n\t/**\n\t * @deprecated 18.0.0 use https://www.npmjs.com/package/@nextcloud/paths\n\t */\n\tencodePath,\n\t/**\n\t * @deprecated 18.0.0 use https://www.npmjs.com/package/@nextcloud/paths\n\t */\n\tdirname,\n\t/**\n\t * @deprecated 18.0.0 use https://www.npmjs.com/package/@nextcloud/paths\n\t */\n\tisSamePath,\n\t/**\n\t * @deprecated 18.0.0 use https://www.npmjs.com/package/@nextcloud/paths\n\t */\n\tjoinPaths,\n\n\t/**\n\t * Host (url) helpers\n\t */\n\tgetHost,\n\tgetHostName,\n\tgetPort,\n\tgetProtocol,\n\n\t/**\n\t * @deprecated 20.0.0 use `getCanonicalLocale` from https://www.npmjs.com/package/@nextcloud/l10n\n\t */\n\tgetCanonicalLocale,\n\t/**\n\t * @deprecated 26.0.0 use `getLocale` from https://www.npmjs.com/package/@nextcloud/l10n\n\t */\n\tgetLocale,\n\t/**\n\t * @deprecated 26.0.0 use `getLanguage` from https://www.npmjs.com/package/@nextcloud/l10n\n\t */\n\tgetLanguage,\n\n\t/**\n\t * Query string helpers\n\t */\n\tbuildQueryString,\n\tparseQueryString,\n\n\tmsg,\n\tNotification,\n\tPasswordConfirmation,\n\tPlugins,\n\ttheme,\n\tUtil,\n\tdebug,\n\t/**\n\t * @deprecated 19.0.0 use `generateFilePath` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\tfilePath: generateFilePath,\n\t/**\n\t * @deprecated 19.0.0 use `generateUrl` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\tgenerateUrl,\n\t/**\n\t * @deprecated 19.0.0 use https://lodash.com/docs#get\n\t */\n\tget: get(window),\n\t/**\n\t * @deprecated 19.0.0 use https://lodash.com/docs#set\n\t */\n\tset: set(window),\n\t/**\n\t * @deprecated 19.0.0 use `getRootUrl` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\tgetRootPath: getRootUrl,\n\t/**\n\t * @deprecated 19.0.0 use `imagePath` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\timagePath,\n\tredirect,\n\treload,\n\trequestToken: getRequestToken(),\n\t/**\n\t * @deprecated 19.0.0 use `linkTo` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\tlinkTo,\n\t/**\n\t * @param {string} service service name\n\t * @param {number} version OCS API version\n\t * @return {string} OCS API base path\n\t * @deprecated 19.0.0 use `generateOcsUrl` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\tlinkToOCS: (service, version) => {\n\t\treturn generateOcsUrl(service, {}, {\n\t\t\tocsVersion: version || 1,\n\t\t}) + '/'\n\t},\n\t/**\n\t * @deprecated 19.0.0 use `generateRemoteUrl` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\tlinkToRemote: generateRemoteUrl,\n\tlinkToRemoteBase,\n\t/**\n\t * Relative path to Nextcloud root.\n\t * For example: \"/nextcloud\"\n\t *\n\t * @type {string}\n\t *\n\t * @deprecated 19.0.0 use `getRootUrl` from https://www.npmjs.com/package/@nextcloud/router\n\t * @see OC#getRootPath\n\t */\n\twebroot,\n}\n\n// Keep the request token prop in sync\nsubscribe('csrf-token-update', e => {\n\tOC.requestToken = e.token\n\n\t// Logging might help debug (Sentry) issues\n\tconsole.info('OC.requestToken changed', e.token)\n})\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n/* eslint-disable */\nimport $ from 'jquery'\nimport { filePath } from './routing'\nimport { generateFilePath } from \"@nextcloud/router\"\n\n/**\n * Opens a popup with the setting for an app.\n * @param {string} appid The ID of the app e.g. 'calendar', 'contacts' or 'files'.\n * @param {boolean|string} loadJS If true 'js/settings.js' is loaded. If it's a string\n * it will attempt to load a script by that name in the 'js' directory.\n * @param {boolean} [cache] If true the javascript file won't be forced refreshed. Defaults to true.\n * @param {string} [scriptName] The name of the PHP file to load. Defaults to 'settings.php' in\n * the root of the app directory hierarchy.\n *\n * @deprecated 17.0.0 this method is unused and will be removed with Nextcloud 18\n */\nexport const appSettings = args => {\n\tconsole.warn('OC.appSettings is deprecated and will be removed with Nextcloud 18')\n\n\tif (typeof args === 'undefined' || typeof args.appid === 'undefined') {\n\t\tthrow {\n\t\t\tname: 'MissingParameter',\n\t\t\tmessage: 'The parameter appid is missing'\n\t\t}\n\t}\n\tvar props = { scriptName: 'settings.php', cache: true }\n\t$.extend(props, args)\n\tvar settings = $('#appsettings')\n\tif (settings.length === 0) {\n\t\tthrow {\n\t\t\tname: 'MissingDOMElement',\n\t\t\tmessage: 'There has be be an element with id \"appsettings\" for the popup to show.'\n\t\t}\n\t}\n\tvar popup = $('#appsettings_popup')\n\tif (popup.length === 0) {\n\t\t$('body').prepend('<div class=\"popup hidden\" id=\"appsettings_popup\"></div>')\n\t\tpopup = $('#appsettings_popup')\n\t\tpopup.addClass(settings.hasClass('topright') ? 'topright' : 'bottomleft')\n\t}\n\tif (popup.is(':visible')) {\n\t\tpopup.hide().remove()\n\t} else {\n\t\tconst arrowclass = settings.hasClass('topright') ? 'up' : 'left'\n\t\t$.get(generateFilePath(props.appid, '', props.scriptName), function(data) {\n\t\t\tpopup.html(data).ready(function() {\n\t\t\t\tpopup.prepend('<span class=\"arrow ' + arrowclass + '\"></span><h2>' + t('core', 'Settings') + '</h2><a class=\"close\"></a>').show()\n\t\t\t\tpopup.find('.close').bind('click', function() {\n\t\t\t\t\tpopup.remove()\n\t\t\t\t})\n\t\t\t\tif (typeof props.loadJS !== 'undefined') {\n\t\t\t\t\tvar scriptname\n\t\t\t\t\tif (props.loadJS === true) {\n\t\t\t\t\t\tscriptname = 'settings.js'\n\t\t\t\t\t} else if (typeof props.loadJS === 'string') {\n\t\t\t\t\t\tscriptname = props.loadJS\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthrow {\n\t\t\t\t\t\t\tname: 'InvalidParameter',\n\t\t\t\t\t\t\tmessage: 'The \"loadJS\" parameter must be either boolean or a string.'\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (props.cache) {\n\t\t\t\t\t\t$.ajaxSetup({ cache: true })\n\t\t\t\t\t}\n\t\t\t\t\t$.getScript(generateFilePath(props.appid, 'js', scriptname))\n\t\t\t\t\t\t.fail(function(jqxhr, settings, e) {\n\t\t\t\t\t\t\tthrow e\n\t\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}).show()\n\t\t}, 'html')\n\t}\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { getCapabilities as realGetCapabilities } from '@nextcloud/capabilities'\n\n/**\n * Returns the capabilities\n *\n * @return {Array} capabilities\n *\n * @since 14.0.0\n */\nexport const getCapabilities = () => {\n\tconsole.warn('OC.getCapabilities is deprecated and will be removed in Nextcloud 21. See @nextcloud/capabilities')\n\treturn realGetCapabilities()\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nexport const getProtocol = () => window.location.protocol.split(':')[0]\n\n/**\n * Returns the host used to access this Nextcloud instance\n * Host is sometimes the same as the hostname but now always.\n *\n * Examples:\n * http://example.com => example.com\n * https://example.com => example.com\n * http://example.com:8080 => example.com:8080\n *\n * @return {string} host\n *\n * @since 8.2.0\n * @deprecated 17.0.0 use window.location.host directly\n */\nexport const getHost = () => window.location.host\n\n/**\n * Returns the hostname used to access this Nextcloud instance\n * The hostname is always stripped of the port\n *\n * @return {string} hostname\n * @since 9.0.0\n * @deprecated 17.0.0 use window.location.hostname directly\n */\nexport const getHostName = () => window.location.hostname\n\n/**\n * Returns the port number used to access this Nextcloud instance\n *\n * @return {number} port number\n *\n * @since 8.2.0\n * @deprecated 17.0.0 use window.location.port directly\n */\nexport const getPort = () => window.location.port\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport $ from 'jquery'\n\n/**\n * Parses a URL query string into a JS map\n *\n * @param {string} queryString query string in the format param1=1234¶m2=abcde¶m3=xyz\n * @return {Object<string, string>} map containing key/values matching the URL parameters\n */\nexport const parse = queryString => {\n\tlet pos\n\tlet components\n\tconst result = {}\n\tlet key\n\tif (!queryString) {\n\t\treturn null\n\t}\n\tpos = queryString.indexOf('?')\n\tif (pos >= 0) {\n\t\tqueryString = queryString.substr(pos + 1)\n\t}\n\tconst parts = queryString.replace(/\\+/g, '%20').split('&')\n\tfor (let i = 0; i < parts.length; i++) {\n\t\t// split on first equal sign\n\t\tconst part = parts[i]\n\t\tpos = part.indexOf('=')\n\t\tif (pos >= 0) {\n\t\t\tcomponents = [\n\t\t\t\tpart.substr(0, pos),\n\t\t\t\tpart.substr(pos + 1),\n\t\t\t]\n\t\t} else {\n\t\t\t// key only\n\t\t\tcomponents = [part]\n\t\t}\n\t\tif (!components.length) {\n\t\t\tcontinue\n\t\t}\n\t\tkey = decodeURIComponent(components[0])\n\t\tif (!key) {\n\t\t\tcontinue\n\t\t}\n\t\t// if equal sign was there, return string\n\t\tif (components.length > 1) {\n\t\t\tresult[key] = decodeURIComponent(components[1])\n\t\t} else {\n\t\t\t// no equal sign => null value\n\t\t\tresult[key] = null\n\t\t}\n\t}\n\treturn result\n}\n\n/**\n * Builds a URL query from a JS map.\n *\n * @param {Object<string, string>} params map containing key/values matching the URL parameters\n * @return {string} String containing a URL query (without question) mark\n */\nexport const build = params => {\n\tif (!params) {\n\t\treturn ''\n\t}\n\treturn $.map(params, function(value, key) {\n\t\tlet s = encodeURIComponent(key)\n\t\tif (value !== null && typeof (value) !== 'undefined') {\n\t\t\ts += '=' + encodeURIComponent(value)\n\t\t}\n\t\treturn s\n\t}).join('&')\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nexport default {\n\n\t/**\n\t * @type {Array.<OC.Plugin>}\n\t */\n\t_plugins: {},\n\n\t/**\n\t * Register plugin\n\t *\n\t * @param {string} targetName app name / class name to hook into\n\t * @param {OC.Plugin} plugin plugin\n\t */\n\tregister(targetName, plugin) {\n\t\tlet plugins = this._plugins[targetName]\n\t\tif (!plugins) {\n\t\t\tplugins = this._plugins[targetName] = []\n\t\t}\n\t\tplugins.push(plugin)\n\t},\n\n\t/**\n\t * Returns all plugin registered to the given target\n\t * name / app name / class name.\n\t *\n\t * @param {string} targetName app name / class name to hook into\n\t * @return {Array.<OC.Plugin>} array of plugins\n\t */\n\tgetPlugins(targetName) {\n\t\treturn this._plugins[targetName] || []\n\t},\n\n\t/**\n\t * Call attach() on all plugins registered to the given target name.\n\t *\n\t * @param {string} targetName app name / class name\n\t * @param {object} targetObject to be extended\n\t * @param {object} [options] options\n\t */\n\tattach(targetName, targetObject, options) {\n\t\tconst plugins = this.getPlugins(targetName)\n\t\tfor (let i = 0; i < plugins.length; i++) {\n\t\t\tif (plugins[i].attach) {\n\t\t\t\tplugins[i].attach(targetObject, options)\n\t\t\t}\n\t\t}\n\t},\n\n\t/**\n\t * Call detach() on all plugins registered to the given target name.\n\t *\n\t * @param {string} targetName app name / class name\n\t * @param {object} targetObject to be extended\n\t * @param {object} [options] options\n\t */\n\tdetach(targetName, targetObject, options) {\n\t\tconst plugins = this.getPlugins(targetName)\n\t\tfor (let i = 0; i < plugins.length; i++) {\n\t\t\tif (plugins[i].detach) {\n\t\t\t\tplugins[i].detach(targetObject, options)\n\t\t\t}\n\t\t}\n\t},\n\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nexport const redirect = targetURL => { window.location = targetURL }\n\n/**\n * Reloads the current page\n *\n * @deprecated 17.0.0 use window.location.reload directly\n */\nexport const reload = () => { window.location.reload() }\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport {\n\tgetRootUrl as realGetRootUrl,\n} from '@nextcloud/router'\n\n/**\n * Creates a relative url for remote use\n *\n * @param {string} service id\n * @return {string} the url\n */\nexport const linkToRemoteBase = service => {\n\treturn realGetRootUrl() + '/remote.php/' + service\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport $ from 'jquery'\nimport { emit } from '@nextcloud/event-bus'\nimport { loadState } from '@nextcloud/initial-state'\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { generateUrl } from '@nextcloud/router'\n\nimport OC from './OC'\nimport { setToken as setRequestToken, getToken as getRequestToken } from './OC/requesttoken'\n\nlet config = null\n/**\n * The legacy jsunit tests overwrite OC.config before calling initCore\n * therefore we need to wait with assigning the config fallback until initCore calls initSessionHeartBeat\n */\nconst loadConfig = () => {\n\ttry {\n\t\tconfig = loadState('core', 'config')\n\t} catch (e) {\n\t\t// This fallback is just for our legacy jsunit tests since we have no way to mock loadState calls\n\t\tconfig = OC.config\n\t}\n}\n\n/**\n * session heartbeat (defaults to enabled)\n *\n * @return {boolean}\n */\nconst keepSessionAlive = () => {\n\treturn config.session_keepalive === undefined\n\t\t|| !!config.session_keepalive\n}\n\n/**\n * get interval in seconds\n *\n * @return {number}\n */\nconst getInterval = () => {\n\tlet interval = NaN\n\tif (config.session_lifetime) {\n\t\tinterval = Math.floor(config.session_lifetime / 2)\n\t}\n\n\t// minimum one minute, max 24 hours, default 15 minutes\n\treturn Math.min(\n\t\t24 * 3600,\n\t\tMath.max(\n\t\t\t60,\n\t\t\tisNaN(interval) ? 900 : interval\n\t\t)\n\t)\n}\n\nconst getToken = async () => {\n\tconst url = generateUrl('/csrftoken')\n\n\t// Not using Axios here as Axios is not stubbable with the sinon fake server\n\t// see https://stackoverflow.com/questions/41516044/sinon-mocha-test-with-async-ajax-calls-didnt-return-promises\n\t// see js/tests/specs/coreSpec.js for the tests\n\tconst resp = await $.get(url)\n\n\treturn resp.token\n}\n\nconst poll = async () => {\n\ttry {\n\t\tconst token = await getToken()\n\t\tsetRequestToken(token)\n\t} catch (e) {\n\t\tconsole.error('session heartbeat failed', e)\n\t}\n}\n\nconst startPolling = () => {\n\tconst interval = setInterval(poll, getInterval() * 1000)\n\n\tconsole.info('session heartbeat polling started')\n\n\treturn interval\n}\n\nconst registerAutoLogout = () => {\n\tif (!config.auto_logout || !getCurrentUser()) {\n\t\treturn\n\t}\n\n\tlet lastActive = Date.now()\n\twindow.addEventListener('mousemove', e => {\n\t\tlastActive = Date.now()\n\t\tlocalStorage.setItem('lastActive', lastActive)\n\t})\n\n\twindow.addEventListener('touchstart', e => {\n\t\tlastActive = Date.now()\n\t\tlocalStorage.setItem('lastActive', lastActive)\n\t})\n\n\twindow.addEventListener('storage', e => {\n\t\tif (e.key !== 'lastActive') {\n\t\t\treturn\n\t\t}\n\t\tlastActive = e.newValue\n\t})\n\n\tsetInterval(function() {\n\t\tconst timeout = Date.now() - config.session_lifetime * 1000\n\t\tif (lastActive < timeout) {\n\t\t\tconsole.info('Inactivity timout reached, logging out')\n\t\t\tconst logoutUrl = generateUrl('/logout') + '?requesttoken=' + encodeURIComponent(getRequestToken())\n\t\t\twindow.location = logoutUrl\n\t\t}\n\t}, 1000)\n}\n\n/**\n * Calls the server periodically to ensure that session and CSRF\n * token doesn't expire\n */\nexport const initSessionHeartBeat = () => {\n\tloadConfig()\n\n\tregisterAutoLogout()\n\n\tif (!keepSessionAlive()) {\n\t\tconsole.info('session heartbeat disabled')\n\t\treturn\n\t}\n\tlet interval = startPolling()\n\n\twindow.addEventListener('online', async () => {\n\t\tconsole.info('browser is online again, resuming heartbeat')\n\t\tinterval = startPolling()\n\t\ttry {\n\t\t\tawait poll()\n\t\t\tconsole.info('session token successfully updated after resuming network')\n\n\t\t\t// Let apps know we're online and requests will have the new token\n\t\t\temit('networkOnline', {\n\t\t\t\tsuccess: true,\n\t\t\t})\n\t\t} catch (e) {\n\t\t\tconsole.error('could not update session token after resuming network', e)\n\n\t\t\t// Let apps know we're online but requests might have an outdated token\n\t\t\temit('networkOnline', {\n\t\t\t\tsuccess: false,\n\t\t\t})\n\t\t}\n\t})\n\twindow.addEventListener('offline', () => {\n\t\tconsole.info('browser is offline, stopping heartbeat')\n\n\t\t// Let apps know we're offline\n\t\temit('networkOffline', {})\n\n\t\tclearInterval(interval)\n\t\tconsole.info('session heartbeat polling stopped')\n\t})\n}\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ContactsMenu.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ContactsMenu.vue?vue&type=script&lang=js&\"","<!--\n - @copyright 2023 Christopher Ng <chrng8@gmail.com>\n -\n - @author Christopher Ng <chrng8@gmail.com>\n -\n - @license AGPL-3.0-or-later\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n-->\n\n<template>\n\t<NcHeaderMenu id=\"contactsmenu\"\n\t\t:aria-label=\"t('core', 'Search contacts')\"\n\t\t@open=\"handleOpen\">\n\t\t<template #trigger>\n\t\t\t<Contacts :size=\"20\" />\n\t\t</template>\n\t\t<div id=\"contactsmenu-menu\" />\n\t</NcHeaderMenu>\n</template>\n\n<script>\nimport NcHeaderMenu from '@nextcloud/vue/dist/Components/NcHeaderMenu.js'\n\nimport Contacts from 'vue-material-design-icons/Contacts.vue'\n\nimport OC from '../OC/index.js'\n\nexport default {\n\tname: 'ContactsMenu',\n\n\tcomponents: {\n\t\tContacts,\n\t\tNcHeaderMenu,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tcontactsMenu: null,\n\t\t}\n\t},\n\n\tmounted() {\n\t\t// eslint-disable-next-line no-new\n\t\tthis.contactsMenu = new OC.ContactsMenu({\n\t\t\tel: '#contactsmenu-menu',\n\t\t})\n\t},\n\n\tmethods: {\n\t\thandleOpen() {\n\t\t\tthis.contactsMenu?.loadContacts()\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n#contactsmenu-menu {\n\t/* show 2.5 to 4.5 entries depending on the screen height */\n\theight: calc(100vh - 50px * 3);\n\tmax-height: calc(50px * 6 + 2px);\n\tmin-height: calc(50px * 3.5);\n\twidth: 350px;\n\n\t&:deep {\n\t\t.emptycontent {\n\t\t\tmargin-top: 5vh !important;\n\t\t\tmargin-bottom: 1.5vh;\n\t\t\t.icon-loading,\n\t\t\t.icon-search {\n\t\t\t\tdisplay: inline-block;\n\t\t\t}\n\t\t}\n\n\t\t#contactsmenu-search {\n\t\t\twidth: calc(100% - 16px);\n\t\t\tmargin: 8px;\n\t\t\theight: 34px;\n\t\t}\n\n\t\t.content {\n\t\t\t/* fixed max height of the parent container without the search input */\n\t\t\theight: calc(100vh - 50px * 3 - 50px);\n\t\t\tmax-height: calc(50px * 5);\n\t\t\tmin-height: calc(50px * 3.5 - 50px);\n\t\t\toverflow-y: auto;\n\n\t\t\t.footer {\n\t\t\t\ttext-align: center;\n\n\t\t\t\ta {\n\t\t\t\t\tdisplay: block;\n\t\t\t\t\twidth: 100%;\n\t\t\t\t\tpadding: 12px 0;\n\t\t\t\t\topacity: .5;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\ta {\n\t\t\tpadding: 2px;\n\n\t\t\t&:focus-visible {\n\t\t\t\tbox-shadow: inset 0 0 0 2px var(--color-main-text) !important; // override rule in core/css/headers.scss #header a:focus-visible\n\t\t\t}\n\t\t}\n\n\t\t.contact {\n\t\t\tdisplay: flex;\n\t\t\tposition: relative;\n\t\t\talign-items: center;\n\t\t\tpadding: 3px 3px 3px 10px;\n\n\t\t\t.avatar {\n\t\t\t\theight: 32px;\n\t\t\t\twidth: 32px;\n\t\t\t\tdisplay: inline-block;\n\t\t\t}\n\n\t\t\t.body {\n\t\t\t\tflex-grow: 1;\n\t\t\t\tpadding-left: 8px;\n\t\t\t\tmin-width: 0;\n\n\t\t\t\tdiv {\n\t\t\t\t\tposition: relative;\n\t\t\t\t\twidth: 100%;\n\t\t\t\t\toverflow-x: hidden;\n\t\t\t\t\ttext-overflow: ellipsis;\n\t\t\t\t}\n\n\t\t\t\t.last-message, .email-address {\n\t\t\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t.top-action, .second-action, .other-actions {\n\t\t\t\twidth: 16px;\n\t\t\t\theight: 16px;\n\t\t\t\topacity: .5;\n\t\t\t\tcursor: pointer;\n\n\t\t\t\t&:not(button) {\n\t\t\t\t\tpadding: 14px;\n\t\t\t\t}\n\t\t\t\timg {\n\t\t\t\t\tfilter: var(--background-invert-if-dark);\n\t\t\t\t}\n\n\t\t\t\t&:hover,\n\t\t\t\t&:active,\n\t\t\t\t&:focus {\n\t\t\t\t\topacity: 1;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tbutton.other-actions {\n\t\t\t\twidth: 44px;\n\n\t\t\t\t&:focus {\n\t\t\t\t\tborder-color: transparent;\n\t\t\t\t\tbox-shadow: 0 0 0 2px var(--color-main-text);\n\t\t\t\t}\n\n\t\t\t\t&:focus-visible {\n\t\t\t\t\tborder-radius: var(--border-radius-pill);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t/* actions menu */\n\t\t\t.menu {\n\t\t\t\ttop: 47px;\n\t\t\t\tmargin-right: 13px;\n\t\t\t}\n\t\t\t.popovermenu::after {\n\t\t\t\tright: 2px;\n\t\t\t}\n\t\t}\n\t}\n}\n</style>\n","\n import API from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ContactsMenu.vue?vue&type=style&index=0&id=1563c388&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ContactsMenu.vue?vue&type=style&index=0&id=1563c388&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./ContactsMenu.vue?vue&type=template&id=1563c388&scoped=true&\"\nimport script from \"./ContactsMenu.vue?vue&type=script&lang=js&\"\nexport * from \"./ContactsMenu.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ContactsMenu.vue?vue&type=style&index=0&id=1563c388&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1563c388\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('NcHeaderMenu',{attrs:{\"id\":\"contactsmenu\",\"aria-label\":_vm.t('core', 'Search contacts')},on:{\"open\":_vm.handleOpen},scopedSlots:_vm._u([{key:\"trigger\",fn:function(){return [_c('Contacts',{attrs:{\"size\":20}})]},proxy:true}])},[_vm._v(\" \"),_c('div',{attrs:{\"id\":\"contactsmenu-menu\"}})])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright Copyright (c) 2022 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -->\n\n<template>\n\t<nav class=\"app-menu\">\n\t\t<ul class=\"app-menu-main\">\n\t\t\t<li v-for=\"app in mainAppList\"\n\t\t\t\t:key=\"app.id\"\n\t\t\t\t:data-app-id=\"app.id\"\n\t\t\t\tclass=\"app-menu-entry\"\n\t\t\t\t:class=\"{ 'app-menu-entry__active': app.active }\">\n\t\t\t\t<a :href=\"app.href\"\n\t\t\t\t\t:class=\"{ 'has-unread': app.unread > 0 }\"\n\t\t\t\t\t:aria-label=\"appLabel(app)\"\n\t\t\t\t\t:title=\"app.name\"\n\t\t\t\t\t:aria-current=\"app.active ? 'page' : false\"\n\t\t\t\t\t:target=\"app.target ? '_blank' : undefined\"\n\t\t\t\t\t:rel=\"app.target ? 'noopener noreferrer' : undefined\">\n\t\t\t\t\t<img :src=\"app.icon\" alt=\"\">\n\t\t\t\t\t<div class=\"app-menu-entry--label\">\n\t\t\t\t\t\t{{ app.name }}\n\t\t\t\t\t\t<span v-if=\"app.unread > 0\" class=\"hidden-visually unread-counter\">{{ app.unread }}</span>\n\t\t\t\t\t</div>\n\t\t\t\t</a>\n\t\t\t</li>\n\t\t</ul>\n\t\t<NcActions class=\"app-menu-more\" :aria-label=\"t('core', 'More apps')\">\n\t\t\t<NcActionLink v-for=\"app in popoverAppList\"\n\t\t\t\t:key=\"app.id\"\n\t\t\t\t:aria-label=\"appLabel(app)\"\n\t\t\t\t:aria-current=\"app.active ? 'page' : false\"\n\t\t\t\t:href=\"app.href\"\n\t\t\t\tclass=\"app-menu-popover-entry\">\n\t\t\t\t<template #icon>\n\t\t\t\t\t<div class=\"app-icon\" :class=\"{ 'has-unread': app.unread > 0 }\">\n\t\t\t\t\t\t<img :src=\"app.icon\" alt=\"\">\n\t\t\t\t\t</div>\n\t\t\t\t</template>\n\t\t\t\t{{ app.name }}\n\t\t\t\t<span v-if=\"app.unread > 0\" class=\"hidden-visually unread-counter\">{{ app.unread }}</span>\n\t\t\t</NcActionLink>\n\t\t</NcActions>\n\t</nav>\n</template>\n\n<script>\nimport { loadState } from '@nextcloud/initial-state'\nimport { subscribe, unsubscribe } from '@nextcloud/event-bus'\nimport NcActions from '@nextcloud/vue/dist/Components/NcActions'\nimport NcActionLink from '@nextcloud/vue/dist/Components/NcActionLink'\n\nexport default {\n\tname: 'AppMenu',\n\tcomponents: {\n\t\tNcActions, NcActionLink,\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tapps: loadState('core', 'apps', {}),\n\t\t\tappLimit: 0,\n\t\t\tobserver: null,\n\t\t}\n\t},\n\tcomputed: {\n\t\tappList() {\n\t\t\treturn Object.values(this.apps)\n\t\t},\n\t\tmainAppList() {\n\t\t\treturn this.appList.slice(0, this.appLimit)\n\t\t},\n\t\tpopoverAppList() {\n\t\t\treturn this.appList.slice(this.appLimit)\n\t\t},\n\t\tappLabel() {\n\t\t\treturn (app) => app.name\n\t\t\t\t+ (app.active ? ' (' + t('core', 'Currently open') + ')' : '')\n\t\t\t\t+ (app.unread > 0 ? ' (' + n('core', '{count} notification', '{count} notifications', app.unread, { count: app.unread }) + ')' : '')\n\t\t},\n\t},\n\tmounted() {\n\t\tthis.observer = new ResizeObserver(this.resize)\n\t\tthis.observer.observe(this.$el)\n\t\tthis.resize()\n\t\tsubscribe('nextcloud:app-menu.refresh', this.setApps)\n\t},\n\tbeforeDestroy() {\n\t\tthis.observer.disconnect()\n\t\tunsubscribe('nextcloud:app-menu.refresh', this.setApps)\n\t},\n\tmethods: {\n\t\tsetNavigationCounter(id, counter) {\n\t\t\tthis.$set(this.apps[id], 'unread', counter)\n\t\t},\n\t\tsetApps({ apps }) {\n\t\t\tthis.apps = apps\n\t\t},\n\t\tresize() {\n\t\t\tconst availableWidth = this.$el.offsetWidth\n\t\t\tlet appCount = Math.floor(availableWidth / 50) - 1\n\t\t\tconst popoverAppCount = this.appList.length - appCount\n\t\t\tif (popoverAppCount === 1) {\n\t\t\t\tappCount--\n\t\t\t}\n\t\t\tif (appCount < 1) {\n\t\t\t\tappCount = 0\n\t\t\t}\n\t\t\tthis.appLimit = appCount\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n$header-icon-size: 20px;\n\n.app-menu {\n\twidth: 100%;\n\tdisplay: flex;\n\tflex-shrink: 1;\n\tflex-wrap: wrap;\n}\n.app-menu-main {\n\tdisplay: flex;\n\tflex-wrap: nowrap;\n\n\t.app-menu-entry {\n\t\twidth: 50px;\n\t\theight: 50px;\n\t\tposition: relative;\n\t\tdisplay: flex;\n\t\topacity: .7;\n\t\tfilter: var(--background-image-invert-if-bright);\n\n\t\t&.app-menu-entry__active {\n\t\t\topacity: 1;\n\n\t\t\t&::before {\n\t\t\t\tcontent: \" \";\n\t\t\t\tposition: absolute;\n\t\t\t\tpointer-events: none;\n\t\t\t\tborder-bottom-color: var(--color-main-background);\n\t\t\t\ttransform: translateX(-50%);\n\t\t\t\twidth: 12px;\n\t\t\t\theight: 5px;\n\t\t\t\tborder-radius: 3px;\n\t\t\t\tbackground-color: var(--color-primary-text);\n\t\t\t\tleft: 50%;\n\t\t\t\tbottom: 6px;\n\t\t\t\tdisplay: block;\n\t\t\t\ttransition: all 0.1s ease-in-out;\n\t\t\t\topacity: 1;\n\t\t\t}\n\n\t\t\t.app-menu-entry--label {\n\t\t\t\tfont-weight: bold;\n\t\t\t}\n\t\t}\n\n\t\ta {\n\t\t\twidth: calc(100% - 4px);\n\t\t\theight: calc(100% - 4px);\n\t\t\tmargin: 2px;\n\t\t\tcolor: var(--color-primary-text);\n\t\t\tposition: relative;\n\t\t}\n\n\t\timg {\n\t\t\ttransition: margin 0.1s ease-in-out;\n\t\t\twidth: $header-icon-size;\n\t\t\theight: $header-icon-size;\n\t\t\tpadding: calc((100% - $header-icon-size) / 2);\n\t\t\tbox-sizing: content-box;\n\t\t}\n\n\t\t.app-menu-entry--label {\n\t\t\topacity: 0;\n\t\t\tposition: absolute;\n\t\t\tfont-size: 12px;\n\t\t\tcolor: var(--color-primary-text);\n\t\t\ttext-align: center;\n\t\t\tbottom: -5px;\n\t\t\tleft: 50%;\n\t\t\ttop: 45%;\n\t\t\tdisplay: block;\n\t\t\tmin-width: 100%;\n\t\t\ttransform: translateX(-50%);\n\t\t\ttransition: all 0.1s ease-in-out;\n\t\t\twidth: 100%;\n\t\t\ttext-overflow: ellipsis;\n\t\t\toverflow: hidden;\n\t\t\tletter-spacing: -0.5px;\n\t\t}\n\n\t\t&:hover,\n\t\t&:focus-within {\n\t\t\topacity: 1;\n\t\t\t.app-menu-entry--label {\n\t\t\t\topacity: 1;\n\t\t\t\tfont-weight: bolder;\n\t\t\t\tbottom: 0;\n\t\t\t\twidth: 100%;\n\t\t\t\ttext-overflow: ellipsis;\n\t\t\t\toverflow: hidden;\n\t\t\t}\n\t\t}\n\n\t}\n\n\t// Show labels\n\t&:hover,\n\t&:focus-within,\n\t.app-menu-entry:hover,\n\t.app-menu-entry:focus {\n\t\topacity: 1;\n\n\t\timg {\n\t\t\tmargin-top: -8px;\n\t\t}\n\n\t\t.app-menu-entry--label {\n\t\t\topacity: 1;\n\t\t\tbottom: 0;\n\t\t}\n\n\t\t&::before, .app-menu-entry::before {\n\t\t\topacity: 0;\n\t\t}\n\t}\n}\n\n::v-deep .app-menu-more .button-vue--vue-tertiary {\n\tcolor: var(--color-primary-text);\n\topacity: .7;\n\tmargin: 3px;\n\tfilter: var(--background-image-invert-if-bright);\n\n\t&:hover {\n\t\topacity: 1;\n\t\tbackground-color: transparent !important;\n\t}\n\n\t&:focus-visible {\n\t\topacity: 1;\n\t\toutline: none !important;\n\t}\n}\n\n.app-menu-popover-entry {\n\t.app-icon {\n\t\tposition: relative;\n\t\theight: 44px;\n\n\t\t&.has-unread::after {\n\t\t\tbackground-color: var(--color-main-text);\n\t\t}\n\n\t\timg {\n\t\t\twidth: $header-icon-size;\n\t\t\theight: $header-icon-size;\n\t\t\tpadding: calc((50px - $header-icon-size) / 2);\n\t\t}\n\t}\n}\n\n.has-unread::after {\n\tcontent: \"\";\n\twidth: 8px;\n\theight: 8px;\n\tbackground-color: var(--color-primary-text);\n\tborder-radius: 50%;\n\tposition: absolute;\n\tdisplay: block;\n\ttop: 10px;\n\tright: 10px;\n}\n\n.unread-counter {\n\tdisplay: none;\n}\n</style>\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppMenu.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppMenu.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppMenu.vue?vue&type=style&index=0&id=44a795f6&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppMenu.vue?vue&type=style&index=0&id=44a795f6&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./AppMenu.vue?vue&type=template&id=44a795f6&scoped=true&\"\nimport script from \"./AppMenu.vue?vue&type=script&lang=js&\"\nexport * from \"./AppMenu.vue?vue&type=script&lang=js&\"\nimport style0 from \"./AppMenu.vue?vue&type=style&index=0&id=44a795f6&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"44a795f6\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('nav',{staticClass:\"app-menu\"},[_c('ul',{staticClass:\"app-menu-main\"},_vm._l((_vm.mainAppList),function(app){return _c('li',{key:app.id,staticClass:\"app-menu-entry\",class:{ 'app-menu-entry__active': app.active },attrs:{\"data-app-id\":app.id}},[_c('a',{class:{ 'has-unread': app.unread > 0 },attrs:{\"href\":app.href,\"aria-label\":_vm.appLabel(app),\"title\":app.name,\"aria-current\":app.active ? 'page' : false,\"target\":app.target ? '_blank' : undefined,\"rel\":app.target ? 'noopener noreferrer' : undefined}},[_c('img',{attrs:{\"src\":app.icon,\"alt\":\"\"}}),_vm._v(\" \"),_c('div',{staticClass:\"app-menu-entry--label\"},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(app.name)+\"\\n\\t\\t\\t\\t\\t\"),(app.unread > 0)?_c('span',{staticClass:\"hidden-visually unread-counter\"},[_vm._v(_vm._s(app.unread))]):_vm._e()])])])}),0),_vm._v(\" \"),_c('NcActions',{staticClass:\"app-menu-more\",attrs:{\"aria-label\":_vm.t('core', 'More apps')}},_vm._l((_vm.popoverAppList),function(app){return _c('NcActionLink',{key:app.id,staticClass:\"app-menu-popover-entry\",attrs:{\"aria-label\":_vm.appLabel(app),\"aria-current\":app.active ? 'page' : false,\"href\":app.href},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('div',{staticClass:\"app-icon\",class:{ 'has-unread': app.unread > 0 }},[_c('img',{attrs:{\"src\":app.icon,\"alt\":\"\"}})])]},proxy:true}],null,true)},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(app.name)+\"\\n\\t\\t\\t\"),(app.unread > 0)?_c('span',{staticClass:\"hidden-visually unread-counter\"},[_vm._v(_vm._s(app.unread))]):_vm._e()])}),1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright 2023 Christopher Ng <chrng8@gmail.com>\n -\n - @author Christopher Ng <chrng8@gmail.com>\n -\n - @license AGPL-3.0-or-later\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n-->\n\n<template>\n\t<li :id=\"id\"\n\t\tclass=\"menu-entry\">\n\t\t<a v-if=\"href\"\n\t\t\t:href=\"href\"\n\t\t\t:class=\"{ active }\"\n\t\t\t@click.exact=\"handleClick\">\n\t\t\t<NcLoadingIcon v-if=\"loading\"\n\t\t\t\tclass=\"menu-entry__loading-icon\"\n\t\t\t\t:size=\"18\" />\n\t\t\t<img v-else :src=\"cachedIcon\" alt=\"\" />\n\t\t\t{{ name }}\n\t\t</a>\n\t\t<button v-else>\n\t\t\t<img :src=\"cachedIcon\" alt=\"\" />\n\t\t\t{{ name }}\n\t\t</button>\n\t</li>\n</template>\n\n<script>\nimport { loadState } from '@nextcloud/initial-state'\n\nimport NcLoadingIcon from '@nextcloud/vue/dist/Components/NcLoadingIcon.js'\n\nconst versionHash = loadState('core', 'versionHash', '')\n\nexport default {\n\tname: 'UserMenuEntry',\n\n\tcomponents: {\n\t\tNcLoadingIcon,\n\t},\n\n\tprops: {\n\t\tid: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tname: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\thref: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tactive: {\n\t\t\ttype: Boolean,\n\t\t\trequired: true,\n\t\t},\n\t\ticon: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tloading: false,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tcachedIcon() {\n\t\t\treturn `${this.icon}?v=${versionHash}`\n\t\t},\n\t},\n\n\tmethods: {\n\t\thandleClick() {\n\t\t\tthis.loading = true\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.menu-entry {\n\t&__loading-icon {\n\t\tmargin-right: 8px;\n\t}\n}\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserMenuEntry.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserMenuEntry.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserMenuEntry.vue?vue&type=style&index=0&id=6e59d13c&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserMenuEntry.vue?vue&type=style&index=0&id=6e59d13c&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./UserMenuEntry.vue?vue&type=template&id=6e59d13c&scoped=true&\"\nimport script from \"./UserMenuEntry.vue?vue&type=script&lang=js&\"\nexport * from \"./UserMenuEntry.vue?vue&type=script&lang=js&\"\nimport style0 from \"./UserMenuEntry.vue?vue&type=style&index=0&id=6e59d13c&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"6e59d13c\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('li',{staticClass:\"menu-entry\",attrs:{\"id\":_vm.id}},[(_vm.href)?_c('a',{class:{ active: _vm.active },attrs:{\"href\":_vm.href},on:{\"click\":function($event){if($event.ctrlKey||$event.shiftKey||$event.altKey||$event.metaKey)return null;return _vm.handleClick.apply(null, arguments)}}},[(_vm.loading)?_c('NcLoadingIcon',{staticClass:\"menu-entry__loading-icon\",attrs:{\"size\":18}}):_c('img',{attrs:{\"src\":_vm.cachedIcon,\"alt\":\"\"}}),_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.name)+\"\\n\\t\")],1):_c('button',[_c('img',{attrs:{\"src\":_vm.cachedIcon,\"alt\":\"\"}}),_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.name)+\"\\n\\t\")])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright 2023 Christopher Ng <chrng8@gmail.com>\n -\n - @author Christopher Ng <chrng8@gmail.com>\n -\n - @license AGPL-3.0-or-later\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n-->\n\n<template>\n\t<NcHeaderMenu id=\"user-menu\"\n\t\tclass=\"user-menu\"\n\t\t:aria-label=\"t('core', 'Open settings menu')\">\n\t\t<template #trigger>\n\t\t\t<NcAvatar class=\"user-menu__avatar\"\n\t\t\t\t:disable-menu=\"true\"\n\t\t\t\t:disable-tooltip=\"true\"\n\t\t\t\t:user=\"userId\" />\n\t\t</template>\n\t\t<nav class=\"user-menu__nav\"\n\t\t\t:aria-label=\"t('core', 'Settings menu')\">\n\t\t\t<ul>\n\t\t\t\t<UserMenuEntry v-for=\"entry in settingsNavEntries\"\n\t\t\t\t\tv-bind=\"entry\"\n\t\t\t\t\t:key=\"entry.id\" />\n\t\t\t</ul>\n\t\t</nav>\n\t</NcHeaderMenu>\n</template>\n\n<script>\nimport { emit } from '@nextcloud/event-bus'\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { loadState } from '@nextcloud/initial-state'\n\nimport NcAvatar from '@nextcloud/vue/dist/Components/NcAvatar.js'\nimport NcHeaderMenu from '@nextcloud/vue/dist/Components/NcHeaderMenu.js'\n\nimport UserMenuEntry from '../components/UserMenu/UserMenuEntry.vue'\n\nconst settingsNavEntries = loadState('core', 'settingsNavEntries', [])\n\nexport default {\n\tname: 'UserMenu',\n\n\tcomponents: {\n\t\tNcAvatar,\n\t\tNcHeaderMenu,\n\t\tUserMenuEntry,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tsettingsNavEntries,\n\t\t\tuserId: getCurrentUser()?.uid,\n\t\t}\n\t},\n\n\tmounted() {\n\t\temit('core:user-menu:mounted')\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.user-menu {\n\tmargin-right: 12px;\n\n\t&:deep {\n\t\t.header-menu {\n\t\t\t&__trigger {\n\t\t\t\topacity: 1 !important;\n\t\t\t\t&:focus-visible {\n\t\t\t\t\t.user-menu__avatar {\n\t\t\t\t\t\tborder: 2px solid var(--color-primary-text);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t&__carret {\n\t\t\t\tdisplay: none !important;\n\t\t\t}\n\n\t\t\t&__content {\n\t\t\t\twidth: fit-content !important;\n\t\t\t}\n\t\t}\n\t}\n\n\t&__avatar {\n\t\t&:active,\n\t\t&:focus,\n\t\t&:hover {\n\t\t\tborder: 2px solid var(--color-primary-text);\n\t\t}\n\t}\n\n\t&__nav {\n\t\tdisplay: flex;\n\t\twidth: 100%;\n\n\t\tul {\n\t\t\tdisplay: flex;\n\t\t\tflex-direction: column;\n\t\t\tgap: 2px;\n\n\t\t\t&:deep {\n\t\t\t\tli {\n\t\t\t\t\ta,\n\t\t\t\t\tbutton {\n\t\t\t\t\t\tborder-radius: 6px;\n\t\t\t\t\t\tdisplay: inline-flex;\n\t\t\t\t\t\talign-items: center;\n\t\t\t\t\t\theight: var(--header-menu-item-height);\n\t\t\t\t\t\tcolor: var(--color-main-text);\n\t\t\t\t\t\tpadding: 10px 8px;\n\t\t\t\t\t\tbox-sizing: border-box;\n\t\t\t\t\t\twhite-space: nowrap;\n\t\t\t\t\t\tposition: relative;\n\t\t\t\t\t\twidth: 100%;\n\n\t\t\t\t\t\t&:hover {\n\t\t\t\t\t\t\tbackground-color: var(--color-background-hover);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t&:focus-visible {\n\t\t\t\t\t\t\tbackground-color: var(--color-background-hover) !important;\n\t\t\t\t\t\t\tbox-shadow: inset 0 0 0 2px var(--color-primary) !important;\n\t\t\t\t\t\t\toutline: none !important;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t&:active,\n\t\t\t\t\t\t&.active {\n\t\t\t\t\t\t\tbackground-color: var(--color-primary-light);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tspan {\n\t\t\t\t\t\t\tpadding-bottom: 0;\n\t\t\t\t\t\t\tcolor: var(--color-main-text);\n\t\t\t\t\t\t\twhite-space: nowrap;\n\t\t\t\t\t\t\toverflow: hidden;\n\t\t\t\t\t\t\ttext-overflow: ellipsis;\n\t\t\t\t\t\t\tmax-width: 110px;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\timg {\n\t\t\t\t\t\t\twidth: 16px;\n\t\t\t\t\t\t\theight: 16px;\n\t\t\t\t\t\t\tmargin-right: 10px;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\timg,\n\t\t\t\t\t\tsvg {\n\t\t\t\t\t\t\topacity: .7;\n\t\t\t\t\t\t\tfilter: var(--background-invert-if-dark);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Override global button styles\n\t\t\t\t\tbutton {\n\t\t\t\t\t\tbackground-color: transparent;\n\t\t\t\t\t\tborder: none;\n\t\t\t\t\t\tfont-weight: normal;\n\t\t\t\t\t\tmargin: 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n</style>\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserMenu.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserMenu.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserMenu.vue?vue&type=style&index=0&id=6a818bbc&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserMenu.vue?vue&type=style&index=0&id=6a818bbc&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./UserMenu.vue?vue&type=template&id=6a818bbc&scoped=true&\"\nimport script from \"./UserMenu.vue?vue&type=script&lang=js&\"\nexport * from \"./UserMenu.vue?vue&type=script&lang=js&\"\nimport style0 from \"./UserMenu.vue?vue&type=style&index=0&id=6a818bbc&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"6a818bbc\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('NcHeaderMenu',{staticClass:\"user-menu\",attrs:{\"id\":\"user-menu\",\"aria-label\":_vm.t('core', 'Open settings menu')},scopedSlots:_vm._u([{key:\"trigger\",fn:function(){return [_c('NcAvatar',{staticClass:\"user-menu__avatar\",attrs:{\"disable-menu\":true,\"disable-tooltip\":true,\"user\":_vm.userId}})]},proxy:true}])},[_vm._v(\" \"),_c('nav',{staticClass:\"user-menu__nav\",attrs:{\"aria-label\":_vm.t('core', 'Settings menu')}},[_c('ul',_vm._l((_vm.settingsNavEntries),function(entry){return _c('UserMenuEntry',_vm._b({key:entry.id},'UserMenuEntry',entry,false))}),1)])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Jan-Christoph Borchardt <hey@jancborchardt.net>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author nacho <nacho@ownyourbits.com>\n * @author Vincent Petry <vincent@nextcloud.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n/* globals Snap */\nimport _ from 'underscore'\nimport $ from 'jquery'\nimport moment from 'moment'\n\nimport { initSessionHeartBeat } from './session-heartbeat.js'\nimport OC from './OC/index.js'\nimport { setUp as setUpContactsMenu } from './components/ContactsMenu.js'\nimport { setUp as setUpMainMenu } from './components/MainMenu.js'\nimport { setUp as setUpUserMenu } from './components/UserMenu.js'\nimport PasswordConfirmation from './OC/password-confirmation.js'\n\n// keep in sync with core/css/variables.scss\nconst breakpointMobileWidth = 1024\n\nconst initLiveTimestamps = () => {\n\t// Update live timestamps every 30 seconds\n\tsetInterval(() => {\n\t\t$('.live-relative-timestamp').each(function() {\n\t\t\tconst timestamp = parseInt($(this).attr('data-timestamp'), 10)\n\t\t\t$(this).text(moment(timestamp).fromNow())\n\t\t})\n\t}, 30 * 1000)\n}\n\n/**\n * Moment doesn't have aliases for every locale and doesn't parse some locale IDs correctly so we need to alias them\n */\nconst localeAliases = {\n\tzh: 'zh-cn',\n\tzh_Hans: 'zh-cn',\n\tzh_Hans_CN: 'zh-cn',\n\tzh_Hans_HK: 'zh-cn',\n\tzh_Hans_MO: 'zh-cn',\n\tzh_Hans_SG: 'zh-cn',\n\tzh_Hant: 'zh-hk',\n\tzh_Hant_HK: 'zh-hk',\n\tzh_Hant_MO: 'zh-mo',\n\tzh_Hant_TW: 'zh-tw',\n}\nlet locale = OC.getLocale()\nif (Object.prototype.hasOwnProperty.call(localeAliases, locale)) {\n\tlocale = localeAliases[locale]\n}\n\n/**\n * Set users locale to moment.js as soon as possible\n */\nmoment.locale(locale)\n\n/**\n * Initializes core\n */\nexport const initCore = () => {\n\t$(window).on('unload.main', () => { OC._unloadCalled = true })\n\t$(window).on('beforeunload.main', () => {\n\t\t// super-trick thanks to http://stackoverflow.com/a/4651049\n\t\t// in case another handler displays a confirmation dialog (ex: navigating away\n\t\t// during an upload), there are two possible outcomes: user clicked \"ok\" or\n\t\t// \"cancel\"\n\n\t\t// first timeout handler is called after unload dialog is closed\n\t\tsetTimeout(() => {\n\t\t\tOC._userIsNavigatingAway = true\n\n\t\t\t// second timeout event is only called if user cancelled (Chrome),\n\t\t\t// but in other browsers it might still be triggered, so need to\n\t\t\t// set a higher delay...\n\t\t\tsetTimeout(() => {\n\t\t\t\tif (!OC._unloadCalled) {\n\t\t\t\t\tOC._userIsNavigatingAway = false\n\t\t\t\t}\n\t\t\t}, 10000)\n\t\t}, 1)\n\t})\n\t$(document).on('ajaxError.main', function(event, request, settings) {\n\t\tif (settings && settings.allowAuthErrors) {\n\t\t\treturn\n\t\t}\n\t\tOC._processAjaxError(request)\n\t})\n\n\tinitSessionHeartBeat()\n\n\tOC.registerMenu($('#expand'), $('#expanddiv'), false, true)\n\n\t// toggle for menus\n\t$(document).on('mouseup.closemenus', event => {\n\t\tconst $el = $(event.target)\n\t\tif ($el.closest('.menu').length || $el.closest('.menutoggle').length) {\n\t\t\t// don't close when clicking on the menu directly or a menu toggle\n\t\t\treturn false\n\t\t}\n\n\t\tOC.hideMenus()\n\t})\n\n\tsetUpMainMenu()\n\tsetUpUserMenu()\n\tsetUpContactsMenu()\n\n\t// just add snapper for logged in users\n\t// and if the app doesn't handle the nav slider itself\n\tif ($('#app-navigation').length && !$('html').hasClass('lte9')\n\t\t&& !$('#app-content').hasClass('no-snapper')) {\n\n\t\t// App sidebar on mobile\n\t\tconst snapper = new Snap({\n\t\t\telement: document.getElementById('app-content'),\n\t\t\tdisable: 'right',\n\t\t\tmaxPosition: 300, // $navigation-width\n\t\t\tminDragDistance: 100,\n\t\t})\n\n\t\t$('#app-content').prepend('<div id=\"app-navigation-toggle\" class=\"icon-menu\" style=\"display:none\" tabindex=\"0\"></div>')\n\n\t\t// keep track whether snapper is currently animating, and\n\t\t// prevent to call open or close while that is the case\n\t\t// to avoid duplicating events (snap.js doesn't check this)\n\t\tlet animating = false\n\t\tsnapper.on('animating', () => {\n\t\t\t// we need this because the trigger button\n\t\t\t// is also implicitly wired to close by snapper\n\t\t\tanimating = true\n\t\t})\n\t\tsnapper.on('animated', () => {\n\t\t\tanimating = false\n\t\t})\n\t\tsnapper.on('start', () => {\n\t\t\t// we need this because dragging triggers that\n\t\t\tanimating = true\n\t\t})\n\t\tsnapper.on('end', () => {\n\t\t\t// we need this because dragging stop triggers that\n\t\t\tanimating = false\n\t\t})\n\n\t\t// These are necessary because calling open or close\n\t\t// on snapper during an animation makes it trigger an\n\t\t// unfinishable animation, which itself will continue\n\t\t// triggering animating events and cause high CPU load,\n\t\t//\n\t\t// Ref https://github.com/jakiestfu/Snap.js/issues/216\n\t\tconst oldSnapperOpen = snapper.open\n\t\tconst oldSnapperClose = snapper.close\n\t\tconst _snapperOpen = () => {\n\t\t\tif (animating || snapper.state().state !== 'closed') {\n\t\t\t\treturn\n\t\t\t}\n\t\t\toldSnapperOpen('left')\n\t\t}\n\n\t\tconst _snapperClose = () => {\n\t\t\tif (animating || snapper.state().state === 'closed') {\n\t\t\t\treturn\n\t\t\t}\n\t\t\toldSnapperClose()\n\t\t}\n\n\t\t// Needs to be deferred to properly catch in-between\n\t\t// events that snap.js is triggering after dragging.\n\t\t//\n\t\t// Skipped when running unit tests as we are not testing\n\t\t// the snap.js workarounds...\n\t\tif (!window.TESTING) {\n\t\t\tsnapper.open = () => {\n\t\t\t\t_.defer(_snapperOpen)\n\t\t\t}\n\t\t\tsnapper.close = () => {\n\t\t\t\t_.defer(_snapperClose)\n\t\t\t}\n\t\t}\n\n\t\t$('#app-navigation-toggle').click((e) => {\n\t\t\t// close is implicit in the button by snap.js\n\t\t\tif (snapper.state().state !== 'left') {\n\t\t\t\tsnapper.open()\n\t\t\t}\n\t\t})\n\t\t$('#app-navigation-toggle').keypress(e => {\n\t\t\tif (snapper.state().state === 'left') {\n\t\t\t\tsnapper.close()\n\t\t\t} else {\n\t\t\t\tsnapper.open()\n\t\t\t}\n\t\t})\n\n\t\t// close sidebar when switching navigation entry\n\t\tconst $appNavigation = $('#app-navigation')\n\t\t$appNavigation.delegate('a, :button', 'click', event => {\n\t\t\tconst $target = $(event.target)\n\t\t\t// don't hide navigation when changing settings or adding things\n\t\t\tif ($target.is('.app-navigation-noclose')\n\t\t\t\t|| $target.closest('.app-navigation-noclose').length) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tif ($target.is('.app-navigation-entry-utils-menu-button')\n\t\t\t\t|| $target.closest('.app-navigation-entry-utils-menu-button').length) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tif ($target.is('.add-new')\n\t\t\t\t|| $target.closest('.add-new').length) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tif ($target.is('#app-settings')\n\t\t\t\t|| $target.closest('#app-settings').length) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tsnapper.close()\n\t\t})\n\n\t\tlet navigationBarSlideGestureEnabled = false\n\t\tlet navigationBarSlideGestureAllowed = true\n\t\tlet navigationBarSlideGestureEnablePending = false\n\n\t\tOC.allowNavigationBarSlideGesture = () => {\n\t\t\tnavigationBarSlideGestureAllowed = true\n\n\t\t\tif (navigationBarSlideGestureEnablePending) {\n\t\t\t\tsnapper.enable()\n\n\t\t\t\tnavigationBarSlideGestureEnabled = true\n\t\t\t\tnavigationBarSlideGestureEnablePending = false\n\t\t\t}\n\t\t}\n\n\t\tOC.disallowNavigationBarSlideGesture = () => {\n\t\t\tnavigationBarSlideGestureAllowed = false\n\n\t\t\tif (navigationBarSlideGestureEnabled) {\n\t\t\t\tconst endCurrentDrag = true\n\t\t\t\tsnapper.disable(endCurrentDrag)\n\n\t\t\t\tnavigationBarSlideGestureEnabled = false\n\t\t\t\tnavigationBarSlideGestureEnablePending = true\n\t\t\t}\n\t\t}\n\n\t\tconst toggleSnapperOnSize = () => {\n\t\t\tif ($(window).width() > breakpointMobileWidth) {\n\t\t\t\tsnapper.close()\n\t\t\t\tsnapper.disable()\n\n\t\t\t\tnavigationBarSlideGestureEnabled = false\n\t\t\t\tnavigationBarSlideGestureEnablePending = false\n\t\t\t} else if (navigationBarSlideGestureAllowed) {\n\t\t\t\tsnapper.enable()\n\n\t\t\t\tnavigationBarSlideGestureEnabled = true\n\t\t\t\tnavigationBarSlideGestureEnablePending = false\n\t\t\t} else {\n\t\t\t\tnavigationBarSlideGestureEnablePending = true\n\t\t\t}\n\t\t}\n\n\t\t$(window).resize(_.debounce(toggleSnapperOnSize, 250))\n\n\t\t// initial call\n\t\ttoggleSnapperOnSize()\n\n\t}\n\n\tinitLiveTimestamps()\n\tPasswordConfirmation.init()\n}\n","/**\n * @copyright 2019 Julius Härtl <jus@bitgrid.net>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport $ from 'jquery'\n\n$.prototype.tooltip = (function(tooltip) {\n\treturn function(config) {\n\t\ttry {\n\t\t\treturn tooltip.call(this, config)\n\t\t} catch (ex) {\n\t\t\tif (ex instanceof TypeError && config === 'destroy') {\n\t\t\t\tif (window.TESTING === undefined) {\n\t\t\t\t\tconsole.error('Deprecated call $.tooltip(\\'destroy\\') has been deprecated and should be removed')\n\t\t\t\t}\n\t\t\t\treturn tooltip.call(this, 'dispose')\n\t\t\t}\n\t\t\tif (ex instanceof TypeError && config === 'fixTitle') {\n\t\t\t\tif (window.TESTING === undefined) {\n\t\t\t\t\tconsole.error('Deprecated call $.tooltip(\\'fixTitle\\') has been deprecated and should be removed')\n\t\t\t\t}\n\t\t\t\treturn tooltip.call(this, '_fixTitle')\n\t\t\t}\n\t\t}\n\t}\n})($.prototype.tooltip)\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Christopher Ng <chrng8@gmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport Vue from 'vue'\n\nimport UserMenu from '../views/UserMenu.vue'\n\nexport const setUp = () => {\n\tconst mountPoint = document.getElementById('user-menu')\n\tif (mountPoint) {\n\t\t// eslint-disable-next-line no-new\n\t\tnew Vue({\n\t\t\tel: mountPoint,\n\t\t\trender: h => h(UserMenu),\n\t\t})\n\t}\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { translate as t, translatePlural as n } from '@nextcloud/l10n'\nimport Vue from 'vue'\n\nimport AppMenu from './AppMenu.vue'\n\nexport const setUp = () => {\n\n\tVue.mixin({\n\t\tmethods: {\n\t\t\tt,\n\t\t\tn,\n\t\t},\n\t})\n\n\tconst container = document.getElementById('header-left__appmenu')\n\tif (!container) {\n\t\t// no container, possibly we're on a public page\n\t\treturn\n\t}\n\tconst AppMenuApp = Vue.extend(AppMenu)\n\tconst appMenu = new AppMenuApp({}).$mount(container)\n\n\tObject.assign(OC, {\n\t\tsetNavigationCounter(id, counter) {\n\t\t\tappMenu.setNavigationCounter(id, counter)\n\t\t},\n\t})\n\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Christopher Ng <chrng8@gmail.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport Vue from 'vue'\n\nimport ContactsMenu from '../views/ContactsMenu.vue'\n\n/**\n * @todo move to contacts menu code https://github.com/orgs/nextcloud/projects/31#card-21213129\n */\nexport const setUp = () => {\n\tconst mountPoint = document.getElementById('contactsmenu')\n\tif (mountPoint) {\n\t\t// eslint-disable-next-line no-new\n\t\tnew Vue({\n\t\t\tel: mountPoint,\n\t\t\trender: h => h(ContactsMenu),\n\t\t})\n\t}\n}\n","/**\n * @copyright (c) 2017 Arthur Schiwon <blizzz@arthur-schiwon.de>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport $ from 'jquery'\n\n/*\n * Detects links:\n * Either the http(s) protocol is given or two strings, basically limited to ascii with the last\n * word being at least one digit long,\n * followed by at least another character\n *\n * The downside: anything not ascii is excluded. Not sure how common it is in areas using different\n * alphabets… the upside: fake domains with similar looking characters won't be formatted as links\n *\n * This is a copy of the backend regex in IURLGenerator, make sure to adjust both when changing\n */\nconst urlRegex = /(\\s|^)(https?:\\/\\/)((?:[-A-Z0-9+_]+\\.)+[-A-Z]+(?:\\/[-A-Z0-9+&@#%?=~_|!:,.;()]*)*)(\\s|$)/ig\n\n/**\n * @param {any} content -\n */\nexport function plainToRich(content) {\n\treturn this.formatLinksRich(content)\n}\n\n/**\n * @param {any} content -\n */\nexport function richToPlain(content) {\n\treturn this.formatLinksPlain(content)\n}\n\n/**\n * @param {any} content -\n */\nexport function formatLinksRich(content) {\n\treturn content.replace(urlRegex, function(_, leadingSpace, protocol, url, trailingSpace) {\n\t\tlet linkText = url\n\t\tif (!protocol) {\n\t\t\tprotocol = 'https://'\n\t\t} else if (protocol === 'http://') {\n\t\t\tlinkText = protocol + url\n\t\t}\n\n\t\treturn leadingSpace + '<a class=\"external\" target=\"_blank\" rel=\"noopener noreferrer\" href=\"' + protocol + url + '\">' + linkText + '</a>' + trailingSpace\n\t})\n}\n\n/**\n * @param {any} content -\n */\nexport function formatLinksPlain(content) {\n\tconst $content = $('<div></div>').html(content)\n\t$content.find('a').each(function() {\n\t\tconst $this = $(this)\n\t\t$this.html($this.attr('href'))\n\t})\n\treturn $content.html()\n}\n","/**\n * @copyright (c) 2017 Arthur Schiwon <blizzz@arthur-schiwon.de>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport _ from 'underscore'\nimport $ from 'jquery'\nimport { generateOcsUrl } from '@nextcloud/router'\n\n/**\n * @param {any} options -\n */\nexport function query(options) {\n\toptions = options || {}\n\tconst dismissOptions = options.dismiss || {}\n\t$.ajax({\n\t\ttype: 'GET',\n\t\turl: options.url || generateOcsUrl('core/whatsnew?format=json'),\n\t\tsuccess: options.success || function(data, statusText, xhr) {\n\t\t\tonQuerySuccess(data, statusText, xhr, dismissOptions)\n\t\t},\n\t\terror: options.error || onQueryError,\n\t})\n}\n\n/**\n * @param {any} version -\n * @param {any} options -\n */\nexport function dismiss(version, options) {\n\toptions = options || {}\n\t$.ajax({\n\t\ttype: 'POST',\n\t\turl: options.url || generateOcsUrl('core/whatsnew'),\n\t\tdata: { version: encodeURIComponent(version) },\n\t\tsuccess: options.success || onDismissSuccess,\n\t\terror: options.error || onDismissError,\n\t})\n\t// remove element immediately\n\t$('.whatsNewPopover').remove()\n}\n\n/**\n * @param {any} data -\n * @param {any} statusText -\n * @param {any} xhr -\n * @param {any} dismissOptions -\n */\nfunction onQuerySuccess(data, statusText, xhr, dismissOptions) {\n\tconsole.debug('querying Whats New data was successful: ' + statusText)\n\tconsole.debug(data)\n\n\tif (xhr.status !== 200) {\n\t\treturn\n\t}\n\n\tlet item, menuItem, text, icon\n\n\tconst div = document.createElement('div')\n\tdiv.classList.add('popovermenu', 'open', 'whatsNewPopover', 'menu-left')\n\n\tconst list = document.createElement('ul')\n\n\t// header\n\titem = document.createElement('li')\n\tmenuItem = document.createElement('span')\n\tmenuItem.className = 'menuitem'\n\n\ttext = document.createElement('span')\n\ttext.innerText = t('core', 'New in') + ' ' + data.ocs.data.product\n\ttext.className = 'caption'\n\tmenuItem.appendChild(text)\n\n\ticon = document.createElement('span')\n\ticon.className = 'icon-close'\n\ticon.onclick = function() {\n\t\tdismiss(data.ocs.data.version, dismissOptions)\n\t}\n\tmenuItem.appendChild(icon)\n\n\titem.appendChild(menuItem)\n\tlist.appendChild(item)\n\n\t// Highlights\n\tfor (const i in data.ocs.data.whatsNew.regular) {\n\t\tconst whatsNewTextItem = data.ocs.data.whatsNew.regular[i]\n\t\titem = document.createElement('li')\n\n\t\tmenuItem = document.createElement('span')\n\t\tmenuItem.className = 'menuitem'\n\n\t\ticon = document.createElement('span')\n\t\ticon.className = 'icon-checkmark'\n\t\tmenuItem.appendChild(icon)\n\n\t\ttext = document.createElement('p')\n\t\ttext.innerHTML = _.escape(whatsNewTextItem)\n\t\tmenuItem.appendChild(text)\n\n\t\titem.appendChild(menuItem)\n\t\tlist.appendChild(item)\n\t}\n\n\t// Changelog URL\n\tif (!_.isUndefined(data.ocs.data.changelogURL)) {\n\t\titem = document.createElement('li')\n\n\t\tmenuItem = document.createElement('a')\n\t\tmenuItem.href = data.ocs.data.changelogURL\n\t\tmenuItem.rel = 'noreferrer noopener'\n\t\tmenuItem.target = '_blank'\n\n\t\ticon = document.createElement('span')\n\t\ticon.className = 'icon-link'\n\t\tmenuItem.appendChild(icon)\n\n\t\ttext = document.createElement('span')\n\t\ttext.innerText = t('core', 'View changelog')\n\t\tmenuItem.appendChild(text)\n\n\t\titem.appendChild(menuItem)\n\t\tlist.appendChild(item)\n\t}\n\n\tdiv.appendChild(list)\n\tdocument.body.appendChild(div)\n}\n\n/**\n * @param {any} x -\n * @param {any} t -\n * @param {any} e -\n */\nfunction onQueryError(x, t, e) {\n\tconsole.debug('querying Whats New Data resulted in an error: ' + t + e)\n\tconsole.debug(x)\n}\n\n/**\n * @param {any} data -\n */\nfunction onDismissSuccess(data) {\n\t// noop\n}\n\n/**\n * @param {any} data -\n */\nfunction onDismissError(data) {\n\tconsole.debug('dismissing Whats New data resulted in an error: ' + data)\n}\n","/**\n * @copyright Copyright (c) 2022 Joas Schilling <coding@schilljs.com>\n *\n * @author Joas Schilling <coding@schilljs.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { loadState } from '@nextcloud/initial-state'\n\nexport default {\n\t/**\n\t * @return {boolean} Whether the user opted-out of shortcuts so that they should not be registered\n\t */\n\tdisableKeyboardShortcuts() {\n\t\treturn loadState('theming', 'shortcutsDisabled', false)\n\t},\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n/* eslint-disable @nextcloud/no-deprecations */\nimport { initCore } from './init'\n\nimport _ from 'underscore'\nimport $ from 'jquery'\nimport 'jquery-migrate/dist/jquery-migrate.min'\n// TODO: switch to `jquery-ui` package and import widgets and effects individually\n// `jquery-ui-dist` is used as a workaround for the issue of missing effects\nimport 'jquery-ui-dist/jquery-ui'\nimport 'jquery-ui-dist/jquery-ui.css'\nimport 'jquery-ui-dist/jquery-ui.theme.css'\n// END TODO\nimport autosize from 'autosize'\nimport Backbone from 'backbone'\nimport './Polyfill/tooltip'\nimport ClipboardJS from 'clipboard'\nimport { dav } from 'davclient.js'\nimport Handlebars from 'handlebars'\nimport md5 from 'blueimp-md5'\nimport moment from 'moment'\nimport 'select2'\nimport 'select2/select2.css'\nimport 'snap.js/dist/snap'\nimport 'strengthify'\nimport 'strengthify/strengthify.css'\n\nimport OC from './OC/index'\nimport OCP from './OCP/index'\nimport OCA from './OCA/index'\nimport { getToken as getRequestToken } from './OC/requesttoken'\n\nconst warnIfNotTesting = function() {\n\tif (window.TESTING === undefined) {\n\t\tconsole.warn.apply(console, arguments)\n\t}\n}\n\n/**\n * Mark a function as deprecated and automatically\n * warn if used!\n *\n * @param {Function} func the library to deprecate\n * @param {string} funcName the name of the library\n * @param {number} version the version this gets removed\n * @return {Function}\n */\nconst deprecate = (func, funcName, version) => {\n\tconst oldFunc = func\n\tconst newFunc = function() {\n\t\twarnIfNotTesting(`The ${funcName} library is deprecated! It will be removed in nextcloud ${version}.`)\n\t\treturn oldFunc.apply(this, arguments)\n\t}\n\tObject.assign(newFunc, oldFunc)\n\treturn newFunc\n}\n\nconst setDeprecatedProp = (global, cb, msg) => {\n\t(Array.isArray(global) ? global : [global]).forEach(global => {\n\t\tif (window[global] !== undefined) {\n\t\t\tdelete window[global]\n\t\t}\n\t\tObject.defineProperty(window, global, {\n\t\t\tget: () => {\n\t\t\t\tif (msg) {\n\t\t\t\t\twarnIfNotTesting(`${global} is deprecated: ${msg}`)\n\t\t\t\t} else {\n\t\t\t\t\twarnIfNotTesting(`${global} is deprecated`)\n\t\t\t\t}\n\n\t\t\t\treturn cb()\n\t\t\t},\n\t\t})\n\t})\n}\n\nwindow._ = _\nsetDeprecatedProp(['$', 'jQuery'], () => $, 'The global jQuery is deprecated. It will be removed in a later versions without another warning. Please ship your own.')\nsetDeprecatedProp('autosize', () => autosize, 'please ship your own, this will be removed in Nextcloud 20')\nsetDeprecatedProp('Backbone', () => Backbone, 'please ship your own, this will be removed in Nextcloud 20')\nsetDeprecatedProp(['Clipboard', 'ClipboardJS'], () => ClipboardJS, 'please ship your own, this will be removed in Nextcloud 20')\nwindow.dav = dav\nsetDeprecatedProp('Handlebars', () => Handlebars, 'please ship your own, this will be removed in Nextcloud 20')\nsetDeprecatedProp('md5', () => md5, 'please ship your own, this will be removed in Nextcloud 20')\nsetDeprecatedProp('moment', () => moment, 'please ship your own, this will be removed in Nextcloud 20')\n\nwindow.OC = OC\nsetDeprecatedProp('initCore', () => initCore, 'this is an internal function')\nsetDeprecatedProp('oc_appswebroots', () => OC.appswebroots, 'use OC.appswebroots instead, this will be removed in Nextcloud 20')\nsetDeprecatedProp('oc_config', () => OC.config, 'use OC.config instead, this will be removed in Nextcloud 20')\nsetDeprecatedProp('oc_current_user', () => OC.getCurrentUser().uid, 'use OC.getCurrentUser().uid instead, this will be removed in Nextcloud 20')\nsetDeprecatedProp('oc_debug', () => OC.debug, 'use OC.debug instead, this will be removed in Nextcloud 20')\nsetDeprecatedProp('oc_defaults', () => OC.theme, 'use OC.theme instead, this will be removed in Nextcloud 20')\nsetDeprecatedProp('oc_isadmin', OC.isUserAdmin, 'use OC.isUserAdmin() instead, this will be removed in Nextcloud 20')\nsetDeprecatedProp('oc_requesttoken', () => getRequestToken(), 'use OC.requestToken instead, this will be removed in Nextcloud 20')\nsetDeprecatedProp('oc_webroot', () => OC.webroot, 'use OC.getRootPath() instead, this will be removed in Nextcloud 20')\nsetDeprecatedProp('OCDialogs', () => OC.dialogs, 'use OC.dialogs instead, this will be removed in Nextcloud 20')\nwindow.OCP = OCP\nwindow.OCA = OCA\n$.fn.select2 = deprecate($.fn.select2, 'select2', 19)\n\n/**\n * translate a string\n *\n * @param {string} app the id of the app for which to translate the string\n * @param {string} text the string to translate\n * @param [vars] map of placeholder key to value\n * @param {number} [count] number to replace %n with\n * @return {string}\n */\nwindow.t = _.bind(OC.L10N.translate, OC.L10N)\n\n/**\n * translate a string\n *\n * @param {string} app the id of the app for which to translate the string\n * @param {string} text_singular the string to translate for exactly one object\n * @param {string} text_plural the string to translate for n objects\n * @param {number} count number to determine whether to use singular or plural\n * @param [vars] map of placeholder key to value\n * @return {string} Translated string\n */\nwindow.n = _.bind(OC.L10N.translatePlural, OC.L10N)\n","/**\n * @copyright Copyright (c) 2018 Julius Härtl <jus@bitgrid.net>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport escapeHTML from 'escape-html'\n\n/**\n * @typedef TypeDefinition\n * @function {Function} action This action is executed to let the user select a resource\n * @param {string} icon Contains the icon css class for the type\n * @function Object() { [native code] }\n */\n\n/**\n * @type {TypeDefinition[]}\n */\nconst types = {}\n\n/**\n * Those translations will be used by the vue component but they should be shipped with the server\n * FIXME: Those translations should be added to the library\n *\n * @return {Array}\n */\nexport const l10nProjects = () => {\n\treturn [\n\t\tt('core', 'Add to a project'),\n\t\tt('core', 'Show details'),\n\t\tt('core', 'Hide details'),\n\t\tt('core', 'Rename project'),\n\t\tt('core', 'Failed to rename the project'),\n\t\tt('core', 'Failed to create a project'),\n\t\tt('core', 'Failed to add the item to the project'),\n\t\tt('core', 'Connect items to a project to make them easier to find'),\n\t\tt('core', 'Type to search for existing projects'),\n\t]\n}\n\nexport default {\n\t/**\n\t *\n\t * @param {string} type type\n\t * @param {TypeDefinition} typeDefinition typeDefinition\n\t */\n\tregisterType(type, typeDefinition) {\n\t\ttypes[type] = typeDefinition\n\t},\n\ttrigger(type) {\n\t\treturn types[type].action()\n\t},\n\tgetTypes() {\n\t\treturn Object.keys(types)\n\t},\n\tgetIcon(type) {\n\t\treturn types[type].typeIconClass || ''\n\t},\n\tgetLabel(type) {\n\t\treturn escapeHTML(types[type].typeString || type)\n\t},\n\tgetLink(type, id) {\n\t\t/* TODO: Allow action to be executed instead of href as well */\n\t\treturn typeof types[type] !== 'undefined' ? types[type].link(id) : ''\n\t},\n}\n","/**\n * @copyright Copyright (c) 2018 Julius Härtl <jus@bitgrid.net>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nconst loadedScripts = {}\nconst loadedStylesheets = {}\n/**\n * @namespace OCP\n * @class Loader\n */\nexport default {\n\n\t/**\n\t * Load a script asynchronously\n\t *\n\t * @param {string} app the app name\n\t * @param {string} file the script file name\n\t * @return {Promise}\n\t */\n\tloadScript(app, file) {\n\t\tconst key = app + file\n\t\tif (Object.prototype.hasOwnProperty.call(loadedScripts, key)) {\n\t\t\treturn Promise.resolve()\n\t\t}\n\t\tloadedScripts[key] = true\n\t\treturn new Promise(function(resolve, reject) {\n\t\t\tconst scriptPath = OC.filePath(app, 'js', file)\n\t\t\tconst script = document.createElement('script')\n\t\t\tscript.src = scriptPath\n\t\t\tscript.setAttribute('nonce', btoa(OC.requestToken))\n\t\t\tscript.onload = () => resolve()\n\t\t\tscript.onerror = () => reject(new Error(`Failed to load script from ${scriptPath}`))\n\t\t\tdocument.head.appendChild(script)\n\t\t})\n\t},\n\n\t/**\n\t * Load a stylesheet file asynchronously\n\t *\n\t * @param {string} app the app name\n\t * @param {string} file the script file name\n\t * @return {Promise}\n\t */\n\tloadStylesheet(app, file) {\n\t\tconst key = app + file\n\t\tif (Object.prototype.hasOwnProperty.call(loadedStylesheets, key)) {\n\t\t\treturn Promise.resolve()\n\t\t}\n\t\tloadedStylesheets[key] = true\n\t\treturn new Promise(function(resolve, reject) {\n\t\t\tconst stylePath = OC.filePath(app, 'css', file)\n\t\t\tconst link = document.createElement('link')\n\t\t\tlink.href = stylePath\n\t\t\tlink.type = 'text/css'\n\t\t\tlink.rel = 'stylesheet'\n\t\t\tlink.onload = () => resolve()\n\t\t\tlink.onerror = () => reject(new Error(`Failed to load stylesheet from ${stylePath}`))\n\t\t\tdocument.head.appendChild(link)\n\t\t})\n\t},\n}\n","/**\n * @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport {\n\tshowError,\n\tshowInfo, showMessage,\n\tshowSuccess,\n\tshowWarning,\n} from '@nextcloud/dialogs'\n\nexport default {\n\t/**\n\t * @deprecated 19.0.0 use `showSuccess` from the `@nextcloud/dialogs` package instead\n\t *\n\t * @param {string} text the toast text\n\t * @param {object} options options\n\t * @return {Toast}\n\t */\n\tsuccess(text, options) {\n\t\treturn showSuccess(text, options)\n\t},\n\t/**\n\t * @deprecated 19.0.0 use `showWarning` from the `@nextcloud/dialogs` package instead\n\t *\n\t * @param {string} text the toast text\n\t * @param {object} options options\n\t * @return {Toast}\n\t */\n\twarning(text, options) {\n\t\treturn showWarning(text, options)\n\t},\n\t/**\n\t * @deprecated 19.0.0 use `showError` from the `@nextcloud/dialogs` package instead\n\t *\n\t * @param {string} text the toast text\n\t * @param {object} options options\n\t * @return {Toast}\n\t */\n\terror(text, options) {\n\t\treturn showError(text, options)\n\t},\n\t/**\n\t * @deprecated 19.0.0 use `showInfo` from the `@nextcloud/dialogs` package instead\n\t *\n\t * @param {string} text the toast text\n\t * @param {object} options options\n\t * @return {Toast}\n\t */\n\tinfo(text, options) {\n\t\treturn showInfo(text, options)\n\t},\n\t/**\n\t * @deprecated 19.0.0 use `showMessage` from the `@nextcloud/dialogs` package instead\n\t *\n\t * @param {string} text the toast text\n\t * @param {object} options options\n\t * @return {Toast}\n\t */\n\tmessage(text, options) {\n\t\treturn showMessage(text, options)\n\t},\n\n}\n","/**\n * @copyright Copyright (c) 2016 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { loadState } from '@nextcloud/initial-state'\n\nimport * as AppConfig from './appconfig'\nimport * as Comments from './comments'\nimport * as WhatsNew from './whatsnew'\n\nimport Accessibility from './accessibility'\nimport Collaboration from './collaboration'\nimport Loader from './loader'\nimport Toast from './toast'\n\n/** @namespace OCP */\nexport default {\n\tAccessibility,\n\tAppConfig,\n\tCollaboration,\n\tComments,\n\tInitialState: {\n\t\t/**\n\t\t * @deprecated 18.0.0 add https://www.npmjs.com/package/@nextcloud/initial-state to your app\n\t\t */\n\t\tloadState,\n\t},\n\tLoader,\n\t/**\n\t * @deprecated 19.0.0 use the `@nextcloud/dialogs` package instead\n\t */\n\tToast,\n\tWhatsNew,\n}\n","/**\n * @copyright 2018 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport $ from 'jquery'\n\nimport OC from '../OC'\n\n/**\n * This plugin inserts the right avatar for the user, depending on, whether a\n * custom avatar is uploaded - which it uses then - or not, and display a\n * placeholder with the first letter of the users name instead.\n * For this it queries the core_avatar_get route, thus this plugin is fit very\n * tightly for owncloud, and it may not work anywhere else.\n *\n * You may use this on any <div></div>\n * Here I'm using <div class=\"avatardiv\"></div> as an example.\n *\n * There are 5 ways to call this:\n *\n * 1. $('.avatardiv').avatar('jdoe', 128);\n * This will make the div to jdoe's fitting avatar, with a size of 128px.\n *\n * 2. $('.avatardiv').avatar('jdoe');\n * This will make the div to jdoe's fitting avatar. If the div already has a\n * height, it will be used for the avatars size. Otherwise this plugin will\n * search for 'size' DOM data, to use for avatar size. If neither are available\n * it will default to 64px.\n *\n * 3. $('.avatardiv').avatar();\n * This will search the DOM for 'user' data, to use as the username. If there\n * is no username available it will default to a placeholder with the value of\n * \"?\". The size will be determined the same way, as the second example.\n *\n * 4. $('.avatardiv').avatar('jdoe', 128, true);\n * This will behave like the first example, except it will also append random\n * hashes to the custom avatar images, to force image reloading in IE8.\n *\n * 5. $('.avatardiv').avatar('jdoe', 128, undefined, true);\n * This will behave like the first example, but it will hide the avatardiv, if\n * it will display the default placeholder. undefined is the ie8fix from\n * example 4 and can be either true, or false/undefined, to be ignored.\n *\n * 6. $('.avatardiv').avatar('jdoe', 128, undefined, true, callback);\n * This will behave like the above example, but it will call the function\n * defined in callback after the avatar is placed into the DOM.\n *\n */\n\n$.fn.avatar = function(user, size, ie8fix, hidedefault, callback, displayname) {\n\tconst setAvatarForUnknownUser = function(target) {\n\t\ttarget.imageplaceholder('?')\n\t\ttarget.css('background-color', '#b9b9b9')\n\t}\n\n\tif (typeof (user) !== 'undefined') {\n\t\tuser = String(user)\n\t}\n\tif (typeof (displayname) !== 'undefined') {\n\t\tdisplayname = String(displayname)\n\t}\n\n\tif (typeof (size) === 'undefined') {\n\t\tif (this.height() > 0) {\n\t\t\tsize = this.height()\n\t\t} else if (this.data('size') > 0) {\n\t\t\tsize = this.data('size')\n\t\t} else {\n\t\t\tsize = 64\n\t\t}\n\t}\n\n\tthis.height(size)\n\tthis.width(size)\n\n\tif (typeof (user) === 'undefined') {\n\t\tif (typeof (this.data('user')) !== 'undefined') {\n\t\t\tuser = this.data('user')\n\t\t} else {\n\t\t\tsetAvatarForUnknownUser(this)\n\t\t\treturn\n\t\t}\n\t}\n\n\t// sanitize\n\tuser = String(user).replace(/\\//g, '')\n\n\tconst $div = this\n\tlet url\n\n\t// If this is our own avatar we have to use the version attribute\n\tif (user === OC.getCurrentUser().uid) {\n\t\turl = OC.generateUrl(\n\t\t\t'/avatar/{user}/{size}?v={version}',\n\t\t\t{\n\t\t\t\tuser,\n\t\t\t\tsize: Math.ceil(size * window.devicePixelRatio),\n\t\t\t\tversion: oc_userconfig.avatar.version,\n\t\t\t})\n\t} else {\n\t\turl = OC.generateUrl(\n\t\t\t'/avatar/{user}/{size}',\n\t\t\t{\n\t\t\t\tuser,\n\t\t\t\tsize: Math.ceil(size * window.devicePixelRatio),\n\t\t\t})\n\t}\n\n\tconst img = new Image()\n\n\t// If the new image loads successfully set it.\n\timg.onload = function() {\n\t\t$div.clearimageplaceholder()\n\t\t$div.append(img)\n\n\t\tif (typeof callback === 'function') {\n\t\t\tcallback()\n\t\t}\n\t}\n\t// Fallback when avatar loading fails:\n\t// Use old placeholder when a displayname attribute is defined,\n\t// otherwise show the unknown user placeholder.\n\timg.onerror = function() {\n\t\t$div.clearimageplaceholder()\n\t\tif (typeof (displayname) !== 'undefined') {\n\t\t\t$div.imageplaceholder(user, displayname)\n\t\t} else {\n\t\t\tsetAvatarForUnknownUser($div)\n\t\t}\n\n\t\tif (typeof callback === 'function') {\n\t\t\tcallback()\n\t\t}\n\t}\n\n\tif (size < 32) {\n\t\t$div.addClass('icon-loading-small')\n\t} else {\n\t\t$div.addClass('icon-loading')\n\t}\n\timg.width = size\n\timg.height = size\n\timg.src = url\n\timg.alt = ''\n}\n","/**\n * @copyright 2018 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport $ from 'jquery'\n\nimport OC from '../OC'\nimport { isA11yActivation } from '../Util/a11y.js'\n\nconst LIST = ''\n\t+ '<div class=\"menu popovermenu menu-left hidden contactsmenu-popover\">'\n\t+ ' <ul>'\n\t+ ' <li>'\n\t+ ' <a>'\n\t+ ' <span class=\"icon-loading-small\"></span>'\n\t+ ' </a>'\n\t+ ' </li>'\n\t+ ' </ul>'\n\t+ '</div>'\n\nconst entryTemplate = require('./contactsmenu/jquery_entry.handlebars')\n\n$.fn.contactsMenu = function(shareWith, shareType, appendTo) {\n\t// 0 - user, 4 - email, 6 - remote\n\tconst allowedTypes = [0, 4, 6]\n\tif (allowedTypes.indexOf(shareType) === -1) {\n\t\treturn\n\t}\n\n\tconst $div = this\n\tappendTo.append(LIST)\n\tconst $list = appendTo.find('div.contactsmenu-popover')\n\n\t$div.on('click keydown', function(event) {\n\t\tif (!isA11yActivation(event)) {\n\t\t\treturn\n\t\t}\n\n\t\tif (!$list.hasClass('hidden')) {\n\t\t\t$list.addClass('hidden')\n\t\t\t$list.hide()\n\t\t\treturn\n\t\t}\n\n\t\t$list.removeClass('hidden')\n\t\t$list.show()\n\n\t\tif ($list.hasClass('loaded')) {\n\t\t\treturn\n\t\t}\n\n\t\t$list.addClass('loaded')\n\t\t$.ajax(OC.generateUrl('/contactsmenu/findOne'), {\n\t\t\tmethod: 'POST',\n\t\t\tdata: {\n\t\t\t\tshareType,\n\t\t\t\tshareWith,\n\t\t\t},\n\t\t}).then(function(data) {\n\t\t\t$list.find('ul').find('li').addClass('hidden')\n\n\t\t\tlet actions\n\t\t\tif (!data.topAction) {\n\t\t\t\tactions = [{\n\t\t\t\t\thyperlink: '#',\n\t\t\t\t\ttitle: t('core', 'No action available'),\n\t\t\t\t}]\n\t\t\t} else {\n\t\t\t\tactions = [data.topAction].concat(data.actions)\n\t\t\t}\n\n\t\t\tactions.forEach(function(action) {\n\t\t\t\t$list.find('ul').append(entryTemplate(action))\n\t\t\t})\n\n\t\t\t$div.trigger('load')\n\t\t}, function(jqXHR) {\n\t\t\t$list.find('ul').find('li').addClass('hidden')\n\n\t\t\tlet title\n\t\t\tif (jqXHR.status === 404) {\n\t\t\t\ttitle = t('core', 'No action available')\n\t\t\t} else {\n\t\t\t\ttitle = t('core', 'Error fetching contact actions')\n\t\t\t}\n\n\t\t\t$list.find('ul').append(entryTemplate({\n\t\t\t\thyperlink: '#',\n\t\t\t\ttitle,\n\t\t\t}))\n\n\t\t\t$div.trigger('loaderror', jqXHR)\n\t\t})\n\t})\n\n\t$(document).click(function(event) {\n\t\tconst clickedList = ($list.has(event.target).length > 0)\n\t\tlet clickedTarget = ($div.has(event.target).length > 0)\n\n\t\t$div.each(function() {\n\t\t\tif ($(this).is(event.target)) {\n\t\t\t\tclickedTarget = true\n\t\t\t}\n\t\t})\n\n\t\tif (clickedList || clickedTarget) {\n\t\t\treturn\n\t\t}\n\n\t\t$list.addClass('hidden')\n\t\t$list.hide()\n\t})\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport $ from 'jquery'\n\n/**\n * check if an element exists.\n * allows you to write if ($('#myid').exists()) to increase readability\n *\n * @see {@link http://stackoverflow.com/questions/31044/is-there-an-exists-function-for-jquery}\n * @return {boolean}\n */\n$.fn.exists = function() {\n\treturn this.length > 0\n}\n","/**\n * @copyright 2018 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport $ from 'jquery'\n\n/**\n * Filter jQuery selector by attribute value\n *\n * @param {string} attrName attribute name\n * @param {string} attrValue attribute value\n * @return {void}\n */\n$.fn.filterAttr = function(attrName, attrValue) {\n\treturn this.filter(function() {\n\t\treturn $(this).attr(attrName) === attrValue\n\t})\n}\n","/**\n * @copyright 2018 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Gary Kim <gary@garykim.dev>\n * @author Joas Schilling <coding@schilljs.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport $ from 'jquery'\nimport { isA11yActivation } from '../Util/a11y'\n\n$.widget('oc.ocdialog', {\n\toptions: {\n\t\twidth: 'auto',\n\t\theight: 'auto',\n\t\tcloseButton: true,\n\t\tcloseOnEscape: true,\n\t\tcloseCallback: null,\n\t\tmodal: false,\n\t},\n\t_create() {\n\t\tconst self = this\n\n\t\tthis.originalCss = {\n\t\t\tdisplay: this.element[0].style.display,\n\t\t\twidth: this.element[0].style.width,\n\t\t\theight: this.element[0].style.height,\n\t\t}\n\n\t\tthis.originalTitle = this.element.attr('title')\n\t\tthis.options.title = this.options.title || this.originalTitle\n\n\t\tthis.$dialog = $('<div class=\"oc-dialog\"></div>')\n\t\t\t.attr({\n\t\t\t\t// Setting tabIndex makes the div focusable\n\t\t\t\ttabIndex: -1,\n\t\t\t\trole: 'dialog',\n\t\t\t})\n\t\t\t.insertBefore(this.element)\n\t\tthis.$dialog.append(this.element.detach())\n\t\tthis.element.removeAttr('title').addClass('oc-dialog-content').appendTo(this.$dialog)\n\n\t\t// Activate the primary button on enter if there is a single input\n\t\tif (self.element.find('input').length === 1) {\n\t\t\tconst $input = self.element.find('input')\n\t\t\t$input.on('keydown', function(event) {\n\t\t\t\tif (isA11yActivation(event)) {\n\t\t\t\t\tif (self.$buttonrow) {\n\t\t\t\t\t\tconst $button = self.$buttonrow.find('button.primary')\n\t\t\t\t\t\tif ($button && !$button.prop('disabled')) {\n\t\t\t\t\t\t\t$button.click()\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t})\n\t\t}\n\n\t\tthis.$dialog.css({\n\t\t\tdisplay: 'inline-block',\n\t\t\tposition: 'fixed',\n\t\t})\n\n\t\tthis.enterCallback = null\n\n\t\t$(document).on('keydown keyup', function(event) {\n\t\t\tif (\n\t\t\t\tevent.target !== self.$dialog.get(0)\n\t\t\t\t&& self.$dialog.find($(event.target)).length === 0\n\t\t\t) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\t// Escape\n\t\t\tif (\n\t\t\t\tevent.keyCode === 27\n\t\t\t\t&& event.type === 'keydown'\n\t\t\t\t&& self.options.closeOnEscape\n\t\t\t) {\n\t\t\t\tevent.stopImmediatePropagation()\n\t\t\t\tself.close()\n\t\t\t\treturn false\n\t\t\t}\n\t\t\t// Enter\n\t\t\tif (event.keyCode === 13) {\n\t\t\t\tevent.stopImmediatePropagation()\n\t\t\t\tif (self.enterCallback !== null) {\n\t\t\t\t\tself.enterCallback()\n\t\t\t\t\tevent.preventDefault()\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t\tif (event.type === 'keyup') {\n\t\t\t\t\tevent.preventDefault()\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t\treturn false\n\t\t\t}\n\t\t})\n\n\t\tthis._setOptions(this.options)\n\t\tthis._createOverlay()\n\t},\n\t_init() {\n\t\tthis.$dialog.focus()\n\t\tthis._trigger('open')\n\t},\n\t_setOption(key, value) {\n\t\tconst self = this\n\t\tswitch (key) {\n\t\tcase 'title':\n\t\t\tif (this.$title) {\n\t\t\t\tthis.$title.text(value)\n\t\t\t} else {\n\t\t\t\tconst $title = $('<h2 class=\"oc-dialog-title\">'\n\t\t\t\t\t\t+ value\n\t\t\t\t\t\t+ '</h2>')\n\t\t\t\tthis.$title = $title.prependTo(this.$dialog)\n\t\t\t}\n\t\t\tthis._setSizes()\n\t\t\tbreak\n\t\tcase 'buttons':\n\t\t\tif (this.$buttonrow) {\n\t\t\t\tthis.$buttonrow.empty()\n\t\t\t} else {\n\t\t\t\tconst $buttonrow = $('<div class=\"oc-dialog-buttonrow\"></div>')\n\t\t\t\tthis.$buttonrow = $buttonrow.appendTo(this.$dialog)\n\t\t\t}\n\t\t\tif (value.length === 1) {\n\t\t\t\tthis.$buttonrow.addClass('onebutton')\n\t\t\t} else if (value.length === 2) {\n\t\t\t\tthis.$buttonrow.addClass('twobuttons')\n\t\t\t} else if (value.length === 3) {\n\t\t\t\tthis.$buttonrow.addClass('threebuttons')\n\t\t\t}\n\t\t\t$.each(value, function(idx, val) {\n\t\t\t\tconst $button = $('<button>').text(val.text)\n\t\t\t\tif (val.classes) {\n\t\t\t\t\t$button.addClass(val.classes)\n\t\t\t\t}\n\t\t\t\tif (val.defaultButton) {\n\t\t\t\t\t$button.addClass('primary')\n\t\t\t\t\tself.$defaultButton = $button\n\t\t\t\t}\n\t\t\t\tself.$buttonrow.append($button)\n\t\t\t\t$button.on('click keydown', function(event) {\n\t\t\t\t\tif (isA11yActivation(event)) {\n\t\t\t\t\t\tval.click.apply(self.element[0], arguments)\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t})\n\t\t\tthis.$buttonrow.find('button')\n\t\t\t\t.on('focus', function(event) {\n\t\t\t\t\tself.$buttonrow.find('button').removeClass('primary')\n\t\t\t\t\t$(this).addClass('primary')\n\t\t\t\t})\n\t\t\tthis._setSizes()\n\t\t\tbreak\n\t\tcase 'style':\n\t\t\tif (value.buttons !== undefined) {\n\t\t\t\tthis.$buttonrow.addClass(value.buttons)\n\t\t\t}\n\t\t\tbreak\n\t\tcase 'closeButton':\n\t\t\tif (value) {\n\t\t\t\tconst $closeButton = $('<a class=\"oc-dialog-close\" tabindex=\"0\"></a>')\n\t\t\t\tthis.$dialog.prepend($closeButton)\n\t\t\t\t$closeButton.on('click keydown', function(event) {\n\t\t\t\t\tif (isA11yActivation(event)) {\n\t\t\t\t\t\tself.options.closeCallback && self.options.closeCallback()\n\t\t\t\t\t\tself.close()\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t} else {\n\t\t\t\tthis.$dialog.find('.oc-dialog-close').remove()\n\t\t\t}\n\t\t\tbreak\n\t\tcase 'width':\n\t\t\tthis.$dialog.css('width', value)\n\t\t\tbreak\n\t\tcase 'height':\n\t\t\tthis.$dialog.css('height', value)\n\t\t\tbreak\n\t\tcase 'close':\n\t\t\tthis.closeCB = value\n\t\t\tbreak\n\t\t}\n\t\t// this._super(key, value);\n\t\t$.Widget.prototype._setOption.apply(this, arguments)\n\t},\n\t_setOptions(options) {\n\t\t// this._super(options);\n\t\t$.Widget.prototype._setOptions.apply(this, arguments)\n\t},\n\t_setSizes() {\n\t\tlet lessHeight = 0\n\t\tif (this.$title) {\n\t\t\tlessHeight += this.$title.outerHeight(true)\n\t\t}\n\t\tif (this.$buttonrow) {\n\t\t\tlessHeight += this.$buttonrow.outerHeight(true)\n\t\t}\n\t\tthis.element.css({\n\t\t\theight: 'calc(100% - ' + lessHeight + 'px)',\n\t\t})\n\t},\n\t_createOverlay() {\n\t\tif (!this.options.modal) {\n\t\t\treturn\n\t\t}\n\n\t\tconst self = this\n\t\tlet contentDiv = $('#content')\n\t\tif (contentDiv.length === 0) {\n\t\t\t// nextcloud-vue compatibility\n\t\t\tcontentDiv = $('.content')\n\t\t}\n\t\tthis.overlay = $('<div>')\n\t\t\t.addClass('oc-dialog-dim')\n\t\t\t.appendTo(contentDiv)\n\t\tthis.overlay.on('click keydown keyup', function(event) {\n\t\t\tif (event.target !== self.$dialog.get(0) && self.$dialog.find($(event.target)).length === 0) {\n\t\t\t\tevent.preventDefault()\n\t\t\t\tevent.stopPropagation()\n\n\t\t\t}\n\t\t})\n\t},\n\t_destroyOverlay() {\n\t\tif (!this.options.modal) {\n\t\t\treturn\n\t\t}\n\n\t\tif (this.overlay) {\n\t\t\tthis.overlay.off('click keydown keyup')\n\t\t\tthis.overlay.remove()\n\t\t\tthis.overlay = null\n\t\t}\n\t},\n\twidget() {\n\t\treturn this.$dialog\n\t},\n\tsetEnterCallback(callback) {\n\t\tthis.enterCallback = callback\n\t},\n\tunsetEnterCallback() {\n\t\tthis.enterCallback = null\n\t},\n\tclose() {\n\t\tthis._destroyOverlay()\n\t\tconst self = this\n\t\t// Ugly hack to catch remaining keyup events.\n\t\tsetTimeout(function() {\n\t\t\tself._trigger('close', self)\n\t\t}, 200)\n\n\t\tself.$dialog.remove()\n\t\tthis.destroy()\n\t},\n\tdestroy() {\n\t\tif (this.$title) {\n\t\t\tthis.$title.remove()\n\t\t}\n\t\tif (this.$buttonrow) {\n\t\t\tthis.$buttonrow.remove()\n\t\t}\n\n\t\tif (this.originalTitle) {\n\t\t\tthis.element.attr('title', this.originalTitle)\n\t\t}\n\t\tthis.element.removeClass('oc-dialog-content')\n\t\t\t.css(this.originalCss).detach().insertBefore(this.$dialog)\n\t\tthis.$dialog.remove()\n\t},\n})\n","/**\n * @copyright Copyright (c) 2016 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport $ from 'jquery'\nimport escapeHTML from 'escape-html'\n\n/**\n * jQuery plugin for micro templates\n *\n * Strings are automatically escaped, but that can be disabled by setting\n * escapeFunction to null.\n *\n * Usage examples:\n *\n * var htmlStr = '<p>Bake, uncovered, until the {greasystuff} is melted and the {pasta} is heated through, about {min} minutes.</p>'\n * $(htmlStr).octemplate({greasystuff: 'cheese', pasta: 'macaroni', min: 10});\n *\n * var htmlStr = '<p>Welcome back {user}</p>';\n * $(htmlStr).octemplate({user: 'John Q. Public'}, {escapeFunction: null});\n *\n * Be aware that the target string must be wrapped in an HTML element for the\n * plugin to work. The following won't work:\n *\n * var textStr = 'Welcome back {user}';\n * $(textStr).octemplate({user: 'John Q. Public'});\n *\n * For anything larger than one-liners, you can use a simple $.get() ajax\n * request to get the template, or you can embed them it the page using the\n * text/template type:\n *\n * <script id=\"contactListItemTemplate\" type=\"text/template\">\n * <tr class=\"contact\" data-id=\"{id}\">\n * <td class=\"name\">\n * <input type=\"checkbox\" name=\"id\" value=\"{id}\" /><span class=\"nametext\">{name}</span>\n * </td>\n * <td class=\"email\">\n * <a href=\"mailto:{email}\">{email}</a>\n * </td>\n * <td class=\"phone\">{phone}</td>\n * </tr>\n * </script>\n *\n * var $tmpl = $('#contactListItemTemplate');\n * var contacts = // fetched in some ajax call\n *\n * $.each(contacts, function(idx, contact) {\n * $contactList.append(\n * $tmpl.octemplate({\n * id: contact.getId(),\n * name: contact.getDisplayName(),\n * email: contact.getPreferredEmail(),\n * phone: contact.getPreferredPhone(),\n * });\n * );\n * });\n */\n/**\n * Object Template\n * Inspired by micro templating done by e.g. underscore.js\n */\nconst Template = {\n\tinit(vars, options, elem) {\n\t\t// Mix in the passed in options with the default options\n\t\tthis.vars = vars\n\t\tthis.options = $.extend({}, this.options, options)\n\n\t\tthis.elem = elem\n\t\tconst self = this\n\n\t\tif (typeof this.options.escapeFunction === 'function') {\n\t\t\tconst keys = Object.keys(this.vars)\n\t\t\tfor (let key = 0; key < keys.length; key++) {\n\t\t\t\tif (typeof this.vars[keys[key]] === 'string') {\n\t\t\t\t\tthis.vars[keys[key]] = self.options.escapeFunction(this.vars[keys[key]])\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tconst _html = this._build(this.vars)\n\t\treturn $(_html)\n\t},\n\t// From stackoverflow.com/questions/1408289/best-way-to-do-variable-interpolation-in-javascript\n\t_build(o) {\n\t\tconst data = this.elem.attr('type') === 'text/template' ? this.elem.html() : this.elem.get(0).outerHTML\n\t\ttry {\n\t\t\treturn data.replace(/{([^{}]*)}/g,\n\t\t\t\tfunction(a, b) {\n\t\t\t\t\tconst r = o[b]\n\t\t\t\t\treturn typeof r === 'string' || typeof r === 'number' ? r : a\n\t\t\t\t}\n\t\t\t)\n\t\t} catch (e) {\n\t\t\tconsole.error(e, 'data:', data)\n\t\t}\n\t},\n\toptions: {\n\t\tescapeFunction: escapeHTML,\n\t},\n}\n\n$.fn.octemplate = function(vars, options) {\n\tvars = vars || {}\n\tif (this.length) {\n\t\tconst _template = Object.create(Template)\n\t\treturn _template.init(vars, options, this)\n\t}\n}\n","/**\n * @copyright 2016-2018 John Molakvoæ <skjnldsv@protonmail.com>\n * @copyright 2013 Morris Jobke <morris.jobke@gmail.com>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n * @author Sergey Shliakhov <husband.sergey@gmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n/* eslint-disable */\nimport $ from 'jquery'\nimport md5 from 'blueimp-md5'\n\n/*\n * Adds a background color to the element called on and adds the first character\n * of the passed in string. This string is also the seed for the generation of\n * the background color.\n *\n * You have following HTML:\n *\n * <div id=\"albumart\"></div>\n *\n * And call this from Javascript:\n *\n * $('#albumart').imageplaceholder('The Album Title');\n *\n * Which will result in:\n *\n * <div id=\"albumart\" style=\"background-color: rgb(121, 90, 171); ... \">T</div>\n *\n * You may also call it like this, to have a different background, than the seed:\n *\n * $('#albumart').imageplaceholder('The Album Title', 'Album Title');\n *\n * Resulting in:\n *\n * <div id=\"albumart\" style=\"background-color: rgb(121, 90, 171); ... \">A</div>\n *\n */\n\n/*\n* Alternatively, you can use the prototype function to convert your string to rgb colors:\n*\n* \"a6741a86aded5611a8e46ce16f2ad646\".toRgb()\n*\n* Will return the rgb parameters within the following object:\n*\n* Color {r: 208, g: 158, b: 109}\n*\n*/\n\nconst toRgb = (s) => {\n\t// Normalize hash\n\tvar hash = s.toLowerCase()\n\n\t// Already a md5 hash?\n\tif (hash.match(/^([0-9a-f]{4}-?){8}$/) === null) {\n\t\thash = md5(hash)\n\t}\n\n\thash = hash.replace(/[^0-9a-f]/g, '')\n\n\tfunction Color(r, g, b) {\n\t\tthis.r = r\n\t\tthis.g = g\n\t\tthis.b = b\n\t}\n\n\tfunction stepCalc(steps, ends) {\n\t\tvar step = new Array(3)\n\t\tstep[0] = (ends[1].r - ends[0].r) / steps\n\t\tstep[1] = (ends[1].g - ends[0].g) / steps\n\t\tstep[2] = (ends[1].b - ends[0].b) / steps\n\t\treturn step\n\t}\n\n\tfunction mixPalette(steps, color1, color2) {\n\t\tvar palette = []\n\t\tpalette.push(color1)\n\t\tvar step = stepCalc(steps, [color1, color2])\n\t\tfor (var i = 1; i < steps; i++) {\n\t\t\tvar r = parseInt(color1.r + (step[0] * i))\n\t\t\tvar g = parseInt(color1.g + (step[1] * i))\n\t\t\tvar b = parseInt(color1.b + (step[2] * i))\n\t\t\tpalette.push(new Color(r, g, b))\n\t\t}\n\t\treturn palette\n\t}\n\n\tconst red = new Color(182, 70, 157);\n\tconst yellow = new Color(221, 203, 85);\n\tconst blue = new Color(0, 130, 201); // Nextcloud blue\n\t// Number of steps to go from a color to another\n\t// 3 colors * 6 will result in 18 generated colors\n\tconst steps = 6;\n\n\tconst palette1 = mixPalette(steps, red, yellow);\n\tconst palette2 = mixPalette(steps, yellow, blue);\n\tconst palette3 = mixPalette(steps, blue, red);\n\n\tconst finalPalette = palette1.concat(palette2).concat(palette3);\n\n\t// Convert a string to an integer evenly\n\tfunction hashToInt(hash, maximum) {\n\t\tvar finalInt = 0\n\t\tvar result = []\n\n\t\t// Splitting evenly the string\n\t\tfor (var i = 0; i < hash.length; i++) {\n\t\t\t// chars in md5 goes up to f, hex:16\n\t\t\tresult.push(parseInt(hash.charAt(i), 16) % 16)\n\t\t}\n\t\t// Adds up all results\n\t\tfor (var j in result) {\n\t\t\tfinalInt += result[j]\n\t\t}\n\t\t// chars in md5 goes up to f, hex:16\n\t\t// make sure we're always using int in our operation\n\t\treturn parseInt(parseInt(finalInt) % maximum)\n\t}\n\n\treturn finalPalette[hashToInt(hash, steps * 3)]\n}\n\nString.prototype.toRgb = function() {\n\tconsole.warn('String.prototype.toRgb is deprecated! It will be removed in Nextcloud 22.')\n\n\treturn toRgb(this)\n}\n\n$.fn.imageplaceholder = function(seed, text, size) {\n\ttext = text || seed\n\n\t// Compute the hash\n\tvar rgb = toRgb(seed)\n\tthis.css('background-color', 'rgb(' + rgb.r + ', ' + rgb.g + ', ' + rgb.b + ')')\n\n\t// Placeholders are square\n\tvar height = this.height() || size || 32\n\tthis.height(height)\n\tthis.width(height)\n\n\t// CSS rules\n\tthis.css('color', '#fff')\n\tthis.css('font-weight', 'normal')\n\tthis.css('text-align', 'center')\n\n\t// calculate the height\n\tthis.css('line-height', height + 'px')\n\tthis.css('font-size', (height * 0.55) + 'px')\n\n\tif (seed !== null && seed.length) {\n\t\tvar placeholderText = text.replace(/\\s+/g, ' ').trim().split(' ', 2).map((word) => word[0].toUpperCase()).join('')\n\t\tthis.html(placeholderText);\n\t}\n}\n\n$.fn.clearimageplaceholder = function() {\n\tthis.css('background-color', '')\n\tthis.css('color', '')\n\tthis.css('font-weight', '')\n\tthis.css('text-align', '')\n\tthis.css('line-height', '')\n\tthis.css('font-size', '')\n\tthis.html('')\n\tthis.removeClass('icon-loading')\n\tthis.removeClass('icon-loading-small')\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport $ from 'jquery'\n\nimport { getToken } from '../OC/requesttoken'\n\n$(document).on('ajaxSend', function(elm, xhr, settings) {\n\tif (settings.crossDomain === false) {\n\t\txhr.setRequestHeader('requesttoken', getToken())\n\t\txhr.setRequestHeader('OCS-APIREQUEST', 'true')\n\t}\n})\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport $ from 'jquery'\n\n/**\n * select a range in an input field\n *\n * @see {@link http://stackoverflow.com/questions/499126/jquery-set-cursor-position-in-text-area}\n * @param {number} start start selection from\n * @param {number} end number of char from start\n * @return {void}\n */\n$.fn.selectRange = function(start, end) {\n\treturn this.each(function() {\n\t\tif (this.setSelectionRange) {\n\t\t\tthis.focus()\n\t\t\tthis.setSelectionRange(start, end)\n\t\t} else if (this.createTextRange) {\n\t\t\tconst range = this.createTextRange()\n\t\t\trange.collapse(true)\n\t\t\trange.moveEnd('character', end)\n\t\t\trange.moveStart('character', start)\n\t\t\trange.select()\n\t\t}\n\t})\n}\n","/**\n * @copyright 2018 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport $ from 'jquery'\n\n/**\n * @name Show Password\n * @description\n * @version 1.3.0\n * @requires Jquery 1.5\n *\n * @author Jan Jarfalk <jan.jarfalk@unwrongest.com>\n * author-website http://www.unwrongest.com\n *\n * special-thanks Michel Gratton\n *\n * @license MIT\n */\n$.fn.extend({\n\tshowPassword(c) {\n\n\t\t// Setup callback object\n\t\tconst callback = { fn: null, args: {} }\n\t\tcallback.fn = c\n\n\t\t// Clones passwords and turn the clones into text inputs\n\t\tconst cloneElement = function(element) {\n\n\t\t\tconst $element = $(element)\n\n\t\t\tconst $clone = $('<input />')\n\n\t\t\t// Name added for JQuery Validation compatibility\n\t\t\t// Element name is required to avoid script warning.\n\t\t\t$clone.attr({\n\t\t\t\ttype: 'text',\n\t\t\t\tclass: $element.attr('class'),\n\t\t\t\tstyle: $element.attr('style'),\n\t\t\t\tsize: $element.attr('size'),\n\t\t\t\tname: $element.attr('name') + '-clone',\n\t\t\t\ttabindex: $element.attr('tabindex'),\n\t\t\t\tautocomplete: 'off',\n\t\t\t})\n\n\t\t\tif ($element.attr('placeholder') !== undefined) {\n\t\t\t\t$clone.attr('placeholder', $element.attr('placeholder'))\n\t\t\t}\n\n\t\t\treturn $clone\n\n\t\t}\n\n\t\t// Transfers values between two elements\n\t\tconst update = function(a, b) {\n\t\t\tb.val(a.val())\n\t\t}\n\n\t\t// Shows a or b depending on checkbox\n\t\tconst setState = function(checkbox, a, b) {\n\n\t\t\tif (checkbox.is(':checked')) {\n\t\t\t\tupdate(a, b)\n\t\t\t\tb.show()\n\t\t\t\ta.hide()\n\t\t\t} else {\n\t\t\t\tupdate(b, a)\n\t\t\t\tb.hide()\n\t\t\t\ta.show()\n\t\t\t}\n\n\t\t}\n\n\t\treturn this.each(function() {\n\n\t\t\tconst $input = $(this)\n\t\t\tconst $checkbox = $($input.data('typetoggle'))\n\n\t\t\t// Create clone\n\t\t\tconst $clone = cloneElement($input)\n\t\t\t$clone.insertAfter($input)\n\n\t\t\t// Set callback arguments\n\t\t\tif (callback.fn) {\n\t\t\t\tcallback.args.input = $input\n\t\t\t\tcallback.args.checkbox = $checkbox\n\t\t\t\tcallback.args.clone = $clone\n\t\t\t}\n\n\t\t\t$checkbox.bind('click', function() {\n\t\t\t\tsetState($checkbox, $input, $clone)\n\t\t\t})\n\n\t\t\t$input.bind('keyup', function() {\n\t\t\t\tupdate($input, $clone)\n\t\t\t})\n\n\t\t\t$clone.bind('keyup', function() {\n\t\t\t\tupdate($clone, $input)\n\n\t\t\t\t// Added for JQuery Validation compatibility\n\t\t\t\t// This will trigger validation if it's ON for keyup event\n\t\t\t\t$input.trigger('keyup')\n\n\t\t\t})\n\n\t\t\t// Added for JQuery Validation compatibility\n\t\t\t// This will trigger validation if it's ON for blur event\n\t\t\t$clone.bind('blur', function() {\n\t\t\t\t$input.trigger('focusout')\n\t\t\t})\n\n\t\t\tsetState($checkbox, $input, $clone)\n\n\t\t\t// set type of password field clone (type=text) to password right on submit\n\t\t\t// to prevent browser save the value of this field\n\t\t\t$clone.closest('form').submit(function(e) {\n\t\t\t\t// .prop has to be used, because .attr throws\n\t\t\t\t// an error while changing a type of an input\n\t\t\t\t// element\n\t\t\t\t$clone.prop('type', 'password')\n\t\t\t})\n\n\t\t\tif (callback.fn) {\n\t\t\t\tcallback.fn(callback.args)\n\t\t\t}\n\n\t\t})\n\t},\n})\n","/**\n * @copyright Copyright (c) 2016 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport $ from 'jquery'\n\n// Set autocomplete width the same as the related input\n// See http://stackoverflow.com/a/11845718\n$.ui.autocomplete.prototype._resizeMenu = function() {\n\tconst ul = this.menu.element\n\tul.outerWidth(this.element.outerWidth())\n}\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/dist/cjs.js!./jquery-ui-fixes.scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/dist/cjs.js!./jquery-ui-fixes.scss\";\n export default content && content.locals ? content.locals : undefined;\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/dist/cjs.js!./jquery.ocdialog.scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/dist/cjs.js!./jquery.ocdialog.scss\";\n export default content && content.locals ? content.locals : undefined;\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport $ from 'jquery'\n\nimport './avatar'\nimport './contactsmenu'\nimport './exists'\nimport './filterattr'\nimport './ocdialog'\nimport './octemplate'\nimport './placeholder'\nimport './requesttoken'\nimport './selectrange'\nimport './showpassword'\nimport './ui-fixes'\n\nimport './css/jquery-ui-fixes.scss'\nimport './css/jquery.ocdialog.scss'\n\n/**\n * Disable automatic evaluation of responses for $.ajax() functions (and its\n * higher-level alternatives like $.get() and $.post()).\n *\n * If a response to a $.ajax() request returns a content type of \"application/javascript\"\n * JQuery would previously execute the response body. This is a pretty unexpected\n * behaviour and can result in a bypass of our Content-Security-Policy as well as\n * multiple unexpected XSS vectors.\n */\n$.ajaxSetup({\n\tcontents: {\n\t\tscript: false,\n\t},\n})\n\n/**\n * Disable execution of eval in jQuery. We do require an allowed eval CSP\n * configuration at the moment for handlebars et al. But for jQuery there is\n * not much of a reason to execute JavaScript directly via eval.\n *\n * This thus mitigates some unexpected XSS vectors.\n */\n$.globalEval = function() {\n}\n","/**\n * @copyright 2018 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport $ from 'jquery'\nimport 'core-js/stable'\nimport 'regenerator-runtime/runtime'\nimport './Polyfill/index.js'\n\n// If you remove the line below, tests won't pass\n// eslint-disable-next-line no-unused-vars\nimport OC from './OC/index.js'\n\nimport './globals.js'\nimport './jquery/index.js'\nimport { initCore } from './init.js'\nimport { registerAppsSlideToggle } from './OC/apps.js'\n\nwindow.addEventListener('DOMContentLoaded', function() {\n\tinitCore()\n\tregisterAppsSlideToggle()\n\n\t// fallback to hashchange when no history support\n\tif (window.history.pushState) {\n\t\twindow.onpopstate = _.bind(OC.Util.History._onPopState, OC.Util.History)\n\t} else {\n\t\t$(window).on('hashchange', _.bind(OC.Util.History._onPopState, OC.Util.History))\n\t}\n})\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nimport ___CSS_LOADER_GET_URL_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/getUrl.js\";\nvar ___CSS_LOADER_URL_IMPORT_0___ = new URL(\"images/ui-icons_1d2d44_256x240.png\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_1___ = new URL(\"images/ui-icons_ffffff_256x240.png\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_2___ = new URL(\"images/ui-icons_ffd27a_256x240.png\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_3___ = new URL(\"images/ui-bg_diagonals-thick_20_666666_40x40.png\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_4___ = new URL(\"images/ui-bg_flat_10_000000_40x100.png\", import.meta.url);\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___);\nvar ___CSS_LOADER_URL_REPLACEMENT_1___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_1___);\nvar ___CSS_LOADER_URL_REPLACEMENT_2___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_2___);\nvar ___CSS_LOADER_URL_REPLACEMENT_3___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_3___);\nvar ___CSS_LOADER_URL_REPLACEMENT_4___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_4___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".ui-widget-content{border:1px solid var(--color-border);background:var(--color-main-background) none;color:var(--color-main-text)}.ui-widget-content a{color:var(--color-main-text)}.ui-widget-header{border:none;color:var(--color-main-text);background-image:none}.ui-widget-header a{color:var(--color-main-text)}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default{border:1px solid var(--color-border);background:var(--color-main-background) none;font-weight:bold;color:#555}.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited{color:#555}.ui-state-hover,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-hover,.ui-state-focus,.ui-widget-content .ui-state-focus,.ui-widget-header .ui-state-focus{border:1px solid #ddd;background:var(--color-main-background) none;font-weight:bold;color:var(--color-main-text)}.ui-state-hover a,.ui-state-hover a:hover,.ui-state-hover a:link,.ui-state-hover a:visited{color:var(--color-main-text)}.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active{border:1px solid var(--color-primary);background:var(--color-main-background) none;font-weight:bold;color:var(--color-main-text)}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:var(--color-main-text)}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid var(--color-main-background);background:var(--color-main-background) none;color:var(--color-text-light);font-weight:600}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:var(--color-text-lighter)}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:var(--color-error);background:var(--color-error) none;color:#fff}.ui-state-error a,.ui-widget-content .ui-state-error a,.ui-widget-header .ui-state-error a{color:#fff}.ui-state-error-text,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error-text{color:#fff}.ui-state-default .ui-icon{background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \")}.ui-state-hover .ui-icon,.ui-state-focus .ui-icon{background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \")}.ui-state-active .ui-icon{background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \")}.ui-state-highlight .ui-icon{background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_1___ + \")}.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_2___ + \")}.ui-icon.ui-icon-none{display:none}.ui-widget-overlay{background:#666 url(\" + ___CSS_LOADER_URL_REPLACEMENT_3___ + \") 50% 50% repeat;opacity:.5}.ui-widget-shadow{margin:-5px 0 0 -5px;padding:5px;background:#000 url(\" + ___CSS_LOADER_URL_REPLACEMENT_4___ + \") 50% 50% repeat-x;opacity:.2;border-radius:5px}.ui-tabs{border:none}.ui-tabs .ui-tabs-nav.ui-corner-all{border-bottom-left-radius:0;border-bottom-right-radius:0}.ui-tabs .ui-tabs-nav{background:none;margin-bottom:15px}.ui-tabs .ui-tabs-nav .ui-state-default{border:none;border-bottom:1px solid rgba(0,0,0,0);font-weight:normal;margin:0 !important;padding:0 !important}.ui-tabs .ui-tabs-nav .ui-state-hover,.ui-tabs .ui-tabs-nav .ui-state-active{border:none;border-bottom:1px solid var(--color-main-text);color:var(--color-main-text)}.ui-tabs .ui-tabs-nav .ui-state-hover a,.ui-tabs .ui-tabs-nav .ui-state-hover a:link,.ui-tabs .ui-tabs-nav .ui-state-hover a:hover,.ui-tabs .ui-tabs-nav .ui-state-hover a:visited,.ui-tabs .ui-tabs-nav .ui-state-active a,.ui-tabs .ui-tabs-nav .ui-state-active a:link,.ui-tabs .ui-tabs-nav .ui-state-active a:hover,.ui-tabs .ui-tabs-nav .ui-state-active a:visited{color:var(--color-main-text)}.ui-tabs .ui-tabs-nav .ui-state-active{font-weight:bold}.ui-autocomplete.ui-menu{padding:0}.ui-autocomplete.ui-menu.item-count-1,.ui-autocomplete.ui-menu.item-count-2{overflow-y:hidden}.ui-autocomplete.ui-menu .ui-menu-item a{color:var(--color-text-lighter);display:block;padding:4px 4px 4px 14px}.ui-autocomplete.ui-menu .ui-menu-item a.ui-state-focus,.ui-autocomplete.ui-menu .ui-menu-item a.ui-state-active{box-shadow:inset 4px 0 var(--color-primary-element);color:var(--color-main-text)}.ui-autocomplete.ui-widget-content{background:var(--color-main-background);border-top:none}.ui-autocomplete.ui-corner-all{border-radius:0;border-bottom-left-radius:var(--border-radius);border-bottom-right-radius:var(--border-radius)}.ui-autocomplete .ui-state-hover,.ui-autocomplete .ui-widget-content .ui-state-hover,.ui-autocomplete .ui-widget-header .ui-state-hover,.ui-autocomplete .ui-state-focus,.ui-autocomplete .ui-widget-content .ui-state-focus,.ui-autocomplete .ui-widget-header .ui-state-focus{border:1px solid rgba(0,0,0,0);background:inherit;color:var(--color-primary-element)}.ui-autocomplete .ui-menu-item a{border-radius:0 !important}.ui-button.primary{background-color:var(--color-primary);color:var(--color-primary-text);border:1px solid var(--color-primary-text)}.ui-button:hover{font-weight:bold !important}.ui-draggable-handle,.ui-selectable{touch-action:pan-y}\", \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/jquery/css/jquery-ui-fixes.scss\"],\"names\":[],\"mappings\":\"AAEA,mBACC,oCAAA,CACA,4CAAA,CACA,4BAAA,CAED,qBACC,4BAAA,CAED,kBACC,WAAA,CACA,4BAAA,CACA,qBAAA,CAED,oBACC,4BAAA,CAKD,2FAGC,oCAAA,CACA,4CAAA,CACA,gBAAA,CACA,UAAA,CAED,yEAGC,UAAA,CAED,0KAMC,qBAAA,CACA,4CAAA,CACA,gBAAA,CACA,4BAAA,CAED,2FAIC,4BAAA,CAED,wFAGC,qCAAA,CACA,4CAAA,CACA,gBAAA,CACA,4BAAA,CAED,sEAGC,4BAAA,CAKD,iGAGC,6CAAA,CACA,4CAAA,CACA,6BAAA,CACA,eAAA,CAED,uGAGC,+BAAA,CAED,qFAGC,yBAAA,CACA,kCAAA,CACA,UAAA,CAED,2FAGC,UAAA,CAED,oGAGC,UAAA,CAKD,2BACC,wDAAA,CAED,kDAEC,wDAAA,CAED,0BACC,wDAAA,CAED,6BACC,wDAAA,CAED,uDAEC,wDAAA,CAED,sBACC,YAAA,CAMD,mBACC,sEAAA,CACA,UAAA,CAED,kBACC,oBAAA,CACA,WAAA,CACA,wEAAA,CACA,UAAA,CACA,iBAAA,CAID,SACC,WAAA,CAEA,oCACC,2BAAA,CACA,4BAAA,CAGD,sBACC,eAAA,CACA,kBAAA,CAEA,wCACC,WAAA,CACA,qCAAA,CACA,kBAAA,CACA,mBAAA,CACA,oBAAA,CAGD,6EAEC,WAAA,CACA,8CAAA,CACA,4BAAA,CACA,0WACC,4BAAA,CAGF,uCACC,gBAAA,CAOF,yBACC,SAAA,CAIA,4EAEC,iBAAA,CAGD,yCACC,+BAAA,CACA,aAAA,CACA,wBAAA,CAEA,iHACC,mDAAA,CACA,4BAAA,CAKH,mCACC,uCAAA,CACA,eAAA,CAGD,+BACC,eAAA,CACA,8CAAA,CACA,+CAAA,CAGD,gRAKC,8BAAA,CACA,kBAAA,CACA,kCAAA,CAIA,iCACC,0BAAA,CAKH,mBACC,qCAAA,CACA,+BAAA,CACA,0CAAA,CAID,iBACI,2BAAA,CAKJ,oCAEC,kBAAA\",\"sourcesContent\":[\"/* Component containers\\n----------------------------------*/\\n.ui-widget-content {\\n\\tborder: 1px solid var(--color-border);\\n\\tbackground: var(--color-main-background) none;\\n\\tcolor: var(--color-main-text);\\n}\\n.ui-widget-content a {\\n\\tcolor: var(--color-main-text);\\n}\\n.ui-widget-header {\\n\\tborder: none;\\n\\tcolor: var(--color-main-text);\\n\\tbackground-image: none;\\n}\\n.ui-widget-header a {\\n\\tcolor: var(--color-main-text);\\n}\\n\\n/* Interaction states\\n----------------------------------*/\\n.ui-state-default,\\n.ui-widget-content .ui-state-default,\\n.ui-widget-header .ui-state-default {\\n\\tborder: 1px solid var(--color-border);\\n\\tbackground: var(--color-main-background) none;\\n\\tfont-weight: bold;\\n\\tcolor: #555;\\n}\\n.ui-state-default a,\\n.ui-state-default a:link,\\n.ui-state-default a:visited {\\n\\tcolor: #555;\\n}\\n.ui-state-hover,\\n.ui-widget-content .ui-state-hover,\\n.ui-widget-header .ui-state-hover,\\n.ui-state-focus,\\n.ui-widget-content .ui-state-focus,\\n.ui-widget-header .ui-state-focus {\\n\\tborder: 1px solid #ddd;\\n\\tbackground: var(--color-main-background) none;\\n\\tfont-weight: bold;\\n\\tcolor: var(--color-main-text);\\n}\\n.ui-state-hover a,\\n.ui-state-hover a:hover,\\n.ui-state-hover a:link,\\n.ui-state-hover a:visited {\\n\\tcolor: var(--color-main-text);\\n}\\n.ui-state-active,\\n.ui-widget-content .ui-state-active,\\n.ui-widget-header .ui-state-active {\\n\\tborder: 1px solid var(--color-primary);\\n\\tbackground: var(--color-main-background) none;\\n\\tfont-weight: bold;\\n\\tcolor: var(--color-main-text);\\n}\\n.ui-state-active a,\\n.ui-state-active a:link,\\n.ui-state-active a:visited {\\n\\tcolor: var(--color-main-text);\\n}\\n\\n/* Interaction Cues\\n----------------------------------*/\\n.ui-state-highlight,\\n.ui-widget-content .ui-state-highlight,\\n.ui-widget-header .ui-state-highlight {\\n\\tborder: 1px solid var(--color-main-background);\\n\\tbackground: var(--color-main-background) none;\\n\\tcolor: var(--color-text-light);\\n\\tfont-weight: 600;\\n}\\n.ui-state-highlight a,\\n.ui-widget-content .ui-state-highlight a,\\n.ui-widget-header .ui-state-highlight a {\\n\\tcolor: var(--color-text-lighter);\\n}\\n.ui-state-error,\\n.ui-widget-content .ui-state-error,\\n.ui-widget-header .ui-state-error {\\n\\tborder: var(--color-error);\\n\\tbackground: var(--color-error) none;\\n\\tcolor: #ffffff;\\n}\\n.ui-state-error a,\\n.ui-widget-content .ui-state-error a,\\n.ui-widget-header .ui-state-error a {\\n\\tcolor: #ffffff;\\n}\\n.ui-state-error-text,\\n.ui-widget-content .ui-state-error-text,\\n.ui-widget-header .ui-state-error-text {\\n\\tcolor: #ffffff;\\n}\\n\\n/* Icons\\n----------------------------------*/\\n.ui-state-default .ui-icon {\\n\\tbackground-image: url('images/ui-icons_1d2d44_256x240.png');\\n}\\n.ui-state-hover .ui-icon,\\n.ui-state-focus .ui-icon {\\n\\tbackground-image: url('images/ui-icons_1d2d44_256x240.png');\\n}\\n.ui-state-active .ui-icon {\\n\\tbackground-image: url('images/ui-icons_1d2d44_256x240.png');\\n}\\n.ui-state-highlight .ui-icon {\\n\\tbackground-image: url('images/ui-icons_ffffff_256x240.png');\\n}\\n.ui-state-error .ui-icon,\\n.ui-state-error-text .ui-icon {\\n\\tbackground-image: url('images/ui-icons_ffd27a_256x240.png');\\n}\\n.ui-icon.ui-icon-none {\\n\\tdisplay: none;\\n}\\n\\n/* Misc visuals\\n----------------------------------*/\\n/* Overlays */\\n.ui-widget-overlay {\\n\\tbackground: #666666 url('images/ui-bg_diagonals-thick_20_666666_40x40.png') 50% 50% repeat;\\n\\topacity: .5;\\n}\\n.ui-widget-shadow {\\n\\tmargin: -5px 0 0 -5px;\\n\\tpadding: 5px;\\n\\tbackground: #000000 url('images/ui-bg_flat_10_000000_40x100.png') 50% 50% repeat-x;\\n\\topacity: .2;\\n\\tborder-radius: 5px;\\n}\\n\\n/* Tabs customizations */\\n.ui-tabs {\\n\\tborder: none;\\n\\n\\t.ui-tabs-nav.ui-corner-all {\\n\\t\\tborder-bottom-left-radius: 0;\\n\\t\\tborder-bottom-right-radius: 0;\\n\\t}\\n\\n\\t.ui-tabs-nav {\\n\\t\\tbackground: none;\\n\\t\\tmargin-bottom: 15px;\\n\\n\\t\\t.ui-state-default {\\n\\t\\t\\tborder: none;\\n\\t\\t\\tborder-bottom: 1px solid transparent;\\n\\t\\t\\tfont-weight: normal;\\n\\t\\t\\tmargin: 0 !important;\\n\\t\\t\\tpadding: 0 !important;\\n\\t\\t}\\n\\n\\t\\t.ui-state-hover,\\n\\t\\t.ui-state-active {\\n\\t\\t\\tborder: none;\\n\\t\\t\\tborder-bottom: 1px solid var(--color-main-text);\\n\\t\\t\\tcolor: var(--color-main-text);\\n\\t\\t\\ta, a:link, a:hover, a:visited {\\n\\t\\t\\t\\tcolor: var(--color-main-text);\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\t.ui-state-active {\\n\\t\\t\\tfont-weight: bold;\\n\\t\\t}\\n\\t}\\n}\\n\\n/* Select menus */\\n.ui-autocomplete {\\n\\t&.ui-menu {\\n\\t\\tpadding: 0;\\n\\n\\t\\t/* scrolling starts from three items,\\n\\t\\t * so hide overflow and scrollbars for a clean layout */\\n\\t\\t&.item-count-1,\\n\\t\\t&.item-count-2 {\\n\\t\\t\\toverflow-y: hidden;\\n\\t\\t}\\n\\n\\t\\t.ui-menu-item a {\\n\\t\\t\\tcolor: var(--color-text-lighter);\\n\\t\\t\\tdisplay: block;\\n\\t\\t\\tpadding: 4px 4px 4px 14px;\\n\\n\\t\\t\\t&.ui-state-focus, &.ui-state-active {\\n\\t\\t\\t\\tbox-shadow: inset 4px 0 var(--color-primary-element);\\n\\t\\t\\t\\tcolor: var(--color-main-text);\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t&.ui-widget-content {\\n\\t\\tbackground: var(--color-main-background);\\n\\t\\tborder-top: none;\\n\\t}\\n\\n\\t&.ui-corner-all {\\n\\t\\tborder-radius: 0;\\n\\t\\tborder-bottom-left-radius: var(--border-radius);\\n\\t\\tborder-bottom-right-radius: var(--border-radius);\\n\\t}\\n\\n\\t.ui-state-hover, .ui-widget-content .ui-state-hover,\\n\\t.ui-widget-header .ui-state-hover,\\n\\t.ui-state-focus,\\n\\t.ui-widget-content .ui-state-focus,\\n\\t.ui-widget-header .ui-state-focus {\\n\\t\\tborder: 1px solid transparent;\\n\\t\\tbackground: inherit;\\n\\t\\tcolor: var(--color-primary-element);\\n\\t}\\n\\n\\t.ui-menu-item {\\n\\t\\ta {\\n\\t\\t\\tborder-radius: 0 !important;\\n\\t\\t}\\n\\t}\\n}\\n\\n.ui-button.primary {\\n\\tbackground-color: var(--color-primary);\\n\\tcolor: var(--color-primary-text);\\n\\tborder: 1px solid var(--color-primary-text);\\n}\\n\\n// fix ui-buttons on hover\\n.ui-button:hover {\\n font-weight:bold !important;\\n}\\n\\n\\n/* DRAGGABLE */\\n.ui-draggable-handle,\\n.ui-selectable {\\n\\ttouch-action: pan-y;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".oc-dialog{background:var(--color-main-background);color:var(--color-text-light);border-radius:var(--border-radius-large);box-shadow:0 0 30px var(--color-box-shadow);padding:24px;z-index:10000;font-size:100%;box-sizing:border-box;min-width:200px;top:50%;left:50%;transform:translate(-50%, -50%);max-height:calc(100% - 20px);max-width:calc(100% - 20px);overflow:auto}.oc-dialog-title{background:var(--color-main-background)}.oc-dialog-buttonrow{position:relative;display:flex;background:rgba(0,0,0,0);right:0;bottom:0;padding:0;padding-top:10px;box-sizing:border-box;width:100%;background-image:linear-gradient(rgba(255, 255, 255, 0), var(--color-main-background))}.oc-dialog-buttonrow.twobuttons{justify-content:space-between}.oc-dialog-buttonrow.onebutton,.oc-dialog-buttonrow.twobuttons.aside{justify-content:flex-end}.oc-dialog-buttonrow button{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;height:44px;min-width:44px}.oc-dialog-close{position:absolute;top:0;right:0;padding:25px;background:var(--icon-close-dark) no-repeat center;opacity:.5;border-radius:var(--border-radius-pill)}.oc-dialog-close:hover,.oc-dialog-close:focus,.oc-dialog-close:active{opacity:1}.oc-dialog-dim{background-color:#000;opacity:.2;z-index:9999;position:fixed;top:0;left:0;width:100%;height:100%}body.theme--dark .oc-dialog-dim{opacity:.8}.oc-dialog-content{width:100%;max-width:550px}.oc-dialog.password-confirmation .oc-dialog-content{width:auto}.oc-dialog.password-confirmation .oc-dialog-content input[type=password]{width:100%}.oc-dialog.password-confirmation .oc-dialog-content label{display:none}\", \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/jquery/css/jquery.ocdialog.scss\"],\"names\":[],\"mappings\":\"AAAA,WACC,uCAAA,CACA,6BAAA,CACA,wCAAA,CACA,2CAAA,CACA,YAAA,CACA,aAAA,CACA,cAAA,CACA,qBAAA,CACA,eAAA,CACA,OAAA,CACA,QAAA,CACA,+BAAA,CACA,4BAAA,CACA,2BAAA,CACA,aAAA,CAED,iBACC,uCAAA,CAED,qBACC,iBAAA,CACA,YAAA,CACA,wBAAA,CACA,OAAA,CACA,QAAA,CACA,SAAA,CACA,gBAAA,CACA,qBAAA,CACA,UAAA,CACA,sFAAA,CAEA,gCACO,6BAAA,CAGP,qEAEC,wBAAA,CAGD,4BACI,kBAAA,CACA,eAAA,CACH,sBAAA,CACA,WAAA,CACA,cAAA,CAIF,iBACC,iBAAA,CACA,KAAA,CACA,OAAA,CACA,YAAA,CACA,kDAAA,CACA,UAAA,CACA,uCAAA,CAEA,sEAGC,SAAA,CAIF,eACC,qBAAA,CACA,UAAA,CACA,YAAA,CACA,cAAA,CACA,KAAA,CACA,MAAA,CACA,UAAA,CACA,WAAA,CAGD,gCACC,UAAA,CAGD,mBACC,UAAA,CACA,eAAA,CAIA,oDACC,UAAA,CAEA,yEACC,UAAA,CAED,0DACC,YAAA\",\"sourcesContent\":[\".oc-dialog {\\n\\tbackground: var(--color-main-background);\\n\\tcolor: var(--color-text-light);\\n\\tborder-radius: var(--border-radius-large);\\n\\tbox-shadow: 0 0 30px var(--color-box-shadow);\\n\\tpadding: 24px;\\n\\tz-index: 10000;\\n\\tfont-size: 100%;\\n\\tbox-sizing: border-box;\\n\\tmin-width: 200px;\\n\\ttop: 50%;\\n\\tleft: 50%;\\n\\ttransform: translate(-50%, -50%);\\n\\tmax-height: calc(100% - 20px);\\n\\tmax-width: calc(100% - 20px);\\n\\toverflow: auto;\\n}\\n.oc-dialog-title {\\n\\tbackground: var(--color-main-background);\\n}\\n.oc-dialog-buttonrow {\\n\\tposition: relative;\\n\\tdisplay: flex;\\n\\tbackground: transparent;\\n\\tright: 0;\\n\\tbottom: 0;\\n\\tpadding: 0;\\n\\tpadding-top: 10px;\\n\\tbox-sizing: border-box;\\n\\twidth: 100%;\\n\\tbackground-image: linear-gradient(rgba(255, 255, 255, 0.0), var(--color-main-background));\\n\\n\\t&.twobuttons {\\n justify-content: space-between;\\n }\\n\\n\\t&.onebutton,\\n\\t&.twobuttons.aside {\\n\\t\\tjustify-content: flex-end;\\n\\t}\\n\\n\\tbutton {\\n\\t white-space: nowrap;\\n\\t overflow: hidden;\\n\\t\\ttext-overflow: ellipsis;\\n\\t\\theight: 44px;\\n\\t\\tmin-width: 44px;\\n\\t}\\n}\\n\\n.oc-dialog-close {\\n\\tposition: absolute;\\n\\ttop: 0;\\n\\tright: 0;\\n\\tpadding: 25px;\\n\\tbackground: var(--icon-close-dark) no-repeat center;\\n\\topacity: .5;\\n\\tborder-radius: var(--border-radius-pill);\\n\\n\\t&:hover,\\n\\t&:focus,\\n\\t&:active {\\n\\t\\topacity: 1;\\n\\t}\\n}\\n\\n.oc-dialog-dim {\\n\\tbackground-color: #000;\\n\\topacity: .2;\\n\\tz-index: 9999;\\n\\tposition: fixed;\\n\\ttop: 0;\\n\\tleft: 0;\\n\\twidth: 100%;\\n\\theight: 100%;\\n}\\n\\nbody.theme--dark .oc-dialog-dim {\\n\\topacity: .8;\\n}\\n\\n.oc-dialog-content {\\n\\twidth: 100%;\\n\\tmax-width: 550px;\\n}\\n\\n.oc-dialog.password-confirmation {\\n\\t.oc-dialog-content {\\n\\t\\twidth: auto;\\n\\n\\t\\tinput[type=password] {\\n\\t\\t\\twidth: 100%;\\n\\t\\t}\\n\\t\\tlabel {\\n\\t\\t\\tdisplay: none;\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".app-menu[data-v-44a795f6]{width:100%;display:flex;flex-shrink:1;flex-wrap:wrap}.app-menu-main[data-v-44a795f6]{display:flex;flex-wrap:nowrap}.app-menu-main .app-menu-entry[data-v-44a795f6]{width:50px;height:50px;position:relative;display:flex;opacity:.7;filter:var(--background-image-invert-if-bright)}.app-menu-main .app-menu-entry.app-menu-entry__active[data-v-44a795f6]{opacity:1}.app-menu-main .app-menu-entry.app-menu-entry__active[data-v-44a795f6]::before{content:\\\" \\\";position:absolute;pointer-events:none;border-bottom-color:var(--color-main-background);transform:translateX(-50%);width:12px;height:5px;border-radius:3px;background-color:var(--color-primary-text);left:50%;bottom:6px;display:block;transition:all .1s ease-in-out;opacity:1}.app-menu-main .app-menu-entry.app-menu-entry__active .app-menu-entry--label[data-v-44a795f6]{font-weight:bold}.app-menu-main .app-menu-entry a[data-v-44a795f6]{width:calc(100% - 4px);height:calc(100% - 4px);margin:2px;color:var(--color-primary-text);position:relative}.app-menu-main .app-menu-entry img[data-v-44a795f6]{transition:margin .1s ease-in-out;width:20px;height:20px;padding:calc((100% - 20px)/2);box-sizing:content-box}.app-menu-main .app-menu-entry .app-menu-entry--label[data-v-44a795f6]{opacity:0;position:absolute;font-size:12px;color:var(--color-primary-text);text-align:center;bottom:-5px;left:50%;top:45%;display:block;min-width:100%;transform:translateX(-50%);transition:all .1s ease-in-out;width:100%;text-overflow:ellipsis;overflow:hidden;letter-spacing:-0.5px}.app-menu-main .app-menu-entry[data-v-44a795f6]:hover,.app-menu-main .app-menu-entry[data-v-44a795f6]:focus-within{opacity:1}.app-menu-main .app-menu-entry:hover .app-menu-entry--label[data-v-44a795f6],.app-menu-main .app-menu-entry:focus-within .app-menu-entry--label[data-v-44a795f6]{opacity:1;font-weight:bolder;bottom:0;width:100%;text-overflow:ellipsis;overflow:hidden}.app-menu-main[data-v-44a795f6]:hover,.app-menu-main[data-v-44a795f6]:focus-within,.app-menu-main .app-menu-entry[data-v-44a795f6]:hover,.app-menu-main .app-menu-entry[data-v-44a795f6]:focus{opacity:1}.app-menu-main:hover img[data-v-44a795f6],.app-menu-main:focus-within img[data-v-44a795f6],.app-menu-main .app-menu-entry:hover img[data-v-44a795f6],.app-menu-main .app-menu-entry:focus img[data-v-44a795f6]{margin-top:-8px}.app-menu-main:hover .app-menu-entry--label[data-v-44a795f6],.app-menu-main:focus-within .app-menu-entry--label[data-v-44a795f6],.app-menu-main .app-menu-entry:hover .app-menu-entry--label[data-v-44a795f6],.app-menu-main .app-menu-entry:focus .app-menu-entry--label[data-v-44a795f6]{opacity:1;bottom:0}.app-menu-main[data-v-44a795f6]:hover::before,.app-menu-main:hover .app-menu-entry[data-v-44a795f6]::before,.app-menu-main[data-v-44a795f6]:focus-within::before,.app-menu-main:focus-within .app-menu-entry[data-v-44a795f6]::before,.app-menu-main .app-menu-entry[data-v-44a795f6]:hover::before,.app-menu-main .app-menu-entry:hover .app-menu-entry[data-v-44a795f6]::before,.app-menu-main .app-menu-entry[data-v-44a795f6]:focus::before,.app-menu-main .app-menu-entry:focus .app-menu-entry[data-v-44a795f6]::before{opacity:0}[data-v-44a795f6] .app-menu-more .button-vue--vue-tertiary{color:var(--color-primary-text);opacity:.7;margin:3px;filter:var(--background-image-invert-if-bright)}[data-v-44a795f6] .app-menu-more .button-vue--vue-tertiary:hover{opacity:1;background-color:rgba(0,0,0,0) !important}[data-v-44a795f6] .app-menu-more .button-vue--vue-tertiary:focus-visible{opacity:1;outline:none !important}.app-menu-popover-entry .app-icon[data-v-44a795f6]{position:relative;height:44px}.app-menu-popover-entry .app-icon.has-unread[data-v-44a795f6]::after{background-color:var(--color-main-text)}.app-menu-popover-entry .app-icon img[data-v-44a795f6]{width:20px;height:20px;padding:15px}.has-unread[data-v-44a795f6]::after{content:\\\"\\\";width:8px;height:8px;background-color:var(--color-primary-text);border-radius:50%;position:absolute;display:block;top:10px;right:10px}.unread-counter[data-v-44a795f6]{display:none}\", \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/AppMenu.vue\"],\"names\":[],\"mappings\":\"AAGA,2BACC,UAAA,CACA,YAAA,CACA,aAAA,CACA,cAAA,CAED,gCACC,YAAA,CACA,gBAAA,CAEA,gDACC,UAAA,CACA,WAAA,CACA,iBAAA,CACA,YAAA,CACA,UAAA,CACA,+CAAA,CAEA,uEACC,SAAA,CAEA,+EACC,WAAA,CACA,iBAAA,CACA,mBAAA,CACA,gDAAA,CACA,0BAAA,CACA,UAAA,CACA,UAAA,CACA,iBAAA,CACA,0CAAA,CACA,QAAA,CACA,UAAA,CACA,aAAA,CACA,8BAAA,CACA,SAAA,CAGD,8FACC,gBAAA,CAIF,kDACC,sBAAA,CACA,uBAAA,CACA,UAAA,CACA,+BAAA,CACA,iBAAA,CAGD,oDACC,iCAAA,CACA,UAvDgB,CAwDhB,WAxDgB,CAyDhB,6BAAA,CACA,sBAAA,CAGD,uEACC,SAAA,CACA,iBAAA,CACA,cAAA,CACA,+BAAA,CACA,iBAAA,CACA,WAAA,CACA,QAAA,CACA,OAAA,CACA,aAAA,CACA,cAAA,CACA,0BAAA,CACA,8BAAA,CACA,UAAA,CACA,sBAAA,CACA,eAAA,CACA,qBAAA,CAGD,mHAEC,SAAA,CACA,iKACC,SAAA,CACA,kBAAA,CACA,QAAA,CACA,UAAA,CACA,sBAAA,CACA,eAAA,CAOH,+LAIC,SAAA,CAEA,+MACC,eAAA,CAGD,2RACC,SAAA,CACA,QAAA,CAGD,8fACC,SAAA,CAKH,2DACC,+BAAA,CACA,UAAA,CACA,UAAA,CACA,+CAAA,CAEA,iEACC,SAAA,CACA,yCAAA,CAGD,yEACC,SAAA,CACA,uBAAA,CAKD,mDACC,iBAAA,CACA,WAAA,CAEA,qEACC,uCAAA,CAGD,uDACC,UAhJgB,CAiJhB,WAjJgB,CAkJhB,YAAA,CAKH,oCACC,UAAA,CACA,SAAA,CACA,UAAA,CACA,0CAAA,CACA,iBAAA,CACA,iBAAA,CACA,aAAA,CACA,QAAA,CACA,UAAA,CAGD,iCACC,YAAA\",\"sourcesContent\":[\"\\n$header-icon-size: 20px;\\n\\n.app-menu {\\n\\twidth: 100%;\\n\\tdisplay: flex;\\n\\tflex-shrink: 1;\\n\\tflex-wrap: wrap;\\n}\\n.app-menu-main {\\n\\tdisplay: flex;\\n\\tflex-wrap: nowrap;\\n\\n\\t.app-menu-entry {\\n\\t\\twidth: 50px;\\n\\t\\theight: 50px;\\n\\t\\tposition: relative;\\n\\t\\tdisplay: flex;\\n\\t\\topacity: .7;\\n\\t\\tfilter: var(--background-image-invert-if-bright);\\n\\n\\t\\t&.app-menu-entry__active {\\n\\t\\t\\topacity: 1;\\n\\n\\t\\t\\t&::before {\\n\\t\\t\\t\\tcontent: \\\" \\\";\\n\\t\\t\\t\\tposition: absolute;\\n\\t\\t\\t\\tpointer-events: none;\\n\\t\\t\\t\\tborder-bottom-color: var(--color-main-background);\\n\\t\\t\\t\\ttransform: translateX(-50%);\\n\\t\\t\\t\\twidth: 12px;\\n\\t\\t\\t\\theight: 5px;\\n\\t\\t\\t\\tborder-radius: 3px;\\n\\t\\t\\t\\tbackground-color: var(--color-primary-text);\\n\\t\\t\\t\\tleft: 50%;\\n\\t\\t\\t\\tbottom: 6px;\\n\\t\\t\\t\\tdisplay: block;\\n\\t\\t\\t\\ttransition: all 0.1s ease-in-out;\\n\\t\\t\\t\\topacity: 1;\\n\\t\\t\\t}\\n\\n\\t\\t\\t.app-menu-entry--label {\\n\\t\\t\\t\\tfont-weight: bold;\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\ta {\\n\\t\\t\\twidth: calc(100% - 4px);\\n\\t\\t\\theight: calc(100% - 4px);\\n\\t\\t\\tmargin: 2px;\\n\\t\\t\\tcolor: var(--color-primary-text);\\n\\t\\t\\tposition: relative;\\n\\t\\t}\\n\\n\\t\\timg {\\n\\t\\t\\ttransition: margin 0.1s ease-in-out;\\n\\t\\t\\twidth: $header-icon-size;\\n\\t\\t\\theight: $header-icon-size;\\n\\t\\t\\tpadding: calc((100% - $header-icon-size) / 2);\\n\\t\\t\\tbox-sizing: content-box;\\n\\t\\t}\\n\\n\\t\\t.app-menu-entry--label {\\n\\t\\t\\topacity: 0;\\n\\t\\t\\tposition: absolute;\\n\\t\\t\\tfont-size: 12px;\\n\\t\\t\\tcolor: var(--color-primary-text);\\n\\t\\t\\ttext-align: center;\\n\\t\\t\\tbottom: -5px;\\n\\t\\t\\tleft: 50%;\\n\\t\\t\\ttop: 45%;\\n\\t\\t\\tdisplay: block;\\n\\t\\t\\tmin-width: 100%;\\n\\t\\t\\ttransform: translateX(-50%);\\n\\t\\t\\ttransition: all 0.1s ease-in-out;\\n\\t\\t\\twidth: 100%;\\n\\t\\t\\ttext-overflow: ellipsis;\\n\\t\\t\\toverflow: hidden;\\n\\t\\t\\tletter-spacing: -0.5px;\\n\\t\\t}\\n\\n\\t\\t&:hover,\\n\\t\\t&:focus-within {\\n\\t\\t\\topacity: 1;\\n\\t\\t\\t.app-menu-entry--label {\\n\\t\\t\\t\\topacity: 1;\\n\\t\\t\\t\\tfont-weight: bolder;\\n\\t\\t\\t\\tbottom: 0;\\n\\t\\t\\t\\twidth: 100%;\\n\\t\\t\\t\\ttext-overflow: ellipsis;\\n\\t\\t\\t\\toverflow: hidden;\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t}\\n\\n\\t// Show labels\\n\\t&:hover,\\n\\t&:focus-within,\\n\\t.app-menu-entry:hover,\\n\\t.app-menu-entry:focus {\\n\\t\\topacity: 1;\\n\\n\\t\\timg {\\n\\t\\t\\tmargin-top: -8px;\\n\\t\\t}\\n\\n\\t\\t.app-menu-entry--label {\\n\\t\\t\\topacity: 1;\\n\\t\\t\\tbottom: 0;\\n\\t\\t}\\n\\n\\t\\t&::before, .app-menu-entry::before {\\n\\t\\t\\topacity: 0;\\n\\t\\t}\\n\\t}\\n}\\n\\n::v-deep .app-menu-more .button-vue--vue-tertiary {\\n\\tcolor: var(--color-primary-text);\\n\\topacity: .7;\\n\\tmargin: 3px;\\n\\tfilter: var(--background-image-invert-if-bright);\\n\\n\\t&:hover {\\n\\t\\topacity: 1;\\n\\t\\tbackground-color: transparent !important;\\n\\t}\\n\\n\\t&:focus-visible {\\n\\t\\topacity: 1;\\n\\t\\toutline: none !important;\\n\\t}\\n}\\n\\n.app-menu-popover-entry {\\n\\t.app-icon {\\n\\t\\tposition: relative;\\n\\t\\theight: 44px;\\n\\n\\t\\t&.has-unread::after {\\n\\t\\t\\tbackground-color: var(--color-main-text);\\n\\t\\t}\\n\\n\\t\\timg {\\n\\t\\t\\twidth: $header-icon-size;\\n\\t\\t\\theight: $header-icon-size;\\n\\t\\t\\tpadding: calc((50px - $header-icon-size) / 2);\\n\\t\\t}\\n\\t}\\n}\\n\\n.has-unread::after {\\n\\tcontent: \\\"\\\";\\n\\twidth: 8px;\\n\\theight: 8px;\\n\\tbackground-color: var(--color-primary-text);\\n\\tborder-radius: 50%;\\n\\tposition: absolute;\\n\\tdisplay: block;\\n\\ttop: 10px;\\n\\tright: 10px;\\n}\\n\\n.unread-counter {\\n\\tdisplay: none;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".menu-entry__loading-icon[data-v-6e59d13c]{margin-right:8px}\", \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/UserMenu/UserMenuEntry.vue\"],\"names\":[],\"mappings\":\"AAEC,2CACC,gBAAA\",\"sourcesContent\":[\"\\n.menu-entry {\\n\\t&__loading-icon {\\n\\t\\tmargin-right: 8px;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"#contactsmenu-menu[data-v-1563c388]{height:calc(100vh - 150px);max-height:302px;min-height:175px;width:350px}#contactsmenu-menu[data-v-1563c388] .emptycontent{margin-top:5vh !important;margin-bottom:1.5vh}#contactsmenu-menu[data-v-1563c388] .emptycontent .icon-loading,#contactsmenu-menu[data-v-1563c388] .emptycontent .icon-search{display:inline-block}#contactsmenu-menu[data-v-1563c388] #contactsmenu-search{width:calc(100% - 16px);margin:8px;height:34px}#contactsmenu-menu[data-v-1563c388] .content{height:calc(100vh - 150px - 50px);max-height:250px;min-height:125px;overflow-y:auto}#contactsmenu-menu[data-v-1563c388] .content .footer{text-align:center}#contactsmenu-menu[data-v-1563c388] .content .footer a{display:block;width:100%;padding:12px 0;opacity:.5}#contactsmenu-menu[data-v-1563c388] a{padding:2px}#contactsmenu-menu[data-v-1563c388] a:focus-visible{box-shadow:inset 0 0 0 2px var(--color-main-text) !important}#contactsmenu-menu[data-v-1563c388] .contact{display:flex;position:relative;align-items:center;padding:3px 3px 3px 10px}#contactsmenu-menu[data-v-1563c388] .contact .avatar{height:32px;width:32px;display:inline-block}#contactsmenu-menu[data-v-1563c388] .contact .body{flex-grow:1;padding-left:8px;min-width:0}#contactsmenu-menu[data-v-1563c388] .contact .body div{position:relative;width:100%;overflow-x:hidden;text-overflow:ellipsis}#contactsmenu-menu[data-v-1563c388] .contact .body .last-message,#contactsmenu-menu[data-v-1563c388] .contact .body .email-address{color:var(--color-text-maxcontrast)}#contactsmenu-menu[data-v-1563c388] .contact .top-action,#contactsmenu-menu[data-v-1563c388] .contact .second-action,#contactsmenu-menu[data-v-1563c388] .contact .other-actions{width:16px;height:16px;opacity:.5;cursor:pointer}#contactsmenu-menu[data-v-1563c388] .contact .top-action:not(button),#contactsmenu-menu[data-v-1563c388] .contact .second-action:not(button),#contactsmenu-menu[data-v-1563c388] .contact .other-actions:not(button){padding:14px}#contactsmenu-menu[data-v-1563c388] .contact .top-action img,#contactsmenu-menu[data-v-1563c388] .contact .second-action img,#contactsmenu-menu[data-v-1563c388] .contact .other-actions img{filter:var(--background-invert-if-dark)}#contactsmenu-menu[data-v-1563c388] .contact .top-action:hover,#contactsmenu-menu[data-v-1563c388] .contact .top-action:active,#contactsmenu-menu[data-v-1563c388] .contact .top-action:focus,#contactsmenu-menu[data-v-1563c388] .contact .second-action:hover,#contactsmenu-menu[data-v-1563c388] .contact .second-action:active,#contactsmenu-menu[data-v-1563c388] .contact .second-action:focus,#contactsmenu-menu[data-v-1563c388] .contact .other-actions:hover,#contactsmenu-menu[data-v-1563c388] .contact .other-actions:active,#contactsmenu-menu[data-v-1563c388] .contact .other-actions:focus{opacity:1}#contactsmenu-menu[data-v-1563c388] .contact button.other-actions{width:44px}#contactsmenu-menu[data-v-1563c388] .contact button.other-actions:focus{border-color:rgba(0,0,0,0);box-shadow:0 0 0 2px var(--color-main-text)}#contactsmenu-menu[data-v-1563c388] .contact button.other-actions:focus-visible{border-radius:var(--border-radius-pill)}#contactsmenu-menu[data-v-1563c388] .contact .menu{top:47px;margin-right:13px}#contactsmenu-menu[data-v-1563c388] .contact .popovermenu::after{right:2px}\", \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/views/ContactsMenu.vue\"],\"names\":[],\"mappings\":\"AACA,oCAEC,0BAAA,CACA,gBAAA,CACA,gBAAA,CACA,WAAA,CAGC,kDACC,yBAAA,CACA,mBAAA,CACA,+HAEC,oBAAA,CAIF,yDACC,uBAAA,CACA,UAAA,CACA,WAAA,CAGD,6CAEC,iCAAA,CACA,gBAAA,CACA,gBAAA,CACA,eAAA,CAEA,qDACC,iBAAA,CAEA,uDACC,aAAA,CACA,UAAA,CACA,cAAA,CACA,UAAA,CAKH,sCACC,WAAA,CAEA,oDACC,4DAAA,CAIF,6CACC,YAAA,CACA,iBAAA,CACA,kBAAA,CACA,wBAAA,CAEA,qDACC,WAAA,CACA,UAAA,CACA,oBAAA,CAGD,mDACC,WAAA,CACA,gBAAA,CACA,WAAA,CAEA,uDACC,iBAAA,CACA,UAAA,CACA,iBAAA,CACA,sBAAA,CAGD,mIACC,mCAAA,CAIF,iLACC,UAAA,CACA,WAAA,CACA,UAAA,CACA,cAAA,CAEA,qNACC,YAAA,CAED,6LACC,uCAAA,CAGD,4kBAGC,SAAA,CAIF,kEACC,UAAA,CAEA,wEACC,0BAAA,CACA,2CAAA,CAGD,gFACC,uCAAA,CAKF,mDACC,QAAA,CACA,iBAAA,CAED,iEACC,SAAA\",\"sourcesContent\":[\"\\n#contactsmenu-menu {\\n\\t/* show 2.5 to 4.5 entries depending on the screen height */\\n\\theight: calc(100vh - 50px * 3);\\n\\tmax-height: calc(50px * 6 + 2px);\\n\\tmin-height: calc(50px * 3.5);\\n\\twidth: 350px;\\n\\n\\t&:deep {\\n\\t\\t.emptycontent {\\n\\t\\t\\tmargin-top: 5vh !important;\\n\\t\\t\\tmargin-bottom: 1.5vh;\\n\\t\\t\\t.icon-loading,\\n\\t\\t\\t.icon-search {\\n\\t\\t\\t\\tdisplay: inline-block;\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t#contactsmenu-search {\\n\\t\\t\\twidth: calc(100% - 16px);\\n\\t\\t\\tmargin: 8px;\\n\\t\\t\\theight: 34px;\\n\\t\\t}\\n\\n\\t\\t.content {\\n\\t\\t\\t/* fixed max height of the parent container without the search input */\\n\\t\\t\\theight: calc(100vh - 50px * 3 - 50px);\\n\\t\\t\\tmax-height: calc(50px * 5);\\n\\t\\t\\tmin-height: calc(50px * 3.5 - 50px);\\n\\t\\t\\toverflow-y: auto;\\n\\n\\t\\t\\t.footer {\\n\\t\\t\\t\\ttext-align: center;\\n\\n\\t\\t\\t\\ta {\\n\\t\\t\\t\\t\\tdisplay: block;\\n\\t\\t\\t\\t\\twidth: 100%;\\n\\t\\t\\t\\t\\tpadding: 12px 0;\\n\\t\\t\\t\\t\\topacity: .5;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\ta {\\n\\t\\t\\tpadding: 2px;\\n\\n\\t\\t\\t&:focus-visible {\\n\\t\\t\\t\\tbox-shadow: inset 0 0 0 2px var(--color-main-text) !important; // override rule in core/css/headers.scss #header a:focus-visible\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t.contact {\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\tposition: relative;\\n\\t\\t\\talign-items: center;\\n\\t\\t\\tpadding: 3px 3px 3px 10px;\\n\\n\\t\\t\\t.avatar {\\n\\t\\t\\t\\theight: 32px;\\n\\t\\t\\t\\twidth: 32px;\\n\\t\\t\\t\\tdisplay: inline-block;\\n\\t\\t\\t}\\n\\n\\t\\t\\t.body {\\n\\t\\t\\t\\tflex-grow: 1;\\n\\t\\t\\t\\tpadding-left: 8px;\\n\\t\\t\\t\\tmin-width: 0;\\n\\n\\t\\t\\t\\tdiv {\\n\\t\\t\\t\\t\\tposition: relative;\\n\\t\\t\\t\\t\\twidth: 100%;\\n\\t\\t\\t\\t\\toverflow-x: hidden;\\n\\t\\t\\t\\t\\ttext-overflow: ellipsis;\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t.last-message, .email-address {\\n\\t\\t\\t\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\n\\t\\t\\t.top-action, .second-action, .other-actions {\\n\\t\\t\\t\\twidth: 16px;\\n\\t\\t\\t\\theight: 16px;\\n\\t\\t\\t\\topacity: .5;\\n\\t\\t\\t\\tcursor: pointer;\\n\\n\\t\\t\\t\\t&:not(button) {\\n\\t\\t\\t\\t\\tpadding: 14px;\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\timg {\\n\\t\\t\\t\\t\\tfilter: var(--background-invert-if-dark);\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t&:hover,\\n\\t\\t\\t\\t&:active,\\n\\t\\t\\t\\t&:focus {\\n\\t\\t\\t\\t\\topacity: 1;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\n\\t\\t\\tbutton.other-actions {\\n\\t\\t\\t\\twidth: 44px;\\n\\n\\t\\t\\t\\t&:focus {\\n\\t\\t\\t\\t\\tborder-color: transparent;\\n\\t\\t\\t\\t\\tbox-shadow: 0 0 0 2px var(--color-main-text);\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t&:focus-visible {\\n\\t\\t\\t\\t\\tborder-radius: var(--border-radius-pill);\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\n\\t\\t\\t/* actions menu */\\n\\t\\t\\t.menu {\\n\\t\\t\\t\\ttop: 47px;\\n\\t\\t\\t\\tmargin-right: 13px;\\n\\t\\t\\t}\\n\\t\\t\\t.popovermenu::after {\\n\\t\\t\\t\\tright: 2px;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".user-menu[data-v-6a818bbc]{margin-right:12px}.user-menu[data-v-6a818bbc] .header-menu__trigger{opacity:1 !important}.user-menu[data-v-6a818bbc] .header-menu__trigger:focus-visible .user-menu__avatar{border:2px solid var(--color-primary-text)}.user-menu[data-v-6a818bbc] .header-menu__carret{display:none !important}.user-menu[data-v-6a818bbc] .header-menu__content{width:fit-content !important}.user-menu__avatar[data-v-6a818bbc]:active,.user-menu__avatar[data-v-6a818bbc]:focus,.user-menu__avatar[data-v-6a818bbc]:hover{border:2px solid var(--color-primary-text)}.user-menu__nav[data-v-6a818bbc]{display:flex;width:100%}.user-menu__nav ul[data-v-6a818bbc]{display:flex;flex-direction:column;gap:2px}.user-menu__nav ul[data-v-6a818bbc] li a,.user-menu__nav ul[data-v-6a818bbc] li button{border-radius:6px;display:inline-flex;align-items:center;height:var(--header-menu-item-height);color:var(--color-main-text);padding:10px 8px;box-sizing:border-box;white-space:nowrap;position:relative;width:100%}.user-menu__nav ul[data-v-6a818bbc] li a:hover,.user-menu__nav ul[data-v-6a818bbc] li button:hover{background-color:var(--color-background-hover)}.user-menu__nav ul[data-v-6a818bbc] li a:focus-visible,.user-menu__nav ul[data-v-6a818bbc] li button:focus-visible{background-color:var(--color-background-hover) !important;box-shadow:inset 0 0 0 2px var(--color-primary) !important;outline:none !important}.user-menu__nav ul[data-v-6a818bbc] li a:active,.user-menu__nav ul[data-v-6a818bbc] li a.active,.user-menu__nav ul[data-v-6a818bbc] li button:active,.user-menu__nav ul[data-v-6a818bbc] li button.active{background-color:var(--color-primary-light)}.user-menu__nav ul[data-v-6a818bbc] li a span,.user-menu__nav ul[data-v-6a818bbc] li button span{padding-bottom:0;color:var(--color-main-text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:110px}.user-menu__nav ul[data-v-6a818bbc] li a img,.user-menu__nav ul[data-v-6a818bbc] li button img{width:16px;height:16px;margin-right:10px}.user-menu__nav ul[data-v-6a818bbc] li a img,.user-menu__nav ul[data-v-6a818bbc] li a svg,.user-menu__nav ul[data-v-6a818bbc] li button img,.user-menu__nav ul[data-v-6a818bbc] li button svg{opacity:.7;filter:var(--background-invert-if-dark)}.user-menu__nav ul[data-v-6a818bbc] li button{background-color:rgba(0,0,0,0);border:none;font-weight:normal;margin:0}\", \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/views/UserMenu.vue\"],\"names\":[],\"mappings\":\"AACA,4BACC,iBAAA,CAIE,kDACC,oBAAA,CAEC,mFACC,0CAAA,CAKH,iDACC,uBAAA,CAGD,kDACC,4BAAA,CAMF,+HAGC,0CAAA,CAIF,iCACC,YAAA,CACA,UAAA,CAEA,oCACC,YAAA,CACA,qBAAA,CACA,OAAA,CAIE,uFAEC,iBAAA,CACA,mBAAA,CACA,kBAAA,CACA,qCAAA,CACA,4BAAA,CACA,gBAAA,CACA,qBAAA,CACA,kBAAA,CACA,iBAAA,CACA,UAAA,CAEA,mGACC,8CAAA,CAGD,mHACC,yDAAA,CACA,0DAAA,CACA,uBAAA,CAGD,0MAEC,2CAAA,CAGD,iGACC,gBAAA,CACA,4BAAA,CACA,kBAAA,CACA,eAAA,CACA,sBAAA,CACA,eAAA,CAGD,+FACC,UAAA,CACA,WAAA,CACA,iBAAA,CAGD,8LAEC,UAAA,CACA,uCAAA,CAKF,8CACC,8BAAA,CACA,WAAA,CACA,kBAAA,CACA,QAAA\",\"sourcesContent\":[\"\\n.user-menu {\\n\\tmargin-right: 12px;\\n\\n\\t&:deep {\\n\\t\\t.header-menu {\\n\\t\\t\\t&__trigger {\\n\\t\\t\\t\\topacity: 1 !important;\\n\\t\\t\\t\\t&:focus-visible {\\n\\t\\t\\t\\t\\t.user-menu__avatar {\\n\\t\\t\\t\\t\\t\\tborder: 2px solid var(--color-primary-text);\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\n\\t\\t\\t&__carret {\\n\\t\\t\\t\\tdisplay: none !important;\\n\\t\\t\\t}\\n\\n\\t\\t\\t&__content {\\n\\t\\t\\t\\twidth: fit-content !important;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t&__avatar {\\n\\t\\t&:active,\\n\\t\\t&:focus,\\n\\t\\t&:hover {\\n\\t\\t\\tborder: 2px solid var(--color-primary-text);\\n\\t\\t}\\n\\t}\\n\\n\\t&__nav {\\n\\t\\tdisplay: flex;\\n\\t\\twidth: 100%;\\n\\n\\t\\tul {\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\tflex-direction: column;\\n\\t\\t\\tgap: 2px;\\n\\n\\t\\t\\t&:deep {\\n\\t\\t\\t\\tli {\\n\\t\\t\\t\\t\\ta,\\n\\t\\t\\t\\t\\tbutton {\\n\\t\\t\\t\\t\\t\\tborder-radius: 6px;\\n\\t\\t\\t\\t\\t\\tdisplay: inline-flex;\\n\\t\\t\\t\\t\\t\\talign-items: center;\\n\\t\\t\\t\\t\\t\\theight: var(--header-menu-item-height);\\n\\t\\t\\t\\t\\t\\tcolor: var(--color-main-text);\\n\\t\\t\\t\\t\\t\\tpadding: 10px 8px;\\n\\t\\t\\t\\t\\t\\tbox-sizing: border-box;\\n\\t\\t\\t\\t\\t\\twhite-space: nowrap;\\n\\t\\t\\t\\t\\t\\tposition: relative;\\n\\t\\t\\t\\t\\t\\twidth: 100%;\\n\\n\\t\\t\\t\\t\\t\\t&:hover {\\n\\t\\t\\t\\t\\t\\t\\tbackground-color: var(--color-background-hover);\\n\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t\\t&:focus-visible {\\n\\t\\t\\t\\t\\t\\t\\tbackground-color: var(--color-background-hover) !important;\\n\\t\\t\\t\\t\\t\\t\\tbox-shadow: inset 0 0 0 2px var(--color-primary) !important;\\n\\t\\t\\t\\t\\t\\t\\toutline: none !important;\\n\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t\\t&:active,\\n\\t\\t\\t\\t\\t\\t&.active {\\n\\t\\t\\t\\t\\t\\t\\tbackground-color: var(--color-primary-light);\\n\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t\\tspan {\\n\\t\\t\\t\\t\\t\\t\\tpadding-bottom: 0;\\n\\t\\t\\t\\t\\t\\t\\tcolor: var(--color-main-text);\\n\\t\\t\\t\\t\\t\\t\\twhite-space: nowrap;\\n\\t\\t\\t\\t\\t\\t\\toverflow: hidden;\\n\\t\\t\\t\\t\\t\\t\\ttext-overflow: ellipsis;\\n\\t\\t\\t\\t\\t\\t\\tmax-width: 110px;\\n\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t\\timg {\\n\\t\\t\\t\\t\\t\\t\\twidth: 16px;\\n\\t\\t\\t\\t\\t\\t\\theight: 16px;\\n\\t\\t\\t\\t\\t\\t\\tmargin-right: 10px;\\n\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t\\timg,\\n\\t\\t\\t\\t\\t\\tsvg {\\n\\t\\t\\t\\t\\t\\t\\topacity: .7;\\n\\t\\t\\t\\t\\t\\t\\tfilter: var(--background-invert-if-dark);\\n\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t// Override global button styles\\n\\t\\t\\t\\t\\tbutton {\\n\\t\\t\\t\\t\\t\\tbackground-color: transparent;\\n\\t\\t\\t\\t\\t\\tborder: none;\\n\\t\\t\\t\\t\\t\\tfont-weight: normal;\\n\\t\\t\\t\\t\\t\\tmargin: 0;\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","var Handlebars = require(\"../../../../node_modules/handlebars/runtime.js\");\nfunction __default(obj) { return obj && (obj.__esModule ? obj[\"default\"] : obj); }\nmodule.exports = (Handlebars[\"default\"] || Handlebars).template({\"1\":function(container,depth0,helpers,partials,data) {\n var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return ((stack1 = lookupProperty(helpers,\"if\").call(depth0 != null ? depth0 : (container.nullContext || {}),((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"profileUrl\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(2, data, 0),\"inverse\":container.program(5, data, 0),\"data\":data,\"loc\":{\"start\":{\"line\":2,\"column\":1},\"end\":{\"line\":10,\"column\":8}}})) != null ? stack1 : \"\");\n},\"2\":function(container,depth0,helpers,partials,data) {\n var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return ((stack1 = lookupProperty(helpers,\"if\").call(depth0 != null ? depth0 : (container.nullContext || {}),((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"profileTitle\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(3, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":3,\"column\":2},\"end\":{\"line\":7,\"column\":9}}})) != null ? stack1 : \"\");\n},\"3\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"\t\t\t<a class=\\\"profile-link--avatar\\\" href=\\\"\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"profileUrl\") : stack1), depth0))\n + \"\\\">\\n\t\t\t\t<img src=\\\"\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"avatar\") : stack1), depth0))\n + \"&size=32\\\" class=\\\"avatar\\\" srcset=\\\"\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"avatar\") : stack1), depth0))\n + \"&size=32 1x, \"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"avatar\") : stack1), depth0))\n + \"&size=64 2x, \"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"avatar\") : stack1), depth0))\n + \"&size=128 4x\\\" alt=\\\"\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"avatarLabel\") : stack1), depth0))\n + \"\\\">\\n\t\t\t</a>\\n\";\n},\"5\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"\t\t<img src=\\\"\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"avatar\") : stack1), depth0))\n + \"&size=32\\\" class=\\\"avatar\\\" srcset=\\\"\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"avatar\") : stack1), depth0))\n + \"&size=32 1x, \"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"avatar\") : stack1), depth0))\n + \"&size=64 2x, \"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"avatar\") : stack1), depth0))\n + \"&size=128 4x\\\" alt=\\\"\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"avatarLabel\") : stack1), depth0))\n + \"\\\">\\n\";\n},\"7\":function(container,depth0,helpers,partials,data) {\n var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return ((stack1 = lookupProperty(helpers,\"if\").call(depth0 != null ? depth0 : (container.nullContext || {}),((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"profileUrl\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(8, data, 0),\"inverse\":container.program(11, data, 0),\"data\":data,\"loc\":{\"start\":{\"line\":12,\"column\":1},\"end\":{\"line\":20,\"column\":8}}})) != null ? stack1 : \"\");\n},\"8\":function(container,depth0,helpers,partials,data) {\n var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return ((stack1 = lookupProperty(helpers,\"if\").call(depth0 != null ? depth0 : (container.nullContext || {}),((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"profileTitle\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(9, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":13,\"column\":2},\"end\":{\"line\":17,\"column\":9}}})) != null ? stack1 : \"\");\n},\"9\":function(container,depth0,helpers,partials,data) {\n var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"\t\t\t<a class=\\\"profile-link--avatar\\\" href=\\\"\"\n + container.escapeExpression(container.lambda(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"profileUrl\") : stack1), depth0))\n + \"\\\">\\n\t\t\t\t<div class=\\\"avatar\\\"></div>\\n\t\t\t</a>\\n\";\n},\"11\":function(container,depth0,helpers,partials,data) {\n return \"\t\t<div class=\\\"avatar\\\"></div>\\n\";\n},\"13\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=depth0 != null ? depth0 : (container.nullContext || {}), lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return ((stack1 = lookupProperty(helpers,\"if\").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"profileTitle\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(14, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":23,\"column\":1},\"end\":{\"line\":29,\"column\":8}}})) != null ? stack1 : \"\")\n + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"topAction\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(16, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":30,\"column\":1},\"end\":{\"line\":34,\"column\":8}}})) != null ? stack1 : \"\");\n},\"14\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"\t\t<a class=\\\"body profile-link--full-name\\\" href=\\\"\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"profileUrl\") : stack1), depth0))\n + \"\\\">\\n\t\t\t<div class=\\\"full-name\\\">\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"fullName\") : stack1), depth0))\n + \"</div>\\n\t\t\t<div class=\\\"last-message\\\">\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"lastMessage\") : stack1), depth0))\n + \"</div>\\n\t\t\t<div class=\\\"email-address\\\">\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"emailAddresses\") : stack1), depth0))\n + \"</div>\\n\t\t</a>\\n\";\n},\"16\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"\t\t<a class=\\\"top-action\\\" href=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"topAction\") : stack1)) != null ? lookupProperty(stack1,\"hyperlink\") : stack1), depth0))\n + \"\\\" title=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"topAction\") : stack1)) != null ? lookupProperty(stack1,\"title\") : stack1), depth0))\n + \"\\\">\\n\t\t\t<img src=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"topAction\") : stack1)) != null ? lookupProperty(stack1,\"icon\") : stack1), depth0))\n + \"\\\" alt=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"topAction\") : stack1)) != null ? lookupProperty(stack1,\"title\") : stack1), depth0))\n + \"\\\">\\n\t\t</a>\\n\";\n},\"18\":function(container,depth0,helpers,partials,data) {\n var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return ((stack1 = lookupProperty(helpers,\"if\").call(depth0 != null ? depth0 : (container.nullContext || {}),((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"topAction\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(19, data, 0),\"inverse\":container.program(21, data, 0),\"data\":data,\"loc\":{\"start\":{\"line\":35,\"column\":0},\"end\":{\"line\":50,\"column\":0}}})) != null ? stack1 : \"\");\n},\"19\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"\t<a class=\\\"body\\\" href=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"topAction\") : stack1)) != null ? lookupProperty(stack1,\"hyperlink\") : stack1), depth0))\n + \"\\\">\\n\t\t<div class=\\\"full-name\\\">\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"fullName\") : stack1), depth0))\n + \"</div>\\n\t\t<div class=\\\"last-message\\\">\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"lastMessage\") : stack1), depth0))\n + \"</div>\\n\t\t<div class=\\\"email-address\\\">\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"emailAddresses\") : stack1), depth0))\n + \"</div>\\n\t</a>\\n \t<a class=\\\"top-action\\\" href=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"topAction\") : stack1)) != null ? lookupProperty(stack1,\"hyperlink\") : stack1), depth0))\n + \"\\\" title=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"topAction\") : stack1)) != null ? lookupProperty(stack1,\"title\") : stack1), depth0))\n + \"\\\">\\n \t\t<img src=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"topAction\") : stack1)) != null ? lookupProperty(stack1,\"icon\") : stack1), depth0))\n + \"\\\" alt=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"topAction\") : stack1)) != null ? lookupProperty(stack1,\"title\") : stack1), depth0))\n + \"\\\">\\n\t</a>\\n\";\n},\"21\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"\t<div class=\\\"body\\\">\\n\t\t<div class=\\\"full-name\\\">\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"fullName\") : stack1), depth0))\n + \"</div>\\n\t\t<div class=\\\"last-message\\\">\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"lastMessage\") : stack1), depth0))\n + \"</div>\\n\t\t<div class=\\\"email-address\\\">\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"emailAddresses\") : stack1), depth0))\n + \"</div>\\n\t</div>\\n\";\n},\"23\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"<a class=\\\"second-action\\\" href=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"secondAction\") : stack1)) != null ? lookupProperty(stack1,\"hyperlink\") : stack1), depth0))\n + \"\\\" title=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"secondAction\") : stack1)) != null ? lookupProperty(stack1,\"title\") : stack1), depth0))\n + \"\\\">\\n\t<img src=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"secondAction\") : stack1)) != null ? lookupProperty(stack1,\"icon\") : stack1), depth0))\n + \"\\\" alt=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"secondAction\") : stack1)) != null ? lookupProperty(stack1,\"title\") : stack1), depth0))\n + \"\\\">\\n</a>\\n\";\n},\"25\":function(container,depth0,helpers,partials,data) {\n var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"\t<button class=\\\"other-actions icon-more\\\"></button>\\n\t<div class=\\\"menu popovermenu\\\">\\n\t\t<ul>\\n\"\n + ((stack1 = lookupProperty(helpers,\"each\").call(depth0 != null ? depth0 : (container.nullContext || {}),((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"actions\") : stack1),{\"name\":\"each\",\"hash\":{},\"fn\":container.program(26, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":60,\"column\":3},\"end\":{\"line\":67,\"column\":12}}})) != null ? stack1 : \"\")\n + \"\t\t</ul>\\n\t</div>\\n\";\n},\"26\":function(container,depth0,helpers,partials,data) {\n var helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"\t\t\t<li>\\n\t\t\t\t<a href=\\\"\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"hyperlink\") || (depth0 != null ? lookupProperty(depth0,\"hyperlink\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"hyperlink\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":62,\"column\":13},\"end\":{\"line\":62,\"column\":26}}}) : helper)))\n + \"\\\">\\n\t\t\t\t\t<img src=\\\"\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"icon\") || (depth0 != null ? lookupProperty(depth0,\"icon\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"icon\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":63,\"column\":15},\"end\":{\"line\":63,\"column\":23}}}) : helper)))\n + \"\\\" alt=\\\"\\\">\\n\t\t\t\t\t<span>\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"title\") || (depth0 != null ? lookupProperty(depth0,\"title\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"title\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":64,\"column\":11},\"end\":{\"line\":64,\"column\":20}}}) : helper)))\n + \"</span>\\n\t\t\t\t</a>\\n\t\t\t</li>\\n\";\n},\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=depth0 != null ? depth0 : (container.nullContext || {}), lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return ((stack1 = lookupProperty(helpers,\"if\").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"avatar\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(1, data, 0),\"inverse\":container.program(7, data, 0),\"data\":data,\"loc\":{\"start\":{\"line\":1,\"column\":0},\"end\":{\"line\":21,\"column\":7}}})) != null ? stack1 : \"\")\n + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"profileUrl\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(13, data, 0),\"inverse\":container.program(18, data, 0),\"data\":data,\"loc\":{\"start\":{\"line\":22,\"column\":0},\"end\":{\"line\":50,\"column\":7}}})) != null ? stack1 : \"\")\n + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"hasTwoActions\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(23, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":51,\"column\":0},\"end\":{\"line\":55,\"column\":7}}})) != null ? stack1 : \"\")\n + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"hasManyActions\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(25, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":56,\"column\":0},\"end\":{\"line\":70,\"column\":7}}})) != null ? stack1 : \"\");\n},\"useData\":true});","var Handlebars = require(\"../../../../node_modules/handlebars/runtime.js\");\nfunction __default(obj) { return obj && (obj.__esModule ? obj[\"default\"] : obj); }\nmodule.exports = (Handlebars[\"default\"] || Handlebars).template({\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var helper, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"<div class=\\\"emptycontent\\\">\\n\t<div class=\\\"icon-search\\\"></div>\\n\t<h2>\"\n + container.escapeExpression(((helper = (helper = lookupProperty(helpers,\"couldNotLoadText\") || (depth0 != null ? lookupProperty(depth0,\"couldNotLoadText\") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"couldNotLoadText\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":3,\"column\":5},\"end\":{\"line\":3,\"column\":25}}}) : helper)))\n + \"</h2>\\n</div>\\n\";\n},\"useData\":true});","var Handlebars = require(\"../../../../node_modules/handlebars/runtime.js\");\nfunction __default(obj) { return obj && (obj.__esModule ? obj[\"default\"] : obj); }\nmodule.exports = (Handlebars[\"default\"] || Handlebars).template({\"1\":function(container,depth0,helpers,partials,data) {\n var helper, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"<div class=\\\"emptycontent\\\">\\n\t<div class=\\\"icon-search\\\"></div>\\n\t<h2>\"\n + container.escapeExpression(((helper = (helper = lookupProperty(helpers,\"noContactsFoundText\") || (depth0 != null ? lookupProperty(depth0,\"noContactsFoundText\") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"noContactsFoundText\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":4,\"column\":5},\"end\":{\"line\":4,\"column\":28}}}) : helper)))\n + \"</h2>\\n</div>\\n\";\n},\"3\":function(container,depth0,helpers,partials,data) {\n var helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"<div class=\\\"footer\\\"><a href=\\\"\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"contactsAppURL\") || (depth0 != null ? lookupProperty(depth0,\"contactsAppURL\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"contactsAppURL\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":9,\"column\":29},\"end\":{\"line\":9,\"column\":47}}}) : helper)))\n + \"\\\">\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"showAllContactsText\") || (depth0 != null ? lookupProperty(depth0,\"showAllContactsText\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"showAllContactsText\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":9,\"column\":49},\"end\":{\"line\":9,\"column\":72}}}) : helper)))\n + \"</a></div>\\n\";\n},\"5\":function(container,depth0,helpers,partials,data) {\n var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return ((stack1 = lookupProperty(helpers,\"if\").call(depth0 != null ? depth0 : (container.nullContext || {}),(depth0 != null ? lookupProperty(depth0,\"canInstallApp\") : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(6, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":10,\"column\":0},\"end\":{\"line\":12,\"column\":0}}})) != null ? stack1 : \"\");\n},\"6\":function(container,depth0,helpers,partials,data) {\n var helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"<div class=\\\"footer\\\"><a href=\\\"\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"contactsAppMgmtURL\") || (depth0 != null ? lookupProperty(depth0,\"contactsAppMgmtURL\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"contactsAppMgmtURL\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":11,\"column\":29},\"end\":{\"line\":11,\"column\":51}}}) : helper)))\n + \"\\\">\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"contactsAppMgmtText\") || (depth0 != null ? lookupProperty(depth0,\"contactsAppMgmtText\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"contactsAppMgmtText\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":11,\"column\":53},\"end\":{\"line\":11,\"column\":76}}}) : helper)))\n + \"</a></div>\\n\";\n},\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=depth0 != null ? depth0 : (container.nullContext || {}), lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return ((stack1 = lookupProperty(helpers,\"unless\").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,\"contacts\") : depth0)) != null ? lookupProperty(stack1,\"length\") : stack1),{\"name\":\"unless\",\"hash\":{},\"fn\":container.program(1, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":1,\"column\":0},\"end\":{\"line\":6,\"column\":11}}})) != null ? stack1 : \"\")\n + \"<div id=\\\"contactsmenu-contacts\\\"></div>\\n\"\n + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,(depth0 != null ? lookupProperty(depth0,\"contactsAppEnabled\") : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(3, data, 0),\"inverse\":container.program(5, data, 0),\"data\":data,\"loc\":{\"start\":{\"line\":8,\"column\":0},\"end\":{\"line\":12,\"column\":7}}})) != null ? stack1 : \"\");\n},\"useData\":true});","var Handlebars = require(\"../../../../node_modules/handlebars/runtime.js\");\nfunction __default(obj) { return obj && (obj.__esModule ? obj[\"default\"] : obj); }\nmodule.exports = (Handlebars[\"default\"] || Handlebars).template({\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var helper, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"<div class=\\\"emptycontent\\\">\\n\t<div class=\\\"icon-loading\\\"></div>\\n\t<h2>\"\n + container.escapeExpression(((helper = (helper = lookupProperty(helpers,\"loadingText\") || (depth0 != null ? lookupProperty(depth0,\"loadingText\") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"loadingText\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":3,\"column\":5},\"end\":{\"line\":3,\"column\":20}}}) : helper)))\n + \"</h2>\\n</div>\\n\";\n},\"useData\":true});","var Handlebars = require(\"../../../../node_modules/handlebars/runtime.js\");\nfunction __default(obj) { return obj && (obj.__esModule ? obj[\"default\"] : obj); }\nmodule.exports = (Handlebars[\"default\"] || Handlebars).template({\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"<label class=\\\"hidden-visually\\\" for=\\\"contactsmenu-search\\\">\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"searchContactsText\") || (depth0 != null ? lookupProperty(depth0,\"searchContactsText\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"searchContactsText\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":1,\"column\":57},\"end\":{\"line\":1,\"column\":79}}}) : helper)))\n + \"</label>\\n<input id=\\\"contactsmenu-search\\\" type=\\\"search\\\" placeholder=\\\"\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"searchContactsText\") || (depth0 != null ? lookupProperty(depth0,\"searchContactsText\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"searchContactsText\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":2,\"column\":59},\"end\":{\"line\":2,\"column\":81}}}) : helper)))\n + \"\\\" value=\\\"\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"searchTerm\") || (depth0 != null ? lookupProperty(depth0,\"searchTerm\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"searchTerm\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":2,\"column\":90},\"end\":{\"line\":2,\"column\":104}}}) : helper)))\n + \"\\\">\\n<div class=\\\"content\\\">\\n</div>\\n\";\n},\"useData\":true});","var Handlebars = require(\"../../../../node_modules/handlebars/runtime.js\");\nfunction __default(obj) { return obj && (obj.__esModule ? obj[\"default\"] : obj); }\nmodule.exports = (Handlebars[\"default\"] || Handlebars).template({\"1\":function(container,depth0,helpers,partials,data) {\n var helper, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"<img src=\\\"\"\n + container.escapeExpression(((helper = (helper = lookupProperty(helpers,\"icon\") || (depth0 != null ? lookupProperty(depth0,\"icon\") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"icon\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":3,\"column\":24},\"end\":{\"line\":3,\"column\":32}}}) : helper)))\n + \"\\\">\";\n},\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"<li>\\n\t<a href=\\\"\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"hyperlink\") || (depth0 != null ? lookupProperty(depth0,\"hyperlink\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"hyperlink\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":2,\"column\":10},\"end\":{\"line\":2,\"column\":23}}}) : helper)))\n + \"\\\">\\n\t\t\"\n + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,(depth0 != null ? lookupProperty(depth0,\"icon\") : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(1, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":3,\"column\":2},\"end\":{\"line\":3,\"column\":41}}})) != null ? stack1 : \"\")\n + \"\\n\t\t<span>\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"title\") || (depth0 != null ? lookupProperty(depth0,\"title\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"title\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":4,\"column\":8},\"end\":{\"line\":4,\"column\":17}}}) : helper)))\n + \"</span>\\n\t</a>\\n</li>\\n\";\n},\"useData\":true});","var map = {\n\t\"./af\": 42786,\n\t\"./af.js\": 42786,\n\t\"./ar\": 30867,\n\t\"./ar-dz\": 14130,\n\t\"./ar-dz.js\": 14130,\n\t\"./ar-kw\": 96135,\n\t\"./ar-kw.js\": 96135,\n\t\"./ar-ly\": 56440,\n\t\"./ar-ly.js\": 56440,\n\t\"./ar-ma\": 47702,\n\t\"./ar-ma.js\": 47702,\n\t\"./ar-sa\": 16040,\n\t\"./ar-sa.js\": 16040,\n\t\"./ar-tn\": 37100,\n\t\"./ar-tn.js\": 37100,\n\t\"./ar.js\": 30867,\n\t\"./az\": 31083,\n\t\"./az.js\": 31083,\n\t\"./be\": 9808,\n\t\"./be.js\": 9808,\n\t\"./bg\": 68338,\n\t\"./bg.js\": 68338,\n\t\"./bm\": 67438,\n\t\"./bm.js\": 67438,\n\t\"./bn\": 8905,\n\t\"./bn-bd\": 76225,\n\t\"./bn-bd.js\": 76225,\n\t\"./bn.js\": 8905,\n\t\"./bo\": 11560,\n\t\"./bo.js\": 11560,\n\t\"./br\": 1278,\n\t\"./br.js\": 1278,\n\t\"./bs\": 80622,\n\t\"./bs.js\": 80622,\n\t\"./ca\": 2468,\n\t\"./ca.js\": 2468,\n\t\"./cs\": 5822,\n\t\"./cs.js\": 5822,\n\t\"./cv\": 50877,\n\t\"./cv.js\": 50877,\n\t\"./cy\": 47373,\n\t\"./cy.js\": 47373,\n\t\"./da\": 24780,\n\t\"./da.js\": 24780,\n\t\"./de\": 59740,\n\t\"./de-at\": 60217,\n\t\"./de-at.js\": 60217,\n\t\"./de-ch\": 60894,\n\t\"./de-ch.js\": 60894,\n\t\"./de.js\": 59740,\n\t\"./dv\": 5300,\n\t\"./dv.js\": 5300,\n\t\"./el\": 50837,\n\t\"./el.js\": 50837,\n\t\"./en-au\": 78348,\n\t\"./en-au.js\": 78348,\n\t\"./en-ca\": 77925,\n\t\"./en-ca.js\": 77925,\n\t\"./en-gb\": 22243,\n\t\"./en-gb.js\": 22243,\n\t\"./en-ie\": 46436,\n\t\"./en-ie.js\": 46436,\n\t\"./en-il\": 47207,\n\t\"./en-il.js\": 47207,\n\t\"./en-in\": 44175,\n\t\"./en-in.js\": 44175,\n\t\"./en-nz\": 76319,\n\t\"./en-nz.js\": 76319,\n\t\"./en-sg\": 31662,\n\t\"./en-sg.js\": 31662,\n\t\"./eo\": 92915,\n\t\"./eo.js\": 92915,\n\t\"./es\": 55655,\n\t\"./es-do\": 55251,\n\t\"./es-do.js\": 55251,\n\t\"./es-mx\": 96112,\n\t\"./es-mx.js\": 96112,\n\t\"./es-us\": 71146,\n\t\"./es-us.js\": 71146,\n\t\"./es.js\": 55655,\n\t\"./et\": 5603,\n\t\"./et.js\": 5603,\n\t\"./eu\": 77763,\n\t\"./eu.js\": 77763,\n\t\"./fa\": 76959,\n\t\"./fa.js\": 76959,\n\t\"./fi\": 11897,\n\t\"./fi.js\": 11897,\n\t\"./fil\": 42549,\n\t\"./fil.js\": 42549,\n\t\"./fo\": 94694,\n\t\"./fo.js\": 94694,\n\t\"./fr\": 94470,\n\t\"./fr-ca\": 63049,\n\t\"./fr-ca.js\": 63049,\n\t\"./fr-ch\": 52330,\n\t\"./fr-ch.js\": 52330,\n\t\"./fr.js\": 94470,\n\t\"./fy\": 5044,\n\t\"./fy.js\": 5044,\n\t\"./ga\": 29295,\n\t\"./ga.js\": 29295,\n\t\"./gd\": 2101,\n\t\"./gd.js\": 2101,\n\t\"./gl\": 38794,\n\t\"./gl.js\": 38794,\n\t\"./gom-deva\": 27884,\n\t\"./gom-deva.js\": 27884,\n\t\"./gom-latn\": 23168,\n\t\"./gom-latn.js\": 23168,\n\t\"./gu\": 95349,\n\t\"./gu.js\": 95349,\n\t\"./he\": 24206,\n\t\"./he.js\": 24206,\n\t\"./hi\": 30094,\n\t\"./hi.js\": 30094,\n\t\"./hr\": 30316,\n\t\"./hr.js\": 30316,\n\t\"./hu\": 22138,\n\t\"./hu.js\": 22138,\n\t\"./hy-am\": 11423,\n\t\"./hy-am.js\": 11423,\n\t\"./id\": 29218,\n\t\"./id.js\": 29218,\n\t\"./is\": 90135,\n\t\"./is.js\": 90135,\n\t\"./it\": 90626,\n\t\"./it-ch\": 10150,\n\t\"./it-ch.js\": 10150,\n\t\"./it.js\": 90626,\n\t\"./ja\": 39183,\n\t\"./ja.js\": 39183,\n\t\"./jv\": 24286,\n\t\"./jv.js\": 24286,\n\t\"./ka\": 12105,\n\t\"./ka.js\": 12105,\n\t\"./kk\": 47772,\n\t\"./kk.js\": 47772,\n\t\"./km\": 18758,\n\t\"./km.js\": 18758,\n\t\"./kn\": 79282,\n\t\"./kn.js\": 79282,\n\t\"./ko\": 33730,\n\t\"./ko.js\": 33730,\n\t\"./ku\": 1408,\n\t\"./ku.js\": 1408,\n\t\"./ky\": 33291,\n\t\"./ky.js\": 33291,\n\t\"./lb\": 36841,\n\t\"./lb.js\": 36841,\n\t\"./lo\": 55466,\n\t\"./lo.js\": 55466,\n\t\"./lt\": 57010,\n\t\"./lt.js\": 57010,\n\t\"./lv\": 37595,\n\t\"./lv.js\": 37595,\n\t\"./me\": 39861,\n\t\"./me.js\": 39861,\n\t\"./mi\": 35493,\n\t\"./mi.js\": 35493,\n\t\"./mk\": 95966,\n\t\"./mk.js\": 95966,\n\t\"./ml\": 87341,\n\t\"./ml.js\": 87341,\n\t\"./mn\": 5115,\n\t\"./mn.js\": 5115,\n\t\"./mr\": 10370,\n\t\"./mr.js\": 10370,\n\t\"./ms\": 9847,\n\t\"./ms-my\": 41237,\n\t\"./ms-my.js\": 41237,\n\t\"./ms.js\": 9847,\n\t\"./mt\": 72126,\n\t\"./mt.js\": 72126,\n\t\"./my\": 56165,\n\t\"./my.js\": 56165,\n\t\"./nb\": 64924,\n\t\"./nb.js\": 64924,\n\t\"./ne\": 16744,\n\t\"./ne.js\": 16744,\n\t\"./nl\": 93901,\n\t\"./nl-be\": 59814,\n\t\"./nl-be.js\": 59814,\n\t\"./nl.js\": 93901,\n\t\"./nn\": 83877,\n\t\"./nn.js\": 83877,\n\t\"./oc-lnc\": 92135,\n\t\"./oc-lnc.js\": 92135,\n\t\"./pa-in\": 15858,\n\t\"./pa-in.js\": 15858,\n\t\"./pl\": 64495,\n\t\"./pl.js\": 64495,\n\t\"./pt\": 89520,\n\t\"./pt-br\": 57971,\n\t\"./pt-br.js\": 57971,\n\t\"./pt.js\": 89520,\n\t\"./ro\": 96459,\n\t\"./ro.js\": 96459,\n\t\"./ru\": 21793,\n\t\"./ru.js\": 21793,\n\t\"./sd\": 40950,\n\t\"./sd.js\": 40950,\n\t\"./se\": 10490,\n\t\"./se.js\": 10490,\n\t\"./si\": 90124,\n\t\"./si.js\": 90124,\n\t\"./sk\": 64249,\n\t\"./sk.js\": 64249,\n\t\"./sl\": 14985,\n\t\"./sl.js\": 14985,\n\t\"./sq\": 51104,\n\t\"./sq.js\": 51104,\n\t\"./sr\": 49131,\n\t\"./sr-cyrl\": 79915,\n\t\"./sr-cyrl.js\": 79915,\n\t\"./sr.js\": 49131,\n\t\"./ss\": 85893,\n\t\"./ss.js\": 85893,\n\t\"./sv\": 98760,\n\t\"./sv.js\": 98760,\n\t\"./sw\": 91172,\n\t\"./sw.js\": 91172,\n\t\"./ta\": 27333,\n\t\"./ta.js\": 27333,\n\t\"./te\": 23110,\n\t\"./te.js\": 23110,\n\t\"./tet\": 52095,\n\t\"./tet.js\": 52095,\n\t\"./tg\": 27321,\n\t\"./tg.js\": 27321,\n\t\"./th\": 9041,\n\t\"./th.js\": 9041,\n\t\"./tk\": 19005,\n\t\"./tk.js\": 19005,\n\t\"./tl-ph\": 75768,\n\t\"./tl-ph.js\": 75768,\n\t\"./tlh\": 89444,\n\t\"./tlh.js\": 89444,\n\t\"./tr\": 72397,\n\t\"./tr.js\": 72397,\n\t\"./tzl\": 28254,\n\t\"./tzl.js\": 28254,\n\t\"./tzm\": 51106,\n\t\"./tzm-latn\": 30699,\n\t\"./tzm-latn.js\": 30699,\n\t\"./tzm.js\": 51106,\n\t\"./ug-cn\": 9288,\n\t\"./ug-cn.js\": 9288,\n\t\"./uk\": 67691,\n\t\"./uk.js\": 67691,\n\t\"./ur\": 13795,\n\t\"./ur.js\": 13795,\n\t\"./uz\": 6791,\n\t\"./uz-latn\": 60588,\n\t\"./uz-latn.js\": 60588,\n\t\"./uz.js\": 6791,\n\t\"./vi\": 65666,\n\t\"./vi.js\": 65666,\n\t\"./x-pseudo\": 14378,\n\t\"./x-pseudo.js\": 14378,\n\t\"./yo\": 75805,\n\t\"./yo.js\": 75805,\n\t\"./zh-cn\": 83839,\n\t\"./zh-cn.js\": 83839,\n\t\"./zh-hk\": 55726,\n\t\"./zh-hk.js\": 55726,\n\t\"./zh-mo\": 99807,\n\t\"./zh-mo.js\": 99807,\n\t\"./zh-tw\": 74152,\n\t\"./zh-tw.js\": 74152\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 46700;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = function(module) {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 2943;","__webpack_require__.b = document.baseURI || self.location.href;\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t2943: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = function(chunkId) { return installedChunks[chunkId] === 0; };\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunknextcloud\"] = self[\"webpackChunknextcloud\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [7874], function() { return __webpack_require__(82777); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","loadedScripts","loadedStyles","updatableNotification","getDefaultNotificationFunction","setDefault","callback","this","hide","$row","_","undefined","each","$","toastify","hideToast","console","error","call","showHtml","html","options","isHTML","timeout","TOAST_PERMANENT_TIMEOUT","toast","showMessage","toastElement","show","text","toString","split","join","escapeHTML","showUpdate","showTemporary","TOAST_DEFAULT_TIMEOUT","isHidden","find","length","ajaxConnectionLostHandler","Notification","t","trailing","dynamicSlideToggleEnabled","enableDynamicSlideToggle","Apps","$el","removeClass","trigger","addClass","method","endpoint","OC","type","toUpperCase","url","generateOcsUrl","data","success","bind","getApps","getKeys","app","getValue","key","defaultValue","setValue","value","deleteKey","appConfig","window","oc_appconfig","AppConfig","_oc_appswebroots","methodMap","create","update","patch","delete","read","parsePropFindResult","result","davProperties","subResult","props","href","propStat","status","properties","propKey","id","parseIdFromLocation","queryPos","indexOf","substr","parts","pop","isSuccessStatus","callPropPatch","client","model","headers","propPatch","attrs","changedProp","warn","convertModelAttributesToDavProperties","changed","then","toJSON","Backbone","VendorBackbone","Object","assign","davCall","dav","baseUrl","xmlNamespaces","resolveUrl","requestToken","propFind","depth","response","propsMapping","results","body","shift","callPropFind","request","callMkCol","responseJson","locationHeader","xhr","getResponseHeader","callMethod","davSync","params","isCollection","Collection","hasInnerCollection","usePUT","collection","Error","urlError","JSON","stringify","processData","prototype","textStatus","errorThrown","context","_oc_config","Contact","Model","defaults","fullName","lastMessage","actions","hasOneAction","hasTwoActions","hasManyActions","initialize","get","set","ContactCollection","ContactsListView","View","_collection","_subViews","render","self","forEach","contact","item","ContactsListItemView","append","on","_onChildActionMenuToggle","push","$src","view","className","_template","_model","_actionMenuShown","events","contactTemplate","require","template","_onOtherActionMenuOpened","delegateEvents","imageplaceholder","tooltip","placement","_onToggleActionsMenu","is","ContactsMenuView","_loadingTemplate","_errorTemplate","_contentTemplate","_contactsTemplate","_contacts","_searchTerm","templates","loading","menu","list","_onSearch","e","searchTerm","val","loadingTemplate","errorTemplate","couldNotLoadText","contentTemplate","searchContactsText","contactsTemplate","noContactsFoundText","showAllContactsText","contactsAppMgmtText","showLoading","loadingText","showError","showContacts","viewData","contacts","contactsAppEnabled","contactsAppURL","canInstallApp","contactsAppMgmtURL","searchVal","focus","ContactsMenu","_view","_contactsPromise","el","loadContacts","_getContacts","Promise","resolve","filter","term","catch","rawUid","document","getElementsByTagName","getAttribute","displayName","currentUser","Search","isA11yActivation","event","global","emit","token","Dialogs","YES_NO_BUTTONS","OK_BUTTONS","FILEPICKER_TYPE_CHOOSE","FILEPICKER_TYPE_MOVE","FILEPICKER_TYPE_COPY","FILEPICKER_TYPE_COPY_MOVE","FILEPICKER_TYPE_CUSTOM","dialogsCounter","alert","title","modal","message","OK_BUTTON","info","confirm","confirmDestructive","buttons","confirmHtml","prompt","name","password","_getMessageTemplate","$tmpl","dialogName","dialogId","$dlg","octemplate","dialog_name","input","attr","label","buttonlist","click","ocdialog","defaultButton","closeOnEscape","close","filepicker","multiselect","mimetypeFilter","path","sortField","sortOrder","emptyText","newText","filesClient","OCA","Sharing","PublicApp","fileList","filelist","allowDirectoryChooser","_getFilePickerTemplate","$filePicker","emptytext","newtext","nameCol","sizeCol","modifiedCol","target","prepend","$showGridView","_onGridviewChange","_getGridSettings","newButton","stopImmediatePropagation","preventDefault","$input","submit","newName","lastPos","lastIndexOf","selectRange","$form","$submit","stopPropagation","filename","trimmedName","trim","match","isFileNameValid","file","escape","checkInput","newname","createDirectory","always","_fillFilePicker","ready","$fileListHeader","$filelist","$filelistContainer","$dirTree","_handleTreeListSelect","_handlePickerClick","dir","currentTarget","functionToCall","returnType","datapath","index","element","selectedName","button","width","height","style","remove","buttonEnableDisable","closest","prop","fail","content","dialogType","allowHtml","escapeFunction","cancel","classes","confirmClasses","closeCallback","_fileexistsshown","fileexists","original","replacement","controller","dialogDeferred","resampleHermite","canvas","W","H","W2","H2","Math","round","img","getContext","getImageData","img2","data2","ratio_w","ratio_h","ratio_w_half","ceil","ratio_h_half","j","i","x2","weight","weights","weights_alpha","gx_r","gx_g","gx_b","gx_a","center_y","yy","floor","dy","abs","center_x","w0","xx","dx","w","sqrt","clearRect","max","putImageData","addConflict","$conflicts","$conflict","clone","$originalDiv","$replacementDiv","size","mtime","lastModified","directory","urlSpec","x","y","c","etag","forceIcon","previewpath","Files","generatePreviewUrl","replace","css","FileReader","reader","onload","blob","Blob","URL","webkitURL","originalUrl","createObjectURL","image","Image","src","createElement","min","drawImage","toDataURL","readAsArrayBuffer","reject","getCroppedPreview","checkboxId","count","n","parent","children","_getFileExistsTemplate","allnewfiles","allexistingfiles","why","what","onCancel","onContinue","closeButton","$primaryButton","updatePrimaryButton","checkedCount","$checkbox","promise","gridview","toggleClass","isGridView","hasClass","defer","$filePickerTemplate","tmpl","$listTmpl","detach","jqXHR","$messageTemplate","$fileexistsTemplate","empty","advancedFilter","getFolderContents","files","_changeButtonsText","mimetype","showHiddenInput","getElementById","startsWith","comparator","Comparators","fileInfo1","fileInfo2","sort","file1","file2","isFavorite","fileInfo","tags","_fillSlug","idx","entry","simpleSize","sizeColor","isEncrypted","icon","parseInt","pow","filename1","filename2","date","previewUrl","addButton","$template","paths","prependTo","getOcDialog","$element","ctrlKey","copyText","folder","moveText","eq","manageFromDocument","getToken","setToken","newToken","OCEventSource","joinChar","dataStr","typelessListeners","closed","listeners","encodeURIComponent","useFallBack","EventSource","iframeId","iframeCount","fallBackSources","iframe","source","onmessage","parse","listen","fallBackCallBack","done","lastLength","addEventListener","currentMenu","currentMenuToggle","hideMenus","complete","lastMenu","slideUp","apply","arguments","isAdmin","_oc_isadmin","load","loadTranslations","register","_unregister","unregister","translate","translatePlural","Handlebars","startSaving","selector","startAction","stop","finishedSaving","finishedAction","finishedSuccess","finishedError","delay","fadeOut","pageLoadTime","init","requirePasswordConfirmation","moment","requiresPasswordConfirmation","serverTimeDiff","nc_pageLoad","timeSinceLogin","nc_lastLogin","backendAllowsPasswordConfirmation","rejectCallback","config","_confirmPassword","$dialog","$error","$buttons","generateUrl","lastLogin","theme","_theme","_handlers","_pushState","strParams","history","pushState","location","pathname","navigator","userAgent","toLowerCase","pattern","patterns","querySelectorAll","ii","fill","stroke","removeAttribute","setAttribute","replaceState","hash","_cancelPop","addOnPopStateHandler","handler","_parseHashQuery","pos","_decodeQuery","query","parseUrlQuery","search","_onPopState","state","chunkify","tz","charAt","m","History","humanFileSize","computerFileSize","string","s","bytes","matches","parseFloat","isFinite","b","k","kb","mb","gb","g","tb","pb","p","formatDate","timestamp","format","TESTING","relativeModifiedDate","diff","fromNow","getScrollBarWidth","_scrollBarWidth","inner","outer","position","top","left","visibility","overflow","appendChild","w1","offsetWidth","w2","clientWidth","removeChild","stripTime","Date","getFullYear","getMonth","getDate","naturalSortCompare","a","aa","bb","aNum","Number","bNum","localeCompare","waitFor","interval","internalCallback","setTimeout","isCookieSetToValue","cookies","cookie","debug","_oc_debug","webroot","_oc_webroot","coreApps","menuSpeed","PERMISSION_ALL","PERMISSION_CREATE","PERMISSION_DELETE","PERMISSION_NONE","PERMISSION_READ","PERMISSION_SHARE","PERMISSION_UPDATE","TAG_FAVORITE","fileIsBlacklisted","Config","addScript","script","generateFilePath","addStyle","createStyleSheet","appSettings","args","appid","scriptName","cache","settings","popup","arrowclass","loadJS","scriptname","jqxhr","appswebroots","dialogs","getCurrentUser","uid","isUserAdmin","L10N","_ajaxConnectionLostHandler","_processAjaxError","statusText","timer","setInterval","clearInterval","registerXHRForErrorProcessing","readyState","getCapabilities","realGetCapabilities","registerMenu","$toggle","$menuEl","toggle","headerMenu","isClickableElement","slideToggle","showMenu","unregisterMenu","off","basename","encodePath","dirname","isSamePath","joinPaths","getHost","host","getHostName","hostname","getPort","port","getProtocol","protocol","getCanonicalLocale","getLocale","getLanguage","buildQueryString","parseQueryString","queryString","components","part","decodeURIComponent","msg","PasswordConfirmation","Plugins","_plugins","targetName","plugin","plugins","getPlugins","attach","targetObject","Util","filePath","namespaces","tail","getRootPath","getRootUrl","imagePath","redirect","targetURL","reload","getRequestToken","linkTo","linkToOCS","service","version","ocsVersion","linkToRemote","generateRemoteUrl","linkToRemoteBase","realGetRootUrl","subscribe","resp","poll","setRequestToken","startPolling","NaN","session_lifetime","isNaN","getInterval","Contacts","NcHeaderMenu","contactsMenu","mounted","methods","handleOpen","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","_vm","_c","_self","scopedSlots","_u","fn","proxy","_v","NcActions","NcActionLink","apps","appLimit","observer","computed","appList","mainAppList","popoverAppList","appLabel","beforeDestroy","unsubscribe","setNavigationCounter","setApps","resize","appCount","staticClass","_l","class","active","unread","_s","_e","NcLoadingIcon","required","cachedIcon","handleClick","$event","shiftKey","altKey","metaKey","NcAvatar","UserMenuEntry","settingsNavEntries","userId","_b","localeAliases","zh","zh_Hans","zh_Hans_CN","zh_Hans_HK","zh_Hans_MO","zh_Hans_SG","zh_Hant","zh_Hant_HK","zh_Hant_MO","zh_Hant_TW","locale","hasOwnProperty","initCore","mountPoint","allowAuthErrors","loadState","loadConfig","auto_logout","lastActive","now","localStorage","setItem","newValue","logoutUrl","registerAutoLogout","session_keepalive","initSessionHeartBeat","Vue","container","appMenu","AppMenu","$mount","counter","setUpMainMenu","h","UserMenu","setUpContactsMenu","snapper","Snap","disable","maxPosition","minDragDistance","animating","oldSnapperOpen","open","oldSnapperClose","_snapperOpen","_snapperClose","keypress","delegate","$target","navigationBarSlideGestureEnabled","navigationBarSlideGestureAllowed","navigationBarSlideGestureEnablePending","enable","toggleSnapperOnSize","ex","TypeError","urlRegex","plainToRich","formatLinksRich","richToPlain","formatLinksPlain","leadingSpace","trailingSpace","linkText","$content","$this","dismissOptions","dismiss","menuItem","div","classList","add","innerText","ocs","product","onclick","whatsNew","regular","whatsNewTextItem","innerHTML","changelogURL","rel","onQuerySuccess","onQueryError","onDismissSuccess","onDismissError","func","funcName","oldFunc","newFunc","disableKeyboardShortcuts","types","loadedStylesheets","loadScript","scriptPath","btoa","onerror","head","loadStylesheet","stylePath","link","showSuccess","warning","showWarning","showInfo","Accessibility","Collaboration","registerType","typeDefinition","action","getTypes","keys","getIcon","typeIconClass","getLabel","typeString","getLink","Comments","InitialState","Loader","Toast","WhatsNew","warnIfNotTesting","setDeprecatedProp","cb","Array","isArray","defineProperty","autosize","ClipboardJS","md5","OCP","user","ie8fix","hidedefault","displayname","setAvatarForUnknownUser","String","$div","devicePixelRatio","oc_userconfig","avatar","clearimageplaceholder","alt","entryTemplate","shareWith","shareType","appendTo","$list","topAction","concat","hyperlink","clickedList","has","clickedTarget","attrName","attrValue","_create","originalCss","display","originalTitle","tabIndex","role","insertBefore","removeAttr","$buttonrow","$button","enterCallback","keyCode","_setOptions","_createOverlay","_init","_trigger","_setOption","$title","_setSizes","$defaultButton","$closeButton","closeCB","lessHeight","outerHeight","contentDiv","overlay","_destroyOverlay","widget","setEnterCallback","unsetEnterCallback","destroy","Template","vars","elem","_html","_build","o","outerHTML","r","toRgb","Color","mixPalette","steps","color1","color2","palette","step","ends","stepCalc","red","yellow","blue","palette1","palette2","palette3","maximum","finalInt","hashToInt","seed","rgb","placeholderText","map","word","elm","crossDomain","setRequestHeader","start","end","setSelectionRange","createTextRange","range","collapse","moveEnd","moveStart","select","showPassword","setState","checkbox","$clone","tabindex","autocomplete","cloneElement","insertAfter","outerWidth","contents","areaSelector","area","hideArea","slideDown","showArea","onpopstate","___CSS_LOADER_URL_IMPORT_0___","___CSS_LOADER_URL_IMPORT_1___","___CSS_LOADER_URL_IMPORT_2___","___CSS_LOADER_URL_IMPORT_3___","___CSS_LOADER_URL_IMPORT_4___","___CSS_LOADER_EXPORT___","___CSS_LOADER_URL_REPLACEMENT_0___","___CSS_LOADER_URL_REPLACEMENT_1___","___CSS_LOADER_URL_REPLACEMENT_2___","___CSS_LOADER_URL_REPLACEMENT_3___","___CSS_LOADER_URL_REPLACEMENT_4___","module","exports","depth0","helpers","partials","stack1","lookupProperty","propertyName","nullContext","program","noop","alias1","lambda","alias2","escapeExpression","helper","hooks","helperMissing","alias3","alias4","webpackContext","req","webpackContextResolve","__webpack_require__","code","__webpack_module_cache__","moduleId","cachedModule","loaded","__webpack_modules__","O","chunkIds","priority","notFulfilled","Infinity","fulfilled","every","splice","getter","__esModule","d","definition","enumerable","globalThis","Function","obj","Symbol","toStringTag","nmd","baseURI","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","nc","__webpack_exports__"],"sourceRoot":""}
\ No newline at end of file diff --git a/lib/composer/composer/ClassLoader.php b/lib/composer/composer/ClassLoader.php index fd56bd7d840..a72151c77c8 100644 --- a/lib/composer/composer/ClassLoader.php +++ b/lib/composer/composer/ClassLoader.php @@ -429,7 +429,8 @@ class ClassLoader public function loadClass($class) { if ($file = $this->findFile($class)) { - (self::$includeFile)($file); + $includeFile = self::$includeFile; + $includeFile($file); return true; } @@ -560,7 +561,10 @@ class ClassLoader return false; } - private static function initializeIncludeClosure(): void + /** + * @return void + */ + private static function initializeIncludeClosure() { if (self::$includeFile !== null) { return; @@ -574,8 +578,8 @@ class ClassLoader * @param string $file * @return void */ - self::$includeFile = static function($file) { + self::$includeFile = \Closure::bind(static function($file) { include $file; - }; + }, null, null); } } diff --git a/lib/composer/composer/autoload_classmap.php b/lib/composer/composer/autoload_classmap.php index 080bde60715..57a828dbefb 100644 --- a/lib/composer/composer/autoload_classmap.php +++ b/lib/composer/composer/autoload_classmap.php @@ -649,12 +649,10 @@ return array( 'OCP\\WorkflowEngine\\IComplexOperation' => $baseDir . '/lib/public/WorkflowEngine/IComplexOperation.php', 'OCP\\WorkflowEngine\\IEntity' => $baseDir . '/lib/public/WorkflowEngine/IEntity.php', 'OCP\\WorkflowEngine\\IEntityCheck' => $baseDir . '/lib/public/WorkflowEngine/IEntityCheck.php', - 'OCP\\WorkflowEngine\\IEntityCompat' => $baseDir . '/lib/public/WorkflowEngine/IEntityCompat.php', 'OCP\\WorkflowEngine\\IEntityEvent' => $baseDir . '/lib/public/WorkflowEngine/IEntityEvent.php', 'OCP\\WorkflowEngine\\IFileCheck' => $baseDir . '/lib/public/WorkflowEngine/IFileCheck.php', 'OCP\\WorkflowEngine\\IManager' => $baseDir . '/lib/public/WorkflowEngine/IManager.php', 'OCP\\WorkflowEngine\\IOperation' => $baseDir . '/lib/public/WorkflowEngine/IOperation.php', - 'OCP\\WorkflowEngine\\IOperationCompat' => $baseDir . '/lib/public/WorkflowEngine/IOperationCompat.php', 'OCP\\WorkflowEngine\\IRuleMatcher' => $baseDir . '/lib/public/WorkflowEngine/IRuleMatcher.php', 'OCP\\WorkflowEngine\\ISpecificOperation' => $baseDir . '/lib/public/WorkflowEngine/ISpecificOperation.php', 'OC\\Accounts\\Account' => $baseDir . '/lib/private/Accounts/Account.php', diff --git a/lib/composer/composer/autoload_real.php b/lib/composer/composer/autoload_real.php index 9e054bba0be..ca3361d7202 100644 --- a/lib/composer/composer/autoload_real.php +++ b/lib/composer/composer/autoload_real.php @@ -34,15 +34,15 @@ class ComposerAutoloaderInit749170dad3f5e7f9ca158f5a9f04f6a2 $loader->register(true); $filesToLoad = \Composer\Autoload\ComposerStaticInit749170dad3f5e7f9ca158f5a9f04f6a2::$files; - $requireFile = static function ($fileIdentifier, $file) { + $requireFile = \Closure::bind(static function ($fileIdentifier, $file) { if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) { $GLOBALS['__composer_autoload_files'][$fileIdentifier] = true; require $file; } - }; + }, null, null); foreach ($filesToLoad as $fileIdentifier => $file) { - ($requireFile)($fileIdentifier, $file); + $requireFile($fileIdentifier, $file); } return $loader; diff --git a/lib/composer/composer/autoload_static.php b/lib/composer/composer/autoload_static.php index 2ec47c2b842..e9d1ba50024 100644 --- a/lib/composer/composer/autoload_static.php +++ b/lib/composer/composer/autoload_static.php @@ -682,12 +682,10 @@ class ComposerStaticInit749170dad3f5e7f9ca158f5a9f04f6a2 'OCP\\WorkflowEngine\\IComplexOperation' => __DIR__ . '/../../..' . '/lib/public/WorkflowEngine/IComplexOperation.php', 'OCP\\WorkflowEngine\\IEntity' => __DIR__ . '/../../..' . '/lib/public/WorkflowEngine/IEntity.php', 'OCP\\WorkflowEngine\\IEntityCheck' => __DIR__ . '/../../..' . '/lib/public/WorkflowEngine/IEntityCheck.php', - 'OCP\\WorkflowEngine\\IEntityCompat' => __DIR__ . '/../../..' . '/lib/public/WorkflowEngine/IEntityCompat.php', 'OCP\\WorkflowEngine\\IEntityEvent' => __DIR__ . '/../../..' . '/lib/public/WorkflowEngine/IEntityEvent.php', 'OCP\\WorkflowEngine\\IFileCheck' => __DIR__ . '/../../..' . '/lib/public/WorkflowEngine/IFileCheck.php', 'OCP\\WorkflowEngine\\IManager' => __DIR__ . '/../../..' . '/lib/public/WorkflowEngine/IManager.php', 'OCP\\WorkflowEngine\\IOperation' => __DIR__ . '/../../..' . '/lib/public/WorkflowEngine/IOperation.php', - 'OCP\\WorkflowEngine\\IOperationCompat' => __DIR__ . '/../../..' . '/lib/public/WorkflowEngine/IOperationCompat.php', 'OCP\\WorkflowEngine\\IRuleMatcher' => __DIR__ . '/../../..' . '/lib/public/WorkflowEngine/IRuleMatcher.php', 'OCP\\WorkflowEngine\\ISpecificOperation' => __DIR__ . '/../../..' . '/lib/public/WorkflowEngine/ISpecificOperation.php', 'OC\\Accounts\\Account' => __DIR__ . '/../../..' . '/lib/private/Accounts/Account.php', diff --git a/lib/l10n/ca.js b/lib/l10n/ca.js index e6315ab2cea..719c238023b 100644 --- a/lib/l10n/ca.js +++ b/lib/l10n/ca.js @@ -58,6 +58,7 @@ OC.L10N.register( "Avatar image is not square" : "La imatge de l'avatar no és quadrada", "Files" : "Fitxers", "View profile" : "Visualitza el perfil", + "Local time: %s" : "Hora local: %s", "today" : "avui", "tomorrow" : "demà", "yesterday" : "ahir", @@ -205,6 +206,7 @@ OC.L10N.register( "A valid password must be provided" : "Heu de facilitar una contrasenya vàlida", "The username is already being used" : "El nom d'usuari ja està en ús", "Could not create user" : "No s'ha pogut crear l'usuari", + "Only the following characters are allowed in a username: \"a-z\", \"A-Z\", \"0-9\", spaces and \"_.@-'\"" : "Només es permeten els caràcters següents en un nom d'usuari: \"a-z\", \"A-Z\", \"0-9\", espais i \"_.@-'\"", "A valid username must be provided" : "Heu de facilitar un nom d'usuari vàlid", "Username contains whitespace at the beginning or at the end" : "El nom d’usuari conté espais en blanc al principi o al final", "Username must not consist of dots only" : "El nom d'usuari no pot està format només per punts", diff --git a/lib/l10n/ca.json b/lib/l10n/ca.json index 3eb2b722b10..93772e90cb0 100644 --- a/lib/l10n/ca.json +++ b/lib/l10n/ca.json @@ -56,6 +56,7 @@ "Avatar image is not square" : "La imatge de l'avatar no és quadrada", "Files" : "Fitxers", "View profile" : "Visualitza el perfil", + "Local time: %s" : "Hora local: %s", "today" : "avui", "tomorrow" : "demà", "yesterday" : "ahir", @@ -203,6 +204,7 @@ "A valid password must be provided" : "Heu de facilitar una contrasenya vàlida", "The username is already being used" : "El nom d'usuari ja està en ús", "Could not create user" : "No s'ha pogut crear l'usuari", + "Only the following characters are allowed in a username: \"a-z\", \"A-Z\", \"0-9\", spaces and \"_.@-'\"" : "Només es permeten els caràcters següents en un nom d'usuari: \"a-z\", \"A-Z\", \"0-9\", espais i \"_.@-'\"", "A valid username must be provided" : "Heu de facilitar un nom d'usuari vàlid", "Username contains whitespace at the beginning or at the end" : "El nom d’usuari conté espais en blanc al principi o al final", "Username must not consist of dots only" : "El nom d'usuari no pot està format només per punts", diff --git a/lib/l10n/hy.js b/lib/l10n/hy.js index ec36b3c4f0c..38006501a3f 100644 --- a/lib/l10n/hy.js +++ b/lib/l10n/hy.js @@ -1,6 +1,8 @@ OC.L10N.register( "lib", { + "Unknown filetype" : "Անհայտ նիշքի տեսակ", + "Invalid image" : "Անվավեր նկար", "Files" : "Ֆայլեր", "today" : "այսօր", "seconds ago" : "վրկ. առաջ", diff --git a/lib/l10n/hy.json b/lib/l10n/hy.json index 467b47b970d..a10480a0fe4 100644 --- a/lib/l10n/hy.json +++ b/lib/l10n/hy.json @@ -1,4 +1,6 @@ { "translations": { + "Unknown filetype" : "Անհայտ նիշքի տեսակ", + "Invalid image" : "Անվավեր նկար", "Files" : "Ֆայլեր", "today" : "այսօր", "seconds ago" : "վրկ. առաջ", diff --git a/lib/l10n/ja.js b/lib/l10n/ja.js index 9698888f59b..cc8ec9cb55c 100644 --- a/lib/l10n/ja.js +++ b/lib/l10n/ja.js @@ -58,6 +58,7 @@ OC.L10N.register( "Avatar image is not square" : "アバター画像が正方形ではありません", "Files" : "ファイル", "View profile" : "プロフィールを表示", + "Local time: %s" : "現地時間: %s", "today" : "今日", "tomorrow" : "明日", "yesterday" : "昨日", @@ -102,6 +103,8 @@ OC.L10N.register( "Users" : "ユーザー", "Email" : "メール", "Mail %s" : "メール %s", + "Fediverse" : "フェディバース", + "View %s on the fediverse" : "%sをフェディバース上で見る", "Phone" : "携帯", "Call %s" : "電話 %s", "Twitter" : "Twitter", @@ -203,6 +206,7 @@ OC.L10N.register( "A valid password must be provided" : "有効なパスワードを指定する必要があります", "The username is already being used" : "このユーザー名はすでに使われています", "Could not create user" : "ユーザーを作成できませんでした", + "Only the following characters are allowed in a username: \"a-z\", \"A-Z\", \"0-9\", spaces and \"_.@-'\"" : "ユーザー名で利用できる文字列: \"a-z\", \"A-Z\", \"0-9\", スペース, \"_.@-\"", "A valid username must be provided" : "有効なユーザー名を指定する必要があります", "Username contains whitespace at the beginning or at the end" : "ユーザー名の最初か最後に空白が含まれています", "Username must not consist of dots only" : "ユーザー名に、ドットのみはつけられません", diff --git a/lib/l10n/ja.json b/lib/l10n/ja.json index a359b08256e..9435bfe1933 100644 --- a/lib/l10n/ja.json +++ b/lib/l10n/ja.json @@ -56,6 +56,7 @@ "Avatar image is not square" : "アバター画像が正方形ではありません", "Files" : "ファイル", "View profile" : "プロフィールを表示", + "Local time: %s" : "現地時間: %s", "today" : "今日", "tomorrow" : "明日", "yesterday" : "昨日", @@ -100,6 +101,8 @@ "Users" : "ユーザー", "Email" : "メール", "Mail %s" : "メール %s", + "Fediverse" : "フェディバース", + "View %s on the fediverse" : "%sをフェディバース上で見る", "Phone" : "携帯", "Call %s" : "電話 %s", "Twitter" : "Twitter", @@ -201,6 +204,7 @@ "A valid password must be provided" : "有効なパスワードを指定する必要があります", "The username is already being used" : "このユーザー名はすでに使われています", "Could not create user" : "ユーザーを作成できませんでした", + "Only the following characters are allowed in a username: \"a-z\", \"A-Z\", \"0-9\", spaces and \"_.@-'\"" : "ユーザー名で利用できる文字列: \"a-z\", \"A-Z\", \"0-9\", スペース, \"_.@-\"", "A valid username must be provided" : "有効なユーザー名を指定する必要があります", "Username contains whitespace at the beginning or at the end" : "ユーザー名の最初か最後に空白が含まれています", "Username must not consist of dots only" : "ユーザー名に、ドットのみはつけられません", diff --git a/lib/public/WorkflowEngine/IEntityCompat.php b/lib/public/WorkflowEngine/IEntityCompat.php deleted file mode 100644 index a1c6d20c034..00000000000 --- a/lib/public/WorkflowEngine/IEntityCompat.php +++ /dev/null @@ -1,47 +0,0 @@ -<?php - -declare(strict_types=1); - -/** - * @copyright Copyright (c) 2019 Arthur Schiwon <blizzz@arthur-schiwon.de> - * - * @author Arthur Schiwon <blizzz@arthur-schiwon.de> - * - * @license GNU AGPL version 3 or any later version - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * - */ -namespace OCP\WorkflowEngine; - -/** - * Interface IEntityCompat - * - * This interface extends IEntity to provide compatibility with old style - * Event classes. It is only present for a transition period and will be - * removed in 2023 again. - * - * @since 18.0.0 - * @deprecated - */ -interface IEntityCompat extends IEntity { - /** - * Like prepareRuleMatcherCompat, but works with events that are not based - * on \OCP\EventDispatcher\Event. - * - * @since 18.0.0 - * @deprecated - */ - public function prepareRuleMatcherCompat(IRuleMatcher $ruleMatcher, string $eventName, $event): void; -} diff --git a/lib/public/WorkflowEngine/IOperationCompat.php b/lib/public/WorkflowEngine/IOperationCompat.php deleted file mode 100644 index 3e5f58a2867..00000000000 --- a/lib/public/WorkflowEngine/IOperationCompat.php +++ /dev/null @@ -1,50 +0,0 @@ -<?php - -declare(strict_types=1); - -/** - * @copyright Copyright (c) 2019 Arthur Schiwon <blizzz@arthur-schiwon.de> - * - * @author Arthur Schiwon <blizzz@arthur-schiwon.de> - * - * @license GNU AGPL version 3 or any later version - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * - */ -namespace OCP\WorkflowEngine; - -/** - * Interface IOperationCompat - * - * This interface extends IOperation to provide compatibility with old style - * Event classes. It is only present for a transition period and will be - * removed in 2023 again. - * - * @since 18.0.0 - * @deprecated - */ -interface IOperationCompat { - /** - * Like onEvent, but used with events that are not based on - * \OCP\EventDispatcher\Event. - * - * This method is introduced for compatibility reasons and will be removed - * in 2023 again. - * - * @since 18.0.0 - * @deprecated - */ - public function onEventCompat(string $eventName, $event, IRuleMatcher $ruleMatcher): void; -} |