diff --git a/CHANGELOG.md b/CHANGELOG.md index c8a9eb6de..59c0bc760 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,81 @@ SPDX-FileCopyrightText: 2023 XWiki CryptPad Team and cont SPDX-License-Identifier: AGPL-3.0-or-later --> +# 🌷 Spring release (2026.5.0) + +## Goals + +This release introduces an updated version of the Diagram app, now powered by Drawio 29. The app now defaults to the "sketch" theme, a simple infinite canvas suited to many uses from mind-mapping to freehand drawing. We introduce a theme switcher so that everyone can choose the right level of complexity for their needs. This release also comes with lots of fixes and improvements across CryptPad. + +## Features + +- Upgrade Diagram app to Drawio 29.6.7 [22fe846](https://github.com/cryptpad/cryptpad/pull/2192/changes/22fe846d75a7cdbc9a98878dd9c131ed5dbf5fe0) +- Button to switch diagram mode [#2192](https://github.com/cryptpad/cryptpad/pull/2192) +- Notifications for private messages [#2133](https://github.com/cryptpad/cryptpad/pull/2133) + + +## Improvements + +- Improve Form accessibility [#2260](https://github.com/cryptpad/cryptpad/pull/2260) +- Enable zh-Hant/zh-Hans locales (#2237) and add alias system for locales [#2254](https://github.com/cryptpad/cryptpad/pull/2254) by @toomore +- Improve crowdfunding banner UI and show logic [#2242](https://github.com/cryptpad/cryptpad/pull/2242) +- Contacts page improvements [#2219](https://github.com/cryptpad/cryptpad/pull/2219) + + +## Fixes + +- fix: set bearer secret in env [#2268](https://github.com/cryptpad/cryptpad/pull/2268) by @ebuildy +- Diagram initialized in read-only mode until document is ready [#2238](https://github.com/cryptpad/cryptpad/pull/2238) +- Fix #2216: Table of contents not clickable in read-only mode [#2229](https://github.com/cryptpad/cryptpad/pull/2229) by @sliortega295-ops +- Enforce immediate access-list lockout and prevent stale content visibility on refresh [#2226](https://github.com/cryptpad/cryptpad/pull/2226) +- Fix app icons and spacing in Drive "Open in" context menu [#2213](https://github.com/cryptpad/cryptpad/pull/2213) +- Fix leftside sidebar buttons' text overflow and prevent icon shrinking [#2212](https://github.com/cryptpad/cryptpad/pull/2212) +- Fix paragraph selection in richtext for mobile [#2208](https://github.com/cryptpad/cryptpad/pull/2208) +- Remove kanban tags when board is deleted [#2188](https://github.com/cryptpad/cryptpad/pull/2188) +- Check for other users before OnlyOffice upload [#2228](https://github.com/cryptpad/cryptpad/pull/2228) +- Update status for trashed OnlyOffice documents [#2183](https://github.com/cryptpad/cryptpad/pull/2183) + + +## Dependencies + +- Upgrades + - chainpad-server: from ^5.2.4 to ^5.3.0 + - drawio-npm: from 21.8.2+6 to 29.6.7+3 + +## Upgrade notes + +### SSO plugin + +If your instance relies on the SSO plugin for authentication, please upgrade the plugin to [0.5.0](https://github.com/cryptpad/sso/releases/tag/0.5.0) as part of this upgrade. + +### CryptPad + +If you are upgrading from a version older than `2026.2.2` please read the upgrade notes of all versions between yours and `2026.5.0` to avoid configuration issues. + +To upgrade: + +1. Stop your server +2. Get the latest code with git + +```bash +git fetch --depth 1 origin tag 2026.5.0 +git checkout 2026.5.0 +npm ci +npm run install:components +./install-onlyoffice.sh +``` + +3. Restart your server +4. Review your instance's checkup page to ensure that you are passing all tests + + +## Contributors + +Community: @toomore @sliortega295-ops @ebuildy + +CryptPad team: @AAAMON @Chouhartem @dariiing @davidbenque @DianaXWiki @wginolas @yflory @zuzanna-maria + + # ❄️🩹🩹 Winter fix release 2 (2026.2.2) ## Goals diff --git a/customize.dist/ckeditor-config.js b/customize.dist/ckeditor-config.js index a0dfecfe0..4e4605c5c 100644 --- a/customize.dist/ckeditor-config.js +++ b/customize.dist/ckeditor-config.js @@ -13,7 +13,8 @@ CKEDITOR.editorConfig = function( config ) { config.removeButtons= 'Source,Maximize'; // magicline plugin inserts html crap into the document which is not part of the // document itself and causes problems when it's sent across the wire and reflected back - config.removePlugins= 'resize,elementspath,liststyle'; + var isMobile = window.matchMedia ? window.matchMedia('(pointer: coarse)').matches : navigator.maxTouchPoints > 0; + config.removePlugins= 'resize,elementspath,liststyle' + (isMobile ? ',contextmenu,tabletools,tableselection' : ''); config.resize_enabled= false; //bottom-bar config.extraPlugins= 'autolink,colorbutton,colordialog,font,indentblock,justify,mediatag,print,blockbase64,mathjax,wordcount,comments'; config.toolbarGroups= [ diff --git a/customize.dist/login.js b/customize.dist/login.js index e9361a6a9..256c8d517 100644 --- a/customize.dist/login.js +++ b/customize.dist/login.js @@ -49,12 +49,17 @@ define([ }; if (window.location.hash) { setRedirectTo(); } + Exports.ssoRedirectTo = (localData) => { + redirectTo = localData?.redirectTo || redirectTo; + }; Exports.ssoAuth = function (provider, cb) { var keys = Nacl.sign.keyPair(); var inviteToken = window.location.hash.slice(1); + localStorage.CP_sso_auth = JSON.stringify({ s: Util.encodeBase64(keys.secretKey), p: Util.encodeBase64(keys.publicKey), + redirectTo, token: inviteToken }); ServerCommand(keys, { diff --git a/customize.dist/messages.js b/customize.dist/messages.js index f1b859487..62bde50e7 100755 --- a/customize.dist/messages.js +++ b/customize.dist/messages.js @@ -29,19 +29,42 @@ var map = { 'sv': 'Svenska', //'te': 'తెలుగు', 'uk': 'Українська', - 'zh': '中文(簡體)', + 'zh': '中文(簡體)', // simplified + 'zh_Hant': '中文(正體)', // traditional }; var Messages = {}; var LS_LANG = "CRYPTPAD_LANG"; var getStoredLanguage = function () { return localStorage && localStorage.getItem(LS_LANG); }; var getBrowserLanguage = function () { return navigator.language || navigator.userLanguage || ''; }; +// Normalize browser/localStorage language labels to CryptPad internal keys. +// We keep this centralized to avoid scattered `if (l === 'zh') ...` logic. +var langAliases = { + 'zh-cn': 'zh', + 'zh-sg': 'zh', + 'zh-hans': 'zh', + + 'zh-tw': 'zh_Hant', + 'zh-hk': 'zh_Hant', + 'zh-mo': 'zh_Hant', + 'zh-hant': 'zh_Hant', +}; +var normalizeLanguage = function (l) { + if (!l) { return l; } + // If it already matches a supported internal key, return as-is. + if (map[l]) { return l; } + var lLower = String(l).toLowerCase().replace('_', '-'); + return langAliases[lLower] || l; +}; var getLanguage = Messages._getLanguage = function () { if (window.cryptpadLanguage) { return window.cryptpadLanguage; } + var l = getBrowserLanguage(); try { l = getStoredLanguage() || getBrowserLanguage(); } catch (e) { console.log(e); } + l = normalizeLanguage(l); + return map[l] ? l : (map[l.split('-')[0]] ? l.split('-')[0] : (map[l.split('_')[0]] ? l.split('_')[0] : 'en')); diff --git a/customize.dist/src/less2/include/alertify.less b/customize.dist/src/less2/include/alertify.less index 970c9fbbc..dcdb8a223 100644 --- a/customize.dist/src/less2/include/alertify.less +++ b/customize.dist/src/less2/include/alertify.less @@ -396,6 +396,14 @@ vertical-align: middle; } } + @media screen and (max-width: @browser_media-medium-screen) { + .cp-crowdfunding-modal nav { + display: flex; + flex-wrap: wrap; + justify-content: center; + gap: 0.5rem; + } + } } } diff --git a/customize.dist/src/less2/include/contextmenu.less b/customize.dist/src/less2/include/contextmenu.less index 20ae9afae..09aebf0fd 100644 --- a/customize.dist/src/less2/include/contextmenu.less +++ b/customize.dist/src/less2/include/contextmenu.less @@ -33,6 +33,16 @@ li { padding: 0; font-size: @colortheme_app-font-size; + a.cp-app-drive-context-openincode, + a.cp-app-drive-context-openinsheet, + a.cp-app-drive-context-openindoc, + a.cp-app-drive-context-openinpresentation { + & > svg.lucide { + margin: 0 0.25rem; + vector-effect: non-scaling-stroke; + stroke-width: 1.7; + } + } &.dropdown-submenu { position: relative; &> a { diff --git a/customize.dist/src/less2/include/drive.less b/customize.dist/src/less2/include/drive.less index 4982d81ce..b17a61385 100644 --- a/customize.dist/src/less2/include/drive.less +++ b/customize.dist/src/less2/include/drive.less @@ -976,6 +976,12 @@ stroke-width: 3.5; vector-effect: non-scaling-stroke; } + &.cp-app-drive-content-grid { + li.cp-app-drive-element-row > svg.lucide * { + stroke-width: 3.5; + vector-effect: non-scaling-stroke; + } + } } #cp-app-drive-new-ghost-dialog.cp-modal-container { diff --git a/customize.dist/src/less2/include/messenger.less b/customize.dist/src/less2/include/messenger.less index 8efa0b9b1..3f2779ca4 100644 --- a/customize.dist/src/less2/include/messenger.less +++ b/customize.dist/src/less2/include/messenger.less @@ -7,6 +7,7 @@ @import (reference) './avatar.less'; @import (reference) './badges.less'; @import (reference) "./colortheme-all.less"; +@import (reference) "./browser.less"; .messenger_vars ( @bg-color: @cp_messenger-bg, @@ -89,7 +90,6 @@ background-color: var(--msg-bg-color); color: @msg-color; color: var(--msg-color); - overflow-y: auto; display: flex; flex-flow: column; .cp-app-contacts-friend { @@ -100,9 +100,15 @@ margin-bottom: 0; cursor: pointer; position: relative; - height: @room-height; + display: flex; + align-items: center; + overflow: hidden; + .cp-avatar { + flex-shrink: 0; + margin-right: 5px; + } .cp-app-contacts-right-col { - margin-left: 5px; + margin-left: 0; display: flex; flex-flow: column; flex: 1; @@ -112,13 +118,53 @@ overflow: hidden; text-overflow: ellipsis; } - .cp-app-contacts-icons { - text-align: right; - & > span:hover { - color: @msg-color-hover; + .cp-app-contacts-bottom-row { + display: flex; + align-items: center; + flex-shrink: 0; + .cp-app-contacts-mute-indicator { + font-size: 0.75em; + display: flex; + align-items: center; } - svg { - margin-right: 0.1rem; + .cp-app-contacts-icons { + margin-left: auto; + .cp-app-contacts-dropdown-btn { + display: flex; + align-items: center; + background: none; + border: none; + color: inherit; + cursor: pointer; + padding: 2px; + border-radius: @variables_radius; + flex-shrink: 0; + &:hover { + background-color: var(--msg-bg-color-dark); + } + &:focus-visible { + outline: @variables_focus_style; + border-radius: @variables_radius; + } + svg { + margin: 0; + } + } + .cp-dropdown-content { + min-width: auto; + a { + display: flex; + align-items: center; + gap: 5px; + } + svg { + margin: 0; + } + li:focus-visible { + outline: @variables_focus_style; + border-radius: @variables_radius; + } + } } } } @@ -134,6 +180,10 @@ border-color: var(--msg-bg-color-darker); } } + &:focus-visible { + outline: @variables_focus_style; + border-radius: @variables_radius; + } &.cp-app-contacts-notify { animation: notif 2s ease-in-out infinite; } @@ -166,7 +216,7 @@ .cp-app-contacts-category-content { order: 2; display: flex; - flex-flow: column-reverse; + flex-flow: column; padding-bottom: 10px; &:empty { display: none; @@ -236,6 +286,16 @@ } } + &.cp-app-contacts-no-chats { + #cp-app-contacts-friendlist { + display: none; + } + #cp-app-contacts-messaging { + display: flex; + flex-direction: column; + } + } + #cp-app-contacts-messaging { flex: 1; height: 100%; @@ -245,6 +305,17 @@ .cp-app-contacts-info { padding: 20px; + a { + color: @msg-color; + color: var(--msg-color); + &:focus-visible { + outline: none; + svg { + outline: @variables_focus_style; + border-radius: @variables_radius; + } + } + } } .cp-app-contacts-header { background-color: @msg-bg-color-lighter; @@ -257,19 +328,17 @@ display: flex; justify-content: space-between; align-items: center; - height: 50px; + min-height: 50px; svg { margin-right: 0; } .hover () { cursor: pointer; - height: 100%; - line-height: 30px; padding: 10px; + border-radius: @variables_radius; &:hover { - background-color: @msg-bg-color-darker; - background-color: var(--msg-color-darker); + background-color: var(--msg-bg-color-dark); } } @@ -277,9 +346,23 @@ .cp-app-contacts-right-col { flex: 1 1 auto; text-align: center; + min-width: 0; + .cp-app-contacts-name { + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + } + } + .cp-app-contacts-right-col { + overflow: hidden; } .cp-app-contacts-remove-history { .hover; + margin-right: 3px; + &:focus-visible { + outline: @variables_focus_style; + border-radius: @variables_radius; + } } .cp-avatar-container { display: flex; @@ -294,6 +377,10 @@ &.cp-app-contacts-faded { color: @cryptpad_text_col; } + &:focus-visible { + outline: @variables_focus_style; + border-radius: @variables_radius; + } } .cp-app-contacts-header-title { @@ -320,60 +407,79 @@ height: 100%; display: flex; flex-flow: column; + .cp-app-contacts-history-cleared { + font-style: italic; + background-color: fade(@cp_help-bg, 50%); + padding: 2px 10px; + > svg { + flex-shrink: 0; + margin: 0; + } + } .cp-app-contacts-messages { - padding: 0 20px; - margin: 10px 0; + padding: 0 10px; + margin: 10px 2px; flex: 1; overflow-x: auto; + &:focus-visible { + outline: @variables_focus_style; + border-radius: @variables_radius; + } .cp-app-contacts-message { display: flex; - flex-wrap: wrap; - & > div { - padding: 0 10px; + flex-direction: column; + .cp-app-contacts-sender { + margin-top: 10px; + font-weight: bold; + background-color: var(--msg-bg-color-dark); + display: flex; + justify-content: space-between; + border-radius: @variables_radius; + padding: 0 5px; + } + .cp-app-contacts-message-row { + display: flex; + align-items: flex-start; } .cp-app-contacts-content { overflow: hidden; word-wrap: break-word; + padding: 0 10px; &> * { margin: 0; } flex: 1; - min-width: 70%; - position: relative; + min-width: 0; } .cp-app-contacts-date { display: none; font-style: italic; } - .cp-app-contacts-sender { - margin-top: 10px; - font-weight: bold; - background-color: rgba(0,0,0,0.1); - display: flex; - justify-content: space-between; - width: 100%; - } .cp-app-contacts-time { - display: none; + display: flex; font-size: 0.8em; - align-items: center; + align-items: flex-start; + justify-content: flex-end; color: @msg-color; - font-weight: bold; - position: absolute; - right: 0; - top: 0; - bottom: 0; - background: rgba(0,0,0,0.3); - border-top-left-radius: 50%; - border-bottom-left-radius: 50%; - padding: 0 10px; + padding-right: 5px; + opacity: 0.4; + transition: opacity 0.2s ease; + flex-shrink: 0; + text-align: right; + white-space: nowrap; } &:hover { .cp-app-contacts-time { - display: flex; + opacity: 1; } } } + .cp-app-contacts-system-notification { + align-items: center; + flex-direction: row; + justify-content: center; + color: fade(@cryptpad_text_col, 80%); + } } } .cp-app-contacts-input { @@ -386,7 +492,7 @@ justify-content: center; padding: 0 5%; textarea { - margin: 5px 0; + margin: 5px 2px 5px 0; padding: 5px 10px; border: none; height: 54px; // 2 lines (22px height) + 2 margins (5px) @@ -411,6 +517,7 @@ color: @cp_messenger-fg; background-color: @msg-bg-color-darker; background-color: var(--msg-bg-color-darker); + border-radius: @variables_radius; &:hover { background-color: @msg-bg-color-dark; background-color: var(--msg-bg-color-dark); @@ -425,4 +532,47 @@ } } } + + .cp-app-contacts-back { + display: none; + cursor: pointer; + padding: 10px; + &:hover { + background-color: var(--msg-bg-color-dark); + border-radius: @variables_radius; + } + } + + @media (max-width: @browser_media-medium-screen) { + #cp-app-contacts-container { + #cp-app-contacts-friendlist { + width: 100%; + flex: 1; + } + #cp-app-contacts-messaging { + display: none; + } + &.cp-app-contacts-chat-open { + #cp-app-contacts-friendlist { + display: none; + } + #cp-app-contacts-messaging { + display: flex; + flex-direction: column; + } + } + &.cp-app-contacts-no-chats { + #cp-app-contacts-friendlist { + display: none; + } + #cp-app-contacts-messaging { + display: flex; + flex-direction: column; + } + } + } + .cp-app-contacts-back { + display: flex; + } + } } diff --git a/customize.dist/src/less2/include/sidebar-layout.less b/customize.dist/src/less2/include/sidebar-layout.less index 86eab5a38..985d20afe 100644 --- a/customize.dist/src/less2/include/sidebar-layout.less +++ b/customize.dist/src/less2/include/sidebar-layout.less @@ -46,6 +46,14 @@ .cp-sidebarlayout-category { display: flex; align-items: center; + white-space: nowrap; + svg { + flex: 0 0 auto; + } + .cp-sidebarlayout-category-name { + overflow: hidden; + text-overflow: ellipsis; + } .leftside-menu-category_main(); box-shadow: @cryptpad_ui_shadow; &:focus-visible { diff --git a/customize.dist/translations/messages.zh_Hant.js b/customize.dist/translations/messages.zh_Hant.js new file mode 100644 index 000000000..9b67eba9d --- /dev/null +++ b/customize.dist/translations/messages.zh_Hant.js @@ -0,0 +1,17 @@ +// SPDX-FileCopyrightText: 2026 XWiki CryptPad Team and contributors +// +// SPDX-License-Identifier: AGPL-3.0-or-later + +/* + * You can override the translation text using this file. + * The recommended method is to make a copy of this file (/customize.dist/translations/messages.{LANG}.js) + in a 'customize' directory (/customize/translations/messages.{LANG}.js). + * If you want to check all the existing translation keys, you can open the internal language file + but you should not change it directly (/common/translations/messages.{LANG}.js) +*/ +define(['/common/translations/messages.zh_Hant.js'], function (Messages) { + // Replace the existing keys in your copied file here: + // Messages.button_newpad = "New Rich Text Document"; + + return Messages; +}); diff --git a/lib/api.js b/lib/api.js index 416175f49..bb8de749b 100644 --- a/lib/api.js +++ b/lib/api.js @@ -94,6 +94,7 @@ nThen(function (w) { // if one does not exist, then create one and remember it // 256 bits var bearerSecret = Util.encodeBase64(Nacl.randomBytes(32)); + Env.bearerSecret = bearerSecret; Env.Log.info("GENERATING_BEARER_SECRET", {}); Decrees.write(Env, [ 'SET_BEARER_SECRET', diff --git a/lib/commands/invitation.js b/lib/commands/invitation.js index 2624389e7..337e56bec 100644 --- a/lib/commands/invitation.js +++ b/lib/commands/invitation.js @@ -7,9 +7,10 @@ const Invitation = module.exports; const Invite = require('../storage/invite'); const Util = require("../common-util"); const Users = require("./users"); +const Crypto = require('node:crypto'); const getUid = () => { - return Util.uid() + Util.uid() + Util.uid(); + return Crypto.randomBytes(18).toString('hex'); }; Invitation.getAll = (Env, cb) => { diff --git a/lib/http-commands.js b/lib/http-commands.js index 2d2ad7436..d577940af 100644 --- a/lib/http-commands.js +++ b/lib/http-commands.js @@ -129,7 +129,7 @@ var handleCommand = function (Env, req, res) { COMMANDS[command](Env, body, function (err) { if (err) { Env.Log.error('CHALLENGE_COMMAND_EXECUTION_ERROR', { - body: body, + command, error: Util.serializeError(err), }); // errors returned from commands are passed back to the client @@ -229,16 +229,6 @@ var handleResponse = function (Env, req, res) { }); } - // garbage collection can clean this up later - Challenge.delete(Env, txid, function (err) { - if (err) { - Env.Log.error("CHALLENGE_DELETION_ERROR", { - txid: txid, - error: Util.serializeError(err), - }); - } - }); - var json = Util.tryParse(text); if (!json) { @@ -284,8 +274,7 @@ var handleResponse = function (Env, req, res) { u8_publicKey = Util.decodeBase64(publicKey); } catch (err3) { Env.Log.error('CHALLENGE_RESPONSE_DECODING_ERROR', { - text: text, - sig: sig, + command: json.command, publicKey: publicKey, error: Util.serializeError(err3), }); @@ -305,6 +294,16 @@ var handleResponse = function (Env, req, res) { }); } + // garbage collection can clean this up later + Challenge.delete(Env, txid, function (err) { + if (err) { + Env.Log.error("CHALLENGE_DELETION_ERROR", { + txid: txid, + error: Util.serializeError(err), + }); + } + }); + // execute the command action(Env, json, function (err, content) { if (err) { diff --git a/lib/http-worker.js b/lib/http-worker.js index b1768016f..03dac79c7 100644 --- a/lib/http-worker.js +++ b/lib/http-worker.js @@ -258,7 +258,7 @@ app.use('/ssoauth', (req, res, next) => { Log.error('E_SSO_WRITE_REQ', err); return res.sendStatus(500); } - let value = `samltoken="${token}"; SameSite=Strict; HttpOnly`; + let value = `samltoken="${token}"; SameSite=Strict; HttpOnly; Path=/; Secure`; res.setHeader('Set-Cookie', value); next(); }); @@ -750,22 +750,6 @@ var send500 = function (res, path) { }); }; -app.get('/api/updatequota', function (req, res) { - if (!Env.accounts_api) { - res.status(404); - return void send404(res); - } - sendMessage({ - command: 'UPDATE_QUOTA', - }, (err) => { - if (err) { - res.status(500); - return void send500(res); - } - res.send(); - }); -}); - app.get('/api/profiling', function (req, res) { if (!Env.enableProfiling) { return void send404(res); } sendMessage({ diff --git a/lib/storage/basic.js b/lib/storage/basic.js index 96e353e76..667c6498b 100644 --- a/lib/storage/basic.js +++ b/lib/storage/basic.js @@ -89,3 +89,7 @@ Basic.restore = function (Env, archivePath, path, cb) { cb(err); }); }; + +Basic.isValidId = id => { + return id && typeof(id) === "string" && /^[a-zA-Z0-9-+=]+$/.test(id); +}; diff --git a/lib/storage/challenge.js b/lib/storage/challenge.js index 914284e00..8217f5c5e 100644 --- a/lib/storage/challenge.js +++ b/lib/storage/challenge.js @@ -22,7 +22,9 @@ const Challenge = module.exports; */ const pathFromId = function (Env, id) { - if (!id || typeof(id) !== 'string') { return void console.error('CHALLENGE_BAD_ID', id); } + if (!Basic.isValidId(id)) { + return void console.error('CHALLENGE_BAD_ID', id); + } return Path.join(Env.paths.base, "challenges", id.slice(0, 2), id); }; diff --git a/lib/storage/invite.js b/lib/storage/invite.js index 90220eb94..2ef2c4316 100644 --- a/lib/storage/invite.js +++ b/lib/storage/invite.js @@ -17,7 +17,9 @@ const Invite = module.exports; */ const pathFromId = function (Env, id) { - if (!id || typeof(id) !== 'string') { return void console.error('INVITE_BAD_ID', id); } + if (!Basic.isValidId(id)) { + return void console.error('INVITE_BAD_ID', id); + } return Path.join(Env.paths.base, "invitations", id.slice(0, 2), id); }; diff --git a/lib/storage/mfa.js b/lib/storage/mfa.js index d84539f69..572dc3c28 100644 --- a/lib/storage/mfa.js +++ b/lib/storage/mfa.js @@ -28,6 +28,7 @@ so that it can be accessed quickly. var pathFromId = function (Env, id) { if (!id || typeof(id) !== 'string') { return; } id = Util.escapeKeyCharacters(id); + if (!Basic.isValidId(id)) { return; } return Path.join(Env.paths.base, "mfa", id.slice(0, 2), `${id}.json`); }; diff --git a/lib/storage/moderator.js b/lib/storage/moderator.js index b889497c1..6ae0b214e 100644 --- a/lib/storage/moderator.js +++ b/lib/storage/moderator.js @@ -14,7 +14,9 @@ const Moderator = module.exports; */ const pathFromId = function (Env, id) { - if (!id || typeof(id) !== 'string') { return void console.error('KNWONUSER_BAD_ID', id); } + if (!Basic.isValidId(id)) { + return void console.error('MODERATOR_BAD_ID', id); + } return Path.join(Env.paths.base, "support", id.slice(0, 2), id); }; diff --git a/lib/storage/sessions.js b/lib/storage/sessions.js index 85ac3c1b1..f2deacec3 100644 --- a/lib/storage/sessions.js +++ b/lib/storage/sessions.js @@ -25,6 +25,7 @@ const Sessions = module.exports; var pathFromId = function (Env, id, ref) { if (!id || typeof(id) !== 'string') { return; } + if (!Basic.isValidId(ref)) { return; } id = Util.escapeKeyCharacters(id); return Path.join(Env.paths.base, "sessions", id.slice(0, 2), id, ref); }; diff --git a/lib/storage/sso.js b/lib/storage/sso.js index ba9de3b6a..a2bda171f 100644 --- a/lib/storage/sso.js +++ b/lib/storage/sso.js @@ -20,6 +20,7 @@ The path for the user database is based on their persistent identifier (id) from var pathFromId = function (Env, id, subPath) { if (!id || typeof(id) !== 'string') { return; } id = Util.escapeKeyCharacters(id); + if (!Basic.isValidId(id)) { return; } return Path.join(Env.paths.base, subPath, id.slice(0, 2), `${id}.json`); }; var reqPathFromId = function (Env, id) { diff --git a/lib/storage/user.js b/lib/storage/user.js index a1dc4a15a..659541d54 100644 --- a/lib/storage/user.js +++ b/lib/storage/user.js @@ -14,7 +14,9 @@ const User = module.exports; */ const pathFromId = function (Env, id) { - if (!id || typeof(id) !== 'string') { return void console.error('KNWONUSER_BAD_ID', id); } + if (!Basic.isValidId(id)) { + return void console.error('USER_BAD_ID', id); + } return Path.join(Env.paths.base, "users", id.slice(0, 2), id); }; diff --git a/package-lock.json b/package-lock.json index c2b8bcd43..b3ea806dc 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "cryptpad", - "version": "2026.2.2", + "version": "2026.5.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "cryptpad", - "version": "2026.2.2", + "version": "2026.5.0", "license": "AGPL-3.0+", "dependencies": { "@mcrowe/minibloom": "^0.2.0", @@ -19,14 +19,14 @@ "chainpad-crypto": "^0.3.0", "chainpad-listmap": "^1.2.0", "chainpad-netflux": "^1.3.0", - "chainpad-server": "^5.2.4", + "chainpad-server": "^5.3.0", "ckeditor": "npm:ckeditor4@~4.22.1", "codemirror": "^5.19.0", "connect-gzip-static": "^4.2.1", "cookie-parser": "^1.4.7", "croppie": "^2.5.0", "dragula": "3.7.2", - "drawio": "github:cryptpad/drawio-npm#npm-21.8.2+6", + "drawio": "github:cryptpad/drawio-npm#npm-29.6.7+3", "express": "~4.22.1", "file-saver": "1.3.1", "fs-extra": "^7.0.0", @@ -1598,7 +1598,9 @@ } }, "node_modules/chainpad-server": { - "version": "5.2.4" + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/chainpad-server/-/chainpad-server-5.3.1.tgz", + "integrity": "sha512-yDDsN0Oa8ojtNNJRBpqy/AwnRWkettJfGxUxRGZmMf+bbbiKTPWum8ixP9l8UzErTlYR4wzaTZIKmNpWWcyOtg==" }, "node_modules/ckeditor": { "name": "ckeditor4", @@ -1900,8 +1902,8 @@ } }, "node_modules/drawio": { - "version": "21.8.2+6", - "resolved": "git+ssh://git@github.com/cryptpad/drawio-npm.git#61699f777690d23aab727461ff58b60e198ab0e4" + "version": "29.6.7+3", + "resolved": "git+ssh://git@github.com/cryptpad/drawio-npm.git#c3493636b4f3a65d9f068245a968887fd1332326" }, "node_modules/dunder-proto": { "version": "1.0.1", @@ -2373,7 +2375,9 @@ "license": "MIT" }, "node_modules/fast-uri": { - "version": "3.1.0", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.2.tgz", + "integrity": "sha512-rVjf7ArG3LTk+FS6Yw81V1DLuZl1bRbNrev6Tmd/9RaroeeRRJhAt7jg/6YFxbvAQXUCavSoZhPPj6oOx+5KjQ==", "dev": true, "funding": [ { @@ -3537,7 +3541,9 @@ } }, "node_modules/netflux-websocket": { - "version": "1.3.0", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/netflux-websocket/-/netflux-websocket-1.3.1.tgz", + "integrity": "sha512-vom3V+3oXf6dnT6UkCkpi76zZLGYNXTaWA0Azg/CsIfMHP66owYynkOFXoZ8N2gaQNoEWMT6msz9xjSOnAH0cw==", "license": "LGPL-2.1" }, "node_modules/node-releases": { diff --git a/package.json b/package.json index be71fef22..cbaec29a4 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "cryptpad", "description": "a collaborative office suite that is end-to-end encrypted and open-source", - "version": "2026.2.2", + "version": "2026.5.0", "license": "AGPL-3.0+", "repository": { "type": "git", @@ -22,14 +22,14 @@ "chainpad-crypto": "^0.3.0", "chainpad-listmap": "^1.2.0", "chainpad-netflux": "^1.3.0", - "chainpad-server": "^5.2.4", + "chainpad-server": "^5.3.0", "ckeditor": "npm:ckeditor4@~4.22.1", "codemirror": "^5.19.0", "connect-gzip-static": "^4.2.1", "cookie-parser": "^1.4.7", "croppie": "^2.5.0", "dragula": "3.7.2", - "drawio": "github:cryptpad/drawio-npm#npm-21.8.2+6", + "drawio": "github:cryptpad/drawio-npm#npm-29.6.7+3", "express": "~4.22.1", "file-saver": "1.3.1", "fs-extra": "^7.0.0", diff --git a/src/common/cryptget.js b/src/common/cryptget.js index 3d4b60921..d73a7e3ef 100644 --- a/src/common/cryptget.js +++ b/src/common/cryptget.js @@ -61,7 +61,6 @@ const factory = (Crypto, CPNetflux, Netflux, Util, nThen(function (waitFor) { Session.accessKeys.forEach(function (obj) { Pinpad.create(config.network, obj, waitFor(function (e) { - console.log('done', obj); if (e) { console.error(e); } })); }); diff --git a/src/common/outer/login-block.js b/src/common/outer/login-block.js index 312e8b7e2..a657823f0 100644 --- a/src/common/outer/login-block.js +++ b/src/common/outer/login-block.js @@ -209,12 +209,13 @@ const factory = (Util, ApiConfig = {}, ServerCommand, Nacl) => { }; Block.updateSSOBlock = function (data, cb) { - const { blockKeys, oldBlockKeys } = data; + const { blockKeys, oldBlockKeys, hasPassword } = data; var oldProof = oldBlockKeys && Block.proveAncestor(oldBlockKeys); ServerCommand(blockKeys.sign, { command: 'SSO_UPDATE_BLOCK', - ancestorProof: oldProof + ancestorProof: oldProof, + hasPassword }, cb); }; diff --git a/src/worker/components/mailbox-handlers.js b/src/worker/components/mailbox-handlers.js index 7abeabbe6..c425e46eb 100644 --- a/src/worker/components/mailbox-handlers.js +++ b/src/worker/components/mailbox-handlers.js @@ -859,6 +859,22 @@ const factory = (Messaging, Hash, Util, Crypto, Block) => { delete sfDeleted[id]; }; + var msgNotif = {}; + handlers['SEND_CHAT_MESSAGE'] = function (ctx, box, data, cb) { + + var msgSender = data.msg.author; + + //Check if sender is in contacts and not muted + if (msgNotif[msgSender] || isMuted(ctx, data) || !ctx.store.proxy.friends[msgSender]) { return void cb(true); } + msgNotif[msgSender] = 1; + + cb(false); + }; + removeHandlers['SEND_CHAT_MESSAGE'] = function (ctx, box, data) { + var msgSender = data.author; + delete msgNotif[msgSender]; + }; + // New support handlers['NEW_TICKET'] = function (ctx, box, data, cb) { var msg = data.msg; diff --git a/src/worker/components/pad.ts b/src/worker/components/pad.ts index f8de9ca2e..a80d49b5b 100644 --- a/src/worker/components/pad.ts +++ b/src/worker/components/pad.ts @@ -167,6 +167,7 @@ const _join: Callback = (ctx, clientId, data) => { } const isNew = typeof channels[channelId] === "undefined"; + const isAnonymousSession = !store.loggedIn; // Create or get existing channel object const channel = channels[channelId] ||= { @@ -201,7 +202,7 @@ const _join: Callback = (ctx, clientId, data) => { } // Existing pad already loaded: send userlist and history - if (!isNew && channel.wc) { + const sendExistingState = () => { postMessage(clientId, "PAD_CONNECT", { // Initialize myID: channel.wc.myID, id: channel.wc.id, @@ -218,7 +219,29 @@ const _join: Callback = (ctx, clientId, data) => { }); }); postMessage(clientId, "PAD_READY"); // Ready - return; + }; + const preflightAnonAccess = (cb) => { + const allow = () => { cb(true); }; + const deny = () => { + Cache?.clearChannel?.(channelId); + channel.bcast("PAD_ERROR", { type: "ERESTRICTED" }); + ctx.leavePad(null, data, function () {}); + cb(false); + }; + + if (!isAnonymousSession) { return void allow(); } + if (!store.anon_rpc) { return void allow(); } + _getMetadata(ctx, clientId, { channel: channelId }, md => { + if (md?.rejected) { return void deny(); } + allow(); + }); + }; + + if (!isNew) { + return void preflightAnonAccess((ok) => { + if (!ok) { return; } + sendExistingState(); + }); } // chainpad-netflux config @@ -231,7 +254,7 @@ const _join: Callback = (ctx, clientId, data) => { } channel.bcast("PAD_ERROR", err); - if (type === "EDELETED" && Cache?.clearChannel) { + if (["EDELETED", "EEXPIRED", "ERESTRICTED"].includes(type) && Cache?.clearChannel) { Cache.clearChannel(channelId); } @@ -343,7 +366,10 @@ const _join: Callback = (ctx, clientId, data) => { }); } }; - channel.cpNf = CpNetflux.start(conf); + preflightAnonAccess((ok) => { + if (!ok) { return; } + channel.cpNf = CpNetflux.start(conf); + }); }; // Send a message to a pad we already joined diff --git a/src/worker/core/interface.js b/src/worker/core/interface.js index 5d921861a..1d7cde100 100644 --- a/src/worker/core/interface.js +++ b/src/worker/core/interface.js @@ -62,7 +62,7 @@ const factory = (SRpc, Channel, Util) => { } catch (e) { console.error('Error in webworker when executing query ' + q); console.error(e); - console.log(data); + //console.log(data); } if (q === "DISCONNECT") { onClose(); @@ -99,7 +99,7 @@ const factory = (SRpc, Channel, Util) => { } catch (e) { console.error('Error in webworker when executing query JOIN_PAD'); console.error(e); - console.log(data); + //console.log(data); } }); chan.on('SEND_PAD_MSG', function (msg, cb) { @@ -112,7 +112,7 @@ const factory = (SRpc, Channel, Util) => { } catch (e) { console.error('Error in webworker when executing query SEND_PAD_MSG'); console.error(e); - console.log(data); + //console.log(data); } }); diff --git a/src/worker/modules/messenger.js b/src/worker/modules/messenger.js index ad55143a7..101c06b22 100644 --- a/src/worker/modules/messenger.js +++ b/src/worker/modules/messenger.js @@ -15,6 +15,7 @@ const factory = (Crypto, Hash, Util, Realtime, Messaging, var Types = { message: 'MSG', + cleared: 'CLEARED', unfriend: 'UNFRIEND', mapId: 'MAP_ID', mapIdAck: 'MAP_ID_ACK' @@ -116,7 +117,6 @@ const factory = (Crypto, Hash, Util, Realtime, Messaging, var getChannelMessagesSince = function (ctx, channel, data, keys) { var network = ctx.store.network; - console.log('Fetching [%s] messages since [%s]', channel.id, data.lastKnownHash || ''); if (channel.isPadChat || channel.isTeamChat) { // We need to use GET_HISTORY_RANGE to make sure we won't get the full history @@ -271,6 +271,11 @@ const factory = (Crypto, Hash, Util, Realtime, Messaging, return true; } var proxy = ctx.store.proxy; + if (parsedMsg[0] === Types.cleared) { + channel.messages = []; + ctx.emit('CLEAR_CHANNEL', channel.id, channel.clients); + return; + } if (parsedMsg[0] === Types.unfriend) { curvePublic = parsedMsg[1]; @@ -917,11 +922,21 @@ const factory = (Crypto, Hash, Util, Realtime, Messaging, var channel = ctx.channels[id]; if (!channel) { return void cb({error: 'NO_CHANNEL'}); } if (!ctx.store.rpc) { return void cb({error: 'RPC_NOT_READY'}); } + var proxy = ctx.store.proxy || {}; ctx.store.rpc.clearOwnedChannel(id, function (err) { cb({error:err}); if (!err) { channel.messages = []; ctx.emit('CLEAR_CHANNEL', id, channel.clients); + var msg = [Types.cleared, proxy.curvePublic, +new Date()]; + var msgStr = JSON.stringify(msg); + var cryptMsg = channel.encrypt(msgStr); + + channel.wc.bcast(cryptMsg).then(function () { + // Success (message sent) + }, function (err) { + console.error('Failed to send message:', err); + }); } }); }; diff --git a/src/worker/modules/profile.js b/src/worker/modules/profile.js index e9c14b8b7..fe085d161 100644 --- a/src/worker/modules/profile.js +++ b/src/worker/modules/profile.js @@ -170,7 +170,6 @@ const factory = (Util, Hash, Constants, Realtime, ctx.emit('UPDATE', ctx.listmap.proxy, ctx.clients); }; profile.execCommand = function (clientId, obj, cb) { - console.log(obj); var cmd = obj.cmd; var data = obj.data; if (cmd === 'SUBSCRIBE') { diff --git a/www/common/common-icons.js b/www/common/common-icons.js index 84ad8c238..3f2a2ee61 100644 --- a/www/common/common-icons.js +++ b/www/common/common-icons.js @@ -28,7 +28,7 @@ define([ "grid": "layout-grid", "list": "list", "document-owner": "id-card-lanyard", - "burn-drive": "ban", + "burn-drive": "eraser", // Teams "teams": "users-round", "promote": "chevrons-up", @@ -85,7 +85,7 @@ define([ "share": "share-2", "download": "hard-drive-download", "destroy": "shredder", - "donate": "hand-coins", + "donate": "hand-heart", "send": "send", "cloud-upload": "cloud-upload", "print": "printer", @@ -250,7 +250,10 @@ define([ "badge-error": "circle-alert", // Other "maintenance": "construction", - "release-notes": "notepad-text" + "release-notes": "notepad-text", + "crowdfunding-donate": "hand-heart", + "crowdfunding-snooze": "timer", + "crowdfunding-donate2": "ticket" }; Icons.add = (newIcons) => { diff --git a/www/common/common-login.js b/www/common/common-login.js index 141e25621..48f48da54 100644 --- a/www/common/common-login.js +++ b/www/common/common-login.js @@ -213,7 +213,6 @@ define([ opt.channelHex = secret.channel; } - console.warn(opt); return opt; }; diff --git a/www/common/common-ui-elements.js b/www/common/common-ui-elements.js index a559d7fc5..68e843b19 100644 --- a/www/common/common-ui-elements.js +++ b/www/common/common-ui-elements.js @@ -3271,6 +3271,10 @@ define([ } if (toolbar && typeof toolbar.failed === "function") { toolbar.failed(true); } + sframeChan.event('EV_SHARE_OPEN', {hidden: true}); + UI.errorLoadingScreen(msg, false, false); + (cb || function () {})(); + return; } else if (err.type === 'HASH_NOT_FOUND' && priv.isHistoryVersion) { msg = Messages.oo_deletedVersion; if (toolbar && typeof toolbar.failed === "function") { toolbar.failed(true); } @@ -3388,39 +3392,70 @@ define([ UIElements.displayCrowdfunding = function (common, force) { if (crowdfundingState) { return; } var priv = common.getMetadataMgr().getPrivateData(); - if (priv.app === 'form' && !priv.canEdit && !priv.form_auditorKey) { return; } + if (priv.app === 'drive') { return; } + if (!priv.channel) { return; } + if (priv.app === 'form' && priv.readOnly && !priv.form_auditorHash && !priv.form_auditorKey) { return; } var todo = function () { crowdfundingState = true; - // Display the popup - var text = Messages.crowdfunding_popup_text; - var yes = h('button.cp-corner-primary', [ - Icons.get('external-link'), - 'OpenCollective' - ]); - var no = h('button.cp-corner-cancel', Messages.crowdfunding_popup_no); - var actions = h('div', [no, yes]); - + var recordShown = function () { + common.getSframeChannel().query('Q_RECORD_CROWDFUNDING_SHOWN', {}, function () {}); + }; var dontShowAgain = function () { common.setAttribute(['general', 'crowdfunding'], false); Feedback.send('CROWDFUNDING_NEVER'); }; - var modal = UI.cornerPopup(text, actions, '', { - big: true, - alt: true, - dontShowAgain: dontShowAgain - }); - - $(yes).click(function () { - modal.delete(); - common.openURL(priv.accounts.donateURL); - Feedback.send('CROWDFUNDING_YES'); - }); - $(no).click(function () { - modal.delete(); - Feedback.send('CROWDFUNDING_NO'); + var content = Messages.crowdfunding_popup_text; + var buttons = [{ + name: Messages.dontShowAgain, + className: 'cancel left', + iconClass: 'close', + onClick: function () { + recordShown(); + dontShowAgain(); + } + }, { + name: Messages.crowdfunding_popup_no, + className: 'cancel', + iconClass: 'crowdfunding-snooze', + onClick: function () { + recordShown(); + Feedback.send('CROWDFUNDING_NO'); + } + }]; + if (!Config.removeDonateButton) { + buttons.push({ + name: Messages.crowdfunding_button2, + className: 'primary', + iconClass: 'crowdfunding-donate', + onClick: function () { + recordShown(); + common.openURL(priv.accounts.donateURL); + Feedback.send('CROWDFUNDING_YES'); + } + }); + } + if (Config.accounts_api && common.isLoggedIn()) { + content += ' ' + Messages.crowdfunding_popup_text2; + buttons.push({ + name: Messages.features_f_subscribe, + className: 'primary', + iconClass: 'crowdfunding-donate2', + onClick: function () { + recordShown(); + common.openURL('/accounts/'); + Feedback.send('CROWDFUNDING_SUBSCRIBE'); + } + }); + } + var modal = UI.dialog.customModal(content, { + force: true, + scrollable: true, + buttons: buttons }); + $(modal).addClass('cp-crowdfunding-modal'); + UI.openCustomModal(modal, { wide: true }); }; if (force) { @@ -3430,13 +3465,16 @@ define([ if (AppConfig.disableCrowdfundingMessages) { return; } if (priv.plan) { return; } + if (Config.removeDonateButton && !Config.accounts_api) { return; } crowdfundingState = true; common.getAttribute(['general', 'crowdfunding'], function (err, val) { - if (err || val === false) { return; } - common.getSframeChannel().query('Q_GET_PINNED_USAGE', null, function (err, obj) { - var quotaMb = obj.quota / (1024 * 1024); - if (quotaMb < 10) { return; } + if (err || val === false) { crowdfundingState = false; return; } + common.getSframeChannel().query('Q_CROWDFUNDING_SHOULD_SHOW', null, function (err, result) { + if (err || !result || !result.show) { + crowdfundingState = false; + return; + } todo(); }); }); @@ -3457,7 +3495,7 @@ define([ // This pad will be deleted automatically, it shouldn't be stored if (priv.burnAfterReading) { return; } - if (priv.app === 'form' && !priv.canEdit && !priv.form_auditorKey && !common.isLoggedIn()) { return; } + if (priv.app === 'form' && priv.readOnly && !priv.form_auditorHash && !priv.form_auditorKey && !common.isLoggedIn()) { return; } var typeMsg = priv.pathname.indexOf('/file/') !== -1 ? Messages.autostore_file : priv.pathname.indexOf('/drive/') !== -1 ? Messages.autostore_sf : Messages.autostore_pad; diff --git a/www/common/cryptpad-common.js b/www/common/cryptpad-common.js index 1a652abf7..0611534fa 100644 --- a/www/common/cryptpad-common.js +++ b/www/common/cryptpad-common.js @@ -2010,6 +2010,7 @@ define([ var oldBlockKeys = oldAllocated.blockKeys; var blockKeys = newAllocated.blockKeys; var auth = data.auth; + var hasPassword = Boolean(data.newPassword); nThen(function (waitFor) { // Check if our drive is already owned @@ -2135,6 +2136,7 @@ define([ // Update "sso_block" data for SSO accounts Block.updateSSOBlock({ blockKeys: blockKeys, + hasPassword: hasPassword, oldBlockKeys: oldBlockKeys }, waitFor(function (err) { if (err) { diff --git a/www/common/drive-ui.js b/www/common/drive-ui.js index 0df7ce3d1..463e0a9c6 100644 --- a/www/common/drive-ui.js +++ b/www/common/drive-ui.js @@ -369,8 +369,9 @@ define([ APP.premiumPlan = priv.plan; var getOpenIn = function (app) { - var icon = AppConfig.applicationsIcon[app]; - var html = '' + Messages.type[app]; + var icon = AppConfig.applicationsIcon[app] || app; + var iconHtml = Icons.get(icon).outerHTML; + var html = iconHtml + Messages.type[app]; return Messages._getKey('fc_openIn', [html]); }; var restricted = {}; diff --git a/www/common/inner/sidebar-layout.js b/www/common/inner/sidebar-layout.js index 6422d945b..b20ac9fcf 100644 --- a/www/common/inner/sidebar-layout.js +++ b/www/common/inner/sidebar-layout.js @@ -370,15 +370,17 @@ define([ Object.keys(categories).forEach(function (key, i) { if (!active && !i) { active = key; } var category = categories[key]; + var name = category.name || Messages[`${app}_cat_${key}`] || key; var icon; if (category.icon) { icon = Icons.get(category.icon); } var item = h('li.cp-sidebarlayout-category', { 'role': 'menuitem', 'tabindex': 0, - 'data-category': key + 'data-category': key, + 'aria-label': name }, [ icon, - category.name || Messages[`${app}_cat_${key}`] || key, + h('span.cp-sidebarlayout-category-name', name), ]); var $item = $(item).appendTo(container); Util.onClickEnter($item, function () { diff --git a/www/common/media-tag.js b/www/common/media-tag.js index a50c22267..358c99e1b 100644 --- a/www/common/media-tag.js +++ b/www/common/media-tag.js @@ -120,6 +120,7 @@ var factory = function (Util) { var iframe = document.createElement('iframe'); if (cfg.pdf.viewer) { // PDFJS var viewerUrl = cfg.pdf.viewer + '?file=' + url; + iframe.setAttribute('sandbox', 'allow-scripts allow-downloads allow-same-origin allow-modals'); iframe.src = viewerUrl + '#' + window.encodeURIComponent(metadata.name); iframe.onload = function () { if (!metadata.name) { return; } @@ -574,7 +575,11 @@ var factory = function (Util) { var copyAttributes = function (origin, dest) { Object.keys(origin.attributes).forEach(function (i) { if (!/^data-attr/.test(origin.attributes[i].name)) { return; } - var name = origin.attributes[i].name.slice(10); + var name = origin.attributes[i].name.slice(10).toLowerCase(); + // Ignore attributes filtered out by the sanitizer + if (name === "src") { return; } + if (name === "srcdoc") { return; } + if (/^on/i.test(name)) { return; } var value = origin.attributes[i].value; dest.setAttribute(name, value); }); diff --git a/www/common/messenger-ui.js b/www/common/messenger-ui.js index bcab06f7a..099f3de99 100644 --- a/www/common/messenger-ui.js +++ b/www/common/messenger-ui.js @@ -8,11 +8,14 @@ define([ '/common/common-util.js', '/common/common-interface.js', '/common/common-ui-elements.js', + '/common/visible.js', + '/common/notify.js', '/common/inner/badges.js', '/common/hyperscript.js', '/common/diffMarked.js', '/common/common-icons.js', -], function ($, Messages, Util, UI, UIElements, Badges, h, DiffMd, Icons) { + '/customize/pages.js', +], function ($, Messages, Util, UI, UIElements, Visible, Notification, Badges, h, DiffMd, Icons, Pages) { 'use strict'; var debug = console.log; @@ -64,7 +67,6 @@ define([ h('h2', Messages.contacts_info1), h('ul', [ h('li', Messages.contacts_info2), - h('li', Messages.contacts_info3), h('li', Messages.contacts_info4), ]) ]) @@ -76,11 +78,11 @@ define([ h('div.cp-app-contacts-category-content') ]), h('div.cp-app-contacts-friends.cp-app-contacts-category', [ + h('div.cp-app-contacts-category-content.cp-contacts-friends'), h('button.btn.btn-default.cp-app-contacts-muted-button', {tabindex:0},[ Icons.get('mute'), Messages.contacts_manageMuted - ]), - h('div.cp-app-contacts-category-content.cp-contacts-friends') + ]) ]), h('div.cp-app-contacts-rooms.cp-app-contacts-category', [ h('div.cp-app-contacts-category-content'), @@ -150,13 +152,14 @@ define([ var channels = Object.keys(state.channels).sort(function (a, b) { var m1 = state.channels[a].messages.slice(-1)[0]; var m2 = state.channels[b].messages.slice(-1)[0]; - if (!m2) { return !m1 ? 0 : 1; } - if (!m1) { return -1; } - return m1.time - m2.time; + if (!m2) { return !m1 ? 0 : -1; } + if (!m1) { return 1; } + return m2.time - m1.time; }); - channels.forEach(function (c, i) { - $userlist.find(dataQuery(c)).css('order', i); + channels.forEach(function (c) { + var $el = $userlist.find(dataQuery(c)); + $el.appendTo($el.parent()); }); // Make sure the width is correct even if there is a scrollbar @@ -184,7 +187,8 @@ define([ }); var time = h('div.cp-app-contacts-time', hour); - $d.append(time); + var row = h('div.cp-app-contacts-message-row', [d, time]); + return row; } catch (e) { console.error(md); console.error(e); @@ -239,19 +243,45 @@ define([ }; var clearChannel = function (id) { - $(getChat(id)).find('.cp-app-contacts-messages').html(''); + var $chat = $(getChat(id)); + if (state.channels && state.channels[id]) { + state.channels[id].messages = []; + } + if ($chat.length) { + $chat.find('.cp-app-contacts-messages').html(''); + $chat.find('.cp-app-contacts-message').remove(); + } }; + + var displaySystemMessage = function (id, message, icon) { + var $messagebox = $(getChat(id)).find('.cp-app-contacts-messages'); + if (!$messagebox.length) { return; } + var content = icon ? [Icons.get(icon), h('span', message)] : message; + $messagebox.append(h('div.cp-app-contacts-message.cp-app-contacts-system-notification', content)); + normalizeLabels($messagebox); + scrollChatToBottom(); + }; + var userInfo; markup.chatbox = function (id, data, curvePublic) { var moreHistory = h('span', { class: 'cp-app-contacts-more-history', + tabindex: '0', + role: 'button', + 'aria-label': Messages.contacts_fetchHistory, + title: Messages.contacts_fetchHistory }); - moreHistory.append(Icons.get('history', {title: Messages.contacts_fetchHistory})); + moreHistory.append(Icons.get('history')); var chan = state.channels[id]; var displayName = UI.getDisplayName(chan.name || chan.displayName); var fetching = false; - var $moreHistory = $(moreHistory).click(function () { + var $moreHistory = $(moreHistory).on('keydown', function (e) { + if (e.which === 13 || e.which === 32) { + e.preventDefault(); + $(this).click(); + } + }).click(function () { if (fetching) { return; } // get oldest known message... @@ -308,11 +338,20 @@ define([ }); var removeHistory = h('span', { - 'class': 'cp-app-contacts-remove-history' + 'class': 'cp-app-contacts-remove-history', + 'tabindex': '0', + 'role': 'button', + 'aria-label': Messages.contacts_removeHistoryTitle, + 'title': Messages.contacts_removeHistoryTitle }); - removeHistory.append(Icons.get('remove-history', {title: Messages.contacts_removeHistoryTitle})); + removeHistory.append(Icons.get('remove-history')); - $(removeHistory).click(function () { + $(removeHistory).on('keydown', function (e) { + if (e.which === 13 || e.which === 32) { + e.preventDefault(); + $(this).click(); + } + }).click(function () { UI.confirm(Messages.contacts_confirmRemoveHistory, function (yes) { if (!yes) { return; } @@ -322,6 +361,7 @@ define([ UI.alert(Messages.contacts_removeHistoryServerError); return; } + clearChannel(id); }); }); }); @@ -329,13 +369,23 @@ define([ var avatar = h('div.cp-avatar'); var avatarDiv = h('div.cp-avatar-container', avatar); + var backButton = h('span.cp-app-contacts-back', { + 'aria-label': Messages.form_backButton, + title: Messages.form_backButton, + }, Icons.get('arrow-left')); + $(backButton).click(function () { + $container.removeClass('cp-app-contacts-chat-open'); + }); + var headerContent = [ + backButton, avatarDiv, moreHistory, data.isFriendChat ? removeHistory : undefined ]; if (isApp) { headerContent = [ + backButton, h('div.cp-app-contacts-header-title', Messages.contacts_padTitle), moreHistory ]; @@ -363,6 +413,7 @@ define([ }); var sendButton = h('button.btn.btn-primary', { title: Messages.contacts_send, + 'aria-label': Messages.contacts_send }, Icons.get('send')); var rightCol = h('span.cp-app-contacts-right-col', [ @@ -396,6 +447,28 @@ define([ // failed to send return void console.error('failed to send', e); } + + //Send mailbox message if: + //- recipient is a contact + //- recipient is offline + //- no previous messages to recipient sent while current tab is open + var messageSent = {}; + execCommand('GET_STATUS', id, function (e, online) { + if (online) { + delete messageSent[id]; + } else { + if (friend && !messageSent[id]) { + common.mailbox.sendTo("SEND_CHAT_MESSAGE", { + name: userInfo.displayName, + }, { + channel: contactsData[chan.curvePublic].notifications, + curvePublic: chan.curvePublic + }); + messageSent[id] = true; + } + } + }); + input.value = ''; sending = false; debug('sent successfully'); @@ -456,6 +529,32 @@ define([ $messages.find('.cp-app-contacts-info').show(); }; + var updateInfoMessage = function () { + var chats = Object.keys(state.channels).length; + var $info = $messages.find('.cp-app-contacts-info'); + if (chats === 0) { + $info.html([ + h('h2', Messages.contacts_noFriends), + h('ul', [ + h('li', [ + UI.createHelper(Pages.localizeDocsLink(' https://docs.cryptpad.org/en/user_guide/collaboration.html#contacts'), Messages.contacts_noFriendsInfo), + Messages.contacts_noFriendsInfo + ]), + ]) + ]); + $container.addClass('cp-app-contacts-no-chats'); + } else { + $info.html([ + h('h2', Messages.contacts_info1), + h('ul', [ + h('li', Messages.contacts_info2), + h('li', Messages.contacts_info4), + ]) + ]); + $container.removeClass('cp-app-contacts-no-chats'); + } + }; + var updateStatus = function (id) { if (!state.channels[id]) { return; } var $status = find.inList(id).find('.cp-app-contacts-status'); @@ -491,6 +590,7 @@ define([ setActive(chanId); unnotify(chanId); + $container.addClass('cp-app-contacts-chat-open'); var $chat = getChat(chanId); hideInfo(); $messages.find('div.cp-app-contacts-chat[data-key]').hide(); @@ -534,6 +634,7 @@ define([ 'tabindex': '0', 'data-key': id, 'data-user': room.isFriendChat ? userlist[0].curvePublic : '', + 'aria-label': room.isFriendChat ? UI.getDisplayName(room.name) : room.name }); @@ -543,85 +644,146 @@ define([ curve = __channel.curvePublic; } - var unmute = h('span', Icons.get('notification'), { - class: 'cp-app-contacts-remove cp-unmute-icon', - title: Messages.contacts_unmute || 'unmute', - style: (curve && mutedUsers[curve]) ? undefined : 'display: none;' + var isMuted = curve && mutedUsers[curve]; + + var friendData = room.isFriendChat ? userlist[0] : {}; + + var dropdownOptions = []; + + var removeOption = { + tag: 'a', + content: [Icons.get('unfriend'), h('span', Messages.contacts_remove)], + action: function () { + var channel = state.channels[id]; + if (!channel.isFriendChat) { + UI.warn(Messages.error); + return; + } + var curvePublic = channel.curvePublic; + var friend = contactsData[curvePublic] || friendData; + var name = Util.fixHTML(UI.getDisplayName(friend.name || friend.displayName)); + var content = h('div', [ + UI.setHTML(h('p'), Messages._getKey('contacts_confirmRemove', [ name ])), + ]); + UI.confirm(content, function (yes) { + if (!yes) { return; } + removeFriend(curvePublic); + // TODO remove friend from userlist ui + // FIXME seems to trigger EJOINED from netflux-websocket (from server); + // (tried to join a channel in which you were already present) + }); + return true; + } + }; + + var viewProfileOption = { + tag: 'a', + content: [Icons.get('user-profile'), h('span', Messages.userlist_visitProfile)], + action: function () { + if (friendData.profile) { window.open(origin + '/profile/#' + friendData.profile); } + return true; + } + }; + + let $dropdown, muteOption, unmuteOption; + var rebuildDropdown = function () { + if (!$dropdown || !$dropdown.setOptions) { return; } + var opts = []; + if (room.isFriendChat) { + var isCurrentlyMuted = curve && mutedUsers[curve]; + opts.push(isCurrentlyMuted ? unmuteOption : muteOption); + if (friendData.profile) { + opts.push(viewProfileOption); + } + opts.push(removeOption); + } + $dropdown.setOptions(opts); + $dropdown.find('.cp-dropdown-content').hide(); + }; + + muteOption = { + tag: 'a', + content: [Icons.get('mute'), h('span', Messages.contacts_mute)], + action: function () { + var channel = state.channels[id]; + if (!channel.isFriendChat) { return true; } + var curvePublic = channel.curvePublic; + var friend = contactsData[curvePublic] || friendData; + muteUser(friend); + rebuildDropdown(); + return true; + } + }; + unmuteOption = { + tag: 'a', + content: [Icons.get('notification'), h('span', Messages.contacts_unmute || 'Unmute')], + action: function () { + var channel = state.channels[id]; + if (!channel.isFriendChat) { return true; } + var curvePublic = channel.curvePublic; + unmuteUser(curvePublic); + rebuildDropdown(); + return true; + } + }; + + if (room.isFriendChat) { + dropdownOptions.push(isMuted ? unmuteOption : muteOption); + if (friendData.profile) { + dropdownOptions.push(viewProfileOption); + } + dropdownOptions.push(removeOption); + } + + $dropdown = UIElements.createDropdown({ + iconCls: 'settings', + options: dropdownOptions, + buttonCls: 'cp-app-contacts-dropdown-btn', + buttonTitle: Messages.settingsButton }); - var mute = h('span', Icons.get('mute'), { - class: 'cp-app-contacts-remove cp-mute-icon', - title: Messages.contacts_mute || 'mute', - style: (curve && mutedUsers[curve]) ? 'display: none;' : undefined + $dropdown.addClass('cp-app-contacts-icons'); + $dropdown.on('click dblclick', function (e) { + e.stopPropagation(); }); - var remove = h('span', Icons.get('unfriend', { - class: 'cp-app-contacts-remove', - title: Messages.contacts_remove - })); - var leaveRoom = h('span', Icons.get('logout', { - class: 'cp-app-contacts-remove', - title: Messages.contacts_leaveRoom - })); + + var $dropdownMenu = $dropdown.find('.cp-dropdown-content'); + $dropdownMenu.css('position', 'fixed'); + $dropdown.find('button').on('click', function () { + rebuildDropdown(); + var rect = this.getBoundingClientRect(); + var menuWidth = $dropdownMenu.outerWidth() || 150; + var viewportWidth = window.innerWidth; + var left = rect.left; + if (left + menuWidth > viewportWidth) { + left = rect.right - menuWidth; + } + if (left < 0) { left = 0; } + $dropdownMenu.css({ + top: rect.bottom + 'px', + left: left + 'px', + }); + }); + var status = h('span.cp-app-contacts-status', { title: Messages.contacts_online }); + var mute = h('span.cp-app-contacts-mute-indicator', { + title: Messages.contacts_muted, + style: isMuted ? '' : 'display: none;' + }, Icons.get('mute')); + var bottomRow = h('span.cp-app-contacts-bottom-row', [ + mute, + $dropdown[0], + ]); var rightCol = h('span.cp-app-contacts-right-col', [ h('span.cp-app-contacts-name', [room.isFriendChat? UI.getDisplayName(room.name): room.name]), - h('span.cp-app-contacts-icons', [ - room.isFriendChat ? mute : undefined, - room.isFriendChat ? unmute : undefined, - room.isFriendChat ? remove : - (room.isPadChat || room.isTeamChat) ? undefined : leaveRoom, - ]) + bottomRow, ]); - var friendData = room.isFriendChat ? userlist[0] : {}; - var $room = $(roomEl).on('click keypress', function (event) { if (event.type === 'click' || (event.type === 'keypress' && event.which === 13)) { display(id); } - }).dblclick(function () { - if (friendData.profile) { window.open(origin + '/profile/#' + friendData.profile); } - }); - - $(unmute).on('click dblclick', function (e) { - e.stopPropagation(); - var channel = state.channels[id]; - if (!channel.isFriendChat) { return; } - var curvePublic = channel.curvePublic; - $(mute).show(); - $(unmute).hide(); - unmuteUser(curvePublic); - }); - - $(mute).on('click dblclick', function (e) { - e.stopPropagation(); - var channel = state.channels[id]; - if (!channel.isFriendChat) { return; } - var curvePublic = channel.curvePublic; - var friend = contactsData[curvePublic] || friendData; - $(mute).hide(); - $(unmute).show(); - muteUser(friend); - }); - - $(remove).click(function (e) { - e.stopPropagation(); - var channel = state.channels[id]; - if (!channel.isFriendChat) { return; } - var curvePublic = channel.curvePublic; - var friend = contactsData[curvePublic] || friendData; - var name = Util.fixHTML(UI.getDisplayName(friend.name || friend.displayName)); - var content = h('div', [ - UI.setHTML(h('p'), Messages._getKey('contacts_confirmRemove', [ name ])), - ]); - UI.confirm(content, function (yes) { - if (!yes) { return; } - removeFriend(curvePublic); - // TODO remove friend from userlist ui - // FIXME seems to trigger EJOINED from netflux-websocket (from server); - // (tried to join a channel in which you were already present) - }); }); const $avatar = $(h('div.cp-avatar')).appendTo($room); @@ -668,6 +830,11 @@ define([ } notifyToolbar(); + if (!Visible.currently()) { + common.notify(); + Notification.create(); + } + channel.messages.push(message); var $chat = $(chat); @@ -678,6 +845,8 @@ define([ var $messagebox = $chat.find('.cp-app-contacts-messages'); var shouldScroll = isBottomedOut($messagebox); + $messagebox.find('.cp-app-contacts-system-notification').remove(); + $messagebox.append(el_message); if (shouldScroll) { @@ -801,7 +970,6 @@ define([ $messagebox.append(el_message); }); normalizeLabels($messagebox); - var roomEl = markup.room(id, room, list); var $parentEl; @@ -835,6 +1003,7 @@ define([ if (err) { return void console.error(err); } debug('rooms: ' + JSON.stringify(rooms)); rooms.forEach(initializeRoom); + updateInfoMessage(); }); }; @@ -848,6 +1017,7 @@ define([ if (channel && channel.curvePublic === curvePublic) { showInfo(); } + updateInfoMessage(); if (!removedByMe) { // TODO UI.alert if this is triggered by the other guy } @@ -895,6 +1065,8 @@ define([ .find('.cp-mute-icon').show(); $('.cp-app-contacts-friend[data-user]') .find('.cp-unmute-icon').hide(); + $('.cp-app-contacts-friend[data-user]') + .find('.cp-app-contacts-mute-indicator').hide(); if (!muted || Object.keys(muted).length === 0) { $button.hide(); return; @@ -905,6 +1077,8 @@ define([ .find('.cp-mute-icon').hide(); $('.cp-app-contacts-friend[data-user="'+curve+'"]') .find('.cp-unmute-icon').show(); + $('.cp-app-contacts-friend[data-user="'+curve+'"]') + .find('.cp-app-contacts-mute-indicator').show(); var data = muted[curve]; var avatar = h('span.cp-avatar'); var button = h('button.btn', { @@ -915,15 +1089,15 @@ define([ ]); common.displayAvatar($(avatar), data.avatar, data.name, Util.noop, data.uid, data.badge); $(button).click(function () { - unmuteUser(curve, button); - execCommand('UNMUTE_USER', curve, function (e, data) { - if (e) { return void console.error(e); } + unmuteUser(curve, function () { $(button).closest('div').remove(); if (!data) { $button.hide(); } $('.cp-app-contacts-friend[data-user="'+curve+'"]') .find('.cp-unmute-icon').hide(); $('.cp-app-contacts-friend[data-user="'+curve+'"]') .find('.cp-mute-icon').show(); + $('.cp-app-contacts-friend[data-user="'+curve+'"]') + .find('.cp-app-contacts-mute-indicator').hide(); if ($('.cp-contacts-muted-table').find('.cp-contacts-muted-user').length === 0) { UI.findOKButton().click(); } @@ -957,6 +1131,7 @@ define([ debug('rooms: ' + JSON.stringify(rooms)); rooms.forEach(initializeRoom); + updateInfoMessage(); }); updateMutedList(); @@ -1015,6 +1190,7 @@ define([ } if (cmd === 'CLEAR_CHANNEL') { clearChannel(data); + displaySystemMessage(data, Messages.contacts_historyCleared, 'clear-canvas'); return; } if (cmd === 'PADCHAT_READY') { @@ -1072,10 +1248,10 @@ define([ }); }; //}); - execCommand('GET_MY_INFO', null, function (e, info) { if (e) { return; } contactsData[info.curvePublic] = info; + userInfo = info; }); diff --git a/www/common/notifications.js b/www/common/notifications.js index 3d6e4fb08..7f4d9a144 100644 --- a/www/common/notifications.js +++ b/www/common/notifications.js @@ -148,6 +148,25 @@ define([ } }; + // Send chat message + handlers['SEND_CHAT_MESSAGE'] = function(common, data) { + var content = data.content; + var msg = content.msg; + var key = 'sent_chatMessage'; + + var name = Util.fixHTML(msg.content.name) || Messages.anonymous; + content.getFormatText = function() { + return Messages._getKey(key, [name]); + }; + content.handler = function() { + common.openURL('/contacts/'); + defaultDismiss(common, data)(); + }; + if (!content.archived) { + content.dismissHandler = defaultDismiss(common, data); + } + }; + // New support message from the admins handlers['SUPPORT_MESSAGE'] = function(common, data) { var content = data.content; diff --git a/www/common/onlyoffice/inner.js b/www/common/onlyoffice/inner.js index eb9809fc4..0829277ee 100644 --- a/www/common/onlyoffice/inner.js +++ b/www/common/onlyoffice/inner.js @@ -2813,14 +2813,21 @@ Uncaught TypeError: Cannot read property 'calculatedType' of null }); }; - var importFile = function(content) { - // Abort if there is another real user in the channel (history keeper excluded) + // Abort if there is another real user in the channel (history keeper excluded) + var checkChannelUsers = function () { var m = metadataMgr.getChannelMembers().slice().filter(function (nId) { return nId.length === 32; }); if (m.length > 1) { UI.removeModals(); - return void UI.alert(Messages.oo_cantUpload); + UI.alert(Messages.oo_cantUpload); + return true; + } + }; + + var importFile = function(content) { + if (checkChannelUsers()) { + return; } if (!content) { UI.removeModals(); @@ -2862,6 +2869,10 @@ Uncaught TypeError: Cannot read property 'calculatedType' of null if (!supportsXLSX()) { return void UI.alert(Messages.oo_invalidFormat); } + if (checkChannelUsers()) { + return; + } + var div = h('div.cp-oo-x2tXls', [ Icons.get('loading'), h('span', Messages.oo_importInProgress) @@ -3460,6 +3471,7 @@ Uncaught TypeError: Cannot read property 'calculatedType' of null var $forgetButton = common.createButton('forget', true, {}, function (err) { if (err) { return; } setEditable(false); + toolbar.forgotten(); }); var $forget = UIElements.getEntryFromButton($forgetButton); toolbar.$drawer.append($forget); @@ -3796,8 +3808,12 @@ Uncaught TypeError: Cannot read property 'calculatedType' of null const integrationHasUnsavedChanges = function(unsavedChanges, cb) { integrationChannel.query('Q_INTEGRATION_HAS_UNSAVED_CHANGES', unsavedChanges, cb); }; + const onUserlistChange = (list) => { + integrationChannel.event('Q_INTEGRATION_USERLIST_CHANGE', list); + }; var inte = common.createIntegration(integrationSave, - integrationHasUnsavedChanges); + integrationHasUnsavedChanges, + onUserlistChange); if (inte && cfg.autosave) { evIntegrationSave.reg(function () { inte.changed(); diff --git a/www/common/outer/local-store.js b/www/common/outer/local-store.js index a260f3def..cd14dc3b1 100644 --- a/www/common/outer/local-store.js +++ b/www/common/outer/local-store.js @@ -151,8 +151,8 @@ define([ sessionStorage.clear(); try { Object.keys(localStorage || {}).forEach(function (k) { - // Remvoe everything in localStorage except CACHE and FS_hash - if (/^CRYPTPAD_CACHE/.test(k) || /^LESS_CACHE/.test(k) || k === Constants.fileHashKey || /^CRYPTPAD_STORE|colortheme/.test(k)) { return; } + // Remove everything in localStorage except CACHE and FS_hash + if (/^CRYPTPAD_CACHE/.test(k) || /^LESS_CACHE/.test(k) || k === Constants.fileHashKey || /^CRYPTPAD_STORE|colortheme/.test(k) || (!isDeletion && /^cp_crowdfunding_/.test(k))) { return; } delete localStorage[k]; }); } catch (e) { console.error(e); } diff --git a/www/common/sframe-common-integration.js b/www/common/sframe-common-integration.js index 879d53d6b..b39f348a6 100644 --- a/www/common/sframe-common-integration.js +++ b/www/common/sframe-common-integration.js @@ -103,7 +103,7 @@ define([ const sendMyID = () => { const user = Util.clone(privateData?.integrationConfig?. - _?.editorConfig?.user); + _?.editorConfig?.user) || {}; user.readOnly = isView; execCommand?.('SEND', { msg: 'MYID', diff --git a/www/common/sframe-common-outer.js b/www/common/sframe-common-outer.js index 499d8713a..e95389659 100644 --- a/www/common/sframe-common-outer.js +++ b/www/common/sframe-common-outer.js @@ -1028,6 +1028,110 @@ define([ cb({error:e}); }); }); + var CROWDFUNDING_PREFIX = 'cp_crowdfunding_'; + var CROWDFUNDING_DRIVE_KEY = ['general', 'crowdfunding_metrics']; + // First action (opening or creating a document) count threshold before showing the banner + var CROWDFUNDING_MIN_ACTIONS = 5; + // Additional actions required after each shown banner + var CROWDFUNDING_ACTIONS_INTERVAL = 10; + // Quota usage threshold for quota-based banner display + var CROWDFUNDING_MIN_QUOTA_MB = 50; + // Cooldown between banner displays based on last shown timestamp in milliseconds + var CROWDFUNDING_COOLDOWN_MS = 24 * 60 * 60 * 1000; + var crowdfundingGetLS = function () { + var get = function (suffix) { + var k = CROWDFUNDING_PREFIX + suffix; + var val = localStorage.getItem(k); + if (val !== null && val !== '') { return Number(val) || null; } + return null; + }; + return { + visitCount: get('visitCount') || 0, + firstSeen: get('firstSeen') || null, + lastShownAtCount: get('lastShownAtCount') || 0, + lastShownAtTime: get('lastShownAtTime') || 0 + }; + }; + // Read metrics: encrypted drive for logged-in users, localStorage for guests + var crowdfundingReadMetrics = function (cb) { + if (!Utils.LocalStore.isLoggedIn()) { return cb(crowdfundingGetLS()); } + Cryptpad.getAttribute(CROWDFUNDING_DRIVE_KEY, function (e, metrics) { + if (e || !metrics || typeof metrics !== 'object') { + return cb({ + visitCount: 0, + firstSeen: null, + lastShownAtCount: 0, + lastShownAtTime: 0 + }); + } + cb(metrics); + }); + }; + // Write metrics: encrypted drive for logged-in users, localStorage for guests + var crowdfundingWriteMetrics = function (metrics, cb) { + if (!Utils.LocalStore.isLoggedIn()) { + try { + ['visitCount', 'firstSeen', 'lastShownAtCount', 'lastShownAtTime'].forEach(function (k) { + if (metrics[k] !== null && metrics[k] !== undefined) { + localStorage.setItem(CROWDFUNDING_PREFIX + k, String(metrics[k])); + } + }); + } catch (e) {} + return cb && cb(); + } + Cryptpad.setAttribute(CROWDFUNDING_DRIVE_KEY, metrics, function () { + cb && cb(); + }); + }; + var crowdfundingIncrementAction = function (cb) { + crowdfundingReadMetrics(function (metrics) { + metrics.visitCount = (metrics.visitCount || 0) + 1; + if (!metrics.firstSeen) { metrics.firstSeen = Date.now(); } + crowdfundingWriteMetrics(metrics, cb); + }); + }; + + sframeChan.on('Q_CROWDFUNDING_SHOULD_SHOW', function (data, cb) { + crowdfundingReadMetrics(function (metrics) { + var actionCount = metrics.visitCount || 0; + var lastShownAtCount = metrics.lastShownAtCount || 0; + var lastShownAtTime = metrics.lastShownAtTime || 0; + var now = Date.now(); + var nextThreshold = lastShownAtCount === 0 ? CROWDFUNDING_MIN_ACTIONS : lastShownAtCount + CROWDFUNDING_ACTIONS_INTERVAL; + var enoughTimePassed = lastShownAtTime === 0 || (now - lastShownAtTime >= CROWDFUNDING_COOLDOWN_MS); + var showFromActions = actionCount >= nextThreshold && enoughTimePassed; + if (showFromActions) { + return cb({ + show: true, + actionCount: actionCount + }); + } + if (CROWDFUNDING_MIN_QUOTA_MB <= 0) { + return cb({ + show: false, + actionCount: actionCount + }); + } + Cryptpad.getPinnedUsage({}, function (e, used) { + var usedMb = (typeof used === 'number') ? (used / (1024 * 1024)) : 0; + cb({ + show: !e && usedMb >= CROWDFUNDING_MIN_QUOTA_MB && enoughTimePassed, + actionCount: actionCount + }); + }); + }); + }); + sframeChan.on('Q_RECORD_CROWDFUNDING_SHOWN', function (data, cb) { + crowdfundingReadMetrics(function (metrics) { + metrics.lastShownAtCount = (data && typeof data.count === 'number') ? data.count : (metrics.visitCount || 0); + metrics.lastShownAtTime = Date.now(); + crowdfundingWriteMetrics(metrics, cb); + }); + }); + sframeChan.on('Q_CROWDFUNDING_INCREMENT_OPEN', function (data, cb) { + if (readOnly) { return cb && cb(); } + crowdfundingIncrementAction(cb); + }); Cryptpad.mailbox.onEvent.reg(function (data, cb) { sframeChan.query('EV_MAILBOX_EVENT', data, function (err, obj) { diff --git a/www/common/sframe-common.js b/www/common/sframe-common.js index 320140d9c..0e6d10fac 100644 --- a/www/common/sframe-common.js +++ b/www/common/sframe-common.js @@ -768,7 +768,7 @@ define([ // Ctrl+E: New pad modal var priv = ctx.metadataMgr.getPrivateData(); if (e.which === 69 && isApp) { - if (priv.app === 'form' && !priv.canEdit && !priv.form_auditorKey) { return; } + if (priv.app === 'form' && priv.readOnly && !priv.form_auditorHash && !priv.form_auditorKey) { return; } e.preventDefault(); return void funcs.createNewPadModal(); } @@ -1063,10 +1063,16 @@ define([ document.title = title; }); - funcs.isPadStored(function (err, val) { - if (err || !val) { return; } + var showCrowdfunding = function () { UIElements.displayCrowdfunding(funcs); - }); + }; + var privateData = ctx.metadataMgr.getPrivateData(); + var isDriveContext = privateData.app === 'drive'; + var isReadOnlyFormResponse = privateData.app === 'form' && privateData.readOnly && !privateData.form_auditorHash && !privateData.form_auditorKey; + var skipCrowdfunding = privateData.secureIframe === true || privateData.unsafeIframe === true || isReadOnlyFormResponse || isDriveContext; + if (!skipCrowdfunding) { + ctx.sframeChan.query('Q_CROWDFUNDING_INCREMENT_OPEN', {}, showCrowdfunding); + } ctx.sframeChan.ready(); diff --git a/www/common/toolbar.js b/www/common/toolbar.js index 8a0accaa1..1d20a95c1 100644 --- a/www/common/toolbar.js +++ b/www/common/toolbar.js @@ -509,12 +509,15 @@ MessengerUI, Messages, Pages, PadTypes, Icons) { }; var createCollapse = function (toolbar) { - var icon = Icons.get('chevron-up', {title: Messages.toolbar_collapse}); + var icon = Icons.get('chevron-up'); var notif = h('span.cp-collapsed-notif'); - var $button = $(h('button.cp-toolbar-collapse',[ - icon, - notif + var $button = $(h('button.cp-toolbar-collapse', { + 'aria-label': Messages.toolbar_collapse, + 'title': Messages.toolbar_collapse + }, [ + icon, + notif ])); toolbar.$bottomR.prepend($button); $(notif).hide(); @@ -530,10 +533,14 @@ MessengerUI, Messages, Pages, PadTypes, Icons) { $button.toggleClass('cp-toolbar-button-active'); const newIcon = hidden ? - Icons.get('chevron-down', {title: Messages.toolbar_expand}): - Icons.get('chevron-up', {title: Messages.toolbar_collapse}); + Icons.get('chevron-down'): + Icons.get('chevron-up'); $button.find('[data-lucide]').replaceWith(newIcon); + $button.attr({ + 'aria-label': hidden ? Messages.toolbar_expand : Messages.toolbar_collapse, + 'title': hidden ? Messages.toolbar_expand : Messages.toolbar_collapse + }); if (!hidden) { $(notif).hide(); } diff --git a/www/common/translations/messages.de.json b/www/common/translations/messages.de.json index 530242a0e..463b61f0a 100644 --- a/www/common/translations/messages.de.json +++ b/www/common/translations/messages.de.json @@ -227,7 +227,7 @@ "contacts_info3": "Auf den Avatar doppelklicken, um das entsprechende Profil anzuzeigen", "contacts_info4": "Jeder Teilnehmer kann den Chatverlauf endgültig löschen", "contacts_removeHistoryTitle": "Den Chatverlauf löschen", - "contacts_confirmRemoveHistory": "Bist du sicher, dass du den Chatverlauf endgültig löschen willst? Die Daten sind dann weg", + "contacts_confirmRemoveHistory": "Bist du sicher, dass du den Chatverlauf löschen willst? Die Nachrichten werden für alle gelöscht und können nicht wiederhergestellt werden.", "contacts_removeHistoryServerError": "Es gab einen Fehler bei dem Löschen des Chatverlaufs. Versuche es später noch einmal", "contacts_fetchHistory": "Den früheren Verlauf laden", "contacts_rooms": "Chaträume", @@ -590,7 +590,7 @@ "autostore_forceSave": "Speichere die Datei in deinem CryptDrive", "autostore_notAvailable": "Du musst dieses Dokument in deinem CryptDrive speichern, bevor du diese Funktion benutzen kannst.", "crowdfunding_button": "Unterstütze CryptPad", - "crowdfunding_popup_text": "

Wir brauchen deine Hilfe!

Um sicherzustellen, dass CryptPad weiter aktiv entwickelt wird, unterstütze bitte das Projekt über die OpenCollective Seite, wo du unsere Roadmap und Funding-Ziele lesen kannst.", + "crowdfunding_popup_text": "

Wir brauchen deine Hilfe!

Um sicherzustellen, dass CryptPad weiter aktiv entwickelt wird, unterstütze bitte das Projekt mit einer Spende auf OpenCollective.", "crowdfunding_popup_no": "Nicht jetzt", "invalidHashError": "Das angeforderte Dokument hat eine ungültige URL.", "oo_cantUpload": "Das Hochladen von Dateien ist nicht erlaubt, während andere Nutzer anwesend sind.", @@ -1868,5 +1868,18 @@ "support_moreTickets": "{0} Tickets verfügbar", "oo_rtChannelMissingNoSupport": "Beim Laden deines Dokuments ist ein Fehler aufgetreten. Es ist nun schreibgeschützt, um Beschädigung oder Verlust der Daten zu vermeiden. Bitte sende die folgenden Informationen an den Administrator deiner Instanz.", "oo_rtChannelMissing": "Beim Laden deines Dokuments ist ein Fehler aufgetreten. Es ist nun schreibgeschützt, um Beschädigung oder Verlust der Daten zu vermeiden. Bitte verwende die folgende Schaltfläche, um die entsprechenden Informationen an das Support-Team zu senden.", - "oo_rtChannelMissingDate": "Nachricht gesendet am {0}" + "oo_rtChannelMissingDate": "Nachricht gesendet am {0}", + "contacts_noFriends": "Deine Kontaktliste ist leer", + "contacts_historyCleared": "Der Chatverlauf wurde für alle gelöscht", + "support_moderatorNotification": "{0} hat dich als Moderator zum Support-Team hinzugefügt", + "crowdfunding_popup_text2": "Alternativ kannst du auf dieser Instanz ein Abonnement abschließen.", + "form_input_ph_text": "Deine Antwort hier", + "form_input_ph_number": "Gib eine Zahl ein", + "form_date_time": "Wähle Datum und Uhrzeit aus", + "contacts_muted": "Stummgeschaltet", + "contacts_noFriendsInfo": "Füge einen Kontakt hinzu, um eine Unterhaltung zu beginnen.", + "diagram_modesOptionLabel": "Zum Theme {0} wechseln, lädt die Anwendung neu", + "diagram_sketchTheme": "Skizze", + "diagram_simpleTheme": "Einfach", + "diagram_classicTheme": "Klassisch" } diff --git a/www/common/translations/messages.fr.json b/www/common/translations/messages.fr.json index fc9298a76..c041da6f7 100644 --- a/www/common/translations/messages.fr.json +++ b/www/common/translations/messages.fr.json @@ -231,7 +231,7 @@ "contacts_info3": "Double-cliquer sur son nom pour voir son profil", "contacts_info4": "Chaque participant·e peut nettoyer définitivement l'historique d'une discussion", "contacts_removeHistoryTitle": "Supprimer l'historique du chat", - "contacts_confirmRemoveHistory": "Êtes-vous sûr de vouloir supprimer définitivement l'historique de votre chat ? Les messages ne pourront pas être restaurés", + "contacts_confirmRemoveHistory": "Êtes-vous sûr de vouloir supprimer définitivement l'historique de votre chat ? Les messages seront supprimés pour tout le monde et ne pourront être restaurés.", "contacts_removeHistoryServerError": "Une erreur est survenue lors de la supprimer de l'historique du chat. Veuillez réessayer plus tard", "contacts_fetchHistory": "Récupérer l'historique plus ancien", "contacts_rooms": "Salons", @@ -353,7 +353,7 @@ "settings_restore": "Restaurer", "settings_backupHint2": "Téléchargez tous les documents dans votre drive. Les documents seront téléchargés dans un format lisible par d'autres applications si un tel format est disponible. Lorsqu'un tel format n'est pas disponible, les documents seront téléchargés dans un format lisible par CryptPad.", "settings_backup2": "Télécharger mon CryptDrive", - "settings_backup2Confirm": "Vous allez télécharger tous les documents de votre CryptDrive. Si vous souhaitez continuer, choisissez un nom et appuyez sur OK.", + "settings_backup2Confirm": "Vous allez télécharger tous les documents et fichiers de votre CryptDrive. Si vous souhaitez continuer, choisissez un nom et appuyez sur OK", "settings_exportTitle": "Téléchargement de votre CryptDrive", "settings_exportDescription": "Veuillez patienter pendant que nous téléchargeons et déchiffrons vos documents. Cette opération peut prendre plusieurs minutes. Fermer l'onglet du navigateur interrompra le processus.", "settings_exportFailed": "Si un pad nécessite plus d'une minute pour être traité, il ne sera pas inclus dans l'archive. Une liste des documents n'ayant pas été exportés sera disponible à la fin.", @@ -558,8 +558,8 @@ "password_submit": "Valider", "properties_addPassword": "Ajouter un mot de passe", "properties_changePassword": "Modifier le mot de passe", - "properties_confirmNew": "Êtes-vous sûr·e ? Ajouter un mot de passe changera l'URL de ce document et supprimera son historique. Les utilisateur·ices ne connaissant pas le nouveau mot de passe perdront l'accès au document.", - "properties_confirmChange": "Êtes-vous sûr·e ? Changer le mot de passe supprimera l'historique de ce document. Les utilisateur·ices ne connaissant pas le nouveau mot de passe perdront l'accès au document.", + "properties_confirmNew": "Êtes-vous sûr·e ? Ajouter un mot de passe changera l'URL de ce document et supprimera son historique. Les utilisateur·ices ne connaissant pas le mot de passe perdront l'accès à ce document", + "properties_confirmChange": "Êtes-vous sûr·e ? Changer le mot de passe supprimera l'historique. Les utilisateur·ices ne connaissant pas le nouveau mot de passe perdront l'accès à ce document", "properties_passwordSame": "Le nouveau mot de passe doit être différent de celui existant.", "properties_passwordError": "Une erreur est survenue lors de la modification du mot de passe. Veuillez réessayer.", "properties_passwordWarning": "Le mot de passe a été modifié avec succès mais nous n'avons pas réussi à mettre à jour votre CryptDrive avec les nouvelles informations. Vous devrez peut-être supprimer manuellement l'ancienne version de ce pad.
Appuyez sur OK pour recharger le document et mettre à jour vos droits d'accès.", @@ -595,7 +595,7 @@ "autostore_notAvailable": "Vous devez stocker ce document dans votre CryptDrive avant de pouvoir utiliser cette fonctionnalité.", "crowdfunding_button": "Soutenir CryptPad", "crowdfunding_button2": "Faire un don", - "crowdfunding_popup_text": "

Aider CryptPad

Pour vous assurer que CryptPad soit activement développé, nous vous invitons à supporter le projet via la page OpenCollective, où vous pouvez trouver notre Roadmap et nos objectifs de financement.", + "crowdfunding_popup_text": "

Nous avons besoin de votre aide !

Pour vous assurer que CryptPad soit activement développé, nous vous invitons à supporter le projet via la page OpenCollective.", "crowdfunding_popup_no": "Pas maintenant", "survey": "Enquête CryptPad", "markdown_toc": "Sommaire", @@ -1868,5 +1868,18 @@ "loadAll": "Charger tous les tickets", "oo_rtChannelMissing": "Une erreur s'est produite lors du chargement de votre document. Celui-ci est désormais en lecture seule afin d'éviter toute corruption ou perte de données. Veuillez utiliser le bouton ci-dessous pour envoyer les informations nécessaires à l'équipe de support.", "oo_rtChannelMissingDate": "Message envoyé le {0}", - "oo_rtChannelMissingNoSupport": "Une erreur s'est produite lors du chargement de votre document. Celui-ci est désormais en lecture seule afin d'éviter toute corruption ou perte de données. Veuillez transmettre les informations suivantes à l'administrateur·ice de votre instance." + "oo_rtChannelMissingNoSupport": "Une erreur s'est produite lors du chargement de votre document. Celui-ci est désormais en lecture seule afin d'éviter toute corruption ou perte de données. Veuillez transmettre les informations suivantes à l'administrateur·ice de votre instance.", + "support_moderatorNotification": "{0} vous a ajouté à l'équipe de support en tant que modérateur", + "crowdfunding_popup_text2": "Vous pouvez également vous abonner sur cette instance.", + "form_input_ph_text": "Votre réponse ici", + "form_input_ph_number": "Entrez un nombre", + "form_date_time": "Sélectionner la date et l'heure", + "contacts_muted": "Masqué", + "contacts_noFriends": "Votre liste de contacts est vide", + "contacts_noFriendsInfo": "Commencez par ajouter un contact pour débuter une conversation.", + "contacts_historyCleared": "L'historique de conversation a été supprimé pour tout le monde", + "diagram_modesOptionLabel": "Changer le thème pour {0}, réactualise l'application", + "diagram_sketchTheme": "Croquis", + "diagram_simpleTheme": "Simple", + "diagram_classicTheme": "Classique" } diff --git a/www/common/translations/messages.hu.json b/www/common/translations/messages.hu.json index 0def8ead7..8fdecc25f 100644 --- a/www/common/translations/messages.hu.json +++ b/www/common/translations/messages.hu.json @@ -1,15 +1,15 @@ { "synchronizing": "Szinkronizálás", "reconnecting": "Újracsatlakozás", - "main_title": "CryptPad: titkosított, együttműködő, valós idejű szerkesztés", + "main_title": "CryptPad: zéró-tudás, együttműködő valós idejű szerkesztés", "type": { "pad": "Formázott szöveg", "code": "Kód", "poll": "Szavazás", "kanban": "Kanban", - "slide": "Markdown prezentáció", + "slide": "Markdown diák", "drive": "CryptDrive", - "whiteboard": "Rajztábla", + "whiteboard": "Fehér tábla", "file": "Fájl", "media": "Média", "todo": "Teendők", @@ -19,16 +19,16 @@ "form": "Űrlap", "doc": "Dokumentum", "presentation": "Prezentáció", - "diagram": "Diagram" + "diagram": "Diagramm" }, "common_connectionLost": "Megszakadt a kapcsolat a serverrel
Amíg a kapcsolat helyreáll csak olvasási mód érhető el.", - "onLogout": "Kiléptél, {0}kattints ide{1} a belépéshez
vagy nyomj egy Esc-et a csak olvasható módban megnyitáshoz.", - "padNotPinnedVariable": "Ez a dokumentum {4} nap inaktivitás után lejár, {0}lépj be{1} vagy {2}regisztrálj{3} ahhoz, hogy megőrizd.", - "anonymousStoreDisabled": "A CryptPad-példány rendszergazdája letiltotta a vendégek számára a tárolást. Jelentkezz be a CryptDrive használatához.", - "expiredError": "Ez a dokumentum elérte a megsemmisítési időhatárt, és már nem érhető el.", - "inactiveError": "Ez a dokumentum tétlenség miatt törlésre került. Nyomd meg az Esc gombot egy új dokumentum létrehozásához.", - "invalidHashError": "A kért dokumentum webcíme hibás.", - "errorCopy": " Az aktuális változatot még használhatod csak olvasható módban az Esc megnyomásával.", + "onLogout": "Kijelentkezett, bejelentkezéshez {0}kattintson ide{1}
vagy nyomjon Esc-et a dokumentum olvasási módban való megnyitásához.", + "padNotPinnedVariable": "Ez a dokumentum {4} nap inaktivitás után lejár, a megtartásához {0}lépjen be{1} vagy {2}regisztráljon{3}.", + "anonymousStoreDisabled": "Ezen CryptPad példány rendszergazdája letiltotta a tárhelyet vendégek számára. Jelentkezzen be, hogy hozzáférjen a saját CryptDrive-jához.", + "expiredError": "Ez a dokumentum elérte a megsemmisítési időpontot, és már nem elérhető.", + "inactiveError": "Ez a dokumentum tétlenség miatt törlésre került. Új dokumentum létrehozásához nyomjon Esc-et.", + "invalidHashError": "A kért dokumentum webcíme érvénytelen.", + "errorCopy": " Az Esc billentyű lenyomásával olvasási módban még mindig használhatja a jelenlegi verziót.", "errorRedirectToHome": "Nyomd meg az Esc-et hogy visszakerülj a CryptDrive-odba.", "loading": "Betöltés…", "error": "Hiba", @@ -60,9 +60,9 @@ "pinLimitDrive": "Elérted a tárolási korlátot.
Nem készíthetsz több dokumentumot.", "importButton": "Importálás", "typeError": "Ez a dokumentum nem kompatibilis a kiválasztott alkalmazással", - "padNotPinned": "Ez a dokumentum 3 hónap inaktivitás után lejár, {0}lépj be{1} vagy {2}regisztrálj{3} ahhoz, hogy megőrizd.", - "deletedError": "Ez a dokumentum törlésre került, és már nem érhető el.", - "chainpadError": "A frissítés közben kritikus hiba történt. A lap csak olvasható módba került hogy ne veszítsd el a munkádat.
nyomd meg az Esc-et a dokumentum további megtekintéséhez, vagy töltsd újra hogy megpróbáld szerkeszteni.", + "padNotPinned": "Ez a dokumentum 3 hónap inaktivitás után lejár, a megőrzéséhez {0}lépjen be{1} vagy {2}regisztráljon{3}.", + "deletedError": "Ez a dokumentum törlésre került, és már nem elérhető.", + "chainpadError": "Kritikus hiba lépett fel a tartalom frissítése során. Az oldal olvasási módra váltott, hogy ne veszítse el munkáját.
Nyomjon Esc-et a dokumentum megtekintéséhez, vagy frissítse az oldalt a szerkesztés újrapróbálásához.", "newVersionError": "A CryptPad új verziója érhető el.
Töltsd újra ezt a lapot a használatához vagy nyomj Esc-et hogy offline módban érd el a dokumentumot.", "disconnected": "Nincs kapcsolat", "typing": "Szerkesztés", @@ -360,7 +360,7 @@ "fc_color": "Szín megváltoztatása", "fc_open": "Megnyitás", "fc_open_ro": "Megnyitás (csak olvasás)", - "fc_expandAll": "Minden kinyitása", + "fc_expandAll": "Összes kinyitása", "fc_delete": "Kukába helyezés", "fc_delete_owned": "Megsemmisítés", "fc_restore": "Visszaállítás", @@ -427,7 +427,7 @@ "fm_noResult": "Keresés eredménytelen", "settings_cat_style": "Megjelenés", "logoutButton": "Kijelentkezés", - "login_noSuchUser": "Hibás felhasználónév vagy jelszó", + "login_noSuchUser": "Érvénytelen felhasználónév vagy jelszó", "login_invalUser": "Felhasználónév szükséges", "login_unhandledError": "Váratlan hiba történt :(", "register_passwordsDontMatch": "A jelszavak nem egyeznek!", @@ -450,5 +450,11 @@ "support_cat_all": "Összes", "support_addAttachment": "Csatolmány hozzáadása", "oo_refresh": "Frissítés", - "support_formCategoryError": "Hiba: üres kategória" + "support_formCategoryError": "Hiba: üres kategória", + "login_register": "Regisztráció", + "login_confirm": "Jelszó megerősítése", + "login_hashing": "Jelszó hashelése, ez eltarthat egy ideig.", + "login_invalPass": "Jelszó szükséges", + "register_importRecent": "Dokumentumok importálása a vendég munkamenetből", + "import_note": "A bejelentkezés nélkül létrehozott és/vagy tárolt dokumentumok megőrzéséhez pipálja be a \"Dokumentumok importálása a vendég munkamenetből\" opciót." } diff --git a/www/common/translations/messages.json b/www/common/translations/messages.json index 4b8e1dd11..47c95f1bf 100644 --- a/www/common/translations/messages.json +++ b/www/common/translations/messages.json @@ -233,7 +233,7 @@ "contacts_info3": "Double-click their icon to view their profile", "contacts_info4": "Either participant can clear permanently a chat history", "contacts_removeHistoryTitle": "Clean the chat history", - "contacts_confirmRemoveHistory": "Are you sure you want to permanently remove your chat history? Data cannot be restored", + "contacts_confirmRemoveHistory": "Are you sure you want to delete chat history? Messages will be removed for everyone and cannot be restored.", "contacts_removeHistoryServerError": "There was an error while removing your chat history. Try again later", "contacts_fetchHistory": "Retrieve older history", "contacts_rooms": "Rooms", @@ -615,7 +615,7 @@ "autostore_notAvailable": "You must store this document in your CryptDrive before being able to use this feature.", "crowdfunding_button": "Support CryptPad", "crowdfunding_button2": "Donate", - "crowdfunding_popup_text": "

We need your help!

To ensure that CryptPad is actively developed, consider supporting the project via the OpenCollective page, where you can see our Roadmap and Funding goals.", + "crowdfunding_popup_text": "

We need your help!

To ensure that CryptPad is actively developed, consider supporting the project with a donation on OpenCollective.", "crowdfunding_popup_no": "Not now", "survey": "CryptPad survey", "markdown_toc": "Contents", @@ -1868,5 +1868,18 @@ "loadAll": "Load all tickets", "oo_rtChannelMissing": "An error occured while loading your document. It is now read-only to prevent data being corrupted or lost. Please use the button below to send the relevant information to the support team.", "oo_rtChannelMissingDate": "Message sent on {0}", - "oo_rtChannelMissingNoSupport": "An error occured while loading your document. It is now read-only to prevent data being corrupted or lost. Please send the following information to your instance administrator." + "oo_rtChannelMissingNoSupport": "An error occured while loading your document. It is now read-only to prevent data being corrupted or lost. Please send the following information to your instance administrator.", + "support_moderatorNotification": "{0} has added you to the support team as a moderator", + "crowdfunding_popup_text2": "Alternatively, you can subscribe on this instance.", + "form_input_ph_text": "Your answer here", + "form_input_ph_number": "Enter a number", + "form_date_time": "Select date and time", + "contacts_muted": "Muted", + "contacts_noFriends": "Your contact list is empty", + "contacts_noFriendsInfo": "Start by adding a contact to begin a conversation.", + "contacts_historyCleared": "The chat history has been deleted for everyone", + "diagram_modesOptionLabel": "Change theme to {0}, will refresh app", + "diagram_sketchTheme": "Sketch", + "diagram_simpleTheme": "Simple", + "diagram_classicTheme": "Classic" } diff --git a/www/common/translations/messages.pl.json b/www/common/translations/messages.pl.json index 56a8136aa..9c479aa1c 100644 --- a/www/common/translations/messages.pl.json +++ b/www/common/translations/messages.pl.json @@ -169,7 +169,7 @@ "contacts_rooms": "Pokoje", "contacts_fetchHistory": "Odzyskaj starszą historię", "contacts_removeHistoryServerError": "Wystąpił błąd podczas usuwania historii czatu. Spróbuj ponownie później", - "contacts_confirmRemoveHistory": "Czy na pewno chcesz trwale usunąć historię czatu? Danych nie można przywrócić", + "contacts_confirmRemoveHistory": "Czy na pewno chcesz usunąć historię czatu? Wiadomości zostaną usunięte dla wszystkich użytkowników i nie będzie można ich przywrócić.", "contacts_removeHistoryTitle": "Wyczyść historię czatu", "contacts_info4": "Każdy z uczestników może trwale wyczyścić historię czatu", "contacts_info3": "Kliknij dwukrotnie na ich ikonę, aby wyświetlić ich profil", @@ -523,7 +523,7 @@ "markdown_toc": "Zawartość", "survey": "Ankieta CryptPad", "crowdfunding_popup_no": "Nie teraz", - "crowdfunding_popup_text": "

Potrzebujemy Twojej pomocy!

Aby zapewnić aktywny rozwój pakietu CryptPad, rozważ wsparcie projektu poprzez stronę OpenCollective, gdzie możesz zobaczyć nasz Plan działania i Cele Finansowania.", + "crowdfunding_popup_text": "

Potrzebujemy Twojej pomocy!

Aby zapewnić dalszy rozwój pakietu CryptPad, rozważ wsparcie projektu poprzez darowiznę na platformie OpenCollective.", "crowdfunding_button2": "Przekaż darowiznę", "crowdfunding_button": "Wspieraj CryptPad", "autostore_notAvailable": "Aby móc korzystać z tej funkcji, dokument musi znajdować się na Twoim CryptDrive.", @@ -1863,5 +1863,19 @@ "loading_encrypted": "szyfrowane od końca do końca", "form_poll_required_hint": "Ta ankieta jest obowiązkowa, należy wybrać co najmniej jedną opcję.", "fo_trash_move_error": "Zawartości folderów współdzielonych nie można przenieść do kosza. Zamiast tego użyj opcji „Usuń”.", - "fo_sharedFolder_move_error": "Folderów współdzielonych nie można przenosić do innych folderów współdzielonych." + "fo_sharedFolder_move_error": "Folderów współdzielonych nie można przenosić do innych folderów współdzielonych.", + "support_moreTickets": "{0} dostępnych zgłoszeń", + "loadAll": "Załaduj wszystkie zgłoszenia", + "oo_rtChannelMissing": "Podczas ładowania dokumentu wystąpił błąd. Dokument ma teraz status „tylko do odczytu”, aby zapobiec uszkodzeniu lub utracie danych. Prosimy o skorzystanie z poniższego przycisku, aby przesłać odpowiednie informacje do zespołu pomocy technicznej.", + "oo_rtChannelMissingDate": "Wiadomość wysłana {0}", + "oo_rtChannelMissingNoSupport": "Podczas ładowania dokumentu wystąpił błąd. Dokument ma teraz status „tylko do odczytu”, aby zapobiec uszkodzeniu lub utracie danych. Prosimy o przesłanie poniższych informacji do administratora instancji.", + "support_moderatorNotification": "{0} dodał(a) Cię do zespołu wsparcia jako moderatora", + "crowdfunding_popup_text2": "Możesz też zapisać się w tej instancji.", + "form_input_ph_text": "Twoja odpowiedź tutaj", + "form_input_ph_number": "Wpisz liczbę", + "form_date_time": "Wybierz datę i godzinę", + "contacts_muted": "Wyciszone", + "contacts_noFriends": "Twoja lista kontaktów jest pusta", + "contacts_noFriendsInfo": "Zacznij od dodania kontaktu, aby rozpocząć rozmowę.", + "contacts_historyCleared": "Historia czatu została usunięta dla wszystkich" } diff --git a/www/common/translations/messages.pt-br.json b/www/common/translations/messages.pt-br.json index 8ea1bf05a..56b130293 100644 --- a/www/common/translations/messages.pt-br.json +++ b/www/common/translations/messages.pt-br.json @@ -1693,5 +1693,18 @@ "admin_invitationDeleteConfirm": "Tem certeza de que deseja apagar esse convite?", "admin_usersTitle": "Diretório do usuário", "admin_usersHint": "Lista de contas conhecidas nesta instância. Selecione abaixo para adicionar contas automaticamente, ou insira as informações manualmente utilizando o formulário.", - "admin_usersAdd": "Adicionar um usuário conhecido" + "admin_usersAdd": "Adicionar um usuário conhecido", + "support_moderatorNotification": "{0} adicionou você como moderador da equipe de suporte", + "crowdfunding_popup_text2": "Alternativamente, você pode se subscrever nessa instância.", + "form_input_ph_text": "Sua resposta aqui", + "form_input_ph_number": "Insira um número", + "form_date_time": "Selecione uma data e horário", + "contacts_muted": "Mudo", + "contacts_noFriends": "Sua lista de contatos está vazia", + "contacts_noFriendsInfo": "Inicie adicionando um contato para iniciar uma conversa.", + "contacts_historyCleared": "O histórico da conversa foi apagado para todos", + "diagram_modesOptionLabel": "Modificar o tema para {0} atualizará o aplicativo", + "diagram_sketchTheme": "Esboço", + "diagram_simpleTheme": "Simples", + "diagram_classicTheme": "Clássico" } diff --git a/www/common/translations/messages.pt-pt.json b/www/common/translations/messages.pt-pt.json index eed77bf01..8f6df4e73 100644 --- a/www/common/translations/messages.pt-pt.json +++ b/www/common/translations/messages.pt-pt.json @@ -209,7 +209,7 @@ "contact": "Contact", "terms": "Temos de Serviço", "header_logoTitle": "Go to the main page", - "edit": "edit", + "edit": "editar", "view": "view", "feedback_about": "Se você está lendo isso, provavelmente está curioso para saber por que o CryptPad está solicitando páginas da web quando você executa certas ações.", "feedback_privacy": "We care about your privacy, and at the same time we want CryptPad to be very easy to use. We use this file to figure out which UI features matter to our users, by requesting it along with a parameter specifying which action was taken.", @@ -444,7 +444,7 @@ "contacts_confirmRemove": "Tem certeza de que quer remover {0} dos seus contactos?", "contacts_remove": "Remover este contacto", "contacts_send": "Enviar", - "contacts_request": "{0} quer adiciona-lo como contacto. Aceitar?", + "contacts_request": "{0} quer adicioná-lo como contacto. Aceitar?", "contacts_rejected": "Convite de contacto rejeitado", "contacts_added": "Convite de contacto aceite.", "contacts_title": "Contactos", @@ -1480,5 +1480,97 @@ "admin_planlimit": "Limite de armazenamento", "calendar_rec_no": "Uma vez", "calendar_rec_updated": "Regra atualizada a {0}", - "admin_documentCreationTime": "Criado" + "admin_documentCreationTime": "Criado", + "og_pricing": "{0} Preços", + "admin_nameTitle": "Nome da instância", + "footer_source": "Código-fonte", + "info_termsFlavour": "Termos de uso desta instância", + "admin_descriptionTitle": "Descrição da instância", + "info_sourceFlavour": "Código-fonte de CryptPad", + "support_cat_drives": "Drive ou equipa", + "support_cat_document": "Documento", + "fivehundred_internalServerError": "Erro interno do servidor", + "ui_ms": "milissegundos", + "register_instance": "Criar uma nova conta em {0}", + "error_embeddingDisabled": "O embutimento está desativado nesta instância do CryptPad", + "error_embeddingDisabledSpecific": "O embutimento está desativado nesta aplicação do CryptPad.", + "error_incorrectAccess": "Só se pode aceder a esta página através {0}.", + "admin_cat_database": "Base de dados", + "admin_accountMetadataTitle": "Informações sobre a conta", + "admin_documentMetadataTitle": "Informações sobre o documento", + "admin_documentSize": "Tamanho do documento", + "admin_documentMetadata": "Metadados atuais", + "ui_true": "verdadeiro", + "ui_false": "falso", + "home_morestorage": "Para obter mais espaço de armazenamento:", + "ui_none": "nenhum", + "ui_confirm": "Confirmar", + "admin_documentModifiedTime": "Última modificação", + "admin_currentlyOpen": "Atualmente aberto", + "admin_planName": "Nome do plano", + "admin_logoButton": "Carregar novo logotipo", + "admin_supportSetupHint": "Criar ou atualizar as chaves de suporte.", + "admin_cat_customize": "Personalizar", + "admin_logoTitle": "Logotipo personalizado", + "admin_usersAdd": "Adicionar utilizador/a conhecido/a", + "duplicate": "Duplicar", + "dph_account_destroyed": "Esta conta foi eliminada pelo seu/sua dono/a", + "team_nameTooLong": "O nome da equipa é demasiado comprido (máx. 50 caracteres)", + "admin_totpDisableButton": "Desativar", + "goLeft": "Esquerda", + "goRight": "Direita", + "date": "Data", + "calendar_settings": "Configurações do calendário", + "admin_totpDisable": "Desativar a autenticação de dois fatores para esta conta", + "login_notFilledPass": "Inserir uma palavra-passe", + "login_notFilledUser": "Inserir um nome de utilizador", + "admin_totpEnabled": "A autenticação de dois fatores está ativada", + "register_nameTooLong": "O nome de utilizador deve conter menos de {0} caracteres", + "mfa_disable": "Desativar autenticação de dois fatores", + "mfa_enable": "Ativar autenticação de dois fatores", + "mfa_revoke_button": "Confirmar a desativação da autenticação de dois fatores", + "mfa_setup_button": "Iniciar a configuração da autenticação de dois fatores", + "continue": "Continuar", + "form_type_date": "Data", + "settings_mfaTitle": "Autenticação de dois fatores (A2F)", + "settings_otp_code": "Código de verificação", + "contacts_noFriends": "A sua lista de contactos está vazia", + "contacts_historyCleared": "O histórico de conversas foi eliminado para todos", + "diagram_classicTheme": "Clássico", + "diagram_modesOptionLabel": "Mudar o tema para {0} irá recarregar a aplicação", + "crowdfunding_popup_text2": "Em alternativa, pode subscrever nesta instância.", + "diagram_simpleTheme": "Simples", + "help_close_button": "Fechar a notificação de ajuda", + "admin_logoSize_error": "O tamanho do logotipo è demasiado grande", + "admin_onboardingOptionsHint": "Escolha a opção apropriada para a sua instância.
Estas configurações podem ser mudadas mais tarde no painel de administração.", + "admin_listAdminsHint": "Ver e remover administradores/as", + "install_header": "Instalação", + "admin_appSelection": "Configuração da aplicação", + "support_legacyDump": "Exportar tudo", + "install_launch": "Configuração da instância", + "admin_listAction": "Remover os direitos de administração", + "error_positiveNumber": "Insira um número positivo", + "admin_addKeyLabel": "Adicionar um/a administrador/a através da chave pública dele/a", + "form_answerType_error": "Escolha como responder ao formulário", + "moveItemLeft": "Mover o elemento para a esquerda", + "admin_addAdminsHint": "Adicionar administradores/as através da chave pública deles/as ou a partir da sua lista de contactos", + "moveItemRight": "Mover o elemento para a direita", + "moveItemUp": "Mover elemento para cima", + "moveItemDown": "Mover elemento para baixo", + "badges_moderator": "Suporte e moderação", + "support_legacyClear": "Eliminar para esta conta", + "support_movePending": "Mover para o arquivo", + "support_pasteUserData": "Colar os dados do/a utilizador/a aqui", + "admin_supportDelete": "Desativar suporte", + "support_cat_open": "Caixa de entrada", + "support_cat_closed": "Fechado", + "support_cat_search": "Procurar", + "support_cat_settings": "Configurações", + "support_pending": "Tickets arquivados:", + "support_pending_tag": "Arquivado", + "support_active_tag": "Caixa de entrada", + "support_notificationsTitle": "Desativar as notificações", + "support_notificationsHint": "Escolha esta opção para desativar as notificações de novos tickets e respostas", + "admin_supportTeamHint": "Adicionar e remover pessoas da equipa de suporte da instância", + "support_team": "A equipa de suporte" } diff --git a/www/common/translations/messages.ro.json b/www/common/translations/messages.ro.json index d906cd89e..55a17fa7d 100644 --- a/www/common/translations/messages.ro.json +++ b/www/common/translations/messages.ro.json @@ -334,7 +334,7 @@ "contacts_info3": "Dă dublu-click pe iconița contactului pentru a-i vizualiza profilul", "contacts_info4": "Ambii participanți pot șterge definitiv istoricul unui chat", "contacts_removeHistoryTitle": "Șterge istoricul chat-ului", - "contacts_confirmRemoveHistory": "Ești sigur că vrei să ștergi definitiv istoricul chat-ului? Datele nu vor putea fi recuperate", + "contacts_confirmRemoveHistory": "Ești sigur că vrei să ștergi istoricul chat-ului? Mesajele vor fi șterse pentru toată lumea și nu vor putea fi recuperate.", "contacts_removeHistoryServerError": "A apărut o eroare în timpul ștergerii istoricului chat-ului. Te rugăm să încerci mai târziu", "contacts_fetchHistory": "Recuperează istoricul mai vechi", "contacts_rooms": "Camere", @@ -662,7 +662,7 @@ "crowdfunding_button": "Susțineți CryptPad", "crowdfunding_popup_no": "Nu acum", "survey": "Sondaj CryptPad", - "crowdfunding_popup_text": "

Avem nevoie de ajutorul vostru!

Pentru a ne asigura că dezvoltăm în mod activ CryptPad, luați în considerare susținerea proiectului prin intermediul paginii OpenCollective, unde puteți vedea foaia noastră de parcurs și obiectivele de finanțare.", + "crowdfunding_popup_text": "

Avem nevoie de ajutorul vostru!

Pentru a ne asigura că dezvoltăm în mod activ CryptPad, luați în considerare susținerea proiectului printr-o donație pe OpenCollective.", "sharedFolders_share": "Distribuie acest link altor utilizatori înregistrați pentru a le da acces la dosarul distribuit. Odată ce acest link este accesat, dosarul distribuit va fi adăugat la CryptDrive lor.", "convertFolderToSF_SFParent": "Acest dosar nu poate fi convertit într-un dosar distribuit în locația lui actuală. Mută-l în afara dosarului distribuit în care se află pentru a continua.", "convertFolderToSF_SFChildren": "Acest dosar nu poate fi convertit într-un dosar distribuit deoarece el deja conține dosare distribuite. Mută dosarele distribuite altundeva pentru a continua.", @@ -1865,5 +1865,21 @@ "fo_trash_move_error": "Conținutul unui dosar distribuit nu poate fi mutat la gunoi. În schimb, folosiți funcția \"Elimină\".", "fo_sharedFolder_move_error": "Dosarele distribuite nu pot fi mutate în alte dosare distribuite.", "loadAll": "Încarcă toate tichetele", - "support_moreTickets": "{0} tichete disponibile" + "support_moreTickets": "{0} tichete disponibile", + "diagram_classicTheme": "Clasic", + "oo_rtChannelMissing": "A apărut o eroare la încărcarea documentului. Acesta a fost trecut în modul read-only pentru a preveni coruperea sau pierderea acestuia. Vă rugăm să folosiți butonul de mai jos pentru a trimite informațiile relevante către echipa de suport.", + "oo_rtChannelMissingDate": "Mesaj trimis la {0}", + "oo_rtChannelMissingNoSupport": "A apărut o eroare la încărcarea documentului. Acesta a fost trecut în modul read-only pentru a preveni coruperea sau pierderea acestuia. Vă rugăm să trimiteți următoarele informații către administratorul instanței dumneavoastră.", + "support_moderatorNotification": "{0} te-a adăugat în echipa de suport ca și moderator", + "crowdfunding_popup_text2": "În mod alternativ, puteți să vă abonați pe această instanță.", + "form_input_ph_text": "Răspunsul tău aici", + "form_input_ph_number": "Inserați un număr", + "form_date_time": "Selectați data și ora", + "contacts_muted": "Mut", + "contacts_noFriends": "Lista dumneavoastră de contacte este goală", + "contacts_noFriendsInfo": "Începeți prin adăugarea unui contact pentru a porni o conversație.", + "contacts_historyCleared": "Istoricul chat-ului a fost șters pentru toată lumea", + "diagram_modesOptionLabel": "Schimbă tema cu {0}, va reîmprospăta aplicația", + "diagram_sketchTheme": "Schiță", + "diagram_simpleTheme": "Simplu" } diff --git a/www/common/translations/messages.ru.json b/www/common/translations/messages.ru.json index 9e15cbceb..d1ca57dfa 100644 --- a/www/common/translations/messages.ru.json +++ b/www/common/translations/messages.ru.json @@ -260,7 +260,7 @@ "contacts_warning": "Все, что вы вводите здесь, является постоянным и доступно для всех существующих и будущих пользователей этого документа. Будьте осторожны с конфиденциальной информацией!", "contacts_info2": "Нажмите на значок контакта, чтобы пообщаться с ним", "contacts_info4": "Любой участник может полностью очистить историю чата", - "contacts_confirmRemoveHistory": "Вы уверены, что хотите навсегда удалить свою историю чата? Данные не могут быть восстановлены", + "contacts_confirmRemoveHistory": "Вы уверены, что хотите удалить историю чата? Сообщения будут удалены для всех и не могут быть восстановлены.", "contacts_removeHistoryServerError": "При удалении истории чата произошла ошибка. Попробуйте позже еще раз", "contacts_online": "Другой пользователь из этой комнаты находится онлайн", "fm_newButtonTitle": "Создать новый документ или папку, импортировать файл в текущую папку.", @@ -938,7 +938,7 @@ "admin_activeSessionsTitle": "Активные сессии", "admin_authError": "Только администраторы могут получить доступ к этой странице", "survey": "Опрос CryptPad", - "crowdfunding_popup_text": "

Нам нужна ваша помощь!

Чтобы быть уверенными, что CryptPad активно развивается - рассмотрите возможность поддержки проекта через страницу OpenCollective, где Вы можете увидеть нашу Дорожную карту и Цели финансирования.", + "crowdfunding_popup_text": "

Нам нужна ваша помощь!

Чтобы быть уверенными, что CryptPad активно развивается - рассмотрите возможность поддержки проекта через страницу OpenCollective.", "crowdfunding_button2": "Помочь деньгами", "autostore_notAvailable": "Вы должны сохранить этот документ на Вашем CryptDrive, прежде чем сможете использовать эту функцию.", "autostore_forceSave": "Сохраните файл в Вашем CryptDrive", @@ -1868,5 +1868,18 @@ "loadAll": "Загрузить все обращения", "oo_rtChannelMissing": "Произошла ошибка при загрузке Вашего документа. Теперь он доступен только для чтения, чтобы предотвратить повреждение или потерю данных. Пожалуйста, используйте кнопку ниже, чтобы отправить соответствующую информацию в службу поддержки.", "oo_rtChannelMissingDate": "Сообщение отправлено в {0}", - "oo_rtChannelMissingNoSupport": "Произошла ошибка при загрузке Вашего документа. Теперь он доступен только для чтения, чтобы предотвратить повреждение или потерю данных. Пожалуйста, отправьте следующую информацию администратору Вашего экземпляра." + "oo_rtChannelMissingNoSupport": "Произошла ошибка при загрузке Вашего документа. Теперь он доступен только для чтения, чтобы предотвратить повреждение или потерю данных. Пожалуйста, отправьте следующую информацию администратору Вашего экземпляра.", + "support_moderatorNotification": "{0} добавил(а) Вас в команду поддержки в качестве модератора", + "crowdfunding_popup_text2": "В качестве альтернативы Вы можете оформить подписку на этом экземпляре.", + "form_input_ph_text": "Ваш ответ здесь", + "form_input_ph_number": "Введите номер", + "form_date_time": "Выберите дату и время", + "contacts_muted": "Без звука", + "contacts_noFriends": "Ваш список контактов пуст", + "contacts_noFriendsInfo": "Начните с добавления контакта, чтобы начать разговор.", + "contacts_historyCleared": "История чата удалена для всех", + "diagram_modesOptionLabel": "Сменить тему на {0}, приложение перезагрузится", + "diagram_sketchTheme": "Скетч", + "diagram_simpleTheme": "Просто", + "diagram_classicTheme": "Классика" } diff --git a/www/common/translations/messages.sk.json b/www/common/translations/messages.sk.json index c3adfdc50..ac1014515 100644 --- a/www/common/translations/messages.sk.json +++ b/www/common/translations/messages.sk.json @@ -1,18 +1,18 @@ { - "register_whyRegister": "Proč se registrovat?", - "register_mustAcceptTerms": "Musíte souhlasit s podmínkami služby.", - "register_passwordTooShort": "Heslo musí být alespoň {0} znaků dlouhé.", - "register_passwordsDontMatch": "Hesla nejsou stejná!", - "register_acceptTerms": "Potvrzuji podmínky služby", - "register_importRecent": "Importovat dokumenty z Vašeho neregistrovaného sezení", - "login_unhandledError": "Stala se neočekávaná chyba :(", + "register_whyRegister": "Prečo sa registrovať?", + "register_mustAcceptTerms": "Musíte súhlasiť s podmienkami používania.", + "register_passwordTooShort": "Heslo musí mať aspoň {0} znakov.", + "register_passwordsDontMatch": "Heslá sa nezhodujú!", + "register_acceptTerms": "Súhlasím s podmienkami používania", + "register_importRecent": "Importovať dokumenty z hosťovskej relácie", + "login_unhandledError": "Došlo k neočakávanej chybe :(", "login_invalPass": "Heslo je povinné", - "login_invalUser": "Uživatelské jméno je povinné", - "login_noSuchUser": "Chybné uživatelské jméno nebo heslo. Opakujte nebo se registrujte", - "login_hashing": "Hashuji Vaše heslo, to může chvíli trvat.", + "login_invalUser": "Užívateľské meno je povinné", + "login_noSuchUser": "Neplatné používateľské meno alebo heslo", + "login_hashing": "Heslo sa hashuje, môže to chvíľu trvať.", "login_confirm": "Opakujte heslo", "login_password": "Heslo", - "login_username": "Uživatelské jméno", + "login_username": "Používateľské meno", "padNotPinned": "Tento dokument expiruje po 3 mesiacoch neakivity, {0}prihláste sa{1} alebo {2}registrujte{3}, aby ste si ho ponechali.", "onLogout": "Ste odhlásený, {0}kliknite sem{1} pre prihlásenie
alebo stlačte Esc pre čítanie dokumentu.", "typeError": "Tento dokument nie je kompatibilný s vybranou aplikáciou", @@ -21,33 +21,33 @@ "teams": "Tímy", "sheet": "Tabuľka", "contacts": "Kontakty", - "todo": "Dokončiť", + "todo": "Úlohy", "media": "Médiá", "file": "Súbor", - "whiteboard": "Whiteboard", + "whiteboard": "Tabuľa", "drive": "CryptDrive", "slide": "Prezentácia", "poll": "Hlasovanie", "code": "Kód", - "pad": "Dokument", + "pad": "Formátovaný text", "form": "Formulár", "doc": "Dokument", "presentation": "Prezentácia", "diagram": "Diagram", "kanban": "Kanban" }, - "logoutEverywhere": "Odhlásit se všude", - "login_login": "Přihlásit se", - "login_register": "Registrovat", - "logoutButton": "Odhlásit se", - "settingsButton": "Nastavení", - "register_emailWarning0": "Vypadá to, že byl vyplněn email jako uživatelské jméno.", - "register_alreadyRegistered": "Tento uživatel již existuje, chcete se přihlásit?", - "register_warning": "Varování", - "register_cancel": "Zrušit", - "register_writtenPassword": "Své uživatelské jméno a heslo jsem si zapsal, pokračovat", - "register_header": "Registrovat", - "deletedFromServer": "Dokument bol zničený", + "logoutEverywhere": "Odhlásiť sa všade", + "login_login": "Prihlásiť sa", + "login_register": "Registrovať", + "logoutButton": "Odhlásiť sa", + "settingsButton": "Nastavenia", + "register_emailWarning0": "Zdá sa, že ste ako používateľské meno zadali svoju e-mailovú adresu.", + "register_alreadyRegistered": "Tento používateľ už existuje, chcete sa prihlásiť?", + "register_warning": "Varovanie", + "register_cancel": "Zrušiť", + "register_writtenPassword": "Zapísal som si svoje používateľské meno a heslo, pokračovať", + "register_header": "Zaregistrovať sa", + "deletedFromServer": "Dokument zničený", "deleted": "Zmazané", "saved": "Uložené", "error": "Chyba", @@ -55,21 +55,21 @@ "invalidHashError": "Požadovaný dokument má neplatnú adresu URL.", "inactiveError": "Tento dokument bol vymazaný kvôli neaktivite. Stlačte Esc na vytvorenie nového dokumentu.", "deletedError": "Tento dokument bol vymazaný a už nie je dostupný.", - "expiredError": "Tento dokument expiroval a už nie je dostupný.", - "padNotPinnedVariable": "Tento dokument expiruje po {4}dňoch neaktivity, {0}prihláste sa{1} alebo {2}registrujte{3}, aby ste si ho ponechali.", - "editor": "redaktor", + "expiredError": "Tento dokument dosiahol dátum zničenia a už nie je k dispozícii.", + "padNotPinnedVariable": "Tento dokument expiruje po {4} dňoch neaktivity, {0}prihláste sa{1} alebo {2}registrujte{3}, aby ste si ho ponechali.", + "editor": "editor", "viewer": "čitateľ", "viewers": "čitatelia", "errorCopy": " Stále môžete použiť súcasnú verziu v režime iba na čítanie stlačením Esc.", "errorRedirectToHome": "Stlačte Esc na presmerovanie do vášho CryptDrive.", - "newVersionError": "K dispozíci je novšia verzia CryptPad.
Obnovte stránku pre zobrazenie novšej verzie alebo stlačte escape pre pokračovanie v offline režime.", + "newVersionError": "K dispozíci je nová verzia CryptPad.
Obnovte stránku pre zobrazenie novej verzie alebo stlačte escape pre pokračovanie v offline režime.", "mustLogin": "Musíte byť prihlásený pre prístup k tejto stránke", "realtime_unrecoverableError": "Vyskytla sa neopraviteľná chyba. Kliknite OK pre obnovenie stránky.", "disconnected": "Odpojené", "synchronizing": "Synchronizácia", "reconnecting": "Prebieha opätovné pripojenie", "typing": "Úprava", - "initializing": "Inicializovanie...", + "initializing": "Inicializácia...", "forgotten": "Presunuté do koša", "errorState": "Kritická chyba: {0}", "anonymousStoreDisabled": "Administrátor tejto CryptPad inštancie zakázal úložisko pre hostí. Prihlásením získate prístup k vašemu CryptDrive.", @@ -87,9 +87,9 @@ "pinLimitNotPinned": "Dosiahli ste limit úložiska.
Tento dokument nie je uložený vo vašom CryptDrive.", "pinLimitDrive": "Dosiahli ste limit úložiska.
Nemôžete vytvoriť nové dokumenty.", "importButton": "Importovať", - "importButtonTitle": "Importovať dokument zo súboru", + "importButtonTitle": "Importovať dokument z lokálneho súboru", "exportButton": "Exportovať", - "exportButtonTitle": "Exportovať dokument do súboru", + "exportButtonTitle": "Exportovať dokument do lokálneho súboru", "exportPrompt": "Ako chcete pomenovať váš súbor?", "user_rename": "Zmeniť meno", "user_displayName": "Meno", @@ -114,7 +114,7 @@ "useTemplateOK": "Vybrať šablónu (Enter)", "useTemplateCancel": "Začať bez šablóny (Esc)", "template_empty": "Nie je k dispozícii žiadna šablóna", - "previewButtonTitle": "Zobraziť alebo skyť Markdown náhľad", + "previewButtonTitle": "Zobraziť alebo skryť Markdown náhľad", "presentButtonTitle": "Spustiť režim prezentácie", "colorButtonTitle": "Zmeniť farbu textu v režime prezentácie", "propertiesButton": "Vlastnosti", @@ -135,7 +135,7 @@ "tags_title": "Štítky (len pre vás)", "tags_add": "Upraviť štítky pre vybrané dokumenty", "tags_notShared": "Vaše štítky nie sú zdieľané s ostatnými používateľmi", - "tags_duplicate": "Duplicitný štítok : {0}", + "tags_duplicate": "Duplicitný štítok: {0}", "tags_noentry": "Nemôžete pridať štítok ku vymazanému dokumentu", "slideOptionsText": "Možnosti", "slide_invalidLess": "Neplatný vlastný štýl", @@ -153,9 +153,9 @@ "editShare": "Odkaz pre úpravy", "cancelButton": "Zrušiť (esc)", "show_help_button": "Zobraziť nápovedu", - "help_button": "Nápoveda", + "help_button": "Pomoc", "historyText": "História", - "main_title": "CryptPad: Zero Knowledge, Collaborative Real Time Editing", + "main_title": "CryptPad: Zero-knowledge, Spolupráca v reálnom čase", "userlist_offline": "Aktuálne ste offline, zoznam používateľov nie je dostupný.", "pinLimitReachedAlert": "Dosiahli ste limit úložiska. Nové dokumenty sa nebudú ukladať vo vašom CryptDrive.
Buď vymažte dokumenty zo svojho CryptDrive alebo si zakúpte prémiovú ponuku pre zvýšenie limitu.", "newButtonTitle": "Vytvoriť nový dokument", @@ -196,7 +196,7 @@ "pad_mediatagImport": "Uložiť do CryptDrive", "pad_mediatagOptions": "Vlastnosti obrázku", "kanban_item": "Položka {0}", - "kanban_todo": "Dokončiť", + "kanban_todo": "Úlohy", "kanban_done": "Hotovo", "kanban_working": "Prebieha", "kanban_addBoard": "Pridať stĺpec", @@ -237,17 +237,17 @@ "userlist_addAsFriendTitle": "Odoslať \"{0}\" žiadosť o kontakt", "contacts_title": "Kontakty", "contacts_rejected": "Žiadosť o kontakt zamietnutá", - "contacts_request": "{0}si vás chce pridať do kontaktov.Prijať?", + "contacts_request": "{0} si vás chce pridať do kontaktov. Prijať?", "contacts_send": "Odoslať", "contacts_remove": "Odstrániť kontakt", "contacts_typeHere": "Tu napíšte správu...", "contacts_padTitle": "Chat", "contacts_info1": "Toto sú vaše kontakty. Odtiaľto možete:", - "contacts_info2": "Kliknite na ikonu kontaktu pre začatie chatu", - "contacts_info3": "Dvakrát kliknite na ikonu pre zobrazenie profilu", - "contacts_info4": "Každý z účastníkovv môže trvale zmazať históriu chatu", + "contacts_info2": "Kliknúť na ikonu kontaktu pre začatie chatu", + "contacts_info3": "Dvakrát kliknúť na ikonu pre zobrazenie profilu", + "contacts_info4": "Každý z účastníkov môže trvale zmazať históriu chatu", "contacts_removeHistoryTitle": "Vymazať históriu chatu", - "contacts_confirmRemoveHistory": "Ste si istý že chcete natrvalo odstrániť históriu chatu? Dáta nemôžu byť obnovené", + "contacts_confirmRemoveHistory": "Ste si istý že chcete odstrániť históriu chatu? Správy budú odstránené pre všetkých a nemôžu byť obnovené.", "contacts_removeHistoryServerError": "Pri odstraňovaní histórie nastala chyba. Skúste to neskôr", "contacts_fetchHistory": "Načítať staršiu históriu", "contacts_rooms": "Miestnosti", @@ -264,10 +264,10 @@ "fm_newFolder": "Nový priečinok", "fm_newFile": "Nový dokument", "ui_more": "Viac", - "fm_folder": "Zložka", - "fm_sharedFolder": "Zdielaná zložka", - "fm_folderName": "Názov zložky", - "fm_numberOfFolders": "# zložiek", + "fm_folder": "Priečinok", + "fm_sharedFolder": "Zdielaný priečinok", + "fm_folderName": "Názov priečinku", + "fm_numberOfFolders": "# priečinkov", "fm_numberOfFiles": "# súborov", "fm_fileName": "Názov súboru", "fm_type": "Typ", @@ -280,16 +280,16 @@ "kanban_newBoard": "Nový stĺpec", "canvas_saveToDrive": "Uložiť obrázok ako súbor v CryptDrive", "contacts_added": "Žiadosť o kontakt prijatá.", - "contacts_confirmRemove": "Ste si istý, že chcete odstrániť {0}z kontaktov?", + "contacts_confirmRemove": "Ste si istý, že chcete odstrániť {0} z kontaktov?", "poll_removeUser": "Ste si istý, že chcete odstrániť tohto používateľa?", "fm_emptyTrashDialog": "Naozaj chcete vyprázdniť kôš?", "poll_optionPlaceholder": "Možnosť", "oo_reconnect": "Pripojenie k serveru je obnovené. Kliknite OK pre obnovenie stránky a pokračovanie v úpravách.", "profile_uploadTypeError": "Chyba: formát vašeho avatara nie je povolený. Povolené formáty sú: {0}", - "poll_descriptionHint": "Popíšte svoju anketu a použite tlačidlo ✓ (publikovať).\nPopis sa dá napísať iba pomocou syntaxe markdown, môžete tiež vložiť médiá zo svojho CryptDrive.\nKtokoľvek s odkazom môže popis zmeniť, ale to neodporúčame.", + "poll_descriptionHint": "Popíšte svoju anketu a použite tlačidlo ✓ (publikovať).\nPopis sa dá napísať pomocou syntaxe markdown, môžete tiež vložiť médiá zo svojho CryptDrive.\nKtokoľvek s odkazom môže popis zmeniť, ale to neodporúčame.", "poll_comment_disabled": "Zverejnite anketu pomocou tlačidla ✓ aby boli povolené komentáre.", "fm_searchName": "Hľadať", - "fm_removeSeveralPermanentlyDialog": "Ste si istý, že chcete odstrániť tieto súbory z vášho disku? Ostanú v diskoch ostatných používateľov, ktorý si ich uložili.", + "fm_removeSeveralPermanentlyDialog": "Ste si istý, že chcete odstrániť tieto {0} súbory z vášho disku? Ostanú v diskoch ostatných používateľov, ktorý si ich uložili.", "contacts_warning": "Všetko čo sem napíšete, je trvalé a dostupné všetkým súčasným aj budúcim používateľom tohto dokumentu. Buďte opatrní pri nakladaní s citlivými informáciami!", "contacts_online": "Ďalší používateľ z tejto miestnosti je online", "fm_recentPadsName": "Nedávne", @@ -302,16 +302,1584 @@ "fm_contextMenuError": "Nepodarilo sa otvoriť kontextové menu pre tento prvok. Ak problém pretrváva, skúste obnoviť stránku.", "fm_selectError": "Nepodarilo sa vybrať zvolený prvok. Ak problém pretrváva, skúste stránku znova načítať.", "fm_categoryError": "Nepodarilo sa otvoriť zvolenú kategóriu, zobrazuje sa koreňový adresár.", - "fm_info_root": "Môžete vytvoriť ľubovolné množstvo podpriečinkov pre triedenie súborov.", + "fm_info_root": "Môžete vytvoriť ľubovolné množstvo podpriečinkov na triedenie súborov.", "fm_info_template": "Tieto dokumenty sú uložené ako šablóny. Môžu sa znova použiť pri vytváraní nových dokumentov.", "fm_info_recent": "Tieto dokumenty boli nedávno upravené alebo otvorené vami alebo ľuďmi, s ktorými spolupracujete.", "fm_info_trash": "Vyprázdnite kôš pre uvoľnenie miesta na CryptDrive.", - "profile_remove_avatar": "Odstrániť avatara", - "fm_info_anonymous": "Nie ste prihlásení, takže platnosť vašich dokumentov vyprší po {0} dňoch. Vymazaním histórie prehliadača môžu zmiznúť.
Zaregistrujte sa (žiadne osobné údaje nie sú potrebné) alebo prihláste sa pre permanentné uloženie dokumentov. Prečítajte si dalšie informácie o registrácii účtu.", + "profile_remove_avatar": "Odstrániť tento avatar", + "fm_info_anonymous": "Nie ste prihlásení, takže platnosť vašich dokumentov vyprší po {0} dňoch. Vymazaním histórie prehliadača môžu zmiznúť.
Zaregistrujte sa (žiadne osobné údaje nie sú potrebné) alebo prihláste sa pre permanentné uloženie dokumentov. Prečítajte si dalšie informácie o registrácii účtu.", "fm_info_sharedFolder": "Toto je zdieľaný priečinok. Nie ste prihlásení, takže k nej máte prístup iba v režime na čítanie.
alebo sa Prihláste, aby ho mohli pridať do svojho CryptDrive a upravovať ho.", "fm_viewListButton": "Zoznam", "fm_viewGridButton": "Mriežka", "fm_info_owned": "Ste vlastníkom zobrazených dokumentov. To znamená, že ich môžete permanentne odstrániť zo serveru, kedykoľvek chcete. Ak tak spravíte, ostatní používatelia k nim nebudú mať prístup.", "fm_error_cantPin": "Chyba serveru. Prosím obnovte stránku a skúste to znova.", - "fm_renamedPad": "Pre tento dokument ste nastavili vlastný názov. Jeho zdieľaný názov je:
{0}" + "fm_renamedPad": "Pre tento dokument ste nastavili vlastný názov. Jeho zdieľaný názov je:
{0}", + "fm_canBeShared": "Tento priečinok je možné zdieľať", + "fm_prop_tagsList": "Štítky", + "fm_burnThisDriveButton": "Vymazať všetky údaje ktoré CryptPad uložil vo vašom prehliadači", + "fm_burnThisDrive": "Naozaj chcete odstrániť všetky údaje, ktoré CryptPad uložil vo vašom prehliadači?
Týmto krokom odstránite CryptDrive a jeho históriu z prehliadača, vaše dokumenty však zostanú (zašifrované) na našom serveri.", + "fm_padIsOwned": "Ste vlastníkom tohto dokumentu", + "fm_padIsOwnedOther": "Tento dokument vlastní iný používateľ", + "fm_deletedPads": "Tieto dokumenty už na serveri neexistujú, boli odstránené z vášho CryptDrive: {0}", + "fm_tags_name": "Názov štítku", + "fm_tags_used": "Počet použití", + "fm_restoreDrive": "Prebieha obnovenie disku do predchádzajúceho stavu. Aby ste dosiahli čo najlepšie výsledky, počas tohto procesu nevykonávajte na disku žiadne zmeny.", + "fm_moveNestedSF": "Jeden zdieľaný priečinok nemožno umiestniť do iného. Priečinok {0} nebol presunutý.", + "fm_passwordProtected": "Chránené heslom", + "fc_newfolder": "Nový priečinok", + "fc_newsharedfolder": "Nový zdieľaný priečinok", + "fc_rename": "Premenovať", + "fc_color": "Zmeniť farbu", + "fc_open": "Otvoriť", + "fc_open_ro": "Otvoriť (len na čítanie)", + "fc_expandAll": "Rozbaliť všetko", + "fc_collapseAll": "Zbaliť všetko", + "fc_delete": "Presunúť do koša", + "fc_delete_owned": "Zničiť", + "fc_restore": "Obnoviť", + "fc_remove": "Odstrániť", + "fc_remove_sharedfolder": "Odstrániť", + "fc_empty": "Vyprázdniť kôš", + "fc_prop": "Vlastnosti", + "fc_hashtag": "Štítky", + "fo_moveUnsortedError": "Priečinok nemožno presunúť do zoznamu šablón", + "fo_existingNameError": "Tento názov sa v tomto priečinku už používa. Zvoľte iný názov.", + "fo_moveFolderToChildError": "Priečinok nemožno presunúť do niektorého z jeho podpriečinkov", + "fo_unavailableName": "Na novom mieste už existuje súbor alebo priečinok s rovnakým názvom. Premenujte tento prvok a skúste to znova.", + "register_emailWarning1": "Môžete to urobiť, ak chcete, na server sa to však neodešle.", + "register_emailWarning2": "Heslo si nebudete môcť obnoviť prostredníctvom e-mailu, ako je to možné v prípade mnohých iných služieb.", + "register_emailWarning3": "Ak tomu rozumiete a napriek tomu chcete ako používateľské meno použiť svoju e-mailovú adresu, kliknite na OK.", + "settings_cat_account": "Účet", + "settings_cat_drive": "CryptDrive", + "settings_cat_cursor": "Kurzor", + "settings_cat_code": "Kód", + "settings_cat_pad": "Formátovaný text", + "settings_cat_subscription": "Predplatné", + "settings_title": "Nastavenia", + "settings_save": "Uložiť", + "settings_backupCategory": "Zálohovanie", + "settings_backupHint": "Zálohujte alebo obnovte celý obsah vášho CryptDrive. Záloha nebude obsahovať samotné dokumenty, ale len kľúče potrebné na prístup k nim.", + "settings_backup": "Zálohovať", + "settings_restore": "Obnoviť", + "settings_backupHint2": "Stiahnite si všetky dokumenty z vášho CryptDrive. Dokumenty sa stiahnu vo formátoch, ktoré dokážu prečítať iné aplikácie, ak je takýto formát k dispozícii. Ak takýto formát nie je k dispozícii, dokumenty sa stiahnu vo formáte, ktorý dokáže prečítať aplikácia CryptPad.", + "settings_backup2": "Stiahnuť môj CryptDrive", + "settings_backup2Confirm": "Týmto sa stiahnu všetky dokumenty a súbory z vášho CryptDrive. Ak chcete pokračovať, zadajte názov a stlačte tlačidlo OK", + "settings_exportTitle": "Exportujte svoj CryptDrive", + "settings_exportDescription": "Počkajte, prosím, kým stiahneme a dešifrujeme vaše dokumenty. Môže to trvať niekoľko minút. Zatvorením karty proces prerušíte.", + "settings_exportFailed": "Ak stiahnutie dokumentu trvá dlhšie ako 1 minútu, nebude zahrnutý do exportu. Zobrazí sa odkaz na každý dokument, ktorý nebol exportovaný.", + "settings_exportWarning": "Poznámka: Tento nástroj je stále v beta verzii a môžu sa vyskytnúť problémy so škálovateľnosťou. Pre lepší výkon odporúčame nechať túto kartu aktívnu.", + "settings_exportCancel": "Naozaj chcete zrušiť export? Nabudúce budete musieť začať od začiatku.", + "settings_export_reading": "Čítanie vášho CryptDrive...", + "settings_export_download": "Sťahovanie a dešifrovanie vašich dokumentov...", + "settings_export_compressing": "Komprimovanie dát...", + "settings_export_done": "Váš export je pripravený!", + "settings_exportError": "Zobraziť chyby", + "settings_exportErrorDescription": "Do exportu sa nepodarilo pridať nasledujúce dokumenty:", + "settings_exportErrorEmpty": "Tento dokument nie je možné exportovať (prázdny alebo neplatný obsah).", + "settings_exportErrorMissing": "Tento dokument na našich serveroch chýba (platnosť vypršala alebo ho jeho vlastník vymazal)", + "settings_exportErrorOther": "Pri pokuse o export tohto dokumentu došlo k chybe: {0}", + "settings_resetNewTitle": "Vyčistiť CryptDrive", + "settings_resetButton": "Odstrániť", + "settings_reset": "Odstrániť všetky súbory a priečinky z vášho CryptDrive", + "settings_resetPrompt": "Touto akciou sa odstránia všetky dokumenty z vášho disku.
Naozaj chcete pokračovať?
Na potvrdenie napíšte „I love CryptPad“.", + "settings_resetDone": "Váš disk je teraz prázdny!", + "settings_resetError": "Nesprávny overovací text. Váš CryptDrive nebol zmenený.", + "settings_resetTipsAction": "Resetovať", + "settings_resetTips": "Tipy", + "settings_resetTipsButton": "Resetovať dostupné tipy v CryptDrive", + "settings_resetTipsDone": "Všetky tipy sú teraz opäť viditeľné.", + "settings_thumbnails": "Miniatúry", + "settings_disableThumbnailsAction": "Zakázať vytváranie miniatúr vo vašom CryptDrive", + "settings_disableThumbnailsDescription": "Miniatúry sa automaticky vytvárajú a ukladajú vo vašom prehliadači, keď otvoríte nový dokument. Túto funkciu môžete deaktivovať tu.", + "settings_resetThumbnailsAction": "Vyčistiť", + "settings_resetThumbnailsDescription": "Vymazať všetky miniatúry dokumentov uložené vo vašom prehliadači.", + "settings_resetThumbnailsDone": "Všetky miniatúry boli vymazané.", + "settings_importTitle": "Importovať nedávne dokumenty z tohto prehliadača do svojho CryptDrive", + "settings_import": "Import", + "settings_importConfirm": "Naozaj chcete importovať nedávne dokumenty z tohto prehliadača do svojho CryptDrive?", + "settings_importDone": "Import dokončený", + "settings_autostoreTitle": "Ukladanie dokumentov do CryptDrive", + "settings_autostoreHint": "Automaticky Všetky dokumenty, ktoré otvoríte, sa uložia do vášho CryptDrive.
Ručne (vždy sa opýtať) Ak ste dokument ešte neuložili, systém sa vás opýta, či ho chcete uložiť do vášho CryptDrive.
Ručne (nikdy sa neopýtať) Dokumenty sa do vášho CryptDrive neukladajú automaticky. Možnosť ich uloženia bude skrytá.", + "settings_autostoreYes": "Automaticky", + "settings_autostoreNo": "Ručne (nikdy sa neopýtať)", + "settings_autostoreMaybe": "Ručne (vždy sa opýtať)", + "settings_userFeedbackTitle": "Spätná väzba", + "settings_userFeedbackHint1": "CryptPad odosiela na server niekoľko veľmi základných informácií, aby nám pomohol zistiť, ako môžeme zlepšiť váš zážitok. ", + "settings_userFeedbackHint2": "Obsah vašich dokumentov nebude nikdy odoslaný na server.", + "settings_userFeedback": "Povoliť používateľskú spätnú väzbu", + "settings_deleteTitle": "Vymazanie účtu", + "settings_deleteHint": "Vymazanie účtu je nezvratné. Váš CryptDrive a zoznam dokumentov budú zo servera odstránené. Zvyšné dokumenty budú odstránené do 90 dní, ak si ich nikto iný neuložil do svojho CryptDrive.", + "settings_deleteButton": "Zmazať účet", + "settings_deleteModal": "Poskytnite nasledujúce informácie administrátorovi tejto inštancie CryptPad, aby boli vaše údaje odstránené zo servera.", + "settings_deleted": "Váš používateľský účet bol odstránený. Stlačte tlačidlo OK, aby ste sa vrátili na úvodnú stránku.", + "settings_anonymous": "Nie ste prihlásený. Tieto nastavenia platia len pre tento prehliadač.", + "settings_publicSigningKey": "Verejný podpisový kľúč", + "settings_logoutEverywhereButton": "Odhlásiť sa", + "settings_logoutEverywhereTitle": "Ukončiť vzdialené relácie", + "settings_logoutEverywhere": "Vynútiť odhlásenie zo všetkých ostatných webových relácií", + "settings_logoutEverywhereConfirm": "Ste si istí? Budete sa musieť prihlásiť na všetkých svojich zariadeniach.", + "settings_driveDuplicateTitle": "Duplicitne vlastnené dokumenty", + "settings_driveDuplicateHint": "Keď presuniete svoje dokumenty do zdieľanej zložky, vo vašom CryptDrive zostane ich kópia, aby ste nad nimi mali naďalej kontrolu. Duplikované súbory môžete skryť. Viditeľná bude len zdieľaná verzia, pokiaľ ju nevymažete, v takom prípade sa pôvodný súbor zobrazí na pôvodnom mieste.", + "settings_driveDuplicateLabel": "Skryť duplikáty", + "settings_codeIndentation": "Veľkosť odsadenia v editore kódu (medzery)", + "settings_codeUseTabs": "Odsadenie pomocou tabulátorov (namiesto medzier)", + "settings_codeFontSize": "Veľkosť písma v editore kódu", + "settings_padWidth": "Maximálna šírka editora", + "settings_padWidthHint": "Prepínanie medzi režimom stránky (predvolený), ktorý obmedzuje šírku textového editora, a využitím celej šírky obrazovky.", + "settings_padWidthLabel": "Zmenšiť šírku editora", + "settings_padSpellcheckTitle": "Kontrola pravopisu", + "settings_padSpellcheckHint": "Táto možnosť umožňuje zapnúť kontrolu pravopisu v textových dokumentoch. Pravopisné chyby budú podčiarknuté červenou farbou a pre zobrazenie správnych možností budete musieť podržať kláves Ctrl alebo Meta a kliknúť pravým tlačidlom myši.", + "settings_padSpellcheckLabel": "Zapnúť kontrolu pravopisu v textových dokumentoch", + "settings_padOpenLinkTitle": "Otvoriť odkazy jedným kliknutím", + "settings_padOpenLinkHint": "Zapnutím tejto možnosti môžete otvárať vložené odkazy po kliknutí bez zobrazenia náhľadu", + "settings_padOpenLinkLabel": "Povoliť priame otváranie odkazov", + "settings_ownDriveTitle": "Aktualizovať účet", + "settings_ownDriveHint": "Staršie účty nemajú z technických dôvodov prístup k najnovším funkciám. Bezplatná aktualizácia povolí aktuálne funkcie a pripraví váš CryptDrive na budúce aktualizácie.", + "settings_ownDriveButton": "Aktualizovať účet", + "settings_ownDriveConfirm": "Aktualizácia vášho účtu môže chvíľu trvať. Budete sa musieť znovu prihlásiť na všetkých svojich zariadeniach. Ste si istí?", + "settings_ownDrivePending": "Váš účet sa aktualizuje. Prosím, nezatvárajte túto stránku ani ju neobnovujte, kým sa proces nedokončí.", + "settings_changePasswordTitle": "Zmeniť heslo", + "settings_changePasswordHint": "Zmeňte heslo svojho účtu. Zadajte svoje súčasné heslo a nové heslo potvrďte jeho dvojnásobným zadaním.
Ak heslo zabudnete, nebudeme ho môcť obnoviť, takže buďte veľmi opatrní!", + "settings_changePasswordButton": "Zmeniť heslo", + "settings_changePasswordCurrent": "Aktuálne heslo", + "settings_changePasswordNew": "Nové heslo", + "settings_changePasswordNewConfirm": "Potvrďte nové heslo", + "settings_changePasswordConfirm": "Naozaj chcete zmeniť heslo? Budete sa musieť znovu prihlásiť na všetkých zariadeniach.", + "settings_changePasswordError": "Došlo k neočakávanej chybe. Ak sa nemôžete prihlásiť alebo zmeniť heslo, kontaktujte svojich administrátorov CryptPad.", + "settings_changePasswordPending": "Vaše heslo sa práve aktualizuje. Nezatvárajte túto stránku a neobnovujte ju, kým sa proces nedokončí.", + "settings_changePasswordNewPasswordSameAsOld": "Vaše nové heslo sa nesmie zhodovať s aktuálnym heslom.", + "settings_cursorColorTitle": "Farba kurzora", + "settings_cursorColorHint": "Zmeňte farbu priradenú k vášmu užívateľovi v zdieľaných dokumentoch.", + "settings_cursorShareTitle": "Zdieľať polohu kurzora", + "settings_cursorShareHint": "Môžete sa rozhodnúť, či chcete, aby ostatní používatelia videli polohu vášho kurzora v zdieľaných dokumentoch.", + "settings_cursorShareLabel": "Zdieľať polohu", + "settings_cursorShowTitle": "Zobraziť polohu kurzora ostatných používateľov", + "settings_cursorShowHint": "Môžete si zvoliť, či chcete vidieť kurzory ostatných používateľov v dokumentoch, na ktorých spoločne pracujete.", + "settings_cursorShowLabel": "Zobraziť kurzory", + "upload_title": "Nahrať súbor", + "upload_modal_title": "Možnosti nahratia súboru", + "upload_modal_filename": "Názov súboru (prípona {0} pridaná automaticky)", + "upload_modal_owner": "Vlastnený súbor", + "uploadFolder_modal_title": "Možnosti nahratia priečinku", + "uploadFolder_modal_filesPassword": "Heslo súborov", + "uploadFolder_modal_owner": "Vlastnené súbory", + "uploadFolder_modal_forceSave": "Uložiť súbory do CryptDrive", + "upload_serverError": "Chyba servera: nepodarilo sa nahrať súbory.", + "upload_uploadPending": "Nahrávanie súboru už prebieha. Chcete ho zrušiť a začať nahrávať nový súbor?", + "upload_success": "Súbor ({0}) bol úspešne nahratý a pridaný na váš disk.", + "upload_notEnoughSpace": "Pre tento súbor nie je na vašom CryptDrive dostatok miesta.", + "upload_notEnoughSpaceBrief": "Nedostatok miesta", + "upload_tooLarge": "Tento súbor presahuje maximálnu veľkosť pre nahratie nastavenú pre váš účet.", + "upload_tooLargeBrief": "Súbor prekračuje limit {0}MB pre tento disk", + "upload_choose": "Vybrať súbor", + "upload_pending": "Prebieha", + "upload_cancelled": "Zrušené", + "upload_size": "Veľkosť", + "upload_mustLogin": "Na nahrávanie súborov je potrebné sa prihlásiť", + "upload_up": "Nahrať", + "download_mt_button": "Stiahnuť", + "download_dl": "Stiahnuť", + "download_step1": "Sťahovanie", + "download_step2": "Dešifrovanie", + "todo_title": "CryptTodo", + "todo_markAsCompleteTitle": "Označiť túto úlohu ako splnenú", + "todo_markAsIncompleteTitle": "Označiť túto úlohu ako nedokončenú", + "todo_removeTaskTitle": "Odstrániť túto úlohu zo zoznamu", + "pad_base64": "Tento dokument obsahuje obrázky uložené neefektívnym spôsobom. Tieto obrázky výrazne zvýšia veľkosť dokumentu vo vašom CryptDrive a spomalia jeho načítanie. Tieto súbory môžete previesť do nového formátu, ktorý bude vo vašom CryptDrive uložený oddelene. Chcete tieto obrázky previesť teraz?", + "mdToolbar_button": "Zobraziť alebo skryť panel nástrojov Markdown", + "mdToolbar_defaultText": "Sem vložte svoj text", + "mdToolbar_help": "Pomoc", + "mdToolbar_tutorial": "https://www.markdowntutorial.com/", + "mdToolbar_bold": "Tučné", + "mdToolbar_italic": "Kurzíva", + "mdToolbar_strikethrough": "Prečiarknuté", + "mdToolbar_heading": "Nadpis", + "mdToolbar_link": "Odkaz", + "mdToolbar_quote": "Citácia", + "mdToolbar_nlist": "Číslovaný zoznam", + "mdToolbar_list": "Odrážkový zoznam", + "mdToolbar_check": "Zoznam úloh", + "mdToolbar_code": "Kód", + "mdToolbar_toc": "Obsah", + "home_host": "Toto je nezávislá komunitná inštancia CryptPad.", + "main_catch_phrase": "Sada nástrojov pre spoluprácu
end-to-end šifrované a open-source", + "about": "O nás", + "privacy": "Zásady ochrany osobných údajov", + "contact": "Kontakt", + "terms": "Podmienky používania", + "features": "Funkcie", + "features_title": "Funkcie", + "features_anon": "Hosť", + "features_registered": "Registrovaný", + "features_premium": "Prémium", + "features_f_apps": "Prístup ku všetkým aplikáciám", + "features_f_core": "Bežné funkcie", + "features_f_core_note": "Úpravy, Import & Export, História, Zoznam používateľov, Chat", + "features_f_file0": "Otváranie dokumentov", + "features_f_file0_note": "Zobraziť a stiahnuť dokumenty zdieľané inými používateľmi", + "features_f_cryptdrive0": "Obmedzený prístup k CryptDrive", + "features_f_cryptdrive0_note": "Možnosť ukladať navštívené dokumenty v prehliadači, aby ste ich mohli neskôr otvoriť", + "features_f_storage0": "Obmedzené ukladanie súborov", + "features_f_storage0_note": "Dokumenty sa vymažú po {0} dňoch nečinnosti", + "features_f_anon": "Všetky funkcie ako hosť", + "features_f_anon_note": "S ďalšími funkciami", + "features_f_cryptdrive1": "Všetky funkcie CryptDrive", + "features_f_cryptdrive1_note": "Zložky, zdieľané zložky, šablóny, štítky", + "features_f_devices": "Vaše dokumenty na všetkých vašich zariadeniach", + "features_f_devices_note": "Prihláste sa do svojho CryptDrive odkiaľkoľvek pomocou svojho účtu", + "features_f_social": "Sociálne funkcie", + "features_f_social_note": "Pridajte kontakty pre bezpečnú spoluprácu, vytvorte si profil, nastavte podrobné riadenie prístupu", + "features_f_file1": "Nahrať a zdieľať súbory", + "features_f_file1_note": "Ukladajte súbory do svojho CryptDrive: obrázky, PDF súbory, videá a ďalšie. Zdieľajte ich so svojimi kontaktmi alebo ich vložte do svojich dokumentov. (až {0}MB)", + "features_f_storage1": "Osobné úložisko ({0})", + "features_f_storage1_note": "Dokumenty uložené vo vašom CryptDrive sa pri nečinnosti nemažú", + "features_f_register": "Registrujte sa zadarmo", + "features_f_reg": "Všetky funkcie pre registrovaných používateľov", + "features_f_reg_note": "S ďalšími výhodami", + "features_f_storage2": "Dodatočný úložný priestor", + "features_f_storage2_note": "Od 5 GB do 50 GB v závislosti od plánu, zvýšený limit na nahrávanie súborov na {0} MB", + "features_f_support": "Rýchlejšia podpora", + "features_f_support_note": "Prioritná odpoveď od administratívneho tímu prostredníctvom e-mailu a integrovaného systému podpory", + "features_f_supporter": "Podpora súkromia", + "features_f_supporter_note": "Pomôžte CryptPad dosiahnuť finančnú udržateľnosť a ukázať, že softvér na ochranu súkromia, ktorý používatelia ochotne financujú, by mal byť štandardom", + "features_f_subscribe": "Predplatiť", + "features_f_subscribe_note": "Na predplatné je potrebný registrovaný účet", + "four04_pageNotFound": "Stránku, ktorú hľadáte, sme nenašli.", + "header_logoTitle": "Prejsť do svojho CryptDrive", + "header_homeTitle": "Prejsť na úvodnú stránku CryptPad", + "help_genericMore": "Prečítajte si našu dokumentáciu a zistite viac o tom, ako vám môže CryptPad pomôcť", + "edit": "upraviť", + "view": "zobraziť", + "feedback_about": "Ak toto čítate, pravdepodobne vás zaujíma, prečo CryptPad pri vykonávaní určitých akcií načítava webové stránky.", + "feedback_privacy": "Záleží nám na vašom súkromí a zároveň chceme, aby bol CryptPad veľmi jednoduchý na používanie. Tento súbor využívame na zistenie, ktoré funkcie používateľského rozhrania sú pre našich používateľov dôležité, a to tak, že ho vyžiadame spolu s parametrom, ktorý určuje, aká akcia bola vykonaná.", + "feedback_optout": "Ak nechcete zdieľať informácie, prejdite na stránku svojich užívateľských nastavení, kde nájdete políčko na zapnutie alebo vypnutie užívateľskej spätnej väzby.", + "creation_404": "Tento dokument už neexistuje. Na vytvorenie nového dokumentu použite nasledujúci formulár.", + "creation_owned": "Vlastnený dokument", + "creation_owned1": "Vlastnenú položku môže jej vlastník kedykoľvek zničiť. Zničením vlastnenej položky sa táto stane nedostupnou pre ostatných používateľov.", + "creation_expire": "Dočasný dokument", + "creation_expireFalse": "Neobmedzený", + "creation_expireHours": "Hodín", + "creation_expireDays": "Dní", + "creation_expireMonths": "Mesiacov", + "creation_password": "Heslo\n", + "creation_noTemplate": "Prázdny dokument", + "creation_newTemplate": "Nová šablóna", + "creation_create": "Vytvoriť", + "creation_owners": "Vlastníci", + "creation_noOwner": "Bez vlastníka", + "creation_expiration": "Dátum zničenia", + "creation_passwordValue": "Heslo", + "creation_newPadModalDescription": "Kliknutím na aplikáciu vytvoríte nový dokument. Môžete tiež stlačiť Tab na výber aplikácie a stlačiť Enter na potvrdenie.", + "password_info": "Dokument, ktorý sa snažíte otvoriť, už neexistuje alebo je chránený novým heslom. Zadajte správne heslo, aby ste získali prístup k obsahu.", + "password_error": "Dokument nebol nájdený
Táto chyba môže mať dve príčiny: buď je heslo neplatné, alebo bol dokument zničený.", + "password_placeholder": "Sem zadajte heslo...", + "password_submit": "Odoslať", + "properties_addPassword": "Pridať heslo", + "properties_changePassword": "Zmeniť heslo", + "properties_confirmNew": "Ste si istý? Pridaním hesla sa zmení URL adresa tohto dokumentu a vymaže sa jeho história. Používatelia bez hesla stratia prístup k tomuto dokumentu", + "properties_confirmChange": "Ste si istý? Zmenou hesla sa vymaže jeho história. Používatelia, ktorí nepoznajú nové heslo, stratia prístup k tomuto dokumentu", + "properties_passwordSame": "Nové heslá sa musia líšiť od súčasného.", + "properties_passwordError": "Pri pokuse o zmenu hesla došlo k chybe. Skúste to prosím znova.", + "properties_passwordWarning": "Heslo bolo úspešne zmenené, ale nepodarilo sa nám aktualizovať váš CryptDrive s novými údajmi. Možno budete musieť starú verziu dokumentu odstrániť ručne.
Kliknite na OK, aby sa stránka znovu načítala a aktualizovali sa vaše prístupové práva.", + "properties_passwordSuccess": "Heslo bolo úspešne zmenené.
Stlačením tlačidla OK aktualizujete svoje prístupové práva.", + "properties_changePasswordButton": "Odoslať", + "share_linkCategory": "Odkaz", + "share_linkAccess": "Prístupové práva", + "share_linkEdit": "Upraviť", + "share_linkView": "Zobraziť", + "share_linkEmbed": "Režim vloženia (skryť panel nástrojov a zoznam používateľov)", + "share_linkPresent": "Prezentovať", + "share_linkOpen": "Otvoriť odkaz", + "share_linkCopy": "Kopírovať odkaz", + "share_contactCategory": "Kontakty", + "share_embedCategory": "Vloženie", + "share_mediatagCopy": "Kopírovať mediatag do schránky", + "sharedFolders_forget": "Tento dokument je uložený iba v zdieľanom priečinku, nemôžete ho presunúť do koša. Ak ho chcete odstrániť, môžete použiť svoj CryptDrive.", + "sharedFolders_duplicate": "Niektoré dokumenty, ktoré ste sa pokúšali presunúť, už boli zdieľané v cieľovom priečinku.", + "sharedFolders_create": "Vytvoriť zdieľaný priečinok", + "sharedFolders_create_name": "Názov priečinka", + "sharedFolders_create_owned": "Vlastnený priečinok", + "sharedFolders_share": "Zdieľajte tento odkaz s ostatnými registrovanými používateľmi, aby mali prístup k zdieľanému priečinku. Akonáhle tento odkaz otvoria, zdieľaný priečinok sa pridá do ich CryptDrive.", + "convertFolderToSF_SFParent": "Tento priečinok nie je možné v aktuálnom umiestnení previesť na zdieľaný priečinok. Ak chcete pokračovať, presuňte ho mimo nadradený zdieľaný priečinok.", + "convertFolderToSF_SFChildren": "Tento priečinok nie je možné previesť na zdieľaný priečinok, pretože už obsahuje zdieľané priečinky. Ak chcete pokračovať, presuňte tieto zdieľané priečinky inde.", + "convertFolderToSF_confirm": "Tento priečinok je potrebné premeniť na zdieľaný priečinok, aby ho mohli ostatní zobraziť. Chcete pokračovať?", + "chrome68": "Zdá sa, že používate prehliadač Chrome alebo Chromium vo verzii 68. Obsahuje chybu, ktorá spôsobuje, že sa stránka po niekoľkých sekundách úplne zbledne alebo nereaguje na kliknutia. Ak chcete tento problém vyriešiť, môžete prejsť na inú kartu a vrátiť sa späť alebo skúsiť posúvať stránku. Táto chyba by mala byť v ďalšej verzii vášho prehliadača opravená.", + "autostore_file": "súbor", + "autostore_sf": "priečinok", + "autostore_pad": "pad", + "autostore_notstored": "Tento {0} sa nenachádza vo vašom CryptDrive. Chcete ho uložiť teraz?", + "autostore_settings": "Automatické ukladanie dokumentov môžete zapnúť na stránke Nastavenia.", + "autostore_store": "Uložiť", + "autostore_hide": "Neuložiť", + "autostore_error": "Neočakávaná chyba: tento dokument sa nepodarilo uložiť, skúste to prosím znova.", + "autostore_saved": "Dokument bol úspešne uložený do vášho CryptDrive!", + "autostore_forceSave": "Uložiť súbor do CryptDrive", + "autostore_notAvailable": "Predtým, ako budete môcť túto funkciu používať, musíte tento dokument uložiť do svojho CryptDrive.", + "crowdfunding_button": "Podporiť CryptPad", + "crowdfunding_button2": "Prispieť", + "crowdfunding_popup_text": "

Potrebujeme vašu pomoc!

Aby sme mohli zabezpečiť aktívny vývoj aplikácie CryptPad, zvážte prosím podporu projektu prostredníctvom stránky OpenCollective.", + "crowdfunding_popup_no": "Teraz nie", + "survey": "CryptPad prieskum", + "markdown_toc": "Obsah", + "fm_expirablePad": "Expiruje: {0}", + "admin_authError": "Túto stránku môžu zobraziť len administrátori", + "admin_cat_general": "Všeobecné", + "admin_cat_stats": "Štatistiky", + "adminPage": "Administrácia", + "admin_activeSessionsTitle": "Aktívne pripojenia", + "admin_activeSessionsHint": "Počet aktívnych pripojení cez WebSocket (a jedinečných pripojených IP adries)", + "admin_activePadsTitle": "Aktívne dokumenty", + "admin_activePadsHint": "Počet jedinečných dokumentov, ktoré sa momentálne prezerajú alebo upravujú", + "admin_registeredTitle": "Disky užívateľov a tímov", + "admin_registeredHint": "Počet aktívnych diskov vo vašej inštancii", + "admin_updateLimitTitle": "Aktualizovať kvóty používateľov", + "admin_updateLimitHint": "Vynútenú aktualizáciu kvót je možné vykonať kedykoľvek, je však potrebná len v prípade chyby", + "admin_updateLimitButton": "Aktualizovať kvóty", + "admin_updateLimitDone": "Aktualizácia bola úspešne dokončená", + "admin_flushCacheTitle": "Vyčistiť HTTP cache", + "admin_flushCacheHint": "Vynútiť, aby si všetci používatelia po zmene prispôsobenia alebo konfigurácie stiahli najnovšie súbory. Tým sa síce vyhnete reštartovaniu servera, ale každý aktívny používateľ bude musieť obnoviť svoje pripojenie, preto túto funkciu používajte s rozvahou.", + "admin_flushCacheButton": "Vyčistiť cache", + "admin_flushCacheDone": "Cache bola úspešne vyčistená", + "footer_donate": "Prispieť", + "contact_admin": "Kontaktujte administrátorov pre: {0}", + "contact_adminHint": "V prípade problémov týkajúcich sa vášho účtu, limitu úložného priestoru alebo dostupnosti služby.\n", + "contact_dev": "Kontaktujte vývojárov", + "contact_devHint": "Ak máte návrhy na nové funkcie, zlepšenia použiteľnosti alebo sa chcete poďakovať.", + "contact_bug": "Nahlásiť chybu", + "contact_chat": "Chat", + "contact_email": "Email", + "timeoutError": "V dôsledku chyby došlo k prerušeniu spojenia so serverom.
Stlačte kláves Esc, aby sa stránka znovu načítala.", + "admin_diskUsageTitle": "Využitie disku", + "admin_diskUsageHint": "Veľkosť úložného priestoru, ktorý zaberajú rôzne zdroje aplikácie CryptPad", + "admin_diskUsageButton": "Vytvoriť report", + "settings_codeSpellcheckTitle": "Kontrola pravopisu", + "settings_codeSpellcheckLabel": "Povoliť kontrolu pravopisu v editore kódu", + "drive_active1Day": "Posledných 24 hodín", + "drive_active7Days": "Posledných 7 dní", + "drive_active28Days": "Posledné 4 týždne", + "drive_activeOld": "Staršie", + "friendRequest_later": "Rozhodnúť sa neskôr", + "friendRequest_accept": "Prijať (Enter)", + "friendRequest_decline": "Odmietnuť", + "friendRequest_declined": "{0} odmietol vašu žiadosť o pridanie do kontaktov", + "friendRequest_accepted": "{0} prijal vašu žiadosť o pridanie do kontaktov", + "friendRequest_received": "{0} by vás chcel pridať do zoznamu kontaktov", + "friendRequest_notification": "{0} vám poslal žiadosť o pridanie do zoznamu kontaktov", + "notifications_empty": "Nie sú k dispozícii žiadne oznámenia", + "profile_addDescription": "Pridať popis", + "profile_editDescription": "Popis profilu", + "profile_addLink": "Odkaz na vašu webovú stránku", + "profile_info": "Ostatní používatelia môžu nájsť váš profil prostredníctvom vášho avatara v zoznamoch používateľov dokumentov.", + "profile_friendRequestSent": "Žiadosť o kontakt čaká na vybavenie...", + "isContact": "{0} je medzi vašimi kontaktmi", + "isNotContact": "{0} nie je medzi vašimi kontaktmi", + "notification_padShared": "{0} s vami zdieľal dokument: {1}", + "notification_fileShared": "{0} s vami zdieľal súbor: {1}", + "notification_folderShared": "{0} s vami zdieľal priečinok: {1}", + "share_filterFriend": "Vyhľadávanie podľa mena", + "share_linkFriends": "Zdieľať s kontaktmi", + "share_withFriends": "Zdieľať", + "notifications_dismiss": "Zatvoriť", + "fm_info_sharedFolderHistory": "Toto je len história vášho zdieľaného priečinka: {0}
Váš CryptDrive zostane počas prehliadania v režime len na čítanie.", + "supportPage": "Podpora", + "admin_cat_support": "Podpora", + "admin_supportInitHelp": "Váš server ešte nemá nastavenú schránku podpory. Ak chcete, aby schránka podpory prijímala správy od vašich používateľov, mali by ste požiadať administrátora servera, aby spustil skript nachádzajúci sa v „./scripts/generate-admin-keys.js“, následne uložil verejný kľúč do súboru „config.js“ a zaslal vám súkromný kľúč.", + "admin_supportInitPrivate": "Vaša inštancia CryptPad je nakonfigurovaná na používanie schránky podpory, ale váš účet nemá správny súkromný kľúč na prístup k nemu. Použite prosím nasledujúci formulár na pridanie alebo aktualizáciu súkromného kľúča vo vašom účte.", + "admin_supportAddKey": "Pridať súkromný kľúč", + "admin_supportAddError": "Neplatný súkromný kľúč", + "admin_supportInitTitle": "Inicializácia schránky podpory", + "admin_supportInitHint": "Môžete nakonfigurovať schránku podpory, aby ste používateľom vašej inštancie CryptPad poskytli spôsob, ako vás bezpečne kontaktovať, ak majú problém so svojím účtom.", + "admin_supportListTitle": "Schránka podpory", + "admin_supportListHint": "Tu je zoznam žiadostí, ktoré používatelia zaslali do schránky podpory. Všetci administrátori môžu vidieť správy a odpovede na ne. Uzavretú žiadosť nie je možné opätovne otvoriť. Uzavreté žiadosti môžete iba odstrániť (skryť), pričom odstránené žiadosti zostávajú viditeľné pre ostatných administrátorov.", + "support_disabledTitle": "Systém podpory nie je aktívny", + "support_disabledHint": "Táto inštancia CryptPad ešte nie je nakonfigurovaná na používanie formulára podpory.", + "support_cat_new": "Nová žiadosť", + "support_formTitle": "Nová žiadosť", + "support_formHint": "Pomocou tohto formulára môžete bezpečne kontaktovať administrátorov v prípade problémov a otázok.
Upozorňujeme, že niektoré problémy/otázky už môžu byť vyriešené v Používateľskej príručke CryptPad. Nevytvárajte prosím novú žiadosť, ak už máte otvorenú žiadosť s rovnakým problémom. Namiesto toho odpovedzte na pôvodnú správu a uveďte akékoľvek ďalšie informácie.", + "support_formButton": "Odoslať", + "support_formTitleError": "Chyba: názov je prázdny", + "support_formContentError": "Chyba: obsah je prázdny", + "support_formMessage": "Napíšte správu…", + "support_cat_tickets": "Existujúce žiadosti", + "support_listTitle": "Žiadosti na podporu", + "support_listHint": "Tu je zoznam žiadostí zaslaných administrátorom a ich odpovede. Uzavreté hlásenie nie je možné opäť otvoriť, môžete však vytvoriť nové. Uzavreté hlásenia môžete skryť.", + "support_answer": "Odpoveď", + "support_close": "Uzatvoriť žiadosť", + "support_remove": "Odstrániť žiadosť", + "support_showData": "Zobraziť/skryť používateľské údaje", + "support_from": "Od: {0}", + "support_closed": "Táto žiadosť bola uzavretá", + "fc_noAction": "Nie je k dispozícii žiadna akcia", + "notificationsPage": "Oznámenia", + "openNotificationsApp": "Otvoriť panel oznámení", + "notifications_cat_all": "Všetko", + "notifications_cat_friends": "Žiadosti o kontakt", + "notifications_cat_pads": "Zdieľané so mnou", + "notifications_cat_archived": "História", + "notifications_dismissAll": "Zahodiť všetko", + "support_notification": "Administrátor odpovedal na vašu žiadosť", + "requestEdit_button": "Požiadať o práva na úpravy", + "requestEdit_confirm": "{1} požiadal o možnosť upravovať dokument {0}. Chcete mu udeliť prístup?", + "requestEdit_viewPad": "Otvoriť dokument na novej karte", + "later": "Rozhodnúť sa neskôr", + "requestEdit_request": "{1} chce upraviť dokument {0}", + "requestEdit_accepted": "{1} vám udelil práva na úpravy dokumentu {0}", + "requestEdit_sent": "Žiadosť odoslaná", + "properties_unknownUser": "{0} neznámy používateľ(-ia)", + "pricing": "Cenník", + "homePage": "Domovská stránka", + "features_noData": "Nie sú potrebné žiadne osobné údaje", + "features_pricing": "{0} až {2}€ mesačne", + "features_emailRequired": "E-mailová adresa je povinná", + "owner_removeText": "Vlastníci", + "owner_removePendingText": "Prebieha", + "owner_unknownUser": "neznámy", + "owner_removeConfirm": "Naozaj chcete odobrať vlastníctvo vybraným používateľom? O tejto akcii budú informovaní.", + "owner_removeMeConfirm": "Chystáte sa vzdať svojich vlastníckych práv. Túto akciu nebude možné vrátiť späť. Ste si istí?", + "owner_addConfirm": "Spoluvlastníci budú môcť zmeniť obsah a odstrániť vás ako vlastníka. Ste si istý?", + "owner_add": "{0} chce, aby ste sa stali vlastníkom dokumentu {1}. Súhlasíte?", + "owner_request": "{0} chce, aby ste sa stali vlastníkom {1}", + "owner_request_accepted": "{0} prijal vašu ponuku stať sa vlastníkom {1}", + "owner_request_declined": "{0} odmietol vašu ponuku stať sa vlastníkom {1}", + "owner_removed": "{0} odobral vaše vlastníctvo {1}", + "owner_removedPending": "{0} zrušil vašu ponuku vlastníctva pre {1}", + "share_linkTeam": "Pridať do tímového disku", + "team_pickFriends": "Vyberte kontakty, ktoré chcete pozvať do tohto tímu", + "team_inviteModalButton": "Pozvať", + "team_pcsSelectLabel": "Uložiť do", + "team_pcsSelectHelp": "Vytvorením vlastneného dokumentu na disku vášho tímu sa vlastníctvo pridelí tímu.", + "team_invitedToTeam": "{0} vás pozval, aby ste sa pripojili k jeho tímu: {1}", + "team_kickedFromTeam": "{0} vás vylúčil z tímu: {1}", + "team_acceptInvitation": "{0} prijal vašu ponuku pripojiť sa k tímu: {1}", + "team_declineInvitation": "{0} odmietol vašu ponuku pripojiť sa k tímu: {1}", + "team_cat_general": "O tímoch", + "team_cat_list": "Tímy", + "team_cat_create": "Nový", + "team_cat_back": "Späť na tímy", + "team_cat_members": "Členovia", + "team_cat_chat": "Chat", + "team_cat_drive": "Drive", + "team_cat_admin": "Administrácia", + "team_infoLabel": "O tímoch", + "team_createLabel": "Vytvoriť nový tím", + "team_createName": "Názov tímu", + "team_rosterPromote": "Zvýšiť oprávnenia", + "team_rosterDemote": "Znížiť oprávnenia", + "team_rosterKick": "Vylúčiť z tímu", + "team_inviteButton": "Pozvať členov", + "team_leaveButton": "Opustiť tento tím", + "team_leaveConfirm": "Ak tento tím opustíte, stratíte prístup k jeho CryptDrive, histórii chatu a ďalšiemu obsahu. Ste si istí?", + "team_owner": "Vlastníci", + "team_admins": "Správcovia", + "team_members": "Členovia", + "team_nameTitle": "Názov tímu", + "team_nameHint": "Nastaviť názov tímu", + "team_avatarTitle": "Avatar tímu", + "team_avatarHint": "Maximálna veľkosť 500 kB (png, jpg, jpeg, gif)", + "team_infoContent": "Každý tím má vlastný CryptDrive, kvótu úložného priestoru, chat a zoznam členov. Vlastníci tímov môžu celý tím odstrániť, správcovia môžu pozývať alebo vylučovať členov a členovia môžu z tímu vystúpiť.", + "team_maxTeams": "Každý používateľský účet môže byť členom len {0} tímov.", + "team_listTitle": "Vaše tímy", + "team_listSlot": "Voľný tímový slot", + "owner_team_add": "{0} chce, aby ste sa stali vlastníkom tímu {1}. Súhlasíte?", + "team_rosterPromoteOwner": "Ponúknuť vlastníctvo", + "team_ownerConfirm": "Spoluvlastníci môžu tím upraviť alebo odstrániť a odstrániť vás z pozície vlastníka. Ste si istí?", + "team_kickConfirm": "{0} sa dozvie, že ste ho vyradili z tímu. Ste si istí?", + "sent": "Správa odoslaná", + "team_pending": "Pozvaný", + "team_deleteTitle": "Vymazanie tímu", + "team_deleteHint": "Odstrániť tím a všetky dokumenty, ktoré vlastní výlučne tento tím.", + "team_deleteButton": "Odstrániť", + "team_deleteConfirm": "Chystáte sa odstrániť všetky údaje celého tímu. Môže to ovplyvniť prístup ostatných členov tímu k ich údajom. Túto akciu nie je možné vrátiť späť. Naozaj chcete pokračovať?", + "team_pendingOwner": "(čakajúci)", + "team_pendingOwnerTitle": "Tento správca zatiaľ ponuku na vlastníctvo neprijal.", + "team_demoteMeConfirm": "Chystáte sa vzdať svojich práv. Túto akciu nebude možné vrátiť späť. Ste si istí?", + "team_title": "Tím: {0}", + "team_quota": "Limit úložiska vášho tímu", + "settings_codeBrackets": "Automatické zatváranie zátvoriek", + "team_viewers": "Čitatelia", + "drive_sfPassword": "Váš zdieľaný priečinok {0} už nie je k dispozícii. Bol buď odstránený jeho vlastníkom, alebo je teraz chránený novým heslom. Tento priečinok môžete odstrániť zo svojho CryptDrive alebo obnoviť prístup pomocou nového hesla.", + "drive_sfPasswordError": "Nesprávne heslo", + "password_error_seed": "Dokument nenájdený!
Táto chyba môže mať dve príčiny: buď bolo pridané/zmenené heslo, alebo bol dokument zo servera odstránený.", + "properties_confirmChangeFile": "Ste si istý? Používatelia, ktorí nemajú nové heslo, stratia prístup k tomuto súboru.", + "properties_confirmNewFile": "Ste si istý? Pridaním hesla sa zmení adresa URL tohto súboru. Používatelia bez hesla stratia prístup k tomuto súboru.", + "properties_passwordWarningFile": "Heslo bolo úspešne zmenené, ale nepodarilo sa nám aktualizovať váš CryptDrive s novými údajmi. Možno budete musieť starú verziu súboru odstrániť ručne.", + "properties_passwordSuccessFile": "Heslo bolo úspešne zmenené.", + "driveOfflineError": "Pripojenie k aplikácii CryptPad sa prerušilo. Zmeny v tomto dokumente nebudú uložené vo vašom CryptDrive. Zatvorte všetky karty aplikácie CryptPad a skúste to znovu v novom okne. ", + "teams_table": "Role", + "teams_table_generic": "Role a oprávnenia", + "teams_table_generic_view": "Zobraziť: prístup k priečinkom a dokumentom (len na čítanie).", + "teams_table_generic_edit": "Úprava: vytváranie, úprava a mazanie priečinkov a dokumentov.", + "teams_table_generic_admin": "Správa členov: pozývať a odvolávať členov, meniť role členov až po správcu.", + "teams_table_generic_own": "Správa tímu: zmena názvu tímu a avatara, pridanie alebo odstránenie vlastníkov, zmena predplatného tímu, odstránenie tímu.", + "teams_table_specific": "Výnimky", + "teams_table_specificHint": "Ide o staré zdieľané priečinky, v ktorých majú používatelia naďalej oprávnenie upravovať existujúce dokumenty. Dokumenty vytvorené alebo skopírované do týchto priečinkov budú mať štandardné oprávnenia.", + "teams_table_admins": "Spravovať členov", + "teams_table_owners": "Spravovať tím", + "teams_table_role": "Rola", + "pad_wordCount": "Slová: {0}", + "share_linkWarning": "Tento odkaz obsahuje kľúče k vášmu dokumentu. Príjemcovia získajú neodvolateľný prístup k vášmu obsahu.", + "share_linkPasswordAlert": "Táto položka je chránená heslom. Pri odoslaní odkazu bude príjemca musieť zadať heslo.", + "share_contactPasswordAlert": "Táto položka je chránená heslom. Keďže ju zdieľate s kontaktom v aplikácii CryptPad, príjemca nebude musieť zadávať heslo.", + "share_embedPasswordAlert": "Táto položka je chránená heslom. Ak tento dokument vložíte na svoju stránku, od čitateľov sa bude vyžadovať zadanie hesla.", + "passwordFaqLink": "Prečítajte si viac o heslách", + "share_noContactsLoggedIn": "Na CryptPad ešte nie ste s nikým prepojení. Zdieľajte odkaz na svoj profil, aby vám ľudia mohli posielať žiadosti o kontakt.", + "share_copyProfileLink": "Kopírovať odkaz na profil", + "share_noContactsNotLoggedIn": "Prihláste sa alebo zaregistrujte, aby ste mohli zobraziť svoje existujúce kontakty a pridať nové.", + "contacts_mute": "Stlmiť", + "contacts_unmute": "Zrušiť stlmenie", + "contacts_manageMuted": "Spravovať stlmené", + "contacts_mutedUsers": "Stlmené účty", + "contacts_muteInfo": "Od používateľov, ktorých ste stlmili, nebudete dostávať žiadne upozornenia ani správy.
Nebudú vedieť, že ste ich stlmili. ", + "team_inviteLinkTitle": "Vytvorte personalizovanú pozvánku pre tento tím", + "team_inviteLinkTempName": "Dočasné názov (viditeľné v zozname čakajúcich pozvánok)", + "team_inviteLinkSetPassword": "Chráňte odkaz heslom (odporúča sa)", + "team_inviteLinkNote": "Pridať osobnú správu", + "team_inviteLinkNoteMsg": "Táto správa sa zobrazí predtým, ako sa príjemca rozhodne, či sa k tomuto tímu pripojí.", + "team_inviteLinkLoading": "Generovanie vášho odkazu", + "team_inviteLinkWarning": "Ľudia, ktorí kliknú na tento odkaz, sa budú môcť pripojiť k tomuto tímu a prezerať si jeho obsah. Zdieľajte ho s rozvahou.", + "team_inviteLinkErrorName": "Uveďte meno osoby, ktorú pozývate. Táto osoba si ho neskôr môže zmeniť. ", + "team_inviteLinkCreate": "Vytvoriť odkaz", + "team_inviteLinkCopy": "Kopírovať odkaz", + "team_inviteFrom": "Od:", + "team_inviteFromMsg": "{0} vás pozval, aby ste sa pridali k tímu {1}", + "team_invitePleaseLogin": "Prihláste sa alebo zaregistrujte, aby ste mohli prijať túto pozvánku.", + "team_inviteEnterPassword": "Ak chcete pokračovať, zadajte heslo k pozvánke.", + "team_invitePasswordLoading": "Dešifrovanie pozvánky", + "team_inviteJoin": "Pridať sa k tímu", + "team_inviteTitle": "Tímová pozvánka", + "team_inviteGetData": "Získavanie tímových údajov", + "team_cat_link": "Odkaz na pozvánku", + "team_links": "Odkazy na pozvánky", + "team_inviteInvalidLinkError": "Odkaz na pozvánku nie je platný.", + "team_inviteLinkError": "Pri vytváraní odkazu došlo k chybe.", + "burnAfterReading_linkBurnAfterReading": "Zobraziť raz a potom zničiť", + "burnAfterReading_warningLink": "Tento dokument ste nastavili tak, aby sa sám zničil. Akonáhle príjemca klikne na tento odkaz, bude si môcť dokument prezrieť len raz, potom bude natrvalo vymazaný.", + "burnAfterReading_generateLink": "Kliknite na tlačidlo nižšie a vygenerujte odkaz.", + "burnAfterReading_warningAccess": "Tento dokument sa sám zničí. Po kliknutí na tlačidlo nižšie sa vám obsah zobrazí len raz, potom bude natrvalo vymazaný. Po zatvorení tohto okna už k nemu nebudete mať prístup. Ak nie ste pripravení pokračovať, môžete toto okno zatvoriť a vrátiť sa neskôr.", + "burnAfterReading_proceed": "zobraziť a vymazať", + "burnAfterReading_warningDeleted": "Tento dokument bol natrvalo odstránený. Akonáhle toto okno zatvoríte, už k nemu nebudete mať prístup.", + "oo_invalidFormat": "Tento súbor nie je možné importovať", + "oo_importInProgress": "Prebieha import", + "oo_exportInProgress": "Prebieha export", + "oo_sheetMigration_loading": "Aktualizujeme váš dokument na najnovšiu verziu. Prosím, počkajte približne 1 minútu.", + "oo_sheetMigration_complete": "Aktualizovaná verzia k dispozícii, stlačte tlačidlo OK na opätovné načítanie.", + "oo_sheetMigration_anonymousEditor": "Tento dokument vyžaduje aktualizáciu. Úpravy sú pre hostí zakázané, kým ho neotvorí registrovaný používateľ.", + "imprint": "Právne upozornenie", + "settings_cat_security": "Bezpečnosť & Súkromie", + "settings_safeLinksTitle": "Bezpečné odkazy", + "settings_safeLinksCheckbox": "Povoliť bezpečné odkazy", + "safeLinks_error": "Tento odkaz bol skopírovaný z adresného riadka prehliadača a neumožňuje prístup k dokumentu. Použite prosím ponuku Zdieľať, aby ste dokument mohli priamo zdieľať so svojimi kontaktmi alebo skopírovať odkaz. Prečítajte si viac o funkcii Bezpečné odkazy.", + "dontShowAgain": "Znovu nezobrazovať", + "profile_login": "Musíte sa prihlásiť, aby ste mohli pridať tohto používateľa do svojich kontaktov", + "settings_safeLinksHint": "CryptPad vkladá kľúče na dešifrovanie vašich dokumentov priamo do odkazov. Ktokoľvek, kto má prístup k vašej histórii prehliadania, môže potenciálne prečítať vaše údaje. Patrí sem aj rušivé rozšírenia prehliadača a prehliadače, ktoré synchronizujú vašu históriu medzi zariadeniami. Zapnutie funkcie „bezpečné odkazy“ zabráni tomu, aby sa kľúče dostali do vašej histórie prehliadania alebo sa zobrazovali v adresnom riadku, pokiaľ je to možné. Dôrazne odporúčame, aby ste túto funkciu zapli a na generovanie zdieľateľných odkazov používali ponuku {0} Zdieľať.", + "areYouSure": "Ste si istí?", + "historyTrim_historySize": "História: {0}", + "historyTrim_contentsSize": "Obsah: {0}", + "trimHistory_button": "Vymazať históriu", + "trimHistory_getSizeError": "Chyba pri výpočte veľkosti histórie vášho disku", + "trimHistory_error": "Chyba pri mazaní histórie", + "trimHistory_success": "História bola vymazaná", + "trimHistory_needMigration": "Prosím, aktualizujte svoj CryptDrive, aby ste túto funkciu mohli používať.", + "trimHistory_currentSize": "Aktuálna veľkosť histórie: {0}", + "trimHistory_noHistory": "Žiadnu históriu nie je možné vymazať", + "settings_trimHistoryTitle": "Vymazať históriu", + "settings_trimHistoryHint": "Ušetrite miesto v úložisku vymazaním histórie vášho disku a oznámení. Toto nemá vplyv na históriu vašich dokumentov. Históriu dokumentov môžete vymazať v dialógovom okne s ich vlastnosťami.", + "makeACopy": "Vytvoriť kópiu", + "copy_title": "{0} (kópia)", + "access_main": "Prístup", + "access_allow": "Zoznam", + "accessButton": "Prístup", + "restrictedError": "Nemáte oprávnenie na prístup k tomuto dokumentu", + "contacts": "Kontakty", + "access_noContact": "Žiadny ďalší kontakt na pridanie", + "allow_checkbox": "Zapnúť zoznam prístupov", + "allow_enabled": "zapnuté", + "allow_disabled": "vypnuté", + "allow_label": "Zoznam prístupov: {0}", + "access_muteRequests": "Ignorovať žiadosti o prístup k tomuto dokumentu", + "owner_text": "Vlastník(ci) dokumentu sú jedinými používateľmi, ktorí sú oprávnení: pridávať/odstraňovať vlastníkov, obmedzovať prístup k dokumentu pomocou zoznamu prístupových práv alebo dokument vymazať.", + "allow_text": "Použitie zoznamu prístupových oprávnení znamená, že k tomuto dokumentu budú mať prístup len vybraní používatelia a vlastníci.", + "teams": "Tímy", + "kanban_title": "Názov", + "kanban_body": "Obsah", + "kanban_color": "Farba", + "kanban_delete": "Odstrániť", + "kanban_tags": "Filtrovať podľa štítku", + "kanban_noTags": "Žiadne štítky", + "kanban_conflicts": "V súčasnosti sa upravuje:", + "kanban_clearFilter": "Vyčistiť filter", + "kanban_editCard": "Upraviť túto kartu", + "kanban_editBoard": "Upraviť túto nástenku", + "oo_isLocked": "synchronizácia zmien, čakajte prosím", + "profile_copyKey": "Skopírovať verejný kľúč", + "admin_openFilesTitle": "Otvorené súbory", + "admin_openFilesHint": "Počet súborových deskriptorov, ktoré sú momentálne otvorené na serveri.", + "canvas_brush": "Štetec", + "canvas_select": "Vybrať", + "cba_writtenBy": "Napísal: {0}", + "cba_properties": "Farby autora (experimentálne)", + "cba_hint": "Toto nastavenie sa uloží a použije pri vytváraní ďalšieho dokumentu.", + "cba_enable": "Zapnúť", + "cba_disable": "Vymazať a vypnúť", + "cba_show": "Zobraziť farby autora", + "cba_hide": "Skryť farby autora", + "oo_login": "Prihláste sa alebo zaregistrujte, aby ste zvýšili výkonnosť tabuliek.", + "cba_title": "Farby autora", + "comments_notification": "Odpovede na váš komentár „{0}“ v {1}", + "unknownPad": "Neznámy dokument", + "mentions_notification": "{0} vás spomenul v {1}", + "comments_deleted": "Komentár bol odstránený jeho autorom", + "comments_edited": "Upravené", + "comments_submit": "Odoslať", + "comments_reply": "Odpoveď", + "comments_resolve": "Vyriešiť", + "comments_comment": "Komentár", + "settings_padNotifTitle": "Upozornenie na komentáre", + "settings_padNotifHint": "Ignorovať upozornenia, keď niekto odpovie na jeden z vašich komentárov", + "settings_padNotifCheckbox": "Vypnúť upozornenia na komentáre", + "comments_error": "Tu nie je možné pridať komentár", + "fm_sort": "Zoradiť", + "todo_move": "Váš zoznam úloh sa teraz nachádza v kanbane {0} na vašom Disku.", + "toolbar_theme": "Téma", + "toolbar_insert": "Vložiť", + "toolbar_savetodrive": "Uložiť ako obrázok", + "toolbar_tools": "Nástroje", + "drive_treeButton": "Súbory", + "code_editorTheme": "Téma editora", + "toolbar_file": "Súbor", + "slide_backCol": "Farba pozadia", + "slide_textCol": "Farba textu", + "support_languagesPreamble": "Tím podpory hovorí nasledujúcimi jazykmi:", + "settings_safeLinkDefault": "Funkcia Bezpečné odkazy je teraz štandardne zapnutá. Na kopírovanie odkazov prosím používajte ponuku Zdieľať namiesto adresného riadka prehliadača.", + "info_imprintFlavour": "Právne informácie o správcoch tejto inštancie", + "user_about": "O CryptPad", + "info_privacyFlavour": "Zásady ochrany osobných údajov pre túto inštanciu", + "support_cat_account": "Používateľský účet", + "support_cat_data": "Strata obsahu", + "support_cat_bug": "Nahlásenie chyby", + "support_cat_other": "Iné", + "support_cat_all": "Všetko", + "support_attachments": "Prílohy", + "support_addAttachment": "Pridať prílohu", + "notification_padSharedTeam": "{0} zdieľal dokument s tímom {2}: {1}", + "notification_fileSharedTeam": "{0} zdieľal súbor s tímom {2}: {1}", + "notification_folderSharedTeam": "{0} zdieľal priečinok s tímom {2}: {1}", + "oo_refresh": "Obnoviť", + "support_category": "Vyberte kategóriu", + "support_formCategoryError": "Chyba: kategória je prázdna", + "fm_emptyTrashOwned": "V koši sa nachádzajú dokumenty, ktoré vlastníte. Môžete ich odstrániť iba zo svojho disku alebo ich zničit pre všetkých používateľov.", + "fm_restricted": "Nemáte prístup", + "fm_noResult": "Nenašli sa žiadne výsledky", + "pad_tocHide": "Ohraničenie", + "settings_kanbanTagsTitle": "Filter štítkov", + "settings_kanbanTagsHint": "Vyberte, ako má filter štítkov fungovať pri výbere viacerých značiek: zobraziť len karty obsahujúce všetky vybrané značky (A) alebo zobraziť karty obsahujúce ktorúkoľvek z vybraných značiek (ALEBO)", + "settings_kanbanTagsAnd": "A", + "settings_kanbanTagsOr": "ALEBO", + "settings_cat_kanban": "Kanban", + "share_bar": "Vytvoriť odkaz", + "history_restore": "Obnoviť", + "history_close": "Zatvoriť", + "history_cantRestore": "Obnovenie sa nepodarilo. Ste odpojení.", + "history_shareTitle": "Zdieľajte odkaz na túto verziu", + "share_versionHash": "Chystáte sa zdieľať vybranú verziu dokumentu v režime len na čítanie. Tým zároveň bude udelený prístup na prezeranie pre všetky verzie dokumentu.", + "history_fastPrev": "Predchádzajúca relácia úprav", + "history_userPrev": "Predchádzajúci autor", + "history_fastNext": "Ďalšia relácia úprav", + "history_userNext": "Ďalší autor", + "history_restoreDriveTitle": "Obnoviť vybranú verziu CryptDrive", + "history_restoreDrivePrompt": "Naozaj chcete nahradiť aktuálnu verziu CryptDrive zobrazenou verziou?", + "history_restoreDriveDone": "CryptDrive bol obnovený", + "infobar_versionHash": "V súčasnosti si prezeráte staršiu verziu tohto dokumentu ({0}).", + "snaphot_title": "Snapshot", + "snapshots_button": "Snapshoty", + "snapshots_new": "Nový snapshot", + "snapshots_placeholder": "Názov snapshotu", + "snapshots_open": "Otvoriť", + "snapshots_restore": "Obnoviť", + "snapshots_close": "Zatvoriť", + "oo_deletedVersion": "Táto verzia už v histórii neexistuje.", + "snapshots_delete": "Odstrániť", + "oo_version_latest": "Najnovšia", + "oo_version": "Verzia: ", + "snapshots_ooPickVersion": "Pred vytvorením snapshotu je potrebné vybrať verziu", + "snapshot_error_exists": "Snapshot tejto verzie už existuje", + "snapshots_notFound": "Tento snapshot už neexistuje, pretože história dokumentu bola vymazaná.", + "snapshots_cantMake": "Snapshot nie je možné vytvoriť. Ste odpojení.", + "admin_registrationHint": "Návštevníci tejto inštancie si nemôžu vytvárať účty. Pozvánky môžu vytvárať správcovia.", + "admin_registrationTitle": "Zatvoriť registrácie", + "admin_defaultlimitHint": "Maximálny limit úložného priestoru pre CryptDrives (užívatelia a tímy), ak nie je nastavené žiadne vlastné pravidlo", + "admin_defaultlimitTitle": "Limit úložiska (MB)", + "admin_setlimitButton": "Nastaviť limit", + "admin_limit": "Aktuálny limit: {0}", + "admin_getlimitsHint": "Zoznam všetkých vlastných limitov úložného priestoru, ktoré sa vzťahujú na vašu inštanciu.", + "admin_getlimitsTitle": "Vlastné limity", + "admin_limitPlan": "Plán: {0}", + "admin_limitNote": "Poznámka: {0}", + "admin_setlimitHint": "Nastavte vlastné limity pre používateľov pomocou ich verejného kľúča. Existujúci limit môžete aktualizovať alebo odstrániť.", + "admin_setlimitTitle": "Nastaviť vlastný limit", + "admin_limitMB": "Limit (v MB)", + "admin_limitSetNote": "Poznámka", + "admin_invalKey": "Neplatný verejný kľúč", + "admin_invalLimit": "Neplatná hodnota limitu", + "admin_cat_quota": "Úložisko používateľa", + "team_exportTitle": "Stiahnuť tímový disk", + "team_exportHint": "Stiahnite si všetky dokumenty z úložiska tohto tímu. Dokumenty sa stiahnu vo formátoch, ktoré dokážu prečítať iné aplikácie, ak je takýto formát k dispozícii. Ak takýto formát nie je k dispozícii, dokumenty sa stiahnu vo formáte, ktorý dokáže prečítať aplikácia CryptPad.", + "team_exportButton": "Stiahnuť", + "admin_limitUser": "Verejný kľúč používateľa", + "fm_deletedFolder": "Zmazaný priečinok", + "access_destroyPad": "Trvalo zničte tento dokument alebo priečinok", + "fm_shareFolderPassword": "Chráňte tento priečinok heslom (voliteľné)", + "loading_state_0": "Príprava rozhrania", + "loading_state_1": "Načítanie disku", + "loading_state_2": "Aktualizácia obsahu", + "loading_state_3": "Načítanie zdieľaných priečinkov", + "loading_state_4": "Načítanie tímov", + "loading_state_5": "Príprava dokumentu", + "tag_add": "Pridať", + "tag_edit": "Upraviť", + "error_unhelpfulScriptError": "Chyba skriptu: Podrobnosti nájdete v konzole prehliadača", + "documentID": "Identifikátor dokumentu", + "unableToDisplay": "Dokument sa nedá zobraziť. Stlačením klávesy Esc znovu načítajte stránku. Ak problém pretrváva, kontaktujte podporu.", + "errorPopupBlocked": "Aby aplikácia CryptPad mohla fungovať, musí mať povolené otváranie nových kariet. Prosím, povoľte v adresnom riadku prehliadača zobrazovanie vyskakujúcich okien. Tieto okná nebudú nikdy použité na zobrazovanie reklám.", + "admin_archiveHint": "Zablokujte prístup k dokumentu bez toho, aby ste ho natrvalo vymazali. Dokument bude presunutý do adresára „archive“ a po niekoľkých dňoch bude vymazaný (tento čas je možné nastaviť v konfiguračnom súbore servera).", + "admin_archiveButton": "Archivovať", + "admin_unarchiveHint": "Obnoviť dokument, ktorý bol predtým archivovaný", + "admin_unarchiveButton": "Obnoviť", + "admin_archiveInput": "URL dokumentu", + "admin_archiveInput2": "Heslo dokumentu", + "restoredFromServer": "Dokument obnovený", + "archivedFromServer": "Dokument archivovaný", + "allowNotifications": "Povoliť upozornenia", + "fileTableHeader": "Stiahnuté a nahraté", + "download_zip": "Vytváram súbor ZIP…", + "download_zip_file": "Súbor {0}/{1}", + "Offline": "Offline", + "mediatag_saveButton": "Uložiť", + "pad_mediatagShare": "Zdieľať súbor", + "pad_mediatagOpen": "Otvoriť súbor", + "mediatag_notReady": "Prosím, dokončite sťahovanie", + "settings_mediatagSizeTitle": "Automatický limit sťahovania", + "settings_mediatagSizeHint": "Maximálna veľkosť v megabajtoch (MB) pre automatické načítanie mediálnych prvkov (obrázkov, videí, súborov PDF) vložených do dokumentov. Prvky, ktoré presahujú stanovenú veľkosť, je možné načítať ručne. Ak chcete mediálne prvky načítať vždy automaticky, použite hodnotu „-1“.", + "mediatag_loadButton": "Načítať prílohu", + "history_trimPrompt": "Tento dokument obsahuje {0} historických verzií, ktoré môžu spomaliť načítanie. Ak ich nepotrebujete, zvážte ich vymazanie.", + "contacts_confirmCancel": "Naozaj chcete zrušiť žiadosť o kontakt s {0}?", + "admin_support_premium": "Prémiové žiadosti:", + "admin_support_normal": "Nezodpovedané žiadosti:", + "admin_support_answered": "Zodpovedané žiadosti:", + "admin_support_closed": "Uzavreté žiadosti:", + "admin_support_open": "Zobraziť", + "admin_support_collapse": "Zatvoriť", + "admin_support_first": "Vytvorené: ", + "admin_support_last": "Nahrané: ", + "access_offline": "Momentálne ste offline. Správa prístupu nie je k dispozícii.", + "share_noContactsOffline": "Momentálne ste offline. Kontakty nie sú k dispozícii.", + "offlineError": "Najnovšie údaje sa nedajú synchronizovať, túto stránku momentálne nie je možné zobraziť. Načítavanie bude pokračovať po obnovení pripojenia k službe.", + "register_notes_title": "Dôležité poznámky", + "register_warning_note": "Vzhľadom na šifrovanú povahu služby CryptPad nebudú správcovia služby schopní obnoviť vaše údaje v prípade, že zabudnete svoje používateľské meno a/alebo heslo. Uložte si ich preto na bezpečnom mieste.", + "creation_expiresIn": "Zničiť za", + "creation_helperText": "Otvoriť v dokumentácii", + "docs_link": "Dokumentácia", + "settings_cacheTitle": "Cache", + "settings_cacheHint": "CryptPad ukladá časti vašich dokumentov do pamäte prehliadača, aby sa znížila záťaž siete a skrátili časy načítania. Ak vaše zariadenie nemá veľa voľného úložného priestoru, môžete vyrovnávaciu pamäť vypnúť. Z bezpečnostných dôvodov sa vyrovnávacia pamäť vždy vyprázdni pri odhlásení, ale ak chcete uvoľniť úložný priestor vo vašom zariadení, môžete ju vyprázdniť aj ručne.", + "settings_cacheCheckbox": "Zapnúť cache na tomto zariadení", + "settings_cacheButton": "Vymazať existujúcu cache", + "undo": "Vrátiť", + "redo": "Znovu", + "admin_cat_performance": "Výkon", + "admin_performanceProfilingHint": "Prehľad celkového času stráveného vykonávaním rôznych príkazov na strane servera", + "admin_performanceProfilingTitle": "Výkon", + "admin_performanceKeyHeading": "Príkaz", + "admin_performanceTimeHeading": "Čas (sekundy)", + "admin_performancePercentHeading": "Percento", + "settings_cat_style": "Vzhľad", + "settings_colortheme_dark": "Tmavý", + "settings_colortheme_light": "Svetlý", + "settings_colortheme_default": "Predvolené systémom ({0})", + "settings_colorthemeHint": "Zmeňte celkové farebné nastavenie aplikácie CryptPad na tomto zariadení.", + "settings_colorthemeTitle": "Farebná téma", + "pad_settings_title": "Nastavenia dokumentu", + "pad_settings_info": "Predvolené nastavenia pre tento dokument. Použijú sa, keď nový používateľ navštívi tento dokument.", + "pad_settings_width_small": "Režim stránky", + "pad_settings_width_large": "Na celú šírku", + "pad_settings_outline": "Zvoľte, či má byť obsah štandardne zobrazený alebo skrytý.", + "pad_settings_comments": "Zvoľte, či majú byť komentáre štandardne viditeľné alebo skryté.", + "pad_settings_hide": "Skryť", + "pad_settings_show": "Zobraziť", + "settings_colortheme_custom": "Vlastné", + "addOptionalPassword": "Zadajte heslo (voliteľné)", + "importError": "Import sa nepodaril (nesprávny formát)", + "fm_cantUploadHere": "Tu nie je možné nahrať súbor", + "oo_lostEdits": "Bohužiaľ, vaše nedávne neuložené úpravy sa po synchronizácii nového obsahu nepodarilo obnoviť.", + "toolbar_degraded": "V tomto dokumente je momentálne prítomných viac ako {0} používateľov. Zoznam používateľov a chat sú deaktivované z dôvodu zvýšenia výkonu.", + "admin_cat_broadcast": "Systémové správy", + "admin_maintenanceTitle": "Údržba", + "admin_maintenanceHint": "Naplánujte údržbu tejto inštancie a informujte o tom všetkých používateľov. V danom čase môže prebiehať len jedna údržba.", + "admin_maintenanceButton": "Naplánovať údržbu", + "admin_maintenanceCancel": "Zrušiť údržbu", + "broadcast_start": "Začiatok", + "broadcast_end": "Koniec", + "broadcast_maintenance": "V čase od {0} do {1} je naplánovaná údržba. V tomto čase môže byť služba CryptPad nedostupná.", + "admin_surveyTitle": "Prieskum", + "admin_surveyHint": "Pridať, aktualizovať alebo odstrániť odkaz na externý prieskum. Používatelia dostanú oznámenie a prieskum zostane dostupný v používateľskom menu.", + "broadcast_newSurvey": "Je k dispozícii nový dotazník. Kliknutím ho otvoríte.", + "admin_surveyButton": "Uložiť dotazník", + "admin_surveyCancel": "Odstrániť", + "admin_surveyActive": "Otvoriť dotazník", + "broadcast_surveyURL": "Odkaz na dotazník", + "admin_broadcastTitle": "Hromadná správa", + "admin_broadcastHint": "Pošlite správu všetkým používateľom v tejto inštancii. Všetci existujúci aj noví používatelia ju dostanú vo forme upozornenia. Pred odoslaním si správy môžete prezrieť pomocou funkcie „Náhľad oznámenia“. Náhľady oznámení sú označené červenou ikonou a vidíte ich len vy.", + "admin_broadcastButton": "Odoslať", + "admin_broadcastActive": "Aktívna správa", + "admin_broadcastCancel": "Odstrániť správu", + "broadcast_translations": "Preklady", + "broadcast_defaultLanguage": "Použiť tento jazyk, ak nie je k dispozícii iný", + "broadcast_preview": "Náhľad oznámenia", + "broadcast_newCustom": "Správa od adminitrátorov", + "settings_deleteWarning": "Upozornenie: Momentálne máte predplatený prémiový balík (platený alebo poskytnutý iným používateľom). Pred vymazaním účtu si prosím zrušte predplatné, pretože po vymazaní účtu to už nebude možné bez kontaktovania podpory.", + "settings_deleteContinue": "Zmazať môj účet", + "settings_deleteSubscription": "Spravovať predplatné", + "footer_roadmap": "Plán vývoja", + "oo_cantMigrate": "Tento hárok presahuje maximálnu veľkosť súboru na nahratie a je príliš veľký na to, aby mohol byť migrovaný.", + "pad_goToAnchor": "Prejsť na kotvu", + "calendar_import_temp": "Importovať tento kalendár", + "calendar_weekNumber": "Týždeň {0}", + "calendar_before": "pred", + "calendar": "Kalendár", + "calendar_default": "Môj kalendár", + "calendar_new": "Nový kalendár", + "calendar_day": "Deň", + "calendar_week": "Týždeň", + "calendar_month": "Mesiac", + "calendar_today": "Dnes", + "calendar_deleteConfirm": "Si si istý, že chcete odstrániť tento kalendár zo svojho účtu?", + "calendar_deleteTeamConfirm": "Si si istý, že chcete odstrániť tento kalendár z tímu?", + "calendar_deleteOwned": "Bude naďalej viditeľný pre ostatných používateľov, s ktorými bol zdieľaný.", + "calendar_errorNoCalendar": "Kalendár nie je k dispozícii", + "calendar_import": "Pridať do mojich kalendárov", + "calendar_newEvent": "Nová udalosť", + "calendar_dateRange": "{0} - {1}", + "calendar_dateTimeRange": "{0} {1} - {2}", + "calendar_update": "Aktualizovať", + "calendar_title": "Názov", + "calendar_loc": "Miesto", + "calendar_allDay": "Celý deň", + "calendar_minutes": "Minút", + "calendar_hours": "Hodín", + "calendar_days": "Dní", + "calendar_more": "{0} viac", + "reminder_missed": "{0} sa konalo v {1}", + "reminder_now": "{0} začala", + "reminder_inProgress": "{0} začala o {1}", + "reminder_inProgressAllDay": "Dnes: {0}", + "reminder_minutes": "{0} začne o {1} minútu(-y)", + "reminder_time": "{0} dnes o {1}", + "reminder_date": "{0} v {1}", + "settings_notifCalendarTitle": "Upozornenia z kalendára", + "settings_notifCalendarHint": "Zapnúť/vypnúť všetky upozornenia na nadchádzajúce udalosti v kalendári.", + "settings_notifCalendarCheckbox": "Zapnúť upozornenia z kalendára", + "calendar_notifications": "Pripomienky", + "calendar_addNotification": "Pridať pripomienku", + "calendar_noNotification": "Žiadne", + "toolbar_storeInDrive": "Uložiť do CryptDrive", + "genericCopySuccess": "Skopírované do schránky", + "mediatag_defaultImageName": "obrázok", + "register_registrationIsClosed": "Registrácia je uzavretá.", + "oo_conversionSupport": "Váš prehliadač nepodporuje konverziu do formátov Office a späť. Odporúčame použiť novšiu verziu prehliadača Firefox alebo Chrome.", + "oo_importBin": "Kliknite na tlačidlo OK, aby ste importovali interný formát .bin programu CryptPad.", + "admin_emailTitle": "Kontaktný e-mail administrátora", + "admin_emailHint": "Tu nastavte kontaktný e-mail pre vašu inštanciu", + "admin_supportPrivTitle": "Súkromný kľúč schránky podpory", + "admin_supportInitGenerate": "Vygenerujte kľúče podpory", + "admin_supportPrivHint": "Zobraziť súkromný kľúč, ktorý budú ostatní správcovia potrebovať na zobrazenie žiadostí o podporu. Na ich administrátorskom paneli sa zobrazí formulár na zadanie tohto kľúča.", + "admin_supportPrivButton": "Zobraziť kľúč", + "share_formEdit": "Autor", + "share_formAuditor": "Auditor", + "share_formView": "Účastník", + "form_invalid": "Neplatný formulár", + "form_editBlock": "Upraviť", + "form_editMax": "Maximálny počet voliteľných možností", + "form_editMaxLength": "Maximálny počet znakov", + "form_editType": "Typ možnosti", + "form_poll_text": "Text", + "form_poll_day": "Deň", + "form_poll_time": "Čas", + "form_poll_switch": "Vymeniť osi", + "form_pollTotal": "Spolu", + "form_pollYourAnswers": "Vaše odpovede", + "form_textType": "Typ textu", + "form_text_text": "Text", + "form_text_url": "Odkaz", + "form_text_email": "E-mail", + "form_text_number": "Číslo", + "form_default": "Vaša otázka?", + "form_type_input": "Text", + "form_type_textarea": "Odsek", + "form_type_radio": "Výber", + "form_type_multiradio": "Výberová tabuľka", + "form_type_checkbox": "Zaškrtávacie políčko", + "form_type_multicheck": "Tabuľka zaškrtávacích políčok", + "form_type_poll": "Hlasovanie", + "form_type_sort": "Číslovaný zoznam", + "form_sort_hint": "Presuňte tieto položky od najviac (1) po najmenej ({0}) preferované.", + "form_type_md": "Popis", + "form_type_page": "Koniec strany", + "form_description_default": "Váš text tu", + "form_maxOptions": "najviac {0} odpovedí", + "form_maxLength": "Limit počtu znakov: {0}/{1}", + "form_submit": "Odoslať", + "form_update": "Aktualizovať", + "form_reset": "Resetovať", + "form_delete": "Odstrániť", + "form_submitWarning": "Odoslať aj tak", + "form_updateWarning": "Aktualizovať aj tak", + "form_cantFindAnswers": "Nepodarilo sa načítať vaše predchádzajúce odpovede pre tento formulár.", + "form_answered": "Tento formulár ste už vyplnili", + "form_results": "Odpovede ({0})", + "form_results_empty": "Nie sú žiadne odpovede", + "form_editor": "Editor", + "form_showIndividual": "Zobraziť jednotlivé odpovede", + "form_showSummary": "Zobraziť zhrnutie", + "form_answerAnonymous": "Anonymná odpoveď z {0}", + "form_viewButton": "Zobraziť", + "form_backButton": "Späť", + "form_answerName": "Odpoveď od {0} z {1}", + "form_answerWarning": "Nepotvrdená identita", + "form_notAnswered": "{0} prázdnych odpovedí", + "form_input_ph_email": "email@example.com", + "form_input_ph_url": "https://example.com", + "form_invalidWarning": "V niektorých odpovediach sa nachádzajú chyby:", + "form_invalidQuestion": "Otázka {0}", + "form_makePublic": "Zverejniť odpovede", + "form_makePublicWarning": "Naozaj chcete zverejniť odpovede v tomto formulári? Účastníci budú mať prístup k doterajším aj budúcim odpovediam. Túto akciu nie je možné vrátiť späť.", + "form_isPublic": "Odpovede sú verejné", + "form_isPrivate": "Odpovede sú súkromné", + "form_open": "Otvoriť", + "form_setEnd": "Nastaviť dátum uzavretia", + "form_removeEnd": "Odstrániť dátum uzavretia", + "form_isOpen": "Tento formulár je otvorený", + "form_isClosed": "Tento formulár bol uzavretý dňa {0}", + "form_willClose": "Tento formulár bude uzavretý dňa {0}", + "form_anonymous": "Prístup pre hosťa (neprihlásený)", + "form_anonymous_on": "Povolené", + "form_anonymous_off": "Blokované", + "form_defaultOption": "Možnosť {0}", + "form_defaultItem": "Položka {0}", + "form_newOption": "Nová možnosť", + "form_newItem": "Nová položka", + "form_add_option": "Pridať možnosť", + "form_add_item": "Pridať položku", + "form_anonymous_blocked": "Odpovede hosťov sú v tomto formulári blokované. Ak chcete odoslať odpovede, musíte sa prihlásiť alebo zaregistrovať.", + "form_addMultiple": "Pridať všetko", + "form_addMultipleHint": "Pridať viacero dátumov a časov", + "form_clear": "Vyčistiť", + "form_page": "Strana {0}/{1}", + "form_anonymousBox": "Odpovedať anonymne", + "settings_driveRedirectTitle": "Presmerovanie na domovskú stránku", + "settings_driveRedirectHint": "Automatické presmerovanie z domovskej stránky na disk po prihlásení už nie je štandardne zapnuté. Predchádzajúce správanie je možné zapnúť nižšie.", + "settings_driveRedirect": "Automaticky ma presmerovať", + "copyToClipboard": "Kopírovať do schránky", + "restrictedLoginPrompt": "Nemáte oprávnenie na prístup k tomuto dokumentu. Prihláste sa, ak si myslíte, že by ste k nemu mali mať prístup.", + "mdToolbar_embed": "Vložiť súbor", + "admin_cat_network": "Sieť", + "admin_updateAvailableTitle": "Nové verzie", + "admin_updateAvailableHint": "K dispozícii je nová verzia CryptPad", + "admin_updateAvailableButton": "Pozri poznámky k vydaniu", + "admin_checkupTitle": "Overiť konfiguráciu inštancie", + "admin_checkupHint": "CryptPad obsahuje stránku, ktorá automaticky diagnostikuje bežné problémy s konfiguráciou a v prípade potreby navrhuje, ako ich odstrániť.", + "admin_checkupButton": "Spustiť diagnostiku", + "admin_consentToContactTitle": "Súhlas s kontaktovaním", + "admin_consentToContactHint": "Telemetrické údaje servera obsahujú kontaktný e-mail správcu, aby vás vývojári mohli informovať o závažných problémoch so softvérom alebo vašou konfiguráciou. Tieto údaje nebudú nikdy zdieľané, predávané ani používané na marketingové účely. Udeľte súhlas s kontaktovaním, ak chcete byť informovaní o kritických problémoch na vašom serveri.", + "admin_consentToContactLabel": "Súhlasím", + "admin_listMyInstanceTitle": "Zverejniť moju inštanciu vo verejných adresároch", + "admin_listMyInstanceHint": "Ak je vaša inštancia vhodná na verejné používanie, môžete súhlasiť s jej zaradením do webových adresárov. Aby toto nastavenie fungovalo, musí byť povolená telemetria servera.", + "admin_listMyInstanceLabel": "Zverejniť túto inštanciu", + "admin_removeDonateButtonTitle": "Účasť na crowdfundingu", + "admin_removeDonateButtonHint": "Vývoj CryptPadu je čiastočne financovaný z verejných grantov a darov. Propagácia našej crowdfundingovej kampane na vašej inštancii pomáha vývojárom naďalej vylepšovať platformu pre všetkých, avšak tieto oznámenia môžete vypnúť, ak sa vám zdajú nevhodné.", + "admin_removeDonateButtonLabel": "Nezverejňovať crowdfundingové kampane", + "admin_blockDailyCheckTitle": "Telemetria servera", + "admin_blockDailyCheckHint": "Inštancie CryptPad odosielajú správu na server vývojárov pri spustení a následne raz denne. To im umožňuje sledovať, na koľkých serveroch bežia jednotlivé verzie softvéru. Nižšie môžete túto funkciu vypnúť. Obsah tejto správy nájdete v protokole aplikačného servera, kde si ho môžete prezrieť.", + "admin_blockDailyCheckLabel": "Vypnúť telemetriu servera", + "admin_provideAggregateStatisticsTitle": "Štatistická agregácia", + "admin_provideAggregateStatisticsHint": "Môžete sa rozhodnúť, že vývojárom poskytnete ďalšie údaje o využívaní, ako je približný počet registrovaných a denných používateľov vašej inštancie.", + "admin_provideAggregateStatisticsLabel": "Poskytnúť súhrnné štatistiky", + "form_poll_hint": ": Áno, : Nie, : Prijateľné", + "fc_open_formro": "Otvoriť (ako účastník)", + "resources_imageBlocked": "CryptPad zablokoval vzdialený obrázok", + "resources_openInNewTab": "Otvoriť na novej karte", + "resources_learnWhy": "Zistite, prečo bol blokovaný", + "admin_instancePurposeTitle": "Účel inštancie", + "admin_purpose_noanswer": "Nechcem uviesť", + "admin_purpose_experiment": "Na testovanie platformy alebo vývoj nových funkcií", + "admin_purpose_personal": "Pre seba, rodinu alebo priateľov", + "admin_purpose_org": "Pre neziskovú organizáciu alebo záujmovú skupinu", + "admin_purpose_education": "Pre školu, vysokú školu alebo univerzitu", + "admin_purpose_public": "Poskytovať bezplatnú službu verejnosti", + "admin_purpose_business": "Pre podnik alebo komerčnú organizáciu", + "admin_instancePurposeHint": "Prečo prevádzkujete túto inštanciu? Vaša odpoveď bude použitá na tvorbu plánu vývoja, ak máte povolenú telemetriu.", + "team_leaveOwner": "Predtým, ako opustíte tím, prosím, odovzdajte rolu vlastníka. Upozorňujeme, že tímy musia mať aspoň jedného vlastníka. Ak ste momentálne jediným vlastníkom, pred pokračovaním si pridajte ďalšieho.", + "form_exportCSV": "Exportovať do CSV", + "notification_openLink": "Dostali ste odkaz {0} od {1}:", + "fm_link_new": "Nový odkaz", + "fm_link_type": "Odkaz", + "fm_link_name": "Názov odkazu", + "fm_link_url": "URL", + "fm_link_name_placeholder": "Môj odkaz", + "notification_linkShared": "{0} s vami zdieľal odkaz: {1}", + "form_anonName": "Vaše meno", + "form_answerAs": "Odpovedať ako", + "fm_link_warning": "Upozornenie: URL adresa presahuje 200 znakov", + "fm_link_invalid": "Zadajte platnú URL adresu", + "ui_collapse": "Zbalit", + "ui_expand": "Rozbaliť", + "form_totalResponses": "Celkový počet odpovedí: {0}", + "support_premiumPriority": "Prémioví používatelia pomáhajú podporovať vylepšenia aplikácie CryptPad a môžu využívať prednostné odpovede na svoje otázky.", + "support_premiumLink": "Zobraziť možnosti predplatného", + "toolbar_collapse": "Zbaliť panel nástrojov", + "toolbar_expand": "Rozbaliť panel nástrojov", + "profile_defaultAlt": "Predvolený profilový obrázok", + "upload_modal_alt": "Alternatívny text", + "upload_addOptionalAlt": "Pridať popisný text (voliteľné)", + "form_template_poll": "Rýchle plánovacie hlasovanie", + "form_preview_button": "Náhľad", + "form_alreadyAnswered": "Tento formulár ste vyplnili {0}", + "form_editAnswer": "Upraviť moje odpovede", + "form_viewAnswer": "Zobraziť moje odpovede", + "form_viewAllAnswers": "Zobraziť všetky odpovede ({0})", + "form_anonAnswer": "Odpovede na tento formulár sú anonymizované", + "form_authAnswer": "Tento formulár nie je možné odoslať anonymne", + "form_requiredWarning": "Na nasledujúce otázky je potrebné odpovedať:", + "form_required_answer": "Odpoveď: ", + "form_required_on": "Povinné", + "form_required_off": "Nepovinné", + "form_preview": "Náhľad formulára", + "form_changeTypeConfirm": "Vyberte nový typ otázky.", + "form_corruptAnswers": "Tento formulár už obsahuje odpovede. Zmena typu tejto otázky môže spôsobiť neplatnosť predchádzajúcich údajov z odpovedí.", + "form_geturl": "Kopírovať verejný odkaz", + "toolbar_preview": "Náhľad", + "form_addMsg": "Pridať správu po odoslaní", + "form_responseMsg": "Táto správa sa zobrazí po tom, čo účastníci odošlú formulár.", + "form_makeAnon": "Anonymizovať odpovede", + "form_editable": "Úpravy po odoslaní", + "form_type_section": "Podmienená časť", + "form_condition_q": "Vybrať otázku", + "form_condition_v": "Vybrať hodnotu", + "form_condition_is": "je", + "form_condition_isnot": "nie je", + "form_condition_has": "obsahuje", + "form_condition_hasnot": "neobsahuje", + "form_conditional": "Zobraziť túto sekciu len v prípade, že:", + "form_conditional_add": "Pridať podmienku ALEBO", + "form_conditional_addAnd": "Pridať podmienku A", + "userlist_visitProfile": "Navštíviť profil", + "form_colors": "Farebná téma", + "form_conditional_hint": "Ak chcete, aby sa táto časť zobrazovala podmienečne, pridajte nad ňu otázku s výberom alebo zaškrtávacím políčkom", + "creation_new": "Nový {0}", + "fc_openIn": "Otvoriť v {0}", + "download_step3": "Konvertujem...", + "premiumOnly": "Vytváranie nových dokumentov v tejto aplikácii je momentálne obmedzené pre predplatiteľov na {0}. Ide o experimentálnu aplikáciu v predbežnom prístupe určenú na testovacie účely. Čoskoro bude k dispozícii pre všetkých na {0}.", + "earlyAccessBlocked": "Táto aplikácia ešte nie je na tejto inštancii k dispozícii", + "premiumAccess": "Ako predplatiteľ na {0} môžete v tejto aplikácii s predčasným prístupom vytvárať nové dokumenty. Upozorňujeme, že ide o experimentálnu verziu, preto by ste do nej zatiaľ nemali vkladať dôležité údaje.", + "form_exportSheet": "Exportovať do tabuľky", + "form_answerChoice": "Prosím, vyberte, ako chcete odpovedať na tento formulár:", + "bounce_confirm": "Chystáte sa opustiť: {0}\n\nNaozaj chcete navštíviť „{1}“?", + "bounce_danger": "Odkaz, na ktorý ste klikli, nevedie na webovú stránku, ale na nejaký kód alebo dáta, ktoré môžu byť škodlivé.\n\n(\"{0}\")\n\nCryptPad ich z bezpečnostných dôvodov blokuje. Kliknutím na OK túto kartu zatvoríte.", + "admin_archiveNote": "Poznámka", + "admin_nameTitle": "Názov inštancie", + "admin_nameHint": "Názov zobrazený pre túto inštanciu v zozname verejných inštancií na cryptpad.org", + "ui_saved": "{0} uložené", + "admin_descriptionTitle": "Popis inštancie", + "admin_descriptionHint": "Popisný text zobrazený pre túto inštanciu v zozname verejných inštancií na stránke cryptpad.org", + "admin_jurisdictionTitle": "Umiestnenie servera", + "admin_jurisdictionHint": "Krajina, v ktorej sú uložené šifrované údaje tejto inštancie", + "footer_source": "Zdrojový kód", + "info_termsFlavour": "Podmienky používania pre túto inštanciu", + "info_sourceFlavour": "Zdrojový kód pre CryptPad", + "support_warning_prompt": "Vyberte prosím kategóriu, ktorá najviac zodpovedá vášmu problému. To pomôže správcom pri triedení žiadostí a poskytne ďalšie odporúčania, aké informácie je potrebné uviesť", + "support_warning_account": "Upozorňujeme, že správcovia nemajú možnosť obnoviť heslá. Ak ste stratili prihlasovacie údaje k svojmu účtu, ale ste stále prihlásení, môžete previesť svoje údaje na nový účet", + "support_warning_drives": "Upozorňujeme, že správcovia nemôžu identifikovať priečinky a dokumenty podľa názvu. V prípade zdieľaných priečinkov uveďte identifikátor dokumentu", + "support_warning_document": "Uveďte, ktorý typ dokumentu spôsobuje problém, a zadajte identifikátor dokumentu alebo odkaz", + "support_warning_bug": "Uveďte, v ktorom prehliadači sa tento problém vyskytuje a či máte nainštalované nejaké rozšírenia. Poskytnite čo najviac podrobností o probléme a krokoch potrebných na jeho reprodukciu", + "support_warning_abuse": "Nahláste prosím obsah, ktorý porušuje Podmienky používania. Uveďte odkazy na príslušné dokumenty alebo profily používateľov a opíšte, v čom spočíva porušenie podmienok. Akékoľvek ďalšie informácie o kontexte, v ktorom ste tento obsah alebo správanie zaznamenali, môžu správcom pomôcť predchádzať podobným porušeniam v budúcnosti", + "support_warning_other": "Aká je povaha vášho dotazu? Uveďte čo najviac relevantných informácií, aby sme mohli váš problém rýchlo vyriešiť", + "support_cat_drives": "Drive alebo tím", + "support_cat_document": "Dokument", + "support_cat_abuse": "Nahlásiť zneužitie", + "ui_openDirectly": "Táto funkcia nie je k dispozícii, ak je CryptPad vložený do inej stránky. Chcete otvoriť tento dokument na novej karte?", + "support_cat_debugging": "Ladacie údaje", + "support_debuggingDataTitle": "Ladiace informácie o účte", + "support_debuggingDataHint": "Nasledujúce informácie sú súčasťou žiadostí o podporu, ktoré odosielate. Žiadna z nich neumožňuje správcom prístup k vašim dokumentom ani ich dešifrovanie. Tieto informácie sú zašifrované tak, aby ich mohli prečítať len správcovia.", + "fivehundred_internalServerError": "Chyba servera", + "admin_cacheEvictionRequired": "Server bol aktualizovaný s novým nastavením. Použite tlačidlo Vyčistiť cache, aby sa táto zmena zobrazila všetkým používateľom.", + "admin_reviewCheckupNotice": "Odporúča sa preveriť stránku kontrola, aby ste sa uistili, že táto inštancia je správne nakonfigurovaná.", + "admin_infoNotice1": "V nasledujúcich poliach opíšte svoju inštanciu. Tieto informácie sa zobrazia na úvodnej stránke inštancie. Ak sa rozhodnete, že chcete byť zaradení do zoznamu verejných inštancií CryptPad, budú tieto informácie odoslané aj ako súčasť telemetrických údajov servera.", + "admin_infoNotice2": "Ďalšie informácie nájdete na karte „Sieť“.", + "admin_enableDiskMeasurementsTitle": "Zmerať výkon disku", + "admin_enableDiskMeasurementsHint": "Ak je táto funkcia povolená, bude na adrese /api/profiling sprístupnený koncový bod rozhrania JSON API. Týmto sa bude priebežne zaznamenávať výkon diskových operácií I/O v časovom intervale nastavenom nižšie. Toto nastavenie môže ovplyvniť výkon servera a môže odhaliť citlivé údaje. Odporúčame nechať túto funkciu vypnutú, pokiaľ presne neviete, čo robíte.", + "admin_bytesWrittenTitle": "Okno merania výkonu disku", + "admin_bytesWrittenHint": "Ak ste povolili meranie výkonu disku, môžete dĺžku trvania nakonfigurovať nižšie.", + "admin_setDuration": "Nastaviť dĺžku trvania", + "ui_ms": "milisekundy", + "admin_enableembedsTitle": "Povoliť vzdialené vkladanie", + "admin_enableembedsHint": "Povoliť vkladanie dokumentov a multimediálnych súborov z tejto inštancie na iné webové stránky. Týmto sa do ponuky Zdieľať pridá možnosť „Vložiť“. Z bezpečnostných dôvodov nie je možné vkladať aplikácie, ktoré používajú OnlyOffice (Tabuľky, Dokument, Prezentácia), aj keď je toto nastavenie aktívne.", + "error_embeddingDisabled": "Vkladanie je pre túto inštanciu CryptPad zakázané", + "error_embeddingDisabledSpecific": "Vkladanie je pre túto aplikáciu CryptPad zakázané.", + "error_incorrectAccess": "Na túto stránku sa dá dostať iba cez {0}.", + "error_evalPermitted": "Operácia bola prerušená, pretože použitie funkcie eval by nemalo byť povolené.\n\nTáto chyba súvisí s hlavičkami Content-Security-Policy a môže byť spôsobená: zastaraným prehliadačom, ktorý ich nepodporuje, rozšíreniami prehliadača, ktoré narúšajú ich správne fungovanie, alebo nesprávnou konfiguráciou tejto inštancie CryptPad.", + "ui_experimental": "Táto funkcia je považovaná za experimentálnu.", + "admin_noticeTitle": "Oznámenie na domovskej stránke", + "admin_noticeHint": "Voliteľný text, ktorý sa má zobraziť na úvodnej stránke", + "footer_website": "Webová stránka projektu", + "home_location": "Šifrované údaje sú uložené v {0}", + "home_morestorage": "Pre viac úložného priestoru:", + "login_instance": "Pripojte sa do svojho účtu na {0}", + "register_instance": "Vytvorenie nového účtu na {0}", + "admin_uptimeTitle": "Čas spustenia", + "admin_uptimeHint": "Dátum a čas spustenia servera", + "admin_cat_database": "Databáza", + "admin_generatedAt": "Časová pečiatka správy", + "ui_true": "pravda", + "ui_false": "nepravda", + "ui_undefined": "neznámy", + "ui_none": "žiadne", + "ui_generateReport": "Vygenerovať správu", + "ui_success": "Úspech", + "ui_restore": "Obnoviť", + "ui_fetch": "Načítať", + "ui_confirm": "Potvrdiť", + "ui_archive": "Archivovať", + "admin_archiveReason": "Uveďte dôvod archivácie a potvrďte, že chcete pokračovať", + "admin_restoreReason": "Uveďte dôvod obnovenia a potvrďte, že chcete pokračovať", + "admin_accountMetadataTitle": "Informácie o účte", + "admin_accountMetadataHint": "Zadajte verejný kľúč používateľa, aby ste získali údaje o jeho účte.", + "admin_documentMetadataTitle": "Informácie o dokumente", + "admin_documentMetadataHint": "Vyhľadajte dokument alebo súbor podľa jeho ID alebo URL", + "admin_documentType": "Typ dokumentu", + "admin_documentSize": "Veľkosť dokumentu", + "admin_documentMetadata": "Aktuálne metadáta", + "admin_documentCreationTime": "Vytvorené", + "admin_documentModifiedTime": "Posledná úprava", + "admin_currentlyOpen": "Aktuálne otvorené", + "admin_channelAvailable": "Dostupné", + "admin_channelArchived": "Archivované", + "admin_documentMetadataPlaceholder": "URL alebo identifikátor dokumentu", + "admin_blockMetadataTitle": "Informácie o prihlasovacom bloku", + "admin_blockMetadataHint": "Prihlasovací blok umožňuje prihlásenie účtu do aplikácie CryptPad pomocou kombinácie používateľského mena a hesla", + "admin_blockMetadataPlaceholder": "Absolútna alebo relatívna adresa URL bloku", + "admin_accountMetadataPlaceholder": "ID používateľa (verejný podpisový kľúč)", + "admin_firstPinTime": "Čas prvej aktivity pinu", + "admin_lastPinTime": "Čas poslednej aktivity pinu", + "admin_currentlyOnline": "Je momentálne online", + "admin_planName": "Názov plánu", + "admin_note": "Poznámka k plánu", + "admin_storageUsage": "Uložené údaje", + "admin_channelCount": "Počet dokumentov", + "admin_fileCount": "Počet súborov", + "admin_pinLogAvailable": "Záznam pinov je k dispozícii", + "admin_pinLogArchived": "Záznam pinov je archivovaný", + "admin_blockKey": "Zablokovať verejný kľúč", + "admin_blockAvailable": "Blok je k dispozícii", + "admin_blockArchived": "Blok je archivovaný", + "admin_archiveBlock": "Archivovať blok", + "admin_restoreBlock": "Obnoviť archivovaný blok", + "admin_getPinList": "Aktuálny zoznam pinov", + "admin_archiveDocument": "Archivovať dokument", + "admin_restoreDocument": "Obnoviť dokument", + "admin_planlimit": "Limit úložiska", + "admin_reportContent": "Obsah správy", + "admin_getRawMetadata": "História metadát", + "og_teamDrive": "Tímový disk", + "og_default": "CryptPad: sada nástrojov na spoluprácu s end-to-end šifrovaním", + "og_login": "Prihlásiť sa do {0}", + "og_register": "Zaregistrovať účet na {0}", + "og_contact": "{0} Kontakt", + "og_pricing": "{0} Cenník", + "og_features": "{0} Funkcie", + "ui_jsRequired": "Na vykonanie šifrovania vo vašom prehliadači musí byť povolený JavaScript", + "og_encryptedAppType": "Šifrované {0}", + "admin_documentConflict": "Archivovať/obnoviť", + "admin_conflictExplanation": "Existujú dve verzie tohto dokumentu. Obnovenie archivovanej verzie prepíše aktuálnu verziu. Archivovanie aktuálnej verzie prepíše archivovanú verziu. Žiadnu z týchto akcií nie je možné vrátiť späť.", + "fm_filterBy": "Filter", + "fm_rmFilter": "Odstrániť filter", + "calendar_rec": "Opakovať", + "calendar_rec_no": "Raz", + "calendar_rec_updated": "Pravidlo aktualizované {0}", + "calendar_rec_daily": "Denne", + "calendar_rec_stop": "Prestať opakovať", + "calendar_rec_weekly": "Každý týždeň v {0}", + "calendar_rec_edit_all": "Upraviť všetky udalosti", + "calendar_rec_monthly": "Mesačne, deň {1}", + "calendar_rec_edit_from": "Upraviť budúce udalosti", + "calendar_rec_yearly": "Každý rok v {2}", + "calendar_rec_edit_one": "Upraviť len túto udalosť", + "calendar_rec_weekend": "Denne cez víkend", + "calendar_rec_edit": "Toto je opakujúca sa udalosť", + "calendar_str_filter_day": "Dni: {0}", + "calendar_rec_weekdays": "Každý pracovný deň", + "calendar_str_filter_monthday": "Dni v mesiaci: {0}", + "calendar_rec_custom": "Vlastné", + "calendar_str_filter_yearday": "Dni v roku: {0}", + "calendar_str_filter_weekno": "Týždne: {0}", + "calendar_str_filter_month": "Mesiace: {0}", + "calendar_rec_txt": "Opakovať každý", + "calendar_str_filter": "Filtre:", + "calendar_rec_freq_daily": "dni", + "calendar_rec_freq_weekly": "týždne", + "calendar_str_until": "do {0}", + "calendar_rec_freq_monthly": "mesiace", + "calendar_str_for": "{0} krát", + "calendar_str_nthdayofmonth": "{0}. dňa v {1}", + "calendar_rec_freq_yearly": "roky", + "calendar_str_monthday": "v {0}", + "calendar_rec_until": "Prestať opakovať", + "calendar_rec_until_no": "Nikdy", + "calendar_str_day": "v {0}", + "calendar_rec_until_date": "V", + "calendar_str_daily": "{0} dní", + "calendar_rec_until_count": "Po", + "calendar_rec_until_count2": "krát", + "calendar_str_weekly": "{0} týždne", + "calendar_rec_monthly_pick": "V dňoch", + "calendar_str_monthly": "{0} mesiac(ov)", + "calendar_str_yearly": "{0} rok(y)", + "calendar_nth_1": "prvý", + "calendar_list_end": "{0} alebo {1}", + "calendar_nth_2": "druhý", + "calendar_list": "{0}, {1}", + "calendar_nth_3": "tretí", + "calendar_month_last": "posledný deň", + "calendar_nth_4": "štvrtý", + "calendar_rec_every_date": "Každý {0}", + "calendar_rec_yearly_nth": "Každý {0} {1} v {2}", + "calendar_rec_monthly_nth": "Každý {0} {1} v mesiaci", + "calendar_nth_last": "posledný", + "calendar_nth_5": "piaty", + "calendar_rec_warn_del": "Táto udalosť sa už nebude opakovať. Budúce udalosti budú odstránené.", + "calendar_rec_warn_delall": "Táto udalosť sa už nebude opakovať. Prvá udalosť z {0} zostane zachovaná, všetky ostatné budú odstránené.", + "calendar_rec_warn_update": "Pravidlá týkajúce sa opakovania tejto udalosti boli upravené. Budúce udalosti budú nahradené.", + "calendar_rec_warn_updateall": "Pravidlo opakovania tejto udalosti bolo upravené. Prvá udalosť na {0} zostane zachovaná, všetky ostatné budú nahradené.", + "calendar_removeNotification": "Odstrániť pripomienku", + "team_inviteRole": "Úvodná rola", + "team_inviteUses": "Povolený počet použití odkazu (0 = neobmedzený)", + "form_exportJSON": "Exportovať do JSON", + "form_alreadyAnsweredMult": "Tento formulár ste vyplnili dňa:", + "form_responseNotification": "Nové odpovede vo formulári: {0}", + "form_deleteAll": "Vymazať všetko", + "form_answer_new": "Odoslať znovu", + "form_allowNotifications": "Oznámenia o nových odpovediach", + "form_editable_off": "Len raz", + "form_editable_on_del": "Raz a upraviť/vymazať", + "form_multiple": "Viackrát", + "form_multiple_edit": "Viackrát a upraviť/vymazať", + "form_editable_str": "Podanie", + "team_linkUsesInfinite": "(neobmedzené použitie)", + "team_linkUses": "({0}/{1} zostáva)", + "form_anonymized": "Odpovede sú anonymizované", + "form_settingsButton": "Nastavenia formulára", + "form_editable_on": "Raz a upraviť", + "form_showCondorcetMethod": "Condorcetova metóda", + "form_condorcetSchulze": "Schulzeho metóda", + "form_condorcetRanked": "Tidemanova metóda (Ranked Pairs)", + "form_showCondorcetWinner": "víťaz: ", + "form_showDetails": "Detaily", + "form_condorcetExtendedDisplay": "Počet zápasov vyhratých jednotlivými kandidátmi: ", + "form_noCondorcetWinner": "Žiaden víťaz", + "form_type_date": "Dátum", + "settings_mfaTitle": "Dvojfaktorová autentifikácia (2FA)", + "settings_mfaHint": "Chráňte svoj účet pomocou dodatočného overovacieho kódu, ktorý vám poskytne autentifikačná aplikácia podľa vášho výberu", + "done": "Hotovo", + "continue": "Pokračovať", + "mfa_setup_label": "Ak chcete aktivovať 2FA, najskôr zadajte heslo k svojmu účtu", + "mfa_setup_button": "Začať s nastavením 2FA", + "mfa_revoke_label": "Ak chcete deaktivovať 2FA, najskôr zadajte heslo k svojmu účtu", + "mfa_revoke_button": "Potvrdiť vypnutie 2FA", + "mfa_revoke_code": "Zadajte prosím overovací kód", + "mfa_status_on": "Na tomto účte je aktivovaná 2FA", + "mfa_status_off": "Na tomto účte nie je aktivovaná 2FA", + "mfa_recovery_title": "Uložte si tento obnovovací kód teraz", + "mfa_recovery_hint": "Ak stratíte prístup k aplikácii na overovanie, môže sa stať, že sa nebudete môcť prihlásiť do svojho účtu CryptPad. Tento obnovovací kód môžete použiť na deaktiváciu 2FA a opätovné prihlásenie.", + "mfa_recovery_warning": "Tento kód sa už viac nezobrazí, preto si ho prosím ihneď uložte na bezpečné miesto a nikomu ho neposkytujte.", + "mfa_enable": "Zapnúť 2FA", + "mfa_disable": "Vypnúť 2FA", + "settings_otp_code": "Overovací kód", + "settings_otp_invalid": "Neplatný overovací kód", + "settings_otp_tuto": "Naskenujte prosím tento QR kód pomocou aplikácie na overovanie a na potvrdenie zadajte overovací kód.", + "settings_removeOwnedTitle": "Zničiť všetky dokumenty, ktoré vlastníte", + "settings_removeOwnedButton": "Zničiť vlastnené dokumenty", + "settings_removeOwnedText": "Počkajte prosím, kým sa váš dokumenty zničia...", + "settings_removeOwnedHint": "Všetky dokumenty, ktorých ste jediným vlastníkom, budú natrvalo zlikvidované", + "recovery_header": "Obnovenie 2FA", + "recovery_mfa_description": "Ak ste stratili prístup k metóde dvojfaktorovej autentifikácie, môžete pomocou obnovovacieho kódu deaktivovať 2FA pre svoj účet. Najskôr zadajte svoje používateľské meno a heslo:", + "recovery_mfa_secret": "Zadajte prosím svoj obnovovací kód, aby ste deaktivovali 2FA pre svoj účet:", + "recovery_forgot": "Zabudnutý obnovovací kód", + "recovery_forgot_text": "Skopírujte prosím nasledujúce informácie a pošlite ich e-mailom administrátorom vašej inštancie", + "recovery_mfa_error": "Neznáma chyba. Obnovte stránku a skúste to znovu.", + "recovery_mfa_disabled": "Viacfaktorová autentifikácia je pre tento účet už deaktivovaná.", + "admin_totpRecoveryTitle": "Obnovenie 2FA", + "admin_totpRecoveryHint": "Používatelia môžu skopírovať údaje na obnovenie na stránke pre obnovenie 2FA /recovery/ a poslať ich e-mailom správcom inštancie. Vložte údaje na obnovenie nižšie, aby ste deaktivovali 2FA pre daný účet", + "admin_totpEnabled": "2FA je zapnuté", + "admin_totpRecoveryMethod": "Spôsob obnovenia 2FA", + "admin_totpFailed": "Overenie podpisu sa nepodarilo", + "admin_totpCheck": "Overenie podpisu bolo úspešné", + "admin_totpDisable": "Vypnúť 2FA pre tento účet", + "admin_totpDisableButton": "Vypnúť", + "register_nameTooLong": "Používateľské mená musia mať menej ako {0} znakov", + "loading_enter_otp": "Tento účet je chránený dvojfaktorovou autentifikáciou. Zadajte prosím overovací kód", + "loading_recover": "Nepodarilo sa vám získať kód? Obnovte si účet", + "recovery_mfa_secret_ph": "Obnovovací kód", + "label_logo": "CryptPad logo", + "login_notFilledUser": "Zadajte používateľské meno", + "login_notFilledPass": "Zadajte heslo", + "calendar_settings": "Nastavenia kalendára", + "goLeft": "Vľavo", + "goRight": "Vpravo", + "date": "Dátum", + "context_menu": "Akcie s priečinkami", + "label_viewMode": "Prepnúť režim zobrazenia", + "team_nameTooLong": "Názov tímu je príliš dlhý (max. 50 znakov)", + "team_nameAlreadySet": "Názov tímu je už nastavený na {0}", + "selectLanguage": "Vyberte jazyk", + "dph_reason": "Dôvod: {0}", + "dph_sf_pw": "Zdieľaný priečinok {0} je chránený novým heslom. Zadajte nové heslo, aby ste získali prístup k tomuto priečinku, alebo ho odstráňte zo svojho disku.", + "dph_sf_destroyed": "Zdieľaný priečinok {0} bol odstránený vlastníkom", + "dph_sf_destroyed_team": "Zdieľaný priečinok {0} na tímovom disku {1} bol odstránený vlastníkom", + "admin_archiveAccount": "Archivovať tento účet", + "admin_archiveAccountInfo": "Vrátane dokumentov, ktoré má vo vlastníctve", + "admin_archiveAccountConfirm": "Uveďte dôvod archivácie, tento dôvod sa zobrazí používateľovi.", + "admin_restoreAccount": "Obnoviť tento účet", + "admin_accountSuspended": "Účet archivovaný administrátorom", + "admin_accountReport": "Správa o archivácii účtu", + "admin_accountReportFull": "Získať podrobnú správu", + "admin_channelPlaceholder": "Náhrada za zničený dokument", + "dph_default": "Tento obsah už nie je k dispozícii", + "dph_account_destroyed": "Tento účet bol vymazaný jeho vlastníkom", + "dph_account_inactive": "Tento účet bol zrušený z dôvodu neaktivity", + "dph_account_moderated": "Tento účet bol pozastavený moderátorom", + "dph_account_pw": "Heslo k tomuto účtu bolo zmenené", + "dph_pad_destroyed": "Tento dokument bol zničený vlastníkom", + "dph_pad_inactive": "Tento dokument bol vymazaný z dôvodu neaktivity", + "dph_pad_moderated": "Tento dokument bol odstránený moderátorom", + "dph_pad_moderated_account": "Tento dokument bol odstránený, pretože účet, ku ktorému patril, bol pozastavený", + "dph_pad_pw": "Tento dokument je chránený novým heslom", + "dph_tmp_destroyed": "Túto šablónu zničil jej vlastník", + "dph_tmp_moderated": "Túto šablónu odstránil moderátor", + "dph_tmp_moderated_account": "Táto šablóna bola odstránená, pretože účet, ku ktorému patrila, bol pozastavený", + "dph_tmp_pw": "Táto šablóna je chránená novým heslom. Otvorte ju z vášho disku a zadajte nové heslo.", + "access_passwordUsed": "Toto heslo už bolo pre tento dokument použité. Nemôže sa použiť znovu.", + "status": "Stránka stavu", + "admin_diskUsageWarning": "Používajte s opatrnosťou! V závislosti od veľkosti údajov uložených v inštancii môže vytvorenie tejto správy spotrebovať všetku pamäť dostupnú na serveri a spôsobiť jeho zlyhanie.", + "calendar_rec_change_first": "Presun prvej opakujúcej sa udalosti do iného kalendára. Presunú sa aj všetky ostatné opakujúce sa udalosti.", + "calendar_rec_change": "Presun opakujúcej sa udalosti do iného kalendára. Túto zmenu môžete uplatniť len na túto udalosť alebo na všetky opakované udalosti.", + "calendar_desc": "Popis", + "calendar_description": "Popis:{0}{1}", + "sso_login_description": "Prihlásiť sa pomocou", + "sso_register_description": "Registrovať sa pomocou", + "ssoauth_header": "CryptPad Heslo", + "ssoauth_form_hint_register": "Pre väčšiu bezpečnosť zadajte heslo pre CryptPad alebo pole nechajte prázdne a pokračujte. Ak heslo nezadáte, kľúče chrániace vaše údaje budú k dispozícii administrátorom inštancie.", + "ssoauth_form_hint_login": "Zadajte svoje heslo do CryptPad", + "duplicate": "Duplikovať", + "kanban_showTags": "Zobraziť všetky štítky", + "kanban_hideTags": "Zobraziť menej štítkov", + "admin_forcemfaTitle": "Povinné dvojfaktorové overovanie", + "admin_forcemfaHint": "Všetci používatelia tejto inštancie budú požiadaní, aby si na prihlásenie do svojho účtu nastavili dvojfaktorovú autentifikáciu. Upozorňujeme, že existujúci používatelia nebudú môcť naďalej používať svoj účet bez nastavenia aplikácie TOTP.", + "loading_mfa_required": "V tejto inštancii je vyžadovaná dvojfaktorová autentifikácia. Aktualizujte si prosím svoj účet pomocou autentifikačnej aplikácie a nižšie uvedeného formulára.", + "admin_cat_users": "Adresár používateľov", + "admin_registrationSsoTitle": "Zatvoriť SSO registráciu", + "admin_invitationTitle": "Pozývacie odkazy", + "admin_invitationCreate": "Vytvoriť pozývací odkaz", + "admin_invitationHint": "Pozývacie odkazy vytvárajú vždy jeden účet, aj keď je registrácia uzavretá. Používateľské meno a e-mail slúžia výlučne na vašu identifikáciu. CryptPad vám pozývací odkaz (ani žiadne iné informácie) e-mailom nezašle. Odkaz si prosím skopírujte a pošlite ho prostredníctvom bezpečného kanála podľa vlastného výberu.", + "admin_invitationLink": "Pozývací odkaz", + "admin_invitationCopy": "Kopírovať odkaz", + "admin_invitationAlias": "Používateľské meno", + "admin_invitationEmail": "E-mail používateľa", + "admin_invitationDeleteConfirm": "Naozaj chcete túto pozvánku odstrániť?", + "admin_usersTitle": "Adresár používateľov", + "admin_usersHint": "Zoznam známych účtov na tejto inštancii. Vyberte nižšie, aby ste účty pridali automaticky, alebo zadajte údaje ručne prostredníctvom formulára.", + "admin_usersAdd": "Pridať známeho používateľa", + "admin_storeInvitedLabel": "Automaticky ukladať pozvaných používateľov", + "admin_storeSsoLabel": "Automaticky ukladať SSO používateľov", + "admin_usersBlock": "URL bloku prihlásenia používateľa (voliteľné)", + "admin_usersRemove": "Odstrániť", + "admin_usersRemoveConfirm": "Naozaj chcete tohto používateľa odstrániť z adresára? Naďalej bude mať prístup k svojmu účtu a bude ho môcť používať.", + "register_invalidToken": "Pozývací odkaz je neplatný", + "admin_cat_security": "Bezpečnosť", + "admin_cat_customize": "Prispôsobenie", + "admin_logoTitle": "Vlastné logo", + "admin_logoHint": "SVG, PNG alebo JPG, maximálna veľkosť 200 kB", + "admin_logoButton": "Nahrať nové", + "admin_colorTitle": "Farba zvýraznenia", + "admin_logoRemoveButton": "Obnoviť predvolené", + "admin_colorHint": "Zmeňte farbu zvýraznenia vašej inštancie CryptPad. Uistite sa, že text a tlačidlá sú čitateľné a majú dostatočný kontrast v svetlom aj tmavom motíve.", + "admin_colorCurrent": "Aktuálna farba zvýraznenia", + "admin_colorChange": "Zmeniť farbu", + "admin_colorPick": "Vybrať farbu", + "admin_colorPreview": "Náhľad farby", + "admin_supportSetupHint": "Vytvoriť alebo aktualizovať kľúče podpory.", + "admin_supportSetupTitle": "Inicializovať podporu", + "admin_supportEnabled": "Systém podpory je zapnutý.", + "admin_supportDisabled": "Systém podpory je vypnutý.", + "admin_supportInit": "Inicializovať helpdesk na tejto inštancii", + "admin_supportDelete": "Vypnúť podporu", + "admin_supportConfirm": "Ste si istý? Týmto sa vymažú všetky existujúce žiadosti a zablokuje sa prístup všetkým moderátorom.", + "admin_supportMembers": "Tím podpory", + "admin_supportAdd": "Pridať kontakt do tímu podpory", + "admin_supportRotateNotify": "Upozornenie: boli vygenerované nové kľúče, ale v dôsledku neočakávanej chyby ich systém nemohol odoslať moderátorom. Odstráňte a znovu pridajte všetkých členov tímu podpory", + "moderationPage": "Help-desk", + "support_cat_open": "Prijaté", + "support_cat_closed": "Zatvorené", + "support_cat_search": "Vyhľadávanie", + "support_cat_settings": "Nastavenia", + "support_cat_legacy": "Predchádzajúce", + "support_pending": "Archivované žiadosti:", + "support_pending_tag": "Archivované", + "support_active_tag": "Prijaté", + "support_closed_tag": "Zatvorené", + "support_privacyTitle": "Odpovedať anonymne", + "support_privacyHint": "Zaškrtnite túto možnosť, ak chcete odpovedať ako „Tím podpory“ namiesto svojho vlastného používateľského mena", + "support_notificationsTitle": "Vypnúť upozornenia", + "support_notificationsHint": "Zaškrtnite túto možnosť, ak chcete vypnúť upozornenia na nové žiadosti a odpovede", + "support_openTicketTitle": "Vytvoriť žiadosť s používateľom", + "support_openTicketHint": "Skopírujte údaje príjemcu z jeho profilu alebo z existujúcej žiadosti. Príjemca dostane o tejto správe CryptPad upozornenie.", + "support_userChannel": "ID kanála s upozorneniami používateľa", + "support_userKey": "Verejný kľúč používateľa", + "support_invalChan": "Neplatný kanál upozornení", + "admin_supportTeamTitle": "Spravovať tím technickej podpory", + "admin_supportTeamHint": "Pridať a odstrániť členov z tímu podpory inštancie", + "support_pasteUserData": "Vložte sem údaje o používateľovi", + "support_recordedTitle": "Snippety", + "support_recordedHint": "Uložte si bežné texty ako skratky, ktoré môžete jedným kliknutím vložiť do správ podpory.", + "support_recordedEmpty": "Žiadne snippety", + "support_recordedId": "ID snippetu (unikátne)", + "support_recordedContent": "Obsah", + "support_legacyTitle": "Zobraziť staršie údaje podpory", + "support_legacyHint": "Zobraziť žiadosti zo starého systému podpory a znovu ich vytvoriť v novom systéme.", + "support_legacyButton": "Zobraziť aktívne žiadosti", + "support_legacyDump": "Exportovať všetko", + "support_legacyClear": "Odstrániť pre tento účet", + "support_searchLabel": "Vyhľadávanie (názov alebo ID žiadosti)", + "support_team": "Tím podpory", + "support_answerAs": "Odpoveď ako {0}", + "support_movePending": "Presunúť do archívu", + "support_moveActive": "Presunúť do aktívnych", + "support_copyUserData": "Kopírovať údaje používateľa", + "support_insertRecorded": "Vložiť snippet", + "admin_supportOpen": "Otvoriť help-desk", + "support_userNotification": "Nová žiadosť o podporu alebo odpoveď: {0}", + "install_instance": "Vytvorte prvý administrátorský účet a potom pokračujte v prispôsobovaní tejto inštancie", + "install_token": "Inštalačný token", + "install_header": "Inštalácia", + "admin_appSelection": "Nastavenie aplikácie", + "install_launch": "Nastavenie inštancie", + "admin_appsTitle": "Aplikácie inštancie", + "onboarding_save_error": "Niektoré nastavenia sa nepodarilo správne uložiť. Preverte prosím hodnoty v administrátorskom paneli.", + "admin_appsHint": "Vyberte, ktoré aplikácie chcete v tejto inštancii povoliť.", + "admin_cat_apps": "Aplikácie", + "onboarding_upload": "Vyberte logo", + "admin_onboardingNameTitle": "Vitajte vo vašej CryptPad inštancii", + "admin_onboardingNameHint": "Vyberte si názov, popis, farbu zvýraznenia a logo (všetko je voliteľné)", + "admin_onboardingOptionsTitle": "Možnosti inštancie", + "admin_onboardingOptionsHint": "Vyberte prosím možnosť, ktorá zodpovedá vašej inštancii.
Tieto nastavenia je možné neskôr zmeniť v administračnom paneli.", + "admin_onboardingNamePlaceholder": "Názov inštancie", + "admin_onboardingDescPlaceholder": "Text popisu inštancie", + "team_autoTrim": "Orezávanie histórie tímového disku... Čakajte, prosím.", + "admin_mfa_confirm_enable": "Naozaj chcete zapnúť viacstupňové overenie?", + "admin_mfa_confirm_disable": "Naozaj chcete vypnúť viacstupňové overenie?", + "form_passwordWarning": "Upozorňujeme, že heslo formulára je možné nastaviť len pri jeho vytvorení a neskôr ho už nie je možné zmeniť.", + "fm_restoreMultipleDialog": "Naozaj chcete obnoviť {0} súborov a/alebo priečinkov na ich pôvodné umiestnenie?", + "calendar_show": "Zobraziť kalendáre", + "calendar_hide": "Skryť kalendáre", + "admin_logoSize_error": "Logo je príliš veľké", + "admin_listAdminsHint": "Zobraziť a odstrániť administrátorov", + "error_limit": "Zadajte platné číslo", + "form_answerType_error": "Vyberte spôsob vyplnenia formulára", + "admin_addKeyLabel": "Pridať administrátora pomocou jeho verejného kľúča", + "error_positiveNumber": "Zadajte kladné číslo", + "admin_cat_admins": "Administrátori", + "admin_admin": "Administrátor", + "admin_listAdminsTitle": "Súčasní administrátori", + "admin_addAdminsAdd": "Povýšiť kontakt na administrátora", + "admin_addAdminsTitle": "Pridať administrátorov", + "admin_errorAddAdmins": "Vyberte kontakt, ktorý chcete povýšiť na administrátora", + "admin_addAdminsHint": "Pridajte administrátorov na základe ich verejného kľúča alebo zo zoznamu kontaktov", + "moveItemLeft": "Posunúť položku doľava", + "admin_errorAddKeyLabel": "Zadajte platný verejný kľúč", + "skipLink": "Prejsť na hlavný obsah", + "admin_listName": "Meno administrátora", + "admin_listKey": "Administrátorský kľúč", + "moveItemRight": "Posunúť položku doprava", + "admin_listAction": "Odstrániť administrátorské práva", + "kanban_moveBoardRight": "Posunúť tabuľku doprava", + "admin_listHardcoded": "Administrátor bol pridaný do súboru config.js. Odstrániť ho možno len úpravou konfiguračného súboru.", + "addItemBottom": "Pridať kartu na spodok tabule", + "admin_listConfirm": "Naozaj chcete odobrať administrátorské práva tomuto používateľovi?", + "addItemTop": "Pridať kartu na vrch tabule", + "kanban_moveBoardLeft": "Posunúť tabulu doľava", + "toggleDrag": "Presuňte položky ťahaním", + "moveItemUp": "Posunúť položku nahor", + "moveItemDown": "Posunúť položku nadol", + "toggleArrows": "Šípky na presúvanie položiek", + "oo_couldNotConvertDocument": "Prevod dokumentu sa nepodaril. Upozorňujeme, že formáty Microsoft Office (.docx, .xlsx, .pptx) v súčasnosti poskytujú najlepšie výsledky pri importe a exporte.", + "oo_unstableMigrationWarning": "Import a export niektorých formátov OpenDocument (.odt, .odp) je momentálne nestabilný. Odporúčame, aby ste podľa možnosti používali iné formáty. CryptPad sa teraz pokúsi o konverziu podľa najlepších možností.", + "badges_admin": "Administrátor", + "badges_moderator": "Podpora a moderovanie", + "badges_premium": "Predplatiteľ", + "badges_error": "Chyba validácie", + "profile_badges": "Odznak", + "show_password": "Zobraziť heslo", + "hide_password": "Skryť heslo", + "page_previous": "Predchádzajúca stránka", + "page_next": "Ďalšia stránka", + "settings_profileHeaderHint": "Vyberte si, čo ostatní uvidia o vašom účte", + "contact_mastodon": "Mastodon", + "contact_forum": "Fórum", + "settings_profileAvatarLabel": "Avatar", + "settings_profileHeaderTitle": "Profilové informácie", + "toolbar_text_tools": "Textové nástroje", + "toolbar_show_text_tools": "Zobraziť textové nástroje", + "toolbar_hide_text_tools": "Skryť textové nástroje", + "help_close_button": "Zatvoriť upozornenie nápovedy", + "fc_open_formaud": "Otvoriť (ako auditor)", + "admin_documentsDeletionTitle": "Archivovať viacero dokumentov", + "admin_documentsDeletionHint": "Archivovať zoznam dokumentov podľa ich identifikátorov (jeden identifikátor dokumentu na riadok)", + "password_note1": "Vaše heslo je tajný kľúč, ktorý šifruje všetky vaše dokumenty.", + "password_note2": "Ak ho stratíte, vaše dáta už nebudeme môcť nijakým spôsobom obnoviť.", + "password_note3": "Vaše heslo je tajný kľúč, ktorý šifruje všetky vaše dokumenty a administrátorské oprávnenia na tejto inštancii.", + "computer_note": "Ak používate zdieľaný počítač, {0}nezabudnite sa odhlásiť{1}, keď skončíte. Ak len zatvoríte okno prehliadača, váš účet zostane nechránený.", + "import_note": "Ak chcete mať k dispozícii dokumenty, ktoré ste vytvorili a/alebo uložili bez prihlásenia, zaškrtnite políčko „Importovať dokumenty z hosťovskej relácie“.", + "admin_creation_note": "Vytvorte svoj prvý administrátorský účet na tejto stránke. Administrátori spravujú nastavenia inštancie, vrátane kvót úložiska, a majú prístup k nástrojom na moderovanie.", + "forms_switchHorizontalAxe": "Prepnúť na horizontálne rozloženie", + "forms_switchVerticalAxe": "Prepnúť na vertikálne rozloženie", + "forms_pollOptionNo": "Nie", + "forms_pollOptionYes": "Áno", + "forms_pollOptionMaybe": "Možno", + "color0": "Bez farby", + "color1": "Červená", + "color2": "Oranžová", + "color3": "Žltá", + "color4": "Zelená", + "color5": "Tmavozelená", + "color6": "Tyrkysová", + "color7": "Modrá", + "color8": "Fialová", + "loading_encrypted": "end-to-end šifrované", + "form_poll_required_hint": "Toto hlasovanie je povinné, musíte vybrať aspoň jednu možnosť.", + "fo_trash_move_error": "Obsah zdieľaného priečinka nie je možné presunúť do koša. Namiesto toho použite funkciu „Odstrániť“.", + "fo_sharedFolder_move_error": "Zdieľané priečinky nie je možné presúvať do iných zdieľaných priečinkov.", + "support_moreTickets": "{0} dostupných žiadostí", + "loadAll": "Načítať všetky žiadosti", + "oo_rtChannelMissing": "Pri načítaní vášho dokumentu došlo k chybe. Dokument je teraz nastavený len na čítanie, aby sa predišlo poškodeniu alebo strate údajov. Použite prosím tlačidlo nižšie a pošlite príslušné informácie tímu technickej podpory.", + "oo_rtChannelMissingDate": "Správa odoslaná {0}", + "oo_rtChannelMissingNoSupport": "Pri načítaní vášho dokumentu došlo k chybe. Dokument je teraz nastavený len na čítanie, aby sa predišlo poškodeniu alebo strate údajov. Prosím, pošlite nasledujúce informácie administrátorovi vašej inštancie.", + "support_moderatorNotification": "{0} vás pridal do tímu podpory ako moderátora", + "crowdfunding_popup_text2": "Prípadne sa môžete prihlásiť k predplatnému na tejto inštancii.", + "form_input_ph_text": "Vaša odpoveď tu", + "form_input_ph_number": "Zadajte číslo", + "form_date_time": "Vyberte dátum a čas", + "contacts_muted": "Stlmené", + "contacts_noFriends": "Váš zoznam kontaktov je prázdny", + "contacts_noFriendsInfo": "Najskôr pridajte kontakt, aby ste mohli začať konverzáciu.", + "contacts_historyCleared": "História chatu bola vymazaná pre všetkých", + "diagram_modesOptionLabel": "Zmeniť tému na {0}, obnoví aplikáciu", + "diagram_sketchTheme": "Náčrt", + "diagram_simpleTheme": "Jednoduchá", + "diagram_classicTheme": "Klasická" } diff --git a/www/common/translations/messages.zh.json b/www/common/translations/messages.zh.json index cc451f1c9..d1dd0588e 100644 --- a/www/common/translations/messages.zh.json +++ b/www/common/translations/messages.zh.json @@ -58,7 +58,7 @@ "movedToTrash": "该文档已移至回收站。
访问我的云盘", "shareButton": "分享", "shareSuccess": "链接已复制到剪贴板", - "newButton": "新", + "newButton": "新建", "newButtonTitle": "创建新文档", "saveTemplateButton": "另存为模板", "saveTemplatePrompt": "为模板选择标题", @@ -110,7 +110,7 @@ "fm_templateName": "模板", "fm_searchName": "搜索", "fm_searchPlaceholder": "搜索…", - "fm_newButton": "新的", + "fm_newButton": "新建", "fm_newButtonTitle": "创建新文档或文件夹,在当前文件夹中导入文件。", "fm_newFolder": "新建文件夹", "fm_newFile": "新文档", @@ -147,7 +147,7 @@ "fc_restore": "还原", "fc_remove": "删除", "fc_empty": "清空回收站", - "fc_prop": "Properties", + "fc_prop": "属性", "fo_moveUnsortedError": "您无法将文件夹移动到模板列表", "fo_existingNameError": "名称已在该目录中使用,请选择其他名称。", "fo_moveFolderToChildError": "您无法将文件夹移至其子文件夹", @@ -265,7 +265,7 @@ "contacts_rooms": "房间", "contacts_fetchHistory": "检索更早的历史记录", "contacts_removeHistoryServerError": "移除聊天记录时出错,请稍后重试", - "contacts_confirmRemoveHistory": "是否确定要永久移除您的聊天记录?数据无法恢复", + "contacts_confirmRemoveHistory": "是否确定要删除聊天记录?所有人的消息都将被移除,且无法恢复。", "contacts_removeHistoryTitle": "清理聊天记录", "contacts_info4": "任一参与者均可永久清除聊天记录", "contacts_info3": "双击联系人图标查看其个人资料", @@ -517,7 +517,7 @@ "markdown_toc": "内容", "survey": "CryptPad调查", "crowdfunding_popup_no": "以后", - "crowdfunding_popup_text": "

我们需要您的帮助!

为使 CryptPad 能活跃地开发,请通过 OpenCollective 页面支持开发,在那里您可以看到我们的开发路线图创立目标。", + "crowdfunding_popup_text": "

我们需要您的帮助!

为确保 CryptPad 持续活跃开发,请考虑在 OpenCollective 上捐款支持该项目。", "crowdfunding_button2": "捐款", "crowdfunding_button": "支持CryptPad", "autostore_notAvailable": "在使用这个功能之前您必须将文档保存到您的 CryptDrive 中。", @@ -712,11 +712,11 @@ "team_inviteLinkSetPassword": "使用密码保护链接(推荐)", "team_inviteLinkTempName": "临时名称(在待处理的邀请列表中可见)", "team_inviteLinkTitle": "为该团队创建个性化邀请", - "contacts_muteInfo": "您不会收到来自禁言用户的任何通知或消息。
他们不会知道您已将他们禁言。 ", - "contacts_mutedUsers": "已禁言账号", - "contacts_manageMuted": "管理禁言", - "contacts_unmute": "取消禁言", - "contacts_mute": "禁言", + "contacts_muteInfo": "您将不会收到来自已静音用户的任何通知或消息。
他们不会知道您已将他们静音。 ", + "contacts_mutedUsers": "已静音账号", + "contacts_manageMuted": "管理静音", + "contacts_unmute": "取消静音", + "contacts_mute": "静音", "share_noContactsNotLoggedIn": "登录或注册以查看您现有的联系人并添加新联系人。", "share_copyProfileLink": "复制个人资料链接", "share_noContactsLoggedIn": "您尚未与 CryptPad 上的任何人创建联系。 分享指向您的个人资料的链接,以便人们向您发送联系请求。", @@ -987,7 +987,7 @@ "allow_text": "使用访问列表意味着只有选定的用户和所有者才能访问此文档。", "logoutEverywhere": "全部登出", "owner_text": "文档的所有者是唯一有权执行以下操作的用户:添加/删除所有者、使用访问列表限制对文档的访问或删除文档。", - "access_muteRequests": "忽略此文档的访问请求", + "access_muteRequests": "静音此文档的访问请求", "allow_label": "访问列表:{0}", "allow_disabled": "禁用", "allow_enabled": "启用", @@ -1868,5 +1868,18 @@ "loadAll": "加载所有工单", "oo_rtChannelMissing": "加载文档时出错。为防止数据损坏或丢失,文档现已设为只读。请使用下方按钮将相关信息发送给支持团队。", "oo_rtChannelMissingDate": "消息已于 {0} 发送", - "oo_rtChannelMissingNoSupport": "加载文档时出错。为防止数据损坏或丢失,文档现已设为只读。请将以下信息发送给您的实例管理员。" + "oo_rtChannelMissingNoSupport": "加载文档时出错。为防止数据损坏或丢失,文档现已设为只读。请将以下信息发送给您的实例管理员。", + "support_moderatorNotification": "{0} 已将您添加为支持团队的审核员", + "crowdfunding_popup_text2": "或者,您也可以在此实例上订阅。", + "form_input_ph_text": "请在此输入您的回答", + "form_input_ph_number": "输入一个数字", + "form_date_time": "选择日期和时间", + "contacts_muted": "已静音", + "contacts_noFriends": "您的联系人列表为空", + "contacts_noFriendsInfo": "请先添加联系人以开始对话。", + "contacts_historyCleared": "所有人的聊天记录已被删除", + "diagram_modesOptionLabel": "将主题更改为 {0},应用将刷新", + "diagram_sketchTheme": "草图", + "diagram_simpleTheme": "简洁", + "diagram_classicTheme": "经典" } diff --git a/www/common/translations/messages.zh_Hant.json.license b/www/common/translations/messages.zh_Hant.json.license new file mode 100644 index 000000000..c487726db --- /dev/null +++ b/www/common/translations/messages.zh_Hant.json.license @@ -0,0 +1,3 @@ +SPDX-FileCopyrightText: 2026 XWiki CryptPad Team and contributors + +SPDX-License-Identifier: AGPL-3.0-or-later diff --git a/www/common/worker.bundle.min.js b/www/common/worker.bundle.min.js index 2ebd34ca7..4cbccf102 100644 --- a/www/common/worker.bundle.min.js +++ b/www/common/worker.bundle.min.js @@ -1 +1 @@ -!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports):"function"==typeof define&&define.amd?define(["exports"],n):n((e="undefined"!=typeof globalThis?globalThis:e||self)["cryptpad-worker-min"]={})}(this,function(e){"use strict";function n(e,n){return n.forEach(function(n){n&&"string"!=typeof n&&!Array.isArray(n)&&Object.keys(n).forEach(function(t){if("default"!==t&&!(t in e)){var r=Object.getOwnPropertyDescriptor(n,t);Object.defineProperty(e,t,r.get?r:{enumerable:!0,get:function(){return n[t]}})}})}),Object.freeze(e)}var t="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function r(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function o(e){if(Object.prototype.hasOwnProperty.call(e,"__esModule"))return e;var n=e.default;if("function"==typeof n){var t=function e(){var t=!1;try{t=this instanceof e}catch{}return t?Reflect.construct(n,arguments,this.constructor):n.apply(this,arguments)};t.prototype=n.prototype}else t={};return Object.defineProperty(t,"__esModule",{value:!0}),Object.keys(e).forEach(function(n){var r=Object.getOwnPropertyDescriptor(e,n);Object.defineProperty(t,n,r.get?r:{enumerable:!0,get:function(){return e[n]}})}),t}var a,i={exports:{}},s={exports:{}},c={exports:{}};function u(){return a||(a=1,function(e){var n;n=function(){var e=function(){},n=function(){return(new Date).getTime()},t=function(e,n,t){e.timeouts.push(setTimeout(n,t))},r=function(n,r){n.ws&&(n.ws.onmessage=e,n.ws.onopen=e,n.ws.close(),r?n.ws.onclose({reason:"offline"}):t(n,function(){n.ws&&n.ws.onclose({reason:"forced closed because websocket failed to close"})},1e4))},o=function(e,n){return!!e.ws&&(e.ws.send(JSON.stringify(n)),!0)},a=function(e,n){return function(e,t){var r=n[e];if(!r)throw new Error("no such event "+e);r.push(t)}},i=function(e,n,t,r){var o=r[n];if(!o)throw new Error("no such event "+n);var a=o.indexOf(t);-1!==a&&o.splice(a,1)},s=function(e,t,r){if(e.channels[t])return new Promise(function(n){n(e.channels[t])});var s=e.queues.p2;1===r?s=e.queues.p1:3===r&&(s=e.queues.p3);var c={queue:s,onMessage:[],onJoin:[],onLeave:[],members:[],jSeq:e.seq++},u={message:c.onMessage,join:c.onJoin,leave:c.onLeave},f={_:c,time:n(),id:t,members:c.members,bcast:function(t){return function(e,t,r){var a=e.channels[t],i=e.seq++,s=[i,"MSG",t,r];if(!a)return new Promise(function(e,n){n({type:"NO_SUCH_CHANNEL",message:JSON.stringify(s)})});var c=o(e,s);return new Promise(function(t,r){c?e.requests[i]={channel:a,reject:r,resolve:t,time:n()}:r({type:"DISCONNECTED",message:JSON.stringify(s)})})}(e,f.id,t)},leave:function(t){return function(e,t,r){if(e.channels[t]){if(delete e.channels[t],e.ws&&1===e.ws.readyState){var a=e.seq++;o(e,[a,"LEAVE",t,r]);var i=function(){};e.requests[a]={reject:i,resolve:i,time:n()}}}else console.debug("no such channel",t)}(e,f.id,t)},on:a(0,u),off:function(e,n){i(0,e,n,u)}};e.requests[c.jSeq]=f;var l=[c.jSeq,"JOIN",t],d=o(e,l);return new Promise(function(e,n){d?(f._.resolve=e,f._.reject=n):n({type:"DISCONNECTED",message:JSON.stringify(l)})})},c=function(t){var r={message:t.onMessage,disconnect:t.onDisconnect,reconnect:t.onReconnect},c={webChannels:t.channels,getLag:function(){return function(e){return e.ws?e.pingOutstanding?Math.max(n()-e.timeOfLastPingSent,e.lastObservedLag):e.lastObservedLag:null}(t)},sendto:function(e,r){return function(e,t,r){var a=e.seq++,i=[a,"MSG",t,r],s=o(e,i);return new Promise(function(t,r){s?e.requests[a]={reject:r,resolve:t,time:n()}:r({type:"DISCONNECTED",message:JSON.stringify(i)})})}(t,e,r)},join:function(e,n){return s(t,e,n)},disconnect:function(){return function(n){if(n.ws){var t=n.ws.onclose;n.ws.onclose=e,n.ws.close(),t({reason:"network.disconnect() called"})}n.timeouts.forEach(clearTimeout),n.timeouts=[]}(t)},on:a(0,r),off:function(e,n){i(0,e,n,r)}};return c.__defineGetter__("webChannels",function(){return Object.keys(t.channels).map(function(e){return t.channels[e]})}),c},u=function(e){if(!e.queues.busy){var n=function(){var t=e.queues.p1.shift()||e.queues.p2.shift()||e.queues.p3.shift();if(t){e.queues.busy=!0;var r=t.h,o=t.msg;Promise.resolve().then(()=>{t.resolve?t.resolve():r.forEach(function(e){try{e(o[4],o[1])}catch(e){console.error(e)}})}).then(n)}else e.queues.busy=!1};n()}};return{connect:function(a,i){i=i||function(e){return new globalThis.WebSocket(e)};var s={ws:null,seq:1,uid:null,network:null,channels:{},onMessage:[],onDisconnect:[],onReconnect:[],timeouts:[],requests:{},pingInterval:null,queues:{p1:[],p2:[],p3:[]},timeOfLastPingSent:-1,timeOfLastPingReceived:-1,timeOfLastMsgReceived:-1,lastObservedLag:0,pingOutstanding:0};s.network=c(s);var f=e,l=e;"undefined"!=typeof window&&window.addEventListener("offline",function(){-1===["localhost","127.0.0.1",""].indexOf(window.location.hostname)&&r(s,!0)});var d=function(){var c=s.ws=i(a);globalThis.cpws=c,s.timeOfLastPingSent=s.timeOfLastPingReceived=n(),s.timeOfLastMsgReceived=n(),c.onmessage=function(e){return function(e,t){var a=void 0;try{a=JSON.parse(t.data)}catch(e){return void console.log(e.stack)}if(e.timeOfLastMsgReceived=n(),0===a[0]){if("IDENT"===a[2])return e.uid=a[3],e.ws._onident(),void(e.pingInterval=setInterval(function(){if(!(n()-e.timeOfLastPingReceived<15e3||(n()-e.timeOfLastMsgReceived>6e4&&r(e),e.pingOutstanding))){var t=e.seq++,a=n();e.timeOfLastPingSent=a,e.pingOutstanding++,e.requests[t]={time:a,ping:a},o(e,[t,"PING"])}},5e3));if(e.uid){if("PING"===a[2])return a[2]="PONG",void o(e,a);if("MSG"===a[2]){var i=void 0,s=e.queues.p2;if(a[3]===e.uid)i=e.onMessage,"number"==typeof a[5]&&(1===a[5]&&(s=e.queues.p1),3===a[5]&&(s=e.queues.p3));else{var c=e.channels[a[3]];if(!c)return void console.log("message to non-existent chan "+JSON.stringify(a));i=c._.onMessage,c._.queue&&(s=c._.queue)}s.push({msg:a,h:i}),u(e)}if("LEAVE"===a[2]){var f=e.channels[a[3]];if(!f)return void(a[1]!==e.uid&&console.log("leaving non-existent chan "+JSON.stringify(a)));var l=f._.members.indexOf(a[1]);-1!==l&&f._.members.splice(l,1),f._.onLeave.forEach(function(e){try{e(a[1],a[4])}catch(e){console.log(e.stack)}})}if("JOIN"===a[2]){var d=e.channels[a[3]];if(!d)return void console.log("ERROR: join to non-existent chan "+JSON.stringify(a));if(-1!==d._.members.indexOf(a[1]))return;var h=-1!==d._.members.indexOf(e.uid);d._.members.push(a[1]),h||a[1]!==e.uid||(d.myID=e.uid,d._.resolve(d)),h&&d._.onJoin.forEach(function(e){try{e(a[1])}catch(e){console.log(e.stack)}})}}}else{var p=e.requests[a[0]];if(!p)return void console.log("error: "+JSON.stringify(a));if(delete e.requests[a[0]],"ACK"===a[1]){if(p.ping)return e.lastObservedLag=n()-Number(p.ping),e.timeOfLastPingReceived=n(),void e.pingOutstanding--;if(p.channel){const n=p.channel;let t=e.queues.p2;return n._.queue&&(t=n._.queue),t.push({msg:a,resolve:p.resolve}),void u(e)}p.resolve()}else if("JACK"===a[1]){if(p._){if(!a[2])throw new Error("wrong type of ACK for channel join");return p.id=a[2],void(e.channels[p.id]=p)}p.resolve()}else if("ERROR"===a[1])if("function"==typeof p.reject)p.reject({type:a[2],message:a[3]});else if(p._&&"function"==typeof p._.reject){if("EJOINED"===a[2]&&!e.channels[a[3]])return p.id=a[3],void(e.channels[p.id]=p);p._.reject({type:a[2],message:a[3]})}else console.error(a);else p.reject({type:"UNKNOWN",message:JSON.stringify(a)})}}(s,e)},c.onclose=function(n){c.onclose=e,clearInterval(s.pingInterval),s.timeouts.forEach(clearTimeout),s.ws=null,s.uid&&(s.uid=null,s.onDisconnect.forEach(function(e){try{e(n.reason)}catch(e){console.log(e.stack)}})),t(s,d,s.uid?0:7e3)},c.onopen=function(){t(s,function(){s.uid||(l({type:"TIMEOUT",message:"waited 30000ms"}),f=l=e,r(s))},3e4)},s.ws._onident=function(){s.timeOfLastPingReceived=n(),s.timeOfLastMsgReceived=n(),s.lastObservedLag=n()-s.timeOfLastPingSent,f!==e?(f(s.network),f=l=e):(s.channels={},s.requests={},s.pingOutstanding=0,s.onReconnect.forEach(function(e){try{e(s.uid)}catch(e){console.log(e.stack)}}))}};return new Promise(function(e,n){f=e,l=n,d()})}}},e.exports?e.exports=n():window.netflux_websocket=n()}(c)),c.exports}function f(e){throw new Error('Could not dynamically require "'+e+'". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.')}var l,d={exports:{}};function h(){return l||(l=1,function(e){!function(e){var n=function(e){var n,t=new Float64Array(16);if(e)for(n=0;n>24&255,e[n+1]=t>>16&255,e[n+2]=t>>8&255,e[n+3]=255&t,e[n+4]=r>>24&255,e[n+5]=r>>16&255,e[n+6]=r>>8&255,e[n+7]=255&r}function v(e,n,t,r,o){var a,i=0;for(a=0;a>>8)-1}function y(e,n,t,r){return v(e,n,t,r,16)}function m(e,n,t,r){return v(e,n,t,r,32)}function g(e,n,t,r){!function(e,n,t,r){for(var o,a=255&r[0]|(255&r[1])<<8|(255&r[2])<<16|(255&r[3])<<24,i=255&t[0]|(255&t[1])<<8|(255&t[2])<<16|(255&t[3])<<24,s=255&t[4]|(255&t[5])<<8|(255&t[6])<<16|(255&t[7])<<24,c=255&t[8]|(255&t[9])<<8|(255&t[10])<<16|(255&t[11])<<24,u=255&t[12]|(255&t[13])<<8|(255&t[14])<<16|(255&t[15])<<24,f=255&r[4]|(255&r[5])<<8|(255&r[6])<<16|(255&r[7])<<24,l=255&n[0]|(255&n[1])<<8|(255&n[2])<<16|(255&n[3])<<24,d=255&n[4]|(255&n[5])<<8|(255&n[6])<<16|(255&n[7])<<24,h=255&n[8]|(255&n[9])<<8|(255&n[10])<<16|(255&n[11])<<24,p=255&n[12]|(255&n[13])<<8|(255&n[14])<<16|(255&n[15])<<24,v=255&r[8]|(255&r[9])<<8|(255&r[10])<<16|(255&r[11])<<24,y=255&t[16]|(255&t[17])<<8|(255&t[18])<<16|(255&t[19])<<24,m=255&t[20]|(255&t[21])<<8|(255&t[22])<<16|(255&t[23])<<24,g=255&t[24]|(255&t[25])<<8|(255&t[26])<<16|(255&t[27])<<24,E=255&t[28]|(255&t[29])<<8|(255&t[30])<<16|(255&t[31])<<24,b=255&r[12]|(255&r[13])<<8|(255&r[14])<<16|(255&r[15])<<24,A=a,O=i,w=s,D=c,_=u,T=f,S=l,N=d,I=h,x=p,C=v,R=y,P=m,k=g,M=E,F=b,L=0;L<20;L+=2)A^=(o=(P^=(o=(I^=(o=(_^=(o=A+P|0)<<7|o>>>25)+A|0)<<9|o>>>23)+_|0)<<13|o>>>19)+I|0)<<18|o>>>14,T^=(o=(O^=(o=(k^=(o=(x^=(o=T+O|0)<<7|o>>>25)+T|0)<<9|o>>>23)+x|0)<<13|o>>>19)+k|0)<<18|o>>>14,C^=(o=(S^=(o=(w^=(o=(M^=(o=C+S|0)<<7|o>>>25)+C|0)<<9|o>>>23)+M|0)<<13|o>>>19)+w|0)<<18|o>>>14,F^=(o=(R^=(o=(N^=(o=(D^=(o=F+R|0)<<7|o>>>25)+F|0)<<9|o>>>23)+D|0)<<13|o>>>19)+N|0)<<18|o>>>14,A^=(o=(D^=(o=(w^=(o=(O^=(o=A+D|0)<<7|o>>>25)+A|0)<<9|o>>>23)+O|0)<<13|o>>>19)+w|0)<<18|o>>>14,T^=(o=(_^=(o=(N^=(o=(S^=(o=T+_|0)<<7|o>>>25)+T|0)<<9|o>>>23)+S|0)<<13|o>>>19)+N|0)<<18|o>>>14,C^=(o=(x^=(o=(I^=(o=(R^=(o=C+x|0)<<7|o>>>25)+C|0)<<9|o>>>23)+R|0)<<13|o>>>19)+I|0)<<18|o>>>14,F^=(o=(M^=(o=(k^=(o=(P^=(o=F+M|0)<<7|o>>>25)+F|0)<<9|o>>>23)+P|0)<<13|o>>>19)+k|0)<<18|o>>>14;A=A+a|0,O=O+i|0,w=w+s|0,D=D+c|0,_=_+u|0,T=T+f|0,S=S+l|0,N=N+d|0,I=I+h|0,x=x+p|0,C=C+v|0,R=R+y|0,P=P+m|0,k=k+g|0,M=M+E|0,F=F+b|0,e[0]=A>>>0&255,e[1]=A>>>8&255,e[2]=A>>>16&255,e[3]=A>>>24&255,e[4]=O>>>0&255,e[5]=O>>>8&255,e[6]=O>>>16&255,e[7]=O>>>24&255,e[8]=w>>>0&255,e[9]=w>>>8&255,e[10]=w>>>16&255,e[11]=w>>>24&255,e[12]=D>>>0&255,e[13]=D>>>8&255,e[14]=D>>>16&255,e[15]=D>>>24&255,e[16]=_>>>0&255,e[17]=_>>>8&255,e[18]=_>>>16&255,e[19]=_>>>24&255,e[20]=T>>>0&255,e[21]=T>>>8&255,e[22]=T>>>16&255,e[23]=T>>>24&255,e[24]=S>>>0&255,e[25]=S>>>8&255,e[26]=S>>>16&255,e[27]=S>>>24&255,e[28]=N>>>0&255,e[29]=N>>>8&255,e[30]=N>>>16&255,e[31]=N>>>24&255,e[32]=I>>>0&255,e[33]=I>>>8&255,e[34]=I>>>16&255,e[35]=I>>>24&255,e[36]=x>>>0&255,e[37]=x>>>8&255,e[38]=x>>>16&255,e[39]=x>>>24&255,e[40]=C>>>0&255,e[41]=C>>>8&255,e[42]=C>>>16&255,e[43]=C>>>24&255,e[44]=R>>>0&255,e[45]=R>>>8&255,e[46]=R>>>16&255,e[47]=R>>>24&255,e[48]=P>>>0&255,e[49]=P>>>8&255,e[50]=P>>>16&255,e[51]=P>>>24&255,e[52]=k>>>0&255,e[53]=k>>>8&255,e[54]=k>>>16&255,e[55]=k>>>24&255,e[56]=M>>>0&255,e[57]=M>>>8&255,e[58]=M>>>16&255,e[59]=M>>>24&255,e[60]=F>>>0&255,e[61]=F>>>8&255,e[62]=F>>>16&255,e[63]=F>>>24&255}(e,n,t,r)}function E(e,n,t,r){!function(e,n,t,r){for(var o,a=255&r[0]|(255&r[1])<<8|(255&r[2])<<16|(255&r[3])<<24,i=255&t[0]|(255&t[1])<<8|(255&t[2])<<16|(255&t[3])<<24,s=255&t[4]|(255&t[5])<<8|(255&t[6])<<16|(255&t[7])<<24,c=255&t[8]|(255&t[9])<<8|(255&t[10])<<16|(255&t[11])<<24,u=255&t[12]|(255&t[13])<<8|(255&t[14])<<16|(255&t[15])<<24,f=255&r[4]|(255&r[5])<<8|(255&r[6])<<16|(255&r[7])<<24,l=255&n[0]|(255&n[1])<<8|(255&n[2])<<16|(255&n[3])<<24,d=255&n[4]|(255&n[5])<<8|(255&n[6])<<16|(255&n[7])<<24,h=255&n[8]|(255&n[9])<<8|(255&n[10])<<16|(255&n[11])<<24,p=255&n[12]|(255&n[13])<<8|(255&n[14])<<16|(255&n[15])<<24,v=255&r[8]|(255&r[9])<<8|(255&r[10])<<16|(255&r[11])<<24,y=255&t[16]|(255&t[17])<<8|(255&t[18])<<16|(255&t[19])<<24,m=255&t[20]|(255&t[21])<<8|(255&t[22])<<16|(255&t[23])<<24,g=255&t[24]|(255&t[25])<<8|(255&t[26])<<16|(255&t[27])<<24,E=255&t[28]|(255&t[29])<<8|(255&t[30])<<16|(255&t[31])<<24,b=255&r[12]|(255&r[13])<<8|(255&r[14])<<16|(255&r[15])<<24,A=0;A<20;A+=2)a^=(o=(m^=(o=(h^=(o=(u^=(o=a+m|0)<<7|o>>>25)+a|0)<<9|o>>>23)+u|0)<<13|o>>>19)+h|0)<<18|o>>>14,f^=(o=(i^=(o=(g^=(o=(p^=(o=f+i|0)<<7|o>>>25)+f|0)<<9|o>>>23)+p|0)<<13|o>>>19)+g|0)<<18|o>>>14,v^=(o=(l^=(o=(s^=(o=(E^=(o=v+l|0)<<7|o>>>25)+v|0)<<9|o>>>23)+E|0)<<13|o>>>19)+s|0)<<18|o>>>14,b^=(o=(y^=(o=(d^=(o=(c^=(o=b+y|0)<<7|o>>>25)+b|0)<<9|o>>>23)+c|0)<<13|o>>>19)+d|0)<<18|o>>>14,a^=(o=(c^=(o=(s^=(o=(i^=(o=a+c|0)<<7|o>>>25)+a|0)<<9|o>>>23)+i|0)<<13|o>>>19)+s|0)<<18|o>>>14,f^=(o=(u^=(o=(d^=(o=(l^=(o=f+u|0)<<7|o>>>25)+f|0)<<9|o>>>23)+l|0)<<13|o>>>19)+d|0)<<18|o>>>14,v^=(o=(p^=(o=(h^=(o=(y^=(o=v+p|0)<<7|o>>>25)+v|0)<<9|o>>>23)+y|0)<<13|o>>>19)+h|0)<<18|o>>>14,b^=(o=(E^=(o=(g^=(o=(m^=(o=b+E|0)<<7|o>>>25)+b|0)<<9|o>>>23)+m|0)<<13|o>>>19)+g|0)<<18|o>>>14;e[0]=a>>>0&255,e[1]=a>>>8&255,e[2]=a>>>16&255,e[3]=a>>>24&255,e[4]=f>>>0&255,e[5]=f>>>8&255,e[6]=f>>>16&255,e[7]=f>>>24&255,e[8]=v>>>0&255,e[9]=v>>>8&255,e[10]=v>>>16&255,e[11]=v>>>24&255,e[12]=b>>>0&255,e[13]=b>>>8&255,e[14]=b>>>16&255,e[15]=b>>>24&255,e[16]=l>>>0&255,e[17]=l>>>8&255,e[18]=l>>>16&255,e[19]=l>>>24&255,e[20]=d>>>0&255,e[21]=d>>>8&255,e[22]=d>>>16&255,e[23]=d>>>24&255,e[24]=h>>>0&255,e[25]=h>>>8&255,e[26]=h>>>16&255,e[27]=h>>>24&255,e[28]=p>>>0&255,e[29]=p>>>8&255,e[30]=p>>>16&255,e[31]=p>>>24&255}(e,n,t,r)}var b=new Uint8Array([101,120,112,97,110,100,32,51,50,45,98,121,116,101,32,107]);function A(e,n,t,r,o,a,i){var s,c,u=new Uint8Array(16),f=new Uint8Array(64);for(c=0;c<16;c++)u[c]=0;for(c=0;c<8;c++)u[c]=a[c];for(;o>=64;){for(g(f,u,i,b),c=0;c<64;c++)e[n+c]=t[r+c]^f[c];for(s=1,c=8;c<16;c++)s=s+(255&u[c])|0,u[c]=255&s,s>>>=8;o-=64,n+=64,r+=64}if(o>0)for(g(f,u,i,b),c=0;c=64;){for(g(c,s,o,b),i=0;i<64;i++)e[n+i]=c[i];for(a=1,i=8;i<16;i++)a=a+(255&s[i])|0,s[i]=255&a,a>>>=8;t-=64,n+=64}if(t>0)for(g(c,s,o,b),i=0;i>>13|t<<3),r=255&e[4]|(255&e[5])<<8,this.r[2]=7939&(t>>>10|r<<6),o=255&e[6]|(255&e[7])<<8,this.r[3]=8191&(r>>>7|o<<9),a=255&e[8]|(255&e[9])<<8,this.r[4]=255&(o>>>4|a<<12),this.r[5]=a>>>1&8190,i=255&e[10]|(255&e[11])<<8,this.r[6]=8191&(a>>>14|i<<2),s=255&e[12]|(255&e[13])<<8,this.r[7]=8065&(i>>>11|s<<5),c=255&e[14]|(255&e[15])<<8,this.r[8]=8191&(s>>>8|c<<8),this.r[9]=c>>>5&127,this.pad[0]=255&e[16]|(255&e[17])<<8,this.pad[1]=255&e[18]|(255&e[19])<<8,this.pad[2]=255&e[20]|(255&e[21])<<8,this.pad[3]=255&e[22]|(255&e[23])<<8,this.pad[4]=255&e[24]|(255&e[25])<<8,this.pad[5]=255&e[26]|(255&e[27])<<8,this.pad[6]=255&e[28]|(255&e[29])<<8,this.pad[7]=255&e[30]|(255&e[31])<<8};function T(e,n,t,r,o,a){var i=new _(a);return i.update(t,r,o),i.finish(e,n),0}function S(e,n,t,r,o,a){var i=new Uint8Array(16);return T(i,0,t,r,o,a),y(e,n,i,0)}function N(e,n,t,r,o){var a;if(t<32)return-1;for(D(e,0,n,0,t,r,o),T(e,16,e,32,t-32,e),a=0;a<16;a++)e[a]=0;return 0}function I(e,n,t,r,o){var a,i=new Uint8Array(32);if(t<32)return-1;if(w(i,0,32,r,o),0!==S(n,16,n,32,t-32,i))return-1;for(D(e,0,n,0,t,r,o),a=0;a<32;a++)e[a]=0;return 0}function x(e,n){var t;for(t=0;t<16;t++)e[t]=0|n[t]}function C(e){var n,t,r=1;for(n=0;n<16;n++)t=e[n]+r+65535,r=Math.floor(t/65536),e[n]=t-65536*r;e[0]+=r-1+37*(r-1)}function R(e,n,t){for(var r,o=~(t-1),a=0;a<16;a++)r=o&(e[a]^n[a]),e[a]^=r,n[a]^=r}function P(e,t){var r,o,a,i=n(),s=n();for(r=0;r<16;r++)s[r]=t[r];for(C(s),C(s),C(s),o=0;o<2;o++){for(i[0]=s[0]-65517,r=1;r<15;r++)i[r]=s[r]-65535-(i[r-1]>>16&1),i[r-1]&=65535;i[15]=s[15]-32767-(i[14]>>16&1),a=i[15]>>16&1,i[14]&=65535,R(s,i,1-a)}for(r=0;r<16;r++)e[2*r]=255&s[r],e[2*r+1]=s[r]>>8}function k(e,n){var t=new Uint8Array(32),r=new Uint8Array(32);return P(t,e),P(r,n),m(t,0,r,0)}function M(e){var n=new Uint8Array(32);return P(n,e),1&n[0]}function F(e,n){var t;for(t=0;t<16;t++)e[t]=n[2*t]+(n[2*t+1]<<8);e[15]&=32767}function L(e,n,t){for(var r=0;r<16;r++)e[r]=n[r]+t[r]}function H(e,n,t){for(var r=0;r<16;r++)e[r]=n[r]-t[r]}function j(e,n,t){var r,o,a=0,i=0,s=0,c=0,u=0,f=0,l=0,d=0,h=0,p=0,v=0,y=0,m=0,g=0,E=0,b=0,A=0,O=0,w=0,D=0,_=0,T=0,S=0,N=0,I=0,x=0,C=0,R=0,P=0,k=0,M=0,F=t[0],L=t[1],H=t[2],j=t[3],K=t[4],U=t[5],B=t[6],V=t[7],Y=t[8],G=t[9],J=t[10],q=t[11],W=t[12],z=t[13],Q=t[14],X=t[15];a+=(r=n[0])*F,i+=r*L,s+=r*H,c+=r*j,u+=r*K,f+=r*U,l+=r*B,d+=r*V,h+=r*Y,p+=r*G,v+=r*J,y+=r*q,m+=r*W,g+=r*z,E+=r*Q,b+=r*X,i+=(r=n[1])*F,s+=r*L,c+=r*H,u+=r*j,f+=r*K,l+=r*U,d+=r*B,h+=r*V,p+=r*Y,v+=r*G,y+=r*J,m+=r*q,g+=r*W,E+=r*z,b+=r*Q,A+=r*X,s+=(r=n[2])*F,c+=r*L,u+=r*H,f+=r*j,l+=r*K,d+=r*U,h+=r*B,p+=r*V,v+=r*Y,y+=r*G,m+=r*J,g+=r*q,E+=r*W,b+=r*z,A+=r*Q,O+=r*X,c+=(r=n[3])*F,u+=r*L,f+=r*H,l+=r*j,d+=r*K,h+=r*U,p+=r*B,v+=r*V,y+=r*Y,m+=r*G,g+=r*J,E+=r*q,b+=r*W,A+=r*z,O+=r*Q,w+=r*X,u+=(r=n[4])*F,f+=r*L,l+=r*H,d+=r*j,h+=r*K,p+=r*U,v+=r*B,y+=r*V,m+=r*Y,g+=r*G,E+=r*J,b+=r*q,A+=r*W,O+=r*z,w+=r*Q,D+=r*X,f+=(r=n[5])*F,l+=r*L,d+=r*H,h+=r*j,p+=r*K,v+=r*U,y+=r*B,m+=r*V,g+=r*Y,E+=r*G,b+=r*J,A+=r*q,O+=r*W,w+=r*z,D+=r*Q,_+=r*X,l+=(r=n[6])*F,d+=r*L,h+=r*H,p+=r*j,v+=r*K,y+=r*U,m+=r*B,g+=r*V,E+=r*Y,b+=r*G,A+=r*J,O+=r*q,w+=r*W,D+=r*z,_+=r*Q,T+=r*X,d+=(r=n[7])*F,h+=r*L,p+=r*H,v+=r*j,y+=r*K,m+=r*U,g+=r*B,E+=r*V,b+=r*Y,A+=r*G,O+=r*J,w+=r*q,D+=r*W,_+=r*z,T+=r*Q,S+=r*X,h+=(r=n[8])*F,p+=r*L,v+=r*H,y+=r*j,m+=r*K,g+=r*U,E+=r*B,b+=r*V,A+=r*Y,O+=r*G,w+=r*J,D+=r*q,_+=r*W,T+=r*z,S+=r*Q,N+=r*X,p+=(r=n[9])*F,v+=r*L,y+=r*H,m+=r*j,g+=r*K,E+=r*U,b+=r*B,A+=r*V,O+=r*Y,w+=r*G,D+=r*J,_+=r*q,T+=r*W,S+=r*z,N+=r*Q,I+=r*X,v+=(r=n[10])*F,y+=r*L,m+=r*H,g+=r*j,E+=r*K,b+=r*U,A+=r*B,O+=r*V,w+=r*Y,D+=r*G,_+=r*J,T+=r*q,S+=r*W,N+=r*z,I+=r*Q,x+=r*X,y+=(r=n[11])*F,m+=r*L,g+=r*H,E+=r*j,b+=r*K,A+=r*U,O+=r*B,w+=r*V,D+=r*Y,_+=r*G,T+=r*J,S+=r*q,N+=r*W,I+=r*z,x+=r*Q,C+=r*X,m+=(r=n[12])*F,g+=r*L,E+=r*H,b+=r*j,A+=r*K,O+=r*U,w+=r*B,D+=r*V,_+=r*Y,T+=r*G,S+=r*J,N+=r*q,I+=r*W,x+=r*z,C+=r*Q,R+=r*X,g+=(r=n[13])*F,E+=r*L,b+=r*H,A+=r*j,O+=r*K,w+=r*U,D+=r*B,_+=r*V,T+=r*Y,S+=r*G,N+=r*J,I+=r*q,x+=r*W,C+=r*z,R+=r*Q,P+=r*X,E+=(r=n[14])*F,b+=r*L,A+=r*H,O+=r*j,w+=r*K,D+=r*U,_+=r*B,T+=r*V,S+=r*Y,N+=r*G,I+=r*J,x+=r*q,C+=r*W,R+=r*z,P+=r*Q,k+=r*X,b+=(r=n[15])*F,i+=38*(O+=r*H),s+=38*(w+=r*j),c+=38*(D+=r*K),u+=38*(_+=r*U),f+=38*(T+=r*B),l+=38*(S+=r*V),d+=38*(N+=r*Y),h+=38*(I+=r*G),p+=38*(x+=r*J),v+=38*(C+=r*q),y+=38*(R+=r*W),m+=38*(P+=r*z),g+=38*(k+=r*Q),E+=38*(M+=r*X),a=(r=(a+=38*(A+=r*L))+(o=1)+65535)-65536*(o=Math.floor(r/65536)),i=(r=i+o+65535)-65536*(o=Math.floor(r/65536)),s=(r=s+o+65535)-65536*(o=Math.floor(r/65536)),c=(r=c+o+65535)-65536*(o=Math.floor(r/65536)),u=(r=u+o+65535)-65536*(o=Math.floor(r/65536)),f=(r=f+o+65535)-65536*(o=Math.floor(r/65536)),l=(r=l+o+65535)-65536*(o=Math.floor(r/65536)),d=(r=d+o+65535)-65536*(o=Math.floor(r/65536)),h=(r=h+o+65535)-65536*(o=Math.floor(r/65536)),p=(r=p+o+65535)-65536*(o=Math.floor(r/65536)),v=(r=v+o+65535)-65536*(o=Math.floor(r/65536)),y=(r=y+o+65535)-65536*(o=Math.floor(r/65536)),m=(r=m+o+65535)-65536*(o=Math.floor(r/65536)),g=(r=g+o+65535)-65536*(o=Math.floor(r/65536)),E=(r=E+o+65535)-65536*(o=Math.floor(r/65536)),b=(r=b+o+65535)-65536*(o=Math.floor(r/65536)),a=(r=(a+=o-1+37*(o-1))+(o=1)+65535)-65536*(o=Math.floor(r/65536)),i=(r=i+o+65535)-65536*(o=Math.floor(r/65536)),s=(r=s+o+65535)-65536*(o=Math.floor(r/65536)),c=(r=c+o+65535)-65536*(o=Math.floor(r/65536)),u=(r=u+o+65535)-65536*(o=Math.floor(r/65536)),f=(r=f+o+65535)-65536*(o=Math.floor(r/65536)),l=(r=l+o+65535)-65536*(o=Math.floor(r/65536)),d=(r=d+o+65535)-65536*(o=Math.floor(r/65536)),h=(r=h+o+65535)-65536*(o=Math.floor(r/65536)),p=(r=p+o+65535)-65536*(o=Math.floor(r/65536)),v=(r=v+o+65535)-65536*(o=Math.floor(r/65536)),y=(r=y+o+65535)-65536*(o=Math.floor(r/65536)),m=(r=m+o+65535)-65536*(o=Math.floor(r/65536)),g=(r=g+o+65535)-65536*(o=Math.floor(r/65536)),E=(r=E+o+65535)-65536*(o=Math.floor(r/65536)),b=(r=b+o+65535)-65536*(o=Math.floor(r/65536)),a+=o-1+37*(o-1),e[0]=a,e[1]=i,e[2]=s,e[3]=c,e[4]=u,e[5]=f,e[6]=l,e[7]=d,e[8]=h,e[9]=p,e[10]=v,e[11]=y,e[12]=m,e[13]=g,e[14]=E,e[15]=b}function K(e,n){j(e,n,n)}function U(e,t){var r,o=n();for(r=0;r<16;r++)o[r]=t[r];for(r=253;r>=0;r--)K(o,o),2!==r&&4!==r&&j(o,o,t);for(r=0;r<16;r++)e[r]=o[r]}function B(e,t){var r,o=n();for(r=0;r<16;r++)o[r]=t[r];for(r=250;r>=0;r--)K(o,o),1!==r&&j(o,o,t);for(r=0;r<16;r++)e[r]=o[r]}function V(e,t,r){var o,a,i=new Uint8Array(32),c=new Float64Array(80),u=n(),f=n(),l=n(),d=n(),h=n(),p=n();for(a=0;a<31;a++)i[a]=t[a];for(i[31]=127&t[31]|64,i[0]&=248,F(c,r),a=0;a<16;a++)f[a]=c[a],d[a]=u[a]=l[a]=0;for(u[0]=d[0]=1,a=254;a>=0;--a)R(u,f,o=i[a>>>3]>>>(7&a)&1),R(l,d,o),L(h,u,l),H(u,u,l),L(l,f,d),H(f,f,d),K(d,h),K(p,u),j(u,l,u),j(l,f,h),L(h,u,l),H(u,u,l),K(f,u),H(l,d,p),j(u,l,s),L(u,u,d),j(l,l,u),j(u,d,p),j(d,f,c),K(f,h),R(u,f,o),R(l,d,o);for(a=0;a<16;a++)c[a+16]=u[a],c[a+32]=l[a],c[a+48]=f[a],c[a+64]=d[a];var v=c.subarray(32),y=c.subarray(16);return U(v,v),j(y,y,v),P(e,y),0}function Y(e,n){return V(e,n,o)}function G(e,n){return t(n,32),Y(e,n)}function J(e,n,t){var o=new Uint8Array(32);return V(o,t,n),E(e,r,o,b)}_.prototype.blocks=function(e,n,t){for(var r,o,a,i,s,c,u,f,l,d,h,p,v,y,m,g,E,b,A,O=this.fin?0:2048,w=this.h[0],D=this.h[1],_=this.h[2],T=this.h[3],S=this.h[4],N=this.h[5],I=this.h[6],x=this.h[7],C=this.h[8],R=this.h[9],P=this.r[0],k=this.r[1],M=this.r[2],F=this.r[3],L=this.r[4],H=this.r[5],j=this.r[6],K=this.r[7],U=this.r[8],B=this.r[9];t>=16;)d=l=0,d+=(w+=8191&(r=255&e[n+0]|(255&e[n+1])<<8))*P,d+=(D+=8191&(r>>>13|(o=255&e[n+2]|(255&e[n+3])<<8)<<3))*(5*B),d+=(_+=8191&(o>>>10|(a=255&e[n+4]|(255&e[n+5])<<8)<<6))*(5*U),d+=(T+=8191&(a>>>7|(i=255&e[n+6]|(255&e[n+7])<<8)<<9))*(5*K),l=(d+=(S+=8191&(i>>>4|(s=255&e[n+8]|(255&e[n+9])<<8)<<12))*(5*j))>>>13,d&=8191,d+=(N+=s>>>1&8191)*(5*H),d+=(I+=8191&(s>>>14|(c=255&e[n+10]|(255&e[n+11])<<8)<<2))*(5*L),d+=(x+=8191&(c>>>11|(u=255&e[n+12]|(255&e[n+13])<<8)<<5))*(5*F),d+=(C+=8191&(u>>>8|(f=255&e[n+14]|(255&e[n+15])<<8)<<8))*(5*M),h=l+=(d+=(R+=f>>>5|O)*(5*k))>>>13,h+=w*k,h+=D*P,h+=_*(5*B),h+=T*(5*U),l=(h+=S*(5*K))>>>13,h&=8191,h+=N*(5*j),h+=I*(5*H),h+=x*(5*L),h+=C*(5*F),l+=(h+=R*(5*M))>>>13,h&=8191,p=l,p+=w*M,p+=D*k,p+=_*P,p+=T*(5*B),l=(p+=S*(5*U))>>>13,p&=8191,p+=N*(5*K),p+=I*(5*j),p+=x*(5*H),p+=C*(5*L),v=l+=(p+=R*(5*F))>>>13,v+=w*F,v+=D*M,v+=_*k,v+=T*P,l=(v+=S*(5*B))>>>13,v&=8191,v+=N*(5*U),v+=I*(5*K),v+=x*(5*j),v+=C*(5*H),y=l+=(v+=R*(5*L))>>>13,y+=w*L,y+=D*F,y+=_*M,y+=T*k,l=(y+=S*P)>>>13,y&=8191,y+=N*(5*B),y+=I*(5*U),y+=x*(5*K),y+=C*(5*j),m=l+=(y+=R*(5*H))>>>13,m+=w*H,m+=D*L,m+=_*F,m+=T*M,l=(m+=S*k)>>>13,m&=8191,m+=N*P,m+=I*(5*B),m+=x*(5*U),m+=C*(5*K),g=l+=(m+=R*(5*j))>>>13,g+=w*j,g+=D*H,g+=_*L,g+=T*F,l=(g+=S*M)>>>13,g&=8191,g+=N*k,g+=I*P,g+=x*(5*B),g+=C*(5*U),E=l+=(g+=R*(5*K))>>>13,E+=w*K,E+=D*j,E+=_*H,E+=T*L,l=(E+=S*F)>>>13,E&=8191,E+=N*M,E+=I*k,E+=x*P,E+=C*(5*B),b=l+=(E+=R*(5*U))>>>13,b+=w*U,b+=D*K,b+=_*j,b+=T*H,l=(b+=S*L)>>>13,b&=8191,b+=N*F,b+=I*M,b+=x*k,b+=C*P,A=l+=(b+=R*(5*B))>>>13,A+=w*B,A+=D*U,A+=_*K,A+=T*j,l=(A+=S*H)>>>13,A&=8191,A+=N*L,A+=I*F,A+=x*M,A+=C*k,w=d=8191&(l=(l=((l+=(A+=R*P)>>>13)<<2)+l|0)+(d&=8191)|0),D=h+=l>>>=13,_=p&=8191,T=v&=8191,S=y&=8191,N=m&=8191,I=g&=8191,x=E&=8191,C=b&=8191,R=A&=8191,n+=16,t-=16;this.h[0]=w,this.h[1]=D,this.h[2]=_,this.h[3]=T,this.h[4]=S,this.h[5]=N,this.h[6]=I,this.h[7]=x,this.h[8]=C,this.h[9]=R},_.prototype.finish=function(e,n){var t,r,o,a,i=new Uint16Array(10);if(this.leftover){for(a=this.leftover,this.buffer[a++]=1;a<16;a++)this.buffer[a]=0;this.fin=1,this.blocks(this.buffer,0,16)}for(t=this.h[1]>>>13,this.h[1]&=8191,a=2;a<10;a++)this.h[a]+=t,t=this.h[a]>>>13,this.h[a]&=8191;for(this.h[0]+=5*t,t=this.h[0]>>>13,this.h[0]&=8191,this.h[1]+=t,t=this.h[1]>>>13,this.h[1]&=8191,this.h[2]+=t,i[0]=this.h[0]+5,t=i[0]>>>13,i[0]&=8191,a=1;a<10;a++)i[a]=this.h[a]+t,t=i[a]>>>13,i[a]&=8191;for(i[9]-=8192,r=(1^t)-1,a=0;a<10;a++)i[a]&=r;for(r=~r,a=0;a<10;a++)this.h[a]=this.h[a]&r|i[a];for(this.h[0]=65535&(this.h[0]|this.h[1]<<13),this.h[1]=65535&(this.h[1]>>>3|this.h[2]<<10),this.h[2]=65535&(this.h[2]>>>6|this.h[3]<<7),this.h[3]=65535&(this.h[3]>>>9|this.h[4]<<4),this.h[4]=65535&(this.h[4]>>>12|this.h[5]<<1|this.h[6]<<14),this.h[5]=65535&(this.h[6]>>>2|this.h[7]<<11),this.h[6]=65535&(this.h[7]>>>5|this.h[8]<<8),this.h[7]=65535&(this.h[8]>>>8|this.h[9]<<5),o=this.h[0]+this.pad[0],this.h[0]=65535&o,a=1;a<8;a++)o=(this.h[a]+this.pad[a]|0)+(o>>>16)|0,this.h[a]=65535&o;e[n+0]=this.h[0]>>>0&255,e[n+1]=this.h[0]>>>8&255,e[n+2]=this.h[1]>>>0&255,e[n+3]=this.h[1]>>>8&255,e[n+4]=this.h[2]>>>0&255,e[n+5]=this.h[2]>>>8&255,e[n+6]=this.h[3]>>>0&255,e[n+7]=this.h[3]>>>8&255,e[n+8]=this.h[4]>>>0&255,e[n+9]=this.h[4]>>>8&255,e[n+10]=this.h[5]>>>0&255,e[n+11]=this.h[5]>>>8&255,e[n+12]=this.h[6]>>>0&255,e[n+13]=this.h[6]>>>8&255,e[n+14]=this.h[7]>>>0&255,e[n+15]=this.h[7]>>>8&255},_.prototype.update=function(e,n,t){var r,o;if(this.leftover){for((o=16-this.leftover)>t&&(o=t),r=0;r=16&&(o=t-t%16,this.blocks(e,n,o),n+=o,t-=o),t){for(r=0;r=128;){for(O=0;O<16;O++)w=8*O+W,x[O]=t[w+0]<<24|t[w+1]<<16|t[w+2]<<8|t[w+3],C[O]=t[w+4]<<24|t[w+5]<<16|t[w+6]<<8|t[w+7];for(O=0;O<80;O++)if(o=R,a=P,i=k,s=M,c=F,u=L,f=H,j,d=K,h=U,p=B,v=V,y=Y,m=G,g=J,q,T=65535&(_=q),S=_>>>16,N=65535&(D=j),I=D>>>16,T+=65535&(_=(Y>>>14|F<<18)^(Y>>>18|F<<14)^(F>>>9|Y<<23)),S+=_>>>16,N+=65535&(D=(F>>>14|Y<<18)^(F>>>18|Y<<14)^(Y>>>9|F<<23)),I+=D>>>16,T+=65535&(_=Y&G^~Y&J),S+=_>>>16,N+=65535&(D=F&L^~F&H),I+=D>>>16,T+=65535&(_=z[2*O+1]),S+=_>>>16,N+=65535&(D=z[2*O]),I+=D>>>16,D=x[O%16],S+=(_=C[O%16])>>>16,N+=65535&D,I+=D>>>16,N+=(S+=(T+=65535&_)>>>16)>>>16,T=65535&(_=A=65535&T|S<<16),S=_>>>16,N=65535&(D=b=65535&N|(I+=N>>>16)<<16),I=D>>>16,T+=65535&(_=(K>>>28|R<<4)^(R>>>2|K<<30)^(R>>>7|K<<25)),S+=_>>>16,N+=65535&(D=(R>>>28|K<<4)^(K>>>2|R<<30)^(K>>>7|R<<25)),I+=D>>>16,S+=(_=K&U^K&B^U&B)>>>16,N+=65535&(D=R&P^R&k^P&k),I+=D>>>16,l=65535&(N+=(S+=(T+=65535&_)>>>16)>>>16)|(I+=N>>>16)<<16,E=65535&T|S<<16,T=65535&(_=v),S=_>>>16,N=65535&(D=s),I=D>>>16,S+=(_=A)>>>16,N+=65535&(D=b),I+=D>>>16,P=o,k=a,M=i,F=s=65535&(N+=(S+=(T+=65535&_)>>>16)>>>16)|(I+=N>>>16)<<16,L=c,H=u,j=f,R=l,U=d,B=h,V=p,Y=v=65535&T|S<<16,G=y,J=m,q=g,K=E,O%16==15)for(w=0;w<16;w++)D=x[w],T=65535&(_=C[w]),S=_>>>16,N=65535&D,I=D>>>16,D=x[(w+9)%16],T+=65535&(_=C[(w+9)%16]),S+=_>>>16,N+=65535&D,I+=D>>>16,b=x[(w+1)%16],T+=65535&(_=((A=C[(w+1)%16])>>>1|b<<31)^(A>>>8|b<<24)^(A>>>7|b<<25)),S+=_>>>16,N+=65535&(D=(b>>>1|A<<31)^(b>>>8|A<<24)^b>>>7),I+=D>>>16,b=x[(w+14)%16],S+=(_=((A=C[(w+14)%16])>>>19|b<<13)^(b>>>29|A<<3)^(A>>>6|b<<26))>>>16,N+=65535&(D=(b>>>19|A<<13)^(A>>>29|b<<3)^b>>>6),I+=D>>>16,I+=(N+=(S+=(T+=65535&_)>>>16)>>>16)>>>16,x[w]=65535&N|I<<16,C[w]=65535&T|S<<16;T=65535&(_=K),S=_>>>16,N=65535&(D=R),I=D>>>16,D=e[0],S+=(_=n[0])>>>16,N+=65535&D,I+=D>>>16,I+=(N+=(S+=(T+=65535&_)>>>16)>>>16)>>>16,e[0]=R=65535&N|I<<16,n[0]=K=65535&T|S<<16,T=65535&(_=U),S=_>>>16,N=65535&(D=P),I=D>>>16,D=e[1],S+=(_=n[1])>>>16,N+=65535&D,I+=D>>>16,I+=(N+=(S+=(T+=65535&_)>>>16)>>>16)>>>16,e[1]=P=65535&N|I<<16,n[1]=U=65535&T|S<<16,T=65535&(_=B),S=_>>>16,N=65535&(D=k),I=D>>>16,D=e[2],S+=(_=n[2])>>>16,N+=65535&D,I+=D>>>16,I+=(N+=(S+=(T+=65535&_)>>>16)>>>16)>>>16,e[2]=k=65535&N|I<<16,n[2]=B=65535&T|S<<16,T=65535&(_=V),S=_>>>16,N=65535&(D=M),I=D>>>16,D=e[3],S+=(_=n[3])>>>16,N+=65535&D,I+=D>>>16,I+=(N+=(S+=(T+=65535&_)>>>16)>>>16)>>>16,e[3]=M=65535&N|I<<16,n[3]=V=65535&T|S<<16,T=65535&(_=Y),S=_>>>16,N=65535&(D=F),I=D>>>16,D=e[4],S+=(_=n[4])>>>16,N+=65535&D,I+=D>>>16,I+=(N+=(S+=(T+=65535&_)>>>16)>>>16)>>>16,e[4]=F=65535&N|I<<16,n[4]=Y=65535&T|S<<16,T=65535&(_=G),S=_>>>16,N=65535&(D=L),I=D>>>16,D=e[5],S+=(_=n[5])>>>16,N+=65535&D,I+=D>>>16,I+=(N+=(S+=(T+=65535&_)>>>16)>>>16)>>>16,e[5]=L=65535&N|I<<16,n[5]=G=65535&T|S<<16,T=65535&(_=J),S=_>>>16,N=65535&(D=H),I=D>>>16,D=e[6],S+=(_=n[6])>>>16,N+=65535&D,I+=D>>>16,I+=(N+=(S+=(T+=65535&_)>>>16)>>>16)>>>16,e[6]=H=65535&N|I<<16,n[6]=J=65535&T|S<<16,T=65535&(_=q),S=_>>>16,N=65535&(D=j),I=D>>>16,D=e[7],S+=(_=n[7])>>>16,N+=65535&D,I+=D>>>16,I+=(N+=(S+=(T+=65535&_)>>>16)>>>16)>>>16,e[7]=j=65535&N|I<<16,n[7]=q=65535&T|S<<16,W+=128,r-=128}return r}function X(e,n,t){var r,o=new Int32Array(8),a=new Int32Array(8),i=new Uint8Array(256),s=t;for(o[0]=1779033703,o[1]=3144134277,o[2]=1013904242,o[3]=2773480762,o[4]=1359893119,o[5]=2600822924,o[6]=528734635,o[7]=1541459225,a[0]=4089235720,a[1]=2227873595,a[2]=4271175723,a[3]=1595750129,a[4]=2917565137,a[5]=725511199,a[6]=4215389547,a[7]=327033209,Q(o,a,n,t),t%=128,r=0;r=0;--o)$(e,n,r=t[o/8|0]>>(7&o)&1),Z(n,e),Z(e,e),$(e,n,r)}function te(e,t){var r=[n(),n(),n(),n()];x(r[0],l),x(r[1],d),x(r[2],i),j(r[3],l,d),ne(e,r,t)}function re(e,r,o){var a,i=new Uint8Array(64),s=[n(),n(),n(),n()];for(o||t(r,32),X(i,r,32),i[0]&=248,i[31]&=127,i[31]|=64,te(s,i),ee(e,s),a=0;a<32;a++)r[a+32]=e[a];return 0}var oe=new Float64Array([237,211,245,92,26,99,18,88,214,156,247,162,222,249,222,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16]);function ae(e,n){var t,r,o,a;for(r=63;r>=32;--r){for(t=0,o=r-32,a=r-12;o>4)*oe[o],t=n[o]>>8,n[o]&=255;for(o=0;o<32;o++)n[o]-=t*oe[o];for(r=0;r<32;r++)n[r+1]+=n[r]>>8,e[r]=255&n[r]}function ie(e){var n,t=new Float64Array(64);for(n=0;n<64;n++)t[n]=e[n];for(n=0;n<64;n++)e[n]=0;ae(e,t)}function se(e,t,r,o){var a,i,s=new Uint8Array(64),c=new Uint8Array(64),u=new Uint8Array(64),f=new Float64Array(64),l=[n(),n(),n(),n()];X(s,o,32),s[0]&=248,s[31]&=127,s[31]|=64;var d=r+64;for(a=0;a>7&&H(e[0],a,e[0]),j(e[3],e[0],e[1]),0)}(d,o))return-1;for(s=0;s=0},e.sign.keyPair=function(){var e=new Uint8Array(le),n=new Uint8Array(de);return re(e,n),{publicKey:e,secretKey:n}},e.sign.keyPair.fromSecretKey=function(e){if(pe(e),e.length!==de)throw new Error("bad secret key size");for(var n=new Uint8Array(le),t=0;t{if(Array.isArray(n))return n.map(e);if(n instanceof Object){let t=[],r=[];return Object.keys(n).forEach(e=>{/^(0|[1-9][0-9]*)$/.test(e)?t.push(+e):r.push(e)}),t.sort(function(e,n){return e-n}).concat(r.sort()).reduce((t,r)=>(t[r]=e(n[r]),t),{})}return n},n=JSON.stringify.bind(JSON);return y=(t,r,o)=>{let a=n(t,r,0);if(!a||"{"!==a[0]&&"["!==a[0])return a;let i=JSON.parse(a);return n(e(i),null,o)}}())}function T(){return b||(b=1,function(e){e.exports&&(e.exports=function(e,n){const t=globalThis;var r,o={},a=void 0===t.Proxy,i=o.DeepProxy=function(){var e={},r=e.isArray=Array.isArray||function(e){return"[object Array]"===Object.toString(e)},o=e.type=function(e){return null===e?"null":r(e)?"array":typeof e},i=e.isProxyable=function(e,n){return(void 0!==n||!a)&&-1!==["object","array"].indexOf(o(e))},s=e.set=function(n){return function(t,r,o){if("on"===r)throw new Error("'on' is a reserved attribute name for realtime lists and maps");return i(o)?t[r]=e.create(o,n):t[r]=o,n(),t[r]||!0}},c=e.pathMatches=function(e,n){return!n.some(function(n,t){return n!==e[t]})},u=function(e,n){return n.pattern.length-e.pattern.length},f=function(e){return function(n,t,r){switch(n){case"change":t="array"===o(t)?t:[t],e.change.push({cb:function(e,n,o,a){if(c(o,t))return r(e,n,o,a)},pattern:t}),e.change.sort(u);break;case"remove":t="array"===o(t)?t:[t],e.remove.push({cb:function(e,n,o){if(c(n,t))return r(e,n,o)},pattern:t}),e.remove.sort(u);break;case"ready":e.ready.push({cb:function(e){t(e)}});break;case"cacheready":e.cacheready.push({cb:function(e){t(e)}});break;case"disconnect":e.disconnect.push({cb:function(e){t(e)}});break;case"reconnect":e.reconnect.push({cb:function(e){t(e)}});break;case"create":e.create.push({cb:function(e){t(e)}});break;case"error":e.error.push({cb:function(e){t(e)}})}return this}},l=e.get=function(){var e={cacheready:[],disconnect:[],reconnect:[],change:[],ready:[],remove:[],create:[],error:[]};return function(n,t){return"on"===t?f(e):"_isProxy"===t||("_events"===t?e:n[t])}},d=e.delete=function(e){return function(n,t){return void 0===n[t]||(delete n[t],e()),!0}},h=e.handlers=function(e,n){return n?{set:s(e),get:l(e),deleteProperty:d(e)}:{set:s(e),get:function(e,n){return"_isProxy"===n||e[n]},deleteProperty:d(e)}},p=e.remoteChangeFlag=!1,v=e.stringifyFakeProxy=function(e){var t=JSON.parse(n(e));return delete t._events,delete t._isProxy,n(t)};e.checkLocalChange=function(n,r){if(a&&!e.interval){var o=v(n);e.interval=t.setInterval(function(){var e=v(n);e!==o&&(o=e,p?p=!1:r())},300)}};var y=e.create=function(e,n,r){var s="function"===o(n)?h(n,r):n;switch(o(e)){case"object":Object.keys(e).forEach(function(t){i(e[t])&&!e[t]._isProxy&&(e[t]=y(e[t],n))});break;case"array":e.forEach(function(t,r){i(t)&&!t._isProxy&&(e[r]=y(e[r],n))});break;default:throw new Error("attempted to make a proxy of an unproxyable object")}if(!a)return e._isProxy?e:new t.Proxy(e,s);var c=JSON.parse(JSON.stringify(e));if(r){var u={cacheready:[],disconnect:[],reconnect:[],change:[],ready:[],remove:[],create:[],error:[]};c.on=f(u),c._events=u}return c},m=function(e,n,t,r,o){var a=e.slice(0);a.push(n),t._events.change.some(function(e){return!1===e.cb(r,o,a,t)})},g=e.find=function(e,n){for(var t=n.length,r=0;rs)for(var c,u=s;u<=s;u++)c=e[u],E(r,u,a,c,!0);e.length=s}};return e.update=function(e,n,t){var r=o(e),a=o(n);if(r!==a)throw new Error("Proxy updates can't result in type changes");switch(a){case"array":A.call(e,e,n,function(e){return y(e,t)},[],e);break;case"object":b.call(e,e,n,function(e){return y(e,t)},[],e);break;default:throw new Error("unsupported realtime datatype:"+a)}},e}();return o.create=function(o){if(!i.isProxyable(o.data,!0))throw new Error("unsupported datatype: "+i.type(o.data));if("function"!=typeof(r=o.ChainPad||t.ChainPad).SmartJSONTransformer)throw new Error("Please update ChainPad");o.classic&&!o.crypto&&(console.error("[chainpad-listmap] no crypto module provided. messages will not be encrypted"),o.crypto={encrypt:function(e){return e},decrypt:function(e){return e}});var s=o.readOnly,c={initialState:n(o.data),patchTransformer:r.SmartJSONTransformer,validateContent:o.validateContent||function(e){try{return JSON.parse(e),!0}catch(n){return console.log(e),console.error("Failed to parse, rejecting patch"),!1}},readOnly:o.readOnly,userName:o.userName||"listmap",Cache:o.Cache,logLevel:void 0===o.logLevel?0:o.logLevel};o.classic&&(c.channel=o.channel,c.crypto=o.crypto,c.network=o.network,c.websocketURL=o.websocketURL,c.metadata=o.metadata||{validateKey:o.validateKey,owners:o.owners,expire:o.expire},c.onRejected=o.onRejected);var u,f,l,d={metadata:{}},h=!0,p=!1,v=a?i.stringifyFakeProxy:n,y=function(){var e=v(f);try{u.contentUpdate(e)}catch(e){f._events.error.forEach(function(n){n.cb({type:"CHAINPAD",error:e.message})})}o.onLocal&&o.onLocal()},m=c.onLocal=function(e){h||s||(clearTimeout(l),e?y():l=setTimeout(y))},g=function(){i.remoteChangeFlag||m()};f=i.create(o.data,g,!0),c.onInit=function(e){f._events.create.forEach(function(n){n.cb(e)})},c.onCacheReady=function(e){u&&u===e.realtime||(u=d.realtime=e.realtime);var n=u.getUserDoc(),t=JSON.parse(n);i.update(f,t,g),i.checkLocalChange(f,m),p||f._events.cacheready.forEach(function(n){n.cb(e)})};var E=0;c.onReady=function(e){if(E=-1,p)return h=!1,c.onRemote(),void f._events.reconnect.forEach(function(n){n.cb(e)});u&&u===e.realtime||(u=d.realtime=e.realtime),d.metadata=e.metadata;var n=u.getUserDoc(),t=JSON.parse(n);i.update(f,t,g),i.checkLocalChange(f,m),h=!1,p=!0,f._events.ready.forEach(function(n){n.cb(e)})},c.onRemote=function(){if(!h){var e=u.getUserDoc(),n=JSON.parse(e);i.remoteChangeFlag=!0,i.update(f,n,g),i.remoteChangeFlag=!1}},c.onMessage=function(){-1!==E&&o.updateProgress&&o.updateProgress({progress:E++})},c.onAbort=function(e){f._events.disconnect.forEach(function(n){n.cb(e)})},c.onConnectionChange=function(e){e.state?h=!0:f._events.disconnect.forEach(function(n){n.cb(e)})},c.onMetadataUpdate=function(e){d.metadata=e,"function"==typeof o.onMetadataUpdate&&o.onMetadataUpdate(e)},c.onError=function(e){f._events.error.forEach(function(n){n.cb(e)})},c.onChannelError=function(e){f._events.error.forEach(function(n){n.cb(e)})},o.common&&"function"==typeof o.common.startRealtime?u=d.cpCnInner=o.common.startRealtime(c):d=e.start(c),d.proxy=f,d.realtime=u;var b=d.setReadOnly;return d.setReadOnly=function(e,n){s=e,b&&b(e,n)},d},o}(D(),_()))}(i)),i.exports}var S,N=T(),I={exports:{}};function x(){return S||(S=1,function(e){var n,r,o,a;a=function(){var e=f,n=function(t,r,o){r||(r=0);var a=n.resolve(t,r),i=n.m[r][a];if(!i&&e){if(i=e(a))return i}else if(i&&i.c&&(r=i.c,a=i.m,!(i=n.m[r][i.m])))throw new Error('failed to require "'+a+'" from '+r);if(!i)throw new Error('failed to require "'+t+'" from '+o);return i.exports||(i.exports={},i.call(i.exports,i,i.exports,n.relative(a,r))),i.exports};return n.resolve=function(e,t){var r=e,o=e+".js",a=e+"/index.js";return n.m[t][o]&&o?o:n.m[t][a]&&a?a:r},n.relative=function(e,t){return function(r){if("."!=r.charAt(0))return n(r,t,e);var o=e.split("/"),a=r.split("/");o.pop();for(var i=0;i=0;t--)o.check(e.operations[t],n),t>0&&r.assert(!o.shouldMerge(e.operations[t],e.operations[t-1])),"number"==typeof n&&(n+=o.lengthChange(e.operations[t]));return e.isCheckpoint&&(r.assert(1===e.operations.length),r.assert(0===e.operations[0].offset),"number"==typeof n&&r.assert(!n||e.operations[0].toRemove===n)),e};i.toObj=function(e){r.PARANOIA&&c(e);var n,t=new Array(e.operations.length+1);for(n=0;n0);var t,i=s(a.check(e[e.length-1]),n);for(t=0;t=0;t--)f(e,n.operations[t]);return e},i.apply=function(e,n){r.PARANOIA&&(c(e),r.assert("string"==typeof n),r.assert(a.hex_sha256(n)===e.parentHash));for(var t=n,i=e.operations.length-1;i>=0;i--)t=o.apply(e.operations[i],t);return t},i.lengthChange=function(e){r.PARANOIA&&c(e);for(var n=0,t=0;t=0;u--)i[u]=o.invert(e.operations[u],t),t=o.apply(e.operations[u],t);var f=new Array(e.operations.length);!function(){for(var e=i.length-1;e>=0;e--){f[e]=i[e].offset;for(var n=e-1;n>=0;n--)f[e]+=i[n].toRemove-i[n].toInsert.length}}();var l=s(a.hex_sha256(t),e.isCheckpoint);l.operations.splice(0,l.operations.length);for(var d=0;d=0;d--){var h=t(e.operations[d],u,o.simplify);h&&(u=o.apply(h,u),f[l++]=h)}return Array.prototype.push.apply(i.operations,f.reverse()),i.operations[0]||i.operations.shift(),r.PARANOIA&&c(i),i},i.equals=function(e,n){if(e.operations.length!==n.operations.length)return!1;for(var t=0;t0;){var u=o.random(i);i+=o.lengthChange(u),f(t,u)}return c(t),t},Object.freeze(e.exports)},"SHA256.js":function(e,n,t){!function(){function n(e,n){var t=(65535&e)+(65535&n);return(e>>16)+(n>>16)+(t>>16)<<16|65535&t}function t(e,n){return e>>>n|e<<32-n}function r(e,n){return e>>>n}function o(e,n,t){return e&n^~e&t}function a(e,n,t){return e&n^e&t^n&t}function i(e){return t(e,2)^t(e,13)^t(e,22)}function s(e){return t(e,6)^t(e,11)^t(e,25)}function c(e){return t(e,7)^t(e,18)^r(e,3)}function u(e){return t(e,17)^t(e,19)^r(e,10)}e.exports.hex_sha256=function(e){return function(e){for(var n="0123456789abcdef",t="",r=0;r<4*e.length;r++)t+=n.charAt(e[r>>2]>>8*(3-r%4)+4&15)+n.charAt(e[r>>2]>>8*(3-r%4)&15);return t}(function(e,t){var r,f,l,d,h,p,v,y,m,g,E=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298],b=[1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225],A=function(e){for(var n=[];e>0;e--)n.push(void 0);return n}(64);e[t>>5]|=128<<24-t%32,e[15+(t+64>>9<<4)]=t;for(var O=0;O>5]|=(255&e.charCodeAt(t/8))<<24-t%32;return n}(e),8*e.length))}}()},"Common.js":function(e,n,r){e.exports.global=function(){if("undefined"!=typeof self)return self;if(void 0!==t)return t;if("undefined"!=typeof window)return window;throw new Error("no self, nor global, nor window")}();var o=function(n){return"undefined"!=typeof localStorage&&localStorage[n]?localStorage[n]:e.exports.global[n]},a=e.exports.PARANOIA=o("ChainPad_PARANOIA");e.exports.VALIDATE_ENTIRE_CHAIN_EACH_MSG=o("ChainPad_VALIDATE_ENTIRE_CHAIN_EACH_MSG"),e.exports.TESTING=o("ChainPad_TESTING"),e.exports.assert=function(e){if(!e)throw new Error("Failed assertion")},e.exports.isUint=function(e){return"number"==typeof e&&Math.floor(e)===e&&e>=0},e.exports.randomASCII=function(e){for(var n=[],t=0;tn?1:-1},Object.freeze(e.exports)},"sha256.js":function(e,n,t){var r=t("./sha256/exports.js"),o=t("./SHA256.js"),a=t("./Common");e.exports.check=function(e){if("string"!=typeof e)throw new Error;if(!/[a-f0-9]{64}/.test(e))throw new Error;return e},e.exports.hex_sha256=function(e){e+="";var n=r.hex(function(e){for(var n=new Uint8Array(e.length),t=0;t1&&console.log("["+e.userName+"] "+n)},d=function(e,n){e.logLevel>0&&console.error("["+e.userName+"] "+n)},h=function(e,n,t){if(!e.aborted){t||(t=Math.floor(2*Math.random()*e.config.avgSyncMilliseconds));var r=setTimeout(function(){e.schedules.splice(e.schedules.indexOf(r),1),n()},t);return e.schedules.push(r),r}},p=function(e,n){var t=e.schedules.indexOf(n);t>-1&&e.schedules.splice(t,1),clearTimeout(n)},v=function(e,n,t,o){var a=i.toStr(n);if(function(e,n,t){e.messageHandlers.length||t("no onMessage() handler registered");try{e.messageHandlers.forEach(function(e){e(n,function(){t.apply(null,arguments),t=function(){}})})}catch(e){t(e.stack)}}(e,a,function(t){if(t)l(e,"Posting to server failed ["+t+"]"),e.pending=null,e.syncSchedule=h(e,function(){g(e)});else{var o=e.pending;if(e.pending=null,!o)throw new Error;r.assert(o.hash===n.hashOf),R(e,a,!0)?(e.timeOfLastSuccess=+new Date,e.lag=+new Date-o.timeSent):l(e,"Our message ["+n.hashOf+"] failed validation"),o.callback()}}),e.pending)throw new Error("there is already a pending message");-1===e.timeOfLastSuccess&&(e.timeOfLastSuccess=+new Date),e.pending={hash:n.hashOf,timeSent:+new Date,callback:function(){e.syncSchedule=h(e,function(){g(e)},0),t()}},r.PARANOIA&&O(e)},y=function(e){var n=e.onSettle;e.onSettle=[],n.forEach(function(n){try{n()}catch(n){d(e,"Error in onSettle handler ["+n.stack+"]")}})},m=function(e){if(!e.mut.inverseOf)throw new Error;return e.mut.inverseOf},g=function(e,n){if(r.PARANOIA&&O(e),e.syncSchedule&&!e.pending){if(p(e,e.syncSchedule),e.syncSchedule=null,e.uncommitted=a.simplify(e.uncommitted,e.authDoc,e.config.operationSimplify),0===e.uncommitted.operations.length)return y(e),e.timeOfLastSuccess=+new Date,void(e.syncSchedule=h(e,function(){g(e)}));var t=_(e,e.best)+1;if(t%e.config.checkpointInterval!==0){var o;o=e.setContentPatch?e.setContentPatch:i.create(i.PATCH,e.uncommitted,e.best.hashOf),v(e,o,function(){e.setContentPatch&&(l(e,"initial Ack received ["+o.hashOf+"]"),e.setContentPatch=null)})}else{var s=e.best;if(l(e,"Sending checkpoint (interval ["+e.config.checkpointInterval+"]) patch no ["+t+"]"),l(e,_(e,e.best)),!s||!s.content||!m(s.content))throw new Error;var c=a.createCheckpoint(e.authDoc,e.authDoc,m(s.content).parentHash),u=i.create(i.CHECKPOINT,c,s.hashOf);v(e,u,function(){l(e,"Checkpoint sent and accepted")})}}},E=function(e,n){r.assert(n.lastMsgHash),r.assert(n.hashOf),e.messages[n.hashOf]=n,(e.messagesByParent[n.lastMsgHash]=e.messagesByParent[n.lastMsgHash]||[]).push(n)},b=function(e,n){r.assert(n.lastMsgHash),r.assert(n.hashOf),delete e.messages[n.hashOf];var t=e.messagesByParent[n.lastMsgHash];r.assert(t.indexOf(n)>-1),t.splice(t.indexOf(n),1),0===t.length&&delete e.messagesByParent[n.lastMsgHash];var o=e.messagesByParent[n.hashOf];if(o)for(var a=0;a_(e,t)&&(t=o)}),t},N=function(e,n){n.operations.length&&(e.patchHandlers.forEach(function(e){e(n)}),e.changeHandlers.forEach(function(e){n.operations.forEach(function(n){e(n.offset,n.toRemove,n.toInsert)})}))},I=function(e,n){try{return e.config.validateContent(n())}catch(n){d(e,"Error in content validator ["+n.stack+"]")}return!1},x=function(e,n,t){for(var r=A(e,n);r;r=A(e,r))if(!1===t(r))return},C=function(e,n){e.mut.inverseOf||((e.mut.inverseOf=a.invert(e,n)).mut.inverseOf=e)},R=function(e,n,t){r.PARANOIA&&O(e);var c=i.fromString(n);if(l(e,JSON.stringify([c.hashOf,c.content.operations])),e.messages[c.hashOf]){if(e.setContentPatch&&e.setContentPatch.hashOf===c.hashOf)e.setContentPatch=null;else{if(c.content.isCheckpoint)return l(e,"["+(t?"our":"their")+"] Checkpoint ["+c.hashOf+"] is already known"),!0;l(e,"Patch ["+c.hashOf+"] is already known")}r.PARANOIA&&O(e)}else if(!c.content.isCheckpoint||I(e,function(){return c.content.operations[0].toInsert})){if(E(e,c),!D(e,e.rootMessage,c)){if(c.content.isCheckpoint&&e.best.mut.isInitialMessage){l(e,"applying checkpoint ["+c.hashOf+"]");var u=a.apply(e.uncommitted,e.authDoc);r.assert(!r.PARANOIA||e.userInterfaceContent===u);var f=a.invert(e.uncommitted,e.authDoc);return a.addOperation(f,o.create(0,e.authDoc.length,c.content.operations[0].toInsert)),f=a.simplify(f,u,e.config.operationSimplify),c.mut.parentCount=0,e.rootMessage=e.best=c,e.authDoc=c.content.operations[0].toInsert,e.uncommitted=a.create(s.hex_sha256(e.authDoc)),N(e,f),r.PARANOIA&&(e.userInterfaceContent=e.authDoc),!0}return l(e,"Patch ["+c.hashOf+"] not connected to root (parent: ["+c.lastMsgHash+"])"),void(r.PARANOIA&&O(e))}(c=S(e,c)).mut.isFromMe=t;var d=c.content,h=[],p=e.best;if(!D(e,e.best,c)){var v=_(e,e.best),g=_(e,c);if(!(v0))return l(e,"Patch ["+c.hashOf+"] chain is ["+g+"] best chain is ["+v+"]"),r.PARANOIA&&O(e),!0;for(;p&&!D(e,p,c);)h.push(p),p=A(e,p);r.assert(p),l(e,"Patch ["+c.hashOf+"] better than best chain, switching")}var R=[],P=c;do{R.unshift(P),P=A(e,P),r.assert(P)}while(P!==p);var k=e.authDoc;h.forEach(function(e){k=a.apply(m(e.content),k)}),R.forEach(function(e,n){n!==R.length-1&&(C(e.content,k),k=a.apply(e.content,k))});var M=e.best;if(R.length>1?(M=R[R.length-2],r.assert(M)):h.length&&(M=A(e,h[h.length-1]),r.assert(M)),r.assert(m(M.content).parentHash),r.assert(!r.PARANOIA||m(M.content).parentHash===s.hex_sha256(k)),m(M.content).parentHash===d.parentHash){if(d.isCheckpoint&&e.config.noPrune);else if(d.isCheckpoint){var F;if(x(e,c,function(e){if(e.content.isCheckpoint){if(F)return F=e,!1;F=e}}),F&&F!==e.rootMessage){var L=_(e,F);if(e.config.strictCheckpointValidation&&L%e.config.checkpointInterval!==0){if(l(e,"checkpoint ["+c.hashOf+"] at invalid point ["+L+"]"),r.PARANOIA&&O(e),r.TESTING)throw new Error;return void b(e,c)}l(e,"checkpoint ["+c.hashOf+"]"),x(e,F,function(n){l(e,"pruning ["+n.hashOf+"]"),b(e,n)}),e.rootMessage=F}}else{var H=a.simplify(d,k,e.config.operationSimplify);if(!a.equals(H,d)){if(l(e,"patch ["+c.hashOf+"] can be simplified"),r.PARANOIA&&O(e),r.TESTING)throw new Error;return void b(e,c)}if(!I(e,function(){return a.apply(d,k)}))return void l(e,"Patch ["+c.hashOf+"] failed content validation")}C(d,k),e.uncommitted=a.simplify(e.uncommitted,e.authDoc,e.config.operationSimplify);var j=a.apply(e.uncommitted,e.authDoc);r.PARANOIA&&r.assert(j===e.userInterfaceContent);var K=a.invert(e.uncommitted,e.authDoc);if(h.forEach(function(n){l(e,"reverting ["+n.hashOf+"]"),n.mut.isFromMe&&l(e,"reverting patch 'from me' ["+JSON.stringify(n.content.operations)+"]"),K=a.merge(K,m(n.content)),function(e,n,t){T(e,n,m(t))}(e,n.mut.isFromMe,n.content)}),R.forEach(function(n){l(e,"applying ["+n.hashOf+"]"),K=a.merge(K,n.content),T(e,n.mut.isFromMe,n.content)}),K=a.merge(K,e.uncommitted),K=a.simplify(K,j,e.config.operationSimplify),e.best=c,r.PARANOIA){var U=a.apply(K,j);r.assert(e.userInterfaceContent.length===w(e)),r.assert(U===e.userInterfaceContent)}return N(e,K),e.uncommitted.operations.length||y(e),r.PARANOIA&&O(e),!0}if(l(e,"patch ["+c.hashOf+"] parentHash is not valid"),r.PARANOIA&&O(e),r.TESTING)throw new Error;b(e,c)}else l(e,"Checkpoint ["+c.hashOf+"] failed content validation")},P=function(e,n){return Object.freeze({type:"Block",hashOf:n.hashOf,lastMsgHash:n.lastMsgHash,isCheckpoint:!!n.content.isCheckpoint,isFromMe:n.mut&&n.mut.isFromMe,author:n.mut&&n.mut.author,serverHash:n.mut&&n.mut.serverHash,time:n.mut&&n.mut.time,getParent:function(){var t=A(e,n);if(t)return P(e,t)},getContent:function(){return function(e,n){for(var t=[n];t[0]!==e.rootMessage;){var o=A(e,t[0]);if(!o)return{error:"not connected to root",doc:void 0};t.unshift(o)}var i="";e.rootMessage.content.operations.length&&(r.assert(1===e.rootMessage.content.operations.length),i=e.rootMessage.content.operations[0].toInsert);for(var s=1;s=0;t--)n=s(e[t],n);return n};var c=o.invert=function(e,n){return r.PARANOIA&&(a(e),r.assert("string"==typeof n),r.assert(e.offset+e.toRemove<=n.length)),i(e.offset,e.toInsert.length,(" "+n.substring(e.offset,e.offset+e.toRemove)).slice(1))},u=/[\uD800-\uDBFF]|[\uDC00-\uDFFF]/,f=o.hasSurrogate=function(e){return u.test(e)};o.simplify=function(e,n){r.PARANOIA&&(a(e),r.assert("string"==typeof n),r.assert(e.offset+e.toRemove<=n.length));for(var t=c(e,n),o=Math.min(e.toInsert.length,t.toInsert.length),s=0;s=0&&h[s]===d[s];s--);d=d.substring(0,s+1),l=s+1}return 0===l&&0===d.length?null:i(u,l,d)},o.equals=function(e,n){return e.toRemove===n.toRemove&&e.toInsert===n.toInsert&&e.offset===n.offset},o.lengthChange=function(e){return r.PARANOIA&&a(e),e.toInsert.length-e.toRemove},o.merge=function(e,n){r.PARANOIA&&(a(n),a(e));var t=e.offset,o=e.toRemove,s=e.toInsert,c=n.offset,u=n.toRemove,f=n.toInsert,l=c-t;if(u>0){var d=s;s=s.substring(0,l)+s.substring(l+u),(u-=d.length-s.length)<0&&(u=0),o+=u,u=0}if(l<0)t+=l,s=f+s;else if(s.length===l)s+=f;else{if(!(s.length>l))throw new Error("should never happen\n"+JSON.stringify([e,n],null," "));s=s.substring(0,l)+f+s.substring(l)}return""===s&&0===o?null:i(t,o,s)},o.shouldMerge=function(e,n){return r.PARANOIA&&(a(e),a(n)),n.offset0;)a+=c=r._heap_write(t,o+a,e,i,s),i+=c,s-=c,o+=c=n.process(o,a),(a-=c)||(o=0);return this.pos=o,this.len=a,this},e.exports.hash_finish=function(){if(null!==this.result)throw new IllegalStateError("state must be reset before processing new data");return this.asm.finish(this.pos,this.len,0),this.result=new Uint8Array(this.HASH_SIZE),this.result.set(this.heap.subarray(0,this.HASH_SIZE)),this.pos=0,this.len=0,this}},"sha256/utils.js":function(e,n,t){var r=e.exports.string_to_bytes=function(e,n){n=!!n;for(var t=e.length,r=new Uint8Array(n?4*t:t),o=0,a=0;o=t)throw new Error("Malformed string, low surrogate expected at position "+o);i=(55296^i)<<10|65536|56320^e.charCodeAt(o)}else if(!n&&i>>>8)throw new Error("Wide characters are not allowed.");!n||i<=127?r[a++]=i:i<=2047?(r[a++]=192|i>>6,r[a++]=128|63&i):i<=65535?(r[a++]=224|i>>12,r[a++]=128|i>>6&63,r[a++]=128|63&i):(r[a++]=240|i>>18,r[a++]=128|i>>12&63,r[a++]=128|i>>6&63,r[a++]=128|63&i)}return r.subarray(0,a)};e.exports.hex_to_bytes=function(e){var n=e.length;1&n&&(e="0"+e,n++);for(var t=new Uint8Array(n>>1),r=0;r>1]=parseInt(e.substr(r,2),16);return t},e.exports.base64_to_bytes=function(e){return r(atob(e))};var o=e.exports.bytes_to_string=function(e,n){n=!!n;for(var t=e.length,r=new Array(t),o=0,a=0;o=192&&i<224&&o+1=224&&i<240&&o+2=240&&i<248&&o+3>10,r[a++]=56320|1023&s)}}for(var c="",u=16384,f=0;f>>1,e|=e>>>2,e|=e>>>4,e|=e>>>8,e|=e>>>16,e+=1},e.exports.is_number=function(e){return"number"==typeof e},e.exports.is_string=function(e){return"string"==typeof e},e.exports.is_buffer=function(e){return e instanceof ArrayBuffer},e.exports.is_bytes=function(e){return e instanceof Uint8Array},e.exports.is_typed_array=function(e){return e instanceof Int8Array||e instanceof Uint8Array||e instanceof Int16Array||e instanceof Uint16Array||e instanceof Int32Array||e instanceof Uint32Array||e instanceof Float32Array||e instanceof Float64Array},e.exports._heap_init=function(e,n){var t=n.heap,r=t?t.byteLength:n.heapSize||65536;if(4095&r||r<=0)throw new Error("heap size must be a positive integer and a multiple of 4096");return t=t||new e(new ArrayBuffer(r))},e.exports._heap_write=function(e,n,t,r,o){var a=e.length-n,i=a>>6^N>>>11^N>>>25^N<<26^N<<21^N<<7)+(x^N&(I^x))+0x428a2f98|0;C=x;x=I;I=N;N=S+R|0;S=T;T=_;_=D;D=R+(_&T^S&(_^T))+(_>>>2^_>>>13^_>>>22^_<<30^_<<19^_<<10)|0;R=n+C+(N>>>6^N>>>11^N>>>25^N<<26^N<<21^N<<7)+(x^N&(I^x))+0x71374491|0;C=x;x=I;I=N;N=S+R|0;S=T;T=_;_=D;D=R+(_&T^S&(_^T))+(_>>>2^_>>>13^_>>>22^_<<30^_<<19^_<<10)|0;R=t+C+(N>>>6^N>>>11^N>>>25^N<<26^N<<21^N<<7)+(x^N&(I^x))+0xb5c0fbcf|0;C=x;x=I;I=N;N=S+R|0;S=T;T=_;_=D;D=R+(_&T^S&(_^T))+(_>>>2^_>>>13^_>>>22^_<<30^_<<19^_<<10)|0;R=l+C+(N>>>6^N>>>11^N>>>25^N<<26^N<<21^N<<7)+(x^N&(I^x))+0xe9b5dba5|0;C=x;x=I;I=N;N=S+R|0;S=T;T=_;_=D;D=R+(_&T^S&(_^T))+(_>>>2^_>>>13^_>>>22^_<<30^_<<19^_<<10)|0;R=d+C+(N>>>6^N>>>11^N>>>25^N<<26^N<<21^N<<7)+(x^N&(I^x))+0x3956c25b|0;C=x;x=I;I=N;N=S+R|0;S=T;T=_;_=D;D=R+(_&T^S&(_^T))+(_>>>2^_>>>13^_>>>22^_<<30^_<<19^_<<10)|0;R=h+C+(N>>>6^N>>>11^N>>>25^N<<26^N<<21^N<<7)+(x^N&(I^x))+0x59f111f1|0;C=x;x=I;I=N;N=S+R|0;S=T;T=_;_=D;D=R+(_&T^S&(_^T))+(_>>>2^_>>>13^_>>>22^_<<30^_<<19^_<<10)|0;R=p+C+(N>>>6^N>>>11^N>>>25^N<<26^N<<21^N<<7)+(x^N&(I^x))+0x923f82a4|0;C=x;x=I;I=N;N=S+R|0;S=T;T=_;_=D;D=R+(_&T^S&(_^T))+(_>>>2^_>>>13^_>>>22^_<<30^_<<19^_<<10)|0;R=v+C+(N>>>6^N>>>11^N>>>25^N<<26^N<<21^N<<7)+(x^N&(I^x))+0xab1c5ed5|0;C=x;x=I;I=N;N=S+R|0;S=T;T=_;_=D;D=R+(_&T^S&(_^T))+(_>>>2^_>>>13^_>>>22^_<<30^_<<19^_<<10)|0;R=y+C+(N>>>6^N>>>11^N>>>25^N<<26^N<<21^N<<7)+(x^N&(I^x))+0xd807aa98|0;C=x;x=I;I=N;N=S+R|0;S=T;T=_;_=D;D=R+(_&T^S&(_^T))+(_>>>2^_>>>13^_>>>22^_<<30^_<<19^_<<10)|0;R=m+C+(N>>>6^N>>>11^N>>>25^N<<26^N<<21^N<<7)+(x^N&(I^x))+0x12835b01|0;C=x;x=I;I=N;N=S+R|0;S=T;T=_;_=D;D=R+(_&T^S&(_^T))+(_>>>2^_>>>13^_>>>22^_<<30^_<<19^_<<10)|0;R=g+C+(N>>>6^N>>>11^N>>>25^N<<26^N<<21^N<<7)+(x^N&(I^x))+0x243185be|0;C=x;x=I;I=N;N=S+R|0;S=T;T=_;_=D;D=R+(_&T^S&(_^T))+(_>>>2^_>>>13^_>>>22^_<<30^_<<19^_<<10)|0;R=E+C+(N>>>6^N>>>11^N>>>25^N<<26^N<<21^N<<7)+(x^N&(I^x))+0x550c7dc3|0;C=x;x=I;I=N;N=S+R|0;S=T;T=_;_=D;D=R+(_&T^S&(_^T))+(_>>>2^_>>>13^_>>>22^_<<30^_<<19^_<<10)|0;R=b+C+(N>>>6^N>>>11^N>>>25^N<<26^N<<21^N<<7)+(x^N&(I^x))+0x72be5d74|0;C=x;x=I;I=N;N=S+R|0;S=T;T=_;_=D;D=R+(_&T^S&(_^T))+(_>>>2^_>>>13^_>>>22^_<<30^_<<19^_<<10)|0;R=A+C+(N>>>6^N>>>11^N>>>25^N<<26^N<<21^N<<7)+(x^N&(I^x))+0x80deb1fe|0;C=x;x=I;I=N;N=S+R|0;S=T;T=_;_=D;D=R+(_&T^S&(_^T))+(_>>>2^_>>>13^_>>>22^_<<30^_<<19^_<<10)|0;R=O+C+(N>>>6^N>>>11^N>>>25^N<<26^N<<21^N<<7)+(x^N&(I^x))+0x9bdc06a7|0;C=x;x=I;I=N;N=S+R|0;S=T;T=_;_=D;D=R+(_&T^S&(_^T))+(_>>>2^_>>>13^_>>>22^_<<30^_<<19^_<<10)|0;R=w+C+(N>>>6^N>>>11^N>>>25^N<<26^N<<21^N<<7)+(x^N&(I^x))+0xc19bf174|0;C=x;x=I;I=N;N=S+R|0;S=T;T=_;_=D;D=R+(_&T^S&(_^T))+(_>>>2^_>>>13^_>>>22^_<<30^_<<19^_<<10)|0;e=R=(n>>>7^n>>>18^n>>>3^n<<25^n<<14)+(O>>>17^O>>>19^O>>>10^O<<15^O<<13)+e+m|0;R=R+C+(N>>>6^N>>>11^N>>>25^N<<26^N<<21^N<<7)+(x^N&(I^x))+0xe49b69c1|0;C=x;x=I;I=N;N=S+R|0;S=T;T=_;_=D;D=R+(_&T^S&(_^T))+(_>>>2^_>>>13^_>>>22^_<<30^_<<19^_<<10)|0;n=R=(t>>>7^t>>>18^t>>>3^t<<25^t<<14)+(w>>>17^w>>>19^w>>>10^w<<15^w<<13)+n+g|0;R=R+C+(N>>>6^N>>>11^N>>>25^N<<26^N<<21^N<<7)+(x^N&(I^x))+0xefbe4786|0;C=x;x=I;I=N;N=S+R|0;S=T;T=_;_=D;D=R+(_&T^S&(_^T))+(_>>>2^_>>>13^_>>>22^_<<30^_<<19^_<<10)|0;t=R=(l>>>7^l>>>18^l>>>3^l<<25^l<<14)+(e>>>17^e>>>19^e>>>10^e<<15^e<<13)+t+E|0;R=R+C+(N>>>6^N>>>11^N>>>25^N<<26^N<<21^N<<7)+(x^N&(I^x))+0x0fc19dc6|0;C=x;x=I;I=N;N=S+R|0;S=T;T=_;_=D;D=R+(_&T^S&(_^T))+(_>>>2^_>>>13^_>>>22^_<<30^_<<19^_<<10)|0;l=R=(d>>>7^d>>>18^d>>>3^d<<25^d<<14)+(n>>>17^n>>>19^n>>>10^n<<15^n<<13)+l+b|0;R=R+C+(N>>>6^N>>>11^N>>>25^N<<26^N<<21^N<<7)+(x^N&(I^x))+0x240ca1cc|0;C=x;x=I;I=N;N=S+R|0;S=T;T=_;_=D;D=R+(_&T^S&(_^T))+(_>>>2^_>>>13^_>>>22^_<<30^_<<19^_<<10)|0;d=R=(h>>>7^h>>>18^h>>>3^h<<25^h<<14)+(t>>>17^t>>>19^t>>>10^t<<15^t<<13)+d+A|0;R=R+C+(N>>>6^N>>>11^N>>>25^N<<26^N<<21^N<<7)+(x^N&(I^x))+0x2de92c6f|0;C=x;x=I;I=N;N=S+R|0;S=T;T=_;_=D;D=R+(_&T^S&(_^T))+(_>>>2^_>>>13^_>>>22^_<<30^_<<19^_<<10)|0;h=R=(p>>>7^p>>>18^p>>>3^p<<25^p<<14)+(l>>>17^l>>>19^l>>>10^l<<15^l<<13)+h+O|0;R=R+C+(N>>>6^N>>>11^N>>>25^N<<26^N<<21^N<<7)+(x^N&(I^x))+0x4a7484aa|0;C=x;x=I;I=N;N=S+R|0;S=T;T=_;_=D;D=R+(_&T^S&(_^T))+(_>>>2^_>>>13^_>>>22^_<<30^_<<19^_<<10)|0;p=R=(v>>>7^v>>>18^v>>>3^v<<25^v<<14)+(d>>>17^d>>>19^d>>>10^d<<15^d<<13)+p+w|0;R=R+C+(N>>>6^N>>>11^N>>>25^N<<26^N<<21^N<<7)+(x^N&(I^x))+0x5cb0a9dc|0;C=x;x=I;I=N;N=S+R|0;S=T;T=_;_=D;D=R+(_&T^S&(_^T))+(_>>>2^_>>>13^_>>>22^_<<30^_<<19^_<<10)|0;v=R=(y>>>7^y>>>18^y>>>3^y<<25^y<<14)+(h>>>17^h>>>19^h>>>10^h<<15^h<<13)+v+e|0;R=R+C+(N>>>6^N>>>11^N>>>25^N<<26^N<<21^N<<7)+(x^N&(I^x))+0x76f988da|0;C=x;x=I;I=N;N=S+R|0;S=T;T=_;_=D;D=R+(_&T^S&(_^T))+(_>>>2^_>>>13^_>>>22^_<<30^_<<19^_<<10)|0;y=R=(m>>>7^m>>>18^m>>>3^m<<25^m<<14)+(p>>>17^p>>>19^p>>>10^p<<15^p<<13)+y+n|0;R=R+C+(N>>>6^N>>>11^N>>>25^N<<26^N<<21^N<<7)+(x^N&(I^x))+0x983e5152|0;C=x;x=I;I=N;N=S+R|0;S=T;T=_;_=D;D=R+(_&T^S&(_^T))+(_>>>2^_>>>13^_>>>22^_<<30^_<<19^_<<10)|0;m=R=(g>>>7^g>>>18^g>>>3^g<<25^g<<14)+(v>>>17^v>>>19^v>>>10^v<<15^v<<13)+m+t|0;R=R+C+(N>>>6^N>>>11^N>>>25^N<<26^N<<21^N<<7)+(x^N&(I^x))+0xa831c66d|0;C=x;x=I;I=N;N=S+R|0;S=T;T=_;_=D;D=R+(_&T^S&(_^T))+(_>>>2^_>>>13^_>>>22^_<<30^_<<19^_<<10)|0;g=R=(E>>>7^E>>>18^E>>>3^E<<25^E<<14)+(y>>>17^y>>>19^y>>>10^y<<15^y<<13)+g+l|0;R=R+C+(N>>>6^N>>>11^N>>>25^N<<26^N<<21^N<<7)+(x^N&(I^x))+0xb00327c8|0;C=x;x=I;I=N;N=S+R|0;S=T;T=_;_=D;D=R+(_&T^S&(_^T))+(_>>>2^_>>>13^_>>>22^_<<30^_<<19^_<<10)|0;E=R=(b>>>7^b>>>18^b>>>3^b<<25^b<<14)+(m>>>17^m>>>19^m>>>10^m<<15^m<<13)+E+d|0;R=R+C+(N>>>6^N>>>11^N>>>25^N<<26^N<<21^N<<7)+(x^N&(I^x))+0xbf597fc7|0;C=x;x=I;I=N;N=S+R|0;S=T;T=_;_=D;D=R+(_&T^S&(_^T))+(_>>>2^_>>>13^_>>>22^_<<30^_<<19^_<<10)|0;b=R=(A>>>7^A>>>18^A>>>3^A<<25^A<<14)+(g>>>17^g>>>19^g>>>10^g<<15^g<<13)+b+h|0;R=R+C+(N>>>6^N>>>11^N>>>25^N<<26^N<<21^N<<7)+(x^N&(I^x))+0xc6e00bf3|0;C=x;x=I;I=N;N=S+R|0;S=T;T=_;_=D;D=R+(_&T^S&(_^T))+(_>>>2^_>>>13^_>>>22^_<<30^_<<19^_<<10)|0;A=R=(O>>>7^O>>>18^O>>>3^O<<25^O<<14)+(E>>>17^E>>>19^E>>>10^E<<15^E<<13)+A+p|0;R=R+C+(N>>>6^N>>>11^N>>>25^N<<26^N<<21^N<<7)+(x^N&(I^x))+0xd5a79147|0;C=x;x=I;I=N;N=S+R|0;S=T;T=_;_=D;D=R+(_&T^S&(_^T))+(_>>>2^_>>>13^_>>>22^_<<30^_<<19^_<<10)|0;O=R=(w>>>7^w>>>18^w>>>3^w<<25^w<<14)+(b>>>17^b>>>19^b>>>10^b<<15^b<<13)+O+v|0;R=R+C+(N>>>6^N>>>11^N>>>25^N<<26^N<<21^N<<7)+(x^N&(I^x))+0x06ca6351|0;C=x;x=I;I=N;N=S+R|0;S=T;T=_;_=D;D=R+(_&T^S&(_^T))+(_>>>2^_>>>13^_>>>22^_<<30^_<<19^_<<10)|0;w=R=(e>>>7^e>>>18^e>>>3^e<<25^e<<14)+(A>>>17^A>>>19^A>>>10^A<<15^A<<13)+w+y|0;R=R+C+(N>>>6^N>>>11^N>>>25^N<<26^N<<21^N<<7)+(x^N&(I^x))+0x14292967|0;C=x;x=I;I=N;N=S+R|0;S=T;T=_;_=D;D=R+(_&T^S&(_^T))+(_>>>2^_>>>13^_>>>22^_<<30^_<<19^_<<10)|0;e=R=(n>>>7^n>>>18^n>>>3^n<<25^n<<14)+(O>>>17^O>>>19^O>>>10^O<<15^O<<13)+e+m|0;R=R+C+(N>>>6^N>>>11^N>>>25^N<<26^N<<21^N<<7)+(x^N&(I^x))+0x27b70a85|0;C=x;x=I;I=N;N=S+R|0;S=T;T=_;_=D;D=R+(_&T^S&(_^T))+(_>>>2^_>>>13^_>>>22^_<<30^_<<19^_<<10)|0;n=R=(t>>>7^t>>>18^t>>>3^t<<25^t<<14)+(w>>>17^w>>>19^w>>>10^w<<15^w<<13)+n+g|0;R=R+C+(N>>>6^N>>>11^N>>>25^N<<26^N<<21^N<<7)+(x^N&(I^x))+0x2e1b2138|0;C=x;x=I;I=N;N=S+R|0;S=T;T=_;_=D;D=R+(_&T^S&(_^T))+(_>>>2^_>>>13^_>>>22^_<<30^_<<19^_<<10)|0;t=R=(l>>>7^l>>>18^l>>>3^l<<25^l<<14)+(e>>>17^e>>>19^e>>>10^e<<15^e<<13)+t+E|0;R=R+C+(N>>>6^N>>>11^N>>>25^N<<26^N<<21^N<<7)+(x^N&(I^x))+0x4d2c6dfc|0;C=x;x=I;I=N;N=S+R|0;S=T;T=_;_=D;D=R+(_&T^S&(_^T))+(_>>>2^_>>>13^_>>>22^_<<30^_<<19^_<<10)|0;l=R=(d>>>7^d>>>18^d>>>3^d<<25^d<<14)+(n>>>17^n>>>19^n>>>10^n<<15^n<<13)+l+b|0;R=R+C+(N>>>6^N>>>11^N>>>25^N<<26^N<<21^N<<7)+(x^N&(I^x))+0x53380d13|0;C=x;x=I;I=N;N=S+R|0;S=T;T=_;_=D;D=R+(_&T^S&(_^T))+(_>>>2^_>>>13^_>>>22^_<<30^_<<19^_<<10)|0;d=R=(h>>>7^h>>>18^h>>>3^h<<25^h<<14)+(t>>>17^t>>>19^t>>>10^t<<15^t<<13)+d+A|0;R=R+C+(N>>>6^N>>>11^N>>>25^N<<26^N<<21^N<<7)+(x^N&(I^x))+0x650a7354|0;C=x;x=I;I=N;N=S+R|0;S=T;T=_;_=D;D=R+(_&T^S&(_^T))+(_>>>2^_>>>13^_>>>22^_<<30^_<<19^_<<10)|0;h=R=(p>>>7^p>>>18^p>>>3^p<<25^p<<14)+(l>>>17^l>>>19^l>>>10^l<<15^l<<13)+h+O|0;R=R+C+(N>>>6^N>>>11^N>>>25^N<<26^N<<21^N<<7)+(x^N&(I^x))+0x766a0abb|0;C=x;x=I;I=N;N=S+R|0;S=T;T=_;_=D;D=R+(_&T^S&(_^T))+(_>>>2^_>>>13^_>>>22^_<<30^_<<19^_<<10)|0;p=R=(v>>>7^v>>>18^v>>>3^v<<25^v<<14)+(d>>>17^d>>>19^d>>>10^d<<15^d<<13)+p+w|0;R=R+C+(N>>>6^N>>>11^N>>>25^N<<26^N<<21^N<<7)+(x^N&(I^x))+0x81c2c92e|0;C=x;x=I;I=N;N=S+R|0;S=T;T=_;_=D;D=R+(_&T^S&(_^T))+(_>>>2^_>>>13^_>>>22^_<<30^_<<19^_<<10)|0;v=R=(y>>>7^y>>>18^y>>>3^y<<25^y<<14)+(h>>>17^h>>>19^h>>>10^h<<15^h<<13)+v+e|0;R=R+C+(N>>>6^N>>>11^N>>>25^N<<26^N<<21^N<<7)+(x^N&(I^x))+0x92722c85|0;C=x;x=I;I=N;N=S+R|0;S=T;T=_;_=D;D=R+(_&T^S&(_^T))+(_>>>2^_>>>13^_>>>22^_<<30^_<<19^_<<10)|0;y=R=(m>>>7^m>>>18^m>>>3^m<<25^m<<14)+(p>>>17^p>>>19^p>>>10^p<<15^p<<13)+y+n|0;R=R+C+(N>>>6^N>>>11^N>>>25^N<<26^N<<21^N<<7)+(x^N&(I^x))+0xa2bfe8a1|0;C=x;x=I;I=N;N=S+R|0;S=T;T=_;_=D;D=R+(_&T^S&(_^T))+(_>>>2^_>>>13^_>>>22^_<<30^_<<19^_<<10)|0;m=R=(g>>>7^g>>>18^g>>>3^g<<25^g<<14)+(v>>>17^v>>>19^v>>>10^v<<15^v<<13)+m+t|0;R=R+C+(N>>>6^N>>>11^N>>>25^N<<26^N<<21^N<<7)+(x^N&(I^x))+0xa81a664b|0;C=x;x=I;I=N;N=S+R|0;S=T;T=_;_=D;D=R+(_&T^S&(_^T))+(_>>>2^_>>>13^_>>>22^_<<30^_<<19^_<<10)|0;g=R=(E>>>7^E>>>18^E>>>3^E<<25^E<<14)+(y>>>17^y>>>19^y>>>10^y<<15^y<<13)+g+l|0;R=R+C+(N>>>6^N>>>11^N>>>25^N<<26^N<<21^N<<7)+(x^N&(I^x))+0xc24b8b70|0;C=x;x=I;I=N;N=S+R|0;S=T;T=_;_=D;D=R+(_&T^S&(_^T))+(_>>>2^_>>>13^_>>>22^_<<30^_<<19^_<<10)|0;E=R=(b>>>7^b>>>18^b>>>3^b<<25^b<<14)+(m>>>17^m>>>19^m>>>10^m<<15^m<<13)+E+d|0;R=R+C+(N>>>6^N>>>11^N>>>25^N<<26^N<<21^N<<7)+(x^N&(I^x))+0xc76c51a3|0;C=x;x=I;I=N;N=S+R|0;S=T;T=_;_=D;D=R+(_&T^S&(_^T))+(_>>>2^_>>>13^_>>>22^_<<30^_<<19^_<<10)|0;b=R=(A>>>7^A>>>18^A>>>3^A<<25^A<<14)+(g>>>17^g>>>19^g>>>10^g<<15^g<<13)+b+h|0;R=R+C+(N>>>6^N>>>11^N>>>25^N<<26^N<<21^N<<7)+(x^N&(I^x))+0xd192e819|0;C=x;x=I;I=N;N=S+R|0;S=T;T=_;_=D;D=R+(_&T^S&(_^T))+(_>>>2^_>>>13^_>>>22^_<<30^_<<19^_<<10)|0;A=R=(O>>>7^O>>>18^O>>>3^O<<25^O<<14)+(E>>>17^E>>>19^E>>>10^E<<15^E<<13)+A+p|0;R=R+C+(N>>>6^N>>>11^N>>>25^N<<26^N<<21^N<<7)+(x^N&(I^x))+0xd6990624|0;C=x;x=I;I=N;N=S+R|0;S=T;T=_;_=D;D=R+(_&T^S&(_^T))+(_>>>2^_>>>13^_>>>22^_<<30^_<<19^_<<10)|0;O=R=(w>>>7^w>>>18^w>>>3^w<<25^w<<14)+(b>>>17^b>>>19^b>>>10^b<<15^b<<13)+O+v|0;R=R+C+(N>>>6^N>>>11^N>>>25^N<<26^N<<21^N<<7)+(x^N&(I^x))+0xf40e3585|0;C=x;x=I;I=N;N=S+R|0;S=T;T=_;_=D;D=R+(_&T^S&(_^T))+(_>>>2^_>>>13^_>>>22^_<<30^_<<19^_<<10)|0;w=R=(e>>>7^e>>>18^e>>>3^e<<25^e<<14)+(A>>>17^A>>>19^A>>>10^A<<15^A<<13)+w+y|0;R=R+C+(N>>>6^N>>>11^N>>>25^N<<26^N<<21^N<<7)+(x^N&(I^x))+0x106aa070|0;C=x;x=I;I=N;N=S+R|0;S=T;T=_;_=D;D=R+(_&T^S&(_^T))+(_>>>2^_>>>13^_>>>22^_<<30^_<<19^_<<10)|0;e=R=(n>>>7^n>>>18^n>>>3^n<<25^n<<14)+(O>>>17^O>>>19^O>>>10^O<<15^O<<13)+e+m|0;R=R+C+(N>>>6^N>>>11^N>>>25^N<<26^N<<21^N<<7)+(x^N&(I^x))+0x19a4c116|0;C=x;x=I;I=N;N=S+R|0;S=T;T=_;_=D;D=R+(_&T^S&(_^T))+(_>>>2^_>>>13^_>>>22^_<<30^_<<19^_<<10)|0;n=R=(t>>>7^t>>>18^t>>>3^t<<25^t<<14)+(w>>>17^w>>>19^w>>>10^w<<15^w<<13)+n+g|0;R=R+C+(N>>>6^N>>>11^N>>>25^N<<26^N<<21^N<<7)+(x^N&(I^x))+0x1e376c08|0;C=x;x=I;I=N;N=S+R|0;S=T;T=_;_=D;D=R+(_&T^S&(_^T))+(_>>>2^_>>>13^_>>>22^_<<30^_<<19^_<<10)|0;t=R=(l>>>7^l>>>18^l>>>3^l<<25^l<<14)+(e>>>17^e>>>19^e>>>10^e<<15^e<<13)+t+E|0;R=R+C+(N>>>6^N>>>11^N>>>25^N<<26^N<<21^N<<7)+(x^N&(I^x))+0x2748774c|0;C=x;x=I;I=N;N=S+R|0;S=T;T=_;_=D;D=R+(_&T^S&(_^T))+(_>>>2^_>>>13^_>>>22^_<<30^_<<19^_<<10)|0;l=R=(d>>>7^d>>>18^d>>>3^d<<25^d<<14)+(n>>>17^n>>>19^n>>>10^n<<15^n<<13)+l+b|0;R=R+C+(N>>>6^N>>>11^N>>>25^N<<26^N<<21^N<<7)+(x^N&(I^x))+0x34b0bcb5|0;C=x;x=I;I=N;N=S+R|0;S=T;T=_;_=D;D=R+(_&T^S&(_^T))+(_>>>2^_>>>13^_>>>22^_<<30^_<<19^_<<10)|0;d=R=(h>>>7^h>>>18^h>>>3^h<<25^h<<14)+(t>>>17^t>>>19^t>>>10^t<<15^t<<13)+d+A|0;R=R+C+(N>>>6^N>>>11^N>>>25^N<<26^N<<21^N<<7)+(x^N&(I^x))+0x391c0cb3|0;C=x;x=I;I=N;N=S+R|0;S=T;T=_;_=D;D=R+(_&T^S&(_^T))+(_>>>2^_>>>13^_>>>22^_<<30^_<<19^_<<10)|0;h=R=(p>>>7^p>>>18^p>>>3^p<<25^p<<14)+(l>>>17^l>>>19^l>>>10^l<<15^l<<13)+h+O|0;R=R+C+(N>>>6^N>>>11^N>>>25^N<<26^N<<21^N<<7)+(x^N&(I^x))+0x4ed8aa4a|0;C=x;x=I;I=N;N=S+R|0;S=T;T=_;_=D;D=R+(_&T^S&(_^T))+(_>>>2^_>>>13^_>>>22^_<<30^_<<19^_<<10)|0;p=R=(v>>>7^v>>>18^v>>>3^v<<25^v<<14)+(d>>>17^d>>>19^d>>>10^d<<15^d<<13)+p+w|0;R=R+C+(N>>>6^N>>>11^N>>>25^N<<26^N<<21^N<<7)+(x^N&(I^x))+0x5b9cca4f|0;C=x;x=I;I=N;N=S+R|0;S=T;T=_;_=D;D=R+(_&T^S&(_^T))+(_>>>2^_>>>13^_>>>22^_<<30^_<<19^_<<10)|0;v=R=(y>>>7^y>>>18^y>>>3^y<<25^y<<14)+(h>>>17^h>>>19^h>>>10^h<<15^h<<13)+v+e|0;R=R+C+(N>>>6^N>>>11^N>>>25^N<<26^N<<21^N<<7)+(x^N&(I^x))+0x682e6ff3|0;C=x;x=I;I=N;N=S+R|0;S=T;T=_;_=D;D=R+(_&T^S&(_^T))+(_>>>2^_>>>13^_>>>22^_<<30^_<<19^_<<10)|0;y=R=(m>>>7^m>>>18^m>>>3^m<<25^m<<14)+(p>>>17^p>>>19^p>>>10^p<<15^p<<13)+y+n|0;R=R+C+(N>>>6^N>>>11^N>>>25^N<<26^N<<21^N<<7)+(x^N&(I^x))+0x748f82ee|0;C=x;x=I;I=N;N=S+R|0;S=T;T=_;_=D;D=R+(_&T^S&(_^T))+(_>>>2^_>>>13^_>>>22^_<<30^_<<19^_<<10)|0;m=R=(g>>>7^g>>>18^g>>>3^g<<25^g<<14)+(v>>>17^v>>>19^v>>>10^v<<15^v<<13)+m+t|0;R=R+C+(N>>>6^N>>>11^N>>>25^N<<26^N<<21^N<<7)+(x^N&(I^x))+0x78a5636f|0;C=x;x=I;I=N;N=S+R|0;S=T;T=_;_=D;D=R+(_&T^S&(_^T))+(_>>>2^_>>>13^_>>>22^_<<30^_<<19^_<<10)|0;g=R=(E>>>7^E>>>18^E>>>3^E<<25^E<<14)+(y>>>17^y>>>19^y>>>10^y<<15^y<<13)+g+l|0;R=R+C+(N>>>6^N>>>11^N>>>25^N<<26^N<<21^N<<7)+(x^N&(I^x))+0x84c87814|0;C=x;x=I;I=N;N=S+R|0;S=T;T=_;_=D;D=R+(_&T^S&(_^T))+(_>>>2^_>>>13^_>>>22^_<<30^_<<19^_<<10)|0;E=R=(b>>>7^b>>>18^b>>>3^b<<25^b<<14)+(m>>>17^m>>>19^m>>>10^m<<15^m<<13)+E+d|0;R=R+C+(N>>>6^N>>>11^N>>>25^N<<26^N<<21^N<<7)+(x^N&(I^x))+0x8cc70208|0;C=x;x=I;I=N;N=S+R|0;S=T;T=_;_=D;D=R+(_&T^S&(_^T))+(_>>>2^_>>>13^_>>>22^_<<30^_<<19^_<<10)|0;b=R=(A>>>7^A>>>18^A>>>3^A<<25^A<<14)+(g>>>17^g>>>19^g>>>10^g<<15^g<<13)+b+h|0;R=R+C+(N>>>6^N>>>11^N>>>25^N<<26^N<<21^N<<7)+(x^N&(I^x))+0x90befffa|0;C=x;x=I;I=N;N=S+R|0;S=T;T=_;_=D;D=R+(_&T^S&(_^T))+(_>>>2^_>>>13^_>>>22^_<<30^_<<19^_<<10)|0;A=R=(O>>>7^O>>>18^O>>>3^O<<25^O<<14)+(E>>>17^E>>>19^E>>>10^E<<15^E<<13)+A+p|0;R=R+C+(N>>>6^N>>>11^N>>>25^N<<26^N<<21^N<<7)+(x^N&(I^x))+0xa4506ceb|0;C=x;x=I;I=N;N=S+R|0;S=T;T=_;_=D;D=R+(_&T^S&(_^T))+(_>>>2^_>>>13^_>>>22^_<<30^_<<19^_<<10)|0;O=R=(w>>>7^w>>>18^w>>>3^w<<25^w<<14)+(b>>>17^b>>>19^b>>>10^b<<15^b<<13)+O+v|0;R=R+C+(N>>>6^N>>>11^N>>>25^N<<26^N<<21^N<<7)+(x^N&(I^x))+0xbef9a3f7|0;C=x;x=I;I=N;N=S+R|0;S=T;T=_;_=D;D=R+(_&T^S&(_^T))+(_>>>2^_>>>13^_>>>22^_<<30^_<<19^_<<10)|0;w=R=(e>>>7^e>>>18^e>>>3^e<<25^e<<14)+(A>>>17^A>>>19^A>>>10^A<<15^A<<13)+w+y|0;R=R+C+(N>>>6^N>>>11^N>>>25^N<<26^N<<21^N<<7)+(x^N&(I^x))+0xc67178f2|0;C=x;x=I;I=N;N=S+R|0;S=T;T=_;_=D;D=R+(_&T^S&(_^T))+(_>>>2^_>>>13^_>>>22^_<<30^_<<19^_<<10)|0;r=r+D|0;o=o+_|0;a=a+T|0;i=i+S|0;s=s+N|0;c=c+I|0;u=u+x|0;f=f+C|0}function C(e){e=e|0;x(I[e|0]<<24|I[e|1]<<16|I[e|2]<<8|I[e|3],I[e|4]<<24|I[e|5]<<16|I[e|6]<<8|I[e|7],I[e|8]<<24|I[e|9]<<16|I[e|10]<<8|I[e|11],I[e|12]<<24|I[e|13]<<16|I[e|14]<<8|I[e|15],I[e|16]<<24|I[e|17]<<16|I[e|18]<<8|I[e|19],I[e|20]<<24|I[e|21]<<16|I[e|22]<<8|I[e|23],I[e|24]<<24|I[e|25]<<16|I[e|26]<<8|I[e|27],I[e|28]<<24|I[e|29]<<16|I[e|30]<<8|I[e|31],I[e|32]<<24|I[e|33]<<16|I[e|34]<<8|I[e|35],I[e|36]<<24|I[e|37]<<16|I[e|38]<<8|I[e|39],I[e|40]<<24|I[e|41]<<16|I[e|42]<<8|I[e|43],I[e|44]<<24|I[e|45]<<16|I[e|46]<<8|I[e|47],I[e|48]<<24|I[e|49]<<16|I[e|50]<<8|I[e|51],I[e|52]<<24|I[e|53]<<16|I[e|54]<<8|I[e|55],I[e|56]<<24|I[e|57]<<16|I[e|58]<<8|I[e|59],I[e|60]<<24|I[e|61]<<16|I[e|62]<<8|I[e|63])}function R(e){e=e|0;I[e|0]=r>>>24;I[e|1]=r>>>16&255;I[e|2]=r>>>8&255;I[e|3]=r&255;I[e|4]=o>>>24;I[e|5]=o>>>16&255;I[e|6]=o>>>8&255;I[e|7]=o&255;I[e|8]=a>>>24;I[e|9]=a>>>16&255;I[e|10]=a>>>8&255;I[e|11]=a&255;I[e|12]=i>>>24;I[e|13]=i>>>16&255;I[e|14]=i>>>8&255;I[e|15]=i&255;I[e|16]=s>>>24;I[e|17]=s>>>16&255;I[e|18]=s>>>8&255;I[e|19]=s&255;I[e|20]=c>>>24;I[e|21]=c>>>16&255;I[e|22]=c>>>8&255;I[e|23]=c&255;I[e|24]=u>>>24;I[e|25]=u>>>16&255;I[e|26]=u>>>8&255;I[e|27]=u&255;I[e|28]=f>>>24;I[e|29]=f>>>16&255;I[e|30]=f>>>8&255;I[e|31]=f&255}function P(){r=0x6a09e667;o=0xbb67ae85;a=0x3c6ef372;i=0xa54ff53a;s=0x510e527f;c=0x9b05688c;u=0x1f83d9ab;f=0x5be0cd19;l=d=0}function k(e,n,t,h,p,v,y,m,g,E){e=e|0;n=n|0;t=t|0;h=h|0;p=p|0;v=v|0;y=y|0;m=m|0;g=g|0;E=E|0;r=e;o=n;a=t;i=h;s=p;c=v;u=y;f=m;l=g;d=E}function M(e,n){e=e|0;n=n|0;var t=0;if(e&63)return-1;while((n|0)>=64){C(e);e=e+64|0;n=n-64|0;t=t+64|0}l=l+t|0;if(l>>>0>>0)d=d+1|0;return t|0}function F(e,n,t){e=e|0;n=n|0;t=t|0;var r=0,o=0;if(e&63)return-1;if(~t)if(t&31)return-1;if((n|0)>=64){r=M(e,n)|0;if((r|0)==-1)return-1;e=e+r|0;n=n-r|0}r=r+n|0;l=l+n|0;if(l>>>0>>0)d=d+1|0;I[e|n]=0x80;if((n|0)>=56){for(o=n+1|0;(o|0)<64;o=o+1|0)I[e|o]=0x00;C(e);n=0;I[e|0]=0}for(o=n+1|0;(o|0)<59;o=o+1|0)I[e|o]=0;I[e|56]=d>>>21&255;I[e|57]=d>>>13&255;I[e|58]=d>>>5&255;I[e|59]=d<<3&255|l>>>29;I[e|60]=l>>>21&255;I[e|61]=l>>>13&255;I[e|62]=l>>>5&255;I[e|63]=l<<3&255;C(e);if(~t)R(t);return r|0}function L(){r=h;o=p;a=v;i=y;s=m;c=g;u=E;f=b;l=64;d=0}function H(){r=A;o=O;a=w;i=D;s=_;c=T;u=S;f=N;l=64;d=0}function j(e,n,t,I,C,R,k,M,F,L,H,j,K,U,B,V){e=e|0;n=n|0;t=t|0;I=I|0;C=C|0;R=R|0;k=k|0;M=M|0;F=F|0;L=L|0;H=H|0;j=j|0;K=K|0;U=U|0;B=B|0;V=V|0;P();x(e^0x5c5c5c5c,n^0x5c5c5c5c,t^0x5c5c5c5c,I^0x5c5c5c5c,C^0x5c5c5c5c,R^0x5c5c5c5c,k^0x5c5c5c5c,M^0x5c5c5c5c,F^0x5c5c5c5c,L^0x5c5c5c5c,H^0x5c5c5c5c,j^0x5c5c5c5c,K^0x5c5c5c5c,U^0x5c5c5c5c,B^0x5c5c5c5c,V^0x5c5c5c5c);A=r;O=o;w=a;D=i;_=s;T=c;S=u;N=f;P();x(e^0x36363636,n^0x36363636,t^0x36363636,I^0x36363636,C^0x36363636,R^0x36363636,k^0x36363636,M^0x36363636,F^0x36363636,L^0x36363636,H^0x36363636,j^0x36363636,K^0x36363636,U^0x36363636,B^0x36363636,V^0x36363636);h=r;p=o;v=a;y=i;m=s;g=c;E=u;b=f;l=64;d=0}function K(e,n,t){e=e|0;n=n|0;t=t|0;var l=0,d=0,h=0,p=0,v=0,y=0,m=0,g=0,E=0;if(e&63)return-1;if(~t)if(t&31)return-1;E=F(e,n,-1)|0;l=r,d=o,h=a,p=i,v=s,y=c,m=u,g=f;H();x(l,d,h,p,v,y,m,g,0x80000000,0,0,0,0,0,0,768);if(~t)R(t);return E|0}function U(e,n,t,l,d){e=e|0;n=n|0;t=t|0;l=l|0;d=d|0;var h=0,p=0,v=0,y=0,m=0,g=0,E=0,b=0,A=0,O=0,w=0,D=0,_=0,T=0,S=0,N=0;if(e&63)return-1;if(~d)if(d&31)return-1;I[e+n|0]=t>>>24;I[e+n+1|0]=t>>>16&255;I[e+n+2|0]=t>>>8&255;I[e+n+3|0]=t&255;K(e,n+4|0,-1)|0;h=A=r,p=O=o,v=w=a,y=D=i,m=_=s,g=T=c,E=S=u,b=N=f;l=l-1|0;while((l|0)>0){L();x(A,O,w,D,_,T,S,N,0x80000000,0,0,0,0,0,0,768);A=r,O=o,w=a,D=i,_=s,T=c,S=u,N=f;H();x(A,O,w,D,_,T,S,N,0x80000000,0,0,0,0,0,0,768);A=r,O=o,w=a,D=i,_=s,T=c,S=u,N=f;h=h^r;p=p^o;v=v^a;y=y^i;m=m^s;g=g^c;E=E^u;b=b^f;l=l-1|0}r=h;o=p;a=v;i=y;s=m;c=g;u=E;f=b;if(~d)R(d);return 0}return{reset:P,init:k,process:M,finish:F,hmac_reset:L,hmac_init:j,hmac_finish:K,pbkdf2_generate_block:U}}},"transform/TextTransformer.js":function(e,n,t){var r=t("../Operation"),o=t("../Common"),a=function(e,n){o.PARANOIA&&(r.check(e),r.check(n));var t=function(e,n){if(e.offset>n.offset){if(e.offset>n.offset+n.toRemove)return r.create(e.offset-n.toRemove+n.toInsert.length,e.toRemove,e.toInsert);var t=e.toRemove-(n.offset+n.toRemove-e.offset);return t<0&&(t=0),0===t&&0===e.toInsert.length?null:r.create(n.offset+n.toInsert.length,t,e.toInsert)}if(e.offset+e.toRemove=0;i--)s=r.apply(n[i],s);var c=[];for(i=e.length-1;i>=0;i--){for(var u=e[i],f=n.length-1;f>=0;f--){try{u=a(u,n[f])}catch(e){return console.error("The pluggable transform function threw an error, failing operational transformation"),console.error(e.stack),[]}if(!u)break}u&&(o.PARANOIA&&r.check(u,s.length),c.unshift(u))}return c}},"transform/NaiveJSONTransformer.js":function(e,n,t){var r=t("./TextTransformer"),o=t("../Operation"),a=t("../Common");e.exports=function(e,n,t){var i,s,c,u=a.global.REALTIME_DEBUG=a.global.REALTIME_DEBUG||{};try{i=r(e,n,t),s=o.applyMulti(n,t),c=o.applyMulti(i,s);try{return JSON.parse(c),i}catch(r){console.error(r),u.ot_parseError={type:"resultParseError",resultOps:i,toTransform:e,transformBy:n,text1:t,text2:s,text3:c,error:r},console.log("Debugging info available at `window.REALTIME_DEBUG.ot_parseError`")}}catch(r){console.error(r),u.ot_applyError={type:"resultParseError",resultOps:i,toTransform:e,transformBy:n,text1:t,text2:s,text3:c,error:r},console.log("Debugging info available at `window.REALTIME_DEBUG.ot_applyError`")}return[]}},"transform/SmartJSONTransformer.js":function(e,n,t){var r,o,a,i=t("json.sortify"),s=t("../Diff"),c=t("../Operation"),u=t("./TextTransformer"),f=function(e){return null===e?"null":(n=e,"[object Array]"===Object.prototype.toString.call(n)?"array":typeof e);var n},l=function(e,n){for(var t=n.length,r=0;r1)return!0})&&("splice"!==n.type||!e.some(function(e){if("splice"===e.type&&y(e.path,n.path)&&e.path.length-n.path.length<0){if(!e.removals)return;for(var t=e.offset,r=e.offset+e.removals;te.offset+n.removals)return void(n.offset+=e.value.length-e.removals);if(n.offseti)){var d=n.slice(0,l);if((y=n.slice(l))===u){var p=Math.min(s,l);if((g=c.slice(0,p))===(b=d.slice(0,p)))return h(g,c.slice(p),d.slice(p),u)}}if(null===f||f===s){var v=s,y=(d=n.slice(0,v),n.slice(v));if(d===c){var m=Math.min(a-v,i-v);if((E=u.slice(u.length-m))===(A=y.slice(y.length-m)))return h(c,u.slice(0,u.length-m),y.slice(0,y.length-m),E)}}}if(r.length>0&&o&&0===o.length){var g=e.slice(0,r.index),E=e.slice(r.index+r.length);if(!(i<(p=g.length)+(m=E.length))){var b=n.slice(0,p),A=n.slice(i-m);if(g===b&&E===A)return h(g,e.slice(p,a-m),n.slice(p,i-m),E)}}return null}(e,n,t);if(f)return f}var l=i(e,n),d=e.substring(0,l);l=s(e=e.substring(l),n=n.substring(l));var p=e.substring(e.length-l),v=function(e,n){var t;if(!e)return[[1,n]];if(!n)return[[r,e]];var c=e.length>n.length?e:n,u=e.length>n.length?n:e,f=c.indexOf(u);if(-1!==f)return t=[[1,c.substring(0,f)],[0,u],[1,c.substring(f+u.length)]],e.length>n.length&&(t[0][0]=t[2][0]=r),t;if(1===u.length)return[[r,e],[1,n]];var l=function(e,n){var t=e.length>n.length?e:n,r=e.length>n.length?n:e;if(t.length<4||2*r.length=e.length?[r,o,a,c,l]:null}var a,c,u,f,l,d=o(t,r,Math.ceil(t.length/4)),h=o(t,r,Math.ceil(t.length/2));if(!d&&!h)return null;a=h?d&&d[4].length>h[4].length?d:h:d,e.length>n.length?(c=a[0],u=a[1],f=a[2],l=a[3]):(f=a[0],l=a[1],c=a[2],u=a[3]);var p=a[4];return[c,u,f,l,p]}(e,n);if(l){var d=l[0],h=l[1],p=l[2],v=l[3],y=l[4],m=o(d,p),g=o(h,v);return m.concat([[0,y]],g)}return function(e,n){for(var t=e.length,o=n.length,i=Math.ceil((t+o)/2),s=i,c=2*i,u=new Array(c),f=new Array(c),l=0;lt)v+=2;else if(A>o)p+=2;else if(h&&(D=s+d-E)>=0&&D=(w=t-f[D]))return a(e,n,T,A)}for(var O=-g+y;O<=g-m;O+=2){for(var w,D=s+O,_=(w=O===-g||O!==g&&f[D-1]t)m+=2;else if(_>o)y+=2;else if(!h){var T;if((b=s+d-O)>=0&&b=(w=t-w))return a(e,n,T,A)}}}return[[r,e],[1,n]]}(e,n)}(e=e.substring(0,e.length-l),n=n.substring(0,n.length-l));return d&&v.unshift([0,d]),p&&v.push([0,p]),c(v,u),v}function a(e,n,t,r){var a=e.substring(0,t),i=n.substring(0,r),s=e.substring(t),c=n.substring(r),u=o(a,i),f=o(s,c);return u.concat(f)}function i(e,n){if(!e||!n||e.charAt(0)!==n.charAt(0))return 0;for(var t=0,r=Math.min(e.length,n.length),o=r,a=0;t=0&&d(e[p][1])){var v=e[p][1].slice(-1);if(e[p][1]=e[p][1].slice(0,-1),f=v+f,h=v+h,!e[p][1]){e.splice(p,1),o--;var y=p-1;e[y]&&1===e[y][0]&&(u++,h=e[y][1]+h,y--),e[y]&&e[y][0]===r&&(a++,f=e[y][1]+f,y--),p=y}}l(e[o][1])&&(v=e[o][1].charAt(0),e[o][1]=e[o][1].slice(1),f+=v,h+=v)}if(o0||h.length>0){f.length>0&&h.length>0&&(0!==(t=i(h,f))&&(p>=0?e[p][1]+=h.substring(0,t):(e.splice(0,0,[0,h.substring(0,t)]),o++),h=h.substring(t),f=f.substring(t)),0!==(t=s(h,f))&&(e[o][1]=h.substring(h.length-t)+e[o][1],h=h.substring(0,h.length-t),f=f.substring(0,f.length-t)));var m=u+a;0===f.length&&0===h.length?(e.splice(o-m,m),o-=m):0===f.length?(e.splice(o-m,m,[1,h]),o=o-m+1):0===h.length?(e.splice(o-m,m,[r,f]),o=o-m+1):(e.splice(o-m,m,[r,f],[1,h]),o=o-m+2)}0!==o&&0===e[o-1][0]?(e[o-1][1]+=e[o][1],e.splice(o,1)):o++,u=0,a=0,f="",h=""}""===e[e.length-1][1]&&e.pop();var g=!1;for(o=1;o=55296&&e<=56319}function f(e){return e>=56320&&e<=57343}function l(e){return f(e.charCodeAt(0))}function d(e){return u(e.charCodeAt(e.length-1))}function h(e,n,t,o){return d(e)||l(o)?null:function(e){for(var n=[],t=0;t0&&n.push(e[t]);return n}([[0,e],[r,n],[1,t],[0,o]])}function p(e,n,t){return o(e,n,t,!0)}p.INSERT=1,p.DELETE=r,p.EQUAL=0,e.exports=p}},n=a("ChainPad.js"),r="ChainPad",e.exports=n,"undefined"!=typeof window?o=window:void 0!==t?o=t:"undefined"!=typeof self&&(o=self),o[r]=n}(I)),I.exports}var C,R=x(),P=n({__proto__:null,default:r(R)},[R]),k={exports:{}};function M(){return C||(C=1,function(e){var n;n=function(e,n){var t={Nacl:e},r=n.encodeBase64,o=e=>{let t;return(t=e.length%4)&&(e+="=".repeat(4-t)),n.decodeBase64(e)},a=n.decodeUTF8,i=n.encodeUTF8,s=function(e){for(var n="",t=0;t{var n={setCustomize:n=>{e=n.ApiConfig},getWebsocketURL:function(n){var t=e.websocketPath||"/cryptpad_websocket";if(/^ws{1,2}:\/\//.test(t))return t;var r=new URL(n||globalThis?.location?.href||e.httpUnsafeOrigin);return n&&(r.href=n),r.protocol.replace(/http/,"ws")+"//"+r.host+t}};return n})())}(H)),H.exports}var K,U=j(),B=n({__proto__:null,default:r(U)},[U]),V={exports:{}};function Y(){return K||(K=1,function(e){e.exports&&(e.exports=function(e={}){return{setCustomize:n=>{e=n.AppConfig},userHashKey:"User_hash",userNameKey:"User_name",blockHashKey:"Block_hash",fileHashKey:"FS_hash",sessionJWT:"Session_JWT",ssoSeed:"SSO_seed",displayNameKey:"cryptpad.username",oldStorageKey:"CryptPad_RECENTPADS",storageKey:"filesData",tokenKey:"loginToken",prefersDriveRedirectKey:"prefersDriveRedirect",isPremiumKey:"isPremiumUser",displayPadCreationScreen:"displayPadCreationScreen",deprecatedKey:"deprecated",MAX_TEAMS_SLOTS:e.maxTeamsSlots||5,MAX_TEAMS_OWNED:e.maxOwnedTeams||5,MAX_PREMIUM_TEAMS_SLOTS:Math.max(e.maxTeamsSlots||0,e.maxPremiumTeamsSlots||0)||5,MAX_PREMIUM_TEAMS_OWNED:Math.max(e.maxOwnedTeams||0,e.maxPremiumTeamsOwned||0)||5,criticalApps:["profile","settings","debug","admin","support","notifications","calendar","moderation"],earlyAccessApps:[]}}(void 0))}(V)),V.exports}var G,J=Y(),q=n({__proto__:null,default:r(J)},[J]),W={exports:{}},z={exports:{}},Q=z.exports;function X(){return G||(G=1,function(e){!function(n){const t=e=>{var t=n.CryptPad_Util={};n.atob=n.atob||function(e){return Buffer.from(e,"base64").toString("binary")},n.btoa=n.btoa||function(e){return Buffer.from(e,"binary").toString("base64")},t.encodeBase64=n=>"function"==typeof n?.toBase64?n.toBase64():e.encodeBase64(n),t.decodeBase64=n=>{if("function"==typeof Uint8Array?.fromBase64)return Uint8Array.fromBase64(n);let t=n.length%4;return t&&(n+="=".repeat(4-t)),e.decodeBase64(n)},t.encodeUTF8=e.encodeUTF8,t.decodeUTF8=e.decodeUTF8,t.slice=function(e,n,t){return Array.prototype.slice.call(e,n,t)},t.shuffleArray=function(e){for(var n=e.length-1;n>0;n--){var t=Math.floor(Math.random()*(n+1)),r=e[n];e[n]=e[t],e[t]=r}},t.bake=function(e,n){return void 0===n&&(n=[]),Array.isArray(n)||(n=[n]),function(){return e.apply(null,n)}},t.both=function(e,n){if("function"!=typeof e)throw new Error("INVALID_USAGE");return"function"!=typeof n&&(n=function(e){return e}),function(){return e.apply(null,arguments),n.apply(null,arguments)}},t.clone=function(e){return null==e?e:JSON.parse(JSON.stringify(e))},t.serializeError=function(e){if(!(e instanceof Error))return e;var n={};return Object.getOwnPropertyNames(e).forEach(function(t){n[t]=e[t]}),n},t.tryParse=function(e){try{return JSON.parse(e)}catch(e){return}},t.mkAsync=function(e,n){if("function"!=typeof e)throw new Error("EXPECTED_FUNCTION");return function(){var t=Array.prototype.slice.call(arguments);setTimeout(function(){e.apply(null,t)},n)}},t.mkEvent=function(e){var n=[],t=!1;let r;return{reg:function(r){e&&t?setTimeout(r):n.push(r)},unreg:function(e){-1!==n.indexOf(e)?n.splice(n.indexOf(e),1):console.log("event handler was already unregistered")},fire:function(){if(!e||!t){var o=Array.prototype.slice.call(arguments);t||r.apply(null,o),t=!0,n.forEach(function(e){e.apply(null,o)})}},promise:new Promise(e=>{r=e})}},t.mkTimeout=function(e,n){n=n||0;var r=t.once(e),o=setTimeout(function(){r("TIMEOUT")},n);return t.both(r,function(){clearTimeout(o)})},t.onClickEnter=function(e,n,t){e.on("click keydown",function(e){var r="click"===e.type,o="keydown"===e.type&&13===e.which,a="keydown"===e.type&&32===e.which&&t&&t.space;(r||o||a)&&("keydown"===e.type&&e.preventDefault(),n(e))})},t.response=function(e){var n={},t={};"function"!=typeof e&&(e=function(e){throw new Error(e)});var r=function(e){clearTimeout(t[e]),delete t[e],delete n[e]};return{clear:r,expected:function(e){return Boolean(n[e])},expectation:function(e){return n[e]},expect:function(o,a,i){"string"!=typeof o&&e("EXPECTED_STRING"),"function"!=typeof a&&e("EXPECTED_CALLBACK"),n[o]=a,"number"==typeof i&&i&&(t[o]=setTimeout(function(){"function"==typeof n[o]&&n[o]("TIMEOUT"),r(o)},i))},handle:function(t,o){var a=n[t];if("function"==typeof a){try{a.apply(null,Array.isArray(o)?o:[o])}catch(n){e("HANDLER_ERROR",{error:n,id:t,args:o})}r(t)}else e("MISSING_CALLBACK",{id:t,args:o})},_pending:n}},t.inc=function(e,n,t){e[n]=(e[n]||0)+("number"==typeof t?t:1)},t.values=function(e){return Object.keys(e).map(function(n){return e[n]})},t.find=function(e,n){for(var t=n.length,r=0;r&"']/g,function(e){return{"<":"<",">":">","&":"&",'"':""","'":"'"}[e]}):""},t.hexToBase64=function(e){var t=e.replace(/\r|\n/g,"").replace(/([\da-fA-F]{2}) ?/g,"0x$1 ").replace(/ +$/,"").split(" "),r=String.fromCharCode.apply(null,t);return n.btoa(r).replace(/\//g,"-").replace(/=+$/,"")},t.base64ToHex=function(e){var t=[];return n.atob(e.replace(/-/g,"/")).split("").forEach(function(e){var n=e.charCodeAt(0).toString(16);1===n.length&&(n="0"+n),t.push(n)}),t.join("")},t.uint8ArrayToHex=function(e){for(var n="",t=0;t=o?"GB":e>=r?"MB":"KB"};t.getBlock=function(e,n,r){var o=t.once(t.mkAsync(r)),a={};"string"==typeof n.bearer&&n.bearer&&(a.authorization=`Bearer ${n.bearer}`),fetch(e,{method:"GET",credentials:"include",headers:a}).then(e=>{e.ok?o(void 0,e):401!==e.status&&404!==e.status?o(e.status,e):e.json().then(n=>{o(e.status,n)}).catch(()=>{o(e.status)})}).catch(e=>{o(e)})},t.fetchApi=function(e,n,t,r){const o=new URL(e);o.pathname=`api/${n}`;let a=o.href+(t?"?"+ +new Date:"");if("undefined"!=typeof self&&self.crypto)fetch(a).then(e=>{if(!e.ok)throw new Error(`Fetch error: ${e.status}`);return e.text()}).then(e=>{r(JSON.parse(e.slice(27,-5)))}).catch(e=>{console.error(e.message),r({})});else if(void 0!==f){("http:"===o.protocol?require("node:http"):require("node:https")).get(o.href,e=>{let n="";e.on("data",e=>{n+=e}),e.on("end",()=>{try{r(JSON.parse(n.slice(27,-5)))}catch(e){console.error(e),r({})}})})}},t.fetch=function(e,n,r,o){var a,i=t.once(t.mkAsync(n)),s=function(e){var n=e.replace(/(\/)*$/,""),t=n.lastIndexOf("/"),r=n.slice(t+1);return/^[a-f0-9]{48}$/.test(r)||(r=void 0),r}(e),c=function(){(a=new XMLHttpRequest).open("GET",e,!0),r&&a.addEventListener("progress",function(e){if(e.lengthComputable){var n=e.loaded/e.total;r(n)}},!1),a.responseType="arraybuffer",a.onerror=function(e){i(e)},a.onload=function(){if(/^4/.test(""+this.status))return i("XHR_ERROR");var e=a.response;if(e){var n=new Uint8Array(e);return s?void function(e,n,t){o&&"function"==typeof o.setBlobCache?o.setBlobCache(e,n,t):t("EINVAL")}(s,n,function(){i(null,n)}):void i(void 0,n)}i("ENOENT")},a.send(null)};if(s)return function(e,n){o&&"function"==typeof o.getBlobCache?o.getBlobCache(e,n):n("EINVAL")}(s,function(e,n){!e&&n?i(void 0,n):c()}),{cancel:function(){a&&a.abort&&a.abort()}};c()},t.dataURIToBlob=function(e){for(var n=atob(e.split(",")[1]),t=e.split(",")[0].split(":")[1].split(";")[0],r=new ArrayBuffer(n.length),o=new Uint8Array(r),a=0;aparseInt(e,10).toString(16).padStart(2,"0")).join("")}`},t.isSmallScreen=function(){return n.innerHeight<800||n.innerWidth<800},t.stripTags=function(e){var n=document.createElement("div");return n.innerHTML=e,n.innerText},t.parseFilename=function(e){if(!e||!e.trim())return{};var n=/^(\.?.+?)(\.[^.]+)?$/.exec(e)||[];return{name:n[1],ext:n[2]}},t.isPlainTextFile=function(e,n){if(e&&0===e.indexOf("text/"))return!0;var r=t.parseFilename(n);return!(e||!n||r.ext)||("application/x-javascript"===e||"application/xml"===e)},t.isSpreadsheet=function(e,n){return e&&("application/vnd.oasis.opendocument.spreadsheet"===e||"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"===e)||n&&(n.endsWith(".xlsx")||n.endsWith(".ods"))},t.isOfficeDoc=function(e,n){return e&&("application/vnd.oasis.opendocument.text"===e||"application/vnd.openxmlformats-officedocument.wordprocessingml.document"===e)||n&&(n.endsWith(".docx")||n.endsWith(".odt"))},t.isPresentation=function(e,n){return e&&("application/vnd.oasis.opendocument.presentation"===e||"application/vnd.openxmlformats-officedocument.presentationml.presentation"===e)||n&&(n.endsWith(".pptx")||n.endsWith(".odp"))},t.isValidURL=function(e){return!!new RegExp("^(https?:\\/\\/)((([a-z\\d]([a-z\\d-]*[a-z\\d])*)\\.)+[a-z]{2,}|((\\d{1,3}\\.){3}\\d{1,3}))(\\:\\d+)?(\\/[-a-z\\d%_.~+]*)*(\\?[;&a-z\\d%_.~+=-]*)?").test(e)};var a=/([\uD800-\uDBFF][\uDC00-\uDFFF])/;t.getFirstCharacter=function(e){if(!e||!e.trim())return"?";var n=function(e){for(var n=e.split(a),t=[],r=0;r{let n=/ver=([0-9.]+)(-[0-9]*)?/.exec(e);return Array.isArray(n)&&n[1]||void 0},t.Saferphore={create:e=>{var n,t=[];return n=function(){if(e<0)throw new Error("(resourceCount < 0) should never happen");var r;0!==e&&0!==t.length&&(e--,t.shift()((r=0,function(t){if(r++)throw new Error("returnAfter() called multiple times");var o=0;return function(){if(o++)throw new Error("returnAfter wrapped callback called multiple times");t&&t.apply(null,arguments),e++,n()}})))},{take:function(e){t.push(e),n()}}}},t};e.exports&&(e.exports=t(w()))}("undefined"!=typeof self?self:Q)}(z)),z.exports}var Z,$,ee={exports:{}};function ne(){return Z||(Z=1,function(e){e.exports&&(e.exports=function(){var e={},n=function(e){return e.replace(/-/g,"/")};return e.parseUser=function(e){var t,r,o,a=function(e){if(/^\[.*?@.*\]$/.test(e)){var t,r=e.slice(1,-1);if(r=r.replace(/\/([a-zA-Z0-9+-]{43}=)$/,function(e,r){return t=n(r),""}),t){var o=r.lastIndexOf("@");if(!(o<1))return{domain:r.slice(o+1),user:r.slice(0,o),pubkey:t}}}}(e);if(function(e){if(e&&e.domain&&e.user&&e.pubkey)return!0}(a))return a;if(e.replace(/^https*:\/\/([^\/]+)\/user\/#\/1\/([^\/]+)\/([a-zA-Z0-9+-]{43}=)$/,function(e,a,i,s){return t=a,r=i,o=n(s),""}),!t)throw new Error("Could not parse user id ["+e+"]");return{domain:t,user:r,pubkey:o}},e.serialize=function(e,n,t){return"["+n+"@"+e.replace(/https*:\/\//,"")+"/"+t.replace(/\//g,"-")+"]"},e.canonicalize=function(t){if("string"==typeof t){if(44===t.length)return n(t);try{return e.parseUser(t).pubkey}catch(e){return}}},e}())}(ee)),ee.exports}function te(){return $||($=1,function(e){!function(n){e.exports&&(e.exports=function(e,t,r,o){var a=n.CryptPad_Hash={},i=e.uint8ArrayToHex,s=e.hexToBase64,c=e.base64ToHex;a.encodeBase64=e.encodeBase64,a.decodeBase64=e.decodeBase64,a.hashChannelList=function(n){return e.encodeBase64(o.hash(e.decodeUTF8(JSON.stringify(n))))},a.generateSignPair=function(){var e=o.sign.keyPair(),n=function(e){return t.b64RemoveSlashes(e).replace(/=+$/g,"")};return{validateKey:a.encodeBase64(e.publicKey),signKey:a.encodeBase64(e.secretKey),safeValidateKey:n(a.encodeBase64(e.publicKey)),safeSignKey:n(a.encodeBase64(e.secretKey))}},a.getSignPublicFromPrivate=function(n){var r=t.b64AddSlashes(n),a=e.decodeBase64(r),i=o.sign.keyPair.fromSecretKey(a);return e.encodeBase64(i.publicKey)},a.getCurvePublicFromPrivate=function(n){var r=t.b64AddSlashes(n),a=e.decodeBase64(r),i=o.box.keyPair.fromSecretKey(a);return e.encodeBase64(i.publicKey)};var u=a.getEditHashFromKeys=function(e){var n=e.version,r=e.keys;if(0===n)return e.channel+e.key;if(1===n){if(!r.editKeyStr)return;return"/1/edit/"+s(e.channel)+"/"+t.b64RemoveSlashes(r.editKeyStr)+"/"}if(2===n){if(!r.editKeyStr)return;var o=e.password?"p/":"";return"/2/"+e.type+"/edit/"+t.b64RemoveSlashes(r.editKeyStr)+"/"+o}},f=a.getViewHashFromKeys=function(e){var n=e.version,r=e.keys;if(0!==n){if(1===n){if(!r.viewKeyStr)return;return"/1/view/"+s(e.channel)+"/"+t.b64RemoveSlashes(r.viewKeyStr)+"/"}if(2===n){if(!r.viewKeyStr)return;var o=e.password?"p/":"";return"/2/"+e.type+"/view/"+t.b64RemoveSlashes(r.viewKeyStr)+"/"+o}}};a.getHiddenHashFromKeys=function(e,n,t){t=t||{};var r=n.keys&&n.keys.editKeyStr||n.key,o=!t.view&&r?"edit/":"view/",i=n.password?"p/":"";n.keys&&n.keys.fileKeyStr&&(o="");var s="/3/"+e+"/"+o+n.channel+"/"+i,c=a.parseTypeHash(e,s);return c&&c.getHash?c.getHash(t||{}):s};var l=a.getFileHashFromKeys=function(e){var n=e.version,r=e.keys;if(0!==n){if(1===n)return"/1/"+s(e.channel)+"/"+t.b64RemoveSlashes(r.fileKeyStr)+"/";if(2===n){if(!r.fileKeyStr)return;var o=e.password?"p/":"";return"/2/"+e.type+"/"+t.b64RemoveSlashes(r.fileKeyStr)+"/"+o}}};a.getPublicSigningKeyString=r.serialize,a.ephemeralChannelLength=34,a.createChannelId=function(e){var n=i(t.Nacl.randomBytes(e?17:16));if(-1===[32,34].indexOf(n.length)||/[^a-f0-9]/.test(n))throw new Error("channel ids must consist of 32 hex characters");return n},a.getChannelIdFromKey=function(e){if(e)return i(a.decodeBase64(e).subarray(0,16))},a.getBoxPublicFromSecret=function(e){if(e){var n=a.decodeBase64(e),t=o.box.keyPair.fromSecretKey(n);return a.encodeBase64(t.publicKey)}},a.checkBoxKeyPair=function(e,n){if(!n||!e)return!1;var t=a.decodeBase64(e),r=o.box.keyPair.fromSecretKey(t);return n===a.encodeBase64(r.publicKey)},a.createRandomHash=function(e,n){var r;return"file"===e?(r=t.createFileCryptor2(void 0,n),l({password:Boolean(n),version:2,type:e,keys:r})):(r=t.createEditCryptor2(void 0,void 0,n),u({password:Boolean(n),version:2,type:e,keys:r}))};var d=a.parseTypeHash=function(e,n){if(n){var r,o=[],a={},i=(r=n,r.replace(/\/+/g,"/")).split("/"),s=function(){a.password=-1!==o.indexOf("p"),a.present=-1!==o.indexOf("present"),a.embed=-1!==o.indexOf("embed"),a.versionHash=function(e){var n;return e.some(function(e){if(/^hash=/.test(e))return n=e.slice(5),!0}),n?t.b64AddSlashes(n):""}(o),a.auditorKey=function(e){var n;return e.some(function(e){if(/^auditor=/.test(e))return n=e.slice(8),!0}),n?t.b64AddSlashes(n):""}(o),a.newPadOpts=function(e){var n;return e.some(function(e){if(/^newpad=/.test(e))return n=e.slice(7),!0}),n||""}(o),a.loginOpts=function(e){var n;return e.some(function(e){if(/^login=/.test(e))return n=e.slice(6),!0}),n||""}(o),a.ownerKey=function(e){var n;return e.some(function(e){if(86===e.length)return n=e,!0}),n}(o)};return i[1]&&"4"===i[1]?(a.getHash=function(n){if(!n||!Object.keys(n).length)return"";var t="/4/"+e+"/";return n.newPadOpts&&(t+="newpad="+n.newPadOpts+"/"),n.loginOpts&&(t+="login="+n.loginOpts+"/"),t},a.getOptions=function(){var e={};return a.newPadOpts&&(e.newPadOpts=a.newPadOpts),a.loginOpts&&(e.loginOpts=a.loginOpts),e},a.version=4,a.app=i[2],o=i.slice(3),s(),a):-1===["media","file","user","invite"].indexOf(e)?(a.type="pad",a.getHash=function(){return n},a.getOptions=function(){return{embed:a.embed,present:a.present,ownerKey:a.ownerKey,versionHash:a.versionHash,auditorKey:a.auditorKey,newPadOpts:a.newPadOpts,loginOpts:a.loginOpts,password:a.password}},"/"!==n.slice(0,1)&&n.length>=56?(a.channel=n.slice(0,32),a.key=n.slice(32,56),a.version=0,a):(a.getHash=function(e){var n=i.slice(0,5).join("/")+"/",r=void 0!==e.ownerKey?e.ownerKey:a.ownerKey;r&&(n+=r+"/"),(a.password||e.password)&&(n+="p/"),e.embed&&(n+="embed/"),e.present&&(n+="present/");var o=void 0!==e.versionHash?e.versionHash:a.versionHash;o&&(n+="hash="+t.b64RemoveSlashes(o)+"/");var s=void 0!==e.auditorKey?e.auditorKey:a.auditorKey;return s&&(n+="auditor="+t.b64RemoveSlashes(s)+"/"),e.newPadOpts&&(n+="newpad="+e.newPadOpts+"/"),e.loginOpts&&(n+="login="+e.loginOpts+"/"),n},i[1]&&"1"===i[1]?(a.version=1,a.mode=i[2],a.channel=i[3],a.key=t.b64AddSlashes(i[4]),o=i.slice(5),s(),a):i[1]&&"2"===i[1]?(a.version=2,a.app=i[2],a.mode=i[3],a.key=i[4],o=i.slice(5),s(),a):i[1]&&"3"===i[1]?(a.version=3,a.app=i[2],a.mode=i[3],a.channel=i[4],o=i.slice(5),s(),a):a)):(a.getHash=function(){return i.join("/")},-1!==["media","file"].indexOf(e)?(a.type="file",a.getOptions=function(){return{embed:a.embed,present:a.present,ownerKey:a.ownerKey,newPadOpts:a.newPadOpts,loginOpts:a.loginOpts,password:a.password}},a.getHash=function(e){var n=i.slice(0,4).join("/")+"/",t=void 0!==e.ownerKey?e.ownerKey:a.ownerKey;return t&&(n+=t+"/"),(a.password||e.password)&&(n+="p/"),e.embed&&(n+="embed/"),e.present&&(n+="present/"),e.newPadOpts&&(n+="newpad="+e.newPadOpts+"/"),e.loginOpts&&(n+="login="+e.loginOpts+"/"),n},i[1]&&"1"===i[1]?(a.version=1,a.channel=i[2].replace(/-/g,"/"),a.key=i[3].replace(/-/g,"/"),o=i.slice(4),s(),a):i[1]&&"2"===i[1]?(a.version=2,a.app=i[2],a.key=i[3],o=i.slice(4),s(),a):i[1]&&"3"===i[1]?(a.version=3,a.app=i[2],a.channel=i[3],o=i.slice(4),s(),a):a):-1!==["user"].indexOf(e)?(a.type="user",i[1]&&"1"===i[1]?(a.version=1,a.user=i[2],a.pubkey=i[3].replace(/-/g,"/"),a):a):-1!==["invite"].indexOf(e)?(a.type="invite",i[1]&&"2"===i[1]?(a.version=2,a.app=i[2],a.mode=i[3],a.key=i[4],o=i.slice(5),a.password=-1!==o.indexOf("p"),a):a):void 0)}},h=a.parsePadUrl=function(e){var n,t={};return e?("/"!==e.slice(-1)&&"#"!==e.slice(-1)&&(e+="/"),e=e.replace(/\/\?[^#]+#/,"/#"),t.getUrl=function(e){e=e||{};var n="/";return t.type?(n+=t.type+"/",!t.hashData&&e&&Object.keys(e).length?n+"#"+function(e){if(!e||!Object.keys(e).length)return"";var n="/4/"+t.type+"/";return e.newPadOpts&&(n+="newpad="+e.newPadOpts+"/"),e.loginOpts&&(n+="login="+e.loginOpts+"/"),n}(e):t.hashData?n+="#"+t.hashData.getHash(e):n):n},t.getOptions=function(){return t.hashData&&t.hashData.getOptions?t.hashData.getOptions():{}},/^https*:\/\//.test(e)?(e.replace(/^https*:\/\/([^\/]*)\/(.*?)\//i,function(e,n,r){return t.domain=n,t.type=r,""}),-1===(n=e.indexOf("/#"))||(t.hash=e.slice(n+2),t.hashData=d(t.type,t.hash)),t):/^\/($|[^\/])/.test(e)?(n=e.indexOf("/#"),t.type=e.slice(1,n),-1===n||(t.hash=e.slice(n+2),t.hashData=d(t.type,t.hash)),t):t):t};return a.hashToHref=function(e,n){return"/"+n+"/#"+e},a.hrefToHash=function(e){return a.parsePadUrl(e).hash},a.getRelativeHref=function(e){if(e&&-1!==e.indexOf("#")){var n=h(e);return"/"+n.type+"/#"+n.hash}},a.getSecrets=function(n,r,o){var a,i,s={},u=function(){s.keys=t.createEditCryptor2(void 0,void 0,o),s.channel=c(s.keys.chanId),s.version=2,s.type=n};if(!r)return u(),s;if(r){if(!n)throw new Error("getSecrets with a hash requires a type parameter");a=d(n,r),i=r}if(0===i.length)return u(),s;if(0===a.version)s.channel=a.channel,s.key=a.key,s.version=0;else if(1===a.version){if(s.version=1,"pad"===a.type){if(s.channel=c(a.channel),"edit"===a.mode){if(s.keys=t.createEditCryptor(a.key),s.key=s.keys.editKeyStr,32!==s.channel.length||24!==s.key.length)throw new Error("The channel key and/or the encryption key is invalid")}else if("view"===a.mode&&(s.keys=t.createViewCryptor(a.key),32!==s.channel.length))throw new Error("The channel key is invalid")}else if("file"===a.type)s.channel=c(a.channel),s.keys={fileKeyStr:a.key,cryptKey:e.decodeBase64(a.key)};else if("user"===a.type)throw new Error("User hashes can't be opened (yet)")}else if(2===a.version)if(s.version=2,s.type=n,s.password=o,"pad"===a.type){if("edit"===a.mode){if(s.keys=t.createEditCryptor2(a.key,void 0,o),s.channel=c(s.keys.chanId),s.key=s.keys.editKeyStr,32!==s.channel.length||24!==s.key.length)throw new Error("The channel key and/or the encryption key is invalid")}else if("view"===a.mode&&(s.keys=t.createViewCryptor2(a.key,o),s.channel=c(s.keys.chanId),32!==s.channel.length))throw new Error("The channel key is invalid")}else if("file"===a.type){if(s.keys=t.createFileCryptor2(a.key,o),s.channel=c(s.keys.chanId),s.key=s.keys.fileKeyStr,48!==s.channel.length||24!==s.key.length)throw new Error("The channel key and/or the encryption key is invalid")}else if("user"===a.type)throw new Error("User hashes can't be opened (yet)");return s},a.getHashes=function(e){var n={};return(e=JSON.parse(JSON.stringify(e))).keys||e.key?(e.keys||(e.keys={}),(e.keys.editKeyStr||0===e.version&&e.key)&&(n.editHash=u(e)),e.keys.viewKeyStr&&(n.viewHash=f(e)),e.keys.fileKeyStr&&(n.fileHash=l(e)),n):n},a.getFormData=function(n,t,r){var i=(n=n||a.getSecrets("form",t,r))&&n.keys,s=i&&i.secondaryKey;if(s){var c=o.box.keyPair.fromSecretKey(e.decodeUTF8(s).slice(0,32)),u={};u.form_public=e.encodeBase64(c.publicKey);var f=u.form_private=e.encodeBase64(c.secretKey),l=a.getViewHashFromKeys({version:1,channel:n.channel,keys:{viewKeyStr:e.encodeBase64(i.cryptKey)}}),d=a.parseTypeHash("pad",l);return u.form_auditorHash=d.getHash({auditorKey:f}),u}},a.hrefToHexChannelId=function(e,n){var t=a.parsePadUrl(e);if(t&&t.hash)return a.getSecrets(t.type,t.hash,n).channel},a.getBlobPathFromHex=function(e){return"/blob/"+e.slice(0,2)+"/"+e},a.serializeHash=function(e){return e&&"/"!==e.slice(-1)&&(e+="/"),e},a.createInviteUrl=function(e,t){return t=t||a.createChannelId(),n.location.origin+"/invite/#/1/"+t+"/"+e.replace(/\//g,"-")+"/"},a.isValidChannel=function(e){return/^[a-zA-Z0-9]{32,48}$/.test(e)},a.isValidHref=function(e){if(e){var n=a.parsePadUrl(e);if(n&&n.type){if(n.hash){if(!n.hashData)return;if(void 0===n.hashData.version)return;if("pad"===n.hashData.type||"file"===n.hashData.type){if(!n.hashData.key&&!n.hashData.channel)return;if(n.hashData.key&&!/^[a-zA-Z0-9+-/=]+$/.test(n.hashData.key))return}}return n}}},a.decodeDataOptions=function(n){var t=decodeURIComponent(n),r=e.encodeUTF8(e.decodeBase64(t));return e.tryParse(r)||{}},a.encodeDataOptions=function(n){var t=JSON.stringify(n),r=e.encodeBase64(e.decodeUTF8(t));return encodeURIComponent(r)},a.getNewPadURL=function(e,n){var t=a.parsePadUrl(e),r=t.getOptions();return r.newPadOpts=a.encodeDataOptions(n),t.getUrl(r)},a.getLoginURL=function(e,n){var t=a.parsePadUrl(e),r=t.getOptions();return r.loginOpts=a.encodeDataOptions(n),t.getUrl(r)},a}(X(),M(),ne(),h()))}("undefined"!=typeof window?window:{})}(W)),W.exports}var re,oe,ae=te(),ie=X(),se={exports:{}},ce={exports:{}};function ue(){return re||(re=1,function(e){e.exports=function e(n,t,r){function o(i,s){if(!t[i]){if(!n[i]){if(!s&&f)return f(i);if(a)return a(i,!0);var c=new Error("Cannot find module '"+i+"'");throw c.code="MODULE_NOT_FOUND",c}var u=t[i]={exports:{}};n[i][0].call(u.exports,function(e){var t=n[i][1][e];return o(t||e)},u,u.exports,e,n,t,r)}return t[i].exports}for(var a=f,i=0;i=43)}}).catch(function(){return!1})}function O(e){return"boolean"==typeof v?u.resolve(v):A(e).then(function(e){return v=e})}function w(e){var n=y[e.name],t={};t.promise=new u(function(e,n){t.resolve=e,t.reject=n}),n.deferredOperations.push(t),n.dbReady?n.dbReady=n.dbReady.then(function(){return t.promise}):n.dbReady=t.promise}function D(e){var n=y[e.name].deferredOperations.pop();if(n)return n.resolve(),n.promise}function _(e,n){var t=y[e.name].deferredOperations.pop();if(t)return t.reject(n),t.promise}function T(e,n){return new u(function(t,r){if(y[e.name]=y[e.name]||F(),e.db){if(!n)return t(e.db);w(e),e.db.close()}var o=[e.name];n&&o.push(e.version);var a=i.open.apply(i,o);n&&(a.onupgradeneeded=function(n){var t=a.result;try{t.createObjectStore(e.storeName),n.oldVersion<=1&&t.createObjectStore(p)}catch(t){if("ConstraintError"!==t.name)throw t;console.warn('The database "'+e.name+'" has been upgraded from version '+n.oldVersion+" to version "+n.newVersion+', but the storage "'+e.storeName+'" already exists.')}}),a.onerror=function(e){e.preventDefault(),r(a.error)},a.onsuccess=function(){var n=a.result;n.onversionchange=function(e){e.target.close()},t(n),D(e)}})}function S(e){return T(e,!1)}function N(e){return T(e,!0)}function I(e,n){if(!e.db)return!0;var t=!e.db.objectStoreNames.contains(e.storeName),r=e.versione.db.version;if(r&&(e.version!==n&&console.warn('The database "'+e.name+"\" can't be downgraded from version "+e.db.version+" to version "+e.version+"."),e.version=e.db.version),o||t){if(t){var a=e.db.version+1;a>e.version&&(e.version=a)}return!0}return!1}function x(e){return new u(function(n,t){var r=new FileReader;r.onerror=t,r.onloadend=function(t){var r=btoa(t.target.result||"");n({__local_forage_encoded_blob:!0,data:r,type:e.type})},r.readAsBinaryString(e)})}function C(e){return c([b(atob(e.data))],{type:e.type})}function R(e){return e&&e.__local_forage_encoded_blob}function P(e){var n=this,t=n._initReady().then(function(){var e=y[n._dbInfo.name];if(e&&e.dbReady)return e.dbReady});return l(t,e,e),t}function k(e){w(e);for(var n=y[e.name],t=n.forages,r=0;r0&&(!e.db||"InvalidStateError"===o.name||"NotFoundError"===o.name))return u.resolve().then(function(){if(!e.db||"NotFoundError"===o.name&&!e.db.objectStoreNames.contains(e.storeName)&&e.version<=e.db.version)return e.db&&(e.version=e.db.version+1),N(e)}).then(function(){return k(e).then(function(){M(e,n,t,r-1)})}).catch(t);t(o)}}function F(){return{forages:[],db:null,dbReady:null,deferredOperations:[]}}function L(e){var n=this,t={db:null};if(e)for(var r in e)t[r]=e[r];var o=y[t.name];o||(o=F(),y[t.name]=o),o.forages.push(n),n._initReady||(n._initReady=n.ready,n.ready=P);var a=[];function i(){return u.resolve()}for(var s=0;s>4,f[c++]=(15&r)<<4|o>>2,f[c++]=(3&o)<<6|63&a;return u}function pe(e){var n,t=new Uint8Array(e),r="";for(n=0;n>2],r+=z[(3&t[n])<<4|t[n+1]>>4],r+=z[(15&t[n+1])<<2|t[n+2]>>6],r+=z[63&t[n+2]];return t.length%3==2?r=r.substring(0,r.length-1)+"=":t.length%3==1&&(r=r.substring(0,r.length-2)+"=="),r}function ve(e,n){var t="";if(e&&(t=de.call(e)),e&&("[object ArrayBuffer]"===t||e.buffer&&"[object ArrayBuffer]"===de.call(e.buffer))){var r,o=Z;e instanceof ArrayBuffer?(r=e,o+=ee):(r=e.buffer,"[object Int8Array]"===t?o+=te:"[object Uint8Array]"===t?o+=re:"[object Uint8ClampedArray]"===t?o+=oe:"[object Int16Array]"===t?o+=ae:"[object Uint16Array]"===t?o+=se:"[object Int32Array]"===t?o+=ie:"[object Uint32Array]"===t?o+=ce:"[object Float32Array]"===t?o+=ue:"[object Float64Array]"===t?o+=fe:n(new Error("Failed to get type for BinaryArray"))),n(o+pe(r))}else if("[object Blob]"===t){var a=new FileReader;a.onload=function(){var t=Q+e.type+"~"+pe(this.result);n(Z+ne+t)},a.readAsArrayBuffer(e)}else try{n(JSON.stringify(e))}catch(t){console.error("Couldn't convert value into a JSON string: ",e),n(null,t)}}function ye(e){if(e.substring(0,$)!==Z)return JSON.parse(e);var n,t=e.substring(le),r=e.substring($,le);if(r===ne&&X.test(t)){var o=t.match(X);n=o[1],t=t.substring(o[0].length)}var a=he(t);switch(r){case ee:return a;case ne:return c([a],{type:n});case te:return new Int8Array(a);case re:return new Uint8Array(a);case oe:return new Uint8ClampedArray(a);case ae:return new Int16Array(a);case se:return new Uint16Array(a);case ie:return new Int32Array(a);case ce:return new Uint32Array(a);case ue:return new Float32Array(a);case fe:return new Float64Array(a);default:throw new Error("Unkown type: "+r)}}var me={serialize:ve,deserialize:ye,stringToBuffer:he,bufferToString:pe};function ge(e,n,t,r){e.executeSql("CREATE TABLE IF NOT EXISTS "+n.storeName+" (id INTEGER PRIMARY KEY, key unique, value)",[],t,r)}function Ee(e){var n=this,t={db:null};if(e)for(var r in e)t[r]="string"!=typeof e[r]?e[r].toString():e[r];var o=new u(function(e,r){try{t.db=openDatabase(t.name,String(t.version),t.description,t.size)}catch(e){return r(e)}t.db.transaction(function(o){ge(o,t,function(){n._dbInfo=t,e()},function(e,n){r(n)})},r)});return t.serializer=me,o}function be(e,n,t,r,o,a){e.executeSql(t,r,o,function(e,i){i.code===i.SYNTAX_ERR?e.executeSql("SELECT name FROM sqlite_master WHERE type='table' AND name = ?",[n.storeName],function(e,s){s.rows.length?a(e,i):ge(e,n,function(){e.executeSql(t,r,o,a)},a)},a):a(e,i)},a)}function Ae(e,n){var t=this;e=d(e);var r=new u(function(n,r){t.ready().then(function(){var o=t._dbInfo;o.db.transaction(function(t){be(t,o,"SELECT * FROM "+o.storeName+" WHERE key = ? LIMIT 1",[e],function(e,t){var r=t.rows.length?t.rows.item(0).value:null;r&&(r=o.serializer.deserialize(r)),n(r)},function(e,n){r(n)})})}).catch(r)});return f(r,n),r}function Oe(e,n){var t=this,r=new u(function(n,r){t.ready().then(function(){var o=t._dbInfo;o.db.transaction(function(t){be(t,o,"SELECT * FROM "+o.storeName,[],function(t,r){for(var a=r.rows,i=a.length,s=0;s0)return void a(we.apply(o,[e,s,t,r-1]));i(n)}})})}).catch(i)});return f(a,t),a}function De(e,n,t){return we.apply(this,[e,n,t,1])}function _e(e,n){var t=this;e=d(e);var r=new u(function(n,r){t.ready().then(function(){var o=t._dbInfo;o.db.transaction(function(t){be(t,o,"DELETE FROM "+o.storeName+" WHERE key = ?",[e],function(){n()},function(e,n){r(n)})})}).catch(r)});return f(r,n),r}function Te(e){var n=this,t=new u(function(e,t){n.ready().then(function(){var r=n._dbInfo;r.db.transaction(function(n){be(n,r,"DELETE FROM "+r.storeName,[],function(){e()},function(e,n){t(n)})})}).catch(t)});return f(t,e),t}function Se(e){var n=this,t=new u(function(e,t){n.ready().then(function(){var r=n._dbInfo;r.db.transaction(function(n){be(n,r,"SELECT COUNT(key) as c FROM "+r.storeName,[],function(n,t){var r=t.rows.item(0).c;e(r)},function(e,n){t(n)})})}).catch(t)});return f(t,e),t}function Ne(e,n){var t=this,r=new u(function(n,r){t.ready().then(function(){var o=t._dbInfo;o.db.transaction(function(t){be(t,o,"SELECT key FROM "+o.storeName+" WHERE id = ? LIMIT 1",[e+1],function(e,t){var r=t.rows.length?t.rows.item(0).key:null;n(r)},function(e,n){r(n)})})}).catch(r)});return f(r,n),r}function Ie(e){var n=this,t=new u(function(e,t){n.ready().then(function(){var r=n._dbInfo;r.db.transaction(function(n){be(n,r,"SELECT key FROM "+r.storeName,[],function(n,t){for(var r=[],o=0;o '__WebKitDatabaseInfoTable__'",[],function(t,r){for(var o=[],a=0;a0}function Le(e){var n=this,t={};if(e)for(var r in e)t[r]=e[r];return t.keyPrefix=ke(e,n._defaultConfig),Fe()?(n._dbInfo=t,t.serializer=me,u.resolve()):u.reject()}function He(e){var n=this,t=n.ready().then(function(){for(var e=n._dbInfo.keyPrefix,t=localStorage.length-1;t>=0;t--){var r=localStorage.key(t);0===r.indexOf(e)&&localStorage.removeItem(r)}});return f(t,e),t}function je(e,n){var t=this;e=d(e);var r=t.ready().then(function(){var n=t._dbInfo,r=localStorage.getItem(n.keyPrefix+e);return r&&(r=n.serializer.deserialize(r)),r});return f(r,n),r}function Ke(e,n){var t=this,r=t.ready().then(function(){for(var n=t._dbInfo,r=n.keyPrefix,o=r.length,a=localStorage.length,i=1,s=0;s=0;n--){var t=localStorage.key(n);0===t.indexOf(e)&&localStorage.removeItem(t)}}):u.reject("Invalid arguments"),f(r,n),r}var qe={_driver:"localStorageWrapper",_initStorage:Le,_support:Pe(),iterate:Ke,getItem:je,setItem:Ge,removeItem:Ye,clear:He,length:Ve,key:Ue,keys:Be,dropInstance:Je},We=function(e,n){return e===n||"number"==typeof e&&"number"==typeof n&&isNaN(e)&&isNaN(n)},ze=function(e,n){for(var t=e.length,r=0;r{const n=(e,n)=>{let t=globalThis,r=globalThis;var o=t.CryptPad_Cache={},a=e.mkEvent(!0),i=!1,s=!1,c=!1;try{var u=t.indexedDB.open("test_db",1);u.onsuccess=function(){i=(c=!0)&&!s,a.fire()},u.onerror=function(){a.fire()}}catch(e){a.fire()}o.enable=function(){s=!1,i=c&&!s},o.disable=function(){s=!0,i=c&&!s},o.isEnabled=()=>i;var f=n.createInstance({driver:n.INDEXEDDB,name:"cp_cache"});o.getBlobCache=function(n,t){t=e.once(e.mkAsync(t||function(){})),a.reg(function(){i?f.getItem(n,function(r,o){!r&&o&&o.c?(t(null,o.c),o.t=+new Date,f.setItem(n,o,function(e){e&&console.error(e)})):t(e.serializeError(r||"EINVAL"))}):t("NOCACHE")})},o.setBlobCache=function(n,t,r){r=e.once(e.mkAsync(r||function(){})),a.reg(function(){i?t?f.setItem(n,{c:t,t:+new Date},function(n){r(e.serializeError(n))}):r("EINVAL"):r("NOCACHE")})},o.getChannelCache=function(n,t){t=e.once(e.mkAsync(t||function(){})),a.reg(function(){i?f.getItem(n,function(r,o){!r&&o&&Array.isArray(o.c)?(t(null,o),o.t=+new Date,f.setItem(n,o,function(e){e&&console.error(e)})):t(e.serializeError(r||"EINVAL"))}):t("NOCACHE")})};var l={};return o.storeCache=function(n,t,r,o){o=e.once(e.mkAsync(o||function(){})),a.reg(function(){l[n]=l[n]||e.throttle(function(t,r,o){var a,s;i?Array.isArray(r)&&t?(a=r,Array.isArray(a)&&(a.length>100&&a.splice(0,a.length-100),a.some(function(e,n){if(e.isCheckpoint)return s=n,!0}),a.splice(0,s)),f.setItem(n,{k:t,c:r,t:+new Date},function(n){n&&o(e.serializeError(n))})):o("EINVAL"):o("NOCACHE")},50),l[n](t,r,o)})},o.leaveChannel=function(e){delete l[e]},o.clearChannel=function(n,t){t=e.once(e.mkAsync(t||function(){})),a.reg(function(){i?f.removeItem(n,function(){t()}):t("NOCACHE")})},o.clear=function(n){n=e.once(e.mkAsync(n||function(){})),a.reg(function(){i?f.clear(n):n("NOCACHE")})},o.getKeys=function(n){n=e.once(e.mkAsync(n||function(){})),a.reg(function(){i?f.keys().then(function(e){n(null,e)}).catch(function(e){n(e)}):n("NOCACHE")})},o.getTime=function(n,t){t=e.once(e.mkAsync(t||function(){})),a.reg(function(){i?f.getItem(n,function(n,r){!n&&r&&r.c?t(null,r.t):t(e.serializeError(n||"EINVAL"))}):t("NOCACHE")})},r.CryptPad_clearIndexedDB=o.clear,o};e.exports&&(e.exports=n(X(),ue()))})()}(se)),se.exports}var le=fe(),de=n({__proto__:null,default:r(le)},[le]);const he=ie.mkEvent(!0),pe=ie.mkEvent(!0),ve=ie.mkEvent(),ye=ie.mkEvent();let me={};const ge={setCustomize:e=>{me=e.ApiConfig},init:e=>{var n,t,r;const{broadcast:o,userHash:a,anonHash:i}=e,s=a||i||ae.createRandomHash("drive"),c=e.store,u=ae.getSecrets("drive",s),f=(null===(n=e.store)||void 0===n?void 0:n.network)||(null===(t=e.store)||void 0===t?void 0:t.networkPromise),l={data:{},websocketURL:U.getWebsocketURL(),network:f,channel:u.channel,readOnly:!1,validateKey:(null===(r=u.keys)||void 0===r?void 0:r.validateKey)||void 0,crypto:L.createEncryptor(u.keys),Cache:de,userName:"fs",logLevel:1,ChainPad:P,updateProgress:function(e){e.type="drive",o([],"LOADING_DRIVE",e)},classic:!0},d=globalThis.CP_account_rt=N.create(l);c.driveSecret=u,c.proxy=d.proxy,c.onRpcReadyEvt=ie.mkEvent(!0),c.loggedIn=void 0!==e.userHash;const h={loggedIn:c.loggedIn};return d.proxy.on("create",function(e){c.realtime=e.realtime,c.network=e.network,c.loggedIn||(h.anonHash=ae.getEditHashFromKeys(u))}).on("cacheready",function(n){c.realtime=n.realtime,c.offline=!0;const t=!!c.networkPromise;if(c.networkPromise||(c.networkPromise=n.networkPromise),c.cacheReturned=h,c.networkPromise&&c.networkPromise.then&&!t){const e=setTimeout(function(){c.networkTimeout=!0,o([],"LOADING_DRIVE",{type:"offline"})},5e3);c.networkPromise.then(function(n){c.network||(c.network=n),clearTimeout(e)},function(n){console.error(n),clearTimeout(e)})}e.cache&&(h.edPublic=d.proxy.edPublic,he.fire(h))}).on("ready",function(n){delete c.networkTimeout,c.ready||(c.driveMetadata=n.metadata,d.proxy.drive||(d.proxy.drive={}),!d.proxy[J.displayNameKey]&&c.noDriveName&&(d.proxy[J.displayNameKey]=c.noDriveName),!d.proxy.uid&&c.noDriveUid&&(d.proxy.uid=c.noDriveUid),!d.proxy.form_seed&&e.form_seed&&(d.proxy.form_seed=e.form_seed),d.proxy.edPublic&&Array.isArray(me.adminKeys)&&-1!==me.adminKeys.indexOf(d.proxy.edPublic)&&(c.isAdmin=!0),h.edPublic=d.proxy.edPublic,pe.fire(h))}).on("error",function(e){"EDELETED"===e.error&&(c.ownDeletion||(c.isDeleted=!0,o([],"DRIVE_DELETED",e.message)))}).on("disconnect",function(){c.offline=!0,ve.fire(),o([],"UPDATE_METADATA")}).on("reconnect",function(){c.offline=!1,ye.fire(),o([],"UPDATE_METADATA")}),{channel:u.channel,onAccountCacheReady:he.reg,onAccountReady:pe.reg,onDisconnect:ve.reg,onReconnect:ye.reg}}};var Ee,be=Object.freeze({__proto__:null,Account:ge}),Ae={exports:{}};function Oe(){return Ee||(Ee=1,function(e){(()=>{const n=(e={},n={})=>{var t={setCustomize:t=>{n=t.Messages,e=t.AppConfig},init:function(e){t.state=e}};return t.send=function(n,r,o){("function"!=typeof o&&(o=function(){}),e.disableFeedback)?o():n&&(!0===r||t.state)?function(e,n){var t=new XMLHttpRequest;t.open("HEAD",e),t.onreadystatechange=function(){this.readyState===this.DONE&&n&&n()},t.send()}("/common/feedback.html?"+n+"="+Math.random().toString(16).replace(/0./,""),o):o()},t.reportAppUsage=function(){var e=window.location.pathname.split("/").filter(function(e){return e}).join(".");/^#\/1\/view\//.test(window.location.hash)?t.send(e+"_VIEW"):t.send(e)},t.reportScreenDimensions=function(){var e=window.innerHeight,n=window.innerWidth;t.send("DIMENSIONS:"+e+"x"+n)},t.reportLanguage=function(){n&&t.send("LANG_"+n._languageUsed)},t};e.exports&&(e.exports=n(void 0,void 0))})()}(Ae)),Ae.exports}var we,De,_e=Oe(),Te=n({__proto__:null,default:r(_e)},[_e]),Se={exports:{}},Ne={exports:{}};function Ie(){return De||(De=1,function(e){e.exports&&(e.exports=function(e={},n){var t={setCustomize:n=>{e=n.AppConfig}};t.MINIMUM_PASSWORD_LENGTH="number"==typeof e.minimumPasswordLength?e.minimumPasswordLength:8,t.MINIMUM_NAME_LENGTH=1,t.MAXIMUM_NAME_LENGTH=64,t.isEmail=function(e){return/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/.test(String(e).toLowerCase())},t.isLongEnoughPassword=function(e){return e.length>=t.MINIMUM_PASSWORD_LENGTH};var r=t.isString=function(e){return"string"==typeof e};return t.isValidUsername=function(e){return!!(r(e)&&e.length>=t.MINIMUM_NAME_LENGTH)},t.isValidPassword=function(e){return!(!e||!r(e))},t.passwordsMatch=function(e,n){return r(e)&&r(n)&&e===n},t.customSalt=function(){return"string"==typeof e.loginSalt?e.loginSalt:""},t.deriveFromPassphrase=function(e,r,o,a){n(r,e+t.customSalt(),8,1024,o||128,200,a,void 0)},t.dispenser=function(e){var n={used:0};return function(t){if(n.used+t>e.length)throw new Error("exceeded available entropy");if("number"!=typeof t)throw new Error("expected a number");if(t<=0)throw new Error("expected to consume a positive number of bytes");var r;return r=e.slice?e.slice(n.used,n.used+t):e.subarray(n.used,n.used+t),n.used+=t,r}},t}(void 0,(we||(we=1,function(e){e.exports=function(e,n,t,r,o,a,i,s){function c(e){var n=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298],t=1779033703,r=3144134277,o=1013904242,a=2773480762,i=1359893119,s=2600822924,c=528734635,u=1541459225,f=new Array(64);function l(e){for(var l=0,d=e.length;d>=64;){var h,p,v,y,m,g=t,E=r,b=o,A=a,O=i,w=s,D=c,_=u;for(p=0;p<16;p++)v=l+4*p,f[p]=(255&e[v])<<24|(255&e[v+1])<<16|(255&e[v+2])<<8|255&e[v+3];for(p=16;p<64;p++)y=((h=f[p-2])>>>17|h<<15)^(h>>>19|h<<13)^h>>>10,m=((h=f[p-15])>>>7|h<<25)^(h>>>18|h<<14)^h>>>3,f[p]=(y+f[p-7]|0)+(m+f[p-16]|0)|0;for(p=0;p<64;p++)y=(((O>>>6|O<<26)^(O>>>11|O<<21)^(O>>>25|O<<7))+(O&w^~O&D)|0)+(_+(n[p]+f[p]|0)|0)|0,m=((g>>>2|g<<30)^(g>>>13|g<<19)^(g>>>22|g<<10))+(g&E^g&b^E&b)|0,_=D,D=w,w=O,O=A+y|0,A=b,b=E,E=g,g=y+m|0;t=t+g|0,r=r+E|0,o=o+b|0,a=a+A|0,i=i+O|0,s=s+w|0,c=c+D|0,u=u+_|0,l+=64,d-=64}}l(e);var d,h=e.length%64,p=e.length/536870912|0,v=e.length<<3,y=h<56?56:120,m=e.slice(e.length-h,e.length);for(m.push(128),d=h+1;d>>24&255),m.push(p>>>16&255),m.push(p>>>8&255),m.push(p>>>0&255),m.push(v>>>24&255),m.push(v>>>16&255),m.push(v>>>8&255),m.push(v>>>0&255),l(m),[t>>>24&255,t>>>16&255,t>>>8&255,t>>>0&255,r>>>24&255,r>>>16&255,r>>>8&255,r>>>0&255,o>>>24&255,o>>>16&255,o>>>8&255,o>>>0&255,a>>>24&255,a>>>16&255,a>>>8&255,a>>>0&255,i>>>24&255,i>>>16&255,i>>>8&255,i>>>0&255,s>>>24&255,s>>>16&255,s>>>8&255,s>>>0&255,c>>>24&255,c>>>16&255,c>>>8&255,c>>>0&255,u>>>24&255,u>>>16&255,u>>>8&255,u>>>0&255]}function u(e,n,t){e=e.length<=64?e:c(e);var r,o=64+n.length+4,a=new Array(o),i=new Array(64),s=[];for(r=0;r<64;r++)a[r]=54;for(r=0;r=o-4;e--){if(a[e]++,a[e]<=255)return;a[e]=0}}for(;t>=32;)u(),s=s.concat(c(i.concat(c(a)))),t-=32;return t>0&&(u(),s=s.concat(c(i.concat(c(a))).slice(0,t))),s}function f(e,n,t,r){var o,a,i=e[0]^n[t++],s=e[1]^n[t++],c=e[2]^n[t++],u=e[3]^n[t++],f=e[4]^n[t++],l=e[5]^n[t++],d=e[6]^n[t++],h=e[7]^n[t++],p=e[8]^n[t++],v=e[9]^n[t++],y=e[10]^n[t++],m=e[11]^n[t++],g=e[12]^n[t++],E=e[13]^n[t++],b=e[14]^n[t++],A=e[15]^n[t++],O=i,w=s,D=c,_=u,T=f,S=l,N=d,I=h,x=p,C=v,R=y,P=m,k=g,M=E,F=b,L=A;for(a=0;a<8;a+=2)O^=(o=(k^=(o=(x^=(o=(T^=(o=O+k)<<7|o>>>25)+O)<<9|o>>>23)+T)<<13|o>>>19)+x)<<18|o>>>14,S^=(o=(w^=(o=(M^=(o=(C^=(o=S+w)<<7|o>>>25)+S)<<9|o>>>23)+C)<<13|o>>>19)+M)<<18|o>>>14,R^=(o=(N^=(o=(D^=(o=(F^=(o=R+N)<<7|o>>>25)+R)<<9|o>>>23)+F)<<13|o>>>19)+D)<<18|o>>>14,L^=(o=(P^=(o=(I^=(o=(_^=(o=L+P)<<7|o>>>25)+L)<<9|o>>>23)+_)<<13|o>>>19)+I)<<18|o>>>14,O^=(o=(_^=(o=(D^=(o=(w^=(o=O+_)<<7|o>>>25)+O)<<9|o>>>23)+w)<<13|o>>>19)+D)<<18|o>>>14,S^=(o=(T^=(o=(I^=(o=(N^=(o=S+T)<<7|o>>>25)+S)<<9|o>>>23)+N)<<13|o>>>19)+I)<<18|o>>>14,R^=(o=(C^=(o=(x^=(o=(P^=(o=R+C)<<7|o>>>25)+R)<<9|o>>>23)+P)<<13|o>>>19)+x)<<18|o>>>14,L^=(o=(F^=(o=(M^=(o=(k^=(o=L+F)<<7|o>>>25)+L)<<9|o>>>23)+k)<<13|o>>>19)+M)<<18|o>>>14;n[r++]=e[0]=O+i|0,n[r++]=e[1]=w+s|0,n[r++]=e[2]=D+c|0,n[r++]=e[3]=_+u|0,n[r++]=e[4]=T+f|0,n[r++]=e[5]=S+l|0,n[r++]=e[6]=N+d|0,n[r++]=e[7]=I+h|0,n[r++]=e[8]=x+p|0,n[r++]=e[9]=C+v|0,n[r++]=e[10]=R+y|0,n[r++]=e[11]=P+m|0,n[r++]=e[12]=k+g|0,n[r++]=e[13]=M+E|0,n[r++]=e[14]=F+b|0,n[r++]=e[15]=L+A|0}function l(e,n,t,r,o){for(;o--;)e[n++]=t[r++]}function d(e,n,t,r,o){for(;o--;)e[n++]^=t[r++]}function h(e,n,t,r,o){l(e,0,n,t+16*(2*o-1),16);for(var a=0;a<2*o;a+=2)f(e,n,t+16*a,r+8*a),f(e,n,t+16*a+16,r+8*a+16*o)}function p(e,n,t){return e[n+16*(2*t-1)]}function v(e){for(var n=[],t=0;t127&&r<2048?(n.push(r>>6|192),n.push(63&r|128)):(n.push(r>>12|224),n.push(r>>6&63|128),n.push(63&r|128))}return n}if(t<1||t>31)throw new Error("scrypt: logN not be between 1 and 31");var y,m,g,E,b=1<>>0;if(1*r>=1<<30||r>16777216||r>8388608||b>16777216/r)throw new Error("scrypt: parameters are too large");"string"==typeof e&&(e=v(e)),"string"==typeof n&&(n=v(n)),"undefined"!=typeof Int32Array?(y=new Int32Array(64*r),m=new Int32Array(32*b*r),E=new Int32Array(16)):(y=[],m=[],E=new Array(16)),g=u(e,n,128*r);var A=32*r;function O(){for(var e=0;e<32*r;e++){var n=4*e;y[0+e]=(255&g[n+3])<<24|(255&g[n+2])<<16|(255&g[n+1])<<8|255&g[n+0]}}function w(e,n){for(var t=e;t>>0&255,g[4*e+1]=n>>>8&255,g[4*e+2]=n>>>16&255,g[4*e+3]=n>>>24&255}}var T="undefined"!=typeof setImmediate?setImmediate:setTimeout;function S(e,n,t,r,o){!function a(){T(function(){r(e,e+t>>18&63]),o.push(t[n>>>12&63]),o.push(t[n>>>6&63]),o.push(t[n>>>0&63]);return r%3>0&&(o[o.length-1]="=",r%3==1&&(o[o.length-2]="=")),o.join("")}(t):"hex"===n?function(e){for(var n="0123456789abcdef".split(""),t=e.length,r=[],o=0;o>>4&15]),r.push(n[e[o]>>>0&15]);return r.join("")}(t):t}"function"==typeof a&&(s=i,i=a,a=1e3),a<=0?(O(),w(0,b),D(0,b),_(),i(N(s))):(O(),S(0,b,2*a,w,function(){S(0,b,2*a,D,function(){_(),i(N(s))})}))}}(Ne)),Ne.exports)))}(Se)),Se.exports}var xe,Ce,Re,Pe=Ie(),ke=n({__proto__:null,default:r(Pe)},[Pe]),Me={exports:{}},Fe={exports:{}},Le={exports:{}},He={exports:{}};function je(){return xe||(xe=1,function(e){e.exports&&(e.exports={whenRealtimeSyncs:function(e,n){"function"==typeof e.getAuthDoc?setTimeout(function(){e.getAuthDoc()!==e.getUserDoc()?e.onSettle(n):n()},0):console.error("improper use of this function")}})}(He)),He.exports}function Ke(){return Ce||(Ce=1,function(e){(()=>{const n=(e,n,t,r)=>{let o=globalThis;var a={setCustomize:()=>{}},i=function(e){try{return JSON.parse(JSON.stringify(e))}catch(e){return}};return a.init=function(a,s,c){var u=a.loggedIn,f=a.sharedFolder,l=a.readOnly,d=a.Messages||{},h=s.ROOT,p=s.FILES_DATA,v=s.STATIC_DATA,y=s.OLD_FILES_DATA,m=s.UNSORTED,g=s.TRASH,E=s.TEMPLATE,b=s.SHARED_FOLDERS,A=s.SHARED_FOLDERS_TEMP,O=s.debug;let w={};s._setReadOnly=function(e){(l=e)||s.fixFiles()},s.setHref=function(e,t,r){(t||e)&&(l||(t?[t]:s.findChannels([e])).forEach(function(e){var t=s.getFileData(e,!0);if(s.getHref(t)===r)return;t.href=s.cryptor.encrypt(r);const o=n.parsePadUrl(r);if("form"!==o.type)return;const a=n.getSecrets(o.type,o.hash,t.password);t.roHref="/"+o.type+"/#"+n.getViewHashFromKeys(a)}))},s.setPadAttribute=function(e,n,t,r){if(r=r||function(){},l)r("EFORBIDDEN");else{var o=s.getIdFromHref(e);if(o)if(n&&n.trim()){var a=s.getFileData(o,!0);"href"===n?s.setHref(null,o,t):a[n]=i(t),r(null)}else r("E_INVAL_ATTR");else r("E_INVAL_HREF")}},s.getPadAttribute=function(e,n,t){t=t||function(){};var r=s.getIdFromHref(e);if(r){var o=s.getFileData(r);t(null,i(o[n]))}else t(null,void 0)},s.pushData=function(t,o){if("function"!=typeof o&&(o=function(){}),l)return void o("EFORBIDDEN");var a=e.createRandomInteger(),u=i(t);let f=n.parsePadUrl(u.roHref||u.href);u.href&&-1!==u.href.indexOf("#")&&(u.href=s.cryptor.encrypt(u.href)),["sheet","doc","presentation"].includes(f?.type)&&!u.rtChannel&&r.send("PUSH_DATA_MISSING_RT_CHANNEL",!0),c[p][a]=u,o(null,a)},s.pushLink=function(n,t){if("function"!=typeof t&&(t=function(){}),l)t("EFORBIDDEN");else{var r=e.createRandomInteger(),o=i(n);c[v][r]=o,t(null,r)}},s.pushSharedFolder=function(n,t){if("function"!=typeof t&&(t=function(){}),l)t("EFORBIDDEN");else{var r,o=i(n);if(Object.keys(c[b]).some(function(e){if(c[b][e].channel===o.channel)return o.href&&!c[b][e].href&&(c[b][e].href=o.href),r=e,!0}))t("EEXISTS",r);else if(u&&!a.testMode){var f=e.createRandomInteger();o.href&&-1!==o.href.indexOf("#")&&(o.href=s.cryptor.encrypt(o.href)),c[b][f]=o,t(null,f)}else t("EAUTH")}},s.deprecateSharedFolder=function(e,n){if(!l){var t=c[b][e];if(t){if(!(!t.href||-1===s.cryptor.decrypt(t.href).indexOf("#")))(c[A][e]=JSON.parse(JSON.stringify(t))).legacy="PASSWORD_CHANGE"!==n;var r=s.findFile(Number(e));s.delete(r,null,!0),delete c[b][e]}}};var D=function(e){l||delete c[p][e]};s.checkDeletedFiles=function(e){if(u||a.testMode)if(l)e("EFORBIDDEN");else{var t=s.getFiles([h,"hrefArray",g]),r=[];s.getFiles([p,b,v]).forEach(function(e){if(-1===t.indexOf(e)){var o=s.isSharedFolder(e)?c[b][e]:s.getFileData(e),i=o.channel;o.lastVersion&&r.push(n.hrefToHexChannelId(o.lastVersion)),o.rtChannel&&r.push(o.rtChannel),i&&r.push(i),s.isSharedFolder(e)?(delete c[b][e],a.removeProxy&&a.removeProxy(e)):c[v][e]?delete c[v][e]:D(e)}}),r.length?e(null,r):e()}else e()};s.deleteMultiplePermanently=function(e,n,t){if(l)t("EFORBIDDEN");else{var r=e.filter(function(e){return s.isPathIn(e,[p])});if(!u&&!a.testMode)return r.forEach(function(e){var n=e[1];n&&D(n)}),void t();var o=e.filter(function(e){return s.isPathIn(e,["hrefArray"])}),i=e.filter(function(e){return s.isPathIn(e,[h])}),f=e.filter(function(e){return s.isPathIn(e,[g])}),d=[];o.forEach(function(e){var n=s.find(e);d.push({root:e[0],id:n})}),function(e){l||e.forEach(function(e){var n=c[e.root].indexOf(e.id);c[e.root].splice(n,1)})}(d),i.forEach(function(e){var n=e.slice(),t=n.pop();delete s.find(n)[t]});var v,y=[];f.forEach(function(e){var n=e.slice(),t=n.pop(),r=s.find(n);4!==e.length?delete r[t]:y.push({name:e[1],el:r})}),v=y,l||v.forEach(function(e){var n=c[g][e.name].indexOf(e.el);c[g][e.name].splice(n,1)}),n?t():s.checkDeletedFiles(t)}},s.copyFromOtherDrive=function(e,t,r,o){if(!l){var a=[];if(Object.keys(r).forEach(function(e){e=Number(e);var n=r[e];if(n.static)return delete n.static,void(c[v][e]=n);n.href&&(n.href=s.cryptor.encrypt(n.href));var t=!1;for(var o in c[p])if(c[p][o].channel===n.channel){c[p][o].href||(c[p][o].href=n.href),t=!0;break}t?a.push(e):c[p][e]=n}),s.isFile(t)&&-1!==a.indexOf(t))s.log(d.sharedFolders_duplicate);else{if(s.isFolder(t)){var i=function(e){for(var n in e)s.isFile(e[n])?-1!==a.indexOf(e[n])&&(s.log(d.sharedFolders_duplicate),delete e[n]):s.isFolder(e[n])&&i(e[n])};i(t)}var u=s.find(e),f=s.isFile(t)?n.createChannelId():o;if(s.isFolder(t)&&f!==d.fm_newFolder&&void 0!==u[f])throw{error:"E_DUPLICATE_FOLDER_NAME",folderName:f,message:d.fo_unavailableName};var h=s.getAvailableName(u,f);Array.isArray(u)?u.push(t):u[h]=t}}};s.copyElement=function(e,t){if(!l&&!s.comparePath(e,t)){var r=s.find(e),o=s.find(t);if(s.isPathIn(t,[g])){if(!e||e.length<2||e[0]===g)return void O("Can't move an element from the trash to the trash: ",e);var a=e[e.length-1],i=s.isPathIn(e,["hrefArray"])?s.getTitle(r):a,u=e.slice();return u.pop(),function(e,n,t){if(!l){var r=c[g];void 0===r[e]&&(r[e]=[]);var o={element:n,path:t};r[e].push(o)}}(i,r,u),!0}if(s.isPathIn(t,["hrefArray"])){if(s.isFolder(r))return void s.log(d.fo_moveUnsortedError);if(e[0]===t[0])return;var f=t[0];return-1===c[f].indexOf(r)&&c[f].push(r),!0}var h=s.isFile(r)?s.getAvailableName(o,n.createChannelId()):s.isInTrashRoot(e)?e[1]:e.pop();return void 0!==o[h]?{error:"E_DUPLICATE_FOLDER_NAME",folderName:h,message:d.fo_unavailableName}:(o[h]=r,!0)}},s.forget=function(e){if(!l){var n=s.getIdFromHref(e);if(n){if(!u&&!a.testMode)return D(n),!0;var t=s.findFile(n);return s.move(t,[g]),!0}}},s.restoreHref=function(e){if(!l){var n=s.getIdFromHref(e);if(n&&s.isFile(n)){var t=s.findFile(n),r=!0;t.forEach(function(e){e[0]!==g?r=!1:s.delete(e,null,!0)}),r&&s.add(n)}}},s.add=function(e,t){if(!l&&(u||a.testMode)){e=Number(e);var r=c[p][e]||c[v][e]||c[b][e];if(r&&"object"==typeof r){var o,i=t;if(t&&!Array.isArray(t)&&(i=decodeURIComponent(t).split(",")),t&&s.isPathIn(i,["hrefArray"]))(o=s.find(i)).push(e);else if(-1!==s.getFiles([h,g,"hrefArray"]).indexOf(e)||i||(i=[h]),t&&s.isPathIn(i,[h])){if(o=s.find(i)){var f=s.getAvailableName(o,n.createChannelId());return void(o[f]=e)}o=s.find([h]),i.slice(1).forEach(function(e){o=o[e]=o[e]||{}}),o[n.createChannelId()]=e}}}},s.setFolderData=function(e,t,r,o){if(!l){var a=s.find(e);if(s.isFolder(a)&&!s.isSharedFolder(a)){if(!s.hasFolderData(a))a["000"+n.createChannelId().slice(0,-3)]={metadata:!0};s.getFolderData(a)[t]=r,o()}}};var _=function(e){s.rt?(s.rt.sync(),t.whenRealtimeSyncs(s.rt,e)):o.setTimeout(e,1e3)};return s.migrateReadOnly=function(e){if(!l&&a.editKey)if(c.version>=2)e();else{c.migrateRo=1;_(function(){var n=JSON.parse(JSON.stringify(c));s.reencrypt(a.editKey,a.editKey,n),setTimeout(function(){c.version>=2?e():(Object.keys(n).forEach(function(e){c[e]=n[e]}),c.version=2,delete c.migrateRo,_(e))},1e3)})}else e({error:"EFORBIDDEN"})},s.migrate=function(t){if(l)t();else{!function(){if(c[m]&&c[y]){O("UNSORTED still exists in the object, removing it...");var e=c[m];0!==e.length?(e.forEach(function(e){"string"==typeof e&&(0===c[y].filter(function(n){return n.href===e}).length&&c[y].push({href:e}))}),delete c[m]):delete c[m]}}(),function(t){if(c[y])try{O("Migrating file system..."),c.migrate=1;_(function(){var r=c[y].slice();c[p]||(c[p]={});var o=c[p];r.forEach(function(t){if(t&&t.href){var r=t.href,a=e.createRandomInteger(),i=s.findFile(r),c=t,u=n.createChannelId();o[a]=c||{href:r},i.forEach(function(e){var n=e.slice(),t=n.pop(),r=s.find(n);if(s.isInTrashRoot(e))return r.element=a,void(o[a].filename=e[1]);s.isPathIn(e,["hrefArray"])?r[t]=a:(r[u]=a,o[a].filename=t,delete r[t])})}}),delete c[y],delete c.migrate,t()})}catch(e){console.error(e),t()}else t()}(t)}},s.fixFiles=function(t){if(!l){t&&(O=function(){});var r=+new Date;O("Cleaning file system...");var o=JSON.stringify(c),i=function(t){"object"!=typeof c[h]&&(O("ROOT was not an object"),c[h]={});var r=t||c[h];if(!r)return console.error("Invalid element in root");var o,a=0,u=c[v],f=c[p];for(var l in r)if(null!==(o=r[l]))if(s.isFolderData(o))0!==a&&(O("Multiple metadata files in folder"),delete r[l]),a++;else if(s.isFile(o,!0)||s.isFolder(o))if(s.isFolder(o))i(o);else{if("string"==typeof o){var d=e.createRandomInteger(),y=n.createChannelId();f[d]={href:s.cryptor.encrypt(o),filename:l},r[y]=d,delete r[l]}if("number"==typeof o)f[o]||u[o]||(O("An element in ROOT doesn't have associated data",o,l),delete r[l])}else O("An element in ROOT was not a folder nor a file. ",o),delete r[l];else console.error("element[%s] is null",l),delete r[l]};e.isObject(c[v])||(O("STATIC_DATA was not an object"),c[v]={}),i(),function(){if(!f){"object"!=typeof c[g]&&(O("TRASH was not an object"),c[g]={});var n,t=c[g],r=function(t,r,o){if("object"==typeof t){if(!s.isSharedFolder(t.element))if(s.isFile(t.element,!0)||s.isFolder(t.element))if(Array.isArray(t.path)){if("string"==typeof t.element){var a=e.createRandomInteger();c[p][a]={href:s.cryptor.encrypt(t.element),filename:o},t.element=a}if(s.isFolder(t.element)&&i(t.element),"number"==typeof t.element)c[p][t.element]||c[v][t.element]||(O("An element in TRASH doesn't have associated data",t.element,o),n.push(r))}else n.push(r);else n.push(r)}else n.push(r)};for(var o in t)if(Array.isArray(t[o]))if(0===t[o].length)O("Empty array in TRASH root. ",t[o]),delete t[o];else{n=[];for(var a=0;a=0;u--)t[o].splice(n[u],1)}else O("An element in TRASH root is not an array. ",t[o]),delete t[o]}}(),function(){if(!f){Array.isArray(c[E])||(O("TEMPLATE was not an array"),c[E]=[]);var n=e.deduplicateString(c[E]);n.length!==c[E].length&&(c[E]=n);var t=c[E],r=s.getFiles([h]),o=[];t.forEach(function(n,a){if(s.isFile(n,!0)&&-1===r.indexOf(n)){if("string"==typeof n){var i=e.createRandomInteger();return c[p][i]={href:s.cryptor.encrypt(n)},void(t[a]=i)}if("number"==typeof n)c[p][n]||(O("An element in TEMPLATE doesn't have associated data",n),o.push(n))}else o.push(n)}),o.forEach(function(e){var n=t.indexOf(e);-1!==n&&t.splice(n,1)})}}(),function(){"object"!=typeof c[p]&&(O("FILES_DATA was not an object"),c[p]={});var e=c[p],t=s.getFiles([h,g,"hrefArray"]),r=s.find([h]),o=[];for(var i in e)if(String(i)===String(Number(i))){var f=e[i=Number(i)];if(f&&"object"==typeof f)if(f.href||f.roHref){var d;try{d=f.href&&(-1!==f.href.indexOf("#")?f.href:s.cryptor.decrypt(f.href))}catch(e){}if(!d||-1!==d.indexOf("#")){var y,m=n.parsePadUrl(d||f.roHref);if(m.hash)if(m.type){if(d&&"pad"===m.hashData.type&&m.hashData.version)if("view"===m.hashData.mode)f.roHref=d,delete f.href;else if(f.roHref){var E=n.parsePadUrl(f.roHref);E.hash&&E.type||(y=n.getSecrets(m.type,m.hash,f.password),f.roHref="/"+m.type+"/#"+n.getViewHashFromKeys(y))}else y=n.getSecrets(m.type,m.hash,f.password),f.roHref="/"+m.type+"/#"+n.getViewHashFromKeys(y);if(0===m.hashData.version&&delete f.roHref,d&&"/"!==d.slice(0,1)&&(f.href=s.cryptor.encrypt(n.getRelativeHref(d))),f.ctime||(f.ctime=f.atime),f.title||(f.title=s.getDefaultName(m)),!f.channel)try{y||(y=n.getSecrets(m.type,m.hash,f.password)),f.channel=y.channel,console.log(f),O("Adding missing channel in filesData ",f.channel)}catch(e){console.error(e)}if(n.isValidChannel(f.channel)||console.error("Remove invalid channel",f.channel,f),["sheet","doc","presentation"].includes(m.type)&&!f.rtChannel&&(w[f.channel]=f),!u&&!a.testMode||-1!==t.indexOf(i));else O("An element in filesData was not in ROOT, TEMPLATE or TRASH.",i,f),r[n.createChannelId()]=i}else O("Removing an element in filesData with a invalid type.",f),o.push(i);else O("Removing an element in filesData with a invalid href.",f),o.push(i)}}else O("Removing an element in filesData with a missing href.",f),o.push(i);else O("An element in filesData was not an object.",f),o.push(i)}else O("Invalid file ID in filesData.",i),o.push(i);o.forEach(function(e){D(e)});var b=c[v],A=[];for(var _ in b){var T=b[_=Number(_)];T&&"object"==typeof T&&T.href?!u&&!a.testMode||-1!==t.indexOf(_)||A.push(_):A.push(_)}A.forEach(function(e){l||delete c[v][e]})}(),Object.keys(c).forEach(function(e){"/"===e.slice(0,1)&&delete c[e]}),function(){if(!f){"object"!=typeof c[b]&&(O("SHARED_FOLDER was not an object"),c[b]={});var e,t,r=c[b],o=s.getFiles([h,g]),a=s.find([h]);for(var i in r){var u;t=r[i],i=Number(i);try{u=t.href&&(-1!==t.href.indexOf("#")?t.href:s.cryptor.decrypt(t.href))}catch(e){}if((e=n.parsePadUrl(u||t.roHref))&&e.hash&&"undefined"!==e.hash){if(-1===o.indexOf(i))console.log("missing"+i),a[n.createChannelId()]=i}else delete r[i]}}}(),function(){if(!f){"object"!=typeof c[A]&&(O("SHARED_FOLDER_TEMP was not an object"),c[A]={});var e=c[A],n=c[b];for(var t in e)n[t]&&delete e[t]}}();var d=+new Date-r+"ms";JSON.stringify(c)===o?O("File system was clean.",d):O("Your file system was corrupted. It has been cleaned so that the pads you visit can be stored safely.",d)}},s.getMissingRtChannel=()=>{const e=w;if(w={},!l&&Object.keys(e).length)return e},s.findMissingRtChannel=()=>(w={},s.fixFiles(),s.getMissingRtChannel()),s},a};e.exports&&(e.exports=n(X(),te(),je(),Oe()))})()}(Le)),Le.exports}function Ue(){return Re||(Re=1,function(e){(()=>{const n=(e,n,t,r,o,a={})=>{let i=globalThis;var s={setCustomize:e=>{a=e.Messages,r.setCustomize(e)}},c=s.ROOT="root",u=s.UNSORTED="unsorted",f=s.TRASH="trash",l=s.TEMPLATE="template",d=s.SHARED_FOLDERS="sharedFolders",h=s.SHARED_FOLDERS_TEMP="sharedFoldersTemp",p=s.FILES_DATA=t.storageKey,v=s.OLD_FILES_DATA=t.oldStorageKey,y=s.STATIC_DATA="static";s.getDefaultName=function(e){var n=e.type;return a.type[n]+" - "+function(){if(i.Intl&&i.Intl.DateTimeFormat)return new i.Intl.DateTimeFormat(void 0,{weekday:"short",year:"numeric",month:"long",day:"numeric"}).format(new Date);return(new Date).toString().split(" ").slice(0,4).join(" ")}()};var m=s.createCryptor=function(e){var n={};if(!e)return n.encrypt=function(e){return e},n.decrypt=function(e){return e},n;try{var t=o.createEncryptor(e);n.encrypt=function(e){try{return"/file/#"===e.slice(0,7)?e:t.encrypt(e)}catch(e){return}},n.decrypt=function(e){try{return t.decrypt(e)}catch(e){return}}}catch(e){console.error(e)}return n};return s.getHref=function(e,n){if(e.href&&-1!==e.href.indexOf("#"))return e.href;if(e.href&&n){var t=n.decrypt(e.href);if(t&&-1!==t.indexOf("#"))return t}return e.roHref},s.reencrypt=function(e,n,t){if(t){var r=m(e),o=m(n);Object.keys(t[p]).forEach(function(e){var n=t[p][e]||{};if(n.href&&n.roHref&&!n.fileType){var a=n.href&&-1===n.href.indexOf("#")?r.decrypt(n.href):n.href;if(!a)return;n.href=o.encrypt(a)}}),Object.keys(t[d]||{}).forEach(function(e){var n=t[d][e]||{};if(n.href){var a=n.href&&-1===n.href.indexOf("#")?r.decrypt(n.href):n.href;if(!a)return;n.href=o.encrypt(a)}}),Object.keys(t[h]||{}).forEach(function(e){var n=t[h][e]||{};if(n.href){var a=n.href&&-1===n.href.indexOf("#")?r.decrypt(n.href):n.href;if(!a)return;n.href=o.encrypt(a)}})}else console.error("Nothing to reencrypt")},s.init=function(t,o){var i={};i.cryptor=m(o.editKey),i.setReadOnly=function(e,n){o.editKey=n,i.cryptor=m(n),i.cryptor.k=Math.random(),i.readOnly=e,i._setReadOnly&&i._setReadOnly(e)},i.readOnly=o.readOnly,i.reencrypt=s.reencrypt,i.getDefaultName=s.getDefaultName;var g=o.sframeChan,E=a.fm_newFolder||"New folder",b=a.fm_newFile||"New file";i.ROOT=c,i.STATIC_DATA=y,i.UNSORTED=u,i.TRASH=f,i.TEMPLATE=l,i.SHARED_FOLDERS=d,i.SHARED_FOLDERS_TEMP=h,i.FILES_DATA=p,i.OLD_FILES_DATA=v;var A=i.sharedFolder=o.sharedFolder;i.id=o.id;var O=function(){console.debug.apply(console,arguments)},w=i.log=o.log||O,D=o.logError||O,_=i.debug=o.debug||O;i.fixFiles=function(){};var T=i.error=function(){g?g.query("Q_DRIVE_USEROBJECT",{cmd:"fixFiles",data:{}},function(){}):("function"==typeof i.fixFiles&&i.fixFiles(),console.error.apply(console,arguments),i.fixFiles())};o.outer&&r.init(o,i,t),i.getStructure=function(){var e={};return e[c]={},e[f]={},e[p]={},e[l]=[],e[d]={},e};var S=i.getHref=function(e){return s.getHref(e,i.cryptor)},N=function(e){return null===e?"null":Array.isArray(e)?"array":typeof e};i.isValidDrive=function(e){var n=i.getStructure();return"object"==typeof e&&Object.keys(n).every(function(t){return e[t]&&N(n[t])===N(e[t])})};var I=function(){return[l]},x=function(e,n){return e===n},C=i.isSharedFolder=function(e){return!A&&Boolean(t[d]&&t[d][e])},R=i.isFile=function(e,n){return!C(e)&&("number"==typeof e||(void 0!==t[v]||n)&&"string"==typeof e)},P=i.isFolderData=function(e){return"object"==typeof e&&!0===e.metadata};i.isReadOnlyFile=function(e){if(!R(e))return!1;var n=i.getFileData(e);return n.roHref?Boolean(n.roHref&&!n.href):void 0},i.isStaticFile=function(e){return Boolean(t[y]&&t[y][e])};var k=i.isFolder=function(e){return!P(e)&&("object"==typeof e&&!e.channel||C(e))};i.isFolderEmpty=function(e){return!!k(e)&&(0===Object.keys(e).length||!(1!==Object.keys(e).length||!P(e[Object.keys(e)[0]])))},i.hasSubfolder=function(e,n){if(!k(e))return!1;var t=0,r=function(e){t+=k(e.element)?1:0};for(var o in e)n?Array.isArray(e[o])&&e[o].forEach(r):t+=k(e[o])?1:0;return t},i.hasFile=function(e,n){if(!k(e))return!1;var t=0,r=function(e){t+=R(e.element)?1:0};for(var o in e)n?Array.isArray(e[o])&&e[o].forEach(r):t+=R(e[o])?1:0;return t},i.hasFolderData=function(e){for(var n in e)if(P(e[n]))return!0};var M=i.hasSubSharedFolder=function(e){for(var n in e){if(C(e[n]))return!0;if(k(e[n])&&M(e[n]))return!0}return!1},F=i.getFileData=function(n,r){if(n){var a,s;try{a=(t[y]||{})[n]}catch(e){console.error(e)}if(a){var c=r?a:e.clone(a);return r||(c.static=!0),c}try{s=t[p][n]||{}}catch(e){console.error(e),s={}}if(!r&&(s=JSON.parse(JSON.stringify(s))).href&&-1===s.href.indexOf("#"))if(o.editKey)try{s.href=i.cryptor.decrypt(s.href)}catch(e){delete s.href}else delete s.href;return s}};i.getFolderData=function(e){for(var n in e)if(P(e[n]))return e[n];return{}};var L=i.getTitle=function(e,n){if(C(e))return"??";var t=F(e);if(t){if(t.static)return t.name;if(e&&(t.href||t.roHref))return"title"===n?t.title:"name"===n?t.filename:t.filename||t.title||b;T("getTitle called with a non-existing file id: ",e,t)}else T("unable to retrieve data about the requested file: ",e,t)},H=i.comparePath=function(e,n){if(!(e&&n&&Array.isArray(e)&&Array.isArray(n)))return!1;if(e.length!==n.length)return!1;for(var t=!0,r=e.length-1;t&&r>=0;)t=e[r]===n[r],r--;return t},j=i.isSubpath=function(e,n){var t=n.slice(),r=e.slice(0,t.length);return H(t,r)},K=i.isPathIn=function(e,n){if(n){var t=n.indexOf("hrefArray");return-1!==t&&(n.splice(t,1),n=n.concat(I())),n.some(function(n){return Array.isArray(e)&&e[0]===n})}},U=i.isInTrashRoot=function(e){return e[0]===f&&4===e.length},B=function(e,n){if(n){if(0===n.length)return e;var t=n.slice(),r=t.shift();if(void 0!==e[r])return B(e[r],t);_("Unable to find the key '"+r+"' in the root object provided:",e)}else T("Invalid path:\n",n,"\nin root\n",e)},V=i.find=function(e){return B(t,e)},Y=i.getFilesRecursively=function(e,n){for(var t in n=n||[],e)R(e[t])||C(e[t])?-1===n.indexOf(e[t])&&n.push(e[t]):P(e[t])||Y(e[t],n);return n},G={array:function(e){return t[e]||(t[e]=[]),t[e].slice()}};I().forEach(function(e){G[e]=function(){return G.array(e)}}),G.hrefArray=function(){var n=[];return A?n:(I().forEach(function(e){n=n.concat(G[e]())}),e.deduplicateString(n))},G[c]=function(){var e=[];return Y(t[c],e),e},G[f]=function(){var e=t[f],n=[],r=function(e){R(e.element)||C(e.element)?-1===n.indexOf(e.element)&&n.push(e.element):Y(e.element,n)};for(var o in e){if(!Array.isArray(e[o]))return void T("Trash contains a non-array element");e[o].forEach(r)}return n},G[v]=function(){var e=[];return t[v]?(t[v].forEach(function(n){n.href&&-1===e.indexOf(n.href)&&e.push(n.href)}),e):e},G[y]=function(){return t[y]?Object.keys(t[y]).map(Number).filter(Boolean):[]},G[p]=function(){return t[p]?Object.keys(t[p]).map(Number).filter(Boolean):[]},G[d]=function(){return t[d]?Object.keys(t[d]).map(Number).filter(Boolean):[]};var J=i.getFiles=function(n){var t=[];return n&&n.length||(n=[c,"hrefArray",f,v,p,d]),n.forEach(function(e){"function"==typeof G[e]&&(t=t.concat(G[e]()))}),e.deduplicateString(t)},q=i.getIdFromHref=function(e){var r,o=function(e){if(e)return n.parsePadUrl(e).getUrl().replace(/\/p\/?/,"/")},a=o(e);return J([p]).some(function(e){if(o(S(t[p][e]))===a||o(t[p][e].roHref)===a)return r=e,!0}),r};i.getSFIdFromHref=function(e){var r,o=function(e){if(e)return n.parsePadUrl(e).getUrl().replace(/\/p\/?/,"/")},a=o(e);return J([d]).some(function(e){if(o(S(t[d][e]))===a||o(t[d][e].roHref)===a)return r=e,!0}),r};var W=function(e,n){if(!K(e,[c,f]))return[];n=Array.isArray(n)?n:[n];var t={},r=V(e),o=function(e){Object.keys(e).forEach(n=>{t[n]||=[],Array.prototype.push.apply(t[n],e[n])})};if(R(r)||C(r))return n.some(n=>{x(n,r)&&(t[n]||=[],t[n].push(e))}),t;if(k(r))for(var a in r){let t=e.slice();t.push(a),o(W(t,n))}return t},z=function(e,n){if(A)return{};if(!t[e])return{};var r=t[e].slice(),o={},a=-1;return n.forEach(n=>{for(;-1!==(a=r.indexOf(n,a+1));)o[n]||=[],o[n].push([e,a])}),o},Q=function(e,n){if(A)return[];var t=V(e),r={},o=function(e){Object.keys(e).forEach(n=>{r[n]||=[],Array.prototype.push.apply(r[n],e[n])})};if(1===e.length&&"object"==typeof t&&Object.keys(t).forEach(function(r){var a=t[r];if(Array.isArray(a)){var i=e.slice();i.push(r),o(Q(i,n))}}),2===e.length){if(!Array.isArray(t))return[];t.forEach(function(t,a){var i=e.slice();i.push(a),i.push("element"),R(t.element)?n.some(e=>{x(e,t.element)&&(r[e]||=[],r[e].push(i))}):o(Q(i,n))})}return e.length>=4&&o(W(e,n)),r},X=i.findFiles=function(e){var n=W([c],e),t=z(l,e),r=Q([f],e);let o={};return e.forEach(e=>{o[e]=[]}),[n,t,r].forEach(e=>{Object.keys(e).forEach(n=>{o[n]||=[],Array.prototype.push.apply(o[n],e[n])})}),o},Z=i.findFile=function(e){return X([e])[e]||[]};i.findChannels=function(e,n){var r=t[p],o=t[d],a=[p];return n&&a.push(d),J(a).filter(function(n){var t=r[n]||o[n]||{};return-1!==e.indexOf(t.channel)})},i.search=function(r){if("string"!=typeof r)return[];r=r.trim();var o,a=[],s=t[p],u=t[d],f=r.toLowerCase();/^#/.test(f)&&(o=[f.slice(1).trim()]);J([p,d]).forEach(function(e){var n=s[e]||u[e];if(n)if(Array.isArray(n.tags)&&(t=n.tags,o&&t.length&&(t=t.map(function(e){return e.toLowerCase()}),o.some(function(e){return t.some(function(n){return n===e})}))))a.push(e);else{var t,r=n.title||n.lastTitle;(r&&-1!==r.toLowerCase().indexOf(f)||n.filename&&-1!==n.filename.toLowerCase().indexOf(f))&&a.push(e)}});var l=n.getRelativeHref(r);if(l){var h=q(l);h&&a.push(h)}a=e.deduplicateString(a);var v=[];a.forEach(function(e){v.push({id:e,paths:Z(e),data:i.getFileData(e)})});var y=[],m=function(e,n){for(var t in e)k(e[t])&&!C(e[t])&&(-1!==t.toLowerCase().indexOf(f)&&y.push({id:null,paths:[n.concat(t)],data:{title:t}}),m(e[t],n.concat(t)))};return m(t[c],[c]),y=y.sort(function(e,n){return e.data.title.toLowerCase()>n.data.title.toLowerCase()}),v=y.concat(v)},i.getRecentPads=function(){var e=t[p];return Object.keys(e).filter(function(n){return e[n]}).sort(function(n,t){return e[t].atime-e[n].atime}).map(function(e){return Number(e)})},i.getOwnedPads=function(e){var n=t[p];return Object.keys(n).filter(function(t){return n[t].owners&&-1!==n[t].owners.indexOf(e)}).map(function(e){return Number(e)})};var $=i.getAvailableName=function(e,n){if(void 0===e[n])return n;for(var t=n,r=1;void 0!==e[t];)t=n+"_"+r,r++;return t},ee=i.move=function(e,n,t){if(g)g.query("Q_DRIVE_USEROBJECT",{cmd:"move",data:{paths:e,newPath:n}},t);else{var r=[],o=null;e.forEach(function(e){var t=e.slice();if(t.pop(),!H(t,n))if(j(n,e))w(a.fo_moveFolderToChildError);else{var s=i.copyElement(e.slice(),n);!0===s?r.push(e):s&&"E_DUPLICATE_FOLDER_NAME"===s.error&&(o||(o=s))}}),i.delete(r,function(e){e||o?t(e||o):"function"==typeof t&&t()})}};return i.restore=function(e,n){if(g)g.query("Q_DRIVE_USEROBJECT",{cmd:"restore",data:{path:e}},n);else if(U(e)){var t=e.slice();t.pop();var r=V(t).path;ee([e],r,n)}},i.addFolder=function(e,n,t){if(g)g.query("Q_DRIVE_USEROBJECT",{cmd:"addFolder",data:{path:e,name:n}},t);else{var r=V(e),o=n||E;if(o===E||void 0===r[o]){var i=$(r,o);r[i]={};var s=e.slice();s.push(i),t({newPath:s})}else t({error:"E_DUPLICATE_FOLDER_NAME",folderName:o,message:a.fo_unavailableName})}},i.delete=function(e,n,t){g?g.query("Q_DRIVE_USEROBJECT",{cmd:"delete",data:{paths:e,nocheck:t}},n):(n=n||function(){},i.deleteMultiplePermanently(e,t,n))},i.emptyTrash=function(e){e=e||function(){},g?g.query("Q_DRIVE_USEROBJECT",{cmd:"emptyTrash"},e):(t[f]={},i.checkDeletedFiles(e))},i.ownedInTrash=function(e){return J([f]).map(function(n){var r=C(n)?t[d][n]:i.getFileData(n);if(r)return e(r.owners)?r.channel:void 0}).filter(Boolean)},i.rename=function(e,n,r){if(r=r||function(){},g)g.query("Q_DRIVE_USEROBJECT",{cmd:"rename",data:{path:e,newName:n}},r);else if(e.length<=1)D("Renaming `root` is forbidden");else{var o,i=V(e);if(k(i)&&!C(i)){var s=e.slice(),c=s.pop();if(!n||!n.trim()||c===n)return;var u=V(s);return void 0!==u[n]?"function"==typeof r?void r({error:"E_DUPLICATE_FOLDER_NAME",folderName:n,message:a.fo_unavailableName}):void 0:(u[n]=i,delete u[c],void("function"==typeof r&&r()))}if(o=C(i)?t[d][i]:t[p][i]||t[y][i])return t[y][i]?n&&n.trim()?(o.name=n,void r()):void r():n&&""!==n.trim()?void(L(i,"name")!==n&&(o.filename=n,"function"==typeof r&&r())):(delete o.filename,void("function"==typeof r&&r()))}},i.getTagsList=function(){var e,n={},r=function(e){n[e]=n[e]?++n[e]:1};for(var o in t[p])(e=t[p][o]).tags&&Array.isArray(e.tags)&&e.tags.forEach(r);return n},i},s};e.exports&&(e.exports=n(X(),te(),Y(),Ke(),M(),void 0))})()}(Fe)),Fe.exports}var Be,Ve,Ye,Ge,Je={exports:{}};function qe(){return Be||(Be=1,function(e){e.exports=function(e){var n,t=[],r=[],o=0,a=function(e){return o++,function(){for(e&&e.apply(null,arguments),o=(o||1)-1;!o&&t.length&&!n;)t.shift()(a)}};a.abort=function(){r.forEach(clearTimeout),n=1};var i={nThen:function(e){return n||(o?t.push(e):e(a)),i},orTimeout:function(e,s){if(n)return i;if(!s)throw Error("Must specify milliseconds to orTimeout()");var c,u=setTimeout(function(){for(;t.shift()!==c;);for(e(a),o=(o||1)-1;!o&&t.length;)t.shift()(a)},s);return t.push(c=function(){var e=r.indexOf(u);if(e>-1)return r.splice(e,1),void clearTimeout(u);throw new Error("timeout not listed in array")}),r.push(u),i}};return i.nThen(e)}}(Je)),Je.exports}function We(){if(Ye)return Ve;Ye=1;return Ve=((e,n,t,r,o,a,i,s)=>{var c={},u={};return c.checkMigration=function(e,t,r,o){var a=n.once(n.mkAsync(o));if(t)if(e)if(t.version>=2)a();else if(t.migrateRo){var i,s=!1,c=setInterval(function(){if(t.version>=2)return s=!0,clearTimeout(i),clearInterval(c),void a()},100);i=setTimeout(function(){clearInterval(c),r.migrateReadOnly(function(){s=!0,a()})},2e4);t.on("change",["version"],function(){s||t.version>=2&&(s=!0,clearTimeout(i),clearInterval(c),a())})}else r.migrateReadOnly(a);else a();else a()},c.migrate=function(e){var t=u[e];if(t){var r=t.teams;if(Array.isArray(r)&&r.length){var o=r[0];if(o.secondaryKey){var a=n.find(o,["store","manager","folders",o.id]);a&&a.proxy&&!a.proxy.version&&a.userObject.migrateReadOnly(function(){r.forEach(function(e){n.find(e,["store","manager","folders",e.id,"userObject"]).setReadOnly(!1,e.secondarykey)})})}}}},c.load=function(t,f,l,d){var h=n.once(n.mkAsync(d)),p=t.network,v=t.store,y=t.isNew,m=t.isNewChannel,g=v.id,E=v.handleSharedFolder,b=v.manager.user.userObject.getHref(l),A=e.parsePadUrl(b),O=e.getSecrets("drive",A.hash,l.password);if(!O.keys)return v.manager.deprecateProxy(f),void h(null);var w=O.keys.secondaryKey;o(function(e){t.cache&&r.getChannelCache(O.channel,e(function(n){if("EINVAL"===n)return e.abort(),v.manager.restrictedProxy(f,O.channel),void h(null)}))}).nThen(function(e){m(null,{channel:O.channel},e(function(n){if(n.isNew&&!y)return v.manager.deprecateProxy(f,O.channel,n.reason),e.abort(),void h(null)}))}).nThen(function(){var e=u[O.channel];if(e&&e.readOnly&&w&&c.upgrade(O.channel,O),e&&e.ready&&e.rt)return setTimeout(function(){v.manager.addProxy(f,e.rt,function(){c.leave(O.channel,g)},w),h(e.rt)}),e.teams.push({cb:h,store:v,id:f}),void(E&&E(f,e.rt));if(e&&!e.ready&&e.rt)return e.teams.push({cb:h,store:v,secondaryKey:w,id:f}),void(E&&E(f,e.rt));e=u[O.channel]={teams:[{cb:h,store:v,secondaryKey:w,id:f}],readOnly:!Boolean(w)};var n=l.owners,o={data:{},channel:O.channel,readOnly:!Boolean(w),crypto:a.createEncryptor(O.keys),userName:"sharedFolder",logLevel:1,ChainPad:s,classic:!0,network:p,Cache:r,metadata:{validateKey:O.keys.validateKey||void 0,owners:n},onRejected:t.Store&&t.Store.onRejected},d=e.rt=i.create(o);d.proxy.on("cacheready",function(){e.teams&&(e.teams.forEach(function(n){d.cache=!0,n.store.manager.addProxy(n.id,d,function(){c.leave(O.channel,n.store.id)},n.secondaryKey,t.updatePassword),t.updatePassword=!1,n.cb(e.rt)}),e.ready=!0)}),d.proxy.on("ready",function(){y&&!Object.keys(d.proxy).length&&(d.proxy.version=2),e.teams&&(e.teams.forEach(function(n){d.cache=!1,n.store.manager.addProxy(n.id,d,function(){c.leave(O.channel,n.store.id)},n.secondaryKey,t.updatePassword),n.cb(e.rt)}),e.ready=!0)}),d.proxy.on("error",function(n){if(n&&n.error){if("EDELETED"===n.error){try{e.teams.forEach(function(e){e.store.manager.deprecateProxy(e.id,O.channel,n.message),e.store.handleSharedFolder&&e.store.handleSharedFolder(e.id,null),e.cb()})}catch(e){}return delete u[O.channel],void h()}if("ERESTRICTED"===n.error)return e.teams.forEach(function(e){e.store.manager.restrictedProxy(e.id,O.channel),e.cb()}),delete u[O.channel],void h()}}),E&&E(f,d)})},c.upgrade=function(e,n){var t=u[e];if(t&&t.readOnly&&t.rt.setReadOnly&&n.keys&&n.keys.editKeyStr){var r=a.createEncryptor(n.keys);t.readOnly=!1,t.rt.setReadOnly(!1,r)}},c.leave=function(e,n){var t=u[e];if(t){var r,o=t.teams;if(Array.isArray(o))o.some(function(e,t){if(e.store.id===n)return e.store.handleSharedFolder&&e.store.handleSharedFolder(e.id,null),r=t,!0}),void 0!==r&&(o.splice(r,1),o.length||t.rt&&t.rt.stop&&t.rt.stop())}},c.updatePassword=function(r,a,i,s){var f=a.oldChannel,l=a.href,d=a.password,h=e.parsePadUrl(l),p=e.getSecrets(h.type,h.hash,d),v=u[f];if(v){if(v.rt&&v.rt.stop)try{v.rt.stop()}catch(e){}var y=o;v.teams.forEach(function(e){y=y(function(o){var a=e.store,s=e.id,u=n.find(a.proxy,["drive",t.SHARED_FOLDERS])||{};if(s&&u[s]){var l=JSON.parse(JSON.stringify(u[s]));l.password=d,c.load({network:i,store:a,updatePassword:!0,Store:r,isNewChannel:r.isNewChannel},s,l,o()),a.rpc&&(a.rpc.unpin([f],o()),a.rpc.pin([p.channel],o()))}}).nThen}),y(function(){s()})}else s({error:"ENOTFOUND"})},c.loadSharedFolders=function(e,n,r,a,i,s,u,f){var l=a[t.SHARED_FOLDERS]||{},d=Object.keys(l).length,h=1,p=s();u=u||function(){},o(function(t){Object.keys(l).forEach(function(o){var a=l[o];c.load({network:n,store:r,Store:e,cache:f,isNewChannel:e.isNewChannel},o,a,t(function(){u({progress:h,max:d}),h++}))})}).nThen(function(){setTimeout(p)})},c.isSharedFolderChannel=function(e){return Object.keys(u).includes(e)},c})(te(),X(),Ue(),fe(),qe(),M(),T(),x()),Ve}function ze(){return Ge||(Ge=1,function(e){(()=>{const n=(e,n,t,r={},o,a,i={})=>{var s=function(n,t,r,o,a,i){if(!n.folders[t]||i||n.folders[t].restricted){var s=function(e){var n={};for(var t in e.cfg)n[t]=e.cfg[t];return n}(n);s.sharedFolder=!0,s.id=t,s.editKey=a,s.rt=r.realtime,s.readOnly=Boolean(!a);var c=e.init(r.proxy,s);c.fixFiles&&c.fixFiles();var u=r.proxy;if(u.metadata&&u.metadata.title){var f=n.user.proxy[e.SHARED_FOLDERS][t];f&&(f.lastTitle=u.metadata.title)}return n.folders[t]={proxy:r.proxy,userObject:c,leave:o,restricted:u.restricted,offline:Boolean(r.cache)},u.on&&(u.on("disconnect",function(){n.folders[t].offline=!0}),u.on("reconnect",function(){n.folders[t].offline=!1})),c}n.folders[t].offline&&!r.cache&&n.Store&&(n.folders[t].offline=!1,n.folders[t].userObject.fixFiles&&n.folders[t].userObject.fixFiles(),n.Store.refreshDriveUI())},c=function(e,n){var t=e.folders[n];t&&(t.leave(),delete e.folders[n])},u=function(t,r,o,a){if(!t.folders[r]||!t.folders[r].deleting){if(t.user.userObject.readOnly||!a){return c(t,r),s(t,r,{proxy:{deprecated:!0}},function(){}),void t.Store.refreshDriveUI()}if(o&&t.unpinPads([o],function(){}),a&&"PASSWORD_CHANGE"!==a){let o=n.find(t,["user","proxy",e.SHARED_FOLDERS]),a=o[r]&&o[r].lastTitle;return a&&((e,n,t)=>{var r=e.store.mailbox;if(r){var o,a=e.cfg.teamId;o=a?e.store.modules.team.getTeamsData()[a]:e.Store.getMetadata(null,null,()=>{}).user,r.sendTo("SF_DELETED",{sfId:n,team:a,title:t},{curvePublic:o.curvePublic,channel:o.notifications},e=>{console.error(e)})}})(t,r,a),delete o[r],void(t.Store&&t.Store.refreshDriveUI&&t.Store.refreshDriveUI())}t.user.userObject.deprecateSharedFolder(r,a),c(t,r),t.Store&&t.Store.refreshDriveUI&&t.Store.refreshDriveUI()}},f=function(e,n){c(e,n),s(e,n,{proxy:{restricted:!0,root:{},filesData:{}}},function(){}),e.Store.refreshDriveUI()},l=function(e,n){return Array.isArray(n)&&-1!==n.indexOf(e.edPublic)},d=function(e){var n=[e.user.userObject],t=Object.keys(e.folders).map(function(n){return e.folders[n].userObject});return Array.prototype.push.apply(n,t),n},h=function(e,n){var t=d(e),r=e.user.userObject;return t.some(function(e){if(Object.keys(e.getFileData(n)).length)return r=e,!0}),r},p=function(e,n){var t=Number(n.id);if(t)return e.user.userObject.findFile(t)[0]},v=function(n,t,r){var o=[];return n.user.userObject.findChannels([t],!0).forEach(function(t){var a=n.user.proxy[e.SHARED_FOLDERS][t];a&&!r&&(a=JSON.parse(JSON.stringify(a))),a||(a=n.user.userObject.getFileData(t,r)),o.push({id:t,data:a,userObject:n.user.userObject})}),Object.keys(n.folders).forEach(function(e){n.folders[e].userObject.findChannels([t]).forEach(function(t){o.push({id:t,fId:e,data:n.folders[e].userObject.getFileData(t,r),userObject:n.folders[e].userObject})})}),o},y=function(e,n){var t=[],r=e.user.userObject.getIdFromHref(n);return r&&t.push({data:e.user.userObject.getFileData(r),userObject:e.user.userObject}),Object.keys(e.folders).forEach(function(r){var o=e.folders[r].userObject.getIdFromHref(n);o&&t.push({fId:r,data:e.folders[r].userObject.getFileData(o),userObject:e.folders[r].userObject})}),t},m=function(e,n){var t=[],r=d(e);let o={};return r.forEach(function(e){var a=Number(e.id);let i;if(a){i=e.findFile(n);let t=(o[a]||[])[0];if(!t)return;i.forEach(function(e){Array.prototype.unshift.apply(e,t)})}else{let t=[n],a=r.map(e=>+e.id).filter(Boolean);Array.prototype.push.apply(t,a),o=e.findFiles(t),i=o[n]}Array.prototype.push.apply(t,i)}),t},g=function(e,n){var t={},r=d(e);let o={};return r.forEach(function(e){var a=Number(e.id);if(!e.id){let e=r.map(e=>+e.id).filter(Boolean);Array.prototype.push.apply(n,e)}var i=e.findFiles(n);if(e.id||(o=i),a){let e=(o[a]||[])[0];if(!e)return;Object.keys(i).forEach(n=>{i[n].forEach(n=>{Array.prototype.unshift.apply(n,e)})})}Object.keys(i).forEach(e=>{t[e]||=[],Array.prototype.push.apply(t[e],i[e])})}),t},E=function(e,t,r){if(r)return e.user.userObject.findChannels(t);var o=[];return d(e).forEach(function(e){var n=e.findChannels(t);Array.prototype.push.apply(o,n)}),o=n.deduplicateString(o)},b=function(e,n,t){var r=d(e),o={};return r.some(function(e){if((o=e.getFileData(n,t))&&Object.keys(o).length)return!0}),o},A=function(t,r){var o;if(t.isHistoryMode&&!t.folders[r])o=!0;else if(!t.folders[r])return{};var a=o?{}:t.folders[r].proxy;Object.keys(a.metadata||{}).length>1&&(a.metadata={title:a.metadata.title});var i=n.clone(a.metadata||{});for(var s in t.user.proxy[e.SHARED_FOLDERS][r]||{})if(void 0!==t.user.proxy[e.SHARED_FOLDERS][r][s]){var c=n.clone(t.user.proxy[e.SHARED_FOLDERS][r][s]);if("href"===s&&-1===c.indexOf("#"))try{c=t.user.userObject.cryptor.decrypt(c)}catch(e){}"href"===s&&-1===c.indexOf("#")&&(c=void 0),i[s]=c}return i},O=function(e,n){var t,r={id:null,userObject:e.user.userObject,path:n};if(!Array.isArray(n)||n.length<=1)return r;for(var o=e.user.userObject,a=2;a=2?t[1]:t[t.length-1];if(o.isFile(c))u.push(c);else if(o.isSharedFolder(c)){u.push(c);var l=e.folders[c].proxy.metadata||{};l&&(f=l.title)}else{try{c=JSON.parse(JSON.stringify(c))}catch(e){return}o.getFilesRecursively(c,u)}if(u.some(function(e){return o.isSharedFolder(e)}))return e.cfg&&e.cfg.log&&e.cfg.log(r._getKey("fm_moveNestedSF",[f])),void i.unshift(s);u=n.deduplicateString(u);var d={};u.forEach(function(e){d[e]=o.getFileData(e)}),a.push({el:c,data:d,key:f})}),i.forEach(function(e){t.splice(e,1)}),a},S=function(e,n){var r;return v(e,n).some(function(e){if(e&&e.data&&e.data.href){var n=t.parsePadUrl(e.data.href),o=n.hashData;if(o&&"view"!==o.mode)return r=n.hash,!0}}),r},N=function(e,n,t){var r=w(e,n.paths),o=O(e,n.newPath),i=n.copy;if(o.userObject.isFolder(o.path)){var s=null;a(function(n){if(r.main.length)if(o.id){var t=T(e,r.main,e.user.userObject),a=o.userObject;if(t.forEach(function(e){try{a.copyFromOtherDrive(o.path,e.el,e.data,e.key)}catch(e){s||(s=e)}}),i)return;r.main.length&&!s&&e.user.userObject.delete(r.main,n())}else e.user.userObject.move(r.main,o.path,n(function(e){e&&!s&&(s=e)}));var c=Object.keys(r.folders);c.length&&c.forEach(function(t){var a=Number(t),c=r.folders[a];if(o.id===a)o.userObject.move(c,o.path,n(function(e){e&&!s&&(s=e)}));else{var u=e.folders[a].userObject,f=o.userObject;if(T(e,c,u).forEach(function(e){try{f.copyFromOtherDrive(o.path,e.el,e.data,e.key)}catch(e){s||(s=e)}}),i)return;s||u.delete(c,n())}})}).nThen(function(){s?t(s):t()})}else t()},I=function(n,o,s){var c=O(n,(o=o||{}).path);if(c&&c.userObject)if(c.id)s({error:"EINVAL"});else if(n.pinPads){var u,f=o.folderData||{};a(function(){if(!o.folderData){var e=t.createRandomHash("drive",o.password),r=t.getSecrets("drive",e,o.password),a=t.getHashes(r);f={href:"/drive/#"+a.editHash,roHref:"/drive/#"+a.viewHash,channel:r.channel,lastTitle:o.name,ctime:+new Date},o.password&&(f.password=o.password),o.owned&&(f.owners=[n.edPublic])}}).nThen(function(e){n.Store.pad.getMetadata(null,{channel:f.channel},e(function(n){if(n&&(n.error||n.rejected))return e.abort(),void s({error:n.error||"ERESTRICTED"})}))}).nThen(function(e){n.pinPads([f.channel],e())}).nThen(function(e){n.user.userObject.pushSharedFolder(f,e(function(r,o){if("EEXISTS"===r&&f.href&&o){var a=t.parsePadUrl(f.href),c=t.getSecrets("drive",a.hash,f.password);return i.upgrade(c.channel,c),n.folders[o]&&n.folders[o].userObject.setReadOnly(!1,c.keys.secondaryKey),e.abort(),void s(o)}return"EEXISTS"===r&&o?(e.abort(),void s(o)):r?(e.abort(),void s(r)):void(u=o)}))}).nThen(function(t){n.user.userObject.add(u,c.path),n.loadSharedFolder(u,f,t(function(a){if(!a)return t.abort(),void s({error:"EDELETED"});a.proxy.metadata||(a.proxy.metadata={title:o.name||r.fm_newFolder}),o.folderData&&n.Store.pad.getMetadata(null,{channel:f.channel},function(t){var r=n.user.proxy[e.SHARED_FOLDERS][u];t.owners&&(r.owners=t.owners),t.expire&&(r.expire=+t.expire)})}),!Boolean(o.folderData))}).nThen(function(){n.onSync(function(){s(u)})})}else s({error:"EAUTH"});else s({error:"E_NOTFOUND"})},x=function(r,o,i){var s=(o=o||{}).resolved||w(r,o.paths);if(s.main.length||Object.keys(s.folders).length){if(o.paths&&1===o.paths.length&&o.paths[0][0]===e.SHARED_FOLDERS_TEMP)return delete n.find(r,["user","proxy",e.SHARED_FOLDERS_TEMP])[o.paths[0][1]],void r.onSync(i);var c=[];a(function(t){if(s.main.length){var o=r.user.userObject;n.find(r.settings,["drive","hideDuplicate"])&&s.main.forEach(function(n){var t=o.find(n);if(n[0]!==e.FILES_DATA&&!o.isFile(t)&&!o.isSharedFolder(t)){var a=[];o.getFilesRecursively(t,a),a.forEach(function(n){_(r,null,n)&&r.user.userObject.add(Number(n),[e.ROOT])})}}),o.delete(s.main,t(function(e,n){r.unpinPads&&n&&Array.prototype.push.apply(c,n)}))}}).nThen(function(e){Object.keys(s.folders).forEach(function(n){r.folders[n].userObject.delete(s.folders[n],e(function(e,n){r.unpinPads&&n&&Array.prototype.push.apply(c,n)}))})}).nThen(function(e){if(r.unpinPads){c=n.deduplicateString(c);var o=[];E(r,c).forEach(function(e){var n=b(r,e),a=[n.channel];n.answersChannel&&a.push(n.answersChannel),n.rtChannel&&a.push(n.rtChannel),n.lastVersion&&a.push(t.hrefToHexChannelId(n.lastVersion)),Array.prototype.push.apply(o,a)});var a=[];c.forEach(function(e){-1===o.indexOf(e)&&(a.push(e),r.Store.checkDeletedPad(e))}),r.unpinPads(a,e(function(e){if(e&&e.error)return console.error(e.error)}))}}).nThen(function(){i()})}else i({error:"E_NOTFOUND"})},C=function(t,r,i){var s=w(t,(r=r||{}).paths||[]);if(r.channel||s.main.length||Object.keys(s.folders).length){var c={main:[],folders:{}},u=function(r,a,i,s){var u,f=n.once(n.mkAsync(s)),l=r;if(!l&&a){var d=a.find(i);if(!a.isFile(d)&&!a.isSharedFolder(d))return;var h=a.isFile(d)?a.getFileData(d):A(t,d);l=h.channel}Object.keys(t.user.proxy[e.SHARED_FOLDERS]||{}).some(function(n){if((t.user.proxy[e.SHARED_FOLDERS][n]||{}).channel===l)return u=Number(n),t.folders[n].deleting=!0,!0}),t.removeOwnedChannel(l,function(e){if(e&&e.error&&"ENOENT"!==e.error)return u&&t.folders[u]&&t.folders[u].deleting&&delete t.folders[u].deleting,o.send("ERROR_DELETING_OWNED_PAD="+l+"|"+e.error,!0),void f();var n=E(t,[l]);if(u&&n.push(u),!n.length)return c=void 0,void f();n.forEach(function(e){var n=m(t,e),r=w(t,n);Array.prototype.push.apply(c.main,r.main),Object.keys(r.folders).forEach(function(e){c.folders[e]?Array.prototype.push.apply(c.folders[e],r.folders[e]):c.folders[e]=r.folders[e]})}),f()})};a(function(e){r.channel&&u(r.channel,null,null,e()),s.main.forEach(function(n){u(null,t.user.userObject,n,e())}),Object.keys(s.folders).forEach(function(n){var r=t.folders[n].userObject;s.folders[n].forEach(function(n){u(null,r,n,e())})})}).nThen(function(){c?x(t,{resolved:c},i):i(),r.channel&&t.Store.refreshDriveUI()})}else i({error:"E_NOTFOUND"})},R={move:N,restore:function(e,n,t){n=n||{},e.user.userObject.restore(n.path,t)},addFolder:function(e,n,t){var r=O(e,(n=n||{}).path);r&&r.userObject?r.userObject.addFolder(r.path,n.name,function(n){if(n.newPath&&r.id){var o=p(e,r.userObject);o&&Array.prototype.unshift.apply(n.newPath,o)}t(n)}):t({error:"E_NOTFOUND"})},addSharedFolder:I,addLink:function(e,n,t){var r=O(e,(n=n||{}).path);if(r&&r.userObject){var o=r.userObject,a=+new Date;o.pushLink({name:n.name,href:n.href,atime:a,ctime:a},function(n,a){n?t({error:n}):(o.add(a,r.path),e.onSync(t))})}else t({error:"E_NOTFOUND"})},restoreSharedFolder:function(r,o,i){var s=o.id,c=o.password,u=n.find(r,["user","proxy",e.SHARED_FOLDERS_TEMP]),f=u&&u[s];if(f)if(r.Store){var l=r.user.userObject.getHref?r.user.userObject.getHref(f):f.href,d=!1;a(function(e){r.Store.isNewChannel(null,{href:l,password:c},e(function(e){d=!(!e||e.error)&&e.isNew}))}).nThen(function(){if(d)i({error:"ENOTFOUND"});else{var e=n.clone(f),o=t.parsePadUrl(l),a=t.getSecrets(o.type,o.hash,c);e.password=c,e.channel=a.channel,a.keys.editKeyStr&&(e.href="/drive/#"+t.getEditHashFromKeys(a)),e.roHref="/drive/#"+t.getViewHashFromKeys(a),delete e.legacy,I(r,{path:["root"],folderData:e},function(){delete u[s],r.onSync(i)})}})}else i({error:"ESTORE"});else i({error:"EINVAL"})},convertFolderToSharedFolder:function(n,t,r){var o=t.path,i=n.user.userObject.find(o);if(o.length<=1||o[0]!==e.ROOT)r({error:"E_INVAL_PATH"});else if(D(n,o))r({error:"E_INVAL_NESTING"});else if(n.user.userObject.hasSubSharedFolder(i))r({error:"E_INVAL_NESTING"});else{var s,c=o.slice(0,-1),u=n.user.userObject.find(c),f=o[o.length-1];a(function(e){I(n,{path:c,name:f,owned:t.owned,password:t.password||""},e(function(n){if("object"==typeof n&&n&&n.error)return e.abort(),void r(n);s=n}))}).nThen(function(t){if(!s)return t.abort(),void r({error:"E_NO_ID"});var a,f=[];for(var l in i)(n.user.userObject.isFolder(i[l])||n.user.userObject.isFile(i[l]))&&f.push(o.concat(l));if(Object.keys(u).some(function(e){if(u[e]===s)return a=e,!0}),!a)return t.abort(),void r({error:"E_NO_KEY"});var d=c.concat(a).concat(e.ROOT);N(n,{paths:f,newPath:d,copy:!1},t())}).nThen(function(t){var r=[];Object.keys(i).forEach(function(e){if(n.user.userObject.isFile(i[e])){var t=n.user.userObject.getFileData(i[e]);t&&l(n,t.owners)&&r.push(o.concat(e))}}),N(n,{paths:r,newPath:[e.ROOT],copy:!1},t())}).nThen(function(){var t=n.user.proxy[e.SHARED_FOLDERS][s],a=n.user.userObject.getFolderData(i);for(var c in a)"metadata"!==c&&(t[c]=a[c]);n.user.userObject.delete([o],function(){r({fId:s})})})}},delete:x,deleteOwned:C,emptyTrash:function(e,t,r){a(function(r){if(t&&t.deleteOwned){var i=e.user.userObject.ownedInTrash(function(n){return l(e,n)}),s=a;i.forEach(function(n){s=s(function(t){e.removeOwnedChannel(n,t(function(e){setTimeout(t(),50),e&&e.error&&"ENOENT"!==e.error&&(console.error(e.error,n),o.send("ERROR_EMPTYTRASH_OWNED="+n+"|"+e.error,!0)),console.warn("DELETED",n)}))}).nThen}),s(r())}e.user.userObject.emptyTrash(r(function(t,o){var i=a;setTimeout(r(function(){if(Array.isArray(o)){var t=r(),a=n.deduplicateString(o),s=[];a.forEach(function(n){i=i(function(t){v(e,n,!0).length||s.push(n),e.Store.checkDeletedPad(n,t())}).nThen}),i(function(){e.unpinPads(s,function(){t()})})}}))}))}).nThen(r)},rename:function(n,t,o){var a=O(n,(t=t||{}).path);if(a&&a.userObject){if(!a.id){var i=n.user.userObject.find(a.path);if(n.user.userObject.isSharedFolder(i)&&n.folders[i])return n.folders[i].proxy.metadata.title=t.newName||r.fm_folder,n.user.proxy[e.SHARED_FOLDERS][i].lastTitle=t.newName||r.fm_folder,void o()}a.userObject.rename(a.path,t.newName,o)}else o({error:"E_NOTFOUND"})},setFolderData:function(n,t,r){var o=O(n,(t=t||{}).path);if(o&&o.userObject){if(!o.id){var a=n.user.userObject.find(o.path);if(n.user.userObject.isSharedFolder(a)&&n.folders[a])return n.user.proxy[e.SHARED_FOLDERS][a][t.key]=t.value,void n.onSync(r)}o.userObject.setFolderData(o.path,t.key,t.value,function(){n.onSync(r)})}else r({error:"E_NOTFOUND"})},updateStaticAccess:function(e,n,t){h(e,n).getFileData(n,!0).atime=+new Date,e.onSync(t)}},P=function(e,n,t){var r=n.cmd,o=n.data||{},a=R[r];"function"!=typeof a?t():a(e,o,t)},k=function(n,t,r){if(r=r||function(){},t.attr&&t.attr.trim()){var o=n.user.userObject.getSFIdFromHref(t.href);o&&("href"===t.attr&&(t.value=n.user.userObject.cryptor.encrypt(t.value)),n.user.proxy[e.SHARED_FOLDERS][o][t.attr]=t.value);var i=y(n,t.href),s=a;i.forEach(function(e){s=s(function(n){e.userObject.setPadAttribute(t.href,t.attr,t.value,n())}).nThen}),s(function(){r()})}else r("E_INVAL_ATTR")},M=function(e,n,t){t=t||function(){};var r=e.user.userObject.getSFIdFromHref(n.href);if(r){var o=A(e,r),a=n.attr?o[n.attr]:JSON.parse(JSON.stringify(o));setTimeout(function(){t(null,{value:a,atime:1})})}else{var i=y(e,n.href),s={};i.forEach(function(e){var t=e.data.atime,r=n.attr?e.data[n.attr]:JSON.parse(JSON.stringify(e.data));(!s.value||s.atimeo.add(e)),o.add(r.channel)}}:void 0}(a))}),"owned"===r)&&Object.keys(n.user.proxy[e.SHARED_FOLDERS]).filter(function(t){var r=n.user.proxy[e.SHARED_FOLDERS][t].owners;if(l(n,r))return!0}).map(function(t){return n.user.proxy[e.SHARED_FOLDERS][t].channel}).forEach(e=>o.add(e));"pin"===r&&Object.keys(n.folders).map(function(t){try{return n.user.proxy[e.SHARED_FOLDERS][t].channel}catch(e){console.error(e)}}).filter(Boolean).forEach(e=>o.add(e));return function(e){const n=e=>{if("string"==typeof e)return-1!==[32,48].indexOf(e.length)};let t=new Set;for(var r of e)n(r)&&t.add(r);return t}(o)},j=function(e,n,t,r){var o=e.user.userObject,i=["root"];if(n){var s=O(e,n);o=s.userObject,i=s.path}var c=function(){var e;a(function(n){o.pushData(t,n(function(n,t){n?e=n:o.add(t,i)}))}).nThen(function(){r(e)})};if(!e.pinPads)return void c();const u=[t.channel];t.rtChannel&&u.push(t.rtChannel),t.answersChannel&&u.push(t.answersChannel),e.pinPads(u,function(e){e&&e.error?r(e.error):c()})};const K=e=>{const n=d(e),t=[];return n.forEach(function(e){const n=e.getMissingRtChannel();n&&(e.readOnly&&(n._readOnly=!0),t.push(n))}),t};var U=function(e,n,t,r){e.sframeChan.query("Q_DRIVE_USEROBJECT",{cmd:"rename",data:{path:n,newName:t}},function(e,n){e||n?.error?r(e||n):r()})},B=function(e,n,t,r,o){e.sframeChan.query("Q_DRIVE_USEROBJECT",{cmd:"move",data:{paths:n,newPath:t,copy:o}},function(e,n){e||n?.error?r(e||n):r()})},V=function(e,n,t){e.sframeChan.query("Q_DRIVE_USEROBJECT",{cmd:"emptyTrash",data:{deleteOwned:n}},t)},Y=function(e,n,t,r){e.sframeChan.query("Q_DRIVE_USEROBJECT",{cmd:"addFolder",data:{path:n,name:t}},r)},G=function(e,n,t,r){e.sframeChan.query("Q_DRIVE_USEROBJECT",{cmd:"addSharedFolder",data:{path:n,name:t.name,owned:t.owned,password:t.password}},r)},J=function(e,n,t,r){e.sframeChan.query("Q_DRIVE_USEROBJECT",{cmd:"addLink",data:{path:n,name:t.name,href:t.url}},r)},q=function(e,n,t,r){e.sframeChan.query("Q_DRIVE_USEROBJECT",{cmd:"restoreSharedFolder",data:{id:n,password:t}},r)},W=function(e,n,t,r,o){e.sframeChan.query("Q_DRIVE_USEROBJECT",{cmd:"convertFolderToSharedFolder",data:{path:n,owned:t,password:r}},o)},z=function(e,n,t){e.sframeChan.query("Q_DRIVE_USEROBJECT",{cmd:"delete",data:{paths:n}},t)},Q=function(e,n,t){e.sframeChan.query("Q_DRIVE_USEROBJECT",{cmd:"deleteOwned",data:{paths:n}},t)},X=function(e,n,t){e.sframeChan.query("Q_DRIVE_USEROBJECT",{cmd:"restore",data:{path:n}},t)},Z=function(e,n,t){e.sframeChan.query("Q_DRIVE_USEROBJECT",{cmd:"setFolderData",data:n},t)},$=function(e,n,t){e.sframeChan.query("Q_DRIVE_USEROBJECT",{cmd:"updateStaticAccess",data:n},t)},ee=E,ne=b,te=p,re=function(e,n,t){if(t)return e.folders[t].userObject.find(n);var r=O(e,n);return r.userObject.find(r.path)},oe=function(e,n,t){var r=h(e,n);return String(r.getTitle(n,t))},ae=function(e,n){return h(e,n).isStaticFile(n)},ie=function(e,n){return h(e,n).isReadOnlyFile(n)},se=function(e,t){var r=[];return d(e).forEach(function(e){Array.prototype.push.apply(r,e.getFiles(t))}),r=n.deduplicateString(r)},ce=function(e,n){var t=[];return d(e).forEach(function(r){var o=p(e,r),a=r.search(n);a.length&&(o&&a.forEach(function(e){e.inSharedFolder=!0,e.paths.forEach(function(e){Array.prototype.unshift.apply(e,o)})}),Array.prototype.push.apply(t,a))}),t},ue=function(n){var t=[];return d(n).forEach(function(n){var r=n.getFiles([e.FILES_DATA,e.STATIC_DATA]).map(function(e){return[Number(e),n.getFileData(e)]});Array.prototype.push.apply(t,r)}),t.filter(function(e){return e[1].atime}).sort(function(e,n){return n[1].atime-e[1].atime})},fe=function(e){return e.user.userObject.getOwnedPads(e.edPublic)},le=function(e,n){e.isHistoryMode=Boolean(n)},de=function(e,n){var t=O(e,n);if(!t||!t.userObject)return{};if(!t.id){var r=e.user.userObject.find(t.path);if(e.user.userObject.isSharedFolder(r))return A(e,r)}var o=t.userObject.find(t.path);return t.userObject.getFolderData(o)},he=D,pe=function(e,n){return e.user.userObject.isValidDrive(n)},ve=function(e,n,t){return e.user.userObject.isFile(n,t)},ye=function(e,n){return e.user.userObject.isFolder(n)},me=function(e,n){return e.user.userObject.isSharedFolder(n)},ge=function(e,n){if(e.folders[n]){var t=e.folders[n].userObject;return t.isFolderEmpty(t.find[t.ROOT])}return e.user.userObject.isFolderEmpty(n)},Ee=function(e,n,t){return e.user.userObject.isPathIn(n,t)},be=function(e,n,t){return e.user.userObject.isSubpath(n,t)},Ae=function(e,n){return e.user.userObject.isInTrashRoot(n)},Oe=function(e,n,t){return e.user.userObject.comparePath(n,t)},we=function(e,n,t){if(e.folders[n]){var r=e.folders[n].userObject;return r.hasSubfolder(r.find[r.ROOT])}return e.user.userObject.hasSubfolder(n,t)},De=function(e,n){return e.user.userObject.hasSubSharedFolder(n)},_e=function(e,n,t){if(e.folders[n]){var r=e.folders[n].userObject;return r.hasFile(r.find[r.ROOT])}return e.user.userObject.hasFile(n,t)},Te=function(e){return e.user.userObject.ownedInTrash(function(n){return l(e,n)})},Se=_;return{setCustomize:n=>{r=n.Messages,e.setCustomize(n)},create:function(n,t,r){var o={pinPads:t.pin,unpinPads:t.unpin,onSync:t.onSync,Store:t.Store,store:t.store,removeOwnedChannel:t.removeOwnedChannel,loadSharedFolder:t.loadSharedFolder,cfg:r,edPublic:t.edPublic,settings:t.settings,user:{proxy:n},folders:{}};r.removeProxy=function(e){c(o,e)},o.user.userObject=e.init(n,r);var a=function(e){return function(){return[].unshift.call(arguments,o),e.apply(null,arguments)}};let i;const l=()=>{clearTimeout(i),i=setTimeout(()=>{if(o.store.offline)return void l();const e=(e=>{const n=d(e),t=[];return n.forEach(function(e){if(e.readOnly)return;const n=e.findMissingRtChannel();n&&t.push(n)}),t})(o);o.Store.fixMissingRtChannelInterval(e,()=>{l()})},12e4)};return l(),{addProxy:a(s),removeProxy:a(c),deprecateProxy:a(u),restrictedProxy:a(f),addSharedFolder:a(I),addPin:function(e,n){o.pinPads=e,o.unpinPads=n},removePin:function(){delete o.pinPads,delete o.unpinPads},command:a(P),getPadAttribute:a(M),setPadAttribute:a(k),getTagsList:a(F),getSecureFilesList:a(L),getSharedFolderData:a(A),isInSharedFolder:a(D),getChannelsList:a(H),addPad:a(j),delete:a(x),deleteOwned:a(C),findChannel:a(v),findHref:a(y),findFile:a(m),getEditHash:a(S),user:o.user,folders:o.folders,getMissingRtChannel:a(K)}},createInner:function(n,t,r,o){var a={cfg:o,sframeChan:t,edPublic:r,user:{proxy:n,userObject:e.init(n,o)},folders:{}},i=function(e){return function(){return[].unshift.call(arguments,a),e.apply(null,arguments)}};return{addProxy:i(s),removeProxy:i(c),setHistoryMode:i(le),rename:i(U),move:i(B),emptyTrash:i(V),addFolder:i(Y),addSharedFolder:i(G),addLink:i(J),restoreSharedFolder:i(q),convertFolderToSharedFolder:i(W),delete:i(z),deleteOwned:i(Q),restore:i(X),setFolderData:i(Z),updateStaticAccess:i($),getFileData:i(ne),find:i(re),getTitle:i(oe),isReadOnlyFile:i(ie),isStaticFile:i(ae),getFiles:i(se),search:i(ce),getRecentPads:i(ue),getOwnedPads:i(fe),getTagsList:i(F),findFile:i(m),findFiles:i(g),findChannels:i(ee),getSharedFolderData:i(A),getFolderData:i(de),isInSharedFolder:i(he),getUserObjectPath:i(te),isDuplicateOwned:i(Se),ownedInTrash:i(Te),isValidDrive:i(pe),isFile:i(ve),isFolder:i(ye),isSharedFolder:i(me),isFolderEmpty:i(ge),isPathIn:i(Ee),isSubpath:i(be),isInTrashRoot:i(Ae),comparePath:i(Oe),hasSubfolder:i(we),hasSubSharedFolder:i(De),hasFile:i(_e),user:a.user,folders:a.folders}}}};e.exports&&(e.exports=n(Ue(),X(),te(),void 0,Oe(),qe(),We()))})()}(Me)),Me.exports}var Qe,Xe,Ze=ze(),$e=n({__proto__:null,default:r(Ze)},[Ze]),en=Ue(),nn=n({__proto__:null,default:r(en)},[en]),tn={exports:{}},rn={exports:{}};function on(){return Xe||(Xe=1,function(e){e.exports&&(e.exports=((e={},n={},t)=>{let r=[];const o=["sheet","doc","presentation"],a=a=>{e=a.AppConfig;const i=(n=a.ApiConfig).onlyOffice&&n.onlyOffice.availableVersions.includes(t.currentVersion);r=e.availablePadTypes.filter(e=>i||!o.includes(e))};Object.keys(e).length&&a({AppConfig:e,ApiConfig:n});const i={OO_APPS:o,setCustomize:a};return i.__defineGetter__("availableTypes",function(){return n.appsToDisable?r.filter(e=>!n.appsToDisable.includes(e)):r}),i.__defineGetter__("appsToSelect",function(){return r.filter(e=>!["drive","teams","file","contacts","convert"].includes(e))}),i.isAvailable=e=>Array.isArray(i.availableTypes)&&i.availableTypes.includes(e),i})(void 0,void 0,(Qe||(Qe=1,function(e){e.exports&&(e.exports={currentVersionNumber:9,currentVersion:"v9"})}(rn)),rn.exports)))}(tn)),tn.exports}var an,sn,cn=on(),un=n({__proto__:null,default:r(cn)},[cn]),fn={exports:{}},ln={exports:{}};function dn(){return an||(an=1,function(e){(()=>{const n=(e,n,t={},r)=>{const o=function(){if(Object.keys(t).length){var e,n=new URL(t.httpUnsafeOrigin);try{return(e=new URL(t.websocketPath,t.httpUnsafeOrigin)).protocol=n.protocol,e.origin}catch(e){return console.error(e),t.httpUnsafeOrigin}}};var a=o();var i=e=>JSON.parse(JSON.stringify(e)),s=function(e,t,r){var o=n.once(n.mkAsync(r));fetch(e,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)}).then(e=>{e.ok?e.text().then(e=>{o(void 0,n.tryParse(e))}):e.json().then().then(n=>{o(e.status,n)})}).catch(e=>{o(e)})},c=function(t,o,c){var u=i(o);u.publicKey=n.encodeBase64(t.publicKey),u.nonce=n.encodeBase64(r.randomBytes(24));var f,l,d=new URL("/api/auth/",a);e(function(e){s(d,u,e((n,t)=>n?(e.abort(),console.error(n),t&&console.error(t),void c(n)):t.date&&t.txid?(f=t.txid,void(l=t.date)):(e.abort(),void c("REQUEST_REJECTED"))))}).nThen(function(e){var o=i(u);o.txid=f,o.date=l;var a=n.decodeUTF8(JSON.stringify(o)),h=r.sign.detached(a,t.secretKey),p=n.encodeBase64(h);s(d,{sig:p,txid:f},e((n,t)=>{if(n)return e.abort(),console.error(n),t&&console.error(t),void c("RESPONSE_REJECTED",t);c(void 0,t)}))})};return c.setCustomize=e=>{t=e.ApiConfig,a=o()},c};e.exports&&(e.exports=n(qe(),X(),void 0,h()))})()}(ln)),ln.exports}function hn(){return sn||(sn=1,function(e){e.exports&&(e.exports=((e,n={},t,r)=>{var o={setCustomize:e=>{n=e.ApiConfig,t.setCustomize(e)}};o.join=e.uint8ArrayJoin,o.seed=function(){return r.hash(e.decodeUTF8("pewpewpew"))},o.genkeys=function(e){if(!(e instanceof Uint8Array))throw new Error("INVALID_SEED_FORMAT");if(!e||"number"!=typeof e.length||e.length<64)throw new Error("INVALID_SEED_LENGTH");var n=e.subarray(0,r.sign.seedLength),t=e.subarray(r.sign.seedLength,r.sign.seedLength+r.secretbox.keyLength);return{sign:r.sign.keyPair.fromSeed(n),symmetric:t}},o.keysToRPCFormat=function(n){try{var t=n.sign;return{edPrivate:e.encodeBase64(t.secretKey),edPublic:e.encodeBase64(t.publicKey)}}catch(e){return void console.error(e)}},o.encrypt=function(n,t,a){var i=e.decodeUTF8(t),s=r.randomBytes(r.secretbox.nonceLength);return o.join([[0],s,r.secretbox(i,s,a.symmetric)])},o.decrypt=function(n,t){var o=n.subarray(1,1+r.secretbox.nonceLength),a=n.subarray(1+r.secretbox.nonceLength),i=r.secretbox.open(a,o,t.symmetric);try{return JSON.parse(e.encodeUTF8(i))}catch(e){return void console.error(e)}},o.sign=function(e,n){return r.sign.detached(r.hash(e),n.sign.secretKey)},o.serialize=function(n,t){var r=o.encrypt(0,n,t),a=o.sign(r,t);return{publicKey:e.encodeBase64(t.sign.publicKey),signature:e.encodeBase64(a),ciphertext:e.encodeBase64(r)}},o.proveAncestor=function(n){var t=e.find(n,["sign","publicKey"]),o=e.find(n,["sign","secretKey"]);try{var a=r.sign.detached(t,o);return JSON.stringify([t,a].map(e.encodeBase64))}catch(e){return void console.error(e)}};var a=function(n){return e.encodeBase64(n).replace(/\//g,"-")};o.getBlockUrl=function(e){var t=a(e.sign.publicKey);return(n.fileHost||n.httpUnsafeOrigin||window.location.origin)+"/block/"+t.slice(0,2)+"/"+t},o.getBlockHash=function(e){return o.getBlockUrl(e)+"#"+a(e.symmetric)};var i=function(n){try{return e.decodeBase64(n.replace(/\-/g,"/"))}catch(e){return void console.error(e)}};return o.parseBlockHash=function(e){if("string"==typeof e){var n=e.split("#");if(2===n.length)try{return{href:n[0],keys:{symmetric:i(n[1])}}}catch(e){return void console.error(e)}}},o.checkRights=function(n,r){const o=e.mkAsync(r),{blockKeys:a,auth:i}=n;var s="MFA_CHECK";i&&i.type&&(s=`${i.type.toUpperCase()}_`+s),t(a.sign,{command:s,auth:i&&i.data},o)},o.writeLoginBlock=function(e,n){const{content:r,blockKeys:a,oldBlockKeys:i,auth:s,pw:c,session:u,token:f,userData:l}=e;var d="WRITE_BLOCK";s&&s.type&&(d=`${s.type.toUpperCase()}_`+d);var h=o.serialize(JSON.stringify(r),a);h.auth=s&&s.data,h.hasPassword=c,h.registrationProof=i&&o.proveAncestor(i),f&&(h.inviteToken=f),l&&(h.userData=l),t(a.sign,{command:d,content:h,session:u},n)},o.removeLoginBlock=function(e,n){const{reason:r,blockKeys:o,auth:a,edPublic:i}=e;var s="REMOVE_BLOCK";a&&a.type&&(s=`${a.type.toUpperCase()}_`+s),t(o.sign,{command:s,auth:a&&a.data,edPublic:i,reason:r},n)},o.updateSSOBlock=function(e,n){const{blockKeys:r,oldBlockKeys:a}=e;var i=a&&o.proveAncestor(a);t(r.sign,{command:"SSO_UPDATE_BLOCK",ancestorProof:i},n)},o})(X(),void 0,dn(),h()))}(fn)),fn.exports}var pn,vn,yn,mn=hn(),gn=n({__proto__:null,default:r(mn)},[mn]),En={exports:{}};function bn(){return pn||(pn=1,function(e){var n;n=function(){var e=function(n){if(Array.isArray(n))return n.map(e);if(n instanceof Object){var t=[],r=[];return Object.keys(n).forEach(function(e){/^(0|[1-9][0-9]*)$/.test(e)?t.push(+e):r.push(e)}),t.sort(function(e,n){return e-n}).concat(r.sort()).reduce(function(t,r){return t[r]=e(n[r]),t},{})}return n},n=JSON.stringify.bind(JSON);return function(t,r,o){var a=n(t,r,0);if(!a||"{"!==a[0]&&"["!==a[0])return a;var i=JSON.parse(a);return n(e(i),null,o)}},e.exports?e.exports=n():JSON.sortify=n()}(En)),En.exports}function An(){if(yn)return vn;yn=1;var e,n,t,r,o,a,i,s;return M(),e=te(),n=X(),Y(),t=je(),o=(r={}).createData=function(t,r){var o={channel:r||e.createChannelId(),displayName:t["cryptpad.username"],profile:t.profile&&t.profile.view,edPublic:t.edPublic,curvePublic:t.curvePublic,notifications:n.find(t,["mailboxes","notifications","channel"]),avatar:t.profile&&t.profile.avatar,badge:t.profile&&t.profile.badge,uid:t.uid};return!1===r&&delete o.channel,o},a=r.getFriend=function(e,n){if(n){if(n===e.curvePublic){var t=o(e);return delete t.channel,t}return e.friends?e.friends[n]:void 0}},i=r.getFriendList=function(e){return e.friends||(e.friends={}),e.friends},s=function(e,n){Object.keys(e).forEach(function(t){"me"!==t&&n(e[t],t,e)})},r.getFriendChannelsList=function(e){var n=[];return s(e.friends,function(e){n.push(e.channel)}),n},r.declineFriendRequest=function(e,n,t){e.mailbox.sendTo("DECLINE_FRIEND_REQUEST",{},{channel:n.notifications,curvePublic:n.curvePublic},function(e){t(e)})},r.acceptFriendRequest=function(e,n,t){var r=a(e.proxy,n.curvePublic)||{},i=o(e.proxy,r.channel||n.channel);e.mailbox.sendTo("ACCEPT_FRIEND_REQUEST",{user:i},{channel:n.notifications,curvePublic:n.curvePublic},function(e){t(e)})},r.addToFriendList=function(e,n,r){var o=e.proxy,a=i(o),s=n.curvePublic;s!==o.curvePublic?(a[s]=n,t.whenRealtimeSyncs(e.realtime,function(){r(),e.pinPads([n.channel],function(e){e.error&&console.error(e.error)})})):r("E_MYKEY")},r.updateMyData=function(e,t){var r=o(e.proxy,!1);e.proxy.friends&&(e.proxy.friends.me=n.clone(r),delete e.proxy.friends.me.channel),e.modules.team&&e.modules.team.updateMyData(r);var i=function(n){n&&n.notifications&&(delete n.user,r.channel=n.channel,e.mailbox.sendTo("UPDATE_DATA",r,{channel:n.notifications,curvePublic:n.curvePublic},function(e){e&&e.error&&console.error(e)}))};t?i(a(e.proxy,t)):s(e.proxy.friends||{},i)},r.removeFriend=function(e,n,r){var o=e.proxy,a=o.friends[n];a?a.notifications?e.mailbox.sendTo("UNFRIEND",{curvePublic:o.curvePublic},{channel:a.notifications,curvePublic:a.curvePublic},function(i){i&&i.error?r(i):(e.messenger.onFriendRemoved(n,a.channel),delete o.friends[n],t.whenRealtimeSyncs(e.realtime,function(){r(i)}))}):r({error:"EINVAL"}):r({error:"ENOENT"})},vn=r}var On,wn,Dn,_n={exports:{}},Tn={exports:{}},Sn={exports:{}};function Nn(){return On||(On=1,function(e){var n,t,r,o,a,i,s,c,u,f,l,d;e.exports&&(e.exports=(n=X(),t=h(),r=n.uid,o=n.tryParse,a=function(e,r){var o=n.decodeUTF8(JSON.stringify(e));return n.encodeBase64(t.sign.detached(o,r))},i=function(e,n,t){if("function"!=typeof t)throw new Error("expected callback");var o=e.network,a=o.historyKeeper;if("string"==typeof a){var i=r(),s=e.pending[i]=function(e,n){t(e,n)};return s.data=n,s.called=0,o.sendto(a,JSON.stringify([i,n]))}t("NO_HISTORY_KEEPER")},s=[],c=[],u=function(e){var n={network:e,connected:!0,anon:void 0,authenticated:[]};return s.push(e),c.push(n),e.on("message",function(t,r){r===e.historyKeeper&&function(e,n){"string"!=typeof n&&console.error("received non-string message [%s]",n);var t=o(n);if(t){if(Array.isArray(t)&&!/(FULL_HISTORY|HISTORY_RANGE)/.test(t[0])){var r=t[0];"string"==typeof r&&(function(e,n){return!!e.anon&&"function"==typeof e.anon.pending[n]}(e,r)?function(e,n,t){var r=e.pending[n];"ERROR"===t[0]?r(t[1]):r(void 0,t.slice(1)),delete e.pending[n]}(e.anon,r,t.slice(1)):e.authenticated.some(function(e){var n=e.pending[r];return"function"==typeof n&&("ERROR"!==t[1]?(/\|/.test(t[1])&&e.cookie!==t[1]&&(e.cookie=t[1]),n(void 0,t.slice(2)),delete e.pending[r],!0):"NO_COOKIE"===t[2]?(e.send("COOKIE","",function(t){if(t)return console.error(t),void n(t);e.resend(r)&&delete e.pending[r]}),!0):(n(t[2]),delete e.pending[r],!0))})||console.error("UNHANDLED RPC MESSAGE",n))}}else console.error(new Error("could not parse message: %s",n))}(n,t)}),e.on("disconnect",function(){n.connected=!1,n.anon&&(n.anon.connected=!1),n.authenticated.forEach(function(e){e.connected=!1})}),e.on("reconnect",function(){n.anon&&(n.anon.connected=!0),n.authenticated.forEach(function(e){e.connected=!0})}),n},f=function(e){var n;return s.some(function(t,r){return e===t&&(n=r,!0)}),c[n]?c[n]:u(e)},l=function(e,t){if(!e)throw new Error("expected network context");var o,s=t.publicKeyString;return e.authenticated.some(function(e,n){return e.publicKey===s&&(o=n,!0)}),e.authenticated[o]?e.authenticated[o]:function(e,t){var o={network:e.network,publicKey:t.publicKeyString,timeouts:{},pending:{},cookie:null,connected:!0},s=o.send=function(e,r,s){var c=n.mkAsync(s);if(o.connected||"COOKIE"===e){var u=[e,r];o.cookie&&o.cookie.join?u.unshift(o.cookie.join("|")):u.unshift(o.cookie);var f=a(u,t.signKey);return u.unshift(t.publicKeyString),u.unshift(f),i(o,u,c)}c("DISCONNECTED")};return o.resend=function(e){var n=o.pending[e];if(n.called)return console.error("[%s] called too many times",e),!0;n.called++,n.data[2]=o.cookie,n.data[0]=a(n.data.slice(2),t.signKey);var i=r();o.pending[i]=n,delete o.pending[e];try{return o.network.sendto(o.network.historyKeeper,JSON.stringify([i,n.data]))}catch(e){console.log("failed to resend"),console.error(e)}},s.unauthenticated=function(e,r,a){var s=n.mkAsync(a);if(o.connected){var c=[null,t.publicKeyString,null,e,r];return o.cookie&&o.cookie.join?c[2]=o.cookie.join("|"):c[2]=o.cookie,i(o,c,s)}s("DISCONNECTED")},o.destroy=function(){Object.keys(o.timeouts).forEach(function(e){clearTimeout(e)}),o.send("DESTROY","",function(){});var n=e.authenticated.indexOf(o);-1!==n&&e.authenticated.splice(n,1)},e.authenticated.push(o),o}(e,t)},d=function(e){return e.anon||function(e){var t={network:e.network,timeouts:{},pending:{},connected:!0};return e.anon=t,t.send=function(e,r,o){var a=n.mkAsync(o);if(t.connected)return i(t,[e,r],a);a("DISCONNECTED")},t.resend=function(e){var n=t.pending[e];if(n.called)return console.error("[%s] called too many times",e),!0;n.called++;try{return t.network.sendto(t.network.historyKeeper,JSON.stringify([e,n.data]))}catch(e){console.log("failed to resend"),console.error(e)}},t.destroy=function(){Object.keys(t.timeouts).forEach(function(e){clearTimeout(e)}),e.anon=void 0},t}(e)},{create:function(e,t,r,o){if("function"!=typeof o)throw new Error("expected callback");var a,i=n.mkAsync(o);try{if(64!==(a=n.decodeBase64(t)).length)throw new Error("private key did not match expected length of 64")}catch(e){return void i(e)}try{if(32!==n.decodeBase64(r).length)return void i("expected public key to be 32 uint")}catch(e){return void i(e)}if(e){var s=f(e),c=l(s,{publicKeyString:r,signKey:a});c.send("COOKIE","",function(e){e?i(e):i(void 0,{send:c.send,destroy:c.destroy})})}else i("NO_NETWORK")},createAnonymous:function(e,t){var r=n.mkAsync(t);if("function"!=typeof r)throw new Error("expected callback");if(e){var o=d(f(e));r(void 0,{send:o.send,destroy:o.destroy})}else r("NO_NETWORK")}}))}(Sn)),Sn.exports}function In(){return wn||(wn=1,function(e){var n,t;e.exports&&(e.exports=(n=X(),t=Nn(),{create:function(e,r,o,a){if("function"!=typeof o)throw new Error("Expected callback");var i=n.once(n.mkAsync(o));if(e)if(r){var s=r.edPrivate,c=r.edPublic;s&&c?t.create(e,s,c,function(e,t){if(e)i(e);else{var r={};r.destroy=t.destroy,r.publicKey=c,r.send=t.send,r.pin=function(e,r){var o=n.once(n.mkAsync(r));Array.isArray(e)?t.send("PIN",e,o):o("[TypeError] pin expects an array")},r.unpin=function(e,r){var o=n.once(n.mkAsync(r));Array.isArray(e)?t.send("UNPIN",e,o):o("[TypeError] pin expects an array")},r.adminRpc=function(e,n){if(e.cmd){var r=[e.cmd,e.data];t.send("ADMIN",r,n)}else setTimeout(function(){n("[TypeError] admin rpc expects a command")})},r.getServerHash=function(e){t.send("GET_HASH",c,function(n,t){t&&t[0]?e(n,Array.isArray(t)&&t[0]||void 0):e("NO_HASH_RETURNED")})},r.reset=function(e,r){var o=n.once(n.mkAsync(r));Array.isArray(e)?t.send("RESET",e,o):o("[TypeError] pin expects an array")},r.getFileListSize=function(e){t.send("GET_TOTAL_SIZE",void 0,function(n,t){n?e(n):t&&t.length&&"number"==typeof t[0]?e(void 0,t[0]):e("INVALID_RESPONSE")})},r.getLimit=function(e){t.send("GET_LIMIT",void 0,function(n,t){n?e(n):t&&t.length&&"number"==typeof t[0]?e(void 0,t[0],t[1],t[2]):e("INVALID_RESPONSE")})},r.trimHistory=function(e,r){var o=n.once(n.mkAsync(r));"object"==typeof e&&e.channel&&e.hash?t.send("TRIM_HISTORY",e,function(e){if(e)return o(e);o()}):o("INVALID_ARGUMENTS")},r.clearOwnedChannel=function(e,n){"string"==typeof e&&32===e.length?t.send("CLEAR_OWNED_CHANNEL",e,function(e){if(e)return n(e);n()}):n("INVALID_ARGUMENTS")},r.removeOwnedChannel=function(e,n,r){if("string"!=typeof e||-1===[32,48].indexOf(e.length))return console.error("invalid channel to remove",e),void n("INVALID_ARGUMENTS");t.send("REMOVE_OWNED_CHANNEL",{channel:e,reason:r},function(t,r){t?n(t):r&&r.length&&"OK"===r[0]?(n(),a&&a.clearChannel&&a.clearChannel(e)):n("INVALID_RESPONSE")})},r.removePins=function(e){t.send("REMOVE_PINS",void 0,function(n,t){n?e(n):t&&t.length&&"OK"===t[0]?e():e("INVALID_RESPONSE")})},r.uploadComplete=function(e,n){t.send("UPLOAD_COMPLETE",e,function(e,t){if(e)n(e);else{var r=t[0];"string"==typeof r?n(void 0,r):n("INVALID_ID")}})},r.ownedUploadComplete=function(e,n){t.send("OWNED_UPLOAD_COMPLETE",e,function(e,t){if(e)n(e);else{var r=t[0];"string"==typeof r?n(void 0,r):n("INVALID_ID")}})},r.uploadStatus=function(e,n){"number"==typeof e?.size?t.send("UPLOAD_STATUS",e,function(e,t){if(e)n(e);else{var r=t[0];"boolean"==typeof r?n(void 0,r):n("INVALID_RESPONSE")}}):setTimeout(function(){n("INVALID_SIZE")})},r.uploadCancel=function(e,n){t.send("UPLOAD_CANCEL",e,function(e){e?n(e):n()})},r.setMetadata=function(e,n){t.send("SET_METADATA",{channel:e.channel,command:e.command,value:e.value},n)},i(e,r)}}):i("INVALID_KEYS")}else i("INVALID_PROXY");else i("INVALID_NETWORK")}}))}(Tn)),Tn.exports}function xn(){return Dn||(Dn=1,function(e){(()=>{const n=(e,n,t,r,o,a,i,s,c,u)=>{var f=function(e,n,t){if(!e.done){if(e.cb(n&&n.error,t,n),e.done=!0,!e.hasNetwork){var o=r.find(e,["network","disconnect"]);"function"==typeof o&&o()}if(e.realtime&&e.realtime.stop)try{e.realtime.stop()}catch(e){console.error(e)}var a=r.find(e,["session","realtime","abort"]);"function"==typeof a&&(e.session.realtime.sync(),a())}},l=function(e,r){u(function(n){var o,a;e.hasNetwork||(o=n(function(e,n){e||(r.network=n)}),a=i.getWebsocketURL(),t.connect(a).then(function(e){o(null,e)},function(e){o(e)}))}).nThen(function(){e.realtime=n.start(r)})},d=function(e,n,t,r){Array.isArray(t)&&t.length&&16===t[0].length&&Array.isArray(n.accessKeys)?(e.network.historyKeeper=t[0],u(function(t){n.accessKeys.forEach(function(n){c.create(e.network,n,t(function(e){console.log("done",n),e&&console.error(e)}))})}).nThen(function(){r()})):r(!0)},h=function(n,t){var r;return"string"==typeof n?r=o.getSecrets("pad",n,t.password):"object"==typeof n&&(r=n),r.keys||(r.keys=r.key),{websocketURL:i.getWebsocketURL(t.origin),channel:r.channel,validateKey:r.keys.validateKey||void 0,crypto:e.createEncryptor(r.keys),logLevel:0,initialState:t.initialState,Cache:s}},p=function(e){return"object"==typeof e},v=function(e,n){p(e)&&p(n)&&Object.keys(n).forEach(function(t){e[t]=n[t]})};return{get:function(e,n,t,r){if("function"!=typeof n)throw new Error("Cryptget expects a callback");r=r||function(){};var o=h(e,t=t||{}),a={cb:n,accessKeys:t.accessKeys,hasNetwork:Boolean(t.network)};o.onRejected=function(e,n){d(o,a,e,n)},o.onReady=function(e){var n=a.session=e.realtime;a.network=e.network,r(1),f(a,void 0,n.getUserDoc())},o.onError=function(e){console.warn(e),f(a,e)},o.onChannelError=function(e){console.error(e),f(a,e)},o.onCacheReady=t.onCacheReady;var i=0;o.onMessage=function(){i++,r(Math.min(.99,i/100))},v(o,t),l(a,o)},put:function(e,n,t,r){if("function"!=typeof t)throw new Error("Cryptput expects a callback");var o=h(e,r=r||{}),i={cb:t,accessKeys:r.accessKeys,hasNetwork:Boolean(r.network)};o.onRejected=function(e,n){d(o,i,e,n)},o.onReady=function(e){var r=i.session=e.realtime;i.network=e.network,r.contentUpdate(n);var o=setTimeout(function(){t(new Error("Timeout"))},15e3);a.whenRealtimeSyncs(r,function(){clearTimeout(o);var e=r.getAuthDoc();r.abort(),f(i,void 0,e)})},o.onChannelError=function(e){f(i,e)},v(o,r),l(i,o)}}};e.exports&&(e.exports=n(M(),D(),u(),X(),te(),je(),j(),fe(),In(),qe(),x()))})()}(_n)),_n.exports}var Cn,Rn,Pn,kn,Mn,Fn,Ln,Hn={exports:{}};function jn(){if(Mn)return kn;Mn=1;return kn=((e,n,t,r,o,a,i,s)=>{const c={};let u={};c.setCustomize=e=>{u=e.Broadcast};var f=["notifications","supportteam","broadcast"],l=[],d="000000000000000000000000000000000",h=function(e,n,t,r,o){e.emit("MESSAGE",{type:n,content:t},r?[r]:e.clients,o)},p=function(e,n,t,r){e.emit("VIEWED",{type:n,hash:t},r||e.clients)},v=function(e){var n=e.store&&e.store.proxy;if(n.curvePrivate&&n.curvePublic)return{curvePrivate:n.curvePrivate,curvePublic:n.curvePublic}},y=c.sendTo=function(n,t,o,a,i){a=a||{};var c=i||function(e){e&&e.error&&console.error(e.error)};if(s.Mailbox){var u=e.find(n,["store","anon_rpc"]);if(u){var f={encrypt:function(e){return e}},l=d,h={uid:e.uid(),type:t,content:o};if(!/^BROADCAST/.test(t)){var p=v(n);if(!p)return void c({error:"missing asymmetric encryption keys"});if(!a||!a.channel||!a.curvePublic)return void c({error:"no notification channel"});if(l=a.channel,f=s.Mailbox.createEncryptor(p),"object"==typeof o&&!o.user){var y=r.createData(n.store.proxy,!1);o.user=y}h={type:t,content:o}}var m=JSON.stringify(h),g=f.encrypt(m,a.curvePublic);if(a.viewed){var E=e.find(n,["store","proxy","teams",a.viewed]);if(E){var b=g.slice(0,64),A=e.find(E,["keys","mailbox","viewed"]);Array.isArray(A)&&A.push(b)}}u.send("WRITE_PRIVATE_MESSAGE",[l,g],function(e){c(e?{error:e}:{hash:g.slice(0,64)})})}else c({error:"anonymous rpc session not ready"})}else c({error:"chainpad-crypto is outdated and doesn't support mailboxes."})};c.sendToAnon=function(n,t,r,o,a){var i=s.Nacl,c=i.randomBytes(32),u=i.box.keyPair.fromSecretKey(new Uint8Array(c)),f=e.encodeBase64(u.secretKey),l=e.encodeBase64(u.publicKey);y({store:{anon_rpc:n,proxy:{curvePrivate:f,curvePublic:l}}},t,r,o,a)};var m=function(n,r,o,i){var s=r.type,c=r.hash;if(/^REMINDER\|/.test(c)){i(),delete n.boxes.reminders.content[c],p(n,s,c,n.clients.filter(function(e){return e!==o}));var u=c.slice(9).split("-")[0],f=e.find(n,["store","proxy","hideReminders",u]);if(!f){var l=n.store.proxy.hideReminders=n.store.proxy.hideReminders||{};f=l[u]=l[u]||[]}var d=c.split("-")[1];d&&!f.includes(d)&&f.push(Number(d))}else{var h=n.boxes[s];if(h){var v,y,m=h.data||{},g=h.history.indexOf(c);-1!==g&&(0===g?(m.lastKnownHash=c,h.history.shift()):-1===m.viewed.indexOf(c)&&m.viewed.push(c));var E=[];h.history.some(function(e,n){if(-1===m.viewed.indexOf(e))return!0;v=n+1,E.push(e),y=e}),m.viewed=m.viewed.filter(function(e){return-1===E.indexOf(e)}),v&&(h.history=h.history.slice(v),m.lastKnownHash=y),Object.keys(h.content).forEach(function(e){-1!==h.history.indexOf(e)&&-1===m.viewed.indexOf(e)||(a.remove(n,h,h.content[e],e),delete h.content[e])}),t.whenRealtimeSyncs(n.store.realtime,function(){i(),p(n,s,c,n.clients.filter(function(e){return e!==o}))})}else i({error:"NOT_LOADED"})}},g=function(e,n,t,c,u){u=u||{};var f=e.boxes[n]={channel:t.channel,type:n,queue:[],history:[],content:{},sendMessage:function(n){if("object"==typeof n&&!n.user){var t=r.createData(e.store.proxy,!1);n.user=t}try{n=JSON.stringify(n)}catch(e){console.error(e)}f.queue.push(n)},data:t};if(s.Mailbox){var l=t.keys||v(e);if(l||t.decrypted){var d=t.decrypted?{encrypt:function(e){return e},decrypt:function(e){return e}}:s.Mailbox.createEncryptor(l);f.encryptor=d;var y,g={network:e.store.network,channel:t.channel,noChainPad:!0,crypto:d,owners:"broadcast"===n?[]:u.owners||[e.store.proxy.edPublic],lastKnownHash:t.lastKnownHash};g.onConnectionChange=function(){},g.onConnect=function(t,r){f.sendMessage=function(t,o){var a;o=o||function(){};try{a=JSON.stringify(t)}catch(e){console.error(e)}r(a,function(r,a){r?console.error(r):(f.history.push(a),t.ctime=+new Date,f.content[a]=t,h(e,n,{msg:t,hash:a}),o(a))},l.curvePublic)},f.queue.forEach(function(e){f.sendMessage(e)}),f.queue=[]},f.onMessage=g.onMessage=function(r,i,s,c,l,d,p){if(l!==t.lastKnownHash&&l!==y){var v=p&&p.time;y=l;try{r=JSON.parse(r)}catch(e){console.error(e)}if(d&&(r.author=d),f.history.push(l),function(e,n){return-1===(n.viewed||[]).indexOf(e)&&e!==n.lastKnownHash}(l,t)){var g={msg:r,hash:l,time:v},E=f.ready;a.add(e,f,g,function(t,a,i){a&&m(e,a,"",function(){console.log("Notification handled automatically")}),i||t?m(e,{type:n,hash:l},"",function(){console.log("Notification handled automatically")}):(r.ctime=v||0,f.content[l]=r,u.dump||h(e,n,g,null,function(e){e&&e.msg&&E&&o.system(void 0,e.msg)}))})}else if(0===Object.keys(f.content).length){t.lastKnownHash=l,f.history=[];var b=t.viewed.indexOf(l);-1!==b&&t.viewed.splice(b,1)}}},g.onReady=function(){var r=[];t.viewed.forEach(function(e,n){-1===f.history.indexOf(e)&&r.push(n)});for(var o=r.length-1;o>=0;o--)t.viewed.splice(r[o],1);var i=function(t){a.remove(e,f,f.content[t],t),delete f.content[t],p(e,n,t)};e.store.proxy.on("change",["mailboxes",n],function(e,n,t){var r;"lastKnownHash"===t[2]&&(f.history.some(function(e,t){if(r=t+1,i(e),e===n)return!0}),f.history=f.history.slice(r));"viewed"===t[2]&&i(n)}),f.ready=!0,c(f.content)},f.cpNf=i.start(g)}else console.error("missing asymmetric encryption keys")}else console.error("chainpad-crypto is outdated and doesn't support mailboxes.")};return c.init=function(t,r,i){var s={},c=t.store,v=c.proxy.mailboxes=c.proxy.mailboxes||{},E={Store:t.Store,store:c,pinPads:t.pinPads,updateMetadata:t.updateMetadata,updateDrive:t.updateDrive,mailboxes:v,emit:i,clients:[],boxes:{},req:{},loggedIn:c.loggedIn&&c.proxy.edPublic};return function(e,t){!t.notifications&&e.loggedIn&&(t.notifications={channel:n.createChannelId(),lastKnownHash:"",viewed:[]},e.pinPads([t.notifications.channel],function(e){e.error&&console.error(e)})),t.support&&delete t.support,t.broadcast||(t.broadcast={channel:d,lastKnownHash:u.lastBroadcastHash,decrypted:!0,viewed:[]})}(E,v),E.loggedIn&&function(n){var t=n.store.network;t.on("message",function(r,o){if(o===t.historyKeeper){var a=JSON.parse(r);if(/HISTORY_RANGE/.test(a[0])){var i=a[1],s=n.req[i];if(s){var c=a[0],u=a[2],f=s.box;if("HISTORY_RANGE"===c){if(!Array.isArray(u))return;var l;if("broadcast"===s.box.type)l=e.tryParse(u[4]);else try{var d=f.encryptor.decrypt(u[4]);(l=JSON.parse(d.content)).author=d.author}catch(e){console.log(e)}var h=u[4].slice(0,64);n.emit("HISTORY",{txid:i,time:u[5],message:l,hash:h},[s.cId])}else"HISTORY_RANGE_END"===c&&(n.emit("HISTORY",{txid:i,complete:!0},[s.cId]),delete n.req[i])}}}})}(E),E.boxes.reminders={content:{}},Object.keys(v).forEach(function(e){if(-1!==f.indexOf(e)){var n=v[e];-1===l.indexOf(e)?g(E,e,n,function(){}):g(E,e,n,r(function(){}))}}),E.loggedIn&&Object.keys(c.proxy.teams||{}).forEach(function(n){var t=c.proxy.teams[n];if(t){var r=t.keys.mailbox||{};if(r.channel){var o={owners:[e.find(t,["keys","drive","edPublic"])]};g(E,"team-"+n,r,function(){},o)}}}),s.post=function(e,n,t){var r=E.boxes[e];r&&r.sendMessage({type:n,content:t,sender:c.proxy.curvePublic})},s.hideMessage=function(e,n){p(E,e,n.hash,E.clients)},s.showMessage=function(e,n,t,r){"reminders"===e&&n&&(E.boxes.reminders.content[n.hash]=n.msg,E.clients.length||(E.boxes.reminders.content[n.hash].requiresNotif=!0),p(E,e,n.hash,E.clients)),h(E,e,n,t,function(e){o.system(void 0,e.msg),r&&r()})},s.open=function(e,n,t,r,o){(-1!==f.indexOf(e)||r)&&g(E,e,n,t,o)},s.close=function(e,n){!function(e,n,t){t=t||function(){};var r=e.boxes[n];r?r.cpNf&&"function"==typeof r.cpNf.stop?(r.cpNf.stop(),Object.keys(r.content).forEach(function(t){a.remove(e,r,r.content[t],t),p(e,n,t,e.clients)}),delete e.boxes[n]):t("EINVAL"):t()}(E,e,n)},s.dismiss=function(e,n){m(E,e,"",n)},s.sendTo=function(e,n,t,r){E.loggedIn?y(E,e,n,t,r):r({error:"NOT_LOGGED_IN"})},s.removeClient=function(e){!function(e,n){var t=e.clients.indexOf(n);e.clients.splice(t,1)}(E,e)},s.execCommand=function(e,n,t){var r=n.cmd,a=n.data;"SUBSCRIBE"!==r?"DISMISS"!==r?"SENDTO"!==r?"LOAD_HISTORY"!==r||function(e,n,t,r){var o=e.boxes[t.type];if(o){var a=["GET_HISTORY_RANGE",o.channel,{from:t.lastKnownHash,count:t.count,txid:t.txid}];"broadcast"===t.type&&(a=["GET_HISTORY_RANGE",o.channel,{to:t.lastKnownHash,txid:t.txid}]),e.req[t.txid]={cId:n,box:o};var i=e.store.network;i.sendto(i.historyKeeper,JSON.stringify(a)).then(function(){},function(e){console.error(e)})}else r({error:"ENOENT"})}(E,e,a,t):y(E,a.type,a.msg,a.user,t):m(E,a,e,t):function(e,n,t,r){Object.keys(e.boxes).forEach(function(n){Object.keys(e.boxes[n].content).forEach(function(r){var a={msg:e.boxes[n].content[r],hash:r};h(e,n,a,t,function(e){e.error||a.msg&&a.msg.requiresNotif&&(o.system(void 0,e.msg),delete a.msg.requiresNotif)})})}),-1===e.clients.indexOf(t)&&e.clients.push(t),r()}(E,0,e,t)},s},c})(X(),te(),je(),An(),(Cn||(Cn=1,function(e){(()=>{const n=(e={})=>{let n=globalThis;var t={};e.requireConf=e.requireConf||{},t.setCustomize=n=>{e=n.ApiConfig};var r=n.location&&n.location.pathname.slice(1,-1),o=-1!==["code","slide","pad","kanban","whiteboard","diagram","sheet","poll","teams","form","doc","presentation"].indexOf(r)?"-"+r:"",a="/customize/favicon/main-favicon"+o+".png?"+e.requireConf.urlArgs,i="/customize/favicon/alt-favicon"+o+".png?"+e.requireConf.urlArgs,s="/customize/favicon/main-favicon"+o+".ico?"+e.requireConf.urlArgs,c="/customize/favicon/alt-favicon"+o+".ico?"+e.requireConf.urlArgs,u=n.document,f=t.isSupported=function(){return"function"==typeof n.Notification&&n.isSecureContext},l=t.hasPermission=function(){return"granted"===Notification.permission},d=t.getPermission=function(e){e=e||function(){},Notification&&"function"==typeof Notification.requestPermission?Notification.requestPermission(function(n){e("granted"===n)}):e(!1)},h=t.create=function(e,t,r){u&&!r?r=u.getElementById("favicon").getAttribute("data-main-favicon")||i:r||(r=i);var o=new Notification(t,{icon:r,body:e});return o.onclick=function(){if(u)try{parent.focus(),n.focus(),this.close()}catch(e){}},o};return t.system=function(e,n,t){if(f())return l()?h(e,n,t):void("denied"!==Notification.permission&&d(function(r){r&&h(e,n,t)}))},u&&!u.getElementById("favicon")&&function(){if(u){console.debug("creating favicon");var e={id:"favicon",type:"image/png",rel:"icon","data-main-favicon":a,"data-alt-favicon":i,href:a};if(!u.getElementById("favicon")){var n=u.createElement("link");Object.keys(e).forEach(function(t){n.setAttribute(t,e[t])}),u.head.appendChild(n)}if(!u.getElementById("favicon-ico")){var t=u.createElement("link");e.href=e.href.replace(/\.png/g,".ico"),e.id="favicon-ico",e.type="image/x-icon",Object.keys(e).forEach(function(n){t.setAttribute(n,e[n])}),u.head.appendChild(t)}}else console.error("document is not available in this context")}(),t.tab=function(e,r){if(u){var o="_pendingTabNotification",f=u.getElementById("favicon"),l=u.getElementById("favicon-ico"),d=a,h=i,p=s,v=c;f&&(d=f.getAttribute("data-main-favicon")||a,h=f.getAttribute("data-alt-favicon")||i,f.setAttribute("href",d)),l&&(p=l.getAttribute("data-main-favicon")||s,v=l.getAttribute("data-alt-favicon")||c,l.setAttribute("href",p));var y=function(e){return!!t[o]&&(n.clearInterval(t[o]),f&&f.setAttribute("href",e?h:d),l&&l.setAttribute("href",e?v:p),!0)};y();var m=function(){f&&f.setAttribute("href",f.getAttribute("href")===d?h:d),l&&l.setAttribute("href",l.getAttribute("href")===p?v:p),--r};return t[o]=n.setInterval(function(){if(r>0)return m();y(!0)},e),m(),{cancel:y}}console.error("document is not available in this context")},t};e.exports&&(e.exports=n(void 0))})()}(Hn)),Hn.exports),(Pn||(Pn=1,Rn=((e,n,t,r,o)=>{var a=function(e){var n=e.store.realtime.getLag().lag||0;return 20*(Math.max(0,n)+300)*(.5+Math.random())},i={},s={},c=function(e,n){var r=e.store.proxy.mutedUsers||{},o=t.find(n,["msg","author"]);return!!o&&Boolean(r[o])},u={};i.FRIEND_REQUEST=function(n,t,r,o){var a=r.msg.content.user||r.msg.content;if(c(n,r))o(!0);else if(u[r.msg.author])o(!0);else{if(u[r.msg.author]={type:t.type,hash:r.hash},e.getFriend(n.store.proxy,r.msg.author)||n.store.proxy.friends_pending[r.msg.author])return delete n.store.proxy.friends_pending[r.msg.author],void e.acceptFriendRequest(n.store,a,function(t){t&&t.error?o():e.addToFriendList({proxy:n.store.proxy,realtime:n.store.realtime,pinPads:n.pinPads},a,function(e){if(e)return console.error(e),void o(!0);n.store.messenger&&n.store.messenger.onFriendAdded(a),n.updateMetadata(),o(!0)})});o()}},s.FRIEND_REQUEST=function(e,n,t){var r=t.content.user||t.content;u[r.curvePublic]&&delete u[r.curvePublic]};var f={},l={};i.DECLINE_FRIEND_REQUEST=function(e,n,t,r){var o=t.msg.content.user||t.msg.content;o.curvePublic||(o.curvePublic=t.msg.author),setTimeout(function(){r(!0),e.store.proxy.friends_pending[t.msg.author]&&(delete e.store.proxy.friends_pending[t.msg.author],e.updateMetadata(),f[t.msg.author]||n.sendMessage({type:"FRIEND_REQUEST_DECLINED",content:{user:o}},function(e){f[t.msg.author]={type:n.type,hash:e}}))},a(e))},i.FRIEND_REQUEST_DECLINED=function(e,n,t,r){e.updateMetadata();var o=t.msg.content.user.curvePublic||t.msg.content.user,a=l[o];delete l[o],f[o]?r(!0,a):(f[o]={type:n.type,hash:t.hash},r(!1,a))},s.FRIEND_REQUEST_DECLINED=function(e,n,t){var r=t.content.user.curvePublic||t.content.user;f[r]&&delete f[r]},i.ACCEPT_FRIEND_REQUEST=function(n,t,r,o){var i=r.msg.content.user||r.msg.content;setTimeout(function(){o(!0),n.store.proxy.friends_pending[r.msg.author]&&(delete n.store.proxy.friends_pending[r.msg.author],e.addToFriendList({proxy:n.store.proxy,realtime:n.store.realtime,pinPads:n.pinPads},i,function(e){e?console.error(e):(n.store.messenger&&n.store.messenger.onFriendAdded(i),n.updateMetadata(),n.store.modules.profile&&n.store.modules.profile.update(),l[r.msg.author]||t.sendMessage({type:"FRIEND_REQUEST_ACCEPTED",content:{user:i}},function(e){l[r.msg.author]={type:t.type,hash:e}}))}))},a(n))},i.FRIEND_REQUEST_ACCEPTED=function(e,n,t,r){e.updateMetadata();var o=t.msg.content.user.curvePublic||t.msg.content.user,a=f[o];delete f[o],l[o]?r(!0,a):(l[o]={type:n.type,hash:t.hash},r(!1,a))},s.FRIEND_REQUEST_ACCEPTED=function(e,n,t){var r=t.content.user.curvePublic||t.content.user;l[r]&&delete l[r]},i.CANCEL_FRIEND_REQUEST=function(e,n,t,r){var o=u[t.msg.author];o?r(!0,o):r(!0)},i.UNFRIEND=function(n,t,r,o){var a=r.msg.author,i=e.getFriend(n.store.proxy,a);i?(delete n.store.proxy.friends[a],delete n.store.proxy.friends_pending[a],n.store.messenger&&n.store.messenger.onFriendRemoved(a,i.channel),n.updateMetadata(),o(!0)):o(!0)},i.UPDATE_DATA=function(e,n,t,r){var o=t.msg,a=o.author,i=e.store.proxy.friends&&e.store.proxy.friends[a];if(!i||"object"!=typeof o.content)return void r(!0);const s=o.content.edPublic,c=()=>{Object.keys(o.content).forEach(function(e){i[e]=o.content[e]}),e.store.messenger&&e.store.messenger.onFriendUpdate(a),e.updateMetadata(),r(!0)};if(o.content.badge&&e.store.modules.badge)return e.store.modules.badge.listBadges({edPublic:s},e=>{e.includes(o.content.badge)||delete o.content.badge,c()});c()};var d=function(e,n){let t=e.store.data.blockHash,a=o.parseBlockHash(t).keys.symmetric;return r.encrypt(n,a)},h={};i.SHARE_PAD=function(e,t,r,o){var a=r.msg,i=r.hash,s=a.content;if(c(e,r))o(!0);else{var u,f=s.isStatic?s.href:n.hrefToHexChannelId(s.href,s.password),l=n.parsePadUrl(s.href),p=l.hashData&&l.hashData.mode||"n/a",v=h[f];if(v){if("edit"===v.mode&&"view"===p)return void o(!0);u=v.data}s.password&&(s.password=d(e,s.password)),h[f]={mode:p,data:{type:t.type,hash:i}},o(!1,u)}},s.SHARE_PAD=function(e,t,r,o){var a=r.content,i=n.hrefToHexChannelId(a.href,a.password),s=h[i];s&&s.data&&s.data.hash===o&&delete h[i]};var p=!1;i.SUPPORT_MESSAGE=function(e,n,t,r){p?r(!0):(p=!0,r())},s.SUPPORT_MESSAGE=function(){p=!1},i.REQUEST_PAD_ACCESS=function(e,n,t,r){var o=t.msg.content;if(c(e,t))r(!0);else{var a=o.channel,i=e.store.manager.findChannel(a);if(i.length){var s,u,f=e.store.proxy.edPublic;i.some(function(e){if(e.data&&Array.isArray(e.data.owners)&&-1!==e.data.owners.indexOf(f)&&e.data.href)return u=e.data.href,s=e.data.filename||e.data.title,!0})?(o.title=s,o.href=u,r(!1)):r(!0)}else r(!0)}},i.GIVE_PAD_ACCESS=function(e,n,t,r){var o,a=t.msg.content,i=a.channel;e.store.manager.findChannel(i,!0).forEach(function(e){e.data&&!e.data.href&&(o||(o=e.data.filename||e.data.title),e.userObject.setHref(i,null,a.href))}),a.title=o||a.title,r(!1)},i.ADD_TO_ACCESS_LIST=function(e,n,t,r){var o=t.msg.content.channel;e.Store.getAllStores().forEach(function(n){var t=n.manager.findChannel(o);if(t.length){var r=t[0].data,a=t[0].id,i=n.id;e.Store.loadSharedFolder(i,a,r,function(){},!1)}}),r(!0)};var v={};i.ADD_OWNER=function(e,n,t,r){var o=t.msg.content;if(c(e,t))r(!0);else{if(!(o.teamChannel||o.href&&o.title&&o.channel))return console.log("Remove invalid notification"),void r(!0);var a=o.channel||o.teamChannel;o.password&&(o.pw=o.password,o.password=d(e,o.password)),v[a]?r(!0):(v[a]={type:n.type,hash:t.hash},r(!1))}},s.ADD_OWNER=function(e,n,t){var r=t.content.channel||t.content.teamChannel;v[r]&&delete v[r]},i.RM_OWNER=function(e,n,t,r){var o=t.msg.content;if(!o.channel&&!o.teamChannel)return console.log("Remove invalid notification"),void r(!0);var a=o.channel||o.teamChannel;if(o.teamChannel){var i=e.store.proxy.teams||{};Object.keys(i).some(function(e){if(i[e].channel===a)return i[e].owner=!1,!0})}v[a]&&o.pending?r(!1,v[a]):r(!1)};var y={};i.INVITE_TO_TEAM=function(e,n,r,o){var a=r.msg.content;if(c(e,r))o(!0);else{if(!a.team)return console.log("Remove invalid notification"),void o(!0);var i=y[a.team.channel];if(i)return console.log("removing old invitation"),o(!1,i),void(y[a.team.channel]={type:n.type,hash:r.hash});var s=t.find(e,["store","proxy","teams"])||{};Object.keys(s).some(function(e){return s[e].channel===a.team.channel})?o(!0):(y[a.team.channel]={type:n.type,hash:r.hash},o(!1))}},s.INVITE_TO_TEAM=function(e,n,r){var o=t.find(r,["content","team","channel"]);delete y[o]},i.KICKED_FROM_TEAM=function(e,n,t,r){var o=t.msg.content;if(!o.teamChannel)return console.log("Remove invalid notification"),void r(!0);y[o.teamChannel]&&o.pending?r(!0,y[o.teamChannel]):r(!1)},i.INVITE_TO_TEAM_ANSWER=function(e,n,r,o){var a=r.msg,i=a.content;if(!i.teamChannel)return console.log("Remove invalid notification"),void o(!0);var s,c,u=t.find(e,["store","proxy","teams"])||{};if(Object.keys(u).some(function(e){var n=u[e];if(n.channel===i.teamChannel)return s=e,c=n,!0}),s){if(i.team=c,!i.answer)try{e.store.modules.team.removeFromTeam(s,a.author,!0)}catch(e){console.error(e)}var f=i.user||i;n.sendMessage({type:"INVITE_TO_TEAM_ANSWERED",content:{user:f,team:c,answer:i.answer}},function(){}),o(!0)}else o(!0)},i.TEAM_EDIT_RIGHTS=function(e,n,r,o){var a=r.msg.content;if(!a.teamData)return console.log("Remove invalid notification"),void o(!0);var i,s=t.find(e,["store","proxy","teams"])||{};if(Object.keys(s).some(function(e){if(s[e].channel===a.teamData.channel)return i=e,!0}),i)try{e.store.modules.team.changeMyRights(i,a.state,a.teamData,function(e){e||console.error("Can't update team rights"),o(!0)})}catch(e){console.error(e)}else o(!0)},i.OWNED_PAD_REMOVED=function(e,n,t,r){var o=t.msg.content;if(!o.channel)return console.log("Remove invalid notification"),void r(!0);var a=o.channel;e.store.manager.findChannel(a).forEach(function(n){var t=e.store.manager.findFile(n.id);e.store.manager.delete({paths:t},function(){e.updateDrive()})}),r(!0)},i.MOVE_TODO=function(e,n,t,r){var o=e.store.proxy.curvePublic;t.msg.author===o?r():r(!0)},i.SAFE_LINKS_DEFAULT=function(e,n,t,r){var o=e.store.proxy.curvePublic;t.msg.author===o?r():r(!0)};var m={};i.FORM_RESPONSE=function(e,n,t,r){var o,a,i=t.msg,s=t.hash,c=i.content,u=c.channel;if(u)if(function(e,n){return(e.store.proxy.mutedChannels||[]).includes(n)}(e,u))r(!0);else if(e.Store.getAllStores().some(function(e){return e.manager.findChannel(u).some(function(e){if(e.data&&(!a||e.data.href))return a=e.data.href||e.data.roHref,o=e.data.filename||e.data.title,!!e.data.href||void 0})}),a){c.href=a,c.title=o;var f=m[u],l=f?f.data:void 0;m[u]={data:{type:n.type,hash:s}},r(!1,l)}else r(!0);else r(!0)},s.FORM_RESPONSE=function(e,n,t,r){var o=t.content.channel,a=m[o];a&&a.data&&a.data.hash===r&&delete m[o]};var g={};i.COMMENT_REPLY=function(e,n,r,o){var a=r.msg,i=r.hash,s=a.content;if(t.find(e.store.proxy,["settings","pad","disableNotif"]))o(!0);else{var c,u,f=s.channel;if(f)if(e.Store.getAllStores().some(function(e){return e.manager.findChannel(f).some(function(e){if(e.data&&(!u||e.data.href))return u=e.data.href||e.data.roHref,c=e.data.filename||e.data.title,!!e.data.href||void 0})}),u){s.href=u,s.title=c;var l=g[f],d=l?l.data:void 0;g[f]={data:{type:n.type,hash:i}},o(!1,d)}else o(!0);else o(!0)}},s.COMMENT_REPLY=function(e,n,t,r){var o=t.content.channel,a=g[o];a&&a.data&&a.data.hash===r&&delete g[o]};var E,b,A={};i.MENTION=function(e,n,t,r){var o=t.msg,a=t.hash,i=o.content;if(c(e,t))r(!0);else{var s=i.channel;if(s){var u,f;e.Store.getAllStores().some(function(e){return e.manager.findChannel(s).some(function(e){if(e.data&&(!f||e.data.href))return f=e.data.href||e.data.roHref,u=e.data.filename||e.data.title,!!e.data.href||void 0})}),i.href=f,i.title=u;var l=A[s],d=l?l.data:void 0;A[s]={data:{type:n.type,hash:a}},r(!1,d)}else r(!0)}},s.MENTION=function(e,n,t,r){var o=t.content.channel,a=A[o];a&&a.data&&a.data.hash===r&&delete A[o]},i.BROADCAST_MAINTENANCE=function(e,n,t,r){var o=t.msg.uid;e.Store.onMaintenanceUpdate(o),r(!0)},i.BROADCAST_SURVEY=function(e,n,t,r){var o=t.msg,a=o.content,i=o.uid,s=E;E={type:n.type,hash:t.hash},e.Store.onSurveyUpdate(i),r(!a.url,s)},i.BROADCAST_CUSTOM=function(e,n,t,r){var o=t.msg.uid,a=b;b={uid:o,type:n.type,hash:t.hash},r(!1,a)},i.BROADCAST_DELETE=function(e,n,t,r){var o=t.msg.content.uid;if(b&&b.uid===o)return r(!0,b),void(b=void 0);r(!0)};var O,w,D={};return i.SF_DELETED=function(e,n,t,r){var o=t.msg.content,a=o.team,i=o.sfId;if(D[i])r(!0);else if(D[i]=1,a){var s=e.store.proxy.teams[a];s?(o.teamName=s.metadata&&s.metadata.name,r(!1)):r(!1)}else r(!1)},s.SF_DELETED=function(e,n,t){var r=t.content.sfId;delete D[r]},i.NEW_TICKET=function(e,n,r,o){var a=r.msg.content;a.time||(a.time=r.time);var i=t.find(e,["store","modules","support"]);a.isAdmin?i.addUserTicket(a,o):i.addAdminTicket(a,o)},i.NOTIF_TICKET=function(e,n,r,o){var a=r.msg.content;a.time||(a.time=r.time);var i=t.find(e,["store","modules","support"]);if(a.isAdmin)return t.find(e,["store","proxy","support",a.channel])?(i.updateUserTicket(a),O?void o(!1,O):(O={channel:a.channel,type:n.type,hash:r.hash},void o(!1))):void o(!0);i.checkAdminTicket(a,s=>{s?(i.updateAdminTicket(a),t.find(e.store.proxy,["settings","general","disableSupportNotif"])?o(!0):w?o(!1,w):(w={channel:a.channel,type:n.type,hash:r.hash},o(!1))):o(!0)})},s.NOTIF_TICKET=function(e,n,t){var r=t.content.channel;O&&O.channel===r&&(O=void 0),w&&w.channel===r&&(w=void 0)},i.ADD_MODERATOR=function(e,n,r,o){var a=r.msg.content;t.find(e,["store","modules","support"]).updateAdminKey(a,o)},i.MODERATOR_NEW_KEY=function(e,n,r,o){var a=r.msg.content;t.find(e,["store","modules","support"]).updateAdminKey(a,function(){o(!0)})},{add:function(e,n,r,o){if(r.msg){var a=t.find(e,["store","proxy","curvePublic"]),s=t.find(r,["msg","content","user","curvePublic"])||t.find(r,["msg","content","curvePublic"]);if(s&&r.msg.author!==s&&r.msg.author!==a)return console.error("blocked"),void o(null,null,!0);var c=r.msg.type;if(i[c])try{i[c](e,n,r,o)}catch(e){console.error(e),o()}else o()}else o(null,null,!0)},remove:function(e,n,t,r){if(t){var o=t.type;if(s[o])try{s[o](e,n,t,r)}catch(e){console.error(e)}}}}})(An(),te(),X(),M(),hn())),Rn),D(),M()),kn}function Kn(){if(Ln)return Fn;Ln=1;return Fn=((e,n,t,r,o,a,i,s,c)=>{let u={};let f=function(f,l,d,h){var p=f.version||0;s(function(){}).nThen(function(){var n,t,r,o,a;p<2&&(n="cryptpad.userlist-drawer",t="cryptpad.hide_poll_text",r="cryptpad.indentUnit",o="cryptpad.indentWithTabs",a=f.settings=f.settings||{},void 0!==f[r]&&(a.codemirror=a.codemirror||{},a.codemirror.indentUnit=f[r],delete f[r]),void 0!==f[o]&&(a.codemirror=a.codemirror||{},a.codemirror.indentWithTabs=f[o],delete f[o]),void 0!==f[n]&&(a.toolbar=a.toolbar||{},a.toolbar["userlist-drawer"]=f[n],delete f[n]),void 0!==f[t]&&(a.poll=a.poll||{},a.poll["hide-text"]=f[t],delete f[t]),e.send("Migrate-2",!0),f.version=p=2)}).nThen(function(){p<3&&(!function(){if(localStorage.CRYPTPAD_LANG){var e=localStorage.CRYPTPAD_LANG;f.settings.language=e}}(),e.send("Migrate-3",!0),f.version=p=3)}).nThen(function(){var n;p<4&&(n=f.settings=f.settings||{},void 0!==f.allowUserFeedback&&(n.general=n.general||{},n.general.allowUserFeedback=f.allowUserFeedback,delete f.allowUserFeedback),e.send("Migrate-4",!0),f.version=p=4)}).nThen(function(){p<5&&(!function(){var e=f.drive&&f.drive.filesData;if(e)for(var n in e)"number"!=typeof e[n].ctime&&(e[n].ctime=+new Date(e[n].ctime)),"number"!=typeof e[n].atime&&(e[n].atime=+new Date(e[n].atime))}(),e.send("Migrate-5",!0),f.version=p=5)}).nThen(function(t){var r,o,a,i,c;p<6&&(a=f.drive.filesData||{},i=s(function(){}),c=Object.keys(a).length,Object.keys(a).forEach(function(e,t){i=i.nThen(function(i){setTimeout(i(function(){if(r=a[e],o=n.parsePadUrl(r.href),r.href&&!r.channel){var i=n.getSecrets(o.type,o.hash,r.password);r.channel=i.channel,d(6,Math.round(100*t/c)),console.log("Adding missing channel in filesData ",r.channel)}}))})}),i.nThen(t(function(){e.send("Migrate-6",!0),f.version=p=6})))}).nThen(function(t){var r,o,a,i,c;p<7&&(a=f.drive.filesData,i=s(function(){}),c=Object.keys(a).length,Object.keys(a).forEach(function(e,t){i=i.nThen(function(i){setTimeout(i(function(){if((r=a[e]).href)if(-1!==r.href.indexOf("#"))if("pad"===(o=n.parsePadUrl(r.href)).hashData.type){if("view"===o.hashData.mode)r.roHref=r.href,delete r.href,console.log("Move href to roHref in filesData ",r.roHref);else{var i=n.getSecrets(o.type,o.hash,r.password),s=n.getViewHashFromKeys(i);s&&(r.roHref="/"+o.type+"/#"+s,console.log("Adding missing roHref in filesData ",r.href))}d(6,Math.round(100*t/c))}else d(7,Math.round(100*t/c));else d(7,Math.round(100*t/c));else d(7,Math.round(100*t/c))}))})}),i.nThen(t(function(){e.send("Migrate-7",!0),f.version=p=7})))}).nThen(function(){p<8&&(f.FS_hashes=t.deduplicateString(f.FS_hashes||[]),e.send("Migrate-8",!0),f.version=p=8)}).nThen(function(){p<9&&(!function(){var e=h.network,n={},t={store:h},o=r.createData(f),i=function(e){var t=n[e];if(t){try{t.wc.leave()}catch(e){}delete n[e]}};e.on("message",function(r,s){try{!function(r,s){if(s===e.historyKeeper){var c=JSON.parse(r);if(!c.validateKey&&!c.owners||!c.channel){if(c.channel&&n[c.channel]){if(c.error&&"EINVAL"===c.error){var u=["GET_HISTORY",c.channel,{}];return void e.sendto(e.historyKeeper,JSON.stringify(u)).then(function(){},function(){})}if(c.state&&1===c.state){o.channel=c.channel;var f=["UPDATE",o.curvePublic,+new Date,o],l=n[c.channel].encrypt(JSON.stringify(f));return n[c.channel].wc.bcast(l).then(function(){},function(e){console.error("Can't migrate this friend",n[c.channel].friend,e)}),void i(c.channel)}}else if(c.channel)return;var d=c[3];if(d&&n[d]){var h=n[d],p=h.decrypt(c[4]),v=JSON.parse(p);if("UPDATE"===v[0]){if(v[1]===o.curvePublic)return;var y=v[3];if(!y.notifications)return;h.friend.notifications=y.notifications,o.channel=d,a.sendTo(t,"UPDATE_DATA",o,{channel:y.notifications,curvePublic:y.curvePublic},function(e){e&&e.error?console.error(e):console.log("friend migrated",h.friend)}),i(d)}}}}}(r,s)}catch(e){console.error(e)}});var s=f.friends||{};Object.keys(s).forEach(function(t){if(44===t.length){var r=s[t];r.notifications||e.join(r.channel).then(function(t){var o=c.Curve.deriveKeys(r.curvePublic,f.curvePrivate),a=c.Curve.createEncryptor(o);n[r.channel]={wc:t,friend:r,decrypt:a.decrypt,encrypt:a.encrypt};var i={lastKnownHash:r.lastKnownHash},s=["GET_HISTORY",r.channel,i];e.sendto(e.historyKeeper,JSON.stringify(s)).then(function(){},function(e){console.error("Can't migrate this friend",r,e)})},function(e){console.error("Can't migrate this friend",r,e)})}})}(),e.send("Migrate-9",!0),f.version=p=9)}).nThen(function(t){p<10&&function(){var i=h.proxy.todo;if(i){var c,l=t(function(){e.send("Migrate-10",!0),f.version=p=10}),d={network:h.network,initialState:"{}",metadata:{owners:h.proxy.edPublic?[h.proxy.edPublic]:[]}};s(function(e){o.get(i,e(function(n,t){if(n||!t)return e.abort(),void l();try{c=JSON.parse(t)}catch(e){}}),d)}).nThen(function(e){if(!c||"object"!=typeof c)return e.abort(),void l();var t={content:{data:{1:{id:"1",color:"color6",item:[],title:u.kanban_todo},2:{id:"2",color:"color3",item:[],title:u.kanban_working},3:{id:"3",color:"color5",item:[],title:u.kanban_done}},items:{},list:[1,2,3]},metadata:{title:u.type.todo,defaultTitle:u.type.todo,type:"kanban"}},s=4,p=!1;if((c.order||[]).forEach(function(e){var n=c.data[e];if(n&&n.task){p=!0;var r=n.state?"3":"1";t.content.data[r].item.push(s),t.content.items[s]={id:s,title:n.task},s++}}),!p)return e.abort(),void l();var v=n.createRandomHash("kanban"),y=n.getSecrets("kanban",v),m=n.getSecrets("todo",i);o.put(v,JSON.stringify(t),e(function(t){if(t)return e.abort(),void l();h.rpc&&(h.rpc.pin([y.channel],function(){}),h.rpc.unpin([m.channel],function(){}));var o=n.hashToHref(v,"kanban");h.manager.addPad(["root"],{title:u.type.todo,owners:d.metadata.owners,channel:y.channel,href:o,roHref:n.hashToHref(n.getViewHashFromKeys(y),"kanban"),atime:+new Date,ctime:+new Date},e(function(e){if(e)console.error(e);else{delete h.proxy.todo;var n=r.createData(f),t={store:h};a.sendTo(t,"MOVE_TODO",{user:n,href:o},{channel:n.notifications,curvePublic:n.curvePublic},function(e){e&&e.error&&console.error(e)})}}))}),d)}).nThen(function(){l()})}}()}).nThen(function(n){if(!(p>=11)){var o=function(){e.send("Migrate-11",!0),f.version=p=11};if(void 0===t.find(f,["settings","security","unsafeLinks"])){var i={store:h},s=r.createData(f);s.curvePublic?a.sendTo(i,"SAFE_LINKS_DEFAULT",{user:s},{channel:s.notifications,curvePublic:s.curvePublic},n(function(e){e&&e.error?console.error(e):o()})):o()}else o()}}).nThen(function(){i.whenRealtimeSyncs(h.realtime,t.mkAsync(t.bake(l)))})};return f.setCustomize=e=>{u=e.Messages},f})(Oe(),te(),X(),An(),xn(),jn(),je(),qe(),M()),Fn}var Un,Bn,Vn=o(be);var Yn,Gn,Jn,qn,Wn=Bn?Un:(Bn=1,Yn=xn(),Gn=Ue(),te(),Jn=je(),qn={anonDriveIntoUser:function(e,n,t){n&&e.loggedIn||"function"!=typeof t?Yn.get(n,function(r,o){var a;if(r)console.error("Cannot migrate recent pads",r);else if(o){try{a=JSON.parse(o)}catch(e){return"function"==typeof t&&t(),void console.error("Cannot parsed recent pads",e)}if(a){var i=e.proxy,s=Gn.init(a.drive,{readOnly:!1,loggedIn:!0,outer:!0}),c=function(){s.fixFiles(!0);var r=e.manager;s.getFiles([s.FILES_DATA]).forEach(function(e){var n=s.getFileData(e),t=n.channel,o=r.findChannel(t);if(0===o.length)n&&r.addPad(null,n,function(e){e&&console.error("Cannot import file:",n,e)});else{if(!n.href)return;o.forEach(function(e){e.data&&!e.data.href&&e.userObject.setHref(t,null,n.href)})}}),i.FS_hashes&&Array.isArray(i.FS_hashes)||(i.FS_hashes=[]),-1===i.FS_hashes.indexOf(n)&&i.FS_hashes.push(n),"function"==typeof t&&Jn.whenRealtimeSyncs(e.realtime,t)};s&&"function"==typeof s.migrate?s.migrate(c):(console.log("oldFo.migrate is not a function"),c())}else"function"==typeof t&&t()}else"function"==typeof t&&t()}):t()}},Un=qn);const zn=ie.mkEvent(!0),Qn=ie.mkEvent(!0),Xn=ie.mkEvent(),Zn=ie.mkEvent(),$n=(e,n)=>{var t,r;const o=e.store,a=e.Store;let i;if(n){const e=a.getStore(n);i=null===(r=null==e?void 0:e.proxy)||void 0===r?void 0:r.drive}else i=null===(t=o.drive)||void 0===t?void 0:t.proxy;return i},et={init:e=>{var n;const{broadcast:t,store:r,Store:o,account:a}=e,i=r.drive||(r.drive={});let s=null===(n=r.proxy)||void 0===n?void 0:n.drive;if((null==s?void 0:s.hash)||ae.createRandomHash("drive"),!s.hash)return i.proxy=s,a.onAccountCacheReady(()=>{zn.fire()}),a.onAccountReady(()=>{Qn.fire()}),{channel:"",onDriveCacheReady:zn.reg,onDriveReady:Qn.reg,onDisconnect:Xn.reg,onReconnect:Zn.reg};throw new Error("NOT IMPLEMENTED")},initAPI:e=>{const{broadcast:n,store:t,Store:r,account:o}=e,a={store:t,Store:r};return{exists:(e,n,r)=>{r({state:Boolean(t.proxy)})},get:(e,n,t)=>{let r=$n(a,n.teamId);t(r?{drive:r}:{error:"ENOTFOUND"})},set:(e,n,t)=>{let o=$n(a,n.teamId);var i,s;o?(i=o,s=n.value,Object.keys(i).forEach(e=>{delete i[e]}),Object.keys(s).forEach(e=>{i[e]=ie.clone(s[e])}),r.onSync(n.teamId,t)):t({error:"ENOTFOUND"})},migrateAnon:(e,n,r)=>{Wn.anonDriveIntoUser(t,n.anonHash,r)}}}};var nt=o(Object.freeze({__proto__:null,Drive:et})),tt=D(),rt=r(qe()),ot=r(bn()),at=We();const it=ie.mkEvent(!0),st=ie.mkEvent(!0),ct=(e,n,t,r)=>{const o=ie.once(ie.mkAsync(r)),{store:a,Store:i}=e;!a.offline&&a.anon_rpc?t.channel?32===t.channel.length&&ae.isValidChannel(t.channel)?a.anon_rpc.send("GET_METADATA",t.channel,(e,n)=>{if(e)return void o({error:e});const r=n&&n[0]||{};o(r),r.rejected||i.getAllStores().forEach(e=>{const n=e.manager.findChannel(t.channel,!0);let o=!1;(n.forEach(e=>{ot(e.data.owners)!==ot(r.owners)&&(o=!0),e.data.owners=r.owners,e.data.atime=+new Date,r.expire&&(e.data.expire=+r.expire)}),o)&&(e.sendEvent||a.sendDriveEvent)("DRIVE_CHANGE",{path:["drive",en.FILES_DATA]})})}):o({error:"EINVAL"}):o({error:"ENOTFOUND"}):o({error:"OFFLINE"})},ut=(e,n,t)=>{if(t.versionHash)return((e,n,t)=>{let r;const{Store:o,store:a,postMessage:i}=e,s=t.channel,c=t.versionHash,u=ae.createChannelId();rt(t=>{ct(e,0,{channel:s},t(e=>{if(e&&e.rejected)return i(n,"PAD_ERROR",{type:"ERESTRICTED"}),void t.abort();r=e.validateKey}))}).nThen(()=>{o.getHistoryRange(n,{cpCount:1,channel:s,lastKnownHash:c},e=>{var t,o;if(e&&e.error)return i(n,"PAD_ERROR",e.error);const f=e.messages||[];if((null===(t=f[f.length-1])||void 0===t?void 0:t.serverHash)!==c)return i(n,"PAD_ERROR",{type:"HASH_NOT_FOUND"});i(n,"PAD_CONNECT",{myID:u,id:s,members:[u]}),(e.messages||[]).forEach(e=>{i(n,"PAD_MESSAGE",{msg:e.msg,time:e.time,user:u.slice(0,16)})}),r&&(null===(o=null==a?void 0:a.messenger)||void 0===o||o.storeValidateKey(s,r)),i(n,"PAD_READY")})})})(e,n,t);const{channels:r,store:o,Store:a,myDeletions:i,postMessage:s}=e,c=t.channel;if(!ae.isValidChannel(c))return s(n,"PAD_ERROR","INVALID_CHAN");const u=void 0===r[c],f=r[c]||(r[c]={queue:[],data:{},clients:[],bcast:(e,n,t)=>{f.clients.forEach(function(r){r!==t&&s(r,e,n)})},history:[],pushHistory:(e,n)=>{if(n){let n;for(f.history.push("cp|"+e),n=f.history.length-101;n>0&&!/^cp\|/.test(f.history[n]);n--);return void(f.history=f.history.slice(n))}f.history.push(e)}});if(-1===f.clients.indexOf(n)&&f.clients.push(n),!u&&f.wc)return s(n,"PAD_CONNECT",{myID:f.wc.myID,id:f.wc.id,members:f.wc.members}),f.wc.members.forEach(e=>{s(n,"PAD_JOIN",e)}),f.history.forEach(e=>{s(n,"PAD_MESSAGE",{msg:tt.removeCp(e),user:f.wc.myID,validateKey:f.data.validateKey})}),void s(n,"PAD_READY");const l=n=>{const r=null==n?void 0:n.type;"EDELETED"===r&&i[c]&&(delete i[c],n.ownDeletion=!0),f.bcast("PAD_ERROR",n),"EDELETED"===r&&(null==de?void 0:le.clearChannel)&&le.clearChannel(c),["EDELETED","EEXPIRED","ERESTRICTED"].includes(r)&&e.leavePad(null,t,function(){})},d={Cache:o.neverCache?void 0:de,priority:1,onCacheStart:()=>{s(n,"PAD_CACHE")},onCacheReady:()=>{s(n,"PAD_CACHE_READY"),st.fire()},onReady:e=>{const t=e.metadata||{};f.data=t,(null==t?void 0:t.validateKey)&&o.messenger&&o.messenger.storeValidateKey(c,t.validateKey),s(n,"PAD_READY",e.noCache)},onMessage:function(e,n,t,r,o){f.lastHash=o,f.pushHistory(e,r),f.bcast("PAD_MESSAGE",{user:n,msg:e,validateKey:t})},onJoin:function(e){f.bcast("PAD_JOIN",e)},onLeave:function(e){f.bcast("PAD_LEAVE",e)},onError:l,onChannelError:l,onRejected:a.onRejected,onConnectionChange:e=>{e.state||f.bcast("PAD_DISCONNECT")},onMetadataUpdate:e=>{f.data=e||{},a.getAllStores().forEach(n=>{n.manager.findChannel(c,!0).forEach(n=>{n.data.owners=e.owners,n.data.atime=+new Date,e.expire&&(n.data.expire=+e.expire)});(n.sendEvent||o.sendDriveEvent)("DRIVE_CHANGE",{path:["drive",en.FILES_DATA]})}),f.bcast("PAD_METADATA",e)},crypto:{encrypt:function(e){return e},decrypt:function(e){return e}},noChainPad:!0,channel:c,metadata:t.metadata,network:o.network||o.networkPromise,websocketURL:U.getWebsocketURL(),onInit:function(){it.fire()},onConnect:(e,t)=>{f.sendMessage=(n,r,o)=>{t(n,t=>{t?o({error:t}):(f.lastHash=n.slice(0,64),f.pushHistory(tt.removeCp(n),/^cp\|/.test(n)),f.bcast("PAD_MESSAGE",{user:e.myID,msg:tt.removeCp(n),validateKey:f.data.validateKey},r),o())})},f.wc=e,f.queue.forEach(function(e){f.sendMessage(e.message,n)}),f.queue=[],f.bcast("PAD_CONNECT",{myID:e.myID,id:e.id,members:e.members})}};f.cpNf=tt.start(d)},ft=(e,n)=>{var t,r,o,a,i,s;const c=e.store;if(null===(r=null===(t=c.messenger)||void 0===t?void 0:t.leavePad)||void 0===r||r.call(t,n),null===(a=null===(o=c.onlyoffice)||void 0===o?void 0:o.leavePad)||void 0===a||a.call(o,n),Object.keys(c.modules).forEach(e=>{var t,r;null===(r=null===(t=c.modules[e])||void 0===t?void 0:t.leavePad)||void 0===r||r.call(t,n)}),!((e,n)=>{const{store:t}=e;if(!t)return!1;if(t.driveChannel===n)return!0;if(at.isSharedFolderChannel(n))return!0;if(ie.find(t,["proxy","teams"])){var r=ie.find(t,["proxy","teams"])||{};return Object.keys(r).some(e=>r[e].channel===n)}if(ie.find(t,["proxy","profile","href"])){let e=ie.find(t,["proxy","profile","href"]);return ae.hrefToHexChannelId(e)===n}})(e,n)){try{le.leaveChannel(n)}catch(e){console.error(e)}null===(s=null===(i=e.channels[n])||void 0===i?void 0:i.cpNf)||void 0===s||s.stop()}delete e.channels[n]},lt={init:e=>{const{broadcast:n,postMessage:t,store:r,Store:o}=e,a={channels:[],postMessage:t,store:r,Store:o,myDeletions:[],leavePad:(e,n,t)=>{}},i=(e,n,t)=>{const r=a.channels[n.channel];(null==r?void 0:r.cpNf)?(ft(a,n.channel),t()):t({error:"EINVAL"})};a.leavePad=i;return{join:(e,n,t)=>{ut(a,e,n)},destroy:(e,n,t)=>{((e,n,t,r)=>{const{store:o,Store:a,channels:i,myDeletions:s}=e;let c,u,f=t,l=!1;if(t&&"object"==typeof t&&({channel:f,force:l,teamId:c,reason:u}=t),f===o.driveChannel&&!l)return void r({error:"User drive removal blocked!"});const d=a.getStore(c);d?d.rpc?(i[f]&&(s[f]=!0),d.rpc.removeOwnedChannel(f,e=>{e&&delete s[f],r({error:e})},u)):r({error:"RPC_NOT_READY"}):r({error:"ENOTFOUND"})})(a,0,n,t)},clear:(e,n,t)=>{((e,n,t,r)=>{const{Store:o}=e,a=o.getStore(t&&t.teamId);a.rpc?a.rpc.clearOwnedChannel(t.channel,e=>{r({error:e})}):r({error:"RPC_NOT_READY"})})(a,0,n,t)},setMetadata:(e,n,t)=>{((e,n,t,r)=>{if(!t.channel)return void r({error:"ENOTFOUND"});if(!t.command)return void r({error:"EINVAL"});const{Store:o}=e,a=o.getStore(t.teamId);if(!a)return void r({error:"ENOTFOUND"});const i=t.channels;delete t.channels,a.rpc.setMetadata(t,(e,n)=>{e?r({error:e}):Array.isArray(n)&&n.length?r(n[0]):r({})}),Array.isArray(i)&&i.forEach(e=>{var n=ie.clone(t);n.channel=e,a.rpc.setMetadata(n,()=>{})})})(a,0,n,t)},getMetadata:(e,n,t)=>{ct(a,0,n,t)},sendMessage:(e,n,t)=>{((e,n,t,r)=>{var o=t.msg,a=e.channels[t.channel];if(a)a.wc?a.sendMessage(o,n,r):(a.queue.push(o),r())})(a,e,n,t)},onCorruptedCache:(e,n,t)=>{((e,n,t)=>{var r=e.channels[t];r&&r.cpNf&&(le.clearChannel(t),r.cpNf.resetCache&&r.cpNf.resetCache())})(a,0,n)},getLastHash:(e,n,t)=>{((e,n,t,r)=>{var o=e.channels[t.channel];o?o.lastHash?r({hash:o.lastHash}):r({error:"EINVAL"}):r({error:"ENOCHAN"})})(a,0,n,t)},leave:i,removeClient:e=>{Object.keys(a.channels).forEach(n=>{let t=a.channels[n].clients.indexOf(e);-1!==t&&a.channels[n].clients.splice(t,1),0===a.channels[n].clients.length&&ft(a,n)})},onJoined:it.reg,onCacheReady:st.reg,getChannels:()=>a.channels}}};var dt,ht,pt,vt,yt,mt,gt,Et,bt,At,Ot,wt,Dt,_t,Tt,St,Nt,It,xt,Ct,Rt,Pt,kt=o(Object.freeze({__proto__:null,Pad:lt}));function Mt(){if(ht)return dt;ht=1;return dt=((e,n,t,r)=>{const o={},a=(e,n,t)=>new Uint8Array(Array.prototype.slice.call(e,n,t)),i=(o,i,s)=>{const{store:c,Store:u}=o,{cryptoKeys:f,channel:l,edPublic:d,validateKey:h,deleteLines:p,cantEdit:v}=i,y=f.curvePrivate,m=r.Mailbox.createEncryptor(f);let g,E={network:c.network,channel:l,noChainPad:!0,validateKey:h,owners:[d],crypto:m,metadata:{deleteLines:!0}},b={};E.onError=e=>{s({error:e.type}),g?.stop()},E.onRejected=u.onRejected,E.onReady=function(){s({results:b}),g?.stop()},E.onMessage=(t,r,o,i,s,c,u)=>{let f=e.tryParse(t);if(!f)return;let d=f._uid||"000";if(f._proof){const t=((t,r,o)=>{const i=t.key,s=t.proof;try{let t=e.decodeBase64(s),c=a(t,0,n.box.nonceLength),u=a(t,n.box.nonceLength),f=n.box.open(u,c,e.decodeBase64(i),e.decodeBase64(o));return r===e.encodeUTF8(f)}catch(e){return console.error(e),!1}})(f._proof,l,y),r=f._proof.key;t&&b[r]&&b[r][d]&&delete b[r][d]}f._time=u&&u.time,p&&(f._hash=s),v&&b[c]&&b[c][d]||(b[c]=b[c]||{},b[c][d]={msg:f,hash:s,time:u&&u.time})},g=t.start(E)};return o.init=e=>{const{store:n,Store:t}=e,r={store:n,Store:t},o={getResponses:(e,n,t)=>i(r,n,t)};return o},o})(X(),h(),D(),M()),dt}function Ft(){if(vt)return pt;vt=1;return pt=((e,n,t)=>{const r={};let o={},a={};r.setCustomize=e=>{o=e.Messages,a=e.AppConfig};var i=function(e,n){n.degraded||n.clients.forEach(function(t){var r=e.clients[t];if(r){var o={id:r.id,cursor:r.cursor};n.sendMsg(JSON.stringify(o))}})},s=function(e,n,t){var r=n.members,o=a.degradedLimit||8;t.degraded=r.length-1>=o,e.emit("DEGRADED",{degraded:t.degraded},t.clients)},c=function(e,n,r,o){var a=n.channel,c=n.secret;c.keys.cryptKey&&(c.keys.cryptKey=function(e){for(var n=Object.keys(e).length,t=new Uint8Array(n),r=0;r{const f={};let l={};f.setCustomize=e=>{l=e.ApiConfig};var d=i.Nacl,h=function(e,n,t,r){let o=Object.keys(e.clients).filter(t=>Boolean(e.clients[t].admin)===n);o.length&&e.emit(t,{channel:r},[o])},p=function(n,t,r,o){var a=e.mkAsync(o);if(t&&!n.adminRdyEvt)return void a("EFORBIDDEN");let i=l.httpUnsafeOrigin;e.fetchApi(i,"config",!0,o=>{n.moderatorKeys=o.moderatorKeys,n.adminKeys=o.adminKeys;var i=o.supportMailboxKey;if(i){if(!t||e.find(n.store.proxy,["mailboxes","supportteam","keys","curvePublic"])===i)return t?n.adminRdyEvt.reg(()=>{a(null,{supportKey:i,myCurve:r.adminCurvePrivate||e.find(n.store.proxy,["mailboxes","supportteam","keys","curvePrivate"]),theirPublic:r.curvePublic,notifKey:r.curvePublic})}):void a(null,{supportKey:i,myCurve:n.store.proxy.curvePrivate,theirPublic:r.curvePublic||i,notifKey:i});a("EFORBIDDEN")}else a("E_NOT_INIT")})},v=function(n,t,r,o){var s,c,f=e.once(e.mkAsync(o));a(e=>{p(n,r,t,e((n,t)=>{if(n)return e.abort(),void f({error:n});s=t.theirPublic,c=t.myCurve}))}).nThen(()=>{var r,o=i.Curve.deriveKeys(s,c),a=i.Curve.createEncryptor(o),l={network:n.store.network,channel:t.channel,noChainPad:!0,crypto:a,owners:[]},d=[];f=e.both(function(){r&&"function"==typeof r.stop&&r.stop()},f),l.onMessage=function(e,n,t,r,o,a,i){var s=i&&i.time;try{e=JSON.parse(e)}catch(e){return void console.error(e)}e.time=s,a&&(e.author=a),d.push(e)},l.onError=f,l.onChannelError=f,l.onReady=function(){f(null,d)},r=u.start(l)})},y=function(t,r,o,s){var c=e.find(t,["store","mailbox"]),u=e.find(t,["store","anon_rpc"]);if(c)if(u){var f,l,d,h=r.channel,v=r.title,y=r.ticket,m=+new Date;a(e=>{p(t,o,r,e((n,t)=>{if(n)return e.abort(),void s({error:n});f=t.supportKey,l=t.theirPublic,d=t.myCurve}))}).nThen(e=>{var n=i.Curve.deriveKeys(l,d),t=i.Curve.createEncryptor(n),r=JSON.stringify(y),o=t.encrypt(r);u.send("WRITE_PRIVATE_MESSAGE",[h,o],e((n,t)=>{if(n)return e.abort(),void s({error:n});m=t&&t[0]}))}).nThen(e=>{if(o){var n=t.adminDoc.proxy.tickets.active;if(n[h])return e.abort(),void s({error:"EEXISTS"});n[h]={title:y.title,restored:y.legacy,premium:!1,time:m,author:r.name,supportKey:f,lastAdmin:!0,authorKey:r.curvePublic,notifications:r.notifications}}}).nThen(e=>{o||(t.supportData[h]={time:+new Date,title:v,curvePublic:f},t.Store.onSync(null,e()))}).nThen(a=>{var i=o?r.notifications:n.getChannelIdFromKey(f);c.sendTo("NEW_TICKET",{title:v,channel:h,time:m,isAdmin:o,supportKey:f,premium:o?"":e.find(t,["store","account","plan"]),user:e.find(r.ticket,["sender","curvePublic"])?void 0:{supportTeam:!0}},{channel:i,curvePublic:l},a(e=>{console.error(e),e&&e.error&&(a.abort(),delete t.supportData[h]),s(e)}))}).nThen(()=>{var t=o?r.notifications:n.getChannelIdFromKey(f);c.sendTo("NOTIF_TICKET",{title:v,channel:h,time:m,isAdmin:o,isNewTicket:!0,user:e.find(r.ticket,["sender","curvePublic"])?void 0:{supportTeam:!0}},{channel:t,curvePublic:l},()=>{})})}else s({error:"anonymous rpc session not ready"});else s({error:"E_NOT_READY"})},m=function(t,r,o,s){var c,u,f,l,d=e.find(t,["store","mailbox"]),h=e.find(t,["store","anon_rpc"]);d?h?r?.ticket?a(e=>{p(t,o,r,e((n,t)=>{if(n)return e.abort(),void s(n);c=t.theirPublic,u=t.myCurve,f=t.notifKey}))}).nThen(e=>{var n=i.Curve.deriveKeys(c,u),t=i.Curve.createEncryptor(n),o=JSON.stringify(r.ticket),a=t.encrypt(o);h.send("WRITE_PRIVATE_MESSAGE",[r.channel,a],e((n,t)=>{if(n)return e.abort(),void s(n);l=t&&t[0],s(void 0,l)}))}).nThen(()=>{var t=o?r.notifChannel:n.getChannelIdFromKey(f);t&&d.sendTo("NOTIF_TICKET",{isAdmin:o,title:r.ticket.title,isClose:r.ticket.close,channel:r.channel,time:l,user:e.find(r.ticket,["sender","curvePublic"])?void 0:{supportTeam:!0}},{channel:t,curvePublic:f},()=>{})}):s("E_NO_DATA"):s("anonymous rpc session not ready"):s("E_NOT_READY")},g=function(t,r,o){var a=n.getSecrets("support",r),u={data:{},channel:a.channel,crypto:i.createEncryptor(a.keys),userName:"support",ChainPad:c,classic:!0,network:t.store.network,metadata:{validateKey:a.keys.validateKey||void 0}},f=t.adminDoc=s.create(u);f.proxy.on("ready",function(){var r=f.proxy;if(r.tickets=r.tickets||{},r.tickets.active=r.tickets.active||{},r.tickets.closed=r.tickets.closed||{},r.tickets.pending=r.tickets.pending||{},t.adminRdyEvt.fire(),o(),!t.supportRpc)return;let a=function(n){if(!n.adminDoc||!n.supportRpc)return;let t=n.adminDoc.metadata&&n.adminDoc.metadata.channel,r=n.adminDoc.proxy.tickets,o=[t,...Object.keys(r.active),...Object.keys(r.pending),...Object.keys(r.closed)];return e.deduplicateString(o).sort()}(t),i=n.hashChannelList(a);t.supportRpc.getServerHash(function(e,n){e?console.warn(e):n!==i&&t.supportRpc.reset(a,function(e){e&&console.warn(e)})})}),f.proxy.on("change",["recorded"],function(){h(t,!0,"RECORDED_CHANGE","")}),f.proxy.on("remove",["recorded"],function(){h(t,!0,"RECORDED_CHANGE","")})},E=function(t,o,i){let s=i(),c=t.store.proxy,u=e.find(c,["mailboxes","supportteam","keys","curvePublic"]),f=e.find(c,["mailboxes","supportteam","keys","curvePrivate"]);o||(t.adminRdyEvt=e.mkEvent(!0)),a(e=>{p(t,!1,{},e((n,r)=>{if(setTimeout(s),n)e.abort();else if(r.theirPublic!==u){try{delete c.mailboxes.supportteam,t.store.mailbox.close("supportteam")}catch(e){}return delete t.adminRdyEvt,void e.abort()}}))}).nThen(n=>{!function(n,t){let o,a,i=e.mkAsync(t),s=n.store.proxy,c=e.find(s,["mailboxes","supportteam","keys","curvePrivate"]);if(c){try{let n=d.sign.keyPair.fromSeed(e.decodeBase64(c));o=e.encodeBase64(n.secretKey),a=e.encodeBase64(n.publicKey)}catch(e){return void i(e)}r.create(n.store.network,{edPublic:a,edPrivate:o},(e,t)=>{e?i(e):(console.log("Support RPC ready, public key is ",a),n.supportRpc=t,i())})}else i("EFORBIDDEN")}(t,n(e=>{e&&console.error("Support RPC not ready",e)}))}).nThen(e=>{let r=f.slice(0,24),o=n.getEditHashFromKeys({version:2,type:"support",keys:{editKeyStr:r}});g(t,o,e())}).nThen(()=>{console.log("Support admin loaded")})};var b=function(n,t,r,o){let a=n.store.proxy,i=e.find(a,["mailboxes","supportadmin"]);i?n.store.mailbox.open("supportadmin",i,function(t){n.store.mailbox.close("supportadmin",function(){});let r=e.clone(t||{}),a=[];Object.keys(r).forEach(e=>{let t=r[e];if("CLOSE"===t.type)return void(a.includes(t.content.id)||a.push(t.content.id));let o=t.author,i=t.content&&t.content.title;((e,n,t)=>{let r=e.adminDoc.proxy;return["active","pending","closed"].some(e=>{let o=r.tickets[e];return Object.keys(o).some(e=>{let r=o[e];return r.authorKey===n&&r.title===t&&r.restored})})})(n,o,i)&&(a.includes(t.content.id)||a.push(t.content.id))}),Object.keys(r).forEach(e=>{let n=r[e];n.content&&a.includes(n.content.id)&&delete r[e]}),o(r)},!0,{dump:!0}):o({error:"ENOENT"})};const A={};let O=(n,t,r,o)=>{let a;try{let n=d.sign.keyPair.fromSeed(e.decodeBase64(r));a=e.encodeBase64(n.publicKey)}catch(e){return void o(e)}n.Store.adminRpc(null,{cmd:"ADMIN_DECREE",data:["SET_SUPPORT_KEYS",[t,a]]},o)},w=(e,n,t,r)=>{e.Store.adminRpc(null,{cmd:"GET_MODERATORS",data:{}},r)};return f.init=function(r,i,s){var c={};if(r.store&&r.store.modules&&r.store.modules.support)return r.store.modules.support;var u=r.store,f=u.proxy.support=u.proxy.support||{},g={moderatorKeys:l.moderatorKeys,adminKeys:l.adminKeys,supportData:f,store:r.store,Store:r.Store,emit:s,clients:{}};return e.find(u,["proxy","mailboxes","supportteam"])&&E(g,!1,i),c.ctx=g,c.removeClient=function(e){delete g.clients[e]},c.leavePad=function(){},c.addAdminTicket=function(n,r){!function(n,r,o){n.adminRdyEvt?n.adminRdyEvt.reg(()=>{let i;A[r.channel]=e.mkEvent(!0),a(e=>{p(n,!0,r,e((n,t)=>{if(n)return e.abort(),A[r.channel].fire(n),delete A[r.channel],void o(!0);i=t.supportKey}))}).nThen(()=>{var e=Math.floor(2e3*Math.random());setTimeout(()=>{var e=n.adminDoc.proxy;if(e.tickets.active[r.channel]||e.tickets.closed[r.channel]||e.tickets.pending[r.channel])return A[r.channel].fire(),delete A[r.channel],void o(!0);e.tickets.active[r.channel]={title:r.title,premium:r.premium,time:r.time,author:r.user&&r.user.displayName,supportKey:r.supportKey||i,authorKey:r.user&&r.user.curvePublic},t.whenRealtimeSyncs(n.adminDoc.realtime,function(){A[r.channel].fire(),delete A[r.channel],o(!0)}),h(n,!0,"NEW_TICKET",r.channel),n.supportRpc&&n.supportRpc.pin([r.channel],()=>{})},e)})}):o(!0)}(g,n,r)},c.updateAdminTicket=function(e){!function(e,n){e.adminRdyEvt&&e.adminRdyEvt.reg(()=>{var t=Math.floor(2e3*Math.random());setTimeout(()=>{var t=e.adminDoc.proxy;let r=t.tickets.active[n.channel]||t.tickets.pending[n.channel];r&&(n.time<=r.time||(n.isClose&&(t.tickets.closed[n.channel]=r,delete t.tickets.active[n.channel],delete t.tickets.pending[n.channel]),r.time=n.time,r.lastAdmin=!1,h(e,!0,"UPDATE_TICKET",n.channel)))},t)})}(g,e)},c.updateAdminKey=function(t,r){((t,r,o)=>{let i=r.supportKey,s=n.getBoxPublicFromSecret(i),c=t.store.proxy;const u=e.find(c,["mailboxes","supportteam","keys","curvePrivate"]),f=e.find(c,["mailboxes","supportteam","keys","curvePublic"]);p(t,!1,{},(n,r)=>{if(n)return void o(!0);if(s!==r.theirPublic)return void o(!0);if(u===i||f===s)return void o(!0);let c=e.find(t,["store","mailbox"]);try{t.adminDoc&&t.adminDoc.stop(),c&&c.close("supportteam"),t.supportRpc&&t.supportRpc.destroy(),t.adminRdyEvt=e.mkEvent(!0)}catch(e){console.error(e)}t.Store.addAdminMailbox(null,{version:2,priv:i},e=>{e&&e.error?o(!0):a(e=>{E(t,!0,e),t.adminRdyEvt.reg(()=>{h(t,!0,"UPDATE_RIGHTS"),o(!1)})})})})})(g,t,r)},c.checkAdminTicket=function(e,n){!function(e,n,t){e.adminRdyEvt?e.adminRdyEvt.reg(()=>{let r=e.adminDoc.proxy,o=r.tickets.active[n.channel]||r.tickets.pending[n.channel];if(o)return t(o);A[n.channel]&&A[n.channel].reg(e=>{if(e)return t(!1);t(!0)})}):t(!0)}(g,e,n)},c.addUserTicket=function(e,n){!function(e,n,t){if(!e.supportData)return void t(!0);let r=n.channel;e.supportData[r]={time:n.time,title:n.title,curvePublic:n.supportKey},e.Store.onSync(null,function(){t(!0)})}(g,e,n)},c.updateUserTicket=function(e){!function(e,n){if(h(e,!1,"UPDATE_TICKET",n.channel),n.isClose){let t=e.supportData[n.channel];if(!t)return;t.closed=!0}}(g,e)},c.execCommand=function(r,i,s){var c=i.cmd,u=i.data;"MAKE_TICKET"!==c?"GET_MY_TICKETS"!==c?"REPLY_TICKET"!==c?"CLOSE_TICKET"!==c?"DELETE_TICKET"!==c?"MAKE_TICKET_ADMIN"!==c?"LIST_TICKETS_ADMIN"!==c?"LOAD_TICKET_ADMIN"!==c?"REPLY_TICKET_ADMIN"!==c?"CLOSE_TICKET_ADMIN"!==c?"MOVE_TICKET_ADMIN"!==c?"GET_RECORDED"!==c?"SET_RECORDED"!==c?"USE_RECORDED"!==c?"SEARCH_ADMIN"!==c?"FILTER_TAGS_ADMIN"!==c?"SET_TAGS_ADMIN"!==c?"GET_LEGACY"!==c?"DUMP_LEGACY"!==c?"CLEAR_LEGACY"!==c?"RESTORE_LEGACY"!==c?"GET_PRIVATE_KEY"!==c?"DISABLE_SUPPORT"!==c?"ROTATE_KEYS"!==c?"ADD_MODERATOR"!==c?s({error:"NOT_SUPPORTED"}):function(n,t,r,o){let a=n.store.proxy;var i=e.find(n,["store","mailbox"]);let s=e.find(a,["mailboxes","supportteam","keys","curvePublic"]),c=e.find(a,["mailboxes","supportteam","keys","curvePrivate"]),u=e.find(a,["mailboxes","supportteam","lastKnownHash"]),f=a.edPublic;p(n,!1,{},(e,r)=>{e?o({error:e}):r.theirPublic===s&&n.moderatorKeys.includes(f)?i.sendTo("ADD_MODERATOR",{supportKey:c,lastKnownHash:u},{channel:t.mailbox,curvePublic:t.curvePublic},()=>{o()}):o({error:"EFORBIDDEN"})})}(g,u,0,s):function(t,r,i,s){let c,u=e.once(e.mkAsync(s)),f=t.store.proxy,l=f.edPublic;const h=d.box.keyPair(),v=e.encodeBase64(h.publicKey),y=e.encodeBase64(h.secretKey),m=e.find(f,["mailboxes","supportteam","keys","curvePrivate"]),g=e.find(f,["mailboxes","supportteam","keys","curvePublic"]);if(!y||!v)return void u({error:"INVALID_KEY"});let b;a(e=>{p(t,!1,{},e((n,t)=>{if("E_NOT_INIT"!==n)return n?(u({error:n}),void e.abort()):void(c=t.theirPublic)}))}).nThen(e=>{if(!t.adminKeys.includes(l))return e.abort(),void u({error:"EFORBIDDEN"})}).nThen(e=>{if(c)return t.moderatorKeys.includes(l)?g!==c?(e.abort(),void u({error:"EFORBIDDEN"})):void 0:(e.abort(),void u({error:"EINVAL"}))}).nThen(e=>{c&&t.adminRdyEvt.reg(()=>{let r=t.adminDoc.proxy;b=t.adminDoc.metadata&&t.adminDoc.metadata.channel;let a=y.slice(0,24),i=n.getEditHashFromKeys({version:2,type:"support",keys:{editKeyStr:a}}),s={network:t.store.network,initialState:"{}"};(r.oldKeys=r.oldKeys||{})[g]={curvePrivate:m,rotatedOn:+new Date,rotatedBy:l},o.put(i,JSON.stringify(r),e(n=>{if(n)return e.abort(),void u({error:n})}),s)})}).nThen(e=>{O(t,v,y,e(n=>{if(n&&n.error)return e.abort(),void u(n)}))}).nThen(()=>{if(!c)return;t.adminDoc&&t.adminDoc.stop();let n=e.find(t,["store","mailbox"]);n&&n.close("supportteam"),t.supportRpc&&t.supportRpc.destroy(),t.adminRdyEvt=e.mkEvent(!0)}).nThen(e=>{t.Store.addAdminMailbox(null,{version:2,priv:y},e(n=>{if(n&&n.error)return e.abort(),c?O(t,g,m,()=>{u(n)}):void u(n)}))}).nThen(n=>{if(!c)return;let r=e.find(t,["store","mailbox"]);w(t,0,0,n(e=>{if(e&&e.error)return void u({success:!0,noNotify:!0});let n=e&&e[0];Object.keys(n||{}).forEach(e=>{let t=n[e];r.sendTo("MODERATOR_NEW_KEY",{supportKey:y},{channel:t.mailbox,curvePublic:t.curvePublic},()=>{})})}))}).nThen(e=>{E(t,!0,e)}).nThen(e=>{b&&t.Store.adminRpc(null,{cmd:"ARCHIVE_DOCUMENT",data:{id:b,reason:"Deprecated support pad"}},e())}).nThen(()=>{u({success:!0})})}(g,0,0,s):function(n,t,r,o){let i,s=e.once(e.mkAsync(o)),c=n.store.proxy.edPublic;a(e=>{p(n,!1,{},e(n=>{if(n)return s({error:n}),void e.abort()}))}).nThen(e=>{if(!n.adminKeys.includes(c))return e.abort(),void s({error:"EFORBIDDEN"})}).nThen(e=>{n.Store.adminRpc(null,{cmd:"ARCHIVE_SUPPORT",data:{}},e(n=>{if(n&&n.error)return e.abort(),void s(n)}))}).nThen(e=>{n.Store.adminRpc(null,{cmd:"ADMIN_DECREE",data:["SET_SUPPORT_KEYS",["",""]]},e(function(n){if(n&&n.error)return e.abort(),void s(n)}))}).nThen(e=>{w(n,0,0,e(n=>{if(!n||n.error)return e.abort(),void s();i=n[0]||{}}))}).nThen(()=>{let e=a;Object.keys(i).forEach(t=>{e=e(e=>{n.Store.adminRpc(null,{cmd:"REMOVE_MODERATOR",data:t},e(e=>{e&&e.error&&console.error("Error removing moderator data",t,e.error)}))}).nThen}),e(()=>{s()})})}(g,0,0,s):function(n,t,r,o){let a=n.store.proxy,i=e.find(a,["mailboxes","supportteam","keys","curvePublic"]),s=e.find(a,["mailboxes","supportteam","keys","curvePrivate"]);p(n,!1,{},(e,n)=>{e?o({error:e}):(i&&n.theirPublic!==i&&(s=void 0),o({curvePrivate:s,curvePublic:n.theirPublic}))})}(g,0,0,s):function(t,r,o,a){let i=t.store.proxy,s=e.find(i,["mailboxes","supportadmin"]);if(!s)return void a({error:"ENOENT"});if(!t.adminRdyEvt)return void a({error:"EFORBIDDEN"});let c=r.messages,u=r.hashes,f=c[0],l=c[c.length-1];f?t.adminRdyEvt.reg(()=>{let r={name:e.find(f,["sender","name"]),notifications:e.find(f,["sender","notifications"]),curvePublic:e.find(f,["sender","curvePublic"]),channel:n.createChannelId(),title:f.title,time:l.time,ticket:{legacy:!0,title:f.title,sender:f.sender,messages:c}};y(t,r,!0,e=>{e&&e.error?a(e):(u.forEach(e=>{s.viewed.push(e)}),t.Store.onSync(null,function(){a({done:!0})}))})}):a({error:"EINVAL"})}(g,u,0,s):function(e,n,t,r){let o=e.store.proxy;e.store.mailbox.close("supportadmin",function(){delete o.mailboxes.supportadmin,e.Store.onSync(null,function(){r({done:!0})})})}(g,0,0,s):function(n,t,r,o){let a=n.store.proxy,i=e.find(a,["mailboxes","supportadmin"]);if(!i)return void o({error:"ENOENT"});let s=e.clone(i);s.lastKnownHash=void 0,s.viewed=[],n.store.mailbox.open("supportadmin",s,function(e){n.store.mailbox.close("supportadmin",function(){}),o(e)},!0,{dump:!0})}(g,0,0,s):b(g,0,0,s):((e,n,r,o)=>{e.adminRdyEvt?e.adminRdyEvt.reg(()=>{let r=e.adminDoc.proxy.tickets,a=n.channel;(r.active[a]||r.pending[a]||r.closed[a]).tags=n.tags||[],t.whenRealtimeSyncs(e.adminDoc.realtime,function(){let e=[];["active","pending","closed"].forEach(n=>{let t=r[n];Object.keys(t).forEach(n=>{(t[n].tags||[]).forEach(n=>{e.includes(n)||e.push(n)})})}),o({done:!0,allTags:e})})}):o({error:"EFORBIDDEN"})})(g,u,0,s):((e,n,t,r)=>{if(!e.adminRdyEvt)return void r({error:"EFORBIDDEN"});let o=n.tags||[];e.adminRdyEvt.reg(()=>{let n=e.adminDoc.proxy.tickets;if(!o.length)return void r({all:!0});let t=[];["active","pending","closed"].forEach(e=>{let r=n[e];Object.keys(r).forEach(e=>{(r[e].tags||[]).some(e=>o.includes(e))||t.push(e)})}),r({tickets:t})})})(g,u,0,s):((n,t,r,o)=>{if(!n.adminRdyEvt)return void o({error:"EFORBIDDEN"});let a=t.tags||[],i=(t.text||"").toLowerCase();n.adminRdyEvt.reg(()=>{let t=n.adminDoc.proxy.tickets,r={},s=(n,t,o)=>{let a=e.clone(t);a.category=o,r[n]=a};["active","pending","closed"].some(n=>{let o=t[n];return Object.keys(o).some(t=>{let c=o[t];if(a.length&&!(c.tags||[]).some(e=>a.includes(e)))return;let u=e.hexToBase64(t).slice(0,10);if(i===u)return r={},s(t,c,n),!0;(!i||c.title.toLowerCase().includes(i))&&s(t,c,n)})}),o({tickets:r})})})(g,u,0,s):function(e,n,t,r){if(!e.adminRdyEvt)return void r({error:"EFORBIDDEN"});let o=n.id;e.adminRdyEvt.reg(()=>{let n=e.adminDoc.proxy,t=(n.recorded=n.recorded||{})[o];t&&(t.count=(t.count||0)+1),r()})}(g,u,0,s):function(e,n,r,o){if(!e.adminRdyEvt)return void o({error:"EFORBIDDEN"});let a=n.id,i=n.content,s=Boolean(n.remove);e.adminRdyEvt.reg(()=>{let n=e.adminDoc.proxy,r=n.recorded=n.recorded||{};s?delete r[a]:r[a]={content:i,count:0},t.whenRealtimeSyncs(e.adminDoc.realtime,function(){o({done:!0})})})}(g,u,0,s):function(n,t,r,o){n.adminRdyEvt?n.adminRdyEvt.reg(()=>{let t=n.adminDoc.proxy,r=t.recorded=t.recorded||{};o({messages:e.clone(r)})}):o({error:"EFORBIDDEN"})}(g,0,0,s):function(e,n,r,o){if(!e.adminRdyEvt)return void o({error:"EFORBIDDEN"});let a=n.channel,i=n.from,s=n.to;e.adminRdyEvt.reg(()=>{let n=e.adminDoc.proxy,r=n.tickets[i],c=n.tickets[s];if(!i||!s)return void o({error:"EINVAL"});let u=r[a];u&&!c[a]?(c[a]=u,delete r[a],t.whenRealtimeSyncs(e.adminDoc.realtime,function(){o({moved:!0})})):o({error:"CANT_MOVE"})})}(g,u,0,s):function(e,n,r,o){if(!e.adminRdyEvt)return void o({error:"EFORBIDDEN"});let a=n.supportKey;e.adminRdyEvt.reg(()=>{let r=e.adminDoc.proxy;r.oldKeys&&r.oldKeys[a]&&(n.adminCurvePrivate=r.oldKeys[a].curvePrivate),m(e,n,!0,r=>{if(r)o({error:r});else{var a=e.adminDoc.proxy,i=a.tickets.active[n.channel]||a.tickets.pending[n.channel];i.time=+new Date,i.lastAdmin=!0,a.tickets.closed[n.channel]=i,delete a.tickets.active[n.channel],delete a.tickets.pending[n.channel],t.whenRealtimeSyncs(e.adminDoc.realtime,function(){o({closed:!0})})}})})}(g,u,0,s):function(e,n,t,r){if(!e.adminRdyEvt)return void r({error:"EFORBIDDEN"});let o=n.supportKey;e.adminRdyEvt.reg(()=>{let t=e.adminDoc.proxy;t.oldKeys&&t.oldKeys[o]&&(n.adminCurvePrivate=t.oldKeys[o].curvePrivate),m(e,n,!0,(t,o)=>{if(t)r({error:t});else{var a=e.adminDoc.proxy,i=a.tickets.active[n.channel]||a.tickets.pending[n.channel];i.time=o,i.lastAdmin=!0,r({sent:!0})}})})}(g,u,0,s):function(n,t,r,o){let a=t.supportKey;n.adminRdyEvt.reg(()=>{let r=n.adminDoc.proxy;r.oldKeys&&r.oldKeys[a]&&(t.adminCurvePrivate=r.oldKeys[a].curvePrivate),v(n,t,!0,function(r,a){if(r)return void o({error:r});var i=n.adminDoc.proxy;if(!Array.isArray(a)||!a.length)return void o(a);a.sort((e,n)=>e.time-n.time);let s=a[a.length-1],c=a.some(n=>{let r=e.find(n,["sender","curvePublic"]);if(t.curvePublic===r)return e.find(n,["sender","quota","plan"])});var u=i.tickets.active[t.channel];if(u){if(s.legacy&&(s=Array.isArray(s.messages)&&s.messages[s.messages.length-1]),u.time=s.time,u.premium=c,s.sender){const e=s.sender.edPublic;u.lastAdmin=e?n.moderatorKeys.includes(e):!s.sender.blockLocation}s.close&&(i.tickets.closed[t.channel]=u,delete i.tickets.active[t.channel],h(n,!0,"UPDATE_TICKET",t.channel))}o(a)})})}(g,u,0,s):function(n,t,r,o){n.adminRdyEvt?(n.clients[r]||(n.clients[r]={admin:!0}),n.adminRdyEvt.reg(()=>{var r=n.adminDoc.proxy;return"pending"===t.type?o(e.clone(r.tickets.pending)):"closed"===t.type?o(e.clone(r.tickets.closed)):void o(e.clone(r.tickets.active))})):o({error:"EFORBIDDEN"})}(g,u,r,s):function(e,n,t,r){e.adminRdyEvt?e.adminRdyEvt.reg(()=>{y(e,n,!0,r)}):r({error:"EFORBIDDEN"})}(g,u,0,s):function(e,n,t,r){let o=e.supportData,a=n.channel;o[a]&&o[a].closed?(delete o[a],r({deleted:!0})):r({error:"ENOTCLOSED"})}(g,u,0,s):function(e,n,t,r){m(e,n,!1,e=>{r(e?{error:e}:{closed:!0})})}(g,u,0,s):function(e,n,t,r){m(e,n,!1,e=>{r(e?{error:e}:{sent:!0})})}(g,u,0,s):function(n,t,r,o){var i=[],s=a;n.clients[r]||(n.clients[r]={admin:!1}),Object.keys(n.supportData).forEach(function(t){s=s(r=>{var o=e.clone(n.supportData[t]);v(n,{channel:t,curvePublic:o.curvePublic},!1,r((e,r)=>{if(e){if("EDELETED"===e.type)return void delete n.supportData[t];o.error=e}else o.messages=r,r.length&&r[r.length-1].close&&(n.supportData[t].closed=!0,o.closed=!0);o.id=t,i.push(o)}))}).nThen}),s(()=>{i.sort((e,n)=>e.closed&&n.closed?e.time-n.time:e.closed?1:n.closed?-1:e.time-n.time),o({tickets:i})})}(g,0,r,s):function(e,n,t,r){y(e,n,!1,r)}(g,u,0,s)},c},f})(X(),te(),je(),In(),xn(),qe(),M(),T(),x(),D()),yt}function Ht(){if(Et)return gt;Et=1;var e,n,t,r;return e=X(),n=M(),r=function(t,r,o,a){var i=r.channel,s=r.secret;s.keys.cryptKey&&(s.keys.cryptKey=function(e){for(var n=Object.keys(e).length,t=new Uint8Array(n),r=0;r{var o={id:t,msg:n.msg,uid:n.uid,user:n.user};"ISAVE"===o.msg&&(e.pending[n.uid]=!0),a.sendMsg(JSON.stringify(o),t=>{e.pending[n.uid]?(delete e.pending[n.uid],r(t)):setTimeout(r,1e3)});const i=a.clients||[];e.emit("MESSAGE",o,i.filter(e=>e!==t))}):r({error:"NO_CHAN"})}else r({error:"NO_CLIENT"})}(a,i,e,t):r(a,i,e,t)},o},gt=t}function jt(){if(At)return bt;At=1;return bt=(e=>{var n={},t=function(e,n,t){var r=e.clients[n];if(r){var o=e.channels[r.channel];o?(t(),o.history.forEach(function(t){e.emit("MESSAGE",{msg:t,validateKey:o.validateKey},[n])}),e.emit("HISTORY_SYNCED",{},[n])):t({error:"ENOCHAN"})}else t({error:"ENOENT"})};return n.init=function(n,r){var o={},a={store:n,emit:r,channels:{},clients:{}};return o.removeClient=function(e){!function(e,n){var t,r=function(e){return e!==n};for(var o in e.channels)(t=e.channels[o]).clients=t.clients.filter(r),0===t.clients.length&&(t.wc&&t.wc.leave(),delete e.channels[o]);if(e.clients[n]){var a=e.clients[n].channel,i=e.channels[a];i&&e.emit("LEAVE",{id:n},[i.clients[0]]),delete e.clients[n]}}(a,e)},o.leavePad=function(e){!function(e,n){Object.keys(e.channels).some(function(t){var r=e.channels[t];if(r.padChan===n)return r.wc&&r.wc.leave(),delete e.channels[t],!0})}(a,e)},o.execCommand=function(n,r,o){var i=r.cmd,s=r.data;"SEND_MESSAGE"!==i?"UPDATE_HASH"!==i?"OPEN_CHANNEL"!==i?"GET_HISTORY"!==i?"REENCRYPT"!==i||function(e,n,t,r){var o=n.channel,a=e.store.network,i=function(e){var t=a.historyKeeper,o={metadata:n.metadata},i=["GET_HISTORY",e.id,o];a.sendto(t,JSON.stringify(i)),n.msgs.forEach(function(n){e.bcast(n)}),e.leave(),r()};e.store.anon_rpc.send("IS_NEW_CHANNEL",o,function(e,n){var t;e?r({error:e}):(n&&n.length&&"object"==typeof n[0]?t=n[0].isNew:r({error:"INVALID_RESPONSE"}),t?a.join(o).then(i,function(e){r({error:e})}):r({error:"EEXISTS"}))})}(a,s,0,o):t(a,n,o):function(n,r,o,a){var i=r.channel,s=r.padChan,c=n.store.network,u=!0,f=n.clients[o];if(f)a();else{f=n.clients[o]={channel:i};var l=n.channels[i];if(l)return f.id||(f.id=l.wc.myID+"-"+o),t(n,o,function(){n.emit("READY",l.clients,[o])}),l.clients.push(o),void a();var d=Math.floor(1e6*Math.random()),h=function(e){n.channels[i]=n.channels[i]||{history:[],validateKey:r.validateKey},(l=n.channels[i]).padChan=s,f.id||(f.id=e.myID+"-"+o),l.clients&&l.clients.forEach(function(t){n.clients[t]&&(n.clients[t].id=e.myID+"-"+t)}),e.on("join",function(){}),e.on("leave",function(){}),e.on("message",function(e){l.history.push(e),n.emit("MESSAGE",{msg:e,validateKey:l.validateKey},l.clients)}),l.wc=e,l.sendMsg=function(n,t){t=t||function(){};var r=n.slice(0,64);e.bcast(n).then(function(){l.history.push(n),l.lastKnownHash=r,t()},function(e){t({error:e})})},u&&(l.clients=[o],l.lastCpHash=r.lastCpHash,u=!1,a());var t=c.historyKeeper,h={txid:d,lastKnownHash:l.lastKnownHash||l.lastCpHash,metadata:{validateKey:r.validateKey,owners:r.owners,expire:r.expire}},p=["GET_HISTORY",e.id,h];t&&c.sendto(t,JSON.stringify(p)).then(function(){},function(e){console.error(e)})};c.on("message",function(t,r){if(n.channels[i]&&r===c.historyKeeper){var o;try{o=JSON.parse(t)}catch(e){}if(o&&!(o.txid&&o.txid!==d||o.channel&&o.channel!==i))if(o.validateKey&&o.channel)l.validateKey||(l.validateKey=o.validateKey);else if(o.state&&1===o.state&&o.channel)n.emit("READY",l.clients,l.clients);else if(o.error&&o.channel){if("EDELETED"===o.error&&o.message)return l.wc?.leave(),e.send("RTCHANNEL_DELETED",!0),n.emit("ERROR",{error:"EDELETED",reason:o.message},l.clients);if("EUNKNOWN"===o.error){let e=c.historyKeeper,n=["GET_HISTORY",l?.wc.id,{txid:d}];return void c.sendto(e,JSON.stringify(n))}n.emit("READY",l.clients,l.clients)}else if(!(Array.isArray(o)&&o[0]&&o[0]!==d||(t=o[4],o[3]!==i))){var a=t.slice(0,64);a!==l.lastKnownHash&&a!==l.lastCpHash&&(l.lastKnownHash=a,n.emit("MESSAGE",{msg:t},l.clients),l.history.push(t))}}}),c.join(i).then(h,function(e){a({error:e})}),c.on("reconnect",function(){n.channels[i]&&c.join(i).then(h,function(e){console.error(e)})})}}(a,s,n,o):function(e,n,t,r){var o=e.clients[t];if(o){var a=e.channels[o.channel];if(a){var i=n,s=-1;a.history.some(function(e,n){if(e.slice(0,64)===i)return s=n+1,!0}),-1!==s&&(a.history=a.history.slice(s)),r()}else r({error:"INVALID_CHANNEL"})}else r({error:"NOT_IN_CHANNEL"})}(a,s,n,o):function(e,n,t,r){var o=e.clients[t];if(o){var a=e.channels[o.channel];if(a){var i=function(o){o&&o.error?r(o):(e.emit("MESSAGE",{msg:n.msg},a.clients.filter(function(e){return e!==t})),r())};n.isCp?a.sendMsg(n.isCp,i):a.sendMsg(n.msg,i)}else r({error:"INVALID_CHANNEL"})}else r({error:"NOT_IN_CHANNEL"})}(a,s,n,o)},o},n})(Oe()),bt}function Kt(){if(wt)return Ot;wt=1;return Ot=((e,n,t,r,o,a,i,s)=>{var c={};const u=e.mkEvent(!0);return c.init=function(c,f,l){var d={},h=c.store;if(h.loggedIn&&h.proxy.edPublic){var p={Store:c.Store,store:h,pinPads:c.pinPads,updateMetadata:c.updateMetadata,emit:l,onReadyHandlers:[],clients:[]};return p.profile=h.proxy.profile=h.proxy.profile||{},function(e,t){var r=e.profile;if(r.edit&&r.view)setTimeout(t);else{var o=n.createRandomHash("profile"),a=n.getSecrets("profile",o);e.pinPads([a.channel],function(e){e.error?t(e.error):(r.edit=n.getEditHashFromKeys(a),r.view=n.getViewHashFromKeys(a),setTimeout(t))})}}(p,f(function(r){r||function(r){var o=r.profile,c=n.getSecrets("profile",o.edit),f=i.createEncryptor(c.keys),l={data:{},network:r.store.network,channel:c.channel,crypto:f,owners:[r.store.proxy.edPublic],ChainPad:s,validateKey:c.keys.validateKey||void 0,userName:"profile",classic:!0},d=a.create(l);d.proxy.on("create",function(){}).on("ready",function(){if(d.proxy.name=r.store.proxy[t.displayNameKey]||"",r.listmap=d,d.proxy.curvePublic||(d.proxy.curvePublic=r.store.proxy.curvePublic),d.proxy.notifications||(d.proxy.notifications=e.find(r.store.proxy,["mailboxes","notifications","channel"])),d.proxy.edPublic||(d.proxy.edPublic=r.store.proxy.edPublic),!d.proxy.proof){let n=c.channel,t=e.decodeUTF8(n),o=e.decodeBase64(r.store.proxy.edPrivate),a=i.Nacl.sign(t,o),s=e.encodeBase64(a);d.proxy.proof=s}r.onReadyHandlers.length&&(r.onReadyHandlers.forEach(function(e){try{e(d.proxy)}catch(e){console.error(e)}}),r.onReadyHandlers=[]),u.fire()}).on("change",[],function(){r.emit("UPDATE",d.proxy,r.clients)})}(p)})),d.setName=function(e){!function(e,n){e.listmap.proxy.name=n,r.whenRealtimeSyncs(e.listmap.realtime,function(){e.listmap&&e.emit("UPDATE",e.listmap.proxy,e.clients)})}(p,e)},d.removeClient=function(e){!function(e,n){var t=e.clients.indexOf(n);-1!==t&&e.clients.splice(t,1)}(p,e)},d.update=function(){p.listmap&&p.emit("UPDATE",p.listmap.proxy,p.clients)},d.execCommand=function(e,n,t){console.log(n);var a=n.cmd,i=n.data;"SUBSCRIBE"!==a?"SET"!==a||function(e,n,t,a){u.reg(()=>{var i=n.key,s=n.value;i&&(e.listmap.proxy[i]=s,r.whenRealtimeSyncs(e.listmap.realtime,function(){e.emit("UPDATE",e.listmap.proxy,e.clients.filter(function(e){return e!==t})),"badge"===i?e.Store.set(null,{key:["profile","badge"],value:s||void 0},()=>{o.updateMyData(e.store),e.updateMetadata()}):"avatar"===i&&e.Store.set(null,{key:["profile","avatar"],value:s||""},()=>{o.updateMyData(e.store),e.updateMetadata()}),a(e.listmap.proxy)}))})}(p,i,e,t):function(e,n,t,r){-1===e.clients.indexOf(t)&&e.clients.push(t),e.listmap?r(e.listmap.proxy):e.onReadyHandlers.push(function(e){r(e)})}(p,0,e,t)},d}},c})(X(),te(),Y(),je(),An(),T(),M(),x()),Ot}function Ut(){if(_t)return Dt;_t=1;return Dt=function(e,n,t,r,o,a){var i={},s=function(e){return Boolean(e&&"object"==typeof e&&!Array.isArray(e))},c=function(e){return e.slice(0,64)},u=function(n,t){var r=e.find(t,[n,"role"]);return-1!==["OWNER","ADMIN"].indexOf(r)},f=function(n,t,r){var o=e.find(r,[n,"role"]);return!!o&&(!!function(e){return-1!==["OWNER","ADMIN","MEMBER","VIEWER"].indexOf(e)}(t)&&("OWNER"===o||"ADMIN"===o&&-1!==["ADMIN","MEMBER","VIEWER"].indexOf(t)))},l=function(e){return"string"==typeof e&&44===e.length},d=i.commands={};d.ADD=function(e,n,t){if(!s(e))throw new Error("INVALID ARGS");if(!t.internal.initialized)throw new Error("UNITIALIZED");if(void 0===t.state.members)throw new Error("CANNOT_ADD_TO_UNITIALIZED_ROSTER");var r=t.state.members;Object.keys(e).forEach(function(t){if(!l(t))throw console.log(t,t.length),new Error("INVALID_CURVE_KEY");if(!s(e[t]))throw new Error("INVALID_CONTENT");if(r[t])throw new Error("ALREADY_PRESENT");var o=e[t];if("string"!=typeof o.role&&(o.role="MEMBER"),!f(n,o.role,r))throw new Error("INSUFFICIENT_PERMISSIONS");if("string"!=typeof o.displayName)throw new Error("DISPLAYNAME_REQUIRED");if("string"!=typeof o.notifications)throw new Error("NOTIFICATIONS_REQUIRED")});var o=!1;return Object.keys(e).forEach(function(n){o=!0,r[n]=e[n]}),o},d.RM=function(n,t,r){if(!Array.isArray(n))throw new Error("INVALID_ARGS");if(void 0===r.state.members)throw new Error("CANNOT_RM_FROM_UNITIALIZED_ROSTER");var o=r.state.members;n.forEach(function(n){if(!l(n))throw new Error("INVALID_CURVE_KEY");if(n!==t){var r=o[n].role;if(!function(n,t,r){var o=e.find(r,[n,"role"]);return!!o&&("OWNER"===o||"ADMIN"===o&&-1!==["ADMIN","MEMBER","VIEWER"].indexOf(t))}(t,r,o))throw new Error("INSUFFICIENT_PERMISSIONS")}});var a=!1;return n.forEach(function(e){o[e]&&(a=!0,delete o[e])}),a},d.DESCRIBE=function(n,t,o){if(!n||"object"!=typeof n||Array.isArray(n))throw new Error("INVALID_ARGUMENTS");if(void 0===o.state.members)throw new Error("NOT_READY");var a=o.state.members;Object.keys(n).forEach(function(r){if(!l(r))throw new Error("INVALID_ID");if(!a[r])throw new Error("NOT_PRESENT");if(!function(n,t,r){if(!r[t])return!1;if(n===t&&r[t])return!0;var o=e.find(r,[n,"role"]),a=e.find(r,[t,"role"]);return!!o&&("OWNER"===o||"ADMIN"===o&&"OWNER"!==a)}(t,r,a))throw new Error("INSUFFICIENT_PERMISSIONS");var o=n[r];if(!s(o))throw new Error("INVALID_ARGUMENTS");var i=e.clone(a[r]);if("string"==typeof o.role&&!function(n,t,r,o){return!(n!==t||!o[t])&&("MEMBER"===e.find(o,[n,"role"])?"VIEWER"===r:void 0)}(t,r,o.role,a)&&!f(t,o.role,a))throw new Error("INSUFFICIENT_PERMISSIONS");if("string"!=typeof i.displayName&&"string"!=typeof o.displayName)throw new Error("DISPLAYNAME_REQUIRED");if(-1===["undefined","string"].indexOf(typeof o.displayName))throw new Error("INVALID_DISPLAYNAME");if("string"!=typeof i.notifications&&"string"!=typeof o.notifications)throw new Error("NOTIFICATIONS_REQUIRED");if(-1===["undefined","string"].indexOf(typeof o.notifications))throw new Error("INVALID_NOTIFICATIONS")});var i=!1;return Object.keys(n).forEach(function(t){var o=e.clone(a[t]),s=n[t];Object.keys(s).forEach(function(e){void 0===o[e]||null!==s[e]?o[e]=s[e]:delete o[e]}),r(o)!==r(a[t])&&(i=!0,a[t]=o)}),i},d.CHECKPOINT=function(e,n,t){if(!s(e))throw new Error("INVALID_CHECKPOINT_STATE");if(!t.internal.initialized){t.state=e;var o=t.state.metadata=t.state.metadata||{};return o.topic=o.topic||"",o.name=o.name||"",o.avatar=o.avatar||"",t.internal.initialized=!0,!0}if(r(e)!==r(t.state))throw new Error("CHECKPOINT_DOES_NOT_MATCH_PREVIOUS_STATE");if(!u(n,t.state.members))throw new Error("INSUFFICIENT_PERMISSIONS");return t.state=e,!0};var h=["avatar","name","topic"];d.METADATA=function(n,t,r){if(!s(n))throw new Error("INVALID_ARGS");if(!function(n,t){var r=e.find(t,[n,"role"]);return Boolean(r&&-1!==["OWNER","ADMIN"].indexOf(r))}(t,r.state.members))throw new Error("INSUFFICIENT_PERMISSIONS");Object.keys(n).forEach(function(e){if(null===n[e]){if(-1===h.indexOf(e))return;throw new Error("CANNOT_REMOVE_MANDATORY_METADATA")}if("string"!=typeof n[e])throw new Error("INVALID_ARGUMENTS")});var o=!1;return Object.keys(n).forEach(function(e){void 0!==r.state.metadata[e]&&null===n[e]&&(o=!0,delete r.state.metadata[e]),n[e]!==r.state.metadata[e]&&(o=!0,r.state.metadata[e]=n[e])}),o},d.INVITE=function(e,n,t){if(!s(e))throw new Error("INVALID_ARGS");if(!t.internal.initialized)throw new Error("UNINITIALIED");if(void 0===t.state.members)throw new Error("CANNOT+INVITE_TO_UNINITIALIED_ROSTER");var r=t.state.members;Object.keys(e).forEach(function(t){if(!l(t))throw console.log(t,t.length),new Error("INVALID_CURVE_KEY");if(!s(e[t]))throw new Error("INVALID_CONTENT");if(r[t])throw new Error("ARLEADY_PRESENT");var o=e[t];if("string"!=typeof o.role&&(o.role="VIEWER"),void 0===o.pending&&(o.pending=!0),!f(n,o.role,r))throw new Error("INSUFFICIENT_PERMISSIONS");if("string"!=typeof o.displayName||!o.displayName)throw new Error("DISPLAYNAME_REQUIRED")});var o=!1;return Object.keys(e).forEach(function(n){o=!0,r[n]=e[n]}),o},d.ACCEPT=function(n,t,r){if(!r.internal.initialized)throw new Error("UNINITIALIED");if(void 0===r.state.members)throw new Error("CANNOT_ADD_TO_UNINITIALIED_ROSTER");var o=r.state.members;if(!s(o[t]))throw new Error("INSUFFICIENT_PERMISSIONS");if(!o[t].pending)throw new Error("ALREADY_PRESENT");if("string"!=typeof n)throw new Error("INVALID_ARGS");if(!l(n))throw new Error("INVALID_CURVE_KEY");var a=n;if(void 0!==o[a])throw new Error("MEMBER_ALREADY_PRESENT");var i=e.clone(o[t]);delete i.remaining,delete i.totalUses,delete i.inviteChannel,delete i.previewChannel,o[a]=i;var c=o[t].remaining||1;return-1===c||(c>1?o[t].remaining=c-1:delete o[t]),!0};var p=function(e,n,t){if(!Array.isArray(e)||"string"!=typeof n)throw new Error("INVALID ARGUMENTS");var r=e[0];if("function"!=typeof d[r])throw new Error("INVALID_COMMAND");return d[r](e[1],n,t)},v=function(n,t,r){return p(n,t,e.clone(r))};return i.create=function(n,i){if("function"!=typeof i)throw new Error("EXPECTED_CALLBACK");var f=e.once(e.mkAsync(i));if(n.network)if(n.channel&&"string"==typeof n.channel&&32===n.channel.length)if(n.keys&&"object"==typeof n.keys)if(n.store){var d=e.response(function(e,n){console.error("ROSTER_RESPONSE__"+e,n)}),h=n.store,y=n.keys,m=y.myCurvePublic,g=n.channel,E=n.lastKnownHash||-1;n.newTeam&&(E=void 0);var b={state:{members:{},metadata:{}},internal:{initialized:!1,sinceLastCheckpoint:0,lastCheckpointHash:E}},A={},O={change:e.mkEvent(),checkpoint:e.mkEvent()};A.on=function(e,n){if("object"!=typeof O[e])throw new Error("unsupported event");return O[e].reg(n),A},A.off=function(e,n){if("object"!=typeof O[e])throw new Error("unsupported event");return O[e].unreg(n),A},A.once=function(e,n){if("object"!=typeof O[e])throw new Error("unsupported event");var t=function(){n.apply(null,Array.prototype.slice.call(arguments)),O[e].unreg(t)};return O[e].reg(t),A},A.getState=function(){return e.clone(b.state)},A.getLastCheckpointHash=function(){return b.internal.lastCheckpointHash||-1};var w=function(){b.internal.pendingCheckpointId&&(d.clear(b.internal.pendingCheckpointId),delete b.internal.pendingCheckpointId),clearTimeout(b.internal.checkpointTimeout),delete b.internal.checkpointTimeout};A.stop=function(){b.internal.cpNetflux&&"function"==typeof b.internal.cpNetflux.stop?(b.internal.cpNetflux.stop(),w()):console.log("FAILED TO LEAVE")};var D,_,T,S=!1,N=function(){if(n.onCacheReady){var e=b.state;if(Object.keys(e.members||{}).length)n.onCacheReady(A);else{try{b.internal.cpNetflux.resetCache()}catch(e){console.error(e)}n.onCacheReady({error:"CORRUPTED"})}}},I=function(){S=!0,f(void 0,A)},x=function(e){e&&"EUNKNOWN"===e.type||(S?console.error("CHANNEL_ERROR",e):f(e))},C=function(e){e.state||(S=!1)},R=function(){console.log("ROSTER CONNECTED")},P=function(){return Boolean(S&&m)},k=function(n,t,r,o,a,i){D!==a&&b.internal.sinceLastCheckpoint++,D=a;var s=e.tryParse(n);if(s){var f,l;try{f=p(s,i,b)}catch(e){l=e.message}var h=c(a);if(d.expected(h)){if(l)return void d.handle(h,[l]);try{f?d.handle(h,[void 0,A.getState()]):(d.handle(h,["NO_CHANGE"]),console.log(n))}catch(e){console.log("CAUGHT",e)}}if("CHECKPOINT"===s[0]&&f?(P()&&O.checkpoint.fire(a),b.internal.sinceLastCheckpoint=0,b.internal.lastCheckpointHash=a):f&&P()&&O.change.fire(),w(),P()&&function(e,n){if(!u(e,n.state.members))return!1;var t=n.internal.sinceLastCheckpoint;return!(!t||"number"!=typeof t||t<25)}(m,b)){var v=1e3*Math.floor(20*Math.random())+5e3;b.internal.checkpointTimeout=setTimeout(function(){b.internal.pendingCheckpointId=A.checkpoint(function(e){e&&console.error(e)})},v)}}else console.error("could not parse")},M=function(n,t){var r=e.tryParse(n);return"CHECKPOINT"===r[0]&&v(r,t,b)},F=function(e,n){if(P()){var t=h.anon_rpc;if(t){var o=!1;try{o=v(e,y.myCurvePublic,b)}catch(e){return void n(e.message)}if(o){var a=T.encrypt(r(e)),i=c(a);return d.expect(i,function(e,t){e?n(e):n(void 0,t,i)},3e4),t.send("WRITE_PRIVATE_MESSAGE",[g,a],function(e){if(e)return d.handle(i,[e.message||e])}),i}n("NO_CHANGE")}else n("ANON_RPC_NOT_READY")}else n("NOT_READY")};A.init=function(n,t){var r=e.once(e.mkAsync(t));if(b.internal.initialized)r("ALREADY_INITIALIZED");else if(s(n)){var o=e.clone(n);o.role="OWNER";var a={};a[m]=o,F(["CHECKPOINT",{members:a}],r)}else r("INVALID_ARGUMENTS")},A.checkpoint=function(n){var t=e.once(e.mkAsync(n));F(["CHECKPOINT",e.clone(b.state)],t)},A.add=function(n,t){var r=e.once(e.mkAsync(t));if(!b.internal.initialized)return r("UNINITIALIZED");if(s(n)){var o=e.clone(n);Object.keys(o).forEach(function(e){if(!l(e)||s(b.state.members[e]))return delete o[e]}),F(["ADD",o],r)}else r("INVALID_ARGUMENTS")},A.remove=function(n,t){var r=e.once(e.mkAsync(t)),o=b.state;if(!o)return r("UNINITIALIZED");if(Array.isArray(n)){var a=e.clone(n),i=[],s=Object.keys(o.members);a.forEach(function(e){-1!==s.indexOf(e)&&i.push(e)}),F(["RM",i],r)}else r("INVALID_ARGUMENTS")},A.describe=function(n,t){var r=e.once(e.mkAsync(t)),o=b.state;if(!o)return r("UNINITIALIZED");if(s(n)){var a=e.clone(n);Object.keys(a).some(function(e){var n=a[e];if(s(n)||delete a[e],!s(o.members[e]))return!0;Object.keys(n).forEach(function(t){n[t]===o.members[e][t]&&delete n[t]})})?r("INVALID_ARGUMENTS"):F(["DESCRIBE",a],r)}else r("INVALID_ARGUMENTS")},A.metadata=function(n,t){var r=e.once(e.mkAsync(t)),o=b.state.metadata;if(s(n)){var a=e.clone(n);Object.keys(a).forEach(function(e){a[e]===o[e]&&delete a[e]}),F(["METADATA",a],r)}else r("INVALID_ARGUMENTS")},A.invite=function(n,t){var r=e.once(e.mkAsync(t));if(!b.state)return r("UNINITIALIZED");if(!b.internal.initialized)return r("UNINITIALIZED");if(s(n)){var o=e.clone(n);Object.keys(o).forEach(function(e){if(!l(e)||s(b.state.members[e]))return delete o[e]}),F(["INVITE",o],r)}else r("INVALID_ARGUMENTS")},A.accept=function(n,t){var r=e.once(e.mkAsync(t));"string"==typeof n&&l(n)?F(["ACCEPT",n],r):r("INVALID_ARGUMENTS")},o(function(e){h.anon_rpc&&h.anon_rpc.send("GET_METADATA",g,function(n,t){if(n)return e.abort(),void console.error(n);_=b.internal.metadata=t&&t[0]||void 0})}).nThen(function(e){if(!n.keys.teamEdPublic&&_&&_.validateKey&&(n.keys.teamEdPublic=_.validateKey),!n.keys.teamEdPublic)return e.abort(),void f("NO_VALIDATE_KEY");try{T=a.Team.createEncryptor(n.keys)}catch(n){return e.abort(),void f(n)}}).nThen(function(){"string"==typeof E&&console.log("Synchronizing from checkpoint"),b.internal.cpNetflux=t.start({lastKnownHash:E,network:n.network,channel:n.channel,crypto:T,validateKey:n.keys.teamEdPublic,owners:n.owners,Cache:n.Cache,isCacheCheckpoint:M,onCacheReady:N,onChannelError:x,onReady:I,onConnect:R,onConnectionChange:C,onMessage:k,noChainPad:!0})})}else f("EXPECTED_STORE");else f("EXPECTED_CRYPTO_KEYS");else f("EXPECTED_CHANNEL");else f("EXPECTED_NETWORK")},i}(X(),te(),D(),bn(),qe(),M()),Dt}function Bt(){if(It)return Nt;It=1;return Nt=((e,n,t,r,o,a,i,s,c,u,f,l,d,h,p,v,y,m,g,E)=>{const b={};E=E||"undefined"!=typeof window&&window.nacl;var A=e.mkEvent(!0),O=function(){},w=function(e,t,r,o){t&&(o||(r.on("change",["drive",a.SHARED_FOLDERS],function(o,s,c){if(c.length>3&&"password"===c[3]){var u=c[2],f=r.drive[a.SHARED_FOLDERS][u],l=t.manager.user.userObject.getHref?t.manager.user.userObject.getHref(f):f.href,d=n.parsePadUrl(l),h=n.getSecrets(d.type,d.hash,o);return setTimeout(function(){i.updatePassword(e.Store,{oldChannel:h.channel,password:s,href:l},e.store.network,function(){console.log("Shared folder password changed")})}),!1}}),r.on("disconnect",function(){t.offline=!0,t.sendEvent("NETWORK_DISCONNECT",t.id)}),r.on("reconnect",function(){t.offline=!1,t.sendEvent("NETWORK_RECONNECT",t.id)})),r.on("change",[],function(n,r,i){if(o){if(i[0]===a.FILES_DATA&&"object"==typeof r&&r.channel&&!r.owners){var s=[r.channel];r.rtChannel&&s.push(r.rtChannel),r.lastVersion&&s.push(r.lastVersion),t.pin(s,function(e){e&&e.error&&console.error(e.error)})}if(i[0]===a.FILES_DATA&&"object"==typeof n&&n.channel&&!r){var c=[n.channel];t.manager.findChannel(n.channel).some(function(e){return e.fId!==o})||(n.rtChannel&&c.push(n.rtChannel),n.lastVersion&&c.push(n.lastVersion),t.unpin(c,function(e){e&&e.error&&console.error(e)}))}}n&&!r&&Array.isArray(i)&&(i[0]===a.FILES_DATA||"drive"===i[0]&&i[1]===a.FILES_DATA)&&setTimeout(function(){e.Store.checkDeletedPad(n&&n.channel)}),t.sendEvent("DRIVE_CHANGE",{id:o,old:n,new:r,path:i})}),r.on("remove",[],function(e,n){t.sendEvent("DRIVE_REMOVE",{id:o,old:e,path:n})}))},D=function(e,n){var t=e.teams[n];if(t){try{t.listmap.stop()}catch(e){}try{t.roster.stop()}catch(e){}t.proxy={},t.stopped=!0,t?.rpc?.destroy(),delete e.teams[n],delete e.cache[n],delete e.store.proxy.teams[n],e.emit("LEAVE_TEAM",n,t.clients),e.updateMetadata(),e.store.calendar&&e.store.calendar.closeTeam(n),e.store.mailbox&&e.store.mailbox.close("team-"+n,function(){})}},_=function(n,t,r){var o=n.teams[r];if(!o)return null;var a=o.manager.getChannelsList("pin"),i=n.store.proxy.teams[r];const s=t?i.channel:`${i.channel}#drive`;a.add(s);var c=e.find(i,["keys","chat","channel"]),u=e.find(i,["keys","roster","channel"]),f=e.find(i,["keys","mailbox","channel"]);(c&&a.add(c),u&&a.add(u),f&&a.add(f),o.proxy.calendars)&&Object.keys(o.proxy.calendars).map(function(e){return o.proxy.calendars[e].channel}).forEach(e=>a.add(e));var l=o.roster.getState();return l.members&&Object.keys(l.members).forEach(function(e){var n=l.members[e];n.inviteChannel&&n.pending&&a.add(n.inviteChannel),n.previewChannel&&n.pending&&a.add(n.previewChannel)}),Array.from(a).sort()},T=function(e,n,t,r){n.rpc?r():t.edPrivate&&t.edPublic?h.create(e.store.network,t,function(e,t){e?r(e):(n.rpc=t,n&&n.onRpcReadyEvt&&n.onRpcReadyEvt.fire(),r())},d):r("EFORBIDDEN")},S=function(t,r,a,s,c,u,f){var l=e.once(e.mkAsync(f));if(t.cache[r])l();else{var d=a.proxy,h={id:r,proxy:d,listmap:a,clients:[],realtime:a.realtime,handleSharedFolder:function(e,n){!function(e,n,t,r){var o=e.teams[n];o&&(r?(o.sharedFolders[t]=r,w(e,o,r.proxy,t)):delete o.sharedFolders[t])}(t,r,e,n)},sharedFolders:{},roster:s,onRpcReadyEvt:e.mkEvent(!0),offline:!0};t.cache[r]=h,u&&h.clients.push(u),s.on("change",function(){var n=s.getState(),o=e.find(t,["store","proxy","curvePublic"]);if(n.members&&Object.keys(n.members).length)if(n.members[o]){var a=e.find(t,["store","proxy","teams",r]);a&&(a.metadata=n.metadata),t.updateMetadata(),t.emit("ROSTER_CHANGE",r,h.clients)}else D(t,r);else console.error(JSON.stringify(n))}),s.on("checkpoint",function(n){e.find(t,["store","proxy","teams",r,"keys","roster"]).lastKnownHash=n}),h.sendEvent=function(e,n,r){t.emit(e,n,h.clients.filter(function(e){return e!==r}))},h.getChatData=function(){var e=c.chat||{},t=e.edit||e.view;if(!t)return{};var o=n.getSecrets("chat",t);return{teamId:r,channel:o.channel,secret:o,validateKey:e.validateKey}},h.pin=function(e,n){c.drive.edPrivate?h.rpc?("function"!=typeof n&&console.error("expected a callback"),h.rpc.pin(e,function(e,t){n(e?{error:e}:{hash:t})})):n({error:"TEAM_RPC_NOT_READY"}):n({error:"EFORBIDDEN"})},h.unpin=function(e,n){c.drive.edPrivate?h.rpc?("function"!=typeof n&&console.error("expected a callback"),h.rpc.unpin(e,function(e,t){n(e?{error:e}:{hash:t})})):n({error:"TEAM_RPC_NOT_READY"}):n({error:"EFORBIDDEN"})};var p=t.store.proxy.teams[h.id],v=p.hash||p.roHash,y=n.getSecrets("team",v,p.password),m=h.manager=o.create(d.drive,{onSync:function(e){t.Store.onSync(r,e)},edPublic:c.drive.edPublic,pin:h.pin,unpin:h.unpin,loadSharedFolder:function(e,n,r,o){i.load({isNew:o,network:t.store.network||t.store.networkPromise,store:h,isNewChannel:t.Store.isNewChannel,Store:t.Store},e,n,r)},settings:{drive:e.find(t.store,["proxy","settings","drive"])},removeOwnedChannel:function(e,n){var o;"object"==typeof e?(e.teamId=r,o=e):o={channel:e,teamId:r},t.Store.pad.destroy("",o,n)},Store:t.Store,store:t.store},{teamId:h.id,outer:!0,edPublic:c.drive.edPublic,loggedIn:!0,log:function(e){h.sendEvent("DRIVE_LOG",e)},rt:h.realtime,editKey:y.keys.secondaryKey,readOnly:Boolean(!y.keys.secondaryKey)});h.secondaryKey=y&&y.keys.secondaryKey,h.userObject=m.user.userObject,g(function(e){t.teams[r]=h,w(t,h,d);var n=t.store.network||t.store.networkPromise;i.loadSharedFolders(t.Store,n,h,h.proxy.drive,h.userObject,e,function(e){t.progress+=70/(t.numberOfTeams*e.max),t.updateProgress({progress:t.progress})},!0)}).nThen(function(){t.store.modules.calendar&&t.store.modules.calendar.openTeam(r),l()})}},N=function(t,r,o,a,s,c,u){var f,l=a.getState(),d=e.find(t,["store","proxy","teams",r]);d&&(d.metadata=l.metadata),delete t.nocache[r],t.store.proxy.teams[r]&&g(function(e){S(t,r,o,a,s,c,e()),f=t.teams[r]||t.cache[r],s.drive.edPrivate&&T(t,f,s.drive,e(function(){}))}).nThen(function(e){f.userObject.fixFiles(),i.checkMigration(f.secondaryKey,f.proxy?.drive,f.userObject,e()),i.loadSharedFolders(t.Store,t.store.network,f,f.proxy?.drive,f.userObject,e,function(e){t.progress+=70/(t.numberOfTeams*e.max),t.updateProgress({progress:t.progress})})}).nThen(function(){if(f.rpc){var e=_(t,!0,r),o=n.hashChannelList(e);f.rpc.getServerHash(function(e,n){if(e)console.warn(e);else if(n!==o){var a=_(t,!1,r);f.rpc.reset(a,function(e){e&&console.warn(e)})}})}}).nThen(function(){f.offline=!1,t.onReadyHandlers[r]&&t.onReadyHandlers[r].forEach(function(e){("function"==typeof e.cb&&e.cb(),e.cId)&&(-1===f.clients.indexOf(e.cId)&&f.clients.push(e.cId))}),delete t.onReadyHandlers[r],t.store.modules.calendar&&t.store.modules.calendar.openTeam(r),u()})},I=function(e,n,t,r,o,a){var i=function(){(e.cache[n]||e.teams[n])&&D(e,n),delete e.store.proxy.teams[n],delete e.onReadyHandlers[n],o.abort(),a({error:"ENOENT"})};t&&e.store.anon_rpc.send("IS_NEW_CHANNEL",t,o(function(e,n){n&&n.length&&"object"==typeof n[0]&&n[0].isNew&&i()})),r&&e.store.anon_rpc.send("IS_NEW_CHANNEL",r,o(function(e,n){n&&n.length&&"object"==typeof n[0]&&n[0].isNew&&i()}))},x=function(t,r,o,a,i){var f=e.once(e.mkAsync(a)),l=r.hash||r.roHash,h=n.getSecrets("team",l,r.password),y=v.createEncryptor(h.keys);r.roHash||(r.roHash=n.getViewHashFromKeys(h));var E,b,O=r.keys;if(!O.chat.validateKey&&O.chat.edit){var w=n.getSecrets("chat",O.chat.edit);O.chat.validateKey=w.keys.validateKey}var _={curvePublic:t.store.proxy.curvePublic,curvePrivate:t.store.proxy.curvePrivate},T=O.roster||{},x=T.edit?v.Team.deriveMemberKeys(T.edit,_):v.Team.deriveGuestKeys(T.view||"");g(function(e){if(i)return d.getChannelCache(h.channel,e(function(n,t){t&&t.c||(e.abort(),f({error:"NOCACHE"}))})),void d.getChannelCache(x.channel,e(function(n,t){var r=t&&t.c,o=t&&t.k;o&&!x.teamEdPublic&&(x.teamEdPublic=o),r||(e.abort(),f({error:"NOCACHE"}))}));t.Store.onReadyEvt.reg(()=>{I(t,o,h.channel,x.channel,e,f)})}).nThen(function(n){var a={lm:!1,roster:!1,check:function(){this.lm&&this.roster&&i&&(t.progress+=30/t.numberOfTeams,t.updateProgress({progress:t.progress}),S(t,o,b,E,O,null,n(f)),this.check=function(){})}},u={data:{},readOnly:!Boolean(h.keys.signKey),network:t.store.network||t.store.networkPromise,channel:h.channel,crypto:y,ChainPad:m,Cache:d,metadata:{validateKey:h.keys.validateKey||void 0},userName:"team",classic:!0,onMetadataUpdate:function(){var e=t.teams[o];e&&t.emit("ROSTER_CHANGE",o,e.clients)}};(b=p.create(u)).proxy.on("cacheready",function(){a.lm=!0,a.check()}),b.proxy.on("ready",n()),b.proxy.on("error",function(e){e&&void 0!==e.loaded&&!e.loaded&&f({error:"ECONNECT"}),e&&e.error&&"EDELETED"===e.error&&D(t,o)}),s.create({network:t.store.network||t.store.networkPromise,channel:x.channel,keys:x,store:t.store,lastKnownHash:T.lastKnownHash,onCacheReady:function(e){if(i){if(e&&"CORRUPTED"===e.error)return console.error("Corrupted roster cache, cant load this team offline",r),b&&"function"==typeof b.stop&&b.stop(),n.abort(),void f({error:"CACHE_CORRUPTED_ROSTER"});E=e,a.roster=!0,a.check()}},Cache:d},n(function(r,o){if(r)return n.abort(),console.error(r),void f({error:"ROSTER_ERROR"});E=o,T.lastKnownHash=E.getLastCheckpointHash();var a=E.getState(),i=e.find(t,["store","proxy","curvePublic"]);a.members[i]&&A.reg(function(){if(T.edit){var e={},n=c.createData(t.store.proxy,!1);n.pending=!1,e[t.store.proxy.curvePublic]=n,E.describe(e,function(e){e&&"NO_CHANGE"!==e&&console.error(e)})}})}))}).nThen(function(n){var a=E.getState(),i=e.find(t,["store","proxy","curvePublic"]);if(!a.members||!Object.keys(a.members).length)return b.stop(),E.stop(),b.proxy={},f({error:"EINVAL"}),n.abort(),console.error(JSON.stringify(a)),void u.send("ROSTER_CORRUPTED");if(!a.members[i])return b.stop(),E.stop(),b.proxy={},delete t.store.proxy.teams[o],t.updateMetadata(),f({error:"EFORBIDDEN"}),void n.abort();var s=a.members[i],c=e.find(r,["keys","drive","edPrivate"]);if(r.hash&&c||-1===["ADMIN","MEMBER"].indexOf(s.role))r.hash&&c||"OWNER"!==s.role||u.send("TEAM_RIGHTS_OWNER");else{console.warn("Missing edit rights: demote to viewer");var l={};l[t.store.proxy.curvePublic]={role:"VIEWER"},E.describe(l,function(e){u.send("TEAM_RIGHTS_FIXED"),delete r.hash,delete r.keys.drive.edPrivate,delete r.keys.chat.edit,e&&"NO_CHANGE"!==e&&console.error(e)})}}).nThen(function(){i||(t.progress+=30/t.numberOfTeams,t.updateProgress({progress:t.progress})),N(t,o,b,E,O,null,f)})},C=function(n,t,r,o){var a=t.team;if(!((a.hash||a.roHash)&&a.channel&&a.password&&a.keys&&a.metadata))return void o({error:"EINVAL"});let i=n.store.proxy.teams;if(Object.values(i).some(e=>e.channel===a.channel))o({error:"EEXISTS"});else{var s=e.createRandomInteger();n.store.proxy.teams[s]=a,n.onReadyHandlers[s]=[],x(n,a,s,function(e){e&&e.error||console.debug("Team joined:"+s);var t=n.store.proxy.teams[s];n.store.mailbox.open("team-"+s,t.keys.mailbox,function(){},!0,{owners:t.keys.drive.edPublic}),n.updateMetadata(),o(e)})}},R=function(n,t,r){var o=e.find(n,["store","proxy","teams",t]);if(!o)return{};var a=e.clone(o);return r||(delete a.hash,delete a.keys.drive.edPrivate,delete a.keys.chat.edit),delete a.owner,a},P=function(t,r,o){if(!r)return!0;var a=e.find(t,["store","proxy","teams",r]);if(!a)return!0;var s=t.teams[r];if(!s)return!0;var c=n.getSecrets("team",o||a.roHash,a.password);if(i.upgrade(a.channel,c),s.userObject&&s.userObject.setReadOnly(!c.keys.secondaryKey,c.keys.secondaryKey),c.keys.secondaryKey)try{t.store.modules.calendar.upgradeTeam(r)}catch(e){console.error(e)}!c.keys.secondaryKey&&s.rpc&&s.rpc.destroy();var u=e.find(s,["proxy","drive","sharedFolders"]);Object.keys(u||{}).forEach(function(t){var r=s.manager.getSharedFolderData(t),o=n.parsePadUrl(r.href||r.roHref),a=n.getSecrets(o.type,o.hash,r.password);i.upgrade(a.channel,a);var c=e.find(s,["manager","folders",t,"userObject"]);c&&c.setReadOnly(!a.keys.secondaryKey,a.keys.secondaryKey)}),t.updateMetadata(),t.emit("ROSTER_CHANGE_RIGHTS",r,s.clients)},k=function(t,r,o,a,i){if(r){var s=e.find(t,["store","proxy","teams",r]);if(s){var c=t.onReadyHandlers[r],u=t.teams[r];if(s.channel===a.channel&&s.password===a.password)if(o?(s.hash=a.hash,s.keys.drive.edPrivate=a.keys.drive.edPrivate,s.keys.chat.edit=a.keys.chat.edit):(delete s.hash,delete s.keys.drive.edPrivate,delete s.keys.chat.edit),u||!Array.isArray(c))if(u){if(o){T(t,u,s.keys.drive,function(){u.manager.addPin(u.pin,u.unpin)});var f=n.getSecrets("team",a.hash,s.password);u.secondaryKey=f&&f.keys.secondaryKey;var l=v.createEncryptor(f.keys);u.listmap.setReadOnly(!1,l)}else delete u.secondaryKey,u.rpc&&u.rpc.destroy&&u.rpc.destroy(),u.manager.removePin(),u.listmap.setReadOnly(!0);P(t,r,a.hash),i(!0)}else i(!1);else c.push({cb:function(){k(t,r,o,a,i)}});else i(!1)}else i(!1)}else i(!1)},M=function(n,t,r,o,a){t?e.find(n,["store","proxy","teams",t])&&n.teams[t]?n.store.mailbox.sendTo("TEAM_EDIT_RIGHTS",{state:o,teamData:R(n,t,o)},{channel:r.notifications,curvePublic:r.curvePublic},a):a({error:"ENOENT"}):a({error:"EINVAL"})},F=function(n,t,r,o){var a=t.teamId;if(a){var i=e.find(n,["store","proxy","teams",a]),s=n.teams[a];if(i&&s)if(s.roster)if(t.curvePublic&&t.data){var c,u=s.roster.getState().members[t.curvePublic];g(function(e){n.Store.pad.getMetadata(null,{channel:i.channel},e(function(e){c=e&&e.error?s.listmap.metadata||{}:e}))}).nThen(function(){if(u.pendingOwner=Array.isArray(c.pending_owners)&&-1!==c.pending_owners.indexOf(u.edPublic),"OWNER"!==u.role||"OWNER"===t.data.role){"VIEWER"===u.role&&"VIEWER"!==t.data.role&&M(n,a,u,!0,function(e){o(e)}),"VIEWER"!==u.role&&"VIEWER"===t.data.role&&M(n,a,u,!1,function(e){o(e)});var r={};r[t.curvePublic]=t.data,s.roster.describe(r,function(e){e?o({error:e}):o()})}else!function(n,t,r,o){var a=e.once(o);if(t){var i=e.find(n,["store","proxy","teams",t]);if(i){var s=n.teams[t];if(s){var c=r.pendingOwner;g(function(t){var o=c?"RM_PENDING_OWNERS":"RM_OWNERS",s=function(e){var n=e&&e.error;if(n)return console.error(n),t.abort(),void a(n)},u=function(e){n.Store.pad.setMetadata(null,{channel:e,command:o,value:[r.edPublic]},t(s))};u(i.channel),u(e.find(i,["keys","roster","channel"])),u(e.find(i,["keys","chat","channel"]))}).nThen(function(e){var n={};n[r.curvePublic]={role:"ADMIN",pendingOwner:!1},s.roster.describe(n,e(function(e){e&&console.error(e)}))}).nThen(function(e){n.store.mailbox.sendTo("RM_OWNER",{teamChannel:i.channel,title:i.metadata.name,pending:c},{channel:r.notifications,curvePublic:r.curvePublic},e())}).nThen(function(){a()})}else a({error:"ENOENT"})}else a({error:"ENOENT"})}else a({error:"EINVAL"})}(n,a,u,function(e){e?(console.error(e),o({error:e})):o()})})}else o({error:"MISSING_DATA"});else o({error:"NO_ROSTER"});else o({error:"ENOENT"})}else o({error:"EINVAL"})},L=function(e,n){Object.keys(e.onReadyHandlers).forEach(function(t){var r=-1;e.onReadyHandlers[t].some(function(e,t){if(e.cId===n)return r=t,!0}),-1!==r&&e.onReadyHandlers[t].splice(r,1)}),Object.keys(e.teams).forEach(function(t){var r=e.teams[t].clients,o=r.indexOf(n);-1!==o&&r.splice(o,1)})},H=function(n,t,r,o){var a,i=t.seeds;try{a=f.derivePreviewKeys(i.preview)}catch(e){return void o({error:"INVALID_SEEDS"})}l.get({channel:a.channel,type:"pad",version:2,keys:{cryptKey:a.cryptKey}},function(n,t){if(n)o({error:n});else if(t){var r=e.tryParse(t);o(r||{error:"parseError"})}else o({error:"DELETED"})},{network:n.store.network,initialState:"{}"})},j=function(n,t,r,o){var a,i;g(function(r){!function(n,t,r,o){var a,i=t.bytes64;try{a=f.deriveInviteKeys(i)}catch(e){return void o({error:"INVALID_SEEDS"})}l.get({channel:a.channel,type:"pad",version:2,keys:{cryptKey:a.cryptKey}},function(n,t){if(n)o({error:n});else if(t){var r=e.tryParse(t);o(r||{error:"parseError"})}else o({error:"DELETED"})},{network:n.store.network,initialState:"{}"})}(n,t,0,r(function(e){if(e&&e.error)return r.abort(),void o(e);a=e}))}).nThen(function(t){var r=e.find(a,["teamData","channel"]),u=n.store.proxy.teams||{};if(Object.keys(u).some(function(e){return u[e].channel===r}))return t.abort(),void o({error:"ALREADY_MEMBER"});var f=e.find(a,["teamData","keys","roster"]),l=a.ephemeral;if(!f||!l)return t.abort(),void o({error:"INVALID_INVITE_CONTENT"});var h=v.Team.deriveMemberKeys(f.edit,l);s.create({network:n.store.network||n.store.networkPromise,channel:f.channel,keys:h,store:n.store,Cache:d},t(function(e,r){if(e)return t.abort(),console.error(e),void o({error:"ROSTER_ERROR"});var a=c.createData(n.store.proxy,!1),s=r.getState();i=s.members[l.curvePublic],r.accept(a.curvePublic,t(function(e){if(r.stop(),e)return t.abort(),console.error(e),void o({error:"ACCEPT_ERROR"})}))}))}).nThen(function(){var e={};i.remaining&&1!==i.remaining||T(n,e,a.ephemeral,function(n){if(!n){var t=e.rpc;i.inviteChannel&&t.removeOwnedChannel(i.inviteChannel,function(e){e&&console.error(e)}),i.previewChannel&&t.removeOwnedChannel(i.previewChannel,function(e){e&&console.error(e)})}}),C(n,{team:a.teamData},0,o)})},K=function(n){if(n){if(n.keys&&n.keys.mailbox)return n.keys.mailbox;var t=e.find(n,["keys","roster","edit"]);if(t){var r=E.hash(e.decodeUTF8(t)),o=r.slice(0,32),a=e.uint8ArrayToHex(r.slice(32,48)),i=E.box.keyPair.fromSecretKey(o);return{channel:a,viewed:[],keys:{curvePrivate:e.encodeBase64(i.secretKey),curvePublic:e.encodeBase64(i.publicKey)}}}}};return b.init=function(t,r,o){var a={},i=t.store;if(i.loggedIn&&i.proxy.edPublic&&!i.modules?.team){var h={store:i,Store:t.Store,pinPads:t.pinPads,emit:o,onReadyHandlers:{},teams:{},cache:{},nocache:{},updateMetadata:t.updateMetadata,updateProgress:t.updateLoadingProgress,progress:0};i.proxy.teams||(i.proxy.teams={});var b=i.proxy.teams;h.numberOfTeams=Object.keys(b).length,h.store.proxy.on("change",["teams"],function(e,n,t){"hash"===t[2]&&P(h,t[1],n)}),h.store.proxy.on("remove",["teams"],function(e,n){"hash"===n[2]&&P(h,n[1])});var w=function(n,t){if(!n||!t)return!0;try{var r=e.decodeBase64(n),o=E.sign.keyPair.fromSecretKey(r);return e.encodeBase64(o.publicKey)===t}catch(e){return!1}};Object.keys(b).forEach(function(n){h.onReadyHandlers[n]=[],e.find(b,[n,"keys","mailbox"])||(b[n].keys.mailbox=K(b[n])),x(h,b[n],n,r(function(e){if(e){delete h.onReadyHandlers[n],delete h.cache[n],"NOCACHE"===e?.error&&(h.nocache[n]=!0);var t="string"==typeof e?e:e.type||e.message;return u.send("TEAM_LOADING_ERROR="+t),void console.error(e)}console.debug("Team "+n+" cache ready")}),d.isEnabled())}),a.onReady=function(t){var r;r={},Object.keys(b).forEach(function(t){try{var o=b[t],a=r[o.channel],i=e.find(o,["keys","drive","edPrivate"]),s=e.find(o,["keys","drive","edPublic"]);if(s?i&&s&&!w(i,s)&&(u.send("TEAM_CORRUPTED_EDPRIVATE"),delete b[t].keys.drive.edPrivate,i=void 0):u.send("TEAM_CORRUPTED_EDPUBLIC"),o.hash&&2===n.parseTypeHash("drive",o.hash).version&&40!==o.hash.length&&u.send("TEAM_CORRUPTED_HASH"),!a)return void(r[o.channel]=t);var c=b[a],f=e.find(c,["keys","drive","edPrivate"]),l=e.find(c,["keys","chat","edit"]),d=e.find(o,["keys","chat","edit"]);!c.hash&&o.hash&&(c.hash=o.hash),!f&&i&&(c.keys.drive.edPrivate=i),!l&&d&&(c.keys.chat.edit=d),h.store.proxy.duplicateTeams=h.store.proxy.duplicateTeams||{},h.store.proxy.duplicateTeams[t]=b[t],delete b[t]}catch(e){console.error(e)}});var o=function(e){return!b[e]&&(D(h,e),delete h.onReadyHandlers[e],!0)};Object.keys(h.teams).forEach(o),Object.keys(h.onReadyHandlers).forEach(function(n){if(!o(n)){var r=h.store.proxy.teams[n],a=e.find(r,["keys","roster","channel"]),i=e.once(e.mkAsync(t()));g(function(e){I(h,n,r.channel,a,e,i)}),h.onReadyHandlers[n].push({cb:i})}}),Object.keys(b).forEach(function(n){h.onReadyHandlers[n]||h.teams[n]||(h.onReadyHandlers[n]=[],e.find(b,[n,"keys","mailbox"])||(b[n].keys.mailbox=K(b[n])),x(h,b[n],n,t(function(e){if(e){var t="string"==typeof e?e:e.type||e.message;return u.send("TEAM_LOADING_ERROR="+t),void console.error(e)}console.debug("Team "+n+" ready")})))}),O(),A.fire()},a.getTeam=function(e){return h.teams[e]},a.getTeamsData=function(n){var t={},r=!1;return-1!==["drive","teams","settings"].indexOf(n)&&(r=!0),Object.keys(b).forEach(function(n){if(h.teams[n]){var o=h.teams[n].proxy||{},a=o.drive&&Object.keys(o.drive.filesData||{}).length,i=o.drive&&Object.keys(o.drive.sharedFolders||{}).length;t[n]={owner:b[n].owner,name:b[n].metadata.name,channel:b[n].channel,numberPads:a,numberSf:i,roster:e.find(b[n],["keys","roster","channel"]),edPublic:e.find(b[n],["keys","drive","edPublic"]),avatar:e.find(b[n],["metadata","avatar"]),viewer:!e.find(b[n],["keys","drive","edPrivate"]),notifications:e.find(b[n],["keys","mailbox","channel"]),curvePublic:e.find(b[n],["keys","mailbox","keys","curvePublic"]),validKeys:w(e.find(b[n],["keys","drive","edPrivate"]),e.find(b[n],["keys","drive","edPublic"]))},r&&h.teams[n]&&(t[n].secondaryKey=h.teams[n].secondaryKey),h.teams[n]&&(t[n].hasSecondaryKey=Boolean(h.teams[n].secondaryKey))}}),t},a.getTeams=function(){return Object.keys(h.teams)};a.removeFromTeam=function(e,n,t){if(b[e]&&(!t||function(e,n){var t=h.teams[e];if(t){var r=t.roster&&t.roster.getState();if(r.members)return(r.members[n]||{}).pending}}(e,n)))if(h.onReadyHandlers[e])h.onReadyHandlers[e].push({cb:function(){h.teams[e].roster.remove([n],function(e){e&&"NO_CHANGE"!==e&&console.error(e)})}});else{var r=h.teams[e];r?r.roster.remove([n],function(e){e&&"NO_CHANGE"!==e&&console.error(e)}):console.error("TEAM MODULE ERROR")}},a.changeMyRights=function(e,n,t,r){k(h,e,n,t,r)},a.updateMyData=function(e){Object.keys(h.teams).forEach(function(n){var t=h.teams[n];if(t.roster){var r={};r[e.curvePublic]=e,t.roster.describe(r,function(e){e&&console.error(e)})}})},a.removeClient=function(e){L(h,e)};return a.execCommand=function(t,r,o){var a=r.cmd,i=r.data;if("SUBSCRIBE"!==a)if("LIST_TEAMS"!==a)if("OPEN_TEAM_CHAT"!==a)if("GET_TEAM_ROSTER"!==a)if("GET_TEAM_METADATA"!==a)if("SET_TEAM_METADATA"!==a){if("OFFER_OWNERSHIP"===a)return h.store.offline?void o({error:"OFFLINE"}):void function(n,t,r,o){var a=e.once(o),i=t.teamId;if(i){var s=e.find(n,["store","proxy","teams",i]);if(s){var c=n.teams[i];if(c)if(c.roster)if(t.curvePublic){var u=c.roster.getState().members[t.curvePublic];g(function(t){var r=function(e){var n=e&&e.error;if(n)return console.error(n),t.abort(),void a({error:n})},o=function(e){n.Store.pad.setMetadata(null,{channel:e,command:"ADD_PENDING_OWNERS",value:[u.edPublic]},t(r))};o(s.channel),o(e.find(s,["keys","roster","channel"])),o(e.find(s,["keys","chat","channel"]))}).nThen(function(e){var n={};n[u.curvePublic]={role:"OWNER"},c.roster.describe(n,e(function(e){e&&console.error(e)}))}).nThen(function(t){n.store.mailbox.sendTo("ADD_OWNER",{teamChannel:s.channel,chatChannel:e.find(s,["keys","chat","channel"]),rosterChannel:e.find(s,["keys","roster","channel"]),title:s.metadata.name},{channel:u.notifications,curvePublic:u.curvePublic},t())}).nThen(function(){a()})}else a({error:"MISSING_DATA"});else a({error:"NO_ROSTER"});else a({error:"ENOENT"})}else a({error:"ENOENT"})}else a({error:"EINVAL"})}(h,i,0,o);if("ANSWER_OWNERSHIP"===a)return h.store.offline?void o({error:"OFFLINE"}):void function(n,t,r,o){var a,i=n.store.proxy.teams;if(Object.keys(i).forEach(function(e){if(i[e].channel===t.teamChannel)return a=e,!0}),a){var s=e.find(n,["store","proxy","teams",a]);if(s){var c=n.teams[a];if(c)if(c.roster){var u={};t.answer?s.owner=!0:(u[n.store.proxy.curvePublic]={role:"ADMIN"},c.roster.describe(u,function(e){e?o({error:e}):o()}))}else o({error:"NO_ROSTER"});else o({error:"ENOENT"})}else o({error:"ENOENT"})}else o({error:"EINVAL"})}(h,i,0,o);if("DESCRIBE_USER"!==a){if("INVITE_TO_TEAM"===a)return h.store.offline?void o({error:"OFFLINE"}):void function(e,n,t,r){var o=n.teamId;if(o){var a=e.teams[o];if(a)if(a.roster){var i=n.user;if(i&&i.curvePublic&&i.notifications){delete i.channel,delete i.lastKnownHash,i.pending=!0;var s={};s[i.curvePublic]=i,s[i.curvePublic].role="VIEWER",a.roster.add(s,function(n){n&&"NO_CHANGE"!==n?r({error:n}):e.store.mailbox.sendTo("INVITE_TO_TEAM",{team:R(e,o)},{channel:i.notifications,curvePublic:i.curvePublic},function(e){r(e)})})}else r({error:"MISSING_DATA"})}else r({error:"NO_ROSTER"});else r({error:"ENOENT"})}else r({error:"EINVAL"})}(h,i,0,o);if("LEAVE_TEAM"!==a){if("JOIN_TEAM"===a)return h.store.offline?void o({error:"OFFLINE"}):void C(h,i,0,o);if("REMOVE_USER"!==a){if("DELETE_TEAM"===a)return h.store.offline?void o({error:"OFFLINE"}):void function(n,t,r,o){var a=t.teamId;if(a){var i=n.teams[a],s=e.find(n,["store","proxy","teams",a]);if(i&&s){var c=i.roster.getState(),f=e.find(n,["store","proxy","curvePublic"]),l=c.members[f];if(!l||"OWNER"!==l.role)return o({error:"EFORBIDDEN"});var d=e.find(n,["store","proxy","edPublic"]),h=e.find(s,["keys","drive","edPublic"]);g(function(e){n.Store.anonRpcMsg(null,{msg:"GET_METADATA",data:s.channel},e(function(n){if(n&&n.error)return e.abort(),o({error:n.error});var t=n[0];t&&Array.isArray(t.owners)&&-1!==t.owners.indexOf(d)||(e.abort(),o({error:"EFORBIDDEN"}))}))}).nThen(function(t){i.proxy.delete=!0;var r=Array.from(i.manager.getChannelsList("owned")),o=e.Saferphore.create(10);r.forEach(function(e){var r=t();o.take(function(t){var o=!1;g(function(r){32===e.length&&n.Store.anonRpcMsg(null,{msg:"GET_METADATA",data:e},r(function(e){if(e&&e.error)return t(),void r.abort();var n=e[0];if(!n||!Array.isArray(n.owners)||-1===n.owners.indexOf(h))return t(),void r.abort();o=n.owners.some(function(e){return e!==h})}))}).nThen(function(t){o?n.Store.pad.setMetadata(null,{channel:e,command:"RM_OWNERS",value:[h]},t()):i.rpc.removeOwnedChannel(e,t(function(e){e&&console.error(e)}))}).nThen(function(){t(),r()})})})}).nThen(function(t){i.rpc.removePins(t(function(e){e&&console.error(e)}));var r=e.find(s,["keys","mailbox","channel"]);i.rpc.removeOwnedChannel(r,t(function(e){e&&console.error(e)}));var o=e.find(s,["keys","roster","channel"]);n.store.rpc.removeOwnedChannel(o,t(function(e){e&&console.error(e)}));var a=e.find(s,["keys","chat","channel"]);n.store.rpc.removeOwnedChannel(a,t(function(e){e&&console.error(e)})),n.store.rpc.removeOwnedChannel(s.channel,t(function(e){e&&console.error(e)}))}).nThen(function(){u.send("TEAM_DELETION"),D(n,a),o()})}else o({error:"ENOENT"})}else o({error:"EINVAL"})}(h,i,0,o);if("CREATE_TEAM"===a)return h.store.offline?void o({error:"OFFLINE"}):void function(t,r,o,a){var i,f=e.once(a),l=n.createChannelId(),h=n.createRandomHash("team",l),b=n.getSecrets("team",h,l),A=n.getViewHashFromKeys(b),O=E.sign.keyPair(),w=E.box.keyPair(),_=v.Team.createSeed(),T=v.Team.deriveMemberKeys(_,{curvePublic:t.store.proxy.curvePublic,curvePrivate:t.store.proxy.curvePrivate}),S=n.getSecrets("chat"),I=n.getHashes(S),x={network:t.store.network,channel:b.channel,data:{},validateKey:b.keys.validateKey,crypto:v.createEncryptor(b.keys),logLevel:1,classic:!0,ChainPad:m,Cache:d,owners:[t.store.proxy.edPublic]};g(function(e){s.create({network:t.store.network||t.store.networkPromise,channel:T.channel,owners:[t.store.proxy.edPublic],keys:T,store:t.store,lastKnownHash:void 0,newTeam:!0,Cache:d},e(function(n,r){if(n)return e.abort(),console.error(n),void f({error:"ROSTER_ERROR"});i=r;var o=c.createData(t.store.proxy);delete o.channel,i.init(o,e(function(n){if(n)return e.abort(),void f({error:"ROSTER_INIT_ERROR"})}))}));var n,r=v.createEncryptor(S.keys),o={network:t.store.network,channel:S.channel,noChainPad:!0,crypto:r,metadata:{validateKey:S.keys.validateKey,owners:[t.store.proxy.edPublic]}},a=e();o.onReady=function(){n&&n.stop(),a()},o.onError=function(){e.abort(),f({error:"CHAT_INIT_ERROR"})},n=y.start(o)}).nThen(function(e){i.metadata({name:r.name},e(function(n){if(n)return e.abort(),void f({error:"ROSTER_INIT_ERROR"})}))}).nThen(function(){var a=e.createRandomInteger();x.onMetadataUpdate=function(){var e=t.teams[a];e&&t.emit("ROSTER_CHANGE",a,e.clients)};var s=p.create(x),c=s.proxy;c.version=2,c.on("ready",function(){var d={mailbox:{channel:n.createChannelId(),viewed:[],keys:{curvePrivate:e.encodeBase64(w.secretKey),curvePublic:e.encodeBase64(w.publicKey)}},drive:{edPrivate:e.encodeBase64(O.secretKey),edPublic:e.encodeBase64(O.publicKey)},chat:{edit:I.editHash,view:I.viewHash,validateKey:S.keys.validateKey,channel:S.channel},roster:{channel:T.channel,edit:_,view:T.viewKeyStr}},p=t.store.proxy.teams[a]={owner:!0,channel:b.channel,hash:h,roHash:A,password:l,keys:d,metadata:{name:r.name}};c.drive={},N(t,a,s,i,d,o,function(){u.send("TEAM_CREATION"),t.store.mailbox.open("team-"+a,p.keys.mailbox,function(){},!0,{owners:p.keys.drive.edPublic}),t.updateMetadata(),f()})}).on("error",function(e){e&&void 0!==e.loaded&&!e.loaded&&f({error:"ECONNECT"}),e&&e.error&&"EDELETED"===e.error&&D(t,a)})})}(h,i,t,o);if("GET_EDITABLE_FOLDERS"!==a)if("CREATE_INVITE_LINK"!==a){if("GET_PREVIEW_CONTENT"!==a)return"ACCEPT_LINK_INVITATION"===a?h.store.offline?void o({error:"OFFLINE"}):void j(h,i,0,o):void 0;H(h,i,0,o)}else!function(n,t,r,o){var a=e.mkAsync(e.once(o)),i=t.teamId,s=n.teams[t.teamId],u=t.seeds,d=t.bytes64;if(i&&s){var h,p=s.roster;try{h=p.getState().metadata.name}catch(e){return void a({error:"TEAM_NAME_ERR"})}var v=t.message,y=t.name,m=t.hash,E=e.find(n,["store","proxy","teams",i]);try{var b=f.encryptHash(m,E.hash)}catch(e){console.error(e)}var A=f.derivePreviewKeys(u.preview),O=f.deriveInviteKeys(d),w=f.generateKeys(),D=t.role||"VIEWER",_=t.uses||1;g(function(e){!function(){var t=f.generateSignPair(),r={initialState:"{}",network:n.store.network,metadata:{owners:[n.store.proxy.edPublic,w.edPublic]}};r.metadata.validateKey=t.validateKey;var o={teamName:h,message:v,author:c.createData(n.store.proxy,!1),displayName:y},i={channel:A.channel,type:"pad",version:2,keys:{cryptKey:A.cryptKey,validateKey:t.validateKey,signKey:t.signKey}};l.put(i,JSON.stringify(o),e(function(n){if(n)return console.error("CRYPTPUT_ERR",n),e.abort(),void a({error:"SET_PREVIEW_CONTENT"})}),r)}(),function(){var t=f.generateSignPair(),r={initialState:"{}",network:n.store.network,metadata:{owners:[n.store.proxy.edPublic,w.edPublic]}};r.metadata.validateKey=t.validateKey;var o={teamData:R(n,i,"MEMBER"===D),ephemeral:{edPublic:w.edPublic,edPrivate:w.edPrivate,curvePublic:w.curvePublic,curvePrivate:w.curvePrivate}},s={channel:O.channel,type:"pad",version:2,keys:{cryptKey:O.cryptKey,validateKey:t.validateKey,signKey:t.signKey}};l.put(s,JSON.stringify(o),e(function(n){if(n)return console.error("CRYPTPUT_ERR",n),e.abort(),void a({error:"SET_PREVIEW_CONTENT"})}),r)}()}).nThen(function(e){s.pin([O.channel,A.channel],function(e){e&&e.error&&console.error(e.error)}),f.createRosterEntry(s.roster,{curvePublic:w.curvePublic,content:{curvePublic:w.curvePublic,displayName:t.name,pending:!0,remaining:_,totalUses:_,role:D,hash:b,inviteChannel:O.channel,previewChannel:A.channel}},e(function(n){n&&(e.abort(),a(n))}))}).nThen(function(){a()})}else a({error:"EINVAL"})}(h,i,0,o);else!function(n,t,r,o){var a=t.teamId;if(a){var i=n.teams[a];if(i){var s=i.manager.folders||{};o(Object.keys(s).filter(function(e){return!s[e].proxy.version}).map(function(n){var t=e.find(i,["user","userObject"]);return{name:e.find(s,[n,"proxy","metadata","title"]),path:t?t.findFile(n)[0]:[]}}))}else o({error:"ENOENT"})}else o({error:"EINVAL"})}(h,i,0,o)}else!function(e,n,t,r){var o=n.teamId;if(o){var a=e.teams[o];if(a)if(a.roster)if(n.curvePublic){var i=a.roster.getState().members[n.curvePublic];a.roster.remove([n.curvePublic],function(t){if(!t)return i&&i.notifications?void e.store.mailbox.sendTo("KICKED_FROM_TEAM",{pending:n.pending,teamChannel:R(e,o).channel,teamName:R(e,o).metadata.name},{channel:i.notifications,curvePublic:i.curvePublic},function(e){r(e)}):r();r({error:t})})}else r({error:"MISSING_DATA"});else r({error:"NO_ROSTER"});else r({error:"ENOENT"})}else r({error:"EINVAL"})}(h,i,0,o)}else!function(e,n,t,r){var o=n.teamId;if(o){var a=e.teams[o];if(a)if(a.roster){var i=e.store.proxy.curvePublic;a.roster.remove([i],function(n){n?r({error:n}):(D(e,o),r())})}else r({error:"NO_ROSTER"});else r({error:"ENOENT"})}else r({error:"EINVAL"})}(h,i,0,o)}else F(h,i,0,o)}else!function(e,n,t,r){var o=n.teamId;if(o){var a=e.teams[o];a?a.offline?r({error:"OFFLINE"}):a.roster?(n.metadata&&delete n.metadata.offline,a.roster.metadata(n.metadata,function(t){if(t)r({error:t});else{var a=e.store.proxy.teams[o];a&&(a.metadata=n.metadata),r()}})):r({error:"NO_ROSTER"}):r({error:"ENOENT"})}else r({error:"EINVAL"})}(h,i,0,o);else!function(e,n,t,r){var o=n.teamId;if(o){var a=e.teams[o];if(a)if(a.roster){var i=(a.roster.getState()||{}).metadata||{};i.offline=a.offline,r(i)}else r({error:"NO_ROSTER"});else r({error:"ENOENT"})}else r({error:"EINVAL"})}(h,i,0,o);else!function(n,t,r,o){var a=t.teamId;if(a){var i=e.find(n,["store","proxy","teams",a]);if(i){var s=n.teams[a];if(s)if(s.roster){var c,u=(s.roster.getState()||{}).members||{};g(function(e){n.Store.pad.getMetadata(null,{channel:i.channel},e(function(e){c=e&&e.error?s.listmap.metadata||{}:e}))}).nThen(function(){if(n.pending_owners=c.pending_owners,Array.isArray(c.pending_owners)&&c.pending_owners.forEach(function(t){var r;if(Object.keys(u).some(function(e){if(u[e].edPublic===t)return r=u[e],!0}),!r&&i.owner){var o=function(e){n.Store.pad.setMetadata(null,{channel:e,command:"RM_PENDING_OWNERS",value:[t]},function(){})};return o(i.channel),o(e.find(i,["keys","roster","channel"])),void o(e.find(i,["keys","chat","channel"]))}r.pendingOwner=!0}),n.store.messenger){var t=s.getChatData();(n.store.messenger.getOnlineList(t.channel)||[]).forEach(function(e){u[e]&&(u[e].online=!0)})}Object.keys(u).forEach(function(e){var n=u[e];if(n.inviteChannel&&n.hash)if(i.hash)try{n.hash=f.decryptHash(n.hash,i.hash)}catch(e){console.error(e)}else delete n.hash}),o(u)})}else o({error:"NO_ROSTER"});else o({error:"ENOENT"})}else o({error:"ENOENT"})}else o({error:"EINVAL"})}(h,i,0,o);else!function(e,n,t,r){var o=e.teams[n.teamId];if(o){var a=function(){e.emit("ROSTER_CHANGE",n.teamId,o.clients)};e.store.messenger?e.store.messenger.openTeamChat(o.getChatData(),a,t,r):O=function(){e.store.messenger.openTeamChat(o.getChatData(),a,t,r)}}else r({error:"ENOENT"})}(h,i,t,o);else!function(n){var t=e.clone(b);Object.keys(t).forEach(function(e){h.teams[e]?t[e].offline=h.teams[e].offline:(t[e].error=!0,h.nocache[e]&&(t[e].offline=!0))}),n(t)}(o);else!function(e,n,t,r){L(e,t);try{e.store.messenger.removeClient(t)}catch(e){}if(O=function(){},n)if(!e.onReadyHandlers[n]||e.teams[n])if(e.teams[n]){var o=e.teams[n].clients;-1===o.indexOf(t)&&o.push(t),r()}else r({error:"EINVAL"});else-1===e.onReadyHandlers[n].indexOf(t)&&e.onReadyHandlers[n].push({cId:t,cb:r});else r()}(h,i,t,o)},a}},b.anonGetPreviewContent=function(e,n,t){H(e,n,0,t)},b})(X(),te(),Y(),je(),ze(),Ue(),We(),Ut(),An(),Oe(),(St||(St=1,Tt=function(e,n,t,r){var o={},a=e.encodeBase64,i=e.decodeBase64;o.generateKeys=function(){var e=t.sign.keyPair(),n=t.box.keyPair();return{edPublic:a(e.publicKey),edPrivate:a(e.secretKey),curvePublic:a(n.publicKey),curvePrivate:a(n.secretKey)}},o.generateSignPair=function(){var e=t.sign.keyPair();return{validateKey:a(e.publicKey),signKey:a(e.secretKey)}};var s=function(r){var o=n.dispenser(i(r));return{channel:e.uint8ArrayToHex(o(16)),cryptKey:o(t.secretbox.keyLength)}};o.deriveInviteKeys=s,o.derivePreviewKeys=s,o.createRosterEntry=function(e,n,t){var r={};r[n.curvePublic]=n.content,e.invite(r,t)};var c=e.decodeUTF8;return o.encryptHash=function(e,n){var o=c(n),a=t.hash(o).subarray(0,32);return r.encrypt(e,a)},o.decryptHash=function(e,n){var o=c(n),a=t.hash(o).subarray(0,32);return r.decrypt(e,a)},o}(X(),Ie(),h(),M())),Tt),xn(),fe(),In(),T(),M(),D(),x(),qe(),h()),Nt}function Vt(){if(Ct)return xt;Ct=1;return xt=((e,n,t,r,o,a,i,s)=>{var c=e.Curve;const u={};let f={};u.setCustomize=e=>{f=e.Messages};var l="MSG",d="UNFRIEND",h="MAP_ID",p="MAP_ID_ACK",v=function(e){return JSON.parse(JSON.stringify(e))},y=function(e){for(var n=Object.keys(e).length,t=new Uint8Array(n),r=0;r{const n=p.store.network||e;n.on("message",function(e,n){I(p,e,n)}),n.on("disconnect",function(){p.emit("DISCONNECT",null,C(p))}),n.on("reconnect",function(){p.emit("RECONNECT",null,C(p))})});return h.networkPromise?.then(b),p.store.network&&b(),u.onFriendUpdate=function(e){var n=g(h.proxy,e);if(n&&n.channel){var t=p.channels[n.channel];t&&p.emit("UPDATE_DATA",{info:v(n),channel:n.channel},t.clients)}},u.onFriendAdded=function(e){if(p.friendsClients.length){var n=g(p.store.proxy,e.curvePublic);if("object"==typeof n)if(n.channel){var t=n.channel;p.channels[t]||P(p,null,n,function(){c("FRIEND",{curvePublic:n.curvePublic},p.friendsClients)})}}},u.onFriendRemoved=function(e,n){x(p,e,n)},u.getOnlineList=function(e){return function(e,n){var t=e.channels[n];if(t){var r=[],o=m(e.store.proxy,!1);return r.push(o.curvePublic),t.wc.members.forEach(function(n){if(n!==e.store.network.historyKeeper){var o=t.mapId[n]||{};o.curvePublic&&-1===r.indexOf(o.curvePublic)&&r.push(o.curvePublic)}}),r}}(p,e)},u.storeValidateKey=function(e,n){p.validateKeys[e]=n},u.leavePad=function(e){delete p.validateKeys[e],Object.keys(p.channels).some(function(n){var t=p.channels[n];if(t.padChan===e){t.wc&&t.wc.leave();var r=p.store.network;return t.onReconnect&&r.off("reconnect",t.onReconnect),t.stopped=!0,delete p.channels[n],!0}})},u.openTeamChat=function(n,r,o,a){!function(n,r,o,a,i){var s=o,c=s.channel,u=s.secret;if(c&&u){var f=t.once(t.mkAsync(function(){n.emit("TEAMCHAT_READY",c,[r]),i({readOnly:"object"==typeof u.keys&&!u.keys.validateKey,channel:c})})),l=n.channels[c];if(l)l.onReady.reg(function(){-1===l.clients.indexOf(r)&&l.clients.push(r),f()});else{u.keys.cryptKey&&(u.keys.cryptKey=y(u.keys.cryptKey));var d=e.createEncryptor(u.keys),h=u.keys&&u.keys.validateKey||s.validateKey,p={teamId:o.teamId,readOnly:"object"==typeof u.keys&&!u.keys.validateKey,encryptor:d,channel:c,isTeamChat:!0,decrypt:function(e){return d.decrypt(e,h)},clients:[r],onUserlistUpdate:a,onReady:f};R(n,p)}}else i({error:"EINVAL"})}(p,o,n,r,a)},u.removeClient=function(e){!function(e,n){var t=e.friendsClients.indexOf(n);-1!==t&&e.friendsClients.splice(t,1),Object.keys(e.channels).forEach(function(t){var r=e.channels[t],o=r.clients,a=o.indexOf(n);if(-1!==a&&o.splice(a,1),0===o.length){r.wc&&r.wc.leave();var i=e.store.network;return r.onReconnect&&i.off("reconnect",r.onReconnect),r.stopped=!0,delete e.channels[t],!0}})}(p,e)},u.execCommand=function(n,r,i){var c=r.cmd,u=r.data;"INIT_FRIENDS"!==c?"GET_ROOMS"!==c?"GET_MUTED_USERS"!==c?"GET_USERLIST"!==c?"OPEN_PAD_CHAT"!==c?"GET_MY_INFO"!==c?"REMOVE_FRIEND"!==c?"CANCEL_FRIEND"!==c?"MUTE_USER"!==c?"UNMUTE_USER"!==c?"GET_STATUS"!==c?"GET_MORE_HISTORY"!==c?"SEND_MESSAGE"!==c?"SET_CHANNEL_HEAD"!==c?"CLEAR_OWNED_CHANNEL"!==c||function(e,n,t){var r=e.channels[n];r?e.store.rpc?e.store.rpc.clearOwnedChannel(n,function(o){t({error:o}),o||(r.messages=[],e.emit("CLEAR_CHANNEL",n,r.clients))}):t({error:"RPC_NOT_READY"}):t({error:"NO_CHANNEL"})}(p,u,i):_(p,u.id,u.sig,i):function(e,n,t,r){var o=e.channels[n];if(o)if(o.readOnly)r({error:"FORBIDDEN"});else if(e.store.network.webChannels.some(function(e){if(e.id===o.wc.id)return!0})){var i=e.store.proxy||{},s=[l,i.curvePublic,+new Date,t];if(!o.isFriendChat){var c=i[a.displayNameKey]||f.anonymous+"#"+(i.uid||e.store.noDriveUid).slice(0,5);s.push(c)}var u=JSON.stringify(s),d=o.encrypt(u);o.wc.bcast(d).then(function(){N(e,o,d),r()},function(e){r({error:e})})}else r({error:"NO_SUCH_CHANNEL"});else r({error:"NO_CHANNEL"})}(p,u.id,u.content,i):function(e,n,r,o,a){if("function"==typeof a)if("string"==typeof r){var i=e.channels[n];if(void 0!==i){var s=t.uid();O(e,s,n,a);var c=["GET_HISTORY_RANGE",i.id,{from:r,count:o,txid:s}],u=e.store.network;u.sendto(u.historyKeeper,JSON.stringify(c)).then(function(){},function(e){console.error(e)})}else console.error("chan is undefined. we're going to have a problem here")}else a([])}(p,u.id,u.sig,u.count,i):function(e,n,t){var r=e.channels[n];if(r){r.onUserlistUpdate&&r.onUserlistUpdate();var o=e.store.proxy||{};t(r.wc.members.some(function(n){if(n!==e.store.network.historyKeeper){var t=r.mapId[n]||void 0;return!!t&&t.curvePublic!==o.curvePublic}}))}else t("NO_SUCH_CHANNEL")}(p,u,i):function(e,n,r){var o=t.once(t.mkAsync(r)),a=e.store.proxy,i=a.mutedUsers=a.mutedUsers||{};delete i[n],e.emit("UPDATE_MUTED",null,C(e)),o(Object.keys(i).length)}(p,u,i):function(e,n,r){var o=t.once(t.mkAsync(r)),a=e.store.proxy,i=a.mutedUsers=a.mutedUsers||{};i[n.curvePublic]||(i[n.curvePublic]=n,e.emit("UPDATE_MUTED",null,C(e))),o()}(p,u,i):function(e,n,r){var o=t.once(r);"function"==typeof o?e.Store.cancelFriendRequest(n,o):console.error("NO_CALLBACK")}(p,u,i):function(e,n,r){var a=t.once(r);if("function"==typeof a){var i=e.store.proxy,s=g(i,n);if(!s)return console.error("friend is not valid"),void a({error:"INVALID_FRIEND"});var c=e.channels[s.channel];if(e.store.mailbox&&s.curvePublic&&s.notifications)o.removeFriend(e.store,n,function(n){n&&n.error?a({error:n.error}):(e.updateMetadata(),a(n))});else if(c)try{var u=[d,i.curvePublic,+new Date],f=JSON.stringify(u),l=c.encrypt(f);c.wc.bcast(l).then(function(){x(e,n,s.channel),S(e,n,function(){a()})},function(t){t?a({error:t}):(x(e,n,s.channel),S(e,n,function(){a()}))})}catch(e){a({error:e})}else a({error:"NO_SUCH_CHANNEL"})}else console.error("NO_CALLBACK")}(p,u,i):function(e,n){var t=e.store.proxy||{};n({curvePublic:t.curvePublic,displayName:t[a.displayNameKey]})}(p,i):function(n,r,o,a){var i=o.channel,s=t.once(t.mkAsync(function(){n.emit("PADCHAT_READY",i,[r]),a()})),c=n.channels[i];if(c)c.onReady.reg(function(){-1===c.clients.indexOf(r)&&c.clients.push(r),s()});else{var u=o.secret;u.keys.cryptKey&&(u.keys.cryptKey=y(u.keys.cryptKey));var f=e.createEncryptor(u.keys),l=u.keys&&u.keys.validateKey||n.validateKeys[u.channel],d={padChan:o.secret&&o.secret.channel,readOnly:"object"==typeof u.keys&&!u.keys.validateKey,encryptor:f,channel:o.channel,isPadChat:!0,decrypt:function(e){return f.decrypt(e,l)},clients:[r],onReady:s};R(n,d)}}(p,n,u,i):function(e,n,t){var r=e.channels[n.id];if(r)if(r.isFriendChat){var o=A(e,n.id);if(!o)return void t({error:"NO_SUCH_FRIEND"});t([o])}else t([]);else t({error:"NO_SUCH_CHANNEL"})}(p,u,i):function(e,n){var t=e.store.proxy;if(!n)return t.mutedUsers||{};n(t.mutedUsers||{})}(p,i):function(e,n,t){var r=e.store.proxy;if(n&&n.curvePublic){var o=n.curvePublic,a=g(r,o);if(!a)return void t({error:"NO_SUCH_FRIEND"});var i=e.channels[a.channel];return i?void t([{id:i.id,isFriendChat:!0,name:a.displayName,lastKnownHash:a.lastKnownHash,curvePublic:a.curvePublic,messages:i.messages}]):void t({error:"NO_SUCH_CHANNEL"})}if(n&&n.padChat){var s=e.channels[n.padChat];return s?void t([{id:s.id,isPadChat:!0,messages:s.messages}]):void t({error:"NO_SUCH_CHANNEL"})}if(n&&n.teamChat){var c=e.channels[n.teamChat];return c?void t([{id:c.id,isTeamChat:!0,messages:c.messages}]):void t({error:"NO_SUCH_CHANNEL"})}var u=Object.keys(e.channels).map(function(n){var t,r,o,a=e.channels[n];if(a.isFriendChat){var i=A(e,n);if(!i)return null;t=i.displayName,r=i.lastKnownHash,o=i.curvePublic}else{if(a.isPadChat)return;if(a.isTeamChat)return}return{id:a.id,isFriendChat:a.isFriendChat,name:t,lastKnownHash:r,curvePublic:o,messages:a.messages}}).filter(function(e){return e});t(u)}(p,u,i):function(e,n,t){var r=E(e.store.proxy);s(function(t){Object.keys(r).forEach(function(o){if("me"!==o){var a=v(r[o]);"object"==typeof a&&a.channel&&P(e,n,a,t())}else delete r.me.channel})}).nThen(function(){-1===e.friendsClients.indexOf(n)&&e.friendsClients.push(n),t()})}(p,n,i)},u},u})(M(),te(),X(),je(),An(),Y(),on(),qe()),xt}function Yt(){if(Pt)return Rt;Pt=1;return Rt=((e,n,t,r)=>{const o={},a={};var i=function(n,t,o,a,i){var s,c=e.once(e.mkAsync(i)),u=function(n,t){if(!t)return e.find(n.store,["proxy","edPublic"]);var r=e.find(n,["store","proxy","teams",t]);return e.find(r,["keys","drive","edPublic"])}(n,a),f=n.Store,l=0,d=0,h=0;r(function(e){f.getFileSize(null,{channel:t},e(function(n){return n&&n.error?(e.abort(),void c(n)):void 0===n.size?(e.abort(),void c({error:"ENOENT"})):void(l=n.size)})),f.getHistory(null,{channel:t,lastKnownHash:o},e(function(n){if(n&&n.error)return e.abort(),void c(n);if(!Array.isArray(n))return e.abort(),void c({error:"EINVAL"});if(n.length){s=n[0].hash;var t=n.map(function(e){return e.msg});d=t.join("\n").length}}),!0),f.pad.getMetadata(null,{channel:t},e(function(n){if((!n||!n.error)&&n&&"object"==typeof n)return h=JSON.stringify(n).length,n&&Array.isArray(n.owners)&&-1!==n.owners.indexOf(u)?void 0:(e.abort(),void c({error:"INSUFFICIENT_PERMISSIONS"}))}))}).nThen(function(){c({size:l-h-d,hash:s})})};return a.GET_HISTORY_SIZE=function(o,a,s,c){if(o.store.loggedIn&&o.store.rpc){var u=a.channels;if(Array.isArray(u)){var f=[];a.account?u=function(r){var o=[],a=e.find(r.store,["proxy","edPublic"]);-1!==(e.find(r.store,["driveMetadata","owners"])||[]).indexOf(a)&&o.push(r.store.driveChannel);var i=r.store.proxy.profile;if(i){var s=i.edit?n.hrefToHexChannelId("/profile/#"+i.edit,null):null;s&&o.push(s)}r.store.proxy.todo&&o.push(n.hrefToHexChannelId("/todo/#"+r.store.proxy.todo,null));var c=r.store.proxy.mailboxes;if(c){var u=Object.keys(c).map(function(e){return{lastKnownHash:c[e].lastKnownHash,channel:c[e].channel}});Array.prototype.push.apply(o,u)}var f=r.store.proxy[t.SHARED_FOLDERS];if(f){var l=Object.keys(f).map(function(e){var n=f[e];if(n&&n.owners&&Array.isArray(n.owners)&&-1!==n.owners.indexOf(a))return n.channel}).filter(Boolean);Array.prototype.push.apply(o,l)}return o}(o):a.team&&(u=function(n,t){let r=e.find(n.store,["proxy","teams",t]);if(!r)return[];let o=[r.channel],a=r.keys.roster;return o.push({channel:a.channel,lastKnownHash:a.lastKnownHash}),o}(o,a.team));var l=0,d=[];r(function(e){u.forEach(function(n){var t,r=n;"object"==typeof n&&n.channel&&(r=n.channel,t=n.lastKnownHash),i(o,r,t,a.teamId,e(function(e){e&&e.error?f.push(e.error):(l+=e.size,e.hash&&d.push({channel:r,hash:e.hash}))}))})}).nThen(function(){c({warning:f.length?f:void 0,channels:d,size:l})})}else c({error:"EINVAL"})}else c({error:"INSUFFICIENT_PERMISSIONS"})},a.TRIM_HISTORY=function(e,n,t,o){if(e.store.loggedIn&&e.store.rpc){var a=n.channels;if(Array.isArray(a)){var i=function(e,n){if(!n)return e.store.rpc;var t=e.store.modules.team;if(t){var r=t.getTeam(n);if(r)return r.rpc}}(e,n.teamId);if(i){var s=[];r(function(e){a.forEach(function(n){i.trimHistory(n,e(function(e){e&&s.push(e)}))})}).nThen(function(){1===a.length&&s.length?o({error:s[0]}):o({warning:s.length?s:void 0})})}else o({error:"ENORPC"})}else o({error:"EINVAL"})}else o({error:"INSUFFICIENT_PERMISSIONS"})},o.init=function(e,n,t){var r={};if(e.store){var o={store:e.store,Store:e.Store,pinPads:e.pinPads,updateMetadata:e.updateMetadata,emit:t};return r.execCommand=function(e,n,t){var r=n.cmd,i=n.data;try{a[r](o,i,e,t)}catch(e){console.error(e)}},r}},o})(X(),te(),Ue(),qe()),Rt}var Gt,Jt={exports:{}};function qt(){return Gt||(Gt=1,function(e){(()=>{const n=e=>{var n={};const t=globalThis;var r=function(){},o=n.getWeekNo=function(e,n){"number"!=typeof n&&(n=1);var t=new Date(e.getFullYear(),0,1),r=t.getDay()-n;r=r>=0?r:r+7;var o,a=Math.floor((e.getTime()-t.getTime())/864e5)+1;if(r<4){if((o=Math.floor((a+r-1)/7)+1)>52){var i=new Date(e.getFullYear()+1,0,1).getDay()-n;o=(i=i>=0?i:i+7)<4?1:53}}else o=Math.floor((a+r-1)/7);return o},a=function(e){var n=new Date(e.getFullYear(),0,0),t=e-n+60*(n.getTimezoneOffset()-e.getTimezoneOffset())*1e3;return Math.floor(t/864e5)},i=n.DAYORDER=["SU","MO","TU","WE","TH","FR","SA"],s=function(e){var n=Number(e.slice(0,-2)),t=i.indexOf(e.slice(-2));return n?[n,t]:t},c=function(e,n){var t=e.getDay();t>=(n="number"==typeof n?n:1)?e.setDate(e.getDate()-(t-n)):e.setDate(e.getDate()-(7+t-n))},u=function(e){return e.getFullYear()+"-"+(e.getMonth()+1)+"-"+e.getDate()},f={daily:function(e,n){e.setDate(e.getDate()+n)},weekly:function(e,n){e.setDate(e.getDate()+7*n)},monthly:function(e,n){e.setMonth(e.getMonth()+n)},yearly:function(e,n){e.setFullYear(e.getFullYear()+n)}},l={month:function(e,n,t){var r=new Date(n.start),o=(t-(e.getMonth()+1)+12)%12,a=e.getMonth()+o;if(e.setMonth(a),e.setDate(r.getDate()),e.getMonth()===a)return!0},weekno:function(e,n,t,r){var a=r&&r.wkst;"number"!=typeof a&&(a=1);var i=new Date(n.start),s=new Date(e.getFullYear(),11,31),u=o(s,a),f=1===u;1===u&&(u=52);var l=o(e,a);if(!t||t>u)return!1;t<0&&(t=u+t+1);var d=t-l,h=new Date(+e);h.setDate(h.getDate()+7*d),c(h,a);var p="aaaaaaa".split("").map(function(n,t){var r=new Date(+h);if(r.setDate(r.getDate()+t),r.getFullYear()===e.getFullYear())return r.toLocaleDateString()!==i.toLocaleDateString()&&r}).filter(Boolean);return 1===t&&f&&(c(s,a),"aaaaaaa".split("").some(function(n,t){var r=new Date(+s);if(r.setDate(r.getDate()+t),r.toLocaleDateString()!==i.toLocaleDateString())return r.getFullYear()>e.getFullYear()||void p.push(r)})),p.length?p:void 0}};l.yearday=function(e,n,t){var r=e.getFullYear();if(function(e,n){if(!("number"!=typeof n||Math.abs(n)<1||Math.abs(n)>366))return n<0&&(n=a(new Date(e.getFullYear(),11,31))+n+1),e.setMonth(0),e.setDate(n),!0}(e,t)&&e.getFullYear()===r)return!0},l.monthday=function(e,n,t,r){if("number"!=typeof t||Math.abs(t)<1||Math.abs(t)>31)return!1;var o=function(e,n){var t=e.getMonth();n<0&&(n=new Date(e.getFullYear(),e.getMonth()+1,0).getDate()+n+1);return e.setDate(n),e.getMonth()===t};if("monthly"===r.freq)return o(e,t);var a="aaaaaaaaaaaa".split("").map(function(n,r){var a=new Date(e.getFullYear(),r,1);return o(a,t)?a:void 0}).filter(Boolean);return a.length?a:void 0},l.day=function(e,n,t,r){var o,a=s(t);Array.isArray(a)&&(o=a[0],a=a[1]);var i=[];if(![0,1,2,3,4,5,6].includes(a))return!1;var c,u=function(e){if(o){var n=[];"aaaaaaaaaaaa".split("").some(function(t,r){if(void 0===e||r===e){var a,s=i.filter(function(e){return e.getMonth()===r});return a=o<0?s.length+o:o-1,n.push(s[a]),void 0!==e&&r===e}}),i=n.filter(Boolean)}};if("yearly"===r.freq){c=new Date(+e);for(var f=e.getFullYear();c.getDay()!==a;)c.setDate(c.getDate()+1);for(;c.getFullYear()===f;)i.push(new Date(+c)),c.setDate(c.getDate()+7);return u(),i}if("monthly"===r.freq){c=new Date(+e);for(var l=e.getMonth();c.getDay()!==a;)c.setDate(c.getDate()+1);for(;c.getMonth()===l;)i.push(new Date(+c)),c.setDate(c.getDate()+7);return u(l),i}if("weekly"===r.freq)for(;e.getDay()!==a;)e.setDate(e.getDate()+1);return!0};var d={month:function(e,n){return e.filter(function(e){return n.includes(e.getMonth()+1)})},weekno:function(e,n,t){return e.filter(function(e){var r=t&&t.wkst;"number"!=typeof r&&(r=1);var a=new Date(e.getFullYear(),11,31),i=o(a,r);1===i&&(i=52);var s=o(e,r);return n.some(function(e){return e>0?e===s:s===i+e+1})})},yearday:function(e,n){return e.filter(function(e){var t=a(e),r=a(new Date(e.getFullYear(),11,31));return n.some(function(e){return e>0?e===t:t===r+e+1})})},monthday:function(n,t){return n.filter(function(n){var r=e.clone(t);return(r=r.map(function(e){e<0&&(e=new Date(n.getFullYear(),n.getMonth()+1,0).getDate()+e+1);return e})).includes(n.getDate())})},day:function(e,n,t){return e.filter(function(e){var r=e.toLocaleDateString(),o="yearly";return("monthly"===t.freq||"yearly"===t.freq&&t.by&&t.by.month)&&(o="monthly"),n.some(function(n){var t,a=s(n);if(Array.isArray(a)&&(t=a[0],a=a[1]),!t)return e.getDay()===a;var i=new Date(e.getFullYear(),e.getMonth(),1);return"yearly"===o&&i.setMonth(0),l.day(i,{},n,{freq:o}).some(function(e){return e.toLocaleDateString()===r})})})},setpos:function(n,t){var r=n.slice(),o=e.deduplicateString(t.slice().map(function(e){return e>0?e-1:0!==e?r.length+e:void 0}));return n.filter(function(e){var n=r.indexOf(e);return o.includes(n)})}},h=["month","weekno","yearday","monthday","day"],p=["month","monthday","day"];n.getMonthId=function(e){return e.getFullYear()+"-"+e.getMonth()};var v=t.CP_calendar_cache={},y={};n.resetCache=function(){v=t.CP_calendar_cache={},y={}};var m=function(n){if(!n.recUpdate)return[];var t={},r=n.recUpdate.from;return Object.keys(r||{}).forEach(function(e){var n=r[e];n.recurrenceRule&&(t[e]=n.recurrenceRule)}),Object.keys(t).sort(function(e,n){return Number(e)-Number(n)}).map(function(n){var r=e.clone(t[n]);if(f[r.freq]&&!(r.interval&&r.interval<1))return r._start=Number(n),r}).filter(Boolean)};n.getRecurring=function(o,i){t.CP_DEV_MODE&&(r=console.warn);var s=[];return o.forEach(function(t){var o=t.split("-"),g=new Date(o[0],o[1]),E=new Date(+g);E.setMonth(E.getMonth()+1),E.setMilliseconds(-1),r("Compute month",g.toLocaleDateString()),(i||[]).forEach(function(t){var o=new Date(t.start),i=new Date(t.end),b=t,A=t.recurrenceRule;if(A){var O=m(t),w=O.shift();if(!(o>=E)){for(var D=A.until,_=O.slice(),T=w;T&&T._start&&T._startn)){var t;if(n.getFullYear()===e.getFullYear())t=a(n)-a(e);else{var r=new Date(e.getFullYear(),11,31);for(t=a(r)-a(e)+a(n);r.getFullYear()+1=N)){r("Start iteration",i.toLocaleDateString());var m=function(n,t,o){var a=e.clone(t),i=new Date(a.start),s=a.id.split("|")[0],u=o.toLocaleDateString();v[s]=v[s]||{};var y=n.interval||1,m=n.freq,g=[],E=function(e,t){g=d[e](g,t,n)},b=function(e){return function(t){var r=new Date(+o);"yearly"===n.freq?(r.setMonth(0),r.setDate(1)):"monthly"===n.freq?r.setDate(1):"weekly"===n.freq?c(r,n.wkst):n.freq;var s=l[e](r,a,t,n);if(s)if(Array.isArray(s))s=s.filter(function(e){return e.toLocaleDateString()!==i.toLocaleDateString()}),Array.prototype.push.apply(g,s);else{if(r.toLocaleDateString()===i.toLocaleDateString())return;g.push(r)}}},A=e.once(function(){f[m](o,y)}),O=function(){"monthly"===m?o.setDate(15):"yearly"===m&&1===i.getMonth()&&29===i.getDate()&&o.setDate(28),A();var e=new Date(+o);if("monthly"===m||"yearly"===m){if(e.setDate(i.getDate()),e.getDate()!==i.getDate())return;if("yearly"===m&&e.getMonth()!==i.getMonth())return}g.push(e)};if(Array.isArray(v[s][u]))return r("Get cache",s,u),"monthly"===m?o.setDate(15):"yearly"===m&&1===i.getMonth()&&29===i.getDate()&&o.setDate(28),A(),v[s][u];if(n.by&&"yearly"===m){var w=h.slice(),D=!1;(n.by.weekno||n.by.yearday||n.by.monthday||n.by.day)&&(w.shift(),D=!0);var _=!0;w.forEach(function(e){var t=n.by[e];t&&(_?(t.forEach(b(e)),_=!1):"day"===e?n.by.yearday||n.by.monthday||n.by.weekno?E("day",n.by.day):n.by.day.forEach(b("day")):E(e,t))}),n.by.month&&D&&E("month",n.by.month)}n.by&&"monthly"===m&&(n.by.monthday||n.by.day?n.by.monthday?n.by.monthday.forEach(b("monthday")):n.by.day&&n.by.day.forEach(b("day")):O(),n.by.month&&E("month",n.by.month),n.by.day&&n.by.monthday&&E("day",n.by.day)),n.by&&"weekly"===m&&(n.by.day?n.by.day.forEach(b("day")):O(),n.by.month&&E("month",n.by.month)),n.by&&"daily"===m&&(O(),p.forEach(function(e){var t=n.by[e];t&&E(e,t)})),g.sort(function(e,n){return e-n}),n.by&&n.by.setpos&&E("setpos",n.by.setpos),n.by&&Object.keys(n.by).length?A():O();var T=[];return g=g.filter(function(e){var n=new Date(+e).toLocaleDateString();return!T.includes(n)&&(T.push(n),!0)}),r("Set cache",s,u),v[s][u]=g,g}(A,t,i);if(r("Iteration results",JSON.stringify(m.map(function(e){return new Date(e).toLocaleDateString()}))),!m.length)return i.getFullYear()=N)return r(h.toLocaleDateString(),"count"),D=!0,!0;if(h>=E)return r(h.toLocaleDateString(),"endMonth"),D=!0,!0;if(A.until&&h>A.until)return r(h.toLocaleDateString(),"until"),D=!0,!0;if(!(h=E||h=g){if(y[c.id]&&y[c.id].includes(c.start))return;y[c.id]=y[c.id]||[],y[c.id].push(c.start)}if(b.timeZone&&!c.isAllDay){var m=function(e,n,t){var r=function(e,n){let t=e.toLocaleString("en-CA",{timeZone:n,hour12:!1}).replace(", ","T");return t+="."+e.getMilliseconds().toString().padStart(3,"0"),-(new Date(t+"Z")-e)},o=Intl.DateTimeFormat().resolvedOptions().timeZone,a=r(n,e)-r(t,e);return r(n,o)-r(t,o)-a}(b.timeZone,o,h);c.start+=m,c.end+=m}return s.push(c),_?(v(),!0):void 0}r(h.toLocaleDateString(),"start")}),D||x(i)}};x(o),r("Added this month (all events)",s.map(function(e){return new Date(e.start).toLocaleDateString()}))}}}}})}),s},n.getAllOccurrences=function(e){if(!e.recurrenceRule)return[e.start];var t=e.recurrenceRule;if(!t.until&&!t.count)return!1;var r=[e.start],o=new Date(e.start);o.setDate(15);for(var a=[],i=0,s=function(){return t.count?r.length=1e4;)t.setDate(t.getDate()-a),o++;return{d:o*=a,h:(t=new Date(n)).getHours()-r.getHours(),m:t.getMinutes()-r.getMinutes()}};return n.applyUpdates=function(e){return e.forEach(function(e){if(e.raw={start:e.start,end:e.end},e.recUpdate){var n,t=e.recUpdate.from||{},r=e.recUpdate.one||{},o=e.start,a=m(e).filter(function(e){return e._start>o}).shift(),i=function(n,t){var r=n[t],o=new Date(e.raw[t]);o.setDate(o.getDate()+r.d),o.setHours(o.getHours()+r.h),o.setMinutes(o.getMinutes()+r.m),e[t]=+o};(n=t,Object.keys(n).sort(function(e,n){return Number(e)-Number(n)})).forEach(function(n){o",noCalendar:!1,now:new Date,onChange:[],onClose:[],onDayCreate:[],onDestroy:[],onKeyDown:[],onMonthChange:[],onOpen:[],onParseConfig:[],onReady:[],onValueUpdate:[],onYearChange:[],onPreCalendarPosition:[],plugins:[],position:"auto",positionElement:void 0,prevArrow:"",shorthandCurrentMonth:!1,showMonths:1,static:!1,time_24hr:!1,weekNumbers:!1,wrap:!1},o={weekdays:{shorthand:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],longhand:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]},months:{shorthand:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],longhand:["January","February","March","April","May","June","July","August","September","October","November","December"]},daysInMonth:[31,28,31,30,31,30,31,31,30,31,30,31],firstDayOfWeek:0,ordinal:function(e){var n=e%100;if(n>3&&n<21)return"th";switch(n%10){case 1:return"st";case 2:return"nd";case 3:return"rd";default:return"th"}},rangeSeparator:" to ",weekAbbreviation:"Wk",scrollTitle:"Scroll to increment",toggleTitle:"Click to toggle",amPM:["AM","PM"],yearAriaLabel:"Year",monthAriaLabel:"Month",hourAriaLabel:"Hour",minuteAriaLabel:"Minute",time_24hr:!1},a=function(e,n){return void 0===n&&(n=2),("000"+e).slice(-1*n)},i=function(e){return!0===e?1:0};function s(e,n){var t;return function(){var r=this;clearTimeout(t),t=setTimeout(function(){return e.apply(r,arguments)},n)}}var c=function(e){return e instanceof Array?e:[e]};function u(e,n,t){if(!0===t)return e.classList.add(n);e.classList.remove(n)}function f(e,n,t){var r=window.document.createElement(e);return n=n||"",t=t||"",r.className=n,void 0!==t&&(r.textContent=t),r}function l(e){for(;e.firstChild;)e.removeChild(e.firstChild)}function d(e,n){return n(e)?e:e.parentNode?d(e.parentNode,n):void 0}function h(e,n){var t=f("div","numInputWrapper"),r=f("input","numInput "+e),o=f("span","arrowUp"),a=f("span","arrowDown");if(-1===navigator.userAgent.indexOf("MSIE 9.0")?r.type="number":(r.type="text",r.pattern="\\d*"),void 0!==n)for(var i in n)r.setAttribute(i,n[i]);return t.appendChild(r),t.appendChild(o),t.appendChild(a),t}function p(e){try{return"function"==typeof e.composedPath?e.composedPath()[0]:e.target}catch(n){return e.target}}var v=function(){},y=function(e,n,t){return t.months[n?"shorthand":"longhand"][e]},m={D:v,F:function(e,n,t){e.setMonth(t.months.longhand.indexOf(n))},G:function(e,n){e.setHours(parseFloat(n))},H:function(e,n){e.setHours(parseFloat(n))},J:function(e,n){e.setDate(parseFloat(n))},K:function(e,n,t){e.setHours(e.getHours()%12+12*i(new RegExp(t.amPM[1],"i").test(n)))},M:function(e,n,t){e.setMonth(t.months.shorthand.indexOf(n))},S:function(e,n){e.setSeconds(parseFloat(n))},U:function(e,n){return new Date(1e3*parseFloat(n))},W:function(e,n,t){var r=parseInt(n),o=new Date(e.getFullYear(),0,2+7*(r-1),0,0,0,0);return o.setDate(o.getDate()-o.getDay()+t.firstDayOfWeek),o},Y:function(e,n){e.setFullYear(parseFloat(n))},Z:function(e,n){return new Date(n)},d:function(e,n){e.setDate(parseFloat(n))},h:function(e,n){e.setHours(parseFloat(n))},i:function(e,n){e.setMinutes(parseFloat(n))},j:function(e,n){e.setDate(parseFloat(n))},l:v,m:function(e,n){e.setMonth(parseFloat(n)-1)},n:function(e,n){e.setMonth(parseFloat(n)-1)},s:function(e,n){e.setSeconds(parseFloat(n))},u:function(e,n){return new Date(parseFloat(n))},w:v,y:function(e,n){e.setFullYear(2e3+parseFloat(n))}},g={D:"(\\w+)",F:"(\\w+)",G:"(\\d\\d|\\d)",H:"(\\d\\d|\\d)",J:"(\\d\\d|\\d)\\w+",K:"",M:"(\\w+)",S:"(\\d\\d|\\d)",U:"(.+)",W:"(\\d\\d|\\d)",Y:"(\\d{4})",Z:"(.+)",d:"(\\d\\d|\\d)",h:"(\\d\\d|\\d)",i:"(\\d\\d|\\d)",j:"(\\d\\d|\\d)",l:"(\\w+)",m:"(\\d\\d|\\d)",n:"(\\d\\d|\\d)",s:"(\\d\\d|\\d)",u:"(.+)",w:"(\\d\\d|\\d)",y:"(\\d{2})"},E={Z:function(e){return e.toISOString()},D:function(e,n,t){return n.weekdays.shorthand[E.w(e,n,t)]},F:function(e,n,t){return y(E.n(e,n,t)-1,!1,n)},G:function(e,n,t){return a(E.h(e,n,t))},H:function(e){return a(e.getHours())},J:function(e,n){return void 0!==n.ordinal?e.getDate()+n.ordinal(e.getDate()):e.getDate()},K:function(e,n){return n.amPM[i(e.getHours()>11)]},M:function(e,n){return y(e.getMonth(),!0,n)},S:function(e){return a(e.getSeconds())},U:function(e){return e.getTime()/1e3},W:function(e,n,t){return t.getWeek(e)},Y:function(e){return a(e.getFullYear(),4)},d:function(e){return a(e.getDate())},h:function(e){return e.getHours()%12?e.getHours()%12:12},i:function(e){return a(e.getMinutes())},j:function(e){return e.getDate()},l:function(e,n){return n.weekdays.longhand[e.getDay()]},m:function(e){return a(e.getMonth()+1)},n:function(e){return e.getMonth()+1},s:function(e){return e.getSeconds()},u:function(e){return e.getTime()},w:function(e){return e.getDay()},y:function(e){return String(e.getFullYear()).substring(2)}},b=function(e){var n=e.config,t=void 0===n?r:n,a=e.l10n,i=void 0===a?o:a,s=e.isMobile,c=void 0!==s&&s;return function(e,n,r){var o=r||i;return void 0===t.formatDate||c?n.split("").map(function(n,r,a){return E[n]&&"\\"!==a[r-1]?E[n](e,o,t):"\\"!==n?n:""}).join(""):t.formatDate(e,n,o)}},A=function(e){var n=e.config,t=void 0===n?r:n,a=e.l10n,i=void 0===a?o:a;return function(e,n,o,a){if(0===e||e){var s,c=a||i,u=e;if(e instanceof Date)s=new Date(e.getTime());else if("string"!=typeof e&&void 0!==e.toFixed)s=new Date(e);else if("string"==typeof e){var f=n||(t||r).dateFormat,l=String(e).trim();if("today"===l)s=new Date,o=!0;else if(/Z$/.test(l)||/GMT$/.test(l))s=new Date(e);else if(t&&t.parseDate)s=t.parseDate(e,f);else{s=t&&t.noCalendar?new Date((new Date).setHours(0,0,0,0)):new Date((new Date).getFullYear(),0,1,0,0,0,0);for(var d=void 0,h=[],p=0,v=0,y="";p=0?new Date:new Date(E.config.minDate.getTime()),t=D(E.config);n.setHours(t.hours,t.minutes,t.seconds,n.getMilliseconds()),E.selectedDates=[n],E.latestSelectedDateObj=n}void 0!==e&&"blur"!==e.type&&function(e){e.preventDefault();var n="keydown"===e.type,t=p(e),r=t;void 0!==E.amPM&&t===E.amPM&&(E.amPM.textContent=E.l10n.amPM[i(E.amPM.textContent===E.l10n.amPM[0])]);var o=parseFloat(r.getAttribute("min")),s=parseFloat(r.getAttribute("max")),c=parseFloat(r.getAttribute("step")),u=parseInt(r.value,10),f=u+c*(e.delta||(n?38===e.which?1:-1:0));if(void 0!==r.value&&2===r.value.length){var l=r===E.hourElement,d=r===E.minuteElement;fs&&(f=r===E.hourElement?f-s-i(!E.amPM):o,d&&L(void 0,1,E.hourElement)),E.amPM&&l&&(1===c?f+u===23:Math.abs(f-u)>c)&&(E.amPM.textContent=E.l10n.amPM[i(E.amPM.textContent===E.l10n.amPM[0])]),r.value=a(f)}}(e);var r=E._input.value;I(),be(),E._input.value!==r&&E._debouncedChange()}function I(){if(void 0!==E.hourElement&&void 0!==E.minuteElement){var e,n,t=(parseInt(E.hourElement.value.slice(-2),10)||0)%24,r=(parseInt(E.minuteElement.value,10)||0)%60,o=void 0!==E.secondElement?(parseInt(E.secondElement.value,10)||0)%60:0;void 0!==E.amPM&&(e=t,n=E.amPM.textContent,t=e%12+12*i(n===E.l10n.amPM[1]));var a=void 0!==E.config.minTime||E.config.minDate&&E.minDateHasTime&&E.latestSelectedDateObj&&0===O(E.latestSelectedDateObj,E.config.minDate,!0);if(void 0!==E.config.maxTime||E.config.maxDate&&E.maxDateHasTime&&E.latestSelectedDateObj&&0===O(E.latestSelectedDateObj,E.config.maxDate,!0)){var s=void 0!==E.config.maxTime?E.config.maxTime:E.config.maxDate;(t=Math.min(t,s.getHours()))===s.getHours()&&(r=Math.min(r,s.getMinutes())),r===s.getMinutes()&&(o=Math.min(o,s.getSeconds()))}if(a){var c=void 0!==E.config.minTime?E.config.minTime:E.config.minDate;(t=Math.max(t,c.getHours()))===c.getHours()&&r=12)]),void 0!==E.secondElement&&(E.secondElement.value=a(t)))}function R(e){var n=p(e),t=parseInt(n.value)+(e.delta||0);(t/1e3>1||"Enter"===e.key&&!/[^\d]/.test(t.toString()))&&Z(t)}function P(e,n,t,r){return n instanceof Array?n.forEach(function(n){return P(e,n,t,r)}):e instanceof Array?e.forEach(function(e){return P(e,n,t,r)}):(e.addEventListener(n,t,r),void E._handlers.push({remove:function(){return e.removeEventListener(n,t)}}))}function k(){ve("onChange")}function M(e,n){var t=void 0!==e?E.parseDate(e):E.latestSelectedDateObj||(E.config.minDate&&E.config.minDate>E.now?E.config.minDate:E.config.maxDate&&E.config.maxDate=0&&O(e,E.selectedDates[1])<=0}(n)&&!me(n)&&a.classList.add("inRange"),E.weekNumbers&&1===E.config.showMonths&&"prevMonthDay"!==e&&t%7==1&&E.weekNumbers.insertAdjacentHTML("beforeend",""+E.config.getWeek(n)+""),ve("onDayCreate",a),a}function j(e){e.focus(),"range"===E.config.mode&&re(e)}function K(e){for(var n=e>0?0:E.config.showMonths-1,t=e>0?E.config.showMonths:-1,r=n;r!=t;r+=e)for(var o=E.daysContainer.children[r],a=e>0?0:o.children.length-1,i=e>0?o.children.length:-1,s=a;s!=i;s+=e){var c=o.children[s];if(-1===c.className.indexOf("hidden")&&$(c.dateObj))return c}}function U(e,n){var t=ee(document.activeElement||document.body),r=void 0!==e?e:t?document.activeElement:void 0!==E.selectedDateElem&&ee(E.selectedDateElem)?E.selectedDateElem:void 0!==E.todayDateElem&&ee(E.todayDateElem)?E.todayDateElem:K(n>0?1:-1);void 0===r?E._input.focus():t?function(e,n){for(var t=-1===e.className.indexOf("Month")?e.dateObj.getMonth():E.currentMonth,r=n>0?E.config.showMonths:-1,o=n>0?1:-1,a=t-E.currentMonth;a!=r;a+=o)for(var i=E.daysContainer.children[a],s=t-E.currentMonth===a?e.$i+n:n<0?i.children.length-1:0,c=i.children.length,u=s;u>=0&&u0?c:-1);u+=o){var f=i.children[u];if(-1===f.className.indexOf("hidden")&&$(f.dateObj)&&Math.abs(e.$i-u)>=Math.abs(n))return j(f)}E.changeMonth(o),U(K(o),0)}(r,n):j(r)}function B(e,n){for(var t=(new Date(e,n,1).getDay()-E.l10n.firstDayOfWeek+7)%7,r=E.utils.getDaysInMonth((n-1+12)%12,e),o=E.utils.getDaysInMonth(n,e),a=window.document.createDocumentFragment(),i=E.config.showMonths>1,s=i?"prevMonthDay hidden":"prevMonthDay",c=i?"nextMonthDay hidden":"nextMonthDay",u=r+1-t,l=0;u<=r;u++,l++)a.appendChild(H(s,new Date(e,n-1,u),u,l));for(u=1;u<=o;u++,l++)a.appendChild(H("",new Date(e,n,u),u,l));for(var d=o+1;d<=42-t&&(1===E.config.showMonths||l%7!=0);d++,l++)a.appendChild(H(c,new Date(e,n+1,d%o),d,l));var h=f("div","dayContainer");return h.appendChild(a),h}function V(){if(void 0!==E.daysContainer){l(E.daysContainer),E.weekNumbers&&l(E.weekNumbers);for(var e=document.createDocumentFragment(),n=0;n1||"dropdown"!==E.config.monthSelectorType)){var e=function(e){return!(void 0!==E.config.minDate&&E.currentYear===E.config.minDate.getFullYear()&&eE.config.maxDate.getMonth())};E.monthsDropdownContainer.tabIndex=-1,E.monthsDropdownContainer.innerHTML="";for(var n=0;n<12;n++)if(e(n)){var t=f("option","flatpickr-monthDropdown-month");t.value=new Date(E.currentYear,n).getMonth().toString(),t.textContent=y(n,E.config.shorthandCurrentMonth,E.l10n),t.tabIndex=-1,E.currentMonth===n&&(t.selected=!0),E.monthsDropdownContainer.appendChild(t)}}}function G(){var e,n=f("div","flatpickr-month"),t=window.document.createDocumentFragment();E.config.showMonths>1||"static"===E.config.monthSelectorType?e=f("span","cur-month"):(E.monthsDropdownContainer=f("select","flatpickr-monthDropdown-months"),E.monthsDropdownContainer.setAttribute("aria-label",E.l10n.monthAriaLabel),P(E.monthsDropdownContainer,"change",function(e){var n=p(e),t=parseInt(n.value,10);E.changeMonth(t-E.currentMonth),ve("onMonthChange")}),Y(),e=E.monthsDropdownContainer);var r=h("cur-year",{tabindex:"-1"}),o=r.getElementsByTagName("input")[0];o.setAttribute("aria-label",E.l10n.yearAriaLabel),E.config.minDate&&o.setAttribute("min",E.config.minDate.getFullYear().toString()),E.config.maxDate&&(o.setAttribute("max",E.config.maxDate.getFullYear().toString()),o.disabled=!!E.config.minDate&&E.config.minDate.getFullYear()===E.config.maxDate.getFullYear());var a=f("div","flatpickr-current-month");return a.appendChild(e),a.appendChild(r),t.appendChild(a),n.appendChild(t),{container:n,yearElement:o,monthElement:e}}function J(){l(E.monthNav),E.monthNav.appendChild(E.prevMonthNav),E.config.showMonths&&(E.yearElements=[],E.monthElements=[]);for(var e=E.config.showMonths;e--;){var n=G();E.yearElements.push(n.yearElement),E.monthElements.push(n.monthElement),E.monthNav.appendChild(n.container)}E.monthNav.appendChild(E.nextMonthNav)}function q(){E.weekdayContainer?l(E.weekdayContainer):E.weekdayContainer=f("div","flatpickr-weekdays");for(var e=E.config.showMonths;e--;){var n=f("div","flatpickr-weekdaycontainer");E.weekdayContainer.appendChild(n)}return W(),E.weekdayContainer}function W(){if(E.weekdayContainer){var e=E.l10n.firstDayOfWeek,t=n(E.l10n.weekdays.shorthand);e>0&&e\n "+t.join("")+"\n \n "}}function z(e,n){void 0===n&&(n=!0);var t=n?e:e-E.currentMonth;t<0&&!0===E._hidePrevMonthArrow||t>0&&!0===E._hideNextMonthArrow||(E.currentMonth+=t,(E.currentMonth<0||E.currentMonth>11)&&(E.currentYear+=E.currentMonth>11?1:-1,E.currentMonth=(E.currentMonth+12)%12,ve("onYearChange"),Y()),V(),ve("onMonthChange"),ge())}function Q(e){return!(!E.config.appendTo||!E.config.appendTo.contains(e))||E.calendarContainer.contains(e)}function X(e){if(E.isOpen&&!E.config.inline){var n=p(e),t=Q(n),r=n===E.input||n===E.altInput||E.element.contains(n)||e.path&&e.path.indexOf&&(~e.path.indexOf(E.input)||~e.path.indexOf(E.altInput)),o="blur"===e.type?r&&e.relatedTarget&&!Q(e.relatedTarget):!r&&!t&&!Q(e.relatedTarget),a=!E.config.ignoredFocusElements.some(function(e){return e.contains(n)});o&&a&&(void 0!==E.timeContainer&&void 0!==E.minuteElement&&void 0!==E.hourElement&&""!==E.input.value&&void 0!==E.input.value&&N(),E.close(),E.config&&"range"===E.config.mode&&1===E.selectedDates.length&&(E.clear(!1),E.redraw()))}}function Z(e){if(!(!e||E.config.minDate&&eE.config.maxDate.getFullYear())){var n=e,t=E.currentYear!==n;E.currentYear=n||E.currentYear,E.config.maxDate&&E.currentYear===E.config.maxDate.getFullYear()?E.currentMonth=Math.min(E.config.maxDate.getMonth(),E.currentMonth):E.config.minDate&&E.currentYear===E.config.minDate.getFullYear()&&(E.currentMonth=Math.max(E.config.minDate.getMonth(),E.currentMonth)),t&&(E.redraw(),ve("onYearChange"),Y())}}function $(e,n){var t;void 0===n&&(n=!0);var r=E.parseDate(e,void 0,n);if(E.config.minDate&&r&&O(r,E.config.minDate,void 0!==n?n:!E.minDateHasTime)<0||E.config.maxDate&&r&&O(r,E.config.maxDate,void 0!==n?n:!E.maxDateHasTime)>0)return!1;if(!E.config.enable&&0===E.config.disable.length)return!0;if(void 0===r)return!1;for(var o=!!E.config.enable,a=null!==(t=E.config.enable)&&void 0!==t?t:E.config.disable,i=0,s=void 0;i=s.from.getTime()&&r.getTime()<=s.to.getTime())return o}return!o}function ee(e){return void 0!==E.daysContainer&&-1===e.className.indexOf("hidden")&&-1===e.className.indexOf("flatpickr-disabled")&&E.daysContainer.contains(e)}function ne(e){e.target!==E._input||!(E.selectedDates.length>0||E._input.value.length>0)||e.relatedTarget&&Q(e.relatedTarget)||E.setDate(E._input.value,!0,e.target===E.altInput?E.config.altFormat:E.config.dateFormat)}function te(e){var n=p(e),t=E.config.wrap?v.contains(n):n===E._input,r=E.config.allowInput,o=E.isOpen&&(!r||!t),a=E.config.inline&&t&&!r;if(13===e.keyCode&&t){if(r)return E.setDate(E._input.value,!0,n===E.altInput?E.config.altFormat:E.config.dateFormat),n.blur();E.open()}else if(Q(n)||o||a){var i=!!E.timeContainer&&E.timeContainer.contains(n);switch(e.keyCode){case 13:i?(e.preventDefault(),N(),fe()):le(e);break;case 27:e.preventDefault(),fe();break;case 8:case 46:t&&!E.config.allowInput&&(e.preventDefault(),E.clear());break;case 37:case 39:if(i||t)E.hourElement&&E.hourElement.focus();else if(e.preventDefault(),void 0!==E.daysContainer&&(!1===r||document.activeElement&&ee(document.activeElement))){var s=39===e.keyCode?1:-1;e.ctrlKey?(e.stopPropagation(),z(s),U(K(1),0)):U(void 0,s)}break;case 38:case 40:e.preventDefault();var c=40===e.keyCode?1:-1;E.daysContainer&&void 0!==n.$i||n===E.input||n===E.altInput?e.ctrlKey?(e.stopPropagation(),Z(E.currentYear-c),U(K(1),0)):i||U(void 0,7*c):n===E.currentYearElement?Z(E.currentYear-c):E.config.enableTime&&(!i&&E.hourElement&&E.hourElement.focus(),N(e),E._debouncedChange());break;case 9:if(i){var u=[E.hourElement,E.minuteElement,E.secondElement,E.amPM].concat(E.pluginElements).filter(function(e){return e}),f=u.indexOf(n);if(-1!==f){var l=u[f+(e.shiftKey?-1:1)];e.preventDefault(),(l||E._input).focus()}}else!E.config.noCalendar&&E.daysContainer&&E.daysContainer.contains(n)&&e.shiftKey&&(e.preventDefault(),E._input.focus())}}if(void 0!==E.amPM&&n===E.amPM)switch(e.key){case E.l10n.amPM[0].charAt(0):case E.l10n.amPM[0].charAt(0).toLowerCase():E.amPM.textContent=E.l10n.amPM[0],I(),be();break;case E.l10n.amPM[1].charAt(0):case E.l10n.amPM[1].charAt(0).toLowerCase():E.amPM.textContent=E.l10n.amPM[1],I(),be()}(t||Q(n))&&ve("onKeyDown",e)}function re(e){if(1===E.selectedDates.length&&(!e||e.classList.contains("flatpickr-day")&&!e.classList.contains("flatpickr-disabled"))){for(var n=e?e.dateObj.getTime():E.days.firstElementChild.dateObj.getTime(),t=E.parseDate(E.selectedDates[0],void 0,!0).getTime(),r=Math.min(n,E.selectedDates[0].getTime()),o=Math.max(n,E.selectedDates[0].getTime()),a=!1,i=0,s=0,c=r;cr&&ci)?i=c:c>t&&(!s||c0&&h0&&h>s;return p?(d.classList.add("notAllowed"),["inRange","startRange","endRange"].forEach(function(e){d.classList.remove(e)}),"continue"):a&&!p?"continue":(["startRange","inRange","endRange","notAllowed"].forEach(function(e){d.classList.remove(e)}),void(void 0!==e&&(e.classList.add(n<=E.selectedDates[0].getTime()?"startRange":"endRange"),tn&&h===t&&d.classList.add("endRange"),h>=i&&(0===s||h<=s)&&(u=t,l=n,(c=h)>Math.min(u,l)&&c0||t.getMinutes()>0||t.getSeconds()>0),E.selectedDates&&(E.selectedDates=E.selectedDates.filter(function(e){return $(e)}),E.selectedDates.length||"min"!==e||x(t),be()),E.daysContainer&&(ue(),void 0!==t?E.currentYearElement[e]=t.getFullYear().toString():E.currentYearElement.removeAttribute(e),E.currentYearElement.disabled=!!r&&void 0!==t&&r.getFullYear()===t.getFullYear())}}function ie(){return E.config.wrap?v.querySelector("[data-input]"):v}function se(){"object"!=typeof E.config.locale&&void 0===S.l10ns[E.config.locale]&&E.config.errorHandler(new Error("flatpickr: invalid locale "+E.config.locale)),E.l10n=e(e({},S.l10ns.default),"object"==typeof E.config.locale?E.config.locale:"default"!==E.config.locale?S.l10ns[E.config.locale]:void 0),g.K="("+E.l10n.amPM[0]+"|"+E.l10n.amPM[1]+"|"+E.l10n.amPM[0].toLowerCase()+"|"+E.l10n.amPM[1].toLowerCase()+")",void 0===e(e({},m),JSON.parse(JSON.stringify(v.dataset||{}))).time_24hr&&void 0===S.defaultConfig.time_24hr&&(E.config.time_24hr=E.l10n.time_24hr),E.formatDate=b(E),E.parseDate=A({config:E.config,l10n:E.l10n})}function ce(e){if("function"!=typeof E.config.position){if(void 0!==E.calendarContainer){ve("onPreCalendarPosition");var n=e||E._positionElement,t=Array.prototype.reduce.call(E.calendarContainer.children,function(e,n){return e+n.offsetHeight},0),r=E.calendarContainer.offsetWidth,o=E.config.position.split(" "),a=o[0],i=o.length>1?o[1]:null,s=n.getBoundingClientRect(),c=window.innerHeight-s.bottom,f="above"===a||"below"!==a&&ct,l=window.pageYOffset+s.top+(f?-t-2:n.offsetHeight+2);if(u(E.calendarContainer,"arrowTop",!f),u(E.calendarContainer,"arrowBottom",f),!E.config.inline){var d=window.pageXOffset+s.left,h=!1,p=!1;"center"===i?(d-=(r-s.width)/2,h=!0):"right"===i&&(d-=r-s.width,p=!0),u(E.calendarContainer,"arrowLeft",!h&&!p),u(E.calendarContainer,"arrowCenter",h),u(E.calendarContainer,"arrowRight",p);var v=window.document.body.offsetWidth-(window.pageXOffset+s.right),y=d+r>window.document.body.offsetWidth,m=v+r>window.document.body.offsetWidth;if(u(E.calendarContainer,"rightMost",y),!E.config.static)if(E.calendarContainer.style.top=l+"px",y)if(m){var g=function(){for(var e=null,n=0;nE.currentMonth+E.config.showMonths-1)&&"range"!==E.config.mode;if(E.selectedDateElem=t,"single"===E.config.mode)E.selectedDates=[r];else if("multiple"===E.config.mode){var a=me(r);a?E.selectedDates.splice(parseInt(a),1):E.selectedDates.push(r)}else"range"===E.config.mode&&(2===E.selectedDates.length&&E.clear(!1,!1),E.latestSelectedDateObj=r,E.selectedDates.push(r),0!==O(r,E.selectedDates[0],!0)&&E.selectedDates.sort(function(e,n){return e.getTime()-n.getTime()}));if(I(),o){var i=E.currentYear!==r.getFullYear();E.currentYear=r.getFullYear(),E.currentMonth=r.getMonth(),i&&(ve("onYearChange"),Y()),ve("onMonthChange")}if(ge(),V(),be(),o||"range"===E.config.mode||1!==E.config.showMonths?void 0!==E.selectedDateElem&&void 0===E.hourElement&&E.selectedDateElem&&E.selectedDateElem.focus():j(t),void 0!==E.hourElement&&void 0!==E.hourElement&&E.hourElement.focus(),E.config.closeOnSelect){var s="single"===E.config.mode&&!E.config.enableTime,c="range"===E.config.mode&&2===E.selectedDates.length&&!E.config.enableTime;(s||c)&&fe()}k()}}E.parseDate=A({config:E.config,l10n:E.l10n}),E._handlers=[],E.pluginElements=[],E.loadedPlugins=[],E._bind=P,E._setHoursFromDate=x,E._positionCalendar=ce,E.changeMonth=z,E.changeYear=Z,E.clear=function(e,n){if(void 0===e&&(e=!0),void 0===n&&(n=!0),E.input.value="",void 0!==E.altInput&&(E.altInput.value=""),void 0!==E.mobileInput&&(E.mobileInput.value=""),E.selectedDates=[],E.latestSelectedDateObj=void 0,!0===n&&(E.currentYear=E._initialDate.getFullYear(),E.currentMonth=E._initialDate.getMonth()),!0===E.config.enableTime){var t=D(E.config);C(t.hours,t.minutes,t.seconds)}E.redraw(),e&&ve("onChange")},E.close=function(){E.isOpen=!1,E.isMobile||(void 0!==E.calendarContainer&&E.calendarContainer.classList.remove("open"),void 0!==E._input&&E._input.classList.remove("active")),ve("onClose")},E._createElement=f,E.destroy=function(){void 0!==E.config&&ve("onDestroy");for(var e=E._handlers.length;e--;)E._handlers[e].remove();if(E._handlers=[],E.mobileInput)E.mobileInput.parentNode&&E.mobileInput.parentNode.removeChild(E.mobileInput),E.mobileInput=void 0;else if(E.calendarContainer&&E.calendarContainer.parentNode)if(E.config.static&&E.calendarContainer.parentNode){var n=E.calendarContainer.parentNode;if(n.lastChild&&n.removeChild(n.lastChild),n.parentNode){for(;n.firstChild;)n.parentNode.insertBefore(n.firstChild,n);n.parentNode.removeChild(n)}}else E.calendarContainer.parentNode.removeChild(E.calendarContainer);E.altInput&&(E.input.type="text",E.altInput.parentNode&&E.altInput.parentNode.removeChild(E.altInput),delete E.altInput),E.input&&(E.input.type=E.input._type,E.input.classList.remove("flatpickr-input"),E.input.removeAttribute("readonly")),["_showTimeInput","latestSelectedDateObj","_hideNextMonthArrow","_hidePrevMonthArrow","__hideNextMonthArrow","__hidePrevMonthArrow","isMobile","isOpen","selectedDateElem","minDateHasTime","maxDateHasTime","days","daysContainer","_input","_positionElement","innerContainer","rContainer","monthNav","todayDateElem","calendarContainer","weekdayContainer","prevMonthNav","nextMonthNav","monthsDropdownContainer","currentMonthElement","currentYearElement","navigationCurrentMonth","selectedDateElem","config"].forEach(function(e){try{delete E[e]}catch(e){}})},E.isEnabled=$,E.jumpToDate=M,E.open=function(e,n){if(void 0===n&&(n=E._positionElement),!0===E.isMobile){if(e){e.preventDefault();var t=p(e);t&&t.blur()}return void 0!==E.mobileInput&&(E.mobileInput.focus(),E.mobileInput.click()),void ve("onOpen")}if(!E._input.disabled&&!E.config.inline){var r=E.isOpen;E.isOpen=!0,r||(E.calendarContainer.classList.add("open"),E._input.classList.add("active"),ve("onOpen"),ce(n)),!0===E.config.enableTime&&!0===E.config.noCalendar&&(!1!==E.config.allowInput||void 0!==e&&E.timeContainer.contains(e.relatedTarget)||setTimeout(function(){return E.hourElement.select()},50))}},E.redraw=ue,E.set=function(e,n){if(null!==e&&"object"==typeof e)for(var r in Object.assign(E.config,e),e)void 0!==de[r]&&de[r].forEach(function(e){return e()});else E.config[e]=n,void 0!==de[e]?de[e].forEach(function(e){return e()}):t.indexOf(e)>-1&&(E.config[e]=c(n));E.redraw(),be(!0)},E.setDate=function(e,n,t){if(void 0===n&&(n=!1),void 0===t&&(t=E.config.dateFormat),0!==e&&!e||e instanceof Array&&0===e.length)return E.clear(n);he(e,t),E.latestSelectedDateObj=E.selectedDates[E.selectedDates.length-1],E.redraw(),M(void 0,n),x(),0===E.selectedDates.length&&E.clear(!1),be(n),n&&ve("onChange")},E.toggle=function(e){if(!0===E.isOpen)return E.close();E.open(e)};var de={locale:[se,W],showMonths:[J,T,q],minDate:[M],maxDate:[M],clickOpens:[function(){!0===E.config.clickOpens?(P(E._input,"focus",E.open),P(E._input,"click",E.open)):(E._input.removeEventListener("focus",E.open),E._input.removeEventListener("click",E.open))}]};function he(e,n){var t=[];if(e instanceof Array)t=e.map(function(e){return E.parseDate(e,n)});else if(e instanceof Date||"number"==typeof e)t=[E.parseDate(e,n)];else if("string"==typeof e)switch(E.config.mode){case"single":case"time":t=[E.parseDate(e,n)];break;case"multiple":t=e.split(E.config.conjunction).map(function(e){return E.parseDate(e,n)});break;case"range":t=e.split(E.l10n.rangeSeparator).map(function(e){return E.parseDate(e,n)})}else E.config.errorHandler(new Error("Invalid date supplied: "+JSON.stringify(e)));E.selectedDates=E.config.allowInvalidPreload?t:t.filter(function(e){return e instanceof Date&&$(e,!1)}),"range"===E.config.mode&&E.selectedDates.sort(function(e,n){return e.getTime()-n.getTime()})}function pe(e){return e.slice().map(function(e){return"string"==typeof e||"number"==typeof e||e instanceof Date?E.parseDate(e,void 0,!0):e&&"object"==typeof e&&e.from&&e.to?{from:E.parseDate(e.from,void 0),to:E.parseDate(e.to,void 0)}:e}).filter(function(e){return e})}function ve(e,n){if(void 0!==E.config){var t=E.config[e];if(void 0!==t&&t.length>0)for(var r=0;t[r]&&r1||"static"===E.config.monthSelectorType?E.monthElements[n].textContent=y(t.getMonth(),E.config.shorthandCurrentMonth,E.l10n)+" ":E.monthsDropdownContainer.value=t.getMonth().toString(),e.value=t.getFullYear().toString()}),E._hidePrevMonthArrow=void 0!==E.config.minDate&&(E.currentYear===E.config.minDate.getFullYear()?E.currentMonth<=E.config.minDate.getMonth():E.currentYearE.config.maxDate.getMonth():E.currentYear>E.config.maxDate.getFullYear()))}function Ee(e){return E.selectedDates.map(function(n){return E.formatDate(n,e)}).filter(function(e,n,t){return"range"!==E.config.mode||E.config.enableTime||t.indexOf(e)===n}).join("range"!==E.config.mode?E.config.conjunction:E.l10n.rangeSeparator)}function be(e){void 0===e&&(e=!0),void 0!==E.mobileInput&&E.mobileFormatStr&&(E.mobileInput.value=void 0!==E.latestSelectedDateObj?E.formatDate(E.latestSelectedDateObj,E.mobileFormatStr):""),E.input.value=Ee(E.config.dateFormat),void 0!==E.altInput&&(E.altInput.value=Ee(E.config.altFormat)),!1!==e&&ve("onValueUpdate")}function Ae(e){var n=p(e),t=E.prevMonthNav.contains(n),r=E.nextMonthNav.contains(n);t||r?z(t?-1:1):E.yearElements.indexOf(n)>=0?n.select():n.classList.contains("arrowUp")?E.changeYear(E.currentYear+1):n.classList.contains("arrowDown")&&E.changeYear(E.currentYear-1)}return function(){E.element=E.input=v,E.isOpen=!1,function(){var n=["wrap","weekNumbers","allowInput","allowInvalidPreload","clickOpens","time_24hr","enableTime","noCalendar","altInput","shorthandCurrentMonth","inline","static","enableSeconds","disableMobile"],o=e(e({},JSON.parse(JSON.stringify(v.dataset||{}))),m),a={};E.config.parseDate=o.parseDate,E.config.formatDate=o.formatDate,Object.defineProperty(E.config,"enable",{get:function(){return E.config._enable},set:function(e){E.config._enable=pe(e)}}),Object.defineProperty(E.config,"disable",{get:function(){return E.config._disable},set:function(e){E.config._disable=pe(e)}});var i="time"===o.mode;if(!o.dateFormat&&(o.enableTime||i)){var s=S.defaultConfig.dateFormat||r.dateFormat;a.dateFormat=o.noCalendar||i?"H:i"+(o.enableSeconds?":S":""):s+" H:i"+(o.enableSeconds?":S":"")}if(o.altInput&&(o.enableTime||i)&&!o.altFormat){var u=S.defaultConfig.altFormat||r.altFormat;a.altFormat=o.noCalendar||i?"h:i"+(o.enableSeconds?":S K":" K"):u+" h:i"+(o.enableSeconds?":S":"")+" K"}Object.defineProperty(E.config,"minDate",{get:function(){return E.config._minDate},set:ae("min")}),Object.defineProperty(E.config,"maxDate",{get:function(){return E.config._maxDate},set:ae("max")});var f=function(e){return function(n){E.config["min"===e?"_minTime":"_maxTime"]=E.parseDate(n,"H:i:S")}};Object.defineProperty(E.config,"minTime",{get:function(){return E.config._minTime},set:f("min")}),Object.defineProperty(E.config,"maxTime",{get:function(){return E.config._maxTime},set:f("max")}),"time"===o.mode&&(E.config.noCalendar=!0,E.config.enableTime=!0),Object.assign(E.config,a,o);for(var l=0;l-1?E.config[h]=c(d[h]).map(_).concat(E.config[h]):void 0===o[h]&&(E.config[h]=d[h])}o.altInputClass||(E.config.altInputClass=ie().className+" "+E.config.altInputClass),ve("onParseConfig")}(),se(),E.input=ie(),E.input?(E.input._type=E.input.type,E.input.type="text",E.input.classList.add("flatpickr-input"),E._input=E.input,E.config.altInput&&(E.altInput=f(E.input.nodeName,E.config.altInputClass),E._input=E.altInput,E.altInput.placeholder=E.input.placeholder,E.altInput.disabled=E.input.disabled,E.altInput.required=E.input.required,E.altInput.tabIndex=E.input.tabIndex,E.altInput.type="text",E.input.setAttribute("type","hidden"),!E.config.static&&E.input.parentNode&&E.input.parentNode.insertBefore(E.altInput,E.input.nextSibling)),E.config.allowInput||E._input.setAttribute("readonly","readonly"),E._positionElement=E.config.positionElement||E._input):E.config.errorHandler(new Error("Invalid input element specified")),function(){E.selectedDates=[],E.now=E.parseDate(E.config.now)||new Date;var e=E.config.defaultDate||("INPUT"!==E.input.nodeName&&"TEXTAREA"!==E.input.nodeName||!E.input.placeholder||E.input.value!==E.input.placeholder?E.input.value:null);e&&he(e,E.config.dateFormat),E._initialDate=E.selectedDates.length>0?E.selectedDates[0]:E.config.minDate&&E.config.minDate.getTime()>E.now.getTime()?E.config.minDate:E.config.maxDate&&E.config.maxDate.getTime()0&&(E.latestSelectedDateObj=E.selectedDates[0]),void 0!==E.config.minTime&&(E.config.minTime=E.parseDate(E.config.minTime,"H:i")),void 0!==E.config.maxTime&&(E.config.maxTime=E.parseDate(E.config.maxTime,"H:i")),E.minDateHasTime=!!E.config.minDate&&(E.config.minDate.getHours()>0||E.config.minDate.getMinutes()>0||E.config.minDate.getSeconds()>0),E.maxDateHasTime=!!E.config.maxDate&&(E.config.maxDate.getHours()>0||E.config.maxDate.getMinutes()>0||E.config.maxDate.getSeconds()>0)}(),E.utils={getDaysInMonth:function(e,n){return void 0===e&&(e=E.currentMonth),void 0===n&&(n=E.currentYear),1===e&&(n%4==0&&n%100!=0||n%400==0)?29:E.l10n.daysInMonth[e]}},E.isMobile||function(){var e=window.document.createDocumentFragment();if(E.calendarContainer=f("div","flatpickr-calendar"),E.calendarContainer.tabIndex=-1,!E.config.noCalendar){if(e.appendChild((E.monthNav=f("div","flatpickr-months"),E.yearElements=[],E.monthElements=[],E.prevMonthNav=f("span","flatpickr-prev-month"),E.prevMonthNav.innerHTML=E.config.prevArrow,E.nextMonthNav=f("span","flatpickr-next-month"),E.nextMonthNav.innerHTML=E.config.nextArrow,J(),Object.defineProperty(E,"_hidePrevMonthArrow",{get:function(){return E.__hidePrevMonthArrow},set:function(e){E.__hidePrevMonthArrow!==e&&(u(E.prevMonthNav,"flatpickr-disabled",e),E.__hidePrevMonthArrow=e)}}),Object.defineProperty(E,"_hideNextMonthArrow",{get:function(){return E.__hideNextMonthArrow},set:function(e){E.__hideNextMonthArrow!==e&&(u(E.nextMonthNav,"flatpickr-disabled",e),E.__hideNextMonthArrow=e)}}),E.currentYearElement=E.yearElements[0],ge(),E.monthNav)),E.innerContainer=f("div","flatpickr-innerContainer"),E.config.weekNumbers){var n=function(){E.calendarContainer.classList.add("hasWeeks");var e=f("div","flatpickr-weekwrapper");e.appendChild(f("span","flatpickr-weekday",E.l10n.weekAbbreviation));var n=f("div","flatpickr-weeks");return e.appendChild(n),{weekWrapper:e,weekNumbers:n}}(),t=n.weekWrapper,r=n.weekNumbers;E.innerContainer.appendChild(t),E.weekNumbers=r,E.weekWrapper=t}E.rContainer=f("div","flatpickr-rContainer"),E.rContainer.appendChild(q()),E.daysContainer||(E.daysContainer=f("div","flatpickr-days"),E.daysContainer.tabIndex=-1),V(),E.rContainer.appendChild(E.daysContainer),E.innerContainer.appendChild(E.rContainer),e.appendChild(E.innerContainer)}E.config.enableTime&&e.appendChild(function(){E.calendarContainer.classList.add("hasTime"),E.config.noCalendar&&E.calendarContainer.classList.add("noCalendar");var e=D(E.config);E.timeContainer=f("div","flatpickr-time"),E.timeContainer.tabIndex=-1;var n=f("span","flatpickr-time-separator",":"),t=h("flatpickr-hour",{"aria-label":E.l10n.hourAriaLabel});E.hourElement=t.getElementsByTagName("input")[0];var r=h("flatpickr-minute",{"aria-label":E.l10n.minuteAriaLabel});if(E.minuteElement=r.getElementsByTagName("input")[0],E.hourElement.tabIndex=E.minuteElement.tabIndex=-1,E.hourElement.value=a(E.latestSelectedDateObj?E.latestSelectedDateObj.getHours():E.config.time_24hr?e.hours:function(e){switch(e%24){case 0:case 12:return 12;default:return e%12}}(e.hours)),E.minuteElement.value=a(E.latestSelectedDateObj?E.latestSelectedDateObj.getMinutes():e.minutes),E.hourElement.setAttribute("step",E.config.hourIncrement.toString()),E.minuteElement.setAttribute("step",E.config.minuteIncrement.toString()),E.hourElement.setAttribute("min",E.config.time_24hr?"0":"1"),E.hourElement.setAttribute("max",E.config.time_24hr?"23":"12"),E.hourElement.setAttribute("maxlength","2"),E.minuteElement.setAttribute("min","0"),E.minuteElement.setAttribute("max","59"),E.minuteElement.setAttribute("maxlength","2"),E.timeContainer.appendChild(t),E.timeContainer.appendChild(n),E.timeContainer.appendChild(r),E.config.time_24hr&&E.timeContainer.classList.add("time24hr"),E.config.enableSeconds){E.timeContainer.classList.add("hasSeconds");var o=h("flatpickr-second");E.secondElement=o.getElementsByTagName("input")[0],E.secondElement.value=a(E.latestSelectedDateObj?E.latestSelectedDateObj.getSeconds():e.seconds),E.secondElement.setAttribute("step",E.minuteElement.getAttribute("step")),E.secondElement.setAttribute("min","0"),E.secondElement.setAttribute("max","59"),E.secondElement.setAttribute("maxlength","2"),E.timeContainer.appendChild(f("span","flatpickr-time-separator",":")),E.timeContainer.appendChild(o)}return E.config.time_24hr||(E.amPM=f("span","flatpickr-am-pm",E.l10n.amPM[i((E.latestSelectedDateObj?E.hourElement.value:E.config.defaultHour)>11)]),E.amPM.title=E.l10n.toggleTitle,E.amPM.tabIndex=-1,E.timeContainer.appendChild(E.amPM)),E.timeContainer}()),u(E.calendarContainer,"rangeMode","range"===E.config.mode),u(E.calendarContainer,"animate",!0===E.config.animate),u(E.calendarContainer,"multiMonth",E.config.showMonths>1),E.calendarContainer.appendChild(e);var o=void 0!==E.config.appendTo&&void 0!==E.config.appendTo.nodeType;if((E.config.inline||E.config.static)&&(E.calendarContainer.classList.add(E.config.inline?"inline":"static"),E.config.inline&&(!o&&E.element.parentNode?E.element.parentNode.insertBefore(E.calendarContainer,E._input.nextSibling):void 0!==E.config.appendTo&&E.config.appendTo.appendChild(E.calendarContainer)),E.config.static)){var s=f("div","flatpickr-wrapper");E.element.parentNode&&E.element.parentNode.insertBefore(s,E.element),s.appendChild(E.element),E.altInput&&s.appendChild(E.altInput),s.appendChild(E.calendarContainer)}E.config.static||E.config.inline||(void 0!==E.config.appendTo?E.config.appendTo:window.document.body).appendChild(E.calendarContainer)}(),function(){if(E.config.wrap&&["open","close","toggle","clear"].forEach(function(e){Array.prototype.forEach.call(E.element.querySelectorAll("[data-"+e+"]"),function(n){return P(n,"click",E[e])})}),E.isMobile)!function(){var e=E.config.enableTime?E.config.noCalendar?"time":"datetime-local":"date";E.mobileInput=f("input",E.input.className+" flatpickr-mobile"),E.mobileInput.tabIndex=1,E.mobileInput.type=e,E.mobileInput.disabled=E.input.disabled,E.mobileInput.required=E.input.required,E.mobileInput.placeholder=E.input.placeholder,E.mobileFormatStr="datetime-local"===e?"Y-m-d\\TH:i:S":"date"===e?"Y-m-d":"H:i:S",E.selectedDates.length>0&&(E.mobileInput.defaultValue=E.mobileInput.value=E.formatDate(E.selectedDates[0],E.mobileFormatStr)),E.config.minDate&&(E.mobileInput.min=E.formatDate(E.config.minDate,"Y-m-d")),E.config.maxDate&&(E.mobileInput.max=E.formatDate(E.config.maxDate,"Y-m-d")),E.input.getAttribute("step")&&(E.mobileInput.step=String(E.input.getAttribute("step"))),E.input.type="hidden",void 0!==E.altInput&&(E.altInput.type="hidden");try{E.input.parentNode&&E.input.parentNode.insertBefore(E.mobileInput,E.input.nextSibling)}catch(e){}P(E.mobileInput,"change",function(e){E.setDate(p(e).value,!1,E.mobileFormatStr),ve("onChange"),ve("onClose")})}();else{var e=s(oe,50);if(E._debouncedChange=s(k,300),E.daysContainer&&!/iPhone|iPad|iPod/i.test(navigator.userAgent)&&P(E.daysContainer,"mouseover",function(e){"range"===E.config.mode&&re(p(e))}),P(window.document.body,"keydown",te),E.config.inline||E.config.static||P(window,"resize",e),void 0!==window.ontouchstart?P(window.document,"touchstart",X):P(window.document,"mousedown",X),P(window.document,"focus",X,{capture:!0}),!0===E.config.clickOpens&&(P(E._input,"focus",E.open),P(E._input,"click",E.open)),void 0!==E.daysContainer&&(P(E.monthNav,"click",Ae),P(E.monthNav,["keyup","increment"],R),P(E.daysContainer,"click",le)),void 0!==E.timeContainer&&void 0!==E.minuteElement&&void 0!==E.hourElement){var n=function(e){return p(e).select()};P(E.timeContainer,["increment"],N),P(E.timeContainer,"blur",N,{capture:!0}),P(E.timeContainer,"click",F),P([E.hourElement,E.minuteElement],["focus","click"],n),void 0!==E.secondElement&&P(E.secondElement,"focus",function(){return E.secondElement&&E.secondElement.select()}),void 0!==E.amPM&&P(E.amPM,"click",function(e){N(e),k()})}E.config.allowInput&&P(E._input,"blur",ne)}}(),(E.selectedDates.length||E.config.noCalendar)&&(E.config.enableTime&&x(E.config.noCalendar?E.latestSelectedDateObj:void 0),be(!1)),T();var n=/^((?!chrome|android).)*safari/i.test(navigator.userAgent);!E.isMobile&&n&&ce(),ve("onReady")}(),E}function T(e,n){for(var t=Array.prototype.slice.call(e).filter(function(e){return e instanceof HTMLElement}),r=[],o=0;o{var l={setCustomize:()=>{}},d=function(e,n){if(!n||1===n)return e.store;var t=e.store.modules&&e.store.modules.team;return t?t.getTeam(n):void 0},h=function(n,t){n.emit("UPDATE",{teams:t.stores,roTeams:t.roStores,id:t.channel,loading:!t.ready&&!t.cacheready,readOnly:t.readOnly||!t.ready&&t.cacheready||t.offline,offline:t.offline,deleted:!t.stores.length,restricted:t.restricted,owned:n.Store.isOwned(t.owners),content:e.clone(t.proxy),hashes:t.hashes},n.clients)},p=function(e,n){var t=e.calendars[n];t&&t.reminders&&Object.keys(t.reminders).forEach(function(e){Array.isArray(t.reminders[e])&&t.reminders[e].forEach(function(e){clearTimeout(e)})})},v=function(e,n){var t=e.calendars[n];t&&(t.stores.length||(t.lm.stop(),p(e,n),delete e.calendars[n]))},y=function(e,n,t){n.stores.forEach(function(r){var o=d(e,r);if(o&&o.proxy&&o.rpc&&o.proxy.calendars){var a=o.proxy.calendars[n.channel];a&&(a.color!==t.color&&(a.color=t.color),a.title!==t.title&&(a.title=t.title))}})},m=function(n,t,r,o){var a=+new Date,i=e.clone(r),s=i.id;if(Array.isArray(t[s])&&t[s].forEach(function(e){clearTimeout(e)}),t[s]=[],!r.deleted){var u=e.find(n,["store","proxy","hideReminders",s])||[],f=n.store.data.lastVisit;if(i.isAllDay&&(i.startDay&&(i.start=+c.parseDate(i.startDay)),i.endDay)){var l=c.parseDate(i.endDay);l.setHours(23),l.setMinutes(59),l.setSeconds(59),i.end=+l}var d=a-6048e5,h=o&&i.start>f&&i.end<=a&&i.end>d;if(i.end<=a&&!h)return delete t[s],void function(n,t){var r=e.find(n,["store","proxy","hideReminders"])||{};Object.keys(r).filter(function(e){return e===t}).forEach(function(e){delete r[e]})}(n,s);var p=!1,v=function(t){p=!0,n.Store.onReadyEvt.reg(function(){!function(t){if(!e.find(n,["store","proxy","settings","general","calendar","hideNotif"])){var r=i.start<=a?i.start:+new Date;n.store.mailbox.showMessage("reminders",{msg:{ctime:r,type:"REMINDER",missed:Boolean(h),content:i},hash:"REMINDER|"+s+"-"+t},null,function(){})}}(t)})},y=i.reminders||[];y.sort(function(e,n){return e-n}),y.some(function(e){var n=a+6e4*e;if(!u.some(function(n){return e>=n}))return i.start-n>=2147483647||(i.start<=n?(v(e),!0):void t[s].push(setTimeout(function(){v(e)},i.start-n)))}),p||n.Store.onReadyEvt.reg(function(){n.store.mailbox.hideMessage("reminders",{hash:"REMINDER|"+s},null,function(){})})}},g=function(n,t,r,o){var i=function(e){var n=new Date,t=new Date(n.getFullYear(),n.getMonth()-1,15),r=new Date(n.getFullYear(),n.getMonth()+1,15),o=a.getMonthId(t),i=a.getMonthId(n),s=a.getMonthId(r),c=a.getRecurring([o,i,s],[e]),u=[e];return Array.prototype.push.apply(u,c),u}(e.clone(r));i.forEach(function(e){m(n,t,e,o)})},E=function(e,n,t){var r=e.calendars[n];t&&r&&r.reminders&&(1===r.stores.length&&0===r.stores[0]||g(e,r.reminders,t))},b=function(n,t,r){var o=n.calendars[t];if(o&&o.reminders&&!Object.keys(o.reminders).length&&(1!==o.stores.length||0!==o.stores[0])){var a=e.find(o,["proxy","content"]);a&&Object.keys(a).forEach(function(e){g(n,o.reminders,a[e],r)})}},A=function(t,r,a){var c=e.once(e.mkAsync(a||function(){})),l=r.storeId,v=r.data,m=v.channel;if(m){var g=t.calendars[m],A=function(){h(t,g)};if(g){if(g.readOnly&&v.href){var O=n.parsePadUrl(v.href),w=n.getSecrets("calendar",O.hash,v.password),D=u.createEncryptor(w.keys);g.hashes.editHash=n.getEditHashFromKeys(w),g.lm.setReadOnly(!1,D),g.readOnly=!1}else if(0===l)return 1===g.stores.length&&0===g.stores[0]&&g.tempId.length&&r.cId&&g.tempId.push(r.cId),void c();return-1!==g.roStores.indexOf(l)&&v.href&&(g.roStores.splice(g.roStores.indexOf(l),1),-1!==g.stores.indexOf(0)&&g.stores.splice(g.stores.indexOf(0),1),A()),g.stores&&-1!==g.stores.indexOf(l)?void c():(-1!==g.stores.indexOf(0)&&(g.stores.splice(g.stores.indexOf(0),1),g.tempId=[]),g.stores.push(l),v.href||g.roStores.push(l),A(),void c())}g=t.calendars[m]={ready:!1,channel:m,readOnly:!v.href,tempId:[],stores:[l],roStores:v.href?[]:[l],reminders:{},hashes:{}},0===l&&g.tempId.push(r.cId);var _=n.parsePadUrl(v.href||v.roHref),T=n.getSecrets("calendar",_.hash,v.password),S=u.createEncryptor(T.keys);g.hashes.viewHash=n.getViewHashFromKeys(T),v.href&&(g.hashes.editHash=n.getEditHashFromKeys(T)),g.proxy={metadata:{color:v.color,title:v.title}},A();var N=function(){g.stores.forEach(function(e){var n=d(t,e);n&&n.rpc&&n.proxy.calendars&&(delete n.proxy.calendars[m],(n.unpin||t.unpinPads)([m],function(e){e&&e.error&&console.error(e.error)}))}),g.lm&&g.lm.stop(),g.stores=[],h(t,g),p(t,m),delete t.calendars[m]};i(function(e){t.store.network&&!r.isNew&&t.Store.isNewChannel(null,m,e(function(n){if(!n||!n.error)return n&&"boolean"==typeof n.isNew&&n.isNew?(N(),c({error:"EDELETED"}),void e.abort()):void 0}))}).nThen(function(){var e;if(1!==l&&l){var n=t.store.modules.team&&t.store.modules.team.getTeamsData(),a=n&&n[l];e=a?a.edPublic:void 0}else e=t.store.proxy.edPublic;var i={data:{},network:t.store.network||t.store.networkPromise,channel:T.channel,crypto:S,owners:[e],ChainPad:f,validateKey:T.keys.validateKey||void 0,userName:"calendar",Cache:o,classic:!0,onRejected:t.Store&&t.Store.onRejected},u=s.create(i);g.lm=u;var d=g.proxy=u.proxy,h=!1,p=function(){h||(h=!0,setTimeout(function(){h=!1,A()}))};u.proxy.on("cacheready",function(){d.metadata&&(g.cacheready=!0,p(),c&&c(null,u.proxy),b(t,m,r.lastVisitNotif))}).on("ready",function(e){var n=e.metadata;if(g.owners=n.owners||[],g.ready=!0,!d.metadata){if(!r.isNew)return void N();d.metadata={color:v.color,title:v.title}}p(),c&&c(null,u.proxy),b(t,m,r.lastVisitNotif)}).on("change",[],function(){g.ready&&p()}).on("change",["content"],function(e,n,r){2!==r.length||!n||e?2!==r.length||n||!e?(r.length>=3&&["start","reminders","isAllDay"].includes(r[2])||r.length>=6&&["start","reminders","isAllDay"].includes(r[5]))&&setTimeout(function(){E(t,m,d.content[r[1]])}):E(t,m,{id:r[1],start:0}):E(t,m,n)}).on("remove",["content"],function(e,n){p(),(n.length>=3&&"reminders"===n[2]||n.length>=6&&"reminders"===n[5])&&setTimeout(function(){E(t,m,d.content[n[1]])})}).on("change",["metadata"],function(){var e=d.metadata;e&&e.title&&e.color&&y(t,g,e)}).on("disconnect",function(){g.offline=!0,p()}).on("reconnect",function(){g.offline=!1,p()}).on("error",function(e){e&&e.error&&("EDELETED"!==e.error?("ERESTRICTED"===e.error&&(g.restricted=!0,p()),c(e)):N())})})}},O=function(e,n){if(n.href&&-1===n.href.indexOf("#"))if(e.secondaryKey)try{n.href=e.userObject.cryptor.decrypt(n.href)}catch(e){console.error(e),delete n.href}else delete n.href},w=function(n,t){var r=t.proxy.calendars,o=t.id||1;t.proxy.on("change",["calendars"],function(r,a,i){i.length<2||(r&&!a&&function(){var e=i[1],t=n.calendars[e];if(t){var r=t.stores.indexOf(o);if(-1!==r){t.stores.splice(r,1);var a=t.roStores.indexOf(o);-1!==a&&t.roStores.splice(a,1),v(n,e),h(n,t)}}}(),!r&&a&&function(){var r=i[1],a=t.proxy.calendars[r];if(a){var s=e.clone(a);O(t,s),A(n,{storeId:o,data:s})}}())}),Object.keys(r||{}).forEach(function(a){var i=e.clone(r[a]);O(t,i),A(n,{storeId:o,lastVisitNotif:!0,data:i})})},D=function(e,t,o,a){var i=d(e,t.teamId);if(i)if(i.rpc){var s,c,u,f=i.proxy.calendars=i.proxy.calendars||{},l=(s=n.createRandomHash("calendar"),c=n.getSecrets("calendar",s),u=n.getViewHashFromKeys(c),{href:n.hashToHref(s,"calendar"),roHref:n.hashToHref(u,"calendar"),channel:c.channel});l.color=t.color,l.title=t.title,A(e,{storeId:i.id||1,data:l,isNew:!0},function(n){if(n)return console.error(n),void a({error:n.error});var t=e.calendars[l.channel];r.whenRealtimeSyncs(t.lm.realtime,function(){f[l.channel]=l,(i.pin||e.pinPads)([l.channel],function(e){e&&e.error&&console.error(e.error)}),e.Store.onSync(i.id,a)})})}else a({error:"EFORBIDDEN"});else a({error:"NO_STORE"})};return l.init=function(t,o,a){var s={},c=t.store,u={loggedIn:c.loggedIn&&c.proxy.edPublic,store:c,Store:t.Store,pinPads:t.pinPads,unpinPads:t.unpinPads,updateMetadata:t.updateMetadata,emit:a,onReady:e.mkEvent(!0),calendars:{},clients:[]};return function(e,n){var t=e.store.proxy;t.calendars=t.calendars||{},setTimeout(n)}(u,o(function(e){e||function(e){w(e,e.store);var n=e.store.modules.team&&e.store.modules.team.getTeamsData();n&&Object.keys(n).forEach(function(n){var t=d(e,n);w(e,t)})}(u)})),u.store.proxy.on("change",["hideReminders"],function(e,n,t){var r=t[1].split("|")[0];Object.keys(u.calendars).some(function(e){var n=u.calendars[e];if(n&&n.proxy&&n.proxy.content)return n.proxy.content[r]?(setTimeout(function(){E(u,e,n.proxy.content[r])}),!0):void 0})}),s.closeTeam=function(e){Object.keys(u.calendars).forEach(function(n){var t=u.calendars[n],r=t.stores.indexOf(e);if(-1!==r){t.stores.splice(r,1);var o=t.roStores.indexOf(e);-1!==o&&t.roStores.splice(o,1),v(u,n),h(u,t)}})},s.openTeam=function(e){var n=d(u,e);n&&w(u,n)},s.upgradeTeam=function(n){if(n){var t=d(u,n);t&&Object.keys(u.calendars).forEach(function(r){var o=u.calendars[r];if(-1!==o.stores.indexOf(n)){var a=t.proxy.calendars[r],i=e.clone(a);O(t,i),A(u,{storeId:n,data:i}),h(u,o)}})}},s.removeClient=function(e){!function(e,n){var t=e.clients.indexOf(n);-1!==t&&e.clients.splice(t,1),Object.keys(e.calendars).forEach(function(t){var r=e.calendars[t];if(1===r.stores.length&&0===r.stores[0]&&r.tempId.length){var o=r.tempId.indexOf(n);-1!==o&&r.tempId.splice(o,1),r.tempId.length||(r.stores=[],v(e,t))}})}(u,e)},s.execCommand=function(t,o,a){var s=o.cmd,c=o.data;if("SUBSCRIBE"!==s){if("OPEN"!==s)return"IMPORT"===s?u.store.offline?void a({error:"OFFLINE"}):u.loggedIn?void function(t,r,o,a){var i=r.id,s=t.calendars[i];if(s)if(Array.isArray(s.stores)&&-1!==s.stores.indexOf(r.teamId)){var c=t.store,u=c.proxy.calendars=c.proxy.calendars||{},f=s.hashes.editHash,l=s.hashes.viewHash;u[i]={href:f&&n.hashToHref(f,"calendar"),roHref:l&&n.hashToHref(l,"calendar"),channel:i,color:e.find(s,["proxy","metadata","color"])||e.getRandomColor(),title:e.find(s,["proxy","metadata","title"])||"..."},t.Store.onSync(null,a),A(t,{storeId:1,data:{href:u[i].href,toHref:u[i].roHref,channel:i}})}else a({error:"EINVAL"});else a({error:"ENOENT"})}(u,c,0,a):void a({error:"NOT_LOGGED_IN"}):"IMPORT_ICS"===s?u.store.offline?void a({error:"OFFLINE"}):void function(e,n,t,o){var a=n.id,i=e.calendars[a];if(i&&i.proxy){var s=n.json;i.proxy.content=i.proxy.content||{},Object.keys(s).forEach(function(n){i.proxy.content[n]=s[n],E(e,a,s[n])}),r.whenRealtimeSyncs(i.lm.realtime,function(){h(e,i),o()})}else o({error:"ENOENT"})}(u,c,0,a):"ADD"===s?u.store.offline?void a({error:"OFFLINE"}):u.loggedIn?void function(t,r,o,a){var i=d(t,r.teamId);if(i)if(i.rpc){var s=i.proxy.calendars=i.proxy.calendars||{},c=n.parsePadUrl(r.href),u=n.getSecrets(c.type,c.hash,r.password);if(u.channel===r.channel){var f=n.getEditHashFromKeys(u),l=n.getViewHashFromKeys(u),h=f&&n.hashToHref(f,"calendar"),p={href:h,roHref:l&&n.hashToHref(l,"calendar"),color:r.color,title:r.title,channel:r.channel};!s[r.channel]||!s[r.channel].href&&p.href?(p.color=r.color,p.title=r.title,A(t,{storeId:i.id||1,data:e.clone(p)},function(e){if(e)return console.error(e),void a({error:e.error});if(h&&i.id&&i.secondaryKey)try{p.href=i.userObject.cryptor.encrypt(h)}catch(e){console.error(e)}s[p.channel]=p,(i.pin||t.pinPads)([p.channel],function(e){e&&e.error&&console.error(e.error)}),t.Store.onSync(i.id,a)})):a()}else a({error:"EINVAL"})}else a({error:"EFORBIDDEN"});else a({error:"NO_STORE"})}(u,c,0,a):void a({error:"NOT_LOGGED_IN"}):"CREATE"===s?u.loggedIn?c.initialCalendar?void u.Store.onReadyEvt.reg(function(){D(u,c,0,a)}):u.store.offline?void a({error:"OFFLINE"}):void D(u,c,0,a):void a({error:"NOT_LOGGED_IN"}):"UPDATE"===s?u.store.offline?void a({error:"OFFLINE"}):void function(n,t,o,a){var i=t.id,s=n.calendars[i];if(s){var c=e.find(s,["proxy","metadata"]);c?(c.title=t.title,c.color=t.color,r.whenRealtimeSyncs(s.lm.realtime,a),h(n,s),y(n,s,t)):a({error:"EINVAL"})}else a({error:"ENOENT"})}(u,c,0,a):"DELETE"===s?u.store.offline?void a({error:"OFFLINE"}):u.loggedIn?void function(e,n,t,r){var o=d(e,n.teamId);if(o)if(o.rpc){if(o.proxy.calendars){var a=n.id;if(o.proxy.calendars[a]){delete o.proxy.calendars[a],(o.unpin||e.unpinPads)([a],function(e){e&&e.error&&console.error(e.error)});var i=e.calendars[a],s=i.stores.indexOf(o.id||1);i.stores.splice(s,1),v(e,a),e.Store.onSync(o.id,function(){h(e,i),r()})}else r()}}else r({error:"EFORBIDDEN"});else r({error:"NO_STORE"})}(u,c,0,a):void a({error:"NOT_LOGGED_IN"}):"CREATE_EVENT"===s?u.store.offline?void a({error:"OFFLINE"}):void function(e,n,t,o){var a=n.calendarId,i=e.calendars[a];if(i){var s=new Date(n.start),c=new Date(n.end);n.isAllDay?(n.startDay=s.getFullYear()+"-"+(s.getMonth()+1)+"-"+s.getDate(),n.endDay=c.getFullYear()+"-"+(c.getMonth()+1)+"-"+c.getDate()):(delete n.startDay,delete n.endDay),i.proxy.content=i.proxy.content||{},i.proxy.content[n.id]=n,r.whenRealtimeSyncs(i.lm.realtime,function(){E(e,a,n),h(e,i),o()})}else o({error:"ENOENT"})}(u,c,0,a):"UPDATE_EVENT"===s?u.store.offline?void a({error:"OFFLINE"}):void function(n,t,o,a){if(t&&t.ev){var s=t.ev.calendarId,c=n.calendars[s];if(c&&c.proxy&&c.proxy.content){var u=c.proxy.content[t.ev.id];if(u){t.rawData=t.rawData||{};var f,l=t.changes||{},d=t.type||{};if(l.calendarId){if(!(f=n.calendars[l.calendarId])||!f.proxy)return void a({error:"ENOENT"});f.proxy.content=f.proxy.content||{}}var p={one:{},from:{}};["one","from","all"].includes(d.which)&&(u.recUpdate=u.recUpdate||p,u.recUpdate.one||(u.recUpdate.one={}),u.recUpdate.from||(u.recUpdate.from={}));var v=u.recUpdate,y=["calendarId"],m=Object.keys(l).filter(function(e){return!y.includes(e)}),g=function(e){[v.from,v.one].forEach(function(n){Object.keys(n).forEach(function(t){Number(t){const r=[],o=null==nr?void 0:nr.httpUnsafeOrigin;ie.fetchApi(o,"config",!0,e=>{var o,a;(null===(o=null==e?void 0:e.adminKeys)||void 0===o?void 0:o.includes(n))&&r.push("admin");(null===(a=null==e?void 0:e.moderatorKeys)||void 0===a?void 0:a.includes(n))&&r.push("moderator"),t(r)})},rr=(e,n,t)=>{e.Store.anonRpcMsg("",{msg:"IS_PREMIUM",data:n},e=>{let n=Array.isArray(e)&&e[0];t(n?["premium"]:[])})},or=(e,n,t,r)=>{var o,a;const i=[];null==nr||nr.httpUnsafeOrigin;const s=n.edPublic||(null===(a=null===(o=e.store)||void 0===o?void 0:o.proxy)||void 0===a?void 0:a.edPublic);rt(e=>{tr(0,s,e(e=>{Array.prototype.push.apply(i,e)}))}).nThen(n=>{rr(e,s,n(e=>{Array.prototype.push.apply(i,e)}))}).nThen(()=>{r(i)})},ar={admin:tr,moderator:tr,premium:rr},ir={init:(e,n,t)=>{const r={store:e.store,Store:e.Store,updateMetadata:e.updateMetadata},o=r.Store;return o.onReadyEvt.reg(()=>{var e;const n=o.getMetadata(void 0,"drive",()=>{}),t=(null===(e=null==n?void 0:n.user)||void 0===e?void 0:e.badge)||"";t&&or(r,{},0,e=>{var n,o;if(!e.includes(t)){const e=null===(o=null===(n=null==r?void 0:r.store)||void 0===n?void 0:n.modules)||void 0===o?void 0:o.profile;null==e||e.execCommand(void 0,{cmd:"SET",data:{key:"badge",value:""}},()=>{})}})}),{listBadges:(e,n)=>{or(r,e,0,n)},removeClient:()=>{},execCommand:(e,n,t)=>{const o=n.cmd,a=n.data;"LIST_BADGES"!==o?"CHECK_BADGE"!==o?t():((e,n,t,r)=>{const{badge:o,ed:a,sig:i,nid:s}=n,c=ie.decodeBase64(a),u=ie.decodeBase64(i),f=er.sign.open(u,c);if(!f)return void r({verified:!1});if(ie.encodeUTF8(f)!==s)return void r({verified:!1});let l=ar[o];l?l(e,a,e=>{r({verified:e.includes(o),badge:o})}):r({verified:!1,error:"EINVAL"})})(r,a,0,t):or(r,a,0,t)}}},setCustomize:e=>{nr=null==e?void 0:e.ApiConfig}};var sr,cr,ur=o(Object.freeze({__proto__:null,Badge:ir}));function fr(){if(cr)return sr;cr=1;return sr=((e,n,t,r,o,a,i,s,c,u,f,l,d,h,p,v,y,m,g,E,b,A,O,w,D,_,T,S,N,I,x,C,R,P,k,M,F,L)=>{const H=v.Account,j=y.Drive,K=m.Pad,U=I.Badge,B=globalThis;globalThis.nacl=globalThis.nacl||R.Nacl;let V={},Y={};const G=a.Saferphore;var J=a.mkEvent(!0),q=a.mkEvent(!0),W=a.mkEvent(!0),z=a.mkEvent(!0);var Q={drive:{hideDuplicate:!0},pad:{width:!0,spellcheck:!0},security:{unsafeLinks:!1},general:{allowUserFeedback:!0}};return{setCustomize:e=>{V=e.ApiConfig,Y=e.AppConfig},create:function(v){var y=B.Cryptpad_Store={};let m=v.query||function(){},I=v.broadcast||function(){};var P=B.CryptPad_AsyncStore={modules:{}};y.onReadyEvt=J,y.pad=K.init({Store:y,store:P,postMessage:m,broadcast:I}),y.drive=j.initAPI({Store:y,store:P,postMessage:m,broadcast:I}),y.form=g.init({Store:y,store:P,postMessage:m,broadcast:I});var k=[],M=P.sendDriveEvent=function(e,n,t){k.forEach(function(r){r!==t&&m(r,e,n)})},X=y.getStore=function(e){if(!e)return P;try{var n=P.modules.team.getTeam(e);return n||void console.error("Team not found",e)}catch(n){return console.error(n),void console.error("Team not found",e)}},Z=y.onSync=function(e,n){var t=X(e);t?L(function(e){if(t.realtime&&c.whenRealtimeSyncs(t.realtime,e()),!t.id&&t.drive?.realtime&&c.whenRealtimeSyncs(t.drive.realtime,e()),t.sharedFolders&&"object"==typeof t.sharedFolders)for(var n in t.sharedFolders)t.sharedFolders[n].realtime&&c.whenRealtimeSyncs(t.sharedFolders[n].realtime,e())}).nThen(function(){n()}):n({error:"ENOTFOUND"})};y.get=function(e,n,t){var r=X(n.teamId);r?r.proxy?t(a.find(r.proxy,n.key)):t({error:"ENODRIVE"}):t({error:"ENOTFOUND"})},y.set=function(e,n,t){var r=X(n.teamId);if(r)if(r.proxy){var o=n.key.slice(),i=o.pop(),s=a.find(r.proxy,o);s&&"object"==typeof s?(void 0===n.value?delete s[i]:s[i]=n.value,n.teamId||(I([e],"UPDATE_METADATA"),Array.isArray(o)&&"profile"===o[0]&&P.messenger&&u.updateMyData(P)),Z(n.teamId,t)):t({error:"INVALID_PATH"})}else t({error:"ENODRIVE"});else t({error:"ENOTFOUND"})},y.getSharedFolder=function(e,t,r){var o,i=X(t.teamId),s=t.id;if(i&&i.manager){if(i.manager.folders[s])return(o=a.clone(i.manager.folders[s].proxy)).offline=Boolean(i.manager.folders[s].offline),void r(o);var c=a.find(i.proxy,["drive",n.SHARED_FOLDERS])||{};c[s]?y.loadSharedFolder(t.teamId,s,c[s],function(){r(i.manager.folders[s].proxy)}):r({})}else r({error:"ENOTFOUND"})},y.restoreSharedFolder=function(e,n,t){if(n.sfId&&n.drive){var r=X(n.teamId);r.sharedFolders[n.sfId]&&(Object.keys(n.drive).forEach(function(e){r.sharedFolders[n.sfId].proxy[e]=n.drive[e]}),Object.keys(r.sharedFolders[n.sfId].proxy).forEach(function(e){n.drive[e]||delete r.sharedFolders[n.sfId].proxy[e]})),Z(n.teamId,t)}else t({error:"EINVAL"})},y.hasSigningKeys=function(){if(P.proxy)return"string"==typeof P.proxy.edPrivate&&"string"==typeof P.proxy.edPublic},y.hasCurveKeys=function(){if(P.proxy)return"string"==typeof P.proxy.curvePrivate&&"string"==typeof P.proxy.curvePublic},y.isOwned=function(e){var n=P.proxy.edPublic;if(!n)return!1;if(!Array.isArray(e)||!e.length)return!1;if(-1!==e.indexOf(n))return!0;var t=P.proxy.teams;return!!t&&Object.keys(t).some(function(n){var r=a.find(t[n],["keys","drive","edPublic"]);return r&&-1!==e.indexOf(r)})};var $=function(e){var n=e?P.driveChannel:`${P.driveChannel}#drive`;if(!n)return null;var t=P.manager.getChannelsList("pin"),r=P.proxy.profile;if(r){var a=r.edit?o.hrefToHexChannelId("/profile/#"+r.edit,null):null;a&&t.add(a);var i=r.avatar?o.hrefToHexChannelId(r.avatar,null):null;i&&t.add(i)}(P.proxy.todo&&t.add(o.hrefToHexChannelId("/todo/#"+P.proxy.todo,null)),P.proxy.friends)&&u.getFriendChannelsList(P.proxy).forEach(e=>t.add(e));P.proxy.mailboxes&&Object.keys(P.proxy.mailboxes).map(function(e){if("broadcast"!==e||P.isAdmin)return P.proxy.mailboxes[e].channel}).filter(Boolean).forEach(e=>t.add(e));P.proxy.calendars&&Object.keys(P.proxy.calendars).map(function(e){return P.proxy.calendars[e].channel}).forEach(e=>t.add(e));return t.add(n),P.data&&P.data.blockId&&!e&&t.add(`${P.data.blockId}#block`),Array.from(t).sort()};y.pinPads=function(e,n,t){if(n){var r=X(n&&n.teamId);if(r.rpc){"function"!=typeof t&&(console.error("expected a callback"),t=function(){});var o=n.pads||n;r.rpc.pin(o,function(e){t(e?{error:e}:{})})}else t({error:"RPC_NOT_READY"})}else t({error:"EINVAL"})},y.unpinPads=function(e,n,t){if(n){var r=X(n&&n.teamId);if(r.rpc){var o=n.pads||n;r.rpc.unpin(o,function(e){t(e?{error:e}:{})})}else t({error:"RPC_NOT_READY"})}else t({error:"EINVAL"})};var ee=P.account={};y.getPinnedUsage=function(e,n,t){var r=X(n&&n.teamId);r&&r.rpc?r.rpc.getFileListSize(function(e,n){r.id||"number"!=typeof n||(ee.usage=n),t({bytes:n})}):t({error:"RPC_NOT_READY"})},y.getPinLimit=function(e,n,t){var r=X(n&&n.teamId);r.rpc?r.rpc.getLimit(function(e,n,o,a){if(e)t({error:e});else{var i=r.id?{}:ee;i.limit=n,i.plan=o,i.note=a,t(i)}}):t({error:"RPC_NOT_READY"})};y.uploadComplete=function(e,n,t){var r=X(n.teamId);r?r.rpc?n.owned?r.rpc.ownedUploadComplete(n.id,function(e,n){t(e?{error:e}:n)}):r.rpc.uploadComplete(n.id,function(e,n){t(e?{error:e}:n)}):t({error:"RPC_NOT_READY"}):t({error:"ENOTFOUND"})},y.uploadStatus=function(e,n,t){var r=X(n.teamId);r?r.rpc?r.rpc.uploadStatus({id:n.id,size:n.size},function(e,n){t(e?{error:e}:n)}):t({error:"RPC_NOT_READY"}):t({error:"ENOTFOUND"})},y.uploadCancel=function(e,n,t){var r=X(n.teamId);r?r.rpc?r.rpc.uploadCancel({id:n.id,size:n.size},function(e,n){t(e?{error:e}:n)}):t({error:"RPC_NOT_READY"}):t({error:"ENOTFOUND"})},y.uploadChunk=function(e,n,t){var r=X(n.teamId);r?r.rpc?r.rpc.send.unauthenticated("UPLOAD",{chunk:n.chunk,id:n.id},function(e,n){t({error:e,msg:n})}):t({error:"RPC_NOT_READY"}):t({error:"ENOTFOUND"})};y.anonRpcMsg=function(e,n,t){P.anon_rpc?P.anon_rpc.send(n.msg,n.data,function(e,n){t(e?{error:e}:n)}):t({error:"ANON_RPC_NOT_READY"})},y.getFileSize=function(e,n,t){var r=a.once(a.mkAsync(t));if(P.anon_rpc){var i=n.channel||o.hrefToHexChannelId(n.href,n.password);P.anon_rpc.send("GET_FILE_SIZE",i,function(e,n){if(!e)return n&&n.length&&"number"==typeof n[0]?(0===n[0]&&h.clearChannel(i),void r({size:n[0]})):void r({error:"INVALID_RESPONSE"});r({error:e})})}else r({error:"ANON_RPC_NOT_READY"})},y.isNewChannel=function(e,n,t){if(!P.anon_rpc)return void t({error:"ANON_RPC_NOT_READY"});let r="string"==typeof n?n:n.channel||o.hrefToHexChannelId(n.href,n.password);P.anon_rpc.send("IS_NEW_CHANNEL",r,function(e,n){if(!e)return n&&n.length&&"object"==typeof n[0]?(n[0].isNew&&h.clearChannel(r),void t(n[0])):void t({error:"INVALID_RESPONSE"});t({error:e})})},y.getMultipleFileSize=function(e,n,t){P.anon_rpc?Array.isArray(n.files)?P.anon_rpc.send("GET_MULTIPLE_FILE_SIZE",n.files,function(e,n){e?t({error:e}):n&&n.length&&"object"==typeof n[0]?t({size:n[0]}):t({error:"UNEXPECTED_RESPONSE"})}):t({error:"INVALID_FILE_LIST"}):t({error:"ANON_RPC_NOT_READY"})},y.getDeletedPads=function(e,n,t){if(P.anon_rpc){var r=n?.list;Array.isArray(r)?P.anon_rpc.send("GET_DELETED_PADS",r,function(e,n){e?t({error:e}):n&&n.length&&Array.isArray(n[0])?t(n[0]):t({error:"UNEXPECTED_RESPONSE"})}):t({error:"INVALID_FILE_LIST"})}else t({error:"ANON_RPC_NOT_READY"})};var ne=function(e,n,t){P.anon_rpc?t():l.createAnonymous(P.network,function(e,n){e?t({error:e}):(P.anon_rpc=n,t())})},te=y.getAllStores=function(){if(!P.proxy||!P.manager)return[];var e=[P],n=P.modules.team;if(n){var t=n.getTeams().map(function(e){return n.getTeam(e)});Array.prototype.push.apply(e,t)}return e};y.getUserColor=function(){var e=a.find(P,["proxy","settings","general","cursor","color"]);return e||(e=a.getRandomColor(!0),y.setAttribute(null,{attr:["general","cursor","color"],value:e},function(){})),e},y.getMetadata=function(e,n,t){var r=P.proxy||{},s=a.find(r,["settings","general","disableThumbnails"]),c=P.modules.team&&P.modules.team.getTeamsData(n)||{};r.uid||(P.noDriveUid=P.noDriveUid||o.createChannelId());var u={user:{name:r[i.displayNameKey]||P.noDriveName||"",uid:r.uid||P.noDriveUid,avatar:a.find(r,["profile","avatar"]),profile:a.find(r,["profile","view"]),color:y.getUserColor(),notifications:a.find(r,["mailboxes","notifications","channel"]),curvePublic:r.curvePublic,edPublic:r.edPublic,netfluxId:P?.network?.webChannels?.[0]?.myID,badge:a.find(r,["profile","badge"])},priv:{clientId:e,edPublic:r.edPublic,edPrivate:r.edPrivate,friends:r.friends||{},settings:r.settings||Q,thumbnails:!1===s,isDriveOwned:Boolean(a.find(P,["driveMetadata","owners"])),driveChannel:P.driveChannel,pendingFriends:r.friends_pending||{},supportPrivateKey:a.find(r,["mailboxes","supportadmin","keys","curvePrivate"]),accountName:r.login_name||"",offline:P.proxy&&P.offline,teams:c,plan:P.ready?ee.plan||"":void 0,mutedChannels:r.mutedChannels}};return t(JSON.parse(JSON.stringify(u))),u},y.onMaintenanceUpdate=function(){let e=V.httpUnsafeOrigin;a.fetchApi(e,"broadcast",!0,e=>{e&&I([],"UNIVERSAL_EVENT",{type:"broadcast",data:{ev:"MAINTENANCE",data:e.maintenance}})})},y.onSurveyUpdate=function(){let e=V.httpUnsafeOrigin;a.fetchApi(e,"broadcast",!0,e=>{I([],"UNIVERSAL_EVENT",{type:"broadcast",data:{ev:"SURVEY",data:e.surveyURL}})})};const re=(e,n)=>{const t={network:P.network},r=e.href||e.roHref;let i=Array.isArray(e.password)?e.password:[e.password];i=i.filter(Boolean);let s=0,c=i.length;const u=o.parsePadUrl(r),f=e=>{t.password=e,d.get(u.hash,(e,t)=>{if(e)return s>=c?void n(e):f(i[s++]);const r=a.tryParse(t),o=r?.content?.channel;o?n(void 0,o):n("NO_CHAN")},t)};f(i[s++])};y.addPad=function(e,t,r){if(!t.href&&!t.roHref)return void r({error:"NO_HREF"});var i,c=o.parsePadUrl(t.href||t.roHref);t.roHref||"pad"===c.hashData.type&&(i=o.getSecrets(c.type,c.hash,t.password),t.roHref="/"+c.type+"/#"+o.getViewHashFromKeys(i));var u,f,l,d,h=(u=t.href,f=t.roHref,l=t.title,d=+new Date,{href:u,roHref:f,atime:d,ctime:d,title:l||n.getDefaultName(o.parsePadUrl(u))});t.owners&&(h.owners=t.owners),t.expire&&(h.expire=t.expire),t.password&&(h.password=t.password),(t.channel||i)&&(h.channel=t.channel||i.channel),t.readme&&(h.readme=1),Object.keys(t.attributes||{}).forEach(e=>{t.attributes[e]&&(h[e]=t.attributes[e])}),-1===t.teamId&&(t.teamId=void 0);var p=X(t.teamId);if(!p||!p.manager)return void r({error:"ENOTFOUND"});const v=a.once(()=>{p.manager.addPad(t.path,h,function(o){o?r({error:o}):(te().forEach(function(t){(t.id?t.sendEvent:M)("DRIVE_CHANGE",{path:["drive",n.FILES_DATA]},e)}),Z(t.teamId,r))})});if(["doc","sheet","presentation"].includes(c.type)&&!h.rtChannel)return re(h,(e,n)=>{const t="ADDPAD_NO_RT_CHANNEL";e?s.send(`${t}_ERROR`,!0):(s.send(t,!0),h.rtChannel=n),v()});v()};var oe=function(e,n){var t=a.find(P,["proxy","edPublic"]),r=function(e){if(e){var n=[];return P.proxy.todo&&n.push(o.hrefToHexChannelId("/todo/#"+P.proxy.todo,null)),P.proxy.profile&&P.proxy.profile.edit&&n.push(o.hrefToHexChannelId("/profile/#"+P.proxy.profile.edit,null)),P.proxy.mailboxes&&Object.keys(P.proxy.mailboxes||{}).forEach(function(e){if("supportadmin"!==e&&"supportteam"!==e){var t=P.proxy.mailboxes[e];n.push(t.channel)}}),n.filter(function(e){if("string"==typeof e)return-1!==[32,48].indexOf(e.length)})}return Array.from(P.manager.getChannelsList("owned"))}(e),i=G.create(10),s=function(n){e||P.manager.findChannel(n).forEach(function(e){var n=P.manager.findFile(e.id);P.manager.delete({paths:n})})};r.forEach(function(e){var r=n();i.take(function(n){var o=!1;L(function(a){32===e.length&&y.anonRpcMsg(null,{msg:"GET_METADATA",data:e},a(function(i){if(i&&i.error)return n(),r(),void a.abort();var c=i[0];return Object.keys(c||{}).length?c&&Array.isArray(c.owners)&&-1!==c.owners.indexOf(t)?void(o=c.owners.some(function(e){return e!==t})):(n(),r(),void a.abort()):(s(e),n(),r(),void a.abort())}))}).nThen(function(n){o?y.pad.setMetadata(null,{channel:e,command:"RM_OWNERS",value:[t]},n()):P.rpc.removeOwnedChannel(e,n(function(n){n?console.error(n):s(e)}))}).nThen(function(){n(),r()})})})};y.removeOwnedPads=function(e,n,t){P.proxy.edPublic?L(function(e){oe(!1,e)}).nThen(t):t({error:"NOT_LOGGED_IN"})},y.deleteAccount=function(n,t,r){var o=P.proxy.edPublic,s=t&&t.keys,c=t&&t.auth;y.anonRpcMsg(n,{msg:"GET_METADATA",data:P.driveChannel},function(t){var u=t[0];if(u&&u.owners&&1===u.owners.length&&-1!==u.owners.indexOf(o))L(function(e){x.checkRights({auth:c,blockKeys:s},e(function(n){if(n)return e.abort(),console.error(n),void r({error:"INVALID_CODE"})}))}).nThen(function(e){globalThis.accountDeletion=n,P.proxy[i.tokenKey]="DELETED",Z(null,e())}).nThen(function(e){P.rpc.removePins(e(function(e){e&&console.error(e)}))}).nThen(function(e){P.ownDeletion=!0,y.pad.destroy(n,{channel:P.driveChannel,force:!0},e())}).nThen(function(e){s&&x.removeLoginBlock({reason:"ARCHIVE_OWNED",auth:c,edPublic:o,blockKeys:s},e(function(e){e&&console.error(e)}))}).nThen(function(e){oe(!0,e)}).nThen(function(){I([n],"DRIVE_DELETED","ARCHIVE_OWNED"),m(n,"DELETE_ACCOUNT","DELETED",function(){}),P.network.disconnect(),r({state:!0})});else{var f={intent:"Please delete my account."};f.drive=P.driveChannel,f.edPublic=o;var l=a.decodeBase64(P.proxy.edPrivate),d=R.Nacl.sign.detached(a.decodeUTF8(e(f)),l);R.Nacl.sign.detached.verify(a.decodeUTF8(e(f)),d,a.decodeBase64(o))||console.error("signed message failed verification");var h=a.encodeBase64(d);r({proof:h,toSign:JSON.parse(e(f))})}})},y.setDisplayName=function(e,n,t){if(!P.proxy)return P.noDriveName=n,I([e],"UPDATE_METADATA"),void t();P.modules.profile&&P.modules.profile.setName(n),P.proxy[i.displayNameKey]=n,I([e],"UPDATE_METADATA"),u.updateMyData(P),Z(null,t)},y.resetDrive=function(e,n,t){L(function(e){oe(!1,e)}).nThen(function(){P.proxy.drive=P.userObject.getStructure(),M("DRIVE_CHANGE",{path:["drive","filesData"]},e),Z(null,t)})},y.setPadAttribute=function(e,t,r){L(function(r){te().forEach(function(o){o.manager.setPadAttribute(t,r(function(){(o.id?o.sendEvent:M)("DRIVE_CHANGE",{path:["drive",n.FILES_DATA]},e),Z(o.id,r())}))})}).nThen(r)},y.getPadAttribute=function(e,n,t){var r={};L(function(e){te().forEach(function(t){t.manager.getPadAttribute(n,e(function(e,n){e||(n&&"object"==typeof n?(!r.value||r.atime{if(P.loggedIn&&P.proxy.edPublic){var n,r=P.modules.team,o=r&&r.getTeams()||[];-1!==e.indexOf(P.proxy.edPublic)?n=P:o.some(function(t){var o=a.find(P,["proxy","teams",t,"keys","drive","edPublic"]),i=a.find(P,["proxy","teams",t,"keys","drive","edPrivate"]);if(-1===e.indexOf(o))return!1;if(!i)return!1;var s=r.getTeam(t);return n=s,!0});var i=function(){if(n){var e=n.rpc;e?e.send("COOKIE","",function(e){t(e)}):t("ERESTRICTED")}else t("ERESTRICTED")};n&&n.onRpcReadyEvt?n.onRpcReadyEvt.reg(function(){i()}):i()}else t("ERESTRICTED")})):t("ERESTRICTED")},y.changePadPasswordPin=function(e,n,t){var r=n.oldChannel,o=n.channel;L(function(e){te().forEach(function(n){n.manager.findChannel(o).length&&(n.rpc.unpin([r],e()),n.rpc.pin([o],e()))})}).nThen(t)},y.contactPadOwner=function(e,n,t){var r=n.owners;if(!Array.isArray(r)||!r.length)return t({state:!1});n.send?L(function(e){r.forEach(function(t){!function(e,t,r,o){if(P.mailbox&&!n.anon)return P.mailbox.sendTo(e,t,r,o);w.sendToAnon(P.anon_rpc,e,t,r,o)}(n.query,{channel:n.channel,data:n.msgData},{channel:t.notifications,curvePublic:t.curvePublic},e())})}).nThen(function(){t({state:!0})}):t({state:!0})},y.givePadAccess=function(e,n,t){var r,o,a=P.proxy.edPublic,i=n.channel,s=P.manager.findChannel(i);n.user&&n.user.notifications&&n.user.curvePublic?s.some(function(e){if(e.data&&Array.isArray(e.data.owners)&&-1!==e.data.owners.indexOf(a)&&e.data.href)return r=e.data.href,o=e.data.title,!0})?(P.mailbox.sendTo("GIVE_PAD_ACCESS",{channel:i,href:r,title:o},{channel:n.user.notifications,curvePublic:n.user.curvePublic}),t()):t({error:"ENOTFOUND"}):t({error:"EINVAL"})};y.burnPad=function(e,n){var t=n.channel,r=R.b64AddSlashes(n.ownerKey||"");if(t&&r)try{var a=o.decodeBase64(r),i=R.Nacl.sign.keyPair.fromSecretKey(a);f.create(P.network,{edPublic:o.encodeBase64(i.publicKey),edPrivate:o.encodeBase64(i.secretKey)},function(e,r){e?console.error(e):y.pad.getMetadata(null,{channel:t},function(e){r.removeOwnedChannel(t,function(t){t?console.error(t):function(e,n){var t=e.channel,r=e.href,a=o.parsePadUrl(r),i=o.getSecrets(a.type,a.hash,e.password);if((!n||!n.error)&&n.mailbox){var s,c=R.createEncryptor(i.keys),u=[];try{"string"==typeof n.mailbox?u.push(c.decrypt(n.mailbox,!0,!0)):Object.keys(n.mailbox).forEach(function(e){u.push(c.decrypt(n.mailbox[e],!0,!0))})}catch(e){console.error(e)}try{s=P.proxy.curvePublic}catch(e){return void console.error(e)}u.forEach(function(e){var n=JSON.parse(e);n.curvePublic!==s&&P.mailbox.sendTo("OWNED_PAD_REMOVED",{channel:t},{channel:n.notifications,curvePublic:n.curvePublic},function(){})})}}(n,e)})})})}catch(e){console.error(e)}else console.error("Can't delete BAR pad")},y.deleteMailboxMessage=function(e,n,t){P.anon_rpc?P.anon_rpc.send("DELETE_MAILBOX_MESSAGE",n,function(e){t({error:e})}):t({error:"RPC_NOT_READY"})},y.getFullHistory=function(e,n,t){var r=P.network,o=r.historyKeeper,a=[],i=!1,s=function(e){if(!i){var o=function(e){try{return JSON.parse(e)}catch(e){return null}}(e);if(o)return"FULL_HISTORY_END"===o[0]?(t(a),r.off("message",s),void(i=!0)):void("FULL_HISTORY"===o[0]&&(o[1]&&o[1].validateKey||o[1][3]===n.channel&&(e=o[1][4])&&(e=e.replace(/cp\|(([A-Za-z0-9+\/=]+)\|)?/,""),n.debug?a.push({serverHash:e.slice(0,64),msg:e,author:o[1][1],time:o[1][5]}):a.push(e))))}};r.on("message",s),r.sendto(o,JSON.stringify(["GET_FULL_HISTORY",n.channel,n.validateKey]))},y.getHistory=function(e,n,t,r){var o=a.once(a.mkAsync(t)),i=P.network,s=i.historyKeeper,c=Math.floor(1e6*Math.random()),u=[],f=!1,l=function(e,t){if(!f&&t===s){var a=function(e){try{return JSON.parse(e)}catch(e){return null}}(e);if(a&&!(a.txid&&a.txid!==c||a.validateKey&&a.channel))if(a.error&&a.channel)a.channel===n.channel&&(i.off("message",l),f=!0,o({error:a.error}));else{if(1===a.state&&a.channel){if(a.channel!==n.channel)return;return o(u),i.off("message",l),void(f=!0)}Array.isArray(a)&&a[0]&&a[0]!==c||a[3]===n.channel&&(a[4]&&r?u.push({msg:e,hash:a[4].slice(0,64)}):(e=a[4])&&(e=e.replace(/cp\|(([A-Za-z0-9+\/=]+)\|)?/,""),u.push(e)))}}};i.on("message",l);var d={txid:c,lastKnownHash:n.lastKnownHash},h=["GET_HISTORY",n.channel,d];i.sendto(s,JSON.stringify(h))},y.getHistoryRange=function(e,n,t){var r,o=P.network,i=o.historyKeeper,s=[],c=!0,u=!1,f=!1,l=a.uid();o.on("message",function(e){if(!f){var o=function(e){try{return JSON.parse(e)}catch(e){return null}}(e);if(o[1]===l){if("HISTORY_RANGE_ERROR"===o[0]){let e=o[2];return"ENOENT"===e?.code?(f=!0,void t({messages:s,isFull:!0})):void t({error:o[2]})}if("HISTORY_RANGE_END"===o[0])return t({messages:s,isFull:u,lastKnownHash:r}),void(f=!0);"HISTORY_RANGE"===o[0]&&(o[2]&&o[1].validateKey||o[2][3]===n.channel&&(e=o[2][4])&&(c&&(/^cp\|/.test(e)||n.toHash||(u=!0),r=e.slice(0,64),c=!1),e=e.replace(/cp\|(([A-Za-z0-9+\/=]+)\|)?/,""),s.push({serverHash:e.slice(0,64),msg:e,author:o[2][1],time:o[2][5]})))}else console.log("bad txid")}}),o.sendto(i,JSON.stringify(["GET_HISTORY_RANGE",n.channel,{from:n.lastKnownHash,to:n.toHash,cpCount:n.cpCount||2,txid:l}]))};var se=function(e,t){e&&(e.deprecated||e.restricted||(t||e.on("change",["drive",n.SHARED_FOLDERS],function(t,r,a){if(a.length>3&&"password"===a[3]){var i=a[2],s=e.drive[n.SHARED_FOLDERS][i],c=P.manager.user.userObject.getHref?P.manager.user.userObject.getHref(s):s.href,u=o.parsePadUrl(c),f=o.getSecrets(u.type,u.hash,t);return p.updatePassword(y,{oldChannel:f.channel,password:r,href:c},P.network,function(){console.log("Shared folder password changed")}),!1}}),e.on("change",[],function(e,r,o){if(t){if(o[0]===n.FILES_DATA&&"object"==typeof r&&r.channel&&!r.owners){var a=[r.channel];r.rtChannel&&a.push(r.rtChannel),r.lastVersion&&a.push(r.lastVersion),y.pinPads(null,a,function(e){console.error(e)})}if(o[0]===n.FILES_DATA&&"object"==typeof e&&e.channel&&!r){var i=[e.channel];P.manager.findChannel(e.channel).some(function(e){return e.fId!==t})||(e.rtChannel&&i.push(e.rtChannel),e.lastVersion&&i.push(e.lastVersion),y.unpinPads(null,i,function(e){console.error(e)}))}}e&&!r&&Array.isArray(o)&&(o[0]===n.FILES_DATA||"drive"===o[0]&&o[1]===n.FILES_DATA)&&setTimeout(function(){y.checkDeletedPad(e&&e.channel)}),M("DRIVE_CHANGE",{id:t,old:e,new:r,path:o})}),e.on("remove",[],function(e,n){M("DRIVE_REMOVE",{id:t,old:e,path:n})})))};y.loadSharedFolder=function(e,n,t,r,a){var i=X(e);if(i){var s=o.parsePadUrl(t.href||t.roHref);s||s.hashData?p.load({isNew:a,network:P.network||P.networkPromise,store:i,Store:y,isNewChannel:y.isNewChannel},n,t,r):r({error:"EINVAL"})}else r({error:"ENOTFOUND"})};var ce=function(e,n,t,r){y.loadSharedFolder(null,e,n,t,r)};y.loadSharedFolderAnon=function(e,n,t){y.loadSharedFolder(null,n.id,n.data,function(e){t({error:e?void 0:"EDELETED"})})},y.addSharedFolder=function(e,t,r){J.reg(function(){var o=X(t.teamId);o.manager.addSharedFolder(t,function(a){a&&"object"==typeof a&&a.error?r(a):((t.teamId?o.sendEvent:M)("DRIVE_CHANGE",{path:["drive",n.FILES_DATA]},e),r(a))})})},y.updateSharedFolderPassword=function(e,n,t){p.updatePassword(y,n,P.network,t)},y.userObjectCommand=function(e,t,r){if(t&&t.cmd){var o=X(t.teamId);if(o.offline)return(o.id?o.sendEvent:M)("NETWORK_DISCONNECT"),void r({error:"OFFLINE"});o.manager.command(t,function(o){te().forEach(function(t){(t.id?t.sendEvent:M)("DRIVE_CHANGE",{path:["drive",n.FILES_DATA]},e)}),Z(t.teamId,function(){r(o)})})}},y._removeClient=function(e){var n=k.indexOf(e);-1!==n&&k.splice(n,1),P.onlyoffice?.removeClient?.(e),P.mailbox?.removeClient?.(e),Object.keys(P.modules).forEach(function(n){P.modules[n]?.removeClient?.(e)}),y.pad?.removeClient?.(e)};y.fixMissingRtChannelInterval=(e,n)=>{let t=L;e.forEach(e=>{Object.keys(e).forEach(n=>{t=t(t=>{const r=e[n],o=a.clone(r);re(o,t((e,n)=>{e||(s.send("FIX_RT_CHANNEL_INTERVAL",!0),r.rtChannel=n)}))}).nThen})}),t(()=>{setTimeout(n)})},y.fixMissingRtChannel=e=>{const n={},t=e=>{e.forEach(e=>{const t=!!e._readOnly;delete e._readOnly,Object.keys(e).forEach(r=>{if(t)return;let o=e[r],a=o.roHref||o.href;const i=n[r]||={href:a,password:[],list:[]};o.password&&!i.password.includes(o.password)&&i.password.push(o.password),i.list.push(o)})})};try{const e=P.manager.getMissingRtChannel();t(e)}catch(n){return setTimeout(e)}(P.modules?.team?.getTeams()||[]).forEach(n=>{const r=P.modules.team.getTeam(n);try{const e=r.manager.getMissingRtChannel();t(e)}catch(n){return setTimeout(e)}});let r=L;Object.keys(n).forEach(e=>{r=r(t=>{const r=n[e];re(r,t((e,n)=>{e||(s.send("MISSING_RT_CHANNEL_FIXED",!0),r.list.forEach(e=>{e.rtChannel=n}))}))}).nThen}),r(()=>{setTimeout(e)})},y.refreshDriveUI=function(){te().forEach(function(e){(e.id?e.sendEvent:M)("DRIVE_CHANGE",{path:["drive",n.FILES_DATA]})})};var ue=function(e,n){const r=a.mkAsync(n);var o=P.proxy,i=P.drive;if(P.manager)r();else{var s=P.manager=t.create(i.proxy,{onSync:function(e){Z(null,e)},edPublic:o.edPublic,pin:function(e,n){P.loggedIn?y.pinPads(null,e,n):n()},unpin:function(e,n){P.loggedIn?y.unpinPads(null,e,n):n()},loadSharedFolder:ce,settings:o.settings,removeOwnedChannel:function(e,n){y.pad.destroy("",e,n)},store:P,Store:y},{outer:!0,edPublic:P.proxy.edPublic,loggedIn:P.loggedIn,log:function(e){M("DRIVE_LOG",e)},rt:i.realtime}),c=P.userObject=s.user.userObject;L(function(e){P.sharedFolders={},P.handleSharedFolder=function(e,n){n?(P.sharedFolders[e]=n,P.driveEvents&&se(n.proxy,e)):delete P.sharedFolders[e]},c.migrate(e())}).nThen(function(n){var t=P.network||P.networkPromise;p.loadSharedFolders(y,t,P,i.proxy,c,n,n=>{var t={type:"sf",progress:100*n.progress/n.max};m(e,"LOADING_DRIVE",t)},!0)}).nThen(function(n){ie(_,"team",n,e)}).nThen(function(e){ie(N,"calendar",e)}).nThen(function(){r()})}};const fe=(e=function(){})=>{ie(E,"cursor",e),ie(A,"integration",e),ie(T,"messenger",e),ie(S,"history",e),ie(U,"badge",e),P.onlyoffice||(P.onlyoffice=O.init(P,function(e,n,t){t.forEach(function(t){m(t,"OO_EVENT",{ev:e,data:n})})})),P&&(P.messenger=P.modules.messenger)},le=(e,n,t)=>{const r=a.mkAsync(t);ue(e,function(){q.fire(),r(n)})};var de=function(e,n,t){P.ready=!0;var c=P.proxy,u=P.manager,l=P.userObject;L(function(t){c.settings||(c.settings=Q),c.forms||(c.forms={}),c.friends_pending||(c.friends_pending={}),c.form_seed||(c.form_seed=o.createChannelId()),u||(le(e,n,t()),u=P.manager,l=P.userObject),ne(0,0,t()),function(e,n,t){if(!P.loggedIn)return t();P.rpc?t(ee):f.create(P.network,P.proxy,function(e,n){e?t({error:e}):(P.rpc=n,P.onRpcReadyEvt.fire(),y.getPinLimit(null,null,function(e){e.error&&console.error(e.error),ee.limit=e.limit,ee.plan=e.plan,ee.note=e.note,t(e)}))},h)}(0,0,t()),m(e,"LOADING_DRIVE",{type:"migrate",progress:0})}).nThen(function(n){void 0===c.version&&(c.version=11),r(c,n(),function(n,t){m(e,"LOADING_DRIVE",{type:"migrate",progress:t})},P)}).nThen(function(n){m(e,"LOADING_DRIVE",{type:"sf",progress:0}),l.fixFiles(),p.loadSharedFolders(y,P.network,P,P.drive.proxy,l,n,n=>{var t={type:"sf",progress:100*n.progress/n.max};m(e,"LOADING_DRIVE",t)}),fe(n),ie(D,"profile",n),ie(N,"calendar",n),ie(b,"support",n),L(e=>{P.modules.team&&P.modules.team.onReady(e)})}).nThen(function(e){y.fixMissingRtChannel(e())}).nThen(function(){var e,r=function(){I([],"REQUEST_LOGIN")};P.loggedIn&&(function(e){if(P.rpc){var n=$(!0),t=o.hashChannelList(n);P.rpc.getServerHash(function(n,r){n?e(n):e(null,r===t)})}else e({error:"RPC_NOT_READY"})}(function(e,n){n||function(e){if(P.rpc){var n=$();P.rpc.reset(n,function(n){e(n||null)})}else e({error:"RPC_NOT_READY"})}(function(e){if(e)return console.error(e);console.log("RESET DONE")})}),"number"!=typeof c.loginToken&&(c[i.tokenKey]=P.data.localToken||Math.floor(Math.random()*Number.MAX_SAFE_INTEGER)),n[i.tokenKey]=c[i.tokenKey],P.data.localToken&&P.data.localToken!==c[i.tokenKey])?r():(n.feedback=a.find(c,["settings","general","allowUserFeedback"]),s.init(n.feedback),P.returned=n,"function"==typeof t&&t(n),P.offline=!1,M("NETWORK_RECONNECT"),I([],"UPDATE_METADATA"),I([],"STORE_READY",n),"string"==typeof c.uid&&32===c.uid.length||(console.log("generating a persistent identifier"),c.uid=o.createChannelId()),!P.loggedIn||y.hasSigningKeys()&&y.hasCurveKeys()?(c.on("change",[i.displayNameKey],function(e,n){"string"==typeof n&&I([],"UPDATE_METADATA")}),c.on("change",["profile"],function(){I([],"UPDATE_METADATA")}),c.on("change",["friends"],function(e,n,t){if(I([],"UPDATE_METADATA"),P.messenger&&void 0===e){var r=t.slice(-1)[0],o=c.friends&&c.friends[r];P.messenger.onFriendAdded(o)}}),c.on("remove",["friends"],function(e,n){if(I([],"UPDATE_METADATA"),P.messenger){var t=n[1];t&&"channel"===n[2]&&P.messenger.onFriendRemoved(t,e)}}),c.on("change",["friends_pending"],function(){I([],"UPDATE_METADATA")}),c.on("remove",["friends_pending"],function(){I([],"UPDATE_METADATA")}),c.on("change",["settings"],function(){I([],"UPDATE_METADATA")}),c.on("change",[i.tokenKey],function(){P.isDeleted||"DELETED"===c[i.tokenKey]||I([],"UPDATE_TOKEN",{token:c[i.tokenKey]})}),P.mailbox=w.init({Store:y,store:P,updateMetadata:function(){I([],"UPDATE_METADATA")},updateDrive:function(){M("DRIVE_CHANGE",{path:["drive","filesData"]})},pinPads:function(e,n){y.pinPads(null,e,n)}},e,function(e,n,t,r){var o=a.once(r||function(){});t.forEach(function(t){m(t,"MAILBOX_EVENT",{ev:e,data:n},o)})}),J.fire()):r())})};const he=(e,n,t,r)=>{if(P.accountModule)return P.accountModule;const o=H.init({userHash:n.userHash,anonHash:n.anonHash,cache:n.cache,form_seed:n.form_seed,store:P,broadcast:I,postMessage:m});P.accountModule=o;const{channel:i,onAccountReady:s,onAccountCacheReady:c,onDisconnect:u,onReconnect:f}=o;P.driveChannel=i,c(e=>{P.cacheReturned||=e,t(e)}),s(e=>{P.returned||=e,r(e)}),u(()=>{M("NETWORK_DISCONNECT")}),f(()=>{M("NETWORK_RECONNECT")});return setInterval(function(){var e=[];const n=y.pad.getChannels();Object.keys(n).forEach(function(t){var r=n[t].clients;Array.prototype.push.apply(e,r)}),(e=a.deduplicateString(e)).forEach(function(e){var n=0,t=function(){if(n>=2)return y._removeClient(e),m(e,"TIMEOUT"),void console.error("TIMEOUT",e);n++;var r=setTimeout(t,3e4);m(e,"PING",null,function(e){e&&console.error(e),clearTimeout(r)})};t()})},12e4),o},pe=(e,n,t,r)=>{const o=a.once(e=>{const n=j.init({account:e,store:P,broadcast:I,postMessage:m}),{onDriveReady:o,onDriveCacheReady:a,onDisconnect:i,onReconnect:s}=n;a(()=>{t(P.cacheReturned||P.returned)}),o(()=>{W.fire(),r(P.returned)}),i(()=>{}),s(()=>{})}),i=()=>{},s=he(0,n,i,i);s.onAccountCacheReady(()=>{o(s)}),s.onAccountReady(()=>{o(s)})};y.disableCache=function(e,n,t){n?h.disable():h.enable(),t()};var ve=!1;const ye=e=>{if(P?.network?.historyKeeper)return setTimeout(e);const n=n=>{P.network||=n;n.join("0000000000000000000000000000000000").then(function(t){let r;t.members.forEach(e=>{16===e.length&&(r=e)}),n.historyKeeper=r,t.leave(),e()},function(n){console.error(n),e({error:"GET_HK"})})};if(P.network)return n(P.network);P.networkPromise?.then(n)};var me=function(e,n,t){const r=a.once(n);var o=function(){fe();let e=()=>{ne(0,0,function(){s.send("NO_DRIVE",!0),r({})})};ye(n=>{if(!n)return t?((e,n)=>{if(P.rpc)n(P.rpc);else{var t=R.Nacl.sign.keyPair(),r=P.tempKeys={edPublic:a.encodeBase64(t.publicKey),edPrivate:a.encodeBase64(t.secretKey)};f.create(P.network,r,function(e,t){e?n({error:e}):(P.rpc=t,n(t))})}})(0,e):void e()}),P.network||t||r({})};if(!P.network){var i=C.getWebsocketURL();return P.networkPromise=F.connect(i),o(),P.networkPromise.then(e=>{P.network!==e&&(P.network?(e.disconnect(),e=P.network):P.network=e)},function(e){console.error(e),r({error:"OFFLINE"})})}o()};const ge=(e,n,t)=>{P.manager?q.reg(function(){ye(r=>{P.network||=r,de(e,n,()=>{t(n)})})}):de(e,n,()=>{t(n)})};return y.init=function(e,n,t){var r=a.once(function(r){n.driveEvents&&function(e){q.reg(()=>{-1===k.indexOf(e)&&k.push(e),P.driveEvents||(P.driveEvents=!0,se(P.proxy),Object.keys(P.manager.folders).forEach(function(e){var n=P.manager.folders[e].proxy;se(n,e)}))})}(e),t(r)});if(ve&&!P.returned&&n.cache)q.reg(function(){r({state:"ALREADY_INIT",returned:P.cacheReturned})});else{if(ve)return P.networkTimeout&&m(e,"LOADING_DRIVE",{type:"offline"}),void J.reg(function(){r({state:"ALREADY_INIT",returned:P.returned})});n.disableCache&&h.disable(),n.noDrive&&!n.requires&&(n.requires="pad"),((e,n,t)=>{if(n.neverDrive||n.noDrive&&!n.userHash&&!n.anonHash)return n.neverDrive&&(P.neverCache=!0),void me(0,e=>{e?.error&&s.send("NO_DRIVE_ERROR",!0),n.neverDrive&&(e.tempKeys=P?.tempKeys),t(e)},!!n.neverDrive);const r=n.requires,o=!n.noDrive;ve=!0,P.data=n;let c=e=>{1===Object.keys(P.proxy).length&&s.send("FIRST_APP_USE",!0),e&&e.error&&(ve=!1)};if("pad"===r&&!o)return void me(0,function(r){if(r&&r.error)return;t(r);let o=a.once(()=>{pe(0,n,n=>{le(e,n,c)},n=>{ge(e,n,c)})});y.pad.onCacheReady(()=>{P.network||o()}),y.pad.onJoined(o),z.reg(o)});if("file"===r&&!o)return void me(0,function(r){r&&r.error||(t(r),pe(0,n,n=>{le(e,n,c)},n=>{ge(e,n,c)}))});if("team"===r){let r=!1;const o=o=>a=>{r||(r=!0,L(e=>{o||ne(0,0,e())}).nThen(n=>{ie(_,"team",n,e)}).nThen(e=>{!o&&P.modules.team&&P.modules.team.onReady(e)}).nThen(()=>{t(a),pe(0,n,n=>{le(e,n,c)},n=>{ge(e,n,c)})}))};return void he(0,n,o(!0),o(!1))}if("drive"===r)return void pe(0,n,n=>{t(n),le(e,n,c)},n=>{t(n),ge(e,n,c)});let u=e=>{c(e);const n=i.prefersDriveRedirectKey,r=a.find(P,["proxy","settings","general",n]);e[n]=r,t(e)};pe(0,n,n=>{le(e,n,u)},n=>{ge(e,n,u)})})(e,n,a.once(e=>{"GET_HK"!==e.error?r(e):r({error:"ERROR"})}))}},J.reg(function(){var e=+new Date-7776e6;h.getKeys(function(n,t){if(n)console.error(n);else{var r=function(){if(t.length){var n=t.pop();h.getTime(n,function(t,o){t?r():!o||o{const n=(e,n={})=>({create:function(t,r,o){var a,i=[],s=e.mkEvent(!0);t.reg(function(e){if(!a){var n=e.data;if("_READY"===n)return r("_READY"),a=!0,s.fire(),void i.forEach(function(e){t.fire(e)});i.push(n)}});var c={},u={},f={},l=[],d={},h={};h.query=function(e,n,t,o){var a,i=Math.random().toString(16).replace("0.","")+Math.random().toString(16).replace("0.",""),c=(o=o||{}).timeout||3e4;c>0&&(a=setTimeout(function(){delete u[i],t("TIMEOUT")},c)),f[i]=function(e){clearTimeout(a),delete f[i],e&&(delete u[i],t("UNHANDLED"))},u[i]=function(e,n){delete u[i],t(void 0,e.content,n)},s.reg(function(){var t={txid:i,content:n,q:e,raw:o.raw};r(o.raw?t:JSON.stringify(t))})};var p=h.event=function(e,n,t){t=t||{},s.reg(function(){var o={content:n,q:e,raw:t.raw};r(t.raw?o:JSON.stringify(o))})};h.on=function(e,n,t){var o=function(e,t,o){n(e.content,function(n){var t={txid:e.txid,content:n};r(o?t:JSON.stringify(t))},t)};return(c[e]=c[e]||[]).push(o),t||p("EV_REGISTER_HANDLER",e),{stop:function(){var n=c[e].indexOf(o);-1!==n&&c[e].splice(n,1)}}},h.whenReg=function(e,n,t){var r=t;l.indexOf(e)>-1?n():r=!0,r&&(d[e]=d[e]||[]).push(n)},h.onReg=function(e,n){h.whenReg(e,n,!0)},h.on("EV_REGISTER_HANDLER",function(e){d[e]&&(d[e].forEach(function(e){e()}),delete d[e]),l.push(e)});var v=!1;h.onReady=function(e){v?e():"function"==typeof e&&h.on("EV_RPC_READY",function(){v=!0,e()})},h.ready=function(){h.whenReg("EV_RPC_READY",function(){h.event("EV_RPC_READY")})};var y=[""];n.httpUnsafeOrigin?(y.push(n.httpUnsafeOrigin),y.push(n.httpSafeOrigin)):globalThis.location&&y.push(globalThis.location.origin),t.reg(function(e){if(a&&e.data&&"_READY"!==e.data&&y.includes(e.origin)){var n;try{n="object"==typeof e.data?e.data:JSON.parse(e.data)}catch(e){return void console.warn(e)}void 0!==n.ack?f[n.txid]&&f[n.txid](!n.ack):"string"==typeof n.q?c[n.q]?(n.txid&&r(JSON.stringify({txid:n.txid,ack:!0})),c[n.q].forEach(function(t){t(n||JSON.parse(e.data),e,n&&n.raw),n=void 0})):n.txid&&r(JSON.stringify({txid:n.txid,ack:!1})):void 0===n.q&&u[n.txid]&&u[n.txid](n,e)}}),r("_READY"),o(h)}});e.exports&&(e.exports=n(X()))})()}(br)),br.exports}function Or(){if(mr)return yr;mr=1;var e;return yr=((e,n,t)=>{const r={};let o,a,i={},s=()=>{};return r.init=n=>{if(a)return;a=e.create({query:(e,n,t,r)=>{r=r||function(){},i[e].chan.query(n,t,function(e,n){r(e?{error:e}:n)})},broadcast:(e,n,t,r)=>{r=r||function(){},Object.keys(i).forEach(o=>{-1===e.indexOf(+o)&&i[o].chan.query(n,t,(e,n)=>{r(e?{error:e}:n)})})}}),s=n},r.initClient=(e,r)=>{if(!a)return console.error("Not initialized"),void r("NOT_INIT");const{postMsg:c}=e,u=t.mkEvent(),f=Number(Math.floor(Math.random()*Number.MAX_SAFE_INTEGER)),l=()=>{a._removeClient(f)};n.create(u,c,function(e){let n=i[f]={chan:e};console.debug("SharedW Channel created"),Object.keys(a.queries).forEach(function(t){"CONNECT"!==t&&"JOIN_PAD"!==t&&"SEND_PAD_MSG"!==t&&"STOPWORKER"!==t&&e.on(t,function(e,r){try{a.queries[t](f,e,r)}catch(n){console.error("Error in webworker when executing query "+t),console.error(n),console.log(e)}"DISCONNECT"===t&&(l(),globalThis.accountDeletion&&globalThis.accountDeletion===n.id&&(a=void 0,o=void 0))})}),e.on("STOPWORKER",function(e,n){s(),a.queries.DISCONNECT(f,e,n)}),e.on("CONNECT",function(e,n){console.debug("Connecting to store..."),a.queries.CONNECT(f,e,function(e){if(e&&"ALREADY_INIT"===e.state)return console.debug("Store already exists!"),o=o||e.returned,void n(e);o=e,n(e)})}),e.on("JOIN_PAD",function(e,t){n.channelId=e.channel;try{a.queries.JOIN_PAD(f,e,t)}catch(n){console.error("Error in webworker when executing query JOIN_PAD"),console.error(n),console.log(e)}}),e.on("SEND_PAD_MSG",function(e,t){var r={msg:e,channel:n.channelId};try{a.queries.SEND_PAD_MSG(f,r,t)}catch(e){console.error("Error in webworker when executing query SEND_PAD_MSG"),console.error(e),console.log(r)}}),r(u,l)},!0)},r})((dr||(dr=1,e=fr(),lr={create:function(n){var t=e.create(n),r={},o=r.queries={CONNECT:t.init,DISCONNECT:t.disconnect,PING:function(e,n,t){t()},CACHE_DISABLE:t.disableCache,GET_PIN_LIMIT:t.getPinLimit,PIN_PADS:t.pinPads,UNPIN_PADS:t.unpinPads,GET_PINNED_USAGE:t.getPinnedUsage,GET_DELETED_PADS:t.getDeletedPads,UPLOAD_CHUNK:t.uploadChunk,UPLOAD_COMPLETE:t.uploadComplete,UPLOAD_STATUS:t.uploadStatus,UPLOAD_CANCEL:t.uploadCancel,ANON_RPC_MESSAGE:t.anonRpcMsg,GET_FILE_SIZE:t.getFileSize,GET_MULTIPLE_FILE_SIZE:t.getMultipleFileSize,GET:t.get,SET:t.set,ADD_PAD:t.addPad,SET_PAD_TITLE:t.setPadTitle,MOVE_TO_TRASH:t.moveToTrash,RESET_DRIVE:t.resetDrive,GET_METADATA:t.getMetadata,IS_ONLY_IN_SHARED_FOLDER:t.isOnlyInSharedFolder,SET_DISPLAY_NAME:t.setDisplayName,SET_PAD_ATTRIBUTE:t.setPadAttribute,GET_PAD_ATTRIBUTE:t.getPadAttribute,SET_ATTRIBUTE:t.setAttribute,GET_ATTRIBUTE:t.getAttribute,LIST_ALL_TAGS:t.listAllTags,GET_TEMPLATES:t.getTemplates,GET_SECURE_FILES_LIST:t.getSecureFilesList,GET_PAD_DATA:t.getPadData,GET_PAD_DATA_FROM_CHANNEL:t.getPadDataFromChannel,GET_STRONGER_HASH:t.getStrongerHash,INCREMENT_TEMPLATE_USE:t.incrementTemplateUse,GET_SHARED_FOLDER:t.getSharedFolder,ADD_SHARED_FOLDER:t.addSharedFolder,LOAD_SHARED_FOLDER:t.loadSharedFolderAnon,RESTORE_SHARED_FOLDER:t.restoreSharedFolder,UPDATE_SHARED_FOLDER_PASSWORD:t.updateSharedFolderPassword,ANSWER_FRIEND_REQUEST:t.answerFriendRequest,SEND_FRIEND_REQUEST:t.sendFriendRequest,ANON_GET_PREVIEW_CONTENT:t.anonGetPreviewContent,OO_COMMAND:t.onlyoffice.execCommand,MAILBOX_COMMAND:t.mailbox.execCommand,UNIVERSAL_COMMAND:t.universal.execCommand,SEND_PAD_MSG:t.pad.sendMessage,JOIN_PAD:t.pad.join,LEAVE_PAD:t.pad.leave,REMOVE_OWNED_CHANNEL:t.pad.destroy,CLEAR_OWNED_CHANNEL:t.pad.clear,CORRUPTED_CACHE:t.pad.onCorruptedCache,GET_LAST_HASH:t.pad.getLastHash,GET_FULL_HISTORY:t.getFullHistory,GET_HISTORY:t.getHistory,GET_HISTORY_RANGE:t.getHistoryRange,IS_NEW_CHANNEL:t.isNewChannel,CONTACT_PAD_OWNER:t.contactPadOwner,GIVE_PAD_ACCESS:t.givePadAccess,BURN_PAD:t.burnPad,GET_PAD_METADATA:t.pad?.getMetadata,SET_PAD_METADATA:t.pad?.setMetadata,CHANGE_PAD_PASSWORD_PIN:t.changePadPasswordPin,GET_SNAPSHOT:t.getSnapshot,DELETE_MAILBOX_MESSAGE:t.deleteMailboxMessage,FORM_GET_RESPONSES:t.form?.getResponses,DRIVE_USEROBJECT:t.userObjectCommand,GET_DRIVE:t.drive.get,SET_DRIVE:t.drive.set,MIGRATE_ANON_DRIVE:t.drive.migrateAnon,HAS_DRIVE:t.drive.exists,DELETE_ACCOUNT:t.deleteAccount,REMOVE_OWNED_PADS:t.removeOwnedPads,ADMIN_RPC:t.adminRpc,ADMIN_ADD_MAILBOX:t.addAdminMailbox};return r.query=function(e,n,t){o[e]?o[e]("0",n,t):console.error("UNHANDLED_STORE_RPC")},r._removeClient=t._removeClient,r}}),lr),Ar(),X()),yr}var wr,Dr,_r=function(){if(Er)return gr;Er=1;const e=Or();return gr={start:n=>{let t=!1,r=()=>{globalThis.close()};globalThis.window=globalThis,addEventListener("connect",o=>{console.debug("New SharedWorker client");const a=o.ports[0],i=e=>{a.postMessage(e)};let s,c=!1,u=()=>{};a.onmessage=function(o){if("INIT"===o.data?.type){if((o=>{t||(n(o),e.init(r),t=!0)})(o.data.cfg),c)return;c=!0,e.initClient({postMsg:i},function(e,n){s=e,u=n,i("SW_READY")})}else"CLOSE"===o.data?(console.debug("leave"),u()):s&&s.fire(o)}})}}}();var Tr,Sr,Nr=function(){if(Dr)return wr;Dr=1;const e=Or();return wr={start:n=>{let t,r=!1;const o=()=>{globalThis.close()},a=e=>{postMessage(e)};globalThis.window=globalThis,onmessage=function(i){if("INIT"===i.data?.type){let s=i.data.cfg;if(r)return;return n(s),e.init(o),r=!0,void e.initClient({postMsg:a},function(e){t=e,a("WW_READY")})}t&&t.fire(i)}}}}();var Ir=function(){if(Sr)return Tr;Sr=1;const e=Or(),n=X();return Tr={start:t=>{let r,o=!1,a=!1;const i=n.mkEvent(),s=()=>{a=!0},c=e=>{a||i.fire(e)};return{init:n=>{o||(t(n),e.init(s),o=!0,e.initClient({postMsg:c},function(e){r=e,c("STORE_READY")}))},onMessage:e=>{i.reg(n=>{setTimeout(()=>{e(n)})})},query:e=>{r&&!a&&r.fire({data:e,origin:""})}}}}}(),xr=Kn(),Cr=n({__proto__:null,default:r(xr)},[xr]),Rr=jn(),Pr=n({__proto__:null,default:r(Rr)},[Rr]),kr=Ft(),Mr=n({__proto__:null,default:r(kr)},[kr]),Fr=Lt(),Lr=n({__proto__:null,default:r(Fr)},[Fr]),Hr=Vt(),jr=n({__proto__:null,default:r(Hr)},[Hr]),Kr=$t(),Ur=n({__proto__:null,default:r(Kr)},[Kr]);let Br=e=>{[Te,nn,q,$e,B,Cr,gn,un,ke,Mr,Lr,Ur,pr,ge,Pr,jr,ir].forEach(n=>{"function"==typeof n.setCustomize&&n.setCustomize(e)})},Vr="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope,Yr="undefined"!=typeof SharedWorkerGlobalScope&&self instanceof SharedWorkerGlobalScope;e.store={},Yr?_r.start(Br):Vr?Nr.start(Br):("undefined"!=typeof module&&module.exports,e.store=Ir.start(Br)),e.start=Br}); +!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports):"function"==typeof define&&define.amd?define(["exports"],n):n((e="undefined"!=typeof globalThis?globalThis:e||self)["cryptpad-worker-min"]={})}(this,function(e){"use strict";function n(e,n){return n.forEach(function(n){n&&"string"!=typeof n&&!Array.isArray(n)&&Object.keys(n).forEach(function(t){if("default"!==t&&!(t in e)){var r=Object.getOwnPropertyDescriptor(n,t);Object.defineProperty(e,t,r.get?r:{enumerable:!0,get:function(){return n[t]}})}})}),Object.freeze(e)}var t="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function r(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function o(e){if(Object.prototype.hasOwnProperty.call(e,"__esModule"))return e;var n=e.default;if("function"==typeof n){var t=function e(){var t=!1;try{t=this instanceof e}catch{}return t?Reflect.construct(n,arguments,this.constructor):n.apply(this,arguments)};t.prototype=n.prototype}else t={};return Object.defineProperty(t,"__esModule",{value:!0}),Object.keys(e).forEach(function(n){var r=Object.getOwnPropertyDescriptor(e,n);Object.defineProperty(t,n,r.get?r:{enumerable:!0,get:function(){return e[n]}})}),t}var a,i={exports:{}},s={exports:{}},c={exports:{}};function u(){return a||(a=1,function(e){var n;n=function(){var e=function(){},n=function(){return(new Date).getTime()},t=function(e,n,t){e.timeouts.push(setTimeout(n,t))},r=function(n,r){n.ws&&(n.ws.onmessage=e,n.ws.onopen=e,n.ws.close(),r?n.ws.onclose({reason:"offline"}):t(n,function(){n.ws&&n.ws.onclose({reason:"forced closed because websocket failed to close"})},1e4))};const o=[],a=[];let i;const s=(e,t)=>{e.ws&&(a.push(n()),e.ws.send(JSON.stringify(t)))},c=()=>{const e=n();for(;"number"==typeof a[0]&&e-a[0]>1e3;)a.shift();return 1e3-(e-a[0])+1},u=e=>{for(c();a.length<100&&o.length;){const n=o.shift();s(e,n)}if(o.length){const t=1e3-(n-a[0])+1;clearTimeout(i),i=setTimeout(()=>{u(e)},t)}};var f=function(e,n){if(!e.ws)return!1;if(o.length)return o.push(n),!0;const t=c();return a.length>=100?(o.push(n),clearTimeout(i),i=setTimeout(()=>{u(e)},t),!0):(s(e,n),!0)},l=function(e,n){return function(e,t){var r=n[e];if(!r)throw new Error("no such event "+e);r.push(t)}},d=function(e,n,t,r){var o=r[n];if(!o)throw new Error("no such event "+n);var a=o.indexOf(t);-1!==a&&o.splice(a,1)},h=function(e,t,r){if(e.channels[t])return new Promise(function(n){n(e.channels[t])});var o=e.queues.p2;1===r?o=e.queues.p1:3===r&&(o=e.queues.p3);var a={queue:o,onMessage:[],onJoin:[],onLeave:[],members:[],jSeq:e.seq++},i={message:a.onMessage,join:a.onJoin,leave:a.onLeave},s={_:a,time:n(),id:t,members:a.members,bcast:function(t){return function(e,t,r){var o=e.channels[t],a=e.seq++,i=[a,"MSG",t,r];if(!o)return new Promise(function(e,n){n({type:"NO_SUCH_CHANNEL",message:JSON.stringify(i)})});var s=f(e,i);return new Promise(function(t,r){s?e.requests[a]={channel:o,reject:r,resolve:t,time:n()}:r({type:"DISCONNECTED",message:JSON.stringify(i)})})}(e,s.id,t)},leave:function(t){return function(e,t,r){if(e.channels[t]){if(delete e.channels[t],e.ws&&1===e.ws.readyState){var o=e.seq++;f(e,[o,"LEAVE",t,r]);var a=function(){};e.requests[o]={reject:a,resolve:a,time:n()}}}else console.debug("no such channel",t)}(e,s.id,t)},on:l(0,i),off:function(e,n){d(0,e,n,i)}};e.requests[a.jSeq]=s;var c=[a.jSeq,"JOIN",t],u=f(e,c);return new Promise(function(e,n){u?(s._.resolve=e,s._.reject=n):n({type:"DISCONNECTED",message:JSON.stringify(c)})})},p=function(t){var r={message:t.onMessage,disconnect:t.onDisconnect,reconnect:t.onReconnect},o={webChannels:t.channels,getLag:function(){return function(e){return e.ws?e.pingOutstanding?Math.max(n()-e.timeOfLastPingSent,e.lastObservedLag):e.lastObservedLag:null}(t)},sendto:function(e,r){return function(e,t,r){var o=e.seq++,a=[o,"MSG",t,r],i=f(e,a);return new Promise(function(t,r){i?e.requests[o]={reject:r,resolve:t,time:n()}:r({type:"DISCONNECTED",message:JSON.stringify(a)})})}(t,e,r)},join:function(e,n){return h(t,e,n)},disconnect:function(){return function(n){if(n.ws){var t=n.ws.onclose;n.ws.onclose=e,n.ws.close(),t({reason:"network.disconnect() called"})}n.timeouts.forEach(clearTimeout),n.timeouts=[]}(t)},on:l(0,r),off:function(e,n){d(0,e,n,r)}};return o.__defineGetter__("webChannels",function(){return Object.keys(t.channels).map(function(e){return t.channels[e]})}),o},v=function(e){if(!e.queues.busy){var n=function(){var t=e.queues.p1.shift()||e.queues.p2.shift()||e.queues.p3.shift();if(t){e.queues.busy=!0;var r=t.h,o=t.msg;Promise.resolve().then(()=>{t.resolve?t.resolve():r.forEach(function(e){try{e(o[4],o[1])}catch(e){console.error(e)}})}).then(n)}else e.queues.busy=!1};n()}};return{connect:function(o,a){a=a||function(e){return new globalThis.WebSocket(e)};var i={ws:null,seq:1,uid:null,network:null,channels:{},onMessage:[],onDisconnect:[],onReconnect:[],timeouts:[],requests:{},pingInterval:null,queues:{p1:[],p2:[],p3:[]},timeOfLastPingSent:-1,timeOfLastPingReceived:-1,timeOfLastMsgReceived:-1,lastObservedLag:0,pingOutstanding:0};i.network=p(i);var s=e,c=e;"undefined"!=typeof window&&window.addEventListener("offline",function(){-1===["localhost","127.0.0.1",""].indexOf(window.location.hostname)&&r(i,!0)});var u=function(){var l=i.ws=a(o);i.timeOfLastPingSent=i.timeOfLastPingReceived=n(),i.timeOfLastMsgReceived=n(),l.onmessage=function(e){return function(e,t){var o=void 0;try{o=JSON.parse(t.data)}catch(e){return void console.log(e.stack)}if(e.timeOfLastMsgReceived=n(),0===o[0]){if("IDENT"===o[2])return e.uid=o[3],e.ws._onident(),void(e.pingInterval=setInterval(function(){if(!(n()-e.timeOfLastPingReceived<15e3||(n()-e.timeOfLastMsgReceived>6e4&&r(e),e.pingOutstanding))){var t=e.seq++,o=n();e.timeOfLastPingSent=o,e.pingOutstanding++,e.requests[t]={time:o,ping:o},f(e,[t,"PING"])}},5e3));if(e.uid){if("PING"===o[2])return o[2]="PONG",void f(e,o);if("MSG"===o[2]){var a=void 0,i=e.queues.p2;if(o[3]===e.uid)a=e.onMessage,"number"==typeof o[5]&&(1===o[5]&&(i=e.queues.p1),3===o[5]&&(i=e.queues.p3));else{var s=e.channels[o[3]];if(!s)return void console.log("message to non-existent chan "+JSON.stringify(o));a=s._.onMessage,s._.queue&&(i=s._.queue)}i.push({msg:o,h:a}),v(e)}if("LEAVE"===o[2]){var c=e.channels[o[3]];if(!c)return void(o[1]!==e.uid&&console.log("leaving non-existent chan "+JSON.stringify(o)));var u=c._.members.indexOf(o[1]);-1!==u&&c._.members.splice(u,1),c._.onLeave.forEach(function(e){try{e(o[1],o[4])}catch(e){console.log(e.stack)}})}if("JOIN"===o[2]){var l=e.channels[o[3]];if(!l)return void console.log("ERROR: join to non-existent chan "+JSON.stringify(o));if(-1!==l._.members.indexOf(o[1]))return;var d=-1!==l._.members.indexOf(e.uid);l._.members.push(o[1]),d||o[1]!==e.uid||(l.myID=e.uid,l._.resolve(l)),d&&l._.onJoin.forEach(function(e){try{e(o[1])}catch(e){console.log(e.stack)}})}}}else{var h=e.requests[o[0]];if(!h)return void console.log("error: "+JSON.stringify(o));if(delete e.requests[o[0]],"ACK"===o[1]){if(h.ping)return e.lastObservedLag=n()-Number(h.ping),e.timeOfLastPingReceived=n(),void e.pingOutstanding--;if(h.channel){const n=h.channel;let t=e.queues.p2;return n._.queue&&(t=n._.queue),t.push({msg:o,resolve:h.resolve}),void v(e)}h.resolve()}else if("JACK"===o[1]){if(h._){if(!o[2])throw new Error("wrong type of ACK for channel join");return h.id=o[2],void(e.channels[h.id]=h)}h.resolve()}else if("ERROR"===o[1])if("function"==typeof h.reject)h.reject({type:o[2],message:o[3]});else if(h._&&"function"==typeof h._.reject){if("EJOINED"===o[2]&&!e.channels[o[3]])return h.id=o[3],void(e.channels[h.id]=h);h._.reject({type:o[2],message:o[3]})}else console.error(o);else h.reject({type:"UNKNOWN",message:JSON.stringify(o)})}}(i,e)},l.onclose=function(n){l.onclose=e,clearInterval(i.pingInterval),i.timeouts.forEach(clearTimeout),i.ws=null,i.uid&&(i.uid=null,i.onDisconnect.forEach(function(e){try{e(n.reason)}catch(e){console.log(e.stack)}})),t(i,u,i.uid?0:7e3)},l.onopen=function(){t(i,function(){i.uid||(c({type:"TIMEOUT",message:"waited 30000ms"}),s=c=e,r(i))},3e4)},i.ws._onident=function(){i.timeOfLastPingReceived=n(),i.timeOfLastMsgReceived=n(),i.lastObservedLag=n()-i.timeOfLastPingSent,s!==e?(s(i.network),s=c=e):(i.channels={},i.requests={},i.pingOutstanding=0,i.onReconnect.forEach(function(e){try{e(i.uid)}catch(e){console.log(e.stack)}}))}};return new Promise(function(e,n){s=e,c=n,u()})}}},e.exports?e.exports=n():window.netflux_websocket=n()}(c)),c.exports}function f(e){throw new Error('Could not dynamically require "'+e+'". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.')}var l,d={exports:{}};function h(){return l||(l=1,function(e){!function(e){var n=function(e){var n,t=new Float64Array(16);if(e)for(n=0;n>24&255,e[n+1]=t>>16&255,e[n+2]=t>>8&255,e[n+3]=255&t,e[n+4]=r>>24&255,e[n+5]=r>>16&255,e[n+6]=r>>8&255,e[n+7]=255&r}function v(e,n,t,r,o){var a,i=0;for(a=0;a>>8)-1}function y(e,n,t,r){return v(e,n,t,r,16)}function m(e,n,t,r){return v(e,n,t,r,32)}function g(e,n,t,r){!function(e,n,t,r){for(var o,a=255&r[0]|(255&r[1])<<8|(255&r[2])<<16|(255&r[3])<<24,i=255&t[0]|(255&t[1])<<8|(255&t[2])<<16|(255&t[3])<<24,s=255&t[4]|(255&t[5])<<8|(255&t[6])<<16|(255&t[7])<<24,c=255&t[8]|(255&t[9])<<8|(255&t[10])<<16|(255&t[11])<<24,u=255&t[12]|(255&t[13])<<8|(255&t[14])<<16|(255&t[15])<<24,f=255&r[4]|(255&r[5])<<8|(255&r[6])<<16|(255&r[7])<<24,l=255&n[0]|(255&n[1])<<8|(255&n[2])<<16|(255&n[3])<<24,d=255&n[4]|(255&n[5])<<8|(255&n[6])<<16|(255&n[7])<<24,h=255&n[8]|(255&n[9])<<8|(255&n[10])<<16|(255&n[11])<<24,p=255&n[12]|(255&n[13])<<8|(255&n[14])<<16|(255&n[15])<<24,v=255&r[8]|(255&r[9])<<8|(255&r[10])<<16|(255&r[11])<<24,y=255&t[16]|(255&t[17])<<8|(255&t[18])<<16|(255&t[19])<<24,m=255&t[20]|(255&t[21])<<8|(255&t[22])<<16|(255&t[23])<<24,g=255&t[24]|(255&t[25])<<8|(255&t[26])<<16|(255&t[27])<<24,E=255&t[28]|(255&t[29])<<8|(255&t[30])<<16|(255&t[31])<<24,b=255&r[12]|(255&r[13])<<8|(255&r[14])<<16|(255&r[15])<<24,A=a,O=i,w=s,D=c,_=u,T=f,S=l,N=d,I=h,x=p,C=v,R=y,P=m,k=g,M=E,F=b,L=0;L<20;L+=2)A^=(o=(P^=(o=(I^=(o=(_^=(o=A+P|0)<<7|o>>>25)+A|0)<<9|o>>>23)+_|0)<<13|o>>>19)+I|0)<<18|o>>>14,T^=(o=(O^=(o=(k^=(o=(x^=(o=T+O|0)<<7|o>>>25)+T|0)<<9|o>>>23)+x|0)<<13|o>>>19)+k|0)<<18|o>>>14,C^=(o=(S^=(o=(w^=(o=(M^=(o=C+S|0)<<7|o>>>25)+C|0)<<9|o>>>23)+M|0)<<13|o>>>19)+w|0)<<18|o>>>14,F^=(o=(R^=(o=(N^=(o=(D^=(o=F+R|0)<<7|o>>>25)+F|0)<<9|o>>>23)+D|0)<<13|o>>>19)+N|0)<<18|o>>>14,A^=(o=(D^=(o=(w^=(o=(O^=(o=A+D|0)<<7|o>>>25)+A|0)<<9|o>>>23)+O|0)<<13|o>>>19)+w|0)<<18|o>>>14,T^=(o=(_^=(o=(N^=(o=(S^=(o=T+_|0)<<7|o>>>25)+T|0)<<9|o>>>23)+S|0)<<13|o>>>19)+N|0)<<18|o>>>14,C^=(o=(x^=(o=(I^=(o=(R^=(o=C+x|0)<<7|o>>>25)+C|0)<<9|o>>>23)+R|0)<<13|o>>>19)+I|0)<<18|o>>>14,F^=(o=(M^=(o=(k^=(o=(P^=(o=F+M|0)<<7|o>>>25)+F|0)<<9|o>>>23)+P|0)<<13|o>>>19)+k|0)<<18|o>>>14;A=A+a|0,O=O+i|0,w=w+s|0,D=D+c|0,_=_+u|0,T=T+f|0,S=S+l|0,N=N+d|0,I=I+h|0,x=x+p|0,C=C+v|0,R=R+y|0,P=P+m|0,k=k+g|0,M=M+E|0,F=F+b|0,e[0]=A>>>0&255,e[1]=A>>>8&255,e[2]=A>>>16&255,e[3]=A>>>24&255,e[4]=O>>>0&255,e[5]=O>>>8&255,e[6]=O>>>16&255,e[7]=O>>>24&255,e[8]=w>>>0&255,e[9]=w>>>8&255,e[10]=w>>>16&255,e[11]=w>>>24&255,e[12]=D>>>0&255,e[13]=D>>>8&255,e[14]=D>>>16&255,e[15]=D>>>24&255,e[16]=_>>>0&255,e[17]=_>>>8&255,e[18]=_>>>16&255,e[19]=_>>>24&255,e[20]=T>>>0&255,e[21]=T>>>8&255,e[22]=T>>>16&255,e[23]=T>>>24&255,e[24]=S>>>0&255,e[25]=S>>>8&255,e[26]=S>>>16&255,e[27]=S>>>24&255,e[28]=N>>>0&255,e[29]=N>>>8&255,e[30]=N>>>16&255,e[31]=N>>>24&255,e[32]=I>>>0&255,e[33]=I>>>8&255,e[34]=I>>>16&255,e[35]=I>>>24&255,e[36]=x>>>0&255,e[37]=x>>>8&255,e[38]=x>>>16&255,e[39]=x>>>24&255,e[40]=C>>>0&255,e[41]=C>>>8&255,e[42]=C>>>16&255,e[43]=C>>>24&255,e[44]=R>>>0&255,e[45]=R>>>8&255,e[46]=R>>>16&255,e[47]=R>>>24&255,e[48]=P>>>0&255,e[49]=P>>>8&255,e[50]=P>>>16&255,e[51]=P>>>24&255,e[52]=k>>>0&255,e[53]=k>>>8&255,e[54]=k>>>16&255,e[55]=k>>>24&255,e[56]=M>>>0&255,e[57]=M>>>8&255,e[58]=M>>>16&255,e[59]=M>>>24&255,e[60]=F>>>0&255,e[61]=F>>>8&255,e[62]=F>>>16&255,e[63]=F>>>24&255}(e,n,t,r)}function E(e,n,t,r){!function(e,n,t,r){for(var o,a=255&r[0]|(255&r[1])<<8|(255&r[2])<<16|(255&r[3])<<24,i=255&t[0]|(255&t[1])<<8|(255&t[2])<<16|(255&t[3])<<24,s=255&t[4]|(255&t[5])<<8|(255&t[6])<<16|(255&t[7])<<24,c=255&t[8]|(255&t[9])<<8|(255&t[10])<<16|(255&t[11])<<24,u=255&t[12]|(255&t[13])<<8|(255&t[14])<<16|(255&t[15])<<24,f=255&r[4]|(255&r[5])<<8|(255&r[6])<<16|(255&r[7])<<24,l=255&n[0]|(255&n[1])<<8|(255&n[2])<<16|(255&n[3])<<24,d=255&n[4]|(255&n[5])<<8|(255&n[6])<<16|(255&n[7])<<24,h=255&n[8]|(255&n[9])<<8|(255&n[10])<<16|(255&n[11])<<24,p=255&n[12]|(255&n[13])<<8|(255&n[14])<<16|(255&n[15])<<24,v=255&r[8]|(255&r[9])<<8|(255&r[10])<<16|(255&r[11])<<24,y=255&t[16]|(255&t[17])<<8|(255&t[18])<<16|(255&t[19])<<24,m=255&t[20]|(255&t[21])<<8|(255&t[22])<<16|(255&t[23])<<24,g=255&t[24]|(255&t[25])<<8|(255&t[26])<<16|(255&t[27])<<24,E=255&t[28]|(255&t[29])<<8|(255&t[30])<<16|(255&t[31])<<24,b=255&r[12]|(255&r[13])<<8|(255&r[14])<<16|(255&r[15])<<24,A=0;A<20;A+=2)a^=(o=(m^=(o=(h^=(o=(u^=(o=a+m|0)<<7|o>>>25)+a|0)<<9|o>>>23)+u|0)<<13|o>>>19)+h|0)<<18|o>>>14,f^=(o=(i^=(o=(g^=(o=(p^=(o=f+i|0)<<7|o>>>25)+f|0)<<9|o>>>23)+p|0)<<13|o>>>19)+g|0)<<18|o>>>14,v^=(o=(l^=(o=(s^=(o=(E^=(o=v+l|0)<<7|o>>>25)+v|0)<<9|o>>>23)+E|0)<<13|o>>>19)+s|0)<<18|o>>>14,b^=(o=(y^=(o=(d^=(o=(c^=(o=b+y|0)<<7|o>>>25)+b|0)<<9|o>>>23)+c|0)<<13|o>>>19)+d|0)<<18|o>>>14,a^=(o=(c^=(o=(s^=(o=(i^=(o=a+c|0)<<7|o>>>25)+a|0)<<9|o>>>23)+i|0)<<13|o>>>19)+s|0)<<18|o>>>14,f^=(o=(u^=(o=(d^=(o=(l^=(o=f+u|0)<<7|o>>>25)+f|0)<<9|o>>>23)+l|0)<<13|o>>>19)+d|0)<<18|o>>>14,v^=(o=(p^=(o=(h^=(o=(y^=(o=v+p|0)<<7|o>>>25)+v|0)<<9|o>>>23)+y|0)<<13|o>>>19)+h|0)<<18|o>>>14,b^=(o=(E^=(o=(g^=(o=(m^=(o=b+E|0)<<7|o>>>25)+b|0)<<9|o>>>23)+m|0)<<13|o>>>19)+g|0)<<18|o>>>14;e[0]=a>>>0&255,e[1]=a>>>8&255,e[2]=a>>>16&255,e[3]=a>>>24&255,e[4]=f>>>0&255,e[5]=f>>>8&255,e[6]=f>>>16&255,e[7]=f>>>24&255,e[8]=v>>>0&255,e[9]=v>>>8&255,e[10]=v>>>16&255,e[11]=v>>>24&255,e[12]=b>>>0&255,e[13]=b>>>8&255,e[14]=b>>>16&255,e[15]=b>>>24&255,e[16]=l>>>0&255,e[17]=l>>>8&255,e[18]=l>>>16&255,e[19]=l>>>24&255,e[20]=d>>>0&255,e[21]=d>>>8&255,e[22]=d>>>16&255,e[23]=d>>>24&255,e[24]=h>>>0&255,e[25]=h>>>8&255,e[26]=h>>>16&255,e[27]=h>>>24&255,e[28]=p>>>0&255,e[29]=p>>>8&255,e[30]=p>>>16&255,e[31]=p>>>24&255}(e,n,t,r)}var b=new Uint8Array([101,120,112,97,110,100,32,51,50,45,98,121,116,101,32,107]);function A(e,n,t,r,o,a,i){var s,c,u=new Uint8Array(16),f=new Uint8Array(64);for(c=0;c<16;c++)u[c]=0;for(c=0;c<8;c++)u[c]=a[c];for(;o>=64;){for(g(f,u,i,b),c=0;c<64;c++)e[n+c]=t[r+c]^f[c];for(s=1,c=8;c<16;c++)s=s+(255&u[c])|0,u[c]=255&s,s>>>=8;o-=64,n+=64,r+=64}if(o>0)for(g(f,u,i,b),c=0;c=64;){for(g(c,s,o,b),i=0;i<64;i++)e[n+i]=c[i];for(a=1,i=8;i<16;i++)a=a+(255&s[i])|0,s[i]=255&a,a>>>=8;t-=64,n+=64}if(t>0)for(g(c,s,o,b),i=0;i>>13|t<<3),r=255&e[4]|(255&e[5])<<8,this.r[2]=7939&(t>>>10|r<<6),o=255&e[6]|(255&e[7])<<8,this.r[3]=8191&(r>>>7|o<<9),a=255&e[8]|(255&e[9])<<8,this.r[4]=255&(o>>>4|a<<12),this.r[5]=a>>>1&8190,i=255&e[10]|(255&e[11])<<8,this.r[6]=8191&(a>>>14|i<<2),s=255&e[12]|(255&e[13])<<8,this.r[7]=8065&(i>>>11|s<<5),c=255&e[14]|(255&e[15])<<8,this.r[8]=8191&(s>>>8|c<<8),this.r[9]=c>>>5&127,this.pad[0]=255&e[16]|(255&e[17])<<8,this.pad[1]=255&e[18]|(255&e[19])<<8,this.pad[2]=255&e[20]|(255&e[21])<<8,this.pad[3]=255&e[22]|(255&e[23])<<8,this.pad[4]=255&e[24]|(255&e[25])<<8,this.pad[5]=255&e[26]|(255&e[27])<<8,this.pad[6]=255&e[28]|(255&e[29])<<8,this.pad[7]=255&e[30]|(255&e[31])<<8};function T(e,n,t,r,o,a){var i=new _(a);return i.update(t,r,o),i.finish(e,n),0}function S(e,n,t,r,o,a){var i=new Uint8Array(16);return T(i,0,t,r,o,a),y(e,n,i,0)}function N(e,n,t,r,o){var a;if(t<32)return-1;for(D(e,0,n,0,t,r,o),T(e,16,e,32,t-32,e),a=0;a<16;a++)e[a]=0;return 0}function I(e,n,t,r,o){var a,i=new Uint8Array(32);if(t<32)return-1;if(w(i,0,32,r,o),0!==S(n,16,n,32,t-32,i))return-1;for(D(e,0,n,0,t,r,o),a=0;a<32;a++)e[a]=0;return 0}function x(e,n){var t;for(t=0;t<16;t++)e[t]=0|n[t]}function C(e){var n,t,r=1;for(n=0;n<16;n++)t=e[n]+r+65535,r=Math.floor(t/65536),e[n]=t-65536*r;e[0]+=r-1+37*(r-1)}function R(e,n,t){for(var r,o=~(t-1),a=0;a<16;a++)r=o&(e[a]^n[a]),e[a]^=r,n[a]^=r}function P(e,t){var r,o,a,i=n(),s=n();for(r=0;r<16;r++)s[r]=t[r];for(C(s),C(s),C(s),o=0;o<2;o++){for(i[0]=s[0]-65517,r=1;r<15;r++)i[r]=s[r]-65535-(i[r-1]>>16&1),i[r-1]&=65535;i[15]=s[15]-32767-(i[14]>>16&1),a=i[15]>>16&1,i[14]&=65535,R(s,i,1-a)}for(r=0;r<16;r++)e[2*r]=255&s[r],e[2*r+1]=s[r]>>8}function k(e,n){var t=new Uint8Array(32),r=new Uint8Array(32);return P(t,e),P(r,n),m(t,0,r,0)}function M(e){var n=new Uint8Array(32);return P(n,e),1&n[0]}function F(e,n){var t;for(t=0;t<16;t++)e[t]=n[2*t]+(n[2*t+1]<<8);e[15]&=32767}function L(e,n,t){for(var r=0;r<16;r++)e[r]=n[r]+t[r]}function H(e,n,t){for(var r=0;r<16;r++)e[r]=n[r]-t[r]}function j(e,n,t){var r,o,a=0,i=0,s=0,c=0,u=0,f=0,l=0,d=0,h=0,p=0,v=0,y=0,m=0,g=0,E=0,b=0,A=0,O=0,w=0,D=0,_=0,T=0,S=0,N=0,I=0,x=0,C=0,R=0,P=0,k=0,M=0,F=t[0],L=t[1],H=t[2],j=t[3],K=t[4],U=t[5],B=t[6],V=t[7],G=t[8],Y=t[9],J=t[10],q=t[11],W=t[12],z=t[13],Q=t[14],X=t[15];a+=(r=n[0])*F,i+=r*L,s+=r*H,c+=r*j,u+=r*K,f+=r*U,l+=r*B,d+=r*V,h+=r*G,p+=r*Y,v+=r*J,y+=r*q,m+=r*W,g+=r*z,E+=r*Q,b+=r*X,i+=(r=n[1])*F,s+=r*L,c+=r*H,u+=r*j,f+=r*K,l+=r*U,d+=r*B,h+=r*V,p+=r*G,v+=r*Y,y+=r*J,m+=r*q,g+=r*W,E+=r*z,b+=r*Q,A+=r*X,s+=(r=n[2])*F,c+=r*L,u+=r*H,f+=r*j,l+=r*K,d+=r*U,h+=r*B,p+=r*V,v+=r*G,y+=r*Y,m+=r*J,g+=r*q,E+=r*W,b+=r*z,A+=r*Q,O+=r*X,c+=(r=n[3])*F,u+=r*L,f+=r*H,l+=r*j,d+=r*K,h+=r*U,p+=r*B,v+=r*V,y+=r*G,m+=r*Y,g+=r*J,E+=r*q,b+=r*W,A+=r*z,O+=r*Q,w+=r*X,u+=(r=n[4])*F,f+=r*L,l+=r*H,d+=r*j,h+=r*K,p+=r*U,v+=r*B,y+=r*V,m+=r*G,g+=r*Y,E+=r*J,b+=r*q,A+=r*W,O+=r*z,w+=r*Q,D+=r*X,f+=(r=n[5])*F,l+=r*L,d+=r*H,h+=r*j,p+=r*K,v+=r*U,y+=r*B,m+=r*V,g+=r*G,E+=r*Y,b+=r*J,A+=r*q,O+=r*W,w+=r*z,D+=r*Q,_+=r*X,l+=(r=n[6])*F,d+=r*L,h+=r*H,p+=r*j,v+=r*K,y+=r*U,m+=r*B,g+=r*V,E+=r*G,b+=r*Y,A+=r*J,O+=r*q,w+=r*W,D+=r*z,_+=r*Q,T+=r*X,d+=(r=n[7])*F,h+=r*L,p+=r*H,v+=r*j,y+=r*K,m+=r*U,g+=r*B,E+=r*V,b+=r*G,A+=r*Y,O+=r*J,w+=r*q,D+=r*W,_+=r*z,T+=r*Q,S+=r*X,h+=(r=n[8])*F,p+=r*L,v+=r*H,y+=r*j,m+=r*K,g+=r*U,E+=r*B,b+=r*V,A+=r*G,O+=r*Y,w+=r*J,D+=r*q,_+=r*W,T+=r*z,S+=r*Q,N+=r*X,p+=(r=n[9])*F,v+=r*L,y+=r*H,m+=r*j,g+=r*K,E+=r*U,b+=r*B,A+=r*V,O+=r*G,w+=r*Y,D+=r*J,_+=r*q,T+=r*W,S+=r*z,N+=r*Q,I+=r*X,v+=(r=n[10])*F,y+=r*L,m+=r*H,g+=r*j,E+=r*K,b+=r*U,A+=r*B,O+=r*V,w+=r*G,D+=r*Y,_+=r*J,T+=r*q,S+=r*W,N+=r*z,I+=r*Q,x+=r*X,y+=(r=n[11])*F,m+=r*L,g+=r*H,E+=r*j,b+=r*K,A+=r*U,O+=r*B,w+=r*V,D+=r*G,_+=r*Y,T+=r*J,S+=r*q,N+=r*W,I+=r*z,x+=r*Q,C+=r*X,m+=(r=n[12])*F,g+=r*L,E+=r*H,b+=r*j,A+=r*K,O+=r*U,w+=r*B,D+=r*V,_+=r*G,T+=r*Y,S+=r*J,N+=r*q,I+=r*W,x+=r*z,C+=r*Q,R+=r*X,g+=(r=n[13])*F,E+=r*L,b+=r*H,A+=r*j,O+=r*K,w+=r*U,D+=r*B,_+=r*V,T+=r*G,S+=r*Y,N+=r*J,I+=r*q,x+=r*W,C+=r*z,R+=r*Q,P+=r*X,E+=(r=n[14])*F,b+=r*L,A+=r*H,O+=r*j,w+=r*K,D+=r*U,_+=r*B,T+=r*V,S+=r*G,N+=r*Y,I+=r*J,x+=r*q,C+=r*W,R+=r*z,P+=r*Q,k+=r*X,b+=(r=n[15])*F,i+=38*(O+=r*H),s+=38*(w+=r*j),c+=38*(D+=r*K),u+=38*(_+=r*U),f+=38*(T+=r*B),l+=38*(S+=r*V),d+=38*(N+=r*G),h+=38*(I+=r*Y),p+=38*(x+=r*J),v+=38*(C+=r*q),y+=38*(R+=r*W),m+=38*(P+=r*z),g+=38*(k+=r*Q),E+=38*(M+=r*X),a=(r=(a+=38*(A+=r*L))+(o=1)+65535)-65536*(o=Math.floor(r/65536)),i=(r=i+o+65535)-65536*(o=Math.floor(r/65536)),s=(r=s+o+65535)-65536*(o=Math.floor(r/65536)),c=(r=c+o+65535)-65536*(o=Math.floor(r/65536)),u=(r=u+o+65535)-65536*(o=Math.floor(r/65536)),f=(r=f+o+65535)-65536*(o=Math.floor(r/65536)),l=(r=l+o+65535)-65536*(o=Math.floor(r/65536)),d=(r=d+o+65535)-65536*(o=Math.floor(r/65536)),h=(r=h+o+65535)-65536*(o=Math.floor(r/65536)),p=(r=p+o+65535)-65536*(o=Math.floor(r/65536)),v=(r=v+o+65535)-65536*(o=Math.floor(r/65536)),y=(r=y+o+65535)-65536*(o=Math.floor(r/65536)),m=(r=m+o+65535)-65536*(o=Math.floor(r/65536)),g=(r=g+o+65535)-65536*(o=Math.floor(r/65536)),E=(r=E+o+65535)-65536*(o=Math.floor(r/65536)),b=(r=b+o+65535)-65536*(o=Math.floor(r/65536)),a=(r=(a+=o-1+37*(o-1))+(o=1)+65535)-65536*(o=Math.floor(r/65536)),i=(r=i+o+65535)-65536*(o=Math.floor(r/65536)),s=(r=s+o+65535)-65536*(o=Math.floor(r/65536)),c=(r=c+o+65535)-65536*(o=Math.floor(r/65536)),u=(r=u+o+65535)-65536*(o=Math.floor(r/65536)),f=(r=f+o+65535)-65536*(o=Math.floor(r/65536)),l=(r=l+o+65535)-65536*(o=Math.floor(r/65536)),d=(r=d+o+65535)-65536*(o=Math.floor(r/65536)),h=(r=h+o+65535)-65536*(o=Math.floor(r/65536)),p=(r=p+o+65535)-65536*(o=Math.floor(r/65536)),v=(r=v+o+65535)-65536*(o=Math.floor(r/65536)),y=(r=y+o+65535)-65536*(o=Math.floor(r/65536)),m=(r=m+o+65535)-65536*(o=Math.floor(r/65536)),g=(r=g+o+65535)-65536*(o=Math.floor(r/65536)),E=(r=E+o+65535)-65536*(o=Math.floor(r/65536)),b=(r=b+o+65535)-65536*(o=Math.floor(r/65536)),a+=o-1+37*(o-1),e[0]=a,e[1]=i,e[2]=s,e[3]=c,e[4]=u,e[5]=f,e[6]=l,e[7]=d,e[8]=h,e[9]=p,e[10]=v,e[11]=y,e[12]=m,e[13]=g,e[14]=E,e[15]=b}function K(e,n){j(e,n,n)}function U(e,t){var r,o=n();for(r=0;r<16;r++)o[r]=t[r];for(r=253;r>=0;r--)K(o,o),2!==r&&4!==r&&j(o,o,t);for(r=0;r<16;r++)e[r]=o[r]}function B(e,t){var r,o=n();for(r=0;r<16;r++)o[r]=t[r];for(r=250;r>=0;r--)K(o,o),1!==r&&j(o,o,t);for(r=0;r<16;r++)e[r]=o[r]}function V(e,t,r){var o,a,i=new Uint8Array(32),c=new Float64Array(80),u=n(),f=n(),l=n(),d=n(),h=n(),p=n();for(a=0;a<31;a++)i[a]=t[a];for(i[31]=127&t[31]|64,i[0]&=248,F(c,r),a=0;a<16;a++)f[a]=c[a],d[a]=u[a]=l[a]=0;for(u[0]=d[0]=1,a=254;a>=0;--a)R(u,f,o=i[a>>>3]>>>(7&a)&1),R(l,d,o),L(h,u,l),H(u,u,l),L(l,f,d),H(f,f,d),K(d,h),K(p,u),j(u,l,u),j(l,f,h),L(h,u,l),H(u,u,l),K(f,u),H(l,d,p),j(u,l,s),L(u,u,d),j(l,l,u),j(u,d,p),j(d,f,c),K(f,h),R(u,f,o),R(l,d,o);for(a=0;a<16;a++)c[a+16]=u[a],c[a+32]=l[a],c[a+48]=f[a],c[a+64]=d[a];var v=c.subarray(32),y=c.subarray(16);return U(v,v),j(y,y,v),P(e,y),0}function G(e,n){return V(e,n,o)}function Y(e,n){return t(n,32),G(e,n)}function J(e,n,t){var o=new Uint8Array(32);return V(o,t,n),E(e,r,o,b)}_.prototype.blocks=function(e,n,t){for(var r,o,a,i,s,c,u,f,l,d,h,p,v,y,m,g,E,b,A,O=this.fin?0:2048,w=this.h[0],D=this.h[1],_=this.h[2],T=this.h[3],S=this.h[4],N=this.h[5],I=this.h[6],x=this.h[7],C=this.h[8],R=this.h[9],P=this.r[0],k=this.r[1],M=this.r[2],F=this.r[3],L=this.r[4],H=this.r[5],j=this.r[6],K=this.r[7],U=this.r[8],B=this.r[9];t>=16;)d=l=0,d+=(w+=8191&(r=255&e[n+0]|(255&e[n+1])<<8))*P,d+=(D+=8191&(r>>>13|(o=255&e[n+2]|(255&e[n+3])<<8)<<3))*(5*B),d+=(_+=8191&(o>>>10|(a=255&e[n+4]|(255&e[n+5])<<8)<<6))*(5*U),d+=(T+=8191&(a>>>7|(i=255&e[n+6]|(255&e[n+7])<<8)<<9))*(5*K),l=(d+=(S+=8191&(i>>>4|(s=255&e[n+8]|(255&e[n+9])<<8)<<12))*(5*j))>>>13,d&=8191,d+=(N+=s>>>1&8191)*(5*H),d+=(I+=8191&(s>>>14|(c=255&e[n+10]|(255&e[n+11])<<8)<<2))*(5*L),d+=(x+=8191&(c>>>11|(u=255&e[n+12]|(255&e[n+13])<<8)<<5))*(5*F),d+=(C+=8191&(u>>>8|(f=255&e[n+14]|(255&e[n+15])<<8)<<8))*(5*M),h=l+=(d+=(R+=f>>>5|O)*(5*k))>>>13,h+=w*k,h+=D*P,h+=_*(5*B),h+=T*(5*U),l=(h+=S*(5*K))>>>13,h&=8191,h+=N*(5*j),h+=I*(5*H),h+=x*(5*L),h+=C*(5*F),l+=(h+=R*(5*M))>>>13,h&=8191,p=l,p+=w*M,p+=D*k,p+=_*P,p+=T*(5*B),l=(p+=S*(5*U))>>>13,p&=8191,p+=N*(5*K),p+=I*(5*j),p+=x*(5*H),p+=C*(5*L),v=l+=(p+=R*(5*F))>>>13,v+=w*F,v+=D*M,v+=_*k,v+=T*P,l=(v+=S*(5*B))>>>13,v&=8191,v+=N*(5*U),v+=I*(5*K),v+=x*(5*j),v+=C*(5*H),y=l+=(v+=R*(5*L))>>>13,y+=w*L,y+=D*F,y+=_*M,y+=T*k,l=(y+=S*P)>>>13,y&=8191,y+=N*(5*B),y+=I*(5*U),y+=x*(5*K),y+=C*(5*j),m=l+=(y+=R*(5*H))>>>13,m+=w*H,m+=D*L,m+=_*F,m+=T*M,l=(m+=S*k)>>>13,m&=8191,m+=N*P,m+=I*(5*B),m+=x*(5*U),m+=C*(5*K),g=l+=(m+=R*(5*j))>>>13,g+=w*j,g+=D*H,g+=_*L,g+=T*F,l=(g+=S*M)>>>13,g&=8191,g+=N*k,g+=I*P,g+=x*(5*B),g+=C*(5*U),E=l+=(g+=R*(5*K))>>>13,E+=w*K,E+=D*j,E+=_*H,E+=T*L,l=(E+=S*F)>>>13,E&=8191,E+=N*M,E+=I*k,E+=x*P,E+=C*(5*B),b=l+=(E+=R*(5*U))>>>13,b+=w*U,b+=D*K,b+=_*j,b+=T*H,l=(b+=S*L)>>>13,b&=8191,b+=N*F,b+=I*M,b+=x*k,b+=C*P,A=l+=(b+=R*(5*B))>>>13,A+=w*B,A+=D*U,A+=_*K,A+=T*j,l=(A+=S*H)>>>13,A&=8191,A+=N*L,A+=I*F,A+=x*M,A+=C*k,w=d=8191&(l=(l=((l+=(A+=R*P)>>>13)<<2)+l|0)+(d&=8191)|0),D=h+=l>>>=13,_=p&=8191,T=v&=8191,S=y&=8191,N=m&=8191,I=g&=8191,x=E&=8191,C=b&=8191,R=A&=8191,n+=16,t-=16;this.h[0]=w,this.h[1]=D,this.h[2]=_,this.h[3]=T,this.h[4]=S,this.h[5]=N,this.h[6]=I,this.h[7]=x,this.h[8]=C,this.h[9]=R},_.prototype.finish=function(e,n){var t,r,o,a,i=new Uint16Array(10);if(this.leftover){for(a=this.leftover,this.buffer[a++]=1;a<16;a++)this.buffer[a]=0;this.fin=1,this.blocks(this.buffer,0,16)}for(t=this.h[1]>>>13,this.h[1]&=8191,a=2;a<10;a++)this.h[a]+=t,t=this.h[a]>>>13,this.h[a]&=8191;for(this.h[0]+=5*t,t=this.h[0]>>>13,this.h[0]&=8191,this.h[1]+=t,t=this.h[1]>>>13,this.h[1]&=8191,this.h[2]+=t,i[0]=this.h[0]+5,t=i[0]>>>13,i[0]&=8191,a=1;a<10;a++)i[a]=this.h[a]+t,t=i[a]>>>13,i[a]&=8191;for(i[9]-=8192,r=(1^t)-1,a=0;a<10;a++)i[a]&=r;for(r=~r,a=0;a<10;a++)this.h[a]=this.h[a]&r|i[a];for(this.h[0]=65535&(this.h[0]|this.h[1]<<13),this.h[1]=65535&(this.h[1]>>>3|this.h[2]<<10),this.h[2]=65535&(this.h[2]>>>6|this.h[3]<<7),this.h[3]=65535&(this.h[3]>>>9|this.h[4]<<4),this.h[4]=65535&(this.h[4]>>>12|this.h[5]<<1|this.h[6]<<14),this.h[5]=65535&(this.h[6]>>>2|this.h[7]<<11),this.h[6]=65535&(this.h[7]>>>5|this.h[8]<<8),this.h[7]=65535&(this.h[8]>>>8|this.h[9]<<5),o=this.h[0]+this.pad[0],this.h[0]=65535&o,a=1;a<8;a++)o=(this.h[a]+this.pad[a]|0)+(o>>>16)|0,this.h[a]=65535&o;e[n+0]=this.h[0]>>>0&255,e[n+1]=this.h[0]>>>8&255,e[n+2]=this.h[1]>>>0&255,e[n+3]=this.h[1]>>>8&255,e[n+4]=this.h[2]>>>0&255,e[n+5]=this.h[2]>>>8&255,e[n+6]=this.h[3]>>>0&255,e[n+7]=this.h[3]>>>8&255,e[n+8]=this.h[4]>>>0&255,e[n+9]=this.h[4]>>>8&255,e[n+10]=this.h[5]>>>0&255,e[n+11]=this.h[5]>>>8&255,e[n+12]=this.h[6]>>>0&255,e[n+13]=this.h[6]>>>8&255,e[n+14]=this.h[7]>>>0&255,e[n+15]=this.h[7]>>>8&255},_.prototype.update=function(e,n,t){var r,o;if(this.leftover){for((o=16-this.leftover)>t&&(o=t),r=0;r=16&&(o=t-t%16,this.blocks(e,n,o),n+=o,t-=o),t){for(r=0;r=128;){for(O=0;O<16;O++)w=8*O+W,x[O]=t[w+0]<<24|t[w+1]<<16|t[w+2]<<8|t[w+3],C[O]=t[w+4]<<24|t[w+5]<<16|t[w+6]<<8|t[w+7];for(O=0;O<80;O++)if(o=R,a=P,i=k,s=M,c=F,u=L,f=H,j,d=K,h=U,p=B,v=V,y=G,m=Y,g=J,q,T=65535&(_=q),S=_>>>16,N=65535&(D=j),I=D>>>16,T+=65535&(_=(G>>>14|F<<18)^(G>>>18|F<<14)^(F>>>9|G<<23)),S+=_>>>16,N+=65535&(D=(F>>>14|G<<18)^(F>>>18|G<<14)^(G>>>9|F<<23)),I+=D>>>16,T+=65535&(_=G&Y^~G&J),S+=_>>>16,N+=65535&(D=F&L^~F&H),I+=D>>>16,T+=65535&(_=z[2*O+1]),S+=_>>>16,N+=65535&(D=z[2*O]),I+=D>>>16,D=x[O%16],S+=(_=C[O%16])>>>16,N+=65535&D,I+=D>>>16,N+=(S+=(T+=65535&_)>>>16)>>>16,T=65535&(_=A=65535&T|S<<16),S=_>>>16,N=65535&(D=b=65535&N|(I+=N>>>16)<<16),I=D>>>16,T+=65535&(_=(K>>>28|R<<4)^(R>>>2|K<<30)^(R>>>7|K<<25)),S+=_>>>16,N+=65535&(D=(R>>>28|K<<4)^(K>>>2|R<<30)^(K>>>7|R<<25)),I+=D>>>16,S+=(_=K&U^K&B^U&B)>>>16,N+=65535&(D=R&P^R&k^P&k),I+=D>>>16,l=65535&(N+=(S+=(T+=65535&_)>>>16)>>>16)|(I+=N>>>16)<<16,E=65535&T|S<<16,T=65535&(_=v),S=_>>>16,N=65535&(D=s),I=D>>>16,S+=(_=A)>>>16,N+=65535&(D=b),I+=D>>>16,P=o,k=a,M=i,F=s=65535&(N+=(S+=(T+=65535&_)>>>16)>>>16)|(I+=N>>>16)<<16,L=c,H=u,j=f,R=l,U=d,B=h,V=p,G=v=65535&T|S<<16,Y=y,J=m,q=g,K=E,O%16==15)for(w=0;w<16;w++)D=x[w],T=65535&(_=C[w]),S=_>>>16,N=65535&D,I=D>>>16,D=x[(w+9)%16],T+=65535&(_=C[(w+9)%16]),S+=_>>>16,N+=65535&D,I+=D>>>16,b=x[(w+1)%16],T+=65535&(_=((A=C[(w+1)%16])>>>1|b<<31)^(A>>>8|b<<24)^(A>>>7|b<<25)),S+=_>>>16,N+=65535&(D=(b>>>1|A<<31)^(b>>>8|A<<24)^b>>>7),I+=D>>>16,b=x[(w+14)%16],S+=(_=((A=C[(w+14)%16])>>>19|b<<13)^(b>>>29|A<<3)^(A>>>6|b<<26))>>>16,N+=65535&(D=(b>>>19|A<<13)^(A>>>29|b<<3)^b>>>6),I+=D>>>16,I+=(N+=(S+=(T+=65535&_)>>>16)>>>16)>>>16,x[w]=65535&N|I<<16,C[w]=65535&T|S<<16;T=65535&(_=K),S=_>>>16,N=65535&(D=R),I=D>>>16,D=e[0],S+=(_=n[0])>>>16,N+=65535&D,I+=D>>>16,I+=(N+=(S+=(T+=65535&_)>>>16)>>>16)>>>16,e[0]=R=65535&N|I<<16,n[0]=K=65535&T|S<<16,T=65535&(_=U),S=_>>>16,N=65535&(D=P),I=D>>>16,D=e[1],S+=(_=n[1])>>>16,N+=65535&D,I+=D>>>16,I+=(N+=(S+=(T+=65535&_)>>>16)>>>16)>>>16,e[1]=P=65535&N|I<<16,n[1]=U=65535&T|S<<16,T=65535&(_=B),S=_>>>16,N=65535&(D=k),I=D>>>16,D=e[2],S+=(_=n[2])>>>16,N+=65535&D,I+=D>>>16,I+=(N+=(S+=(T+=65535&_)>>>16)>>>16)>>>16,e[2]=k=65535&N|I<<16,n[2]=B=65535&T|S<<16,T=65535&(_=V),S=_>>>16,N=65535&(D=M),I=D>>>16,D=e[3],S+=(_=n[3])>>>16,N+=65535&D,I+=D>>>16,I+=(N+=(S+=(T+=65535&_)>>>16)>>>16)>>>16,e[3]=M=65535&N|I<<16,n[3]=V=65535&T|S<<16,T=65535&(_=G),S=_>>>16,N=65535&(D=F),I=D>>>16,D=e[4],S+=(_=n[4])>>>16,N+=65535&D,I+=D>>>16,I+=(N+=(S+=(T+=65535&_)>>>16)>>>16)>>>16,e[4]=F=65535&N|I<<16,n[4]=G=65535&T|S<<16,T=65535&(_=Y),S=_>>>16,N=65535&(D=L),I=D>>>16,D=e[5],S+=(_=n[5])>>>16,N+=65535&D,I+=D>>>16,I+=(N+=(S+=(T+=65535&_)>>>16)>>>16)>>>16,e[5]=L=65535&N|I<<16,n[5]=Y=65535&T|S<<16,T=65535&(_=J),S=_>>>16,N=65535&(D=H),I=D>>>16,D=e[6],S+=(_=n[6])>>>16,N+=65535&D,I+=D>>>16,I+=(N+=(S+=(T+=65535&_)>>>16)>>>16)>>>16,e[6]=H=65535&N|I<<16,n[6]=J=65535&T|S<<16,T=65535&(_=q),S=_>>>16,N=65535&(D=j),I=D>>>16,D=e[7],S+=(_=n[7])>>>16,N+=65535&D,I+=D>>>16,I+=(N+=(S+=(T+=65535&_)>>>16)>>>16)>>>16,e[7]=j=65535&N|I<<16,n[7]=q=65535&T|S<<16,W+=128,r-=128}return r}function X(e,n,t){var r,o=new Int32Array(8),a=new Int32Array(8),i=new Uint8Array(256),s=t;for(o[0]=1779033703,o[1]=3144134277,o[2]=1013904242,o[3]=2773480762,o[4]=1359893119,o[5]=2600822924,o[6]=528734635,o[7]=1541459225,a[0]=4089235720,a[1]=2227873595,a[2]=4271175723,a[3]=1595750129,a[4]=2917565137,a[5]=725511199,a[6]=4215389547,a[7]=327033209,Q(o,a,n,t),t%=128,r=0;r=0;--o)$(e,n,r=t[o/8|0]>>(7&o)&1),Z(n,e),Z(e,e),$(e,n,r)}function te(e,t){var r=[n(),n(),n(),n()];x(r[0],l),x(r[1],d),x(r[2],i),j(r[3],l,d),ne(e,r,t)}function re(e,r,o){var a,i=new Uint8Array(64),s=[n(),n(),n(),n()];for(o||t(r,32),X(i,r,32),i[0]&=248,i[31]&=127,i[31]|=64,te(s,i),ee(e,s),a=0;a<32;a++)r[a+32]=e[a];return 0}var oe=new Float64Array([237,211,245,92,26,99,18,88,214,156,247,162,222,249,222,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16]);function ae(e,n){var t,r,o,a;for(r=63;r>=32;--r){for(t=0,o=r-32,a=r-12;o>4)*oe[o],t=n[o]>>8,n[o]&=255;for(o=0;o<32;o++)n[o]-=t*oe[o];for(r=0;r<32;r++)n[r+1]+=n[r]>>8,e[r]=255&n[r]}function ie(e){var n,t=new Float64Array(64);for(n=0;n<64;n++)t[n]=e[n];for(n=0;n<64;n++)e[n]=0;ae(e,t)}function se(e,t,r,o){var a,i,s=new Uint8Array(64),c=new Uint8Array(64),u=new Uint8Array(64),f=new Float64Array(64),l=[n(),n(),n(),n()];X(s,o,32),s[0]&=248,s[31]&=127,s[31]|=64;var d=r+64;for(a=0;a>7&&H(e[0],a,e[0]),j(e[3],e[0],e[1]),0)}(d,o))return-1;for(s=0;s=0},e.sign.keyPair=function(){var e=new Uint8Array(le),n=new Uint8Array(de);return re(e,n),{publicKey:e,secretKey:n}},e.sign.keyPair.fromSecretKey=function(e){if(pe(e),e.length!==de)throw new Error("bad secret key size");for(var n=new Uint8Array(le),t=0;t{if(Array.isArray(n))return n.map(e);if(n instanceof Object){let t=[],r=[];return Object.keys(n).forEach(e=>{/^(0|[1-9][0-9]*)$/.test(e)?t.push(+e):r.push(e)}),t.sort(function(e,n){return e-n}).concat(r.sort()).reduce((t,r)=>(t[r]=e(n[r]),t),{})}return n},n=JSON.stringify.bind(JSON);return y=(t,r,o)=>{let a=n(t,r,0);if(!a||"{"!==a[0]&&"["!==a[0])return a;let i=JSON.parse(a);return n(e(i),null,o)}}())}function T(){return b||(b=1,function(e){e.exports&&(e.exports=function(e,n){const t=globalThis;var r,o={},a=void 0===t.Proxy,i=o.DeepProxy=function(){var e={},r=e.isArray=Array.isArray||function(e){return"[object Array]"===Object.toString(e)},o=e.type=function(e){return null===e?"null":r(e)?"array":typeof e},i=e.isProxyable=function(e,n){return(void 0!==n||!a)&&-1!==["object","array"].indexOf(o(e))},s=e.set=function(n){return function(t,r,o){if("on"===r)throw new Error("'on' is a reserved attribute name for realtime lists and maps");return i(o)?t[r]=e.create(o,n):t[r]=o,n(),t[r]||!0}},c=e.pathMatches=function(e,n){return!n.some(function(n,t){return n!==e[t]})},u=function(e,n){return n.pattern.length-e.pattern.length},f=function(e){return function(n,t,r){switch(n){case"change":t="array"===o(t)?t:[t],e.change.push({cb:function(e,n,o,a){if(c(o,t))return r(e,n,o,a)},pattern:t}),e.change.sort(u);break;case"remove":t="array"===o(t)?t:[t],e.remove.push({cb:function(e,n,o){if(c(n,t))return r(e,n,o)},pattern:t}),e.remove.sort(u);break;case"ready":e.ready.push({cb:function(e){t(e)}});break;case"cacheready":e.cacheready.push({cb:function(e){t(e)}});break;case"disconnect":e.disconnect.push({cb:function(e){t(e)}});break;case"reconnect":e.reconnect.push({cb:function(e){t(e)}});break;case"create":e.create.push({cb:function(e){t(e)}});break;case"error":e.error.push({cb:function(e){t(e)}})}return this}},l=e.get=function(){var e={cacheready:[],disconnect:[],reconnect:[],change:[],ready:[],remove:[],create:[],error:[]};return function(n,t){return"on"===t?f(e):"_isProxy"===t||("_events"===t?e:n[t])}},d=e.delete=function(e){return function(n,t){return void 0===n[t]||(delete n[t],e()),!0}},h=e.handlers=function(e,n){return n?{set:s(e),get:l(e),deleteProperty:d(e)}:{set:s(e),get:function(e,n){return"_isProxy"===n||e[n]},deleteProperty:d(e)}},p=e.remoteChangeFlag=!1,v=e.stringifyFakeProxy=function(e){var t=JSON.parse(n(e));return delete t._events,delete t._isProxy,n(t)};e.checkLocalChange=function(n,r){if(a&&!e.interval){var o=v(n);e.interval=t.setInterval(function(){var e=v(n);e!==o&&(o=e,p?p=!1:r())},300)}};var y=e.create=function(e,n,r){var s="function"===o(n)?h(n,r):n;switch(o(e)){case"object":Object.keys(e).forEach(function(t){i(e[t])&&!e[t]._isProxy&&(e[t]=y(e[t],n))});break;case"array":e.forEach(function(t,r){i(t)&&!t._isProxy&&(e[r]=y(e[r],n))});break;default:throw new Error("attempted to make a proxy of an unproxyable object")}if(!a)return e._isProxy?e:new t.Proxy(e,s);var c=JSON.parse(JSON.stringify(e));if(r){var u={cacheready:[],disconnect:[],reconnect:[],change:[],ready:[],remove:[],create:[],error:[]};c.on=f(u),c._events=u}return c},m=function(e,n,t,r,o){var a=e.slice(0);a.push(n),t._events.change.some(function(e){return!1===e.cb(r,o,a,t)})},g=e.find=function(e,n){for(var t=n.length,r=0;rs)for(var c,u=s;u<=s;u++)c=e[u],E(r,u,a,c,!0);e.length=s}};return e.update=function(e,n,t){var r=o(e),a=o(n);if(r!==a)throw new Error("Proxy updates can't result in type changes");switch(a){case"array":A.call(e,e,n,function(e){return y(e,t)},[],e);break;case"object":b.call(e,e,n,function(e){return y(e,t)},[],e);break;default:throw new Error("unsupported realtime datatype:"+a)}},e}();return o.create=function(o){if(!i.isProxyable(o.data,!0))throw new Error("unsupported datatype: "+i.type(o.data));if("function"!=typeof(r=o.ChainPad||t.ChainPad).SmartJSONTransformer)throw new Error("Please update ChainPad");o.classic&&!o.crypto&&(console.error("[chainpad-listmap] no crypto module provided. messages will not be encrypted"),o.crypto={encrypt:function(e){return e},decrypt:function(e){return e}});var s=o.readOnly,c={initialState:n(o.data),patchTransformer:r.SmartJSONTransformer,validateContent:o.validateContent||function(e){try{return JSON.parse(e),!0}catch(n){return console.log(e),console.error("Failed to parse, rejecting patch"),!1}},readOnly:o.readOnly,userName:o.userName||"listmap",Cache:o.Cache,logLevel:void 0===o.logLevel?0:o.logLevel};o.classic&&(c.channel=o.channel,c.crypto=o.crypto,c.network=o.network,c.websocketURL=o.websocketURL,c.metadata=o.metadata||{validateKey:o.validateKey,owners:o.owners,expire:o.expire},c.onRejected=o.onRejected);var u,f,l,d={metadata:{}},h=!0,p=!1,v=a?i.stringifyFakeProxy:n,y=function(){var e=v(f);try{u.contentUpdate(e)}catch(e){f._events.error.forEach(function(n){n.cb({type:"CHAINPAD",error:e.message})})}o.onLocal&&o.onLocal()},m=c.onLocal=function(e){h||s||(clearTimeout(l),e?y():l=setTimeout(y))},g=function(){i.remoteChangeFlag||m()};f=i.create(o.data,g,!0),c.onInit=function(e){f._events.create.forEach(function(n){n.cb(e)})},c.onCacheReady=function(e){u&&u===e.realtime||(u=d.realtime=e.realtime);var n=u.getUserDoc(),t=JSON.parse(n);i.update(f,t,g),i.checkLocalChange(f,m),p||f._events.cacheready.forEach(function(n){n.cb(e)})};var E=0;c.onReady=function(e){if(E=-1,p)return h=!1,c.onRemote(),void f._events.reconnect.forEach(function(n){n.cb(e)});u&&u===e.realtime||(u=d.realtime=e.realtime),d.metadata=e.metadata;var n=u.getUserDoc(),t=JSON.parse(n);i.update(f,t,g),i.checkLocalChange(f,m),h=!1,p=!0,f._events.ready.forEach(function(n){n.cb(e)})},c.onRemote=function(){if(!h){var e=u.getUserDoc(),n=JSON.parse(e);i.remoteChangeFlag=!0,i.update(f,n,g),i.remoteChangeFlag=!1}},c.onMessage=function(){-1!==E&&o.updateProgress&&o.updateProgress({progress:E++})},c.onAbort=function(e){f._events.disconnect.forEach(function(n){n.cb(e)})},c.onConnectionChange=function(e){e.state?h=!0:f._events.disconnect.forEach(function(n){n.cb(e)})},c.onMetadataUpdate=function(e){d.metadata=e,"function"==typeof o.onMetadataUpdate&&o.onMetadataUpdate(e)},c.onError=function(e){f._events.error.forEach(function(n){n.cb(e)})},c.onChannelError=function(e){f._events.error.forEach(function(n){n.cb(e)})},o.common&&"function"==typeof o.common.startRealtime?u=d.cpCnInner=o.common.startRealtime(c):d=e.start(c),d.proxy=f,d.realtime=u;var b=d.setReadOnly;return d.setReadOnly=function(e,n){s=e,b&&b(e,n)},d},o}(D(),_()))}(i)),i.exports}var S,N=T(),I={exports:{}};function x(){return S||(S=1,function(e){var n,r,o,a;a=function(){var e=f,n=function(t,r,o){r||(r=0);var a=n.resolve(t,r),i=n.m[r][a];if(!i&&e){if(i=e(a))return i}else if(i&&i.c&&(r=i.c,a=i.m,!(i=n.m[r][i.m])))throw new Error('failed to require "'+a+'" from '+r);if(!i)throw new Error('failed to require "'+t+'" from '+o);return i.exports||(i.exports={},i.call(i.exports,i,i.exports,n.relative(a,r))),i.exports};return n.resolve=function(e,t){var r=e,o=e+".js",a=e+"/index.js";return n.m[t][o]&&o?o:n.m[t][a]&&a?a:r},n.relative=function(e,t){return function(r){if("."!=r.charAt(0))return n(r,t,e);var o=e.split("/"),a=r.split("/");o.pop();for(var i=0;i=0;t--)o.check(e.operations[t],n),t>0&&r.assert(!o.shouldMerge(e.operations[t],e.operations[t-1])),"number"==typeof n&&(n+=o.lengthChange(e.operations[t]));return e.isCheckpoint&&(r.assert(1===e.operations.length),r.assert(0===e.operations[0].offset),"number"==typeof n&&r.assert(!n||e.operations[0].toRemove===n)),e};i.toObj=function(e){r.PARANOIA&&c(e);var n,t=new Array(e.operations.length+1);for(n=0;n0);var t,i=s(a.check(e[e.length-1]),n);for(t=0;t=0;t--)f(e,n.operations[t]);return e},i.apply=function(e,n){r.PARANOIA&&(c(e),r.assert("string"==typeof n),r.assert(a.hex_sha256(n)===e.parentHash));for(var t=n,i=e.operations.length-1;i>=0;i--)t=o.apply(e.operations[i],t);return t},i.lengthChange=function(e){r.PARANOIA&&c(e);for(var n=0,t=0;t=0;u--)i[u]=o.invert(e.operations[u],t),t=o.apply(e.operations[u],t);var f=new Array(e.operations.length);!function(){for(var e=i.length-1;e>=0;e--){f[e]=i[e].offset;for(var n=e-1;n>=0;n--)f[e]+=i[n].toRemove-i[n].toInsert.length}}();var l=s(a.hex_sha256(t),e.isCheckpoint);l.operations.splice(0,l.operations.length);for(var d=0;d=0;d--){var h=t(e.operations[d],u,o.simplify);h&&(u=o.apply(h,u),f[l++]=h)}return Array.prototype.push.apply(i.operations,f.reverse()),i.operations[0]||i.operations.shift(),r.PARANOIA&&c(i),i},i.equals=function(e,n){if(e.operations.length!==n.operations.length)return!1;for(var t=0;t0;){var u=o.random(i);i+=o.lengthChange(u),f(t,u)}return c(t),t},Object.freeze(e.exports)},"SHA256.js":function(e,n,t){!function(){function n(e,n){var t=(65535&e)+(65535&n);return(e>>16)+(n>>16)+(t>>16)<<16|65535&t}function t(e,n){return e>>>n|e<<32-n}function r(e,n){return e>>>n}function o(e,n,t){return e&n^~e&t}function a(e,n,t){return e&n^e&t^n&t}function i(e){return t(e,2)^t(e,13)^t(e,22)}function s(e){return t(e,6)^t(e,11)^t(e,25)}function c(e){return t(e,7)^t(e,18)^r(e,3)}function u(e){return t(e,17)^t(e,19)^r(e,10)}e.exports.hex_sha256=function(e){return function(e){for(var n="0123456789abcdef",t="",r=0;r<4*e.length;r++)t+=n.charAt(e[r>>2]>>8*(3-r%4)+4&15)+n.charAt(e[r>>2]>>8*(3-r%4)&15);return t}(function(e,t){var r,f,l,d,h,p,v,y,m,g,E=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298],b=[1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225],A=function(e){for(var n=[];e>0;e--)n.push(void 0);return n}(64);e[t>>5]|=128<<24-t%32,e[15+(t+64>>9<<4)]=t;for(var O=0;O>5]|=(255&e.charCodeAt(t/8))<<24-t%32;return n}(e),8*e.length))}}()},"Common.js":function(e,n,r){e.exports.global=function(){if("undefined"!=typeof self)return self;if(void 0!==t)return t;if("undefined"!=typeof window)return window;throw new Error("no self, nor global, nor window")}();var o=function(n){return"undefined"!=typeof localStorage&&localStorage[n]?localStorage[n]:e.exports.global[n]},a=e.exports.PARANOIA=o("ChainPad_PARANOIA");e.exports.VALIDATE_ENTIRE_CHAIN_EACH_MSG=o("ChainPad_VALIDATE_ENTIRE_CHAIN_EACH_MSG"),e.exports.TESTING=o("ChainPad_TESTING"),e.exports.assert=function(e){if(!e)throw new Error("Failed assertion")},e.exports.isUint=function(e){return"number"==typeof e&&Math.floor(e)===e&&e>=0},e.exports.randomASCII=function(e){for(var n=[],t=0;tn?1:-1},Object.freeze(e.exports)},"sha256.js":function(e,n,t){var r=t("./sha256/exports.js"),o=t("./SHA256.js"),a=t("./Common");e.exports.check=function(e){if("string"!=typeof e)throw new Error;if(!/[a-f0-9]{64}/.test(e))throw new Error;return e},e.exports.hex_sha256=function(e){e+="";var n=r.hex(function(e){for(var n=new Uint8Array(e.length),t=0;t1&&console.log("["+e.userName+"] "+n)},d=function(e,n){e.logLevel>0&&console.error("["+e.userName+"] "+n)},h=function(e,n,t){if(!e.aborted){t||(t=Math.floor(2*Math.random()*e.config.avgSyncMilliseconds));var r=setTimeout(function(){e.schedules.splice(e.schedules.indexOf(r),1),n()},t);return e.schedules.push(r),r}},p=function(e,n){var t=e.schedules.indexOf(n);t>-1&&e.schedules.splice(t,1),clearTimeout(n)},v=function(e,n,t,o){var a=i.toStr(n);if(function(e,n,t){e.messageHandlers.length||t("no onMessage() handler registered");try{e.messageHandlers.forEach(function(e){e(n,function(){t.apply(null,arguments),t=function(){}})})}catch(e){t(e.stack)}}(e,a,function(t){if(t)l(e,"Posting to server failed ["+t+"]"),e.pending=null,e.syncSchedule=h(e,function(){g(e)});else{var o=e.pending;if(e.pending=null,!o)throw new Error;r.assert(o.hash===n.hashOf),R(e,a,!0)?(e.timeOfLastSuccess=+new Date,e.lag=+new Date-o.timeSent):l(e,"Our message ["+n.hashOf+"] failed validation"),o.callback()}}),e.pending)throw new Error("there is already a pending message");-1===e.timeOfLastSuccess&&(e.timeOfLastSuccess=+new Date),e.pending={hash:n.hashOf,timeSent:+new Date,callback:function(){e.syncSchedule=h(e,function(){g(e)},0),t()}},r.PARANOIA&&O(e)},y=function(e){var n=e.onSettle;e.onSettle=[],n.forEach(function(n){try{n()}catch(n){d(e,"Error in onSettle handler ["+n.stack+"]")}})},m=function(e){if(!e.mut.inverseOf)throw new Error;return e.mut.inverseOf},g=function(e,n){if(r.PARANOIA&&O(e),e.syncSchedule&&!e.pending){if(p(e,e.syncSchedule),e.syncSchedule=null,e.uncommitted=a.simplify(e.uncommitted,e.authDoc,e.config.operationSimplify),0===e.uncommitted.operations.length)return y(e),e.timeOfLastSuccess=+new Date,void(e.syncSchedule=h(e,function(){g(e)}));var t=_(e,e.best)+1;if(t%e.config.checkpointInterval!==0){var o;o=e.setContentPatch?e.setContentPatch:i.create(i.PATCH,e.uncommitted,e.best.hashOf),v(e,o,function(){e.setContentPatch&&(l(e,"initial Ack received ["+o.hashOf+"]"),e.setContentPatch=null)})}else{var s=e.best;if(l(e,"Sending checkpoint (interval ["+e.config.checkpointInterval+"]) patch no ["+t+"]"),l(e,_(e,e.best)),!s||!s.content||!m(s.content))throw new Error;var c=a.createCheckpoint(e.authDoc,e.authDoc,m(s.content).parentHash),u=i.create(i.CHECKPOINT,c,s.hashOf);v(e,u,function(){l(e,"Checkpoint sent and accepted")})}}},E=function(e,n){r.assert(n.lastMsgHash),r.assert(n.hashOf),e.messages[n.hashOf]=n,(e.messagesByParent[n.lastMsgHash]=e.messagesByParent[n.lastMsgHash]||[]).push(n)},b=function(e,n){r.assert(n.lastMsgHash),r.assert(n.hashOf),delete e.messages[n.hashOf];var t=e.messagesByParent[n.lastMsgHash];r.assert(t.indexOf(n)>-1),t.splice(t.indexOf(n),1),0===t.length&&delete e.messagesByParent[n.lastMsgHash];var o=e.messagesByParent[n.hashOf];if(o)for(var a=0;a_(e,t)&&(t=o)}),t},N=function(e,n){n.operations.length&&(e.patchHandlers.forEach(function(e){e(n)}),e.changeHandlers.forEach(function(e){n.operations.forEach(function(n){e(n.offset,n.toRemove,n.toInsert)})}))},I=function(e,n){try{return e.config.validateContent(n())}catch(n){d(e,"Error in content validator ["+n.stack+"]")}return!1},x=function(e,n,t){for(var r=A(e,n);r;r=A(e,r))if(!1===t(r))return},C=function(e,n){e.mut.inverseOf||((e.mut.inverseOf=a.invert(e,n)).mut.inverseOf=e)},R=function(e,n,t){r.PARANOIA&&O(e);var c=i.fromString(n);if(l(e,JSON.stringify([c.hashOf,c.content.operations])),e.messages[c.hashOf]){if(e.setContentPatch&&e.setContentPatch.hashOf===c.hashOf)e.setContentPatch=null;else{if(c.content.isCheckpoint)return l(e,"["+(t?"our":"their")+"] Checkpoint ["+c.hashOf+"] is already known"),!0;l(e,"Patch ["+c.hashOf+"] is already known")}r.PARANOIA&&O(e)}else if(!c.content.isCheckpoint||I(e,function(){return c.content.operations[0].toInsert})){if(E(e,c),!D(e,e.rootMessage,c)){if(c.content.isCheckpoint&&e.best.mut.isInitialMessage){l(e,"applying checkpoint ["+c.hashOf+"]");var u=a.apply(e.uncommitted,e.authDoc);r.assert(!r.PARANOIA||e.userInterfaceContent===u);var f=a.invert(e.uncommitted,e.authDoc);return a.addOperation(f,o.create(0,e.authDoc.length,c.content.operations[0].toInsert)),f=a.simplify(f,u,e.config.operationSimplify),c.mut.parentCount=0,e.rootMessage=e.best=c,e.authDoc=c.content.operations[0].toInsert,e.uncommitted=a.create(s.hex_sha256(e.authDoc)),N(e,f),r.PARANOIA&&(e.userInterfaceContent=e.authDoc),!0}return l(e,"Patch ["+c.hashOf+"] not connected to root (parent: ["+c.lastMsgHash+"])"),void(r.PARANOIA&&O(e))}(c=S(e,c)).mut.isFromMe=t;var d=c.content,h=[],p=e.best;if(!D(e,e.best,c)){var v=_(e,e.best),g=_(e,c);if(!(v0))return l(e,"Patch ["+c.hashOf+"] chain is ["+g+"] best chain is ["+v+"]"),r.PARANOIA&&O(e),!0;for(;p&&!D(e,p,c);)h.push(p),p=A(e,p);r.assert(p),l(e,"Patch ["+c.hashOf+"] better than best chain, switching")}var R=[],P=c;do{R.unshift(P),P=A(e,P),r.assert(P)}while(P!==p);var k=e.authDoc;h.forEach(function(e){k=a.apply(m(e.content),k)}),R.forEach(function(e,n){n!==R.length-1&&(C(e.content,k),k=a.apply(e.content,k))});var M=e.best;if(R.length>1?(M=R[R.length-2],r.assert(M)):h.length&&(M=A(e,h[h.length-1]),r.assert(M)),r.assert(m(M.content).parentHash),r.assert(!r.PARANOIA||m(M.content).parentHash===s.hex_sha256(k)),m(M.content).parentHash===d.parentHash){if(d.isCheckpoint&&e.config.noPrune);else if(d.isCheckpoint){var F;if(x(e,c,function(e){if(e.content.isCheckpoint){if(F)return F=e,!1;F=e}}),F&&F!==e.rootMessage){var L=_(e,F);if(e.config.strictCheckpointValidation&&L%e.config.checkpointInterval!==0){if(l(e,"checkpoint ["+c.hashOf+"] at invalid point ["+L+"]"),r.PARANOIA&&O(e),r.TESTING)throw new Error;return void b(e,c)}l(e,"checkpoint ["+c.hashOf+"]"),x(e,F,function(n){l(e,"pruning ["+n.hashOf+"]"),b(e,n)}),e.rootMessage=F}}else{var H=a.simplify(d,k,e.config.operationSimplify);if(!a.equals(H,d)){if(l(e,"patch ["+c.hashOf+"] can be simplified"),r.PARANOIA&&O(e),r.TESTING)throw new Error;return void b(e,c)}if(!I(e,function(){return a.apply(d,k)}))return void l(e,"Patch ["+c.hashOf+"] failed content validation")}C(d,k),e.uncommitted=a.simplify(e.uncommitted,e.authDoc,e.config.operationSimplify);var j=a.apply(e.uncommitted,e.authDoc);r.PARANOIA&&r.assert(j===e.userInterfaceContent);var K=a.invert(e.uncommitted,e.authDoc);if(h.forEach(function(n){l(e,"reverting ["+n.hashOf+"]"),n.mut.isFromMe&&l(e,"reverting patch 'from me' ["+JSON.stringify(n.content.operations)+"]"),K=a.merge(K,m(n.content)),function(e,n,t){T(e,n,m(t))}(e,n.mut.isFromMe,n.content)}),R.forEach(function(n){l(e,"applying ["+n.hashOf+"]"),K=a.merge(K,n.content),T(e,n.mut.isFromMe,n.content)}),K=a.merge(K,e.uncommitted),K=a.simplify(K,j,e.config.operationSimplify),e.best=c,r.PARANOIA){var U=a.apply(K,j);r.assert(e.userInterfaceContent.length===w(e)),r.assert(U===e.userInterfaceContent)}return N(e,K),e.uncommitted.operations.length||y(e),r.PARANOIA&&O(e),!0}if(l(e,"patch ["+c.hashOf+"] parentHash is not valid"),r.PARANOIA&&O(e),r.TESTING)throw new Error;b(e,c)}else l(e,"Checkpoint ["+c.hashOf+"] failed content validation")},P=function(e,n){return Object.freeze({type:"Block",hashOf:n.hashOf,lastMsgHash:n.lastMsgHash,isCheckpoint:!!n.content.isCheckpoint,isFromMe:n.mut&&n.mut.isFromMe,author:n.mut&&n.mut.author,serverHash:n.mut&&n.mut.serverHash,time:n.mut&&n.mut.time,getParent:function(){var t=A(e,n);if(t)return P(e,t)},getContent:function(){return function(e,n){for(var t=[n];t[0]!==e.rootMessage;){var o=A(e,t[0]);if(!o)return{error:"not connected to root",doc:void 0};t.unshift(o)}var i="";e.rootMessage.content.operations.length&&(r.assert(1===e.rootMessage.content.operations.length),i=e.rootMessage.content.operations[0].toInsert);for(var s=1;s=0;t--)n=s(e[t],n);return n};var c=o.invert=function(e,n){return r.PARANOIA&&(a(e),r.assert("string"==typeof n),r.assert(e.offset+e.toRemove<=n.length)),i(e.offset,e.toInsert.length,(" "+n.substring(e.offset,e.offset+e.toRemove)).slice(1))},u=/[\uD800-\uDBFF]|[\uDC00-\uDFFF]/,f=o.hasSurrogate=function(e){return u.test(e)};o.simplify=function(e,n){r.PARANOIA&&(a(e),r.assert("string"==typeof n),r.assert(e.offset+e.toRemove<=n.length));for(var t=c(e,n),o=Math.min(e.toInsert.length,t.toInsert.length),s=0;s=0&&h[s]===d[s];s--);d=d.substring(0,s+1),l=s+1}return 0===l&&0===d.length?null:i(u,l,d)},o.equals=function(e,n){return e.toRemove===n.toRemove&&e.toInsert===n.toInsert&&e.offset===n.offset},o.lengthChange=function(e){return r.PARANOIA&&a(e),e.toInsert.length-e.toRemove},o.merge=function(e,n){r.PARANOIA&&(a(n),a(e));var t=e.offset,o=e.toRemove,s=e.toInsert,c=n.offset,u=n.toRemove,f=n.toInsert,l=c-t;if(u>0){var d=s;s=s.substring(0,l)+s.substring(l+u),(u-=d.length-s.length)<0&&(u=0),o+=u,u=0}if(l<0)t+=l,s=f+s;else if(s.length===l)s+=f;else{if(!(s.length>l))throw new Error("should never happen\n"+JSON.stringify([e,n],null," "));s=s.substring(0,l)+f+s.substring(l)}return""===s&&0===o?null:i(t,o,s)},o.shouldMerge=function(e,n){return r.PARANOIA&&(a(e),a(n)),n.offset0;)a+=c=r._heap_write(t,o+a,e,i,s),i+=c,s-=c,o+=c=n.process(o,a),(a-=c)||(o=0);return this.pos=o,this.len=a,this},e.exports.hash_finish=function(){if(null!==this.result)throw new IllegalStateError("state must be reset before processing new data");return this.asm.finish(this.pos,this.len,0),this.result=new Uint8Array(this.HASH_SIZE),this.result.set(this.heap.subarray(0,this.HASH_SIZE)),this.pos=0,this.len=0,this}},"sha256/utils.js":function(e,n,t){var r=e.exports.string_to_bytes=function(e,n){n=!!n;for(var t=e.length,r=new Uint8Array(n?4*t:t),o=0,a=0;o=t)throw new Error("Malformed string, low surrogate expected at position "+o);i=(55296^i)<<10|65536|56320^e.charCodeAt(o)}else if(!n&&i>>>8)throw new Error("Wide characters are not allowed.");!n||i<=127?r[a++]=i:i<=2047?(r[a++]=192|i>>6,r[a++]=128|63&i):i<=65535?(r[a++]=224|i>>12,r[a++]=128|i>>6&63,r[a++]=128|63&i):(r[a++]=240|i>>18,r[a++]=128|i>>12&63,r[a++]=128|i>>6&63,r[a++]=128|63&i)}return r.subarray(0,a)};e.exports.hex_to_bytes=function(e){var n=e.length;1&n&&(e="0"+e,n++);for(var t=new Uint8Array(n>>1),r=0;r>1]=parseInt(e.substr(r,2),16);return t},e.exports.base64_to_bytes=function(e){return r(atob(e))};var o=e.exports.bytes_to_string=function(e,n){n=!!n;for(var t=e.length,r=new Array(t),o=0,a=0;o=192&&i<224&&o+1=224&&i<240&&o+2=240&&i<248&&o+3>10,r[a++]=56320|1023&s)}}for(var c="",u=16384,f=0;f>>1,e|=e>>>2,e|=e>>>4,e|=e>>>8,e|=e>>>16,e+=1},e.exports.is_number=function(e){return"number"==typeof e},e.exports.is_string=function(e){return"string"==typeof e},e.exports.is_buffer=function(e){return e instanceof ArrayBuffer},e.exports.is_bytes=function(e){return e instanceof Uint8Array},e.exports.is_typed_array=function(e){return e instanceof Int8Array||e instanceof Uint8Array||e instanceof Int16Array||e instanceof Uint16Array||e instanceof Int32Array||e instanceof Uint32Array||e instanceof Float32Array||e instanceof Float64Array},e.exports._heap_init=function(e,n){var t=n.heap,r=t?t.byteLength:n.heapSize||65536;if(4095&r||r<=0)throw new Error("heap size must be a positive integer and a multiple of 4096");return t=t||new e(new ArrayBuffer(r))},e.exports._heap_write=function(e,n,t,r,o){var a=e.length-n,i=a>>6^N>>>11^N>>>25^N<<26^N<<21^N<<7)+(x^N&(I^x))+0x428a2f98|0;C=x;x=I;I=N;N=S+R|0;S=T;T=_;_=D;D=R+(_&T^S&(_^T))+(_>>>2^_>>>13^_>>>22^_<<30^_<<19^_<<10)|0;R=n+C+(N>>>6^N>>>11^N>>>25^N<<26^N<<21^N<<7)+(x^N&(I^x))+0x71374491|0;C=x;x=I;I=N;N=S+R|0;S=T;T=_;_=D;D=R+(_&T^S&(_^T))+(_>>>2^_>>>13^_>>>22^_<<30^_<<19^_<<10)|0;R=t+C+(N>>>6^N>>>11^N>>>25^N<<26^N<<21^N<<7)+(x^N&(I^x))+0xb5c0fbcf|0;C=x;x=I;I=N;N=S+R|0;S=T;T=_;_=D;D=R+(_&T^S&(_^T))+(_>>>2^_>>>13^_>>>22^_<<30^_<<19^_<<10)|0;R=l+C+(N>>>6^N>>>11^N>>>25^N<<26^N<<21^N<<7)+(x^N&(I^x))+0xe9b5dba5|0;C=x;x=I;I=N;N=S+R|0;S=T;T=_;_=D;D=R+(_&T^S&(_^T))+(_>>>2^_>>>13^_>>>22^_<<30^_<<19^_<<10)|0;R=d+C+(N>>>6^N>>>11^N>>>25^N<<26^N<<21^N<<7)+(x^N&(I^x))+0x3956c25b|0;C=x;x=I;I=N;N=S+R|0;S=T;T=_;_=D;D=R+(_&T^S&(_^T))+(_>>>2^_>>>13^_>>>22^_<<30^_<<19^_<<10)|0;R=h+C+(N>>>6^N>>>11^N>>>25^N<<26^N<<21^N<<7)+(x^N&(I^x))+0x59f111f1|0;C=x;x=I;I=N;N=S+R|0;S=T;T=_;_=D;D=R+(_&T^S&(_^T))+(_>>>2^_>>>13^_>>>22^_<<30^_<<19^_<<10)|0;R=p+C+(N>>>6^N>>>11^N>>>25^N<<26^N<<21^N<<7)+(x^N&(I^x))+0x923f82a4|0;C=x;x=I;I=N;N=S+R|0;S=T;T=_;_=D;D=R+(_&T^S&(_^T))+(_>>>2^_>>>13^_>>>22^_<<30^_<<19^_<<10)|0;R=v+C+(N>>>6^N>>>11^N>>>25^N<<26^N<<21^N<<7)+(x^N&(I^x))+0xab1c5ed5|0;C=x;x=I;I=N;N=S+R|0;S=T;T=_;_=D;D=R+(_&T^S&(_^T))+(_>>>2^_>>>13^_>>>22^_<<30^_<<19^_<<10)|0;R=y+C+(N>>>6^N>>>11^N>>>25^N<<26^N<<21^N<<7)+(x^N&(I^x))+0xd807aa98|0;C=x;x=I;I=N;N=S+R|0;S=T;T=_;_=D;D=R+(_&T^S&(_^T))+(_>>>2^_>>>13^_>>>22^_<<30^_<<19^_<<10)|0;R=m+C+(N>>>6^N>>>11^N>>>25^N<<26^N<<21^N<<7)+(x^N&(I^x))+0x12835b01|0;C=x;x=I;I=N;N=S+R|0;S=T;T=_;_=D;D=R+(_&T^S&(_^T))+(_>>>2^_>>>13^_>>>22^_<<30^_<<19^_<<10)|0;R=g+C+(N>>>6^N>>>11^N>>>25^N<<26^N<<21^N<<7)+(x^N&(I^x))+0x243185be|0;C=x;x=I;I=N;N=S+R|0;S=T;T=_;_=D;D=R+(_&T^S&(_^T))+(_>>>2^_>>>13^_>>>22^_<<30^_<<19^_<<10)|0;R=E+C+(N>>>6^N>>>11^N>>>25^N<<26^N<<21^N<<7)+(x^N&(I^x))+0x550c7dc3|0;C=x;x=I;I=N;N=S+R|0;S=T;T=_;_=D;D=R+(_&T^S&(_^T))+(_>>>2^_>>>13^_>>>22^_<<30^_<<19^_<<10)|0;R=b+C+(N>>>6^N>>>11^N>>>25^N<<26^N<<21^N<<7)+(x^N&(I^x))+0x72be5d74|0;C=x;x=I;I=N;N=S+R|0;S=T;T=_;_=D;D=R+(_&T^S&(_^T))+(_>>>2^_>>>13^_>>>22^_<<30^_<<19^_<<10)|0;R=A+C+(N>>>6^N>>>11^N>>>25^N<<26^N<<21^N<<7)+(x^N&(I^x))+0x80deb1fe|0;C=x;x=I;I=N;N=S+R|0;S=T;T=_;_=D;D=R+(_&T^S&(_^T))+(_>>>2^_>>>13^_>>>22^_<<30^_<<19^_<<10)|0;R=O+C+(N>>>6^N>>>11^N>>>25^N<<26^N<<21^N<<7)+(x^N&(I^x))+0x9bdc06a7|0;C=x;x=I;I=N;N=S+R|0;S=T;T=_;_=D;D=R+(_&T^S&(_^T))+(_>>>2^_>>>13^_>>>22^_<<30^_<<19^_<<10)|0;R=w+C+(N>>>6^N>>>11^N>>>25^N<<26^N<<21^N<<7)+(x^N&(I^x))+0xc19bf174|0;C=x;x=I;I=N;N=S+R|0;S=T;T=_;_=D;D=R+(_&T^S&(_^T))+(_>>>2^_>>>13^_>>>22^_<<30^_<<19^_<<10)|0;e=R=(n>>>7^n>>>18^n>>>3^n<<25^n<<14)+(O>>>17^O>>>19^O>>>10^O<<15^O<<13)+e+m|0;R=R+C+(N>>>6^N>>>11^N>>>25^N<<26^N<<21^N<<7)+(x^N&(I^x))+0xe49b69c1|0;C=x;x=I;I=N;N=S+R|0;S=T;T=_;_=D;D=R+(_&T^S&(_^T))+(_>>>2^_>>>13^_>>>22^_<<30^_<<19^_<<10)|0;n=R=(t>>>7^t>>>18^t>>>3^t<<25^t<<14)+(w>>>17^w>>>19^w>>>10^w<<15^w<<13)+n+g|0;R=R+C+(N>>>6^N>>>11^N>>>25^N<<26^N<<21^N<<7)+(x^N&(I^x))+0xefbe4786|0;C=x;x=I;I=N;N=S+R|0;S=T;T=_;_=D;D=R+(_&T^S&(_^T))+(_>>>2^_>>>13^_>>>22^_<<30^_<<19^_<<10)|0;t=R=(l>>>7^l>>>18^l>>>3^l<<25^l<<14)+(e>>>17^e>>>19^e>>>10^e<<15^e<<13)+t+E|0;R=R+C+(N>>>6^N>>>11^N>>>25^N<<26^N<<21^N<<7)+(x^N&(I^x))+0x0fc19dc6|0;C=x;x=I;I=N;N=S+R|0;S=T;T=_;_=D;D=R+(_&T^S&(_^T))+(_>>>2^_>>>13^_>>>22^_<<30^_<<19^_<<10)|0;l=R=(d>>>7^d>>>18^d>>>3^d<<25^d<<14)+(n>>>17^n>>>19^n>>>10^n<<15^n<<13)+l+b|0;R=R+C+(N>>>6^N>>>11^N>>>25^N<<26^N<<21^N<<7)+(x^N&(I^x))+0x240ca1cc|0;C=x;x=I;I=N;N=S+R|0;S=T;T=_;_=D;D=R+(_&T^S&(_^T))+(_>>>2^_>>>13^_>>>22^_<<30^_<<19^_<<10)|0;d=R=(h>>>7^h>>>18^h>>>3^h<<25^h<<14)+(t>>>17^t>>>19^t>>>10^t<<15^t<<13)+d+A|0;R=R+C+(N>>>6^N>>>11^N>>>25^N<<26^N<<21^N<<7)+(x^N&(I^x))+0x2de92c6f|0;C=x;x=I;I=N;N=S+R|0;S=T;T=_;_=D;D=R+(_&T^S&(_^T))+(_>>>2^_>>>13^_>>>22^_<<30^_<<19^_<<10)|0;h=R=(p>>>7^p>>>18^p>>>3^p<<25^p<<14)+(l>>>17^l>>>19^l>>>10^l<<15^l<<13)+h+O|0;R=R+C+(N>>>6^N>>>11^N>>>25^N<<26^N<<21^N<<7)+(x^N&(I^x))+0x4a7484aa|0;C=x;x=I;I=N;N=S+R|0;S=T;T=_;_=D;D=R+(_&T^S&(_^T))+(_>>>2^_>>>13^_>>>22^_<<30^_<<19^_<<10)|0;p=R=(v>>>7^v>>>18^v>>>3^v<<25^v<<14)+(d>>>17^d>>>19^d>>>10^d<<15^d<<13)+p+w|0;R=R+C+(N>>>6^N>>>11^N>>>25^N<<26^N<<21^N<<7)+(x^N&(I^x))+0x5cb0a9dc|0;C=x;x=I;I=N;N=S+R|0;S=T;T=_;_=D;D=R+(_&T^S&(_^T))+(_>>>2^_>>>13^_>>>22^_<<30^_<<19^_<<10)|0;v=R=(y>>>7^y>>>18^y>>>3^y<<25^y<<14)+(h>>>17^h>>>19^h>>>10^h<<15^h<<13)+v+e|0;R=R+C+(N>>>6^N>>>11^N>>>25^N<<26^N<<21^N<<7)+(x^N&(I^x))+0x76f988da|0;C=x;x=I;I=N;N=S+R|0;S=T;T=_;_=D;D=R+(_&T^S&(_^T))+(_>>>2^_>>>13^_>>>22^_<<30^_<<19^_<<10)|0;y=R=(m>>>7^m>>>18^m>>>3^m<<25^m<<14)+(p>>>17^p>>>19^p>>>10^p<<15^p<<13)+y+n|0;R=R+C+(N>>>6^N>>>11^N>>>25^N<<26^N<<21^N<<7)+(x^N&(I^x))+0x983e5152|0;C=x;x=I;I=N;N=S+R|0;S=T;T=_;_=D;D=R+(_&T^S&(_^T))+(_>>>2^_>>>13^_>>>22^_<<30^_<<19^_<<10)|0;m=R=(g>>>7^g>>>18^g>>>3^g<<25^g<<14)+(v>>>17^v>>>19^v>>>10^v<<15^v<<13)+m+t|0;R=R+C+(N>>>6^N>>>11^N>>>25^N<<26^N<<21^N<<7)+(x^N&(I^x))+0xa831c66d|0;C=x;x=I;I=N;N=S+R|0;S=T;T=_;_=D;D=R+(_&T^S&(_^T))+(_>>>2^_>>>13^_>>>22^_<<30^_<<19^_<<10)|0;g=R=(E>>>7^E>>>18^E>>>3^E<<25^E<<14)+(y>>>17^y>>>19^y>>>10^y<<15^y<<13)+g+l|0;R=R+C+(N>>>6^N>>>11^N>>>25^N<<26^N<<21^N<<7)+(x^N&(I^x))+0xb00327c8|0;C=x;x=I;I=N;N=S+R|0;S=T;T=_;_=D;D=R+(_&T^S&(_^T))+(_>>>2^_>>>13^_>>>22^_<<30^_<<19^_<<10)|0;E=R=(b>>>7^b>>>18^b>>>3^b<<25^b<<14)+(m>>>17^m>>>19^m>>>10^m<<15^m<<13)+E+d|0;R=R+C+(N>>>6^N>>>11^N>>>25^N<<26^N<<21^N<<7)+(x^N&(I^x))+0xbf597fc7|0;C=x;x=I;I=N;N=S+R|0;S=T;T=_;_=D;D=R+(_&T^S&(_^T))+(_>>>2^_>>>13^_>>>22^_<<30^_<<19^_<<10)|0;b=R=(A>>>7^A>>>18^A>>>3^A<<25^A<<14)+(g>>>17^g>>>19^g>>>10^g<<15^g<<13)+b+h|0;R=R+C+(N>>>6^N>>>11^N>>>25^N<<26^N<<21^N<<7)+(x^N&(I^x))+0xc6e00bf3|0;C=x;x=I;I=N;N=S+R|0;S=T;T=_;_=D;D=R+(_&T^S&(_^T))+(_>>>2^_>>>13^_>>>22^_<<30^_<<19^_<<10)|0;A=R=(O>>>7^O>>>18^O>>>3^O<<25^O<<14)+(E>>>17^E>>>19^E>>>10^E<<15^E<<13)+A+p|0;R=R+C+(N>>>6^N>>>11^N>>>25^N<<26^N<<21^N<<7)+(x^N&(I^x))+0xd5a79147|0;C=x;x=I;I=N;N=S+R|0;S=T;T=_;_=D;D=R+(_&T^S&(_^T))+(_>>>2^_>>>13^_>>>22^_<<30^_<<19^_<<10)|0;O=R=(w>>>7^w>>>18^w>>>3^w<<25^w<<14)+(b>>>17^b>>>19^b>>>10^b<<15^b<<13)+O+v|0;R=R+C+(N>>>6^N>>>11^N>>>25^N<<26^N<<21^N<<7)+(x^N&(I^x))+0x06ca6351|0;C=x;x=I;I=N;N=S+R|0;S=T;T=_;_=D;D=R+(_&T^S&(_^T))+(_>>>2^_>>>13^_>>>22^_<<30^_<<19^_<<10)|0;w=R=(e>>>7^e>>>18^e>>>3^e<<25^e<<14)+(A>>>17^A>>>19^A>>>10^A<<15^A<<13)+w+y|0;R=R+C+(N>>>6^N>>>11^N>>>25^N<<26^N<<21^N<<7)+(x^N&(I^x))+0x14292967|0;C=x;x=I;I=N;N=S+R|0;S=T;T=_;_=D;D=R+(_&T^S&(_^T))+(_>>>2^_>>>13^_>>>22^_<<30^_<<19^_<<10)|0;e=R=(n>>>7^n>>>18^n>>>3^n<<25^n<<14)+(O>>>17^O>>>19^O>>>10^O<<15^O<<13)+e+m|0;R=R+C+(N>>>6^N>>>11^N>>>25^N<<26^N<<21^N<<7)+(x^N&(I^x))+0x27b70a85|0;C=x;x=I;I=N;N=S+R|0;S=T;T=_;_=D;D=R+(_&T^S&(_^T))+(_>>>2^_>>>13^_>>>22^_<<30^_<<19^_<<10)|0;n=R=(t>>>7^t>>>18^t>>>3^t<<25^t<<14)+(w>>>17^w>>>19^w>>>10^w<<15^w<<13)+n+g|0;R=R+C+(N>>>6^N>>>11^N>>>25^N<<26^N<<21^N<<7)+(x^N&(I^x))+0x2e1b2138|0;C=x;x=I;I=N;N=S+R|0;S=T;T=_;_=D;D=R+(_&T^S&(_^T))+(_>>>2^_>>>13^_>>>22^_<<30^_<<19^_<<10)|0;t=R=(l>>>7^l>>>18^l>>>3^l<<25^l<<14)+(e>>>17^e>>>19^e>>>10^e<<15^e<<13)+t+E|0;R=R+C+(N>>>6^N>>>11^N>>>25^N<<26^N<<21^N<<7)+(x^N&(I^x))+0x4d2c6dfc|0;C=x;x=I;I=N;N=S+R|0;S=T;T=_;_=D;D=R+(_&T^S&(_^T))+(_>>>2^_>>>13^_>>>22^_<<30^_<<19^_<<10)|0;l=R=(d>>>7^d>>>18^d>>>3^d<<25^d<<14)+(n>>>17^n>>>19^n>>>10^n<<15^n<<13)+l+b|0;R=R+C+(N>>>6^N>>>11^N>>>25^N<<26^N<<21^N<<7)+(x^N&(I^x))+0x53380d13|0;C=x;x=I;I=N;N=S+R|0;S=T;T=_;_=D;D=R+(_&T^S&(_^T))+(_>>>2^_>>>13^_>>>22^_<<30^_<<19^_<<10)|0;d=R=(h>>>7^h>>>18^h>>>3^h<<25^h<<14)+(t>>>17^t>>>19^t>>>10^t<<15^t<<13)+d+A|0;R=R+C+(N>>>6^N>>>11^N>>>25^N<<26^N<<21^N<<7)+(x^N&(I^x))+0x650a7354|0;C=x;x=I;I=N;N=S+R|0;S=T;T=_;_=D;D=R+(_&T^S&(_^T))+(_>>>2^_>>>13^_>>>22^_<<30^_<<19^_<<10)|0;h=R=(p>>>7^p>>>18^p>>>3^p<<25^p<<14)+(l>>>17^l>>>19^l>>>10^l<<15^l<<13)+h+O|0;R=R+C+(N>>>6^N>>>11^N>>>25^N<<26^N<<21^N<<7)+(x^N&(I^x))+0x766a0abb|0;C=x;x=I;I=N;N=S+R|0;S=T;T=_;_=D;D=R+(_&T^S&(_^T))+(_>>>2^_>>>13^_>>>22^_<<30^_<<19^_<<10)|0;p=R=(v>>>7^v>>>18^v>>>3^v<<25^v<<14)+(d>>>17^d>>>19^d>>>10^d<<15^d<<13)+p+w|0;R=R+C+(N>>>6^N>>>11^N>>>25^N<<26^N<<21^N<<7)+(x^N&(I^x))+0x81c2c92e|0;C=x;x=I;I=N;N=S+R|0;S=T;T=_;_=D;D=R+(_&T^S&(_^T))+(_>>>2^_>>>13^_>>>22^_<<30^_<<19^_<<10)|0;v=R=(y>>>7^y>>>18^y>>>3^y<<25^y<<14)+(h>>>17^h>>>19^h>>>10^h<<15^h<<13)+v+e|0;R=R+C+(N>>>6^N>>>11^N>>>25^N<<26^N<<21^N<<7)+(x^N&(I^x))+0x92722c85|0;C=x;x=I;I=N;N=S+R|0;S=T;T=_;_=D;D=R+(_&T^S&(_^T))+(_>>>2^_>>>13^_>>>22^_<<30^_<<19^_<<10)|0;y=R=(m>>>7^m>>>18^m>>>3^m<<25^m<<14)+(p>>>17^p>>>19^p>>>10^p<<15^p<<13)+y+n|0;R=R+C+(N>>>6^N>>>11^N>>>25^N<<26^N<<21^N<<7)+(x^N&(I^x))+0xa2bfe8a1|0;C=x;x=I;I=N;N=S+R|0;S=T;T=_;_=D;D=R+(_&T^S&(_^T))+(_>>>2^_>>>13^_>>>22^_<<30^_<<19^_<<10)|0;m=R=(g>>>7^g>>>18^g>>>3^g<<25^g<<14)+(v>>>17^v>>>19^v>>>10^v<<15^v<<13)+m+t|0;R=R+C+(N>>>6^N>>>11^N>>>25^N<<26^N<<21^N<<7)+(x^N&(I^x))+0xa81a664b|0;C=x;x=I;I=N;N=S+R|0;S=T;T=_;_=D;D=R+(_&T^S&(_^T))+(_>>>2^_>>>13^_>>>22^_<<30^_<<19^_<<10)|0;g=R=(E>>>7^E>>>18^E>>>3^E<<25^E<<14)+(y>>>17^y>>>19^y>>>10^y<<15^y<<13)+g+l|0;R=R+C+(N>>>6^N>>>11^N>>>25^N<<26^N<<21^N<<7)+(x^N&(I^x))+0xc24b8b70|0;C=x;x=I;I=N;N=S+R|0;S=T;T=_;_=D;D=R+(_&T^S&(_^T))+(_>>>2^_>>>13^_>>>22^_<<30^_<<19^_<<10)|0;E=R=(b>>>7^b>>>18^b>>>3^b<<25^b<<14)+(m>>>17^m>>>19^m>>>10^m<<15^m<<13)+E+d|0;R=R+C+(N>>>6^N>>>11^N>>>25^N<<26^N<<21^N<<7)+(x^N&(I^x))+0xc76c51a3|0;C=x;x=I;I=N;N=S+R|0;S=T;T=_;_=D;D=R+(_&T^S&(_^T))+(_>>>2^_>>>13^_>>>22^_<<30^_<<19^_<<10)|0;b=R=(A>>>7^A>>>18^A>>>3^A<<25^A<<14)+(g>>>17^g>>>19^g>>>10^g<<15^g<<13)+b+h|0;R=R+C+(N>>>6^N>>>11^N>>>25^N<<26^N<<21^N<<7)+(x^N&(I^x))+0xd192e819|0;C=x;x=I;I=N;N=S+R|0;S=T;T=_;_=D;D=R+(_&T^S&(_^T))+(_>>>2^_>>>13^_>>>22^_<<30^_<<19^_<<10)|0;A=R=(O>>>7^O>>>18^O>>>3^O<<25^O<<14)+(E>>>17^E>>>19^E>>>10^E<<15^E<<13)+A+p|0;R=R+C+(N>>>6^N>>>11^N>>>25^N<<26^N<<21^N<<7)+(x^N&(I^x))+0xd6990624|0;C=x;x=I;I=N;N=S+R|0;S=T;T=_;_=D;D=R+(_&T^S&(_^T))+(_>>>2^_>>>13^_>>>22^_<<30^_<<19^_<<10)|0;O=R=(w>>>7^w>>>18^w>>>3^w<<25^w<<14)+(b>>>17^b>>>19^b>>>10^b<<15^b<<13)+O+v|0;R=R+C+(N>>>6^N>>>11^N>>>25^N<<26^N<<21^N<<7)+(x^N&(I^x))+0xf40e3585|0;C=x;x=I;I=N;N=S+R|0;S=T;T=_;_=D;D=R+(_&T^S&(_^T))+(_>>>2^_>>>13^_>>>22^_<<30^_<<19^_<<10)|0;w=R=(e>>>7^e>>>18^e>>>3^e<<25^e<<14)+(A>>>17^A>>>19^A>>>10^A<<15^A<<13)+w+y|0;R=R+C+(N>>>6^N>>>11^N>>>25^N<<26^N<<21^N<<7)+(x^N&(I^x))+0x106aa070|0;C=x;x=I;I=N;N=S+R|0;S=T;T=_;_=D;D=R+(_&T^S&(_^T))+(_>>>2^_>>>13^_>>>22^_<<30^_<<19^_<<10)|0;e=R=(n>>>7^n>>>18^n>>>3^n<<25^n<<14)+(O>>>17^O>>>19^O>>>10^O<<15^O<<13)+e+m|0;R=R+C+(N>>>6^N>>>11^N>>>25^N<<26^N<<21^N<<7)+(x^N&(I^x))+0x19a4c116|0;C=x;x=I;I=N;N=S+R|0;S=T;T=_;_=D;D=R+(_&T^S&(_^T))+(_>>>2^_>>>13^_>>>22^_<<30^_<<19^_<<10)|0;n=R=(t>>>7^t>>>18^t>>>3^t<<25^t<<14)+(w>>>17^w>>>19^w>>>10^w<<15^w<<13)+n+g|0;R=R+C+(N>>>6^N>>>11^N>>>25^N<<26^N<<21^N<<7)+(x^N&(I^x))+0x1e376c08|0;C=x;x=I;I=N;N=S+R|0;S=T;T=_;_=D;D=R+(_&T^S&(_^T))+(_>>>2^_>>>13^_>>>22^_<<30^_<<19^_<<10)|0;t=R=(l>>>7^l>>>18^l>>>3^l<<25^l<<14)+(e>>>17^e>>>19^e>>>10^e<<15^e<<13)+t+E|0;R=R+C+(N>>>6^N>>>11^N>>>25^N<<26^N<<21^N<<7)+(x^N&(I^x))+0x2748774c|0;C=x;x=I;I=N;N=S+R|0;S=T;T=_;_=D;D=R+(_&T^S&(_^T))+(_>>>2^_>>>13^_>>>22^_<<30^_<<19^_<<10)|0;l=R=(d>>>7^d>>>18^d>>>3^d<<25^d<<14)+(n>>>17^n>>>19^n>>>10^n<<15^n<<13)+l+b|0;R=R+C+(N>>>6^N>>>11^N>>>25^N<<26^N<<21^N<<7)+(x^N&(I^x))+0x34b0bcb5|0;C=x;x=I;I=N;N=S+R|0;S=T;T=_;_=D;D=R+(_&T^S&(_^T))+(_>>>2^_>>>13^_>>>22^_<<30^_<<19^_<<10)|0;d=R=(h>>>7^h>>>18^h>>>3^h<<25^h<<14)+(t>>>17^t>>>19^t>>>10^t<<15^t<<13)+d+A|0;R=R+C+(N>>>6^N>>>11^N>>>25^N<<26^N<<21^N<<7)+(x^N&(I^x))+0x391c0cb3|0;C=x;x=I;I=N;N=S+R|0;S=T;T=_;_=D;D=R+(_&T^S&(_^T))+(_>>>2^_>>>13^_>>>22^_<<30^_<<19^_<<10)|0;h=R=(p>>>7^p>>>18^p>>>3^p<<25^p<<14)+(l>>>17^l>>>19^l>>>10^l<<15^l<<13)+h+O|0;R=R+C+(N>>>6^N>>>11^N>>>25^N<<26^N<<21^N<<7)+(x^N&(I^x))+0x4ed8aa4a|0;C=x;x=I;I=N;N=S+R|0;S=T;T=_;_=D;D=R+(_&T^S&(_^T))+(_>>>2^_>>>13^_>>>22^_<<30^_<<19^_<<10)|0;p=R=(v>>>7^v>>>18^v>>>3^v<<25^v<<14)+(d>>>17^d>>>19^d>>>10^d<<15^d<<13)+p+w|0;R=R+C+(N>>>6^N>>>11^N>>>25^N<<26^N<<21^N<<7)+(x^N&(I^x))+0x5b9cca4f|0;C=x;x=I;I=N;N=S+R|0;S=T;T=_;_=D;D=R+(_&T^S&(_^T))+(_>>>2^_>>>13^_>>>22^_<<30^_<<19^_<<10)|0;v=R=(y>>>7^y>>>18^y>>>3^y<<25^y<<14)+(h>>>17^h>>>19^h>>>10^h<<15^h<<13)+v+e|0;R=R+C+(N>>>6^N>>>11^N>>>25^N<<26^N<<21^N<<7)+(x^N&(I^x))+0x682e6ff3|0;C=x;x=I;I=N;N=S+R|0;S=T;T=_;_=D;D=R+(_&T^S&(_^T))+(_>>>2^_>>>13^_>>>22^_<<30^_<<19^_<<10)|0;y=R=(m>>>7^m>>>18^m>>>3^m<<25^m<<14)+(p>>>17^p>>>19^p>>>10^p<<15^p<<13)+y+n|0;R=R+C+(N>>>6^N>>>11^N>>>25^N<<26^N<<21^N<<7)+(x^N&(I^x))+0x748f82ee|0;C=x;x=I;I=N;N=S+R|0;S=T;T=_;_=D;D=R+(_&T^S&(_^T))+(_>>>2^_>>>13^_>>>22^_<<30^_<<19^_<<10)|0;m=R=(g>>>7^g>>>18^g>>>3^g<<25^g<<14)+(v>>>17^v>>>19^v>>>10^v<<15^v<<13)+m+t|0;R=R+C+(N>>>6^N>>>11^N>>>25^N<<26^N<<21^N<<7)+(x^N&(I^x))+0x78a5636f|0;C=x;x=I;I=N;N=S+R|0;S=T;T=_;_=D;D=R+(_&T^S&(_^T))+(_>>>2^_>>>13^_>>>22^_<<30^_<<19^_<<10)|0;g=R=(E>>>7^E>>>18^E>>>3^E<<25^E<<14)+(y>>>17^y>>>19^y>>>10^y<<15^y<<13)+g+l|0;R=R+C+(N>>>6^N>>>11^N>>>25^N<<26^N<<21^N<<7)+(x^N&(I^x))+0x84c87814|0;C=x;x=I;I=N;N=S+R|0;S=T;T=_;_=D;D=R+(_&T^S&(_^T))+(_>>>2^_>>>13^_>>>22^_<<30^_<<19^_<<10)|0;E=R=(b>>>7^b>>>18^b>>>3^b<<25^b<<14)+(m>>>17^m>>>19^m>>>10^m<<15^m<<13)+E+d|0;R=R+C+(N>>>6^N>>>11^N>>>25^N<<26^N<<21^N<<7)+(x^N&(I^x))+0x8cc70208|0;C=x;x=I;I=N;N=S+R|0;S=T;T=_;_=D;D=R+(_&T^S&(_^T))+(_>>>2^_>>>13^_>>>22^_<<30^_<<19^_<<10)|0;b=R=(A>>>7^A>>>18^A>>>3^A<<25^A<<14)+(g>>>17^g>>>19^g>>>10^g<<15^g<<13)+b+h|0;R=R+C+(N>>>6^N>>>11^N>>>25^N<<26^N<<21^N<<7)+(x^N&(I^x))+0x90befffa|0;C=x;x=I;I=N;N=S+R|0;S=T;T=_;_=D;D=R+(_&T^S&(_^T))+(_>>>2^_>>>13^_>>>22^_<<30^_<<19^_<<10)|0;A=R=(O>>>7^O>>>18^O>>>3^O<<25^O<<14)+(E>>>17^E>>>19^E>>>10^E<<15^E<<13)+A+p|0;R=R+C+(N>>>6^N>>>11^N>>>25^N<<26^N<<21^N<<7)+(x^N&(I^x))+0xa4506ceb|0;C=x;x=I;I=N;N=S+R|0;S=T;T=_;_=D;D=R+(_&T^S&(_^T))+(_>>>2^_>>>13^_>>>22^_<<30^_<<19^_<<10)|0;O=R=(w>>>7^w>>>18^w>>>3^w<<25^w<<14)+(b>>>17^b>>>19^b>>>10^b<<15^b<<13)+O+v|0;R=R+C+(N>>>6^N>>>11^N>>>25^N<<26^N<<21^N<<7)+(x^N&(I^x))+0xbef9a3f7|0;C=x;x=I;I=N;N=S+R|0;S=T;T=_;_=D;D=R+(_&T^S&(_^T))+(_>>>2^_>>>13^_>>>22^_<<30^_<<19^_<<10)|0;w=R=(e>>>7^e>>>18^e>>>3^e<<25^e<<14)+(A>>>17^A>>>19^A>>>10^A<<15^A<<13)+w+y|0;R=R+C+(N>>>6^N>>>11^N>>>25^N<<26^N<<21^N<<7)+(x^N&(I^x))+0xc67178f2|0;C=x;x=I;I=N;N=S+R|0;S=T;T=_;_=D;D=R+(_&T^S&(_^T))+(_>>>2^_>>>13^_>>>22^_<<30^_<<19^_<<10)|0;r=r+D|0;o=o+_|0;a=a+T|0;i=i+S|0;s=s+N|0;c=c+I|0;u=u+x|0;f=f+C|0}function C(e){e=e|0;x(I[e|0]<<24|I[e|1]<<16|I[e|2]<<8|I[e|3],I[e|4]<<24|I[e|5]<<16|I[e|6]<<8|I[e|7],I[e|8]<<24|I[e|9]<<16|I[e|10]<<8|I[e|11],I[e|12]<<24|I[e|13]<<16|I[e|14]<<8|I[e|15],I[e|16]<<24|I[e|17]<<16|I[e|18]<<8|I[e|19],I[e|20]<<24|I[e|21]<<16|I[e|22]<<8|I[e|23],I[e|24]<<24|I[e|25]<<16|I[e|26]<<8|I[e|27],I[e|28]<<24|I[e|29]<<16|I[e|30]<<8|I[e|31],I[e|32]<<24|I[e|33]<<16|I[e|34]<<8|I[e|35],I[e|36]<<24|I[e|37]<<16|I[e|38]<<8|I[e|39],I[e|40]<<24|I[e|41]<<16|I[e|42]<<8|I[e|43],I[e|44]<<24|I[e|45]<<16|I[e|46]<<8|I[e|47],I[e|48]<<24|I[e|49]<<16|I[e|50]<<8|I[e|51],I[e|52]<<24|I[e|53]<<16|I[e|54]<<8|I[e|55],I[e|56]<<24|I[e|57]<<16|I[e|58]<<8|I[e|59],I[e|60]<<24|I[e|61]<<16|I[e|62]<<8|I[e|63])}function R(e){e=e|0;I[e|0]=r>>>24;I[e|1]=r>>>16&255;I[e|2]=r>>>8&255;I[e|3]=r&255;I[e|4]=o>>>24;I[e|5]=o>>>16&255;I[e|6]=o>>>8&255;I[e|7]=o&255;I[e|8]=a>>>24;I[e|9]=a>>>16&255;I[e|10]=a>>>8&255;I[e|11]=a&255;I[e|12]=i>>>24;I[e|13]=i>>>16&255;I[e|14]=i>>>8&255;I[e|15]=i&255;I[e|16]=s>>>24;I[e|17]=s>>>16&255;I[e|18]=s>>>8&255;I[e|19]=s&255;I[e|20]=c>>>24;I[e|21]=c>>>16&255;I[e|22]=c>>>8&255;I[e|23]=c&255;I[e|24]=u>>>24;I[e|25]=u>>>16&255;I[e|26]=u>>>8&255;I[e|27]=u&255;I[e|28]=f>>>24;I[e|29]=f>>>16&255;I[e|30]=f>>>8&255;I[e|31]=f&255}function P(){r=0x6a09e667;o=0xbb67ae85;a=0x3c6ef372;i=0xa54ff53a;s=0x510e527f;c=0x9b05688c;u=0x1f83d9ab;f=0x5be0cd19;l=d=0}function k(e,n,t,h,p,v,y,m,g,E){e=e|0;n=n|0;t=t|0;h=h|0;p=p|0;v=v|0;y=y|0;m=m|0;g=g|0;E=E|0;r=e;o=n;a=t;i=h;s=p;c=v;u=y;f=m;l=g;d=E}function M(e,n){e=e|0;n=n|0;var t=0;if(e&63)return-1;while((n|0)>=64){C(e);e=e+64|0;n=n-64|0;t=t+64|0}l=l+t|0;if(l>>>0>>0)d=d+1|0;return t|0}function F(e,n,t){e=e|0;n=n|0;t=t|0;var r=0,o=0;if(e&63)return-1;if(~t)if(t&31)return-1;if((n|0)>=64){r=M(e,n)|0;if((r|0)==-1)return-1;e=e+r|0;n=n-r|0}r=r+n|0;l=l+n|0;if(l>>>0>>0)d=d+1|0;I[e|n]=0x80;if((n|0)>=56){for(o=n+1|0;(o|0)<64;o=o+1|0)I[e|o]=0x00;C(e);n=0;I[e|0]=0}for(o=n+1|0;(o|0)<59;o=o+1|0)I[e|o]=0;I[e|56]=d>>>21&255;I[e|57]=d>>>13&255;I[e|58]=d>>>5&255;I[e|59]=d<<3&255|l>>>29;I[e|60]=l>>>21&255;I[e|61]=l>>>13&255;I[e|62]=l>>>5&255;I[e|63]=l<<3&255;C(e);if(~t)R(t);return r|0}function L(){r=h;o=p;a=v;i=y;s=m;c=g;u=E;f=b;l=64;d=0}function H(){r=A;o=O;a=w;i=D;s=_;c=T;u=S;f=N;l=64;d=0}function j(e,n,t,I,C,R,k,M,F,L,H,j,K,U,B,V){e=e|0;n=n|0;t=t|0;I=I|0;C=C|0;R=R|0;k=k|0;M=M|0;F=F|0;L=L|0;H=H|0;j=j|0;K=K|0;U=U|0;B=B|0;V=V|0;P();x(e^0x5c5c5c5c,n^0x5c5c5c5c,t^0x5c5c5c5c,I^0x5c5c5c5c,C^0x5c5c5c5c,R^0x5c5c5c5c,k^0x5c5c5c5c,M^0x5c5c5c5c,F^0x5c5c5c5c,L^0x5c5c5c5c,H^0x5c5c5c5c,j^0x5c5c5c5c,K^0x5c5c5c5c,U^0x5c5c5c5c,B^0x5c5c5c5c,V^0x5c5c5c5c);A=r;O=o;w=a;D=i;_=s;T=c;S=u;N=f;P();x(e^0x36363636,n^0x36363636,t^0x36363636,I^0x36363636,C^0x36363636,R^0x36363636,k^0x36363636,M^0x36363636,F^0x36363636,L^0x36363636,H^0x36363636,j^0x36363636,K^0x36363636,U^0x36363636,B^0x36363636,V^0x36363636);h=r;p=o;v=a;y=i;m=s;g=c;E=u;b=f;l=64;d=0}function K(e,n,t){e=e|0;n=n|0;t=t|0;var l=0,d=0,h=0,p=0,v=0,y=0,m=0,g=0,E=0;if(e&63)return-1;if(~t)if(t&31)return-1;E=F(e,n,-1)|0;l=r,d=o,h=a,p=i,v=s,y=c,m=u,g=f;H();x(l,d,h,p,v,y,m,g,0x80000000,0,0,0,0,0,0,768);if(~t)R(t);return E|0}function U(e,n,t,l,d){e=e|0;n=n|0;t=t|0;l=l|0;d=d|0;var h=0,p=0,v=0,y=0,m=0,g=0,E=0,b=0,A=0,O=0,w=0,D=0,_=0,T=0,S=0,N=0;if(e&63)return-1;if(~d)if(d&31)return-1;I[e+n|0]=t>>>24;I[e+n+1|0]=t>>>16&255;I[e+n+2|0]=t>>>8&255;I[e+n+3|0]=t&255;K(e,n+4|0,-1)|0;h=A=r,p=O=o,v=w=a,y=D=i,m=_=s,g=T=c,E=S=u,b=N=f;l=l-1|0;while((l|0)>0){L();x(A,O,w,D,_,T,S,N,0x80000000,0,0,0,0,0,0,768);A=r,O=o,w=a,D=i,_=s,T=c,S=u,N=f;H();x(A,O,w,D,_,T,S,N,0x80000000,0,0,0,0,0,0,768);A=r,O=o,w=a,D=i,_=s,T=c,S=u,N=f;h=h^r;p=p^o;v=v^a;y=y^i;m=m^s;g=g^c;E=E^u;b=b^f;l=l-1|0}r=h;o=p;a=v;i=y;s=m;c=g;u=E;f=b;if(~d)R(d);return 0}return{reset:P,init:k,process:M,finish:F,hmac_reset:L,hmac_init:j,hmac_finish:K,pbkdf2_generate_block:U}}},"transform/TextTransformer.js":function(e,n,t){var r=t("../Operation"),o=t("../Common"),a=function(e,n){o.PARANOIA&&(r.check(e),r.check(n));var t=function(e,n){if(e.offset>n.offset){if(e.offset>n.offset+n.toRemove)return r.create(e.offset-n.toRemove+n.toInsert.length,e.toRemove,e.toInsert);var t=e.toRemove-(n.offset+n.toRemove-e.offset);return t<0&&(t=0),0===t&&0===e.toInsert.length?null:r.create(n.offset+n.toInsert.length,t,e.toInsert)}if(e.offset+e.toRemove=0;i--)s=r.apply(n[i],s);var c=[];for(i=e.length-1;i>=0;i--){for(var u=e[i],f=n.length-1;f>=0;f--){try{u=a(u,n[f])}catch(e){return console.error("The pluggable transform function threw an error, failing operational transformation"),console.error(e.stack),[]}if(!u)break}u&&(o.PARANOIA&&r.check(u,s.length),c.unshift(u))}return c}},"transform/NaiveJSONTransformer.js":function(e,n,t){var r=t("./TextTransformer"),o=t("../Operation"),a=t("../Common");e.exports=function(e,n,t){var i,s,c,u=a.global.REALTIME_DEBUG=a.global.REALTIME_DEBUG||{};try{i=r(e,n,t),s=o.applyMulti(n,t),c=o.applyMulti(i,s);try{return JSON.parse(c),i}catch(r){console.error(r),u.ot_parseError={type:"resultParseError",resultOps:i,toTransform:e,transformBy:n,text1:t,text2:s,text3:c,error:r},console.log("Debugging info available at `window.REALTIME_DEBUG.ot_parseError`")}}catch(r){console.error(r),u.ot_applyError={type:"resultParseError",resultOps:i,toTransform:e,transformBy:n,text1:t,text2:s,text3:c,error:r},console.log("Debugging info available at `window.REALTIME_DEBUG.ot_applyError`")}return[]}},"transform/SmartJSONTransformer.js":function(e,n,t){var r,o,a,i=t("json.sortify"),s=t("../Diff"),c=t("../Operation"),u=t("./TextTransformer"),f=function(e){return null===e?"null":(n=e,"[object Array]"===Object.prototype.toString.call(n)?"array":typeof e);var n},l=function(e,n){for(var t=n.length,r=0;r1)return!0})&&("splice"!==n.type||!e.some(function(e){if("splice"===e.type&&y(e.path,n.path)&&e.path.length-n.path.length<0){if(!e.removals)return;for(var t=e.offset,r=e.offset+e.removals;te.offset+n.removals)return void(n.offset+=e.value.length-e.removals);if(n.offseti)){var d=n.slice(0,l);if((y=n.slice(l))===u){var p=Math.min(s,l);if((g=c.slice(0,p))===(b=d.slice(0,p)))return h(g,c.slice(p),d.slice(p),u)}}if(null===f||f===s){var v=s,y=(d=n.slice(0,v),n.slice(v));if(d===c){var m=Math.min(a-v,i-v);if((E=u.slice(u.length-m))===(A=y.slice(y.length-m)))return h(c,u.slice(0,u.length-m),y.slice(0,y.length-m),E)}}}if(r.length>0&&o&&0===o.length){var g=e.slice(0,r.index),E=e.slice(r.index+r.length);if(!(i<(p=g.length)+(m=E.length))){var b=n.slice(0,p),A=n.slice(i-m);if(g===b&&E===A)return h(g,e.slice(p,a-m),n.slice(p,i-m),E)}}return null}(e,n,t);if(f)return f}var l=i(e,n),d=e.substring(0,l);l=s(e=e.substring(l),n=n.substring(l));var p=e.substring(e.length-l),v=function(e,n){var t;if(!e)return[[1,n]];if(!n)return[[r,e]];var c=e.length>n.length?e:n,u=e.length>n.length?n:e,f=c.indexOf(u);if(-1!==f)return t=[[1,c.substring(0,f)],[0,u],[1,c.substring(f+u.length)]],e.length>n.length&&(t[0][0]=t[2][0]=r),t;if(1===u.length)return[[r,e],[1,n]];var l=function(e,n){var t=e.length>n.length?e:n,r=e.length>n.length?n:e;if(t.length<4||2*r.length=e.length?[r,o,a,c,l]:null}var a,c,u,f,l,d=o(t,r,Math.ceil(t.length/4)),h=o(t,r,Math.ceil(t.length/2));if(!d&&!h)return null;a=h?d&&d[4].length>h[4].length?d:h:d,e.length>n.length?(c=a[0],u=a[1],f=a[2],l=a[3]):(f=a[0],l=a[1],c=a[2],u=a[3]);var p=a[4];return[c,u,f,l,p]}(e,n);if(l){var d=l[0],h=l[1],p=l[2],v=l[3],y=l[4],m=o(d,p),g=o(h,v);return m.concat([[0,y]],g)}return function(e,n){for(var t=e.length,o=n.length,i=Math.ceil((t+o)/2),s=i,c=2*i,u=new Array(c),f=new Array(c),l=0;lt)v+=2;else if(A>o)p+=2;else if(h&&(D=s+d-E)>=0&&D=(w=t-f[D]))return a(e,n,T,A)}for(var O=-g+y;O<=g-m;O+=2){for(var w,D=s+O,_=(w=O===-g||O!==g&&f[D-1]t)m+=2;else if(_>o)y+=2;else if(!h){var T;if((b=s+d-O)>=0&&b=(w=t-w))return a(e,n,T,A)}}}return[[r,e],[1,n]]}(e,n)}(e=e.substring(0,e.length-l),n=n.substring(0,n.length-l));return d&&v.unshift([0,d]),p&&v.push([0,p]),c(v,u),v}function a(e,n,t,r){var a=e.substring(0,t),i=n.substring(0,r),s=e.substring(t),c=n.substring(r),u=o(a,i),f=o(s,c);return u.concat(f)}function i(e,n){if(!e||!n||e.charAt(0)!==n.charAt(0))return 0;for(var t=0,r=Math.min(e.length,n.length),o=r,a=0;t=0&&d(e[p][1])){var v=e[p][1].slice(-1);if(e[p][1]=e[p][1].slice(0,-1),f=v+f,h=v+h,!e[p][1]){e.splice(p,1),o--;var y=p-1;e[y]&&1===e[y][0]&&(u++,h=e[y][1]+h,y--),e[y]&&e[y][0]===r&&(a++,f=e[y][1]+f,y--),p=y}}l(e[o][1])&&(v=e[o][1].charAt(0),e[o][1]=e[o][1].slice(1),f+=v,h+=v)}if(o0||h.length>0){f.length>0&&h.length>0&&(0!==(t=i(h,f))&&(p>=0?e[p][1]+=h.substring(0,t):(e.splice(0,0,[0,h.substring(0,t)]),o++),h=h.substring(t),f=f.substring(t)),0!==(t=s(h,f))&&(e[o][1]=h.substring(h.length-t)+e[o][1],h=h.substring(0,h.length-t),f=f.substring(0,f.length-t)));var m=u+a;0===f.length&&0===h.length?(e.splice(o-m,m),o-=m):0===f.length?(e.splice(o-m,m,[1,h]),o=o-m+1):0===h.length?(e.splice(o-m,m,[r,f]),o=o-m+1):(e.splice(o-m,m,[r,f],[1,h]),o=o-m+2)}0!==o&&0===e[o-1][0]?(e[o-1][1]+=e[o][1],e.splice(o,1)):o++,u=0,a=0,f="",h=""}""===e[e.length-1][1]&&e.pop();var g=!1;for(o=1;o=55296&&e<=56319}function f(e){return e>=56320&&e<=57343}function l(e){return f(e.charCodeAt(0))}function d(e){return u(e.charCodeAt(e.length-1))}function h(e,n,t,o){return d(e)||l(o)?null:function(e){for(var n=[],t=0;t0&&n.push(e[t]);return n}([[0,e],[r,n],[1,t],[0,o]])}function p(e,n,t){return o(e,n,t,!0)}p.INSERT=1,p.DELETE=r,p.EQUAL=0,e.exports=p}},n=a("ChainPad.js"),r="ChainPad",e.exports=n,"undefined"!=typeof window?o=window:void 0!==t?o=t:"undefined"!=typeof self&&(o=self),o[r]=n}(I)),I.exports}var C,R=x(),P=n({__proto__:null,default:r(R)},[R]),k={exports:{}};function M(){return C||(C=1,function(e){var n;n=function(e,n){var t={Nacl:e},r=n.encodeBase64,o=e=>{let t;return(t=e.length%4)&&(e+="=".repeat(4-t)),n.decodeBase64(e)},a=n.decodeUTF8,i=n.encodeUTF8,s=function(e){for(var n="",t=0;t{var n={setCustomize:n=>{e=n.ApiConfig},getWebsocketURL:function(n){var t=e.websocketPath||"/cryptpad_websocket";if(/^ws{1,2}:\/\//.test(t))return t;var r=new URL(n||globalThis?.location?.href||e.httpUnsafeOrigin);return n&&(r.href=n),r.protocol.replace(/http/,"ws")+"//"+r.host+t}};return n})())}(H)),H.exports}var K,U=j(),B=n({__proto__:null,default:r(U)},[U]),V={exports:{}};function G(){return K||(K=1,function(e){e.exports&&(e.exports=function(e={}){return{setCustomize:n=>{e=n.AppConfig},userHashKey:"User_hash",userNameKey:"User_name",blockHashKey:"Block_hash",fileHashKey:"FS_hash",sessionJWT:"Session_JWT",ssoSeed:"SSO_seed",displayNameKey:"cryptpad.username",oldStorageKey:"CryptPad_RECENTPADS",storageKey:"filesData",tokenKey:"loginToken",prefersDriveRedirectKey:"prefersDriveRedirect",isPremiumKey:"isPremiumUser",displayPadCreationScreen:"displayPadCreationScreen",deprecatedKey:"deprecated",MAX_TEAMS_SLOTS:e.maxTeamsSlots||5,MAX_TEAMS_OWNED:e.maxOwnedTeams||5,MAX_PREMIUM_TEAMS_SLOTS:Math.max(e.maxTeamsSlots||0,e.maxPremiumTeamsSlots||0)||5,MAX_PREMIUM_TEAMS_OWNED:Math.max(e.maxOwnedTeams||0,e.maxPremiumTeamsOwned||0)||5,criticalApps:["profile","settings","debug","admin","support","notifications","calendar","moderation"],earlyAccessApps:[]}}(void 0))}(V)),V.exports}var Y,J=G(),q=n({__proto__:null,default:r(J)},[J]),W={exports:{}},z={exports:{}},Q=z.exports;function X(){return Y||(Y=1,function(e){!function(n){const t=e=>{var t=n.CryptPad_Util={};n.atob=n.atob||function(e){return Buffer.from(e,"base64").toString("binary")},n.btoa=n.btoa||function(e){return Buffer.from(e,"binary").toString("base64")},t.encodeBase64=n=>"function"==typeof n?.toBase64?n.toBase64():e.encodeBase64(n),t.decodeBase64=n=>{if("function"==typeof Uint8Array?.fromBase64)return Uint8Array.fromBase64(n);let t=n.length%4;return t&&(n+="=".repeat(4-t)),e.decodeBase64(n)},t.encodeUTF8=e.encodeUTF8,t.decodeUTF8=e.decodeUTF8,t.slice=function(e,n,t){return Array.prototype.slice.call(e,n,t)},t.shuffleArray=function(e){for(var n=e.length-1;n>0;n--){var t=Math.floor(Math.random()*(n+1)),r=e[n];e[n]=e[t],e[t]=r}},t.bake=function(e,n){return void 0===n&&(n=[]),Array.isArray(n)||(n=[n]),function(){return e.apply(null,n)}},t.both=function(e,n){if("function"!=typeof e)throw new Error("INVALID_USAGE");return"function"!=typeof n&&(n=function(e){return e}),function(){return e.apply(null,arguments),n.apply(null,arguments)}},t.clone=function(e){return null==e?e:JSON.parse(JSON.stringify(e))},t.serializeError=function(e){if(!(e instanceof Error))return e;var n={};return Object.getOwnPropertyNames(e).forEach(function(t){n[t]=e[t]}),n},t.tryParse=function(e){try{return JSON.parse(e)}catch(e){return}},t.mkAsync=function(e,n){if("function"!=typeof e)throw new Error("EXPECTED_FUNCTION");return function(){var t=Array.prototype.slice.call(arguments);setTimeout(function(){e.apply(null,t)},n)}},t.mkEvent=function(e){var n=[],t=!1;let r;return{reg:function(r){e&&t?setTimeout(r):n.push(r)},unreg:function(e){-1!==n.indexOf(e)?n.splice(n.indexOf(e),1):console.log("event handler was already unregistered")},fire:function(){if(!e||!t){var o=Array.prototype.slice.call(arguments);t||r.apply(null,o),t=!0,n.forEach(function(e){e.apply(null,o)})}},promise:new Promise(e=>{r=e})}},t.mkTimeout=function(e,n){n=n||0;var r=t.once(e),o=setTimeout(function(){r("TIMEOUT")},n);return t.both(r,function(){clearTimeout(o)})},t.onClickEnter=function(e,n,t){e.on("click keydown",function(e){var r="click"===e.type,o="keydown"===e.type&&13===e.which,a="keydown"===e.type&&32===e.which&&t&&t.space;(r||o||a)&&("keydown"===e.type&&e.preventDefault(),n(e))})},t.response=function(e){var n={},t={};"function"!=typeof e&&(e=function(e){throw new Error(e)});var r=function(e){clearTimeout(t[e]),delete t[e],delete n[e]};return{clear:r,expected:function(e){return Boolean(n[e])},expectation:function(e){return n[e]},expect:function(o,a,i){"string"!=typeof o&&e("EXPECTED_STRING"),"function"!=typeof a&&e("EXPECTED_CALLBACK"),n[o]=a,"number"==typeof i&&i&&(t[o]=setTimeout(function(){"function"==typeof n[o]&&n[o]("TIMEOUT"),r(o)},i))},handle:function(t,o){var a=n[t];if("function"==typeof a){try{a.apply(null,Array.isArray(o)?o:[o])}catch(n){e("HANDLER_ERROR",{error:n,id:t,args:o})}r(t)}else e("MISSING_CALLBACK",{id:t,args:o})},_pending:n}},t.inc=function(e,n,t){e[n]=(e[n]||0)+("number"==typeof t?t:1)},t.values=function(e){return Object.keys(e).map(function(n){return e[n]})},t.find=function(e,n){for(var t=n.length,r=0;r&"']/g,function(e){return{"<":"<",">":">","&":"&",'"':""","'":"'"}[e]}):""},t.hexToBase64=function(e){var t=e.replace(/\r|\n/g,"").replace(/([\da-fA-F]{2}) ?/g,"0x$1 ").replace(/ +$/,"").split(" "),r=String.fromCharCode.apply(null,t);return n.btoa(r).replace(/\//g,"-").replace(/=+$/,"")},t.base64ToHex=function(e){var t=[];return n.atob(e.replace(/-/g,"/")).split("").forEach(function(e){var n=e.charCodeAt(0).toString(16);1===n.length&&(n="0"+n),t.push(n)}),t.join("")},t.uint8ArrayToHex=function(e){for(var n="",t=0;t=o?"GB":e>=r?"MB":"KB"};t.getBlock=function(e,n,r){var o=t.once(t.mkAsync(r)),a={};"string"==typeof n.bearer&&n.bearer&&(a.authorization=`Bearer ${n.bearer}`),fetch(e,{method:"GET",credentials:"include",headers:a}).then(e=>{e.ok?o(void 0,e):401!==e.status&&404!==e.status?o(e.status,e):e.json().then(n=>{o(e.status,n)}).catch(()=>{o(e.status)})}).catch(e=>{o(e)})},t.fetchApi=function(e,n,t,r){const o=new URL(e);o.pathname=`api/${n}`;let a=o.href+(t?"?"+ +new Date:"");if("undefined"!=typeof self&&self.crypto)fetch(a).then(e=>{if(!e.ok)throw new Error(`Fetch error: ${e.status}`);return e.text()}).then(e=>{r(JSON.parse(e.slice(27,-5)))}).catch(e=>{console.error(e.message),r({})});else if(void 0!==f){("http:"===o.protocol?require("node:http"):require("node:https")).get(o.href,e=>{let n="";e.on("data",e=>{n+=e}),e.on("end",()=>{try{r(JSON.parse(n.slice(27,-5)))}catch(e){console.error(e),r({})}})})}},t.fetch=function(e,n,r,o){var a,i=t.once(t.mkAsync(n)),s=function(e){var n=e.replace(/(\/)*$/,""),t=n.lastIndexOf("/"),r=n.slice(t+1);return/^[a-f0-9]{48}$/.test(r)||(r=void 0),r}(e),c=function(){(a=new XMLHttpRequest).open("GET",e,!0),r&&a.addEventListener("progress",function(e){if(e.lengthComputable){var n=e.loaded/e.total;r(n)}},!1),a.responseType="arraybuffer",a.onerror=function(e){i(e)},a.onload=function(){if(/^4/.test(""+this.status))return i("XHR_ERROR");var e=a.response;if(e){var n=new Uint8Array(e);return s?void function(e,n,t){o&&"function"==typeof o.setBlobCache?o.setBlobCache(e,n,t):t("EINVAL")}(s,n,function(){i(null,n)}):void i(void 0,n)}i("ENOENT")},a.send(null)};if(s)return function(e,n){o&&"function"==typeof o.getBlobCache?o.getBlobCache(e,n):n("EINVAL")}(s,function(e,n){!e&&n?i(void 0,n):c()}),{cancel:function(){a&&a.abort&&a.abort()}};c()},t.dataURIToBlob=function(e){for(var n=atob(e.split(",")[1]),t=e.split(",")[0].split(":")[1].split(";")[0],r=new ArrayBuffer(n.length),o=new Uint8Array(r),a=0;aparseInt(e,10).toString(16).padStart(2,"0")).join("")}`},t.isSmallScreen=function(){return n.innerHeight<800||n.innerWidth<800},t.stripTags=function(e){var n=document.createElement("div");return n.innerHTML=e,n.innerText},t.parseFilename=function(e){if(!e||!e.trim())return{};var n=/^(\.?.+?)(\.[^.]+)?$/.exec(e)||[];return{name:n[1],ext:n[2]}},t.isPlainTextFile=function(e,n){if(e&&0===e.indexOf("text/"))return!0;var r=t.parseFilename(n);return!(e||!n||r.ext)||("application/x-javascript"===e||"application/xml"===e)},t.isSpreadsheet=function(e,n){return e&&("application/vnd.oasis.opendocument.spreadsheet"===e||"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"===e)||n&&(n.endsWith(".xlsx")||n.endsWith(".ods"))},t.isOfficeDoc=function(e,n){return e&&("application/vnd.oasis.opendocument.text"===e||"application/vnd.openxmlformats-officedocument.wordprocessingml.document"===e)||n&&(n.endsWith(".docx")||n.endsWith(".odt"))},t.isPresentation=function(e,n){return e&&("application/vnd.oasis.opendocument.presentation"===e||"application/vnd.openxmlformats-officedocument.presentationml.presentation"===e)||n&&(n.endsWith(".pptx")||n.endsWith(".odp"))},t.isValidURL=function(e){return!!new RegExp("^(https?:\\/\\/)((([a-z\\d]([a-z\\d-]*[a-z\\d])*)\\.)+[a-z]{2,}|((\\d{1,3}\\.){3}\\d{1,3}))(\\:\\d+)?(\\/[-a-z\\d%_.~+]*)*(\\?[;&a-z\\d%_.~+=-]*)?").test(e)};var a=/([\uD800-\uDBFF][\uDC00-\uDFFF])/;t.getFirstCharacter=function(e){if(!e||!e.trim())return"?";var n=function(e){for(var n=e.split(a),t=[],r=0;r{let n=/ver=([0-9.]+)(-[0-9]*)?/.exec(e);return Array.isArray(n)&&n[1]||void 0},t.Saferphore={create:e=>{var n,t=[];return n=function(){if(e<0)throw new Error("(resourceCount < 0) should never happen");var r;0!==e&&0!==t.length&&(e--,t.shift()((r=0,function(t){if(r++)throw new Error("returnAfter() called multiple times");var o=0;return function(){if(o++)throw new Error("returnAfter wrapped callback called multiple times");t&&t.apply(null,arguments),e++,n()}})))},{take:function(e){t.push(e),n()}}}},t};e.exports&&(e.exports=t(w()))}("undefined"!=typeof self?self:Q)}(z)),z.exports}var Z,$,ee={exports:{}};function ne(){return Z||(Z=1,function(e){e.exports&&(e.exports=function(){var e={},n=function(e){return e.replace(/-/g,"/")};return e.parseUser=function(e){var t,r,o,a=function(e){if(/^\[.*?@.*\]$/.test(e)){var t,r=e.slice(1,-1);if(r=r.replace(/\/([a-zA-Z0-9+-]{43}=)$/,function(e,r){return t=n(r),""}),t){var o=r.lastIndexOf("@");if(!(o<1))return{domain:r.slice(o+1),user:r.slice(0,o),pubkey:t}}}}(e);if(function(e){if(e&&e.domain&&e.user&&e.pubkey)return!0}(a))return a;if(e.replace(/^https*:\/\/([^\/]+)\/user\/#\/1\/([^\/]+)\/([a-zA-Z0-9+-]{43}=)$/,function(e,a,i,s){return t=a,r=i,o=n(s),""}),!t)throw new Error("Could not parse user id ["+e+"]");return{domain:t,user:r,pubkey:o}},e.serialize=function(e,n,t){return"["+n+"@"+e.replace(/https*:\/\//,"")+"/"+t.replace(/\//g,"-")+"]"},e.canonicalize=function(t){if("string"==typeof t){if(44===t.length)return n(t);try{return e.parseUser(t).pubkey}catch(e){return}}},e}())}(ee)),ee.exports}function te(){return $||($=1,function(e){!function(n){e.exports&&(e.exports=function(e,t,r,o){var a=n.CryptPad_Hash={},i=e.uint8ArrayToHex,s=e.hexToBase64,c=e.base64ToHex;a.encodeBase64=e.encodeBase64,a.decodeBase64=e.decodeBase64,a.hashChannelList=function(n){return e.encodeBase64(o.hash(e.decodeUTF8(JSON.stringify(n))))},a.generateSignPair=function(){var e=o.sign.keyPair(),n=function(e){return t.b64RemoveSlashes(e).replace(/=+$/g,"")};return{validateKey:a.encodeBase64(e.publicKey),signKey:a.encodeBase64(e.secretKey),safeValidateKey:n(a.encodeBase64(e.publicKey)),safeSignKey:n(a.encodeBase64(e.secretKey))}},a.getSignPublicFromPrivate=function(n){var r=t.b64AddSlashes(n),a=e.decodeBase64(r),i=o.sign.keyPair.fromSecretKey(a);return e.encodeBase64(i.publicKey)},a.getCurvePublicFromPrivate=function(n){var r=t.b64AddSlashes(n),a=e.decodeBase64(r),i=o.box.keyPair.fromSecretKey(a);return e.encodeBase64(i.publicKey)};var u=a.getEditHashFromKeys=function(e){var n=e.version,r=e.keys;if(0===n)return e.channel+e.key;if(1===n){if(!r.editKeyStr)return;return"/1/edit/"+s(e.channel)+"/"+t.b64RemoveSlashes(r.editKeyStr)+"/"}if(2===n){if(!r.editKeyStr)return;var o=e.password?"p/":"";return"/2/"+e.type+"/edit/"+t.b64RemoveSlashes(r.editKeyStr)+"/"+o}},f=a.getViewHashFromKeys=function(e){var n=e.version,r=e.keys;if(0!==n){if(1===n){if(!r.viewKeyStr)return;return"/1/view/"+s(e.channel)+"/"+t.b64RemoveSlashes(r.viewKeyStr)+"/"}if(2===n){if(!r.viewKeyStr)return;var o=e.password?"p/":"";return"/2/"+e.type+"/view/"+t.b64RemoveSlashes(r.viewKeyStr)+"/"+o}}};a.getHiddenHashFromKeys=function(e,n,t){t=t||{};var r=n.keys&&n.keys.editKeyStr||n.key,o=!t.view&&r?"edit/":"view/",i=n.password?"p/":"";n.keys&&n.keys.fileKeyStr&&(o="");var s="/3/"+e+"/"+o+n.channel+"/"+i,c=a.parseTypeHash(e,s);return c&&c.getHash?c.getHash(t||{}):s};var l=a.getFileHashFromKeys=function(e){var n=e.version,r=e.keys;if(0!==n){if(1===n)return"/1/"+s(e.channel)+"/"+t.b64RemoveSlashes(r.fileKeyStr)+"/";if(2===n){if(!r.fileKeyStr)return;var o=e.password?"p/":"";return"/2/"+e.type+"/"+t.b64RemoveSlashes(r.fileKeyStr)+"/"+o}}};a.getPublicSigningKeyString=r.serialize,a.ephemeralChannelLength=34,a.createChannelId=function(e){var n=i(t.Nacl.randomBytes(e?17:16));if(-1===[32,34].indexOf(n.length)||/[^a-f0-9]/.test(n))throw new Error("channel ids must consist of 32 hex characters");return n},a.getChannelIdFromKey=function(e){if(e)return i(a.decodeBase64(e).subarray(0,16))},a.getBoxPublicFromSecret=function(e){if(e){var n=a.decodeBase64(e),t=o.box.keyPair.fromSecretKey(n);return a.encodeBase64(t.publicKey)}},a.checkBoxKeyPair=function(e,n){if(!n||!e)return!1;var t=a.decodeBase64(e),r=o.box.keyPair.fromSecretKey(t);return n===a.encodeBase64(r.publicKey)},a.createRandomHash=function(e,n){var r;return"file"===e?(r=t.createFileCryptor2(void 0,n),l({password:Boolean(n),version:2,type:e,keys:r})):(r=t.createEditCryptor2(void 0,void 0,n),u({password:Boolean(n),version:2,type:e,keys:r}))};var d=a.parseTypeHash=function(e,n){if(n){var r,o=[],a={},i=(r=n,r.replace(/\/+/g,"/")).split("/"),s=function(){a.password=-1!==o.indexOf("p"),a.present=-1!==o.indexOf("present"),a.embed=-1!==o.indexOf("embed"),a.versionHash=function(e){var n;return e.some(function(e){if(/^hash=/.test(e))return n=e.slice(5),!0}),n?t.b64AddSlashes(n):""}(o),a.auditorKey=function(e){var n;return e.some(function(e){if(/^auditor=/.test(e))return n=e.slice(8),!0}),n?t.b64AddSlashes(n):""}(o),a.newPadOpts=function(e){var n;return e.some(function(e){if(/^newpad=/.test(e))return n=e.slice(7),!0}),n||""}(o),a.loginOpts=function(e){var n;return e.some(function(e){if(/^login=/.test(e))return n=e.slice(6),!0}),n||""}(o),a.ownerKey=function(e){var n;return e.some(function(e){if(86===e.length)return n=e,!0}),n}(o)};return i[1]&&"4"===i[1]?(a.getHash=function(n){if(!n||!Object.keys(n).length)return"";var t="/4/"+e+"/";return n.newPadOpts&&(t+="newpad="+n.newPadOpts+"/"),n.loginOpts&&(t+="login="+n.loginOpts+"/"),t},a.getOptions=function(){var e={};return a.newPadOpts&&(e.newPadOpts=a.newPadOpts),a.loginOpts&&(e.loginOpts=a.loginOpts),e},a.version=4,a.app=i[2],o=i.slice(3),s(),a):-1===["media","file","user","invite"].indexOf(e)?(a.type="pad",a.getHash=function(){return n},a.getOptions=function(){return{embed:a.embed,present:a.present,ownerKey:a.ownerKey,versionHash:a.versionHash,auditorKey:a.auditorKey,newPadOpts:a.newPadOpts,loginOpts:a.loginOpts,password:a.password}},"/"!==n.slice(0,1)&&n.length>=56?(a.channel=n.slice(0,32),a.key=n.slice(32,56),a.version=0,a):(a.getHash=function(e){var n=i.slice(0,5).join("/")+"/",r=void 0!==e.ownerKey?e.ownerKey:a.ownerKey;r&&(n+=r+"/"),(a.password||e.password)&&(n+="p/"),e.embed&&(n+="embed/"),e.present&&(n+="present/");var o=void 0!==e.versionHash?e.versionHash:a.versionHash;o&&(n+="hash="+t.b64RemoveSlashes(o)+"/");var s=void 0!==e.auditorKey?e.auditorKey:a.auditorKey;return s&&(n+="auditor="+t.b64RemoveSlashes(s)+"/"),e.newPadOpts&&(n+="newpad="+e.newPadOpts+"/"),e.loginOpts&&(n+="login="+e.loginOpts+"/"),n},i[1]&&"1"===i[1]?(a.version=1,a.mode=i[2],a.channel=i[3],a.key=t.b64AddSlashes(i[4]),o=i.slice(5),s(),a):i[1]&&"2"===i[1]?(a.version=2,a.app=i[2],a.mode=i[3],a.key=i[4],o=i.slice(5),s(),a):i[1]&&"3"===i[1]?(a.version=3,a.app=i[2],a.mode=i[3],a.channel=i[4],o=i.slice(5),s(),a):a)):(a.getHash=function(){return i.join("/")},-1!==["media","file"].indexOf(e)?(a.type="file",a.getOptions=function(){return{embed:a.embed,present:a.present,ownerKey:a.ownerKey,newPadOpts:a.newPadOpts,loginOpts:a.loginOpts,password:a.password}},a.getHash=function(e){var n=i.slice(0,4).join("/")+"/",t=void 0!==e.ownerKey?e.ownerKey:a.ownerKey;return t&&(n+=t+"/"),(a.password||e.password)&&(n+="p/"),e.embed&&(n+="embed/"),e.present&&(n+="present/"),e.newPadOpts&&(n+="newpad="+e.newPadOpts+"/"),e.loginOpts&&(n+="login="+e.loginOpts+"/"),n},i[1]&&"1"===i[1]?(a.version=1,a.channel=i[2].replace(/-/g,"/"),a.key=i[3].replace(/-/g,"/"),o=i.slice(4),s(),a):i[1]&&"2"===i[1]?(a.version=2,a.app=i[2],a.key=i[3],o=i.slice(4),s(),a):i[1]&&"3"===i[1]?(a.version=3,a.app=i[2],a.channel=i[3],o=i.slice(4),s(),a):a):-1!==["user"].indexOf(e)?(a.type="user",i[1]&&"1"===i[1]?(a.version=1,a.user=i[2],a.pubkey=i[3].replace(/-/g,"/"),a):a):-1!==["invite"].indexOf(e)?(a.type="invite",i[1]&&"2"===i[1]?(a.version=2,a.app=i[2],a.mode=i[3],a.key=i[4],o=i.slice(5),a.password=-1!==o.indexOf("p"),a):a):void 0)}},h=a.parsePadUrl=function(e){var n,t={};return e?("/"!==e.slice(-1)&&"#"!==e.slice(-1)&&(e+="/"),e=e.replace(/\/\?[^#]+#/,"/#"),t.getUrl=function(e){e=e||{};var n="/";return t.type?(n+=t.type+"/",!t.hashData&&e&&Object.keys(e).length?n+"#"+function(e){if(!e||!Object.keys(e).length)return"";var n="/4/"+t.type+"/";return e.newPadOpts&&(n+="newpad="+e.newPadOpts+"/"),e.loginOpts&&(n+="login="+e.loginOpts+"/"),n}(e):t.hashData?n+="#"+t.hashData.getHash(e):n):n},t.getOptions=function(){return t.hashData&&t.hashData.getOptions?t.hashData.getOptions():{}},/^https*:\/\//.test(e)?(e.replace(/^https*:\/\/([^\/]*)\/(.*?)\//i,function(e,n,r){return t.domain=n,t.type=r,""}),-1===(n=e.indexOf("/#"))||(t.hash=e.slice(n+2),t.hashData=d(t.type,t.hash)),t):/^\/($|[^\/])/.test(e)?(n=e.indexOf("/#"),t.type=e.slice(1,n),-1===n||(t.hash=e.slice(n+2),t.hashData=d(t.type,t.hash)),t):t):t};return a.hashToHref=function(e,n){return"/"+n+"/#"+e},a.hrefToHash=function(e){return a.parsePadUrl(e).hash},a.getRelativeHref=function(e){if(e&&-1!==e.indexOf("#")){var n=h(e);return"/"+n.type+"/#"+n.hash}},a.getSecrets=function(n,r,o){var a,i,s={},u=function(){s.keys=t.createEditCryptor2(void 0,void 0,o),s.channel=c(s.keys.chanId),s.version=2,s.type=n};if(!r)return u(),s;if(r){if(!n)throw new Error("getSecrets with a hash requires a type parameter");a=d(n,r),i=r}if(0===i.length)return u(),s;if(0===a.version)s.channel=a.channel,s.key=a.key,s.version=0;else if(1===a.version){if(s.version=1,"pad"===a.type){if(s.channel=c(a.channel),"edit"===a.mode){if(s.keys=t.createEditCryptor(a.key),s.key=s.keys.editKeyStr,32!==s.channel.length||24!==s.key.length)throw new Error("The channel key and/or the encryption key is invalid")}else if("view"===a.mode&&(s.keys=t.createViewCryptor(a.key),32!==s.channel.length))throw new Error("The channel key is invalid")}else if("file"===a.type)s.channel=c(a.channel),s.keys={fileKeyStr:a.key,cryptKey:e.decodeBase64(a.key)};else if("user"===a.type)throw new Error("User hashes can't be opened (yet)")}else if(2===a.version)if(s.version=2,s.type=n,s.password=o,"pad"===a.type){if("edit"===a.mode){if(s.keys=t.createEditCryptor2(a.key,void 0,o),s.channel=c(s.keys.chanId),s.key=s.keys.editKeyStr,32!==s.channel.length||24!==s.key.length)throw new Error("The channel key and/or the encryption key is invalid")}else if("view"===a.mode&&(s.keys=t.createViewCryptor2(a.key,o),s.channel=c(s.keys.chanId),32!==s.channel.length))throw new Error("The channel key is invalid")}else if("file"===a.type){if(s.keys=t.createFileCryptor2(a.key,o),s.channel=c(s.keys.chanId),s.key=s.keys.fileKeyStr,48!==s.channel.length||24!==s.key.length)throw new Error("The channel key and/or the encryption key is invalid")}else if("user"===a.type)throw new Error("User hashes can't be opened (yet)");return s},a.getHashes=function(e){var n={};return(e=JSON.parse(JSON.stringify(e))).keys||e.key?(e.keys||(e.keys={}),(e.keys.editKeyStr||0===e.version&&e.key)&&(n.editHash=u(e)),e.keys.viewKeyStr&&(n.viewHash=f(e)),e.keys.fileKeyStr&&(n.fileHash=l(e)),n):n},a.getFormData=function(n,t,r){var i=(n=n||a.getSecrets("form",t,r))&&n.keys,s=i&&i.secondaryKey;if(s){var c=o.box.keyPair.fromSecretKey(e.decodeUTF8(s).slice(0,32)),u={};u.form_public=e.encodeBase64(c.publicKey);var f=u.form_private=e.encodeBase64(c.secretKey),l=a.getViewHashFromKeys({version:1,channel:n.channel,keys:{viewKeyStr:e.encodeBase64(i.cryptKey)}}),d=a.parseTypeHash("pad",l);return u.form_auditorHash=d.getHash({auditorKey:f}),u}},a.hrefToHexChannelId=function(e,n){var t=a.parsePadUrl(e);if(t&&t.hash)return a.getSecrets(t.type,t.hash,n).channel},a.getBlobPathFromHex=function(e){return"/blob/"+e.slice(0,2)+"/"+e},a.serializeHash=function(e){return e&&"/"!==e.slice(-1)&&(e+="/"),e},a.createInviteUrl=function(e,t){return t=t||a.createChannelId(),n.location.origin+"/invite/#/1/"+t+"/"+e.replace(/\//g,"-")+"/"},a.isValidChannel=function(e){return/^[a-zA-Z0-9]{32,48}$/.test(e)},a.isValidHref=function(e){if(e){var n=a.parsePadUrl(e);if(n&&n.type){if(n.hash){if(!n.hashData)return;if(void 0===n.hashData.version)return;if("pad"===n.hashData.type||"file"===n.hashData.type){if(!n.hashData.key&&!n.hashData.channel)return;if(n.hashData.key&&!/^[a-zA-Z0-9+-/=]+$/.test(n.hashData.key))return}}return n}}},a.decodeDataOptions=function(n){var t=decodeURIComponent(n),r=e.encodeUTF8(e.decodeBase64(t));return e.tryParse(r)||{}},a.encodeDataOptions=function(n){var t=JSON.stringify(n),r=e.encodeBase64(e.decodeUTF8(t));return encodeURIComponent(r)},a.getNewPadURL=function(e,n){var t=a.parsePadUrl(e),r=t.getOptions();return r.newPadOpts=a.encodeDataOptions(n),t.getUrl(r)},a.getLoginURL=function(e,n){var t=a.parsePadUrl(e),r=t.getOptions();return r.loginOpts=a.encodeDataOptions(n),t.getUrl(r)},a}(X(),M(),ne(),h()))}("undefined"!=typeof window?window:{})}(W)),W.exports}var re,oe,ae=te(),ie=X(),se={exports:{}},ce={exports:{}};function ue(){return re||(re=1,function(e){e.exports=function e(n,t,r){function o(i,s){if(!t[i]){if(!n[i]){if(!s&&f)return f(i);if(a)return a(i,!0);var c=new Error("Cannot find module '"+i+"'");throw c.code="MODULE_NOT_FOUND",c}var u=t[i]={exports:{}};n[i][0].call(u.exports,function(e){var t=n[i][1][e];return o(t||e)},u,u.exports,e,n,t,r)}return t[i].exports}for(var a=f,i=0;i=43)}}).catch(function(){return!1})}function O(e){return"boolean"==typeof v?u.resolve(v):A(e).then(function(e){return v=e})}function w(e){var n=y[e.name],t={};t.promise=new u(function(e,n){t.resolve=e,t.reject=n}),n.deferredOperations.push(t),n.dbReady?n.dbReady=n.dbReady.then(function(){return t.promise}):n.dbReady=t.promise}function D(e){var n=y[e.name].deferredOperations.pop();if(n)return n.resolve(),n.promise}function _(e,n){var t=y[e.name].deferredOperations.pop();if(t)return t.reject(n),t.promise}function T(e,n){return new u(function(t,r){if(y[e.name]=y[e.name]||F(),e.db){if(!n)return t(e.db);w(e),e.db.close()}var o=[e.name];n&&o.push(e.version);var a=i.open.apply(i,o);n&&(a.onupgradeneeded=function(n){var t=a.result;try{t.createObjectStore(e.storeName),n.oldVersion<=1&&t.createObjectStore(p)}catch(t){if("ConstraintError"!==t.name)throw t;console.warn('The database "'+e.name+'" has been upgraded from version '+n.oldVersion+" to version "+n.newVersion+', but the storage "'+e.storeName+'" already exists.')}}),a.onerror=function(e){e.preventDefault(),r(a.error)},a.onsuccess=function(){var n=a.result;n.onversionchange=function(e){e.target.close()},t(n),D(e)}})}function S(e){return T(e,!1)}function N(e){return T(e,!0)}function I(e,n){if(!e.db)return!0;var t=!e.db.objectStoreNames.contains(e.storeName),r=e.versione.db.version;if(r&&(e.version!==n&&console.warn('The database "'+e.name+"\" can't be downgraded from version "+e.db.version+" to version "+e.version+"."),e.version=e.db.version),o||t){if(t){var a=e.db.version+1;a>e.version&&(e.version=a)}return!0}return!1}function x(e){return new u(function(n,t){var r=new FileReader;r.onerror=t,r.onloadend=function(t){var r=btoa(t.target.result||"");n({__local_forage_encoded_blob:!0,data:r,type:e.type})},r.readAsBinaryString(e)})}function C(e){return c([b(atob(e.data))],{type:e.type})}function R(e){return e&&e.__local_forage_encoded_blob}function P(e){var n=this,t=n._initReady().then(function(){var e=y[n._dbInfo.name];if(e&&e.dbReady)return e.dbReady});return l(t,e,e),t}function k(e){w(e);for(var n=y[e.name],t=n.forages,r=0;r0&&(!e.db||"InvalidStateError"===o.name||"NotFoundError"===o.name))return u.resolve().then(function(){if(!e.db||"NotFoundError"===o.name&&!e.db.objectStoreNames.contains(e.storeName)&&e.version<=e.db.version)return e.db&&(e.version=e.db.version+1),N(e)}).then(function(){return k(e).then(function(){M(e,n,t,r-1)})}).catch(t);t(o)}}function F(){return{forages:[],db:null,dbReady:null,deferredOperations:[]}}function L(e){var n=this,t={db:null};if(e)for(var r in e)t[r]=e[r];var o=y[t.name];o||(o=F(),y[t.name]=o),o.forages.push(n),n._initReady||(n._initReady=n.ready,n.ready=P);var a=[];function i(){return u.resolve()}for(var s=0;s>4,f[c++]=(15&r)<<4|o>>2,f[c++]=(3&o)<<6|63&a;return u}function pe(e){var n,t=new Uint8Array(e),r="";for(n=0;n>2],r+=z[(3&t[n])<<4|t[n+1]>>4],r+=z[(15&t[n+1])<<2|t[n+2]>>6],r+=z[63&t[n+2]];return t.length%3==2?r=r.substring(0,r.length-1)+"=":t.length%3==1&&(r=r.substring(0,r.length-2)+"=="),r}function ve(e,n){var t="";if(e&&(t=de.call(e)),e&&("[object ArrayBuffer]"===t||e.buffer&&"[object ArrayBuffer]"===de.call(e.buffer))){var r,o=Z;e instanceof ArrayBuffer?(r=e,o+=ee):(r=e.buffer,"[object Int8Array]"===t?o+=te:"[object Uint8Array]"===t?o+=re:"[object Uint8ClampedArray]"===t?o+=oe:"[object Int16Array]"===t?o+=ae:"[object Uint16Array]"===t?o+=se:"[object Int32Array]"===t?o+=ie:"[object Uint32Array]"===t?o+=ce:"[object Float32Array]"===t?o+=ue:"[object Float64Array]"===t?o+=fe:n(new Error("Failed to get type for BinaryArray"))),n(o+pe(r))}else if("[object Blob]"===t){var a=new FileReader;a.onload=function(){var t=Q+e.type+"~"+pe(this.result);n(Z+ne+t)},a.readAsArrayBuffer(e)}else try{n(JSON.stringify(e))}catch(t){console.error("Couldn't convert value into a JSON string: ",e),n(null,t)}}function ye(e){if(e.substring(0,$)!==Z)return JSON.parse(e);var n,t=e.substring(le),r=e.substring($,le);if(r===ne&&X.test(t)){var o=t.match(X);n=o[1],t=t.substring(o[0].length)}var a=he(t);switch(r){case ee:return a;case ne:return c([a],{type:n});case te:return new Int8Array(a);case re:return new Uint8Array(a);case oe:return new Uint8ClampedArray(a);case ae:return new Int16Array(a);case se:return new Uint16Array(a);case ie:return new Int32Array(a);case ce:return new Uint32Array(a);case ue:return new Float32Array(a);case fe:return new Float64Array(a);default:throw new Error("Unkown type: "+r)}}var me={serialize:ve,deserialize:ye,stringToBuffer:he,bufferToString:pe};function ge(e,n,t,r){e.executeSql("CREATE TABLE IF NOT EXISTS "+n.storeName+" (id INTEGER PRIMARY KEY, key unique, value)",[],t,r)}function Ee(e){var n=this,t={db:null};if(e)for(var r in e)t[r]="string"!=typeof e[r]?e[r].toString():e[r];var o=new u(function(e,r){try{t.db=openDatabase(t.name,String(t.version),t.description,t.size)}catch(e){return r(e)}t.db.transaction(function(o){ge(o,t,function(){n._dbInfo=t,e()},function(e,n){r(n)})},r)});return t.serializer=me,o}function be(e,n,t,r,o,a){e.executeSql(t,r,o,function(e,i){i.code===i.SYNTAX_ERR?e.executeSql("SELECT name FROM sqlite_master WHERE type='table' AND name = ?",[n.storeName],function(e,s){s.rows.length?a(e,i):ge(e,n,function(){e.executeSql(t,r,o,a)},a)},a):a(e,i)},a)}function Ae(e,n){var t=this;e=d(e);var r=new u(function(n,r){t.ready().then(function(){var o=t._dbInfo;o.db.transaction(function(t){be(t,o,"SELECT * FROM "+o.storeName+" WHERE key = ? LIMIT 1",[e],function(e,t){var r=t.rows.length?t.rows.item(0).value:null;r&&(r=o.serializer.deserialize(r)),n(r)},function(e,n){r(n)})})}).catch(r)});return f(r,n),r}function Oe(e,n){var t=this,r=new u(function(n,r){t.ready().then(function(){var o=t._dbInfo;o.db.transaction(function(t){be(t,o,"SELECT * FROM "+o.storeName,[],function(t,r){for(var a=r.rows,i=a.length,s=0;s0)return void a(we.apply(o,[e,s,t,r-1]));i(n)}})})}).catch(i)});return f(a,t),a}function De(e,n,t){return we.apply(this,[e,n,t,1])}function _e(e,n){var t=this;e=d(e);var r=new u(function(n,r){t.ready().then(function(){var o=t._dbInfo;o.db.transaction(function(t){be(t,o,"DELETE FROM "+o.storeName+" WHERE key = ?",[e],function(){n()},function(e,n){r(n)})})}).catch(r)});return f(r,n),r}function Te(e){var n=this,t=new u(function(e,t){n.ready().then(function(){var r=n._dbInfo;r.db.transaction(function(n){be(n,r,"DELETE FROM "+r.storeName,[],function(){e()},function(e,n){t(n)})})}).catch(t)});return f(t,e),t}function Se(e){var n=this,t=new u(function(e,t){n.ready().then(function(){var r=n._dbInfo;r.db.transaction(function(n){be(n,r,"SELECT COUNT(key) as c FROM "+r.storeName,[],function(n,t){var r=t.rows.item(0).c;e(r)},function(e,n){t(n)})})}).catch(t)});return f(t,e),t}function Ne(e,n){var t=this,r=new u(function(n,r){t.ready().then(function(){var o=t._dbInfo;o.db.transaction(function(t){be(t,o,"SELECT key FROM "+o.storeName+" WHERE id = ? LIMIT 1",[e+1],function(e,t){var r=t.rows.length?t.rows.item(0).key:null;n(r)},function(e,n){r(n)})})}).catch(r)});return f(r,n),r}function Ie(e){var n=this,t=new u(function(e,t){n.ready().then(function(){var r=n._dbInfo;r.db.transaction(function(n){be(n,r,"SELECT key FROM "+r.storeName,[],function(n,t){for(var r=[],o=0;o '__WebKitDatabaseInfoTable__'",[],function(t,r){for(var o=[],a=0;a0}function Le(e){var n=this,t={};if(e)for(var r in e)t[r]=e[r];return t.keyPrefix=ke(e,n._defaultConfig),Fe()?(n._dbInfo=t,t.serializer=me,u.resolve()):u.reject()}function He(e){var n=this,t=n.ready().then(function(){for(var e=n._dbInfo.keyPrefix,t=localStorage.length-1;t>=0;t--){var r=localStorage.key(t);0===r.indexOf(e)&&localStorage.removeItem(r)}});return f(t,e),t}function je(e,n){var t=this;e=d(e);var r=t.ready().then(function(){var n=t._dbInfo,r=localStorage.getItem(n.keyPrefix+e);return r&&(r=n.serializer.deserialize(r)),r});return f(r,n),r}function Ke(e,n){var t=this,r=t.ready().then(function(){for(var n=t._dbInfo,r=n.keyPrefix,o=r.length,a=localStorage.length,i=1,s=0;s=0;n--){var t=localStorage.key(n);0===t.indexOf(e)&&localStorage.removeItem(t)}}):u.reject("Invalid arguments"),f(r,n),r}var qe={_driver:"localStorageWrapper",_initStorage:Le,_support:Pe(),iterate:Ke,getItem:je,setItem:Ye,removeItem:Ge,clear:He,length:Ve,key:Ue,keys:Be,dropInstance:Je},We=function(e,n){return e===n||"number"==typeof e&&"number"==typeof n&&isNaN(e)&&isNaN(n)},ze=function(e,n){for(var t=e.length,r=0;r{const n=(e,n)=>{let t=globalThis,r=globalThis;var o=t.CryptPad_Cache={},a=e.mkEvent(!0),i=!1,s=!1,c=!1;try{var u=t.indexedDB.open("test_db",1);u.onsuccess=function(){i=(c=!0)&&!s,a.fire()},u.onerror=function(){a.fire()}}catch(e){a.fire()}o.enable=function(){s=!1,i=c&&!s},o.disable=function(){s=!0,i=c&&!s},o.isEnabled=()=>i;var f=n.createInstance({driver:n.INDEXEDDB,name:"cp_cache"});o.getBlobCache=function(n,t){t=e.once(e.mkAsync(t||function(){})),a.reg(function(){i?f.getItem(n,function(r,o){!r&&o&&o.c?(t(null,o.c),o.t=+new Date,f.setItem(n,o,function(e){e&&console.error(e)})):t(e.serializeError(r||"EINVAL"))}):t("NOCACHE")})},o.setBlobCache=function(n,t,r){r=e.once(e.mkAsync(r||function(){})),a.reg(function(){i?t?f.setItem(n,{c:t,t:+new Date},function(n){r(e.serializeError(n))}):r("EINVAL"):r("NOCACHE")})},o.getChannelCache=function(n,t){t=e.once(e.mkAsync(t||function(){})),a.reg(function(){i?f.getItem(n,function(r,o){!r&&o&&Array.isArray(o.c)?(t(null,o),o.t=+new Date,f.setItem(n,o,function(e){e&&console.error(e)})):t(e.serializeError(r||"EINVAL"))}):t("NOCACHE")})};var l={};return o.storeCache=function(n,t,r,o){o=e.once(e.mkAsync(o||function(){})),a.reg(function(){l[n]=l[n]||e.throttle(function(t,r,o){var a,s;i?Array.isArray(r)&&t?(a=r,Array.isArray(a)&&(a.length>100&&a.splice(0,a.length-100),a.some(function(e,n){if(e.isCheckpoint)return s=n,!0}),a.splice(0,s)),f.setItem(n,{k:t,c:r,t:+new Date},function(n){n&&o(e.serializeError(n))})):o("EINVAL"):o("NOCACHE")},50),l[n](t,r,o)})},o.leaveChannel=function(e){delete l[e]},o.clearChannel=function(n,t){t=e.once(e.mkAsync(t||function(){})),a.reg(function(){i?f.removeItem(n,function(){t()}):t("NOCACHE")})},o.clear=function(n){n=e.once(e.mkAsync(n||function(){})),a.reg(function(){i?f.clear(n):n("NOCACHE")})},o.getKeys=function(n){n=e.once(e.mkAsync(n||function(){})),a.reg(function(){i?f.keys().then(function(e){n(null,e)}).catch(function(e){n(e)}):n("NOCACHE")})},o.getTime=function(n,t){t=e.once(e.mkAsync(t||function(){})),a.reg(function(){i?f.getItem(n,function(n,r){!n&&r&&r.c?t(null,r.t):t(e.serializeError(n||"EINVAL"))}):t("NOCACHE")})},r.CryptPad_clearIndexedDB=o.clear,o};e.exports&&(e.exports=n(X(),ue()))})()}(se)),se.exports}var le=fe(),de=n({__proto__:null,default:r(le)},[le]);const he=ie.mkEvent(!0),pe=ie.mkEvent(!0),ve=ie.mkEvent(),ye=ie.mkEvent();let me={};const ge={setCustomize:e=>{me=e.ApiConfig},init:e=>{var n,t,r;const{broadcast:o,userHash:a,anonHash:i}=e,s=a||i||ae.createRandomHash("drive"),c=e.store,u=ae.getSecrets("drive",s),f=(null===(n=e.store)||void 0===n?void 0:n.network)||(null===(t=e.store)||void 0===t?void 0:t.networkPromise),l={data:{},websocketURL:U.getWebsocketURL(),network:f,channel:u.channel,readOnly:!1,validateKey:(null===(r=u.keys)||void 0===r?void 0:r.validateKey)||void 0,crypto:L.createEncryptor(u.keys),Cache:de,userName:"fs",logLevel:1,ChainPad:P,updateProgress:function(e){e.type="drive",o([],"LOADING_DRIVE",e)},classic:!0},d=globalThis.CP_account_rt=N.create(l);c.driveSecret=u,c.proxy=d.proxy,c.onRpcReadyEvt=ie.mkEvent(!0),c.loggedIn=void 0!==e.userHash;const h={loggedIn:c.loggedIn};return d.proxy.on("create",function(e){c.realtime=e.realtime,c.network=e.network,c.loggedIn||(h.anonHash=ae.getEditHashFromKeys(u))}).on("cacheready",function(n){c.realtime=n.realtime,c.offline=!0;const t=!!c.networkPromise;if(c.networkPromise||(c.networkPromise=n.networkPromise),c.cacheReturned=h,c.networkPromise&&c.networkPromise.then&&!t){const e=setTimeout(function(){c.networkTimeout=!0,o([],"LOADING_DRIVE",{type:"offline"})},5e3);c.networkPromise.then(function(n){c.network||(c.network=n),clearTimeout(e)},function(n){console.error(n),clearTimeout(e)})}e.cache&&(h.edPublic=d.proxy.edPublic,he.fire(h))}).on("ready",function(n){delete c.networkTimeout,c.ready||(c.driveMetadata=n.metadata,d.proxy.drive||(d.proxy.drive={}),!d.proxy[J.displayNameKey]&&c.noDriveName&&(d.proxy[J.displayNameKey]=c.noDriveName),!d.proxy.uid&&c.noDriveUid&&(d.proxy.uid=c.noDriveUid),!d.proxy.form_seed&&e.form_seed&&(d.proxy.form_seed=e.form_seed),d.proxy.edPublic&&Array.isArray(me.adminKeys)&&-1!==me.adminKeys.indexOf(d.proxy.edPublic)&&(c.isAdmin=!0),h.edPublic=d.proxy.edPublic,pe.fire(h))}).on("error",function(e){"EDELETED"===e.error&&(c.ownDeletion||(c.isDeleted=!0,o([],"DRIVE_DELETED",e.message)))}).on("disconnect",function(){c.offline=!0,ve.fire(),o([],"UPDATE_METADATA")}).on("reconnect",function(){c.offline=!1,ye.fire(),o([],"UPDATE_METADATA")}),{channel:u.channel,onAccountCacheReady:he.reg,onAccountReady:pe.reg,onDisconnect:ve.reg,onReconnect:ye.reg}}};var Ee,be=Object.freeze({__proto__:null,Account:ge}),Ae={exports:{}};function Oe(){return Ee||(Ee=1,function(e){(()=>{const n=(e={},n={})=>{var t={setCustomize:t=>{n=t.Messages,e=t.AppConfig},init:function(e){t.state=e}};return t.send=function(n,r,o){("function"!=typeof o&&(o=function(){}),e.disableFeedback)?o():n&&(!0===r||t.state)?function(e,n){var t=new XMLHttpRequest;t.open("HEAD",e),t.onreadystatechange=function(){this.readyState===this.DONE&&n&&n()},t.send()}("/common/feedback.html?"+n+"="+Math.random().toString(16).replace(/0./,""),o):o()},t.reportAppUsage=function(){var e=window.location.pathname.split("/").filter(function(e){return e}).join(".");/^#\/1\/view\//.test(window.location.hash)?t.send(e+"_VIEW"):t.send(e)},t.reportScreenDimensions=function(){var e=window.innerHeight,n=window.innerWidth;t.send("DIMENSIONS:"+e+"x"+n)},t.reportLanguage=function(){n&&t.send("LANG_"+n._languageUsed)},t};e.exports&&(e.exports=n(void 0,void 0))})()}(Ae)),Ae.exports}var we,De,_e=Oe(),Te=n({__proto__:null,default:r(_e)},[_e]),Se={exports:{}},Ne={exports:{}};function Ie(){return De||(De=1,function(e){e.exports&&(e.exports=function(e={},n){var t={setCustomize:n=>{e=n.AppConfig}};t.MINIMUM_PASSWORD_LENGTH="number"==typeof e.minimumPasswordLength?e.minimumPasswordLength:8,t.MINIMUM_NAME_LENGTH=1,t.MAXIMUM_NAME_LENGTH=64,t.isEmail=function(e){return/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/.test(String(e).toLowerCase())},t.isLongEnoughPassword=function(e){return e.length>=t.MINIMUM_PASSWORD_LENGTH};var r=t.isString=function(e){return"string"==typeof e};return t.isValidUsername=function(e){return!!(r(e)&&e.length>=t.MINIMUM_NAME_LENGTH)},t.isValidPassword=function(e){return!(!e||!r(e))},t.passwordsMatch=function(e,n){return r(e)&&r(n)&&e===n},t.customSalt=function(){return"string"==typeof e.loginSalt?e.loginSalt:""},t.deriveFromPassphrase=function(e,r,o,a){n(r,e+t.customSalt(),8,1024,o||128,200,a,void 0)},t.dispenser=function(e){var n={used:0};return function(t){if(n.used+t>e.length)throw new Error("exceeded available entropy");if("number"!=typeof t)throw new Error("expected a number");if(t<=0)throw new Error("expected to consume a positive number of bytes");var r;return r=e.slice?e.slice(n.used,n.used+t):e.subarray(n.used,n.used+t),n.used+=t,r}},t}(void 0,(we||(we=1,function(e){e.exports=function(e,n,t,r,o,a,i,s){function c(e){var n=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298],t=1779033703,r=3144134277,o=1013904242,a=2773480762,i=1359893119,s=2600822924,c=528734635,u=1541459225,f=new Array(64);function l(e){for(var l=0,d=e.length;d>=64;){var h,p,v,y,m,g=t,E=r,b=o,A=a,O=i,w=s,D=c,_=u;for(p=0;p<16;p++)v=l+4*p,f[p]=(255&e[v])<<24|(255&e[v+1])<<16|(255&e[v+2])<<8|255&e[v+3];for(p=16;p<64;p++)y=((h=f[p-2])>>>17|h<<15)^(h>>>19|h<<13)^h>>>10,m=((h=f[p-15])>>>7|h<<25)^(h>>>18|h<<14)^h>>>3,f[p]=(y+f[p-7]|0)+(m+f[p-16]|0)|0;for(p=0;p<64;p++)y=(((O>>>6|O<<26)^(O>>>11|O<<21)^(O>>>25|O<<7))+(O&w^~O&D)|0)+(_+(n[p]+f[p]|0)|0)|0,m=((g>>>2|g<<30)^(g>>>13|g<<19)^(g>>>22|g<<10))+(g&E^g&b^E&b)|0,_=D,D=w,w=O,O=A+y|0,A=b,b=E,E=g,g=y+m|0;t=t+g|0,r=r+E|0,o=o+b|0,a=a+A|0,i=i+O|0,s=s+w|0,c=c+D|0,u=u+_|0,l+=64,d-=64}}l(e);var d,h=e.length%64,p=e.length/536870912|0,v=e.length<<3,y=h<56?56:120,m=e.slice(e.length-h,e.length);for(m.push(128),d=h+1;d>>24&255),m.push(p>>>16&255),m.push(p>>>8&255),m.push(p>>>0&255),m.push(v>>>24&255),m.push(v>>>16&255),m.push(v>>>8&255),m.push(v>>>0&255),l(m),[t>>>24&255,t>>>16&255,t>>>8&255,t>>>0&255,r>>>24&255,r>>>16&255,r>>>8&255,r>>>0&255,o>>>24&255,o>>>16&255,o>>>8&255,o>>>0&255,a>>>24&255,a>>>16&255,a>>>8&255,a>>>0&255,i>>>24&255,i>>>16&255,i>>>8&255,i>>>0&255,s>>>24&255,s>>>16&255,s>>>8&255,s>>>0&255,c>>>24&255,c>>>16&255,c>>>8&255,c>>>0&255,u>>>24&255,u>>>16&255,u>>>8&255,u>>>0&255]}function u(e,n,t){e=e.length<=64?e:c(e);var r,o=64+n.length+4,a=new Array(o),i=new Array(64),s=[];for(r=0;r<64;r++)a[r]=54;for(r=0;r=o-4;e--){if(a[e]++,a[e]<=255)return;a[e]=0}}for(;t>=32;)u(),s=s.concat(c(i.concat(c(a)))),t-=32;return t>0&&(u(),s=s.concat(c(i.concat(c(a))).slice(0,t))),s}function f(e,n,t,r){var o,a,i=e[0]^n[t++],s=e[1]^n[t++],c=e[2]^n[t++],u=e[3]^n[t++],f=e[4]^n[t++],l=e[5]^n[t++],d=e[6]^n[t++],h=e[7]^n[t++],p=e[8]^n[t++],v=e[9]^n[t++],y=e[10]^n[t++],m=e[11]^n[t++],g=e[12]^n[t++],E=e[13]^n[t++],b=e[14]^n[t++],A=e[15]^n[t++],O=i,w=s,D=c,_=u,T=f,S=l,N=d,I=h,x=p,C=v,R=y,P=m,k=g,M=E,F=b,L=A;for(a=0;a<8;a+=2)O^=(o=(k^=(o=(x^=(o=(T^=(o=O+k)<<7|o>>>25)+O)<<9|o>>>23)+T)<<13|o>>>19)+x)<<18|o>>>14,S^=(o=(w^=(o=(M^=(o=(C^=(o=S+w)<<7|o>>>25)+S)<<9|o>>>23)+C)<<13|o>>>19)+M)<<18|o>>>14,R^=(o=(N^=(o=(D^=(o=(F^=(o=R+N)<<7|o>>>25)+R)<<9|o>>>23)+F)<<13|o>>>19)+D)<<18|o>>>14,L^=(o=(P^=(o=(I^=(o=(_^=(o=L+P)<<7|o>>>25)+L)<<9|o>>>23)+_)<<13|o>>>19)+I)<<18|o>>>14,O^=(o=(_^=(o=(D^=(o=(w^=(o=O+_)<<7|o>>>25)+O)<<9|o>>>23)+w)<<13|o>>>19)+D)<<18|o>>>14,S^=(o=(T^=(o=(I^=(o=(N^=(o=S+T)<<7|o>>>25)+S)<<9|o>>>23)+N)<<13|o>>>19)+I)<<18|o>>>14,R^=(o=(C^=(o=(x^=(o=(P^=(o=R+C)<<7|o>>>25)+R)<<9|o>>>23)+P)<<13|o>>>19)+x)<<18|o>>>14,L^=(o=(F^=(o=(M^=(o=(k^=(o=L+F)<<7|o>>>25)+L)<<9|o>>>23)+k)<<13|o>>>19)+M)<<18|o>>>14;n[r++]=e[0]=O+i|0,n[r++]=e[1]=w+s|0,n[r++]=e[2]=D+c|0,n[r++]=e[3]=_+u|0,n[r++]=e[4]=T+f|0,n[r++]=e[5]=S+l|0,n[r++]=e[6]=N+d|0,n[r++]=e[7]=I+h|0,n[r++]=e[8]=x+p|0,n[r++]=e[9]=C+v|0,n[r++]=e[10]=R+y|0,n[r++]=e[11]=P+m|0,n[r++]=e[12]=k+g|0,n[r++]=e[13]=M+E|0,n[r++]=e[14]=F+b|0,n[r++]=e[15]=L+A|0}function l(e,n,t,r,o){for(;o--;)e[n++]=t[r++]}function d(e,n,t,r,o){for(;o--;)e[n++]^=t[r++]}function h(e,n,t,r,o){l(e,0,n,t+16*(2*o-1),16);for(var a=0;a<2*o;a+=2)f(e,n,t+16*a,r+8*a),f(e,n,t+16*a+16,r+8*a+16*o)}function p(e,n,t){return e[n+16*(2*t-1)]}function v(e){for(var n=[],t=0;t127&&r<2048?(n.push(r>>6|192),n.push(63&r|128)):(n.push(r>>12|224),n.push(r>>6&63|128),n.push(63&r|128))}return n}if(t<1||t>31)throw new Error("scrypt: logN not be between 1 and 31");var y,m,g,E,b=1<>>0;if(1*r>=1<<30||r>16777216||r>8388608||b>16777216/r)throw new Error("scrypt: parameters are too large");"string"==typeof e&&(e=v(e)),"string"==typeof n&&(n=v(n)),"undefined"!=typeof Int32Array?(y=new Int32Array(64*r),m=new Int32Array(32*b*r),E=new Int32Array(16)):(y=[],m=[],E=new Array(16)),g=u(e,n,128*r);var A=32*r;function O(){for(var e=0;e<32*r;e++){var n=4*e;y[0+e]=(255&g[n+3])<<24|(255&g[n+2])<<16|(255&g[n+1])<<8|255&g[n+0]}}function w(e,n){for(var t=e;t>>0&255,g[4*e+1]=n>>>8&255,g[4*e+2]=n>>>16&255,g[4*e+3]=n>>>24&255}}var T="undefined"!=typeof setImmediate?setImmediate:setTimeout;function S(e,n,t,r,o){!function a(){T(function(){r(e,e+t>>18&63]),o.push(t[n>>>12&63]),o.push(t[n>>>6&63]),o.push(t[n>>>0&63]);return r%3>0&&(o[o.length-1]="=",r%3==1&&(o[o.length-2]="=")),o.join("")}(t):"hex"===n?function(e){for(var n="0123456789abcdef".split(""),t=e.length,r=[],o=0;o>>4&15]),r.push(n[e[o]>>>0&15]);return r.join("")}(t):t}"function"==typeof a&&(s=i,i=a,a=1e3),a<=0?(O(),w(0,b),D(0,b),_(),i(N(s))):(O(),S(0,b,2*a,w,function(){S(0,b,2*a,D,function(){_(),i(N(s))})}))}}(Ne)),Ne.exports)))}(Se)),Se.exports}var xe,Ce,Re,Pe=Ie(),ke=n({__proto__:null,default:r(Pe)},[Pe]),Me={exports:{}},Fe={exports:{}},Le={exports:{}},He={exports:{}};function je(){return xe||(xe=1,function(e){e.exports&&(e.exports={whenRealtimeSyncs:function(e,n){"function"==typeof e.getAuthDoc?setTimeout(function(){e.getAuthDoc()!==e.getUserDoc()?e.onSettle(n):n()},0):console.error("improper use of this function")}})}(He)),He.exports}function Ke(){return Ce||(Ce=1,function(e){(()=>{const n=(e,n,t,r)=>{let o=globalThis;var a={setCustomize:()=>{}},i=function(e){try{return JSON.parse(JSON.stringify(e))}catch(e){return}};return a.init=function(a,s,c){var u=a.loggedIn,f=a.sharedFolder,l=a.readOnly,d=a.Messages||{},h=s.ROOT,p=s.FILES_DATA,v=s.STATIC_DATA,y=s.OLD_FILES_DATA,m=s.UNSORTED,g=s.TRASH,E=s.TEMPLATE,b=s.SHARED_FOLDERS,A=s.SHARED_FOLDERS_TEMP,O=s.debug;let w={};s._setReadOnly=function(e){(l=e)||s.fixFiles()},s.setHref=function(e,t,r){(t||e)&&(l||(t?[t]:s.findChannels([e])).forEach(function(e){var t=s.getFileData(e,!0);if(s.getHref(t)===r)return;t.href=s.cryptor.encrypt(r);const o=n.parsePadUrl(r);if("form"!==o.type)return;const a=n.getSecrets(o.type,o.hash,t.password);t.roHref="/"+o.type+"/#"+n.getViewHashFromKeys(a)}))},s.setPadAttribute=function(e,n,t,r){if(r=r||function(){},l)r("EFORBIDDEN");else{var o=s.getIdFromHref(e);if(o)if(n&&n.trim()){var a=s.getFileData(o,!0);"href"===n?s.setHref(null,o,t):a[n]=i(t),r(null)}else r("E_INVAL_ATTR");else r("E_INVAL_HREF")}},s.getPadAttribute=function(e,n,t){t=t||function(){};var r=s.getIdFromHref(e);if(r){var o=s.getFileData(r);t(null,i(o[n]))}else t(null,void 0)},s.pushData=function(t,o){if("function"!=typeof o&&(o=function(){}),l)return void o("EFORBIDDEN");var a=e.createRandomInteger(),u=i(t);let f=n.parsePadUrl(u.roHref||u.href);u.href&&-1!==u.href.indexOf("#")&&(u.href=s.cryptor.encrypt(u.href)),["sheet","doc","presentation"].includes(f?.type)&&!u.rtChannel&&r.send("PUSH_DATA_MISSING_RT_CHANNEL",!0),c[p][a]=u,o(null,a)},s.pushLink=function(n,t){if("function"!=typeof t&&(t=function(){}),l)t("EFORBIDDEN");else{var r=e.createRandomInteger(),o=i(n);c[v][r]=o,t(null,r)}},s.pushSharedFolder=function(n,t){if("function"!=typeof t&&(t=function(){}),l)t("EFORBIDDEN");else{var r,o=i(n);if(Object.keys(c[b]).some(function(e){if(c[b][e].channel===o.channel)return o.href&&!c[b][e].href&&(c[b][e].href=o.href),r=e,!0}))t("EEXISTS",r);else if(u&&!a.testMode){var f=e.createRandomInteger();o.href&&-1!==o.href.indexOf("#")&&(o.href=s.cryptor.encrypt(o.href)),c[b][f]=o,t(null,f)}else t("EAUTH")}},s.deprecateSharedFolder=function(e,n){if(!l){var t=c[b][e];if(t){if(!(!t.href||-1===s.cryptor.decrypt(t.href).indexOf("#")))(c[A][e]=JSON.parse(JSON.stringify(t))).legacy="PASSWORD_CHANGE"!==n;var r=s.findFile(Number(e));s.delete(r,null,!0),delete c[b][e]}}};var D=function(e){l||delete c[p][e]};s.checkDeletedFiles=function(e){if(u||a.testMode)if(l)e("EFORBIDDEN");else{var t=s.getFiles([h,"hrefArray",g]),r=[];s.getFiles([p,b,v]).forEach(function(e){if(-1===t.indexOf(e)){var o=s.isSharedFolder(e)?c[b][e]:s.getFileData(e),i=o.channel;o.lastVersion&&r.push(n.hrefToHexChannelId(o.lastVersion)),o.rtChannel&&r.push(o.rtChannel),i&&r.push(i),s.isSharedFolder(e)?(delete c[b][e],a.removeProxy&&a.removeProxy(e)):c[v][e]?delete c[v][e]:D(e)}}),r.length?e(null,r):e()}else e()};s.deleteMultiplePermanently=function(e,n,t){if(l)t("EFORBIDDEN");else{var r=e.filter(function(e){return s.isPathIn(e,[p])});if(!u&&!a.testMode)return r.forEach(function(e){var n=e[1];n&&D(n)}),void t();var o=e.filter(function(e){return s.isPathIn(e,["hrefArray"])}),i=e.filter(function(e){return s.isPathIn(e,[h])}),f=e.filter(function(e){return s.isPathIn(e,[g])}),d=[];o.forEach(function(e){var n=s.find(e);d.push({root:e[0],id:n})}),function(e){l||e.forEach(function(e){var n=c[e.root].indexOf(e.id);c[e.root].splice(n,1)})}(d),i.forEach(function(e){var n=e.slice(),t=n.pop();delete s.find(n)[t]});var v,y=[];f.forEach(function(e){var n=e.slice(),t=n.pop(),r=s.find(n);4!==e.length?delete r[t]:y.push({name:e[1],el:r})}),v=y,l||v.forEach(function(e){var n=c[g][e.name].indexOf(e.el);c[g][e.name].splice(n,1)}),n?t():s.checkDeletedFiles(t)}},s.copyFromOtherDrive=function(e,t,r,o){if(!l){var a=[];if(Object.keys(r).forEach(function(e){e=Number(e);var n=r[e];if(n.static)return delete n.static,void(c[v][e]=n);n.href&&(n.href=s.cryptor.encrypt(n.href));var t=!1;for(var o in c[p])if(c[p][o].channel===n.channel){c[p][o].href||(c[p][o].href=n.href),t=!0;break}t?a.push(e):c[p][e]=n}),s.isFile(t)&&-1!==a.indexOf(t))s.log(d.sharedFolders_duplicate);else{if(s.isFolder(t)){var i=function(e){for(var n in e)s.isFile(e[n])?-1!==a.indexOf(e[n])&&(s.log(d.sharedFolders_duplicate),delete e[n]):s.isFolder(e[n])&&i(e[n])};i(t)}var u=s.find(e),f=s.isFile(t)?n.createChannelId():o;if(s.isFolder(t)&&f!==d.fm_newFolder&&void 0!==u[f])throw{error:"E_DUPLICATE_FOLDER_NAME",folderName:f,message:d.fo_unavailableName};var h=s.getAvailableName(u,f);Array.isArray(u)?u.push(t):u[h]=t}}};s.copyElement=function(e,t){if(!l&&!s.comparePath(e,t)){var r=s.find(e),o=s.find(t);if(s.isPathIn(t,[g])){if(!e||e.length<2||e[0]===g)return void O("Can't move an element from the trash to the trash: ",e);var a=e[e.length-1],i=s.isPathIn(e,["hrefArray"])?s.getTitle(r):a,u=e.slice();return u.pop(),function(e,n,t){if(!l){var r=c[g];void 0===r[e]&&(r[e]=[]);var o={element:n,path:t};r[e].push(o)}}(i,r,u),!0}if(s.isPathIn(t,["hrefArray"])){if(s.isFolder(r))return void s.log(d.fo_moveUnsortedError);if(e[0]===t[0])return;var f=t[0];return-1===c[f].indexOf(r)&&c[f].push(r),!0}var h=s.isFile(r)?s.getAvailableName(o,n.createChannelId()):s.isInTrashRoot(e)?e[1]:e.pop();return void 0!==o[h]?{error:"E_DUPLICATE_FOLDER_NAME",folderName:h,message:d.fo_unavailableName}:(o[h]=r,!0)}},s.forget=function(e){if(!l){var n=s.getIdFromHref(e);if(n){if(!u&&!a.testMode)return D(n),!0;var t=s.findFile(n);return s.move(t,[g]),!0}}},s.restoreHref=function(e){if(!l){var n=s.getIdFromHref(e);if(n&&s.isFile(n)){var t=s.findFile(n),r=!0;t.forEach(function(e){e[0]!==g?r=!1:s.delete(e,null,!0)}),r&&s.add(n)}}},s.add=function(e,t){if(!l&&(u||a.testMode)){e=Number(e);var r=c[p][e]||c[v][e]||c[b][e];if(r&&"object"==typeof r){var o,i=t;if(t&&!Array.isArray(t)&&(i=decodeURIComponent(t).split(",")),t&&s.isPathIn(i,["hrefArray"]))(o=s.find(i)).push(e);else if(-1!==s.getFiles([h,g,"hrefArray"]).indexOf(e)||i||(i=[h]),t&&s.isPathIn(i,[h])){if(o=s.find(i)){var f=s.getAvailableName(o,n.createChannelId());return void(o[f]=e)}o=s.find([h]),i.slice(1).forEach(function(e){o=o[e]=o[e]||{}}),o[n.createChannelId()]=e}}}},s.setFolderData=function(e,t,r,o){if(!l){var a=s.find(e);if(s.isFolder(a)&&!s.isSharedFolder(a)){if(!s.hasFolderData(a))a["000"+n.createChannelId().slice(0,-3)]={metadata:!0};s.getFolderData(a)[t]=r,o()}}};var _=function(e){s.rt?(s.rt.sync(),t.whenRealtimeSyncs(s.rt,e)):o.setTimeout(e,1e3)};return s.migrateReadOnly=function(e){if(!l&&a.editKey)if(c.version>=2)e();else{c.migrateRo=1;_(function(){var n=JSON.parse(JSON.stringify(c));s.reencrypt(a.editKey,a.editKey,n),setTimeout(function(){c.version>=2?e():(Object.keys(n).forEach(function(e){c[e]=n[e]}),c.version=2,delete c.migrateRo,_(e))},1e3)})}else e({error:"EFORBIDDEN"})},s.migrate=function(t){if(l)t();else{!function(){if(c[m]&&c[y]){O("UNSORTED still exists in the object, removing it...");var e=c[m];0!==e.length?(e.forEach(function(e){"string"==typeof e&&(0===c[y].filter(function(n){return n.href===e}).length&&c[y].push({href:e}))}),delete c[m]):delete c[m]}}(),function(t){if(c[y])try{O("Migrating file system..."),c.migrate=1;_(function(){var r=c[y].slice();c[p]||(c[p]={});var o=c[p];r.forEach(function(t){if(t&&t.href){var r=t.href,a=e.createRandomInteger(),i=s.findFile(r),c=t,u=n.createChannelId();o[a]=c||{href:r},i.forEach(function(e){var n=e.slice(),t=n.pop(),r=s.find(n);if(s.isInTrashRoot(e))return r.element=a,void(o[a].filename=e[1]);s.isPathIn(e,["hrefArray"])?r[t]=a:(r[u]=a,o[a].filename=t,delete r[t])})}}),delete c[y],delete c.migrate,t()})}catch(e){console.error(e),t()}else t()}(t)}},s.fixFiles=function(t){if(!l){t&&(O=function(){});var r=+new Date;O("Cleaning file system...");var o=JSON.stringify(c),i=function(t){"object"!=typeof c[h]&&(O("ROOT was not an object"),c[h]={});var r=t||c[h];if(!r)return console.error("Invalid element in root");var o,a=0,u=c[v],f=c[p];for(var l in r)if(null!==(o=r[l]))if(s.isFolderData(o))0!==a&&(O("Multiple metadata files in folder"),delete r[l]),a++;else if(s.isFile(o,!0)||s.isFolder(o))if(s.isFolder(o))i(o);else{if("string"==typeof o){var d=e.createRandomInteger(),y=n.createChannelId();f[d]={href:s.cryptor.encrypt(o),filename:l},r[y]=d,delete r[l]}if("number"==typeof o)f[o]||u[o]||(O("An element in ROOT doesn't have associated data",o,l),delete r[l])}else O("An element in ROOT was not a folder nor a file. ",o),delete r[l];else console.error("element[%s] is null",l),delete r[l]};e.isObject(c[v])||(O("STATIC_DATA was not an object"),c[v]={}),i(),function(){if(!f){"object"!=typeof c[g]&&(O("TRASH was not an object"),c[g]={});var n,t=c[g],r=function(t,r,o){if("object"==typeof t){if(!s.isSharedFolder(t.element))if(s.isFile(t.element,!0)||s.isFolder(t.element))if(Array.isArray(t.path)){if("string"==typeof t.element){var a=e.createRandomInteger();c[p][a]={href:s.cryptor.encrypt(t.element),filename:o},t.element=a}if(s.isFolder(t.element)&&i(t.element),"number"==typeof t.element)c[p][t.element]||c[v][t.element]||(O("An element in TRASH doesn't have associated data",t.element,o),n.push(r))}else n.push(r);else n.push(r)}else n.push(r)};for(var o in t)if(Array.isArray(t[o]))if(0===t[o].length)O("Empty array in TRASH root. ",t[o]),delete t[o];else{n=[];for(var a=0;a=0;u--)t[o].splice(n[u],1)}else O("An element in TRASH root is not an array. ",t[o]),delete t[o]}}(),function(){if(!f){Array.isArray(c[E])||(O("TEMPLATE was not an array"),c[E]=[]);var n=e.deduplicateString(c[E]);n.length!==c[E].length&&(c[E]=n);var t=c[E],r=s.getFiles([h]),o=[];t.forEach(function(n,a){if(s.isFile(n,!0)&&-1===r.indexOf(n)){if("string"==typeof n){var i=e.createRandomInteger();return c[p][i]={href:s.cryptor.encrypt(n)},void(t[a]=i)}if("number"==typeof n)c[p][n]||(O("An element in TEMPLATE doesn't have associated data",n),o.push(n))}else o.push(n)}),o.forEach(function(e){var n=t.indexOf(e);-1!==n&&t.splice(n,1)})}}(),function(){"object"!=typeof c[p]&&(O("FILES_DATA was not an object"),c[p]={});var e=c[p],t=s.getFiles([h,g,"hrefArray"]),r=s.find([h]),o=[];for(var i in e)if(String(i)===String(Number(i))){var f=e[i=Number(i)];if(f&&"object"==typeof f)if(f.href||f.roHref){var d;try{d=f.href&&(-1!==f.href.indexOf("#")?f.href:s.cryptor.decrypt(f.href))}catch(e){}if(!d||-1!==d.indexOf("#")){var y,m=n.parsePadUrl(d||f.roHref);if(m.hash)if(m.type){if(d&&"pad"===m.hashData.type&&m.hashData.version)if("view"===m.hashData.mode)f.roHref=d,delete f.href;else if(f.roHref){var E=n.parsePadUrl(f.roHref);E.hash&&E.type||(y=n.getSecrets(m.type,m.hash,f.password),f.roHref="/"+m.type+"/#"+n.getViewHashFromKeys(y))}else y=n.getSecrets(m.type,m.hash,f.password),f.roHref="/"+m.type+"/#"+n.getViewHashFromKeys(y);if(0===m.hashData.version&&delete f.roHref,d&&"/"!==d.slice(0,1)&&(f.href=s.cryptor.encrypt(n.getRelativeHref(d))),f.ctime||(f.ctime=f.atime),f.title||(f.title=s.getDefaultName(m)),!f.channel)try{y||(y=n.getSecrets(m.type,m.hash,f.password)),f.channel=y.channel,console.log(f),O("Adding missing channel in filesData ",f.channel)}catch(e){console.error(e)}if(n.isValidChannel(f.channel)||console.error("Remove invalid channel",f.channel,f),["sheet","doc","presentation"].includes(m.type)&&!f.rtChannel&&(w[f.channel]=f),!u&&!a.testMode||-1!==t.indexOf(i));else O("An element in filesData was not in ROOT, TEMPLATE or TRASH.",i,f),r[n.createChannelId()]=i}else O("Removing an element in filesData with a invalid type.",f),o.push(i);else O("Removing an element in filesData with a invalid href.",f),o.push(i)}}else O("Removing an element in filesData with a missing href.",f),o.push(i);else O("An element in filesData was not an object.",f),o.push(i)}else O("Invalid file ID in filesData.",i),o.push(i);o.forEach(function(e){D(e)});var b=c[v],A=[];for(var _ in b){var T=b[_=Number(_)];T&&"object"==typeof T&&T.href?!u&&!a.testMode||-1!==t.indexOf(_)||A.push(_):A.push(_)}A.forEach(function(e){l||delete c[v][e]})}(),Object.keys(c).forEach(function(e){"/"===e.slice(0,1)&&delete c[e]}),function(){if(!f){"object"!=typeof c[b]&&(O("SHARED_FOLDER was not an object"),c[b]={});var e,t,r=c[b],o=s.getFiles([h,g]),a=s.find([h]);for(var i in r){var u;t=r[i],i=Number(i);try{u=t.href&&(-1!==t.href.indexOf("#")?t.href:s.cryptor.decrypt(t.href))}catch(e){}if((e=n.parsePadUrl(u||t.roHref))&&e.hash&&"undefined"!==e.hash){if(-1===o.indexOf(i))console.log("missing"+i),a[n.createChannelId()]=i}else delete r[i]}}}(),function(){if(!f){"object"!=typeof c[A]&&(O("SHARED_FOLDER_TEMP was not an object"),c[A]={});var e=c[A],n=c[b];for(var t in e)n[t]&&delete e[t]}}();var d=+new Date-r+"ms";JSON.stringify(c)===o?O("File system was clean.",d):O("Your file system was corrupted. It has been cleaned so that the pads you visit can be stored safely.",d)}},s.getMissingRtChannel=()=>{const e=w;if(w={},!l&&Object.keys(e).length)return e},s.findMissingRtChannel=()=>(w={},s.fixFiles(),s.getMissingRtChannel()),s},a};e.exports&&(e.exports=n(X(),te(),je(),Oe()))})()}(Le)),Le.exports}function Ue(){return Re||(Re=1,function(e){(()=>{const n=(e,n,t,r,o,a={})=>{let i=globalThis;var s={setCustomize:e=>{a=e.Messages,r.setCustomize(e)}},c=s.ROOT="root",u=s.UNSORTED="unsorted",f=s.TRASH="trash",l=s.TEMPLATE="template",d=s.SHARED_FOLDERS="sharedFolders",h=s.SHARED_FOLDERS_TEMP="sharedFoldersTemp",p=s.FILES_DATA=t.storageKey,v=s.OLD_FILES_DATA=t.oldStorageKey,y=s.STATIC_DATA="static";s.getDefaultName=function(e){var n=e.type;return a.type[n]+" - "+function(){if(i.Intl&&i.Intl.DateTimeFormat)return new i.Intl.DateTimeFormat(void 0,{weekday:"short",year:"numeric",month:"long",day:"numeric"}).format(new Date);return(new Date).toString().split(" ").slice(0,4).join(" ")}()};var m=s.createCryptor=function(e){var n={};if(!e)return n.encrypt=function(e){return e},n.decrypt=function(e){return e},n;try{var t=o.createEncryptor(e);n.encrypt=function(e){try{return"/file/#"===e.slice(0,7)?e:t.encrypt(e)}catch(e){return}},n.decrypt=function(e){try{return t.decrypt(e)}catch(e){return}}}catch(e){console.error(e)}return n};return s.getHref=function(e,n){if(e.href&&-1!==e.href.indexOf("#"))return e.href;if(e.href&&n){var t=n.decrypt(e.href);if(t&&-1!==t.indexOf("#"))return t}return e.roHref},s.reencrypt=function(e,n,t){if(t){var r=m(e),o=m(n);Object.keys(t[p]).forEach(function(e){var n=t[p][e]||{};if(n.href&&n.roHref&&!n.fileType){var a=n.href&&-1===n.href.indexOf("#")?r.decrypt(n.href):n.href;if(!a)return;n.href=o.encrypt(a)}}),Object.keys(t[d]||{}).forEach(function(e){var n=t[d][e]||{};if(n.href){var a=n.href&&-1===n.href.indexOf("#")?r.decrypt(n.href):n.href;if(!a)return;n.href=o.encrypt(a)}}),Object.keys(t[h]||{}).forEach(function(e){var n=t[h][e]||{};if(n.href){var a=n.href&&-1===n.href.indexOf("#")?r.decrypt(n.href):n.href;if(!a)return;n.href=o.encrypt(a)}})}else console.error("Nothing to reencrypt")},s.init=function(t,o){var i={};i.cryptor=m(o.editKey),i.setReadOnly=function(e,n){o.editKey=n,i.cryptor=m(n),i.cryptor.k=Math.random(),i.readOnly=e,i._setReadOnly&&i._setReadOnly(e)},i.readOnly=o.readOnly,i.reencrypt=s.reencrypt,i.getDefaultName=s.getDefaultName;var g=o.sframeChan,E=a.fm_newFolder||"New folder",b=a.fm_newFile||"New file";i.ROOT=c,i.STATIC_DATA=y,i.UNSORTED=u,i.TRASH=f,i.TEMPLATE=l,i.SHARED_FOLDERS=d,i.SHARED_FOLDERS_TEMP=h,i.FILES_DATA=p,i.OLD_FILES_DATA=v;var A=i.sharedFolder=o.sharedFolder;i.id=o.id;var O=function(){console.debug.apply(console,arguments)},w=i.log=o.log||O,D=o.logError||O,_=i.debug=o.debug||O;i.fixFiles=function(){};var T=i.error=function(){g?g.query("Q_DRIVE_USEROBJECT",{cmd:"fixFiles",data:{}},function(){}):("function"==typeof i.fixFiles&&i.fixFiles(),console.error.apply(console,arguments),i.fixFiles())};o.outer&&r.init(o,i,t),i.getStructure=function(){var e={};return e[c]={},e[f]={},e[p]={},e[l]=[],e[d]={},e};var S=i.getHref=function(e){return s.getHref(e,i.cryptor)},N=function(e){return null===e?"null":Array.isArray(e)?"array":typeof e};i.isValidDrive=function(e){var n=i.getStructure();return"object"==typeof e&&Object.keys(n).every(function(t){return e[t]&&N(n[t])===N(e[t])})};var I=function(){return[l]},x=function(e,n){return e===n},C=i.isSharedFolder=function(e){return!A&&Boolean(t[d]&&t[d][e])},R=i.isFile=function(e,n){return!C(e)&&("number"==typeof e||(void 0!==t[v]||n)&&"string"==typeof e)},P=i.isFolderData=function(e){return"object"==typeof e&&!0===e.metadata};i.isReadOnlyFile=function(e){if(!R(e))return!1;var n=i.getFileData(e);return n.roHref?Boolean(n.roHref&&!n.href):void 0},i.isStaticFile=function(e){return Boolean(t[y]&&t[y][e])};var k=i.isFolder=function(e){return!P(e)&&("object"==typeof e&&!e.channel||C(e))};i.isFolderEmpty=function(e){return!!k(e)&&(0===Object.keys(e).length||!(1!==Object.keys(e).length||!P(e[Object.keys(e)[0]])))},i.hasSubfolder=function(e,n){if(!k(e))return!1;var t=0,r=function(e){t+=k(e.element)?1:0};for(var o in e)n?Array.isArray(e[o])&&e[o].forEach(r):t+=k(e[o])?1:0;return t},i.hasFile=function(e,n){if(!k(e))return!1;var t=0,r=function(e){t+=R(e.element)?1:0};for(var o in e)n?Array.isArray(e[o])&&e[o].forEach(r):t+=R(e[o])?1:0;return t},i.hasFolderData=function(e){for(var n in e)if(P(e[n]))return!0};var M=i.hasSubSharedFolder=function(e){for(var n in e){if(C(e[n]))return!0;if(k(e[n])&&M(e[n]))return!0}return!1},F=i.getFileData=function(n,r){if(n){var a,s;try{a=(t[y]||{})[n]}catch(e){console.error(e)}if(a){var c=r?a:e.clone(a);return r||(c.static=!0),c}try{s=t[p][n]||{}}catch(e){console.error(e),s={}}if(!r&&(s=JSON.parse(JSON.stringify(s))).href&&-1===s.href.indexOf("#"))if(o.editKey)try{s.href=i.cryptor.decrypt(s.href)}catch(e){delete s.href}else delete s.href;return s}};i.getFolderData=function(e){for(var n in e)if(P(e[n]))return e[n];return{}};var L=i.getTitle=function(e,n){if(C(e))return"??";var t=F(e);if(t){if(t.static)return t.name;if(e&&(t.href||t.roHref))return"title"===n?t.title:"name"===n?t.filename:t.filename||t.title||b;T("getTitle called with a non-existing file id: ",e,t)}else T("unable to retrieve data about the requested file: ",e,t)},H=i.comparePath=function(e,n){if(!(e&&n&&Array.isArray(e)&&Array.isArray(n)))return!1;if(e.length!==n.length)return!1;for(var t=!0,r=e.length-1;t&&r>=0;)t=e[r]===n[r],r--;return t},j=i.isSubpath=function(e,n){var t=n.slice(),r=e.slice(0,t.length);return H(t,r)},K=i.isPathIn=function(e,n){if(n){var t=n.indexOf("hrefArray");return-1!==t&&(n.splice(t,1),n=n.concat(I())),n.some(function(n){return Array.isArray(e)&&e[0]===n})}},U=i.isInTrashRoot=function(e){return e[0]===f&&4===e.length},B=function(e,n){if(n){if(0===n.length)return e;var t=n.slice(),r=t.shift();if(void 0!==e[r])return B(e[r],t);_("Unable to find the key '"+r+"' in the root object provided:",e)}else T("Invalid path:\n",n,"\nin root\n",e)},V=i.find=function(e){return B(t,e)},G=i.getFilesRecursively=function(e,n){for(var t in n=n||[],e)R(e[t])||C(e[t])?-1===n.indexOf(e[t])&&n.push(e[t]):P(e[t])||G(e[t],n);return n},Y={array:function(e){return t[e]||(t[e]=[]),t[e].slice()}};I().forEach(function(e){Y[e]=function(){return Y.array(e)}}),Y.hrefArray=function(){var n=[];return A?n:(I().forEach(function(e){n=n.concat(Y[e]())}),e.deduplicateString(n))},Y[c]=function(){var e=[];return G(t[c],e),e},Y[f]=function(){var e=t[f],n=[],r=function(e){R(e.element)||C(e.element)?-1===n.indexOf(e.element)&&n.push(e.element):G(e.element,n)};for(var o in e){if(!Array.isArray(e[o]))return void T("Trash contains a non-array element");e[o].forEach(r)}return n},Y[v]=function(){var e=[];return t[v]?(t[v].forEach(function(n){n.href&&-1===e.indexOf(n.href)&&e.push(n.href)}),e):e},Y[y]=function(){return t[y]?Object.keys(t[y]).map(Number).filter(Boolean):[]},Y[p]=function(){return t[p]?Object.keys(t[p]).map(Number).filter(Boolean):[]},Y[d]=function(){return t[d]?Object.keys(t[d]).map(Number).filter(Boolean):[]};var J=i.getFiles=function(n){var t=[];return n&&n.length||(n=[c,"hrefArray",f,v,p,d]),n.forEach(function(e){"function"==typeof Y[e]&&(t=t.concat(Y[e]()))}),e.deduplicateString(t)},q=i.getIdFromHref=function(e){var r,o=function(e){if(e)return n.parsePadUrl(e).getUrl().replace(/\/p\/?/,"/")},a=o(e);return J([p]).some(function(e){if(o(S(t[p][e]))===a||o(t[p][e].roHref)===a)return r=e,!0}),r};i.getSFIdFromHref=function(e){var r,o=function(e){if(e)return n.parsePadUrl(e).getUrl().replace(/\/p\/?/,"/")},a=o(e);return J([d]).some(function(e){if(o(S(t[d][e]))===a||o(t[d][e].roHref)===a)return r=e,!0}),r};var W=function(e,n){if(!K(e,[c,f]))return[];n=Array.isArray(n)?n:[n];var t={},r=V(e),o=function(e){Object.keys(e).forEach(n=>{t[n]||=[],Array.prototype.push.apply(t[n],e[n])})};if(R(r)||C(r))return n.some(n=>{x(n,r)&&(t[n]||=[],t[n].push(e))}),t;if(k(r))for(var a in r){let t=e.slice();t.push(a),o(W(t,n))}return t},z=function(e,n){if(A)return{};if(!t[e])return{};var r=t[e].slice(),o={},a=-1;return n.forEach(n=>{for(;-1!==(a=r.indexOf(n,a+1));)o[n]||=[],o[n].push([e,a])}),o},Q=function(e,n){if(A)return[];var t=V(e),r={},o=function(e){Object.keys(e).forEach(n=>{r[n]||=[],Array.prototype.push.apply(r[n],e[n])})};if(1===e.length&&"object"==typeof t&&Object.keys(t).forEach(function(r){var a=t[r];if(Array.isArray(a)){var i=e.slice();i.push(r),o(Q(i,n))}}),2===e.length){if(!Array.isArray(t))return[];t.forEach(function(t,a){var i=e.slice();i.push(a),i.push("element"),R(t.element)?n.some(e=>{x(e,t.element)&&(r[e]||=[],r[e].push(i))}):o(Q(i,n))})}return e.length>=4&&o(W(e,n)),r},X=i.findFiles=function(e){var n=W([c],e),t=z(l,e),r=Q([f],e);let o={};return e.forEach(e=>{o[e]=[]}),[n,t,r].forEach(e=>{Object.keys(e).forEach(n=>{o[n]||=[],Array.prototype.push.apply(o[n],e[n])})}),o},Z=i.findFile=function(e){return X([e])[e]||[]};i.findChannels=function(e,n){var r=t[p],o=t[d],a=[p];return n&&a.push(d),J(a).filter(function(n){var t=r[n]||o[n]||{};return-1!==e.indexOf(t.channel)})},i.search=function(r){if("string"!=typeof r)return[];r=r.trim();var o,a=[],s=t[p],u=t[d],f=r.toLowerCase();/^#/.test(f)&&(o=[f.slice(1).trim()]);J([p,d]).forEach(function(e){var n=s[e]||u[e];if(n)if(Array.isArray(n.tags)&&(t=n.tags,o&&t.length&&(t=t.map(function(e){return e.toLowerCase()}),o.some(function(e){return t.some(function(n){return n===e})}))))a.push(e);else{var t,r=n.title||n.lastTitle;(r&&-1!==r.toLowerCase().indexOf(f)||n.filename&&-1!==n.filename.toLowerCase().indexOf(f))&&a.push(e)}});var l=n.getRelativeHref(r);if(l){var h=q(l);h&&a.push(h)}a=e.deduplicateString(a);var v=[];a.forEach(function(e){v.push({id:e,paths:Z(e),data:i.getFileData(e)})});var y=[],m=function(e,n){for(var t in e)k(e[t])&&!C(e[t])&&(-1!==t.toLowerCase().indexOf(f)&&y.push({id:null,paths:[n.concat(t)],data:{title:t}}),m(e[t],n.concat(t)))};return m(t[c],[c]),y=y.sort(function(e,n){return e.data.title.toLowerCase()>n.data.title.toLowerCase()}),v=y.concat(v)},i.getRecentPads=function(){var e=t[p];return Object.keys(e).filter(function(n){return e[n]}).sort(function(n,t){return e[t].atime-e[n].atime}).map(function(e){return Number(e)})},i.getOwnedPads=function(e){var n=t[p];return Object.keys(n).filter(function(t){return n[t].owners&&-1!==n[t].owners.indexOf(e)}).map(function(e){return Number(e)})};var $=i.getAvailableName=function(e,n){if(void 0===e[n])return n;for(var t=n,r=1;void 0!==e[t];)t=n+"_"+r,r++;return t},ee=i.move=function(e,n,t){if(g)g.query("Q_DRIVE_USEROBJECT",{cmd:"move",data:{paths:e,newPath:n}},t);else{var r=[],o=null;e.forEach(function(e){var t=e.slice();if(t.pop(),!H(t,n))if(j(n,e))w(a.fo_moveFolderToChildError);else{var s=i.copyElement(e.slice(),n);!0===s?r.push(e):s&&"E_DUPLICATE_FOLDER_NAME"===s.error&&(o||(o=s))}}),i.delete(r,function(e){e||o?t(e||o):"function"==typeof t&&t()})}};return i.restore=function(e,n){if(g)g.query("Q_DRIVE_USEROBJECT",{cmd:"restore",data:{path:e}},n);else if(U(e)){var t=e.slice();t.pop();var r=V(t).path;ee([e],r,n)}},i.addFolder=function(e,n,t){if(g)g.query("Q_DRIVE_USEROBJECT",{cmd:"addFolder",data:{path:e,name:n}},t);else{var r=V(e),o=n||E;if(o===E||void 0===r[o]){var i=$(r,o);r[i]={};var s=e.slice();s.push(i),t({newPath:s})}else t({error:"E_DUPLICATE_FOLDER_NAME",folderName:o,message:a.fo_unavailableName})}},i.delete=function(e,n,t){g?g.query("Q_DRIVE_USEROBJECT",{cmd:"delete",data:{paths:e,nocheck:t}},n):(n=n||function(){},i.deleteMultiplePermanently(e,t,n))},i.emptyTrash=function(e){e=e||function(){},g?g.query("Q_DRIVE_USEROBJECT",{cmd:"emptyTrash"},e):(t[f]={},i.checkDeletedFiles(e))},i.ownedInTrash=function(e){return J([f]).map(function(n){var r=C(n)?t[d][n]:i.getFileData(n);if(r)return e(r.owners)?r.channel:void 0}).filter(Boolean)},i.rename=function(e,n,r){if(r=r||function(){},g)g.query("Q_DRIVE_USEROBJECT",{cmd:"rename",data:{path:e,newName:n}},r);else if(e.length<=1)D("Renaming `root` is forbidden");else{var o,i=V(e);if(k(i)&&!C(i)){var s=e.slice(),c=s.pop();if(!n||!n.trim()||c===n)return;var u=V(s);return void 0!==u[n]?"function"==typeof r?void r({error:"E_DUPLICATE_FOLDER_NAME",folderName:n,message:a.fo_unavailableName}):void 0:(u[n]=i,delete u[c],void("function"==typeof r&&r()))}if(o=C(i)?t[d][i]:t[p][i]||t[y][i])return t[y][i]?n&&n.trim()?(o.name=n,void r()):void r():n&&""!==n.trim()?void(L(i,"name")!==n&&(o.filename=n,"function"==typeof r&&r())):(delete o.filename,void("function"==typeof r&&r()))}},i.getTagsList=function(){var e,n={},r=function(e){n[e]=n[e]?++n[e]:1};for(var o in t[p])(e=t[p][o]).tags&&Array.isArray(e.tags)&&e.tags.forEach(r);return n},i},s};e.exports&&(e.exports=n(X(),te(),G(),Ke(),M(),void 0))})()}(Fe)),Fe.exports}var Be,Ve,Ge,Ye,Je={exports:{}};function qe(){return Be||(Be=1,function(e){e.exports=function(e){var n,t=[],r=[],o=0,a=function(e){return o++,function(){for(e&&e.apply(null,arguments),o=(o||1)-1;!o&&t.length&&!n;)t.shift()(a)}};a.abort=function(){r.forEach(clearTimeout),n=1};var i={nThen:function(e){return n||(o?t.push(e):e(a)),i},orTimeout:function(e,s){if(n)return i;if(!s)throw Error("Must specify milliseconds to orTimeout()");var c,u=setTimeout(function(){for(;t.shift()!==c;);for(e(a),o=(o||1)-1;!o&&t.length;)t.shift()(a)},s);return t.push(c=function(){var e=r.indexOf(u);if(e>-1)return r.splice(e,1),void clearTimeout(u);throw new Error("timeout not listed in array")}),r.push(u),i}};return i.nThen(e)}}(Je)),Je.exports}function We(){if(Ge)return Ve;Ge=1;return Ve=((e,n,t,r,o,a,i,s)=>{var c={},u={};return c.checkMigration=function(e,t,r,o){var a=n.once(n.mkAsync(o));if(t)if(e)if(t.version>=2)a();else if(t.migrateRo){var i,s=!1,c=setInterval(function(){if(t.version>=2)return s=!0,clearTimeout(i),clearInterval(c),void a()},100);i=setTimeout(function(){clearInterval(c),r.migrateReadOnly(function(){s=!0,a()})},2e4);t.on("change",["version"],function(){s||t.version>=2&&(s=!0,clearTimeout(i),clearInterval(c),a())})}else r.migrateReadOnly(a);else a();else a()},c.migrate=function(e){var t=u[e];if(t){var r=t.teams;if(Array.isArray(r)&&r.length){var o=r[0];if(o.secondaryKey){var a=n.find(o,["store","manager","folders",o.id]);a&&a.proxy&&!a.proxy.version&&a.userObject.migrateReadOnly(function(){r.forEach(function(e){n.find(e,["store","manager","folders",e.id,"userObject"]).setReadOnly(!1,e.secondarykey)})})}}}},c.load=function(t,f,l,d){var h=n.once(n.mkAsync(d)),p=t.network,v=t.store,y=t.isNew,m=t.isNewChannel,g=v.id,E=v.handleSharedFolder,b=v.manager.user.userObject.getHref(l),A=e.parsePadUrl(b),O=e.getSecrets("drive",A.hash,l.password);if(!O.keys)return v.manager.deprecateProxy(f),void h(null);var w=O.keys.secondaryKey;o(function(e){t.cache&&r.getChannelCache(O.channel,e(function(n){if("EINVAL"===n)return e.abort(),v.manager.restrictedProxy(f,O.channel),void h(null)}))}).nThen(function(e){m(null,{channel:O.channel},e(function(n){if(n.isNew&&!y)return v.manager.deprecateProxy(f,O.channel,n.reason),e.abort(),void h(null)}))}).nThen(function(){var e=u[O.channel];if(e&&e.readOnly&&w&&c.upgrade(O.channel,O),e&&e.ready&&e.rt)return setTimeout(function(){v.manager.addProxy(f,e.rt,function(){c.leave(O.channel,g)},w),h(e.rt)}),e.teams.push({cb:h,store:v,id:f}),void(E&&E(f,e.rt));if(e&&!e.ready&&e.rt)return e.teams.push({cb:h,store:v,secondaryKey:w,id:f}),void(E&&E(f,e.rt));e=u[O.channel]={teams:[{cb:h,store:v,secondaryKey:w,id:f}],readOnly:!Boolean(w)};var n=l.owners,o={data:{},channel:O.channel,readOnly:!Boolean(w),crypto:a.createEncryptor(O.keys),userName:"sharedFolder",logLevel:1,ChainPad:s,classic:!0,network:p,Cache:r,metadata:{validateKey:O.keys.validateKey||void 0,owners:n},onRejected:t.Store&&t.Store.onRejected},d=e.rt=i.create(o);d.proxy.on("cacheready",function(){e.teams&&(e.teams.forEach(function(n){d.cache=!0,n.store.manager.addProxy(n.id,d,function(){c.leave(O.channel,n.store.id)},n.secondaryKey,t.updatePassword),t.updatePassword=!1,n.cb(e.rt)}),e.ready=!0)}),d.proxy.on("ready",function(){y&&!Object.keys(d.proxy).length&&(d.proxy.version=2),e.teams&&(e.teams.forEach(function(n){d.cache=!1,n.store.manager.addProxy(n.id,d,function(){c.leave(O.channel,n.store.id)},n.secondaryKey,t.updatePassword),n.cb(e.rt)}),e.ready=!0)}),d.proxy.on("error",function(n){if(n&&n.error){if("EDELETED"===n.error){try{e.teams.forEach(function(e){e.store.manager.deprecateProxy(e.id,O.channel,n.message),e.store.handleSharedFolder&&e.store.handleSharedFolder(e.id,null),e.cb()})}catch(e){}return delete u[O.channel],void h()}if("ERESTRICTED"===n.error)return e.teams.forEach(function(e){e.store.manager.restrictedProxy(e.id,O.channel),e.cb()}),delete u[O.channel],void h()}}),E&&E(f,d)})},c.upgrade=function(e,n){var t=u[e];if(t&&t.readOnly&&t.rt.setReadOnly&&n.keys&&n.keys.editKeyStr){var r=a.createEncryptor(n.keys);t.readOnly=!1,t.rt.setReadOnly(!1,r)}},c.leave=function(e,n){var t=u[e];if(t){var r,o=t.teams;if(Array.isArray(o))o.some(function(e,t){if(e.store.id===n)return e.store.handleSharedFolder&&e.store.handleSharedFolder(e.id,null),r=t,!0}),void 0!==r&&(o.splice(r,1),o.length||t.rt&&t.rt.stop&&t.rt.stop())}},c.updatePassword=function(r,a,i,s){var f=a.oldChannel,l=a.href,d=a.password,h=e.parsePadUrl(l),p=e.getSecrets(h.type,h.hash,d),v=u[f];if(v){if(v.rt&&v.rt.stop)try{v.rt.stop()}catch(e){}var y=o;v.teams.forEach(function(e){y=y(function(o){var a=e.store,s=e.id,u=n.find(a.proxy,["drive",t.SHARED_FOLDERS])||{};if(s&&u[s]){var l=JSON.parse(JSON.stringify(u[s]));l.password=d,c.load({network:i,store:a,updatePassword:!0,Store:r,isNewChannel:r.isNewChannel},s,l,o()),a.rpc&&(a.rpc.unpin([f],o()),a.rpc.pin([p.channel],o()))}}).nThen}),y(function(){s()})}else s({error:"ENOTFOUND"})},c.loadSharedFolders=function(e,n,r,a,i,s,u,f){var l=a[t.SHARED_FOLDERS]||{},d=Object.keys(l).length,h=1,p=s();u=u||function(){},o(function(t){Object.keys(l).forEach(function(o){var a=l[o];c.load({network:n,store:r,Store:e,cache:f,isNewChannel:e.isNewChannel},o,a,t(function(){u({progress:h,max:d}),h++}))})}).nThen(function(){setTimeout(p)})},c.isSharedFolderChannel=function(e){return Object.keys(u).includes(e)},c})(te(),X(),Ue(),fe(),qe(),M(),T(),x()),Ve}function ze(){return Ye||(Ye=1,function(e){(()=>{const n=(e,n,t,r={},o,a,i={})=>{var s=function(n,t,r,o,a,i){if(!n.folders[t]||i||n.folders[t].restricted){var s=function(e){var n={};for(var t in e.cfg)n[t]=e.cfg[t];return n}(n);s.sharedFolder=!0,s.id=t,s.editKey=a,s.rt=r.realtime,s.readOnly=Boolean(!a);var c=e.init(r.proxy,s);c.fixFiles&&c.fixFiles();var u=r.proxy;if(u.metadata&&u.metadata.title){var f=n.user.proxy[e.SHARED_FOLDERS][t];f&&(f.lastTitle=u.metadata.title)}return n.folders[t]={proxy:r.proxy,userObject:c,leave:o,restricted:u.restricted,offline:Boolean(r.cache)},u.on&&(u.on("disconnect",function(){n.folders[t].offline=!0}),u.on("reconnect",function(){n.folders[t].offline=!1})),c}n.folders[t].offline&&!r.cache&&n.Store&&(n.folders[t].offline=!1,n.folders[t].userObject.fixFiles&&n.folders[t].userObject.fixFiles(),n.Store.refreshDriveUI())},c=function(e,n){var t=e.folders[n];t&&(t.leave(),delete e.folders[n])},u=function(t,r,o,a){if(!t.folders[r]||!t.folders[r].deleting){if(t.user.userObject.readOnly||!a){return c(t,r),s(t,r,{proxy:{deprecated:!0}},function(){}),void t.Store.refreshDriveUI()}if(o&&t.unpinPads([o],function(){}),a&&"PASSWORD_CHANGE"!==a){let o=n.find(t,["user","proxy",e.SHARED_FOLDERS]),a=o[r]&&o[r].lastTitle;return a&&((e,n,t)=>{var r=e.store.mailbox;if(r){var o,a=e.cfg.teamId;o=a?e.store.modules.team.getTeamsData()[a]:e.Store.getMetadata(null,null,()=>{}).user,r.sendTo("SF_DELETED",{sfId:n,team:a,title:t},{curvePublic:o.curvePublic,channel:o.notifications},e=>{console.error(e)})}})(t,r,a),delete o[r],void(t.Store&&t.Store.refreshDriveUI&&t.Store.refreshDriveUI())}t.user.userObject.deprecateSharedFolder(r,a),c(t,r),t.Store&&t.Store.refreshDriveUI&&t.Store.refreshDriveUI()}},f=function(e,n){c(e,n),s(e,n,{proxy:{restricted:!0,root:{},filesData:{}}},function(){}),e.Store.refreshDriveUI()},l=function(e,n){return Array.isArray(n)&&-1!==n.indexOf(e.edPublic)},d=function(e){var n=[e.user.userObject],t=Object.keys(e.folders).map(function(n){return e.folders[n].userObject});return Array.prototype.push.apply(n,t),n},h=function(e,n){var t=d(e),r=e.user.userObject;return t.some(function(e){if(Object.keys(e.getFileData(n)).length)return r=e,!0}),r},p=function(e,n){var t=Number(n.id);if(t)return e.user.userObject.findFile(t)[0]},v=function(n,t,r){var o=[];return n.user.userObject.findChannels([t],!0).forEach(function(t){var a=n.user.proxy[e.SHARED_FOLDERS][t];a&&!r&&(a=JSON.parse(JSON.stringify(a))),a||(a=n.user.userObject.getFileData(t,r)),o.push({id:t,data:a,userObject:n.user.userObject})}),Object.keys(n.folders).forEach(function(e){n.folders[e].userObject.findChannels([t]).forEach(function(t){o.push({id:t,fId:e,data:n.folders[e].userObject.getFileData(t,r),userObject:n.folders[e].userObject})})}),o},y=function(e,n){var t=[],r=e.user.userObject.getIdFromHref(n);return r&&t.push({data:e.user.userObject.getFileData(r),userObject:e.user.userObject}),Object.keys(e.folders).forEach(function(r){var o=e.folders[r].userObject.getIdFromHref(n);o&&t.push({fId:r,data:e.folders[r].userObject.getFileData(o),userObject:e.folders[r].userObject})}),t},m=function(e,n){var t=[],r=d(e);let o={};return r.forEach(function(e){var a=Number(e.id);let i;if(a){i=e.findFile(n);let t=(o[a]||[])[0];if(!t)return;i.forEach(function(e){Array.prototype.unshift.apply(e,t)})}else{let t=[n],a=r.map(e=>+e.id).filter(Boolean);Array.prototype.push.apply(t,a),o=e.findFiles(t),i=o[n]}Array.prototype.push.apply(t,i)}),t},g=function(e,n){var t={},r=d(e);let o={};return r.forEach(function(e){var a=Number(e.id);if(!e.id){let e=r.map(e=>+e.id).filter(Boolean);Array.prototype.push.apply(n,e)}var i=e.findFiles(n);if(e.id||(o=i),a){let e=(o[a]||[])[0];if(!e)return;Object.keys(i).forEach(n=>{i[n].forEach(n=>{Array.prototype.unshift.apply(n,e)})})}Object.keys(i).forEach(e=>{t[e]||=[],Array.prototype.push.apply(t[e],i[e])})}),t},E=function(e,t,r){if(r)return e.user.userObject.findChannels(t);var o=[];return d(e).forEach(function(e){var n=e.findChannels(t);Array.prototype.push.apply(o,n)}),o=n.deduplicateString(o)},b=function(e,n,t){var r=d(e),o={};return r.some(function(e){if((o=e.getFileData(n,t))&&Object.keys(o).length)return!0}),o},A=function(t,r){var o;if(t.isHistoryMode&&!t.folders[r])o=!0;else if(!t.folders[r])return{};var a=o?{}:t.folders[r].proxy;Object.keys(a.metadata||{}).length>1&&(a.metadata={title:a.metadata.title});var i=n.clone(a.metadata||{});for(var s in t.user.proxy[e.SHARED_FOLDERS][r]||{})if(void 0!==t.user.proxy[e.SHARED_FOLDERS][r][s]){var c=n.clone(t.user.proxy[e.SHARED_FOLDERS][r][s]);if("href"===s&&-1===c.indexOf("#"))try{c=t.user.userObject.cryptor.decrypt(c)}catch(e){}"href"===s&&-1===c.indexOf("#")&&(c=void 0),i[s]=c}return i},O=function(e,n){var t,r={id:null,userObject:e.user.userObject,path:n};if(!Array.isArray(n)||n.length<=1)return r;for(var o=e.user.userObject,a=2;a=2?t[1]:t[t.length-1];if(o.isFile(c))u.push(c);else if(o.isSharedFolder(c)){u.push(c);var l=e.folders[c].proxy.metadata||{};l&&(f=l.title)}else{try{c=JSON.parse(JSON.stringify(c))}catch(e){return}o.getFilesRecursively(c,u)}if(u.some(function(e){return o.isSharedFolder(e)}))return e.cfg&&e.cfg.log&&e.cfg.log(r._getKey("fm_moveNestedSF",[f])),void i.unshift(s);u=n.deduplicateString(u);var d={};u.forEach(function(e){d[e]=o.getFileData(e)}),a.push({el:c,data:d,key:f})}),i.forEach(function(e){t.splice(e,1)}),a},S=function(e,n){var r;return v(e,n).some(function(e){if(e&&e.data&&e.data.href){var n=t.parsePadUrl(e.data.href),o=n.hashData;if(o&&"view"!==o.mode)return r=n.hash,!0}}),r},N=function(e,n,t){var r=w(e,n.paths),o=O(e,n.newPath),i=n.copy;if(o.userObject.isFolder(o.path)){var s=null;a(function(n){if(r.main.length)if(o.id){var t=T(e,r.main,e.user.userObject),a=o.userObject;if(t.forEach(function(e){try{a.copyFromOtherDrive(o.path,e.el,e.data,e.key)}catch(e){s||(s=e)}}),i)return;r.main.length&&!s&&e.user.userObject.delete(r.main,n())}else e.user.userObject.move(r.main,o.path,n(function(e){e&&!s&&(s=e)}));var c=Object.keys(r.folders);c.length&&c.forEach(function(t){var a=Number(t),c=r.folders[a];if(o.id===a)o.userObject.move(c,o.path,n(function(e){e&&!s&&(s=e)}));else{var u=e.folders[a].userObject,f=o.userObject;if(T(e,c,u).forEach(function(e){try{f.copyFromOtherDrive(o.path,e.el,e.data,e.key)}catch(e){s||(s=e)}}),i)return;s||u.delete(c,n())}})}).nThen(function(){s?t(s):t()})}else t()},I=function(n,o,s){var c=O(n,(o=o||{}).path);if(c&&c.userObject)if(c.id)s({error:"EINVAL"});else if(n.pinPads){var u,f=o.folderData||{};a(function(){if(!o.folderData){var e=t.createRandomHash("drive",o.password),r=t.getSecrets("drive",e,o.password),a=t.getHashes(r);f={href:"/drive/#"+a.editHash,roHref:"/drive/#"+a.viewHash,channel:r.channel,lastTitle:o.name,ctime:+new Date},o.password&&(f.password=o.password),o.owned&&(f.owners=[n.edPublic])}}).nThen(function(e){n.Store.pad.getMetadata(null,{channel:f.channel},e(function(n){if(n&&(n.error||n.rejected))return e.abort(),void s({error:n.error||"ERESTRICTED"})}))}).nThen(function(e){n.pinPads([f.channel],e())}).nThen(function(e){n.user.userObject.pushSharedFolder(f,e(function(r,o){if("EEXISTS"===r&&f.href&&o){var a=t.parsePadUrl(f.href),c=t.getSecrets("drive",a.hash,f.password);return i.upgrade(c.channel,c),n.folders[o]&&n.folders[o].userObject.setReadOnly(!1,c.keys.secondaryKey),e.abort(),void s(o)}return"EEXISTS"===r&&o?(e.abort(),void s(o)):r?(e.abort(),void s(r)):void(u=o)}))}).nThen(function(t){n.user.userObject.add(u,c.path),n.loadSharedFolder(u,f,t(function(a){if(!a)return t.abort(),void s({error:"EDELETED"});a.proxy.metadata||(a.proxy.metadata={title:o.name||r.fm_newFolder}),o.folderData&&n.Store.pad.getMetadata(null,{channel:f.channel},function(t){var r=n.user.proxy[e.SHARED_FOLDERS][u];t.owners&&(r.owners=t.owners),t.expire&&(r.expire=+t.expire)})}),!Boolean(o.folderData))}).nThen(function(){n.onSync(function(){s(u)})})}else s({error:"EAUTH"});else s({error:"E_NOTFOUND"})},x=function(r,o,i){var s=(o=o||{}).resolved||w(r,o.paths);if(s.main.length||Object.keys(s.folders).length){if(o.paths&&1===o.paths.length&&o.paths[0][0]===e.SHARED_FOLDERS_TEMP)return delete n.find(r,["user","proxy",e.SHARED_FOLDERS_TEMP])[o.paths[0][1]],void r.onSync(i);var c=[];a(function(t){if(s.main.length){var o=r.user.userObject;n.find(r.settings,["drive","hideDuplicate"])&&s.main.forEach(function(n){var t=o.find(n);if(n[0]!==e.FILES_DATA&&!o.isFile(t)&&!o.isSharedFolder(t)){var a=[];o.getFilesRecursively(t,a),a.forEach(function(n){_(r,null,n)&&r.user.userObject.add(Number(n),[e.ROOT])})}}),o.delete(s.main,t(function(e,n){r.unpinPads&&n&&Array.prototype.push.apply(c,n)}))}}).nThen(function(e){Object.keys(s.folders).forEach(function(n){r.folders[n].userObject.delete(s.folders[n],e(function(e,n){r.unpinPads&&n&&Array.prototype.push.apply(c,n)}))})}).nThen(function(e){if(r.unpinPads){c=n.deduplicateString(c);var o=[];E(r,c).forEach(function(e){var n=b(r,e),a=[n.channel];n.answersChannel&&a.push(n.answersChannel),n.rtChannel&&a.push(n.rtChannel),n.lastVersion&&a.push(t.hrefToHexChannelId(n.lastVersion)),Array.prototype.push.apply(o,a)});var a=[];c.forEach(function(e){-1===o.indexOf(e)&&(a.push(e),r.Store.checkDeletedPad(e))}),r.unpinPads(a,e(function(e){if(e&&e.error)return console.error(e.error)}))}}).nThen(function(){i()})}else i({error:"E_NOTFOUND"})},C=function(t,r,i){var s=w(t,(r=r||{}).paths||[]);if(r.channel||s.main.length||Object.keys(s.folders).length){var c={main:[],folders:{}},u=function(r,a,i,s){var u,f=n.once(n.mkAsync(s)),l=r;if(!l&&a){var d=a.find(i);if(!a.isFile(d)&&!a.isSharedFolder(d))return;var h=a.isFile(d)?a.getFileData(d):A(t,d);l=h.channel}Object.keys(t.user.proxy[e.SHARED_FOLDERS]||{}).some(function(n){if((t.user.proxy[e.SHARED_FOLDERS][n]||{}).channel===l)return u=Number(n),t.folders[n].deleting=!0,!0}),t.removeOwnedChannel(l,function(e){if(e&&e.error&&"ENOENT"!==e.error)return u&&t.folders[u]&&t.folders[u].deleting&&delete t.folders[u].deleting,o.send("ERROR_DELETING_OWNED_PAD="+l+"|"+e.error,!0),void f();var n=E(t,[l]);if(u&&n.push(u),!n.length)return c=void 0,void f();n.forEach(function(e){var n=m(t,e),r=w(t,n);Array.prototype.push.apply(c.main,r.main),Object.keys(r.folders).forEach(function(e){c.folders[e]?Array.prototype.push.apply(c.folders[e],r.folders[e]):c.folders[e]=r.folders[e]})}),f()})};a(function(e){r.channel&&u(r.channel,null,null,e()),s.main.forEach(function(n){u(null,t.user.userObject,n,e())}),Object.keys(s.folders).forEach(function(n){var r=t.folders[n].userObject;s.folders[n].forEach(function(n){u(null,r,n,e())})})}).nThen(function(){c?x(t,{resolved:c},i):i(),r.channel&&t.Store.refreshDriveUI()})}else i({error:"E_NOTFOUND"})},R={move:N,restore:function(e,n,t){n=n||{},e.user.userObject.restore(n.path,t)},addFolder:function(e,n,t){var r=O(e,(n=n||{}).path);r&&r.userObject?r.userObject.addFolder(r.path,n.name,function(n){if(n.newPath&&r.id){var o=p(e,r.userObject);o&&Array.prototype.unshift.apply(n.newPath,o)}t(n)}):t({error:"E_NOTFOUND"})},addSharedFolder:I,addLink:function(e,n,t){var r=O(e,(n=n||{}).path);if(r&&r.userObject){var o=r.userObject,a=+new Date;o.pushLink({name:n.name,href:n.href,atime:a,ctime:a},function(n,a){n?t({error:n}):(o.add(a,r.path),e.onSync(t))})}else t({error:"E_NOTFOUND"})},restoreSharedFolder:function(r,o,i){var s=o.id,c=o.password,u=n.find(r,["user","proxy",e.SHARED_FOLDERS_TEMP]),f=u&&u[s];if(f)if(r.Store){var l=r.user.userObject.getHref?r.user.userObject.getHref(f):f.href,d=!1;a(function(e){r.Store.isNewChannel(null,{href:l,password:c},e(function(e){d=!(!e||e.error)&&e.isNew}))}).nThen(function(){if(d)i({error:"ENOTFOUND"});else{var e=n.clone(f),o=t.parsePadUrl(l),a=t.getSecrets(o.type,o.hash,c);e.password=c,e.channel=a.channel,a.keys.editKeyStr&&(e.href="/drive/#"+t.getEditHashFromKeys(a)),e.roHref="/drive/#"+t.getViewHashFromKeys(a),delete e.legacy,I(r,{path:["root"],folderData:e},function(){delete u[s],r.onSync(i)})}})}else i({error:"ESTORE"});else i({error:"EINVAL"})},convertFolderToSharedFolder:function(n,t,r){var o=t.path,i=n.user.userObject.find(o);if(o.length<=1||o[0]!==e.ROOT)r({error:"E_INVAL_PATH"});else if(D(n,o))r({error:"E_INVAL_NESTING"});else if(n.user.userObject.hasSubSharedFolder(i))r({error:"E_INVAL_NESTING"});else{var s,c=o.slice(0,-1),u=n.user.userObject.find(c),f=o[o.length-1];a(function(e){I(n,{path:c,name:f,owned:t.owned,password:t.password||""},e(function(n){if("object"==typeof n&&n&&n.error)return e.abort(),void r(n);s=n}))}).nThen(function(t){if(!s)return t.abort(),void r({error:"E_NO_ID"});var a,f=[];for(var l in i)(n.user.userObject.isFolder(i[l])||n.user.userObject.isFile(i[l]))&&f.push(o.concat(l));if(Object.keys(u).some(function(e){if(u[e]===s)return a=e,!0}),!a)return t.abort(),void r({error:"E_NO_KEY"});var d=c.concat(a).concat(e.ROOT);N(n,{paths:f,newPath:d,copy:!1},t())}).nThen(function(t){var r=[];Object.keys(i).forEach(function(e){if(n.user.userObject.isFile(i[e])){var t=n.user.userObject.getFileData(i[e]);t&&l(n,t.owners)&&r.push(o.concat(e))}}),N(n,{paths:r,newPath:[e.ROOT],copy:!1},t())}).nThen(function(){var t=n.user.proxy[e.SHARED_FOLDERS][s],a=n.user.userObject.getFolderData(i);for(var c in a)"metadata"!==c&&(t[c]=a[c]);n.user.userObject.delete([o],function(){r({fId:s})})})}},delete:x,deleteOwned:C,emptyTrash:function(e,t,r){a(function(r){if(t&&t.deleteOwned){var i=e.user.userObject.ownedInTrash(function(n){return l(e,n)}),s=a;i.forEach(function(n){s=s(function(t){e.removeOwnedChannel(n,t(function(e){setTimeout(t(),50),e&&e.error&&"ENOENT"!==e.error&&(console.error(e.error,n),o.send("ERROR_EMPTYTRASH_OWNED="+n+"|"+e.error,!0)),console.warn("DELETED",n)}))}).nThen}),s(r())}e.user.userObject.emptyTrash(r(function(t,o){var i=a;setTimeout(r(function(){if(Array.isArray(o)){var t=r(),a=n.deduplicateString(o),s=[];a.forEach(function(n){i=i(function(t){v(e,n,!0).length||s.push(n),e.Store.checkDeletedPad(n,t())}).nThen}),i(function(){e.unpinPads(s,function(){t()})})}}))}))}).nThen(r)},rename:function(n,t,o){var a=O(n,(t=t||{}).path);if(a&&a.userObject){if(!a.id){var i=n.user.userObject.find(a.path);if(n.user.userObject.isSharedFolder(i)&&n.folders[i])return n.folders[i].proxy.metadata.title=t.newName||r.fm_folder,n.user.proxy[e.SHARED_FOLDERS][i].lastTitle=t.newName||r.fm_folder,void o()}a.userObject.rename(a.path,t.newName,o)}else o({error:"E_NOTFOUND"})},setFolderData:function(n,t,r){var o=O(n,(t=t||{}).path);if(o&&o.userObject){if(!o.id){var a=n.user.userObject.find(o.path);if(n.user.userObject.isSharedFolder(a)&&n.folders[a])return n.user.proxy[e.SHARED_FOLDERS][a][t.key]=t.value,void n.onSync(r)}o.userObject.setFolderData(o.path,t.key,t.value,function(){n.onSync(r)})}else r({error:"E_NOTFOUND"})},updateStaticAccess:function(e,n,t){h(e,n).getFileData(n,!0).atime=+new Date,e.onSync(t)}},P=function(e,n,t){var r=n.cmd,o=n.data||{},a=R[r];"function"!=typeof a?t():a(e,o,t)},k=function(n,t,r){if(r=r||function(){},t.attr&&t.attr.trim()){var o=n.user.userObject.getSFIdFromHref(t.href);o&&("href"===t.attr&&(t.value=n.user.userObject.cryptor.encrypt(t.value)),n.user.proxy[e.SHARED_FOLDERS][o][t.attr]=t.value);var i=y(n,t.href),s=a;i.forEach(function(e){s=s(function(n){e.userObject.setPadAttribute(t.href,t.attr,t.value,n())}).nThen}),s(function(){r()})}else r("E_INVAL_ATTR")},M=function(e,n,t){t=t||function(){};var r=e.user.userObject.getSFIdFromHref(n.href);if(r){var o=A(e,r),a=n.attr?o[n.attr]:JSON.parse(JSON.stringify(o));setTimeout(function(){t(null,{value:a,atime:1})})}else{var i=y(e,n.href),s={};i.forEach(function(e){var t=e.data.atime,r=n.attr?e.data[n.attr]:JSON.parse(JSON.stringify(e.data));(!s.value||s.atimeo.add(e)),o.add(r.channel)}}:void 0}(a))}),"owned"===r)&&Object.keys(n.user.proxy[e.SHARED_FOLDERS]).filter(function(t){var r=n.user.proxy[e.SHARED_FOLDERS][t].owners;if(l(n,r))return!0}).map(function(t){return n.user.proxy[e.SHARED_FOLDERS][t].channel}).forEach(e=>o.add(e));"pin"===r&&Object.keys(n.folders).map(function(t){try{return n.user.proxy[e.SHARED_FOLDERS][t].channel}catch(e){console.error(e)}}).filter(Boolean).forEach(e=>o.add(e));return function(e){const n=e=>{if("string"==typeof e)return-1!==[32,48].indexOf(e.length)};let t=new Set;for(var r of e)n(r)&&t.add(r);return t}(o)},j=function(e,n,t,r){var o=e.user.userObject,i=["root"];if(n){var s=O(e,n);o=s.userObject,i=s.path}var c=function(){var e;a(function(n){o.pushData(t,n(function(n,t){n?e=n:o.add(t,i)}))}).nThen(function(){r(e)})};if(!e.pinPads)return void c();const u=[t.channel];t.rtChannel&&u.push(t.rtChannel),t.answersChannel&&u.push(t.answersChannel),e.pinPads(u,function(e){e&&e.error?r(e.error):c()})};const K=e=>{const n=d(e),t=[];return n.forEach(function(e){const n=e.getMissingRtChannel();n&&(e.readOnly&&(n._readOnly=!0),t.push(n))}),t};var U=function(e,n,t,r){e.sframeChan.query("Q_DRIVE_USEROBJECT",{cmd:"rename",data:{path:n,newName:t}},function(e,n){e||n?.error?r(e||n):r()})},B=function(e,n,t,r,o){e.sframeChan.query("Q_DRIVE_USEROBJECT",{cmd:"move",data:{paths:n,newPath:t,copy:o}},function(e,n){e||n?.error?r(e||n):r()})},V=function(e,n,t){e.sframeChan.query("Q_DRIVE_USEROBJECT",{cmd:"emptyTrash",data:{deleteOwned:n}},t)},G=function(e,n,t,r){e.sframeChan.query("Q_DRIVE_USEROBJECT",{cmd:"addFolder",data:{path:n,name:t}},r)},Y=function(e,n,t,r){e.sframeChan.query("Q_DRIVE_USEROBJECT",{cmd:"addSharedFolder",data:{path:n,name:t.name,owned:t.owned,password:t.password}},r)},J=function(e,n,t,r){e.sframeChan.query("Q_DRIVE_USEROBJECT",{cmd:"addLink",data:{path:n,name:t.name,href:t.url}},r)},q=function(e,n,t,r){e.sframeChan.query("Q_DRIVE_USEROBJECT",{cmd:"restoreSharedFolder",data:{id:n,password:t}},r)},W=function(e,n,t,r,o){e.sframeChan.query("Q_DRIVE_USEROBJECT",{cmd:"convertFolderToSharedFolder",data:{path:n,owned:t,password:r}},o)},z=function(e,n,t){e.sframeChan.query("Q_DRIVE_USEROBJECT",{cmd:"delete",data:{paths:n}},t)},Q=function(e,n,t){e.sframeChan.query("Q_DRIVE_USEROBJECT",{cmd:"deleteOwned",data:{paths:n}},t)},X=function(e,n,t){e.sframeChan.query("Q_DRIVE_USEROBJECT",{cmd:"restore",data:{path:n}},t)},Z=function(e,n,t){e.sframeChan.query("Q_DRIVE_USEROBJECT",{cmd:"setFolderData",data:n},t)},$=function(e,n,t){e.sframeChan.query("Q_DRIVE_USEROBJECT",{cmd:"updateStaticAccess",data:n},t)},ee=E,ne=b,te=p,re=function(e,n,t){if(t)return e.folders[t].userObject.find(n);var r=O(e,n);return r.userObject.find(r.path)},oe=function(e,n,t){var r=h(e,n);return String(r.getTitle(n,t))},ae=function(e,n){return h(e,n).isStaticFile(n)},ie=function(e,n){return h(e,n).isReadOnlyFile(n)},se=function(e,t){var r=[];return d(e).forEach(function(e){Array.prototype.push.apply(r,e.getFiles(t))}),r=n.deduplicateString(r)},ce=function(e,n){var t=[];return d(e).forEach(function(r){var o=p(e,r),a=r.search(n);a.length&&(o&&a.forEach(function(e){e.inSharedFolder=!0,e.paths.forEach(function(e){Array.prototype.unshift.apply(e,o)})}),Array.prototype.push.apply(t,a))}),t},ue=function(n){var t=[];return d(n).forEach(function(n){var r=n.getFiles([e.FILES_DATA,e.STATIC_DATA]).map(function(e){return[Number(e),n.getFileData(e)]});Array.prototype.push.apply(t,r)}),t.filter(function(e){return e[1].atime}).sort(function(e,n){return n[1].atime-e[1].atime})},fe=function(e){return e.user.userObject.getOwnedPads(e.edPublic)},le=function(e,n){e.isHistoryMode=Boolean(n)},de=function(e,n){var t=O(e,n);if(!t||!t.userObject)return{};if(!t.id){var r=e.user.userObject.find(t.path);if(e.user.userObject.isSharedFolder(r))return A(e,r)}var o=t.userObject.find(t.path);return t.userObject.getFolderData(o)},he=D,pe=function(e,n){return e.user.userObject.isValidDrive(n)},ve=function(e,n,t){return e.user.userObject.isFile(n,t)},ye=function(e,n){return e.user.userObject.isFolder(n)},me=function(e,n){return e.user.userObject.isSharedFolder(n)},ge=function(e,n){if(e.folders[n]){var t=e.folders[n].userObject;return t.isFolderEmpty(t.find[t.ROOT])}return e.user.userObject.isFolderEmpty(n)},Ee=function(e,n,t){return e.user.userObject.isPathIn(n,t)},be=function(e,n,t){return e.user.userObject.isSubpath(n,t)},Ae=function(e,n){return e.user.userObject.isInTrashRoot(n)},Oe=function(e,n,t){return e.user.userObject.comparePath(n,t)},we=function(e,n,t){if(e.folders[n]){var r=e.folders[n].userObject;return r.hasSubfolder(r.find[r.ROOT])}return e.user.userObject.hasSubfolder(n,t)},De=function(e,n){return e.user.userObject.hasSubSharedFolder(n)},_e=function(e,n,t){if(e.folders[n]){var r=e.folders[n].userObject;return r.hasFile(r.find[r.ROOT])}return e.user.userObject.hasFile(n,t)},Te=function(e){return e.user.userObject.ownedInTrash(function(n){return l(e,n)})},Se=_;return{setCustomize:n=>{r=n.Messages,e.setCustomize(n)},create:function(n,t,r){var o={pinPads:t.pin,unpinPads:t.unpin,onSync:t.onSync,Store:t.Store,store:t.store,removeOwnedChannel:t.removeOwnedChannel,loadSharedFolder:t.loadSharedFolder,cfg:r,edPublic:t.edPublic,settings:t.settings,user:{proxy:n},folders:{}};r.removeProxy=function(e){c(o,e)},o.user.userObject=e.init(n,r);var a=function(e){return function(){return[].unshift.call(arguments,o),e.apply(null,arguments)}};let i;const l=()=>{clearTimeout(i),i=setTimeout(()=>{if(o.store.offline)return void l();const e=(e=>{const n=d(e),t=[];return n.forEach(function(e){if(e.readOnly)return;const n=e.findMissingRtChannel();n&&t.push(n)}),t})(o);o.Store.fixMissingRtChannelInterval(e,()=>{l()})},12e4)};return l(),{addProxy:a(s),removeProxy:a(c),deprecateProxy:a(u),restrictedProxy:a(f),addSharedFolder:a(I),addPin:function(e,n){o.pinPads=e,o.unpinPads=n},removePin:function(){delete o.pinPads,delete o.unpinPads},command:a(P),getPadAttribute:a(M),setPadAttribute:a(k),getTagsList:a(F),getSecureFilesList:a(L),getSharedFolderData:a(A),isInSharedFolder:a(D),getChannelsList:a(H),addPad:a(j),delete:a(x),deleteOwned:a(C),findChannel:a(v),findHref:a(y),findFile:a(m),getEditHash:a(S),user:o.user,folders:o.folders,getMissingRtChannel:a(K)}},createInner:function(n,t,r,o){var a={cfg:o,sframeChan:t,edPublic:r,user:{proxy:n,userObject:e.init(n,o)},folders:{}},i=function(e){return function(){return[].unshift.call(arguments,a),e.apply(null,arguments)}};return{addProxy:i(s),removeProxy:i(c),setHistoryMode:i(le),rename:i(U),move:i(B),emptyTrash:i(V),addFolder:i(G),addSharedFolder:i(Y),addLink:i(J),restoreSharedFolder:i(q),convertFolderToSharedFolder:i(W),delete:i(z),deleteOwned:i(Q),restore:i(X),setFolderData:i(Z),updateStaticAccess:i($),getFileData:i(ne),find:i(re),getTitle:i(oe),isReadOnlyFile:i(ie),isStaticFile:i(ae),getFiles:i(se),search:i(ce),getRecentPads:i(ue),getOwnedPads:i(fe),getTagsList:i(F),findFile:i(m),findFiles:i(g),findChannels:i(ee),getSharedFolderData:i(A),getFolderData:i(de),isInSharedFolder:i(he),getUserObjectPath:i(te),isDuplicateOwned:i(Se),ownedInTrash:i(Te),isValidDrive:i(pe),isFile:i(ve),isFolder:i(ye),isSharedFolder:i(me),isFolderEmpty:i(ge),isPathIn:i(Ee),isSubpath:i(be),isInTrashRoot:i(Ae),comparePath:i(Oe),hasSubfolder:i(we),hasSubSharedFolder:i(De),hasFile:i(_e),user:a.user,folders:a.folders}}}};e.exports&&(e.exports=n(Ue(),X(),te(),void 0,Oe(),qe(),We()))})()}(Me)),Me.exports}var Qe,Xe,Ze=ze(),$e=n({__proto__:null,default:r(Ze)},[Ze]),en=Ue(),nn=n({__proto__:null,default:r(en)},[en]),tn={exports:{}},rn={exports:{}};function on(){return Xe||(Xe=1,function(e){e.exports&&(e.exports=((e={},n={},t)=>{let r=[];const o=["sheet","doc","presentation"],a=a=>{e=a.AppConfig;const i=(n=a.ApiConfig).onlyOffice&&n.onlyOffice.availableVersions.includes(t.currentVersion);r=e.availablePadTypes.filter(e=>i||!o.includes(e))};Object.keys(e).length&&a({AppConfig:e,ApiConfig:n});const i={OO_APPS:o,setCustomize:a};return i.__defineGetter__("availableTypes",function(){return n.appsToDisable?r.filter(e=>!n.appsToDisable.includes(e)):r}),i.__defineGetter__("appsToSelect",function(){return r.filter(e=>!["drive","teams","file","contacts","convert"].includes(e))}),i.isAvailable=e=>Array.isArray(i.availableTypes)&&i.availableTypes.includes(e),i})(void 0,void 0,(Qe||(Qe=1,function(e){e.exports&&(e.exports={currentVersionNumber:9,currentVersion:"v9"})}(rn)),rn.exports)))}(tn)),tn.exports}var an,sn,cn=on(),un=n({__proto__:null,default:r(cn)},[cn]),fn={exports:{}},ln={exports:{}};function dn(){return an||(an=1,function(e){(()=>{const n=(e,n,t={},r)=>{const o=function(){if(Object.keys(t).length){var e,n=new URL(t.httpUnsafeOrigin);try{return(e=new URL(t.websocketPath,t.httpUnsafeOrigin)).protocol=n.protocol,e.origin}catch(e){return console.error(e),t.httpUnsafeOrigin}}};var a=o();var i=e=>JSON.parse(JSON.stringify(e)),s=function(e,t,r){var o=n.once(n.mkAsync(r));fetch(e,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)}).then(e=>{e.ok?e.text().then(e=>{o(void 0,n.tryParse(e))}):e.json().then().then(n=>{o(e.status,n)})}).catch(e=>{o(e)})},c=function(t,o,c){var u=i(o);u.publicKey=n.encodeBase64(t.publicKey),u.nonce=n.encodeBase64(r.randomBytes(24));var f,l,d=new URL("/api/auth/",a);e(function(e){s(d,u,e((n,t)=>n?(e.abort(),console.error(n),t&&console.error(t),void c(n)):t.date&&t.txid?(f=t.txid,void(l=t.date)):(e.abort(),void c("REQUEST_REJECTED"))))}).nThen(function(e){var o=i(u);o.txid=f,o.date=l;var a=n.decodeUTF8(JSON.stringify(o)),h=r.sign.detached(a,t.secretKey),p=n.encodeBase64(h);s(d,{sig:p,txid:f},e((n,t)=>{if(n)return e.abort(),console.error(n),t&&console.error(t),void c("RESPONSE_REJECTED",t);c(void 0,t)}))})};return c.setCustomize=e=>{t=e.ApiConfig,a=o()},c};e.exports&&(e.exports=n(qe(),X(),void 0,h()))})()}(ln)),ln.exports}function hn(){return sn||(sn=1,function(e){e.exports&&(e.exports=((e,n={},t,r)=>{var o={setCustomize:e=>{n=e.ApiConfig,t.setCustomize(e)}};o.join=e.uint8ArrayJoin,o.seed=function(){return r.hash(e.decodeUTF8("pewpewpew"))},o.genkeys=function(e){if(!(e instanceof Uint8Array))throw new Error("INVALID_SEED_FORMAT");if(!e||"number"!=typeof e.length||e.length<64)throw new Error("INVALID_SEED_LENGTH");var n=e.subarray(0,r.sign.seedLength),t=e.subarray(r.sign.seedLength,r.sign.seedLength+r.secretbox.keyLength);return{sign:r.sign.keyPair.fromSeed(n),symmetric:t}},o.keysToRPCFormat=function(n){try{var t=n.sign;return{edPrivate:e.encodeBase64(t.secretKey),edPublic:e.encodeBase64(t.publicKey)}}catch(e){return void console.error(e)}},o.encrypt=function(n,t,a){var i=e.decodeUTF8(t),s=r.randomBytes(r.secretbox.nonceLength);return o.join([[0],s,r.secretbox(i,s,a.symmetric)])},o.decrypt=function(n,t){var o=n.subarray(1,1+r.secretbox.nonceLength),a=n.subarray(1+r.secretbox.nonceLength),i=r.secretbox.open(a,o,t.symmetric);try{return JSON.parse(e.encodeUTF8(i))}catch(e){return void console.error(e)}},o.sign=function(e,n){return r.sign.detached(r.hash(e),n.sign.secretKey)},o.serialize=function(n,t){var r=o.encrypt(0,n,t),a=o.sign(r,t);return{publicKey:e.encodeBase64(t.sign.publicKey),signature:e.encodeBase64(a),ciphertext:e.encodeBase64(r)}},o.proveAncestor=function(n){var t=e.find(n,["sign","publicKey"]),o=e.find(n,["sign","secretKey"]);try{var a=r.sign.detached(t,o);return JSON.stringify([t,a].map(e.encodeBase64))}catch(e){return void console.error(e)}};var a=function(n){return e.encodeBase64(n).replace(/\//g,"-")};o.getBlockUrl=function(e){var t=a(e.sign.publicKey);return(n.fileHost||n.httpUnsafeOrigin||window.location.origin)+"/block/"+t.slice(0,2)+"/"+t},o.getBlockHash=function(e){return o.getBlockUrl(e)+"#"+a(e.symmetric)};var i=function(n){try{return e.decodeBase64(n.replace(/\-/g,"/"))}catch(e){return void console.error(e)}};return o.parseBlockHash=function(e){if("string"==typeof e){var n=e.split("#");if(2===n.length)try{return{href:n[0],keys:{symmetric:i(n[1])}}}catch(e){return void console.error(e)}}},o.checkRights=function(n,r){const o=e.mkAsync(r),{blockKeys:a,auth:i}=n;var s="MFA_CHECK";i&&i.type&&(s=`${i.type.toUpperCase()}_`+s),t(a.sign,{command:s,auth:i&&i.data},o)},o.writeLoginBlock=function(e,n){const{content:r,blockKeys:a,oldBlockKeys:i,auth:s,pw:c,session:u,token:f,userData:l}=e;var d="WRITE_BLOCK";s&&s.type&&(d=`${s.type.toUpperCase()}_`+d);var h=o.serialize(JSON.stringify(r),a);h.auth=s&&s.data,h.hasPassword=c,h.registrationProof=i&&o.proveAncestor(i),f&&(h.inviteToken=f),l&&(h.userData=l),t(a.sign,{command:d,content:h,session:u},n)},o.removeLoginBlock=function(e,n){const{reason:r,blockKeys:o,auth:a,edPublic:i}=e;var s="REMOVE_BLOCK";a&&a.type&&(s=`${a.type.toUpperCase()}_`+s),t(o.sign,{command:s,auth:a&&a.data,edPublic:i,reason:r},n)},o.updateSSOBlock=function(e,n){const{blockKeys:r,oldBlockKeys:a,hasPassword:i}=e;var s=a&&o.proveAncestor(a);t(r.sign,{command:"SSO_UPDATE_BLOCK",ancestorProof:s,hasPassword:i},n)},o})(X(),void 0,dn(),h()))}(fn)),fn.exports}var pn,vn,yn,mn=hn(),gn=n({__proto__:null,default:r(mn)},[mn]),En={exports:{}};function bn(){return pn||(pn=1,function(e){var n;n=function(){var e=function(n){if(Array.isArray(n))return n.map(e);if(n instanceof Object){var t=[],r=[];return Object.keys(n).forEach(function(e){/^(0|[1-9][0-9]*)$/.test(e)?t.push(+e):r.push(e)}),t.sort(function(e,n){return e-n}).concat(r.sort()).reduce(function(t,r){return t[r]=e(n[r]),t},{})}return n},n=JSON.stringify.bind(JSON);return function(t,r,o){var a=n(t,r,0);if(!a||"{"!==a[0]&&"["!==a[0])return a;var i=JSON.parse(a);return n(e(i),null,o)}},e.exports?e.exports=n():JSON.sortify=n()}(En)),En.exports}function An(){if(yn)return vn;yn=1;var e,n,t,r,o,a,i,s;return M(),e=te(),n=X(),G(),t=je(),o=(r={}).createData=function(t,r){var o={channel:r||e.createChannelId(),displayName:t["cryptpad.username"],profile:t.profile&&t.profile.view,edPublic:t.edPublic,curvePublic:t.curvePublic,notifications:n.find(t,["mailboxes","notifications","channel"]),avatar:t.profile&&t.profile.avatar,badge:t.profile&&t.profile.badge,uid:t.uid};return!1===r&&delete o.channel,o},a=r.getFriend=function(e,n){if(n){if(n===e.curvePublic){var t=o(e);return delete t.channel,t}return e.friends?e.friends[n]:void 0}},i=r.getFriendList=function(e){return e.friends||(e.friends={}),e.friends},s=function(e,n){Object.keys(e).forEach(function(t){"me"!==t&&n(e[t],t,e)})},r.getFriendChannelsList=function(e){var n=[];return s(e.friends,function(e){n.push(e.channel)}),n},r.declineFriendRequest=function(e,n,t){e.mailbox.sendTo("DECLINE_FRIEND_REQUEST",{},{channel:n.notifications,curvePublic:n.curvePublic},function(e){t(e)})},r.acceptFriendRequest=function(e,n,t){var r=a(e.proxy,n.curvePublic)||{},i=o(e.proxy,r.channel||n.channel);e.mailbox.sendTo("ACCEPT_FRIEND_REQUEST",{user:i},{channel:n.notifications,curvePublic:n.curvePublic},function(e){t(e)})},r.addToFriendList=function(e,n,r){var o=e.proxy,a=i(o),s=n.curvePublic;s!==o.curvePublic?(a[s]=n,t.whenRealtimeSyncs(e.realtime,function(){r(),e.pinPads([n.channel],function(e){e.error&&console.error(e.error)})})):r("E_MYKEY")},r.updateMyData=function(e,t){var r=o(e.proxy,!1);e.proxy.friends&&(e.proxy.friends.me=n.clone(r),delete e.proxy.friends.me.channel),e.modules.team&&e.modules.team.updateMyData(r);var i=function(n){n&&n.notifications&&(delete n.user,r.channel=n.channel,e.mailbox.sendTo("UPDATE_DATA",r,{channel:n.notifications,curvePublic:n.curvePublic},function(e){e&&e.error&&console.error(e)}))};t?i(a(e.proxy,t)):s(e.proxy.friends||{},i)},r.removeFriend=function(e,n,r){var o=e.proxy,a=o.friends[n];a?a.notifications?e.mailbox.sendTo("UNFRIEND",{curvePublic:o.curvePublic},{channel:a.notifications,curvePublic:a.curvePublic},function(i){i&&i.error?r(i):(e.messenger.onFriendRemoved(n,a.channel),delete o.friends[n],t.whenRealtimeSyncs(e.realtime,function(){r(i)}))}):r({error:"EINVAL"}):r({error:"ENOENT"})},vn=r}var On,wn,Dn,_n={exports:{}},Tn={exports:{}},Sn={exports:{}};function Nn(){return On||(On=1,function(e){var n,t,r,o,a,i,s,c,u,f,l,d;e.exports&&(e.exports=(n=X(),t=h(),r=n.uid,o=n.tryParse,a=function(e,r){var o=n.decodeUTF8(JSON.stringify(e));return n.encodeBase64(t.sign.detached(o,r))},i=function(e,n,t){if("function"!=typeof t)throw new Error("expected callback");var o=e.network,a=o.historyKeeper;if("string"==typeof a){var i=r(),s=e.pending[i]=function(e,n){t(e,n)};return s.data=n,s.called=0,o.sendto(a,JSON.stringify([i,n]))}t("NO_HISTORY_KEEPER")},s=[],c=[],u=function(e){var n={network:e,connected:!0,anon:void 0,authenticated:[]};return s.push(e),c.push(n),e.on("message",function(t,r){r===e.historyKeeper&&function(e,n){"string"!=typeof n&&console.error("received non-string message [%s]",n);var t=o(n);if(t){if(Array.isArray(t)&&!/(FULL_HISTORY|HISTORY_RANGE)/.test(t[0])){var r=t[0];"string"==typeof r&&(function(e,n){return!!e.anon&&"function"==typeof e.anon.pending[n]}(e,r)?function(e,n,t){var r=e.pending[n];"ERROR"===t[0]?r(t[1]):r(void 0,t.slice(1)),delete e.pending[n]}(e.anon,r,t.slice(1)):e.authenticated.some(function(e){var n=e.pending[r];return"function"==typeof n&&("ERROR"!==t[1]?(/\|/.test(t[1])&&e.cookie!==t[1]&&(e.cookie=t[1]),n(void 0,t.slice(2)),delete e.pending[r],!0):"NO_COOKIE"===t[2]?(e.send("COOKIE","",function(t){if(t)return console.error(t),void n(t);e.resend(r)&&delete e.pending[r]}),!0):(n(t[2]),delete e.pending[r],!0))})||console.error("UNHANDLED RPC MESSAGE",n))}}else console.error(new Error("could not parse message: %s",n))}(n,t)}),e.on("disconnect",function(){n.connected=!1,n.anon&&(n.anon.connected=!1),n.authenticated.forEach(function(e){e.connected=!1})}),e.on("reconnect",function(){n.anon&&(n.anon.connected=!0),n.authenticated.forEach(function(e){e.connected=!0})}),n},f=function(e){var n;return s.some(function(t,r){return e===t&&(n=r,!0)}),c[n]?c[n]:u(e)},l=function(e,t){if(!e)throw new Error("expected network context");var o,s=t.publicKeyString;return e.authenticated.some(function(e,n){return e.publicKey===s&&(o=n,!0)}),e.authenticated[o]?e.authenticated[o]:function(e,t){var o={network:e.network,publicKey:t.publicKeyString,timeouts:{},pending:{},cookie:null,connected:!0},s=o.send=function(e,r,s){var c=n.mkAsync(s);if(o.connected||"COOKIE"===e){var u=[e,r];o.cookie&&o.cookie.join?u.unshift(o.cookie.join("|")):u.unshift(o.cookie);var f=a(u,t.signKey);return u.unshift(t.publicKeyString),u.unshift(f),i(o,u,c)}c("DISCONNECTED")};return o.resend=function(e){var n=o.pending[e];if(n.called)return console.error("[%s] called too many times",e),!0;n.called++,n.data[2]=o.cookie,n.data[0]=a(n.data.slice(2),t.signKey);var i=r();o.pending[i]=n,delete o.pending[e];try{return o.network.sendto(o.network.historyKeeper,JSON.stringify([i,n.data]))}catch(e){console.log("failed to resend"),console.error(e)}},s.unauthenticated=function(e,r,a){var s=n.mkAsync(a);if(o.connected){var c=[null,t.publicKeyString,null,e,r];return o.cookie&&o.cookie.join?c[2]=o.cookie.join("|"):c[2]=o.cookie,i(o,c,s)}s("DISCONNECTED")},o.destroy=function(){Object.keys(o.timeouts).forEach(function(e){clearTimeout(e)}),o.send("DESTROY","",function(){});var n=e.authenticated.indexOf(o);-1!==n&&e.authenticated.splice(n,1)},e.authenticated.push(o),o}(e,t)},d=function(e){return e.anon||function(e){var t={network:e.network,timeouts:{},pending:{},connected:!0};return e.anon=t,t.send=function(e,r,o){var a=n.mkAsync(o);if(t.connected)return i(t,[e,r],a);a("DISCONNECTED")},t.resend=function(e){var n=t.pending[e];if(n.called)return console.error("[%s] called too many times",e),!0;n.called++;try{return t.network.sendto(t.network.historyKeeper,JSON.stringify([e,n.data]))}catch(e){console.log("failed to resend"),console.error(e)}},t.destroy=function(){Object.keys(t.timeouts).forEach(function(e){clearTimeout(e)}),e.anon=void 0},t}(e)},{create:function(e,t,r,o){if("function"!=typeof o)throw new Error("expected callback");var a,i=n.mkAsync(o);try{if(64!==(a=n.decodeBase64(t)).length)throw new Error("private key did not match expected length of 64")}catch(e){return void i(e)}try{if(32!==n.decodeBase64(r).length)return void i("expected public key to be 32 uint")}catch(e){return void i(e)}if(e){var s=f(e),c=l(s,{publicKeyString:r,signKey:a});c.send("COOKIE","",function(e){e?i(e):i(void 0,{send:c.send,destroy:c.destroy})})}else i("NO_NETWORK")},createAnonymous:function(e,t){var r=n.mkAsync(t);if("function"!=typeof r)throw new Error("expected callback");if(e){var o=d(f(e));r(void 0,{send:o.send,destroy:o.destroy})}else r("NO_NETWORK")}}))}(Sn)),Sn.exports}function In(){return wn||(wn=1,function(e){var n,t;e.exports&&(e.exports=(n=X(),t=Nn(),{create:function(e,r,o,a){if("function"!=typeof o)throw new Error("Expected callback");var i=n.once(n.mkAsync(o));if(e)if(r){var s=r.edPrivate,c=r.edPublic;s&&c?t.create(e,s,c,function(e,t){if(e)i(e);else{var r={};r.destroy=t.destroy,r.publicKey=c,r.send=t.send,r.pin=function(e,r){var o=n.once(n.mkAsync(r));Array.isArray(e)?t.send("PIN",e,o):o("[TypeError] pin expects an array")},r.unpin=function(e,r){var o=n.once(n.mkAsync(r));Array.isArray(e)?t.send("UNPIN",e,o):o("[TypeError] pin expects an array")},r.adminRpc=function(e,n){if(e.cmd){var r=[e.cmd,e.data];t.send("ADMIN",r,n)}else setTimeout(function(){n("[TypeError] admin rpc expects a command")})},r.getServerHash=function(e){t.send("GET_HASH",c,function(n,t){t&&t[0]?e(n,Array.isArray(t)&&t[0]||void 0):e("NO_HASH_RETURNED")})},r.reset=function(e,r){var o=n.once(n.mkAsync(r));Array.isArray(e)?t.send("RESET",e,o):o("[TypeError] pin expects an array")},r.getFileListSize=function(e){t.send("GET_TOTAL_SIZE",void 0,function(n,t){n?e(n):t&&t.length&&"number"==typeof t[0]?e(void 0,t[0]):e("INVALID_RESPONSE")})},r.getLimit=function(e){t.send("GET_LIMIT",void 0,function(n,t){n?e(n):t&&t.length&&"number"==typeof t[0]?e(void 0,t[0],t[1],t[2]):e("INVALID_RESPONSE")})},r.trimHistory=function(e,r){var o=n.once(n.mkAsync(r));"object"==typeof e&&e.channel&&e.hash?t.send("TRIM_HISTORY",e,function(e){if(e)return o(e);o()}):o("INVALID_ARGUMENTS")},r.clearOwnedChannel=function(e,n){"string"==typeof e&&32===e.length?t.send("CLEAR_OWNED_CHANNEL",e,function(e){if(e)return n(e);n()}):n("INVALID_ARGUMENTS")},r.removeOwnedChannel=function(e,n,r){if("string"!=typeof e||-1===[32,48].indexOf(e.length))return console.error("invalid channel to remove",e),void n("INVALID_ARGUMENTS");t.send("REMOVE_OWNED_CHANNEL",{channel:e,reason:r},function(t,r){t?n(t):r&&r.length&&"OK"===r[0]?(n(),a&&a.clearChannel&&a.clearChannel(e)):n("INVALID_RESPONSE")})},r.removePins=function(e){t.send("REMOVE_PINS",void 0,function(n,t){n?e(n):t&&t.length&&"OK"===t[0]?e():e("INVALID_RESPONSE")})},r.uploadComplete=function(e,n){t.send("UPLOAD_COMPLETE",e,function(e,t){if(e)n(e);else{var r=t[0];"string"==typeof r?n(void 0,r):n("INVALID_ID")}})},r.ownedUploadComplete=function(e,n){t.send("OWNED_UPLOAD_COMPLETE",e,function(e,t){if(e)n(e);else{var r=t[0];"string"==typeof r?n(void 0,r):n("INVALID_ID")}})},r.uploadStatus=function(e,n){"number"==typeof e?.size?t.send("UPLOAD_STATUS",e,function(e,t){if(e)n(e);else{var r=t[0];"boolean"==typeof r?n(void 0,r):n("INVALID_RESPONSE")}}):setTimeout(function(){n("INVALID_SIZE")})},r.uploadCancel=function(e,n){t.send("UPLOAD_CANCEL",e,function(e){e?n(e):n()})},r.setMetadata=function(e,n){t.send("SET_METADATA",{channel:e.channel,command:e.command,value:e.value},n)},i(e,r)}}):i("INVALID_KEYS")}else i("INVALID_PROXY");else i("INVALID_NETWORK")}}))}(Tn)),Tn.exports}function xn(){return Dn||(Dn=1,function(e){(()=>{const n=(e,n,t,r,o,a,i,s,c,u)=>{var f=function(e,n,t){if(!e.done){if(e.cb(n&&n.error,t,n),e.done=!0,!e.hasNetwork){var o=r.find(e,["network","disconnect"]);"function"==typeof o&&o()}if(e.realtime&&e.realtime.stop)try{e.realtime.stop()}catch(e){console.error(e)}var a=r.find(e,["session","realtime","abort"]);"function"==typeof a&&(e.session.realtime.sync(),a())}},l=function(e,r){u(function(n){var o,a;e.hasNetwork||(o=n(function(e,n){e||(r.network=n)}),a=i.getWebsocketURL(),t.connect(a).then(function(e){o(null,e)},function(e){o(e)}))}).nThen(function(){e.realtime=n.start(r)})},d=function(e,n,t,r){Array.isArray(t)&&t.length&&16===t[0].length&&Array.isArray(n.accessKeys)?(e.network.historyKeeper=t[0],u(function(t){n.accessKeys.forEach(function(n){c.create(e.network,n,t(function(e){e&&console.error(e)}))})}).nThen(function(){r()})):r(!0)},h=function(n,t){var r;return"string"==typeof n?r=o.getSecrets("pad",n,t.password):"object"==typeof n&&(r=n),r.keys||(r.keys=r.key),{websocketURL:i.getWebsocketURL(t.origin),channel:r.channel,validateKey:r.keys.validateKey||void 0,crypto:e.createEncryptor(r.keys),logLevel:0,initialState:t.initialState,Cache:s}},p=function(e){return"object"==typeof e},v=function(e,n){p(e)&&p(n)&&Object.keys(n).forEach(function(t){e[t]=n[t]})};return{get:function(e,n,t,r){if("function"!=typeof n)throw new Error("Cryptget expects a callback");r=r||function(){};var o=h(e,t=t||{}),a={cb:n,accessKeys:t.accessKeys,hasNetwork:Boolean(t.network)};o.onRejected=function(e,n){d(o,a,e,n)},o.onReady=function(e){var n=a.session=e.realtime;a.network=e.network,r(1),f(a,void 0,n.getUserDoc())},o.onError=function(e){console.warn(e),f(a,e)},o.onChannelError=function(e){console.error(e),f(a,e)},o.onCacheReady=t.onCacheReady;var i=0;o.onMessage=function(){i++,r(Math.min(.99,i/100))},v(o,t),l(a,o)},put:function(e,n,t,r){if("function"!=typeof t)throw new Error("Cryptput expects a callback");var o=h(e,r=r||{}),i={cb:t,accessKeys:r.accessKeys,hasNetwork:Boolean(r.network)};o.onRejected=function(e,n){d(o,i,e,n)},o.onReady=function(e){var r=i.session=e.realtime;i.network=e.network,r.contentUpdate(n);var o=setTimeout(function(){t(new Error("Timeout"))},15e3);a.whenRealtimeSyncs(r,function(){clearTimeout(o);var e=r.getAuthDoc();r.abort(),f(i,void 0,e)})},o.onChannelError=function(e){f(i,e)},v(o,r),l(i,o)}}};e.exports&&(e.exports=n(M(),D(),u(),X(),te(),je(),j(),fe(),In(),qe(),x()))})()}(_n)),_n.exports}var Cn,Rn,Pn,kn,Mn,Fn,Ln,Hn={exports:{}};function jn(){if(Mn)return kn;Mn=1;return kn=((e,n,t,r,o,a,i,s)=>{const c={};let u={};c.setCustomize=e=>{u=e.Broadcast};var f=["notifications","supportteam","broadcast"],l=[],d="000000000000000000000000000000000",h=function(e,n,t,r,o){e.emit("MESSAGE",{type:n,content:t},r?[r]:e.clients,o)},p=function(e,n,t,r){e.emit("VIEWED",{type:n,hash:t},r||e.clients)},v=function(e){var n=e.store&&e.store.proxy;if(n.curvePrivate&&n.curvePublic)return{curvePrivate:n.curvePrivate,curvePublic:n.curvePublic}},y=c.sendTo=function(n,t,o,a,i){a=a||{};var c=i||function(e){e&&e.error&&console.error(e.error)};if(s.Mailbox){var u=e.find(n,["store","anon_rpc"]);if(u){var f={encrypt:function(e){return e}},l=d,h={uid:e.uid(),type:t,content:o};if(!/^BROADCAST/.test(t)){var p=v(n);if(!p)return void c({error:"missing asymmetric encryption keys"});if(!a||!a.channel||!a.curvePublic)return void c({error:"no notification channel"});if(l=a.channel,f=s.Mailbox.createEncryptor(p),"object"==typeof o&&!o.user){var y=r.createData(n.store.proxy,!1);o.user=y}h={type:t,content:o}}var m=JSON.stringify(h),g=f.encrypt(m,a.curvePublic);if(a.viewed){var E=e.find(n,["store","proxy","teams",a.viewed]);if(E){var b=g.slice(0,64),A=e.find(E,["keys","mailbox","viewed"]);Array.isArray(A)&&A.push(b)}}u.send("WRITE_PRIVATE_MESSAGE",[l,g],function(e){c(e?{error:e}:{hash:g.slice(0,64)})})}else c({error:"anonymous rpc session not ready"})}else c({error:"chainpad-crypto is outdated and doesn't support mailboxes."})};c.sendToAnon=function(n,t,r,o,a){var i=s.Nacl,c=i.randomBytes(32),u=i.box.keyPair.fromSecretKey(new Uint8Array(c)),f=e.encodeBase64(u.secretKey),l=e.encodeBase64(u.publicKey);y({store:{anon_rpc:n,proxy:{curvePrivate:f,curvePublic:l}}},t,r,o,a)};var m=function(n,r,o,i){var s=r.type,c=r.hash;if(/^REMINDER\|/.test(c)){i(),delete n.boxes.reminders.content[c],p(n,s,c,n.clients.filter(function(e){return e!==o}));var u=c.slice(9).split("-")[0],f=e.find(n,["store","proxy","hideReminders",u]);if(!f){var l=n.store.proxy.hideReminders=n.store.proxy.hideReminders||{};f=l[u]=l[u]||[]}var d=c.split("-")[1];d&&!f.includes(d)&&f.push(Number(d))}else{var h=n.boxes[s];if(h){var v,y,m=h.data||{},g=h.history.indexOf(c);-1!==g&&(0===g?(m.lastKnownHash=c,h.history.shift()):-1===m.viewed.indexOf(c)&&m.viewed.push(c));var E=[];h.history.some(function(e,n){if(-1===m.viewed.indexOf(e))return!0;v=n+1,E.push(e),y=e}),m.viewed=m.viewed.filter(function(e){return-1===E.indexOf(e)}),v&&(h.history=h.history.slice(v),m.lastKnownHash=y),Object.keys(h.content).forEach(function(e){-1!==h.history.indexOf(e)&&-1===m.viewed.indexOf(e)||(a.remove(n,h,h.content[e],e),delete h.content[e])}),t.whenRealtimeSyncs(n.store.realtime,function(){i(),p(n,s,c,n.clients.filter(function(e){return e!==o}))})}else i({error:"NOT_LOADED"})}},g=function(e,n,t,c,u){u=u||{};var f=e.boxes[n]={channel:t.channel,type:n,queue:[],history:[],content:{},sendMessage:function(n){if("object"==typeof n&&!n.user){var t=r.createData(e.store.proxy,!1);n.user=t}try{n=JSON.stringify(n)}catch(e){console.error(e)}f.queue.push(n)},data:t};if(s.Mailbox){var l=t.keys||v(e);if(l||t.decrypted){var d=t.decrypted?{encrypt:function(e){return e},decrypt:function(e){return e}}:s.Mailbox.createEncryptor(l);f.encryptor=d;var y,g={network:e.store.network,channel:t.channel,noChainPad:!0,crypto:d,owners:"broadcast"===n?[]:u.owners||[e.store.proxy.edPublic],lastKnownHash:t.lastKnownHash};g.onConnectionChange=function(){},g.onConnect=function(t,r){f.sendMessage=function(t,o){var a;o=o||function(){};try{a=JSON.stringify(t)}catch(e){console.error(e)}r(a,function(r,a){r?console.error(r):(f.history.push(a),t.ctime=+new Date,f.content[a]=t,h(e,n,{msg:t,hash:a}),o(a))},l.curvePublic)},f.queue.forEach(function(e){f.sendMessage(e)}),f.queue=[]},f.onMessage=g.onMessage=function(r,i,s,c,l,d,p){if(l!==t.lastKnownHash&&l!==y){var v=p&&p.time;y=l;try{r=JSON.parse(r)}catch(e){console.error(e)}if(d&&(r.author=d),f.history.push(l),function(e,n){return-1===(n.viewed||[]).indexOf(e)&&e!==n.lastKnownHash}(l,t)){var g={msg:r,hash:l,time:v},E=f.ready;a.add(e,f,g,function(t,a,i){a&&m(e,a,"",function(){console.log("Notification handled automatically")}),i||t?m(e,{type:n,hash:l},"",function(){console.log("Notification handled automatically")}):(r.ctime=v||0,f.content[l]=r,u.dump||h(e,n,g,null,function(e){e&&e.msg&&E&&o.system(void 0,e.msg)}))})}else if(0===Object.keys(f.content).length){t.lastKnownHash=l,f.history=[];var b=t.viewed.indexOf(l);-1!==b&&t.viewed.splice(b,1)}}},g.onReady=function(){var r=[];t.viewed.forEach(function(e,n){-1===f.history.indexOf(e)&&r.push(n)});for(var o=r.length-1;o>=0;o--)t.viewed.splice(r[o],1);var i=function(t){a.remove(e,f,f.content[t],t),delete f.content[t],p(e,n,t)};e.store.proxy.on("change",["mailboxes",n],function(e,n,t){var r;"lastKnownHash"===t[2]&&(f.history.some(function(e,t){if(r=t+1,i(e),e===n)return!0}),f.history=f.history.slice(r));"viewed"===t[2]&&i(n)}),f.ready=!0,c(f.content)},f.cpNf=i.start(g)}else console.error("missing asymmetric encryption keys")}else console.error("chainpad-crypto is outdated and doesn't support mailboxes.")};return c.init=function(t,r,i){var s={},c=t.store,v=c.proxy.mailboxes=c.proxy.mailboxes||{},E={Store:t.Store,store:c,pinPads:t.pinPads,updateMetadata:t.updateMetadata,updateDrive:t.updateDrive,mailboxes:v,emit:i,clients:[],boxes:{},req:{},loggedIn:c.loggedIn&&c.proxy.edPublic};return function(e,t){!t.notifications&&e.loggedIn&&(t.notifications={channel:n.createChannelId(),lastKnownHash:"",viewed:[]},e.pinPads([t.notifications.channel],function(e){e.error&&console.error(e)})),t.support&&delete t.support,t.broadcast||(t.broadcast={channel:d,lastKnownHash:u.lastBroadcastHash,decrypted:!0,viewed:[]})}(E,v),E.loggedIn&&function(n){var t=n.store.network;t.on("message",function(r,o){if(o===t.historyKeeper){var a=JSON.parse(r);if(/HISTORY_RANGE/.test(a[0])){var i=a[1],s=n.req[i];if(s){var c=a[0],u=a[2],f=s.box;if("HISTORY_RANGE"===c){if(!Array.isArray(u))return;var l;if("broadcast"===s.box.type)l=e.tryParse(u[4]);else try{var d=f.encryptor.decrypt(u[4]);(l=JSON.parse(d.content)).author=d.author}catch(e){console.log(e)}var h=u[4].slice(0,64);n.emit("HISTORY",{txid:i,time:u[5],message:l,hash:h},[s.cId])}else"HISTORY_RANGE_END"===c&&(n.emit("HISTORY",{txid:i,complete:!0},[s.cId]),delete n.req[i])}}}})}(E),E.boxes.reminders={content:{}},Object.keys(v).forEach(function(e){if(-1!==f.indexOf(e)){var n=v[e];-1===l.indexOf(e)?g(E,e,n,function(){}):g(E,e,n,r(function(){}))}}),E.loggedIn&&Object.keys(c.proxy.teams||{}).forEach(function(n){var t=c.proxy.teams[n];if(t){var r=t.keys.mailbox||{};if(r.channel){var o={owners:[e.find(t,["keys","drive","edPublic"])]};g(E,"team-"+n,r,function(){},o)}}}),s.post=function(e,n,t){var r=E.boxes[e];r&&r.sendMessage({type:n,content:t,sender:c.proxy.curvePublic})},s.hideMessage=function(e,n){p(E,e,n.hash,E.clients)},s.showMessage=function(e,n,t,r){"reminders"===e&&n&&(E.boxes.reminders.content[n.hash]=n.msg,E.clients.length||(E.boxes.reminders.content[n.hash].requiresNotif=!0),p(E,e,n.hash,E.clients)),h(E,e,n,t,function(e){o.system(void 0,e.msg),r&&r()})},s.open=function(e,n,t,r,o){(-1!==f.indexOf(e)||r)&&g(E,e,n,t,o)},s.close=function(e,n){!function(e,n,t){t=t||function(){};var r=e.boxes[n];r?r.cpNf&&"function"==typeof r.cpNf.stop?(r.cpNf.stop(),Object.keys(r.content).forEach(function(t){a.remove(e,r,r.content[t],t),p(e,n,t,e.clients)}),delete e.boxes[n]):t("EINVAL"):t()}(E,e,n)},s.dismiss=function(e,n){m(E,e,"",n)},s.sendTo=function(e,n,t,r){E.loggedIn?y(E,e,n,t,r):r({error:"NOT_LOGGED_IN"})},s.removeClient=function(e){!function(e,n){var t=e.clients.indexOf(n);e.clients.splice(t,1)}(E,e)},s.execCommand=function(e,n,t){var r=n.cmd,a=n.data;"SUBSCRIBE"!==r?"DISMISS"!==r?"SENDTO"!==r?"LOAD_HISTORY"!==r||function(e,n,t,r){var o=e.boxes[t.type];if(o){var a=["GET_HISTORY_RANGE",o.channel,{from:t.lastKnownHash,count:t.count,txid:t.txid}];"broadcast"===t.type&&(a=["GET_HISTORY_RANGE",o.channel,{to:t.lastKnownHash,txid:t.txid}]),e.req[t.txid]={cId:n,box:o};var i=e.store.network;i.sendto(i.historyKeeper,JSON.stringify(a)).then(function(){},function(e){console.error(e)})}else r({error:"ENOENT"})}(E,e,a,t):y(E,a.type,a.msg,a.user,t):m(E,a,e,t):function(e,n,t,r){Object.keys(e.boxes).forEach(function(n){Object.keys(e.boxes[n].content).forEach(function(r){var a={msg:e.boxes[n].content[r],hash:r};h(e,n,a,t,function(e){e.error||a.msg&&a.msg.requiresNotif&&(o.system(void 0,e.msg),delete a.msg.requiresNotif)})})}),-1===e.clients.indexOf(t)&&e.clients.push(t),r()}(E,0,e,t)},s},c})(X(),te(),je(),An(),(Cn||(Cn=1,function(e){(()=>{const n=(e={})=>{let n=globalThis;var t={};e.requireConf=e.requireConf||{},t.setCustomize=n=>{e=n.ApiConfig};var r=n.location&&n.location.pathname.slice(1,-1),o=-1!==["code","slide","pad","kanban","whiteboard","diagram","sheet","poll","teams","form","doc","presentation"].indexOf(r)?"-"+r:"",a="/customize/favicon/main-favicon"+o+".png?"+e.requireConf.urlArgs,i="/customize/favicon/alt-favicon"+o+".png?"+e.requireConf.urlArgs,s="/customize/favicon/main-favicon"+o+".ico?"+e.requireConf.urlArgs,c="/customize/favicon/alt-favicon"+o+".ico?"+e.requireConf.urlArgs,u=n.document,f=t.isSupported=function(){return"function"==typeof n.Notification&&n.isSecureContext},l=t.hasPermission=function(){return"granted"===Notification.permission},d=t.getPermission=function(e){e=e||function(){},Notification&&"function"==typeof Notification.requestPermission?Notification.requestPermission(function(n){e("granted"===n)}):e(!1)},h=t.create=function(e,t,r){u&&!r?r=u.getElementById("favicon").getAttribute("data-main-favicon")||i:r||(r=i);var o=new Notification(t,{icon:r,body:e});return o.onclick=function(){if(u)try{parent.focus(),n.focus(),this.close()}catch(e){}},o};return t.system=function(e,n,t){if(f())return l()?h(e,n,t):void("denied"!==Notification.permission&&d(function(r){r&&h(e,n,t)}))},u&&!u.getElementById("favicon")&&function(){if(u){console.debug("creating favicon");var e={id:"favicon",type:"image/png",rel:"icon","data-main-favicon":a,"data-alt-favicon":i,href:a};if(!u.getElementById("favicon")){var n=u.createElement("link");Object.keys(e).forEach(function(t){n.setAttribute(t,e[t])}),u.head.appendChild(n)}if(!u.getElementById("favicon-ico")){var t=u.createElement("link");e.href=e.href.replace(/\.png/g,".ico"),e.id="favicon-ico",e.type="image/x-icon",Object.keys(e).forEach(function(n){t.setAttribute(n,e[n])}),u.head.appendChild(t)}}else console.error("document is not available in this context")}(),t.tab=function(e,r){if(u){var o="_pendingTabNotification",f=u.getElementById("favicon"),l=u.getElementById("favicon-ico"),d=a,h=i,p=s,v=c;f&&(d=f.getAttribute("data-main-favicon")||a,h=f.getAttribute("data-alt-favicon")||i,f.setAttribute("href",d)),l&&(p=l.getAttribute("data-main-favicon")||s,v=l.getAttribute("data-alt-favicon")||c,l.setAttribute("href",p));var y=function(e){return!!t[o]&&(n.clearInterval(t[o]),f&&f.setAttribute("href",e?h:d),l&&l.setAttribute("href",e?v:p),!0)};y();var m=function(){f&&f.setAttribute("href",f.getAttribute("href")===d?h:d),l&&l.setAttribute("href",l.getAttribute("href")===p?v:p),--r};return t[o]=n.setInterval(function(){if(r>0)return m();y(!0)},e),m(),{cancel:y}}console.error("document is not available in this context")},t};e.exports&&(e.exports=n(void 0))})()}(Hn)),Hn.exports),(Pn||(Pn=1,Rn=((e,n,t,r,o)=>{var a=function(e){var n=e.store.realtime.getLag().lag||0;return 20*(Math.max(0,n)+300)*(.5+Math.random())},i={},s={},c=function(e,n){var r=e.store.proxy.mutedUsers||{},o=t.find(n,["msg","author"]);return!!o&&Boolean(r[o])},u={};i.FRIEND_REQUEST=function(n,t,r,o){var a=r.msg.content.user||r.msg.content;if(c(n,r))o(!0);else if(u[r.msg.author])o(!0);else{if(u[r.msg.author]={type:t.type,hash:r.hash},e.getFriend(n.store.proxy,r.msg.author)||n.store.proxy.friends_pending[r.msg.author])return delete n.store.proxy.friends_pending[r.msg.author],void e.acceptFriendRequest(n.store,a,function(t){t&&t.error?o():e.addToFriendList({proxy:n.store.proxy,realtime:n.store.realtime,pinPads:n.pinPads},a,function(e){if(e)return console.error(e),void o(!0);n.store.messenger&&n.store.messenger.onFriendAdded(a),n.updateMetadata(),o(!0)})});o()}},s.FRIEND_REQUEST=function(e,n,t){var r=t.content.user||t.content;u[r.curvePublic]&&delete u[r.curvePublic]};var f={},l={};i.DECLINE_FRIEND_REQUEST=function(e,n,t,r){var o=t.msg.content.user||t.msg.content;o.curvePublic||(o.curvePublic=t.msg.author),setTimeout(function(){r(!0),e.store.proxy.friends_pending[t.msg.author]&&(delete e.store.proxy.friends_pending[t.msg.author],e.updateMetadata(),f[t.msg.author]||n.sendMessage({type:"FRIEND_REQUEST_DECLINED",content:{user:o}},function(e){f[t.msg.author]={type:n.type,hash:e}}))},a(e))},i.FRIEND_REQUEST_DECLINED=function(e,n,t,r){e.updateMetadata();var o=t.msg.content.user.curvePublic||t.msg.content.user,a=l[o];delete l[o],f[o]?r(!0,a):(f[o]={type:n.type,hash:t.hash},r(!1,a))},s.FRIEND_REQUEST_DECLINED=function(e,n,t){var r=t.content.user.curvePublic||t.content.user;f[r]&&delete f[r]},i.ACCEPT_FRIEND_REQUEST=function(n,t,r,o){var i=r.msg.content.user||r.msg.content;setTimeout(function(){o(!0),n.store.proxy.friends_pending[r.msg.author]&&(delete n.store.proxy.friends_pending[r.msg.author],e.addToFriendList({proxy:n.store.proxy,realtime:n.store.realtime,pinPads:n.pinPads},i,function(e){e?console.error(e):(n.store.messenger&&n.store.messenger.onFriendAdded(i),n.updateMetadata(),n.store.modules.profile&&n.store.modules.profile.update(),l[r.msg.author]||t.sendMessage({type:"FRIEND_REQUEST_ACCEPTED",content:{user:i}},function(e){l[r.msg.author]={type:t.type,hash:e}}))}))},a(n))},i.FRIEND_REQUEST_ACCEPTED=function(e,n,t,r){e.updateMetadata();var o=t.msg.content.user.curvePublic||t.msg.content.user,a=f[o];delete f[o],l[o]?r(!0,a):(l[o]={type:n.type,hash:t.hash},r(!1,a))},s.FRIEND_REQUEST_ACCEPTED=function(e,n,t){var r=t.content.user.curvePublic||t.content.user;l[r]&&delete l[r]},i.CANCEL_FRIEND_REQUEST=function(e,n,t,r){var o=u[t.msg.author];o?r(!0,o):r(!0)},i.UNFRIEND=function(n,t,r,o){var a=r.msg.author,i=e.getFriend(n.store.proxy,a);i?(delete n.store.proxy.friends[a],delete n.store.proxy.friends_pending[a],n.store.messenger&&n.store.messenger.onFriendRemoved(a,i.channel),n.updateMetadata(),o(!0)):o(!0)},i.UPDATE_DATA=function(e,n,t,r){var o=t.msg,a=o.author,i=e.store.proxy.friends&&e.store.proxy.friends[a];if(!i||"object"!=typeof o.content)return void r(!0);const s=o.content.edPublic,c=()=>{Object.keys(o.content).forEach(function(e){i[e]=o.content[e]}),e.store.messenger&&e.store.messenger.onFriendUpdate(a),e.updateMetadata(),r(!0)};if(o.content.badge&&e.store.modules.badge)return e.store.modules.badge.listBadges({edPublic:s},e=>{e.includes(o.content.badge)||delete o.content.badge,c()});c()};var d=function(e,n){let t=e.store.data.blockHash,a=o.parseBlockHash(t).keys.symmetric;return r.encrypt(n,a)},h={};i.SHARE_PAD=function(e,t,r,o){var a=r.msg,i=r.hash,s=a.content;if(c(e,r))o(!0);else{var u,f=s.isStatic?s.href:n.hrefToHexChannelId(s.href,s.password),l=n.parsePadUrl(s.href),p=l.hashData&&l.hashData.mode||"n/a",v=h[f];if(v){if("edit"===v.mode&&"view"===p)return void o(!0);u=v.data}s.password&&(s.password=d(e,s.password)),h[f]={mode:p,data:{type:t.type,hash:i}},o(!1,u)}},s.SHARE_PAD=function(e,t,r,o){var a=r.content,i=n.hrefToHexChannelId(a.href,a.password),s=h[i];s&&s.data&&s.data.hash===o&&delete h[i]};var p=!1;i.SUPPORT_MESSAGE=function(e,n,t,r){p?r(!0):(p=!0,r())},s.SUPPORT_MESSAGE=function(){p=!1},i.REQUEST_PAD_ACCESS=function(e,n,t,r){var o=t.msg.content;if(c(e,t))r(!0);else{var a=o.channel,i=e.store.manager.findChannel(a);if(i.length){var s,u,f=e.store.proxy.edPublic;i.some(function(e){if(e.data&&Array.isArray(e.data.owners)&&-1!==e.data.owners.indexOf(f)&&e.data.href)return u=e.data.href,s=e.data.filename||e.data.title,!0})?(o.title=s,o.href=u,r(!1)):r(!0)}else r(!0)}},i.GIVE_PAD_ACCESS=function(e,n,t,r){var o,a=t.msg.content,i=a.channel;e.store.manager.findChannel(i,!0).forEach(function(e){e.data&&!e.data.href&&(o||(o=e.data.filename||e.data.title),e.userObject.setHref(i,null,a.href))}),a.title=o||a.title,r(!1)},i.ADD_TO_ACCESS_LIST=function(e,n,t,r){var o=t.msg.content.channel;e.Store.getAllStores().forEach(function(n){var t=n.manager.findChannel(o);if(t.length){var r=t[0].data,a=t[0].id,i=n.id;e.Store.loadSharedFolder(i,a,r,function(){},!1)}}),r(!0)};var v={};i.ADD_OWNER=function(e,n,t,r){var o=t.msg.content;if(c(e,t))r(!0);else{if(!(o.teamChannel||o.href&&o.title&&o.channel))return console.log("Remove invalid notification"),void r(!0);var a=o.channel||o.teamChannel;o.password&&(o.pw=o.password,o.password=d(e,o.password)),v[a]?r(!0):(v[a]={type:n.type,hash:t.hash},r(!1))}},s.ADD_OWNER=function(e,n,t){var r=t.content.channel||t.content.teamChannel;v[r]&&delete v[r]},i.RM_OWNER=function(e,n,t,r){var o=t.msg.content;if(!o.channel&&!o.teamChannel)return console.log("Remove invalid notification"),void r(!0);var a=o.channel||o.teamChannel;if(o.teamChannel){var i=e.store.proxy.teams||{};Object.keys(i).some(function(e){if(i[e].channel===a)return i[e].owner=!1,!0})}v[a]&&o.pending?r(!1,v[a]):r(!1)};var y={};i.INVITE_TO_TEAM=function(e,n,r,o){var a=r.msg.content;if(c(e,r))o(!0);else{if(!a.team)return console.log("Remove invalid notification"),void o(!0);var i=y[a.team.channel];if(i)return console.log("removing old invitation"),o(!1,i),void(y[a.team.channel]={type:n.type,hash:r.hash});var s=t.find(e,["store","proxy","teams"])||{};Object.keys(s).some(function(e){return s[e].channel===a.team.channel})?o(!0):(y[a.team.channel]={type:n.type,hash:r.hash},o(!1))}},s.INVITE_TO_TEAM=function(e,n,r){var o=t.find(r,["content","team","channel"]);delete y[o]},i.KICKED_FROM_TEAM=function(e,n,t,r){var o=t.msg.content;if(!o.teamChannel)return console.log("Remove invalid notification"),void r(!0);y[o.teamChannel]&&o.pending?r(!0,y[o.teamChannel]):r(!1)},i.INVITE_TO_TEAM_ANSWER=function(e,n,r,o){var a=r.msg,i=a.content;if(!i.teamChannel)return console.log("Remove invalid notification"),void o(!0);var s,c,u=t.find(e,["store","proxy","teams"])||{};if(Object.keys(u).some(function(e){var n=u[e];if(n.channel===i.teamChannel)return s=e,c=n,!0}),s){if(i.team=c,!i.answer)try{e.store.modules.team.removeFromTeam(s,a.author,!0)}catch(e){console.error(e)}var f=i.user||i;n.sendMessage({type:"INVITE_TO_TEAM_ANSWERED",content:{user:f,team:c,answer:i.answer}},function(){}),o(!0)}else o(!0)},i.TEAM_EDIT_RIGHTS=function(e,n,r,o){var a=r.msg.content;if(!a.teamData)return console.log("Remove invalid notification"),void o(!0);var i,s=t.find(e,["store","proxy","teams"])||{};if(Object.keys(s).some(function(e){if(s[e].channel===a.teamData.channel)return i=e,!0}),i)try{e.store.modules.team.changeMyRights(i,a.state,a.teamData,function(e){e||console.error("Can't update team rights"),o(!0)})}catch(e){console.error(e)}else o(!0)},i.OWNED_PAD_REMOVED=function(e,n,t,r){var o=t.msg.content;if(!o.channel)return console.log("Remove invalid notification"),void r(!0);var a=o.channel;e.store.manager.findChannel(a).forEach(function(n){var t=e.store.manager.findFile(n.id);e.store.manager.delete({paths:t},function(){e.updateDrive()})}),r(!0)},i.MOVE_TODO=function(e,n,t,r){var o=e.store.proxy.curvePublic;t.msg.author===o?r():r(!0)},i.SAFE_LINKS_DEFAULT=function(e,n,t,r){var o=e.store.proxy.curvePublic;t.msg.author===o?r():r(!0)};var m={};i.FORM_RESPONSE=function(e,n,t,r){var o,a,i=t.msg,s=t.hash,c=i.content,u=c.channel;if(u)if(function(e,n){return(e.store.proxy.mutedChannels||[]).includes(n)}(e,u))r(!0);else if(e.Store.getAllStores().some(function(e){return e.manager.findChannel(u).some(function(e){if(e.data&&(!a||e.data.href))return a=e.data.href||e.data.roHref,o=e.data.filename||e.data.title,!!e.data.href||void 0})}),a){c.href=a,c.title=o;var f=m[u],l=f?f.data:void 0;m[u]={data:{type:n.type,hash:s}},r(!1,l)}else r(!0);else r(!0)},s.FORM_RESPONSE=function(e,n,t,r){var o=t.content.channel,a=m[o];a&&a.data&&a.data.hash===r&&delete m[o]};var g={};i.COMMENT_REPLY=function(e,n,r,o){var a=r.msg,i=r.hash,s=a.content;if(t.find(e.store.proxy,["settings","pad","disableNotif"]))o(!0);else{var c,u,f=s.channel;if(f)if(e.Store.getAllStores().some(function(e){return e.manager.findChannel(f).some(function(e){if(e.data&&(!u||e.data.href))return u=e.data.href||e.data.roHref,c=e.data.filename||e.data.title,!!e.data.href||void 0})}),u){s.href=u,s.title=c;var l=g[f],d=l?l.data:void 0;g[f]={data:{type:n.type,hash:i}},o(!1,d)}else o(!0);else o(!0)}},s.COMMENT_REPLY=function(e,n,t,r){var o=t.content.channel,a=g[o];a&&a.data&&a.data.hash===r&&delete g[o]};var E,b,A={};i.MENTION=function(e,n,t,r){var o=t.msg,a=t.hash,i=o.content;if(c(e,t))r(!0);else{var s=i.channel;if(s){var u,f;e.Store.getAllStores().some(function(e){return e.manager.findChannel(s).some(function(e){if(e.data&&(!f||e.data.href))return f=e.data.href||e.data.roHref,u=e.data.filename||e.data.title,!!e.data.href||void 0})}),i.href=f,i.title=u;var l=A[s],d=l?l.data:void 0;A[s]={data:{type:n.type,hash:a}},r(!1,d)}else r(!0)}},s.MENTION=function(e,n,t,r){var o=t.content.channel,a=A[o];a&&a.data&&a.data.hash===r&&delete A[o]},i.BROADCAST_MAINTENANCE=function(e,n,t,r){var o=t.msg.uid;e.Store.onMaintenanceUpdate(o),r(!0)},i.BROADCAST_SURVEY=function(e,n,t,r){var o=t.msg,a=o.content,i=o.uid,s=E;E={type:n.type,hash:t.hash},e.Store.onSurveyUpdate(i),r(!a.url,s)},i.BROADCAST_CUSTOM=function(e,n,t,r){var o=t.msg.uid,a=b;b={uid:o,type:n.type,hash:t.hash},r(!1,a)},i.BROADCAST_DELETE=function(e,n,t,r){var o=t.msg.content.uid;if(b&&b.uid===o)return r(!0,b),void(b=void 0);r(!0)};var O={};i.SF_DELETED=function(e,n,t,r){var o=t.msg.content,a=o.team,i=o.sfId;if(O[i])r(!0);else if(O[i]=1,a){var s=e.store.proxy.teams[a];s?(o.teamName=s.metadata&&s.metadata.name,r(!1)):r(!1)}else r(!1)},s.SF_DELETED=function(e,n,t){var r=t.content.sfId;delete O[r]};var w,D,_={};return i.SEND_CHAT_MESSAGE=function(e,n,t,r){var o=t.msg.author;_[o]||c(e,t)||!e.store.proxy.friends[o]?r(!0):(_[o]=1,r(!1))},s.SEND_CHAT_MESSAGE=function(e,n,t){var r=t.author;delete _[r]},i.NEW_TICKET=function(e,n,r,o){var a=r.msg.content;a.time||(a.time=r.time);var i=t.find(e,["store","modules","support"]);a.isAdmin?i.addUserTicket(a,o):i.addAdminTicket(a,o)},i.NOTIF_TICKET=function(e,n,r,o){var a=r.msg.content;a.time||(a.time=r.time);var i=t.find(e,["store","modules","support"]);if(a.isAdmin)return t.find(e,["store","proxy","support",a.channel])?(i.updateUserTicket(a),w?void o(!1,w):(w={channel:a.channel,type:n.type,hash:r.hash},void o(!1))):void o(!0);i.checkAdminTicket(a,s=>{s?(i.updateAdminTicket(a),t.find(e.store.proxy,["settings","general","disableSupportNotif"])?o(!0):D?o(!1,D):(D={channel:a.channel,type:n.type,hash:r.hash},o(!1))):o(!0)})},s.NOTIF_TICKET=function(e,n,t){var r=t.content.channel;w&&w.channel===r&&(w=void 0),D&&D.channel===r&&(D=void 0)},i.ADD_MODERATOR=function(e,n,r,o){var a=r.msg.content;t.find(e,["store","modules","support"]).updateAdminKey(a,o)},i.MODERATOR_NEW_KEY=function(e,n,r,o){var a=r.msg.content;t.find(e,["store","modules","support"]).updateAdminKey(a,function(){o(!0)})},{add:function(e,n,r,o){if(r.msg){var a=t.find(e,["store","proxy","curvePublic"]),s=t.find(r,["msg","content","user","curvePublic"])||t.find(r,["msg","content","curvePublic"]);if(s&&r.msg.author!==s&&r.msg.author!==a)return console.error("blocked"),void o(null,null,!0);var c=r.msg.type;if(i[c])try{i[c](e,n,r,o)}catch(e){console.error(e),o()}else o()}else o(null,null,!0)},remove:function(e,n,t,r){if(t){var o=t.type;if(s[o])try{s[o](e,n,t,r)}catch(e){console.error(e)}}}}})(An(),te(),X(),M(),hn())),Rn),D(),M()),kn}function Kn(){if(Ln)return Fn;Ln=1;return Fn=((e,n,t,r,o,a,i,s,c)=>{let u={};let f=function(f,l,d,h){var p=f.version||0;s(function(){}).nThen(function(){var n,t,r,o,a;p<2&&(n="cryptpad.userlist-drawer",t="cryptpad.hide_poll_text",r="cryptpad.indentUnit",o="cryptpad.indentWithTabs",a=f.settings=f.settings||{},void 0!==f[r]&&(a.codemirror=a.codemirror||{},a.codemirror.indentUnit=f[r],delete f[r]),void 0!==f[o]&&(a.codemirror=a.codemirror||{},a.codemirror.indentWithTabs=f[o],delete f[o]),void 0!==f[n]&&(a.toolbar=a.toolbar||{},a.toolbar["userlist-drawer"]=f[n],delete f[n]),void 0!==f[t]&&(a.poll=a.poll||{},a.poll["hide-text"]=f[t],delete f[t]),e.send("Migrate-2",!0),f.version=p=2)}).nThen(function(){p<3&&(!function(){if(localStorage.CRYPTPAD_LANG){var e=localStorage.CRYPTPAD_LANG;f.settings.language=e}}(),e.send("Migrate-3",!0),f.version=p=3)}).nThen(function(){var n;p<4&&(n=f.settings=f.settings||{},void 0!==f.allowUserFeedback&&(n.general=n.general||{},n.general.allowUserFeedback=f.allowUserFeedback,delete f.allowUserFeedback),e.send("Migrate-4",!0),f.version=p=4)}).nThen(function(){p<5&&(!function(){var e=f.drive&&f.drive.filesData;if(e)for(var n in e)"number"!=typeof e[n].ctime&&(e[n].ctime=+new Date(e[n].ctime)),"number"!=typeof e[n].atime&&(e[n].atime=+new Date(e[n].atime))}(),e.send("Migrate-5",!0),f.version=p=5)}).nThen(function(t){var r,o,a,i,c;p<6&&(a=f.drive.filesData||{},i=s(function(){}),c=Object.keys(a).length,Object.keys(a).forEach(function(e,t){i=i.nThen(function(i){setTimeout(i(function(){if(r=a[e],o=n.parsePadUrl(r.href),r.href&&!r.channel){var i=n.getSecrets(o.type,o.hash,r.password);r.channel=i.channel,d(6,Math.round(100*t/c)),console.log("Adding missing channel in filesData ",r.channel)}}))})}),i.nThen(t(function(){e.send("Migrate-6",!0),f.version=p=6})))}).nThen(function(t){var r,o,a,i,c;p<7&&(a=f.drive.filesData,i=s(function(){}),c=Object.keys(a).length,Object.keys(a).forEach(function(e,t){i=i.nThen(function(i){setTimeout(i(function(){if((r=a[e]).href)if(-1!==r.href.indexOf("#"))if("pad"===(o=n.parsePadUrl(r.href)).hashData.type){if("view"===o.hashData.mode)r.roHref=r.href,delete r.href,console.log("Move href to roHref in filesData ",r.roHref);else{var i=n.getSecrets(o.type,o.hash,r.password),s=n.getViewHashFromKeys(i);s&&(r.roHref="/"+o.type+"/#"+s,console.log("Adding missing roHref in filesData ",r.href))}d(6,Math.round(100*t/c))}else d(7,Math.round(100*t/c));else d(7,Math.round(100*t/c));else d(7,Math.round(100*t/c))}))})}),i.nThen(t(function(){e.send("Migrate-7",!0),f.version=p=7})))}).nThen(function(){p<8&&(f.FS_hashes=t.deduplicateString(f.FS_hashes||[]),e.send("Migrate-8",!0),f.version=p=8)}).nThen(function(){p<9&&(!function(){var e=h.network,n={},t={store:h},o=r.createData(f),i=function(e){var t=n[e];if(t){try{t.wc.leave()}catch(e){}delete n[e]}};e.on("message",function(r,s){try{!function(r,s){if(s===e.historyKeeper){var c=JSON.parse(r);if(!c.validateKey&&!c.owners||!c.channel){if(c.channel&&n[c.channel]){if(c.error&&"EINVAL"===c.error){var u=["GET_HISTORY",c.channel,{}];return void e.sendto(e.historyKeeper,JSON.stringify(u)).then(function(){},function(){})}if(c.state&&1===c.state){o.channel=c.channel;var f=["UPDATE",o.curvePublic,+new Date,o],l=n[c.channel].encrypt(JSON.stringify(f));return n[c.channel].wc.bcast(l).then(function(){},function(e){console.error("Can't migrate this friend",n[c.channel].friend,e)}),void i(c.channel)}}else if(c.channel)return;var d=c[3];if(d&&n[d]){var h=n[d],p=h.decrypt(c[4]),v=JSON.parse(p);if("UPDATE"===v[0]){if(v[1]===o.curvePublic)return;var y=v[3];if(!y.notifications)return;h.friend.notifications=y.notifications,o.channel=d,a.sendTo(t,"UPDATE_DATA",o,{channel:y.notifications,curvePublic:y.curvePublic},function(e){e&&e.error?console.error(e):console.log("friend migrated",h.friend)}),i(d)}}}}}(r,s)}catch(e){console.error(e)}});var s=f.friends||{};Object.keys(s).forEach(function(t){if(44===t.length){var r=s[t];r.notifications||e.join(r.channel).then(function(t){var o=c.Curve.deriveKeys(r.curvePublic,f.curvePrivate),a=c.Curve.createEncryptor(o);n[r.channel]={wc:t,friend:r,decrypt:a.decrypt,encrypt:a.encrypt};var i={lastKnownHash:r.lastKnownHash},s=["GET_HISTORY",r.channel,i];e.sendto(e.historyKeeper,JSON.stringify(s)).then(function(){},function(e){console.error("Can't migrate this friend",r,e)})},function(e){console.error("Can't migrate this friend",r,e)})}})}(),e.send("Migrate-9",!0),f.version=p=9)}).nThen(function(t){p<10&&function(){var i=h.proxy.todo;if(i){var c,l=t(function(){e.send("Migrate-10",!0),f.version=p=10}),d={network:h.network,initialState:"{}",metadata:{owners:h.proxy.edPublic?[h.proxy.edPublic]:[]}};s(function(e){o.get(i,e(function(n,t){if(n||!t)return e.abort(),void l();try{c=JSON.parse(t)}catch(e){}}),d)}).nThen(function(e){if(!c||"object"!=typeof c)return e.abort(),void l();var t={content:{data:{1:{id:"1",color:"color6",item:[],title:u.kanban_todo},2:{id:"2",color:"color3",item:[],title:u.kanban_working},3:{id:"3",color:"color5",item:[],title:u.kanban_done}},items:{},list:[1,2,3]},metadata:{title:u.type.todo,defaultTitle:u.type.todo,type:"kanban"}},s=4,p=!1;if((c.order||[]).forEach(function(e){var n=c.data[e];if(n&&n.task){p=!0;var r=n.state?"3":"1";t.content.data[r].item.push(s),t.content.items[s]={id:s,title:n.task},s++}}),!p)return e.abort(),void l();var v=n.createRandomHash("kanban"),y=n.getSecrets("kanban",v),m=n.getSecrets("todo",i);o.put(v,JSON.stringify(t),e(function(t){if(t)return e.abort(),void l();h.rpc&&(h.rpc.pin([y.channel],function(){}),h.rpc.unpin([m.channel],function(){}));var o=n.hashToHref(v,"kanban");h.manager.addPad(["root"],{title:u.type.todo,owners:d.metadata.owners,channel:y.channel,href:o,roHref:n.hashToHref(n.getViewHashFromKeys(y),"kanban"),atime:+new Date,ctime:+new Date},e(function(e){if(e)console.error(e);else{delete h.proxy.todo;var n=r.createData(f),t={store:h};a.sendTo(t,"MOVE_TODO",{user:n,href:o},{channel:n.notifications,curvePublic:n.curvePublic},function(e){e&&e.error&&console.error(e)})}}))}),d)}).nThen(function(){l()})}}()}).nThen(function(n){if(!(p>=11)){var o=function(){e.send("Migrate-11",!0),f.version=p=11};if(void 0===t.find(f,["settings","security","unsafeLinks"])){var i={store:h},s=r.createData(f);s.curvePublic?a.sendTo(i,"SAFE_LINKS_DEFAULT",{user:s},{channel:s.notifications,curvePublic:s.curvePublic},n(function(e){e&&e.error?console.error(e):o()})):o()}else o()}}).nThen(function(){i.whenRealtimeSyncs(h.realtime,t.mkAsync(t.bake(l)))})};return f.setCustomize=e=>{u=e.Messages},f})(Oe(),te(),X(),An(),xn(),jn(),je(),qe(),M()),Fn}var Un,Bn,Vn=o(be);var Gn,Yn,Jn,qn,Wn=Bn?Un:(Bn=1,Gn=xn(),Yn=Ue(),te(),Jn=je(),qn={anonDriveIntoUser:function(e,n,t){n&&e.loggedIn||"function"!=typeof t?Gn.get(n,function(r,o){var a;if(r)console.error("Cannot migrate recent pads",r);else if(o){try{a=JSON.parse(o)}catch(e){return"function"==typeof t&&t(),void console.error("Cannot parsed recent pads",e)}if(a){var i=e.proxy,s=Yn.init(a.drive,{readOnly:!1,loggedIn:!0,outer:!0}),c=function(){s.fixFiles(!0);var r=e.manager;s.getFiles([s.FILES_DATA]).forEach(function(e){var n=s.getFileData(e),t=n.channel,o=r.findChannel(t);if(0===o.length)n&&r.addPad(null,n,function(e){e&&console.error("Cannot import file:",n,e)});else{if(!n.href)return;o.forEach(function(e){e.data&&!e.data.href&&e.userObject.setHref(t,null,n.href)})}}),i.FS_hashes&&Array.isArray(i.FS_hashes)||(i.FS_hashes=[]),-1===i.FS_hashes.indexOf(n)&&i.FS_hashes.push(n),"function"==typeof t&&Jn.whenRealtimeSyncs(e.realtime,t)};s&&"function"==typeof s.migrate?s.migrate(c):(console.log("oldFo.migrate is not a function"),c())}else"function"==typeof t&&t()}else"function"==typeof t&&t()}):t()}},Un=qn);const zn=ie.mkEvent(!0),Qn=ie.mkEvent(!0),Xn=ie.mkEvent(),Zn=ie.mkEvent(),$n=(e,n)=>{var t,r;const o=e.store,a=e.Store;let i;if(n){const e=a.getStore(n);i=null===(r=null==e?void 0:e.proxy)||void 0===r?void 0:r.drive}else i=null===(t=o.drive)||void 0===t?void 0:t.proxy;return i},et={init:e=>{var n;const{broadcast:t,store:r,Store:o,account:a}=e,i=r.drive||(r.drive={});let s=null===(n=r.proxy)||void 0===n?void 0:n.drive;if((null==s?void 0:s.hash)||ae.createRandomHash("drive"),!s.hash)return i.proxy=s,a.onAccountCacheReady(()=>{zn.fire()}),a.onAccountReady(()=>{Qn.fire()}),{channel:"",onDriveCacheReady:zn.reg,onDriveReady:Qn.reg,onDisconnect:Xn.reg,onReconnect:Zn.reg};throw new Error("NOT IMPLEMENTED")},initAPI:e=>{const{broadcast:n,store:t,Store:r,account:o}=e,a={store:t,Store:r};return{exists:(e,n,r)=>{r({state:Boolean(t.proxy)})},get:(e,n,t)=>{let r=$n(a,n.teamId);t(r?{drive:r}:{error:"ENOTFOUND"})},set:(e,n,t)=>{let o=$n(a,n.teamId);var i,s;o?(i=o,s=n.value,Object.keys(i).forEach(e=>{delete i[e]}),Object.keys(s).forEach(e=>{i[e]=ie.clone(s[e])}),r.onSync(n.teamId,t)):t({error:"ENOTFOUND"})},migrateAnon:(e,n,r)=>{Wn.anonDriveIntoUser(t,n.anonHash,r)}}}};var nt=o(Object.freeze({__proto__:null,Drive:et})),tt=D(),rt=r(qe()),ot=r(bn()),at=We();const it=ie.mkEvent(!0),st=ie.mkEvent(!0),ct=(e,n,t,r)=>{const o=ie.once(ie.mkAsync(r)),{store:a,Store:i}=e;!a.offline&&a.anon_rpc?t.channel?32===t.channel.length&&ae.isValidChannel(t.channel)?a.anon_rpc.send("GET_METADATA",t.channel,(e,n)=>{if(e)return void o({error:e});const r=n&&n[0]||{};o(r),r.rejected||i.getAllStores().forEach(e=>{const n=e.manager.findChannel(t.channel,!0);let o=!1;(n.forEach(e=>{ot(e.data.owners)!==ot(r.owners)&&(o=!0),e.data.owners=r.owners,e.data.atime=+new Date,r.expire&&(e.data.expire=+r.expire)}),o)&&(e.sendEvent||a.sendDriveEvent)("DRIVE_CHANGE",{path:["drive",en.FILES_DATA]})})}):o({error:"EINVAL"}):o({error:"ENOTFOUND"}):o({error:"OFFLINE"})},ut=(e,n,t)=>{if(t.versionHash)return((e,n,t)=>{let r;const{Store:o,store:a,postMessage:i}=e,s=t.channel,c=t.versionHash,u=ae.createChannelId();rt(t=>{ct(e,0,{channel:s},t(e=>{if(e&&e.rejected)return i(n,"PAD_ERROR",{type:"ERESTRICTED"}),void t.abort();r=e.validateKey}))}).nThen(()=>{o.getHistoryRange(n,{cpCount:1,channel:s,lastKnownHash:c},e=>{var t,o;if(e&&e.error)return i(n,"PAD_ERROR",e.error);const f=e.messages||[];if((null===(t=f[f.length-1])||void 0===t?void 0:t.serverHash)!==c)return i(n,"PAD_ERROR",{type:"HASH_NOT_FOUND"});i(n,"PAD_CONNECT",{myID:u,id:s,members:[u]}),(e.messages||[]).forEach(e=>{i(n,"PAD_MESSAGE",{msg:e.msg,time:e.time,user:u.slice(0,16)})}),r&&(null===(o=null==a?void 0:a.messenger)||void 0===o||o.storeValidateKey(s,r)),i(n,"PAD_READY")})})})(e,n,t);const{channels:r,store:o,Store:a,myDeletions:i,postMessage:s}=e,c=t.channel;if(!ae.isValidChannel(c))return s(n,"PAD_ERROR","INVALID_CHAN");const u=void 0===r[c],f=!o.loggedIn,l=r[c]||(r[c]={queue:[],data:{},clients:[],bcast:(e,n,t)=>{l.clients.forEach(function(r){r!==t&&s(r,e,n)})},history:[],pushHistory:(e,n)=>{if(n){let n;for(l.history.push("cp|"+e),n=l.history.length-101;n>0&&!/^cp\|/.test(l.history[n]);n--);return void(l.history=l.history.slice(n))}l.history.push(e)}});-1===l.clients.indexOf(n)&&l.clients.push(n);const d=n=>{const r=()=>{n(!0)};f&&o.anon_rpc?ct(e,0,{channel:c},o=>{if(null==o?void 0:o.rejected)return null===(a=null==de?void 0:le.clearChannel)||void 0===a||a.call(de,c),l.bcast("PAD_ERROR",{type:"ERESTRICTED"}),e.leavePad(null,t,function(){}),void n(!1);var a;r()}):r()};if(!u)return void d(e=>{e&&(s(n,"PAD_CONNECT",{myID:l.wc.myID,id:l.wc.id,members:l.wc.members}),l.wc.members.forEach(e=>{s(n,"PAD_JOIN",e)}),l.history.forEach(e=>{s(n,"PAD_MESSAGE",{msg:tt.removeCp(e),user:l.wc.myID,validateKey:l.data.validateKey})}),s(n,"PAD_READY"))});const h=n=>{const r=null==n?void 0:n.type;"EDELETED"===r&&i[c]&&(delete i[c],n.ownDeletion=!0),l.bcast("PAD_ERROR",n),["EDELETED","EEXPIRED","ERESTRICTED"].includes(r)&&(null==de?void 0:le.clearChannel)&&le.clearChannel(c),["EDELETED","EEXPIRED","ERESTRICTED"].includes(r)&&e.leavePad(null,t,function(){})},p={Cache:o.neverCache?void 0:de,priority:1,onCacheStart:()=>{s(n,"PAD_CACHE")},onCacheReady:()=>{s(n,"PAD_CACHE_READY"),st.fire()},onReady:e=>{const t=e.metadata||{};l.data=t,(null==t?void 0:t.validateKey)&&o.messenger&&o.messenger.storeValidateKey(c,t.validateKey),s(n,"PAD_READY",e.noCache)},onMessage:function(e,n,t,r,o){l.lastHash=o,l.pushHistory(e,r),l.bcast("PAD_MESSAGE",{user:n,msg:e,validateKey:t})},onJoin:function(e){l.bcast("PAD_JOIN",e)},onLeave:function(e){l.bcast("PAD_LEAVE",e)},onError:h,onChannelError:h,onRejected:a.onRejected,onConnectionChange:e=>{e.state||l.bcast("PAD_DISCONNECT")},onMetadataUpdate:e=>{l.data=e||{},a.getAllStores().forEach(n=>{n.manager.findChannel(c,!0).forEach(n=>{n.data.owners=e.owners,n.data.atime=+new Date,e.expire&&(n.data.expire=+e.expire)});(n.sendEvent||o.sendDriveEvent)("DRIVE_CHANGE",{path:["drive",en.FILES_DATA]})}),l.bcast("PAD_METADATA",e)},crypto:{encrypt:function(e){return e},decrypt:function(e){return e}},noChainPad:!0,channel:c,metadata:t.metadata,network:o.network||o.networkPromise,websocketURL:U.getWebsocketURL(),onInit:function(){it.fire()},onConnect:(e,t)=>{l.sendMessage=(n,r,o)=>{t(n,t=>{t?o({error:t}):(l.lastHash=n.slice(0,64),l.pushHistory(tt.removeCp(n),/^cp\|/.test(n)),l.bcast("PAD_MESSAGE",{user:e.myID,msg:tt.removeCp(n),validateKey:l.data.validateKey},r),o())})},l.wc=e,l.queue.forEach(function(e){l.sendMessage(e.message,n)}),l.queue=[],l.bcast("PAD_CONNECT",{myID:e.myID,id:e.id,members:e.members})}};d(e=>{e&&(l.cpNf=tt.start(p))})},ft=(e,n)=>{var t,r,o,a,i,s;const c=e.store;if(null===(r=null===(t=c.messenger)||void 0===t?void 0:t.leavePad)||void 0===r||r.call(t,n),null===(a=null===(o=c.onlyoffice)||void 0===o?void 0:o.leavePad)||void 0===a||a.call(o,n),Object.keys(c.modules).forEach(e=>{var t,r;null===(r=null===(t=c.modules[e])||void 0===t?void 0:t.leavePad)||void 0===r||r.call(t,n)}),!((e,n)=>{const{store:t}=e;if(!t)return!1;if(t.driveChannel===n)return!0;if(at.isSharedFolderChannel(n))return!0;if(ie.find(t,["proxy","teams"])){var r=ie.find(t,["proxy","teams"])||{};return Object.keys(r).some(e=>r[e].channel===n)}if(ie.find(t,["proxy","profile","href"])){let e=ie.find(t,["proxy","profile","href"]);return ae.hrefToHexChannelId(e)===n}})(e,n)){try{le.leaveChannel(n)}catch(e){console.error(e)}null===(s=null===(i=e.channels[n])||void 0===i?void 0:i.cpNf)||void 0===s||s.stop()}delete e.channels[n]},lt={init:e=>{const{broadcast:n,postMessage:t,store:r,Store:o}=e,a={channels:[],postMessage:t,store:r,Store:o,myDeletions:[],leavePad:(e,n,t)=>{}},i=(e,n,t)=>{const r=a.channels[n.channel];(null==r?void 0:r.cpNf)?(ft(a,n.channel),t()):t({error:"EINVAL"})};a.leavePad=i;return{join:(e,n,t)=>{ut(a,e,n)},destroy:(e,n,t)=>{((e,n,t,r)=>{const{store:o,Store:a,channels:i,myDeletions:s}=e;let c,u,f=t,l=!1;if(t&&"object"==typeof t&&({channel:f,force:l,teamId:c,reason:u}=t),f===o.driveChannel&&!l)return void r({error:"User drive removal blocked!"});const d=a.getStore(c);d?d.rpc?(i[f]&&(s[f]=!0),d.rpc.removeOwnedChannel(f,e=>{e&&delete s[f],r({error:e})},u)):r({error:"RPC_NOT_READY"}):r({error:"ENOTFOUND"})})(a,0,n,t)},clear:(e,n,t)=>{((e,n,t,r)=>{const{Store:o}=e,a=o.getStore(t&&t.teamId);a.rpc?a.rpc.clearOwnedChannel(t.channel,e=>{r({error:e})}):r({error:"RPC_NOT_READY"})})(a,0,n,t)},setMetadata:(e,n,t)=>{((e,n,t,r)=>{if(!t.channel)return void r({error:"ENOTFOUND"});if(!t.command)return void r({error:"EINVAL"});const{Store:o}=e,a=o.getStore(t.teamId);if(!a)return void r({error:"ENOTFOUND"});const i=t.channels;delete t.channels,a.rpc.setMetadata(t,(e,n)=>{e?r({error:e}):Array.isArray(n)&&n.length?r(n[0]):r({})}),Array.isArray(i)&&i.forEach(e=>{var n=ie.clone(t);n.channel=e,a.rpc.setMetadata(n,()=>{})})})(a,0,n,t)},getMetadata:(e,n,t)=>{ct(a,0,n,t)},sendMessage:(e,n,t)=>{((e,n,t,r)=>{var o=t.msg,a=e.channels[t.channel];if(a)a.wc?a.sendMessage(o,n,r):(a.queue.push(o),r())})(a,e,n,t)},onCorruptedCache:(e,n,t)=>{((e,n,t)=>{var r=e.channels[t];r&&r.cpNf&&(le.clearChannel(t),r.cpNf.resetCache&&r.cpNf.resetCache())})(a,0,n)},getLastHash:(e,n,t)=>{((e,n,t,r)=>{var o=e.channels[t.channel];o?o.lastHash?r({hash:o.lastHash}):r({error:"EINVAL"}):r({error:"ENOCHAN"})})(a,0,n,t)},leave:i,removeClient:e=>{Object.keys(a.channels).forEach(n=>{let t=a.channels[n].clients.indexOf(e);-1!==t&&a.channels[n].clients.splice(t,1),0===a.channels[n].clients.length&&ft(a,n)})},onJoined:it.reg,onCacheReady:st.reg,getChannels:()=>a.channels}}};var dt,ht,pt,vt,yt,mt,gt,Et,bt,At,Ot,wt,Dt,_t,Tt,St,Nt,It,xt,Ct,Rt,Pt,kt=o(Object.freeze({__proto__:null,Pad:lt}));function Mt(){if(ht)return dt;ht=1;return dt=((e,n,t,r)=>{const o={},a=(e,n,t)=>new Uint8Array(Array.prototype.slice.call(e,n,t)),i=(o,i,s)=>{const{store:c,Store:u}=o,{cryptoKeys:f,channel:l,edPublic:d,validateKey:h,deleteLines:p,cantEdit:v}=i,y=f.curvePrivate,m=r.Mailbox.createEncryptor(f);let g,E={network:c.network,channel:l,noChainPad:!0,validateKey:h,owners:[d],crypto:m,metadata:{deleteLines:!0}},b={};E.onError=e=>{s({error:e.type}),g?.stop()},E.onRejected=u.onRejected,E.onReady=function(){s({results:b}),g?.stop()},E.onMessage=(t,r,o,i,s,c,u)=>{let f=e.tryParse(t);if(!f)return;let d=f._uid||"000";if(f._proof){const t=((t,r,o)=>{const i=t.key,s=t.proof;try{let t=e.decodeBase64(s),c=a(t,0,n.box.nonceLength),u=a(t,n.box.nonceLength),f=n.box.open(u,c,e.decodeBase64(i),e.decodeBase64(o));return r===e.encodeUTF8(f)}catch(e){return console.error(e),!1}})(f._proof,l,y),r=f._proof.key;t&&b[r]&&b[r][d]&&delete b[r][d]}f._time=u&&u.time,p&&(f._hash=s),v&&b[c]&&b[c][d]||(b[c]=b[c]||{},b[c][d]={msg:f,hash:s,time:u&&u.time})},g=t.start(E)};return o.init=e=>{const{store:n,Store:t}=e,r={store:n,Store:t},o={getResponses:(e,n,t)=>i(r,n,t)};return o},o})(X(),h(),D(),M()),dt}function Ft(){if(vt)return pt;vt=1;return pt=((e,n,t)=>{const r={};let o={},a={};r.setCustomize=e=>{o=e.Messages,a=e.AppConfig};var i=function(e,n){n.degraded||n.clients.forEach(function(t){var r=e.clients[t];if(r){var o={id:r.id,cursor:r.cursor};n.sendMsg(JSON.stringify(o))}})},s=function(e,n,t){var r=n.members,o=a.degradedLimit||8;t.degraded=r.length-1>=o,e.emit("DEGRADED",{degraded:t.degraded},t.clients)},c=function(e,n,r,o){var a=n.channel,c=n.secret;c.keys.cryptKey&&(c.keys.cryptKey=function(e){for(var n=Object.keys(e).length,t=new Uint8Array(n),r=0;r{const f={};let l={};f.setCustomize=e=>{l=e.ApiConfig};var d=i.Nacl,h=function(e,n,t,r){let o=Object.keys(e.clients).filter(t=>Boolean(e.clients[t].admin)===n);o.length&&e.emit(t,{channel:r},[o])},p=function(n,t,r,o){var a=e.mkAsync(o);if(t&&!n.adminRdyEvt)return void a("EFORBIDDEN");let i=l.httpUnsafeOrigin;e.fetchApi(i,"config",!0,o=>{n.moderatorKeys=o.moderatorKeys,n.adminKeys=o.adminKeys;var i=o.supportMailboxKey;if(i){if(!t||e.find(n.store.proxy,["mailboxes","supportteam","keys","curvePublic"])===i)return t?n.adminRdyEvt.reg(()=>{a(null,{supportKey:i,myCurve:r.adminCurvePrivate||e.find(n.store.proxy,["mailboxes","supportteam","keys","curvePrivate"]),theirPublic:r.curvePublic,notifKey:r.curvePublic})}):void a(null,{supportKey:i,myCurve:n.store.proxy.curvePrivate,theirPublic:r.curvePublic||i,notifKey:i});a("EFORBIDDEN")}else a("E_NOT_INIT")})},v=function(n,t,r,o){var s,c,f=e.once(e.mkAsync(o));a(e=>{p(n,r,t,e((n,t)=>{if(n)return e.abort(),void f({error:n});s=t.theirPublic,c=t.myCurve}))}).nThen(()=>{var r,o=i.Curve.deriveKeys(s,c),a=i.Curve.createEncryptor(o),l={network:n.store.network,channel:t.channel,noChainPad:!0,crypto:a,owners:[]},d=[];f=e.both(function(){r&&"function"==typeof r.stop&&r.stop()},f),l.onMessage=function(e,n,t,r,o,a,i){var s=i&&i.time;try{e=JSON.parse(e)}catch(e){return void console.error(e)}e.time=s,a&&(e.author=a),d.push(e)},l.onError=f,l.onChannelError=f,l.onReady=function(){f(null,d)},r=u.start(l)})},y=function(t,r,o,s){var c=e.find(t,["store","mailbox"]),u=e.find(t,["store","anon_rpc"]);if(c)if(u){var f,l,d,h=r.channel,v=r.title,y=r.ticket,m=+new Date;a(e=>{p(t,o,r,e((n,t)=>{if(n)return e.abort(),void s({error:n});f=t.supportKey,l=t.theirPublic,d=t.myCurve}))}).nThen(e=>{var n=i.Curve.deriveKeys(l,d),t=i.Curve.createEncryptor(n),r=JSON.stringify(y),o=t.encrypt(r);u.send("WRITE_PRIVATE_MESSAGE",[h,o],e((n,t)=>{if(n)return e.abort(),void s({error:n});m=t&&t[0]}))}).nThen(e=>{if(o){var n=t.adminDoc.proxy.tickets.active;if(n[h])return e.abort(),void s({error:"EEXISTS"});n[h]={title:y.title,restored:y.legacy,premium:!1,time:m,author:r.name,supportKey:f,lastAdmin:!0,authorKey:r.curvePublic,notifications:r.notifications}}}).nThen(e=>{o||(t.supportData[h]={time:+new Date,title:v,curvePublic:f},t.Store.onSync(null,e()))}).nThen(a=>{var i=o?r.notifications:n.getChannelIdFromKey(f);c.sendTo("NEW_TICKET",{title:v,channel:h,time:m,isAdmin:o,supportKey:f,premium:o?"":e.find(t,["store","account","plan"]),user:e.find(r.ticket,["sender","curvePublic"])?void 0:{supportTeam:!0}},{channel:i,curvePublic:l},a(e=>{console.error(e),e&&e.error&&(a.abort(),delete t.supportData[h]),s(e)}))}).nThen(()=>{var t=o?r.notifications:n.getChannelIdFromKey(f);c.sendTo("NOTIF_TICKET",{title:v,channel:h,time:m,isAdmin:o,isNewTicket:!0,user:e.find(r.ticket,["sender","curvePublic"])?void 0:{supportTeam:!0}},{channel:t,curvePublic:l},()=>{})})}else s({error:"anonymous rpc session not ready"});else s({error:"E_NOT_READY"})},m=function(t,r,o,s){var c,u,f,l,d=e.find(t,["store","mailbox"]),h=e.find(t,["store","anon_rpc"]);d?h?r?.ticket?a(e=>{p(t,o,r,e((n,t)=>{if(n)return e.abort(),void s(n);c=t.theirPublic,u=t.myCurve,f=t.notifKey}))}).nThen(e=>{var n=i.Curve.deriveKeys(c,u),t=i.Curve.createEncryptor(n),o=JSON.stringify(r.ticket),a=t.encrypt(o);h.send("WRITE_PRIVATE_MESSAGE",[r.channel,a],e((n,t)=>{if(n)return e.abort(),void s(n);l=t&&t[0],s(void 0,l)}))}).nThen(()=>{var t=o?r.notifChannel:n.getChannelIdFromKey(f);t&&d.sendTo("NOTIF_TICKET",{isAdmin:o,title:r.ticket.title,isClose:r.ticket.close,channel:r.channel,time:l,user:e.find(r.ticket,["sender","curvePublic"])?void 0:{supportTeam:!0}},{channel:t,curvePublic:f},()=>{})}):s("E_NO_DATA"):s("anonymous rpc session not ready"):s("E_NOT_READY")},g=function(t,r,o){var a=n.getSecrets("support",r),u={data:{},channel:a.channel,crypto:i.createEncryptor(a.keys),userName:"support",ChainPad:c,classic:!0,network:t.store.network,metadata:{validateKey:a.keys.validateKey||void 0}},f=t.adminDoc=s.create(u);f.proxy.on("ready",function(){var r=f.proxy;if(r.tickets=r.tickets||{},r.tickets.active=r.tickets.active||{},r.tickets.closed=r.tickets.closed||{},r.tickets.pending=r.tickets.pending||{},t.adminRdyEvt.fire(),o(),!t.supportRpc)return;let a=function(n){if(!n.adminDoc||!n.supportRpc)return;let t=n.adminDoc.metadata&&n.adminDoc.metadata.channel,r=n.adminDoc.proxy.tickets,o=[t,...Object.keys(r.active),...Object.keys(r.pending),...Object.keys(r.closed)];return e.deduplicateString(o).sort()}(t),i=n.hashChannelList(a);t.supportRpc.getServerHash(function(e,n){e?console.warn(e):n!==i&&t.supportRpc.reset(a,function(e){e&&console.warn(e)})})}),f.proxy.on("change",["recorded"],function(){h(t,!0,"RECORDED_CHANGE","")}),f.proxy.on("remove",["recorded"],function(){h(t,!0,"RECORDED_CHANGE","")})},E=function(t,o,i){let s=i(),c=t.store.proxy,u=e.find(c,["mailboxes","supportteam","keys","curvePublic"]),f=e.find(c,["mailboxes","supportteam","keys","curvePrivate"]);o||(t.adminRdyEvt=e.mkEvent(!0)),a(e=>{p(t,!1,{},e((n,r)=>{if(setTimeout(s),n)e.abort();else if(r.theirPublic!==u){try{delete c.mailboxes.supportteam,t.store.mailbox.close("supportteam")}catch(e){}return delete t.adminRdyEvt,void e.abort()}}))}).nThen(n=>{!function(n,t){let o,a,i=e.mkAsync(t),s=n.store.proxy,c=e.find(s,["mailboxes","supportteam","keys","curvePrivate"]);if(c){try{let n=d.sign.keyPair.fromSeed(e.decodeBase64(c));o=e.encodeBase64(n.secretKey),a=e.encodeBase64(n.publicKey)}catch(e){return void i(e)}r.create(n.store.network,{edPublic:a,edPrivate:o},(e,t)=>{e?i(e):(console.log("Support RPC ready, public key is ",a),n.supportRpc=t,i())})}else i("EFORBIDDEN")}(t,n(e=>{e&&console.error("Support RPC not ready",e)}))}).nThen(e=>{let r=f.slice(0,24),o=n.getEditHashFromKeys({version:2,type:"support",keys:{editKeyStr:r}});g(t,o,e())}).nThen(()=>{console.log("Support admin loaded")})};var b=function(n,t,r,o){let a=n.store.proxy,i=e.find(a,["mailboxes","supportadmin"]);i?n.store.mailbox.open("supportadmin",i,function(t){n.store.mailbox.close("supportadmin",function(){});let r=e.clone(t||{}),a=[];Object.keys(r).forEach(e=>{let t=r[e];if("CLOSE"===t.type)return void(a.includes(t.content.id)||a.push(t.content.id));let o=t.author,i=t.content&&t.content.title;((e,n,t)=>{let r=e.adminDoc.proxy;return["active","pending","closed"].some(e=>{let o=r.tickets[e];return Object.keys(o).some(e=>{let r=o[e];return r.authorKey===n&&r.title===t&&r.restored})})})(n,o,i)&&(a.includes(t.content.id)||a.push(t.content.id))}),Object.keys(r).forEach(e=>{let n=r[e];n.content&&a.includes(n.content.id)&&delete r[e]}),o(r)},!0,{dump:!0}):o({error:"ENOENT"})};const A={};let O=(n,t,r,o)=>{let a;try{let n=d.sign.keyPair.fromSeed(e.decodeBase64(r));a=e.encodeBase64(n.publicKey)}catch(e){return void o(e)}n.Store.adminRpc(null,{cmd:"ADMIN_DECREE",data:["SET_SUPPORT_KEYS",[t,a]]},o)},w=(e,n,t,r)=>{e.Store.adminRpc(null,{cmd:"GET_MODERATORS",data:{}},r)};return f.init=function(r,i,s){var c={};if(r.store&&r.store.modules&&r.store.modules.support)return r.store.modules.support;var u=r.store,f=u.proxy.support=u.proxy.support||{},g={moderatorKeys:l.moderatorKeys,adminKeys:l.adminKeys,supportData:f,store:r.store,Store:r.Store,emit:s,clients:{}};return e.find(u,["proxy","mailboxes","supportteam"])&&E(g,!1,i),c.ctx=g,c.removeClient=function(e){delete g.clients[e]},c.leavePad=function(){},c.addAdminTicket=function(n,r){!function(n,r,o){n.adminRdyEvt?n.adminRdyEvt.reg(()=>{let i;A[r.channel]=e.mkEvent(!0),a(e=>{p(n,!0,r,e((n,t)=>{if(n)return e.abort(),A[r.channel].fire(n),delete A[r.channel],void o(!0);i=t.supportKey}))}).nThen(()=>{var e=Math.floor(2e3*Math.random());setTimeout(()=>{var e=n.adminDoc.proxy;if(e.tickets.active[r.channel]||e.tickets.closed[r.channel]||e.tickets.pending[r.channel])return A[r.channel].fire(),delete A[r.channel],void o(!0);e.tickets.active[r.channel]={title:r.title,premium:r.premium,time:r.time,author:r.user&&r.user.displayName,supportKey:r.supportKey||i,authorKey:r.user&&r.user.curvePublic},t.whenRealtimeSyncs(n.adminDoc.realtime,function(){A[r.channel].fire(),delete A[r.channel],o(!0)}),h(n,!0,"NEW_TICKET",r.channel),n.supportRpc&&n.supportRpc.pin([r.channel],()=>{})},e)})}):o(!0)}(g,n,r)},c.updateAdminTicket=function(e){!function(e,n){e.adminRdyEvt&&e.adminRdyEvt.reg(()=>{var t=Math.floor(2e3*Math.random());setTimeout(()=>{var t=e.adminDoc.proxy;let r=t.tickets.active[n.channel]||t.tickets.pending[n.channel];r&&(n.time<=r.time||(n.isClose&&(t.tickets.closed[n.channel]=r,delete t.tickets.active[n.channel],delete t.tickets.pending[n.channel]),r.time=n.time,r.lastAdmin=!1,h(e,!0,"UPDATE_TICKET",n.channel)))},t)})}(g,e)},c.updateAdminKey=function(t,r){((t,r,o)=>{let i=r.supportKey,s=n.getBoxPublicFromSecret(i),c=t.store.proxy;const u=e.find(c,["mailboxes","supportteam","keys","curvePrivate"]),f=e.find(c,["mailboxes","supportteam","keys","curvePublic"]);p(t,!1,{},(n,r)=>{if(n)return void o(!0);if(s!==r.theirPublic)return void o(!0);if(u===i||f===s)return void o(!0);let c=e.find(t,["store","mailbox"]);try{t.adminDoc&&t.adminDoc.stop(),c&&c.close("supportteam"),t.supportRpc&&t.supportRpc.destroy(),t.adminRdyEvt=e.mkEvent(!0)}catch(e){console.error(e)}t.Store.addAdminMailbox(null,{version:2,priv:i},e=>{e&&e.error?o(!0):a(e=>{E(t,!0,e),t.adminRdyEvt.reg(()=>{h(t,!0,"UPDATE_RIGHTS"),o(!1)})})})})})(g,t,r)},c.checkAdminTicket=function(e,n){!function(e,n,t){e.adminRdyEvt?e.adminRdyEvt.reg(()=>{let r=e.adminDoc.proxy,o=r.tickets.active[n.channel]||r.tickets.pending[n.channel];if(o)return t(o);A[n.channel]&&A[n.channel].reg(e=>{if(e)return t(!1);t(!0)})}):t(!0)}(g,e,n)},c.addUserTicket=function(e,n){!function(e,n,t){if(!e.supportData)return void t(!0);let r=n.channel;e.supportData[r]={time:n.time,title:n.title,curvePublic:n.supportKey},e.Store.onSync(null,function(){t(!0)})}(g,e,n)},c.updateUserTicket=function(e){!function(e,n){if(h(e,!1,"UPDATE_TICKET",n.channel),n.isClose){let t=e.supportData[n.channel];if(!t)return;t.closed=!0}}(g,e)},c.execCommand=function(r,i,s){var c=i.cmd,u=i.data;"MAKE_TICKET"!==c?"GET_MY_TICKETS"!==c?"REPLY_TICKET"!==c?"CLOSE_TICKET"!==c?"DELETE_TICKET"!==c?"MAKE_TICKET_ADMIN"!==c?"LIST_TICKETS_ADMIN"!==c?"LOAD_TICKET_ADMIN"!==c?"REPLY_TICKET_ADMIN"!==c?"CLOSE_TICKET_ADMIN"!==c?"MOVE_TICKET_ADMIN"!==c?"GET_RECORDED"!==c?"SET_RECORDED"!==c?"USE_RECORDED"!==c?"SEARCH_ADMIN"!==c?"FILTER_TAGS_ADMIN"!==c?"SET_TAGS_ADMIN"!==c?"GET_LEGACY"!==c?"DUMP_LEGACY"!==c?"CLEAR_LEGACY"!==c?"RESTORE_LEGACY"!==c?"GET_PRIVATE_KEY"!==c?"DISABLE_SUPPORT"!==c?"ROTATE_KEYS"!==c?"ADD_MODERATOR"!==c?s({error:"NOT_SUPPORTED"}):function(n,t,r,o){let a=n.store.proxy;var i=e.find(n,["store","mailbox"]);let s=e.find(a,["mailboxes","supportteam","keys","curvePublic"]),c=e.find(a,["mailboxes","supportteam","keys","curvePrivate"]),u=e.find(a,["mailboxes","supportteam","lastKnownHash"]),f=a.edPublic;p(n,!1,{},(e,r)=>{e?o({error:e}):r.theirPublic===s&&n.moderatorKeys.includes(f)?i.sendTo("ADD_MODERATOR",{supportKey:c,lastKnownHash:u},{channel:t.mailbox,curvePublic:t.curvePublic},()=>{o()}):o({error:"EFORBIDDEN"})})}(g,u,0,s):function(t,r,i,s){let c,u=e.once(e.mkAsync(s)),f=t.store.proxy,l=f.edPublic;const h=d.box.keyPair(),v=e.encodeBase64(h.publicKey),y=e.encodeBase64(h.secretKey),m=e.find(f,["mailboxes","supportteam","keys","curvePrivate"]),g=e.find(f,["mailboxes","supportteam","keys","curvePublic"]);if(!y||!v)return void u({error:"INVALID_KEY"});let b;a(e=>{p(t,!1,{},e((n,t)=>{if("E_NOT_INIT"!==n)return n?(u({error:n}),void e.abort()):void(c=t.theirPublic)}))}).nThen(e=>{if(!t.adminKeys.includes(l))return e.abort(),void u({error:"EFORBIDDEN"})}).nThen(e=>{if(c)return t.moderatorKeys.includes(l)?g!==c?(e.abort(),void u({error:"EFORBIDDEN"})):void 0:(e.abort(),void u({error:"EINVAL"}))}).nThen(e=>{c&&t.adminRdyEvt.reg(()=>{let r=t.adminDoc.proxy;b=t.adminDoc.metadata&&t.adminDoc.metadata.channel;let a=y.slice(0,24),i=n.getEditHashFromKeys({version:2,type:"support",keys:{editKeyStr:a}}),s={network:t.store.network,initialState:"{}"};(r.oldKeys=r.oldKeys||{})[g]={curvePrivate:m,rotatedOn:+new Date,rotatedBy:l},o.put(i,JSON.stringify(r),e(n=>{if(n)return e.abort(),void u({error:n})}),s)})}).nThen(e=>{O(t,v,y,e(n=>{if(n&&n.error)return e.abort(),void u(n)}))}).nThen(()=>{if(!c)return;t.adminDoc&&t.adminDoc.stop();let n=e.find(t,["store","mailbox"]);n&&n.close("supportteam"),t.supportRpc&&t.supportRpc.destroy(),t.adminRdyEvt=e.mkEvent(!0)}).nThen(e=>{t.Store.addAdminMailbox(null,{version:2,priv:y},e(n=>{if(n&&n.error)return e.abort(),c?O(t,g,m,()=>{u(n)}):void u(n)}))}).nThen(n=>{if(!c)return;let r=e.find(t,["store","mailbox"]);w(t,0,0,n(e=>{if(e&&e.error)return void u({success:!0,noNotify:!0});let n=e&&e[0];Object.keys(n||{}).forEach(e=>{let t=n[e];r.sendTo("MODERATOR_NEW_KEY",{supportKey:y},{channel:t.mailbox,curvePublic:t.curvePublic},()=>{})})}))}).nThen(e=>{E(t,!0,e)}).nThen(e=>{b&&t.Store.adminRpc(null,{cmd:"ARCHIVE_DOCUMENT",data:{id:b,reason:"Deprecated support pad"}},e())}).nThen(()=>{u({success:!0})})}(g,0,0,s):function(n,t,r,o){let i,s=e.once(e.mkAsync(o)),c=n.store.proxy.edPublic;a(e=>{p(n,!1,{},e(n=>{if(n)return s({error:n}),void e.abort()}))}).nThen(e=>{if(!n.adminKeys.includes(c))return e.abort(),void s({error:"EFORBIDDEN"})}).nThen(e=>{n.Store.adminRpc(null,{cmd:"ARCHIVE_SUPPORT",data:{}},e(n=>{if(n&&n.error)return e.abort(),void s(n)}))}).nThen(e=>{n.Store.adminRpc(null,{cmd:"ADMIN_DECREE",data:["SET_SUPPORT_KEYS",["",""]]},e(function(n){if(n&&n.error)return e.abort(),void s(n)}))}).nThen(e=>{w(n,0,0,e(n=>{if(!n||n.error)return e.abort(),void s();i=n[0]||{}}))}).nThen(()=>{let e=a;Object.keys(i).forEach(t=>{e=e(e=>{n.Store.adminRpc(null,{cmd:"REMOVE_MODERATOR",data:t},e(e=>{e&&e.error&&console.error("Error removing moderator data",t,e.error)}))}).nThen}),e(()=>{s()})})}(g,0,0,s):function(n,t,r,o){let a=n.store.proxy,i=e.find(a,["mailboxes","supportteam","keys","curvePublic"]),s=e.find(a,["mailboxes","supportteam","keys","curvePrivate"]);p(n,!1,{},(e,n)=>{e?o({error:e}):(i&&n.theirPublic!==i&&(s=void 0),o({curvePrivate:s,curvePublic:n.theirPublic}))})}(g,0,0,s):function(t,r,o,a){let i=t.store.proxy,s=e.find(i,["mailboxes","supportadmin"]);if(!s)return void a({error:"ENOENT"});if(!t.adminRdyEvt)return void a({error:"EFORBIDDEN"});let c=r.messages,u=r.hashes,f=c[0],l=c[c.length-1];f?t.adminRdyEvt.reg(()=>{let r={name:e.find(f,["sender","name"]),notifications:e.find(f,["sender","notifications"]),curvePublic:e.find(f,["sender","curvePublic"]),channel:n.createChannelId(),title:f.title,time:l.time,ticket:{legacy:!0,title:f.title,sender:f.sender,messages:c}};y(t,r,!0,e=>{e&&e.error?a(e):(u.forEach(e=>{s.viewed.push(e)}),t.Store.onSync(null,function(){a({done:!0})}))})}):a({error:"EINVAL"})}(g,u,0,s):function(e,n,t,r){let o=e.store.proxy;e.store.mailbox.close("supportadmin",function(){delete o.mailboxes.supportadmin,e.Store.onSync(null,function(){r({done:!0})})})}(g,0,0,s):function(n,t,r,o){let a=n.store.proxy,i=e.find(a,["mailboxes","supportadmin"]);if(!i)return void o({error:"ENOENT"});let s=e.clone(i);s.lastKnownHash=void 0,s.viewed=[],n.store.mailbox.open("supportadmin",s,function(e){n.store.mailbox.close("supportadmin",function(){}),o(e)},!0,{dump:!0})}(g,0,0,s):b(g,0,0,s):((e,n,r,o)=>{e.adminRdyEvt?e.adminRdyEvt.reg(()=>{let r=e.adminDoc.proxy.tickets,a=n.channel;(r.active[a]||r.pending[a]||r.closed[a]).tags=n.tags||[],t.whenRealtimeSyncs(e.adminDoc.realtime,function(){let e=[];["active","pending","closed"].forEach(n=>{let t=r[n];Object.keys(t).forEach(n=>{(t[n].tags||[]).forEach(n=>{e.includes(n)||e.push(n)})})}),o({done:!0,allTags:e})})}):o({error:"EFORBIDDEN"})})(g,u,0,s):((e,n,t,r)=>{if(!e.adminRdyEvt)return void r({error:"EFORBIDDEN"});let o=n.tags||[];e.adminRdyEvt.reg(()=>{let n=e.adminDoc.proxy.tickets;if(!o.length)return void r({all:!0});let t=[];["active","pending","closed"].forEach(e=>{let r=n[e];Object.keys(r).forEach(e=>{(r[e].tags||[]).some(e=>o.includes(e))||t.push(e)})}),r({tickets:t})})})(g,u,0,s):((n,t,r,o)=>{if(!n.adminRdyEvt)return void o({error:"EFORBIDDEN"});let a=t.tags||[],i=(t.text||"").toLowerCase();n.adminRdyEvt.reg(()=>{let t=n.adminDoc.proxy.tickets,r={},s=(n,t,o)=>{let a=e.clone(t);a.category=o,r[n]=a};["active","pending","closed"].some(n=>{let o=t[n];return Object.keys(o).some(t=>{let c=o[t];if(a.length&&!(c.tags||[]).some(e=>a.includes(e)))return;let u=e.hexToBase64(t).slice(0,10);if(i===u)return r={},s(t,c,n),!0;(!i||c.title.toLowerCase().includes(i))&&s(t,c,n)})}),o({tickets:r})})})(g,u,0,s):function(e,n,t,r){if(!e.adminRdyEvt)return void r({error:"EFORBIDDEN"});let o=n.id;e.adminRdyEvt.reg(()=>{let n=e.adminDoc.proxy,t=(n.recorded=n.recorded||{})[o];t&&(t.count=(t.count||0)+1),r()})}(g,u,0,s):function(e,n,r,o){if(!e.adminRdyEvt)return void o({error:"EFORBIDDEN"});let a=n.id,i=n.content,s=Boolean(n.remove);e.adminRdyEvt.reg(()=>{let n=e.adminDoc.proxy,r=n.recorded=n.recorded||{};s?delete r[a]:r[a]={content:i,count:0},t.whenRealtimeSyncs(e.adminDoc.realtime,function(){o({done:!0})})})}(g,u,0,s):function(n,t,r,o){n.adminRdyEvt?n.adminRdyEvt.reg(()=>{let t=n.adminDoc.proxy,r=t.recorded=t.recorded||{};o({messages:e.clone(r)})}):o({error:"EFORBIDDEN"})}(g,0,0,s):function(e,n,r,o){if(!e.adminRdyEvt)return void o({error:"EFORBIDDEN"});let a=n.channel,i=n.from,s=n.to;e.adminRdyEvt.reg(()=>{let n=e.adminDoc.proxy,r=n.tickets[i],c=n.tickets[s];if(!i||!s)return void o({error:"EINVAL"});let u=r[a];u&&!c[a]?(c[a]=u,delete r[a],t.whenRealtimeSyncs(e.adminDoc.realtime,function(){o({moved:!0})})):o({error:"CANT_MOVE"})})}(g,u,0,s):function(e,n,r,o){if(!e.adminRdyEvt)return void o({error:"EFORBIDDEN"});let a=n.supportKey;e.adminRdyEvt.reg(()=>{let r=e.adminDoc.proxy;r.oldKeys&&r.oldKeys[a]&&(n.adminCurvePrivate=r.oldKeys[a].curvePrivate),m(e,n,!0,r=>{if(r)o({error:r});else{var a=e.adminDoc.proxy,i=a.tickets.active[n.channel]||a.tickets.pending[n.channel];i.time=+new Date,i.lastAdmin=!0,a.tickets.closed[n.channel]=i,delete a.tickets.active[n.channel],delete a.tickets.pending[n.channel],t.whenRealtimeSyncs(e.adminDoc.realtime,function(){o({closed:!0})})}})})}(g,u,0,s):function(e,n,t,r){if(!e.adminRdyEvt)return void r({error:"EFORBIDDEN"});let o=n.supportKey;e.adminRdyEvt.reg(()=>{let t=e.adminDoc.proxy;t.oldKeys&&t.oldKeys[o]&&(n.adminCurvePrivate=t.oldKeys[o].curvePrivate),m(e,n,!0,(t,o)=>{if(t)r({error:t});else{var a=e.adminDoc.proxy,i=a.tickets.active[n.channel]||a.tickets.pending[n.channel];i.time=o,i.lastAdmin=!0,r({sent:!0})}})})}(g,u,0,s):function(n,t,r,o){let a=t.supportKey;n.adminRdyEvt.reg(()=>{let r=n.adminDoc.proxy;r.oldKeys&&r.oldKeys[a]&&(t.adminCurvePrivate=r.oldKeys[a].curvePrivate),v(n,t,!0,function(r,a){if(r)return void o({error:r});var i=n.adminDoc.proxy;if(!Array.isArray(a)||!a.length)return void o(a);a.sort((e,n)=>e.time-n.time);let s=a[a.length-1],c=a.some(n=>{let r=e.find(n,["sender","curvePublic"]);if(t.curvePublic===r)return e.find(n,["sender","quota","plan"])});var u=i.tickets.active[t.channel];if(u){if(s.legacy&&(s=Array.isArray(s.messages)&&s.messages[s.messages.length-1]),u.time=s.time,u.premium=c,s.sender){const e=s.sender.edPublic;u.lastAdmin=e?n.moderatorKeys.includes(e):!s.sender.blockLocation}s.close&&(i.tickets.closed[t.channel]=u,delete i.tickets.active[t.channel],h(n,!0,"UPDATE_TICKET",t.channel))}o(a)})})}(g,u,0,s):function(n,t,r,o){n.adminRdyEvt?(n.clients[r]||(n.clients[r]={admin:!0}),n.adminRdyEvt.reg(()=>{var r=n.adminDoc.proxy;return"pending"===t.type?o(e.clone(r.tickets.pending)):"closed"===t.type?o(e.clone(r.tickets.closed)):void o(e.clone(r.tickets.active))})):o({error:"EFORBIDDEN"})}(g,u,r,s):function(e,n,t,r){e.adminRdyEvt?e.adminRdyEvt.reg(()=>{y(e,n,!0,r)}):r({error:"EFORBIDDEN"})}(g,u,0,s):function(e,n,t,r){let o=e.supportData,a=n.channel;o[a]&&o[a].closed?(delete o[a],r({deleted:!0})):r({error:"ENOTCLOSED"})}(g,u,0,s):function(e,n,t,r){m(e,n,!1,e=>{r(e?{error:e}:{closed:!0})})}(g,u,0,s):function(e,n,t,r){m(e,n,!1,e=>{r(e?{error:e}:{sent:!0})})}(g,u,0,s):function(n,t,r,o){var i=[],s=a;n.clients[r]||(n.clients[r]={admin:!1}),Object.keys(n.supportData).forEach(function(t){s=s(r=>{var o=e.clone(n.supportData[t]);v(n,{channel:t,curvePublic:o.curvePublic},!1,r((e,r)=>{if(e){if("EDELETED"===e.type)return void delete n.supportData[t];o.error=e}else o.messages=r,r.length&&r[r.length-1].close&&(n.supportData[t].closed=!0,o.closed=!0);o.id=t,i.push(o)}))}).nThen}),s(()=>{i.sort((e,n)=>e.closed&&n.closed?e.time-n.time:e.closed?1:n.closed?-1:e.time-n.time),o({tickets:i})})}(g,0,r,s):function(e,n,t,r){y(e,n,!1,r)}(g,u,0,s)},c},f})(X(),te(),je(),In(),xn(),qe(),M(),T(),x(),D()),yt}function Ht(){if(Et)return gt;Et=1;var e,n,t,r;return e=X(),n=M(),r=function(t,r,o,a){var i=r.channel,s=r.secret;s.keys.cryptKey&&(s.keys.cryptKey=function(e){for(var n=Object.keys(e).length,t=new Uint8Array(n),r=0;r{var o={id:t,msg:n.msg,uid:n.uid,user:n.user};"ISAVE"===o.msg&&(e.pending[n.uid]=!0),a.sendMsg(JSON.stringify(o),t=>{e.pending[n.uid]?(delete e.pending[n.uid],r(t)):setTimeout(r,1e3)});const i=a.clients||[];e.emit("MESSAGE",o,i.filter(e=>e!==t))}):r({error:"NO_CHAN"})}else r({error:"NO_CLIENT"})}(a,i,e,t):r(a,i,e,t)},o},gt=t}function jt(){if(At)return bt;At=1;return bt=(e=>{var n={},t=function(e,n,t){var r=e.clients[n];if(r){var o=e.channels[r.channel];o?(t(),o.history.forEach(function(t){e.emit("MESSAGE",{msg:t,validateKey:o.validateKey},[n])}),e.emit("HISTORY_SYNCED",{},[n])):t({error:"ENOCHAN"})}else t({error:"ENOENT"})};return n.init=function(n,r){var o={},a={store:n,emit:r,channels:{},clients:{}};return o.removeClient=function(e){!function(e,n){var t,r=function(e){return e!==n};for(var o in e.channels)(t=e.channels[o]).clients=t.clients.filter(r),0===t.clients.length&&(t.wc&&t.wc.leave(),delete e.channels[o]);if(e.clients[n]){var a=e.clients[n].channel,i=e.channels[a];i&&e.emit("LEAVE",{id:n},[i.clients[0]]),delete e.clients[n]}}(a,e)},o.leavePad=function(e){!function(e,n){Object.keys(e.channels).some(function(t){var r=e.channels[t];if(r.padChan===n)return r.wc&&r.wc.leave(),delete e.channels[t],!0})}(a,e)},o.execCommand=function(n,r,o){var i=r.cmd,s=r.data;"SEND_MESSAGE"!==i?"UPDATE_HASH"!==i?"OPEN_CHANNEL"!==i?"GET_HISTORY"!==i?"REENCRYPT"!==i||function(e,n,t,r){var o=n.channel,a=e.store.network,i=function(e){var t=a.historyKeeper,o={metadata:n.metadata},i=["GET_HISTORY",e.id,o];a.sendto(t,JSON.stringify(i)),n.msgs.forEach(function(n){e.bcast(n)}),e.leave(),r()};e.store.anon_rpc.send("IS_NEW_CHANNEL",o,function(e,n){var t;e?r({error:e}):(n&&n.length&&"object"==typeof n[0]?t=n[0].isNew:r({error:"INVALID_RESPONSE"}),t?a.join(o).then(i,function(e){r({error:e})}):r({error:"EEXISTS"}))})}(a,s,0,o):t(a,n,o):function(n,r,o,a){var i=r.channel,s=r.padChan,c=n.store.network,u=!0,f=n.clients[o];if(f)a();else{f=n.clients[o]={channel:i};var l=n.channels[i];if(l)return f.id||(f.id=l.wc.myID+"-"+o),t(n,o,function(){n.emit("READY",l.clients,[o])}),l.clients.push(o),void a();var d=Math.floor(1e6*Math.random()),h=function(e){n.channels[i]=n.channels[i]||{history:[],validateKey:r.validateKey},(l=n.channels[i]).padChan=s,f.id||(f.id=e.myID+"-"+o),l.clients&&l.clients.forEach(function(t){n.clients[t]&&(n.clients[t].id=e.myID+"-"+t)}),e.on("join",function(){}),e.on("leave",function(){}),e.on("message",function(e){l.history.push(e),n.emit("MESSAGE",{msg:e,validateKey:l.validateKey},l.clients)}),l.wc=e,l.sendMsg=function(n,t){t=t||function(){};var r=n.slice(0,64);e.bcast(n).then(function(){l.history.push(n),l.lastKnownHash=r,t()},function(e){t({error:e})})},u&&(l.clients=[o],l.lastCpHash=r.lastCpHash,u=!1,a());var t=c.historyKeeper,h={txid:d,lastKnownHash:l.lastKnownHash||l.lastCpHash,metadata:{validateKey:r.validateKey,owners:r.owners,expire:r.expire}},p=["GET_HISTORY",e.id,h];t&&c.sendto(t,JSON.stringify(p)).then(function(){},function(e){console.error(e)})};c.on("message",function(t,r){if(n.channels[i]&&r===c.historyKeeper){var o;try{o=JSON.parse(t)}catch(e){}if(o&&!(o.txid&&o.txid!==d||o.channel&&o.channel!==i))if(o.validateKey&&o.channel)l.validateKey||(l.validateKey=o.validateKey);else if(o.state&&1===o.state&&o.channel)n.emit("READY",l.clients,l.clients);else if(o.error&&o.channel){if("EDELETED"===o.error&&o.message)return l.wc?.leave(),e.send("RTCHANNEL_DELETED",!0),n.emit("ERROR",{error:"EDELETED",reason:o.message},l.clients);if("EUNKNOWN"===o.error){let e=c.historyKeeper,n=["GET_HISTORY",l?.wc.id,{txid:d}];return void c.sendto(e,JSON.stringify(n))}n.emit("READY",l.clients,l.clients)}else if(!(Array.isArray(o)&&o[0]&&o[0]!==d||(t=o[4],o[3]!==i))){var a=t.slice(0,64);a!==l.lastKnownHash&&a!==l.lastCpHash&&(l.lastKnownHash=a,n.emit("MESSAGE",{msg:t},l.clients),l.history.push(t))}}}),c.join(i).then(h,function(e){a({error:e})}),c.on("reconnect",function(){n.channels[i]&&c.join(i).then(h,function(e){console.error(e)})})}}(a,s,n,o):function(e,n,t,r){var o=e.clients[t];if(o){var a=e.channels[o.channel];if(a){var i=n,s=-1;a.history.some(function(e,n){if(e.slice(0,64)===i)return s=n+1,!0}),-1!==s&&(a.history=a.history.slice(s)),r()}else r({error:"INVALID_CHANNEL"})}else r({error:"NOT_IN_CHANNEL"})}(a,s,n,o):function(e,n,t,r){var o=e.clients[t];if(o){var a=e.channels[o.channel];if(a){var i=function(o){o&&o.error?r(o):(e.emit("MESSAGE",{msg:n.msg},a.clients.filter(function(e){return e!==t})),r())};n.isCp?a.sendMsg(n.isCp,i):a.sendMsg(n.msg,i)}else r({error:"INVALID_CHANNEL"})}else r({error:"NOT_IN_CHANNEL"})}(a,s,n,o)},o},n})(Oe()),bt}function Kt(){if(wt)return Ot;wt=1;return Ot=((e,n,t,r,o,a,i,s)=>{var c={};const u=e.mkEvent(!0);return c.init=function(c,f,l){var d={},h=c.store;if(h.loggedIn&&h.proxy.edPublic){var p={Store:c.Store,store:h,pinPads:c.pinPads,updateMetadata:c.updateMetadata,emit:l,onReadyHandlers:[],clients:[]};return p.profile=h.proxy.profile=h.proxy.profile||{},function(e,t){var r=e.profile;if(r.edit&&r.view)setTimeout(t);else{var o=n.createRandomHash("profile"),a=n.getSecrets("profile",o);e.pinPads([a.channel],function(e){e.error?t(e.error):(r.edit=n.getEditHashFromKeys(a),r.view=n.getViewHashFromKeys(a),setTimeout(t))})}}(p,f(function(r){r||function(r){var o=r.profile,c=n.getSecrets("profile",o.edit),f=i.createEncryptor(c.keys),l={data:{},network:r.store.network,channel:c.channel,crypto:f,owners:[r.store.proxy.edPublic],ChainPad:s,validateKey:c.keys.validateKey||void 0,userName:"profile",classic:!0},d=a.create(l);d.proxy.on("create",function(){}).on("ready",function(){if(d.proxy.name=r.store.proxy[t.displayNameKey]||"",r.listmap=d,d.proxy.curvePublic||(d.proxy.curvePublic=r.store.proxy.curvePublic),d.proxy.notifications||(d.proxy.notifications=e.find(r.store.proxy,["mailboxes","notifications","channel"])),d.proxy.edPublic||(d.proxy.edPublic=r.store.proxy.edPublic),!d.proxy.proof){let n=c.channel,t=e.decodeUTF8(n),o=e.decodeBase64(r.store.proxy.edPrivate),a=i.Nacl.sign(t,o),s=e.encodeBase64(a);d.proxy.proof=s}r.onReadyHandlers.length&&(r.onReadyHandlers.forEach(function(e){try{e(d.proxy)}catch(e){console.error(e)}}),r.onReadyHandlers=[]),u.fire()}).on("change",[],function(){r.emit("UPDATE",d.proxy,r.clients)})}(p)})),d.setName=function(e){!function(e,n){e.listmap.proxy.name=n,r.whenRealtimeSyncs(e.listmap.realtime,function(){e.listmap&&e.emit("UPDATE",e.listmap.proxy,e.clients)})}(p,e)},d.removeClient=function(e){!function(e,n){var t=e.clients.indexOf(n);-1!==t&&e.clients.splice(t,1)}(p,e)},d.update=function(){p.listmap&&p.emit("UPDATE",p.listmap.proxy,p.clients)},d.execCommand=function(e,n,t){var a=n.cmd,i=n.data;"SUBSCRIBE"!==a?"SET"!==a||function(e,n,t,a){u.reg(()=>{var i=n.key,s=n.value;i&&(e.listmap.proxy[i]=s,r.whenRealtimeSyncs(e.listmap.realtime,function(){e.emit("UPDATE",e.listmap.proxy,e.clients.filter(function(e){return e!==t})),"badge"===i?e.Store.set(null,{key:["profile","badge"],value:s||void 0},()=>{o.updateMyData(e.store),e.updateMetadata()}):"avatar"===i&&e.Store.set(null,{key:["profile","avatar"],value:s||""},()=>{o.updateMyData(e.store),e.updateMetadata()}),a(e.listmap.proxy)}))})}(p,i,e,t):function(e,n,t,r){-1===e.clients.indexOf(t)&&e.clients.push(t),e.listmap?r(e.listmap.proxy):e.onReadyHandlers.push(function(e){r(e)})}(p,0,e,t)},d}},c})(X(),te(),G(),je(),An(),T(),M(),x()),Ot}function Ut(){if(_t)return Dt;_t=1;return Dt=function(e,n,t,r,o,a){var i={},s=function(e){return Boolean(e&&"object"==typeof e&&!Array.isArray(e))},c=function(e){return e.slice(0,64)},u=function(n,t){var r=e.find(t,[n,"role"]);return-1!==["OWNER","ADMIN"].indexOf(r)},f=function(n,t,r){var o=e.find(r,[n,"role"]);return!!o&&(!!function(e){return-1!==["OWNER","ADMIN","MEMBER","VIEWER"].indexOf(e)}(t)&&("OWNER"===o||"ADMIN"===o&&-1!==["ADMIN","MEMBER","VIEWER"].indexOf(t)))},l=function(e){return"string"==typeof e&&44===e.length},d=i.commands={};d.ADD=function(e,n,t){if(!s(e))throw new Error("INVALID ARGS");if(!t.internal.initialized)throw new Error("UNITIALIZED");if(void 0===t.state.members)throw new Error("CANNOT_ADD_TO_UNITIALIZED_ROSTER");var r=t.state.members;Object.keys(e).forEach(function(t){if(!l(t))throw console.log(t,t.length),new Error("INVALID_CURVE_KEY");if(!s(e[t]))throw new Error("INVALID_CONTENT");if(r[t])throw new Error("ALREADY_PRESENT");var o=e[t];if("string"!=typeof o.role&&(o.role="MEMBER"),!f(n,o.role,r))throw new Error("INSUFFICIENT_PERMISSIONS");if("string"!=typeof o.displayName)throw new Error("DISPLAYNAME_REQUIRED");if("string"!=typeof o.notifications)throw new Error("NOTIFICATIONS_REQUIRED")});var o=!1;return Object.keys(e).forEach(function(n){o=!0,r[n]=e[n]}),o},d.RM=function(n,t,r){if(!Array.isArray(n))throw new Error("INVALID_ARGS");if(void 0===r.state.members)throw new Error("CANNOT_RM_FROM_UNITIALIZED_ROSTER");var o=r.state.members;n.forEach(function(n){if(!l(n))throw new Error("INVALID_CURVE_KEY");if(n!==t){var r=o[n].role;if(!function(n,t,r){var o=e.find(r,[n,"role"]);return!!o&&("OWNER"===o||"ADMIN"===o&&-1!==["ADMIN","MEMBER","VIEWER"].indexOf(t))}(t,r,o))throw new Error("INSUFFICIENT_PERMISSIONS")}});var a=!1;return n.forEach(function(e){o[e]&&(a=!0,delete o[e])}),a},d.DESCRIBE=function(n,t,o){if(!n||"object"!=typeof n||Array.isArray(n))throw new Error("INVALID_ARGUMENTS");if(void 0===o.state.members)throw new Error("NOT_READY");var a=o.state.members;Object.keys(n).forEach(function(r){if(!l(r))throw new Error("INVALID_ID");if(!a[r])throw new Error("NOT_PRESENT");if(!function(n,t,r){if(!r[t])return!1;if(n===t&&r[t])return!0;var o=e.find(r,[n,"role"]),a=e.find(r,[t,"role"]);return!!o&&("OWNER"===o||"ADMIN"===o&&"OWNER"!==a)}(t,r,a))throw new Error("INSUFFICIENT_PERMISSIONS");var o=n[r];if(!s(o))throw new Error("INVALID_ARGUMENTS");var i=e.clone(a[r]);if("string"==typeof o.role&&!function(n,t,r,o){return!(n!==t||!o[t])&&("MEMBER"===e.find(o,[n,"role"])?"VIEWER"===r:void 0)}(t,r,o.role,a)&&!f(t,o.role,a))throw new Error("INSUFFICIENT_PERMISSIONS");if("string"!=typeof i.displayName&&"string"!=typeof o.displayName)throw new Error("DISPLAYNAME_REQUIRED");if(-1===["undefined","string"].indexOf(typeof o.displayName))throw new Error("INVALID_DISPLAYNAME");if("string"!=typeof i.notifications&&"string"!=typeof o.notifications)throw new Error("NOTIFICATIONS_REQUIRED");if(-1===["undefined","string"].indexOf(typeof o.notifications))throw new Error("INVALID_NOTIFICATIONS")});var i=!1;return Object.keys(n).forEach(function(t){var o=e.clone(a[t]),s=n[t];Object.keys(s).forEach(function(e){void 0===o[e]||null!==s[e]?o[e]=s[e]:delete o[e]}),r(o)!==r(a[t])&&(i=!0,a[t]=o)}),i},d.CHECKPOINT=function(e,n,t){if(!s(e))throw new Error("INVALID_CHECKPOINT_STATE");if(!t.internal.initialized){t.state=e;var o=t.state.metadata=t.state.metadata||{};return o.topic=o.topic||"",o.name=o.name||"",o.avatar=o.avatar||"",t.internal.initialized=!0,!0}if(r(e)!==r(t.state))throw new Error("CHECKPOINT_DOES_NOT_MATCH_PREVIOUS_STATE");if(!u(n,t.state.members))throw new Error("INSUFFICIENT_PERMISSIONS");return t.state=e,!0};var h=["avatar","name","topic"];d.METADATA=function(n,t,r){if(!s(n))throw new Error("INVALID_ARGS");if(!function(n,t){var r=e.find(t,[n,"role"]);return Boolean(r&&-1!==["OWNER","ADMIN"].indexOf(r))}(t,r.state.members))throw new Error("INSUFFICIENT_PERMISSIONS");Object.keys(n).forEach(function(e){if(null===n[e]){if(-1===h.indexOf(e))return;throw new Error("CANNOT_REMOVE_MANDATORY_METADATA")}if("string"!=typeof n[e])throw new Error("INVALID_ARGUMENTS")});var o=!1;return Object.keys(n).forEach(function(e){void 0!==r.state.metadata[e]&&null===n[e]&&(o=!0,delete r.state.metadata[e]),n[e]!==r.state.metadata[e]&&(o=!0,r.state.metadata[e]=n[e])}),o},d.INVITE=function(e,n,t){if(!s(e))throw new Error("INVALID_ARGS");if(!t.internal.initialized)throw new Error("UNINITIALIED");if(void 0===t.state.members)throw new Error("CANNOT+INVITE_TO_UNINITIALIED_ROSTER");var r=t.state.members;Object.keys(e).forEach(function(t){if(!l(t))throw console.log(t,t.length),new Error("INVALID_CURVE_KEY");if(!s(e[t]))throw new Error("INVALID_CONTENT");if(r[t])throw new Error("ARLEADY_PRESENT");var o=e[t];if("string"!=typeof o.role&&(o.role="VIEWER"),void 0===o.pending&&(o.pending=!0),!f(n,o.role,r))throw new Error("INSUFFICIENT_PERMISSIONS");if("string"!=typeof o.displayName||!o.displayName)throw new Error("DISPLAYNAME_REQUIRED")});var o=!1;return Object.keys(e).forEach(function(n){o=!0,r[n]=e[n]}),o},d.ACCEPT=function(n,t,r){if(!r.internal.initialized)throw new Error("UNINITIALIED");if(void 0===r.state.members)throw new Error("CANNOT_ADD_TO_UNINITIALIED_ROSTER");var o=r.state.members;if(!s(o[t]))throw new Error("INSUFFICIENT_PERMISSIONS");if(!o[t].pending)throw new Error("ALREADY_PRESENT");if("string"!=typeof n)throw new Error("INVALID_ARGS");if(!l(n))throw new Error("INVALID_CURVE_KEY");var a=n;if(void 0!==o[a])throw new Error("MEMBER_ALREADY_PRESENT");var i=e.clone(o[t]);delete i.remaining,delete i.totalUses,delete i.inviteChannel,delete i.previewChannel,o[a]=i;var c=o[t].remaining||1;return-1===c||(c>1?o[t].remaining=c-1:delete o[t]),!0};var p=function(e,n,t){if(!Array.isArray(e)||"string"!=typeof n)throw new Error("INVALID ARGUMENTS");var r=e[0];if("function"!=typeof d[r])throw new Error("INVALID_COMMAND");return d[r](e[1],n,t)},v=function(n,t,r){return p(n,t,e.clone(r))};return i.create=function(n,i){if("function"!=typeof i)throw new Error("EXPECTED_CALLBACK");var f=e.once(e.mkAsync(i));if(n.network)if(n.channel&&"string"==typeof n.channel&&32===n.channel.length)if(n.keys&&"object"==typeof n.keys)if(n.store){var d=e.response(function(e,n){console.error("ROSTER_RESPONSE__"+e,n)}),h=n.store,y=n.keys,m=y.myCurvePublic,g=n.channel,E=n.lastKnownHash||-1;n.newTeam&&(E=void 0);var b={state:{members:{},metadata:{}},internal:{initialized:!1,sinceLastCheckpoint:0,lastCheckpointHash:E}},A={},O={change:e.mkEvent(),checkpoint:e.mkEvent()};A.on=function(e,n){if("object"!=typeof O[e])throw new Error("unsupported event");return O[e].reg(n),A},A.off=function(e,n){if("object"!=typeof O[e])throw new Error("unsupported event");return O[e].unreg(n),A},A.once=function(e,n){if("object"!=typeof O[e])throw new Error("unsupported event");var t=function(){n.apply(null,Array.prototype.slice.call(arguments)),O[e].unreg(t)};return O[e].reg(t),A},A.getState=function(){return e.clone(b.state)},A.getLastCheckpointHash=function(){return b.internal.lastCheckpointHash||-1};var w=function(){b.internal.pendingCheckpointId&&(d.clear(b.internal.pendingCheckpointId),delete b.internal.pendingCheckpointId),clearTimeout(b.internal.checkpointTimeout),delete b.internal.checkpointTimeout};A.stop=function(){b.internal.cpNetflux&&"function"==typeof b.internal.cpNetflux.stop?(b.internal.cpNetflux.stop(),w()):console.log("FAILED TO LEAVE")};var D,_,T,S=!1,N=function(){if(n.onCacheReady){var e=b.state;if(Object.keys(e.members||{}).length)n.onCacheReady(A);else{try{b.internal.cpNetflux.resetCache()}catch(e){console.error(e)}n.onCacheReady({error:"CORRUPTED"})}}},I=function(){S=!0,f(void 0,A)},x=function(e){e&&"EUNKNOWN"===e.type||(S?console.error("CHANNEL_ERROR",e):f(e))},C=function(e){e.state||(S=!1)},R=function(){console.log("ROSTER CONNECTED")},P=function(){return Boolean(S&&m)},k=function(n,t,r,o,a,i){D!==a&&b.internal.sinceLastCheckpoint++,D=a;var s=e.tryParse(n);if(s){var f,l;try{f=p(s,i,b)}catch(e){l=e.message}var h=c(a);if(d.expected(h)){if(l)return void d.handle(h,[l]);try{f?d.handle(h,[void 0,A.getState()]):(d.handle(h,["NO_CHANGE"]),console.log(n))}catch(e){console.log("CAUGHT",e)}}if("CHECKPOINT"===s[0]&&f?(P()&&O.checkpoint.fire(a),b.internal.sinceLastCheckpoint=0,b.internal.lastCheckpointHash=a):f&&P()&&O.change.fire(),w(),P()&&function(e,n){if(!u(e,n.state.members))return!1;var t=n.internal.sinceLastCheckpoint;return!(!t||"number"!=typeof t||t<25)}(m,b)){var v=1e3*Math.floor(20*Math.random())+5e3;b.internal.checkpointTimeout=setTimeout(function(){b.internal.pendingCheckpointId=A.checkpoint(function(e){e&&console.error(e)})},v)}}else console.error("could not parse")},M=function(n,t){var r=e.tryParse(n);return"CHECKPOINT"===r[0]&&v(r,t,b)},F=function(e,n){if(P()){var t=h.anon_rpc;if(t){var o=!1;try{o=v(e,y.myCurvePublic,b)}catch(e){return void n(e.message)}if(o){var a=T.encrypt(r(e)),i=c(a);return d.expect(i,function(e,t){e?n(e):n(void 0,t,i)},3e4),t.send("WRITE_PRIVATE_MESSAGE",[g,a],function(e){if(e)return d.handle(i,[e.message||e])}),i}n("NO_CHANGE")}else n("ANON_RPC_NOT_READY")}else n("NOT_READY")};A.init=function(n,t){var r=e.once(e.mkAsync(t));if(b.internal.initialized)r("ALREADY_INITIALIZED");else if(s(n)){var o=e.clone(n);o.role="OWNER";var a={};a[m]=o,F(["CHECKPOINT",{members:a}],r)}else r("INVALID_ARGUMENTS")},A.checkpoint=function(n){var t=e.once(e.mkAsync(n));F(["CHECKPOINT",e.clone(b.state)],t)},A.add=function(n,t){var r=e.once(e.mkAsync(t));if(!b.internal.initialized)return r("UNINITIALIZED");if(s(n)){var o=e.clone(n);Object.keys(o).forEach(function(e){if(!l(e)||s(b.state.members[e]))return delete o[e]}),F(["ADD",o],r)}else r("INVALID_ARGUMENTS")},A.remove=function(n,t){var r=e.once(e.mkAsync(t)),o=b.state;if(!o)return r("UNINITIALIZED");if(Array.isArray(n)){var a=e.clone(n),i=[],s=Object.keys(o.members);a.forEach(function(e){-1!==s.indexOf(e)&&i.push(e)}),F(["RM",i],r)}else r("INVALID_ARGUMENTS")},A.describe=function(n,t){var r=e.once(e.mkAsync(t)),o=b.state;if(!o)return r("UNINITIALIZED");if(s(n)){var a=e.clone(n);Object.keys(a).some(function(e){var n=a[e];if(s(n)||delete a[e],!s(o.members[e]))return!0;Object.keys(n).forEach(function(t){n[t]===o.members[e][t]&&delete n[t]})})?r("INVALID_ARGUMENTS"):F(["DESCRIBE",a],r)}else r("INVALID_ARGUMENTS")},A.metadata=function(n,t){var r=e.once(e.mkAsync(t)),o=b.state.metadata;if(s(n)){var a=e.clone(n);Object.keys(a).forEach(function(e){a[e]===o[e]&&delete a[e]}),F(["METADATA",a],r)}else r("INVALID_ARGUMENTS")},A.invite=function(n,t){var r=e.once(e.mkAsync(t));if(!b.state)return r("UNINITIALIZED");if(!b.internal.initialized)return r("UNINITIALIZED");if(s(n)){var o=e.clone(n);Object.keys(o).forEach(function(e){if(!l(e)||s(b.state.members[e]))return delete o[e]}),F(["INVITE",o],r)}else r("INVALID_ARGUMENTS")},A.accept=function(n,t){var r=e.once(e.mkAsync(t));"string"==typeof n&&l(n)?F(["ACCEPT",n],r):r("INVALID_ARGUMENTS")},o(function(e){h.anon_rpc&&h.anon_rpc.send("GET_METADATA",g,function(n,t){if(n)return e.abort(),void console.error(n);_=b.internal.metadata=t&&t[0]||void 0})}).nThen(function(e){if(!n.keys.teamEdPublic&&_&&_.validateKey&&(n.keys.teamEdPublic=_.validateKey),!n.keys.teamEdPublic)return e.abort(),void f("NO_VALIDATE_KEY");try{T=a.Team.createEncryptor(n.keys)}catch(n){return e.abort(),void f(n)}}).nThen(function(){"string"==typeof E&&console.log("Synchronizing from checkpoint"),b.internal.cpNetflux=t.start({lastKnownHash:E,network:n.network,channel:n.channel,crypto:T,validateKey:n.keys.teamEdPublic,owners:n.owners,Cache:n.Cache,isCacheCheckpoint:M,onCacheReady:N,onChannelError:x,onReady:I,onConnect:R,onConnectionChange:C,onMessage:k,noChainPad:!0})})}else f("EXPECTED_STORE");else f("EXPECTED_CRYPTO_KEYS");else f("EXPECTED_CHANNEL");else f("EXPECTED_NETWORK")},i}(X(),te(),D(),bn(),qe(),M()),Dt}function Bt(){if(It)return Nt;It=1;return Nt=((e,n,t,r,o,a,i,s,c,u,f,l,d,h,p,v,y,m,g,E)=>{const b={};E=E||"undefined"!=typeof window&&window.nacl;var A=e.mkEvent(!0),O=function(){},w=function(e,t,r,o){t&&(o||(r.on("change",["drive",a.SHARED_FOLDERS],function(o,s,c){if(c.length>3&&"password"===c[3]){var u=c[2],f=r.drive[a.SHARED_FOLDERS][u],l=t.manager.user.userObject.getHref?t.manager.user.userObject.getHref(f):f.href,d=n.parsePadUrl(l),h=n.getSecrets(d.type,d.hash,o);return setTimeout(function(){i.updatePassword(e.Store,{oldChannel:h.channel,password:s,href:l},e.store.network,function(){console.log("Shared folder password changed")})}),!1}}),r.on("disconnect",function(){t.offline=!0,t.sendEvent("NETWORK_DISCONNECT",t.id)}),r.on("reconnect",function(){t.offline=!1,t.sendEvent("NETWORK_RECONNECT",t.id)})),r.on("change",[],function(n,r,i){if(o){if(i[0]===a.FILES_DATA&&"object"==typeof r&&r.channel&&!r.owners){var s=[r.channel];r.rtChannel&&s.push(r.rtChannel),r.lastVersion&&s.push(r.lastVersion),t.pin(s,function(e){e&&e.error&&console.error(e.error)})}if(i[0]===a.FILES_DATA&&"object"==typeof n&&n.channel&&!r){var c=[n.channel];t.manager.findChannel(n.channel).some(function(e){return e.fId!==o})||(n.rtChannel&&c.push(n.rtChannel),n.lastVersion&&c.push(n.lastVersion),t.unpin(c,function(e){e&&e.error&&console.error(e)}))}}n&&!r&&Array.isArray(i)&&(i[0]===a.FILES_DATA||"drive"===i[0]&&i[1]===a.FILES_DATA)&&setTimeout(function(){e.Store.checkDeletedPad(n&&n.channel)}),t.sendEvent("DRIVE_CHANGE",{id:o,old:n,new:r,path:i})}),r.on("remove",[],function(e,n){t.sendEvent("DRIVE_REMOVE",{id:o,old:e,path:n})}))},D=function(e,n){var t=e.teams[n];if(t){try{t.listmap.stop()}catch(e){}try{t.roster.stop()}catch(e){}t.proxy={},t.stopped=!0,t?.rpc?.destroy(),delete e.teams[n],delete e.cache[n],delete e.store.proxy.teams[n],e.emit("LEAVE_TEAM",n,t.clients),e.updateMetadata(),e.store.calendar&&e.store.calendar.closeTeam(n),e.store.mailbox&&e.store.mailbox.close("team-"+n,function(){})}},_=function(n,t,r){var o=n.teams[r];if(!o)return null;var a=o.manager.getChannelsList("pin"),i=n.store.proxy.teams[r];const s=t?i.channel:`${i.channel}#drive`;a.add(s);var c=e.find(i,["keys","chat","channel"]),u=e.find(i,["keys","roster","channel"]),f=e.find(i,["keys","mailbox","channel"]);(c&&a.add(c),u&&a.add(u),f&&a.add(f),o.proxy.calendars)&&Object.keys(o.proxy.calendars).map(function(e){return o.proxy.calendars[e].channel}).forEach(e=>a.add(e));var l=o.roster.getState();return l.members&&Object.keys(l.members).forEach(function(e){var n=l.members[e];n.inviteChannel&&n.pending&&a.add(n.inviteChannel),n.previewChannel&&n.pending&&a.add(n.previewChannel)}),Array.from(a).sort()},T=function(e,n,t,r){n.rpc?r():t.edPrivate&&t.edPublic?h.create(e.store.network,t,function(e,t){e?r(e):(n.rpc=t,n&&n.onRpcReadyEvt&&n.onRpcReadyEvt.fire(),r())},d):r("EFORBIDDEN")},S=function(t,r,a,s,c,u,f){var l=e.once(e.mkAsync(f));if(t.cache[r])l();else{var d=a.proxy,h={id:r,proxy:d,listmap:a,clients:[],realtime:a.realtime,handleSharedFolder:function(e,n){!function(e,n,t,r){var o=e.teams[n];o&&(r?(o.sharedFolders[t]=r,w(e,o,r.proxy,t)):delete o.sharedFolders[t])}(t,r,e,n)},sharedFolders:{},roster:s,onRpcReadyEvt:e.mkEvent(!0),offline:!0};t.cache[r]=h,u&&h.clients.push(u),s.on("change",function(){var n=s.getState(),o=e.find(t,["store","proxy","curvePublic"]);if(n.members&&Object.keys(n.members).length)if(n.members[o]){var a=e.find(t,["store","proxy","teams",r]);a&&(a.metadata=n.metadata),t.updateMetadata(),t.emit("ROSTER_CHANGE",r,h.clients)}else D(t,r);else console.error(JSON.stringify(n))}),s.on("checkpoint",function(n){e.find(t,["store","proxy","teams",r,"keys","roster"]).lastKnownHash=n}),h.sendEvent=function(e,n,r){t.emit(e,n,h.clients.filter(function(e){return e!==r}))},h.getChatData=function(){var e=c.chat||{},t=e.edit||e.view;if(!t)return{};var o=n.getSecrets("chat",t);return{teamId:r,channel:o.channel,secret:o,validateKey:e.validateKey}},h.pin=function(e,n){c.drive.edPrivate?h.rpc?("function"!=typeof n&&console.error("expected a callback"),h.rpc.pin(e,function(e,t){n(e?{error:e}:{hash:t})})):n({error:"TEAM_RPC_NOT_READY"}):n({error:"EFORBIDDEN"})},h.unpin=function(e,n){c.drive.edPrivate?h.rpc?("function"!=typeof n&&console.error("expected a callback"),h.rpc.unpin(e,function(e,t){n(e?{error:e}:{hash:t})})):n({error:"TEAM_RPC_NOT_READY"}):n({error:"EFORBIDDEN"})};var p=t.store.proxy.teams[h.id],v=p.hash||p.roHash,y=n.getSecrets("team",v,p.password),m=h.manager=o.create(d.drive,{onSync:function(e){t.Store.onSync(r,e)},edPublic:c.drive.edPublic,pin:h.pin,unpin:h.unpin,loadSharedFolder:function(e,n,r,o){i.load({isNew:o,network:t.store.network||t.store.networkPromise,store:h,isNewChannel:t.Store.isNewChannel,Store:t.Store},e,n,r)},settings:{drive:e.find(t.store,["proxy","settings","drive"])},removeOwnedChannel:function(e,n){var o;"object"==typeof e?(e.teamId=r,o=e):o={channel:e,teamId:r},t.Store.pad.destroy("",o,n)},Store:t.Store,store:t.store},{teamId:h.id,outer:!0,edPublic:c.drive.edPublic,loggedIn:!0,log:function(e){h.sendEvent("DRIVE_LOG",e)},rt:h.realtime,editKey:y.keys.secondaryKey,readOnly:Boolean(!y.keys.secondaryKey)});h.secondaryKey=y&&y.keys.secondaryKey,h.userObject=m.user.userObject,g(function(e){t.teams[r]=h,w(t,h,d);var n=t.store.network||t.store.networkPromise;i.loadSharedFolders(t.Store,n,h,h.proxy.drive,h.userObject,e,function(e){t.progress+=70/(t.numberOfTeams*e.max),t.updateProgress({progress:t.progress})},!0)}).nThen(function(){t.store.modules.calendar&&t.store.modules.calendar.openTeam(r),l()})}},N=function(t,r,o,a,s,c,u){var f,l=a.getState(),d=e.find(t,["store","proxy","teams",r]);d&&(d.metadata=l.metadata),delete t.nocache[r],t.store.proxy.teams[r]&&g(function(e){S(t,r,o,a,s,c,e()),f=t.teams[r]||t.cache[r],s.drive.edPrivate&&T(t,f,s.drive,e(function(){}))}).nThen(function(e){f.userObject.fixFiles(),i.checkMigration(f.secondaryKey,f.proxy?.drive,f.userObject,e()),i.loadSharedFolders(t.Store,t.store.network,f,f.proxy?.drive,f.userObject,e,function(e){t.progress+=70/(t.numberOfTeams*e.max),t.updateProgress({progress:t.progress})})}).nThen(function(){if(f.rpc){var e=_(t,!0,r),o=n.hashChannelList(e);f.rpc.getServerHash(function(e,n){if(e)console.warn(e);else if(n!==o){var a=_(t,!1,r);f.rpc.reset(a,function(e){e&&console.warn(e)})}})}}).nThen(function(){f.offline=!1,t.onReadyHandlers[r]&&t.onReadyHandlers[r].forEach(function(e){("function"==typeof e.cb&&e.cb(),e.cId)&&(-1===f.clients.indexOf(e.cId)&&f.clients.push(e.cId))}),delete t.onReadyHandlers[r],t.store.modules.calendar&&t.store.modules.calendar.openTeam(r),u()})},I=function(e,n,t,r,o,a){var i=function(){(e.cache[n]||e.teams[n])&&D(e,n),delete e.store.proxy.teams[n],delete e.onReadyHandlers[n],o.abort(),a({error:"ENOENT"})};t&&e.store.anon_rpc.send("IS_NEW_CHANNEL",t,o(function(e,n){n&&n.length&&"object"==typeof n[0]&&n[0].isNew&&i()})),r&&e.store.anon_rpc.send("IS_NEW_CHANNEL",r,o(function(e,n){n&&n.length&&"object"==typeof n[0]&&n[0].isNew&&i()}))},x=function(t,r,o,a,i){var f=e.once(e.mkAsync(a)),l=r.hash||r.roHash,h=n.getSecrets("team",l,r.password),y=v.createEncryptor(h.keys);r.roHash||(r.roHash=n.getViewHashFromKeys(h));var E,b,O=r.keys;if(!O.chat.validateKey&&O.chat.edit){var w=n.getSecrets("chat",O.chat.edit);O.chat.validateKey=w.keys.validateKey}var _={curvePublic:t.store.proxy.curvePublic,curvePrivate:t.store.proxy.curvePrivate},T=O.roster||{},x=T.edit?v.Team.deriveMemberKeys(T.edit,_):v.Team.deriveGuestKeys(T.view||"");g(function(e){if(i)return d.getChannelCache(h.channel,e(function(n,t){t&&t.c||(e.abort(),f({error:"NOCACHE"}))})),void d.getChannelCache(x.channel,e(function(n,t){var r=t&&t.c,o=t&&t.k;o&&!x.teamEdPublic&&(x.teamEdPublic=o),r||(e.abort(),f({error:"NOCACHE"}))}));t.Store.onReadyEvt.reg(()=>{I(t,o,h.channel,x.channel,e,f)})}).nThen(function(n){var a={lm:!1,roster:!1,check:function(){this.lm&&this.roster&&i&&(t.progress+=30/t.numberOfTeams,t.updateProgress({progress:t.progress}),S(t,o,b,E,O,null,n(f)),this.check=function(){})}},u={data:{},readOnly:!Boolean(h.keys.signKey),network:t.store.network||t.store.networkPromise,channel:h.channel,crypto:y,ChainPad:m,Cache:d,metadata:{validateKey:h.keys.validateKey||void 0},userName:"team",classic:!0,onMetadataUpdate:function(){var e=t.teams[o];e&&t.emit("ROSTER_CHANGE",o,e.clients)}};(b=p.create(u)).proxy.on("cacheready",function(){a.lm=!0,a.check()}),b.proxy.on("ready",n()),b.proxy.on("error",function(e){e&&void 0!==e.loaded&&!e.loaded&&f({error:"ECONNECT"}),e&&e.error&&"EDELETED"===e.error&&D(t,o)}),s.create({network:t.store.network||t.store.networkPromise,channel:x.channel,keys:x,store:t.store,lastKnownHash:T.lastKnownHash,onCacheReady:function(e){if(i){if(e&&"CORRUPTED"===e.error)return console.error("Corrupted roster cache, cant load this team offline",r),b&&"function"==typeof b.stop&&b.stop(),n.abort(),void f({error:"CACHE_CORRUPTED_ROSTER"});E=e,a.roster=!0,a.check()}},Cache:d},n(function(r,o){if(r)return n.abort(),console.error(r),void f({error:"ROSTER_ERROR"});E=o,T.lastKnownHash=E.getLastCheckpointHash();var a=E.getState(),i=e.find(t,["store","proxy","curvePublic"]);a.members[i]&&A.reg(function(){if(T.edit){var e={},n=c.createData(t.store.proxy,!1);n.pending=!1,e[t.store.proxy.curvePublic]=n,E.describe(e,function(e){e&&"NO_CHANGE"!==e&&console.error(e)})}})}))}).nThen(function(n){var a=E.getState(),i=e.find(t,["store","proxy","curvePublic"]);if(!a.members||!Object.keys(a.members).length)return b.stop(),E.stop(),b.proxy={},f({error:"EINVAL"}),n.abort(),console.error(JSON.stringify(a)),void u.send("ROSTER_CORRUPTED");if(!a.members[i])return b.stop(),E.stop(),b.proxy={},delete t.store.proxy.teams[o],t.updateMetadata(),f({error:"EFORBIDDEN"}),void n.abort();var s=a.members[i],c=e.find(r,["keys","drive","edPrivate"]);if(r.hash&&c||-1===["ADMIN","MEMBER"].indexOf(s.role))r.hash&&c||"OWNER"!==s.role||u.send("TEAM_RIGHTS_OWNER");else{console.warn("Missing edit rights: demote to viewer");var l={};l[t.store.proxy.curvePublic]={role:"VIEWER"},E.describe(l,function(e){u.send("TEAM_RIGHTS_FIXED"),delete r.hash,delete r.keys.drive.edPrivate,delete r.keys.chat.edit,e&&"NO_CHANGE"!==e&&console.error(e)})}}).nThen(function(){i||(t.progress+=30/t.numberOfTeams,t.updateProgress({progress:t.progress})),N(t,o,b,E,O,null,f)})},C=function(n,t,r,o){var a=t.team;if(!((a.hash||a.roHash)&&a.channel&&a.password&&a.keys&&a.metadata))return void o({error:"EINVAL"});let i=n.store.proxy.teams;if(Object.values(i).some(e=>e.channel===a.channel))o({error:"EEXISTS"});else{var s=e.createRandomInteger();n.store.proxy.teams[s]=a,n.onReadyHandlers[s]=[],x(n,a,s,function(e){e&&e.error||console.debug("Team joined:"+s);var t=n.store.proxy.teams[s];n.store.mailbox.open("team-"+s,t.keys.mailbox,function(){},!0,{owners:t.keys.drive.edPublic}),n.updateMetadata(),o(e)})}},R=function(n,t,r){var o=e.find(n,["store","proxy","teams",t]);if(!o)return{};var a=e.clone(o);return r||(delete a.hash,delete a.keys.drive.edPrivate,delete a.keys.chat.edit),delete a.owner,a},P=function(t,r,o){if(!r)return!0;var a=e.find(t,["store","proxy","teams",r]);if(!a)return!0;var s=t.teams[r];if(!s)return!0;var c=n.getSecrets("team",o||a.roHash,a.password);if(i.upgrade(a.channel,c),s.userObject&&s.userObject.setReadOnly(!c.keys.secondaryKey,c.keys.secondaryKey),c.keys.secondaryKey)try{t.store.modules.calendar.upgradeTeam(r)}catch(e){console.error(e)}!c.keys.secondaryKey&&s.rpc&&s.rpc.destroy();var u=e.find(s,["proxy","drive","sharedFolders"]);Object.keys(u||{}).forEach(function(t){var r=s.manager.getSharedFolderData(t),o=n.parsePadUrl(r.href||r.roHref),a=n.getSecrets(o.type,o.hash,r.password);i.upgrade(a.channel,a);var c=e.find(s,["manager","folders",t,"userObject"]);c&&c.setReadOnly(!a.keys.secondaryKey,a.keys.secondaryKey)}),t.updateMetadata(),t.emit("ROSTER_CHANGE_RIGHTS",r,s.clients)},k=function(t,r,o,a,i){if(r){var s=e.find(t,["store","proxy","teams",r]);if(s){var c=t.onReadyHandlers[r],u=t.teams[r];if(s.channel===a.channel&&s.password===a.password)if(o?(s.hash=a.hash,s.keys.drive.edPrivate=a.keys.drive.edPrivate,s.keys.chat.edit=a.keys.chat.edit):(delete s.hash,delete s.keys.drive.edPrivate,delete s.keys.chat.edit),u||!Array.isArray(c))if(u){if(o){T(t,u,s.keys.drive,function(){u.manager.addPin(u.pin,u.unpin)});var f=n.getSecrets("team",a.hash,s.password);u.secondaryKey=f&&f.keys.secondaryKey;var l=v.createEncryptor(f.keys);u.listmap.setReadOnly(!1,l)}else delete u.secondaryKey,u.rpc&&u.rpc.destroy&&u.rpc.destroy(),u.manager.removePin(),u.listmap.setReadOnly(!0);P(t,r,a.hash),i(!0)}else i(!1);else c.push({cb:function(){k(t,r,o,a,i)}});else i(!1)}else i(!1)}else i(!1)},M=function(n,t,r,o,a){t?e.find(n,["store","proxy","teams",t])&&n.teams[t]?n.store.mailbox.sendTo("TEAM_EDIT_RIGHTS",{state:o,teamData:R(n,t,o)},{channel:r.notifications,curvePublic:r.curvePublic},a):a({error:"ENOENT"}):a({error:"EINVAL"})},F=function(n,t,r,o){var a=t.teamId;if(a){var i=e.find(n,["store","proxy","teams",a]),s=n.teams[a];if(i&&s)if(s.roster)if(t.curvePublic&&t.data){var c,u=s.roster.getState().members[t.curvePublic];g(function(e){n.Store.pad.getMetadata(null,{channel:i.channel},e(function(e){c=e&&e.error?s.listmap.metadata||{}:e}))}).nThen(function(){if(u.pendingOwner=Array.isArray(c.pending_owners)&&-1!==c.pending_owners.indexOf(u.edPublic),"OWNER"!==u.role||"OWNER"===t.data.role){"VIEWER"===u.role&&"VIEWER"!==t.data.role&&M(n,a,u,!0,function(e){o(e)}),"VIEWER"!==u.role&&"VIEWER"===t.data.role&&M(n,a,u,!1,function(e){o(e)});var r={};r[t.curvePublic]=t.data,s.roster.describe(r,function(e){e?o({error:e}):o()})}else!function(n,t,r,o){var a=e.once(o);if(t){var i=e.find(n,["store","proxy","teams",t]);if(i){var s=n.teams[t];if(s){var c=r.pendingOwner;g(function(t){var o=c?"RM_PENDING_OWNERS":"RM_OWNERS",s=function(e){var n=e&&e.error;if(n)return console.error(n),t.abort(),void a(n)},u=function(e){n.Store.pad.setMetadata(null,{channel:e,command:o,value:[r.edPublic]},t(s))};u(i.channel),u(e.find(i,["keys","roster","channel"])),u(e.find(i,["keys","chat","channel"]))}).nThen(function(e){var n={};n[r.curvePublic]={role:"ADMIN",pendingOwner:!1},s.roster.describe(n,e(function(e){e&&console.error(e)}))}).nThen(function(e){n.store.mailbox.sendTo("RM_OWNER",{teamChannel:i.channel,title:i.metadata.name,pending:c},{channel:r.notifications,curvePublic:r.curvePublic},e())}).nThen(function(){a()})}else a({error:"ENOENT"})}else a({error:"ENOENT"})}else a({error:"EINVAL"})}(n,a,u,function(e){e?(console.error(e),o({error:e})):o()})})}else o({error:"MISSING_DATA"});else o({error:"NO_ROSTER"});else o({error:"ENOENT"})}else o({error:"EINVAL"})},L=function(e,n){Object.keys(e.onReadyHandlers).forEach(function(t){var r=-1;e.onReadyHandlers[t].some(function(e,t){if(e.cId===n)return r=t,!0}),-1!==r&&e.onReadyHandlers[t].splice(r,1)}),Object.keys(e.teams).forEach(function(t){var r=e.teams[t].clients,o=r.indexOf(n);-1!==o&&r.splice(o,1)})},H=function(n,t,r,o){var a,i=t.seeds;try{a=f.derivePreviewKeys(i.preview)}catch(e){return void o({error:"INVALID_SEEDS"})}l.get({channel:a.channel,type:"pad",version:2,keys:{cryptKey:a.cryptKey}},function(n,t){if(n)o({error:n});else if(t){var r=e.tryParse(t);o(r||{error:"parseError"})}else o({error:"DELETED"})},{network:n.store.network,initialState:"{}"})},j=function(n,t,r,o){var a,i;g(function(r){!function(n,t,r,o){var a,i=t.bytes64;try{a=f.deriveInviteKeys(i)}catch(e){return void o({error:"INVALID_SEEDS"})}l.get({channel:a.channel,type:"pad",version:2,keys:{cryptKey:a.cryptKey}},function(n,t){if(n)o({error:n});else if(t){var r=e.tryParse(t);o(r||{error:"parseError"})}else o({error:"DELETED"})},{network:n.store.network,initialState:"{}"})}(n,t,0,r(function(e){if(e&&e.error)return r.abort(),void o(e);a=e}))}).nThen(function(t){var r=e.find(a,["teamData","channel"]),u=n.store.proxy.teams||{};if(Object.keys(u).some(function(e){return u[e].channel===r}))return t.abort(),void o({error:"ALREADY_MEMBER"});var f=e.find(a,["teamData","keys","roster"]),l=a.ephemeral;if(!f||!l)return t.abort(),void o({error:"INVALID_INVITE_CONTENT"});var h=v.Team.deriveMemberKeys(f.edit,l);s.create({network:n.store.network||n.store.networkPromise,channel:f.channel,keys:h,store:n.store,Cache:d},t(function(e,r){if(e)return t.abort(),console.error(e),void o({error:"ROSTER_ERROR"});var a=c.createData(n.store.proxy,!1),s=r.getState();i=s.members[l.curvePublic],r.accept(a.curvePublic,t(function(e){if(r.stop(),e)return t.abort(),console.error(e),void o({error:"ACCEPT_ERROR"})}))}))}).nThen(function(){var e={};i.remaining&&1!==i.remaining||T(n,e,a.ephemeral,function(n){if(!n){var t=e.rpc;i.inviteChannel&&t.removeOwnedChannel(i.inviteChannel,function(e){e&&console.error(e)}),i.previewChannel&&t.removeOwnedChannel(i.previewChannel,function(e){e&&console.error(e)})}}),C(n,{team:a.teamData},0,o)})},K=function(n){if(n){if(n.keys&&n.keys.mailbox)return n.keys.mailbox;var t=e.find(n,["keys","roster","edit"]);if(t){var r=E.hash(e.decodeUTF8(t)),o=r.slice(0,32),a=e.uint8ArrayToHex(r.slice(32,48)),i=E.box.keyPair.fromSecretKey(o);return{channel:a,viewed:[],keys:{curvePrivate:e.encodeBase64(i.secretKey),curvePublic:e.encodeBase64(i.publicKey)}}}}};return b.init=function(t,r,o){var a={},i=t.store;if(i.loggedIn&&i.proxy.edPublic&&!i.modules?.team){var h={store:i,Store:t.Store,pinPads:t.pinPads,emit:o,onReadyHandlers:{},teams:{},cache:{},nocache:{},updateMetadata:t.updateMetadata,updateProgress:t.updateLoadingProgress,progress:0};i.proxy.teams||(i.proxy.teams={});var b=i.proxy.teams;h.numberOfTeams=Object.keys(b).length,h.store.proxy.on("change",["teams"],function(e,n,t){"hash"===t[2]&&P(h,t[1],n)}),h.store.proxy.on("remove",["teams"],function(e,n){"hash"===n[2]&&P(h,n[1])});var w=function(n,t){if(!n||!t)return!0;try{var r=e.decodeBase64(n),o=E.sign.keyPair.fromSecretKey(r);return e.encodeBase64(o.publicKey)===t}catch(e){return!1}};Object.keys(b).forEach(function(n){h.onReadyHandlers[n]=[],e.find(b,[n,"keys","mailbox"])||(b[n].keys.mailbox=K(b[n])),x(h,b[n],n,r(function(e){if(e){delete h.onReadyHandlers[n],delete h.cache[n],"NOCACHE"===e?.error&&(h.nocache[n]=!0);var t="string"==typeof e?e:e.type||e.message;return u.send("TEAM_LOADING_ERROR="+t),void console.error(e)}console.debug("Team "+n+" cache ready")}),d.isEnabled())}),a.onReady=function(t){var r;r={},Object.keys(b).forEach(function(t){try{var o=b[t],a=r[o.channel],i=e.find(o,["keys","drive","edPrivate"]),s=e.find(o,["keys","drive","edPublic"]);if(s?i&&s&&!w(i,s)&&(u.send("TEAM_CORRUPTED_EDPRIVATE"),delete b[t].keys.drive.edPrivate,i=void 0):u.send("TEAM_CORRUPTED_EDPUBLIC"),o.hash&&2===n.parseTypeHash("drive",o.hash).version&&40!==o.hash.length&&u.send("TEAM_CORRUPTED_HASH"),!a)return void(r[o.channel]=t);var c=b[a],f=e.find(c,["keys","drive","edPrivate"]),l=e.find(c,["keys","chat","edit"]),d=e.find(o,["keys","chat","edit"]);!c.hash&&o.hash&&(c.hash=o.hash),!f&&i&&(c.keys.drive.edPrivate=i),!l&&d&&(c.keys.chat.edit=d),h.store.proxy.duplicateTeams=h.store.proxy.duplicateTeams||{},h.store.proxy.duplicateTeams[t]=b[t],delete b[t]}catch(e){console.error(e)}});var o=function(e){return!b[e]&&(D(h,e),delete h.onReadyHandlers[e],!0)};Object.keys(h.teams).forEach(o),Object.keys(h.onReadyHandlers).forEach(function(n){if(!o(n)){var r=h.store.proxy.teams[n],a=e.find(r,["keys","roster","channel"]),i=e.once(e.mkAsync(t()));g(function(e){I(h,n,r.channel,a,e,i)}),h.onReadyHandlers[n].push({cb:i})}}),Object.keys(b).forEach(function(n){h.onReadyHandlers[n]||h.teams[n]||(h.onReadyHandlers[n]=[],e.find(b,[n,"keys","mailbox"])||(b[n].keys.mailbox=K(b[n])),x(h,b[n],n,t(function(e){if(e){var t="string"==typeof e?e:e.type||e.message;return u.send("TEAM_LOADING_ERROR="+t),void console.error(e)}console.debug("Team "+n+" ready")})))}),O(),A.fire()},a.getTeam=function(e){return h.teams[e]},a.getTeamsData=function(n){var t={},r=!1;return-1!==["drive","teams","settings"].indexOf(n)&&(r=!0),Object.keys(b).forEach(function(n){if(h.teams[n]){var o=h.teams[n].proxy||{},a=o.drive&&Object.keys(o.drive.filesData||{}).length,i=o.drive&&Object.keys(o.drive.sharedFolders||{}).length;t[n]={owner:b[n].owner,name:b[n].metadata.name,channel:b[n].channel,numberPads:a,numberSf:i,roster:e.find(b[n],["keys","roster","channel"]),edPublic:e.find(b[n],["keys","drive","edPublic"]),avatar:e.find(b[n],["metadata","avatar"]),viewer:!e.find(b[n],["keys","drive","edPrivate"]),notifications:e.find(b[n],["keys","mailbox","channel"]),curvePublic:e.find(b[n],["keys","mailbox","keys","curvePublic"]),validKeys:w(e.find(b[n],["keys","drive","edPrivate"]),e.find(b[n],["keys","drive","edPublic"]))},r&&h.teams[n]&&(t[n].secondaryKey=h.teams[n].secondaryKey),h.teams[n]&&(t[n].hasSecondaryKey=Boolean(h.teams[n].secondaryKey))}}),t},a.getTeams=function(){return Object.keys(h.teams)};a.removeFromTeam=function(e,n,t){if(b[e]&&(!t||function(e,n){var t=h.teams[e];if(t){var r=t.roster&&t.roster.getState();if(r.members)return(r.members[n]||{}).pending}}(e,n)))if(h.onReadyHandlers[e])h.onReadyHandlers[e].push({cb:function(){h.teams[e].roster.remove([n],function(e){e&&"NO_CHANGE"!==e&&console.error(e)})}});else{var r=h.teams[e];r?r.roster.remove([n],function(e){e&&"NO_CHANGE"!==e&&console.error(e)}):console.error("TEAM MODULE ERROR")}},a.changeMyRights=function(e,n,t,r){k(h,e,n,t,r)},a.updateMyData=function(e){Object.keys(h.teams).forEach(function(n){var t=h.teams[n];if(t.roster){var r={};r[e.curvePublic]=e,t.roster.describe(r,function(e){e&&console.error(e)})}})},a.removeClient=function(e){L(h,e)};return a.execCommand=function(t,r,o){var a=r.cmd,i=r.data;if("SUBSCRIBE"!==a)if("LIST_TEAMS"!==a)if("OPEN_TEAM_CHAT"!==a)if("GET_TEAM_ROSTER"!==a)if("GET_TEAM_METADATA"!==a)if("SET_TEAM_METADATA"!==a){if("OFFER_OWNERSHIP"===a)return h.store.offline?void o({error:"OFFLINE"}):void function(n,t,r,o){var a=e.once(o),i=t.teamId;if(i){var s=e.find(n,["store","proxy","teams",i]);if(s){var c=n.teams[i];if(c)if(c.roster)if(t.curvePublic){var u=c.roster.getState().members[t.curvePublic];g(function(t){var r=function(e){var n=e&&e.error;if(n)return console.error(n),t.abort(),void a({error:n})},o=function(e){n.Store.pad.setMetadata(null,{channel:e,command:"ADD_PENDING_OWNERS",value:[u.edPublic]},t(r))};o(s.channel),o(e.find(s,["keys","roster","channel"])),o(e.find(s,["keys","chat","channel"]))}).nThen(function(e){var n={};n[u.curvePublic]={role:"OWNER"},c.roster.describe(n,e(function(e){e&&console.error(e)}))}).nThen(function(t){n.store.mailbox.sendTo("ADD_OWNER",{teamChannel:s.channel,chatChannel:e.find(s,["keys","chat","channel"]),rosterChannel:e.find(s,["keys","roster","channel"]),title:s.metadata.name},{channel:u.notifications,curvePublic:u.curvePublic},t())}).nThen(function(){a()})}else a({error:"MISSING_DATA"});else a({error:"NO_ROSTER"});else a({error:"ENOENT"})}else a({error:"ENOENT"})}else a({error:"EINVAL"})}(h,i,0,o);if("ANSWER_OWNERSHIP"===a)return h.store.offline?void o({error:"OFFLINE"}):void function(n,t,r,o){var a,i=n.store.proxy.teams;if(Object.keys(i).forEach(function(e){if(i[e].channel===t.teamChannel)return a=e,!0}),a){var s=e.find(n,["store","proxy","teams",a]);if(s){var c=n.teams[a];if(c)if(c.roster){var u={};t.answer?s.owner=!0:(u[n.store.proxy.curvePublic]={role:"ADMIN"},c.roster.describe(u,function(e){e?o({error:e}):o()}))}else o({error:"NO_ROSTER"});else o({error:"ENOENT"})}else o({error:"ENOENT"})}else o({error:"EINVAL"})}(h,i,0,o);if("DESCRIBE_USER"!==a){if("INVITE_TO_TEAM"===a)return h.store.offline?void o({error:"OFFLINE"}):void function(e,n,t,r){var o=n.teamId;if(o){var a=e.teams[o];if(a)if(a.roster){var i=n.user;if(i&&i.curvePublic&&i.notifications){delete i.channel,delete i.lastKnownHash,i.pending=!0;var s={};s[i.curvePublic]=i,s[i.curvePublic].role="VIEWER",a.roster.add(s,function(n){n&&"NO_CHANGE"!==n?r({error:n}):e.store.mailbox.sendTo("INVITE_TO_TEAM",{team:R(e,o)},{channel:i.notifications,curvePublic:i.curvePublic},function(e){r(e)})})}else r({error:"MISSING_DATA"})}else r({error:"NO_ROSTER"});else r({error:"ENOENT"})}else r({error:"EINVAL"})}(h,i,0,o);if("LEAVE_TEAM"!==a){if("JOIN_TEAM"===a)return h.store.offline?void o({error:"OFFLINE"}):void C(h,i,0,o);if("REMOVE_USER"!==a){if("DELETE_TEAM"===a)return h.store.offline?void o({error:"OFFLINE"}):void function(n,t,r,o){var a=t.teamId;if(a){var i=n.teams[a],s=e.find(n,["store","proxy","teams",a]);if(i&&s){var c=i.roster.getState(),f=e.find(n,["store","proxy","curvePublic"]),l=c.members[f];if(!l||"OWNER"!==l.role)return o({error:"EFORBIDDEN"});var d=e.find(n,["store","proxy","edPublic"]),h=e.find(s,["keys","drive","edPublic"]);g(function(e){n.Store.anonRpcMsg(null,{msg:"GET_METADATA",data:s.channel},e(function(n){if(n&&n.error)return e.abort(),o({error:n.error});var t=n[0];t&&Array.isArray(t.owners)&&-1!==t.owners.indexOf(d)||(e.abort(),o({error:"EFORBIDDEN"}))}))}).nThen(function(t){i.proxy.delete=!0;var r=Array.from(i.manager.getChannelsList("owned")),o=e.Saferphore.create(10);r.forEach(function(e){var r=t();o.take(function(t){var o=!1;g(function(r){32===e.length&&n.Store.anonRpcMsg(null,{msg:"GET_METADATA",data:e},r(function(e){if(e&&e.error)return t(),void r.abort();var n=e[0];if(!n||!Array.isArray(n.owners)||-1===n.owners.indexOf(h))return t(),void r.abort();o=n.owners.some(function(e){return e!==h})}))}).nThen(function(t){o?n.Store.pad.setMetadata(null,{channel:e,command:"RM_OWNERS",value:[h]},t()):i.rpc.removeOwnedChannel(e,t(function(e){e&&console.error(e)}))}).nThen(function(){t(),r()})})})}).nThen(function(t){i.rpc.removePins(t(function(e){e&&console.error(e)}));var r=e.find(s,["keys","mailbox","channel"]);i.rpc.removeOwnedChannel(r,t(function(e){e&&console.error(e)}));var o=e.find(s,["keys","roster","channel"]);n.store.rpc.removeOwnedChannel(o,t(function(e){e&&console.error(e)}));var a=e.find(s,["keys","chat","channel"]);n.store.rpc.removeOwnedChannel(a,t(function(e){e&&console.error(e)})),n.store.rpc.removeOwnedChannel(s.channel,t(function(e){e&&console.error(e)}))}).nThen(function(){u.send("TEAM_DELETION"),D(n,a),o()})}else o({error:"ENOENT"})}else o({error:"EINVAL"})}(h,i,0,o);if("CREATE_TEAM"===a)return h.store.offline?void o({error:"OFFLINE"}):void function(t,r,o,a){var i,f=e.once(a),l=n.createChannelId(),h=n.createRandomHash("team",l),b=n.getSecrets("team",h,l),A=n.getViewHashFromKeys(b),O=E.sign.keyPair(),w=E.box.keyPair(),_=v.Team.createSeed(),T=v.Team.deriveMemberKeys(_,{curvePublic:t.store.proxy.curvePublic,curvePrivate:t.store.proxy.curvePrivate}),S=n.getSecrets("chat"),I=n.getHashes(S),x={network:t.store.network,channel:b.channel,data:{},validateKey:b.keys.validateKey,crypto:v.createEncryptor(b.keys),logLevel:1,classic:!0,ChainPad:m,Cache:d,owners:[t.store.proxy.edPublic]};g(function(e){s.create({network:t.store.network||t.store.networkPromise,channel:T.channel,owners:[t.store.proxy.edPublic],keys:T,store:t.store,lastKnownHash:void 0,newTeam:!0,Cache:d},e(function(n,r){if(n)return e.abort(),console.error(n),void f({error:"ROSTER_ERROR"});i=r;var o=c.createData(t.store.proxy);delete o.channel,i.init(o,e(function(n){if(n)return e.abort(),void f({error:"ROSTER_INIT_ERROR"})}))}));var n,r=v.createEncryptor(S.keys),o={network:t.store.network,channel:S.channel,noChainPad:!0,crypto:r,metadata:{validateKey:S.keys.validateKey,owners:[t.store.proxy.edPublic]}},a=e();o.onReady=function(){n&&n.stop(),a()},o.onError=function(){e.abort(),f({error:"CHAT_INIT_ERROR"})},n=y.start(o)}).nThen(function(e){i.metadata({name:r.name},e(function(n){if(n)return e.abort(),void f({error:"ROSTER_INIT_ERROR"})}))}).nThen(function(){var a=e.createRandomInteger();x.onMetadataUpdate=function(){var e=t.teams[a];e&&t.emit("ROSTER_CHANGE",a,e.clients)};var s=p.create(x),c=s.proxy;c.version=2,c.on("ready",function(){var d={mailbox:{channel:n.createChannelId(),viewed:[],keys:{curvePrivate:e.encodeBase64(w.secretKey),curvePublic:e.encodeBase64(w.publicKey)}},drive:{edPrivate:e.encodeBase64(O.secretKey),edPublic:e.encodeBase64(O.publicKey)},chat:{edit:I.editHash,view:I.viewHash,validateKey:S.keys.validateKey,channel:S.channel},roster:{channel:T.channel,edit:_,view:T.viewKeyStr}},p=t.store.proxy.teams[a]={owner:!0,channel:b.channel,hash:h,roHash:A,password:l,keys:d,metadata:{name:r.name}};c.drive={},N(t,a,s,i,d,o,function(){u.send("TEAM_CREATION"),t.store.mailbox.open("team-"+a,p.keys.mailbox,function(){},!0,{owners:p.keys.drive.edPublic}),t.updateMetadata(),f()})}).on("error",function(e){e&&void 0!==e.loaded&&!e.loaded&&f({error:"ECONNECT"}),e&&e.error&&"EDELETED"===e.error&&D(t,a)})})}(h,i,t,o);if("GET_EDITABLE_FOLDERS"!==a)if("CREATE_INVITE_LINK"!==a){if("GET_PREVIEW_CONTENT"!==a)return"ACCEPT_LINK_INVITATION"===a?h.store.offline?void o({error:"OFFLINE"}):void j(h,i,0,o):void 0;H(h,i,0,o)}else!function(n,t,r,o){var a=e.mkAsync(e.once(o)),i=t.teamId,s=n.teams[t.teamId],u=t.seeds,d=t.bytes64;if(i&&s){var h,p=s.roster;try{h=p.getState().metadata.name}catch(e){return void a({error:"TEAM_NAME_ERR"})}var v=t.message,y=t.name,m=t.hash,E=e.find(n,["store","proxy","teams",i]);try{var b=f.encryptHash(m,E.hash)}catch(e){console.error(e)}var A=f.derivePreviewKeys(u.preview),O=f.deriveInviteKeys(d),w=f.generateKeys(),D=t.role||"VIEWER",_=t.uses||1;g(function(e){!function(){var t=f.generateSignPair(),r={initialState:"{}",network:n.store.network,metadata:{owners:[n.store.proxy.edPublic,w.edPublic]}};r.metadata.validateKey=t.validateKey;var o={teamName:h,message:v,author:c.createData(n.store.proxy,!1),displayName:y},i={channel:A.channel,type:"pad",version:2,keys:{cryptKey:A.cryptKey,validateKey:t.validateKey,signKey:t.signKey}};l.put(i,JSON.stringify(o),e(function(n){if(n)return console.error("CRYPTPUT_ERR",n),e.abort(),void a({error:"SET_PREVIEW_CONTENT"})}),r)}(),function(){var t=f.generateSignPair(),r={initialState:"{}",network:n.store.network,metadata:{owners:[n.store.proxy.edPublic,w.edPublic]}};r.metadata.validateKey=t.validateKey;var o={teamData:R(n,i,"MEMBER"===D),ephemeral:{edPublic:w.edPublic,edPrivate:w.edPrivate,curvePublic:w.curvePublic,curvePrivate:w.curvePrivate}},s={channel:O.channel,type:"pad",version:2,keys:{cryptKey:O.cryptKey,validateKey:t.validateKey,signKey:t.signKey}};l.put(s,JSON.stringify(o),e(function(n){if(n)return console.error("CRYPTPUT_ERR",n),e.abort(),void a({error:"SET_PREVIEW_CONTENT"})}),r)}()}).nThen(function(e){s.pin([O.channel,A.channel],function(e){e&&e.error&&console.error(e.error)}),f.createRosterEntry(s.roster,{curvePublic:w.curvePublic,content:{curvePublic:w.curvePublic,displayName:t.name,pending:!0,remaining:_,totalUses:_,role:D,hash:b,inviteChannel:O.channel,previewChannel:A.channel}},e(function(n){n&&(e.abort(),a(n))}))}).nThen(function(){a()})}else a({error:"EINVAL"})}(h,i,0,o);else!function(n,t,r,o){var a=t.teamId;if(a){var i=n.teams[a];if(i){var s=i.manager.folders||{};o(Object.keys(s).filter(function(e){return!s[e].proxy.version}).map(function(n){var t=e.find(i,["user","userObject"]);return{name:e.find(s,[n,"proxy","metadata","title"]),path:t?t.findFile(n)[0]:[]}}))}else o({error:"ENOENT"})}else o({error:"EINVAL"})}(h,i,0,o)}else!function(e,n,t,r){var o=n.teamId;if(o){var a=e.teams[o];if(a)if(a.roster)if(n.curvePublic){var i=a.roster.getState().members[n.curvePublic];a.roster.remove([n.curvePublic],function(t){if(!t)return i&&i.notifications?void e.store.mailbox.sendTo("KICKED_FROM_TEAM",{pending:n.pending,teamChannel:R(e,o).channel,teamName:R(e,o).metadata.name},{channel:i.notifications,curvePublic:i.curvePublic},function(e){r(e)}):r();r({error:t})})}else r({error:"MISSING_DATA"});else r({error:"NO_ROSTER"});else r({error:"ENOENT"})}else r({error:"EINVAL"})}(h,i,0,o)}else!function(e,n,t,r){var o=n.teamId;if(o){var a=e.teams[o];if(a)if(a.roster){var i=e.store.proxy.curvePublic;a.roster.remove([i],function(n){n?r({error:n}):(D(e,o),r())})}else r({error:"NO_ROSTER"});else r({error:"ENOENT"})}else r({error:"EINVAL"})}(h,i,0,o)}else F(h,i,0,o)}else!function(e,n,t,r){var o=n.teamId;if(o){var a=e.teams[o];a?a.offline?r({error:"OFFLINE"}):a.roster?(n.metadata&&delete n.metadata.offline,a.roster.metadata(n.metadata,function(t){if(t)r({error:t});else{var a=e.store.proxy.teams[o];a&&(a.metadata=n.metadata),r()}})):r({error:"NO_ROSTER"}):r({error:"ENOENT"})}else r({error:"EINVAL"})}(h,i,0,o);else!function(e,n,t,r){var o=n.teamId;if(o){var a=e.teams[o];if(a)if(a.roster){var i=(a.roster.getState()||{}).metadata||{};i.offline=a.offline,r(i)}else r({error:"NO_ROSTER"});else r({error:"ENOENT"})}else r({error:"EINVAL"})}(h,i,0,o);else!function(n,t,r,o){var a=t.teamId;if(a){var i=e.find(n,["store","proxy","teams",a]);if(i){var s=n.teams[a];if(s)if(s.roster){var c,u=(s.roster.getState()||{}).members||{};g(function(e){n.Store.pad.getMetadata(null,{channel:i.channel},e(function(e){c=e&&e.error?s.listmap.metadata||{}:e}))}).nThen(function(){if(n.pending_owners=c.pending_owners,Array.isArray(c.pending_owners)&&c.pending_owners.forEach(function(t){var r;if(Object.keys(u).some(function(e){if(u[e].edPublic===t)return r=u[e],!0}),!r&&i.owner){var o=function(e){n.Store.pad.setMetadata(null,{channel:e,command:"RM_PENDING_OWNERS",value:[t]},function(){})};return o(i.channel),o(e.find(i,["keys","roster","channel"])),void o(e.find(i,["keys","chat","channel"]))}r.pendingOwner=!0}),n.store.messenger){var t=s.getChatData();(n.store.messenger.getOnlineList(t.channel)||[]).forEach(function(e){u[e]&&(u[e].online=!0)})}Object.keys(u).forEach(function(e){var n=u[e];if(n.inviteChannel&&n.hash)if(i.hash)try{n.hash=f.decryptHash(n.hash,i.hash)}catch(e){console.error(e)}else delete n.hash}),o(u)})}else o({error:"NO_ROSTER"});else o({error:"ENOENT"})}else o({error:"ENOENT"})}else o({error:"EINVAL"})}(h,i,0,o);else!function(e,n,t,r){var o=e.teams[n.teamId];if(o){var a=function(){e.emit("ROSTER_CHANGE",n.teamId,o.clients)};e.store.messenger?e.store.messenger.openTeamChat(o.getChatData(),a,t,r):O=function(){e.store.messenger.openTeamChat(o.getChatData(),a,t,r)}}else r({error:"ENOENT"})}(h,i,t,o);else!function(n){var t=e.clone(b);Object.keys(t).forEach(function(e){h.teams[e]?t[e].offline=h.teams[e].offline:(t[e].error=!0,h.nocache[e]&&(t[e].offline=!0))}),n(t)}(o);else!function(e,n,t,r){L(e,t);try{e.store.messenger.removeClient(t)}catch(e){}if(O=function(){},n)if(!e.onReadyHandlers[n]||e.teams[n])if(e.teams[n]){var o=e.teams[n].clients;-1===o.indexOf(t)&&o.push(t),r()}else r({error:"EINVAL"});else-1===e.onReadyHandlers[n].indexOf(t)&&e.onReadyHandlers[n].push({cId:t,cb:r});else r()}(h,i,t,o)},a}},b.anonGetPreviewContent=function(e,n,t){H(e,n,0,t)},b})(X(),te(),G(),je(),ze(),Ue(),We(),Ut(),An(),Oe(),(St||(St=1,Tt=function(e,n,t,r){var o={},a=e.encodeBase64,i=e.decodeBase64;o.generateKeys=function(){var e=t.sign.keyPair(),n=t.box.keyPair();return{edPublic:a(e.publicKey),edPrivate:a(e.secretKey),curvePublic:a(n.publicKey),curvePrivate:a(n.secretKey)}},o.generateSignPair=function(){var e=t.sign.keyPair();return{validateKey:a(e.publicKey),signKey:a(e.secretKey)}};var s=function(r){var o=n.dispenser(i(r));return{channel:e.uint8ArrayToHex(o(16)),cryptKey:o(t.secretbox.keyLength)}};o.deriveInviteKeys=s,o.derivePreviewKeys=s,o.createRosterEntry=function(e,n,t){var r={};r[n.curvePublic]=n.content,e.invite(r,t)};var c=e.decodeUTF8;return o.encryptHash=function(e,n){var o=c(n),a=t.hash(o).subarray(0,32);return r.encrypt(e,a)},o.decryptHash=function(e,n){var o=c(n),a=t.hash(o).subarray(0,32);return r.decrypt(e,a)},o}(X(),Ie(),h(),M())),Tt),xn(),fe(),In(),T(),M(),D(),x(),qe(),h()),Nt}function Vt(){if(Ct)return xt;Ct=1;return xt=((e,n,t,r,o,a,i,s)=>{var c=e.Curve;const u={};let f={};u.setCustomize=e=>{f=e.Messages};var l="MSG",d="CLEARED",h="UNFRIEND",p="MAP_ID",v="MAP_ID_ACK",y=function(e){return JSON.parse(JSON.stringify(e))},m=function(e){for(var n=Object.keys(e).length,t=new Uint8Array(n),r=0;r{const n=v.store.network||e;n.on("message",function(e,n){x(v,e,n)}),n.on("disconnect",function(){v.emit("DISCONNECT",null,R(v))}),n.on("reconnect",function(){v.emit("RECONNECT",null,R(v))})});return p.networkPromise?.then(A),v.store.network&&A(),u.onFriendUpdate=function(e){var n=E(p.proxy,e);if(n&&n.channel){var t=v.channels[n.channel];t&&v.emit("UPDATE_DATA",{info:y(n),channel:n.channel},t.clients)}},u.onFriendAdded=function(e){if(v.friendsClients.length){var n=E(v.store.proxy,e.curvePublic);if("object"==typeof n)if(n.channel){var t=n.channel;v.channels[t]||k(v,null,n,function(){c("FRIEND",{curvePublic:n.curvePublic},v.friendsClients)})}}},u.onFriendRemoved=function(e,n){C(v,e,n)},u.getOnlineList=function(e){return function(e,n){var t=e.channels[n];if(t){var r=[],o=g(e.store.proxy,!1);return r.push(o.curvePublic),t.wc.members.forEach(function(n){if(n!==e.store.network.historyKeeper){var o=t.mapId[n]||{};o.curvePublic&&-1===r.indexOf(o.curvePublic)&&r.push(o.curvePublic)}}),r}}(v,e)},u.storeValidateKey=function(e,n){v.validateKeys[e]=n},u.leavePad=function(e){delete v.validateKeys[e],Object.keys(v.channels).some(function(n){var t=v.channels[n];if(t.padChan===e){t.wc&&t.wc.leave();var r=v.store.network;return t.onReconnect&&r.off("reconnect",t.onReconnect),t.stopped=!0,delete v.channels[n],!0}})},u.openTeamChat=function(n,r,o,a){!function(n,r,o,a,i){var s=o,c=s.channel,u=s.secret;if(c&&u){var f=t.once(t.mkAsync(function(){n.emit("TEAMCHAT_READY",c,[r]),i({readOnly:"object"==typeof u.keys&&!u.keys.validateKey,channel:c})})),l=n.channels[c];if(l)l.onReady.reg(function(){-1===l.clients.indexOf(r)&&l.clients.push(r),f()});else{u.keys.cryptKey&&(u.keys.cryptKey=m(u.keys.cryptKey));var d=e.createEncryptor(u.keys),h=u.keys&&u.keys.validateKey||s.validateKey,p={teamId:o.teamId,readOnly:"object"==typeof u.keys&&!u.keys.validateKey,encryptor:d,channel:c,isTeamChat:!0,decrypt:function(e){return d.decrypt(e,h)},clients:[r],onUserlistUpdate:a,onReady:f};P(n,p)}}else i({error:"EINVAL"})}(v,o,n,r,a)},u.removeClient=function(e){!function(e,n){var t=e.friendsClients.indexOf(n);-1!==t&&e.friendsClients.splice(t,1),Object.keys(e.channels).forEach(function(t){var r=e.channels[t],o=r.clients,a=o.indexOf(n);if(-1!==a&&o.splice(a,1),0===o.length){r.wc&&r.wc.leave();var i=e.store.network;return r.onReconnect&&i.off("reconnect",r.onReconnect),r.stopped=!0,delete e.channels[t],!0}})}(v,e)},u.execCommand=function(n,r,i){var c=r.cmd,u=r.data;"INIT_FRIENDS"!==c?"GET_ROOMS"!==c?"GET_MUTED_USERS"!==c?"GET_USERLIST"!==c?"OPEN_PAD_CHAT"!==c?"GET_MY_INFO"!==c?"REMOVE_FRIEND"!==c?"CANCEL_FRIEND"!==c?"MUTE_USER"!==c?"UNMUTE_USER"!==c?"GET_STATUS"!==c?"GET_MORE_HISTORY"!==c?"SEND_MESSAGE"!==c?"SET_CHANNEL_HEAD"!==c?"CLEAR_OWNED_CHANNEL"!==c||function(e,n,t){var r=e.channels[n];if(r)if(e.store.rpc){var o=e.store.proxy||{};e.store.rpc.clearOwnedChannel(n,function(a){if(t({error:a}),!a){r.messages=[],e.emit("CLEAR_CHANNEL",n,r.clients);var i=[d,o.curvePublic,+new Date],s=JSON.stringify(i),c=r.encrypt(s);r.wc.bcast(c).then(function(){},function(e){console.error("Failed to send message:",e)})}})}else t({error:"RPC_NOT_READY"});else t({error:"NO_CHANNEL"})}(v,u,i):T(v,u.id,u.sig,i):function(e,n,t,r){var o=e.channels[n];if(o)if(o.readOnly)r({error:"FORBIDDEN"});else if(e.store.network.webChannels.some(function(e){if(e.id===o.wc.id)return!0})){var i=e.store.proxy||{},s=[l,i.curvePublic,+new Date,t];if(!o.isFriendChat){var c=i[a.displayNameKey]||f.anonymous+"#"+(i.uid||e.store.noDriveUid).slice(0,5);s.push(c)}var u=JSON.stringify(s),d=o.encrypt(u);o.wc.bcast(d).then(function(){I(e,o,d),r()},function(e){r({error:e})})}else r({error:"NO_SUCH_CHANNEL"});else r({error:"NO_CHANNEL"})}(v,u.id,u.content,i):function(e,n,r,o,a){if("function"==typeof a)if("string"==typeof r){var i=e.channels[n];if(void 0!==i){var s=t.uid();w(e,s,n,a);var c=["GET_HISTORY_RANGE",i.id,{from:r,count:o,txid:s}],u=e.store.network;u.sendto(u.historyKeeper,JSON.stringify(c)).then(function(){},function(e){console.error(e)})}else console.error("chan is undefined. we're going to have a problem here")}else a([])}(v,u.id,u.sig,u.count,i):function(e,n,t){var r=e.channels[n];if(r){r.onUserlistUpdate&&r.onUserlistUpdate();var o=e.store.proxy||{};t(r.wc.members.some(function(n){if(n!==e.store.network.historyKeeper){var t=r.mapId[n]||void 0;return!!t&&t.curvePublic!==o.curvePublic}}))}else t("NO_SUCH_CHANNEL")}(v,u,i):function(e,n,r){var o=t.once(t.mkAsync(r)),a=e.store.proxy,i=a.mutedUsers=a.mutedUsers||{};delete i[n],e.emit("UPDATE_MUTED",null,R(e)),o(Object.keys(i).length)}(v,u,i):function(e,n,r){var o=t.once(t.mkAsync(r)),a=e.store.proxy,i=a.mutedUsers=a.mutedUsers||{};i[n.curvePublic]||(i[n.curvePublic]=n,e.emit("UPDATE_MUTED",null,R(e))),o()}(v,u,i):function(e,n,r){var o=t.once(r);"function"==typeof o?e.Store.cancelFriendRequest(n,o):console.error("NO_CALLBACK")}(v,u,i):function(e,n,r){var a=t.once(r);if("function"==typeof a){var i=e.store.proxy,s=E(i,n);if(!s)return console.error("friend is not valid"),void a({error:"INVALID_FRIEND"});var c=e.channels[s.channel];if(e.store.mailbox&&s.curvePublic&&s.notifications)o.removeFriend(e.store,n,function(n){n&&n.error?a({error:n.error}):(e.updateMetadata(),a(n))});else if(c)try{var u=[h,i.curvePublic,+new Date],f=JSON.stringify(u),l=c.encrypt(f);c.wc.bcast(l).then(function(){C(e,n,s.channel),N(e,n,function(){a()})},function(t){t?a({error:t}):(C(e,n,s.channel),N(e,n,function(){a()}))})}catch(e){a({error:e})}else a({error:"NO_SUCH_CHANNEL"})}else console.error("NO_CALLBACK")}(v,u,i):function(e,n){var t=e.store.proxy||{};n({curvePublic:t.curvePublic,displayName:t[a.displayNameKey]})}(v,i):function(n,r,o,a){var i=o.channel,s=t.once(t.mkAsync(function(){n.emit("PADCHAT_READY",i,[r]),a()})),c=n.channels[i];if(c)c.onReady.reg(function(){-1===c.clients.indexOf(r)&&c.clients.push(r),s()});else{var u=o.secret;u.keys.cryptKey&&(u.keys.cryptKey=m(u.keys.cryptKey));var f=e.createEncryptor(u.keys),l=u.keys&&u.keys.validateKey||n.validateKeys[u.channel],d={padChan:o.secret&&o.secret.channel,readOnly:"object"==typeof u.keys&&!u.keys.validateKey,encryptor:f,channel:o.channel,isPadChat:!0,decrypt:function(e){return f.decrypt(e,l)},clients:[r],onReady:s};P(n,d)}}(v,n,u,i):function(e,n,t){var r=e.channels[n.id];if(r)if(r.isFriendChat){var o=O(e,n.id);if(!o)return void t({error:"NO_SUCH_FRIEND"});t([o])}else t([]);else t({error:"NO_SUCH_CHANNEL"})}(v,u,i):function(e,n){var t=e.store.proxy;if(!n)return t.mutedUsers||{};n(t.mutedUsers||{})}(v,i):function(e,n,t){var r=e.store.proxy;if(n&&n.curvePublic){var o=n.curvePublic,a=E(r,o);if(!a)return void t({error:"NO_SUCH_FRIEND"});var i=e.channels[a.channel];return i?void t([{id:i.id,isFriendChat:!0,name:a.displayName,lastKnownHash:a.lastKnownHash,curvePublic:a.curvePublic,messages:i.messages}]):void t({error:"NO_SUCH_CHANNEL"})}if(n&&n.padChat){var s=e.channels[n.padChat];return s?void t([{id:s.id,isPadChat:!0,messages:s.messages}]):void t({error:"NO_SUCH_CHANNEL"})}if(n&&n.teamChat){var c=e.channels[n.teamChat];return c?void t([{id:c.id,isTeamChat:!0,messages:c.messages}]):void t({error:"NO_SUCH_CHANNEL"})}var u=Object.keys(e.channels).map(function(n){var t,r,o,a=e.channels[n];if(a.isFriendChat){var i=O(e,n);if(!i)return null;t=i.displayName,r=i.lastKnownHash,o=i.curvePublic}else{if(a.isPadChat)return;if(a.isTeamChat)return}return{id:a.id,isFriendChat:a.isFriendChat,name:t,lastKnownHash:r,curvePublic:o,messages:a.messages}}).filter(function(e){return e});t(u)}(v,u,i):function(e,n,t){var r=b(e.store.proxy);s(function(t){Object.keys(r).forEach(function(o){if("me"!==o){var a=y(r[o]);"object"==typeof a&&a.channel&&k(e,n,a,t())}else delete r.me.channel})}).nThen(function(){-1===e.friendsClients.indexOf(n)&&e.friendsClients.push(n),t()})}(v,n,i)},u},u})(M(),te(),X(),je(),An(),G(),on(),qe()),xt}function Gt(){if(Pt)return Rt;Pt=1;return Rt=((e,n,t,r)=>{const o={},a={};var i=function(n,t,o,a,i){var s,c=e.once(e.mkAsync(i)),u=function(n,t){if(!t)return e.find(n.store,["proxy","edPublic"]);var r=e.find(n,["store","proxy","teams",t]);return e.find(r,["keys","drive","edPublic"])}(n,a),f=n.Store,l=0,d=0,h=0;r(function(e){f.getFileSize(null,{channel:t},e(function(n){return n&&n.error?(e.abort(),void c(n)):void 0===n.size?(e.abort(),void c({error:"ENOENT"})):void(l=n.size)})),f.getHistory(null,{channel:t,lastKnownHash:o},e(function(n){if(n&&n.error)return e.abort(),void c(n);if(!Array.isArray(n))return e.abort(),void c({error:"EINVAL"});if(n.length){s=n[0].hash;var t=n.map(function(e){return e.msg});d=t.join("\n").length}}),!0),f.pad.getMetadata(null,{channel:t},e(function(n){if((!n||!n.error)&&n&&"object"==typeof n)return h=JSON.stringify(n).length,n&&Array.isArray(n.owners)&&-1!==n.owners.indexOf(u)?void 0:(e.abort(),void c({error:"INSUFFICIENT_PERMISSIONS"}))}))}).nThen(function(){c({size:l-h-d,hash:s})})};return a.GET_HISTORY_SIZE=function(o,a,s,c){if(o.store.loggedIn&&o.store.rpc){var u=a.channels;if(Array.isArray(u)){var f=[];a.account?u=function(r){var o=[],a=e.find(r.store,["proxy","edPublic"]);-1!==(e.find(r.store,["driveMetadata","owners"])||[]).indexOf(a)&&o.push(r.store.driveChannel);var i=r.store.proxy.profile;if(i){var s=i.edit?n.hrefToHexChannelId("/profile/#"+i.edit,null):null;s&&o.push(s)}r.store.proxy.todo&&o.push(n.hrefToHexChannelId("/todo/#"+r.store.proxy.todo,null));var c=r.store.proxy.mailboxes;if(c){var u=Object.keys(c).map(function(e){return{lastKnownHash:c[e].lastKnownHash,channel:c[e].channel}});Array.prototype.push.apply(o,u)}var f=r.store.proxy[t.SHARED_FOLDERS];if(f){var l=Object.keys(f).map(function(e){var n=f[e];if(n&&n.owners&&Array.isArray(n.owners)&&-1!==n.owners.indexOf(a))return n.channel}).filter(Boolean);Array.prototype.push.apply(o,l)}return o}(o):a.team&&(u=function(n,t){let r=e.find(n.store,["proxy","teams",t]);if(!r)return[];let o=[r.channel],a=r.keys.roster;return o.push({channel:a.channel,lastKnownHash:a.lastKnownHash}),o}(o,a.team));var l=0,d=[];r(function(e){u.forEach(function(n){var t,r=n;"object"==typeof n&&n.channel&&(r=n.channel,t=n.lastKnownHash),i(o,r,t,a.teamId,e(function(e){e&&e.error?f.push(e.error):(l+=e.size,e.hash&&d.push({channel:r,hash:e.hash}))}))})}).nThen(function(){c({warning:f.length?f:void 0,channels:d,size:l})})}else c({error:"EINVAL"})}else c({error:"INSUFFICIENT_PERMISSIONS"})},a.TRIM_HISTORY=function(e,n,t,o){if(e.store.loggedIn&&e.store.rpc){var a=n.channels;if(Array.isArray(a)){var i=function(e,n){if(!n)return e.store.rpc;var t=e.store.modules.team;if(t){var r=t.getTeam(n);if(r)return r.rpc}}(e,n.teamId);if(i){var s=[];r(function(e){a.forEach(function(n){i.trimHistory(n,e(function(e){e&&s.push(e)}))})}).nThen(function(){1===a.length&&s.length?o({error:s[0]}):o({warning:s.length?s:void 0})})}else o({error:"ENORPC"})}else o({error:"EINVAL"})}else o({error:"INSUFFICIENT_PERMISSIONS"})},o.init=function(e,n,t){var r={};if(e.store){var o={store:e.store,Store:e.Store,pinPads:e.pinPads,updateMetadata:e.updateMetadata,emit:t};return r.execCommand=function(e,n,t){var r=n.cmd,i=n.data;try{a[r](o,i,e,t)}catch(e){console.error(e)}},r}},o})(X(),te(),Ue(),qe()),Rt}var Yt,Jt={exports:{}};function qt(){return Yt||(Yt=1,function(e){(()=>{const n=e=>{var n={};const t=globalThis;var r=function(){},o=n.getWeekNo=function(e,n){"number"!=typeof n&&(n=1);var t=new Date(e.getFullYear(),0,1),r=t.getDay()-n;r=r>=0?r:r+7;var o,a=Math.floor((e.getTime()-t.getTime())/864e5)+1;if(r<4){if((o=Math.floor((a+r-1)/7)+1)>52){var i=new Date(e.getFullYear()+1,0,1).getDay()-n;o=(i=i>=0?i:i+7)<4?1:53}}else o=Math.floor((a+r-1)/7);return o},a=function(e){var n=new Date(e.getFullYear(),0,0),t=e-n+60*(n.getTimezoneOffset()-e.getTimezoneOffset())*1e3;return Math.floor(t/864e5)},i=n.DAYORDER=["SU","MO","TU","WE","TH","FR","SA"],s=function(e){var n=Number(e.slice(0,-2)),t=i.indexOf(e.slice(-2));return n?[n,t]:t},c=function(e,n){var t=e.getDay();t>=(n="number"==typeof n?n:1)?e.setDate(e.getDate()-(t-n)):e.setDate(e.getDate()-(7+t-n))},u=function(e){return e.getFullYear()+"-"+(e.getMonth()+1)+"-"+e.getDate()},f={daily:function(e,n){e.setDate(e.getDate()+n)},weekly:function(e,n){e.setDate(e.getDate()+7*n)},monthly:function(e,n){e.setMonth(e.getMonth()+n)},yearly:function(e,n){e.setFullYear(e.getFullYear()+n)}},l={month:function(e,n,t){var r=new Date(n.start),o=(t-(e.getMonth()+1)+12)%12,a=e.getMonth()+o;if(e.setMonth(a),e.setDate(r.getDate()),e.getMonth()===a)return!0},weekno:function(e,n,t,r){var a=r&&r.wkst;"number"!=typeof a&&(a=1);var i=new Date(n.start),s=new Date(e.getFullYear(),11,31),u=o(s,a),f=1===u;1===u&&(u=52);var l=o(e,a);if(!t||t>u)return!1;t<0&&(t=u+t+1);var d=t-l,h=new Date(+e);h.setDate(h.getDate()+7*d),c(h,a);var p="aaaaaaa".split("").map(function(n,t){var r=new Date(+h);if(r.setDate(r.getDate()+t),r.getFullYear()===e.getFullYear())return r.toLocaleDateString()!==i.toLocaleDateString()&&r}).filter(Boolean);return 1===t&&f&&(c(s,a),"aaaaaaa".split("").some(function(n,t){var r=new Date(+s);if(r.setDate(r.getDate()+t),r.toLocaleDateString()!==i.toLocaleDateString())return r.getFullYear()>e.getFullYear()||void p.push(r)})),p.length?p:void 0}};l.yearday=function(e,n,t){var r=e.getFullYear();if(function(e,n){if(!("number"!=typeof n||Math.abs(n)<1||Math.abs(n)>366))return n<0&&(n=a(new Date(e.getFullYear(),11,31))+n+1),e.setMonth(0),e.setDate(n),!0}(e,t)&&e.getFullYear()===r)return!0},l.monthday=function(e,n,t,r){if("number"!=typeof t||Math.abs(t)<1||Math.abs(t)>31)return!1;var o=function(e,n){var t=e.getMonth();n<0&&(n=new Date(e.getFullYear(),e.getMonth()+1,0).getDate()+n+1);return e.setDate(n),e.getMonth()===t};if("monthly"===r.freq)return o(e,t);var a="aaaaaaaaaaaa".split("").map(function(n,r){var a=new Date(e.getFullYear(),r,1);return o(a,t)?a:void 0}).filter(Boolean);return a.length?a:void 0},l.day=function(e,n,t,r){var o,a=s(t);Array.isArray(a)&&(o=a[0],a=a[1]);var i=[];if(![0,1,2,3,4,5,6].includes(a))return!1;var c,u=function(e){if(o){var n=[];"aaaaaaaaaaaa".split("").some(function(t,r){if(void 0===e||r===e){var a,s=i.filter(function(e){return e.getMonth()===r});return a=o<0?s.length+o:o-1,n.push(s[a]),void 0!==e&&r===e}}),i=n.filter(Boolean)}};if("yearly"===r.freq){c=new Date(+e);for(var f=e.getFullYear();c.getDay()!==a;)c.setDate(c.getDate()+1);for(;c.getFullYear()===f;)i.push(new Date(+c)),c.setDate(c.getDate()+7);return u(),i}if("monthly"===r.freq){c=new Date(+e);for(var l=e.getMonth();c.getDay()!==a;)c.setDate(c.getDate()+1);for(;c.getMonth()===l;)i.push(new Date(+c)),c.setDate(c.getDate()+7);return u(l),i}if("weekly"===r.freq)for(;e.getDay()!==a;)e.setDate(e.getDate()+1);return!0};var d={month:function(e,n){return e.filter(function(e){return n.includes(e.getMonth()+1)})},weekno:function(e,n,t){return e.filter(function(e){var r=t&&t.wkst;"number"!=typeof r&&(r=1);var a=new Date(e.getFullYear(),11,31),i=o(a,r);1===i&&(i=52);var s=o(e,r);return n.some(function(e){return e>0?e===s:s===i+e+1})})},yearday:function(e,n){return e.filter(function(e){var t=a(e),r=a(new Date(e.getFullYear(),11,31));return n.some(function(e){return e>0?e===t:t===r+e+1})})},monthday:function(n,t){return n.filter(function(n){var r=e.clone(t);return(r=r.map(function(e){e<0&&(e=new Date(n.getFullYear(),n.getMonth()+1,0).getDate()+e+1);return e})).includes(n.getDate())})},day:function(e,n,t){return e.filter(function(e){var r=e.toLocaleDateString(),o="yearly";return("monthly"===t.freq||"yearly"===t.freq&&t.by&&t.by.month)&&(o="monthly"),n.some(function(n){var t,a=s(n);if(Array.isArray(a)&&(t=a[0],a=a[1]),!t)return e.getDay()===a;var i=new Date(e.getFullYear(),e.getMonth(),1);return"yearly"===o&&i.setMonth(0),l.day(i,{},n,{freq:o}).some(function(e){return e.toLocaleDateString()===r})})})},setpos:function(n,t){var r=n.slice(),o=e.deduplicateString(t.slice().map(function(e){return e>0?e-1:0!==e?r.length+e:void 0}));return n.filter(function(e){var n=r.indexOf(e);return o.includes(n)})}},h=["month","weekno","yearday","monthday","day"],p=["month","monthday","day"];n.getMonthId=function(e){return e.getFullYear()+"-"+e.getMonth()};var v=t.CP_calendar_cache={},y={};n.resetCache=function(){v=t.CP_calendar_cache={},y={}};var m=function(n){if(!n.recUpdate)return[];var t={},r=n.recUpdate.from;return Object.keys(r||{}).forEach(function(e){var n=r[e];n.recurrenceRule&&(t[e]=n.recurrenceRule)}),Object.keys(t).sort(function(e,n){return Number(e)-Number(n)}).map(function(n){var r=e.clone(t[n]);if(f[r.freq]&&!(r.interval&&r.interval<1))return r._start=Number(n),r}).filter(Boolean)};n.getRecurring=function(o,i){t.CP_DEV_MODE&&(r=console.warn);var s=[];return o.forEach(function(t){var o=t.split("-"),g=new Date(o[0],o[1]),E=new Date(+g);E.setMonth(E.getMonth()+1),E.setMilliseconds(-1),r("Compute month",g.toLocaleDateString()),(i||[]).forEach(function(t){var o=new Date(t.start),i=new Date(t.end),b=t,A=t.recurrenceRule;if(A){var O=m(t),w=O.shift();if(!(o>=E)){for(var D=A.until,_=O.slice(),T=w;T&&T._start&&T._startn)){var t;if(n.getFullYear()===e.getFullYear())t=a(n)-a(e);else{var r=new Date(e.getFullYear(),11,31);for(t=a(r)-a(e)+a(n);r.getFullYear()+1=N)){r("Start iteration",i.toLocaleDateString());var m=function(n,t,o){var a=e.clone(t),i=new Date(a.start),s=a.id.split("|")[0],u=o.toLocaleDateString();v[s]=v[s]||{};var y=n.interval||1,m=n.freq,g=[],E=function(e,t){g=d[e](g,t,n)},b=function(e){return function(t){var r=new Date(+o);"yearly"===n.freq?(r.setMonth(0),r.setDate(1)):"monthly"===n.freq?r.setDate(1):"weekly"===n.freq?c(r,n.wkst):n.freq;var s=l[e](r,a,t,n);if(s)if(Array.isArray(s))s=s.filter(function(e){return e.toLocaleDateString()!==i.toLocaleDateString()}),Array.prototype.push.apply(g,s);else{if(r.toLocaleDateString()===i.toLocaleDateString())return;g.push(r)}}},A=e.once(function(){f[m](o,y)}),O=function(){"monthly"===m?o.setDate(15):"yearly"===m&&1===i.getMonth()&&29===i.getDate()&&o.setDate(28),A();var e=new Date(+o);if("monthly"===m||"yearly"===m){if(e.setDate(i.getDate()),e.getDate()!==i.getDate())return;if("yearly"===m&&e.getMonth()!==i.getMonth())return}g.push(e)};if(Array.isArray(v[s][u]))return r("Get cache",s,u),"monthly"===m?o.setDate(15):"yearly"===m&&1===i.getMonth()&&29===i.getDate()&&o.setDate(28),A(),v[s][u];if(n.by&&"yearly"===m){var w=h.slice(),D=!1;(n.by.weekno||n.by.yearday||n.by.monthday||n.by.day)&&(w.shift(),D=!0);var _=!0;w.forEach(function(e){var t=n.by[e];t&&(_?(t.forEach(b(e)),_=!1):"day"===e?n.by.yearday||n.by.monthday||n.by.weekno?E("day",n.by.day):n.by.day.forEach(b("day")):E(e,t))}),n.by.month&&D&&E("month",n.by.month)}n.by&&"monthly"===m&&(n.by.monthday||n.by.day?n.by.monthday?n.by.monthday.forEach(b("monthday")):n.by.day&&n.by.day.forEach(b("day")):O(),n.by.month&&E("month",n.by.month),n.by.day&&n.by.monthday&&E("day",n.by.day)),n.by&&"weekly"===m&&(n.by.day?n.by.day.forEach(b("day")):O(),n.by.month&&E("month",n.by.month)),n.by&&"daily"===m&&(O(),p.forEach(function(e){var t=n.by[e];t&&E(e,t)})),g.sort(function(e,n){return e-n}),n.by&&n.by.setpos&&E("setpos",n.by.setpos),n.by&&Object.keys(n.by).length?A():O();var T=[];return g=g.filter(function(e){var n=new Date(+e).toLocaleDateString();return!T.includes(n)&&(T.push(n),!0)}),r("Set cache",s,u),v[s][u]=g,g}(A,t,i);if(r("Iteration results",JSON.stringify(m.map(function(e){return new Date(e).toLocaleDateString()}))),!m.length)return i.getFullYear()=N)return r(h.toLocaleDateString(),"count"),D=!0,!0;if(h>=E)return r(h.toLocaleDateString(),"endMonth"),D=!0,!0;if(A.until&&h>A.until)return r(h.toLocaleDateString(),"until"),D=!0,!0;if(!(h=E||h=g){if(y[c.id]&&y[c.id].includes(c.start))return;y[c.id]=y[c.id]||[],y[c.id].push(c.start)}if(b.timeZone&&!c.isAllDay){var m=function(e,n,t){var r=function(e,n){let t=e.toLocaleString("en-CA",{timeZone:n,hour12:!1}).replace(", ","T");return t+="."+e.getMilliseconds().toString().padStart(3,"0"),-(new Date(t+"Z")-e)},o=Intl.DateTimeFormat().resolvedOptions().timeZone,a=r(n,e)-r(t,e);return r(n,o)-r(t,o)-a}(b.timeZone,o,h);c.start+=m,c.end+=m}return s.push(c),_?(v(),!0):void 0}r(h.toLocaleDateString(),"start")}),D||x(i)}};x(o),r("Added this month (all events)",s.map(function(e){return new Date(e.start).toLocaleDateString()}))}}}}})}),s},n.getAllOccurrences=function(e){if(!e.recurrenceRule)return[e.start];var t=e.recurrenceRule;if(!t.until&&!t.count)return!1;var r=[e.start],o=new Date(e.start);o.setDate(15);for(var a=[],i=0,s=function(){return t.count?r.length=1e4;)t.setDate(t.getDate()-a),o++;return{d:o*=a,h:(t=new Date(n)).getHours()-r.getHours(),m:t.getMinutes()-r.getMinutes()}};return n.applyUpdates=function(e){return e.forEach(function(e){if(e.raw={start:e.start,end:e.end},e.recUpdate){var n,t=e.recUpdate.from||{},r=e.recUpdate.one||{},o=e.start,a=m(e).filter(function(e){return e._start>o}).shift(),i=function(n,t){var r=n[t],o=new Date(e.raw[t]);o.setDate(o.getDate()+r.d),o.setHours(o.getHours()+r.h),o.setMinutes(o.getMinutes()+r.m),e[t]=+o};(n=t,Object.keys(n).sort(function(e,n){return Number(e)-Number(n)})).forEach(function(n){o",noCalendar:!1,now:new Date,onChange:[],onClose:[],onDayCreate:[],onDestroy:[],onKeyDown:[],onMonthChange:[],onOpen:[],onParseConfig:[],onReady:[],onValueUpdate:[],onYearChange:[],onPreCalendarPosition:[],plugins:[],position:"auto",positionElement:void 0,prevArrow:"",shorthandCurrentMonth:!1,showMonths:1,static:!1,time_24hr:!1,weekNumbers:!1,wrap:!1},o={weekdays:{shorthand:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],longhand:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]},months:{shorthand:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],longhand:["January","February","March","April","May","June","July","August","September","October","November","December"]},daysInMonth:[31,28,31,30,31,30,31,31,30,31,30,31],firstDayOfWeek:0,ordinal:function(e){var n=e%100;if(n>3&&n<21)return"th";switch(n%10){case 1:return"st";case 2:return"nd";case 3:return"rd";default:return"th"}},rangeSeparator:" to ",weekAbbreviation:"Wk",scrollTitle:"Scroll to increment",toggleTitle:"Click to toggle",amPM:["AM","PM"],yearAriaLabel:"Year",monthAriaLabel:"Month",hourAriaLabel:"Hour",minuteAriaLabel:"Minute",time_24hr:!1},a=function(e,n){return void 0===n&&(n=2),("000"+e).slice(-1*n)},i=function(e){return!0===e?1:0};function s(e,n){var t;return function(){var r=this;clearTimeout(t),t=setTimeout(function(){return e.apply(r,arguments)},n)}}var c=function(e){return e instanceof Array?e:[e]};function u(e,n,t){if(!0===t)return e.classList.add(n);e.classList.remove(n)}function f(e,n,t){var r=window.document.createElement(e);return n=n||"",t=t||"",r.className=n,void 0!==t&&(r.textContent=t),r}function l(e){for(;e.firstChild;)e.removeChild(e.firstChild)}function d(e,n){return n(e)?e:e.parentNode?d(e.parentNode,n):void 0}function h(e,n){var t=f("div","numInputWrapper"),r=f("input","numInput "+e),o=f("span","arrowUp"),a=f("span","arrowDown");if(-1===navigator.userAgent.indexOf("MSIE 9.0")?r.type="number":(r.type="text",r.pattern="\\d*"),void 0!==n)for(var i in n)r.setAttribute(i,n[i]);return t.appendChild(r),t.appendChild(o),t.appendChild(a),t}function p(e){try{return"function"==typeof e.composedPath?e.composedPath()[0]:e.target}catch(n){return e.target}}var v=function(){},y=function(e,n,t){return t.months[n?"shorthand":"longhand"][e]},m={D:v,F:function(e,n,t){e.setMonth(t.months.longhand.indexOf(n))},G:function(e,n){e.setHours(parseFloat(n))},H:function(e,n){e.setHours(parseFloat(n))},J:function(e,n){e.setDate(parseFloat(n))},K:function(e,n,t){e.setHours(e.getHours()%12+12*i(new RegExp(t.amPM[1],"i").test(n)))},M:function(e,n,t){e.setMonth(t.months.shorthand.indexOf(n))},S:function(e,n){e.setSeconds(parseFloat(n))},U:function(e,n){return new Date(1e3*parseFloat(n))},W:function(e,n,t){var r=parseInt(n),o=new Date(e.getFullYear(),0,2+7*(r-1),0,0,0,0);return o.setDate(o.getDate()-o.getDay()+t.firstDayOfWeek),o},Y:function(e,n){e.setFullYear(parseFloat(n))},Z:function(e,n){return new Date(n)},d:function(e,n){e.setDate(parseFloat(n))},h:function(e,n){e.setHours(parseFloat(n))},i:function(e,n){e.setMinutes(parseFloat(n))},j:function(e,n){e.setDate(parseFloat(n))},l:v,m:function(e,n){e.setMonth(parseFloat(n)-1)},n:function(e,n){e.setMonth(parseFloat(n)-1)},s:function(e,n){e.setSeconds(parseFloat(n))},u:function(e,n){return new Date(parseFloat(n))},w:v,y:function(e,n){e.setFullYear(2e3+parseFloat(n))}},g={D:"(\\w+)",F:"(\\w+)",G:"(\\d\\d|\\d)",H:"(\\d\\d|\\d)",J:"(\\d\\d|\\d)\\w+",K:"",M:"(\\w+)",S:"(\\d\\d|\\d)",U:"(.+)",W:"(\\d\\d|\\d)",Y:"(\\d{4})",Z:"(.+)",d:"(\\d\\d|\\d)",h:"(\\d\\d|\\d)",i:"(\\d\\d|\\d)",j:"(\\d\\d|\\d)",l:"(\\w+)",m:"(\\d\\d|\\d)",n:"(\\d\\d|\\d)",s:"(\\d\\d|\\d)",u:"(.+)",w:"(\\d\\d|\\d)",y:"(\\d{2})"},E={Z:function(e){return e.toISOString()},D:function(e,n,t){return n.weekdays.shorthand[E.w(e,n,t)]},F:function(e,n,t){return y(E.n(e,n,t)-1,!1,n)},G:function(e,n,t){return a(E.h(e,n,t))},H:function(e){return a(e.getHours())},J:function(e,n){return void 0!==n.ordinal?e.getDate()+n.ordinal(e.getDate()):e.getDate()},K:function(e,n){return n.amPM[i(e.getHours()>11)]},M:function(e,n){return y(e.getMonth(),!0,n)},S:function(e){return a(e.getSeconds())},U:function(e){return e.getTime()/1e3},W:function(e,n,t){return t.getWeek(e)},Y:function(e){return a(e.getFullYear(),4)},d:function(e){return a(e.getDate())},h:function(e){return e.getHours()%12?e.getHours()%12:12},i:function(e){return a(e.getMinutes())},j:function(e){return e.getDate()},l:function(e,n){return n.weekdays.longhand[e.getDay()]},m:function(e){return a(e.getMonth()+1)},n:function(e){return e.getMonth()+1},s:function(e){return e.getSeconds()},u:function(e){return e.getTime()},w:function(e){return e.getDay()},y:function(e){return String(e.getFullYear()).substring(2)}},b=function(e){var n=e.config,t=void 0===n?r:n,a=e.l10n,i=void 0===a?o:a,s=e.isMobile,c=void 0!==s&&s;return function(e,n,r){var o=r||i;return void 0===t.formatDate||c?n.split("").map(function(n,r,a){return E[n]&&"\\"!==a[r-1]?E[n](e,o,t):"\\"!==n?n:""}).join(""):t.formatDate(e,n,o)}},A=function(e){var n=e.config,t=void 0===n?r:n,a=e.l10n,i=void 0===a?o:a;return function(e,n,o,a){if(0===e||e){var s,c=a||i,u=e;if(e instanceof Date)s=new Date(e.getTime());else if("string"!=typeof e&&void 0!==e.toFixed)s=new Date(e);else if("string"==typeof e){var f=n||(t||r).dateFormat,l=String(e).trim();if("today"===l)s=new Date,o=!0;else if(/Z$/.test(l)||/GMT$/.test(l))s=new Date(e);else if(t&&t.parseDate)s=t.parseDate(e,f);else{s=t&&t.noCalendar?new Date((new Date).setHours(0,0,0,0)):new Date((new Date).getFullYear(),0,1,0,0,0,0);for(var d=void 0,h=[],p=0,v=0,y="";p=0?new Date:new Date(E.config.minDate.getTime()),t=D(E.config);n.setHours(t.hours,t.minutes,t.seconds,n.getMilliseconds()),E.selectedDates=[n],E.latestSelectedDateObj=n}void 0!==e&&"blur"!==e.type&&function(e){e.preventDefault();var n="keydown"===e.type,t=p(e),r=t;void 0!==E.amPM&&t===E.amPM&&(E.amPM.textContent=E.l10n.amPM[i(E.amPM.textContent===E.l10n.amPM[0])]);var o=parseFloat(r.getAttribute("min")),s=parseFloat(r.getAttribute("max")),c=parseFloat(r.getAttribute("step")),u=parseInt(r.value,10),f=u+c*(e.delta||(n?38===e.which?1:-1:0));if(void 0!==r.value&&2===r.value.length){var l=r===E.hourElement,d=r===E.minuteElement;fs&&(f=r===E.hourElement?f-s-i(!E.amPM):o,d&&L(void 0,1,E.hourElement)),E.amPM&&l&&(1===c?f+u===23:Math.abs(f-u)>c)&&(E.amPM.textContent=E.l10n.amPM[i(E.amPM.textContent===E.l10n.amPM[0])]),r.value=a(f)}}(e);var r=E._input.value;I(),be(),E._input.value!==r&&E._debouncedChange()}function I(){if(void 0!==E.hourElement&&void 0!==E.minuteElement){var e,n,t=(parseInt(E.hourElement.value.slice(-2),10)||0)%24,r=(parseInt(E.minuteElement.value,10)||0)%60,o=void 0!==E.secondElement?(parseInt(E.secondElement.value,10)||0)%60:0;void 0!==E.amPM&&(e=t,n=E.amPM.textContent,t=e%12+12*i(n===E.l10n.amPM[1]));var a=void 0!==E.config.minTime||E.config.minDate&&E.minDateHasTime&&E.latestSelectedDateObj&&0===O(E.latestSelectedDateObj,E.config.minDate,!0);if(void 0!==E.config.maxTime||E.config.maxDate&&E.maxDateHasTime&&E.latestSelectedDateObj&&0===O(E.latestSelectedDateObj,E.config.maxDate,!0)){var s=void 0!==E.config.maxTime?E.config.maxTime:E.config.maxDate;(t=Math.min(t,s.getHours()))===s.getHours()&&(r=Math.min(r,s.getMinutes())),r===s.getMinutes()&&(o=Math.min(o,s.getSeconds()))}if(a){var c=void 0!==E.config.minTime?E.config.minTime:E.config.minDate;(t=Math.max(t,c.getHours()))===c.getHours()&&r=12)]),void 0!==E.secondElement&&(E.secondElement.value=a(t)))}function R(e){var n=p(e),t=parseInt(n.value)+(e.delta||0);(t/1e3>1||"Enter"===e.key&&!/[^\d]/.test(t.toString()))&&Z(t)}function P(e,n,t,r){return n instanceof Array?n.forEach(function(n){return P(e,n,t,r)}):e instanceof Array?e.forEach(function(e){return P(e,n,t,r)}):(e.addEventListener(n,t,r),void E._handlers.push({remove:function(){return e.removeEventListener(n,t)}}))}function k(){ve("onChange")}function M(e,n){var t=void 0!==e?E.parseDate(e):E.latestSelectedDateObj||(E.config.minDate&&E.config.minDate>E.now?E.config.minDate:E.config.maxDate&&E.config.maxDate=0&&O(e,E.selectedDates[1])<=0}(n)&&!me(n)&&a.classList.add("inRange"),E.weekNumbers&&1===E.config.showMonths&&"prevMonthDay"!==e&&t%7==1&&E.weekNumbers.insertAdjacentHTML("beforeend",""+E.config.getWeek(n)+""),ve("onDayCreate",a),a}function j(e){e.focus(),"range"===E.config.mode&&re(e)}function K(e){for(var n=e>0?0:E.config.showMonths-1,t=e>0?E.config.showMonths:-1,r=n;r!=t;r+=e)for(var o=E.daysContainer.children[r],a=e>0?0:o.children.length-1,i=e>0?o.children.length:-1,s=a;s!=i;s+=e){var c=o.children[s];if(-1===c.className.indexOf("hidden")&&$(c.dateObj))return c}}function U(e,n){var t=ee(document.activeElement||document.body),r=void 0!==e?e:t?document.activeElement:void 0!==E.selectedDateElem&&ee(E.selectedDateElem)?E.selectedDateElem:void 0!==E.todayDateElem&&ee(E.todayDateElem)?E.todayDateElem:K(n>0?1:-1);void 0===r?E._input.focus():t?function(e,n){for(var t=-1===e.className.indexOf("Month")?e.dateObj.getMonth():E.currentMonth,r=n>0?E.config.showMonths:-1,o=n>0?1:-1,a=t-E.currentMonth;a!=r;a+=o)for(var i=E.daysContainer.children[a],s=t-E.currentMonth===a?e.$i+n:n<0?i.children.length-1:0,c=i.children.length,u=s;u>=0&&u0?c:-1);u+=o){var f=i.children[u];if(-1===f.className.indexOf("hidden")&&$(f.dateObj)&&Math.abs(e.$i-u)>=Math.abs(n))return j(f)}E.changeMonth(o),U(K(o),0)}(r,n):j(r)}function B(e,n){for(var t=(new Date(e,n,1).getDay()-E.l10n.firstDayOfWeek+7)%7,r=E.utils.getDaysInMonth((n-1+12)%12,e),o=E.utils.getDaysInMonth(n,e),a=window.document.createDocumentFragment(),i=E.config.showMonths>1,s=i?"prevMonthDay hidden":"prevMonthDay",c=i?"nextMonthDay hidden":"nextMonthDay",u=r+1-t,l=0;u<=r;u++,l++)a.appendChild(H(s,new Date(e,n-1,u),u,l));for(u=1;u<=o;u++,l++)a.appendChild(H("",new Date(e,n,u),u,l));for(var d=o+1;d<=42-t&&(1===E.config.showMonths||l%7!=0);d++,l++)a.appendChild(H(c,new Date(e,n+1,d%o),d,l));var h=f("div","dayContainer");return h.appendChild(a),h}function V(){if(void 0!==E.daysContainer){l(E.daysContainer),E.weekNumbers&&l(E.weekNumbers);for(var e=document.createDocumentFragment(),n=0;n1||"dropdown"!==E.config.monthSelectorType)){var e=function(e){return!(void 0!==E.config.minDate&&E.currentYear===E.config.minDate.getFullYear()&&eE.config.maxDate.getMonth())};E.monthsDropdownContainer.tabIndex=-1,E.monthsDropdownContainer.innerHTML="";for(var n=0;n<12;n++)if(e(n)){var t=f("option","flatpickr-monthDropdown-month");t.value=new Date(E.currentYear,n).getMonth().toString(),t.textContent=y(n,E.config.shorthandCurrentMonth,E.l10n),t.tabIndex=-1,E.currentMonth===n&&(t.selected=!0),E.monthsDropdownContainer.appendChild(t)}}}function Y(){var e,n=f("div","flatpickr-month"),t=window.document.createDocumentFragment();E.config.showMonths>1||"static"===E.config.monthSelectorType?e=f("span","cur-month"):(E.monthsDropdownContainer=f("select","flatpickr-monthDropdown-months"),E.monthsDropdownContainer.setAttribute("aria-label",E.l10n.monthAriaLabel),P(E.monthsDropdownContainer,"change",function(e){var n=p(e),t=parseInt(n.value,10);E.changeMonth(t-E.currentMonth),ve("onMonthChange")}),G(),e=E.monthsDropdownContainer);var r=h("cur-year",{tabindex:"-1"}),o=r.getElementsByTagName("input")[0];o.setAttribute("aria-label",E.l10n.yearAriaLabel),E.config.minDate&&o.setAttribute("min",E.config.minDate.getFullYear().toString()),E.config.maxDate&&(o.setAttribute("max",E.config.maxDate.getFullYear().toString()),o.disabled=!!E.config.minDate&&E.config.minDate.getFullYear()===E.config.maxDate.getFullYear());var a=f("div","flatpickr-current-month");return a.appendChild(e),a.appendChild(r),t.appendChild(a),n.appendChild(t),{container:n,yearElement:o,monthElement:e}}function J(){l(E.monthNav),E.monthNav.appendChild(E.prevMonthNav),E.config.showMonths&&(E.yearElements=[],E.monthElements=[]);for(var e=E.config.showMonths;e--;){var n=Y();E.yearElements.push(n.yearElement),E.monthElements.push(n.monthElement),E.monthNav.appendChild(n.container)}E.monthNav.appendChild(E.nextMonthNav)}function q(){E.weekdayContainer?l(E.weekdayContainer):E.weekdayContainer=f("div","flatpickr-weekdays");for(var e=E.config.showMonths;e--;){var n=f("div","flatpickr-weekdaycontainer");E.weekdayContainer.appendChild(n)}return W(),E.weekdayContainer}function W(){if(E.weekdayContainer){var e=E.l10n.firstDayOfWeek,t=n(E.l10n.weekdays.shorthand);e>0&&e\n "+t.join("")+"\n \n "}}function z(e,n){void 0===n&&(n=!0);var t=n?e:e-E.currentMonth;t<0&&!0===E._hidePrevMonthArrow||t>0&&!0===E._hideNextMonthArrow||(E.currentMonth+=t,(E.currentMonth<0||E.currentMonth>11)&&(E.currentYear+=E.currentMonth>11?1:-1,E.currentMonth=(E.currentMonth+12)%12,ve("onYearChange"),G()),V(),ve("onMonthChange"),ge())}function Q(e){return!(!E.config.appendTo||!E.config.appendTo.contains(e))||E.calendarContainer.contains(e)}function X(e){if(E.isOpen&&!E.config.inline){var n=p(e),t=Q(n),r=n===E.input||n===E.altInput||E.element.contains(n)||e.path&&e.path.indexOf&&(~e.path.indexOf(E.input)||~e.path.indexOf(E.altInput)),o="blur"===e.type?r&&e.relatedTarget&&!Q(e.relatedTarget):!r&&!t&&!Q(e.relatedTarget),a=!E.config.ignoredFocusElements.some(function(e){return e.contains(n)});o&&a&&(void 0!==E.timeContainer&&void 0!==E.minuteElement&&void 0!==E.hourElement&&""!==E.input.value&&void 0!==E.input.value&&N(),E.close(),E.config&&"range"===E.config.mode&&1===E.selectedDates.length&&(E.clear(!1),E.redraw()))}}function Z(e){if(!(!e||E.config.minDate&&eE.config.maxDate.getFullYear())){var n=e,t=E.currentYear!==n;E.currentYear=n||E.currentYear,E.config.maxDate&&E.currentYear===E.config.maxDate.getFullYear()?E.currentMonth=Math.min(E.config.maxDate.getMonth(),E.currentMonth):E.config.minDate&&E.currentYear===E.config.minDate.getFullYear()&&(E.currentMonth=Math.max(E.config.minDate.getMonth(),E.currentMonth)),t&&(E.redraw(),ve("onYearChange"),G())}}function $(e,n){var t;void 0===n&&(n=!0);var r=E.parseDate(e,void 0,n);if(E.config.minDate&&r&&O(r,E.config.minDate,void 0!==n?n:!E.minDateHasTime)<0||E.config.maxDate&&r&&O(r,E.config.maxDate,void 0!==n?n:!E.maxDateHasTime)>0)return!1;if(!E.config.enable&&0===E.config.disable.length)return!0;if(void 0===r)return!1;for(var o=!!E.config.enable,a=null!==(t=E.config.enable)&&void 0!==t?t:E.config.disable,i=0,s=void 0;i=s.from.getTime()&&r.getTime()<=s.to.getTime())return o}return!o}function ee(e){return void 0!==E.daysContainer&&-1===e.className.indexOf("hidden")&&-1===e.className.indexOf("flatpickr-disabled")&&E.daysContainer.contains(e)}function ne(e){e.target!==E._input||!(E.selectedDates.length>0||E._input.value.length>0)||e.relatedTarget&&Q(e.relatedTarget)||E.setDate(E._input.value,!0,e.target===E.altInput?E.config.altFormat:E.config.dateFormat)}function te(e){var n=p(e),t=E.config.wrap?v.contains(n):n===E._input,r=E.config.allowInput,o=E.isOpen&&(!r||!t),a=E.config.inline&&t&&!r;if(13===e.keyCode&&t){if(r)return E.setDate(E._input.value,!0,n===E.altInput?E.config.altFormat:E.config.dateFormat),n.blur();E.open()}else if(Q(n)||o||a){var i=!!E.timeContainer&&E.timeContainer.contains(n);switch(e.keyCode){case 13:i?(e.preventDefault(),N(),fe()):le(e);break;case 27:e.preventDefault(),fe();break;case 8:case 46:t&&!E.config.allowInput&&(e.preventDefault(),E.clear());break;case 37:case 39:if(i||t)E.hourElement&&E.hourElement.focus();else if(e.preventDefault(),void 0!==E.daysContainer&&(!1===r||document.activeElement&&ee(document.activeElement))){var s=39===e.keyCode?1:-1;e.ctrlKey?(e.stopPropagation(),z(s),U(K(1),0)):U(void 0,s)}break;case 38:case 40:e.preventDefault();var c=40===e.keyCode?1:-1;E.daysContainer&&void 0!==n.$i||n===E.input||n===E.altInput?e.ctrlKey?(e.stopPropagation(),Z(E.currentYear-c),U(K(1),0)):i||U(void 0,7*c):n===E.currentYearElement?Z(E.currentYear-c):E.config.enableTime&&(!i&&E.hourElement&&E.hourElement.focus(),N(e),E._debouncedChange());break;case 9:if(i){var u=[E.hourElement,E.minuteElement,E.secondElement,E.amPM].concat(E.pluginElements).filter(function(e){return e}),f=u.indexOf(n);if(-1!==f){var l=u[f+(e.shiftKey?-1:1)];e.preventDefault(),(l||E._input).focus()}}else!E.config.noCalendar&&E.daysContainer&&E.daysContainer.contains(n)&&e.shiftKey&&(e.preventDefault(),E._input.focus())}}if(void 0!==E.amPM&&n===E.amPM)switch(e.key){case E.l10n.amPM[0].charAt(0):case E.l10n.amPM[0].charAt(0).toLowerCase():E.amPM.textContent=E.l10n.amPM[0],I(),be();break;case E.l10n.amPM[1].charAt(0):case E.l10n.amPM[1].charAt(0).toLowerCase():E.amPM.textContent=E.l10n.amPM[1],I(),be()}(t||Q(n))&&ve("onKeyDown",e)}function re(e){if(1===E.selectedDates.length&&(!e||e.classList.contains("flatpickr-day")&&!e.classList.contains("flatpickr-disabled"))){for(var n=e?e.dateObj.getTime():E.days.firstElementChild.dateObj.getTime(),t=E.parseDate(E.selectedDates[0],void 0,!0).getTime(),r=Math.min(n,E.selectedDates[0].getTime()),o=Math.max(n,E.selectedDates[0].getTime()),a=!1,i=0,s=0,c=r;cr&&ci)?i=c:c>t&&(!s||c0&&h0&&h>s;return p?(d.classList.add("notAllowed"),["inRange","startRange","endRange"].forEach(function(e){d.classList.remove(e)}),"continue"):a&&!p?"continue":(["startRange","inRange","endRange","notAllowed"].forEach(function(e){d.classList.remove(e)}),void(void 0!==e&&(e.classList.add(n<=E.selectedDates[0].getTime()?"startRange":"endRange"),tn&&h===t&&d.classList.add("endRange"),h>=i&&(0===s||h<=s)&&(u=t,l=n,(c=h)>Math.min(u,l)&&c0||t.getMinutes()>0||t.getSeconds()>0),E.selectedDates&&(E.selectedDates=E.selectedDates.filter(function(e){return $(e)}),E.selectedDates.length||"min"!==e||x(t),be()),E.daysContainer&&(ue(),void 0!==t?E.currentYearElement[e]=t.getFullYear().toString():E.currentYearElement.removeAttribute(e),E.currentYearElement.disabled=!!r&&void 0!==t&&r.getFullYear()===t.getFullYear())}}function ie(){return E.config.wrap?v.querySelector("[data-input]"):v}function se(){"object"!=typeof E.config.locale&&void 0===S.l10ns[E.config.locale]&&E.config.errorHandler(new Error("flatpickr: invalid locale "+E.config.locale)),E.l10n=e(e({},S.l10ns.default),"object"==typeof E.config.locale?E.config.locale:"default"!==E.config.locale?S.l10ns[E.config.locale]:void 0),g.K="("+E.l10n.amPM[0]+"|"+E.l10n.amPM[1]+"|"+E.l10n.amPM[0].toLowerCase()+"|"+E.l10n.amPM[1].toLowerCase()+")",void 0===e(e({},m),JSON.parse(JSON.stringify(v.dataset||{}))).time_24hr&&void 0===S.defaultConfig.time_24hr&&(E.config.time_24hr=E.l10n.time_24hr),E.formatDate=b(E),E.parseDate=A({config:E.config,l10n:E.l10n})}function ce(e){if("function"!=typeof E.config.position){if(void 0!==E.calendarContainer){ve("onPreCalendarPosition");var n=e||E._positionElement,t=Array.prototype.reduce.call(E.calendarContainer.children,function(e,n){return e+n.offsetHeight},0),r=E.calendarContainer.offsetWidth,o=E.config.position.split(" "),a=o[0],i=o.length>1?o[1]:null,s=n.getBoundingClientRect(),c=window.innerHeight-s.bottom,f="above"===a||"below"!==a&&ct,l=window.pageYOffset+s.top+(f?-t-2:n.offsetHeight+2);if(u(E.calendarContainer,"arrowTop",!f),u(E.calendarContainer,"arrowBottom",f),!E.config.inline){var d=window.pageXOffset+s.left,h=!1,p=!1;"center"===i?(d-=(r-s.width)/2,h=!0):"right"===i&&(d-=r-s.width,p=!0),u(E.calendarContainer,"arrowLeft",!h&&!p),u(E.calendarContainer,"arrowCenter",h),u(E.calendarContainer,"arrowRight",p);var v=window.document.body.offsetWidth-(window.pageXOffset+s.right),y=d+r>window.document.body.offsetWidth,m=v+r>window.document.body.offsetWidth;if(u(E.calendarContainer,"rightMost",y),!E.config.static)if(E.calendarContainer.style.top=l+"px",y)if(m){var g=function(){for(var e=null,n=0;nE.currentMonth+E.config.showMonths-1)&&"range"!==E.config.mode;if(E.selectedDateElem=t,"single"===E.config.mode)E.selectedDates=[r];else if("multiple"===E.config.mode){var a=me(r);a?E.selectedDates.splice(parseInt(a),1):E.selectedDates.push(r)}else"range"===E.config.mode&&(2===E.selectedDates.length&&E.clear(!1,!1),E.latestSelectedDateObj=r,E.selectedDates.push(r),0!==O(r,E.selectedDates[0],!0)&&E.selectedDates.sort(function(e,n){return e.getTime()-n.getTime()}));if(I(),o){var i=E.currentYear!==r.getFullYear();E.currentYear=r.getFullYear(),E.currentMonth=r.getMonth(),i&&(ve("onYearChange"),G()),ve("onMonthChange")}if(ge(),V(),be(),o||"range"===E.config.mode||1!==E.config.showMonths?void 0!==E.selectedDateElem&&void 0===E.hourElement&&E.selectedDateElem&&E.selectedDateElem.focus():j(t),void 0!==E.hourElement&&void 0!==E.hourElement&&E.hourElement.focus(),E.config.closeOnSelect){var s="single"===E.config.mode&&!E.config.enableTime,c="range"===E.config.mode&&2===E.selectedDates.length&&!E.config.enableTime;(s||c)&&fe()}k()}}E.parseDate=A({config:E.config,l10n:E.l10n}),E._handlers=[],E.pluginElements=[],E.loadedPlugins=[],E._bind=P,E._setHoursFromDate=x,E._positionCalendar=ce,E.changeMonth=z,E.changeYear=Z,E.clear=function(e,n){if(void 0===e&&(e=!0),void 0===n&&(n=!0),E.input.value="",void 0!==E.altInput&&(E.altInput.value=""),void 0!==E.mobileInput&&(E.mobileInput.value=""),E.selectedDates=[],E.latestSelectedDateObj=void 0,!0===n&&(E.currentYear=E._initialDate.getFullYear(),E.currentMonth=E._initialDate.getMonth()),!0===E.config.enableTime){var t=D(E.config);C(t.hours,t.minutes,t.seconds)}E.redraw(),e&&ve("onChange")},E.close=function(){E.isOpen=!1,E.isMobile||(void 0!==E.calendarContainer&&E.calendarContainer.classList.remove("open"),void 0!==E._input&&E._input.classList.remove("active")),ve("onClose")},E._createElement=f,E.destroy=function(){void 0!==E.config&&ve("onDestroy");for(var e=E._handlers.length;e--;)E._handlers[e].remove();if(E._handlers=[],E.mobileInput)E.mobileInput.parentNode&&E.mobileInput.parentNode.removeChild(E.mobileInput),E.mobileInput=void 0;else if(E.calendarContainer&&E.calendarContainer.parentNode)if(E.config.static&&E.calendarContainer.parentNode){var n=E.calendarContainer.parentNode;if(n.lastChild&&n.removeChild(n.lastChild),n.parentNode){for(;n.firstChild;)n.parentNode.insertBefore(n.firstChild,n);n.parentNode.removeChild(n)}}else E.calendarContainer.parentNode.removeChild(E.calendarContainer);E.altInput&&(E.input.type="text",E.altInput.parentNode&&E.altInput.parentNode.removeChild(E.altInput),delete E.altInput),E.input&&(E.input.type=E.input._type,E.input.classList.remove("flatpickr-input"),E.input.removeAttribute("readonly")),["_showTimeInput","latestSelectedDateObj","_hideNextMonthArrow","_hidePrevMonthArrow","__hideNextMonthArrow","__hidePrevMonthArrow","isMobile","isOpen","selectedDateElem","minDateHasTime","maxDateHasTime","days","daysContainer","_input","_positionElement","innerContainer","rContainer","monthNav","todayDateElem","calendarContainer","weekdayContainer","prevMonthNav","nextMonthNav","monthsDropdownContainer","currentMonthElement","currentYearElement","navigationCurrentMonth","selectedDateElem","config"].forEach(function(e){try{delete E[e]}catch(e){}})},E.isEnabled=$,E.jumpToDate=M,E.open=function(e,n){if(void 0===n&&(n=E._positionElement),!0===E.isMobile){if(e){e.preventDefault();var t=p(e);t&&t.blur()}return void 0!==E.mobileInput&&(E.mobileInput.focus(),E.mobileInput.click()),void ve("onOpen")}if(!E._input.disabled&&!E.config.inline){var r=E.isOpen;E.isOpen=!0,r||(E.calendarContainer.classList.add("open"),E._input.classList.add("active"),ve("onOpen"),ce(n)),!0===E.config.enableTime&&!0===E.config.noCalendar&&(!1!==E.config.allowInput||void 0!==e&&E.timeContainer.contains(e.relatedTarget)||setTimeout(function(){return E.hourElement.select()},50))}},E.redraw=ue,E.set=function(e,n){if(null!==e&&"object"==typeof e)for(var r in Object.assign(E.config,e),e)void 0!==de[r]&&de[r].forEach(function(e){return e()});else E.config[e]=n,void 0!==de[e]?de[e].forEach(function(e){return e()}):t.indexOf(e)>-1&&(E.config[e]=c(n));E.redraw(),be(!0)},E.setDate=function(e,n,t){if(void 0===n&&(n=!1),void 0===t&&(t=E.config.dateFormat),0!==e&&!e||e instanceof Array&&0===e.length)return E.clear(n);he(e,t),E.latestSelectedDateObj=E.selectedDates[E.selectedDates.length-1],E.redraw(),M(void 0,n),x(),0===E.selectedDates.length&&E.clear(!1),be(n),n&&ve("onChange")},E.toggle=function(e){if(!0===E.isOpen)return E.close();E.open(e)};var de={locale:[se,W],showMonths:[J,T,q],minDate:[M],maxDate:[M],clickOpens:[function(){!0===E.config.clickOpens?(P(E._input,"focus",E.open),P(E._input,"click",E.open)):(E._input.removeEventListener("focus",E.open),E._input.removeEventListener("click",E.open))}]};function he(e,n){var t=[];if(e instanceof Array)t=e.map(function(e){return E.parseDate(e,n)});else if(e instanceof Date||"number"==typeof e)t=[E.parseDate(e,n)];else if("string"==typeof e)switch(E.config.mode){case"single":case"time":t=[E.parseDate(e,n)];break;case"multiple":t=e.split(E.config.conjunction).map(function(e){return E.parseDate(e,n)});break;case"range":t=e.split(E.l10n.rangeSeparator).map(function(e){return E.parseDate(e,n)})}else E.config.errorHandler(new Error("Invalid date supplied: "+JSON.stringify(e)));E.selectedDates=E.config.allowInvalidPreload?t:t.filter(function(e){return e instanceof Date&&$(e,!1)}),"range"===E.config.mode&&E.selectedDates.sort(function(e,n){return e.getTime()-n.getTime()})}function pe(e){return e.slice().map(function(e){return"string"==typeof e||"number"==typeof e||e instanceof Date?E.parseDate(e,void 0,!0):e&&"object"==typeof e&&e.from&&e.to?{from:E.parseDate(e.from,void 0),to:E.parseDate(e.to,void 0)}:e}).filter(function(e){return e})}function ve(e,n){if(void 0!==E.config){var t=E.config[e];if(void 0!==t&&t.length>0)for(var r=0;t[r]&&r1||"static"===E.config.monthSelectorType?E.monthElements[n].textContent=y(t.getMonth(),E.config.shorthandCurrentMonth,E.l10n)+" ":E.monthsDropdownContainer.value=t.getMonth().toString(),e.value=t.getFullYear().toString()}),E._hidePrevMonthArrow=void 0!==E.config.minDate&&(E.currentYear===E.config.minDate.getFullYear()?E.currentMonth<=E.config.minDate.getMonth():E.currentYearE.config.maxDate.getMonth():E.currentYear>E.config.maxDate.getFullYear()))}function Ee(e){return E.selectedDates.map(function(n){return E.formatDate(n,e)}).filter(function(e,n,t){return"range"!==E.config.mode||E.config.enableTime||t.indexOf(e)===n}).join("range"!==E.config.mode?E.config.conjunction:E.l10n.rangeSeparator)}function be(e){void 0===e&&(e=!0),void 0!==E.mobileInput&&E.mobileFormatStr&&(E.mobileInput.value=void 0!==E.latestSelectedDateObj?E.formatDate(E.latestSelectedDateObj,E.mobileFormatStr):""),E.input.value=Ee(E.config.dateFormat),void 0!==E.altInput&&(E.altInput.value=Ee(E.config.altFormat)),!1!==e&&ve("onValueUpdate")}function Ae(e){var n=p(e),t=E.prevMonthNav.contains(n),r=E.nextMonthNav.contains(n);t||r?z(t?-1:1):E.yearElements.indexOf(n)>=0?n.select():n.classList.contains("arrowUp")?E.changeYear(E.currentYear+1):n.classList.contains("arrowDown")&&E.changeYear(E.currentYear-1)}return function(){E.element=E.input=v,E.isOpen=!1,function(){var n=["wrap","weekNumbers","allowInput","allowInvalidPreload","clickOpens","time_24hr","enableTime","noCalendar","altInput","shorthandCurrentMonth","inline","static","enableSeconds","disableMobile"],o=e(e({},JSON.parse(JSON.stringify(v.dataset||{}))),m),a={};E.config.parseDate=o.parseDate,E.config.formatDate=o.formatDate,Object.defineProperty(E.config,"enable",{get:function(){return E.config._enable},set:function(e){E.config._enable=pe(e)}}),Object.defineProperty(E.config,"disable",{get:function(){return E.config._disable},set:function(e){E.config._disable=pe(e)}});var i="time"===o.mode;if(!o.dateFormat&&(o.enableTime||i)){var s=S.defaultConfig.dateFormat||r.dateFormat;a.dateFormat=o.noCalendar||i?"H:i"+(o.enableSeconds?":S":""):s+" H:i"+(o.enableSeconds?":S":"")}if(o.altInput&&(o.enableTime||i)&&!o.altFormat){var u=S.defaultConfig.altFormat||r.altFormat;a.altFormat=o.noCalendar||i?"h:i"+(o.enableSeconds?":S K":" K"):u+" h:i"+(o.enableSeconds?":S":"")+" K"}Object.defineProperty(E.config,"minDate",{get:function(){return E.config._minDate},set:ae("min")}),Object.defineProperty(E.config,"maxDate",{get:function(){return E.config._maxDate},set:ae("max")});var f=function(e){return function(n){E.config["min"===e?"_minTime":"_maxTime"]=E.parseDate(n,"H:i:S")}};Object.defineProperty(E.config,"minTime",{get:function(){return E.config._minTime},set:f("min")}),Object.defineProperty(E.config,"maxTime",{get:function(){return E.config._maxTime},set:f("max")}),"time"===o.mode&&(E.config.noCalendar=!0,E.config.enableTime=!0),Object.assign(E.config,a,o);for(var l=0;l-1?E.config[h]=c(d[h]).map(_).concat(E.config[h]):void 0===o[h]&&(E.config[h]=d[h])}o.altInputClass||(E.config.altInputClass=ie().className+" "+E.config.altInputClass),ve("onParseConfig")}(),se(),E.input=ie(),E.input?(E.input._type=E.input.type,E.input.type="text",E.input.classList.add("flatpickr-input"),E._input=E.input,E.config.altInput&&(E.altInput=f(E.input.nodeName,E.config.altInputClass),E._input=E.altInput,E.altInput.placeholder=E.input.placeholder,E.altInput.disabled=E.input.disabled,E.altInput.required=E.input.required,E.altInput.tabIndex=E.input.tabIndex,E.altInput.type="text",E.input.setAttribute("type","hidden"),!E.config.static&&E.input.parentNode&&E.input.parentNode.insertBefore(E.altInput,E.input.nextSibling)),E.config.allowInput||E._input.setAttribute("readonly","readonly"),E._positionElement=E.config.positionElement||E._input):E.config.errorHandler(new Error("Invalid input element specified")),function(){E.selectedDates=[],E.now=E.parseDate(E.config.now)||new Date;var e=E.config.defaultDate||("INPUT"!==E.input.nodeName&&"TEXTAREA"!==E.input.nodeName||!E.input.placeholder||E.input.value!==E.input.placeholder?E.input.value:null);e&&he(e,E.config.dateFormat),E._initialDate=E.selectedDates.length>0?E.selectedDates[0]:E.config.minDate&&E.config.minDate.getTime()>E.now.getTime()?E.config.minDate:E.config.maxDate&&E.config.maxDate.getTime()0&&(E.latestSelectedDateObj=E.selectedDates[0]),void 0!==E.config.minTime&&(E.config.minTime=E.parseDate(E.config.minTime,"H:i")),void 0!==E.config.maxTime&&(E.config.maxTime=E.parseDate(E.config.maxTime,"H:i")),E.minDateHasTime=!!E.config.minDate&&(E.config.minDate.getHours()>0||E.config.minDate.getMinutes()>0||E.config.minDate.getSeconds()>0),E.maxDateHasTime=!!E.config.maxDate&&(E.config.maxDate.getHours()>0||E.config.maxDate.getMinutes()>0||E.config.maxDate.getSeconds()>0)}(),E.utils={getDaysInMonth:function(e,n){return void 0===e&&(e=E.currentMonth),void 0===n&&(n=E.currentYear),1===e&&(n%4==0&&n%100!=0||n%400==0)?29:E.l10n.daysInMonth[e]}},E.isMobile||function(){var e=window.document.createDocumentFragment();if(E.calendarContainer=f("div","flatpickr-calendar"),E.calendarContainer.tabIndex=-1,!E.config.noCalendar){if(e.appendChild((E.monthNav=f("div","flatpickr-months"),E.yearElements=[],E.monthElements=[],E.prevMonthNav=f("span","flatpickr-prev-month"),E.prevMonthNav.innerHTML=E.config.prevArrow,E.nextMonthNav=f("span","flatpickr-next-month"),E.nextMonthNav.innerHTML=E.config.nextArrow,J(),Object.defineProperty(E,"_hidePrevMonthArrow",{get:function(){return E.__hidePrevMonthArrow},set:function(e){E.__hidePrevMonthArrow!==e&&(u(E.prevMonthNav,"flatpickr-disabled",e),E.__hidePrevMonthArrow=e)}}),Object.defineProperty(E,"_hideNextMonthArrow",{get:function(){return E.__hideNextMonthArrow},set:function(e){E.__hideNextMonthArrow!==e&&(u(E.nextMonthNav,"flatpickr-disabled",e),E.__hideNextMonthArrow=e)}}),E.currentYearElement=E.yearElements[0],ge(),E.monthNav)),E.innerContainer=f("div","flatpickr-innerContainer"),E.config.weekNumbers){var n=function(){E.calendarContainer.classList.add("hasWeeks");var e=f("div","flatpickr-weekwrapper");e.appendChild(f("span","flatpickr-weekday",E.l10n.weekAbbreviation));var n=f("div","flatpickr-weeks");return e.appendChild(n),{weekWrapper:e,weekNumbers:n}}(),t=n.weekWrapper,r=n.weekNumbers;E.innerContainer.appendChild(t),E.weekNumbers=r,E.weekWrapper=t}E.rContainer=f("div","flatpickr-rContainer"),E.rContainer.appendChild(q()),E.daysContainer||(E.daysContainer=f("div","flatpickr-days"),E.daysContainer.tabIndex=-1),V(),E.rContainer.appendChild(E.daysContainer),E.innerContainer.appendChild(E.rContainer),e.appendChild(E.innerContainer)}E.config.enableTime&&e.appendChild(function(){E.calendarContainer.classList.add("hasTime"),E.config.noCalendar&&E.calendarContainer.classList.add("noCalendar");var e=D(E.config);E.timeContainer=f("div","flatpickr-time"),E.timeContainer.tabIndex=-1;var n=f("span","flatpickr-time-separator",":"),t=h("flatpickr-hour",{"aria-label":E.l10n.hourAriaLabel});E.hourElement=t.getElementsByTagName("input")[0];var r=h("flatpickr-minute",{"aria-label":E.l10n.minuteAriaLabel});if(E.minuteElement=r.getElementsByTagName("input")[0],E.hourElement.tabIndex=E.minuteElement.tabIndex=-1,E.hourElement.value=a(E.latestSelectedDateObj?E.latestSelectedDateObj.getHours():E.config.time_24hr?e.hours:function(e){switch(e%24){case 0:case 12:return 12;default:return e%12}}(e.hours)),E.minuteElement.value=a(E.latestSelectedDateObj?E.latestSelectedDateObj.getMinutes():e.minutes),E.hourElement.setAttribute("step",E.config.hourIncrement.toString()),E.minuteElement.setAttribute("step",E.config.minuteIncrement.toString()),E.hourElement.setAttribute("min",E.config.time_24hr?"0":"1"),E.hourElement.setAttribute("max",E.config.time_24hr?"23":"12"),E.hourElement.setAttribute("maxlength","2"),E.minuteElement.setAttribute("min","0"),E.minuteElement.setAttribute("max","59"),E.minuteElement.setAttribute("maxlength","2"),E.timeContainer.appendChild(t),E.timeContainer.appendChild(n),E.timeContainer.appendChild(r),E.config.time_24hr&&E.timeContainer.classList.add("time24hr"),E.config.enableSeconds){E.timeContainer.classList.add("hasSeconds");var o=h("flatpickr-second");E.secondElement=o.getElementsByTagName("input")[0],E.secondElement.value=a(E.latestSelectedDateObj?E.latestSelectedDateObj.getSeconds():e.seconds),E.secondElement.setAttribute("step",E.minuteElement.getAttribute("step")),E.secondElement.setAttribute("min","0"),E.secondElement.setAttribute("max","59"),E.secondElement.setAttribute("maxlength","2"),E.timeContainer.appendChild(f("span","flatpickr-time-separator",":")),E.timeContainer.appendChild(o)}return E.config.time_24hr||(E.amPM=f("span","flatpickr-am-pm",E.l10n.amPM[i((E.latestSelectedDateObj?E.hourElement.value:E.config.defaultHour)>11)]),E.amPM.title=E.l10n.toggleTitle,E.amPM.tabIndex=-1,E.timeContainer.appendChild(E.amPM)),E.timeContainer}()),u(E.calendarContainer,"rangeMode","range"===E.config.mode),u(E.calendarContainer,"animate",!0===E.config.animate),u(E.calendarContainer,"multiMonth",E.config.showMonths>1),E.calendarContainer.appendChild(e);var o=void 0!==E.config.appendTo&&void 0!==E.config.appendTo.nodeType;if((E.config.inline||E.config.static)&&(E.calendarContainer.classList.add(E.config.inline?"inline":"static"),E.config.inline&&(!o&&E.element.parentNode?E.element.parentNode.insertBefore(E.calendarContainer,E._input.nextSibling):void 0!==E.config.appendTo&&E.config.appendTo.appendChild(E.calendarContainer)),E.config.static)){var s=f("div","flatpickr-wrapper");E.element.parentNode&&E.element.parentNode.insertBefore(s,E.element),s.appendChild(E.element),E.altInput&&s.appendChild(E.altInput),s.appendChild(E.calendarContainer)}E.config.static||E.config.inline||(void 0!==E.config.appendTo?E.config.appendTo:window.document.body).appendChild(E.calendarContainer)}(),function(){if(E.config.wrap&&["open","close","toggle","clear"].forEach(function(e){Array.prototype.forEach.call(E.element.querySelectorAll("[data-"+e+"]"),function(n){return P(n,"click",E[e])})}),E.isMobile)!function(){var e=E.config.enableTime?E.config.noCalendar?"time":"datetime-local":"date";E.mobileInput=f("input",E.input.className+" flatpickr-mobile"),E.mobileInput.tabIndex=1,E.mobileInput.type=e,E.mobileInput.disabled=E.input.disabled,E.mobileInput.required=E.input.required,E.mobileInput.placeholder=E.input.placeholder,E.mobileFormatStr="datetime-local"===e?"Y-m-d\\TH:i:S":"date"===e?"Y-m-d":"H:i:S",E.selectedDates.length>0&&(E.mobileInput.defaultValue=E.mobileInput.value=E.formatDate(E.selectedDates[0],E.mobileFormatStr)),E.config.minDate&&(E.mobileInput.min=E.formatDate(E.config.minDate,"Y-m-d")),E.config.maxDate&&(E.mobileInput.max=E.formatDate(E.config.maxDate,"Y-m-d")),E.input.getAttribute("step")&&(E.mobileInput.step=String(E.input.getAttribute("step"))),E.input.type="hidden",void 0!==E.altInput&&(E.altInput.type="hidden");try{E.input.parentNode&&E.input.parentNode.insertBefore(E.mobileInput,E.input.nextSibling)}catch(e){}P(E.mobileInput,"change",function(e){E.setDate(p(e).value,!1,E.mobileFormatStr),ve("onChange"),ve("onClose")})}();else{var e=s(oe,50);if(E._debouncedChange=s(k,300),E.daysContainer&&!/iPhone|iPad|iPod/i.test(navigator.userAgent)&&P(E.daysContainer,"mouseover",function(e){"range"===E.config.mode&&re(p(e))}),P(window.document.body,"keydown",te),E.config.inline||E.config.static||P(window,"resize",e),void 0!==window.ontouchstart?P(window.document,"touchstart",X):P(window.document,"mousedown",X),P(window.document,"focus",X,{capture:!0}),!0===E.config.clickOpens&&(P(E._input,"focus",E.open),P(E._input,"click",E.open)),void 0!==E.daysContainer&&(P(E.monthNav,"click",Ae),P(E.monthNav,["keyup","increment"],R),P(E.daysContainer,"click",le)),void 0!==E.timeContainer&&void 0!==E.minuteElement&&void 0!==E.hourElement){var n=function(e){return p(e).select()};P(E.timeContainer,["increment"],N),P(E.timeContainer,"blur",N,{capture:!0}),P(E.timeContainer,"click",F),P([E.hourElement,E.minuteElement],["focus","click"],n),void 0!==E.secondElement&&P(E.secondElement,"focus",function(){return E.secondElement&&E.secondElement.select()}),void 0!==E.amPM&&P(E.amPM,"click",function(e){N(e),k()})}E.config.allowInput&&P(E._input,"blur",ne)}}(),(E.selectedDates.length||E.config.noCalendar)&&(E.config.enableTime&&x(E.config.noCalendar?E.latestSelectedDateObj:void 0),be(!1)),T();var n=/^((?!chrome|android).)*safari/i.test(navigator.userAgent);!E.isMobile&&n&&ce(),ve("onReady")}(),E}function T(e,n){for(var t=Array.prototype.slice.call(e).filter(function(e){return e instanceof HTMLElement}),r=[],o=0;o{var l={setCustomize:()=>{}},d=function(e,n){if(!n||1===n)return e.store;var t=e.store.modules&&e.store.modules.team;return t?t.getTeam(n):void 0},h=function(n,t){n.emit("UPDATE",{teams:t.stores,roTeams:t.roStores,id:t.channel,loading:!t.ready&&!t.cacheready,readOnly:t.readOnly||!t.ready&&t.cacheready||t.offline,offline:t.offline,deleted:!t.stores.length,restricted:t.restricted,owned:n.Store.isOwned(t.owners),content:e.clone(t.proxy),hashes:t.hashes},n.clients)},p=function(e,n){var t=e.calendars[n];t&&t.reminders&&Object.keys(t.reminders).forEach(function(e){Array.isArray(t.reminders[e])&&t.reminders[e].forEach(function(e){clearTimeout(e)})})},v=function(e,n){var t=e.calendars[n];t&&(t.stores.length||(t.lm.stop(),p(e,n),delete e.calendars[n]))},y=function(e,n,t){n.stores.forEach(function(r){var o=d(e,r);if(o&&o.proxy&&o.rpc&&o.proxy.calendars){var a=o.proxy.calendars[n.channel];a&&(a.color!==t.color&&(a.color=t.color),a.title!==t.title&&(a.title=t.title))}})},m=function(n,t,r,o){var a=+new Date,i=e.clone(r),s=i.id;if(Array.isArray(t[s])&&t[s].forEach(function(e){clearTimeout(e)}),t[s]=[],!r.deleted){var u=e.find(n,["store","proxy","hideReminders",s])||[],f=n.store.data.lastVisit;if(i.isAllDay&&(i.startDay&&(i.start=+c.parseDate(i.startDay)),i.endDay)){var l=c.parseDate(i.endDay);l.setHours(23),l.setMinutes(59),l.setSeconds(59),i.end=+l}var d=a-6048e5,h=o&&i.start>f&&i.end<=a&&i.end>d;if(i.end<=a&&!h)return delete t[s],void function(n,t){var r=e.find(n,["store","proxy","hideReminders"])||{};Object.keys(r).filter(function(e){return e===t}).forEach(function(e){delete r[e]})}(n,s);var p=!1,v=function(t){p=!0,n.Store.onReadyEvt.reg(function(){!function(t){if(!e.find(n,["store","proxy","settings","general","calendar","hideNotif"])){var r=i.start<=a?i.start:+new Date;n.store.mailbox.showMessage("reminders",{msg:{ctime:r,type:"REMINDER",missed:Boolean(h),content:i},hash:"REMINDER|"+s+"-"+t},null,function(){})}}(t)})},y=i.reminders||[];y.sort(function(e,n){return e-n}),y.some(function(e){var n=a+6e4*e;if(!u.some(function(n){return e>=n}))return i.start-n>=2147483647||(i.start<=n?(v(e),!0):void t[s].push(setTimeout(function(){v(e)},i.start-n)))}),p||n.Store.onReadyEvt.reg(function(){n.store.mailbox.hideMessage("reminders",{hash:"REMINDER|"+s},null,function(){})})}},g=function(n,t,r,o){var i=function(e){var n=new Date,t=new Date(n.getFullYear(),n.getMonth()-1,15),r=new Date(n.getFullYear(),n.getMonth()+1,15),o=a.getMonthId(t),i=a.getMonthId(n),s=a.getMonthId(r),c=a.getRecurring([o,i,s],[e]),u=[e];return Array.prototype.push.apply(u,c),u}(e.clone(r));i.forEach(function(e){m(n,t,e,o)})},E=function(e,n,t){var r=e.calendars[n];t&&r&&r.reminders&&(1===r.stores.length&&0===r.stores[0]||g(e,r.reminders,t))},b=function(n,t,r){var o=n.calendars[t];if(o&&o.reminders&&!Object.keys(o.reminders).length&&(1!==o.stores.length||0!==o.stores[0])){var a=e.find(o,["proxy","content"]);a&&Object.keys(a).forEach(function(e){g(n,o.reminders,a[e],r)})}},A=function(t,r,a){var c=e.once(e.mkAsync(a||function(){})),l=r.storeId,v=r.data,m=v.channel;if(m){var g=t.calendars[m],A=function(){h(t,g)};if(g){if(g.readOnly&&v.href){var O=n.parsePadUrl(v.href),w=n.getSecrets("calendar",O.hash,v.password),D=u.createEncryptor(w.keys);g.hashes.editHash=n.getEditHashFromKeys(w),g.lm.setReadOnly(!1,D),g.readOnly=!1}else if(0===l)return 1===g.stores.length&&0===g.stores[0]&&g.tempId.length&&r.cId&&g.tempId.push(r.cId),void c();return-1!==g.roStores.indexOf(l)&&v.href&&(g.roStores.splice(g.roStores.indexOf(l),1),-1!==g.stores.indexOf(0)&&g.stores.splice(g.stores.indexOf(0),1),A()),g.stores&&-1!==g.stores.indexOf(l)?void c():(-1!==g.stores.indexOf(0)&&(g.stores.splice(g.stores.indexOf(0),1),g.tempId=[]),g.stores.push(l),v.href||g.roStores.push(l),A(),void c())}g=t.calendars[m]={ready:!1,channel:m,readOnly:!v.href,tempId:[],stores:[l],roStores:v.href?[]:[l],reminders:{},hashes:{}},0===l&&g.tempId.push(r.cId);var _=n.parsePadUrl(v.href||v.roHref),T=n.getSecrets("calendar",_.hash,v.password),S=u.createEncryptor(T.keys);g.hashes.viewHash=n.getViewHashFromKeys(T),v.href&&(g.hashes.editHash=n.getEditHashFromKeys(T)),g.proxy={metadata:{color:v.color,title:v.title}},A();var N=function(){g.stores.forEach(function(e){var n=d(t,e);n&&n.rpc&&n.proxy.calendars&&(delete n.proxy.calendars[m],(n.unpin||t.unpinPads)([m],function(e){e&&e.error&&console.error(e.error)}))}),g.lm&&g.lm.stop(),g.stores=[],h(t,g),p(t,m),delete t.calendars[m]};i(function(e){t.store.network&&!r.isNew&&t.Store.isNewChannel(null,m,e(function(n){if(!n||!n.error)return n&&"boolean"==typeof n.isNew&&n.isNew?(N(),c({error:"EDELETED"}),void e.abort()):void 0}))}).nThen(function(){var e;if(1!==l&&l){var n=t.store.modules.team&&t.store.modules.team.getTeamsData(),a=n&&n[l];e=a?a.edPublic:void 0}else e=t.store.proxy.edPublic;var i={data:{},network:t.store.network||t.store.networkPromise,channel:T.channel,crypto:S,owners:[e],ChainPad:f,validateKey:T.keys.validateKey||void 0,userName:"calendar",Cache:o,classic:!0,onRejected:t.Store&&t.Store.onRejected},u=s.create(i);g.lm=u;var d=g.proxy=u.proxy,h=!1,p=function(){h||(h=!0,setTimeout(function(){h=!1,A()}))};u.proxy.on("cacheready",function(){d.metadata&&(g.cacheready=!0,p(),c&&c(null,u.proxy),b(t,m,r.lastVisitNotif))}).on("ready",function(e){var n=e.metadata;if(g.owners=n.owners||[],g.ready=!0,!d.metadata){if(!r.isNew)return void N();d.metadata={color:v.color,title:v.title}}p(),c&&c(null,u.proxy),b(t,m,r.lastVisitNotif)}).on("change",[],function(){g.ready&&p()}).on("change",["content"],function(e,n,r){2!==r.length||!n||e?2!==r.length||n||!e?(r.length>=3&&["start","reminders","isAllDay"].includes(r[2])||r.length>=6&&["start","reminders","isAllDay"].includes(r[5]))&&setTimeout(function(){E(t,m,d.content[r[1]])}):E(t,m,{id:r[1],start:0}):E(t,m,n)}).on("remove",["content"],function(e,n){p(),(n.length>=3&&"reminders"===n[2]||n.length>=6&&"reminders"===n[5])&&setTimeout(function(){E(t,m,d.content[n[1]])})}).on("change",["metadata"],function(){var e=d.metadata;e&&e.title&&e.color&&y(t,g,e)}).on("disconnect",function(){g.offline=!0,p()}).on("reconnect",function(){g.offline=!1,p()}).on("error",function(e){e&&e.error&&("EDELETED"!==e.error?("ERESTRICTED"===e.error&&(g.restricted=!0,p()),c(e)):N())})})}},O=function(e,n){if(n.href&&-1===n.href.indexOf("#"))if(e.secondaryKey)try{n.href=e.userObject.cryptor.decrypt(n.href)}catch(e){console.error(e),delete n.href}else delete n.href},w=function(n,t){var r=t.proxy.calendars,o=t.id||1;t.proxy.on("change",["calendars"],function(r,a,i){i.length<2||(r&&!a&&function(){var e=i[1],t=n.calendars[e];if(t){var r=t.stores.indexOf(o);if(-1!==r){t.stores.splice(r,1);var a=t.roStores.indexOf(o);-1!==a&&t.roStores.splice(a,1),v(n,e),h(n,t)}}}(),!r&&a&&function(){var r=i[1],a=t.proxy.calendars[r];if(a){var s=e.clone(a);O(t,s),A(n,{storeId:o,data:s})}}())}),Object.keys(r||{}).forEach(function(a){var i=e.clone(r[a]);O(t,i),A(n,{storeId:o,lastVisitNotif:!0,data:i})})},D=function(e,t,o,a){var i=d(e,t.teamId);if(i)if(i.rpc){var s,c,u,f=i.proxy.calendars=i.proxy.calendars||{},l=(s=n.createRandomHash("calendar"),c=n.getSecrets("calendar",s),u=n.getViewHashFromKeys(c),{href:n.hashToHref(s,"calendar"),roHref:n.hashToHref(u,"calendar"),channel:c.channel});l.color=t.color,l.title=t.title,A(e,{storeId:i.id||1,data:l,isNew:!0},function(n){if(n)return console.error(n),void a({error:n.error});var t=e.calendars[l.channel];r.whenRealtimeSyncs(t.lm.realtime,function(){f[l.channel]=l,(i.pin||e.pinPads)([l.channel],function(e){e&&e.error&&console.error(e.error)}),e.Store.onSync(i.id,a)})})}else a({error:"EFORBIDDEN"});else a({error:"NO_STORE"})};return l.init=function(t,o,a){var s={},c=t.store,u={loggedIn:c.loggedIn&&c.proxy.edPublic,store:c,Store:t.Store,pinPads:t.pinPads,unpinPads:t.unpinPads,updateMetadata:t.updateMetadata,emit:a,onReady:e.mkEvent(!0),calendars:{},clients:[]};return function(e,n){var t=e.store.proxy;t.calendars=t.calendars||{},setTimeout(n)}(u,o(function(e){e||function(e){w(e,e.store);var n=e.store.modules.team&&e.store.modules.team.getTeamsData();n&&Object.keys(n).forEach(function(n){var t=d(e,n);w(e,t)})}(u)})),u.store.proxy.on("change",["hideReminders"],function(e,n,t){var r=t[1].split("|")[0];Object.keys(u.calendars).some(function(e){var n=u.calendars[e];if(n&&n.proxy&&n.proxy.content)return n.proxy.content[r]?(setTimeout(function(){E(u,e,n.proxy.content[r])}),!0):void 0})}),s.closeTeam=function(e){Object.keys(u.calendars).forEach(function(n){var t=u.calendars[n],r=t.stores.indexOf(e);if(-1!==r){t.stores.splice(r,1);var o=t.roStores.indexOf(e);-1!==o&&t.roStores.splice(o,1),v(u,n),h(u,t)}})},s.openTeam=function(e){var n=d(u,e);n&&w(u,n)},s.upgradeTeam=function(n){if(n){var t=d(u,n);t&&Object.keys(u.calendars).forEach(function(r){var o=u.calendars[r];if(-1!==o.stores.indexOf(n)){var a=t.proxy.calendars[r],i=e.clone(a);O(t,i),A(u,{storeId:n,data:i}),h(u,o)}})}},s.removeClient=function(e){!function(e,n){var t=e.clients.indexOf(n);-1!==t&&e.clients.splice(t,1),Object.keys(e.calendars).forEach(function(t){var r=e.calendars[t];if(1===r.stores.length&&0===r.stores[0]&&r.tempId.length){var o=r.tempId.indexOf(n);-1!==o&&r.tempId.splice(o,1),r.tempId.length||(r.stores=[],v(e,t))}})}(u,e)},s.execCommand=function(t,o,a){var s=o.cmd,c=o.data;if("SUBSCRIBE"!==s){if("OPEN"!==s)return"IMPORT"===s?u.store.offline?void a({error:"OFFLINE"}):u.loggedIn?void function(t,r,o,a){var i=r.id,s=t.calendars[i];if(s)if(Array.isArray(s.stores)&&-1!==s.stores.indexOf(r.teamId)){var c=t.store,u=c.proxy.calendars=c.proxy.calendars||{},f=s.hashes.editHash,l=s.hashes.viewHash;u[i]={href:f&&n.hashToHref(f,"calendar"),roHref:l&&n.hashToHref(l,"calendar"),channel:i,color:e.find(s,["proxy","metadata","color"])||e.getRandomColor(),title:e.find(s,["proxy","metadata","title"])||"..."},t.Store.onSync(null,a),A(t,{storeId:1,data:{href:u[i].href,toHref:u[i].roHref,channel:i}})}else a({error:"EINVAL"});else a({error:"ENOENT"})}(u,c,0,a):void a({error:"NOT_LOGGED_IN"}):"IMPORT_ICS"===s?u.store.offline?void a({error:"OFFLINE"}):void function(e,n,t,o){var a=n.id,i=e.calendars[a];if(i&&i.proxy){var s=n.json;i.proxy.content=i.proxy.content||{},Object.keys(s).forEach(function(n){i.proxy.content[n]=s[n],E(e,a,s[n])}),r.whenRealtimeSyncs(i.lm.realtime,function(){h(e,i),o()})}else o({error:"ENOENT"})}(u,c,0,a):"ADD"===s?u.store.offline?void a({error:"OFFLINE"}):u.loggedIn?void function(t,r,o,a){var i=d(t,r.teamId);if(i)if(i.rpc){var s=i.proxy.calendars=i.proxy.calendars||{},c=n.parsePadUrl(r.href),u=n.getSecrets(c.type,c.hash,r.password);if(u.channel===r.channel){var f=n.getEditHashFromKeys(u),l=n.getViewHashFromKeys(u),h=f&&n.hashToHref(f,"calendar"),p={href:h,roHref:l&&n.hashToHref(l,"calendar"),color:r.color,title:r.title,channel:r.channel};!s[r.channel]||!s[r.channel].href&&p.href?(p.color=r.color,p.title=r.title,A(t,{storeId:i.id||1,data:e.clone(p)},function(e){if(e)return console.error(e),void a({error:e.error});if(h&&i.id&&i.secondaryKey)try{p.href=i.userObject.cryptor.encrypt(h)}catch(e){console.error(e)}s[p.channel]=p,(i.pin||t.pinPads)([p.channel],function(e){e&&e.error&&console.error(e.error)}),t.Store.onSync(i.id,a)})):a()}else a({error:"EINVAL"})}else a({error:"EFORBIDDEN"});else a({error:"NO_STORE"})}(u,c,0,a):void a({error:"NOT_LOGGED_IN"}):"CREATE"===s?u.loggedIn?c.initialCalendar?void u.Store.onReadyEvt.reg(function(){D(u,c,0,a)}):u.store.offline?void a({error:"OFFLINE"}):void D(u,c,0,a):void a({error:"NOT_LOGGED_IN"}):"UPDATE"===s?u.store.offline?void a({error:"OFFLINE"}):void function(n,t,o,a){var i=t.id,s=n.calendars[i];if(s){var c=e.find(s,["proxy","metadata"]);c?(c.title=t.title,c.color=t.color,r.whenRealtimeSyncs(s.lm.realtime,a),h(n,s),y(n,s,t)):a({error:"EINVAL"})}else a({error:"ENOENT"})}(u,c,0,a):"DELETE"===s?u.store.offline?void a({error:"OFFLINE"}):u.loggedIn?void function(e,n,t,r){var o=d(e,n.teamId);if(o)if(o.rpc){if(o.proxy.calendars){var a=n.id;if(o.proxy.calendars[a]){delete o.proxy.calendars[a],(o.unpin||e.unpinPads)([a],function(e){e&&e.error&&console.error(e.error)});var i=e.calendars[a],s=i.stores.indexOf(o.id||1);i.stores.splice(s,1),v(e,a),e.Store.onSync(o.id,function(){h(e,i),r()})}else r()}}else r({error:"EFORBIDDEN"});else r({error:"NO_STORE"})}(u,c,0,a):void a({error:"NOT_LOGGED_IN"}):"CREATE_EVENT"===s?u.store.offline?void a({error:"OFFLINE"}):void function(e,n,t,o){var a=n.calendarId,i=e.calendars[a];if(i){var s=new Date(n.start),c=new Date(n.end);n.isAllDay?(n.startDay=s.getFullYear()+"-"+(s.getMonth()+1)+"-"+s.getDate(),n.endDay=c.getFullYear()+"-"+(c.getMonth()+1)+"-"+c.getDate()):(delete n.startDay,delete n.endDay),i.proxy.content=i.proxy.content||{},i.proxy.content[n.id]=n,r.whenRealtimeSyncs(i.lm.realtime,function(){E(e,a,n),h(e,i),o()})}else o({error:"ENOENT"})}(u,c,0,a):"UPDATE_EVENT"===s?u.store.offline?void a({error:"OFFLINE"}):void function(n,t,o,a){if(t&&t.ev){var s=t.ev.calendarId,c=n.calendars[s];if(c&&c.proxy&&c.proxy.content){var u=c.proxy.content[t.ev.id];if(u){t.rawData=t.rawData||{};var f,l=t.changes||{},d=t.type||{};if(l.calendarId){if(!(f=n.calendars[l.calendarId])||!f.proxy)return void a({error:"ENOENT"});f.proxy.content=f.proxy.content||{}}var p={one:{},from:{}};["one","from","all"].includes(d.which)&&(u.recUpdate=u.recUpdate||p,u.recUpdate.one||(u.recUpdate.one={}),u.recUpdate.from||(u.recUpdate.from={}));var v=u.recUpdate,y=["calendarId"],m=Object.keys(l).filter(function(e){return!y.includes(e)}),g=function(e){[v.from,v.one].forEach(function(n){Object.keys(n).forEach(function(t){Number(t){const r=[],o=null==nr?void 0:nr.httpUnsafeOrigin;ie.fetchApi(o,"config",!0,e=>{var o,a;(null===(o=null==e?void 0:e.adminKeys)||void 0===o?void 0:o.includes(n))&&r.push("admin");(null===(a=null==e?void 0:e.moderatorKeys)||void 0===a?void 0:a.includes(n))&&r.push("moderator"),t(r)})},rr=(e,n,t)=>{e.Store.anonRpcMsg("",{msg:"IS_PREMIUM",data:n},e=>{let n=Array.isArray(e)&&e[0];t(n?["premium"]:[])})},or=(e,n,t,r)=>{var o,a;const i=[];null==nr||nr.httpUnsafeOrigin;const s=n.edPublic||(null===(a=null===(o=e.store)||void 0===o?void 0:o.proxy)||void 0===a?void 0:a.edPublic);rt(e=>{tr(0,s,e(e=>{Array.prototype.push.apply(i,e)}))}).nThen(n=>{rr(e,s,n(e=>{Array.prototype.push.apply(i,e)}))}).nThen(()=>{r(i)})},ar={admin:tr,moderator:tr,premium:rr},ir={init:(e,n,t)=>{const r={store:e.store,Store:e.Store,updateMetadata:e.updateMetadata},o=r.Store;return o.onReadyEvt.reg(()=>{var e;const n=o.getMetadata(void 0,"drive",()=>{}),t=(null===(e=null==n?void 0:n.user)||void 0===e?void 0:e.badge)||"";t&&or(r,{},0,e=>{var n,o;if(!e.includes(t)){const e=null===(o=null===(n=null==r?void 0:r.store)||void 0===n?void 0:n.modules)||void 0===o?void 0:o.profile;null==e||e.execCommand(void 0,{cmd:"SET",data:{key:"badge",value:""}},()=>{})}})}),{listBadges:(e,n)=>{or(r,e,0,n)},removeClient:()=>{},execCommand:(e,n,t)=>{const o=n.cmd,a=n.data;"LIST_BADGES"!==o?"CHECK_BADGE"!==o?t():((e,n,t,r)=>{const{badge:o,ed:a,sig:i,nid:s}=n,c=ie.decodeBase64(a),u=ie.decodeBase64(i),f=er.sign.open(u,c);if(!f)return void r({verified:!1});if(ie.encodeUTF8(f)!==s)return void r({verified:!1});let l=ar[o];l?l(e,a,e=>{r({verified:e.includes(o),badge:o})}):r({verified:!1,error:"EINVAL"})})(r,a,0,t):or(r,a,0,t)}}},setCustomize:e=>{nr=null==e?void 0:e.ApiConfig}};var sr,cr,ur=o(Object.freeze({__proto__:null,Badge:ir}));function fr(){if(cr)return sr;cr=1;return sr=((e,n,t,r,o,a,i,s,c,u,f,l,d,h,p,v,y,m,g,E,b,A,O,w,D,_,T,S,N,I,x,C,R,P,k,M,F,L)=>{const H=v.Account,j=y.Drive,K=m.Pad,U=I.Badge,B=globalThis;globalThis.nacl=globalThis.nacl||R.Nacl;let V={},G={};const Y=a.Saferphore;var J=a.mkEvent(!0),q=a.mkEvent(!0),W=a.mkEvent(!0),z=a.mkEvent(!0);var Q={drive:{hideDuplicate:!0},pad:{width:!0,spellcheck:!0},security:{unsafeLinks:!1},general:{allowUserFeedback:!0}};return{setCustomize:e=>{V=e.ApiConfig,G=e.AppConfig},create:function(v){var y=B.Cryptpad_Store={};let m=v.query||function(){},I=v.broadcast||function(){};var P=B.CryptPad_AsyncStore={modules:{}};y.onReadyEvt=J,y.pad=K.init({Store:y,store:P,postMessage:m,broadcast:I}),y.drive=j.initAPI({Store:y,store:P,postMessage:m,broadcast:I}),y.form=g.init({Store:y,store:P,postMessage:m,broadcast:I});var k=[],M=P.sendDriveEvent=function(e,n,t){k.forEach(function(r){r!==t&&m(r,e,n)})},X=y.getStore=function(e){if(!e)return P;try{var n=P.modules.team.getTeam(e);return n||void console.error("Team not found",e)}catch(n){return console.error(n),void console.error("Team not found",e)}},Z=y.onSync=function(e,n){var t=X(e);t?L(function(e){if(t.realtime&&c.whenRealtimeSyncs(t.realtime,e()),!t.id&&t.drive?.realtime&&c.whenRealtimeSyncs(t.drive.realtime,e()),t.sharedFolders&&"object"==typeof t.sharedFolders)for(var n in t.sharedFolders)t.sharedFolders[n].realtime&&c.whenRealtimeSyncs(t.sharedFolders[n].realtime,e())}).nThen(function(){n()}):n({error:"ENOTFOUND"})};y.get=function(e,n,t){var r=X(n.teamId);r?r.proxy?t(a.find(r.proxy,n.key)):t({error:"ENODRIVE"}):t({error:"ENOTFOUND"})},y.set=function(e,n,t){var r=X(n.teamId);if(r)if(r.proxy){var o=n.key.slice(),i=o.pop(),s=a.find(r.proxy,o);s&&"object"==typeof s?(void 0===n.value?delete s[i]:s[i]=n.value,n.teamId||(I([e],"UPDATE_METADATA"),Array.isArray(o)&&"profile"===o[0]&&P.messenger&&u.updateMyData(P)),Z(n.teamId,t)):t({error:"INVALID_PATH"})}else t({error:"ENODRIVE"});else t({error:"ENOTFOUND"})},y.getSharedFolder=function(e,t,r){var o,i=X(t.teamId),s=t.id;if(i&&i.manager){if(i.manager.folders[s])return(o=a.clone(i.manager.folders[s].proxy)).offline=Boolean(i.manager.folders[s].offline),void r(o);var c=a.find(i.proxy,["drive",n.SHARED_FOLDERS])||{};c[s]?y.loadSharedFolder(t.teamId,s,c[s],function(){r(i.manager.folders[s].proxy)}):r({})}else r({error:"ENOTFOUND"})},y.restoreSharedFolder=function(e,n,t){if(n.sfId&&n.drive){var r=X(n.teamId);r.sharedFolders[n.sfId]&&(Object.keys(n.drive).forEach(function(e){r.sharedFolders[n.sfId].proxy[e]=n.drive[e]}),Object.keys(r.sharedFolders[n.sfId].proxy).forEach(function(e){n.drive[e]||delete r.sharedFolders[n.sfId].proxy[e]})),Z(n.teamId,t)}else t({error:"EINVAL"})},y.hasSigningKeys=function(){if(P.proxy)return"string"==typeof P.proxy.edPrivate&&"string"==typeof P.proxy.edPublic},y.hasCurveKeys=function(){if(P.proxy)return"string"==typeof P.proxy.curvePrivate&&"string"==typeof P.proxy.curvePublic},y.isOwned=function(e){var n=P.proxy.edPublic;if(!n)return!1;if(!Array.isArray(e)||!e.length)return!1;if(-1!==e.indexOf(n))return!0;var t=P.proxy.teams;return!!t&&Object.keys(t).some(function(n){var r=a.find(t[n],["keys","drive","edPublic"]);return r&&-1!==e.indexOf(r)})};var $=function(e){var n=e?P.driveChannel:`${P.driveChannel}#drive`;if(!n)return null;var t=P.manager.getChannelsList("pin"),r=P.proxy.profile;if(r){var a=r.edit?o.hrefToHexChannelId("/profile/#"+r.edit,null):null;a&&t.add(a);var i=r.avatar?o.hrefToHexChannelId(r.avatar,null):null;i&&t.add(i)}(P.proxy.todo&&t.add(o.hrefToHexChannelId("/todo/#"+P.proxy.todo,null)),P.proxy.friends)&&u.getFriendChannelsList(P.proxy).forEach(e=>t.add(e));P.proxy.mailboxes&&Object.keys(P.proxy.mailboxes).map(function(e){if("broadcast"!==e||P.isAdmin)return P.proxy.mailboxes[e].channel}).filter(Boolean).forEach(e=>t.add(e));P.proxy.calendars&&Object.keys(P.proxy.calendars).map(function(e){return P.proxy.calendars[e].channel}).forEach(e=>t.add(e));return t.add(n),P.data&&P.data.blockId&&!e&&t.add(`${P.data.blockId}#block`),Array.from(t).sort()};y.pinPads=function(e,n,t){if(n){var r=X(n&&n.teamId);if(r.rpc){"function"!=typeof t&&(console.error("expected a callback"),t=function(){});var o=n.pads||n;r.rpc.pin(o,function(e){t(e?{error:e}:{})})}else t({error:"RPC_NOT_READY"})}else t({error:"EINVAL"})},y.unpinPads=function(e,n,t){if(n){var r=X(n&&n.teamId);if(r.rpc){var o=n.pads||n;r.rpc.unpin(o,function(e){t(e?{error:e}:{})})}else t({error:"RPC_NOT_READY"})}else t({error:"EINVAL"})};var ee=P.account={};y.getPinnedUsage=function(e,n,t){var r=X(n&&n.teamId);r&&r.rpc?r.rpc.getFileListSize(function(e,n){r.id||"number"!=typeof n||(ee.usage=n),t({bytes:n})}):t({error:"RPC_NOT_READY"})},y.getPinLimit=function(e,n,t){var r=X(n&&n.teamId);r.rpc?r.rpc.getLimit(function(e,n,o,a){if(e)t({error:e});else{var i=r.id?{}:ee;i.limit=n,i.plan=o,i.note=a,t(i)}}):t({error:"RPC_NOT_READY"})};y.uploadComplete=function(e,n,t){var r=X(n.teamId);r?r.rpc?n.owned?r.rpc.ownedUploadComplete(n.id,function(e,n){t(e?{error:e}:n)}):r.rpc.uploadComplete(n.id,function(e,n){t(e?{error:e}:n)}):t({error:"RPC_NOT_READY"}):t({error:"ENOTFOUND"})},y.uploadStatus=function(e,n,t){var r=X(n.teamId);r?r.rpc?r.rpc.uploadStatus({id:n.id,size:n.size},function(e,n){t(e?{error:e}:n)}):t({error:"RPC_NOT_READY"}):t({error:"ENOTFOUND"})},y.uploadCancel=function(e,n,t){var r=X(n.teamId);r?r.rpc?r.rpc.uploadCancel({id:n.id,size:n.size},function(e,n){t(e?{error:e}:n)}):t({error:"RPC_NOT_READY"}):t({error:"ENOTFOUND"})},y.uploadChunk=function(e,n,t){var r=X(n.teamId);r?r.rpc?r.rpc.send.unauthenticated("UPLOAD",{chunk:n.chunk,id:n.id},function(e,n){t({error:e,msg:n})}):t({error:"RPC_NOT_READY"}):t({error:"ENOTFOUND"})};y.anonRpcMsg=function(e,n,t){P.anon_rpc?P.anon_rpc.send(n.msg,n.data,function(e,n){t(e?{error:e}:n)}):t({error:"ANON_RPC_NOT_READY"})},y.getFileSize=function(e,n,t){var r=a.once(a.mkAsync(t));if(P.anon_rpc){var i=n.channel||o.hrefToHexChannelId(n.href,n.password);P.anon_rpc.send("GET_FILE_SIZE",i,function(e,n){if(!e)return n&&n.length&&"number"==typeof n[0]?(0===n[0]&&h.clearChannel(i),void r({size:n[0]})):void r({error:"INVALID_RESPONSE"});r({error:e})})}else r({error:"ANON_RPC_NOT_READY"})},y.isNewChannel=function(e,n,t){if(!P.anon_rpc)return void t({error:"ANON_RPC_NOT_READY"});let r="string"==typeof n?n:n.channel||o.hrefToHexChannelId(n.href,n.password);P.anon_rpc.send("IS_NEW_CHANNEL",r,function(e,n){if(!e)return n&&n.length&&"object"==typeof n[0]?(n[0].isNew&&h.clearChannel(r),void t(n[0])):void t({error:"INVALID_RESPONSE"});t({error:e})})},y.getMultipleFileSize=function(e,n,t){P.anon_rpc?Array.isArray(n.files)?P.anon_rpc.send("GET_MULTIPLE_FILE_SIZE",n.files,function(e,n){e?t({error:e}):n&&n.length&&"object"==typeof n[0]?t({size:n[0]}):t({error:"UNEXPECTED_RESPONSE"})}):t({error:"INVALID_FILE_LIST"}):t({error:"ANON_RPC_NOT_READY"})},y.getDeletedPads=function(e,n,t){if(P.anon_rpc){var r=n?.list;Array.isArray(r)?P.anon_rpc.send("GET_DELETED_PADS",r,function(e,n){e?t({error:e}):n&&n.length&&Array.isArray(n[0])?t(n[0]):t({error:"UNEXPECTED_RESPONSE"})}):t({error:"INVALID_FILE_LIST"})}else t({error:"ANON_RPC_NOT_READY"})};var ne=function(e,n,t){P.anon_rpc?t():l.createAnonymous(P.network,function(e,n){e?t({error:e}):(P.anon_rpc=n,t())})},te=y.getAllStores=function(){if(!P.proxy||!P.manager)return[];var e=[P],n=P.modules.team;if(n){var t=n.getTeams().map(function(e){return n.getTeam(e)});Array.prototype.push.apply(e,t)}return e};y.getUserColor=function(){var e=a.find(P,["proxy","settings","general","cursor","color"]);return e||(e=a.getRandomColor(!0),y.setAttribute(null,{attr:["general","cursor","color"],value:e},function(){})),e},y.getMetadata=function(e,n,t){var r=P.proxy||{},s=a.find(r,["settings","general","disableThumbnails"]),c=P.modules.team&&P.modules.team.getTeamsData(n)||{};r.uid||(P.noDriveUid=P.noDriveUid||o.createChannelId());var u={user:{name:r[i.displayNameKey]||P.noDriveName||"",uid:r.uid||P.noDriveUid,avatar:a.find(r,["profile","avatar"]),profile:a.find(r,["profile","view"]),color:y.getUserColor(),notifications:a.find(r,["mailboxes","notifications","channel"]),curvePublic:r.curvePublic,edPublic:r.edPublic,netfluxId:P?.network?.webChannels?.[0]?.myID,badge:a.find(r,["profile","badge"])},priv:{clientId:e,edPublic:r.edPublic,edPrivate:r.edPrivate,friends:r.friends||{},settings:r.settings||Q,thumbnails:!1===s,isDriveOwned:Boolean(a.find(P,["driveMetadata","owners"])),driveChannel:P.driveChannel,pendingFriends:r.friends_pending||{},supportPrivateKey:a.find(r,["mailboxes","supportadmin","keys","curvePrivate"]),accountName:r.login_name||"",offline:P.proxy&&P.offline,teams:c,plan:P.ready?ee.plan||"":void 0,mutedChannels:r.mutedChannels}};return t(JSON.parse(JSON.stringify(u))),u},y.onMaintenanceUpdate=function(){let e=V.httpUnsafeOrigin;a.fetchApi(e,"broadcast",!0,e=>{e&&I([],"UNIVERSAL_EVENT",{type:"broadcast",data:{ev:"MAINTENANCE",data:e.maintenance}})})},y.onSurveyUpdate=function(){let e=V.httpUnsafeOrigin;a.fetchApi(e,"broadcast",!0,e=>{I([],"UNIVERSAL_EVENT",{type:"broadcast",data:{ev:"SURVEY",data:e.surveyURL}})})};const re=(e,n)=>{const t={network:P.network},r=e.href||e.roHref;let i=Array.isArray(e.password)?e.password:[e.password];i=i.filter(Boolean);let s=0,c=i.length;const u=o.parsePadUrl(r),f=e=>{t.password=e,d.get(u.hash,(e,t)=>{if(e)return s>=c?void n(e):f(i[s++]);const r=a.tryParse(t),o=r?.content?.channel;o?n(void 0,o):n("NO_CHAN")},t)};f(i[s++])};y.addPad=function(e,t,r){if(!t.href&&!t.roHref)return void r({error:"NO_HREF"});var i,c=o.parsePadUrl(t.href||t.roHref);t.roHref||"pad"===c.hashData.type&&(i=o.getSecrets(c.type,c.hash,t.password),t.roHref="/"+c.type+"/#"+o.getViewHashFromKeys(i));var u,f,l,d,h=(u=t.href,f=t.roHref,l=t.title,d=+new Date,{href:u,roHref:f,atime:d,ctime:d,title:l||n.getDefaultName(o.parsePadUrl(u))});t.owners&&(h.owners=t.owners),t.expire&&(h.expire=t.expire),t.password&&(h.password=t.password),(t.channel||i)&&(h.channel=t.channel||i.channel),t.readme&&(h.readme=1),Object.keys(t.attributes||{}).forEach(e=>{t.attributes[e]&&(h[e]=t.attributes[e])}),-1===t.teamId&&(t.teamId=void 0);var p=X(t.teamId);if(!p||!p.manager)return void r({error:"ENOTFOUND"});const v=a.once(()=>{p.manager.addPad(t.path,h,function(o){o?r({error:o}):(te().forEach(function(t){(t.id?t.sendEvent:M)("DRIVE_CHANGE",{path:["drive",n.FILES_DATA]},e)}),Z(t.teamId,r))})});if(["doc","sheet","presentation"].includes(c.type)&&!h.rtChannel)return re(h,(e,n)=>{const t="ADDPAD_NO_RT_CHANNEL";e?s.send(`${t}_ERROR`,!0):(s.send(t,!0),h.rtChannel=n),v()});v()};var oe=function(e,n){var t=a.find(P,["proxy","edPublic"]),r=function(e){if(e){var n=[];return P.proxy.todo&&n.push(o.hrefToHexChannelId("/todo/#"+P.proxy.todo,null)),P.proxy.profile&&P.proxy.profile.edit&&n.push(o.hrefToHexChannelId("/profile/#"+P.proxy.profile.edit,null)),P.proxy.mailboxes&&Object.keys(P.proxy.mailboxes||{}).forEach(function(e){if("supportadmin"!==e&&"supportteam"!==e){var t=P.proxy.mailboxes[e];n.push(t.channel)}}),n.filter(function(e){if("string"==typeof e)return-1!==[32,48].indexOf(e.length)})}return Array.from(P.manager.getChannelsList("owned"))}(e),i=Y.create(10),s=function(n){e||P.manager.findChannel(n).forEach(function(e){var n=P.manager.findFile(e.id);P.manager.delete({paths:n})})};r.forEach(function(e){var r=n();i.take(function(n){var o=!1;L(function(a){32===e.length&&y.anonRpcMsg(null,{msg:"GET_METADATA",data:e},a(function(i){if(i&&i.error)return n(),r(),void a.abort();var c=i[0];return Object.keys(c||{}).length?c&&Array.isArray(c.owners)&&-1!==c.owners.indexOf(t)?void(o=c.owners.some(function(e){return e!==t})):(n(),r(),void a.abort()):(s(e),n(),r(),void a.abort())}))}).nThen(function(n){o?y.pad.setMetadata(null,{channel:e,command:"RM_OWNERS",value:[t]},n()):P.rpc.removeOwnedChannel(e,n(function(n){n?console.error(n):s(e)}))}).nThen(function(){n(),r()})})})};y.removeOwnedPads=function(e,n,t){P.proxy.edPublic?L(function(e){oe(!1,e)}).nThen(t):t({error:"NOT_LOGGED_IN"})},y.deleteAccount=function(n,t,r){var o=P.proxy.edPublic,s=t&&t.keys,c=t&&t.auth;y.anonRpcMsg(n,{msg:"GET_METADATA",data:P.driveChannel},function(t){var u=t[0];if(u&&u.owners&&1===u.owners.length&&-1!==u.owners.indexOf(o))L(function(e){x.checkRights({auth:c,blockKeys:s},e(function(n){if(n)return e.abort(),console.error(n),void r({error:"INVALID_CODE"})}))}).nThen(function(e){globalThis.accountDeletion=n,P.proxy[i.tokenKey]="DELETED",Z(null,e())}).nThen(function(e){P.rpc.removePins(e(function(e){e&&console.error(e)}))}).nThen(function(e){P.ownDeletion=!0,y.pad.destroy(n,{channel:P.driveChannel,force:!0},e())}).nThen(function(e){s&&x.removeLoginBlock({reason:"ARCHIVE_OWNED",auth:c,edPublic:o,blockKeys:s},e(function(e){e&&console.error(e)}))}).nThen(function(e){oe(!0,e)}).nThen(function(){I([n],"DRIVE_DELETED","ARCHIVE_OWNED"),m(n,"DELETE_ACCOUNT","DELETED",function(){}),P.network.disconnect(),r({state:!0})});else{var f={intent:"Please delete my account."};f.drive=P.driveChannel,f.edPublic=o;var l=a.decodeBase64(P.proxy.edPrivate),d=R.Nacl.sign.detached(a.decodeUTF8(e(f)),l);R.Nacl.sign.detached.verify(a.decodeUTF8(e(f)),d,a.decodeBase64(o))||console.error("signed message failed verification");var h=a.encodeBase64(d);r({proof:h,toSign:JSON.parse(e(f))})}})},y.setDisplayName=function(e,n,t){if(!P.proxy)return P.noDriveName=n,I([e],"UPDATE_METADATA"),void t();P.modules.profile&&P.modules.profile.setName(n),P.proxy[i.displayNameKey]=n,I([e],"UPDATE_METADATA"),u.updateMyData(P),Z(null,t)},y.resetDrive=function(e,n,t){L(function(e){oe(!1,e)}).nThen(function(){P.proxy.drive=P.userObject.getStructure(),M("DRIVE_CHANGE",{path:["drive","filesData"]},e),Z(null,t)})},y.setPadAttribute=function(e,t,r){L(function(r){te().forEach(function(o){o.manager.setPadAttribute(t,r(function(){(o.id?o.sendEvent:M)("DRIVE_CHANGE",{path:["drive",n.FILES_DATA]},e),Z(o.id,r())}))})}).nThen(r)},y.getPadAttribute=function(e,n,t){var r={};L(function(e){te().forEach(function(t){t.manager.getPadAttribute(n,e(function(e,n){e||(n&&"object"==typeof n?(!r.value||r.atime{if(P.loggedIn&&P.proxy.edPublic){var n,r=P.modules.team,o=r&&r.getTeams()||[];-1!==e.indexOf(P.proxy.edPublic)?n=P:o.some(function(t){var o=a.find(P,["proxy","teams",t,"keys","drive","edPublic"]),i=a.find(P,["proxy","teams",t,"keys","drive","edPrivate"]);if(-1===e.indexOf(o))return!1;if(!i)return!1;var s=r.getTeam(t);return n=s,!0});var i=function(){if(n){var e=n.rpc;e?e.send("COOKIE","",function(e){t(e)}):t("ERESTRICTED")}else t("ERESTRICTED")};n&&n.onRpcReadyEvt?n.onRpcReadyEvt.reg(function(){i()}):i()}else t("ERESTRICTED")})):t("ERESTRICTED")},y.changePadPasswordPin=function(e,n,t){var r=n.oldChannel,o=n.channel;L(function(e){te().forEach(function(n){n.manager.findChannel(o).length&&(n.rpc.unpin([r],e()),n.rpc.pin([o],e()))})}).nThen(t)},y.contactPadOwner=function(e,n,t){var r=n.owners;if(!Array.isArray(r)||!r.length)return t({state:!1});n.send?L(function(e){r.forEach(function(t){!function(e,t,r,o){if(P.mailbox&&!n.anon)return P.mailbox.sendTo(e,t,r,o);w.sendToAnon(P.anon_rpc,e,t,r,o)}(n.query,{channel:n.channel,data:n.msgData},{channel:t.notifications,curvePublic:t.curvePublic},e())})}).nThen(function(){t({state:!0})}):t({state:!0})},y.givePadAccess=function(e,n,t){var r,o,a=P.proxy.edPublic,i=n.channel,s=P.manager.findChannel(i);n.user&&n.user.notifications&&n.user.curvePublic?s.some(function(e){if(e.data&&Array.isArray(e.data.owners)&&-1!==e.data.owners.indexOf(a)&&e.data.href)return r=e.data.href,o=e.data.title,!0})?(P.mailbox.sendTo("GIVE_PAD_ACCESS",{channel:i,href:r,title:o},{channel:n.user.notifications,curvePublic:n.user.curvePublic}),t()):t({error:"ENOTFOUND"}):t({error:"EINVAL"})};y.burnPad=function(e,n){var t=n.channel,r=R.b64AddSlashes(n.ownerKey||"");if(t&&r)try{var a=o.decodeBase64(r),i=R.Nacl.sign.keyPair.fromSecretKey(a);f.create(P.network,{edPublic:o.encodeBase64(i.publicKey),edPrivate:o.encodeBase64(i.secretKey)},function(e,r){e?console.error(e):y.pad.getMetadata(null,{channel:t},function(e){r.removeOwnedChannel(t,function(t){t?console.error(t):function(e,n){var t=e.channel,r=e.href,a=o.parsePadUrl(r),i=o.getSecrets(a.type,a.hash,e.password);if((!n||!n.error)&&n.mailbox){var s,c=R.createEncryptor(i.keys),u=[];try{"string"==typeof n.mailbox?u.push(c.decrypt(n.mailbox,!0,!0)):Object.keys(n.mailbox).forEach(function(e){u.push(c.decrypt(n.mailbox[e],!0,!0))})}catch(e){console.error(e)}try{s=P.proxy.curvePublic}catch(e){return void console.error(e)}u.forEach(function(e){var n=JSON.parse(e);n.curvePublic!==s&&P.mailbox.sendTo("OWNED_PAD_REMOVED",{channel:t},{channel:n.notifications,curvePublic:n.curvePublic},function(){})})}}(n,e)})})})}catch(e){console.error(e)}else console.error("Can't delete BAR pad")},y.deleteMailboxMessage=function(e,n,t){P.anon_rpc?P.anon_rpc.send("DELETE_MAILBOX_MESSAGE",n,function(e){t({error:e})}):t({error:"RPC_NOT_READY"})},y.getFullHistory=function(e,n,t){var r=P.network,o=r.historyKeeper,a=[],i=!1,s=function(e){if(!i){var o=function(e){try{return JSON.parse(e)}catch(e){return null}}(e);if(o)return"FULL_HISTORY_END"===o[0]?(t(a),r.off("message",s),void(i=!0)):void("FULL_HISTORY"===o[0]&&(o[1]&&o[1].validateKey||o[1][3]===n.channel&&(e=o[1][4])&&(e=e.replace(/cp\|(([A-Za-z0-9+\/=]+)\|)?/,""),n.debug?a.push({serverHash:e.slice(0,64),msg:e,author:o[1][1],time:o[1][5]}):a.push(e))))}};r.on("message",s),r.sendto(o,JSON.stringify(["GET_FULL_HISTORY",n.channel,n.validateKey]))},y.getHistory=function(e,n,t,r){var o=a.once(a.mkAsync(t)),i=P.network,s=i.historyKeeper,c=Math.floor(1e6*Math.random()),u=[],f=!1,l=function(e,t){if(!f&&t===s){var a=function(e){try{return JSON.parse(e)}catch(e){return null}}(e);if(a&&!(a.txid&&a.txid!==c||a.validateKey&&a.channel))if(a.error&&a.channel)a.channel===n.channel&&(i.off("message",l),f=!0,o({error:a.error}));else{if(1===a.state&&a.channel){if(a.channel!==n.channel)return;return o(u),i.off("message",l),void(f=!0)}Array.isArray(a)&&a[0]&&a[0]!==c||a[3]===n.channel&&(a[4]&&r?u.push({msg:e,hash:a[4].slice(0,64)}):(e=a[4])&&(e=e.replace(/cp\|(([A-Za-z0-9+\/=]+)\|)?/,""),u.push(e)))}}};i.on("message",l);var d={txid:c,lastKnownHash:n.lastKnownHash},h=["GET_HISTORY",n.channel,d];i.sendto(s,JSON.stringify(h))},y.getHistoryRange=function(e,n,t){var r,o=P.network,i=o.historyKeeper,s=[],c=!0,u=!1,f=!1,l=a.uid();o.on("message",function(e){if(!f){var o=function(e){try{return JSON.parse(e)}catch(e){return null}}(e);if(o[1]===l){if("HISTORY_RANGE_ERROR"===o[0]){let e=o[2];return"ENOENT"===e?.code?(f=!0,void t({messages:s,isFull:!0})):void t({error:o[2]})}if("HISTORY_RANGE_END"===o[0])return t({messages:s,isFull:u,lastKnownHash:r}),void(f=!0);"HISTORY_RANGE"===o[0]&&(o[2]&&o[1].validateKey||o[2][3]===n.channel&&(e=o[2][4])&&(c&&(/^cp\|/.test(e)||n.toHash||(u=!0),r=e.slice(0,64),c=!1),e=e.replace(/cp\|(([A-Za-z0-9+\/=]+)\|)?/,""),s.push({serverHash:e.slice(0,64),msg:e,author:o[2][1],time:o[2][5]})))}else console.log("bad txid")}}),o.sendto(i,JSON.stringify(["GET_HISTORY_RANGE",n.channel,{from:n.lastKnownHash,to:n.toHash,cpCount:n.cpCount||2,txid:l}]))};var se=function(e,t){e&&(e.deprecated||e.restricted||(t||e.on("change",["drive",n.SHARED_FOLDERS],function(t,r,a){if(a.length>3&&"password"===a[3]){var i=a[2],s=e.drive[n.SHARED_FOLDERS][i],c=P.manager.user.userObject.getHref?P.manager.user.userObject.getHref(s):s.href,u=o.parsePadUrl(c),f=o.getSecrets(u.type,u.hash,t);return p.updatePassword(y,{oldChannel:f.channel,password:r,href:c},P.network,function(){console.log("Shared folder password changed")}),!1}}),e.on("change",[],function(e,r,o){if(t){if(o[0]===n.FILES_DATA&&"object"==typeof r&&r.channel&&!r.owners){var a=[r.channel];r.rtChannel&&a.push(r.rtChannel),r.lastVersion&&a.push(r.lastVersion),y.pinPads(null,a,function(e){console.error(e)})}if(o[0]===n.FILES_DATA&&"object"==typeof e&&e.channel&&!r){var i=[e.channel];P.manager.findChannel(e.channel).some(function(e){return e.fId!==t})||(e.rtChannel&&i.push(e.rtChannel),e.lastVersion&&i.push(e.lastVersion),y.unpinPads(null,i,function(e){console.error(e)}))}}e&&!r&&Array.isArray(o)&&(o[0]===n.FILES_DATA||"drive"===o[0]&&o[1]===n.FILES_DATA)&&setTimeout(function(){y.checkDeletedPad(e&&e.channel)}),M("DRIVE_CHANGE",{id:t,old:e,new:r,path:o})}),e.on("remove",[],function(e,n){M("DRIVE_REMOVE",{id:t,old:e,path:n})})))};y.loadSharedFolder=function(e,n,t,r,a){var i=X(e);if(i){var s=o.parsePadUrl(t.href||t.roHref);s||s.hashData?p.load({isNew:a,network:P.network||P.networkPromise,store:i,Store:y,isNewChannel:y.isNewChannel},n,t,r):r({error:"EINVAL"})}else r({error:"ENOTFOUND"})};var ce=function(e,n,t,r){y.loadSharedFolder(null,e,n,t,r)};y.loadSharedFolderAnon=function(e,n,t){y.loadSharedFolder(null,n.id,n.data,function(e){t({error:e?void 0:"EDELETED"})})},y.addSharedFolder=function(e,t,r){J.reg(function(){var o=X(t.teamId);o.manager.addSharedFolder(t,function(a){a&&"object"==typeof a&&a.error?r(a):((t.teamId?o.sendEvent:M)("DRIVE_CHANGE",{path:["drive",n.FILES_DATA]},e),r(a))})})},y.updateSharedFolderPassword=function(e,n,t){p.updatePassword(y,n,P.network,t)},y.userObjectCommand=function(e,t,r){if(t&&t.cmd){var o=X(t.teamId);if(o.offline)return(o.id?o.sendEvent:M)("NETWORK_DISCONNECT"),void r({error:"OFFLINE"});o.manager.command(t,function(o){te().forEach(function(t){(t.id?t.sendEvent:M)("DRIVE_CHANGE",{path:["drive",n.FILES_DATA]},e)}),Z(t.teamId,function(){r(o)})})}},y._removeClient=function(e){var n=k.indexOf(e);-1!==n&&k.splice(n,1),P.onlyoffice?.removeClient?.(e),P.mailbox?.removeClient?.(e),Object.keys(P.modules).forEach(function(n){P.modules[n]?.removeClient?.(e)}),y.pad?.removeClient?.(e)};y.fixMissingRtChannelInterval=(e,n)=>{let t=L;e.forEach(e=>{Object.keys(e).forEach(n=>{t=t(t=>{const r=e[n],o=a.clone(r);re(o,t((e,n)=>{e||(s.send("FIX_RT_CHANNEL_INTERVAL",!0),r.rtChannel=n)}))}).nThen})}),t(()=>{setTimeout(n)})},y.fixMissingRtChannel=e=>{const n={},t=e=>{e.forEach(e=>{const t=!!e._readOnly;delete e._readOnly,Object.keys(e).forEach(r=>{if(t)return;let o=e[r],a=o.roHref||o.href;const i=n[r]||={href:a,password:[],list:[]};o.password&&!i.password.includes(o.password)&&i.password.push(o.password),i.list.push(o)})})};try{const e=P.manager.getMissingRtChannel();t(e)}catch(n){return setTimeout(e)}(P.modules?.team?.getTeams()||[]).forEach(n=>{const r=P.modules.team.getTeam(n);try{const e=r.manager.getMissingRtChannel();t(e)}catch(n){return setTimeout(e)}});let r=L;Object.keys(n).forEach(e=>{r=r(t=>{const r=n[e];re(r,t((e,n)=>{e||(s.send("MISSING_RT_CHANNEL_FIXED",!0),r.list.forEach(e=>{e.rtChannel=n}))}))}).nThen}),r(()=>{setTimeout(e)})},y.refreshDriveUI=function(){te().forEach(function(e){(e.id?e.sendEvent:M)("DRIVE_CHANGE",{path:["drive",n.FILES_DATA]})})};var ue=function(e,n){const r=a.mkAsync(n);var o=P.proxy,i=P.drive;if(P.manager)r();else{var s=P.manager=t.create(i.proxy,{onSync:function(e){Z(null,e)},edPublic:o.edPublic,pin:function(e,n){P.loggedIn?y.pinPads(null,e,n):n()},unpin:function(e,n){P.loggedIn?y.unpinPads(null,e,n):n()},loadSharedFolder:ce,settings:o.settings,removeOwnedChannel:function(e,n){y.pad.destroy("",e,n)},store:P,Store:y},{outer:!0,edPublic:P.proxy.edPublic,loggedIn:P.loggedIn,log:function(e){M("DRIVE_LOG",e)},rt:i.realtime}),c=P.userObject=s.user.userObject;L(function(e){P.sharedFolders={},P.handleSharedFolder=function(e,n){n?(P.sharedFolders[e]=n,P.driveEvents&&se(n.proxy,e)):delete P.sharedFolders[e]},c.migrate(e())}).nThen(function(n){var t=P.network||P.networkPromise;p.loadSharedFolders(y,t,P,i.proxy,c,n,n=>{var t={type:"sf",progress:100*n.progress/n.max};m(e,"LOADING_DRIVE",t)},!0)}).nThen(function(n){ie(_,"team",n,e)}).nThen(function(e){ie(N,"calendar",e)}).nThen(function(){r()})}};const fe=(e=function(){})=>{ie(E,"cursor",e),ie(A,"integration",e),ie(T,"messenger",e),ie(S,"history",e),ie(U,"badge",e),P.onlyoffice||(P.onlyoffice=O.init(P,function(e,n,t){t.forEach(function(t){m(t,"OO_EVENT",{ev:e,data:n})})})),P&&(P.messenger=P.modules.messenger)},le=(e,n,t)=>{const r=a.mkAsync(t);ue(e,function(){q.fire(),r(n)})};var de=function(e,n,t){P.ready=!0;var c=P.proxy,u=P.manager,l=P.userObject;L(function(t){c.settings||(c.settings=Q),c.forms||(c.forms={}),c.friends_pending||(c.friends_pending={}),c.form_seed||(c.form_seed=o.createChannelId()),u||(le(e,n,t()),u=P.manager,l=P.userObject),ne(0,0,t()),function(e,n,t){if(!P.loggedIn)return t();P.rpc?t(ee):f.create(P.network,P.proxy,function(e,n){e?t({error:e}):(P.rpc=n,P.onRpcReadyEvt.fire(),y.getPinLimit(null,null,function(e){e.error&&console.error(e.error),ee.limit=e.limit,ee.plan=e.plan,ee.note=e.note,t(e)}))},h)}(0,0,t()),m(e,"LOADING_DRIVE",{type:"migrate",progress:0})}).nThen(function(n){void 0===c.version&&(c.version=11),r(c,n(),function(n,t){m(e,"LOADING_DRIVE",{type:"migrate",progress:t})},P)}).nThen(function(n){m(e,"LOADING_DRIVE",{type:"sf",progress:0}),l.fixFiles(),p.loadSharedFolders(y,P.network,P,P.drive.proxy,l,n,n=>{var t={type:"sf",progress:100*n.progress/n.max};m(e,"LOADING_DRIVE",t)}),fe(n),ie(D,"profile",n),ie(N,"calendar",n),ie(b,"support",n),L(e=>{P.modules.team&&P.modules.team.onReady(e)})}).nThen(function(e){y.fixMissingRtChannel(e())}).nThen(function(){var e,r=function(){I([],"REQUEST_LOGIN")};P.loggedIn&&(function(e){if(P.rpc){var n=$(!0),t=o.hashChannelList(n);P.rpc.getServerHash(function(n,r){n?e(n):e(null,r===t)})}else e({error:"RPC_NOT_READY"})}(function(e,n){n||function(e){if(P.rpc){var n=$();P.rpc.reset(n,function(n){e(n||null)})}else e({error:"RPC_NOT_READY"})}(function(e){if(e)return console.error(e);console.log("RESET DONE")})}),"number"!=typeof c.loginToken&&(c[i.tokenKey]=P.data.localToken||Math.floor(Math.random()*Number.MAX_SAFE_INTEGER)),n[i.tokenKey]=c[i.tokenKey],P.data.localToken&&P.data.localToken!==c[i.tokenKey])?r():(n.feedback=a.find(c,["settings","general","allowUserFeedback"]),s.init(n.feedback),P.returned=n,"function"==typeof t&&t(n),P.offline=!1,M("NETWORK_RECONNECT"),I([],"UPDATE_METADATA"),I([],"STORE_READY",n),"string"==typeof c.uid&&32===c.uid.length||(console.log("generating a persistent identifier"),c.uid=o.createChannelId()),!P.loggedIn||y.hasSigningKeys()&&y.hasCurveKeys()?(c.on("change",[i.displayNameKey],function(e,n){"string"==typeof n&&I([],"UPDATE_METADATA")}),c.on("change",["profile"],function(){I([],"UPDATE_METADATA")}),c.on("change",["friends"],function(e,n,t){if(I([],"UPDATE_METADATA"),P.messenger&&void 0===e){var r=t.slice(-1)[0],o=c.friends&&c.friends[r];P.messenger.onFriendAdded(o)}}),c.on("remove",["friends"],function(e,n){if(I([],"UPDATE_METADATA"),P.messenger){var t=n[1];t&&"channel"===n[2]&&P.messenger.onFriendRemoved(t,e)}}),c.on("change",["friends_pending"],function(){I([],"UPDATE_METADATA")}),c.on("remove",["friends_pending"],function(){I([],"UPDATE_METADATA")}),c.on("change",["settings"],function(){I([],"UPDATE_METADATA")}),c.on("change",[i.tokenKey],function(){P.isDeleted||"DELETED"===c[i.tokenKey]||I([],"UPDATE_TOKEN",{token:c[i.tokenKey]})}),P.mailbox=w.init({Store:y,store:P,updateMetadata:function(){I([],"UPDATE_METADATA")},updateDrive:function(){M("DRIVE_CHANGE",{path:["drive","filesData"]})},pinPads:function(e,n){y.pinPads(null,e,n)}},e,function(e,n,t,r){var o=a.once(r||function(){});t.forEach(function(t){m(t,"MAILBOX_EVENT",{ev:e,data:n},o)})}),J.fire()):r())})};const he=(e,n,t,r)=>{if(P.accountModule)return P.accountModule;const o=H.init({userHash:n.userHash,anonHash:n.anonHash,cache:n.cache,form_seed:n.form_seed,store:P,broadcast:I,postMessage:m});P.accountModule=o;const{channel:i,onAccountReady:s,onAccountCacheReady:c,onDisconnect:u,onReconnect:f}=o;P.driveChannel=i,c(e=>{P.cacheReturned||=e,t(e)}),s(e=>{P.returned||=e,r(e)}),u(()=>{M("NETWORK_DISCONNECT")}),f(()=>{M("NETWORK_RECONNECT")});return setInterval(function(){var e=[];const n=y.pad.getChannels();Object.keys(n).forEach(function(t){var r=n[t].clients;Array.prototype.push.apply(e,r)}),(e=a.deduplicateString(e)).forEach(function(e){var n=0,t=function(){if(n>=2)return y._removeClient(e),m(e,"TIMEOUT"),void console.error("TIMEOUT",e);n++;var r=setTimeout(t,3e4);m(e,"PING",null,function(e){e&&console.error(e),clearTimeout(r)})};t()})},12e4),o},pe=(e,n,t,r)=>{const o=a.once(e=>{const n=j.init({account:e,store:P,broadcast:I,postMessage:m}),{onDriveReady:o,onDriveCacheReady:a,onDisconnect:i,onReconnect:s}=n;a(()=>{t(P.cacheReturned||P.returned)}),o(()=>{W.fire(),r(P.returned)}),i(()=>{}),s(()=>{})}),i=()=>{},s=he(0,n,i,i);s.onAccountCacheReady(()=>{o(s)}),s.onAccountReady(()=>{o(s)})};y.disableCache=function(e,n,t){n?h.disable():h.enable(),t()};var ve=!1;const ye=e=>{if(P?.network?.historyKeeper)return setTimeout(e);const n=n=>{P.network||=n;n.join("0000000000000000000000000000000000").then(function(t){let r;t.members.forEach(e=>{16===e.length&&(r=e)}),n.historyKeeper=r,t.leave(),e()},function(n){console.error(n),e({error:"GET_HK"})})};if(P.network)return n(P.network);P.networkPromise?.then(n)};var me=function(e,n,t){const r=a.once(n);var o=function(){fe();let e=()=>{ne(0,0,function(){s.send("NO_DRIVE",!0),r({})})};ye(n=>{if(!n)return t?((e,n)=>{if(P.rpc)n(P.rpc);else{var t=R.Nacl.sign.keyPair(),r=P.tempKeys={edPublic:a.encodeBase64(t.publicKey),edPrivate:a.encodeBase64(t.secretKey)};f.create(P.network,r,function(e,t){e?n({error:e}):(P.rpc=t,n(t))})}})(0,e):void e()}),P.network||t||r({})};if(!P.network){var i=C.getWebsocketURL();return P.networkPromise=F.connect(i),o(),P.networkPromise.then(e=>{P.network!==e&&(P.network?(e.disconnect(),e=P.network):P.network=e)},function(e){console.error(e),r({error:"OFFLINE"})})}o()};const ge=(e,n,t)=>{P.manager?q.reg(function(){ye(r=>{P.network||=r,de(e,n,()=>{t(n)})})}):de(e,n,()=>{t(n)})};return y.init=function(e,n,t){var r=a.once(function(r){n.driveEvents&&function(e){q.reg(()=>{-1===k.indexOf(e)&&k.push(e),P.driveEvents||(P.driveEvents=!0,se(P.proxy),Object.keys(P.manager.folders).forEach(function(e){var n=P.manager.folders[e].proxy;se(n,e)}))})}(e),t(r)});if(ve&&!P.returned&&n.cache)q.reg(function(){r({state:"ALREADY_INIT",returned:P.cacheReturned})});else{if(ve)return P.networkTimeout&&m(e,"LOADING_DRIVE",{type:"offline"}),void J.reg(function(){r({state:"ALREADY_INIT",returned:P.returned})});n.disableCache&&h.disable(),n.noDrive&&!n.requires&&(n.requires="pad"),((e,n,t)=>{if(n.neverDrive||n.noDrive&&!n.userHash&&!n.anonHash)return n.neverDrive&&(P.neverCache=!0),void me(0,e=>{e?.error&&s.send("NO_DRIVE_ERROR",!0),n.neverDrive&&(e.tempKeys=P?.tempKeys),t(e)},!!n.neverDrive);const r=n.requires,o=!n.noDrive;ve=!0,P.data=n;let c=e=>{1===Object.keys(P.proxy).length&&s.send("FIRST_APP_USE",!0),e&&e.error&&(ve=!1)};if("pad"===r&&!o)return void me(0,function(r){if(r&&r.error)return;t(r);let o=a.once(()=>{pe(0,n,n=>{le(e,n,c)},n=>{ge(e,n,c)})});y.pad.onCacheReady(()=>{P.network||o()}),y.pad.onJoined(o),z.reg(o)});if("file"===r&&!o)return void me(0,function(r){r&&r.error||(t(r),pe(0,n,n=>{le(e,n,c)},n=>{ge(e,n,c)}))});if("team"===r){let r=!1;const o=o=>a=>{r||(r=!0,L(e=>{o||ne(0,0,e())}).nThen(n=>{ie(_,"team",n,e)}).nThen(e=>{!o&&P.modules.team&&P.modules.team.onReady(e)}).nThen(()=>{t(a),pe(0,n,n=>{le(e,n,c)},n=>{ge(e,n,c)})}))};return void he(0,n,o(!0),o(!1))}if("drive"===r)return void pe(0,n,n=>{t(n),le(e,n,c)},n=>{t(n),ge(e,n,c)});let u=e=>{c(e);const n=i.prefersDriveRedirectKey,r=a.find(P,["proxy","settings","general",n]);e[n]=r,t(e)};pe(0,n,n=>{le(e,n,u)},n=>{ge(e,n,u)})})(e,n,a.once(e=>{"GET_HK"!==e.error?r(e):r({error:"ERROR"})}))}},J.reg(function(){var e=+new Date-7776e6;h.getKeys(function(n,t){if(n)console.error(n);else{var r=function(){if(t.length){var n=t.pop();h.getTime(n,function(t,o){t?r():!o||o{const n=(e,n={})=>({create:function(t,r,o){var a,i=[],s=e.mkEvent(!0);t.reg(function(e){if(!a){var n=e.data;if("_READY"===n)return r("_READY"),a=!0,s.fire(),void i.forEach(function(e){t.fire(e)});i.push(n)}});var c={},u={},f={},l=[],d={},h={};h.query=function(e,n,t,o){var a,i=Math.random().toString(16).replace("0.","")+Math.random().toString(16).replace("0.",""),c=(o=o||{}).timeout||3e4;c>0&&(a=setTimeout(function(){delete u[i],t("TIMEOUT")},c)),f[i]=function(e){clearTimeout(a),delete f[i],e&&(delete u[i],t("UNHANDLED"))},u[i]=function(e,n){delete u[i],t(void 0,e.content,n)},s.reg(function(){var t={txid:i,content:n,q:e,raw:o.raw};r(o.raw?t:JSON.stringify(t))})};var p=h.event=function(e,n,t){t=t||{},s.reg(function(){var o={content:n,q:e,raw:t.raw};r(t.raw?o:JSON.stringify(o))})};h.on=function(e,n,t){var o=function(e,t,o){n(e.content,function(n){var t={txid:e.txid,content:n};r(o?t:JSON.stringify(t))},t)};return(c[e]=c[e]||[]).push(o),t||p("EV_REGISTER_HANDLER",e),{stop:function(){var n=c[e].indexOf(o);-1!==n&&c[e].splice(n,1)}}},h.whenReg=function(e,n,t){var r=t;l.indexOf(e)>-1?n():r=!0,r&&(d[e]=d[e]||[]).push(n)},h.onReg=function(e,n){h.whenReg(e,n,!0)},h.on("EV_REGISTER_HANDLER",function(e){d[e]&&(d[e].forEach(function(e){e()}),delete d[e]),l.push(e)});var v=!1;h.onReady=function(e){v?e():"function"==typeof e&&h.on("EV_RPC_READY",function(){v=!0,e()})},h.ready=function(){h.whenReg("EV_RPC_READY",function(){h.event("EV_RPC_READY")})};var y=[""];n.httpUnsafeOrigin?(y.push(n.httpUnsafeOrigin),y.push(n.httpSafeOrigin)):globalThis.location&&y.push(globalThis.location.origin),t.reg(function(e){if(a&&e.data&&"_READY"!==e.data&&y.includes(e.origin)){var n;try{n="object"==typeof e.data?e.data:JSON.parse(e.data)}catch(e){return void console.warn(e)}void 0!==n.ack?f[n.txid]&&f[n.txid](!n.ack):"string"==typeof n.q?c[n.q]?(n.txid&&r(JSON.stringify({txid:n.txid,ack:!0})),c[n.q].forEach(function(t){t(n||JSON.parse(e.data),e,n&&n.raw),n=void 0})):n.txid&&r(JSON.stringify({txid:n.txid,ack:!1})):void 0===n.q&&u[n.txid]&&u[n.txid](n,e)}}),r("_READY"),o(h)}});e.exports&&(e.exports=n(X()))})()}(br)),br.exports}function Or(){if(mr)return yr;mr=1;var e;return yr=((e,n,t)=>{const r={};let o,a,i={},s=()=>{};return r.init=n=>{if(a)return;a=e.create({query:(e,n,t,r)=>{r=r||function(){},i[e].chan.query(n,t,function(e,n){r(e?{error:e}:n)})},broadcast:(e,n,t,r)=>{r=r||function(){},Object.keys(i).forEach(o=>{-1===e.indexOf(+o)&&i[o].chan.query(n,t,(e,n)=>{r(e?{error:e}:n)})})}}),s=n},r.initClient=(e,r)=>{if(!a)return console.error("Not initialized"),void r("NOT_INIT");const{postMsg:c}=e,u=t.mkEvent(),f=Number(Math.floor(Math.random()*Number.MAX_SAFE_INTEGER)),l=()=>{a._removeClient(f)};n.create(u,c,function(e){let n=i[f]={chan:e};console.debug("SharedW Channel created"),Object.keys(a.queries).forEach(function(t){"CONNECT"!==t&&"JOIN_PAD"!==t&&"SEND_PAD_MSG"!==t&&"STOPWORKER"!==t&&e.on(t,function(e,r){try{a.queries[t](f,e,r)}catch(e){console.error("Error in webworker when executing query "+t),console.error(e)}"DISCONNECT"===t&&(l(),globalThis.accountDeletion&&globalThis.accountDeletion===n.id&&(a=void 0,o=void 0))})}),e.on("STOPWORKER",function(e,n){s(),a.queries.DISCONNECT(f,e,n)}),e.on("CONNECT",function(e,n){console.debug("Connecting to store..."),a.queries.CONNECT(f,e,function(e){if(e&&"ALREADY_INIT"===e.state)return console.debug("Store already exists!"),o=o||e.returned,void n(e);o=e,n(e)})}),e.on("JOIN_PAD",function(e,t){n.channelId=e.channel;try{a.queries.JOIN_PAD(f,e,t)}catch(e){console.error("Error in webworker when executing query JOIN_PAD"),console.error(e)}}),e.on("SEND_PAD_MSG",function(e,t){var r={msg:e,channel:n.channelId};try{a.queries.SEND_PAD_MSG(f,r,t)}catch(e){console.error("Error in webworker when executing query SEND_PAD_MSG"),console.error(e)}}),r(u,l)},!0)},r})((dr||(dr=1,e=fr(),lr={create:function(n){var t=e.create(n),r={},o=r.queries={CONNECT:t.init,DISCONNECT:t.disconnect,PING:function(e,n,t){t()},CACHE_DISABLE:t.disableCache,GET_PIN_LIMIT:t.getPinLimit,PIN_PADS:t.pinPads,UNPIN_PADS:t.unpinPads,GET_PINNED_USAGE:t.getPinnedUsage,GET_DELETED_PADS:t.getDeletedPads,UPLOAD_CHUNK:t.uploadChunk,UPLOAD_COMPLETE:t.uploadComplete,UPLOAD_STATUS:t.uploadStatus,UPLOAD_CANCEL:t.uploadCancel,ANON_RPC_MESSAGE:t.anonRpcMsg,GET_FILE_SIZE:t.getFileSize,GET_MULTIPLE_FILE_SIZE:t.getMultipleFileSize,GET:t.get,SET:t.set,ADD_PAD:t.addPad,SET_PAD_TITLE:t.setPadTitle,MOVE_TO_TRASH:t.moveToTrash,RESET_DRIVE:t.resetDrive,GET_METADATA:t.getMetadata,IS_ONLY_IN_SHARED_FOLDER:t.isOnlyInSharedFolder,SET_DISPLAY_NAME:t.setDisplayName,SET_PAD_ATTRIBUTE:t.setPadAttribute,GET_PAD_ATTRIBUTE:t.getPadAttribute,SET_ATTRIBUTE:t.setAttribute,GET_ATTRIBUTE:t.getAttribute,LIST_ALL_TAGS:t.listAllTags,GET_TEMPLATES:t.getTemplates,GET_SECURE_FILES_LIST:t.getSecureFilesList,GET_PAD_DATA:t.getPadData,GET_PAD_DATA_FROM_CHANNEL:t.getPadDataFromChannel,GET_STRONGER_HASH:t.getStrongerHash,INCREMENT_TEMPLATE_USE:t.incrementTemplateUse,GET_SHARED_FOLDER:t.getSharedFolder,ADD_SHARED_FOLDER:t.addSharedFolder,LOAD_SHARED_FOLDER:t.loadSharedFolderAnon,RESTORE_SHARED_FOLDER:t.restoreSharedFolder,UPDATE_SHARED_FOLDER_PASSWORD:t.updateSharedFolderPassword,ANSWER_FRIEND_REQUEST:t.answerFriendRequest,SEND_FRIEND_REQUEST:t.sendFriendRequest,ANON_GET_PREVIEW_CONTENT:t.anonGetPreviewContent,OO_COMMAND:t.onlyoffice.execCommand,MAILBOX_COMMAND:t.mailbox.execCommand,UNIVERSAL_COMMAND:t.universal.execCommand,SEND_PAD_MSG:t.pad.sendMessage,JOIN_PAD:t.pad.join,LEAVE_PAD:t.pad.leave,REMOVE_OWNED_CHANNEL:t.pad.destroy,CLEAR_OWNED_CHANNEL:t.pad.clear,CORRUPTED_CACHE:t.pad.onCorruptedCache,GET_LAST_HASH:t.pad.getLastHash,GET_FULL_HISTORY:t.getFullHistory,GET_HISTORY:t.getHistory,GET_HISTORY_RANGE:t.getHistoryRange,IS_NEW_CHANNEL:t.isNewChannel,CONTACT_PAD_OWNER:t.contactPadOwner,GIVE_PAD_ACCESS:t.givePadAccess,BURN_PAD:t.burnPad,GET_PAD_METADATA:t.pad?.getMetadata,SET_PAD_METADATA:t.pad?.setMetadata,CHANGE_PAD_PASSWORD_PIN:t.changePadPasswordPin,GET_SNAPSHOT:t.getSnapshot,DELETE_MAILBOX_MESSAGE:t.deleteMailboxMessage,FORM_GET_RESPONSES:t.form?.getResponses,DRIVE_USEROBJECT:t.userObjectCommand,GET_DRIVE:t.drive.get,SET_DRIVE:t.drive.set,MIGRATE_ANON_DRIVE:t.drive.migrateAnon,HAS_DRIVE:t.drive.exists,DELETE_ACCOUNT:t.deleteAccount,REMOVE_OWNED_PADS:t.removeOwnedPads,ADMIN_RPC:t.adminRpc,ADMIN_ADD_MAILBOX:t.addAdminMailbox};return r.query=function(e,n,t){o[e]?o[e]("0",n,t):console.error("UNHANDLED_STORE_RPC")},r._removeClient=t._removeClient,r}}),lr),Ar(),X()),yr}var wr,Dr,_r=function(){if(Er)return gr;Er=1;const e=Or();return gr={start:n=>{let t=!1,r=()=>{globalThis.close()};globalThis.window=globalThis,addEventListener("connect",o=>{console.debug("New SharedWorker client");const a=o.ports[0],i=e=>{a.postMessage(e)};let s,c=!1,u=()=>{};a.onmessage=function(o){if("INIT"===o.data?.type){if((o=>{t||(n(o),e.init(r),t=!0)})(o.data.cfg),c)return;c=!0,e.initClient({postMsg:i},function(e,n){s=e,u=n,i("SW_READY")})}else"CLOSE"===o.data?(console.debug("leave"),u()):s&&s.fire(o)}})}}}();var Tr,Sr,Nr=function(){if(Dr)return wr;Dr=1;const e=Or();return wr={start:n=>{let t,r=!1;const o=()=>{globalThis.close()},a=e=>{postMessage(e)};globalThis.window=globalThis,onmessage=function(i){if("INIT"===i.data?.type){let s=i.data.cfg;if(r)return;return n(s),e.init(o),r=!0,void e.initClient({postMsg:a},function(e){t=e,a("WW_READY")})}t&&t.fire(i)}}}}();var Ir=function(){if(Sr)return Tr;Sr=1;const e=Or(),n=X();return Tr={start:t=>{let r,o=!1,a=!1;const i=n.mkEvent(),s=()=>{a=!0},c=e=>{a||i.fire(e)};return{init:n=>{o||(t(n),e.init(s),o=!0,e.initClient({postMsg:c},function(e){r=e,c("STORE_READY")}))},onMessage:e=>{i.reg(n=>{setTimeout(()=>{e(n)})})},query:e=>{r&&!a&&r.fire({data:e,origin:""})}}}}}(),xr=Kn(),Cr=n({__proto__:null,default:r(xr)},[xr]),Rr=jn(),Pr=n({__proto__:null,default:r(Rr)},[Rr]),kr=Ft(),Mr=n({__proto__:null,default:r(kr)},[kr]),Fr=Lt(),Lr=n({__proto__:null,default:r(Fr)},[Fr]),Hr=Vt(),jr=n({__proto__:null,default:r(Hr)},[Hr]),Kr=$t(),Ur=n({__proto__:null,default:r(Kr)},[Kr]);let Br=e=>{[Te,nn,q,$e,B,Cr,gn,un,ke,Mr,Lr,Ur,pr,ge,Pr,jr,ir].forEach(n=>{"function"==typeof n.setCustomize&&n.setCustomize(e)})},Vr="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope,Gr="undefined"!=typeof SharedWorkerGlobalScope&&self instanceof SharedWorkerGlobalScope;e.store={},Gr?_r.start(Br):Vr?Nr.start(Br):("undefined"!=typeof module&&module.exports,e.store=Ir.start(Br)),e.start=Br}); diff --git a/www/contacts/app-contacts.less b/www/contacts/app-contacts.less index ea55e7126..63f050541 100644 --- a/www/contacts/app-contacts.less +++ b/www/contacts/app-contacts.less @@ -29,6 +29,9 @@ align-items: center; span:nth-child(2) { flex: 1; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; } } } diff --git a/www/contacts/inner.js b/www/contacts/inner.js index 68c529023..80c5717bb 100644 --- a/www/contacts/inner.js +++ b/www/contacts/inner.js @@ -53,6 +53,7 @@ define([ $container: $(toolbarElement), pageTitle: Messages.contacts_title, metadataMgr: common.getMetadataMgr(), + skipLink: '#cp-app-contacts-container' }; APP.toolbar = Toolbar.create(configTb); APP.toolbar.$rightside.hide(); diff --git a/www/cryptpad-api.js b/www/cryptpad-api.js index 7dfbffa71..a5a059760 100644 --- a/www/cryptpad-api.js +++ b/www/cryptpad-api.js @@ -5,6 +5,8 @@ (function () { 'use strict'; var factory = function (/*Hash*/) { + let devMode = false; + try { devMode = localStorage.CryptPad_dev === "1"; } catch (e) {} // This API is used to load a CryptPad editor for a provided document in // an external platform. @@ -48,7 +50,7 @@ var msg = data.msg; var txid = data.txid; if (commands[msg.q]) { - console.warn('OUTER RECEIVED QUERY', msg.q, msg.data); + if (devMode) { console.warn('OUTER RECEIVED QUERY', msg.q, msg.data); } commands[msg.q](msg.data, function (args) { _sendCb(txid, args); }); @@ -62,7 +64,7 @@ var txid = getTxid(); if (cb) { handlers[txid] = cb; } - console.warn('OUTER SENT QUERY', q, data); + if (devMode) { console.warn('OUTER SENT QUERY', q, data); } iWindow.postMessage({ msg: { q: q, data: data, diff --git a/www/diagram/inner.js b/www/diagram/inner.js index 40803d41d..e53bcae44 100644 --- a/www/diagram/inner.js +++ b/www/diagram/inner.js @@ -152,7 +152,40 @@ define([ }, true ); - var parameters; + var checkDefaultTheme = function(cb) { + var privateData = framework._.cpNfInner.metadataMgr.getPrivateData(); + if (!privateData.settings['diagram'] || !privateData.settings['diagram'].mode) { + cb('sketch'); + } else { + cb(privateData.settings['diagram'].mode); + } + }; + + var parameters = new URLSearchParams({ + test: 1, + stealth: 1, + embed: 1, + drafts: 0, + p: 'cryptpad', + integrated: framework.isIntegrated() ? 'true' : 'false', + chrome: 0, + dark: window.CryptPad_theme === "dark" ? 1 : 0, + + // Hide save and exit buttons + noSaveBtn: 1, + saveAndExit: 0, + noExitBtn: 1, + browser: 0, + pv: 0, + + noDevice: 1, + filesupport: 0, + + modified: 'unsavedChanges', + proto: 'json', + + lang: Messages._languageUsed + }); framework.onEditableChange(function () { var readOnly = framework.isReadOnly() || framework.isLocked(); @@ -163,41 +196,31 @@ define([ parameters.set('chrome', '1'); parameters.set('grid', '1'); } + }); + + var loadDiagram = function () { + checkDefaultTheme(function(theme) { + var defaultTheme = theme; + parameters.set('ui', defaultTheme); + }); + var isReadOnly = framework.isReadOnly() ? 0 : 1; + parameters.set('chrome', isReadOnly); drawioFrame.src = ApiConfig.httpSafeOrigin + '/components/drawio/src/main/webapp/index.html?' + parameters; - }); + }; // starting the CryptPad framework framework.start(); - parameters = new URLSearchParams({ - test: 1, - stealth: 1, - embed: 1, - drafts: 0, - p: 'cryptpad', - integrated: framework.isIntegrated() ? 'true' : 'false', - - chrome: framework.isReadOnly() ? 0 : 1, - dark: window.CryptPad_theme === "dark" ? 1 : 0, - - // Hide save and exit buttons - noSaveBtn: 1, - saveAndExit: 0, - noExitBtn: 1, - browser: 0, - - noDevice: 1, - filesupport: 0, - - modified: 'unsavedChanges', - proto: 'json', - - lang: Messages._languageUsed - }); - - drawioFrame.src = ApiConfig.httpSafeOrigin + '/components/drawio/src/main/webapp/index.html?' - + parameters; + //wait for metadata to update before checking the theme and loading Drawio UI + var metadataMgr = framework._.sfCommon.getMetadataMgr(); + var onChange = function () { + var privateData = metadataMgr.getPrivateData(); + if (!privateData.settings.toolbar) { return; } + loadDiagram(); + metadataMgr.off('change', onChange); + }; + metadataMgr.onChange(onChange); window.addEventListener("message", (event) => { if (event.source === drawioFrame.contentWindow) { @@ -209,6 +232,58 @@ define([ } } }, false); + + var setTheme = function (theme, cb) { + framework._.sfCommon.setAttribute(['diagram', 'mode'], theme, function() { + cb(); + }); + }; + + var mkModeButton = function (framework) { + var modes = [Messages.diagram_sketchTheme, Messages.diagram_simpleTheme, Messages.diagram_classicTheme]; + var types = []; + + modes.forEach(function(mode){ + types.push({ + tag: 'a', + attributes: { + 'data-value': mode, + 'aria-label': Messages._getKey('diagram_modesOptionLabel', [mode]), + }, + content: mode, + action: function () { + var $self = $('a[data-value="' + mode + '"]'); + parameters.set('ui', mode); + drawioFrame.src = ApiConfig.httpSafeOrigin + '/components/drawio/src/main/webapp/index.html?' + + parameters; + setTheme(mode, function() { + $('.cp-dropdown-content').find('.cp-dropdown-element-active').removeClass('cp-dropdown-element-active'); + $self.addClass('cp-dropdown-element-active'); + $self.closest('li').focus(); + $('.cp-dropdown-content').hide(); +} ); + }, + }); + }); + checkDefaultTheme(function(theme) { + var $drawer = UIElements.createDropdown({ + text: Messages.themeButton, + options: types, + common: framework._.sfCommon, + iconCls: 'color-palette', + initialValue: parameters.get('ui') || theme + }); + framework._.toolbar.$theme = $drawer.find('ul.cp-dropdown-content'); + framework._.toolbar.$bottomL.append($drawer); + $drawer.addClass('cp-toolbar-appmenu'); + $drawer.on('click', function () { + $('a[data-value="' + parameters.get('ui') || theme + '"]').addClass('cp-dropdown-element-active'); + }); + }); + + }; + mkModeButton(framework); + }; $('#cp-app-diagram-editor').hide(); diff --git a/www/drive/inner.js b/www/drive/inner.js index cec88cc26..731b48b6b 100644 --- a/www/drive/inner.js +++ b/www/drive/inner.js @@ -41,7 +41,19 @@ define([ for (var k in objRef) { delete objRef[k]; } $.extend(true, objRef, objToCopy); }; - var updateSharedFolders = function (sframeChan, manager, drive, folders, cb) { + var lockoutAnonSharedFolder = function (common) { + APP.newSharedFolder = null; + APP.closed = true; + var msg = Messages.restrictedError; + if (common && !common.isLoggedIn()) { + msg = UIElements.loginErrorScreenContent(common); + } + setTimeout(function () { + UI.errorLoadingScreen(msg, false, false); + }, 0); + }; + + var updateSharedFoldersCore = function (common, sframeChan, manager, drive, folders, cb) { if (!drive || !drive.sharedFolders) { return void cb(); } @@ -57,6 +69,12 @@ define([ sharedFolder: fId }, waitFor(function (err, newObj) { if (!APP.loggedIn && APP.newSharedFolder) { + if (newObj && newObj.restricted) { + lockoutAnonSharedFolder(common); + waitFor.abort(); + return; + } + if (err) { return; } if (!newObj || !Object.keys(newObj).length) { // Empty anon drive: deleted var msg = Messages.deletedError + '
' + Messages.errorRedirectToHome; @@ -103,6 +121,11 @@ define([ cb(); }); }; + var updateSharedFolders = function (common) { + return function (sframeChan, manager, drive, folders, cb) { + updateSharedFoldersCore(common, sframeChan, manager, drive, folders, cb); + }; + }; var updateObject = function (sframeChan, obj, cb) { sframeChan.query('Q_DRIVE_GETOBJECT', null, function (err, newObj) { copyObjectValue(obj, newObj); @@ -303,7 +326,7 @@ define([ proxy: proxy, folders: folders, updateObject: updateObject, - updateSharedFolders: updateSharedFolders, + updateSharedFolders: updateSharedFolders(common), history: history, toolbar: toolbar, APP: APP diff --git a/www/form/inner.js b/www/form/inner.js index 138e36346..2f3690dd7 100644 --- a/www/form/inner.js +++ b/www/form/inner.js @@ -136,7 +136,8 @@ define([ type:"number", value: opts.maxLength, min: 100, - max: 5000 + max: 5000, + 'aria-label': Messages.form_editMaxLength }); maxLength = h('div.cp-form-edit-max-options', [ h('span', Messages.form_editMaxLength), @@ -244,7 +245,8 @@ define([ type:"number", value: v.max, min: 1, - max: v.values.length + max: v.values.length, + 'aria-label': Messages.form_editMax }); maxOptions = h('div.cp-form-edit-max-options', [ h('span', Messages.form_editMax), @@ -291,7 +293,7 @@ define([ var $add, $addItem; var addMultiple; var getOption = function (val, placeholder, isItem, uid) { - var input = h('input', {value:val}); + var input = h('input', {value:val, 'aria-label': val}); var $input = $(input); if (placeholder) { input.placeholder = val; @@ -332,7 +334,7 @@ define([ setCursor(); } - var del = h('button.btn.btn-danger-outline', Icons.get('close')); + var del = h('button.btn.btn-danger-outline',{ 'aria-label': Messages.poll_remove }, Icons.get('close')); var formHandle; if (v.type !== 'time') { formHandle = h('span.cp-form-handle', [ @@ -390,6 +392,7 @@ define([ } $(input).on('input', function () { + $input.attr('aria-label', $(input).val()); evOnSave.fire(); }); @@ -1330,7 +1333,8 @@ define([ options: qOptions, // Entries displayed in the menu isSelect: true, caretDown: true, - buttonCls: 'btn btn-secondary' + buttonCls: 'btn btn-secondary', + buttonTitle: Messages.form_condition_q }; qSelect = UIElements.createDropdown(qConfig); qSelect[0].dropdown = qSelect; @@ -1362,7 +1366,10 @@ define([ $(iSelect).attr('data-drop', 'i').hide(); iSelect.onChange.reg(function () { onChange(); }); - var remove = h('button.btn.btn-danger-alt.cp-condition-remove', [ + var remove = h('button.btn.btn-danger-alt.cp-condition-remove',{ + 'title': Messages.poll_remove, + 'aria-label': Messages.poll_remove + }, [ Icons.get('close', {'class': 'nomargin'}) ]); $(remove).on('click', function () { @@ -1699,10 +1706,13 @@ define([ var tag = h('input', { type: opts.type, step: "any", - placeholder: Messages['form_input_ph_'+opts.type] || '' + 'aria-label': Messages['form_input_ph_'+opts.type], + placeholder: Messages['form_input_ph_'+opts.type] }); var $tag = $(tag); $tag.on('change keypress keydown', Util.throttle(function () { + let currentVal = $tag.val().trim(); + $tag.attr('aria-label', currentVal || Messages['form_input_ph_'+opts.type] || ''); evOnChange.fire(); }, 500)); var cursorGetter; @@ -1774,6 +1784,7 @@ define([ $text.val($text.val().slice(0, opts.maxLength)); l = $text.val().length; } + $text.attr('aria-label', $text.val() || Messages.form_input_ph_text); $(charCount).text(Messages._getKey('form_maxLength', [ $text.val().length, opts.maxLength @@ -2106,13 +2117,18 @@ define([ get: function (opts, a, n, evOnChange) { opts = Util.clone(TYPES.date.defaultOpts); - var tag = h('input'); + var tag = h('input', {'aria-label': Messages.form_date_time}); var picker = Flatpickr(tag, { disableMobile: true, enableTime: true, time_24hr: is24h, dateFormat: dateFormat, + onChange: function(date) { + if (date) { + $(tag).attr('aria-label', date); + } + } }); var $tag = $(tag); @@ -2532,7 +2548,7 @@ define([ $(div).data('val', data); return div; }); - var tag = h('div.cp-form-type-sort-container', { 'role': 'listbox' },[ + var tag = h('div.cp-form-type-sort-container', { 'role': 'listbox', 'aria-label': Messages._getKey('form_sort_hint', [els.length]) },[ h('div.cp-form-sort-hint', Messages._getKey('form_sort_hint', [els.length])), els ]); @@ -3932,6 +3948,7 @@ define([ var btn = h('button.btn.btn-secondary', { title: full ? '' : Messages['form_type_'+type], + 'aria-label': full ? '' : Messages['form_type_'+type], 'data-type': type }, [ (TYPES[type] || STATIC_TYPES[type]).icon.cloneNode(), @@ -3987,7 +4004,8 @@ define([ var add = h('div', [Icons.get('add')]); if (!full) { add = h('button.btn.cp-form-creator-inline-add', { - title: Messages.tag_add + title: Messages.tag_add, + 'aria-label': Messages.tag_add }, [ Icons.get('add', {class: 'add-open'}), Icons.get('close', {class: 'add-close'}), @@ -4082,7 +4100,7 @@ define([ }); requiredContent.push(infoIcon); } - requiredTag = h('span.cp-form-required-tag', requiredContent); + requiredTag = h('span.cp-form-required-tag', { 'id': 'cp-required-' + (n-1) }, requiredContent); } var dragHandle; @@ -4202,6 +4220,7 @@ define([ } if (saving && !e) { return; } // Prevent spam Enter block.q = v.trim(); + $inputQ.attr('aria-label', block.q); framework.localChange(); saving = true; framework._.cpNfInner.chainpad.onSettle(function () { @@ -4213,6 +4232,7 @@ define([ }; var onCancelQ = function () { $inputQ.val(block.q || Messages.form_default); + $inputQ.attr('aria-label', block.q || Messages.form_default); cancel = true; $inputQ.blur(); $(q).removeClass('editing'); @@ -4225,6 +4245,8 @@ define([ $(q).addClass('editing'); }); $inputQ.blur(onSaveQ); + $inputQ.attr('aria-label', block.q || Messages.form_default); + q = h('div.cp-form-input-block', [inputQ]); // Delete question @@ -4420,11 +4442,16 @@ define([ var editableCls = editable ? ".editable" : ""; var draggable = APP.drag ? '' : '.nodrag'; - elements.push(h('fieldset.cp-form-block'+editableCls+draggable, { + var ariaLabelledby = 'cp-question-' + (n-1); + if (requiredTag) { + ariaLabelledby += ' cp-required-' + (n-1); + } + var attributes = { 'data-id':uid, 'data-type':type, - 'aria-labelledby': 'cp-question-' + (n-1) - }, [ + 'aria-labelledby': ariaLabelledby + }; + elements.push(h('fieldset.cp-form-block'+editableCls+draggable, attributes, [ h('header', [ APP.isEditor ? dragHandle : undefined, shiftButtons, @@ -5144,13 +5171,18 @@ define([ return; } // Otherwise add it - var datePicker = h('input'); + var datePicker = h('input', {'aria-label': Messages.form_date_time}); var picker = Flatpickr(datePicker, { disableMobile: true, enableTime: true, time_24hr: is24h, dateFormat: dateFormat, - minDate: new Date() + minDate: new Date(), + onChange: function(date) { + if (date) { + $(datePicker).attr('aria-label', date); + } + } }); var save = h('button.btn.btn-primary', Messages.settings_save); $(save).click(function () { @@ -5164,7 +5196,7 @@ define([ refreshEndDate(); }); }); - var cancel = h('button.btn.btn-danger',Icons.get('close', {'class': 'nomargin'})); + var cancel = h('button.btn.btn-danger',{'aria-label': Messages.poll_remove}, Icons.get('close', {'class': 'nomargin'})); $(cancel).click(function () { refreshEndDate(); }); @@ -5335,8 +5367,8 @@ define([ var toggleOffclass = 'ontouchstart' in window ? 'cp-toggle-active' : undefined; var toggleOnclass = 'ontouchstart' in window ? undefined : 'cp-toggle-active'; - var toggleDragOff = h(`button#cp-toggle-drag-off.cp-form-view-drag.${toggleOffclass}`, {'title': Messages.toggleArrows, 'tabindex': 0}, Icons.get('select')); - var toggleDragOn = h(`button#cp-toggle-drag-on.cp-form-view-drag.${toggleOnclass}`, {'title': Messages.toggleDrag, 'tabindex': 0}, Icons.get('touch-mode')); + var toggleDragOff = h(`button#cp-toggle-drag-off.cp-form-view-drag.${toggleOffclass}`, {'title': Messages.toggleArrows, 'tabindex': 0, 'aria-label': Messages.toggleArrows}, Icons.get('select')); + var toggleDragOn = h(`button#cp-toggle-drag-on.cp-form-view-drag.${toggleOnclass}`, {'title': Messages.toggleDrag, 'tabindex': 0, 'aria-label': Messages.toggleDrag}, Icons.get('touch-mode')); const updateDrag = state => { return function () { var $container = $('.cp-form-creator-content'); diff --git a/www/integration/main.js b/www/integration/main.js index e8c49bbdc..f5d31daa7 100644 --- a/www/integration/main.js +++ b/www/integration/main.js @@ -14,7 +14,10 @@ define([ return Math.random().toString(16).replace('0.', ''); }; var init = function () { - console.warn('INIT'); + let devMode = false; + try { devMode = localStorage.CryptPad_dev === "1"; } catch (e) {} + if (devMode) { console.warn('INIT'); } + var p = window.parent; var txid = getTxid(); p.postMessage({ q: 'INTEGRATION_READY', txid: txid }, '*'); @@ -86,7 +89,7 @@ define([ http.open('HEAD', url); http.onreadystatechange = function() { if (this.readyState === this.DONE) { - console.error(oldKey, this.status); + if (devMode) { console.error(oldKey, this.status); } if (this.status === 200) { return cb({state: true}); } @@ -150,7 +153,7 @@ define([ } if (data.keepOld) { // they provide their own key, we must turn it into a hash var key = sanitizeKey(data.key) + "000000000000000000000000000000000"; - console.warn('KEY', key); + if (devMode) { console.warn('KEY', key); } let hash = `/2/integration/edit/${key.slice(0,24)}/`; return void cb({ key: hash, @@ -265,7 +268,7 @@ define([ xhr.responseType = 'blob'; //xhr.setRequestHeader('Content-Type', 'application/json'); xhr.onload = function () { - console.error(this.status); + if (devMode) { console.error(this.status); } if (this.status === 200) { cb(); } else { @@ -278,7 +281,7 @@ define([ xhr.send(blob); }; chan.on('START', function (data, cb) { - console.warn('INNER START', data); + if (devMode) { console.warn('INNER START', data); } // data.key is a hash var href = Hash.hashToHref(data.key, data.application); if (data.editorConfig.lang) { @@ -303,7 +306,7 @@ define([ }); }; - console.error(Hash.hrefToHexChannelId(href)); + if (devMode) { console.error(Hash.hrefToHexChannelId(href)); } let startApp = function (blob) { window.CP_integration_outer = { pathname: `/${data.application}/`, @@ -336,7 +339,6 @@ define([ path = '/common/onlyoffice/main.js'; } require([path], function () { - console.warn('SAO REQUIRED'); delete window.CP_integration_outer; cb(); }); diff --git a/www/kanban/inner.js b/www/kanban/inner.js index 27f61a483..aa86c84ae 100644 --- a/www/kanban/inner.js +++ b/www/kanban/inner.js @@ -432,6 +432,10 @@ define([ var list = boards.list || []; var idx = list.indexOf(id); if (idx !== -1) { list.splice(idx, 1); } + var boardItems = (boards.data || {})[id].item; + boardItems.forEach(function(item) { + delete kanban.options.boards.items[item]; + }); delete (boards.data || {})[id]; kanban.removeBoard(id); return void commit(); diff --git a/www/kanban/jkanban_cp.js b/www/kanban/jkanban_cp.js index 1db2117a6..067b360a0 100644 --- a/www/kanban/jkanban_cp.js +++ b/www/kanban/jkanban_cp.js @@ -313,9 +313,16 @@ define([ if (target.classList.contains('kanban-trash')) { list.splice(index1, 1); if (list.indexOf(id) === -1) { + var board = self.options.boards.data[id]; + var boardItems = board.item; + boardItems.forEach(function(item) { + delete self.options.boards.items[item]; + }); delete self.options.boards.data[id]; } self.onChange(); + self.setBoards(self.options.boards); + return; } diff --git a/www/notifications/inner.js b/www/notifications/inner.js index 1c0700ba1..31f8fd384 100644 --- a/www/notifications/inner.js +++ b/www/notifications/inner.js @@ -218,7 +218,8 @@ define([ var active = privateData.category || 'all'; common.setHash(active); Object.keys(categories).forEach(function (key) { - var $category = $('
', {'class': 'cp-sidebarlayout-category', 'tabindex': 0, 'role': 'menuitem'}).appendTo($categories); + var name = Messages['notifications_cat_'+key] || key; + var $category = $('
', {'class': 'cp-sidebarlayout-category', 'tabindex': 0, 'role': 'menuitem', 'aria-label': name}).appendTo($categories); if (key === 'all') { $category.append($(Icons.get('all'))); } if (key === 'friends') { $category.append($(Icons.get('contacts-book'))); } if (key === 'pads') { $category.append($(Icons.get('file-pad'))); } @@ -245,7 +246,7 @@ define([ showCategories(categories[key]); }); - $category.append(Messages['notifications_cat_'+key] || key); + $category.append(h('span.cp-sidebarlayout-category-name', name)); }); showCategories(categories[active]); }; diff --git a/www/pad/inner.js b/www/pad/inner.js index 04d81d5d4..159923d54 100644 --- a/www/pad/inner.js +++ b/www/pad/inner.js @@ -728,13 +728,21 @@ define([ var href = el.getAttribute('href'); if (/^#/.test(href)) { try { + var foundAnchor = false; $inner.find('.cke_anchor[data-cke-realelement]').each(function (j, el) { + if (foundAnchor) { return; } var i = editor.restoreRealElement($(el)); var node = i.$; if (node.id === href.slice(1)) { el.scrollIntoView(); + foundAnchor = true; } }); + // Fallback: try to find anchor by ID directly + if (!foundAnchor) { + var anchorsById = $inner.find('#' + href.slice(1)); + if (anchorsById.length) { anchorsById[0].scrollIntoView(); } + } } catch (err) {} return; } diff --git a/www/settings/inner.js b/www/settings/inner.js index 4b412600d..16057d131 100644 --- a/www/settings/inner.js +++ b/www/settings/inner.js @@ -2053,7 +2053,7 @@ define([ Messages.settings_cat_notifications = Messages.notificationsPage; Messages.settings_cat_profile = Messages.profileButton; var createLeftside = function() { - var $categories = $('
', { 'class': 'cp-sidebarlayout-categories' }) + var $categories = $('
', { 'class': 'cp-sidebarlayout-categories', 'role': 'menu'}) .appendTo(APP.$leftside); APP.$usage = $('
', { 'class': 'usage' }).appendTo(APP.$leftside); var active = privateData.category || 'account'; @@ -2068,11 +2068,13 @@ define([ let name = SIDEBAR_NAMES[key] || Messages['settings_cat_' + key] || key; var $category = $(h('div.cp-sidebarlayout-category', { + 'role': 'menuitem', 'tabindex': 0, - 'data-category': key + 'data-category': key, + 'aria-label': name }, [ icon, - name, + h('span.cp-sidebarlayout-category-name', name), ])).appendTo($categories); diff --git a/www/ssoauth/main.js b/www/ssoauth/main.js index 95ad6a1c4..ebc225fbb 100644 --- a/www/ssoauth/main.js +++ b/www/ssoauth/main.js @@ -14,10 +14,11 @@ define([ '/common/outer/http-command.js', '/common/outer/local-store.js', '/common/outer/login-block.js', + '/customize/login.js', '/customize/messages.js', '/common/common-icons.js', ], function (ApiConfig, $, h, Util, Cred, UI, Login, Constants, - ServerCommand, LocalStore, Block, Messages, Icons) { + ServerCommand, LocalStore, Block, CLogin, Messages, Icons) { if (window.top !== window) { return; } let ssoAuthCb = function (cb) { @@ -31,6 +32,7 @@ define([ publicKey: Util.decodeBase64(b64Keys.p) }; var inviteToken = b64Keys.token; + CLogin.ssoRedirectTo(b64Keys); ServerCommand(keys, { command: 'SSO_AUTH_CB', url: window.location.href @@ -63,7 +65,7 @@ define([ return void UI.warn(msg); } LocalStore.setSSOSeed(seed.toLowerCase()); - window.location.href = '/drive/'; + CLogin.redirect(); }); }; diff --git a/www/support/inner.js b/www/support/inner.js index e07c9c139..6439d91ef 100644 --- a/www/support/inner.js +++ b/www/support/inner.js @@ -296,7 +296,7 @@ define([ }; var createLeftside = function () { - var $categories = $('
', {'class': 'cp-sidebarlayout-categories'}) + var $categories = $('
', {'class': 'cp-sidebarlayout-categories', 'role': 'menu'}) .appendTo(APP.$leftside); var metadataMgr = common.getMetadataMgr(); var privateData = metadataMgr.getPrivateData(); @@ -304,10 +304,13 @@ define([ if (!categories[active]) { active = 'tickets'; } common.setHash(active); Object.keys(categories).forEach(function (key) { + var name = Messages['support_cat_'+key] || key; var $category = $('
', { 'class': 'cp-sidebarlayout-category', 'data-category': key, - 'tabindex': 0 + 'tabindex': 0, + 'role': 'menuitem', + 'aria-label': name }).appendTo($categories); var iconClass = icons[key]; if (iconClass) { @@ -329,7 +332,7 @@ define([ showCategories(categories[key]); }); - $category.append(Messages['support_cat_'+key] || key); + $category.append(h('span.cp-sidebarlayout-category-name', name)); }); showCategories(categories[active]); }; diff --git a/www/unsafeiframe/main.js b/www/unsafeiframe/main.js index 0965b9c85..50e047c03 100644 --- a/www/unsafeiframe/main.js +++ b/www/unsafeiframe/main.js @@ -106,6 +106,7 @@ define([ origin: window.location.origin, pathname: window.location.pathname, feedbackAllowed: Utils.Feedback.state, + unsafeIframe: true, }; for (var k in additionalPriv) { metaObj.priv[k] = additionalPriv[k]; }